From 23c0406bedfc6930735e8f5ea75dfe34faf1f290 Mon Sep 17 00:00:00 2001 From: Pierre-Yves B Date: Fri, 9 Jul 2021 12:53:55 +0100 Subject: [PATCH] Migrate from CommonJS to ESM (#6651) --- .circleci/config.yml | 2 +- .eslintignore | 2 +- .eslintrc.yml | 1 - .gitignore | 3 +- .mocharc-frontend.yml | 1 - .prettierignore | 4 +- core/badge-urls/make-badge-url.js | 15 ++- core/badge-urls/make-badge-url.spec.js | 8 +- core/badge-urls/path-helpers.js | 6 +- core/badge-urls/path-helpers.spec.js | 6 +- core/base-service/auth-helper.js | 8 +- core/base-service/auth-helper.spec.js | 10 +- core/base-service/base-graphql.js | 12 +- core/base-service/base-graphql.spec.js | 14 +-- core/base-service/base-json.js | 8 +- core/base-service/base-json.spec.js | 10 +- core/base-service/base-static.js | 20 ++-- core/base-service/base-svg-scraping.js | 12 +- core/base-service/base-svg-scraping.spec.js | 12 +- core/base-service/base-xml.js | 14 +-- core/base-service/base-xml.spec.js | 10 +- core/base-service/base-yaml.js | 14 +-- core/base-service/base-yaml.spec.js | 10 +- core/base-service/base.js | 35 +++--- core/base-service/base.spec.js | 29 +++-- core/base-service/cache-headers.js | 10 +- core/base-service/cache-headers.spec.js | 19 ++- core/base-service/categories.js | 11 +- core/base-service/check-error-response.js | 6 +- .../base-service/check-error-response.spec.js | 8 +- core/base-service/coalesce-badge.js | 14 +-- core/base-service/coalesce-badge.spec.js | 8 +- core/base-service/coalesce.js | 4 +- core/base-service/coalesce.spec.js | 6 +- core/base-service/deprecated-service.js | 16 ++- core/base-service/deprecated-service.spec.js | 6 +- core/base-service/errors.js | 4 +- core/base-service/examples.js | 17 +-- core/base-service/examples.spec.js | 8 +- core/base-service/graphql.js | 3 +- core/base-service/graphql.spec.js | 12 +- core/base-service/index.js | 26 ++-- core/base-service/json.js | 12 +- core/base-service/legacy-request-handler.js | 24 ++-- .../legacy-request-handler.spec.js | 16 ++- core/base-service/legacy-result-sender.js | 8 +- .../empty-array.fixture.js | 4 +- .../empty-no-export.fixture.js | 4 +- .../empty-object.fixture.js | 4 +- .../empty-undefined.fixture.js | 4 +- .../invalid-mixed.fixture.js | 11 +- .../invalid-no-base.fixture.js | 4 +- .../invalid-wrong-base.fixture.js | 4 +- .../valid-array.fixture.js | 6 +- .../valid-class.fixture.js | 6 +- .../valid-object.fixture.js | 6 +- core/base-service/loader.js | 100 +++++++--------- core/base-service/loader.spec.js | 92 ++++++++------- core/base-service/metric-helper.js | 6 +- core/base-service/redirector.js | 26 ++-- core/base-service/redirector.spec.js | 12 +- core/base-service/route.js | 10 +- core/base-service/route.spec.js | 12 +- core/base-service/service-definitions.js | 6 +- core/base-service/to-array.js | 4 +- core/base-service/trace.js | 11 +- core/base-service/validate.js | 10 +- core/base-service/validate.spec.js | 14 +-- core/got-test-client.js | 6 +- core/legacy/regular-update.js | 16 +-- core/register-chai-plugins.spec.js | 11 +- core/server/in-process-server-test-helpers.js | 16 +-- core/server/influx-metrics.js | 13 +- core/server/influx-metrics.spec.js | 15 ++- core/server/instance-id-generator.js | 4 +- core/server/log.js | 20 ++-- core/server/metrics/format-converters.js | 5 +- core/server/metrics/format-converters.spec.js | 8 +- core/server/prometheus-metrics.js | 8 +- core/server/prometheus-metrics.spec.js | 12 +- core/server/secret-is-valid.js | 4 +- core/server/server.js | 56 +++++---- core/server/server.spec.js | 26 ++-- core/service-test-runner/cli.js | 47 ++++---- .../create-service-tester.js | 13 +- .../service-test-runner/icedfrisby-shields.js | 7 +- .../service-test-runner/infer-pull-request.js | 9 +- .../infer-pull-request.spec.js | 8 +- .../pull-request-services-cli.js | 8 +- core/service-test-runner/runner.js | 11 +- core/service-test-runner/service-tester.js | 15 ++- .../service-test-runner/services-for-title.js | 5 +- .../services-for-title.spec.js | 6 +- .../redis-token-persistence.integration.js | 10 +- core/token-pooling/redis-token-persistence.js | 10 +- core/token-pooling/token-pool.js | 11 +- core/token-pooling/token-pool.spec.js | 10 +- core/unhandled-rejection.spec.js | 2 - cypress/integration/main-page.spec.js | 2 - dangerfile.js | 2 +- doc/TUTORIAL.md | 111 ++++++++---------- doc/deprecating-badges.md | 20 ++-- doc/service-tests.md | 8 +- entrypoint.spec.js | 19 ++- .../gatsby-browser.js | 2 +- gatsby-config.js => frontend/gatsby-config.js | 2 +- gatsby-node.js => frontend/gatsby-node.js | 10 +- frontend/lib/service-definitions/index.ts | 2 +- frontend/lib/supported-features.ts | 2 +- frontend/mocha-ignore-pngs.js | 5 - frontend/package.json | 32 +++++ lib/load-logos.js | 17 +-- lib/load-simple-icons.js | 8 +- lib/load-simple-icons.spec.js | 6 +- lib/logos.js | 20 ++-- lib/logos.spec.js | 10 +- lib/svg-helpers.js | 4 +- lib/svg-helpers.spec.js | 6 +- package-lock.json | 69 ----------- package.json | 22 +--- scripts/badge-cli.js | 18 ++- scripts/benchmark-performance.js | 12 +- scripts/capture-timings.js | 6 +- scripts/export-service-definitions-cli.js | 19 ++- scripts/export-supported-features-cli.js | 10 +- scripts/redis-connectivity-test.js | 13 +- server.js | 32 +++-- services/amo/amo-base.js | 10 +- services/amo/amo-downloads.service.js | 15 +-- services/amo/amo-downloads.tester.js | 10 +- services/amo/amo-rating.service.js | 10 +- services/amo/amo-rating.tester.js | 9 +- services/amo/amo-users.service.js | 8 +- services/amo/amo-users.tester.js | 7 +- services/amo/amo-version.service.js | 8 +- services/amo/amo-version.tester.js | 7 +- services/ansible/ansible-quality.service.js | 12 +- services/ansible/ansible-quality.tester.js | 7 +- services/ansible/ansible-role.service.js | 17 +-- services/ansible/ansible-role.tester.js | 11 +- services/apm/apm.service.js | 20 ++-- services/apm/apm.tester.js | 12 +- services/appveyor/appveyor-base.js | 12 +- .../appveyor-build-redirect.service.js | 6 +- .../appveyor-build-redirect.tester.js | 8 +- services/appveyor/appveyor-build.service.js | 8 +- services/appveyor/appveyor-build.tester.js | 7 +- .../appveyor/appveyor-job-build.service.js | 10 +- services/appveyor/appveyor-job-build.spec.js | 10 +- .../appveyor/appveyor-job-build.tester.js | 7 +- services/appveyor/appveyor-tests.service.js | 10 +- services/appveyor/appveyor-tests.tester.js | 9 +- services/archlinux/archlinux.service.js | 10 +- services/archlinux/archlinux.tester.js | 9 +- services/aur/aur.service.js | 26 ++-- services/aur/aur.spec.js | 6 +- services/aur/aur.tester.js | 14 +-- services/azure-devops/azure-devops-base.js | 8 +- .../azure-devops-build.service.js | 12 +- .../azure-devops/azure-devops-build.tester.js | 7 +- .../azure-devops-coverage.service.js | 14 +-- .../azure-devops-coverage.tester.js | 7 +- services/azure-devops/azure-devops-helpers.js | 8 +- .../azure-devops-release.service.js | 10 +- .../azure-devops-release.tester.js | 7 +- .../azure-devops-tests.service.js | 12 +- .../azure-devops/azure-devops-tests.tester.js | 7 +- services/azure-devops/vso-redirect.service.js | 56 ++++----- services/azure-devops/vso-redirect.tester.js | 8 +- services/beerpay/beerpay.service.js | 6 +- services/beerpay/beerpay.tester.js | 7 +- services/bintray/bintray.service.js | 6 +- services/bintray/bintray.tester.js | 8 +- services/bit/bit-components.service.js | 14 +-- services/bit/bit-components.tester.js | 7 +- .../bitbucket/bitbucket-issues.service.js | 13 +- services/bitbucket/bitbucket-issues.tester.js | 10 +- .../bitbucket/bitbucket-pipelines.service.js | 13 +- .../bitbucket/bitbucket-pipelines.tester.js | 10 +- .../bitbucket-pull-request.service.js | 15 ++- .../bitbucket/bitbucket-pull-request.spec.js | 14 +-- .../bitbucket-pull-request.tester.js | 10 +- services/bithound/bithound.service.js | 6 +- services/bithound/bithound.tester.js | 8 +- services/bitrise/bitrise.service.js | 8 +- services/bitrise/bitrise.tester.js | 7 +- services/bountysource/bountysource.service.js | 12 +- services/bountysource/bountysource.tester.js | 10 +- services/bower/bower-base.js | 8 +- services/bower/bower-license.service.js | 8 +- services/bower/bower-license.tester.js | 5 +- services/bower/bower-version.service.js | 12 +- services/bower/bower-version.tester.js | 12 +- services/bstats/bstats-players.service.js | 10 +- services/bstats/bstats-players.tester.js | 7 +- services/bstats/bstats-servers.service.js | 10 +- services/bstats/bstats-servers.tester.js | 7 +- services/bugzilla/bugzilla.service.js | 10 +- services/bugzilla/bugzilla.spec.js | 6 +- services/bugzilla/bugzilla.tester.js | 7 +- services/build-status.js | 6 +- services/build-status.spec.js | 8 +- services/buildkite/buildkite.service.js | 10 +- services/buildkite/buildkite.tester.js | 9 +- services/bundlephobia/bundlephobia.service.js | 12 +- services/bundlephobia/bundlephobia.tester.js | 7 +- services/categories.js | 4 +- services/cauditor/cauditor.service.js | 6 +- services/cauditor/cauditor.tester.js | 8 +- services/cdnjs/cdnjs.service.js | 10 +- services/cdnjs/cdnjs.tester.js | 7 +- services/check-services.spec.js | 15 +-- services/chocolatey/chocolatey.service.js | 6 +- services/chocolatey/chocolatey.tester.js | 12 +- .../chrome-web-store/chrome-web-store-base.js | 10 +- .../chrome-web-store-price.service.js | 10 +- .../chrome-web-store-price.tester.js | 7 +- .../chrome-web-store-rating.service.js | 12 +- .../chrome-web-store-rating.tester.js | 12 +- .../chrome-web-store-users.service.js | 15 +-- .../chrome-web-store-users.tester.js | 10 +- .../chrome-web-store-version.service.js | 10 +- .../chrome-web-store-version.tester.js | 7 +- .../cii-best-practices.service.js | 10 +- .../cii-best-practices.tester.js | 7 +- services/circleci/circleci.service.js | 10 +- services/circleci/circleci.tester.js | 10 +- services/cirrus/cirrus.service.js | 10 +- services/cirrus/cirrus.tester.js | 9 +- services/clojars/clojars-base.js | 10 +- services/clojars/clojars-downloads.service.js | 10 +- services/clojars/clojars-downloads.tester.js | 7 +- services/clojars/clojars-version.service.js | 12 +- services/clojars/clojars-version.tester.js | 8 +- services/cocoapods/cocoapods-apps.service.js | 6 +- services/cocoapods/cocoapods-apps.tester.js | 8 +- services/cocoapods/cocoapods-base.js | 8 +- services/cocoapods/cocoapods-docs.service.js | 12 +- services/cocoapods/cocoapods-docs.tester.js | 7 +- .../cocoapods/cocoapods-downloads.service.js | 6 +- .../cocoapods/cocoapods-downloads.tester.js | 8 +- .../cocoapods/cocoapods-license.service.js | 6 +- .../cocoapods/cocoapods-license.tester.js | 5 +- .../cocoapods/cocoapods-platform.service.js | 6 +- .../cocoapods/cocoapods-platform.tester.js | 7 +- .../cocoapods/cocoapods-version.service.js | 8 +- .../cocoapods/cocoapods-version.tester.js | 7 +- services/codacy/codacy-coverage.service.js | 13 +- services/codacy/codacy-coverage.tester.js | 7 +- services/codacy/codacy-grade.service.js | 10 +- services/codacy/codacy-grade.tester.js | 7 +- services/codacy/codacy-helpers.js | 6 +- ...codeclimate-analysis-redirector.service.js | 6 +- .../codeclimate-analysis-redirector.tester.js | 8 +- .../codeclimate-analysis.service.js | 14 +-- .../codeclimate-analysis.tester.js | 9 +- services/codeclimate/codeclimate-common.js | 12 +- ...codeclimate-coverage-redirector.service.js | 6 +- .../codeclimate-coverage-redirector.tester.js | 8 +- .../codeclimate-coverage.service.js | 12 +- .../codeclimate-coverage.tester.js | 9 +- services/codecov/codecov-redirect.service.js | 6 +- services/codecov/codecov-redirect.tester.js | 8 +- services/codecov/codecov.service.js | 12 +- services/codecov/codecov.spec.js | 6 +- services/codecov/codecov.tester.js | 7 +- .../codefactor/codefactor-grade.service.js | 10 +- services/codefactor/codefactor-grade.spec.js | 6 +- .../codefactor/codefactor-grade.tester.js | 7 +- services/codefactor/codefactor-helpers.js | 6 +- services/codeship/codeship.service.js | 10 +- services/codeship/codeship.spec.js | 6 +- services/codeship/codeship.tester.js | 7 +- services/codetally/codetally.service.js | 6 +- services/codetally/codetally.tester.js | 8 +- services/color-formatters.js | 6 +- services/color-formatters.spec.js | 10 +- services/conda/conda-base.js | 10 +- services/conda/conda-downloads.service.js | 10 +- services/conda/conda-downloads.tester.js | 7 +- services/conda/conda-license.service.js | 12 +- services/conda/conda-license.tester.js | 5 +- services/conda/conda-platform.service.js | 6 +- services/conda/conda-platform.tester.js | 7 +- services/conda/conda-version.service.js | 10 +- services/conda/conda-version.tester.js | 7 +- .../continuousphp/continuousphp.service.js | 6 +- .../continuousphp/continuousphp.tester.js | 8 +- services/contributor-count.js | 9 +- services/contributor-count.spec.js | 6 +- services/cookbook/cookbook.service.js | 10 +- services/cookbook/cookbook.tester.js | 7 +- .../coveralls/coveralls-redirector.service.js | 6 +- .../coveralls/coveralls-redirector.tester.js | 8 +- services/coveralls/coveralls.service.js | 10 +- services/coveralls/coveralls.tester.js | 7 +- .../coverity/coverity-on-demand.service.js | 6 +- .../coverity/coverity-on-demand.tester.js | 8 +- services/coverity/coverity-scan.service.js | 8 +- services/coverity/coverity-scan.tester.js | 7 +- services/cpan/cpan-license.service.js | 6 +- services/cpan/cpan-license.tester.js | 5 +- services/cpan/cpan-version.service.js | 8 +- services/cpan/cpan-version.tester.js | 7 +- services/cpan/cpan.js | 8 +- services/cran/cran.service.js | 10 +- services/cran/cran.tester.js | 10 +- services/crates/crates-base.js | 10 +- services/crates/crates-downloads.service.js | 12 +- services/crates/crates-downloads.tester.js | 10 +- services/crates/crates-license.service.js | 6 +- services/crates/crates-license.tester.js | 8 +- services/crates/crates-version.service.js | 10 +- services/crates/crates-version.spec.js | 10 +- services/crates/crates-version.tester.js | 7 +- services/criterion/constants.js | 12 +- services/criterion/criterion.service.js | 12 +- services/criterion/criterion.tester.js | 11 +- services/ctan/ctan.service.js | 15 +-- services/ctan/ctan.tester.js | 10 +- services/date/date.service.js | 8 +- services/date/date.tester.js | 10 +- services/david/david.service.js | 8 +- services/david/david.tester.js | 7 +- services/debian/debian.service.js | 10 +- services/debian/debian.tester.js | 9 +- services/debug/debug.service.js | 6 +- services/debug/debug.tester.js | 7 +- services/dependabot/dependabot.service.js | 8 +- services/dependabot/dependabot.tester.js | 7 +- services/depfu/depfu.service.js | 8 +- services/depfu/depfu.tester.js | 8 +- services/deprecation-helpers.js | 8 +- services/deprecation-helpers.spec.js | 8 +- services/discord/discord.service.js | 10 +- services/discord/discord.spec.js | 10 +- services/discord/discord.tester.js | 7 +- .../discourse/discourse-redirect.service.js | 6 +- .../discourse/discourse-redirect.tester.js | 8 +- services/discourse/discourse.service.js | 14 +-- services/discourse/discourse.tester.js | 10 +- services/dockbit/dockbit.service.js | 6 +- services/dockbit/dockbit.tester.js | 8 +- services/docker/docker-automated.service.js | 12 +- services/docker/docker-automated.tester.js | 9 +- services/docker/docker-build.service.js | 6 +- services/docker/docker-build.tester.js | 8 +- .../docker/docker-cloud-automated.service.js | 10 +- .../docker/docker-cloud-automated.tester.js | 9 +- services/docker/docker-cloud-build.service.js | 10 +- services/docker/docker-cloud-build.tester.js | 9 +- services/docker/docker-cloud-common-fetch.js | 8 +- services/docker/docker-fixtures.js | 4 +- services/docker/docker-helpers.js | 9 +- services/docker/docker-pulls.service.js | 16 ++- services/docker/docker-pulls.tester.js | 9 +- services/docker/docker-size.service.js | 18 ++- services/docker/docker-size.spec.js | 8 +- services/docker/docker-size.tester.js | 7 +- services/docker/docker-stars.service.js | 14 +-- services/docker/docker-stars.tester.js | 9 +- services/docker/docker-version.service.js | 16 ++- services/docker/docker-version.spec.js | 14 +-- services/docker/docker-version.tester.js | 15 ++- services/docsrs/docsrs.service.js | 8 +- services/docsrs/docsrs.tester.js | 7 +- services/dotnetstatus/dotnetstatus.service.js | 6 +- services/dotnetstatus/dotnetstatus.tester.js | 8 +- services/drone/drone-build.service.js | 12 +- services/drone/drone-build.spec.js | 10 +- services/drone/drone-build.tester.js | 9 +- services/dub/dub-download.service.js | 14 +-- services/dub/dub-download.tester.js | 9 +- services/dub/dub-license.service.js | 10 +- services/dub/dub-license.tester.js | 5 +- services/dub/dub-version.service.js | 10 +- services/dub/dub-version.tester.js | 11 +- services/dynamic-common.js | 12 +- services/dynamic/dynamic-helpers.js | 10 +- services/dynamic/dynamic-json.service.js | 12 +- services/dynamic/dynamic-json.tester.js | 9 +- services/dynamic/dynamic-response-fixtures.js | 8 +- services/dynamic/dynamic-xml.service.js | 16 ++- services/dynamic/dynamic-xml.spec.js | 14 +-- services/dynamic/dynamic-xml.tester.js | 9 +- services/dynamic/dynamic-yaml.service.js | 12 +- services/dynamic/dynamic-yaml.tester.js | 5 +- services/dynamic/json-path.js | 12 +- services/dynamic/json-path.spec.js | 10 +- .../eclipse-marketplace-base.js | 6 +- .../eclipse-marketplace-downloads.service.js | 14 +-- .../eclipse-marketplace-downloads.tester.js | 10 +- .../eclipse-marketplace-favorites.service.js | 12 +- .../eclipse-marketplace-favorites.tester.js | 7 +- .../eclipse-marketplace-license.service.js | 10 +- .../eclipse-marketplace-license.tester.js | 5 +- .../eclipse-marketplace-update.service.js | 14 +-- .../eclipse-marketplace-update.tester.js | 7 +- .../eclipse-marketplace-version.service.js | 12 +- .../eclipse-marketplace-version.tester.js | 7 +- services/ecologi/ecologi-carbon.service.js | 12 +- services/ecologi/ecologi-carbon.tester.js | 7 +- services/ecologi/ecologi-trees.service.js | 14 +-- services/ecologi/ecologi-trees.tester.js | 7 +- services/elm-package/elm-package.service.js | 12 +- services/elm-package/elm-package.tester.js | 7 +- services/endpoint-common.js | 13 +- .../endpoint/endpoint-redirect.service.js | 6 +- services/endpoint/endpoint-redirect.tester.js | 8 +- services/endpoint/endpoint.service.js | 16 ++- services/endpoint/endpoint.tester.js | 11 +- services/f-droid/f-droid.service.js | 16 ++- services/f-droid/f-droid.tester.js | 10 +- services/fedora/fedora.service.js | 10 +- services/fedora/fedora.tester.js | 9 +- services/feedz/feedz.service.js | 14 +-- services/feedz/feedz.service.spec.js | 6 +- services/feedz/feedz.tester.js | 8 +- services/flathub/flathub.service.js | 10 +- services/flathub/flathub.tester.js | 7 +- services/gem/gem-downloads.service.js | 18 ++- services/gem/gem-downloads.tester.js | 7 +- services/gem/gem-owner.service.js | 10 +- services/gem/gem-owner.tester.js | 7 +- services/gem/gem-rank.service.js | 12 +- services/gem/gem-rank.tester.js | 7 +- services/gem/gem-version.service.js | 10 +- services/gem/gem-version.tester.js | 9 +- services/gemnasium/gemnasium.service.js | 6 +- services/gemnasium/gemnasium.tester.js | 8 +- services/gerrit/gerrit.service.js | 10 +- services/gerrit/gerrit.tester.js | 5 +- services/github/auth/acceptor.js | 16 +-- services/github/auth/acceptor.spec.js | 24 ++-- services/github/auth/admin.js | 6 +- services/github/auth/admin.spec.js | 14 +-- .../github/github-all-contributors.service.js | 16 +-- .../github/github-all-contributors.tester.js | 7 +- .../github/github-api-provider.integration.js | 15 ++- services/github/github-api-provider.js | 14 +-- services/github/github-api-provider.spec.js | 8 +- services/github/github-auth-service.js | 10 +- .../github/github-checks-status.service.js | 12 +- .../github/github-checks-status.tester.js | 7 +- services/github/github-code-size.service.js | 10 +- services/github/github-code-size.tester.js | 7 +- .../github/github-commit-activity.service.js | 14 +-- .../github/github-commit-activity.tester.js | 11 +- .../github/github-commit-status.service.js | 12 +- .../github/github-commit-status.tester.js | 7 +- .../github/github-commits-since.service.js | 18 ++- .../github/github-commits-since.tester.js | 7 +- services/github/github-common-fetch.js | 14 +-- services/github/github-common-release.js | 19 ++- services/github/github-common-release.spec.js | 6 +- services/github/github-constellation.js | 20 ++-- .../github/github-contributors.service.js | 14 +-- services/github/github-contributors.tester.js | 7 +- services/github/github-deployments.service.js | 14 +-- services/github/github-deployments.spec.js | 6 +- services/github/github-deployments.tester.js | 7 +- .../github-directory-file-count.service.js | 22 ++-- .../github-directory-file-count.spec.js | 10 +- .../github-directory-file-count.tester.js | 7 +- .../github-discussions-total.service.js | 14 +-- .../github/github-discussions-total.tester.js | 7 +- services/github/github-downloads.service.js | 20 ++-- services/github/github-downloads.tester.js | 9 +- services/github/github-followers.service.js | 14 +-- services/github/github-followers.tester.js | 7 +- services/github/github-forks.service.js | 16 ++- services/github/github-forks.tester.js | 7 +- services/github/github-go-mod.service.js | 18 ++- services/github/github-go-mod.tester.js | 7 +- .../github/github-hacktoberfest.service.js | 24 ++-- services/github/github-hacktoberfest.spec.js | 6 +- .../github/github-hacktoberfest.tester.js | 7 +- services/github/github-helpers.js | 8 +- .../github-issue-detail-redirect.service.js | 6 +- .../github-issue-detail-redirect.tester.js | 8 +- .../github/github-issue-detail.service.js | 20 ++-- services/github/github-issue-detail.spec.js | 16 ++- services/github/github-issue-detail.tester.js | 9 +- .../github/github-issues-search.service.js | 19 ++- .../github/github-issues-search.tester.js | 10 +- services/github/github-issues.service.js | 16 ++- services/github/github-issues.tester.js | 9 +- services/github/github-labels.service.js | 10 +- services/github/github-labels.tester.js | 5 +- .../github/github-language-count.service.js | 8 +- .../github/github-language-count.tester.js | 7 +- services/github/github-languages-base.js | 12 +- services/github/github-last-commit.service.js | 14 +-- services/github/github-last-commit.tester.js | 7 +- services/github/github-lerna-json.service.js | 16 ++- services/github/github-lerna-json.tester.js | 7 +- services/github/github-license.service.js | 12 +- services/github/github-license.spec.js | 6 +- services/github/github-license.tester.js | 7 +- services/github/github-manifest.service.js | 21 ++-- services/github/github-manifest.tester.js | 12 +- .../github/github-milestone-detail.service.js | 14 +-- .../github/github-milestone-detail.tester.js | 9 +- services/github/github-milestone.service.js | 12 +- services/github/github-milestone.tester.js | 7 +- .../github/github-package-json.service.js | 25 ++-- services/github/github-package-json.tester.js | 14 +-- services/github/github-pipenv.service.js | 18 ++- services/github/github-pipenv.tester.js | 14 +-- ...github-pull-request-check-state.service.js | 14 +-- .../github-pull-request-check-state.tester.js | 5 +- services/github/github-r-package.service.js | 18 ++- services/github/github-r-package.spec.js | 10 +- services/github/github-r-package.tester.js | 7 +- .../github/github-release-date.service.js | 16 ++- services/github/github-release-date.tester.js | 7 +- services/github/github-release.service.js | 21 ++-- services/github/github-release.tester.js | 12 +- services/github/github-repo-size.service.js | 14 +-- services/github/github-repo-size.tester.js | 7 +- services/github/github-search.service.js | 14 +-- services/github/github-search.tester.js | 7 +- services/github/github-size.service.js | 16 ++- services/github/github-size.tester.js | 7 +- services/github/github-sponsors.service.js | 18 ++- services/github/github-sponsors.tester.js | 10 +- services/github/github-stars.service.js | 14 +-- services/github/github-stars.tester.js | 7 +- services/github/github-tag.service.js | 25 ++-- services/github/github-tag.spec.js | 6 +- services/github/github-tag.tester.js | 12 +- .../github/github-top-language.service.js | 8 +- services/github/github-top-language.tester.js | 7 +- services/github/github-total-star.service.js | 20 ++-- services/github/github-total-star.tester.js | 7 +- services/github/github-watchers.service.js | 14 +-- services/github/github-watchers.tester.js | 7 +- .../github/github-workflow-status.service.js | 12 +- .../github/github-workflow-status.tester.js | 9 +- services/gitlab/gitlab-coverage.service.js | 12 +- services/gitlab/gitlab-coverage.tester.js | 7 +- .../gitlab/gitlab-pipeline-status.service.js | 15 +-- .../gitlab/gitlab-pipeline-status.tester.js | 10 +- services/gitter/gitter.service.js | 6 +- services/gitter/gitter.tester.js | 5 +- .../gradle-plugin-portal.service.js | 8 +- .../gradle-plugin-portal.tester.js | 5 +- services/gratipay/gratipay.service.js | 6 +- services/gratipay/gratipay.tester.js | 8 +- services/hackage/hackage-deps.service.js | 6 +- services/hackage/hackage-deps.tester.js | 7 +- services/hackage/hackage-version.service.js | 8 +- services/hackage/hackage-version.tester.js | 7 +- services/hexpm/hexpm.service.js | 12 +- services/hexpm/hexpm.tester.js | 10 +- services/homebrew/homebrew-cask.service.js | 10 +- services/homebrew/homebrew-cask.tester.js | 7 +- .../homebrew/homebrew-downloads.service.js | 14 +-- .../homebrew/homebrew-downloads.tester.js | 7 +- services/homebrew/homebrew-version.service.js | 10 +- services/homebrew/homebrew-version.tester.js | 7 +- services/hsts/hsts.service.js | 8 +- services/hsts/hsts.tester.js | 5 +- services/imagelayers/imagelayers.service.js | 6 +- services/imagelayers/imagelayers.tester.js | 8 +- services/index.js | 8 +- services/issuestats/issuestats.service.js | 6 +- services/issuestats/issuestats.tester.js | 7 +- services/itunes/itunes.service.js | 12 +- services/itunes/itunes.tester.js | 7 +- services/jenkins/jenkins-base.js | 6 +- .../jenkins/jenkins-build-redirect.service.js | 8 +- .../jenkins/jenkins-build-redirect.tester.js | 8 +- services/jenkins/jenkins-build.service.js | 14 +-- services/jenkins/jenkins-build.spec.js | 14 +-- services/jenkins/jenkins-build.tester.js | 9 +- services/jenkins/jenkins-common.js | 14 +-- services/jenkins/jenkins-common.spec.js | 5 +- .../jenkins-coverage-redirector.service.js | 8 +- .../jenkins-coverage-redirector.tester.js | 8 +- services/jenkins/jenkins-coverage.service.js | 14 +-- services/jenkins/jenkins-coverage.tester.js | 7 +- .../jenkins-plugin-installs.service.js | 14 +-- .../jenkins/jenkins-plugin-installs.tester.js | 7 +- .../jenkins/jenkins-plugin-version.service.js | 12 +- .../jenkins/jenkins-plugin-version.tester.js | 9 +- .../jenkins-tests-redirector.service.js | 8 +- .../jenkins-tests-redirector.tester.js | 8 +- services/jenkins/jenkins-tests.service.js | 20 ++-- services/jenkins/jenkins-tests.tester.js | 9 +- services/jetbrains/jetbrains-base.js | 8 +- .../jetbrains/jetbrains-downloads.service.js | 14 +-- .../jetbrains/jetbrains-downloads.tester.js | 7 +- .../jetbrains/jetbrains-rating.service.js | 12 +- services/jetbrains/jetbrains-rating.tester.js | 7 +- .../jetbrains/jetbrains-version.service.js | 10 +- .../jetbrains/jetbrains-version.tester.js | 7 +- services/jira/jira-common.js | 4 +- services/jira/jira-issue-redirect.service.js | 6 +- services/jira/jira-issue-redirect.tester.js | 8 +- services/jira/jira-issue.service.js | 12 +- services/jira/jira-issue.spec.js | 12 +- services/jira/jira-issue.tester.js | 5 +- services/jira/jira-sprint-redirect.service.js | 6 +- services/jira/jira-sprint-redirect.tester.js | 8 +- services/jira/jira-sprint.service.js | 12 +- services/jira/jira-sprint.spec.js | 14 +-- services/jira/jira-sprint.tester.js | 9 +- services/jira/jira-test-helpers.js | 11 +- services/jitpack/jitpack-downloads.service.js | 6 +- services/jitpack/jitpack-downloads.tester.js | 8 +- .../jitpack-version-redirector.service.js | 6 +- .../jitpack-version-redirector.tester.js | 8 +- services/jitpack/jitpack-version.service.js | 10 +- services/jitpack/jitpack-version.tester.js | 7 +- services/jsdelivr/jsdelivr-base.js | 12 +- .../jsdelivr/jsdelivr-hits-github.service.js | 6 +- .../jsdelivr/jsdelivr-hits-github.tester.js | 11 +- .../jsdelivr/jsdelivr-hits-npm.service.js | 6 +- services/jsdelivr/jsdelivr-hits-npm.tester.js | 11 +- services/keybase/keybase-btc.service.js | 10 +- services/keybase/keybase-btc.tester.js | 7 +- services/keybase/keybase-pgp.service.js | 10 +- services/keybase/keybase-pgp.tester.js | 7 +- services/keybase/keybase-profile.js | 7 +- services/keybase/keybase-xlm.service.js | 10 +- services/keybase/keybase-xlm.tester.js | 7 +- services/keybase/keybase-zec.service.js | 10 +- services/keybase/keybase-zec.tester.js | 7 +- .../leanpub/leanpub-book-summary.service.js | 6 +- .../leanpub/leanpub-book-summary.tester.js | 8 +- services/lgtm/lgtm-alerts.service.js | 8 +- services/lgtm/lgtm-alerts.tester.js | 9 +- services/lgtm/lgtm-base.js | 8 +- services/lgtm/lgtm-grade.service.js | 6 +- services/lgtm/lgtm-grade.tester.js | 9 +- services/lgtm/lgtm-redirector.service.js | 6 +- services/lgtm/lgtm-redirector.tester.js | 8 +- services/lgtm/lgtm-test-helpers.js | 6 +- services/liberapay/liberapay-base.js | 18 +-- services/liberapay/liberapay-gives.service.js | 8 +- services/liberapay/liberapay-gives.tester.js | 7 +- services/liberapay/liberapay-goal.service.js | 10 +- services/liberapay/liberapay-goal.spec.js | 10 +- services/liberapay/liberapay-goal.tester.js | 7 +- .../liberapay/liberapay-patrons.service.js | 10 +- .../liberapay/liberapay-patrons.tester.js | 7 +- .../liberapay/liberapay-receives.service.js | 8 +- .../liberapay/liberapay-receives.tester.js | 7 +- services/librariesio/librariesio-common.js | 10 +- .../librariesio-dependencies-helpers.js | 4 +- .../librariesio-dependencies-helpers.spec.js | 8 +- .../librariesio-dependencies.service.js | 12 +- .../librariesio-dependencies.tester.js | 10 +- .../librariesio-dependent-repos.service.js | 10 +- .../librariesio-dependent-repos.tester.js | 7 +- .../librariesio-dependents.service.js | 10 +- .../librariesio-dependents.tester.js | 7 +- .../librariesio-sourcerank.service.js | 10 +- .../librariesio-sourcerank.tester.js | 7 +- services/libscore/libscore.service.js | 6 +- services/libscore/libscore.tester.js | 7 +- services/licenses.js | 6 +- services/licenses.spec.js | 6 +- services/localizely/localizely.service.js | 10 +- services/localizely/localizely.tester.js | 7 +- services/luarocks/luarocks-version-helpers.js | 10 +- .../luarocks/luarocks-version-helpers.spec.js | 8 +- services/luarocks/luarocks.service.js | 12 +- services/luarocks/luarocks.spec.js | 6 +- services/luarocks/luarocks.tester.js | 7 +- services/magnumci/magnumci.service.js | 6 +- services/magnumci/magnumci.tester.js | 7 +- services/maintenance/maintenance.service.js | 6 +- services/maintenance/maintenance.spec.js | 6 +- services/maintenance/maintenance.tester.js | 5 +- services/mastodon/mastodon-follow.service.js | 12 +- services/mastodon/mastodon-follow.tester.js | 7 +- services/matrix/matrix.service.js | 8 +- services/matrix/matrix.tester.js | 7 +- .../maven-central/maven-central.service.js | 8 +- .../maven-central/maven-central.tester.js | 5 +- .../maven-metadata-redirect.service.js | 6 +- .../maven-metadata-redirect.tester.js | 5 +- services/maven-metadata/maven-metadata.js | 4 +- .../maven-metadata/maven-metadata.service.js | 14 +-- .../maven-metadata/maven-metadata.tester.js | 9 +- services/microbadger/microbadger.service.js | 6 +- services/microbadger/microbadger.tester.js | 7 +- .../mozilla-observatory.service.js | 8 +- .../mozilla-observatory.tester.js | 7 +- services/myget/myget.service.js | 9 +- services/myget/myget.tester.js | 18 ++- services/netlify/netlify.service.js | 8 +- services/netlify/netlify.spec.js | 6 +- services/netlify/netlify.tester.js | 7 +- services/nexus/nexus-redirect.service.js | 6 +- services/nexus/nexus-redirect.tester.js | 8 +- services/nexus/nexus-version.js | 6 +- services/nexus/nexus.service.js | 20 ++-- services/nexus/nexus.spec.js | 12 +- services/nexus/nexus.tester.js | 9 +- services/node/node-base.js | 6 +- services/node/node-current.service.js | 8 +- services/node/node-current.spec.js | 6 +- services/node/node-current.tester.js | 12 +- services/node/node-lts.service.js | 8 +- services/node/node-lts.spec.js | 6 +- services/node/node-lts.tester.js | 14 +-- services/node/node-version-color.js | 15 +-- services/node/testUtils/test-utils.js | 26 ++-- services/nodeping/nodeping-status.service.js | 12 +- services/nodeping/nodeping-status.tester.js | 7 +- services/nodeping/nodeping-uptime.service.js | 10 +- services/nodeping/nodeping-uptime.tester.js | 7 +- services/npm/npm-base.js | 16 +-- services/npm/npm-base.spec.js | 10 +- services/npm/npm-collaborators.service.js | 8 +- services/npm/npm-collaborators.tester.js | 7 +- .../npm/npm-dependency-version.service.js | 8 +- services/npm/npm-dependency-version.tester.js | 7 +- services/npm/npm-downloads.service.js | 12 +- services/npm/npm-downloads.spec.js | 6 +- services/npm/npm-downloads.tester.js | 7 +- services/npm/npm-license.service.js | 10 +- services/npm/npm-license.tester.js | 5 +- services/npm/npm-type-definitions.service.js | 6 +- services/npm/npm-type-definitions.spec.js | 6 +- services/npm/npm-type-definitions.tester.js | 7 +- services/npm/npm-version.service.js | 12 +- services/npm/npm-version.tester.js | 7 +- services/npms-io/npms-io-score.service.js | 10 +- services/npms-io/npms-io-score.tester.js | 7 +- services/nsp/nsp.service.js | 6 +- services/nsp/nsp.tester.js | 8 +- services/nuget-fixtures.js | 4 +- services/nuget/nuget-helpers.js | 14 +-- services/nuget/nuget-helpers.spec.js | 8 +- services/nuget/nuget-v2-service-family.js | 23 ++-- services/nuget/nuget-v3-service-family.js | 16 +-- .../nuget/nuget-v3-service-family.spec.js | 6 +- services/nuget/nuget.service.js | 6 +- services/nuget/nuget.tester.js | 16 ++- services/nycrc/nycrc.service.js | 16 +-- services/nycrc/nycrc.tester.js | 7 +- .../offset-earth-carbon-redirect.service.js | 6 +- .../offset-earth-carbon-redirect.tester.js | 8 +- .../offset-earth-trees-redirect.service.js | 6 +- .../offset-earth-trees-redirect.tester.js | 8 +- services/open-vsx/open-vsx-base.js | 10 +- .../open-vsx/open-vsx-downloads.service.js | 10 +- .../open-vsx/open-vsx-downloads.tester.js | 7 +- services/open-vsx/open-vsx-rating.service.js | 10 +- services/open-vsx/open-vsx-rating.spec.js | 6 +- services/open-vsx/open-vsx-rating.tester.js | 7 +- .../open-vsx/open-vsx-release-date.service.js | 10 +- .../open-vsx/open-vsx-release-date.tester.js | 7 +- services/open-vsx/open-vsx-version.service.js | 8 +- services/open-vsx/open-vsx-version.tester.js | 7 +- .../opencollective-all.service.js | 6 +- .../opencollective-all.tester.js | 7 +- .../opencollective-backers.service.js | 6 +- .../opencollective-backers.tester.js | 7 +- .../opencollective/opencollective-base.js | 10 +- .../opencollective-by-tier.service.js | 6 +- .../opencollective-by-tier.tester.js | 7 +- .../opencollective-sponsors.service.js | 6 +- .../opencollective-sponsors.tester.js | 7 +- services/opm/opm-version.service.js | 8 +- services/opm/opm-version.tester.js | 7 +- services/ore/ore-base.js | 8 +- services/ore/ore-category.service.js | 6 +- services/ore/ore-category.spec.js | 6 +- services/ore/ore-category.tester.js | 7 +- services/ore/ore-downloads.service.js | 10 +- services/ore/ore-downloads.tester.js | 7 +- services/ore/ore-license.service.js | 8 +- services/ore/ore-license.spec.js | 6 +- services/ore/ore-license.tester.js | 5 +- services/ore/ore-sponge-versions.service.js | 6 +- services/ore/ore-sponge-versions.spec.js | 6 +- services/ore/ore-sponge-versions.tester.js | 8 +- services/ore/ore-stars.service.js | 8 +- services/ore/ore-stars.tester.js | 7 +- services/ore/ore-version.service.js | 8 +- services/ore/ore-version.spec.js | 6 +- services/ore/ore-version.tester.js | 7 +- services/osslifecycle/osslifecycle.service.js | 6 +- services/osslifecycle/osslifecycle.tester.js | 8 +- services/package-json-helpers.js | 12 +- services/package-json-helpers.spec.js | 6 +- .../packagecontrol/packagecontrol.service.js | 14 +-- .../packagecontrol/packagecontrol.tester.js | 10 +- services/packagist/packagist-base.js | 8 +- .../packagist/packagist-downloads.service.js | 16 ++- .../packagist/packagist-downloads.tester.js | 7 +- .../packagist/packagist-license.service.js | 16 ++- services/packagist/packagist-license.spec.js | 8 +- .../packagist/packagist-license.tester.js | 5 +- .../packagist-php-version.service.js | 14 +-- .../packagist/packagist-php-version.spec.js | 8 +- .../packagist/packagist-php-version.tester.js | 7 +- services/packagist/packagist-stars.service.js | 15 +-- services/packagist/packagist-stars.tester.js | 7 +- .../packagist/packagist-version.service.js | 18 ++- .../packagist/packagist-version.tester.js | 14 +-- services/php-eye/php-eye-hhvm.service.js | 6 +- services/php-eye/php-eye-hhvm.tester.js | 8 +- .../php-eye/php-eye-php-version.service.js | 6 +- .../php-eye/php-eye-php-version.tester.js | 8 +- services/php-version.js | 14 +-- services/php-version.spec.js | 6 +- services/pingpong/pingpong-status.service.js | 8 +- services/pingpong/pingpong-status.tester.js | 7 +- services/pingpong/pingpong-uptime.service.js | 10 +- services/pingpong/pingpong-uptime.tester.js | 7 +- services/pipenv-helpers.js | 11 +- services/pkgreview/package-rating.service.js | 14 +-- services/pkgreview/package-rating.tester.js | 7 +- services/poeditor/poeditor.service.js | 12 +- services/poeditor/poeditor.tester.js | 7 +- .../powershellgallery.service.js | 11 +- .../powershellgallery.tester.js | 13 +- services/pub/pub.service.js | 10 +- services/pub/pub.tester.js | 10 +- services/puppetforge/puppetforge-base.js | 13 +- .../puppetforge-module-downloads.service.js | 12 +- .../puppetforge-module-downloads.tester.js | 7 +- .../puppetforge-module-endorsement.service.js | 10 +- .../puppetforge-module-endorsement.tester.js | 7 +- .../puppetforge-module-feedback.service.js | 14 +-- .../puppetforge-module-feedback.tester.js | 7 +- .../puppetforge-module-pdk-version.service.js | 12 +- .../puppetforge-module-pdk-version.tester.js | 7 +- .../puppetforge-module-version.service.js | 10 +- .../puppetforge-module-version.tester.js | 7 +- .../puppetforge-user-module-count.service.js | 12 +- .../puppetforge-user-module-count.tester.js | 7 +- .../puppetforge-user-release-count.service.js | 12 +- .../puppetforge-user-release-count.tester.js | 7 +- services/pypi/pypi-base.js | 8 +- services/pypi/pypi-django-versions.service.js | 8 +- services/pypi/pypi-django-versions.tester.js | 7 +- services/pypi/pypi-downloads.service.js | 14 +-- services/pypi/pypi-downloads.tester.js | 7 +- services/pypi/pypi-format.service.js | 8 +- services/pypi/pypi-format.tester.js | 5 +- services/pypi/pypi-helpers.js | 4 +- services/pypi/pypi-helpers.spec.js | 8 +- services/pypi/pypi-implementation.service.js | 8 +- services/pypi/pypi-implementation.tester.js | 5 +- services/pypi/pypi-license.service.js | 10 +- services/pypi/pypi-license.tester.js | 5 +- services/pypi/pypi-python-versions.service.js | 10 +- services/pypi/pypi-python-versions.spec.js | 8 +- services/pypi/pypi-python-versions.tester.js | 7 +- services/pypi/pypi-status.service.js | 8 +- services/pypi/pypi-status.tester.js | 5 +- services/pypi/pypi-version.service.js | 8 +- services/pypi/pypi-version.tester.js | 9 +- services/pypi/pypi-wheel.service.js | 8 +- services/pypi/pypi-wheel.tester.js | 5 +- services/readthedocs/readthedocs.service.js | 10 +- services/readthedocs/readthedocs.tester.js | 9 +- .../reddit/subreddit-subscribers.service.js | 12 +- .../reddit/subreddit-subscribers.tester.js | 7 +- services/reddit/user-karma.service.js | 12 +- services/reddit/user-karma.tester.js | 7 +- services/redmine/redmine.service.js | 12 +- services/redmine/redmine.tester.js | 12 +- .../repology/repology-repositories.service.js | 12 +- .../repology/repology-repositories.tester.js | 7 +- services/requires/requires.service.js | 8 +- services/requires/requires.tester.js | 7 +- services/resharper/resharper.service.js | 6 +- services/resharper/resharper.tester.js | 12 +- services/response-fixtures.js | 15 +-- services/reuse/reuse-compliance-helper.js | 9 +- services/reuse/reuse-compliance.service.js | 9 +- services/reuse/reuse-compliance.tester.js | 7 +- services/route-builder.js | 6 +- services/scoop/scoop-version.service.js | 16 +-- services/scoop/scoop-version.tester.js | 10 +- services/scrutinizer/scrutinizer-base.js | 6 +- .../scrutinizer/scrutinizer-build.service.js | 10 +- .../scrutinizer/scrutinizer-build.tester.js | 12 +- .../scrutinizer-coverage.service.js | 14 +-- .../scrutinizer/scrutinizer-coverage.spec.js | 10 +- .../scrutinizer-coverage.tester.js | 10 +- .../scrutinizer-quality.service.js | 10 +- .../scrutinizer/scrutinizer-quality.tester.js | 10 +- .../scrutinizer-redirect.service.js | 6 +- .../scrutinizer-redirect.tester.js | 8 +- .../security-headers.service.js | 10 +- .../security-headers.tester.js | 5 +- services/shippable/shippable.service.js | 10 +- services/shippable/shippable.tester.js | 10 +- services/snap-ci/snap-ci.service.js | 6 +- services/snap-ci/snap-ci.tester.js | 7 +- services/snyk/snyk-test-helpers.js | 7 +- services/snyk/snyk-vulnerability-base.js | 8 +- .../snyk/snyk-vulnerability-github.service.js | 6 +- .../snyk/snyk-vulnerability-github.tester.js | 11 +- .../snyk/snyk-vulnerability-npm.service.js | 8 +- .../snyk/snyk-vulnerability-npm.tester.js | 11 +- services/sonar/sonar-base.js | 10 +- services/sonar/sonar-coverage.service.js | 10 +- services/sonar/sonar-coverage.tester.js | 7 +- .../sonar-documented-api-density.service.js | 10 +- .../sonar-documented-api-density.spec.js | 6 +- .../sonar-documented-api-density.tester.js | 5 +- .../sonar/sonar-fortify-rating.service.js | 8 +- services/sonar/sonar-fortify-rating.spec.js | 10 +- services/sonar/sonar-fortify-rating.tester.js | 5 +- services/sonar/sonar-generic.service.js | 10 +- services/sonar/sonar-generic.tester.js | 7 +- services/sonar/sonar-helpers.js | 10 +- services/sonar/sonar-quality-gate.service.js | 8 +- services/sonar/sonar-quality-gate.spec.js | 6 +- services/sonar/sonar-quality-gate.tester.js | 7 +- services/sonar/sonar-redirector.service.js | 6 +- services/sonar/sonar-redirector.tester.js | 10 +- services/sonar/sonar-tech-debt.service.js | 10 +- services/sonar/sonar-tech-debt.spec.js | 6 +- services/sonar/sonar-tech-debt.tester.js | 7 +- services/sonar/sonar-tests.service.js | 18 ++- services/sonar/sonar-tests.spec.js | 6 +- services/sonar/sonar-tests.tester.js | 23 ++-- services/sonar/sonar-violations.service.js | 14 +-- services/sonar/sonar-violations.spec.js | 8 +- services/sonar/sonar-violations.tester.js | 9 +- .../sourceforge-open-tickets.service.js | 12 +- .../sourceforge-open-tickets.tester.js | 7 +- services/sourceforge/sourceforge.service.js | 16 ++- services/sourceforge/sourceforge.tester.js | 7 +- services/sourcegraph/sourcegraph.service.js | 8 +- services/sourcegraph/sourcegraph.tester.js | 7 +- services/spack/spack.service.js | 10 +- services/spack/spack.tester.js | 7 +- services/spiget/spiget-base.js | 8 +- .../spiget/spiget-download-size.service.js | 6 +- .../spiget/spiget-download-size.tester.js | 7 +- services/spiget/spiget-downloads.service.js | 10 +- services/spiget/spiget-downloads.tester.js | 7 +- .../spiget/spiget-latest-version.service.js | 10 +- .../spiget/spiget-latest-version.tester.js | 7 +- services/spiget/spiget-rating.service.js | 10 +- services/spiget/spiget-rating.tester.js | 7 +- .../spiget/spiget-tested-versions.service.js | 6 +- .../spiget/spiget-tested-versions.tester.js | 7 +- .../stackexchange/stackexchange-helpers.js | 8 +- .../stackexchange-monthlyquestions.service.js | 14 +-- .../stackexchange-monthlyquestions.tester.js | 7 +- .../stackexchange-reputation.service.js | 12 +- .../stackexchange-reputation.tester.js | 7 +- .../stackexchange-taginfo.service.js | 10 +- .../stackexchange-taginfo.tester.js | 7 +- .../query-string-static.service.js | 8 +- .../query-string-static.tester.js | 5 +- services/static-badge/static-badge.service.js | 8 +- services/static-badge/static-badge.tester.js | 7 +- services/steam/steam-base.js | 5 +- services/steam/steam-workshop.service.js | 16 ++- services/steam/steam-workshop.tester.js | 12 +- services/suggest.integration.js | 18 ++- services/suggest.js | 12 +- services/suggest.spec.js | 16 ++- services/swagger/swagger-redirect.service.js | 6 +- services/swagger/swagger-redirect.tester.js | 8 +- services/swagger/swagger.service.js | 10 +- services/swagger/swagger.tester.js | 5 +- .../symfony/sensiolabs-redirect.service.js | 6 +- .../symfony/sensiolabs-redirect.tester.js | 8 +- services/symfony/symfony-insight-base.js | 12 +- services/symfony/symfony-insight-base.spec.js | 8 +- .../symfony/symfony-insight-grade.service.js | 8 +- .../symfony/symfony-insight-grade.tester.js | 9 +- .../symfony/symfony-insight-stars.service.js | 10 +- .../symfony/symfony-insight-stars.tester.js | 9 +- .../symfony-insight-violations.service.js | 6 +- .../symfony-insight-violations.tester.js | 9 +- services/symfony/symfony-insight.spec.js | 20 ++-- services/symfony/symfony-test-helpers.js | 8 +- services/teamcity/teamcity-base.js | 6 +- .../teamcity-build-redirect.service.js | 6 +- .../teamcity-build-redirect.tester.js | 8 +- services/teamcity/teamcity-build.service.js | 10 +- services/teamcity/teamcity-build.spec.js | 12 +- services/teamcity/teamcity-build.tester.js | 9 +- .../teamcity-coverage-redirect.service.js | 6 +- .../teamcity-coverage-redirect.tester.js | 8 +- .../teamcity/teamcity-coverage.service.js | 14 +-- services/teamcity/teamcity-coverage.spec.js | 12 +- services/teamcity/teamcity-coverage.tester.js | 7 +- services/teamcity/teamcity-test-helpers.js | 9 +- services/test-helpers.js | 18 +-- services/test-results.js | 6 +- services/test-results.spec.js | 8 +- services/test-validators.js | 8 +- services/tester.js | 11 +- services/testspace/testspace-base.js | 10 +- services/testspace/testspace-base.spec.js | 8 +- .../testspace/testspace-test-count.service.js | 8 +- .../testspace/testspace-test-count.spec.js | 6 +- .../testspace/testspace-test-count.tester.js | 9 +- .../testspace-test-pass-ratio.service.js | 6 +- .../testspace-test-pass-ratio.spec.js | 6 +- .../testspace-test-pass-ratio.tester.js | 7 +- .../testspace-test-summary.service.js | 10 +- .../testspace-test-summary.tester.js | 9 +- services/text-formatters.js | 6 +- services/text-formatters.spec.js | 10 +- services/tokei/tokei.service.js | 12 +- services/tokei/tokei.tester.js | 9 +- services/travis/travis-build.service.js | 10 +- services/travis/travis-build.tester.js | 9 +- .../travis-php-version-redirect.service.js | 6 +- .../travis-php-version-redirect.tester.js | 8 +- services/travis/travis-php-version.service.js | 12 +- services/travis/travis-php-version.tester.js | 7 +- services/treeware/treeware-trees.service.js | 14 +-- services/treeware/treeware-trees.tester.js | 7 +- services/twitch/twitch-base.js | 8 +- services/twitch/twitch.service.js | 8 +- services/twitch/twitch.spec.js | 10 +- services/twitch/twitch.tester.js | 15 ++- services/twitter/twitter-redirect.service.js | 6 +- services/twitter/twitter-redirect.tester.js | 8 +- services/twitter/twitter.service.js | 12 +- services/twitter/twitter.tester.js | 10 +- services/ubuntu/ubuntu.service.js | 10 +- services/ubuntu/ubuntu.tester.js | 7 +- services/uptimerobot/uptimerobot-base.js | 8 +- .../uptimerobot/uptimerobot-ratio.service.js | 8 +- .../uptimerobot/uptimerobot-ratio.tester.js | 9 +- .../uptimerobot/uptimerobot-status.service.js | 6 +- .../uptimerobot/uptimerobot-status.tester.js | 9 +- .../vaadin-directory/vaadin-directory-base.js | 10 +- .../vaadin-directory-rating-count.service.js | 12 +- .../vaadin-directory-rating-count.tester.js | 7 +- .../vaadin-directory-rating.service.js | 12 +- .../vaadin-directory-rating.tester.js | 9 +- .../vaadin-directory-release-date.service.js | 12 +- .../vaadin-directory-release-date.tester.js | 7 +- .../vaadin-directory-status.service.js | 8 +- .../vaadin-directory-status.tester.js | 7 +- .../vaadin-directory-version.service.js | 10 +- .../vaadin-directory-version.tester.js | 7 +- services/validators.js | 39 +++--- services/version.js | 16 +-- services/version.spec.js | 6 +- services/versioneye/versioneye.service.js | 6 +- services/versioneye/versioneye.tester.js | 7 +- .../visual-studio-app-center-base.js | 6 +- ...visual-studio-app-center-builds.service.js | 16 +-- .../visual-studio-app-center-builds.tester.js | 5 +- ...o-app-center-releases-osversion.service.js | 12 +- ...io-app-center-releases-osversion.tester.js | 5 +- ...studio-app-center-releases-size.service.js | 16 +-- ...-studio-app-center-releases-size.tester.js | 7 +- ...dio-app-center-releases-version.service.js | 14 +-- ...udio-app-center-releases-version.tester.js | 5 +- ...rketplace-azure-devops-installs.service.js | 12 +- ...arketplace-azure-devops-installs.tester.js | 7 +- .../visual-studio-marketplace-base.js | 10 +- ...al-studio-marketplace-downloads.service.js | 12 +- ...ual-studio-marketplace-downloads.tester.js | 7 +- ...studio-marketplace-last-updated.service.js | 12 +- ...-studio-marketplace-last-updated.tester.js | 7 +- ...isual-studio-marketplace-rating.service.js | 12 +- ...visual-studio-marketplace-rating.tester.js | 7 +- ...studio-marketplace-release-date.service.js | 12 +- ...-studio-marketplace-release-date.tester.js | 7 +- ...sual-studio-marketplace-version.service.js | 10 +- ...isual-studio-marketplace-version.tester.js | 7 +- services/w3c/w3c-validation-helper.js | 10 +- services/w3c/w3c-validation-helper.spec.js | 9 +- services/w3c/w3c-validation.service.js | 13 +- services/w3c/w3c-validation.tester.js | 6 +- .../waffle/waffle-label-redirect.service.js | 6 +- .../waffle/waffle-label-redirect.tester.js | 8 +- services/waffle/waffle-label.service.js | 6 +- services/waffle/waffle-label.tester.js | 8 +- .../weblate-component-license.service.js | 10 +- .../weblate-component-license.tester.js | 5 +- .../weblate/weblate-entity-count.service.js | 14 +-- .../weblate/weblate-entity-count.tester.js | 11 +- ...e-project-translated-percentage.service.js | 14 +-- ...te-project-translated-percentage.tester.js | 8 +- .../weblate-user-statistics.service.js | 14 +-- .../weblate/weblate-user-statistics.tester.js | 11 +- services/website-status.js | 10 +- services/website-status.spec.js | 6 +- services/website/website-redirect.service.js | 8 +- services/website/website-redirect.tester.js | 8 +- services/website/website.service.js | 18 ++- services/website/website.tester.js | 5 +- services/wercker/wercker.service.js | 10 +- services/wercker/wercker.tester.js | 7 +- services/wheelmap/wheelmap.service.js | 8 +- services/wheelmap/wheelmap.spec.js | 10 +- services/wheelmap/wheelmap.tester.js | 10 +- .../wikiapiary/wikiapiary-installs.service.js | 10 +- .../wikiapiary/wikiapiary-installs.tester.js | 7 +- services/wordpress/wordpress-base.js | 10 +- .../wordpress/wordpress-downloads.service.js | 14 +-- .../wordpress/wordpress-downloads.tester.js | 9 +- .../wordpress-last-update.service.js | 14 +-- .../wordpress/wordpress-last-update.tester.js | 9 +- .../wordpress-platform-redirect.service.js | 6 +- .../wordpress-platform-redirect.tester.js | 5 +- .../wordpress/wordpress-platform.service.js | 14 +-- .../wordpress/wordpress-platform.tester.js | 14 +-- .../wordpress/wordpress-rating.service.js | 10 +- services/wordpress/wordpress-rating.tester.js | 9 +- services/wordpress/wordpress-version-color.js | 14 +-- .../wordpress/wordpress-version-color.spec.js | 8 +- .../wordpress/wordpress-version.service.js | 10 +- .../wordpress/wordpress-version.tester.js | 10 +- services/youtube/youtube-base.js | 12 +- .../youtube/youtube-channel-views.service.js | 6 +- .../youtube/youtube-channel-views.tester.js | 12 +- services/youtube/youtube-comments.service.js | 6 +- services/youtube/youtube-comments.tester.js | 12 +- services/youtube/youtube-likes.service.js | 10 +- services/youtube/youtube-likes.tester.js | 14 +-- .../youtube/youtube-subscribers.service.js | 6 +- .../youtube/youtube-subscribers.tester.js | 12 +- services/youtube/youtube-views.service.js | 6 +- services/youtube/youtube-views.tester.js | 12 +- 1130 files changed, 4458 insertions(+), 6712 deletions(-) rename gatsby-browser.js => frontend/gatsby-browser.js (84%) rename gatsby-config.js => frontend/gatsby-config.js (94%) rename gatsby-node.js => frontend/gatsby-node.js (80%) delete mode 100644 frontend/mocha-ignore-pngs.js create mode 100644 frontend/package.json diff --git a/.circleci/config.yml b/.circleci/config.yml index 3ecdeec47a8a4..0c4a2f6f8683b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -236,7 +236,7 @@ jobs: e2e: docker: - - image: cypress/base:14 + - image: cypress/base:14.16.0 steps: - checkout diff --git a/.eslintignore b/.eslintignore index 3024b09851685..170a29b892244 100644 --- a/.eslintignore +++ b/.eslintignore @@ -2,6 +2,6 @@ /build /coverage /__snapshots__ -/public +public badge-maker/node_modules/ !.github/ diff --git a/.eslintrc.yml b/.eslintrc.yml index 3662cf5b3bb1f..0614f9a0134af 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -136,7 +136,6 @@ rules: # Shields additions. no-var: 'error' prefer-const: 'error' - strict: 'error' arrow-body-style: ['error', 'as-needed'] no-extension-in-require/main: 'error' object-shorthand: ['error', 'properties'] diff --git a/.gitignore b/.gitignore index 4f1faad2b1729..771e46a75d298 100644 --- a/.gitignore +++ b/.gitignore @@ -104,7 +104,8 @@ service-definitions.yml !/config/local*.template.yml # Gatsby -/.cache +/frontend/.cache +/frontend/public /public # Cypress diff --git a/.mocharc-frontend.yml b/.mocharc-frontend.yml index 8a85e65d938f1..0e076ba900ada 100644 --- a/.mocharc-frontend.yml +++ b/.mocharc-frontend.yml @@ -3,4 +3,3 @@ require: - '@babel/polyfill' - '@babel/register' - mocha-yaml-loader - - frontend/mocha-ignore-pngs diff --git a/.prettierignore b/.prettierignore index 66e7a5e5bf2eb..9f913cee41ec1 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,10 +2,10 @@ package.json package-lock.json /__snapshots__ /.next -/.cache +.cache /api-docs /build -/public +public /coverage private/*.json /.nyc_output diff --git a/core/badge-urls/make-badge-url.js b/core/badge-urls/make-badge-url.js index 42c09f91689f2..82e3f5fa25124 100644 --- a/core/badge-urls/make-badge-url.js +++ b/core/badge-urls/make-badge-url.js @@ -1,8 +1,7 @@ -'use strict' - -const { URL } = require('url') -const queryString = require('query-string') -const { compile } = require('path-to-regexp') +// Avoid "Attempted import error: 'URL' is not exported from 'url'" in frontend. +import url from 'url' +import queryString from 'query-string' +import { compile } from 'path-to-regexp' function badgeUrlFromPath({ baseUrl = '', @@ -147,13 +146,13 @@ function dynamicBadgeUrl({ function rasterRedirectUrl({ rasterUrl }, badgeUrl) { // Ensure we're always using the `rasterUrl` by using just the path from // the request URL. - const { pathname, search } = new URL(badgeUrl, 'https://bogus.test') - const result = new URL(pathname, rasterUrl) + const { pathname, search } = new url.URL(badgeUrl, 'https://bogus.test') + const result = new url.URL(pathname, rasterUrl) result.search = search return result } -module.exports = { +export { badgeUrlFromPath, badgeUrlFromPattern, encodeField, diff --git a/core/badge-urls/make-badge-url.spec.js b/core/badge-urls/make-badge-url.spec.js index 94642db1f85c5..da0b156d5ea71 100644 --- a/core/badge-urls/make-badge-url.spec.js +++ b/core/badge-urls/make-badge-url.spec.js @@ -1,14 +1,12 @@ -'use strict' - -const { test, given } = require('sazerac') -const { +import { test, given } from 'sazerac' +import { badgeUrlFromPath, badgeUrlFromPattern, encodeField, staticBadgeUrl, queryStringStaticBadgeUrl, dynamicBadgeUrl, -} = require('./make-badge-url') +} from './make-badge-url.js' describe('Badge URL generation functions', function () { test(badgeUrlFromPath, () => { diff --git a/core/badge-urls/path-helpers.js b/core/badge-urls/path-helpers.js index b7b3bded44880..74c1004f30e42 100644 --- a/core/badge-urls/path-helpers.js +++ b/core/badge-urls/path-helpers.js @@ -1,5 +1,3 @@ -'use strict' - // Escapes `t` using the format specified in // function escapeFormat(t) { @@ -13,6 +11,4 @@ function escapeFormat(t) { ) } -module.exports = { - escapeFormat, -} +export { escapeFormat } diff --git a/core/badge-urls/path-helpers.spec.js b/core/badge-urls/path-helpers.spec.js index ef7a0068e1cc2..88de5a4869ebd 100644 --- a/core/badge-urls/path-helpers.spec.js +++ b/core/badge-urls/path-helpers.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const { escapeFormat } = require('./path-helpers') +import { test, given } from 'sazerac' +import { escapeFormat } from './path-helpers.js' describe('Badge URL helper functions', function () { test(escapeFormat, () => { diff --git a/core/base-service/auth-helper.js b/core/base-service/auth-helper.js index f4ce18102614c..8c9c7976be972 100644 --- a/core/base-service/auth-helper.js +++ b/core/base-service/auth-helper.js @@ -1,7 +1,5 @@ -'use strict' - -const { URL } = require('url') -const { InvalidParameter } = require('./errors') +import { URL } from 'url' +import { InvalidParameter } from './errors.js' class AuthHelper { constructor( @@ -207,4 +205,4 @@ class AuthHelper { } } -module.exports = { AuthHelper } +export { AuthHelper } diff --git a/core/base-service/auth-helper.spec.js b/core/base-service/auth-helper.spec.js index 2666c818aa909..fd36f950575ac 100644 --- a/core/base-service/auth-helper.spec.js +++ b/core/base-service/auth-helper.spec.js @@ -1,9 +1,7 @@ -'use strict' - -const { expect } = require('chai') -const { test, given, forCases } = require('sazerac') -const { AuthHelper } = require('./auth-helper') -const { InvalidParameter } = require('./errors') +import { expect } from 'chai' +import { test, given, forCases } from 'sazerac' +import { AuthHelper } from './auth-helper.js' +import { InvalidParameter } from './errors.js' describe('AuthHelper', function () { describe('constructor checks', function () { diff --git a/core/base-service/base-graphql.js b/core/base-service/base-graphql.js index 9d70fcf52ce66..bbdcb9224802c 100644 --- a/core/base-service/base-graphql.js +++ b/core/base-service/base-graphql.js @@ -2,12 +2,10 @@ * @module */ -'use strict' - -const { print } = require('graphql/language/printer') -const BaseService = require('./base') -const { InvalidResponse, ShieldsRuntimeError } = require('./errors') -const { parseJson } = require('./json') +import { print } from 'graphql/language/printer.js' +import BaseService from './base.js' +import { InvalidResponse, ShieldsRuntimeError } from './errors.js' +import { parseJson } from './json.js' function defaultTransformErrors(errors) { return new InvalidResponse({ prettyMessage: errors[0].message }) @@ -93,4 +91,4 @@ class BaseGraphqlService extends BaseService { } } -module.exports = BaseGraphqlService +export default BaseGraphqlService diff --git a/core/base-service/base-graphql.spec.js b/core/base-service/base-graphql.spec.js index 187063c88da69..ee59b8ddecd87 100644 --- a/core/base-service/base-graphql.spec.js +++ b/core/base-service/base-graphql.spec.js @@ -1,11 +1,9 @@ -'use strict' - -const Joi = require('joi') -const { expect } = require('chai') -const gql = require('graphql-tag') -const sinon = require('sinon') -const BaseGraphqlService = require('./base-graphql') -const { InvalidResponse } = require('./errors') +import Joi from 'joi' +import { expect } from 'chai' +import gql from 'graphql-tag' +import sinon from 'sinon' +import BaseGraphqlService from './base-graphql.js' +import { InvalidResponse } from './errors.js' const dummySchema = Joi.object({ requiredString: Joi.string().required(), diff --git a/core/base-service/base-json.js b/core/base-service/base-json.js index 3d786df49aacc..7f4730d2d2058 100644 --- a/core/base-service/base-json.js +++ b/core/base-service/base-json.js @@ -2,10 +2,8 @@ * @module */ -'use strict' - -const BaseService = require('./base') -const { parseJson } = require('./json') +import BaseService from './base.js' +import { parseJson } from './json.js' /** * Services which query a JSON endpoint should extend BaseJsonService @@ -54,4 +52,4 @@ class BaseJsonService extends BaseService { } } -module.exports = BaseJsonService +export default BaseJsonService diff --git a/core/base-service/base-json.spec.js b/core/base-service/base-json.spec.js index 464b3800e6f04..45665e4702893 100644 --- a/core/base-service/base-json.spec.js +++ b/core/base-service/base-json.spec.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { expect } = require('chai') -const sinon = require('sinon') -const BaseJsonService = require('./base-json') +import Joi from 'joi' +import { expect } from 'chai' +import sinon from 'sinon' +import BaseJsonService from './base-json.js' const dummySchema = Joi.object({ requiredString: Joi.string().required(), diff --git a/core/base-service/base-static.js b/core/base-service/base-static.js index 3781d450e3578..df9eae5efb953 100644 --- a/core/base-service/base-static.js +++ b/core/base-service/base-static.js @@ -1,17 +1,15 @@ -'use strict' - -const makeBadge = require('../../badge-maker/lib/make-badge') -const BaseService = require('./base') -const { +import makeBadge from '../../badge-maker/lib/make-badge.js' +import BaseService from './base.js' +import { serverHasBeenUpSinceResourceCached, setCacheHeadersForStaticResource, -} = require('./cache-headers') -const { makeSend } = require('./legacy-result-sender') -const { MetricHelper } = require('./metric-helper') -const coalesceBadge = require('./coalesce-badge') -const { prepareRoute, namedParamsForMatch } = require('./route') +} from './cache-headers.js' +import { makeSend } from './legacy-result-sender.js' +import { MetricHelper } from './metric-helper.js' +import coalesceBadge from './coalesce-badge.js' +import { prepareRoute, namedParamsForMatch } from './route.js' -module.exports = class BaseStaticService extends BaseService { +export default class BaseStaticService extends BaseService { static register({ camp, metricInstance }, serviceConfig) { const { regex, captureNames } = prepareRoute(this.route) diff --git a/core/base-service/base-svg-scraping.js b/core/base-service/base-svg-scraping.js index a79caeca82801..993e0b584bdc5 100644 --- a/core/base-service/base-svg-scraping.js +++ b/core/base-service/base-svg-scraping.js @@ -2,13 +2,11 @@ * @module */ -'use strict' - // See available emoji at http://emoji.muan.co/ -const emojic = require('emojic') -const BaseService = require('./base') -const trace = require('./trace') -const { InvalidResponse } = require('./errors') +import emojic from 'emojic' +import BaseService from './base.js' +import trace from './trace.js' +import { InvalidResponse } from './errors.js' const defaultValueMatcher = />([^<>]+)<\/text><\/g>/ const leadingWhitespace = /(?:\r\n\s*|\r\s*|\n\s*)/g @@ -90,4 +88,4 @@ class BaseSvgScrapingService extends BaseService { } } -module.exports = BaseSvgScrapingService +export default BaseSvgScrapingService diff --git a/core/base-service/base-svg-scraping.spec.js b/core/base-service/base-svg-scraping.spec.js index 25b0a33e82608..728f3bd188c7b 100644 --- a/core/base-service/base-svg-scraping.spec.js +++ b/core/base-service/base-svg-scraping.spec.js @@ -1,10 +1,8 @@ -'use strict' - -const { expect } = require('chai') -const sinon = require('sinon') -const Joi = require('joi') -const makeBadge = require('../../badge-maker/lib/make-badge') -const BaseSvgScrapingService = require('./base-svg-scraping') +import { expect } from 'chai' +import sinon from 'sinon' +import Joi from 'joi' +import makeBadge from '../../badge-maker/lib/make-badge.js' +import BaseSvgScrapingService from './base-svg-scraping.js' const schema = Joi.object({ message: Joi.string().required(), diff --git a/core/base-service/base-xml.js b/core/base-service/base-xml.js index d42a54e11d9a0..ee0c5e9020a0b 100644 --- a/core/base-service/base-xml.js +++ b/core/base-service/base-xml.js @@ -2,14 +2,12 @@ * @module */ -'use strict' - // See available emoji at http://emoji.muan.co/ -const emojic = require('emojic') -const fastXmlParser = require('fast-xml-parser') -const BaseService = require('./base') -const trace = require('./trace') -const { InvalidResponse } = require('./errors') +import emojic from 'emojic' +import fastXmlParser from 'fast-xml-parser' +import BaseService from './base.js' +import trace from './trace.js' +import { InvalidResponse } from './errors.js' /** * Services which query a XML endpoint should extend BaseXmlService @@ -68,4 +66,4 @@ class BaseXmlService extends BaseService { } } -module.exports = BaseXmlService +export default BaseXmlService diff --git a/core/base-service/base-xml.spec.js b/core/base-service/base-xml.spec.js index 42ca1505fb314..8db8dfc6f7a10 100644 --- a/core/base-service/base-xml.spec.js +++ b/core/base-service/base-xml.spec.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { expect } = require('chai') -const sinon = require('sinon') -const BaseXmlService = require('./base-xml') +import Joi from 'joi' +import { expect } from 'chai' +import sinon from 'sinon' +import BaseXmlService from './base-xml.js' const dummySchema = Joi.object({ requiredString: Joi.string().required(), diff --git a/core/base-service/base-yaml.js b/core/base-service/base-yaml.js index 3f16ea0c8192c..0dd75930cac42 100644 --- a/core/base-service/base-yaml.js +++ b/core/base-service/base-yaml.js @@ -2,13 +2,11 @@ * @module */ -'use strict' - -const emojic = require('emojic') -const yaml = require('js-yaml') -const BaseService = require('./base') -const { InvalidResponse } = require('./errors') -const trace = require('./trace') +import emojic from 'emojic' +import yaml from 'js-yaml' +import BaseService from './base.js' +import { InvalidResponse } from './errors.js' +import trace from './trace.js' /** * Services which query a YAML endpoint should extend BaseYamlService @@ -72,4 +70,4 @@ class BaseYamlService extends BaseService { } } -module.exports = BaseYamlService +export default BaseYamlService diff --git a/core/base-service/base-yaml.spec.js b/core/base-service/base-yaml.spec.js index 781c76f130304..50b42990c1701 100644 --- a/core/base-service/base-yaml.spec.js +++ b/core/base-service/base-yaml.spec.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { expect } = require('chai') -const sinon = require('sinon') -const BaseYamlService = require('./base-yaml') +import Joi from 'joi' +import { expect } from 'chai' +import sinon from 'sinon' +import BaseYamlService from './base-yaml.js' const dummySchema = Joi.object({ requiredString: Joi.string().required(), diff --git a/core/base-service/base.js b/core/base-service/base.js index 332c7ca8380d1..0a22086601bce 100644 --- a/core/base-service/base.js +++ b/core/base-service/base.js @@ -1,36 +1,35 @@ -'use strict' /** * @module */ // See available emoji at http://emoji.muan.co/ -const emojic = require('emojic') -const Joi = require('joi') -const log = require('../server/log') -const { AuthHelper } = require('./auth-helper') -const { MetricHelper, MetricNames } = require('./metric-helper') -const { assertValidCategory } = require('./categories') -const checkErrorResponse = require('./check-error-response') -const coalesceBadge = require('./coalesce-badge') -const { +import emojic from 'emojic' +import Joi from 'joi' +import log from '../server/log.js' +import { AuthHelper } from './auth-helper.js' +import { MetricHelper, MetricNames } from './metric-helper.js' +import { assertValidCategory } from './categories.js' +import checkErrorResponse from './check-error-response.js' +import coalesceBadge from './coalesce-badge.js' +import { NotFound, InvalidResponse, Inaccessible, ImproperlyConfigured, InvalidParameter, Deprecated, -} = require('./errors') -const { validateExample, transformExample } = require('./examples') -const { +} from './errors.js' +import { validateExample, transformExample } from './examples.js' +import { makeFullUrl, assertValidRoute, prepareRoute, namedParamsForMatch, getQueryParamNames, -} = require('./route') -const { assertValidServiceDefinition } = require('./service-definitions') -const trace = require('./trace') -const validate = require('./validate') +} from './route.js' +import { assertValidServiceDefinition } from './service-definitions.js' +import trace from './trace.js' +import validate from './validate.js' const defaultBadgeDataSchema = Joi.object({ label: Joi.string(), @@ -565,4 +564,4 @@ class BaseService { * An HTML string that is included in the badge popup. */ -module.exports = BaseService +export default BaseService diff --git a/core/base-service/base.spec.js b/core/base-service/base.spec.js index 9fa7e7e1a2906..ac58c86598203 100644 --- a/core/base-service/base.spec.js +++ b/core/base-service/base.spec.js @@ -1,23 +1,22 @@ -'use strict' - -const Joi = require('joi') -const chai = require('chai') -const { expect } = chai -const sinon = require('sinon') -const prometheus = require('prom-client') -const PrometheusMetrics = require('../server/prometheus-metrics') -const trace = require('./trace') -const { +import Joi from 'joi' +import chai from 'chai' +import sinon from 'sinon' +import prometheus from 'prom-client' +import chaiAsPromised from 'chai-as-promised' +import PrometheusMetrics from '../server/prometheus-metrics.js' +import trace from './trace.js' +import { NotFound, Inaccessible, InvalidResponse, InvalidParameter, Deprecated, -} = require('./errors') -const BaseService = require('./base') -const { MetricHelper, MetricNames } = require('./metric-helper') -require('../register-chai-plugins.spec') -chai.use(require('chai-as-promised')) +} from './errors.js' +import BaseService from './base.js' +import { MetricHelper, MetricNames } from './metric-helper.js' +import '../register-chai-plugins.spec.js' +const { expect } = chai +chai.use(chaiAsPromised) const queryParamSchema = Joi.object({ queryParamA: Joi.string(), diff --git a/core/base-service/cache-headers.js b/core/base-service/cache-headers.js index 999867aa22b04..14a707efae7e3 100644 --- a/core/base-service/cache-headers.js +++ b/core/base-service/cache-headers.js @@ -1,8 +1,6 @@ -'use strict' - -const assert = require('assert') -const Joi = require('joi') -const coalesce = require('./coalesce') +import assert from 'assert' +import Joi from 'joi' +import coalesce from './coalesce.js' const serverStartTimeGMTString = new Date().toGMTString() const serverStartTimestamp = Date.now() @@ -104,7 +102,7 @@ function serverHasBeenUpSinceResourceCached(req) { ) } -module.exports = { +export { coalesceCacheLength, setCacheHeaders, setHeadersForCacheLength, diff --git a/core/base-service/cache-headers.spec.js b/core/base-service/cache-headers.spec.js index c6f5d6afb5c51..9c705116a2fe7 100644 --- a/core/base-service/cache-headers.spec.js +++ b/core/base-service/cache-headers.spec.js @@ -1,19 +1,16 @@ -'use strict' - -const { test, given } = require('sazerac') -const chai = require('chai') -const { expect } = require('chai') -const sinon = require('sinon') -const httpMocks = require('node-mocks-http') -const { +import { test, given } from 'sazerac' +import chai, { expect } from 'chai' +import sinon from 'sinon' +import httpMocks from 'node-mocks-http' +import chaiDatetime from 'chai-datetime' +import { coalesceCacheLength, setHeadersForCacheLength, setCacheHeaders, setCacheHeadersForStaticResource, serverHasBeenUpSinceResourceCached, -} = require('./cache-headers') - -chai.use(require('chai-datetime')) +} from './cache-headers.js' +chai.use(chaiDatetime) describe('Cache header functions', function () { let res diff --git a/core/base-service/categories.js b/core/base-service/categories.js index d1bb0028fa5c4..14042f9a4d7ed 100644 --- a/core/base-service/categories.js +++ b/core/base-service/categories.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const categories = require('../../services/categories') +import Joi from 'joi' +import categories from '../../services/categories.js' const isRealCategory = Joi.equal(...categories.map(({ id }) => id)).required() @@ -13,7 +11,4 @@ function assertValidCategory(category, message = undefined) { Joi.assert(category, isValidCategory, message) } -module.exports = { - isValidCategory, - assertValidCategory, -} +export { isValidCategory, assertValidCategory } diff --git a/core/base-service/check-error-response.js b/core/base-service/check-error-response.js index 1c4816b1117b7..ea21344f3639f 100644 --- a/core/base-service/check-error-response.js +++ b/core/base-service/check-error-response.js @@ -1,12 +1,10 @@ -'use strict' - -const { NotFound, InvalidResponse, Inaccessible } = require('./errors') +import { NotFound, InvalidResponse, Inaccessible } from './errors.js' const defaultErrorMessages = { 404: 'not found', } -module.exports = function checkErrorResponse(errorMessages = {}) { +export default function checkErrorResponse(errorMessages = {}) { return async function ({ buffer, res }) { let error errorMessages = { ...defaultErrorMessages, ...errorMessages } diff --git a/core/base-service/check-error-response.spec.js b/core/base-service/check-error-response.spec.js index 34404aa658d72..82d239bec1cec 100644 --- a/core/base-service/check-error-response.spec.js +++ b/core/base-service/check-error-response.spec.js @@ -1,8 +1,6 @@ -'use strict' - -const { expect } = require('chai') -const { NotFound, InvalidResponse, Inaccessible } = require('./errors') -const checkErrorResponse = require('./check-error-response') +import { expect } from 'chai' +import { NotFound, InvalidResponse, Inaccessible } from './errors.js' +import checkErrorResponse from './check-error-response.js' describe('async error handler', function () { const buffer = Buffer.from('some stuff') diff --git a/core/base-service/coalesce-badge.js b/core/base-service/coalesce-badge.js index 9a94cb2752e26..db171fee347b4 100644 --- a/core/base-service/coalesce-badge.js +++ b/core/base-service/coalesce-badge.js @@ -1,12 +1,10 @@ -'use strict' - -const { +import { decodeDataUrlFromQueryParam, prepareNamedLogo, -} = require('../../lib/logos') -const { svg2base64 } = require('../../lib/svg-helpers') -const coalesce = require('./coalesce') -const toArray = require('./to-array') +} from '../../lib/logos.js' +import { svg2base64 } from '../../lib/svg-helpers.js' +import coalesce from './coalesce.js' +import toArray from './to-array.js' // Translate modern badge data to the legacy schema understood by the badge // maker. Allow the user to override the label, color, logo, etc. through the @@ -34,7 +32,7 @@ const toArray = require('./to-array') // 3. In the case of the `social` style only, the last precedence is the // service's default logo. The `logoColor` can be overridden by the query // string. -module.exports = function coalesceBadge( +export default function coalesceBadge( overrides, serviceData, // These two parameters were kept separate to make tests clearer. diff --git a/core/base-service/coalesce-badge.spec.js b/core/base-service/coalesce-badge.spec.js index 195926d74adb4..07ffedbe2010c 100644 --- a/core/base-service/coalesce-badge.spec.js +++ b/core/base-service/coalesce-badge.spec.js @@ -1,8 +1,6 @@ -'use strict' - -const { expect } = require('chai') -const { getShieldsIcon, getSimpleIcon } = require('../../lib/logos') -const coalesceBadge = require('./coalesce-badge') +import { expect } from 'chai' +import { getShieldsIcon, getSimpleIcon } from '../../lib/logos.js' +import coalesceBadge from './coalesce-badge.js' describe('coalesceBadge', function () { describe('Label', function () { diff --git a/core/base-service/coalesce.js b/core/base-service/coalesce.js index 4875b409c7925..8a55ff4c89dd7 100644 --- a/core/base-service/coalesce.js +++ b/core/base-service/coalesce.js @@ -1,5 +1,3 @@ -'use strict' - -module.exports = function coalesce(...candidates) { +export default function coalesce(...candidates) { return candidates.find(c => c !== undefined && c !== null) } diff --git a/core/base-service/coalesce.spec.js b/core/base-service/coalesce.spec.js index b83b458caf3e3..361f2bd8a7d32 100644 --- a/core/base-service/coalesce.spec.js +++ b/core/base-service/coalesce.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const coalesce = require('./coalesce') +import { test, given } from 'sazerac' +import coalesce from './coalesce.js' // Sticking with our one-line spread implementation, and defaulting to // `undefined` instead of `null`, though h/t to diff --git a/core/base-service/deprecated-service.js b/core/base-service/deprecated-service.js index a2c4796a58319..03ce5b2485e74 100644 --- a/core/base-service/deprecated-service.js +++ b/core/base-service/deprecated-service.js @@ -1,11 +1,9 @@ -'use strict' - -const Joi = require('joi') -const camelcase = require('camelcase') -const BaseService = require('./base') -const { isValidCategory } = require('./categories') -const { Deprecated } = require('./errors') -const { isValidRoute } = require('./route') +import Joi from 'joi' +import camelcase from 'camelcase' +import BaseService from './base.js' +import { isValidCategory } from './categories.js' +import { Deprecated } from './errors.js' +import { isValidRoute } from './route.js' const attrSchema = Joi.object({ route: isValidRoute, @@ -44,4 +42,4 @@ function deprecatedService(attrs) { } } -module.exports = deprecatedService +export default deprecatedService diff --git a/core/base-service/deprecated-service.spec.js b/core/base-service/deprecated-service.spec.js index 3cc321efe32a4..58ca62b6d9a12 100644 --- a/core/base-service/deprecated-service.spec.js +++ b/core/base-service/deprecated-service.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { expect } = require('chai') -const deprecatedService = require('./deprecated-service') +import { expect } from 'chai' +import deprecatedService from './deprecated-service.js' describe('DeprecatedService', function () { const route = { diff --git a/core/base-service/errors.js b/core/base-service/errors.js index 5bbd709089df1..a1c897ff6d0e9 100644 --- a/core/base-service/errors.js +++ b/core/base-service/errors.js @@ -4,8 +4,6 @@ * @module */ -'use strict' - /** * Base error class * @@ -210,7 +208,7 @@ class Deprecated extends ShieldsRuntimeError { * badge when we catch and render the exception (Optional) */ -module.exports = { +export { ShieldsRuntimeError, NotFound, ImproperlyConfigured, diff --git a/core/base-service/examples.js b/core/base-service/examples.js index 99200d6564eeb..6aa9ff03ed891 100644 --- a/core/base-service/examples.js +++ b/core/base-service/examples.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { pathToRegexp, compile } = require('path-to-regexp') -const categories = require('../../services/categories') -const coalesceBadge = require('./coalesce-badge') -const { makeFullUrl } = require('./route') +import Joi from 'joi' +import { pathToRegexp, compile } from 'path-to-regexp' +import categories from '../../services/categories.js' +import coalesceBadge from './coalesce-badge.js' +import { makeFullUrl } from './route.js' const optionalObjectOfKeyValues = Joi.object().pattern( /./, @@ -155,7 +153,4 @@ function transformExample(inExample, index, ServiceClass) { } } -module.exports = { - validateExample, - transformExample, -} +export { validateExample, transformExample } diff --git a/core/base-service/examples.spec.js b/core/base-service/examples.spec.js index 3428771bfbc9c..770b257165999 100644 --- a/core/base-service/examples.spec.js +++ b/core/base-service/examples.spec.js @@ -1,8 +1,6 @@ -'use strict' - -const { expect } = require('chai') -const { test, given } = require('sazerac') -const { validateExample, transformExample } = require('./examples') +import { expect } from 'chai' +import { test, given } from 'sazerac' +import { validateExample, transformExample } from './examples.js' describe('validateExample function', function () { it('passes valid examples', function () { diff --git a/core/base-service/graphql.js b/core/base-service/graphql.js index 3a78deb09a6d8..416fc735d7602 100644 --- a/core/base-service/graphql.js +++ b/core/base-service/graphql.js @@ -1,4 +1,3 @@ -'use strict' /** * @module */ @@ -49,4 +48,4 @@ function mergeQueries(...queries) { return merged } -module.exports = { mergeQueries } +export { mergeQueries } diff --git a/core/base-service/graphql.spec.js b/core/base-service/graphql.spec.js index 202dd052c6982..2267ecf41b722 100644 --- a/core/base-service/graphql.spec.js +++ b/core/base-service/graphql.spec.js @@ -1,11 +1,9 @@ -'use strict' +import { expect } from 'chai' +import gql from 'graphql-tag' +import { print } from 'graphql/language/printer.js' +import { mergeQueries } from './graphql.js' -const { expect } = require('chai') -const gql = require('graphql-tag') -const { print } = require('graphql/language/printer') -const { mergeQueries } = require('./graphql') - -require('../register-chai-plugins.spec') +import '../register-chai-plugins.spec.js' describe('mergeQueries function', function () { it('merges valid gql queries', function () { diff --git a/core/base-service/index.js b/core/base-service/index.js index ef99fdb296494..502ede424bd31 100644 --- a/core/base-service/index.js +++ b/core/base-service/index.js @@ -1,23 +1,21 @@ -'use strict' - -const BaseService = require('./base') -const BaseJsonService = require('./base-json') -const BaseGraphqlService = require('./base-graphql') -const BaseStaticService = require('./base-static') -const BaseSvgScrapingService = require('./base-svg-scraping') -const BaseXmlService = require('./base-xml') -const BaseYamlService = require('./base-yaml') -const deprecatedService = require('./deprecated-service') -const redirector = require('./redirector') -const { +import BaseService from './base.js' +import BaseJsonService from './base-json.js' +import BaseGraphqlService from './base-graphql.js' +import BaseStaticService from './base-static.js' +import BaseSvgScrapingService from './base-svg-scraping.js' +import BaseXmlService from './base-xml.js' +import BaseYamlService from './base-yaml.js' +import deprecatedService from './deprecated-service.js' +import redirector from './redirector.js' +import { NotFound, InvalidResponse, Inaccessible, InvalidParameter, Deprecated, -} = require('./errors') +} from './errors.js' -module.exports = { +export { BaseService, BaseJsonService, BaseGraphqlService, diff --git a/core/base-service/json.js b/core/base-service/json.js index 6186b1e6b0b57..f7b549e1512eb 100644 --- a/core/base-service/json.js +++ b/core/base-service/json.js @@ -1,9 +1,7 @@ -'use strict' - // See available emoji at http://emoji.muan.co/ -const emojic = require('emojic') -const { InvalidResponse } = require('./errors') -const trace = require('./trace') +import emojic from 'emojic' +import { InvalidResponse } from './errors.js' +import trace from './trace.js' function parseJson(buffer) { const logTrace = (...args) => trace.logTrace('fetch', ...args) @@ -23,6 +21,4 @@ function parseJson(buffer) { return json } -module.exports = { - parseJson, -} +export { parseJson } diff --git a/core/base-service/legacy-request-handler.js b/core/base-service/legacy-request-handler.js index f048ec55bdcc7..725b1d66179e1 100644 --- a/core/base-service/legacy-request-handler.js +++ b/core/base-service/legacy-request-handler.js @@ -1,15 +1,9 @@ -'use strict' - -const request = require('request') -const makeBadge = require('../../badge-maker/lib/make-badge') -const { setCacheHeaders } = require('./cache-headers') -const { - Inaccessible, - InvalidResponse, - ShieldsRuntimeError, -} = require('./errors') -const { makeSend } = require('./legacy-result-sender') -const coalesceBadge = require('./coalesce-badge') +import request from 'request' +import makeBadge from '../../badge-maker/lib/make-badge.js' +import { setCacheHeaders } from './cache-headers.js' +import { Inaccessible, InvalidResponse, ShieldsRuntimeError } from './errors.js' +import { makeSend } from './legacy-result-sender.js' +import coalesceBadge from './coalesce-badge.js' const userAgent = 'Shields.io/2003a' @@ -206,8 +200,4 @@ function handleRequest(cacheHeaderConfig, handlerOptions) { } } -module.exports = { - handleRequest, - promisify, - userAgent, -} +export { handleRequest, promisify, userAgent } diff --git a/core/base-service/legacy-request-handler.spec.js b/core/base-service/legacy-request-handler.spec.js index a4cd21bbd32f4..1ea498f72a2f2 100644 --- a/core/base-service/legacy-request-handler.spec.js +++ b/core/base-service/legacy-request-handler.spec.js @@ -1,12 +1,10 @@ -'use strict' - -const { expect } = require('chai') -const nock = require('nock') -const portfinder = require('portfinder') -const Camp = require('@shields_io/camp') -const got = require('../got-test-client') -const coalesceBadge = require('./coalesce-badge') -const { handleRequest } = require('./legacy-request-handler') +import { expect } from 'chai' +import nock from 'nock' +import portfinder from 'portfinder' +import Camp from '@shields_io/camp' +import got from '../got-test-client.js' +import coalesceBadge from './coalesce-badge.js' +import { handleRequest } from './legacy-request-handler.js' async function performTwoRequests(baseUrl, first, second) { expect((await got(`${baseUrl}${first}`)).statusCode).to.equal(200) diff --git a/core/base-service/legacy-result-sender.js b/core/base-service/legacy-result-sender.js index 01ffc800cc6d9..90ee870e4b9ca 100644 --- a/core/base-service/legacy-result-sender.js +++ b/core/base-service/legacy-result-sender.js @@ -1,6 +1,4 @@ -'use strict' - -const stream = require('stream') +import stream from 'stream' function streamFromString(str) { const newStream = new stream.Readable() @@ -32,6 +30,4 @@ function makeSend(format, askres, end) { } } -module.exports = { - makeSend, -} +export { makeSend } diff --git a/core/base-service/loader-test-fixtures/empty-array.fixture.js b/core/base-service/loader-test-fixtures/empty-array.fixture.js index d0c6276a37eb4..9859f0797256b 100644 --- a/core/base-service/loader-test-fixtures/empty-array.fixture.js +++ b/core/base-service/loader-test-fixtures/empty-array.fixture.js @@ -1,3 +1 @@ -'use strict' - -module.exports = [] +export default [] diff --git a/core/base-service/loader-test-fixtures/empty-no-export.fixture.js b/core/base-service/loader-test-fixtures/empty-no-export.fixture.js index 883cb52b674f6..e4e8dbb5a4129 100644 --- a/core/base-service/loader-test-fixtures/empty-no-export.fixture.js +++ b/core/base-service/loader-test-fixtures/empty-no-export.fixture.js @@ -1,4 +1,2 @@ /* eslint-disable */ -'use strict' - -class BadService {} +class BadService {} // lgtm [js/unused-local-variable] diff --git a/core/base-service/loader-test-fixtures/empty-object.fixture.js b/core/base-service/loader-test-fixtures/empty-object.fixture.js index 545992ebbbabe..336ce12bb9106 100644 --- a/core/base-service/loader-test-fixtures/empty-object.fixture.js +++ b/core/base-service/loader-test-fixtures/empty-object.fixture.js @@ -1,3 +1 @@ -'use strict' - -module.exports = {} +export {} diff --git a/core/base-service/loader-test-fixtures/empty-undefined.fixture.js b/core/base-service/loader-test-fixtures/empty-undefined.fixture.js index 3ad27782bc55c..edb72725b9e7c 100644 --- a/core/base-service/loader-test-fixtures/empty-undefined.fixture.js +++ b/core/base-service/loader-test-fixtures/empty-undefined.fixture.js @@ -1,3 +1 @@ -'use strict' - -module.exports = undefined +export default undefined diff --git a/core/base-service/loader-test-fixtures/invalid-mixed.fixture.js b/core/base-service/loader-test-fixtures/invalid-mixed.fixture.js index 7cacacc9033ed..40096a3065399 100644 --- a/core/base-service/loader-test-fixtures/invalid-mixed.fixture.js +++ b/core/base-service/loader-test-fixtures/invalid-mixed.fixture.js @@ -1,9 +1,10 @@ -'use strict' - -const BaseJsonService = require('../base-json') +import BaseJsonService from '../base-json.js' class BadBaseService {} -class GoodService extends BaseJsonService {} +class GoodService extends BaseJsonService { + static category = 'build' + static route = { base: 'it/is', pattern: 'good' } +} class BadService extends BadBaseService {} -module.exports = [GoodService, BadService] +export default [GoodService, BadService] diff --git a/core/base-service/loader-test-fixtures/invalid-no-base.fixture.js b/core/base-service/loader-test-fixtures/invalid-no-base.fixture.js index 2a8a55c48effb..4651b17bfef86 100644 --- a/core/base-service/loader-test-fixtures/invalid-no-base.fixture.js +++ b/core/base-service/loader-test-fixtures/invalid-no-base.fixture.js @@ -1,5 +1,3 @@ -'use strict' - class BadService {} -module.exports = BadService +export default BadService diff --git a/core/base-service/loader-test-fixtures/invalid-wrong-base.fixture.js b/core/base-service/loader-test-fixtures/invalid-wrong-base.fixture.js index 89b1451d9616f..9ca5e17cb45c9 100644 --- a/core/base-service/loader-test-fixtures/invalid-wrong-base.fixture.js +++ b/core/base-service/loader-test-fixtures/invalid-wrong-base.fixture.js @@ -1,6 +1,4 @@ -'use strict' - class BadBaseService {} class BadService extends BadBaseService {} -module.exports = BadService +export default BadService diff --git a/core/base-service/loader-test-fixtures/valid-array.fixture.js b/core/base-service/loader-test-fixtures/valid-array.fixture.js index ee8e213954d81..c820022a8a9af 100644 --- a/core/base-service/loader-test-fixtures/valid-array.fixture.js +++ b/core/base-service/loader-test-fixtures/valid-array.fixture.js @@ -1,6 +1,4 @@ -'use strict' - -const BaseJsonService = require('../base-json') +import BaseJsonService from '../base-json.js' class GoodServiceOne extends BaseJsonService { static category = 'build' @@ -11,4 +9,4 @@ class GoodServiceTwo extends BaseJsonService { static route = { base: 'good', pattern: 'two' } } -module.exports = [GoodServiceOne, GoodServiceTwo] +export default [GoodServiceOne, GoodServiceTwo] diff --git a/core/base-service/loader-test-fixtures/valid-class.fixture.js b/core/base-service/loader-test-fixtures/valid-class.fixture.js index 41ae5ed9054c2..0b193a9405df7 100644 --- a/core/base-service/loader-test-fixtures/valid-class.fixture.js +++ b/core/base-service/loader-test-fixtures/valid-class.fixture.js @@ -1,10 +1,8 @@ -'use strict' - -const BaseJsonService = require('../base-json') +import BaseJsonService from '../base-json.js' class GoodService extends BaseJsonService { static category = 'build' static route = { base: 'it/is', pattern: 'good' } } -module.exports = GoodService +export default GoodService diff --git a/core/base-service/loader-test-fixtures/valid-object.fixture.js b/core/base-service/loader-test-fixtures/valid-object.fixture.js index 4bf828f9cc99b..5a312db98f48c 100644 --- a/core/base-service/loader-test-fixtures/valid-object.fixture.js +++ b/core/base-service/loader-test-fixtures/valid-object.fixture.js @@ -1,6 +1,4 @@ -'use strict' - -const BaseJsonService = require('../base-json') +import BaseJsonService from '../base-json.js' class GoodServiceOne extends BaseJsonService { static category = 'build' @@ -11,4 +9,4 @@ class GoodServiceTwo extends BaseJsonService { static route = { base: 'good', pattern: 'two' } } -module.exports = { GoodServiceOne, GoodServiceTwo } +export { GoodServiceOne, GoodServiceTwo } diff --git a/core/base-service/loader.js b/core/base-service/loader.js index c2404b8c38da8..cf499eca1560f 100644 --- a/core/base-service/loader.js +++ b/core/base-service/loader.js @@ -1,13 +1,17 @@ -'use strict' - -const path = require('path') -const glob = require('glob') -const countBy = require('lodash.countby') -const categories = require('../../services/categories') -const BaseService = require('./base') -const { assertValidServiceDefinitionExport } = require('./service-definitions') - -const serviceDir = path.join(__dirname, '..', '..', 'services') +import path from 'path' +import { fileURLToPath } from 'url' +import glob from 'glob' +import countBy from 'lodash.countby' +import categories from '../../services/categories.js' +import BaseService from './base.js' +import { assertValidServiceDefinitionExport } from './service-definitions.js' + +const serviceDir = path.join( + path.dirname(fileURLToPath(import.meta.url)), + '..', + '..', + 'services' +) class InvalidService extends Error { constructor(message) { @@ -16,54 +20,38 @@ class InvalidService extends Error { } } -function loadServiceClasses(servicePaths) { +async function loadServiceClasses(servicePaths) { if (!servicePaths) { servicePaths = glob.sync(path.join(serviceDir, '**', '*.service.js')) } - let serviceClasses = [] - servicePaths.forEach(servicePath => { - const module = require(servicePath) + const serviceClasses = [] + for await (const servicePath of servicePaths) { + const currentServiceClasses = Object.values( + await import(`file://${servicePath}`) + ).flatMap(element => + typeof element === 'object' ? Object.values(element) : element + ) - const theseServiceClasses = [] - if ( - !module || - (module.constructor === Array && module.length === 0) || - (module.constructor === Object && Object.keys(module).length === 0) - ) { + if (currentServiceClasses.length === 0) { throw new InvalidService( `Expected ${servicePath} to export a service or a collection of services` ) - } else if (module.prototype instanceof BaseService) { - theseServiceClasses.push(module) - } else if (module.constructor === Array || module.constructor === Object) { - for (const key in module) { - const serviceClass = module[key] - if (serviceClass.prototype instanceof BaseService) { - theseServiceClasses.push(serviceClass) - } else { - throw new InvalidService( - `Expected ${servicePath} to export a service or a collection of services; one of them was ${serviceClass}` - ) - } + } + currentServiceClasses.forEach(serviceClass => { + if (serviceClass && serviceClass.prototype instanceof BaseService) { + // Decorate each service class with the directory that contains it. + serviceClass.serviceFamily = servicePath + .replace(serviceDir, '') + .split(path.sep)[1] + serviceClass.validateDefinition() + return serviceClasses.push(serviceClass) } - } else { throw new InvalidService( - `Expected ${servicePath} to export a service or a collection of services; got ${module}` + `Expected ${servicePath} to export a service or a collection of services; one of them was ${serviceClass}` ) - } - - // Decorate each service class with the directory that contains it. - theseServiceClasses.forEach(serviceClass => { - serviceClass.serviceFamily = servicePath - .replace(serviceDir, '') - .split(path.sep)[1] }) - - serviceClasses = serviceClasses.concat(theseServiceClasses) - }) - - serviceClasses.forEach(ServiceClass => ServiceClass.validateDefinition()) + } return serviceClasses } @@ -80,8 +68,8 @@ function assertNamesUnique(names, { message }) { } } -function checkNames() { - const services = loadServiceClasses() +async function checkNames() { + const services = await loadServiceClasses() assertNamesUnique( services.map(({ name }) => name), { @@ -90,8 +78,8 @@ function checkNames() { ) } -function collectDefinitions() { - const services = loadServiceClasses() +async function collectDefinitions() { + const services = (await loadServiceClasses()) // flatMap. .map(ServiceClass => ServiceClass.getDefinition()) .reduce((accum, these) => accum.concat(these), []) @@ -103,13 +91,15 @@ function collectDefinitions() { return result } -function loadTesters() { - return glob - .sync(path.join(serviceDir, '**', '*.tester.js')) - .map(path => require(path)) +async function loadTesters() { + return Promise.all( + glob + .sync(path.join(serviceDir, '**', '*.tester.js')) + .map(async path => await import(`file://${path}`)) + ) } -module.exports = { +export { InvalidService, loadServiceClasses, checkNames, diff --git a/core/base-service/loader.spec.js b/core/base-service/loader.spec.js index 374c17cb004e0..e26c28fc1e0ec 100644 --- a/core/base-service/loader.spec.js +++ b/core/base-service/loader.spec.js @@ -1,59 +1,67 @@ -'use strict' +import path from 'path' +import { fileURLToPath } from 'url' +import chai from 'chai' +import chaiAsPromised from 'chai-as-promised' +import { loadServiceClasses, InvalidService } from './loader.js' +chai.use(chaiAsPromised) -const { expect } = require('chai') -const { loadServiceClasses, InvalidService } = require('./loader') +const { expect } = chai +const fixturesDir = path.join( + path.dirname(fileURLToPath(import.meta.url)), + 'loader-test-fixtures' +) describe('loadServiceClasses function', function () { - it('throws if module exports empty', function () { - expect(() => - loadServiceClasses(['./loader-test-fixtures/empty-undefined.fixture.js']) - ).to.throw(InvalidService) - expect(() => - loadServiceClasses(['./loader-test-fixtures/empty-array.fixture.js']) - ).to.throw() - expect(() => - loadServiceClasses(['./loader-test-fixtures/empty-object.fixture.js']) - ).to.throw(InvalidService) - expect(() => - loadServiceClasses(['./loader-test-fixtures/empty-no-export.fixture.js']) - ).to.throw(InvalidService) - expect(() => + it('throws if module exports empty', async function () { + await expect( + loadServiceClasses([path.join(fixturesDir, 'empty-undefined.fixture.js')]) + ).to.be.rejectedWith(InvalidService) + await expect( + loadServiceClasses([path.join(fixturesDir, 'empty-array.fixture.js')]) + ).to.be.rejectedWith(InvalidService) + await expect( + loadServiceClasses([path.join(fixturesDir, 'empty-object.fixture.js')]) + ).to.be.rejectedWith(InvalidService) + await expect( + loadServiceClasses([path.join(fixturesDir, 'empty-no-export.fixture.js')]) + ).to.be.rejectedWith(InvalidService) + await expect( loadServiceClasses([ - './loader-test-fixtures/valid-array.fixture.js', - './loader-test-fixtures/valid-class.fixture.js', - './loader-test-fixtures/empty-array.fixture.js', + path.join(fixturesDir, 'valid-array.fixture.js'), + path.join(fixturesDir, 'valid-class.fixture.js'), + path.join(fixturesDir, 'empty-array.fixture.js'), ]) - ).to.throw(InvalidService) + ).to.be.rejectedWith(InvalidService) }) - it('throws if module exports invalid', function () { - expect(() => - loadServiceClasses(['./loader-test-fixtures/invalid-no-base.fixture.js']) - ).to.throw(InvalidService) - expect(() => + it('throws if module exports invalid', async function () { + await expect( + loadServiceClasses([path.join(fixturesDir, 'invalid-no-base.fixture.js')]) + ).to.be.rejectedWith(InvalidService) + await expect( loadServiceClasses([ - './loader-test-fixtures/invalid-wrong-base.fixture.js', + path.join(fixturesDir, 'invalid-wrong-base.fixture.js'), ]) - ).to.throw(InvalidService) - expect(() => - loadServiceClasses(['./loader-test-fixtures/invalid-mixed.fixture.js']) - ).to.throw(InvalidService) - expect(() => + ).to.be.rejectedWith(InvalidService) + await expect( + loadServiceClasses([path.join(fixturesDir, 'invalid-mixed.fixture.js')]) + ).to.be.rejectedWith(InvalidService) + await expect( loadServiceClasses([ - './loader-test-fixtures/valid-array.fixture.js', - './loader-test-fixtures/valid-class.fixture.js', - './loader-test-fixtures/invalid-no-base.fixture.js', + path.join(fixturesDir, 'valid-array.fixture.js'), + path.join(fixturesDir, 'valid-class.fixture.js'), + path.join(fixturesDir, 'invalid-no-base.fixture.js'), ]) - ).to.throw(InvalidService) + ).to.be.rejectedWith(InvalidService) }) - it('registers services if module exports valid service classes', function () { - expect( + it('registers services if module exports valid service classes', async function () { + await expect( loadServiceClasses([ - './loader-test-fixtures/valid-array.fixture.js', - './loader-test-fixtures/valid-object.fixture.js', - './loader-test-fixtures/valid-class.fixture.js', + path.join(fixturesDir, 'valid-array.fixture.js'), + path.join(fixturesDir, 'valid-object.fixture.js'), + path.join(fixturesDir, 'valid-class.fixture.js'), ]) - ).to.have.length(5) + ).to.eventually.have.length(5) }) }) diff --git a/core/base-service/metric-helper.js b/core/base-service/metric-helper.js index 33f472b02d45e..646aa721b5a28 100644 --- a/core/base-service/metric-helper.js +++ b/core/base-service/metric-helper.js @@ -1,6 +1,4 @@ -'use strict' - -const { performance } = require('perf_hooks') +import { performance } from 'perf_hooks' class MetricHelper { constructor({ metricInstance }, { category, serviceFamily, name }) { @@ -59,4 +57,4 @@ const MetricNames = Object.freeze({ SERVICE_RESPONSE_SIZE: Symbol('service-response-size'), }) -module.exports = { MetricHelper, MetricNames } +export { MetricHelper, MetricNames } diff --git a/core/base-service/redirector.js b/core/base-service/redirector.js index 5d499e9dad59b..094e3af07f485 100644 --- a/core/base-service/redirector.js +++ b/core/base-service/redirector.js @@ -1,18 +1,16 @@ -'use strict' - -const camelcase = require('camelcase') -const emojic = require('emojic') -const Joi = require('joi') -const queryString = require('query-string') -const BaseService = require('./base') -const { +import camelcase from 'camelcase' +import emojic from 'emojic' +import Joi from 'joi' +import queryString from 'query-string' +import BaseService from './base.js' +import { serverHasBeenUpSinceResourceCached, setCacheHeadersForStaticResource, -} = require('./cache-headers') -const { isValidCategory } = require('./categories') -const { MetricHelper } = require('./metric-helper') -const { isValidRoute, prepareRoute, namedParamsForMatch } = require('./route') -const trace = require('./trace') +} from './cache-headers.js' +import { isValidCategory } from './categories.js' +import { MetricHelper } from './metric-helper.js' +import { isValidRoute, prepareRoute, namedParamsForMatch } from './route.js' +import trace from './trace.js' const attrSchema = Joi.object({ name: Joi.string().min(3), @@ -32,7 +30,7 @@ const attrSchema = Joi.object({ overrideTransformedQueryParams: Joi.bool().optional(), }).required() -module.exports = function redirector(attrs) { +export default function redirector(attrs) { const { name, category, diff --git a/core/base-service/redirector.spec.js b/core/base-service/redirector.spec.js index 1f81913c6fba1..4b1912d2305e4 100644 --- a/core/base-service/redirector.spec.js +++ b/core/base-service/redirector.spec.js @@ -1,10 +1,8 @@ -'use strict' - -const Camp = require('@shields_io/camp') -const portfinder = require('portfinder') -const { expect } = require('chai') -const got = require('../got-test-client') -const redirector = require('./redirector') +import Camp from '@shields_io/camp' +import portfinder from 'portfinder' +import { expect } from 'chai' +import got from '../got-test-client.js' +import redirector from './redirector.js' describe('Redirector', function () { const route = { diff --git a/core/base-service/route.js b/core/base-service/route.js index 9d60b495af047..24a7801ed1479 100644 --- a/core/base-service/route.js +++ b/core/base-service/route.js @@ -1,8 +1,6 @@ -'use strict' - -const escapeStringRegexp = require('escape-string-regexp') -const Joi = require('joi') -const { pathToRegexp } = require('path-to-regexp') +import escapeStringRegexp from 'escape-string-regexp' +import Joi from 'joi' +import { pathToRegexp } from 'path-to-regexp' function makeFullUrl(base, partialUrl) { return `/${[base, partialUrl].filter(Boolean).join('/')}` @@ -74,7 +72,7 @@ function getQueryParamNames({ queryParamSchema }) { } } -module.exports = { +export { makeFullUrl, isValidRoute, assertValidRoute, diff --git a/core/base-service/route.spec.js b/core/base-service/route.spec.js index 612a0d5cc27f1..42326d8745d8b 100644 --- a/core/base-service/route.spec.js +++ b/core/base-service/route.spec.js @@ -1,13 +1,11 @@ -'use strict' - -const { expect } = require('chai') -const Joi = require('joi') -const { test, given, forCases } = require('sazerac') -const { +import { expect } from 'chai' +import Joi from 'joi' +import { test, given, forCases } from 'sazerac' +import { prepareRoute, namedParamsForMatch, getQueryParamNames, -} = require('./route') +} from './route.js' describe('Route helpers', function () { context('A `pattern` with a named param is declared', function () { diff --git a/core/base-service/service-definitions.js b/core/base-service/service-definitions.js index 3f931458276cf..1d66f4e91446c 100644 --- a/core/base-service/service-definitions.js +++ b/core/base-service/service-definitions.js @@ -1,6 +1,4 @@ -'use strict' - -const Joi = require('joi') +import Joi from 'joi' // This should be kept in sync with the schema in // `frontend/lib/service-definitions/index.ts`. @@ -72,7 +70,7 @@ function assertValidServiceDefinitionExport(examples, message = undefined) { Joi.assert(examples, serviceDefinitionExport, message) } -module.exports = { +export { serviceDefinition, assertValidServiceDefinition, serviceDefinitionExport, diff --git a/core/base-service/to-array.js b/core/base-service/to-array.js index e22a7227b39dd..f2131490cf6a6 100644 --- a/core/base-service/to-array.js +++ b/core/base-service/to-array.js @@ -1,6 +1,4 @@ -'use strict' - -module.exports = function toArray(val) { +export default function toArray(val) { if (val === undefined) { return [] } else if (Object(val) instanceof Array) { diff --git a/core/base-service/trace.js b/core/base-service/trace.js index 97ef96c66cbb8..7eda5881c52c8 100644 --- a/core/base-service/trace.js +++ b/core/base-service/trace.js @@ -1,7 +1,6 @@ -'use strict' - -const chalk = require('chalk') -const config = require('config').util.toObject() +import chalk from 'chalk' +import config from 'config' +const objectConfig = config.util.toObject() // Config is loaded globally but it would be better to inject it. To do that, // there needs to be one instance of the service created at registration time, @@ -10,7 +9,7 @@ const config = require('config').util.toObject() // thereby gaining access to the injected config. const { services: { trace: enableTraceLogging }, -} = config.public +} = objectConfig.public function _formatLabelForStage(stage, label) { const colorFn = { @@ -37,6 +36,6 @@ function logTrace(stage, symbol, label, content, { deep = false } = {}) { } } -module.exports = { +export default { logTrace, } diff --git a/core/base-service/validate.js b/core/base-service/validate.js index a2da0e922da02..23990b15dd58e 100644 --- a/core/base-service/validate.js +++ b/core/base-service/validate.js @@ -1,8 +1,6 @@ -'use strict' - -const emojic = require('emojic') -const Joi = require('joi') -const trace = require('./trace') +import emojic from 'emojic' +import Joi from 'joi' +import trace from './trace.js' function validate( { @@ -50,4 +48,4 @@ function validate( } } -module.exports = validate +export default validate diff --git a/core/base-service/validate.spec.js b/core/base-service/validate.spec.js index c51f771070385..78f6c46f5ceeb 100644 --- a/core/base-service/validate.spec.js +++ b/core/base-service/validate.spec.js @@ -1,11 +1,9 @@ -'use strict' - -const Joi = require('joi') -const { expect } = require('chai') -const sinon = require('sinon') -const trace = require('./trace') -const { InvalidParameter } = require('./errors') -const validate = require('./validate') +import Joi from 'joi' +import { expect } from 'chai' +import sinon from 'sinon' +import trace from './trace.js' +import { InvalidParameter } from './errors.js' +import validate from './validate.js' describe('validate', function () { const schema = Joi.object({ diff --git a/core/got-test-client.js b/core/got-test-client.js index 70af889af97bc..d8800f46173c1 100644 --- a/core/got-test-client.js +++ b/core/got-test-client.js @@ -1,6 +1,4 @@ -'use strict' - -const got = require('got') +import got from 'got' // https://github.com/nock/nock/issues/1523 -module.exports = got.extend({ retry: 0 }) +export default got.extend({ retry: 0 }) diff --git a/core/legacy/regular-update.js b/core/legacy/regular-update.js index e32e05c412d1f..d60d89112f7e4 100644 --- a/core/legacy/regular-update.js +++ b/core/legacy/regular-update.js @@ -1,6 +1,5 @@ -'use strict' - -const { Inaccessible, InvalidResponse } = require('../base-service/errors') +import requestModule from 'request' +import { Inaccessible, InvalidResponse } from '../base-service/errors.js' // Map from URL to { timestamp: last fetch time, data: data }. let regularUpdateCache = Object.create(null) @@ -11,8 +10,8 @@ let regularUpdateCache = Object.create(null) // // To use this from a service: // -// const { promisify } = require('util') -// const { regularUpdate } = require('../../core/legacy/regular-update') +// import { promisify } from 'util' +// import { regularUpdate } from '../../core/legacy/regular-update.js' // // function getThing() { // return promisify(regularUpdate)({ @@ -32,7 +31,7 @@ function regularUpdate( json = true, scraper = buffer => buffer, options = {}, - request = require('request'), + request = requestModule, }, cb ) { @@ -95,7 +94,4 @@ function clearRegularUpdateCache() { regularUpdateCache = Object.create(null) } -module.exports = { - regularUpdate, - clearRegularUpdateCache, -} +export { regularUpdate, clearRegularUpdateCache } diff --git a/core/register-chai-plugins.spec.js b/core/register-chai-plugins.spec.js index 0873f4c86344f..7b38803d7b8d0 100644 --- a/core/register-chai-plugins.spec.js +++ b/core/register-chai-plugins.spec.js @@ -1,6 +1,5 @@ -'use strict' - -const { use } = require('chai') - -use(require('chai-string')) -use(require('sinon-chai')) +import { use } from 'chai' +import chaiString from 'chai-string' +import sinonChai from 'sinon-chai' +use(chaiString) +use(sinonChai) diff --git a/core/server/in-process-server-test-helpers.js b/core/server/in-process-server-test-helpers.js index 85280a1a31629..f27bc447c2031 100644 --- a/core/server/in-process-server-test-helpers.js +++ b/core/server/in-process-server-test-helpers.js @@ -1,18 +1,14 @@ -'use strict' - -const merge = require('deepmerge') -const config = require('config').util.toObject() -const portfinder = require('portfinder') -const Server = require('./server') +import merge from 'deepmerge' +import config from 'config' +import portfinder from 'portfinder' +import Server from './server.js' async function createTestServer(customConfig = {}) { - const mergedConfig = merge(config, customConfig) + const mergedConfig = merge(config.util.toObject(), customConfig) if (!mergedConfig.public.bind.port) { mergedConfig.public.bind.port = await portfinder.getPortPromise() } return new Server(mergedConfig) } -module.exports = { - createTestServer, -} +export { createTestServer } diff --git a/core/server/influx-metrics.js b/core/server/influx-metrics.js index 2d87cc56d5af9..eae365f9e0cc6 100644 --- a/core/server/influx-metrics.js +++ b/core/server/influx-metrics.js @@ -1,11 +1,10 @@ -'use strict' -const os = require('os') -const got = require('got') -const generateInstanceId = require('./instance-id-generator') -const { promClientJsonToInfluxV2 } = require('./metrics/format-converters') -const log = require('./log') +import os from 'os' +import got from 'got' +import generateInstanceId from './instance-id-generator.js' +import { promClientJsonToInfluxV2 } from './metrics/format-converters.js' +import log from './log.js' -module.exports = class InfluxMetrics { +export default class InfluxMetrics { constructor(metricInstance, config) { this._metricInstance = metricInstance this._config = config diff --git a/core/server/influx-metrics.spec.js b/core/server/influx-metrics.spec.js index 4b91b055230bc..529edeaaeb132 100644 --- a/core/server/influx-metrics.spec.js +++ b/core/server/influx-metrics.spec.js @@ -1,11 +1,10 @@ -'use strict' -const os = require('os') -const nock = require('nock') -const sinon = require('sinon') -const { expect } = require('chai') -const log = require('./log') -const InfluxMetrics = require('./influx-metrics') -require('../register-chai-plugins.spec') +import os from 'os' +import nock from 'nock' +import sinon from 'sinon' +import { expect } from 'chai' +import log from './log.js' +import InfluxMetrics from './influx-metrics.js' +import '../register-chai-plugins.spec.js' describe('Influx metrics', function () { const metricInstance = { metrics() { diff --git a/core/server/instance-id-generator.js b/core/server/instance-id-generator.js index e156070161ec5..63ad06d09a387 100644 --- a/core/server/instance-id-generator.js +++ b/core/server/instance-id-generator.js @@ -1,8 +1,6 @@ -'use strict' - function generateInstanceId() { // from https://gist.github.com/gordonbrander/2230317 return Math.random().toString(36).substr(2, 9) } -module.exports = generateInstanceId +export default generateInstanceId diff --git a/core/server/log.js b/core/server/log.js index 46cb98a24ac1e..c89aae419a606 100644 --- a/core/server/log.js +++ b/core/server/log.js @@ -1,5 +1,4 @@ -'use strict' -const Sentry = require('@sentry/node') +import Sentry from '@sentry/node' const listeners = [] @@ -23,27 +22,32 @@ function date() { ) } -module.exports = function log(...msg) { +const log = (...msg) => { const d = date() listeners.forEach(f => f(d, ...msg)) console.log(d, ...msg) } -module.exports.error = function error(err) { +const error = err => { const d = date() listeners.forEach(f => f(d, err)) Sentry.captureException(err) console.error(d, err) } -module.exports.addListener = function addListener(func) { - listeners.push(func) -} +const addListener = func => listeners.push(func) -module.exports.removeListener = function removeListener(func) { +const removeListener = func => { const index = listeners.indexOf(func) if (index < 0) { return } listeners.splice(index, 1) } + +export default { + log, + error, + addListener, + removeListener, +} diff --git a/core/server/metrics/format-converters.js b/core/server/metrics/format-converters.js index bb3903a68422b..53a60b0f54630 100644 --- a/core/server/metrics/format-converters.js +++ b/core/server/metrics/format-converters.js @@ -1,5 +1,4 @@ -'use strict' -const groupBy = require('lodash.groupby') +import groupBy from 'lodash.groupby' function promClientJsonToInfluxV2(metrics, extraLabels = {}) { return metrics @@ -24,4 +23,4 @@ function promClientJsonToInfluxV2(metrics, extraLabels = {}) { .join('\n') } -module.exports = { promClientJsonToInfluxV2 } +export { promClientJsonToInfluxV2 } diff --git a/core/server/metrics/format-converters.spec.js b/core/server/metrics/format-converters.spec.js index f4f2381429780..3ea4a51028cdc 100644 --- a/core/server/metrics/format-converters.spec.js +++ b/core/server/metrics/format-converters.spec.js @@ -1,8 +1,6 @@ -'use strict' - -const { expect } = require('chai') -const prometheus = require('prom-client') -const { promClientJsonToInfluxV2 } = require('./format-converters') +import { expect } from 'chai' +import prometheus from 'prom-client' +import { promClientJsonToInfluxV2 } from './format-converters.js' describe('Metric format converters', function () { describe('prom-client JSON to InfluxDB line protocol (version 2)', function () { diff --git a/core/server/prometheus-metrics.js b/core/server/prometheus-metrics.js index a19c916d920d5..072a497c1bafb 100644 --- a/core/server/prometheus-metrics.js +++ b/core/server/prometheus-metrics.js @@ -1,9 +1,7 @@ -'use strict' +import decamelize from 'decamelize' +import prometheus from 'prom-client' -const decamelize = require('decamelize') -const prometheus = require('prom-client') - -module.exports = class PrometheusMetrics { +export default class PrometheusMetrics { constructor({ register } = {}) { this.register = register || new prometheus.Registry() this.counters = { diff --git a/core/server/prometheus-metrics.spec.js b/core/server/prometheus-metrics.spec.js index 22cffbaef78f8..31fa40afb0bad 100644 --- a/core/server/prometheus-metrics.spec.js +++ b/core/server/prometheus-metrics.spec.js @@ -1,10 +1,8 @@ -'use strict' - -const { expect } = require('chai') -const Camp = require('@shields_io/camp') -const portfinder = require('portfinder') -const got = require('../got-test-client') -const Metrics = require('./prometheus-metrics') +import { expect } from 'chai' +import Camp from '@shields_io/camp' +import portfinder from 'portfinder' +import got from '../got-test-client.js' +import Metrics from './prometheus-metrics.js' describe('Prometheus metrics route', function () { let port, baseUrl, camp, metrics diff --git a/core/server/secret-is-valid.js b/core/server/secret-is-valid.js index d00118969add8..c8b87ffda123f 100644 --- a/core/server/secret-is-valid.js +++ b/core/server/secret-is-valid.js @@ -1,5 +1,3 @@ -'use strict' - function constEq(a, b) { if (a.length !== b.length) { return false @@ -17,4 +15,4 @@ function makeSecretIsValid(shieldsSecret) { } } -module.exports = { makeSecretIsValid } +export { makeSecretIsValid } diff --git a/core/server/server.js b/core/server/server.js index 36e9d57d73809..b19278b049963 100644 --- a/core/server/server.js +++ b/core/server/server.js @@ -1,27 +1,26 @@ -'use strict' /** * @module */ -const path = require('path') -const url = require('url') +import path from 'path' +import url, { fileURLToPath } from 'url' +import cloudflareMiddleware from 'cloudflare-middleware' +import bytes from 'bytes' +import Camp from '@shields_io/camp' +import originalJoi from 'joi' +import makeBadge from '../../badge-maker/lib/make-badge.js' +import GithubConstellation from '../../services/github/github-constellation.js' +import { setRoutes } from '../../services/suggest.js' +import { loadServiceClasses } from '../base-service/loader.js' +import { makeSend } from '../base-service/legacy-result-sender.js' +import { handleRequest } from '../base-service/legacy-request-handler.js' +import { clearRegularUpdateCache } from '../legacy/regular-update.js' +import { rasterRedirectUrl } from '../badge-urls/make-badge-url.js' +import { nonNegativeInteger } from '../../services/validators.js' +import log from './log.js' +import PrometheusMetrics from './prometheus-metrics.js' +import InfluxMetrics from './influx-metrics.js' const { URL } = url -const cloudflareMiddleware = require('cloudflare-middleware') -const bytes = require('bytes') -const Camp = require('@shields_io/camp') -const originalJoi = require('joi') -const makeBadge = require('../../badge-maker/lib/make-badge') -const GithubConstellation = require('../../services/github/github-constellation') -const suggest = require('../../services/suggest') -const { loadServiceClasses } = require('../base-service/loader') -const { makeSend } = require('../base-service/legacy-result-sender') -const { handleRequest } = require('../base-service/legacy-request-handler') -const { clearRegularUpdateCache } = require('../legacy/regular-update') -const { rasterRedirectUrl } = require('../badge-urls/make-badge-url') -const { nonNegativeInteger } = require('../../services/validators') -const log = require('./log') -const PrometheusMetrics = require('./prometheus-metrics') -const InfluxMetrics = require('./influx-metrics') const Joi = originalJoi .extend(base => ({ @@ -143,7 +142,12 @@ const publicConfigSchema = Joi.object({ requestTimeoutSeconds: nonNegativeInteger, requestTimeoutMaxAgeSeconds: nonNegativeInteger, documentRoot: Joi.string().default( - path.resolve(__dirname, '..', '..', 'public') + path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + '..', + '..', + 'public' + ) ), requireCloudflare: Joi.boolean().required(), }).required() @@ -399,11 +403,11 @@ class Server { * Iterate all the service classes defined in /services, * load each service and register a Scoutcamp route for each service. */ - registerServices() { + async registerServices() { const { config, camp, metricInstance } = this const { apiProvider: githubApiProvider } = this.githubConstellation - loadServiceClasses().forEach(serviceClass => + ;(await loadServiceClasses()).forEach(serviceClass => serviceClass.register( { camp, handleRequest, githubApiProvider, metricInstance }, { @@ -432,7 +436,7 @@ class Server { requireCloudflare, } = this.config.public - log(`Server is starting up: ${this.baseUrl}`) + log.log(`Server is starting up: ${this.baseUrl}`) const camp = (this.camp = Camp.create({ documentRoot: this.config.public.documentRoot, @@ -460,11 +464,11 @@ class Server { } const { apiProvider: githubApiProvider } = this.githubConstellation - suggest.setRoutes(allowedOrigin, githubApiProvider, camp) + setRoutes(allowedOrigin, githubApiProvider, camp) this.registerErrorHandlers() this.registerRedirects() - this.registerServices() + await this.registerServices() camp.timeout = this.config.public.requestTimeoutSeconds * 1000 if (this.config.public.requestTimeoutSeconds > 0) { @@ -522,4 +526,4 @@ class Server { } } -module.exports = Server +export default Server diff --git a/core/server/server.spec.js b/core/server/server.spec.js index 3955561034f46..dc43db3f5607d 100644 --- a/core/server/server.spec.js +++ b/core/server/server.spec.js @@ -1,14 +1,13 @@ -'use strict' - -const path = require('path') -const { expect } = require('chai') -const isSvg = require('is-svg') -const config = require('config') -const nock = require('nock') -const sinon = require('sinon') -const got = require('../got-test-client') -const Server = require('./server') -const { createTestServer } = require('./in-process-server-test-helpers') +import path from 'path' +import { fileURLToPath } from 'url' +import { expect } from 'chai' +import isSvg from 'is-svg' +import config from 'config' +import nock from 'nock' +import sinon from 'sinon' +import got from '../got-test-client.js' +import Server from './server.js' +import { createTestServer } from './in-process-server-test-helpers.js' describe('The server', function () { describe('running', function () { @@ -18,7 +17,10 @@ describe('The server', function () { this.timeout(10000) server = await createTestServer({ public: { - documentRoot: path.resolve(__dirname, 'test-public'), + documentRoot: path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + 'test-public' + ), }, }) baseUrl = server.baseUrl diff --git a/core/service-test-runner/cli.js b/core/service-test-runner/cli.js index d63be95a0d355..917c1f859b499 100644 --- a/core/service-test-runner/cli.js +++ b/core/service-test-runner/cli.js @@ -54,19 +54,31 @@ // Relying on npm scripts is safer. Using "pre" makes it impossible to run // the second step without the first. -'use strict' +import minimist from 'minimist' +import envFlag from 'node-env-flag' +import readAllStdinSync from 'read-all-stdin-sync' +import { createTestServer } from '../server/in-process-server-test-helpers.js' +import Runner from './runner.js' -const minimist = require('minimist') -const envFlag = require('node-env-flag') -const readAllStdinSync = require('read-all-stdin-sync') -const { createTestServer } = require('../server/in-process-server-test-helpers') -const Runner = require('./runner') - -require('../unhandled-rejection.spec') +import('../unhandled-rejection.spec.js') const retry = {} retry.count = parseInt(process.env.RETRY_COUNT) || 0 retry.backoff = parseInt(process.env.RETRY_BACKOFF) || 0 + +const args = minimist(process.argv.slice(3)) +const stdinOption = args.stdin +const onlyOption = args.only +let onlyServices +if (stdinOption && onlyOption) { + console.error('Do not use --only with --stdin') +} else if (stdinOption) { + const allStdin = readAllStdinSync().trim() + onlyServices = allStdin ? allStdin.split('\n') : [] +} else if (onlyOption) { + onlyServices = onlyOption.split(',') +} + let baseUrl, server if (process.env.TESTED_SERVER_URL) { baseUrl = process.env.TESTED_SERVER_URL @@ -81,7 +93,7 @@ if (process.env.TESTED_SERVER_URL) { }, }, }) - server.start() + await server.start() }) after('Shut down the server', async function () { if (server) { @@ -92,7 +104,7 @@ if (process.env.TESTED_SERVER_URL) { const skipIntercepted = envFlag(process.env.SKIP_INTERCEPTED, false) const runner = new Runner({ baseUrl, skipIntercepted, retry }) -runner.prepare() +await runner.prepare() // The server's request cache causes side effects between tests. if (!process.env.TESTED_SERVER_URL) { @@ -101,21 +113,6 @@ if (!process.env.TESTED_SERVER_URL) { } } -const args = minimist(process.argv.slice(3)) -const stdinOption = args.stdin -const onlyOption = args.only - -let onlyServices - -if (stdinOption && onlyOption) { - console.error('Do not use --only with --stdin') -} else if (stdinOption) { - const allStdin = readAllStdinSync().trim() - onlyServices = allStdin ? allStdin.split('\n') : [] -} else if (onlyOption) { - onlyServices = onlyOption.split(',') -} - if (typeof onlyServices === 'undefined' || onlyServices.includes('*****')) { console.info('Running all service tests.') } else if (onlyServices.length === 0) { diff --git a/core/service-test-runner/create-service-tester.js b/core/service-test-runner/create-service-tester.js index 4f90a614c4300..17246b6693374 100644 --- a/core/service-test-runner/create-service-tester.js +++ b/core/service-test-runner/create-service-tester.js @@ -1,11 +1,10 @@ -'use strict' /** * @module */ -const caller = require('caller') -const BaseService = require('../base-service/base') -const ServiceTester = require('./service-tester') +import caller from 'caller' +import BaseService from '../base-service/base.js' +import ServiceTester from './service-tester.js' /** * Automatically create a ServiceTester. @@ -19,9 +18,9 @@ const ServiceTester = require('./service-tester') * @returns {module:core/service-test-runner/service-tester~ServiceTester} * ServiceTester instance */ -function createServiceTester() { +async function createServiceTester() { const servicePath = caller().replace('.tester.js', '.service.js') - const ServiceClass = require(servicePath) + const ServiceClass = Object.values(await import(servicePath))[0] if (!(ServiceClass.prototype instanceof BaseService)) { throw Error( `${servicePath} does not export a single service. Invoke new ServiceTester() directly.` @@ -30,4 +29,4 @@ function createServiceTester() { return ServiceTester.forServiceClass(ServiceClass) } -module.exports = createServiceTester +export default createServiceTester diff --git a/core/service-test-runner/icedfrisby-shields.js b/core/service-test-runner/icedfrisby-shields.js index f4a99b7b720b7..947b7f2eb08ba 100644 --- a/core/service-test-runner/icedfrisby-shields.js +++ b/core/service-test-runner/icedfrisby-shields.js @@ -1,10 +1,9 @@ -'use strict' /** * @module */ -const Joi = require('joi') -const { expect } = require('chai') +import Joi from 'joi' +import { expect } from 'chai' /** * Factory which wraps an "icedfrisby-nock" with some additional functionality: @@ -85,4 +84,4 @@ const factory = superclass => } } -module.exports = factory +export default factory diff --git a/core/service-test-runner/infer-pull-request.js b/core/service-test-runner/infer-pull-request.js index c9c4695fbeeef..91a46cadb857d 100644 --- a/core/service-test-runner/infer-pull-request.js +++ b/core/service-test-runner/infer-pull-request.js @@ -1,9 +1,8 @@ -'use strict' /** * @module */ -const { URL, format: urlFormat } = require('url') +import { URL, format as urlFormat } from 'url' function formatSlug(owner, repo, pullRequest) { return `${owner}/${repo}#${pullRequest}` @@ -98,8 +97,4 @@ function inferPullRequest(env = process.env) { * @property {string} slug owner/repo/#pullRequest */ -module.exports = { - parseGithubPullRequestUrl, - parseGithubRepoSlug, - inferPullRequest, -} +export { parseGithubPullRequestUrl, parseGithubRepoSlug, inferPullRequest } diff --git a/core/service-test-runner/infer-pull-request.spec.js b/core/service-test-runner/infer-pull-request.spec.js index 610c258eebb6e..c2050d533e406 100644 --- a/core/service-test-runner/infer-pull-request.spec.js +++ b/core/service-test-runner/infer-pull-request.spec.js @@ -1,10 +1,8 @@ -'use strict' - -const { test, given, forCases } = require('sazerac') -const { +import { test, given, forCases } from 'sazerac' +import { parseGithubPullRequestUrl, inferPullRequest, -} = require('./infer-pull-request') +} from './infer-pull-request.js' describe('Pull request inference', function () { test(parseGithubPullRequestUrl, () => { diff --git a/core/service-test-runner/pull-request-services-cli.js b/core/service-test-runner/pull-request-services-cli.js index 0a23f638edb12..34d8d20993c78 100644 --- a/core/service-test-runner/pull-request-services-cli.js +++ b/core/service-test-runner/pull-request-services-cli.js @@ -13,11 +13,9 @@ // // TRAVIS=1 TRAVIS_REPO_SLUG=badges/shields TRAVIS_PULL_REQUEST=1108 npm run test:services:pr:prepare -'use strict' - -const got = require('got') -const { inferPullRequest } = require('./infer-pull-request') -const servicesForTitle = require('./services-for-title') +import got from 'got' +import { inferPullRequest } from './infer-pull-request.js' +import servicesForTitle from './services-for-title.js' async function getTitle(owner, repo, pullRequest) { const { diff --git a/core/service-test-runner/runner.js b/core/service-test-runner/runner.js index 44e4718267414..4b6cf47f89863 100644 --- a/core/service-test-runner/runner.js +++ b/core/service-test-runner/runner.js @@ -1,9 +1,8 @@ -'use strict' /** * @module */ -const { loadTesters } = require('../base-service/loader') +import { loadTesters } from '../base-service/loader.js' /** * Load a collection of ServiceTester objects and register them with Mocha. @@ -24,8 +23,10 @@ class Runner { /** * Prepare the runner by loading up all the ServiceTester objects. */ - prepare() { - this.testers = loadTesters() + async prepare() { + this.testers = (await loadTesters()).flatMap(testerModule => + Object.values(testerModule) + ) this.testers.forEach(tester => { tester.beforeEach = () => { this.beforeEach() @@ -72,4 +73,4 @@ class Runner { testers.forEach(tester => tester.toss({ baseUrl, skipIntercepted, retry })) } } -module.exports = Runner +export default Runner diff --git a/core/service-test-runner/service-tester.js b/core/service-test-runner/service-tester.js index 4aa282f8535c4..3cc94c5d55f3b 100644 --- a/core/service-test-runner/service-tester.js +++ b/core/service-test-runner/service-tester.js @@ -1,14 +1,13 @@ -'use strict' /** * @module */ -const emojic = require('emojic') -const trace = require('../base-service/trace') -const frisby = require('./icedfrisby-shields')( - // eslint-disable-next-line import/order - require('icedfrisby-nock')(require('icedfrisby')) -) +import emojic from 'emojic' +import icedfrisbyNockModule from 'icedfrisby-nock' +import icedfrisbyModule from 'icedfrisby' +import trace from '../base-service/trace.js' +import icedfrisbyShieldsModule from './icedfrisby-shields.js' +const frisby = icedfrisbyShieldsModule(icedfrisbyNockModule(icedfrisbyModule)) /** * Encapsulate a suite of tests. Create new tests using create() and register @@ -140,4 +139,4 @@ class ServiceTester { } } -module.exports = ServiceTester +export default ServiceTester diff --git a/core/service-test-runner/services-for-title.js b/core/service-test-runner/services-for-title.js index f5c6fcb46c23b..862198fcea013 100644 --- a/core/service-test-runner/services-for-title.js +++ b/core/service-test-runner/services-for-title.js @@ -1,9 +1,8 @@ -'use strict' /** * @module */ -const difference = require('lodash.difference') +import difference from 'lodash.difference' /** * Given a pull request title like @@ -31,4 +30,4 @@ function servicesForTitle(title) { return difference(services, ignored) } -module.exports = servicesForTitle +export default servicesForTitle diff --git a/core/service-test-runner/services-for-title.spec.js b/core/service-test-runner/services-for-title.spec.js index 40d216d8968a4..f89f23d8f5af2 100644 --- a/core/service-test-runner/services-for-title.spec.js +++ b/core/service-test-runner/services-for-title.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const servicesForTitle = require('./services-for-title') +import { test, given } from 'sazerac' +import servicesForTitle from './services-for-title.js' describe('Services from PR title', function () { test(servicesForTitle, () => { diff --git a/core/token-pooling/redis-token-persistence.integration.js b/core/token-pooling/redis-token-persistence.integration.js index a852e28515a14..ca1d65cd9b4a4 100644 --- a/core/token-pooling/redis-token-persistence.integration.js +++ b/core/token-pooling/redis-token-persistence.integration.js @@ -1,9 +1,7 @@ -'use strict' - -const RedisServer = require('redis-server') -const Redis = require('ioredis') -const { expect } = require('chai') -const RedisTokenPersistence = require('./redis-token-persistence') +import RedisServer from 'redis-server' +import Redis from 'ioredis' +import { expect } from 'chai' +import RedisTokenPersistence from './redis-token-persistence.js' describe('Redis token persistence', function () { let server diff --git a/core/token-pooling/redis-token-persistence.js b/core/token-pooling/redis-token-persistence.js index 05a5ee3fbc724..dd0b6fb306702 100644 --- a/core/token-pooling/redis-token-persistence.js +++ b/core/token-pooling/redis-token-persistence.js @@ -1,10 +1,8 @@ -'use strict' +import { URL } from 'url' +import Redis from 'ioredis' +import log from '../server/log.js' -const { URL } = require('url') -const Redis = require('ioredis') -const log = require('../server/log') - -module.exports = class RedisTokenPersistence { +export default class RedisTokenPersistence { constructor({ url, key }) { this.url = url this.key = key diff --git a/core/token-pooling/token-pool.js b/core/token-pooling/token-pool.js index 54e4cfb8a951b..7dcf64ad5abdf 100644 --- a/core/token-pooling/token-pool.js +++ b/core/token-pooling/token-pool.js @@ -1,10 +1,9 @@ -'use strict' /** * @module */ -const crypto = require('crypto') -const PriorityQueue = require('priorityqueuejs') +import crypto from 'crypto' +import PriorityQueue from 'priorityqueuejs' /** * Compute a one-way hash of the input string. @@ -354,8 +353,4 @@ class TokenPool { } } -module.exports = { - sanitizeToken, - Token, - TokenPool, -} +export { sanitizeToken, Token, TokenPool } diff --git a/core/token-pooling/token-pool.spec.js b/core/token-pooling/token-pool.spec.js index 8780b17e6f74e..fdfa937d200a1 100644 --- a/core/token-pooling/token-pool.spec.js +++ b/core/token-pooling/token-pool.spec.js @@ -1,9 +1,7 @@ -'use strict' - -const { expect } = require('chai') -const sinon = require('sinon') -const times = require('lodash.times') -const { Token, TokenPool } = require('./token-pool') +import { expect } from 'chai' +import sinon from 'sinon' +import times from 'lodash.times' +import { Token, TokenPool } from './token-pool.js' function expectPoolToBeExhausted(pool) { expect(() => { diff --git a/core/unhandled-rejection.spec.js b/core/unhandled-rejection.spec.js index b155793b9b04f..17c42ac09beb1 100644 --- a/core/unhandled-rejection.spec.js +++ b/core/unhandled-rejection.spec.js @@ -1,5 +1,3 @@ -'use strict' - // Cause unhandled promise rejections to fail unit tests, and print with stack // traces. process.on('unhandledRejection', error => { diff --git a/cypress/integration/main-page.spec.js b/cypress/integration/main-page.spec.js index 412c50e37584e..009371ecffb80 100644 --- a/cypress/integration/main-page.spec.js +++ b/cypress/integration/main-page.spec.js @@ -1,5 +1,3 @@ -'use strict' - describe('Main page', function () { const backendUrl = Cypress.env('backend_url') const SEARCH_INPUT = 'input[placeholder="search / project URL"]' diff --git a/dangerfile.js b/dangerfile.js index 94b4185945dd4..f59f587886e72 100644 --- a/dangerfile.js +++ b/dangerfile.js @@ -131,7 +131,7 @@ if (allFiles.length > 100) { ) } - if (diff.includes("require('@hapi/joi')")) { + if (diff.includes("from '@hapi/joi'")) { fail( [ `Found import of '@hapi/joi' in \`${file}\`.
`, diff --git a/doc/TUTORIAL.md b/doc/TUTORIAL.md index 9d8bb05371f75..b107a385b24e5 100644 --- a/doc/TUTORIAL.md +++ b/doc/TUTORIAL.md @@ -109,19 +109,17 @@ As a first step we will look at the code for an example which generates a badge ```js // (1) -'use strict' -// (2) -const { BaseService } = require('..') +import { BaseService } from '../index.js' -// (3) -module.exports = class Example extends BaseService { - // (4) +// (2) +export default class Example extends BaseService { + // (3) static category = 'build' - // (5) + // (4) static route = { base: 'example', pattern: ':text' } - // (6) + // (5) async handle({ text }) { return { label: 'example', @@ -134,18 +132,17 @@ module.exports = class Example extends BaseService { Description of the code: -1. We declare strict mode at the start of each file. This prevents certain classes of error such as undeclared variables. -2. Our service badge class will extend `BaseService` so we need to require it. Variables are declared with `const` and `let` in preference to `var`. -3. Our module must export a class which extends `BaseService`. -4. Returns the name of the category to sort this badge into (eg. "build"). Used to sort the examples on the main [shields.io](https://shields.io) website. [Here](https://github.com/badges/shields/blob/master/services/categories.js) is the list of the valid categories. See [section 4.4](#44-adding-an-example-to-the-front-page) for more details on examples. -5. `route()` declares the URL path at which the service operates. It also maps components of the URL path to handler parameters. +1. Our service badge class will extend `BaseService` so we need to require it. Variables are declared with `const` and `let` in preference to `var`. +2. Our module must export a class which extends `BaseService`. +3. Returns the name of the category to sort this badge into (eg. "build"). Used to sort the examples on the main [shields.io](https://shields.io) website. [Here](https://github.com/badges/shields/blob/master/services/categories.js) is the list of the valid categories. See [section 4.4](#44-adding-an-example-to-the-front-page) for more details on examples. +4. `route()` declares the URL path at which the service operates. It also maps components of the URL path to handler parameters. - `base` defines the first part of the URL that doesn't change, e.g. `/example/`. - `pattern` defines the variable part of the route, everything that comes after `/example/`. It can include any number of named parameters. These are converted into regular expressions by [`path-to-regexp`][path-to-regexp]. Because a service instance won't be created until it's time to handle a request, the route and other metadata must be obtained by examining the classes themselves. [That's why they're marked `static`.][static] - There is additional documentation on conventions for [designing badge URLs](./badge-urls.md) -6. All badges must implement the `async handle()` function that receives parameters to render the badge. Parameters of `handle()` will match the name defined in `route()` Because we're capturing a single variable called `text` our function signature is `async handle({ text })`. `async` is needed to let JavaScript do other things while we are waiting for result from external API. Although in this simple case, we don't make any external calls. Our `handle()` function should return an object with 3 properties: +5. All badges must implement the `async handle()` function that receives parameters to render the badge. Parameters of `handle()` will match the name defined in `route()` Because we're capturing a single variable called `text` our function signature is `async handle({ text })`. `async` is needed to let JavaScript do other things while we are waiting for result from external API. Although in this simple case, we don't make any external calls. Our `handle()` function should return an object with 3 properties: - `label`: the text on the left side of the badge - `message`: the text on the right side of the badge - here we are passing through the parameter we captured in the route regex - `color`: the background color of the right side of the badge @@ -171,36 +168,33 @@ This example is based on the [Ruby Gems version](https://github.com/badges/shiel ```js // (1) -'use strict' - +import { renderVersionBadge } from '../version.js' // (2) -const { renderVersionBadge } = require('..//version') -// (3) -const { BaseJsonService } = require('..') +import { BaseJsonService } from '../index.js' -// (4) -const Joi = require('joi') +// (3) +import Joi from 'joi' const schema = Joi.object({ version: Joi.string().required(), }).required() -// (5) -module.exports = class GemVersion extends BaseJsonService { - // (6) +// (4) +export default class GemVersion extends BaseJsonService { + // (5) static category = 'version' - // (7) + // (6) static route = { base: 'gem/v', pattern: ':gem' } - // (8) + // (7) static defaultBadgeData = { label: 'gem' } - // (11) + // (10) static render({ version }) { return renderVersionBadge({ version }) } - // (10) + // (9) async fetch({ gem }) { return this._requestJson({ schema, @@ -208,7 +202,7 @@ module.exports = class GemVersion extends BaseJsonService { }) } - // (9) + // (8) async handle({ gem }) { const { version } = await this.fetch({ gem }) return this.constructor.render({ version }) @@ -218,39 +212,38 @@ module.exports = class GemVersion extends BaseJsonService { Description of the code: -1. As with the first example, we declare strict mode at the start of each file. -2. In this case we are making a version badge, which is a common pattern. Instead of directly returning an object in this badge we will use a helper function to format our data consistently. There are a variety of helper functions to help with common tasks in `/services`. Some useful generic helpers can be found in: +1. In this case we are making a version badge, which is a common pattern. Instead of directly returning an object in this badge we will use a helper function to format our data consistently. There are a variety of helper functions to help with common tasks in `/services`. Some useful generic helpers can be found in: - [build-status.js](https://github.com/badges/shields/blob/master/services/build-status.js) - [color-formatters.js](https://github.com/badges/shields/blob/master/services/color-formatters.js) - [licenses.js](https://github.com/badges/shields/blob/master/services/licenses.js) - [text-formatters.js](https://github.com/badges/shields/blob/master/services/text-formatters.js) - [version.js](https://github.com/badges/shields/blob/master/services/version.js) -3. Our badge will query a JSON API so we will extend `BaseJsonService` instead of `BaseService`. This contains some helpers to reduce the need for boilerplate when calling a JSON API. -4. We perform input validation by defining a schema which we expect the JSON we receive to conform to. This is done using [Joi](https://github.com/hapijs/joi). Defining a schema means we can ensure the JSON we receive meets our expectations and throw an error if we receive unexpected input without having to explicitly code validation checks. The schema also acts as a filter on the JSON object. Any properties we're going to reference need to be validated, otherwise they will be filtered out. In this case our schema declares that we expect to receive an object which must have a property called 'version', which is a string. There is further documentation on [input validation](input-validation.md). -5. Our module exports a class which extends `BaseJsonService` -6. Returns the name of the category to sort this badge into (eg. "build"). Used to sort the examples on the main [shields.io](https://shields.io) website. [Here](https://github.com/badges/shields/blob/master/services/categories.js) is the list of the valid categories. See [section 4.4](#44-adding-an-example-to-the-front-page) for more details on examples. -7. As with our previous badge, we need to declare a route. This time we will capture a variable called `gem`. -8. We can use `defaultBadgeData()` to set a default `color`, `logo` and/or `label`. If `handle()` doesn't return any of these keys, we'll use the default. Instead of explicitly setting the label text when we return a badge object, we'll use `defaultBadgeData()` here to define it declaratively. -9. We now jump to the bottom of the example code to the function all badges must implement: `async handle()`. This is the function the server will invoke to handle an incoming request. Because our URL pattern captures a variable called `gem`, our function signature is `async handle({ gem })`. We usually separate the process of generating a badge into 2 stages or concerns: fetch and render. The `fetch()` function is responsible for calling an API endpoint to get data. The `render()` function formats the data for display. In a case where there is a lot of calculation or intermediate steps, this pattern may be thought of as fetch, transform, render and it might be necessary to define some helper functions to assist with the 'transform' step. -10. Working our way upward, the `async fetch()` method is responsible for calling an API endpoint to get data. Extending `BaseJsonService` gives us the helper function `_requestJson()`. Note here that we pass the schema we defined in step 4 as an argument. `_requestJson()` will deal with validating the response against the schema and throwing an error if necessary. - - - `_requestJson()` automatically adds an Accept header, checks the status code, parses the response as JSON, and returns the parsed response. - - `_requestJson()` uses [request](https://github.com/request/request) to perform the HTTP request. Options can be passed to request, including method, query string, and headers. If headers are provided they will override the ones automatically set by `_requestJson()`. There is no need to specify json, as the JSON parsing is handled by `_requestJson()`. See the `request` docs for [supported options](https://github.com/request/request#requestoptions-callback). - - Error messages corresponding to each status code can be returned by passing a dictionary of status codes -> messages in `errorMessages`. - - A more complex call to `_requestJson()` might look like this: - ```js - return this._requestJson({ - schema: mySchema, - url, - options: { qs: { branch: 'master' } }, - errorMessages: { - 401: 'private application not supported', - 404: 'application not found', - }, - }) - ``` - -11. Upward still, the `static render()` method is responsible for formatting the data for display. `render()` is a pure function so we can make it a `static` method. By convention we declare functions which don't reference `this` as `static`. We could explicitly return an object here, as we did in the previous example. In this case, we will hand the version string off to `renderVersionBadge()` which will format it consistently and set an appropriate color. Because `renderVersionBadge()` doesn't return a `label` key, the default label we defined in `defaultBadgeData()` will be used when we generate the badge. +2. Our badge will query a JSON API so we will extend `BaseJsonService` instead of `BaseService`. This contains some helpers to reduce the need for boilerplate when calling a JSON API. +3. We perform input validation by defining a schema which we expect the JSON we receive to conform to. This is done using [Joi](https://github.com/hapijs/joi). Defining a schema means we can ensure the JSON we receive meets our expectations and throw an error if we receive unexpected input without having to explicitly code validation checks. The schema also acts as a filter on the JSON object. Any properties we're going to reference need to be validated, otherwise they will be filtered out. In this case our schema declares that we expect to receive an object which must have a property called 'version', which is a string. There is further documentation on [input validation](input-validation.md). +4. Our module exports a class which extends `BaseJsonService` +5. Returns the name of the category to sort this badge into (eg. "build"). Used to sort the examples on the main [shields.io](https://shields.io) website. [Here](https://github.com/badges/shields/blob/master/services/categories.js) is the list of the valid categories. See [section 4.4](#44-adding-an-example-to-the-front-page) for more details on examples. +6. As with our previous badge, we need to declare a route. This time we will capture a variable called `gem`. +7. We can use `defaultBadgeData()` to set a default `color`, `logo` and/or `label`. If `handle()` doesn't return any of these keys, we'll use the default. Instead of explicitly setting the label text when we return a badge object, we'll use `defaultBadgeData()` here to define it declaratively. +8. We now jump to the bottom of the example code to the function all badges must implement: `async handle()`. This is the function the server will invoke to handle an incoming request. Because our URL pattern captures a variable called `gem`, our function signature is `async handle({ gem })`. We usually separate the process of generating a badge into 2 stages or concerns: fetch and render. The `fetch()` function is responsible for calling an API endpoint to get data. The `render()` function formats the data for display. In a case where there is a lot of calculation or intermediate steps, this pattern may be thought of as fetch, transform, render and it might be necessary to define some helper functions to assist with the 'transform' step. +9. Working our way upward, the `async fetch()` method is responsible for calling an API endpoint to get data. Extending `BaseJsonService` gives us the helper function `_requestJson()`. Note here that we pass the schema we defined in step 4 as an argument. `_requestJson()` will deal with validating the response against the schema and throwing an error if necessary. + + - `_requestJson()` automatically adds an Accept header, checks the status code, parses the response as JSON, and returns the parsed response. + - `_requestJson()` uses [request](https://github.com/request/request) to perform the HTTP request. Options can be passed to request, including method, query string, and headers. If headers are provided they will override the ones automatically set by `_requestJson()`. There is no need to specify json, as the JSON parsing is handled by `_requestJson()`. See the `request` docs for [supported options](https://github.com/request/request#requestoptions-callback). + - Error messages corresponding to each status code can be returned by passing a dictionary of status codes -> messages in `errorMessages`. + - A more complex call to `_requestJson()` might look like this: + ```js + return this._requestJson({ + schema: mySchema, + url, + options: { qs: { branch: 'master' } }, + errorMessages: { + 401: 'private application not supported', + 404: 'application not found', + }, + }) + ``` + +10. Upward still, the `static render()` method is responsible for formatting the data for display. `render()` is a pure function so we can make it a `static` method. By convention we declare functions which don't reference `this` as `static`. We could explicitly return an object here, as we did in the previous example. In this case, we will hand the version string off to `renderVersionBadge()` which will format it consistently and set an appropriate color. Because `renderVersionBadge()` doesn't return a `label` key, the default label we defined in `defaultBadgeData()` will be used when we generate the badge. This code allows us to call this URL to generate this badge: ![](https://img.shields.io/gem/v/formatador) @@ -269,7 +262,7 @@ non-standard error condition. If so, there are several standard exceptions that and can be imported via the import shortcut and then thrown: ```js -const { NotFound } = require('..') +import { NotFound } from '../index.js' throw new NotFound({ prettyMessage: 'package not found' }) ``` @@ -279,7 +272,7 @@ throw new NotFound({ prettyMessage: 'package not found' }) Once we have implemented our badge, we can add it to the index so that users can discover it. We will do this by adding an additional method `examples()` to our class. ```js -module.exports = class GemVersion extends BaseJsonService { +export default class GemVersion extends BaseJsonService { // ... // (1) diff --git a/doc/deprecating-badges.md b/doc/deprecating-badges.md index 353b56de6b5a6..8f8b72749099b 100644 --- a/doc/deprecating-badges.md +++ b/doc/deprecating-badges.md @@ -14,11 +14,9 @@ Locate the source file(s) for the service, which can be found in `*.service.js` Replace the existing service class implementation with the `DeprecatedService` class from `./core/base-service/deprecated-service.js` using the respective `category`, `route`, and `label` values for that service. For example: ```js -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ category: 'size', route: { base: 'imagelayers', @@ -36,12 +34,12 @@ Locate the test file(s) for the service, which can be found in `*.tester.js` fil With `DeprecatedService` classes we cannot use `createServiceTester()` so you will need to create the `ServiceTester` class directly. For example: ```js -const { ServiceTester } = require('../tester') +import { ServiceTester } from '../tester.js' -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'imagelayers', title: 'ImageLayers', -})) +}) ``` Next you will need to replace/refactor the existing tests to validate the new deprecated badge behavior for this service. Deprecated badges always return a message of `no longer available` (such as `imagelayers | no longer available`) so the tests need to be updated to reflect that message value. For example: @@ -60,14 +58,12 @@ Make sure to have a live (non-mocked) test for each badge the service provides t Here is an example of what the final result would look like for a test file: ```js -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'imagelayers', title: 'ImageLayers', -})) +}) t.create('no longer available (previously image size)') .get('/image-size/_/ubuntu/latest.json') diff --git a/doc/service-tests.md b/doc/service-tests.md index a7816e7c18c36..0a332806bc9e6 100644 --- a/doc/service-tests.md +++ b/doc/service-tests.md @@ -33,13 +33,13 @@ The code for our badge is in `services/wercker/wercker.service.js`. Tests for th We'll start by adding some boilerplate to our file: ```js -'use strict' +import { createServiceTester } from '../tester.js' -const t = (module.exports = require('../tester').createServiceTester()) +export const t = await createServiceTester() ``` If our `.service.js` module exports a single class, we can -`require('../tester').createServiceTester()`, which uses convention to create a +`createServiceTester`, which uses convention to create a `ServiceTester` object. Calling this inside `services/wercker/wercker.tester.js` will create a `ServiceTester` object configured for the service exported in `services/wercker/wercker.service.js`. @@ -51,7 +51,7 @@ from the module. First we'll add a test for the typical case: ```js -const { isBuildStatus } = require('../test-validators') +import { isBuildStatus } from '../test-validators.js' t.create('Build status') .get('/build/wercker/go-wercker-api.json') diff --git a/entrypoint.spec.js b/entrypoint.spec.js index c52368d162184..4325c0365ab81 100644 --- a/entrypoint.spec.js +++ b/entrypoint.spec.js @@ -1,23 +1,22 @@ -'use strict' +import { expect } from 'chai' +import isSvg from 'is-svg' +import got from './core/got-test-client.js' -const { expect } = require('chai') -const isSvg = require('is-svg') -const got = require('./core/got-test-client') - -let server -before(function () { - this.timeout('5s') +let serverModule +before(async function () { + this.timeout('30s') // remove args coming from mocha // https://github.com/badges/shields/issues/3365 process.argv = [] - server = require('./server') + serverModule = await import('./server.js') }) after('shut down the server', async function () { - await server.stop() + await serverModule.server.stop() }) it('should render a badge', async function () { + this.timeout('30s') const { statusCode, body } = await got( 'http://localhost:1111/badge/fruit-apple-green.svg' ) diff --git a/gatsby-browser.js b/frontend/gatsby-browser.js similarity index 84% rename from gatsby-browser.js rename to frontend/gatsby-browser.js index 2a973fd4f1d19..0e83d9aa210ed 100644 --- a/gatsby-browser.js +++ b/frontend/gatsby-browser.js @@ -1,4 +1,4 @@ -import redirectLegacyRoutes from './frontend/lib/redirect-legacy-routes' +import redirectLegacyRoutes from './lib/redirect-legacy-routes' // Adapted from https://github.com/gatsbyjs/gatsby/issues/8413 function scrollToElementId(id) { diff --git a/gatsby-config.js b/frontend/gatsby-config.js similarity index 94% rename from gatsby-config.js rename to frontend/gatsby-config.js index ebf6b46e08138..e363cb3cbd01f 100644 --- a/gatsby-config.js +++ b/frontend/gatsby-config.js @@ -13,7 +13,7 @@ module.exports = { { resolve: 'gatsby-plugin-page-creator', options: { - path: path.join(__dirname, 'frontend', 'pages'), + path: path.join(__dirname, 'pages'), }, }, 'gatsby-plugin-react-helmet', diff --git a/gatsby-node.js b/frontend/gatsby-node.js similarity index 80% rename from gatsby-node.js rename to frontend/gatsby-node.js index 0b6e5fa44d83f..1d90adebb709e 100644 --- a/gatsby-node.js +++ b/frontend/gatsby-node.js @@ -23,15 +23,11 @@ async function createPages({ actions: { createPage } }) { if (includeDevPages) { createPage({ path: '/dev/styles', - component: require.resolve( - './frontend/components/development/style-page.tsx' - ), + component: require.resolve('./components/development/style-page.tsx'), }) createPage({ path: '/dev/logos', - component: require.resolve( - './frontend/components/development/logo-page.tsx' - ), + component: require.resolve('./components/development/logo-page.tsx'), }) } @@ -39,7 +35,7 @@ async function createPages({ actions: { createPage } }) { const { id } = category createPage({ path: `/category/${id}`, - component: require.resolve('./frontend/components/main.tsx'), + component: require.resolve('./components/main.tsx'), // `context` provided here becomes `props.pageContext` on the page. context: { category }, }) diff --git a/frontend/lib/service-definitions/index.ts b/frontend/lib/service-definitions/index.ts index e358139614a91..31fe5ed8b4250 100644 --- a/frontend/lib/service-definitions/index.ts +++ b/frontend/lib/service-definitions/index.ts @@ -1,6 +1,6 @@ import groupBy from 'lodash.groupby' // load using js-yaml-loader -import definitions from '../../../service-definitions.yml' +import definitions from '../../service-definitions.yml' export interface Category { id: string diff --git a/frontend/lib/supported-features.ts b/frontend/lib/supported-features.ts index 65ef3d3dc93f8..275b5cd88662a 100644 --- a/frontend/lib/supported-features.ts +++ b/frontend/lib/supported-features.ts @@ -1,4 +1,4 @@ -import supportedFeatures from '../../supported-features.json' +import supportedFeatures from '../supported-features.json' export const shieldsLogos = supportedFeatures.shieldsLogos as string[] export const simpleIcons = supportedFeatures.simpleIcons as string[] diff --git a/frontend/mocha-ignore-pngs.js b/frontend/mocha-ignore-pngs.js deleted file mode 100644 index cefd367d9fb62..0000000000000 --- a/frontend/mocha-ignore-pngs.js +++ /dev/null @@ -1,5 +0,0 @@ -import requireHacker from 'require-hacker' - -// https://diessi.ca/blog/how-to-exclude-css-images-anything-from-unit-tests/ - -requireHacker.hook('png', () => 'module.exports = ""') diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000000000..deaac236c6b02 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,32 @@ +{ + "name": "badge-frontend", + "version": "0.0.0", + "description": "Shields.io frontend", + "private": true, + "homepage": "http://shields.io", + "license": "CC0-1.0", + "repository": { + "type": "git", + "url": "git+https://github.com/badges/shields.git", + "directory": "frontend" + }, + "scripts": { + "test": "echo 'Run tests from parent dir'; false" + }, + "devDependencies": { + "gatsby": "*" + }, + "babel": { + "plugins": [ + [ + "inline-react-svg", + { + "svgo": false + } + ] + ], + "presets": [ + "babel-preset-gatsby" + ] + } +} diff --git a/lib/load-logos.js b/lib/load-logos.js index 7a9efbfdbfa54..f48f32d0d9398 100644 --- a/lib/load-logos.js +++ b/lib/load-logos.js @@ -1,13 +1,16 @@ -'use strict' - -const fs = require('fs') -const path = require('path') -const { svg2base64 } = require('./svg-helpers') +import fs from 'fs' +import path from 'path' +import { fileURLToPath } from 'url' +import { svg2base64 } from './svg-helpers.js' function loadLogos() { // Cache svg logos from disk in base64 string const logos = {} - const logoDir = path.join(__dirname, '..', 'logo') + const logoDir = path.join( + path.dirname(fileURLToPath(import.meta.url)), + '..', + 'logo' + ) const logoFiles = fs.readdirSync(logoDir) logoFiles.forEach(filename => { if (filename[0] === '.') { @@ -30,4 +33,4 @@ function loadLogos() { return logos } -module.exports = loadLogos +export default loadLogos diff --git a/lib/load-simple-icons.js b/lib/load-simple-icons.js index 86f9b8e3563a7..a17b7ce8a2426 100644 --- a/lib/load-simple-icons.js +++ b/lib/load-simple-icons.js @@ -1,7 +1,5 @@ -'use strict' - -const originalSimpleIcons = require('simple-icons') -const { svg2base64 } = require('./svg-helpers') +import originalSimpleIcons from 'simple-icons' +import { svg2base64 } from './svg-helpers.js' function loadSimpleIcons() { const simpleIcons = {} @@ -40,4 +38,4 @@ function loadSimpleIcons() { return simpleIcons } -module.exports = loadSimpleIcons +export default loadSimpleIcons diff --git a/lib/load-simple-icons.spec.js b/lib/load-simple-icons.spec.js index d32f95bb93c2c..da64c20d34a80 100644 --- a/lib/load-simple-icons.spec.js +++ b/lib/load-simple-icons.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { expect } = require('chai') -const loadSimpleIcons = require('./load-simple-icons') +import { expect } from 'chai' +import loadSimpleIcons from './load-simple-icons.js' describe('loadSimpleIcons', function () { let simpleIcons diff --git a/lib/logos.js b/lib/logos.js index 26000732e50ef..a64f716c3b449 100644 --- a/lib/logos.js +++ b/lib/logos.js @@ -1,15 +1,15 @@ -'use strict' - -const Joi = require('joi') -const { +import Joi from 'joi' +import { toSvgColor, brightness, normalizeColor, -} = require('../badge-maker/lib/color') -const coalesce = require('../core/base-service/coalesce') -const { svg2base64 } = require('./svg-helpers') -const logos = require('./load-logos')() -const simpleIcons = require('./load-simple-icons')() +} from '../badge-maker/lib/color.js' +import coalesce from '../core/base-service/coalesce.js' +import { svg2base64 } from './svg-helpers.js' +import loadLogos from './load-logos.js' +import loadSimpleIcons from './load-simple-icons.js' +const logos = loadLogos() +const simpleIcons = loadSimpleIcons() // for backwards-compatibility with deleted logos const logoAliases = { @@ -131,7 +131,7 @@ function makeLogo(defaultNamedLogo, overrides) { } } -module.exports = { +export { prependPrefix, isDataUrl, decodeDataUrlFromQueryParam, diff --git a/lib/logos.spec.js b/lib/logos.spec.js index 38964fa37b991..0d6eaae40067c 100644 --- a/lib/logos.spec.js +++ b/lib/logos.spec.js @@ -1,14 +1,12 @@ -'use strict' - -const { expect } = require('chai') -const { test, given, forCases } = require('sazerac') -const { +import { expect } from 'chai' +import { test, given, forCases } from 'sazerac' +import { prependPrefix, isDataUrl, prepareNamedLogo, getSimpleIcon, makeLogo, -} = require('./logos') +} from './logos.js' describe('Logo helpers', function () { test(prependPrefix, () => { diff --git a/lib/svg-helpers.js b/lib/svg-helpers.js index 7011c156aed72..040df8a503f8e 100644 --- a/lib/svg-helpers.js +++ b/lib/svg-helpers.js @@ -1,7 +1,5 @@ -'use strict' - function svg2base64(svg) { return `data:image/svg+xml;base64,${Buffer.from(svg).toString('base64')}` } -module.exports = { svg2base64 } +export { svg2base64 } diff --git a/lib/svg-helpers.spec.js b/lib/svg-helpers.spec.js index c36fe39ffe7b4..6434f661f89dd 100644 --- a/lib/svg-helpers.spec.js +++ b/lib/svg-helpers.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const { svg2base64 } = require('./svg-helpers') +import { test, given } from 'sazerac' +import { svg2base64 } from './svg-helpers.js' describe('SVG helpers', function () { test(svg2base64, () => { diff --git a/package-lock.json b/package-lock.json index 3f90cbf780233..5866174a9326f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -140,7 +140,6 @@ "react-select": "^4.3.1", "read-all-stdin-sync": "^1.0.5", "redis-server": "^1.2.2", - "require-hacker": "^3.0.1", "rimraf": "^3.0.2", "sazerac": "^2.0.0", "sinon": "^11.1.1", @@ -5955,30 +5954,6 @@ "core-js": "^3.0.0" } }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/babel-runtime/node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.", - "dev": true, - "hasInstallScript": true - }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, "node_modules/backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", @@ -25432,16 +25407,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-hacker": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/require-hacker/-/require-hacker-3.0.1.tgz", - "integrity": "sha1-CHm+Bn/PBnUwZlvM5MiayBqHBHc=", - "dev": true, - "dependencies": { - "babel-runtime": "^6.6.1", - "colors": "^1.1.2" - } - }, "node_modules/require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -36340,30 +36305,6 @@ "gatsby-legacy-polyfills": "^1.8.0" } }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "dev": true - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - } - } - }, "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", @@ -51647,16 +51588,6 @@ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, - "require-hacker": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/require-hacker/-/require-hacker-3.0.1.tgz", - "integrity": "sha1-CHm+Bn/PBnUwZlvM5MiayBqHBHc=", - "dev": true, - "requires": { - "babel-runtime": "^6.6.1", - "colors": "^1.1.2" - } - }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", diff --git a/package.json b/package.json index 04a09f2b8233c..234168c42ab93 100644 --- a/package.json +++ b/package.json @@ -99,9 +99,9 @@ "check-types:frontend": "tsc --noEmit --project .", "depcheck": "check-node-version --node \">= 12.0\"", "prebuild": "run-s --silent depcheck", - "features": "node scripts/export-supported-features-cli.js > supported-features.json", - "defs": "node scripts/export-service-definitions-cli.js > service-definitions.yml", - "build": "run-s defs features && gatsby build", + "features": "node scripts/export-supported-features-cli.js > ./frontend/supported-features.json", + "defs": "node scripts/export-service-definitions-cli.js > ./frontend/service-definitions.yml", + "build": "run-s defs features && cd frontend && gatsby build && mv public ..", "heroku-postbuild": "run-s --silent build", "start:server:prod": "node server", "now-start": "npm run start:server:prod", @@ -111,7 +111,7 @@ "profile:server": "cross-env NODE_CONFIG_ENV=development node --prof server 8080", "benchmark:badge": "cross-env NODE_CONFIG_ENV=test node scripts/benchmark-performance.js --iterations 10100 | node scripts/capture-timings.js --warmup-iterations 100", "prestart": "run-s --silent depcheck defs features", - "start": "concurrently --names server,frontend \"npm run start:server\" \"cross-env GATSBY_BASE_URL=http://localhost:8080 gatsby develop --port 3000\"", + "start": "concurrently --names server,frontend \"npm run start:server\" \"cd frontend && cross-env GATSBY_BASE_URL=http://localhost:8080 gatsby develop --port 3000\"", "e2e": "start-server-and-test start http://localhost:3000 test:e2e", "e2e-on-build": "cross-env CYPRESS_baseUrl=http://localhost:8080 start-server-and-test start:server:e2e-on-build http://localhost:8080 test:e2e", "badge": "cross-env NODE_CONFIG_ENV=test TRACE_SERVICES=true node scripts/badge-cli.js", @@ -135,7 +135,6 @@ "**/*.tester.js", "**/*.integration.js", "frontend/", - "public/", "build/", "cypress/" ] @@ -228,7 +227,6 @@ "react-select": "^4.3.1", "read-all-stdin-sync": "^1.0.5", "redis-server": "^1.2.2", - "require-hacker": "^3.0.1", "rimraf": "^3.0.2", "sazerac": "^2.0.0", "sinon": "^11.1.1", @@ -244,18 +242,8 @@ "node": "^14.17.1", "npm": ">=7.0.0" }, + "type": "module", "babel": { - "plugins": [ - [ - "inline-react-svg", - { - "svgo": false - } - ] - ], - "presets": [ - "babel-preset-gatsby" - ], "env": { "test": { "plugins": [ diff --git a/scripts/badge-cli.js b/scripts/badge-cli.js index 9e29ad246cf73..bf8e943828199 100644 --- a/scripts/badge-cli.js +++ b/scripts/badge-cli.js @@ -1,11 +1,9 @@ -'use strict' - -const { URL } = require('url') -const config = require('config').util.toObject() -const got = require('got') -const emojic = require('emojic') -const Server = require('../core/server/server') -const trace = require('../core/base-service/trace') +import { fileURLToPath, URL } from 'url' +import config from 'config' +import got from 'got' +import emojic from 'emojic' +import Server from '../core/server/server.js' +import trace from '../core/base-service/trace.js' function normalizeBadgeUrl(url) { // Provide a base URL in order to accept fragments. @@ -18,7 +16,7 @@ function normalizeBadgeUrl(url) { } async function traceBadge(badgeUrl) { - const server = new Server(config) + const server = new Server(config.util.toObject()) await server.start() const body = await got( `${server.baseUrl.replace(/\/$/, '')}${badgeUrl}` @@ -29,7 +27,7 @@ async function traceBadge(badgeUrl) { async function main() { if (process.argv.length < 3) { - console.error(`Usage: node ${__filename} badge-url`) + console.error(`Usage: node ${fileURLToPath(import.meta.url)} badge-url`) process.exit(1) } const [, , url] = process.argv diff --git a/scripts/benchmark-performance.js b/scripts/benchmark-performance.js index 7686138f7ceac..addbdedb81dce 100644 --- a/scripts/benchmark-performance.js +++ b/scripts/benchmark-performance.js @@ -1,12 +1,10 @@ -'use strict' - -const config = require('config').util.toObject() -const got = require('got') -const minimist = require('minimist') -const Server = require('../core/server/server') +import config from 'config' +import got from 'got' +import minimist from 'minimist' +import Server from '../core/server/server.js' async function main() { - const server = new Server(config) + const server = new Server(config.util.toObject()) await server.start() const args = minimist(process.argv) const iterations = parseInt(args.iterations) || 10000 diff --git a/scripts/capture-timings.js b/scripts/capture-timings.js index fee8bf24a27a0..4b60fa89259b6 100644 --- a/scripts/capture-timings.js +++ b/scripts/capture-timings.js @@ -1,7 +1,5 @@ -'use strict' - -const readline = require('readline') -const minimist = require('minimist') +import readline from 'readline' +import minimist from 'minimist' async function captureTimings(warmupIterations) { const rl = readline.createInterface({ diff --git a/scripts/export-service-definitions-cli.js b/scripts/export-service-definitions-cli.js index fc411431398e7..e019bbcd175cb 100644 --- a/scripts/export-service-definitions-cli.js +++ b/scripts/export-service-definitions-cli.js @@ -1,12 +1,11 @@ -'use strict' +import yaml from 'js-yaml' +import { collectDefinitions } from '../core/base-service/loader.js' +;(async () => { + const definitions = await collectDefinitions() -const yaml = require('js-yaml') -const { collectDefinitions } = require('../core/base-service/loader') + // Omit undefined + // https://github.com/nodeca/js-yaml/issues/356#issuecomment-312430599 + const cleaned = JSON.parse(JSON.stringify(definitions)) -const definitions = collectDefinitions() - -// Omit undefined -// https://github.com/nodeca/js-yaml/issues/356#issuecomment-312430599 -const cleaned = JSON.parse(JSON.stringify(definitions)) - -process.stdout.write(yaml.dump(cleaned, { flowLevel: 5 })) + process.stdout.write(yaml.dump(cleaned, { flowLevel: 5 })) +})() diff --git a/scripts/export-supported-features-cli.js b/scripts/export-supported-features-cli.js index a3dfb61486d58..bf84d46ea8d56 100644 --- a/scripts/export-supported-features-cli.js +++ b/scripts/export-supported-features-cli.js @@ -1,9 +1,7 @@ -'use strict' - -const logos = require('../lib/load-logos')() -const simpleIcons = require('../lib/load-simple-icons')() - -const shieldsLogos = Object.keys(logos) +import loadLogos from '../lib/load-logos.js' +import loadSimpleIcons from '../lib/load-simple-icons.js' +const shieldsLogos = Object.keys(loadLogos()) +const simpleIcons = loadSimpleIcons() const simpleIconSet = new Set(Object.keys(simpleIcons)) shieldsLogos.forEach(logo => simpleIconSet.delete(logo)) diff --git a/scripts/redis-connectivity-test.js b/scripts/redis-connectivity-test.js index de161e029a891..5e61fd5cdf5d7 100644 --- a/scripts/redis-connectivity-test.js +++ b/scripts/redis-connectivity-test.js @@ -1,12 +1,11 @@ -'use strict' - -const config = require('config').util.toObject() -console.log(config) -const GithubConstellation = require('../services/github/github-constellation') +import config from 'config' +import GithubConstellation from '../services/github/github-constellation.js' +const objectConfig = config.util.toObject() +console.log(objectConfig) const { persistence } = new GithubConstellation({ - service: config.public.services.github, - private: config.private, + service: objectConfig.public.services.github, + private: objectConfig.private, }) async function main() { diff --git a/server.js b/server.js index 7eb2bbc6f8f13..ea2caef701b03 100644 --- a/server.js +++ b/server.js @@ -1,12 +1,15 @@ -'use strict' /* eslint-disable import/order */ -const fs = require('fs') -const path = require('path') +import fs from 'fs' +import path from 'path' +import { fileURLToPath } from 'url' // Set up Sentry reporting as early in the process as possible. -const config = require('config').util.toObject() -const Sentry = require('@sentry/node') +import configModule from 'config' +import Sentry from '@sentry/node' + +import Server from './core/server/server.js' +const config = configModule.util.toObject() const disabledIntegrations = ['Console', 'Http'] Sentry.init({ dsn: process.env.SENTRY_DSN || config.private.sentry_dsn, @@ -42,22 +45,17 @@ if (fs.existsSync('.env')) { process.exit(1) } -const legacySecretsPath = path.join(__dirname, 'private', 'secret.json') +const legacySecretsPath = path.join( + path.dirname(fileURLToPath(import.meta.url)), + 'private', + 'secret.json' +) if (fs.existsSync(legacySecretsPath)) { console.error( `Legacy secrets file found at ${legacySecretsPath}. It should be deleted and secrets replaced with environment variables or config/local.yml` ) process.exit(1) } +export const server = new Server(config) -const Server = require('./core/server/server') -const server = (module.exports = new Server(config)) - -;(async () => { - try { - await server.start() - } catch (e) { - console.error(e) - process.exit(1) - } -})() +await server.start() diff --git a/services/amo/amo-base.js b/services/amo/amo-base.js index 090221348fd67..d23b35458665d 100644 --- a/services/amo/amo-base.js +++ b/services/amo/amo-base.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' const keywords = ['amo', 'firefox'] @@ -28,4 +26,4 @@ class BaseAmoService extends BaseJsonService { } } -module.exports = { BaseAmoService, keywords } +export { BaseAmoService, keywords } diff --git a/services/amo/amo-downloads.service.js b/services/amo/amo-downloads.service.js index ad3012d4fd61f..89e50dbbdbdd3 100644 --- a/services/amo/amo-downloads.service.js +++ b/services/amo/amo-downloads.service.js @@ -1,9 +1,7 @@ -'use strict' - -const { metric } = require('../text-formatters') -const { downloadCount } = require('../color-formatters') -const { redirector } = require('..') -const { BaseAmoService, keywords } = require('./amo-base') +import { metric } from '../text-formatters.js' +import { downloadCount } from '../color-formatters.js' +import { redirector } from '../index.js' +import { BaseAmoService, keywords } from './amo-base.js' const documentation = `

@@ -54,7 +52,4 @@ const AmoLegacyRedirect = redirector({ dateAdded: new Date('2019-02-23'), }) -module.exports = { - AmoWeeklyDownloads, - AmoLegacyRedirect, -} +export { AmoWeeklyDownloads, AmoLegacyRedirect } diff --git a/services/amo/amo-downloads.tester.js b/services/amo/amo-downloads.tester.js index 9ad91c29056be..b181673ec5373 100644 --- a/services/amo/amo-downloads.tester.js +++ b/services/amo/amo-downloads.tester.js @@ -1,12 +1,10 @@ -'use strict' - -const { ServiceTester } = require('../tester') -const { isMetricOverTimePeriod } = require('../test-validators') -const t = (module.exports = new ServiceTester({ +import { ServiceTester } from '../tester.js' +import { isMetricOverTimePeriod } from '../test-validators.js' +export const t = new ServiceTester({ id: 'AmoDownloads', title: 'AmoDownloads', pathPrefix: '/amo', -})) +}) t.create('Weekly Downloads') .get('/dw/duckduckgo-for-firefox.json') diff --git a/services/amo/amo-rating.service.js b/services/amo/amo-rating.service.js index 9943176473f7e..1f26f9127cf0d 100644 --- a/services/amo/amo-rating.service.js +++ b/services/amo/amo-rating.service.js @@ -1,10 +1,8 @@ -'use strict' +import { starRating } from '../text-formatters.js' +import { floorCount as floorCountColor } from '../color-formatters.js' +import { BaseAmoService, keywords } from './amo-base.js' -const { starRating } = require('../text-formatters') -const { floorCount: floorCountColor } = require('../color-formatters') -const { BaseAmoService, keywords } = require('./amo-base') - -module.exports = class AmoRating extends BaseAmoService { +export default class AmoRating extends BaseAmoService { static category = 'rating' static route = { base: 'amo', pattern: ':format(stars|rating)/:addonId' } diff --git a/services/amo/amo-rating.tester.js b/services/amo/amo-rating.tester.js index f17a90656f67e..9843273741585 100644 --- a/services/amo/amo-rating.tester.js +++ b/services/amo/amo-rating.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { isStarRating } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { isStarRating } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Rating') .get('/rating/IndieGala-Helper.json') diff --git a/services/amo/amo-users.service.js b/services/amo/amo-users.service.js index 91a774279b16b..0d42ee8731b35 100644 --- a/services/amo/amo-users.service.js +++ b/services/amo/amo-users.service.js @@ -1,9 +1,7 @@ -'use strict' +import { metric } from '../text-formatters.js' +import { BaseAmoService, keywords } from './amo-base.js' -const { metric } = require('../text-formatters') -const { BaseAmoService, keywords } = require('./amo-base') - -module.exports = class AmoUsers extends BaseAmoService { +export default class AmoUsers extends BaseAmoService { static category = 'downloads' static route = { base: 'amo/users', pattern: ':addonId' } diff --git a/services/amo/amo-users.tester.js b/services/amo/amo-users.tester.js index a0f168ad0fa37..5355be2ce1c25 100644 --- a/services/amo/amo-users.tester.js +++ b/services/amo/amo-users.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Users') .get('/IndieGala-Helper.json') diff --git a/services/amo/amo-version.service.js b/services/amo/amo-version.service.js index 33bf27b85c5c8..96394bba7fc44 100644 --- a/services/amo/amo-version.service.js +++ b/services/amo/amo-version.service.js @@ -1,9 +1,7 @@ -'use strict' +import { renderVersionBadge } from '../version.js' +import { BaseAmoService, keywords } from './amo-base.js' -const { renderVersionBadge } = require('../version') -const { BaseAmoService, keywords } = require('./amo-base') - -module.exports = class AmoVersion extends BaseAmoService { +export default class AmoVersion extends BaseAmoService { static category = 'version' static route = { base: 'amo/v', pattern: ':addonId' } diff --git a/services/amo/amo-version.tester.js b/services/amo/amo-version.tester.js index 9f63c1b0b0e64..e900a589a6484 100644 --- a/services/amo/amo-version.tester.js +++ b/services/amo/amo-version.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isVPlusDottedVersionAtLeastOne } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isVPlusDottedVersionAtLeastOne } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Version').get('/IndieGala-Helper.json').expectBadge({ label: 'mozilla add-on', diff --git a/services/ansible/ansible-quality.service.js b/services/ansible/ansible-quality.service.js index 43da34f60d477..6af7ae16ca588 100644 --- a/services/ansible/ansible-quality.service.js +++ b/services/ansible/ansible-quality.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { floorCount } = require('../color-formatters') -const { BaseJsonService, InvalidResponse } = require('..') +import Joi from 'joi' +import { floorCount } from '../color-formatters.js' +import { BaseJsonService, InvalidResponse } from '../index.js' const ansibleContentSchema = Joi.object({ quality_score: Joi.number().allow(null).required(), @@ -18,9 +16,7 @@ class AnsibleGalaxyContent extends BaseJsonService { } } -module.exports = class AnsibleGalaxyContentQualityScore extends ( - AnsibleGalaxyContent -) { +export default class AnsibleGalaxyContentQualityScore extends AnsibleGalaxyContent { static category = 'analysis' static route = { base: 'ansible/quality', pattern: ':projectId' } diff --git a/services/ansible/ansible-quality.tester.js b/services/ansible/ansible-quality.tester.js index f9dd14a4d611b..4ac15bff0c845 100644 --- a/services/ansible/ansible-quality.tester.js +++ b/services/ansible/ansible-quality.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { nonNegativeInteger } = require('../validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { nonNegativeInteger } from '../validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('quality score (valid)') .get('/432.json') diff --git a/services/ansible/ansible-role.service.js b/services/ansible/ansible-role.service.js index c447859782cb6..aa1cdcb7731c9 100644 --- a/services/ansible/ansible-role.service.js +++ b/services/ansible/ansible-role.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { downloadCount } = require('../color-formatters') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { downloadCount } from '../color-formatters.js' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' const ansibleRoleSchema = Joi.object({ download_count: nonNegativeInteger, @@ -80,7 +78,4 @@ class AnsibleGalaxyRoleName extends AnsibleGalaxyRole { } } -module.exports = { - AnsibleGalaxyRoleDownloads, - AnsibleGalaxyRoleName, -} +export { AnsibleGalaxyRoleDownloads, AnsibleGalaxyRoleName } diff --git a/services/ansible/ansible-role.tester.js b/services/ansible/ansible-role.tester.js index ac1a3980d4585..8679789fa0a83 100644 --- a/services/ansible/ansible-role.tester.js +++ b/services/ansible/ansible-role.tester.js @@ -1,13 +1,10 @@ -'use strict' - -const { ServiceTester } = require('../tester') -const { isMetric } = require('../test-validators') - -const t = (module.exports = new ServiceTester({ +import { isMetric } from '../test-validators.js' +import { ServiceTester } from '../tester.js' +export const t = new ServiceTester({ id: 'AnsibleRole', title: 'AnsibleRole', pathPrefix: '/ansible/role', -})) +}) t.create('role name (valid)') .get('/14542.json') diff --git a/services/apm/apm.service.js b/services/apm/apm.service.js index 9b52cfe7ed2d7..681bd0d46504b 100644 --- a/services/apm/apm.service.js +++ b/services/apm/apm.service.js @@ -1,11 +1,9 @@ -'use strict' - -const Joi = require('joi') -const { renderLicenseBadge } = require('../licenses') -const { renderVersionBadge } = require('../version') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService, InvalidResponse } = require('..') +import Joi from 'joi' +import { renderLicenseBadge } from '../licenses.js' +import { renderVersionBadge } from '../version.js' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService, InvalidResponse } from '../index.js' const keywords = ['atom'] @@ -116,8 +114,4 @@ class APMLicense extends BaseAPMService { } } -module.exports = { - APMDownloads, - APMVersion, - APMLicense, -} +export { APMDownloads, APMVersion, APMLicense } diff --git a/services/apm/apm.tester.js b/services/apm/apm.tester.js index c7553a491e750..ed6f7c861e54a 100644 --- a/services/apm/apm.tester.js +++ b/services/apm/apm.tester.js @@ -1,13 +1,11 @@ -'use strict' +import { ServiceTester } from '../tester.js' +import { invalidJSON } from '../response-fixtures.js' +import { isMetric, isVPlusTripleDottedVersion } from '../test-validators.js' -const { ServiceTester } = require('../tester') -const { invalidJSON } = require('../response-fixtures') -const { isMetric, isVPlusTripleDottedVersion } = require('../test-validators') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'apm', title: 'Atom Package Manager', -})) +}) t.create('Downloads') .get('/dm/vim-mode.json') diff --git a/services/appveyor/appveyor-base.js b/services/appveyor/appveyor-base.js index 015612c43c3c0..923b718466cbf 100644 --- a/services/appveyor/appveyor-base.js +++ b/services/appveyor/appveyor-base.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { isBuildStatus } = require('../build-status') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { isBuildStatus } from '../build-status.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ build: Joi.object({ @@ -20,7 +18,7 @@ const schema = Joi.object({ }), }).required() -module.exports = class AppVeyorBase extends BaseJsonService { +export default class AppVeyorBase extends BaseJsonService { static category = 'build' async fetch({ user, repo, branch }) { diff --git a/services/appveyor/appveyor-build-redirect.service.js b/services/appveyor/appveyor-build-redirect.service.js index df723459997c0..61e43b31b2ccb 100644 --- a/services/appveyor/appveyor-build-redirect.service.js +++ b/services/appveyor/appveyor-build-redirect.service.js @@ -1,8 +1,6 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = [ +export default [ redirector({ category: 'build', route: { diff --git a/services/appveyor/appveyor-build-redirect.tester.js b/services/appveyor/appveyor-build-redirect.tester.js index 625a1f1a169e8..40ad8049d48c8 100644 --- a/services/appveyor/appveyor-build-redirect.tester.js +++ b/services/appveyor/appveyor-build-redirect.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'AppveyorBuildRedirect', title: 'AppveyorBuildRedirect', pathPrefix: '/appveyor/ci', -})) +}) t.create('Appveyor CI') .get('/gruntjs/grunt', { diff --git a/services/appveyor/appveyor-build.service.js b/services/appveyor/appveyor-build.service.js index 352a9e7ec836e..29cb395835394 100644 --- a/services/appveyor/appveyor-build.service.js +++ b/services/appveyor/appveyor-build.service.js @@ -1,9 +1,7 @@ -'use strict' +import { renderBuildStatusBadge } from '../build-status.js' +import AppVeyorBase from './appveyor-base.js' -const { renderBuildStatusBadge } = require('../build-status') -const AppVeyorBase = require('./appveyor-base') - -module.exports = class AppVeyorBuild extends AppVeyorBase { +export default class AppVeyorBuild extends AppVeyorBase { static route = this.buildRoute('appveyor/build') static examples = [ diff --git a/services/appveyor/appveyor-build.tester.js b/services/appveyor/appveyor-build.tester.js index 9858a91f17385..b1141067e49b0 100644 --- a/services/appveyor/appveyor-build.tester.js +++ b/services/appveyor/appveyor-build.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isBuildStatus } = require('../build-status') -const t = (module.exports = require('../tester').createServiceTester()) +import { isBuildStatus } from '../build-status.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('CI status') .timeout(10000) diff --git a/services/appveyor/appveyor-job-build.service.js b/services/appveyor/appveyor-job-build.service.js index dc389cbde67f4..fc856aa7f25a2 100644 --- a/services/appveyor/appveyor-job-build.service.js +++ b/services/appveyor/appveyor-job-build.service.js @@ -1,10 +1,8 @@ -'use strict' +import { renderBuildStatusBadge } from '../build-status.js' +import { NotFound } from '../index.js' +import AppVeyorBase from './appveyor-base.js' -const { renderBuildStatusBadge } = require('../build-status') -const { NotFound } = require('..') -const AppVeyorBase = require('./appveyor-base') - -module.exports = class AppVeyorJobBuild extends AppVeyorBase { +export default class AppVeyorJobBuild extends AppVeyorBase { static route = { base: 'appveyor/job/build', pattern: ':user/:repo/:job/:branch*', diff --git a/services/appveyor/appveyor-job-build.spec.js b/services/appveyor/appveyor-job-build.spec.js index 5d539a72cd340..4e83a26fd427d 100644 --- a/services/appveyor/appveyor-job-build.spec.js +++ b/services/appveyor/appveyor-job-build.spec.js @@ -1,9 +1,7 @@ -'use strict' - -const { expect } = require('chai') -const { test, given } = require('sazerac') -const { NotFound } = require('..') -const AppveyorJobBuild = require('./appveyor-job-build.service') +import { expect } from 'chai' +import { test, given } from 'sazerac' +import { NotFound } from '../index.js' +import AppveyorJobBuild from './appveyor-job-build.service.js' describe('AppveyorJobBuild', function () { test(AppveyorJobBuild.prototype.transform, () => { diff --git a/services/appveyor/appveyor-job-build.tester.js b/services/appveyor/appveyor-job-build.tester.js index 81cccb39f252a..a31306e30ec00 100644 --- a/services/appveyor/appveyor-job-build.tester.js +++ b/services/appveyor/appveyor-job-build.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isBuildStatus } = require('../build-status') -const t = (module.exports = require('../tester').createServiceTester()) +import { isBuildStatus } from '../build-status.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Job CI status') .timeout(10000) diff --git a/services/appveyor/appveyor-tests.service.js b/services/appveyor/appveyor-tests.service.js index c3efa4e636d2e..465130445eb49 100644 --- a/services/appveyor/appveyor-tests.service.js +++ b/services/appveyor/appveyor-tests.service.js @@ -1,10 +1,8 @@ -'use strict' - -const { +import { testResultQueryParamSchema, renderTestResultBadge, -} = require('../test-results') -const AppVeyorBase = require('./appveyor-base') +} from '../test-results.js' +import AppVeyorBase from './appveyor-base.js' const documentation = `

@@ -36,7 +34,7 @@ const commonPreviewProps = { isCompact: false, } -module.exports = class AppVeyorTests extends AppVeyorBase { +export default class AppVeyorTests extends AppVeyorBase { static route = { ...this.buildRoute('appveyor/tests'), queryParamSchema: testResultQueryParamSchema, diff --git a/services/appveyor/appveyor-tests.tester.js b/services/appveyor/appveyor-tests.tester.js index df81a2de2e521..102f532d29958 100644 --- a/services/appveyor/appveyor-tests.tester.js +++ b/services/appveyor/appveyor-tests.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const queryString = require('querystring') -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import queryString from 'querystring' +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isAppveyorTestTotals = Joi.string().regex( /^[0-9]+ passed(, [0-9]+ failed)?(, [0-9]+ skipped)?$/ diff --git a/services/archlinux/archlinux.service.js b/services/archlinux/archlinux.service.js index f06a5003a8fde..c3ee192b13fdc 100644 --- a/services/archlinux/archlinux.service.js +++ b/services/archlinux/archlinux.service.js @@ -1,14 +1,12 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ pkgver: Joi.string().required(), }).required() -module.exports = class ArchLinux extends BaseJsonService { +export default class ArchLinux extends BaseJsonService { static category = 'version' static route = { base: 'archlinux/v', diff --git a/services/archlinux/archlinux.tester.js b/services/archlinux/archlinux.tester.js index 379e8133c6f8d..d92b65464b2cd 100644 --- a/services/archlinux/archlinux.tester.js +++ b/services/archlinux/archlinux.tester.js @@ -1,9 +1,6 @@ -'use strict' - -const { - isVPlusDottedVersionNClausesWithOptionalSuffixAndEpoch, -} = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isVPlusDottedVersionNClausesWithOptionalSuffixAndEpoch } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Arch Linux package (valid)') .get('/core/x86_64/pacman.json') diff --git a/services/aur/aur.service.js b/services/aur/aur.service.js index dbab2748a04cb..901e8e0bf9915 100644 --- a/services/aur/aur.service.js +++ b/services/aur/aur.service.js @@ -1,13 +1,11 @@ -'use strict' - -const Joi = require('joi') -const { floorCount: floorCountColor } = require('../color-formatters') -const { addv, metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService, NotFound } = require('..') -const { formatDate } = require('../text-formatters') -const { age: ageColor } = require('../color-formatters') -const { InvalidResponse } = require('..') +import Joi from 'joi' +import { + floorCount as floorCountColor, + age as ageColor, +} from '../color-formatters.js' +import { addv, metric, formatDate } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService, NotFound, InvalidResponse } from '../index.js' const aurSchema = Joi.object({ resultcount: nonNegativeInteger, @@ -198,10 +196,4 @@ class AurLastModified extends BaseAurService { } } -module.exports = { - AurLicense, - AurVersion, - AurVotes, - AurMaintainer, - AurLastModified, -} +export { AurLicense, AurVersion, AurVotes, AurMaintainer, AurLastModified } diff --git a/services/aur/aur.spec.js b/services/aur/aur.spec.js index 93fd0a8a70bf8..0bdc44bec721b 100644 --- a/services/aur/aur.spec.js +++ b/services/aur/aur.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const { AurVersion } = require('./aur.service') +import { test, given } from 'sazerac' +import { AurVersion } from './aur.service.js' describe('AurVersion', function () { test(AurVersion.render, () => { diff --git a/services/aur/aur.tester.js b/services/aur/aur.tester.js index 51b176a4cca06..c6026d4f351af 100644 --- a/services/aur/aur.tester.js +++ b/services/aur/aur.tester.js @@ -1,16 +1,14 @@ -'use strict' - -const { ServiceTester } = require('../tester') -const { +import { ServiceTester } from '../tester.js' +import { isVPlusDottedVersionNClausesWithOptionalSuffix, isMetric, -} = require('../test-validators') -const { isFormattedDate } = require('../test-validators') + isFormattedDate, +} from '../test-validators.js' -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'aur', title: 'Arch Linux AUR', -})) +}) // version tests diff --git a/services/azure-devops/azure-devops-base.js b/services/azure-devops/azure-devops-base.js index 37d0702bd9bd9..184530bde7c5b 100644 --- a/services/azure-devops/azure-devops-base.js +++ b/services/azure-devops/azure-devops-base.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService, NotFound } = require('..') +import Joi from 'joi' +import { BaseJsonService, NotFound } from '../index.js' const latestBuildSchema = Joi.object({ count: Joi.number().required(), @@ -14,7 +12,7 @@ const latestBuildSchema = Joi.object({ .required(), }).required() -module.exports = class AzureDevOpsBase extends BaseJsonService { +export default class AzureDevOpsBase extends BaseJsonService { static auth = { passKey: 'azure_devops_token', authorizedOrigins: ['https://dev.azure.com'], diff --git a/services/azure-devops/azure-devops-build.service.js b/services/azure-devops/azure-devops-build.service.js index 5159c86408231..8485fa49fe502 100644 --- a/services/azure-devops/azure-devops-build.service.js +++ b/services/azure-devops/azure-devops-build.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { renderBuildStatusBadge } = require('../build-status') -const { BaseSvgScrapingService, NotFound } = require('..') -const { keywords, fetch } = require('./azure-devops-helpers') +import Joi from 'joi' +import { renderBuildStatusBadge } from '../build-status.js' +import { BaseSvgScrapingService, NotFound } from '../index.js' +import { keywords, fetch } from './azure-devops-helpers.js' const queryParamSchema = Joi.object({ stage: Joi.string(), @@ -33,7 +31,7 @@ const documentation = ` alt="PROJECT_ID is in the id property of the API response." /> ` -module.exports = class AzureDevOpsBuild extends BaseSvgScrapingService { +export default class AzureDevOpsBuild extends BaseSvgScrapingService { static category = 'build' static route = { diff --git a/services/azure-devops/azure-devops-build.tester.js b/services/azure-devops/azure-devops-build.tester.js index 871d2a89b4d5d..73027411170a8 100644 --- a/services/azure-devops/azure-devops-build.tester.js +++ b/services/azure-devops/azure-devops-build.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isBuildStatus } = require('../build-status') -const t = (module.exports = require('../tester').createServiceTester()) +import { isBuildStatus } from '../build-status.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() // https://dev.azure.com/totodem/Shields.io is a public Azure DevOps project // solely created for Shields.io testing. diff --git a/services/azure-devops/azure-devops-coverage.service.js b/services/azure-devops/azure-devops-coverage.service.js index f2c28adeae9e6..4234b36f48d6a 100644 --- a/services/azure-devops/azure-devops-coverage.service.js +++ b/services/azure-devops/azure-devops-coverage.service.js @@ -1,11 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { - coveragePercentage: coveragePercentageColor, -} = require('../color-formatters') -const AzureDevOpsBase = require('./azure-devops-base') -const { keywords } = require('./azure-devops-helpers') +import Joi from 'joi' +import { coveragePercentage as coveragePercentageColor } from '../color-formatters.js' +import AzureDevOpsBase from './azure-devops-base.js' +import { keywords } from './azure-devops-helpers.js' const documentation = `

@@ -46,7 +42,7 @@ const buildCodeCoverageSchema = Joi.object({ .required(), }).required() -module.exports = class AzureDevOpsCoverage extends AzureDevOpsBase { +export default class AzureDevOpsCoverage extends AzureDevOpsBase { static category = 'coverage' static route = { diff --git a/services/azure-devops/azure-devops-coverage.tester.js b/services/azure-devops/azure-devops-coverage.tester.js index 3de650324fc17..2177d9077c8bf 100644 --- a/services/azure-devops/azure-devops-coverage.tester.js +++ b/services/azure-devops/azure-devops-coverage.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isIntegerPercentage } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isIntegerPercentage } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const org = 'swellaby' const project = 'opensource' diff --git a/services/azure-devops/azure-devops-helpers.js b/services/azure-devops/azure-devops-helpers.js index 9b841bb0772ee..67b457352a303 100644 --- a/services/azure-devops/azure-devops-helpers.js +++ b/services/azure-devops/azure-devops-helpers.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus } = require('../build-status') +import Joi from 'joi' +import { isBuildStatus } from '../build-status.js' const keywords = ['vso', 'vsts', 'azure-devops'] @@ -28,4 +26,4 @@ async function fetch(serviceInstance, { url, qs = {}, errorMessages }) { return { status } } -module.exports = { keywords, fetch } +export { keywords, fetch } diff --git a/services/azure-devops/azure-devops-release.service.js b/services/azure-devops/azure-devops-release.service.js index eccbfc90c5d15..96393ad4b0d94 100644 --- a/services/azure-devops/azure-devops-release.service.js +++ b/services/azure-devops/azure-devops-release.service.js @@ -1,8 +1,6 @@ -'use strict' - -const { renderBuildStatusBadge } = require('../build-status') -const { BaseSvgScrapingService } = require('..') -const { keywords, fetch } = require('./azure-devops-helpers') +import { renderBuildStatusBadge } from '../build-status.js' +import { BaseSvgScrapingService } from '../index.js' +import { keywords, fetch } from './azure-devops-helpers.js' const documentation = `

@@ -22,7 +20,7 @@ const documentation = `

` -module.exports = class AzureDevOpsRelease extends BaseSvgScrapingService { +export default class AzureDevOpsRelease extends BaseSvgScrapingService { static category = 'build' static route = { diff --git a/services/azure-devops/azure-devops-release.tester.js b/services/azure-devops/azure-devops-release.tester.js index c161bd618b834..7ffa1d94e3275 100644 --- a/services/azure-devops/azure-devops-release.tester.js +++ b/services/azure-devops/azure-devops-release.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isBuildStatus } = require('../build-status') -const t = (module.exports = require('../tester').createServiceTester()) +import { isBuildStatus } from '../build-status.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() // https://dev.azure.com/totodem/Shields.io is a public Azure DevOps project // solely created for Shields.io testing. diff --git a/services/azure-devops/azure-devops-tests.service.js b/services/azure-devops/azure-devops-tests.service.js index 5b373a3fe7e1c..a2939b95aebfc 100644 --- a/services/azure-devops/azure-devops-tests.service.js +++ b/services/azure-devops/azure-devops-tests.service.js @@ -1,11 +1,9 @@ -'use strict' - -const Joi = require('joi') -const { +import Joi from 'joi' +import { testResultQueryParamSchema, renderTestResultBadge, -} = require('../test-results') -const AzureDevOpsBase = require('./azure-devops-base') +} from '../test-results.js' +import AzureDevOpsBase from './azure-devops-base.js' const commonAttrs = { keywords: ['vso', 'vsts', 'azure-devops'], @@ -61,7 +59,7 @@ const buildTestResultSummarySchema = Joi.object({ }).required(), }).required() -module.exports = class AzureDevOpsTests extends AzureDevOpsBase { +export default class AzureDevOpsTests extends AzureDevOpsBase { static category = 'build' static route = { diff --git a/services/azure-devops/azure-devops-tests.tester.js b/services/azure-devops/azure-devops-tests.tester.js index eb3425b89c3b4..d708183ac8fa5 100644 --- a/services/azure-devops/azure-devops-tests.tester.js +++ b/services/azure-devops/azure-devops-tests.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const org = 'azuredevops-powershell' const project = 'azuredevops-powershell' diff --git a/services/azure-devops/vso-redirect.service.js b/services/azure-devops/vso-redirect.service.js index a8b5d8435f7f9..e67c703dd8eac 100644 --- a/services/azure-devops/vso-redirect.service.js +++ b/services/azure-devops/vso-redirect.service.js @@ -1,31 +1,27 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = [ - redirector({ - category: 'build', - route: { - base: 'vso/build', - pattern: ':organization/:projectId/:definitionId/:branch*', - }, - transformPath: ({ organization, projectId, definitionId, branch }) => { - let path = `/azure-devops/build/${organization}/${projectId}/${definitionId}` - if (branch) { - path += `/${branch}` - } - return path - }, - dateAdded: new Date('2019-02-08'), - }), - redirector({ - category: 'build', - route: { - base: 'vso/release', - pattern: ':organization/:projectId/:definitionId/:environmentId', - }, - transformPath: ({ organization, projectId, definitionId, environmentId }) => - `/azure-devops/release/${organization}/${projectId}/${definitionId}/${environmentId}`, - dateAdded: new Date('2019-02-08'), - }), -] +export const VsoBuildRedirector = redirector({ + category: 'build', + route: { + base: 'vso/build', + pattern: ':organization/:projectId/:definitionId/:branch*', + }, + transformPath: ({ organization, projectId, definitionId, branch }) => { + let path = `/azure-devops/build/${organization}/${projectId}/${definitionId}` + if (branch) { + path += `/${branch}` + } + return path + }, + dateAdded: new Date('2019-02-08'), +}) +export const VsoReleaseRedirector = redirector({ + category: 'build', + route: { + base: 'vso/release', + pattern: ':organization/:projectId/:definitionId/:environmentId', + }, + transformPath: ({ organization, projectId, definitionId, environmentId }) => + `/azure-devops/release/${organization}/${projectId}/${definitionId}/${environmentId}`, + dateAdded: new Date('2019-02-08'), +}) diff --git a/services/azure-devops/vso-redirect.tester.js b/services/azure-devops/vso-redirect.tester.js index 7cd544b7d9421..d36f81ca2779e 100644 --- a/services/azure-devops/vso-redirect.tester.js +++ b/services/azure-devops/vso-redirect.tester.js @@ -1,11 +1,9 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'vso', title: 'VSO', -})) +}) t.create('Build: default branch') .get('/build/totodem/8cf3ec0e-d0c2-4fcd-8206-ad204f254a96/2.svg') diff --git a/services/beerpay/beerpay.service.js b/services/beerpay/beerpay.service.js index 287eb9296a1de..19b8620e24efa 100644 --- a/services/beerpay/beerpay.service.js +++ b/services/beerpay/beerpay.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ category: 'build', route: { base: 'beerpay', diff --git a/services/beerpay/beerpay.tester.js b/services/beerpay/beerpay.tester.js index 3901ec29def3d..a4360440e1f21 100644 --- a/services/beerpay/beerpay.tester.js +++ b/services/beerpay/beerpay.tester.js @@ -1,10 +1,9 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'beerpay', title: 'Beerpay', -})) +}) t.create('no longer available (previously beerpay)') .get('/hashdog/scrapfy-chrome-extension.json') diff --git a/services/bintray/bintray.service.js b/services/bintray/bintray.service.js index fd19d8e82b39b..f181fb2c25354 100644 --- a/services/bintray/bintray.service.js +++ b/services/bintray/bintray.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = [ +export default [ deprecatedService({ category: 'downloads', route: { diff --git a/services/bintray/bintray.tester.js b/services/bintray/bintray.tester.js index a16e2413c8ae4..cc55f5bdba1ca 100644 --- a/services/bintray/bintray.tester.js +++ b/services/bintray/bintray.tester.js @@ -1,11 +1,9 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'bintray', title: 'Bintray', -})) +}) t.create('no longer available (previously downloads)') .get('/dt/asciidoctor/maven/asciidoctorj.json') diff --git a/services/bit/bit-components.service.js b/services/bit/bit-components.service.js index 3b852d46e6263..e2236639034b7 100644 --- a/services/bit/bit-components.service.js +++ b/services/bit/bit-components.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { downloadCount } = require('../color-formatters') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { downloadCount } from '../color-formatters.js' +import { BaseJsonService } from '../index.js' const collectionSchema = Joi.object({ payload: Joi.object({ @@ -12,7 +10,7 @@ const collectionSchema = Joi.object({ }).required(), }).required() -module.exports = class BitComponents extends BaseJsonService { +export default class BitComponents extends BaseJsonService { static category = 'other' static route = { base: 'bit/collection/total-components', diff --git a/services/bit/bit-components.tester.js b/services/bit/bit-components.tester.js index 9a51426dd12cb..2f6dee749d2f7 100644 --- a/services/bit/bit-components.tester.js +++ b/services/bit/bit-components.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isMetric } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { isMetric } from '../test-validators.js' +export const t = await createServiceTester() t.create('collection (valid)').get('/ramda/ramda.json').expectBadge({ label: 'components', diff --git a/services/bitbucket/bitbucket-issues.service.js b/services/bitbucket/bitbucket-issues.service.js index f2399d66cfbb4..9bcf5a5b92fbd 100644 --- a/services/bitbucket/bitbucket-issues.service.js +++ b/services/bitbucket/bitbucket-issues.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' const bitbucketIssuesSchema = Joi.object({ size: nonNegativeInteger, @@ -59,4 +57,5 @@ function issueClassGenerator(raw) { } } -module.exports = [true, false].map(issueClassGenerator) +export const BitbucketRawIssues = issueClassGenerator(true) +export const BitbucketNonRawIssues = issueClassGenerator(false) diff --git a/services/bitbucket/bitbucket-issues.tester.js b/services/bitbucket/bitbucket-issues.tester.js index 4f05579b3577a..4bdb300b52e05 100644 --- a/services/bitbucket/bitbucket-issues.tester.js +++ b/services/bitbucket/bitbucket-issues.tester.js @@ -1,13 +1,11 @@ -'use strict' +import { ServiceTester } from '../tester.js' +import { isMetric, isMetricOpenIssues } from '../test-validators.js' -const { ServiceTester } = require('../tester') -const { isMetric, isMetricOpenIssues } = require('../test-validators') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'BitbucketIssues', title: 'Bitbucket Issues', pathPrefix: '/bitbucket', -})) +}) t.create('issues-raw (valid)') .get('/issues-raw/atlassian/python-bitbucket.json') diff --git a/services/bitbucket/bitbucket-pipelines.service.js b/services/bitbucket/bitbucket-pipelines.service.js index 347e1d97cbf07..dc28820bcdb1a 100644 --- a/services/bitbucket/bitbucket-pipelines.service.js +++ b/services/bitbucket/bitbucket-pipelines.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { renderBuildStatusBadge } = require('../build-status') -const { BaseJsonService, redirector } = require('..') +import Joi from 'joi' +import { renderBuildStatusBadge } from '../build-status.js' +import { BaseJsonService, redirector } from '../index.js' const bitbucketPipelinesSchema = Joi.object({ values: Joi.array() @@ -96,7 +94,4 @@ const BitbucketPipelinesRedirector = redirector({ dateAdded: new Date('2020-07-12'), }) -module.exports = { - BitbucketPipelines, - BitbucketPipelinesRedirector, -} +export { BitbucketPipelines, BitbucketPipelinesRedirector } diff --git a/services/bitbucket/bitbucket-pipelines.tester.js b/services/bitbucket/bitbucket-pipelines.tester.js index 2eeec523f91ad..1fe7293a8a7cb 100644 --- a/services/bitbucket/bitbucket-pipelines.tester.js +++ b/services/bitbucket/bitbucket-pipelines.tester.js @@ -1,12 +1,10 @@ -'use strict' - -const { isBuildStatus } = require('../build-status') -const { ServiceTester } = require('../tester') -const t = (module.exports = new ServiceTester({ +import { isBuildStatus } from '../build-status.js' +import { ServiceTester } from '../tester.js' +export const t = new ServiceTester({ id: 'BitbucketPipelines', title: 'Bitbucket Pipelines', pathPrefix: '/bitbucket/pipelines', -})) +}) function bitbucketApiResponse(status) { return JSON.stringify({ diff --git a/services/bitbucket/bitbucket-pull-request.service.js b/services/bitbucket/bitbucket-pull-request.service.js index 3ecc002899733..add3ad820f96b 100644 --- a/services/bitbucket/bitbucket-pull-request.service.js +++ b/services/bitbucket/bitbucket-pull-request.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { AuthHelper } = require('../../core/base-service/auth-helper') -const { metric } = require('../text-formatters') -const { nonNegativeInteger, optionalUrl } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { AuthHelper } from '../../core/base-service/auth-helper.js' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger, optionalUrl } from '../validators.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ size: nonNegativeInteger, @@ -128,4 +126,5 @@ function pullRequestClassGenerator(raw) { } } -module.exports = [true, false].map(pullRequestClassGenerator) +export const BitbucketRawPullRequests = pullRequestClassGenerator(true) +export const BitbucketNonRawPullRequests = pullRequestClassGenerator(false) diff --git a/services/bitbucket/bitbucket-pull-request.spec.js b/services/bitbucket/bitbucket-pull-request.spec.js index 39aefaea118af..565a2c1634777 100644 --- a/services/bitbucket/bitbucket-pull-request.spec.js +++ b/services/bitbucket/bitbucket-pull-request.spec.js @@ -1,9 +1,7 @@ -'use strict' - -const { expect } = require('chai') -const nock = require('nock') -const { cleanUpNockAfterEach, defaultContext } = require('../test-helpers') -const [BitbucketPullRequest] = require('./bitbucket-pull-request.service') +import { expect } from 'chai' +import nock from 'nock' +import { cleanUpNockAfterEach, defaultContext } from '../test-helpers.js' +import { BitbucketRawPullRequests } from './bitbucket-pull-request.service.js' describe('BitbucketPullRequest', function () { cleanUpNockAfterEach() @@ -18,7 +16,7 @@ describe('BitbucketPullRequest', function () { .reply(200, { size: 42 }) expect( - await BitbucketPullRequest.invoke( + await BitbucketRawPullRequests.invoke( defaultContext, { public: { @@ -47,7 +45,7 @@ describe('BitbucketPullRequest', function () { .reply(200, { size: 42 }) expect( - await BitbucketPullRequest.invoke( + await BitbucketRawPullRequests.invoke( defaultContext, { public: { diff --git a/services/bitbucket/bitbucket-pull-request.tester.js b/services/bitbucket/bitbucket-pull-request.tester.js index 9e9f48ba85f3c..c9ab932578836 100644 --- a/services/bitbucket/bitbucket-pull-request.tester.js +++ b/services/bitbucket/bitbucket-pull-request.tester.js @@ -1,13 +1,11 @@ -'use strict' +import { ServiceTester } from '../tester.js' +import { isMetric, isMetricOpenIssues } from '../test-validators.js' -const { ServiceTester } = require('../tester') -const { isMetric, isMetricOpenIssues } = require('../test-validators') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'BitbucketPullRequest', title: 'Bitbucket Pull Request', pathPrefix: '/bitbucket', -})) +}) t.create('pr-raw (valid)') .get('/pr-raw/atlassian/python-bitbucket.json') diff --git a/services/bithound/bithound.service.js b/services/bithound/bithound.service.js index 0a36660e956a6..1898317b547af 100644 --- a/services/bithound/bithound.service.js +++ b/services/bithound/bithound.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ category: 'dependencies', route: { base: 'bithound', diff --git a/services/bithound/bithound.tester.js b/services/bithound/bithound.tester.js index f4c70181654b1..03bbf3c049bcd 100644 --- a/services/bithound/bithound.tester.js +++ b/services/bithound/bithound.tester.js @@ -1,11 +1,9 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'bithound', title: 'BitHound', -})) +}) t.create('no longer available (code)') .get('/code/github/rexxars/sse-channel.json') diff --git a/services/bitrise/bitrise.service.js b/services/bitrise/bitrise.service.js index c3a27f68388c7..ee76f55972efb 100644 --- a/services/bitrise/bitrise.service.js +++ b/services/bitrise/bitrise.service.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' // https://devcenter.bitrise.io/api/app-status-badge/ const schema = Joi.object({ @@ -12,7 +10,7 @@ const queryParamSchema = Joi.object({ token: Joi.string().required(), }).required() -module.exports = class Bitrise extends BaseJsonService { +export default class Bitrise extends BaseJsonService { static category = 'build' static route = { base: 'bitrise', diff --git a/services/bitrise/bitrise.tester.js b/services/bitrise/bitrise.tester.js index b31ba9f78ea99..26c2b238ad96e 100644 --- a/services/bitrise/bitrise.tester.js +++ b/services/bitrise/bitrise.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isBuildStatus } = require('../build-status') -const t = (module.exports = require('../tester').createServiceTester()) +import { isBuildStatus } from '../build-status.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('deploy status') .get('/cde737473028420d.json?token=GCIdEzacE4GW32jLVrZb7A') diff --git a/services/bountysource/bountysource.service.js b/services/bountysource/bountysource.service.js index 9834fdd8e66eb..1bb4b81aff9f9 100644 --- a/services/bountysource/bountysource.service.js +++ b/services/bountysource/bountysource.service.js @@ -1,13 +1,11 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { metric } = require('../text-formatters') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { metric } from '../text-formatters.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ activity_total: nonNegativeInteger }) -module.exports = class Bountysource extends BaseJsonService { +export default class Bountysource extends BaseJsonService { static category = 'funding' static route = { base: 'bountysource/team', pattern: ':team/activity' } diff --git a/services/bountysource/bountysource.tester.js b/services/bountysource/bountysource.tester.js index 634b8adbbc764..cec68a500c333 100644 --- a/services/bountysource/bountysource.tester.js +++ b/services/bountysource/bountysource.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { isMetric } from '../test-validators.js' +import { ServiceTester } from '../tester.js' -const { isMetric } = require('../test-validators') -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'bountysource', title: 'Bountysource', -})) +}) t.create('bounties (valid)') .get('/team/mozilla-core/activity.json') diff --git a/services/bower/bower-base.js b/services/bower/bower-base.js index 12438ceff84c3..43a70542895ca 100644 --- a/services/bower/bower-base.js +++ b/services/bower/bower-base.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' const schema = Joi.object() .keys({ @@ -19,7 +17,7 @@ const schema = Joi.object() }) .required() -module.exports = class BaseBowerService extends BaseJsonService { +export default class BaseBowerService extends BaseJsonService { async fetch({ packageName }) { return this._requestJson({ schema, diff --git a/services/bower/bower-license.service.js b/services/bower/bower-license.service.js index 2c454ba11ff6f..24476a20d60d2 100644 --- a/services/bower/bower-license.service.js +++ b/services/bower/bower-license.service.js @@ -1,9 +1,7 @@ -'use strict' +import { renderLicenseBadge } from '../licenses.js' +import BaseBowerService from './bower-base.js' -const { renderLicenseBadge } = require('../licenses') -const BaseBowerService = require('./bower-base') - -module.exports = class BowerLicense extends BaseBowerService { +export default class BowerLicense extends BaseBowerService { static category = 'license' static route = { base: 'bower/l', pattern: ':packageName' } diff --git a/services/bower/bower-license.tester.js b/services/bower/bower-license.tester.js index dc89bdaf96279..18ba64b760210 100644 --- a/services/bower/bower-license.tester.js +++ b/services/bower/bower-license.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('licence') .timeout(10000) diff --git a/services/bower/bower-version.service.js b/services/bower/bower-version.service.js index aa34d2ece85bf..277d704021d88 100644 --- a/services/bower/bower-version.service.js +++ b/services/bower/bower-version.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { InvalidResponse, redirector } = require('..') -const BaseBowerService = require('./bower-base') +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { InvalidResponse, redirector } from '../index.js' +import BaseBowerService from './bower-base.js' const queryParamSchema = Joi.object({ include_prereleases: Joi.equal(''), @@ -57,4 +55,4 @@ const BowerVersionRedirect = redirector({ dateAdded: new Date('2019-12-15'), }) -module.exports = { BowerVersion, BowerVersionRedirect } +export { BowerVersion, BowerVersionRedirect } diff --git a/services/bower/bower-version.tester.js b/services/bower/bower-version.tester.js index 2f7129b438b91..acccf3a756fec 100644 --- a/services/bower/bower-version.tester.js +++ b/services/bower/bower-version.tester.js @@ -1,13 +1,11 @@ -'use strict' - -const Joi = require('joi') -const { isVPlusDottedVersionAtLeastOne } = require('../test-validators') -const { ServiceTester } = require('../tester') -const t = (module.exports = new ServiceTester({ +import Joi from 'joi' +import { isVPlusDottedVersionAtLeastOne } from '../test-validators.js' +import { ServiceTester } from '../tester.js' +export const t = new ServiceTester({ id: 'BowerVersion', title: 'Bower Version', pathPrefix: '/bower', -})) +}) const isBowerPrereleaseVersion = Joi.string().regex( /^v\d+(\.\d+)?(\.\d+)?(-?[.\w\d])+?$/ diff --git a/services/bstats/bstats-players.service.js b/services/bstats/bstats-players.service.js index 855875c46754e..5b8eccd36f741 100644 --- a/services/bstats/bstats-players.service.js +++ b/services/bstats/bstats-players.service.js @@ -1,14 +1,12 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { BaseJsonService } from '../index.js' const schema = Joi.array() .items(Joi.array().items(Joi.number().required(), Joi.number().required())) .required() -module.exports = class BStatsPlayers extends BaseJsonService { +export default class BStatsPlayers extends BaseJsonService { static category = 'other' static route = { base: 'bstats/players', pattern: ':pluginid' } diff --git a/services/bstats/bstats-players.tester.js b/services/bstats/bstats-players.tester.js index c4d7a7064e028..31b84be9fd645 100644 --- a/services/bstats/bstats-players.tester.js +++ b/services/bstats/bstats-players.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Players').get('/1.json').expectBadge({ label: 'players', diff --git a/services/bstats/bstats-servers.service.js b/services/bstats/bstats-servers.service.js index 156458798b809..f90f95397acd6 100644 --- a/services/bstats/bstats-servers.service.js +++ b/services/bstats/bstats-servers.service.js @@ -1,14 +1,12 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { BaseJsonService } from '../index.js' const schema = Joi.array() .items(Joi.array().items(Joi.number().required(), Joi.number().required())) .required() -module.exports = class BStatsServers extends BaseJsonService { +export default class BStatsServers extends BaseJsonService { static category = 'other' static route = { base: 'bstats/servers', pattern: ':pluginid' } diff --git a/services/bstats/bstats-servers.tester.js b/services/bstats/bstats-servers.tester.js index 8fee06bcc6af2..c673891b67cc6 100644 --- a/services/bstats/bstats-servers.tester.js +++ b/services/bstats/bstats-servers.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Servers').get('/1.json').expectBadge({ label: 'servers', diff --git a/services/bugzilla/bugzilla.service.js b/services/bugzilla/bugzilla.service.js index e0acfd608f5a0..aadc849eedd0d 100644 --- a/services/bugzilla/bugzilla.service.js +++ b/services/bugzilla/bugzilla.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { optionalUrl } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { optionalUrl } from '../validators.js' +import { BaseJsonService } from '../index.js' const queryParamSchema = Joi.object({ baseUrl: optionalUrl, @@ -26,7 +24,7 @@ const documentation = `

` -module.exports = class Bugzilla extends BaseJsonService { +export default class Bugzilla extends BaseJsonService { static category = 'issue-tracking' static route = { base: 'bugzilla', pattern: ':bugNumber', queryParamSchema } diff --git a/services/bugzilla/bugzilla.spec.js b/services/bugzilla/bugzilla.spec.js index 64b50f94316be..114e29fa429e0 100644 --- a/services/bugzilla/bugzilla.spec.js +++ b/services/bugzilla/bugzilla.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const Bugzilla = require('./bugzilla.service') +import { test, given } from 'sazerac' +import Bugzilla from './bugzilla.service.js' describe('getDisplayStatus function', function () { it('formats status correctly', async function () { diff --git a/services/bugzilla/bugzilla.tester.js b/services/bugzilla/bugzilla.tester.js index 3bdffa120a12f..f3489bfee520d 100644 --- a/services/bugzilla/bugzilla.tester.js +++ b/services/bugzilla/bugzilla.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const bzBugStatus = Joi.equal( 'unconfirmed', diff --git a/services/build-status.js b/services/build-status.js index 4a088eee45374..9b33b6c2be907 100644 --- a/services/build-status.js +++ b/services/build-status.js @@ -1,6 +1,4 @@ -'use strict' - -const Joi = require('joi') +import Joi from 'joi' const greenStatuses = [ 'fixed', @@ -74,4 +72,4 @@ function renderBuildStatusBadge({ label, status }) { } } -module.exports = { isBuildStatus, renderBuildStatusBadge } +export { isBuildStatus, renderBuildStatusBadge } diff --git a/services/build-status.spec.js b/services/build-status.spec.js index 69b19d2165599..07cf9be308657 100644 --- a/services/build-status.spec.js +++ b/services/build-status.spec.js @@ -1,8 +1,6 @@ -'use strict' - -const { expect } = require('chai') -const { test, given, forCases } = require('sazerac') -const { renderBuildStatusBadge } = require('./build-status') +import { expect } from 'chai' +import { test, given, forCases } from 'sazerac' +import { renderBuildStatusBadge } from './build-status.js' test(renderBuildStatusBadge, () => { given({ label: 'build', status: 'passed' }).expect({ diff --git a/services/buildkite/buildkite.service.js b/services/buildkite/buildkite.service.js index 16b298b0cf9c4..c9cfb31648f7c 100644 --- a/services/buildkite/buildkite.service.js +++ b/services/buildkite/buildkite.service.js @@ -1,15 +1,13 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus, renderBuildStatusBadge } = require('../build-status') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { isBuildStatus, renderBuildStatusBadge } from '../build-status.js' +import { BaseJsonService } from '../index.js' // unknown is a valid 'other' status for Buildkite const schema = Joi.object({ status: Joi.alternatives().try(isBuildStatus, Joi.equal('unknown')), }).required() -module.exports = class Buildkite extends BaseJsonService { +export default class Buildkite extends BaseJsonService { static category = 'build' static route = { base: 'buildkite', pattern: ':identifier/:branch*' } diff --git a/services/buildkite/buildkite.tester.js b/services/buildkite/buildkite.tester.js index bca5c506e74e6..d2819659f97d0 100644 --- a/services/buildkite/buildkite.tester.js +++ b/services/buildkite/buildkite.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus } = require('../build-status') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { isBuildStatus } from '../build-status.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('buildkite invalid pipeline') .get('/unknown-identifier/unknown-branch.json') diff --git a/services/bundlephobia/bundlephobia.service.js b/services/bundlephobia/bundlephobia.service.js index fbc4eb5e6892f..5609e0880ab72 100644 --- a/services/bundlephobia/bundlephobia.service.js +++ b/services/bundlephobia/bundlephobia.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const prettyBytes = require('pretty-bytes') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import prettyBytes from 'pretty-bytes' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ size: nonNegativeInteger, @@ -12,7 +10,7 @@ const schema = Joi.object({ const keywords = ['node', 'bundlephobia'] -module.exports = class Bundlephobia extends BaseJsonService { +export default class Bundlephobia extends BaseJsonService { static category = 'size' static route = { diff --git a/services/bundlephobia/bundlephobia.tester.js b/services/bundlephobia/bundlephobia.tester.js index a4ec4d6f29ff9..525bff0e026b3 100644 --- a/services/bundlephobia/bundlephobia.tester.js +++ b/services/bundlephobia/bundlephobia.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isFileSize } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isFileSize } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const formats = { A: '/bundlephobia/:type/:package.:format', diff --git a/services/categories.js b/services/categories.js index fc45a33520bd7..a17077b32db23 100644 --- a/services/categories.js +++ b/services/categories.js @@ -1,6 +1,4 @@ -'use strict' - -module.exports = [ +export default [ { id: 'build', name: 'Build', keywords: ['build'] }, { id: 'coverage', name: 'Code Coverage', keywords: ['coverage'] }, { id: 'analysis', name: 'Analysis', keywords: ['analysis'] }, diff --git a/services/cauditor/cauditor.service.js b/services/cauditor/cauditor.service.js index 64cfbf49dd2f3..85b64cab52109 100644 --- a/services/cauditor/cauditor.service.js +++ b/services/cauditor/cauditor.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ category: 'other', route: { base: 'cauditor', diff --git a/services/cauditor/cauditor.tester.js b/services/cauditor/cauditor.tester.js index aa23655b92df4..14c96f7e3e1e6 100644 --- a/services/cauditor/cauditor.tester.js +++ b/services/cauditor/cauditor.tester.js @@ -1,11 +1,9 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'cauditor', title: 'Cauditor', -})) +}) t.create('no longer available') .get('/mi/matthiasmullie/scrapbook/master.json') diff --git a/services/cdnjs/cdnjs.service.js b/services/cdnjs/cdnjs.service.js index 4e3503de27f1e..d1d9e967f59b2 100644 --- a/services/cdnjs/cdnjs.service.js +++ b/services/cdnjs/cdnjs.service.js @@ -1,15 +1,13 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { BaseJsonService, NotFound } = require('..') +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { BaseJsonService, NotFound } from '../index.js' const cdnjsSchema = Joi.object({ // optional due to non-standard 'not found' condition version: Joi.string(), }).required() -module.exports = class Cdnjs extends BaseJsonService { +export default class Cdnjs extends BaseJsonService { static category = 'version' static route = { base: 'cdnjs/v', pattern: ':library' } diff --git a/services/cdnjs/cdnjs.tester.js b/services/cdnjs/cdnjs.tester.js index 6f7a3139d24ce..a2da7ec37576c 100644 --- a/services/cdnjs/cdnjs.tester.js +++ b/services/cdnjs/cdnjs.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isVPlusTripleDottedVersion } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isVPlusTripleDottedVersion } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('cdnjs (valid)').get('/jquery.json').expectBadge({ label: 'cdnjs', diff --git a/services/check-services.spec.js b/services/check-services.spec.js index a564c340a3e50..8ee0365156ac7 100644 --- a/services/check-services.spec.js +++ b/services/check-services.spec.js @@ -1,18 +1,13 @@ -'use strict' - -const { - checkNames, - collectDefinitions, -} = require('../core/base-service/loader') +import { checkNames, collectDefinitions } from '../core/base-service/loader.js' // When these tests fail, they will throw AssertionErrors. Wrapping them in an // `expect().not.to.throw()` makes the error output unreadable. -it('Services have unique names', function () { +it('Services have unique names', async function () { this.timeout(30000) - checkNames() + await checkNames() }) -it('Can collect the service definitions', function () { - collectDefinitions() +it('Can collect the service definitions', async function () { + await collectDefinitions() }) diff --git a/services/chocolatey/chocolatey.service.js b/services/chocolatey/chocolatey.service.js index c03f3d1a7cda8..584c6c9f14c50 100644 --- a/services/chocolatey/chocolatey.service.js +++ b/services/chocolatey/chocolatey.service.js @@ -1,8 +1,6 @@ -'use strict' +import { createServiceFamily } from '../nuget/nuget-v2-service-family.js' -const { createServiceFamily } = require('../nuget/nuget-v2-service-family') - -module.exports = createServiceFamily({ +export default createServiceFamily({ defaultLabel: 'chocolatey', serviceBaseUrl: 'chocolatey', apiBaseUrl: 'https://www.chocolatey.org/api/v2', diff --git a/services/chocolatey/chocolatey.tester.js b/services/chocolatey/chocolatey.tester.js index f7ac3e9910085..6c2a3a18decd1 100644 --- a/services/chocolatey/chocolatey.tester.js +++ b/services/chocolatey/chocolatey.tester.js @@ -1,16 +1,14 @@ -'use strict' - -const { +import { isMetric, isVPlusDottedVersionNClauses, isVPlusDottedVersionNClausesWithOptionalSuffix, -} = require('../test-validators') -const { ServiceTester } = require('../tester') +} from '../test-validators.js' +import { ServiceTester } from '../tester.js' -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'chocolatey', title: 'Chocolatey', -})) +}) // downloads diff --git a/services/chrome-web-store/chrome-web-store-base.js b/services/chrome-web-store/chrome-web-store-base.js index ac0049d37295c..77e917c2b71a4 100644 --- a/services/chrome-web-store/chrome-web-store-base.js +++ b/services/chrome-web-store/chrome-web-store-base.js @@ -1,10 +1,8 @@ -'use strict' +import ChromeWebStore from 'webextension-store-meta/lib/chrome-web-store/index.js' +import checkErrorResponse from '../../core/base-service/check-error-response.js' +import { BaseService, Inaccessible } from '../index.js' -const ChromeWebStore = require('webextension-store-meta/lib/chrome-web-store') -const checkErrorResponse = require('../../core/base-service/check-error-response') -const { BaseService, Inaccessible } = require('..') - -module.exports = class BaseChromeWebStoreService extends BaseService { +export default class BaseChromeWebStoreService extends BaseService { async fetch({ storeId }) { try { return await ChromeWebStore.load({ id: storeId }) diff --git a/services/chrome-web-store/chrome-web-store-price.service.js b/services/chrome-web-store/chrome-web-store-price.service.js index e2faa0d67976f..99068389d04b6 100644 --- a/services/chrome-web-store/chrome-web-store-price.service.js +++ b/services/chrome-web-store/chrome-web-store-price.service.js @@ -1,10 +1,8 @@ -'use strict' +import { currencyFromCode } from '../text-formatters.js' +import { NotFound } from '../index.js' +import BaseChromeWebStoreService from './chrome-web-store-base.js' -const { currencyFromCode } = require('../text-formatters') -const { NotFound } = require('..') -const BaseChromeWebStoreService = require('./chrome-web-store-base') - -module.exports = class ChromeWebStorePrice extends BaseChromeWebStoreService { +export default class ChromeWebStorePrice extends BaseChromeWebStoreService { static category = 'funding' static route = { base: 'chrome-web-store/price', pattern: ':storeId' } diff --git a/services/chrome-web-store/chrome-web-store-price.tester.js b/services/chrome-web-store/chrome-web-store-price.tester.js index cc2ffaa587f18..8c017faf5774c 100644 --- a/services/chrome-web-store/chrome-web-store-price.tester.js +++ b/services/chrome-web-store/chrome-web-store-price.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Price') .get('/alhjnofcnnpeaphgeakdhkebafjcpeae.json') diff --git a/services/chrome-web-store/chrome-web-store-rating.service.js b/services/chrome-web-store/chrome-web-store-rating.service.js index 95bbe0009bef5..5c273b5357961 100644 --- a/services/chrome-web-store/chrome-web-store-rating.service.js +++ b/services/chrome-web-store/chrome-web-store-rating.service.js @@ -1,9 +1,7 @@ -'use strict' - -const { floorCount: floorCountColor } = require('../color-formatters') -const { metric, starRating } = require('../text-formatters') -const { NotFound } = require('..') -const BaseChromeWebStoreService = require('./chrome-web-store-base') +import { floorCount as floorCountColor } from '../color-formatters.js' +import { metric, starRating } from '../text-formatters.js' +import { NotFound } from '../index.js' +import BaseChromeWebStoreService from './chrome-web-store-base.js' class BaseChromeWebStoreRating extends BaseChromeWebStoreService { static category = 'rating' @@ -108,7 +106,7 @@ class ChromeWebStoreRatingStars extends BaseChromeWebStoreRating { } } -module.exports = { +export { ChromeWebStoreRating, ChromeWebStoreRatingCount, ChromeWebStoreRatingStars, diff --git a/services/chrome-web-store/chrome-web-store-rating.tester.js b/services/chrome-web-store/chrome-web-store-rating.tester.js index bf5d670442cc6..3d4f20c1d5f32 100644 --- a/services/chrome-web-store/chrome-web-store-rating.tester.js +++ b/services/chrome-web-store/chrome-web-store-rating.tester.js @@ -1,14 +1,12 @@ -'use strict' +import Joi from 'joi' +import { isStarRating } from '../test-validators.js' +import { ServiceTester } from '../tester.js' -const Joi = require('joi') -const { isStarRating } = require('../test-validators') -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'ChromeWebStoreRating', title: 'Chrome Web Store Rating', pathPrefix: '/chrome-web-store', -})) +}) t.create('Rating') .get('/rating/alhjnofcnnpeaphgeakdhkebafjcpeae.json') diff --git a/services/chrome-web-store/chrome-web-store-users.service.js b/services/chrome-web-store/chrome-web-store-users.service.js index 12f5130e9aabf..7e8341c9694e2 100644 --- a/services/chrome-web-store/chrome-web-store-users.service.js +++ b/services/chrome-web-store/chrome-web-store-users.service.js @@ -1,9 +1,7 @@ -'use strict' - -const { metric } = require('../text-formatters') -const { downloadCount } = require('../color-formatters') -const { redirector, NotFound } = require('..') -const BaseChromeWebStoreService = require('./chrome-web-store-base') +import { metric } from '../text-formatters.js' +import { downloadCount } from '../color-formatters.js' +import { redirector, NotFound } from '../index.js' +import BaseChromeWebStoreService from './chrome-web-store-base.js' class ChromeWebStoreUsers extends BaseChromeWebStoreService { static category = 'downloads' @@ -46,7 +44,4 @@ const ChromeWebStoreDownloads = redirector({ dateAdded: new Date('2019-02-27'), }) -module.exports = { - ChromeWebStoreDownloads, - ChromeWebStoreUsers, -} +export { ChromeWebStoreDownloads, ChromeWebStoreUsers } diff --git a/services/chrome-web-store/chrome-web-store-users.tester.js b/services/chrome-web-store/chrome-web-store-users.tester.js index a0f3f5cef538c..d00b6c3c13217 100644 --- a/services/chrome-web-store/chrome-web-store-users.tester.js +++ b/services/chrome-web-store/chrome-web-store-users.tester.js @@ -1,13 +1,11 @@ -'use strict' +import { isMetric } from '../test-validators.js' +import { ServiceTester } from '../tester.js' -const { isMetric } = require('../test-validators') -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'ChromeWebStoreUsers', title: 'Chrome Web Store Users', pathPrefix: '/chrome-web-store', -})) +}) t.create('Downloads (redirect)') .get('/d/alhjnofcnnpeaphgeakdhkebafjcpeae.svg') diff --git a/services/chrome-web-store/chrome-web-store-version.service.js b/services/chrome-web-store/chrome-web-store-version.service.js index ea9082779b37d..e9e42af9596a0 100644 --- a/services/chrome-web-store/chrome-web-store-version.service.js +++ b/services/chrome-web-store/chrome-web-store-version.service.js @@ -1,10 +1,8 @@ -'use strict' +import { renderVersionBadge } from '../version.js' +import { NotFound } from '../index.js' +import BaseChromeWebStoreService from './chrome-web-store-base.js' -const { renderVersionBadge } = require('../version') -const { NotFound } = require('..') -const BaseChromeWebStoreService = require('./chrome-web-store-base') - -module.exports = class ChromeWebStoreVersion extends BaseChromeWebStoreService { +export default class ChromeWebStoreVersion extends BaseChromeWebStoreService { static category = 'version' static route = { base: 'chrome-web-store/v', pattern: ':storeId' } diff --git a/services/chrome-web-store/chrome-web-store-version.tester.js b/services/chrome-web-store/chrome-web-store-version.tester.js index 09d49442d4059..cccf0b95e14be 100644 --- a/services/chrome-web-store/chrome-web-store-version.tester.js +++ b/services/chrome-web-store/chrome-web-store-version.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isVPlusDottedVersionAtLeastOne } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isVPlusDottedVersionAtLeastOne } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Version').get('/alhjnofcnnpeaphgeakdhkebafjcpeae.json').expectBadge({ label: 'chrome web store', diff --git a/services/cii-best-practices/cii-best-practices.service.js b/services/cii-best-practices/cii-best-practices.service.js index 7a38690077940..4aefbf8af72a5 100644 --- a/services/cii-best-practices/cii-best-practices.service.js +++ b/services/cii-best-practices/cii-best-practices.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { colorScale, coveragePercentage } = require('../color-formatters') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { colorScale, coveragePercentage } from '../color-formatters.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ badge_level: Joi.string().required(), @@ -30,7 +28,7 @@ const summaryColorScale = colorScale( ] ) -module.exports = class CIIBestPracticesService extends BaseJsonService { +export default class CIIBestPracticesService extends BaseJsonService { static category = 'analysis' static route = { base: 'cii', diff --git a/services/cii-best-practices/cii-best-practices.tester.js b/services/cii-best-practices/cii-best-practices.tester.js index b908976637806..ba62ffaa11fa1 100644 --- a/services/cii-best-practices/cii-best-practices.tester.js +++ b/services/cii-best-practices/cii-best-practices.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { withRegex } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { withRegex } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('level known project') .get(`/level/1.json`) diff --git a/services/circleci/circleci.service.js b/services/circleci/circleci.service.js index 84efe01135c19..2087af453136a 100644 --- a/services/circleci/circleci.service.js +++ b/services/circleci/circleci.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus, renderBuildStatusBadge } = require('../build-status') -const { BaseSvgScrapingService, redirector } = require('..') +import Joi from 'joi' +import { isBuildStatus, renderBuildStatusBadge } from '../build-status.js' +import { BaseSvgScrapingService, redirector } from '../index.js' const circleSchema = Joi.object({ message: isBuildStatus }).required() const queryParamSchema = Joi.object({ token: Joi.string() }).required() @@ -98,4 +96,4 @@ const legacyRoutes = [ }), ] -module.exports = [...legacyRoutes, CircleCi] +export default { ...legacyRoutes, CircleCi } diff --git a/services/circleci/circleci.tester.js b/services/circleci/circleci.tester.js index ecdded2b10e9a..8cbda6b312e33 100644 --- a/services/circleci/circleci.tester.js +++ b/services/circleci/circleci.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { isBuildStatus } from '../build-status.js' +import { ServiceTester } from '../tester.js' -const { isBuildStatus } = require('../build-status') -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'circleci', title: 'Circle CI', -})) +}) t.create('circle ci (valid, without branch)') .get('/build/gh/RedSparr0w/node-csgo-parser.json') diff --git a/services/cirrus/cirrus.service.js b/services/cirrus/cirrus.service.js index 7e4b9d07bbaeb..437f2d630ab3c 100644 --- a/services/cirrus/cirrus.service.js +++ b/services/cirrus/cirrus.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus, renderBuildStatusBadge } = require('../build-status') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { isBuildStatus, renderBuildStatusBadge } from '../build-status.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ subject: Joi.string().required(), @@ -15,7 +13,7 @@ const queryParamSchema = Joi.object({ script: Joi.string(), }).required() -module.exports = class Cirrus extends BaseJsonService { +export default class Cirrus extends BaseJsonService { static category = 'build' static route = { base: 'cirrus', diff --git a/services/cirrus/cirrus.tester.js b/services/cirrus/cirrus.tester.js index a23d9cc8ce8d4..a3f6e396fb01b 100644 --- a/services/cirrus/cirrus.tester.js +++ b/services/cirrus/cirrus.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus } = require('../build-status') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { isBuildStatus } from '../build-status.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('cirrus bad repo') .get('/github/unknown-identifier/unknown-repo.json') diff --git a/services/clojars/clojars-base.js b/services/clojars/clojars-base.js index 9a89c9e6ddadf..15996eebb3797 100644 --- a/services/clojars/clojars-base.js +++ b/services/clojars/clojars-base.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' const clojarsSchema = Joi.object({ downloads: nonNegativeInteger, @@ -21,4 +19,4 @@ class BaseClojarsService extends BaseJsonService { } } -module.exports = { BaseClojarsService } +export { BaseClojarsService } diff --git a/services/clojars/clojars-downloads.service.js b/services/clojars/clojars-downloads.service.js index 3925de5f1e74a..1a5932354daa7 100644 --- a/services/clojars/clojars-downloads.service.js +++ b/services/clojars/clojars-downloads.service.js @@ -1,10 +1,8 @@ -'use strict' +import { metric } from '../text-formatters.js' +import { downloadCount as downloadsColor } from '../color-formatters.js' +import { BaseClojarsService } from './clojars-base.js' -const { metric } = require('../text-formatters') -const { downloadCount: downloadsColor } = require('../color-formatters') -const { BaseClojarsService } = require('./clojars-base') - -module.exports = class ClojarsDownloads extends BaseClojarsService { +export default class ClojarsDownloads extends BaseClojarsService { static category = 'downloads' static route = { base: 'clojars/dt', pattern: ':clojar+' } diff --git a/services/clojars/clojars-downloads.tester.js b/services/clojars/clojars-downloads.tester.js index 94ec0aad260b4..afb116f46d3e0 100644 --- a/services/clojars/clojars-downloads.tester.js +++ b/services/clojars/clojars-downloads.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('clojars downloads (valid)').get('/prismic.json').expectBadge({ label: 'downloads', diff --git a/services/clojars/clojars-version.service.js b/services/clojars/clojars-version.service.js index 048161a8ff9ef..344eddc90110d 100644 --- a/services/clojars/clojars-version.service.js +++ b/services/clojars/clojars-version.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { version: versionColor } = require('../color-formatters') -const { redirector } = require('..') -const { BaseClojarsService } = require('./clojars-base') +import Joi from 'joi' +import { version as versionColor } from '../color-formatters.js' +import { redirector } from '../index.js' +import { BaseClojarsService } from './clojars-base.js' const queryParamSchema = Joi.object({ include_prereleases: Joi.equal(''), @@ -63,4 +61,4 @@ const ClojarsVersionRedirector = redirector({ dateAdded: new Date('2019-12-15'), }) -module.exports = { ClojarsVersionService, ClojarsVersionRedirector } +export { ClojarsVersionService, ClojarsVersionRedirector } diff --git a/services/clojars/clojars-version.tester.js b/services/clojars/clojars-version.tester.js index ee495b9c7e77a..5d7e23cd35844 100644 --- a/services/clojars/clojars-version.tester.js +++ b/services/clojars/clojars-version.tester.js @@ -1,11 +1,9 @@ -'use strict' - -const { ServiceTester } = require('../tester') -const t = (module.exports = new ServiceTester({ +import { ServiceTester } from '../tester.js' +export const t = new ServiceTester({ id: 'ClojarsVersion', title: 'Clojars Version', pathPrefix: '/clojars', -})) +}) t.create('clojars version (valid)') .get('/v/prismic.json') diff --git a/services/cocoapods/cocoapods-apps.service.js b/services/cocoapods/cocoapods-apps.service.js index 277cc6a43cdef..b0b65a80bd5db 100644 --- a/services/cocoapods/cocoapods-apps.service.js +++ b/services/cocoapods/cocoapods-apps.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ name: 'CocoapodsApps', category: 'other', route: { diff --git a/services/cocoapods/cocoapods-apps.tester.js b/services/cocoapods/cocoapods-apps.tester.js index 07c8e86521161..cba658950f401 100644 --- a/services/cocoapods/cocoapods-apps.tester.js +++ b/services/cocoapods/cocoapods-apps.tester.js @@ -1,11 +1,9 @@ -'use strict' - -const { ServiceTester } = require('../tester') -const t = (module.exports = new ServiceTester({ +import { ServiceTester } from '../tester.js' +export const t = new ServiceTester({ id: 'CocoapodsApps', title: 'CocoapodsApps', pathPrefix: '/cocoapods', -})) +}) t.create('apps (valid, weekly)') .get('/aw/AFNetworking.json') diff --git a/services/cocoapods/cocoapods-base.js b/services/cocoapods/cocoapods-base.js index e0ae168661fa0..98bcbf49ded2c 100644 --- a/services/cocoapods/cocoapods-base.js +++ b/services/cocoapods/cocoapods-base.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ version: Joi.string().required(), @@ -16,7 +14,7 @@ const schema = Joi.object({ platforms: Joi.object().default({ ios: '5.0', osx: '10.7' }), }).required() -module.exports = class BaseCocoaPodsService extends BaseJsonService { +export default class BaseCocoaPodsService extends BaseJsonService { async fetch({ spec }) { return this._requestJson({ schema, diff --git a/services/cocoapods/cocoapods-docs.service.js b/services/cocoapods/cocoapods-docs.service.js index 3f942a24ffbba..a25403ad65efb 100644 --- a/services/cocoapods/cocoapods-docs.service.js +++ b/services/cocoapods/cocoapods-docs.service.js @@ -1,10 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { - coveragePercentage: coveragePercentageColor, -} = require('../color-formatters') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { coveragePercentage as coveragePercentageColor } from '../color-formatters.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ cocoadocs: Joi.object({ @@ -12,7 +8,7 @@ const schema = Joi.object({ }).required(), }).required() -module.exports = class CocoapodsDocs extends BaseJsonService { +export default class CocoapodsDocs extends BaseJsonService { static category = 'analysis' static route = { base: 'cocoapods/metrics/doc-percent', pattern: ':spec' } diff --git a/services/cocoapods/cocoapods-docs.tester.js b/services/cocoapods/cocoapods-docs.tester.js index 7fe160e207cf3..746505bc21e7f 100644 --- a/services/cocoapods/cocoapods-docs.tester.js +++ b/services/cocoapods/cocoapods-docs.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isIntegerPercentage } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isIntegerPercentage } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('doc percent (valid)').get('/AFNetworking.json').expectBadge({ label: 'docs', diff --git a/services/cocoapods/cocoapods-downloads.service.js b/services/cocoapods/cocoapods-downloads.service.js index c0caf8da6be81..e54056deed34e 100644 --- a/services/cocoapods/cocoapods-downloads.service.js +++ b/services/cocoapods/cocoapods-downloads.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ name: 'CocoapodsDownloads', category: 'downloads', route: { diff --git a/services/cocoapods/cocoapods-downloads.tester.js b/services/cocoapods/cocoapods-downloads.tester.js index 8e66b7470ed5b..b7dbf18ba8fbf 100644 --- a/services/cocoapods/cocoapods-downloads.tester.js +++ b/services/cocoapods/cocoapods-downloads.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'CocoapodsDownloads', title: 'CocoapodsDownloads', pathPrefix: '/cocoapods', -})) +}) t.create('downloads (valid, monthly)') .get('/dm/AFNetworking.json') diff --git a/services/cocoapods/cocoapods-license.service.js b/services/cocoapods/cocoapods-license.service.js index 65d3c02bc33dd..95f401b054c8f 100644 --- a/services/cocoapods/cocoapods-license.service.js +++ b/services/cocoapods/cocoapods-license.service.js @@ -1,8 +1,6 @@ -'use strict' +import BaseCocoaPodsService from './cocoapods-base.js' -const BaseCocoaPodsService = require('./cocoapods-base') - -module.exports = class CocoapodsLicense extends BaseCocoaPodsService { +export default class CocoapodsLicense extends BaseCocoaPodsService { static category = 'license' static route = { base: 'cocoapods/l', pattern: ':spec' } diff --git a/services/cocoapods/cocoapods-license.tester.js b/services/cocoapods/cocoapods-license.tester.js index 3f6c633192482..c4eba4f9ff26e 100644 --- a/services/cocoapods/cocoapods-license.tester.js +++ b/services/cocoapods/cocoapods-license.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('license (valid)') .get('/AFNetworking.json') diff --git a/services/cocoapods/cocoapods-platform.service.js b/services/cocoapods/cocoapods-platform.service.js index dc2b4fb4d16ff..83cb468d84191 100644 --- a/services/cocoapods/cocoapods-platform.service.js +++ b/services/cocoapods/cocoapods-platform.service.js @@ -1,8 +1,6 @@ -'use strict' +import BaseCocoaPodsService from './cocoapods-base.js' -const BaseCocoaPodsService = require('./cocoapods-base') - -module.exports = class CocoapodsPlatform extends BaseCocoaPodsService { +export default class CocoapodsPlatform extends BaseCocoaPodsService { static category = 'platform-support' static route = { base: 'cocoapods/p', pattern: ':spec' } diff --git a/services/cocoapods/cocoapods-platform.tester.js b/services/cocoapods/cocoapods-platform.tester.js index c05aa58bb5b0e..f2d176f97355f 100644 --- a/services/cocoapods/cocoapods-platform.tester.js +++ b/services/cocoapods/cocoapods-platform.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isPlatform = Joi.string().regex( /^(osx|ios|tvos|watchos)( \| (osx|ios|tvos|watchos))*$/ diff --git a/services/cocoapods/cocoapods-version.service.js b/services/cocoapods/cocoapods-version.service.js index f82fccf2cb85d..bc55f8306361d 100644 --- a/services/cocoapods/cocoapods-version.service.js +++ b/services/cocoapods/cocoapods-version.service.js @@ -1,9 +1,7 @@ -'use strict' +import { renderVersionBadge } from '../version.js' +import BaseCocoaPodsService from './cocoapods-base.js' -const { renderVersionBadge } = require('../version') -const BaseCocoaPodsService = require('./cocoapods-base') - -module.exports = class CocoapodsVersion extends BaseCocoaPodsService { +export default class CocoapodsVersion extends BaseCocoaPodsService { static category = 'version' static route = { base: 'cocoapods/v', pattern: ':spec' } diff --git a/services/cocoapods/cocoapods-version.tester.js b/services/cocoapods/cocoapods-version.tester.js index 468ea4fa2ff82..e4e934abf5693 100644 --- a/services/cocoapods/cocoapods-version.tester.js +++ b/services/cocoapods/cocoapods-version.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isVPlusDottedVersionAtLeastOne } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isVPlusDottedVersionAtLeastOne } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('version (valid)').get('/AFNetworking.json').expectBadge({ label: 'pod', diff --git a/services/codacy/codacy-coverage.service.js b/services/codacy/codacy-coverage.service.js index 3c0b4b082e766..04da6a9b74774 100644 --- a/services/codacy/codacy-coverage.service.js +++ b/services/codacy/codacy-coverage.service.js @@ -1,11 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { - coveragePercentage: coveragePercentageColor, -} = require('../color-formatters') -const { BaseSvgScrapingService } = require('..') -const { NotFound } = require('..') +import Joi from 'joi' +import { coveragePercentage as coveragePercentageColor } from '../color-formatters.js' +import { BaseSvgScrapingService, NotFound } from '../index.js' const schema = Joi.object({ message: Joi.alternatives() @@ -13,7 +8,7 @@ const schema = Joi.object({ .required(), }).required() -module.exports = class CodacyCoverage extends BaseSvgScrapingService { +export default class CodacyCoverage extends BaseSvgScrapingService { static category = 'coverage' static route = { base: 'codacy/coverage', pattern: ':projectId/:branch*' } diff --git a/services/codacy/codacy-coverage.tester.js b/services/codacy/codacy-coverage.tester.js index 580018b2b49f0..ab0c24fed26a7 100644 --- a/services/codacy/codacy-coverage.tester.js +++ b/services/codacy/codacy-coverage.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isIntegerPercentage } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isIntegerPercentage } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Coverage').get('/59d607d0e311408885e418004068ea58.json').expectBadge({ label: 'coverage', diff --git a/services/codacy/codacy-grade.service.js b/services/codacy/codacy-grade.service.js index 7f417bd26e771..4c4d35d76d96a 100644 --- a/services/codacy/codacy-grade.service.js +++ b/services/codacy/codacy-grade.service.js @@ -1,12 +1,10 @@ -'use strict' - -const Joi = require('joi') -const { BaseSvgScrapingService } = require('..') -const { codacyGrade } = require('./codacy-helpers') +import Joi from 'joi' +import { BaseSvgScrapingService } from '../index.js' +import { codacyGrade } from './codacy-helpers.js' const schema = Joi.object({ message: codacyGrade }).required() -module.exports = class CodacyGrade extends BaseSvgScrapingService { +export default class CodacyGrade extends BaseSvgScrapingService { static category = 'analysis' static route = { base: 'codacy/grade', pattern: ':projectId/:branch*' } diff --git a/services/codacy/codacy-grade.tester.js b/services/codacy/codacy-grade.tester.js index cc8020e2104de..be97c7eae00c5 100644 --- a/services/codacy/codacy-grade.tester.js +++ b/services/codacy/codacy-grade.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { codacyGrade } = require('./codacy-helpers') +import { createServiceTester } from '../tester.js' +import { codacyGrade } from './codacy-helpers.js' +export const t = await createServiceTester() t.create('Code quality') .get('/e27821fb6289410b8f58338c7e0bc686.json') diff --git a/services/codacy/codacy-helpers.js b/services/codacy/codacy-helpers.js index 9c222194c34c9..8408c492ad7e0 100644 --- a/services/codacy/codacy-helpers.js +++ b/services/codacy/codacy-helpers.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') +import Joi from 'joi' const codacyGrade = Joi.equal('A', 'B', 'C', 'D', 'E', 'F') -module.exports = { codacyGrade } +export { codacyGrade } diff --git a/services/codeclimate/codeclimate-analysis-redirector.service.js b/services/codeclimate/codeclimate-analysis-redirector.service.js index e70062db79129..d2b68b56defce 100644 --- a/services/codeclimate/codeclimate-analysis-redirector.service.js +++ b/services/codeclimate/codeclimate-analysis-redirector.service.js @@ -1,8 +1,6 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = [ +export default [ // http://github.com/badges/shields/issues/1387 // https://github.com/badges/shields/pull/3320#issuecomment-483795000 redirector({ diff --git a/services/codeclimate/codeclimate-analysis-redirector.tester.js b/services/codeclimate/codeclimate-analysis-redirector.tester.js index 2e6eb7e42c8fe..38531168c81bc 100644 --- a/services/codeclimate/codeclimate-analysis-redirector.tester.js +++ b/services/codeclimate/codeclimate-analysis-redirector.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'CodeclimateCoverageRedirector', title: 'Code Climate Coverage Redirector', pathPrefix: '/codeclimate', -})) +}) t.create('Maintainability letter alias') .get('/maintainability-letter/jekyll/jekyll.svg') diff --git a/services/codeclimate/codeclimate-analysis.service.js b/services/codeclimate/codeclimate-analysis.service.js index 2de65a67a1be4..811ceb6db1f97 100644 --- a/services/codeclimate/codeclimate-analysis.service.js +++ b/services/codeclimate/codeclimate-analysis.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { colorScale, letterScore } = require('../color-formatters') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService, NotFound } = require('..') -const { keywords, isLetterGrade, fetchRepo } = require('./codeclimate-common') +import Joi from 'joi' +import { colorScale, letterScore } from '../color-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService, NotFound } from '../index.js' +import { keywords, isLetterGrade, fetchRepo } from './codeclimate-common.js' const schema = Joi.object({ data: Joi.object({ @@ -87,7 +85,7 @@ const variantMap = { }, } -module.exports = class CodeclimateAnalysis extends BaseJsonService { +export default class CodeclimateAnalysis extends BaseJsonService { static category = 'analysis' static route = { base: 'codeclimate', diff --git a/services/codeclimate/codeclimate-analysis.tester.js b/services/codeclimate/codeclimate-analysis.tester.js index 33ee8fd13156a..9bab1043d1310 100644 --- a/services/codeclimate/codeclimate-analysis.tester.js +++ b/services/codeclimate/codeclimate-analysis.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { isIntegerPercentage } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { isIntegerPercentage } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() // Examples for this service can be found through the explore page: // https://codeclimate.com/explore diff --git a/services/codeclimate/codeclimate-common.js b/services/codeclimate/codeclimate-common.js index 94c441a5ca5e2..b987317b0bf1d 100644 --- a/services/codeclimate/codeclimate-common.js +++ b/services/codeclimate/codeclimate-common.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { NotFound } = require('..') +import Joi from 'joi' +import { NotFound } from '../index.js' const keywords = ['codeclimate'] @@ -44,8 +42,4 @@ async function fetchRepo(serviceInstance, { user, repo }) { return repoInfo } -module.exports = { - keywords, - isLetterGrade, - fetchRepo, -} +export { keywords, isLetterGrade, fetchRepo } diff --git a/services/codeclimate/codeclimate-coverage-redirector.service.js b/services/codeclimate/codeclimate-coverage-redirector.service.js index 57b440c855aaf..49997961887ad 100644 --- a/services/codeclimate/codeclimate-coverage-redirector.service.js +++ b/services/codeclimate/codeclimate-coverage-redirector.service.js @@ -1,8 +1,6 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = [ +export default [ // http://github.com/badges/shields/issues/1387 // https://github.com/badges/shields/pull/3320#issuecomment-483795000 redirector({ diff --git a/services/codeclimate/codeclimate-coverage-redirector.tester.js b/services/codeclimate/codeclimate-coverage-redirector.tester.js index 2ea8184631a30..cc0ead2a188ee 100644 --- a/services/codeclimate/codeclimate-coverage-redirector.tester.js +++ b/services/codeclimate/codeclimate-coverage-redirector.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'CodeclimateCoverageRedirector', title: 'Code Climate Coverage Redirector', pathPrefix: '/codeclimate', -})) +}) t.create('Top-level coverage shortcut') .get('/jekyll/jekyll.svg') diff --git a/services/codeclimate/codeclimate-coverage.service.js b/services/codeclimate/codeclimate-coverage.service.js index a58bce7b6db7f..9b7f81eb8a416 100644 --- a/services/codeclimate/codeclimate-coverage.service.js +++ b/services/codeclimate/codeclimate-coverage.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { coveragePercentage, letterScore } = require('../color-formatters') -const { BaseJsonService, NotFound } = require('..') -const { keywords, isLetterGrade, fetchRepo } = require('./codeclimate-common') +import Joi from 'joi' +import { coveragePercentage, letterScore } from '../color-formatters.js' +import { BaseJsonService, NotFound } from '../index.js' +import { keywords, isLetterGrade, fetchRepo } from './codeclimate-common.js' const schema = Joi.object({ data: Joi.object({ @@ -16,7 +14,7 @@ const schema = Joi.object({ }).allow(null), }).required() -module.exports = class CodeclimateCoverage extends BaseJsonService { +export default class CodeclimateCoverage extends BaseJsonService { static category = 'coverage' static route = { base: 'codeclimate', diff --git a/services/codeclimate/codeclimate-coverage.tester.js b/services/codeclimate/codeclimate-coverage.tester.js index de7c9acdc9a99..66ca3045126e1 100644 --- a/services/codeclimate/codeclimate-coverage.tester.js +++ b/services/codeclimate/codeclimate-coverage.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { isIntegerPercentage } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { isIntegerPercentage } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() // Examples for this service can be found through the explore page: // https://codeclimate.com/explore diff --git a/services/codecov/codecov-redirect.service.js b/services/codecov/codecov-redirect.service.js index 9d56de406e9b0..2707d2e180253 100644 --- a/services/codecov/codecov-redirect.service.js +++ b/services/codecov/codecov-redirect.service.js @@ -1,6 +1,4 @@ -'use strict' - -const { redirector } = require('..') +import { redirector } from '../index.js' const vcsSNameShortFormMap = { bb: 'bitbucket', @@ -8,7 +6,7 @@ const vcsSNameShortFormMap = { gl: 'gitlab', } -module.exports = [ +export default [ redirector({ category: 'coverage', route: { diff --git a/services/codecov/codecov-redirect.tester.js b/services/codecov/codecov-redirect.tester.js index 1a9154db681c2..4e23c04550b7f 100644 --- a/services/codecov/codecov-redirect.tester.js +++ b/services/codecov/codecov-redirect.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'CodecovTokenRedirect', title: 'CodecovTokenRedirect', pathPrefix: '/codecov', -})) +}) t.create('codecov token') .get('/c/token/abc123def456/gh/codecov/private-example.svg') diff --git a/services/codecov/codecov.service.js b/services/codecov/codecov.service.js index c5fb7d0761910..ecafc48cf9d8f 100644 --- a/services/codecov/codecov.service.js +++ b/services/codecov/codecov.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { coveragePercentage } = require('../color-formatters') -const { BaseSvgScrapingService } = require('..') -const { parseJson } = require('../../core/base-service/json') +import Joi from 'joi' +import { coveragePercentage } from '../color-formatters.js' +import { BaseSvgScrapingService } from '../index.js' +import { parseJson } from '../../core/base-service/json.js' // https://docs.codecov.io/reference#totals // A new repository that's been added but never had any coverage reports @@ -46,7 +44,7 @@ const documentation = `

` -module.exports = class Codecov extends BaseSvgScrapingService { +export default class Codecov extends BaseSvgScrapingService { static category = 'coverage' static route = { base: 'codecov/c', diff --git a/services/codecov/codecov.spec.js b/services/codecov/codecov.spec.js index ed54900d27360..d0f599a3fa0f6 100644 --- a/services/codecov/codecov.spec.js +++ b/services/codecov/codecov.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, forCases, given } = require('sazerac') -const Codecov = require('./codecov.service') +import { test, forCases, given } from 'sazerac' +import Codecov from './codecov.service.js' describe('Codecov', function () { test(Codecov.prototype.legacyTransform, () => { diff --git a/services/codecov/codecov.tester.js b/services/codecov/codecov.tester.js index e7e317007311b..4eeea1c609c43 100644 --- a/services/codecov/codecov.tester.js +++ b/services/codecov/codecov.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isIntegerPercentage } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isIntegerPercentage } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('gets coverage status') .get('/github/codecov/example-python.json') diff --git a/services/codefactor/codefactor-grade.service.js b/services/codefactor/codefactor-grade.service.js index 613efb13062bb..748a87950b671 100644 --- a/services/codefactor/codefactor-grade.service.js +++ b/services/codefactor/codefactor-grade.service.js @@ -1,14 +1,12 @@ -'use strict' - -const Joi = require('joi') -const { BaseSvgScrapingService } = require('..') -const { isValidGrade, gradeColor } = require('./codefactor-helpers') +import Joi from 'joi' +import { BaseSvgScrapingService } from '../index.js' +import { isValidGrade, gradeColor } from './codefactor-helpers.js' const schema = Joi.object({ message: isValidGrade, }).required() -module.exports = class CodeFactorGrade extends BaseSvgScrapingService { +export default class CodeFactorGrade extends BaseSvgScrapingService { static category = 'analysis' static route = { base: 'codefactor/grade', diff --git a/services/codefactor/codefactor-grade.spec.js b/services/codefactor/codefactor-grade.spec.js index d9b1a80f0d9d5..a4ba4d95e8928 100644 --- a/services/codefactor/codefactor-grade.spec.js +++ b/services/codefactor/codefactor-grade.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const CodeFactorGrade = require('./codefactor-grade.service') +import { test, given } from 'sazerac' +import CodeFactorGrade from './codefactor-grade.service.js' describe('CodeFactorGrade', function () { test(CodeFactorGrade.render, () => { diff --git a/services/codefactor/codefactor-grade.tester.js b/services/codefactor/codefactor-grade.tester.js index 1df7970214bb5..56be9a4fd3849 100644 --- a/services/codefactor/codefactor-grade.tester.js +++ b/services/codefactor/codefactor-grade.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isValidGrade } = require('./codefactor-helpers') +import { createServiceTester } from '../tester.js' +import { isValidGrade } from './codefactor-helpers.js' +export const t = await createServiceTester() t.create('Grade').get('/github/google/guava.json').expectBadge({ label: 'code quality', diff --git a/services/codefactor/codefactor-helpers.js b/services/codefactor/codefactor-helpers.js index 1672c89c96814..d110eabdfb591 100644 --- a/services/codefactor/codefactor-helpers.js +++ b/services/codefactor/codefactor-helpers.js @@ -1,6 +1,4 @@ -'use strict' - -const Joi = require('joi') +import Joi from 'joi' // https://support.codefactor.io/i14-glossary // https://github.com/badges/shields/issues/4269 @@ -31,4 +29,4 @@ function gradeColor(grade) { return color } -module.exports = { isValidGrade, gradeColor } +export { isValidGrade, gradeColor } diff --git a/services/codeship/codeship.service.js b/services/codeship/codeship.service.js index 1cac77ef25c46..d9a8bde1d6637 100644 --- a/services/codeship/codeship.service.js +++ b/services/codeship/codeship.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus, renderBuildStatusBadge } = require('../build-status') -const { BaseSvgScrapingService } = require('..') +import Joi from 'joi' +import { isBuildStatus, renderBuildStatusBadge } from '../build-status.js' +import { BaseSvgScrapingService } from '../index.js' const schema = Joi.object({ message: Joi.alternatives() @@ -26,7 +24,7 @@ const statusMap = { infrastructure_failure: 'failed', } -module.exports = class Codeship extends BaseSvgScrapingService { +export default class Codeship extends BaseSvgScrapingService { static category = 'build' static route = { base: 'codeship', pattern: ':projectId/:branch*' } diff --git a/services/codeship/codeship.spec.js b/services/codeship/codeship.spec.js index 37fbe1cd75673..0b0f52f5db6b9 100644 --- a/services/codeship/codeship.spec.js +++ b/services/codeship/codeship.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const Codeship = require('./codeship.service') +import { test, given } from 'sazerac' +import Codeship from './codeship.service.js' const pending = { message: 'pending', label: undefined, color: undefined } const notBuilt = { message: 'not built', label: undefined, color: undefined } diff --git a/services/codeship/codeship.tester.js b/services/codeship/codeship.tester.js index dce57d7ee4ce9..ffd179a44f0ba 100644 --- a/services/codeship/codeship.tester.js +++ b/services/codeship/codeship.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isBuildStatus } = require('../build-status') -const t = (module.exports = require('../tester').createServiceTester()) +import { isBuildStatus } from '../build-status.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('codeship (valid, no branch)') .get('/d6c1ddd0-16a3-0132-5f85-2e35c05e22b1.json') diff --git a/services/codetally/codetally.service.js b/services/codetally/codetally.service.js index 54716697ec882..118c55251ae30 100644 --- a/services/codetally/codetally.service.js +++ b/services/codetally/codetally.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = [ +export default [ deprecatedService({ category: 'funding', label: 'codetally', diff --git a/services/codetally/codetally.tester.js b/services/codetally/codetally.tester.js index 4aab0ce96c608..130451f9b026e 100644 --- a/services/codetally/codetally.tester.js +++ b/services/codetally/codetally.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'Codetally', title: 'Codetally', pathPrefix: '/codetally', -})) +}) t.create('no longer available') .get('/triggerman722/colorstrap.json') diff --git a/services/color-formatters.js b/services/color-formatters.js index ce9fa6e78b76b..de45ed9e3ebb2 100644 --- a/services/color-formatters.js +++ b/services/color-formatters.js @@ -2,9 +2,7 @@ * Commonly-used functions for determining the colour to use for a badge, * including colours based off download count, version number, etc. */ -'use strict' - -const moment = require('moment') +import moment from 'moment' function version(version) { if (typeof version !== 'string' && typeof version !== 'number') { @@ -106,7 +104,7 @@ function age(date) { return colorByAge(daysElapsed) } -module.exports = { +export { version, downloadCount, coveragePercentage, diff --git a/services/color-formatters.spec.js b/services/color-formatters.spec.js index 265b5094b957d..049c5fd2a1817 100644 --- a/services/color-formatters.spec.js +++ b/services/color-formatters.spec.js @@ -1,14 +1,12 @@ -'use strict' - -const { test, given, forCases } = require('sazerac') -const { expect } = require('chai') -const { +import { test, given, forCases } from 'sazerac' +import { expect } from 'chai' +import { coveragePercentage, colorScale, letterScore, age, version, -} = require('./color-formatters') +} from './color-formatters.js' describe('Color formatters', function () { const byPercentage = colorScale([Number.EPSILON, 80, 90, 100]) diff --git a/services/conda/conda-base.js b/services/conda/conda-base.js index 939cee58de984..d7cd3f7a0011b 100644 --- a/services/conda/conda-base.js +++ b/services/conda/conda-base.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' const condaSchema = Joi.object({ latest_version: Joi.string().required(), @@ -16,7 +14,7 @@ const condaSchema = Joi.object({ .required(), }).required() -module.exports = class BaseCondaService extends BaseJsonService { +export default class BaseCondaService extends BaseJsonService { static defaultBadgeData = { label: 'conda' } async fetch({ channel, pkg }) { diff --git a/services/conda/conda-downloads.service.js b/services/conda/conda-downloads.service.js index 6fa6962ef7239..8b7f54b4a62d7 100644 --- a/services/conda/conda-downloads.service.js +++ b/services/conda/conda-downloads.service.js @@ -1,10 +1,8 @@ -'use strict' +import { metric } from '../text-formatters.js' +import { downloadCount } from '../color-formatters.js' +import BaseCondaService from './conda-base.js' -const { metric } = require('../text-formatters') -const { downloadCount } = require('../color-formatters') -const BaseCondaService = require('./conda-base') - -module.exports = class CondaDownloads extends BaseCondaService { +export default class CondaDownloads extends BaseCondaService { static category = 'downloads' static route = { base: 'conda', pattern: ':variant(d|dn)/:channel/:pkg' } diff --git a/services/conda/conda-downloads.tester.js b/services/conda/conda-downloads.tester.js index 1d86806051437..796cb38551b4d 100644 --- a/services/conda/conda-downloads.tester.js +++ b/services/conda/conda-downloads.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('downloads').get('/d/conda-forge/zlib.json').expectBadge({ label: 'conda|downloads', diff --git a/services/conda/conda-license.service.js b/services/conda/conda-license.service.js index d2ecf97870174..b6e936cbc11a7 100644 --- a/services/conda/conda-license.service.js +++ b/services/conda/conda-license.service.js @@ -1,15 +1,13 @@ -'use strict' - -const Joi = require('joi') -const { renderLicenseBadge } = require('../licenses') -const toArray = require('../../core/base-service/to-array') -const BaseCondaService = require('./conda-base') +import Joi from 'joi' +import { renderLicenseBadge } from '../licenses.js' +import toArray from '../../core/base-service/to-array.js' +import BaseCondaService from './conda-base.js' const schema = Joi.object({ license: Joi.string().required(), }).required() -module.exports = class CondaLicense extends BaseCondaService { +export default class CondaLicense extends BaseCondaService { static category = 'license' static route = { base: 'conda', pattern: 'l/:channel/:pkg' } diff --git a/services/conda/conda-license.tester.js b/services/conda/conda-license.tester.js index 7cffa6ca27f39..cfafec49a8b5b 100644 --- a/services/conda/conda-license.tester.js +++ b/services/conda/conda-license.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('license') .get('/l/conda-forge/setuptools.json') diff --git a/services/conda/conda-platform.service.js b/services/conda/conda-platform.service.js index 73444a7be4da3..fdf7cc13aa322 100644 --- a/services/conda/conda-platform.service.js +++ b/services/conda/conda-platform.service.js @@ -1,8 +1,6 @@ -'use strict' +import BaseCondaService from './conda-base.js' -const BaseCondaService = require('./conda-base') - -module.exports = class CondaPlatform extends BaseCondaService { +export default class CondaPlatform extends BaseCondaService { static category = 'platform-support' static route = { base: 'conda', pattern: ':variant(p|pn)/:channel/:pkg' } diff --git a/services/conda/conda-platform.tester.js b/services/conda/conda-platform.tester.js index aa06463aaf116..31545824142ad 100644 --- a/services/conda/conda-platform.tester.js +++ b/services/conda/conda-platform.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') +import Joi from 'joi' +import { createServiceTester } from '../tester.js' const isCondaPlatform = Joi.string().regex(/^\w+-[\w\d]+( \| \w+-[\w\d]+)*$/) -const t = (module.exports = require('../tester').createServiceTester()) +export const t = await createServiceTester() t.create('platform').get('/p/conda-forge/zlib.json').expectBadge({ label: 'conda|platform', diff --git a/services/conda/conda-version.service.js b/services/conda/conda-version.service.js index 9491912ab5d64..486dba8a0d8c8 100644 --- a/services/conda/conda-version.service.js +++ b/services/conda/conda-version.service.js @@ -1,10 +1,8 @@ -'use strict' +import { addv as versionText } from '../text-formatters.js' +import { version as versionColor } from '../color-formatters.js' +import BaseCondaService from './conda-base.js' -const { addv: versionText } = require('../text-formatters') -const { version: versionColor } = require('../color-formatters') -const BaseCondaService = require('./conda-base') - -module.exports = class CondaVersion extends BaseCondaService { +export default class CondaVersion extends BaseCondaService { static category = 'version' static route = { base: 'conda', pattern: ':variant(v|vn)/:channel/:pkg' } diff --git a/services/conda/conda-version.tester.js b/services/conda/conda-version.tester.js index 4ffc6516a251e..90d9af9f0ad69 100644 --- a/services/conda/conda-version.tester.js +++ b/services/conda/conda-version.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isVPlusTripleDottedVersion } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isVPlusTripleDottedVersion } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('version').get('/v/conda-forge/zlib.json').expectBadge({ label: 'conda|conda-forge', diff --git a/services/continuousphp/continuousphp.service.js b/services/continuousphp/continuousphp.service.js index 01883e775fdfe..6d7d147f5eb66 100644 --- a/services/continuousphp/continuousphp.service.js +++ b/services/continuousphp/continuousphp.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ category: 'build', route: { base: 'continuousphp', diff --git a/services/continuousphp/continuousphp.tester.js b/services/continuousphp/continuousphp.tester.js index fe2e36560bf5f..c68eb20beaf0a 100644 --- a/services/continuousphp/continuousphp.tester.js +++ b/services/continuousphp/continuousphp.tester.js @@ -1,11 +1,9 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'continuousphp', title: 'Continuousphp', -})) +}) t.create('no longer available (previously build status on default branch)') .get('/git-hub/doctrine/dbal.json') diff --git a/services/contributor-count.js b/services/contributor-count.js index 523a5ace78235..60c866476629f 100644 --- a/services/contributor-count.js +++ b/services/contributor-count.js @@ -1,6 +1,4 @@ -'use strict' - -const { metric } = require('./text-formatters') +import { metric } from './text-formatters.js' function contributorColor(contributorCount) { if (contributorCount > 2) { @@ -20,7 +18,4 @@ function renderContributorBadge({ label, contributorCount }) { } } -module.exports = { - contributorColor, - renderContributorBadge, -} +export { contributorColor, renderContributorBadge } diff --git a/services/contributor-count.spec.js b/services/contributor-count.spec.js index 1ebdf4d31e32b..ba4e0fe6cbfb8 100644 --- a/services/contributor-count.spec.js +++ b/services/contributor-count.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const { renderContributorBadge } = require('./contributor-count') +import { test, given } from 'sazerac' +import { renderContributorBadge } from './contributor-count.js' describe('Contributor count helpers', function () { test(renderContributorBadge, () => { diff --git a/services/cookbook/cookbook.service.js b/services/cookbook/cookbook.service.js index 0e45f12abcada..4b6604d531524 100644 --- a/services/cookbook/cookbook.service.js +++ b/services/cookbook/cookbook.service.js @@ -1,12 +1,10 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ version: Joi.string().required() }).required() -module.exports = class Cookbook extends BaseJsonService { +export default class Cookbook extends BaseJsonService { static category = 'version' static route = { base: 'cookbook/v', pattern: ':cookbook' } diff --git a/services/cookbook/cookbook.tester.js b/services/cookbook/cookbook.tester.js index 9fa5eba654e40..2cecfad4678b8 100644 --- a/services/cookbook/cookbook.tester.js +++ b/services/cookbook/cookbook.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isVPlusDottedVersionAtLeastOne } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isVPlusDottedVersionAtLeastOne } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('version').get('/chef-sugar.json').expectBadge({ label: 'cookbook', diff --git a/services/coveralls/coveralls-redirector.service.js b/services/coveralls/coveralls-redirector.service.js index b1eb9550f2409..1fd09fef647f9 100644 --- a/services/coveralls/coveralls-redirector.service.js +++ b/services/coveralls/coveralls-redirector.service.js @@ -1,8 +1,6 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = [ +export default [ redirector({ name: 'CoverallsGitHubRedirect', category: 'coverage', diff --git a/services/coveralls/coveralls-redirector.tester.js b/services/coveralls/coveralls-redirector.tester.js index 48af1e3356915..de826f7cd7aef 100644 --- a/services/coveralls/coveralls-redirector.tester.js +++ b/services/coveralls/coveralls-redirector.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'CoverallsGitHubRedirect', title: 'Coveralls GitHub Redirector', pathPrefix: '/coveralls', -})) +}) t.create('Coveralls VCS type missing') .get('/lemurheavy/coveralls-ruby.svg') diff --git a/services/coveralls/coveralls.service.js b/services/coveralls/coveralls.service.js index 235927a6b3082..46b0d556a72a9 100644 --- a/services/coveralls/coveralls.service.js +++ b/services/coveralls/coveralls.service.js @@ -1,14 +1,12 @@ -'use strict' - -const Joi = require('joi') -const { coveragePercentage } = require('../color-formatters') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { coveragePercentage } from '../color-formatters.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ covered_percent: Joi.number().min(0).max(100).required(), }).required() -module.exports = class Coveralls extends BaseJsonService { +export default class Coveralls extends BaseJsonService { static category = 'coverage' static route = { base: 'coveralls', diff --git a/services/coveralls/coveralls.tester.js b/services/coveralls/coveralls.tester.js index d530078cb53c7..415dfa6857136 100644 --- a/services/coveralls/coveralls.tester.js +++ b/services/coveralls/coveralls.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isIntegerPercentage } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isIntegerPercentage } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('github coverage') .get('/github/jekyll/jekyll.json') diff --git a/services/coverity/coverity-on-demand.service.js b/services/coverity/coverity-on-demand.service.js index 6f6d0b52b4a4f..3b2705ecc7255 100644 --- a/services/coverity/coverity-on-demand.service.js +++ b/services/coverity/coverity-on-demand.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ route: { base: 'coverity/ondemand', pattern: ':various+', diff --git a/services/coverity/coverity-on-demand.tester.js b/services/coverity/coverity-on-demand.tester.js index 09199d915029a..cdc0f561b88c3 100644 --- a/services/coverity/coverity-on-demand.tester.js +++ b/services/coverity/coverity-on-demand.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'CoverityOnDemand', title: 'Coverity On Demand', pathPrefix: '/coverity/ondemand', -})) +}) t.create('no longer available (streams)') .get('/streams/44b25sjc9l3ntc2ngfi29tngro.json') diff --git a/services/coverity/coverity-scan.service.js b/services/coverity/coverity-scan.service.js index 1643786e91ea2..a28e7d4f1da36 100644 --- a/services/coverity/coverity-scan.service.js +++ b/services/coverity/coverity-scan.service.js @@ -1,14 +1,12 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' const messageRegex = /passed|passed .* new defects|pending|failed/ const schema = Joi.object({ message: Joi.string().regex(messageRegex).required(), }).required() -module.exports = class CoverityScan extends BaseJsonService { +export default class CoverityScan extends BaseJsonService { static category = 'analysis' static route = { base: 'coverity/scan', pattern: ':projectId' } diff --git a/services/coverity/coverity-scan.tester.js b/services/coverity/coverity-scan.tester.js index e8a997cacde5e..83aa2b092eda3 100644 --- a/services/coverity/coverity-scan.tester.js +++ b/services/coverity/coverity-scan.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('known project id') .get('/3997.json') diff --git a/services/cpan/cpan-license.service.js b/services/cpan/cpan-license.service.js index bcf2433863fd8..53ea4f4a5f3bb 100644 --- a/services/cpan/cpan-license.service.js +++ b/services/cpan/cpan-license.service.js @@ -1,8 +1,6 @@ -'use strict' +import BaseCpanService from './cpan.js' -const BaseCpanService = require('./cpan') - -module.exports = class CpanLicense extends BaseCpanService { +export default class CpanLicense extends BaseCpanService { static category = 'license' static route = { base: 'cpan/l', pattern: ':packageName' } diff --git a/services/cpan/cpan-license.tester.js b/services/cpan/cpan-license.tester.js index fb9f4dfa76dd0..8cfba3c5e1960 100644 --- a/services/cpan/cpan-license.tester.js +++ b/services/cpan/cpan-license.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('license (valid)').get('/Config-Augeas.json').expectBadge({ label: 'license', diff --git a/services/cpan/cpan-version.service.js b/services/cpan/cpan-version.service.js index b54ec9c98899e..92cba8d084720 100644 --- a/services/cpan/cpan-version.service.js +++ b/services/cpan/cpan-version.service.js @@ -1,9 +1,7 @@ -'use strict' +import { renderVersionBadge } from '../version.js' +import BaseCpanService from './cpan.js' -const { renderVersionBadge } = require('../version') -const BaseCpanService = require('./cpan') - -module.exports = class CpanVersion extends BaseCpanService { +export default class CpanVersion extends BaseCpanService { static category = 'version' static route = { base: 'cpan/v', pattern: ':packageName' } diff --git a/services/cpan/cpan-version.tester.js b/services/cpan/cpan-version.tester.js index a9f6c31c3218c..402601004d6f1 100644 --- a/services/cpan/cpan-version.tester.js +++ b/services/cpan/cpan-version.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isVPlusDottedVersionAtLeastOne } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isVPlusDottedVersionAtLeastOne } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('version (valid)').get('/Config-Augeas.json').expectBadge({ label: 'cpan', diff --git a/services/cpan/cpan.js b/services/cpan/cpan.js index 56af7786617a3..96d0c4c941332 100644 --- a/services/cpan/cpan.js +++ b/services/cpan/cpan.js @@ -1,14 +1,12 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ version: Joi.alternatives(Joi.string().required(), Joi.number().required()), license: Joi.array().items(Joi.string()).min(1).required(), }).required() -module.exports = class BaseCpanService extends BaseJsonService { +export default class BaseCpanService extends BaseJsonService { static defaultBadgeData = { label: 'cpan' } async fetch({ packageName }) { diff --git a/services/cran/cran.service.js b/services/cran/cran.service.js index 850d6e976cdd4..bb25656e21809 100644 --- a/services/cran/cran.service.js +++ b/services/cran/cran.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ License: Joi.string().required(), @@ -66,4 +64,4 @@ class CranVersion extends BaseCranService { } } -module.exports = { CranLicense, CranVersion } +export { CranLicense, CranVersion } diff --git a/services/cran/cran.tester.js b/services/cran/cran.tester.js index 3a1161e97ca34..1581c8a7ddc70 100644 --- a/services/cran/cran.tester.js +++ b/services/cran/cran.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' +import { isVPlusTripleDottedVersion } from '../test-validators.js' -const { ServiceTester } = require('../tester') -const { isVPlusTripleDottedVersion } = require('../test-validators') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'cran', title: 'CRAN/METACRAN', -})) +}) t.create('version (valid)').get('/v/devtools.json').expectBadge({ label: 'cran', diff --git a/services/crates/crates-base.js b/services/crates/crates-base.js index 855072761c4f6..e87fe5cea875f 100644 --- a/services/crates/crates-base.js +++ b/services/crates/crates-base.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' const keywords = ['Rust'] @@ -51,4 +49,4 @@ class BaseCratesService extends BaseJsonService { } } -module.exports = { BaseCratesService, keywords } +export { BaseCratesService, keywords } diff --git a/services/crates/crates-downloads.service.js b/services/crates/crates-downloads.service.js index fd89ebcb53117..ec442f83657a2 100644 --- a/services/crates/crates-downloads.service.js +++ b/services/crates/crates-downloads.service.js @@ -1,11 +1,9 @@ -'use strict' +import { downloadCount as downloadCountColor } from '../color-formatters.js' +import { metric } from '../text-formatters.js' +import { InvalidParameter, NotFound } from '../index.js' +import { BaseCratesService, keywords } from './crates-base.js' -const { downloadCount: downloadCountColor } = require('../color-formatters') -const { metric } = require('../text-formatters') -const { InvalidParameter, NotFound } = require('..') -const { BaseCratesService, keywords } = require('./crates-base') - -module.exports = class CratesDownloads extends BaseCratesService { +export default class CratesDownloads extends BaseCratesService { static category = 'downloads' static route = { base: 'crates', diff --git a/services/crates/crates-downloads.tester.js b/services/crates/crates-downloads.tester.js index da064bf954759..9e2e13ccf47aa 100644 --- a/services/crates/crates-downloads.tester.js +++ b/services/crates/crates-downloads.tester.js @@ -1,13 +1,11 @@ -'use strict' +import { ServiceTester } from '../tester.js' +import { isMetric } from '../test-validators.js' -const { ServiceTester } = require('../tester') -const { isMetric } = require('../test-validators') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'crates', title: 'crates.io', pathPrefix: '/crates', -})) +}) t.create('total downloads') .get('/d/libc.json') diff --git a/services/crates/crates-license.service.js b/services/crates/crates-license.service.js index bb12937c09bf4..c32ab9517bd8f 100644 --- a/services/crates/crates-license.service.js +++ b/services/crates/crates-license.service.js @@ -1,8 +1,6 @@ -'use strict' +import { BaseCratesService, keywords } from './crates-base.js' -const { BaseCratesService, keywords } = require('./crates-base') - -module.exports = class CratesLicense extends BaseCratesService { +export default class CratesLicense extends BaseCratesService { static category = 'license' static route = { base: 'crates/l', pattern: ':crate/:version?' } diff --git a/services/crates/crates-license.tester.js b/services/crates/crates-license.tester.js index 79d711034ea09..390295433b0bd 100644 --- a/services/crates/crates-license.tester.js +++ b/services/crates/crates-license.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'crates', title: 'crates.io', pathPrefix: '/crates/l', -})) +}) t.create('license') .get('/libc.json') diff --git a/services/crates/crates-version.service.js b/services/crates/crates-version.service.js index 4f631dae9ecc9..be7a6d1c18682 100644 --- a/services/crates/crates-version.service.js +++ b/services/crates/crates-version.service.js @@ -1,10 +1,8 @@ -'use strict' +import { renderVersionBadge } from '../version.js' +import { InvalidResponse } from '../index.js' +import { BaseCratesService, keywords } from './crates-base.js' -const { renderVersionBadge } = require('../version') -const { InvalidResponse } = require('..') -const { BaseCratesService, keywords } = require('./crates-base') - -module.exports = class CratesVersion extends BaseCratesService { +export default class CratesVersion extends BaseCratesService { static category = 'version' static route = { base: 'crates/v', pattern: ':crate' } diff --git a/services/crates/crates-version.spec.js b/services/crates/crates-version.spec.js index 97898f6b8a4a3..7ceba9f3ba733 100644 --- a/services/crates/crates-version.spec.js +++ b/services/crates/crates-version.spec.js @@ -1,9 +1,7 @@ -'use strict' - -const { test, given } = require('sazerac') -const { expect } = require('chai') -const { InvalidResponse } = require('..') -const CratesVersion = require('./crates-version.service') +import { test, given } from 'sazerac' +import { expect } from 'chai' +import { InvalidResponse } from '../index.js' +import CratesVersion from './crates-version.service.js' describe('CratesVersion', function () { test(CratesVersion.prototype.transform, () => { diff --git a/services/crates/crates-version.tester.js b/services/crates/crates-version.tester.js index 4fc19952d8bd0..3242c1cd5a82e 100644 --- a/services/crates/crates-version.tester.js +++ b/services/crates/crates-version.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isSemver } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isSemver } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('version') .get('/libc.json') diff --git a/services/criterion/constants.js b/services/criterion/constants.js index 15d2c3041e4be..440bb822c85d4 100644 --- a/services/criterion/constants.js +++ b/services/criterion/constants.js @@ -1,8 +1,4 @@ -'use strict' - -module.exports = Object.freeze({ - IMPROVED_STATUS: 'improved', - REGRESSED_STATUS: 'regressed', - NO_CHANGE_STATUS: 'no change', - NOT_FOUND_STATUS: 'no status found', -}) +export const IMPROVED_STATUS = 'improved' +export const REGRESSED_STATUS = 'regressed' +export const NO_CHANGE_STATUS = 'no change' +export const NOT_FOUND_STATUS = 'no status found' diff --git a/services/criterion/criterion.service.js b/services/criterion/criterion.service.js index 0fd70f95db410..6df7615a94fa9 100644 --- a/services/criterion/criterion.service.js +++ b/services/criterion/criterion.service.js @@ -1,13 +1,11 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') -const { +import Joi from 'joi' +import { BaseJsonService } from '../index.js' +import { IMPROVED_STATUS, NOT_FOUND_STATUS, REGRESSED_STATUS, NO_CHANGE_STATUS, -} = require('./constants') +} from './constants.js' const schema = Joi.string() .allow(IMPROVED_STATUS, REGRESSED_STATUS, NO_CHANGE_STATUS) @@ -22,7 +20,7 @@ const schema = Joi.string() * API Documentation: * - https://app.swaggerhub.com/apis-docs/chmoder/Criterion.dev */ -module.exports = class Criterion extends BaseJsonService { +export default class Criterion extends BaseJsonService { static category = 'analysis' static route = { base: 'criterion', pattern: ':user/:repo' } diff --git a/services/criterion/criterion.tester.js b/services/criterion/criterion.tester.js index f297d44d2492e..9e476514d822c 100644 --- a/services/criterion/criterion.tester.js +++ b/services/criterion/criterion.tester.js @@ -1,13 +1,12 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) -const { +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +import { IMPROVED_STATUS, REGRESSED_STATUS, NO_CHANGE_STATUS, NOT_FOUND_STATUS, -} = require('./constants') +} from './constants.js' +export const t = await createServiceTester() const isStatus = Joi.string() .allow(IMPROVED_STATUS, REGRESSED_STATUS, NOT_FOUND_STATUS, NO_CHANGE_STATUS) diff --git a/services/ctan/ctan.service.js b/services/ctan/ctan.service.js index 4e8d95c3ee1fc..e6a97345cf26a 100644 --- a/services/ctan/ctan.service.js +++ b/services/ctan/ctan.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { renderLicenseBadge } = require('../licenses') -const { renderVersionBadge } = require('../version') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { renderLicenseBadge } from '../licenses.js' +import { renderVersionBadge } from '../version.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ license: Joi.array().items(Joi.string()).single(), @@ -73,7 +71,4 @@ class CtanVersion extends BaseCtanService { } } -module.exports = { - CtanLicense, - CtanVersion, -} +export { CtanLicense, CtanVersion } diff --git a/services/ctan/ctan.tester.js b/services/ctan/ctan.tester.js index 29268a604e2db..10f4386a2b7c4 100644 --- a/services/ctan/ctan.tester.js +++ b/services/ctan/ctan.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' +import { isVPlusDottedVersionAtLeastOne } from '../test-validators.js' -const { ServiceTester } = require('../tester') -const { isVPlusDottedVersionAtLeastOne } = require('../test-validators') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'ctan', title: 'Comprehensive TEX Archive Network', -})) +}) t.create('license').get('/l/novel.json').expectBadge({ label: 'license', diff --git a/services/date/date.service.js b/services/date/date.service.js index d01f3f973ef5c..32fda7de30e4f 100644 --- a/services/date/date.service.js +++ b/services/date/date.service.js @@ -1,7 +1,5 @@ -'use strict' - -const { formatRelativeDate } = require('../text-formatters') -const { BaseService } = require('..') +import { formatRelativeDate } from '../text-formatters.js' +import { BaseService } from '../index.js' const documentation = `

@@ -9,7 +7,7 @@ const documentation = `

` -module.exports = class Date extends BaseService { +export default class Date extends BaseService { static category = 'other' static route = { base: 'date', pattern: ':timestamp([0-9]+)' } diff --git a/services/date/date.tester.js b/services/date/date.tester.js index 3e0135bd01d53..ec5000da23e66 100644 --- a/services/date/date.tester.js +++ b/services/date/date.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' +import { isRelativeFormattedDate } from '../test-validators.js' -const { ServiceTester } = require('../tester') -const { isRelativeFormattedDate } = require('../test-validators') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'date', title: 'Relative Date Tests', -})) +}) t.create('Relative date') .get('/1540814400.json') diff --git a/services/david/david.service.js b/services/david/david.service.js index 18f499aa8d471..67e171d93b08e 100644 --- a/services/david/david.service.js +++ b/services/david/david.service.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ status: Joi.allow( @@ -40,7 +38,7 @@ const statusMap = { }, } -module.exports = class David extends BaseJsonService { +export default class David extends BaseJsonService { static category = 'dependencies' static route = { base: 'david', diff --git a/services/david/david.tester.js b/services/david/david.tester.js index 275e702ab17e2..b7e4ac0761c24 100644 --- a/services/david/david.tester.js +++ b/services/david/david.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isDependencyStatus = Joi.string().valid( 'insecure', diff --git a/services/debian/debian.service.js b/services/debian/debian.service.js index c113ca13e0d11..404cc75b3d469 100644 --- a/services/debian/debian.service.js +++ b/services/debian/debian.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { latest, renderVersionBadge } = require('../version') -const { BaseJsonService, NotFound, InvalidResponse } = require('..') +import Joi from 'joi' +import { latest, renderVersionBadge } from '../version.js' +import { BaseJsonService, NotFound, InvalidResponse } from '../index.js' const schema = Joi.array() .items( @@ -18,7 +16,7 @@ const schema = Joi.array() const defaultDistribution = 'stable' -module.exports = class Debian extends BaseJsonService { +export default class Debian extends BaseJsonService { static category = 'version' static route = { base: 'debian/v', diff --git a/services/debian/debian.tester.js b/services/debian/debian.tester.js index 046c31d1e184b..d56026c476516 100644 --- a/services/debian/debian.tester.js +++ b/services/debian/debian.tester.js @@ -1,9 +1,6 @@ -'use strict' - -const { - isVPlusDottedVersionNClausesWithOptionalSuffixAndEpoch, -} = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isVPlusDottedVersionNClausesWithOptionalSuffixAndEpoch } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Debian package (default distribution, valid)') .get('/apt.json') diff --git a/services/debug/debug.service.js b/services/debug/debug.service.js index b24d61c671068..93dc625deaf3a 100644 --- a/services/debug/debug.service.js +++ b/services/debug/debug.service.js @@ -1,11 +1,9 @@ -'use strict' - -const { BaseService } = require('..') +import { BaseService } from '../index.js' const serverStartTime = new Date(new Date().toGMTString()) let bitFlip = false -module.exports = class Debug extends BaseService { +export default class Debug extends BaseService { static category = 'debug' static route = { base: 'debug', pattern: ':variant(time|starttime|flip)' } diff --git a/services/debug/debug.tester.js b/services/debug/debug.tester.js index 2885b9479d185..f57dcaf34141e 100644 --- a/services/debug/debug.tester.js +++ b/services/debug/debug.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('start time') .get('/starttime.json') diff --git a/services/dependabot/dependabot.service.js b/services/dependabot/dependabot.service.js index f3e121f28d578..57d2cf3a31106 100644 --- a/services/dependabot/dependabot.service.js +++ b/services/dependabot/dependabot.service.js @@ -1,14 +1,12 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ status: Joi.string().required(), colour: Joi.string().required(), }) -module.exports = class DependabotSemverCompatibility extends BaseJsonService { +export default class DependabotSemverCompatibility extends BaseJsonService { static category = 'analysis' static route = { base: 'dependabot/semver', diff --git a/services/dependabot/dependabot.tester.js b/services/dependabot/dependabot.tester.js index aa920d84d5276..9ac85a9e1ee0b 100644 --- a/services/dependabot/dependabot.tester.js +++ b/services/dependabot/dependabot.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isIntegerPercentage } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isIntegerPercentage } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('semver stability (valid)').get('/bundler/puma.json').expectBadge({ label: 'semver stability', diff --git a/services/depfu/depfu.service.js b/services/depfu/depfu.service.js index 8be46d36a41ea..b35daf9f904f3 100644 --- a/services/depfu/depfu.service.js +++ b/services/depfu/depfu.service.js @@ -1,14 +1,12 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' const depfuSchema = Joi.object({ text: Joi.string().required(), colorscheme: Joi.string().required(), }).required() -module.exports = class Depfu extends BaseJsonService { +export default class Depfu extends BaseJsonService { static category = 'dependencies' static route = { base: 'depfu', pattern: ':user/:repo' } static examples = [ diff --git a/services/depfu/depfu.tester.js b/services/depfu/depfu.tester.js index 957704f3c47cb..04aeaf2b02cf9 100644 --- a/services/depfu/depfu.tester.js +++ b/services/depfu/depfu.tester.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { ServiceTester } = require('../tester') +import Joi from 'joi' +import { ServiceTester } from '../tester.js' const isDependencyStatus = Joi.string().valid( 'insecure', @@ -10,7 +8,7 @@ const isDependencyStatus = Joi.string().valid( 'stale' ) -const t = (module.exports = new ServiceTester({ id: 'depfu', title: 'Depfu' })) +export const t = new ServiceTester({ id: 'depfu', title: 'Depfu' }) t.create('depfu dependencies (valid)') .get('/depfu/example-ruby.json') diff --git a/services/deprecation-helpers.js b/services/deprecation-helpers.js index d01055bd004d8..fb6ecc6b7968b 100644 --- a/services/deprecation-helpers.js +++ b/services/deprecation-helpers.js @@ -1,6 +1,4 @@ -'use strict' - -const { Deprecated } = require('.') +import { Deprecated } from './index.js' function enforceDeprecation(effectiveDate) { if (Date.now() >= effectiveDate.getTime()) { @@ -8,6 +6,4 @@ function enforceDeprecation(effectiveDate) { } } -module.exports = { - enforceDeprecation, -} +export { enforceDeprecation } diff --git a/services/deprecation-helpers.spec.js b/services/deprecation-helpers.spec.js index 63632cc7e0243..34779dad7f9a3 100644 --- a/services/deprecation-helpers.spec.js +++ b/services/deprecation-helpers.spec.js @@ -1,8 +1,6 @@ -'use strict' - -const { expect } = require('chai') -const { Deprecated } = require('../core/base-service/errors') -const { enforceDeprecation } = require('./deprecation-helpers') +import { expect } from 'chai' +import { Deprecated } from '../core/base-service/errors.js' +import { enforceDeprecation } from './deprecation-helpers.js' describe('enforceDeprecation', function () { it('throws Deprecated for a date in the past', function () { diff --git a/services/discord/discord.service.js b/services/discord/discord.service.js index 7e510d0cad047..65837b9a35004 100644 --- a/services/discord/discord.service.js +++ b/services/discord/discord.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ presence_count: nonNegativeInteger, @@ -24,7 +22,7 @@ const documentation = ` ` -module.exports = class Discord extends BaseJsonService { +export default class Discord extends BaseJsonService { static category = 'chat' static route = { diff --git a/services/discord/discord.spec.js b/services/discord/discord.spec.js index 926ac9859da35..4dbbeae36b858 100644 --- a/services/discord/discord.spec.js +++ b/services/discord/discord.spec.js @@ -1,9 +1,7 @@ -'use strict' - -const { expect } = require('chai') -const nock = require('nock') -const { cleanUpNockAfterEach, defaultContext } = require('../test-helpers') -const Discord = require('./discord.service') +import { expect } from 'chai' +import nock from 'nock' +import { cleanUpNockAfterEach, defaultContext } from '../test-helpers.js' +import Discord from './discord.service.js' describe('Discord', function () { cleanUpNockAfterEach() diff --git a/services/discord/discord.tester.js b/services/discord/discord.tester.js index 694775133a684..4e9ca9d6d627a 100644 --- a/services/discord/discord.tester.js +++ b/services/discord/discord.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('gets status for Reactiflux') .get('/102860784329052160.json') diff --git a/services/discourse/discourse-redirect.service.js b/services/discourse/discourse-redirect.service.js index 72d265fe109e7..f1285eba110b8 100644 --- a/services/discourse/discourse-redirect.service.js +++ b/services/discourse/discourse-redirect.service.js @@ -1,8 +1,6 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = [ +export default [ redirector({ category: 'chat', route: { diff --git a/services/discourse/discourse-redirect.tester.js b/services/discourse/discourse-redirect.tester.js index 772eb3465873a..6dce032f5b321 100644 --- a/services/discourse/discourse-redirect.tester.js +++ b/services/discourse/discourse-redirect.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'DiscourseRedirect', title: 'DiscourseRedirect', pathPrefix: '/discourse', -})) +}) t.create('discourse status') .get('/https/meta.discourse.org/status.svg') diff --git a/services/discourse/discourse.service.js b/services/discourse/discourse.service.js index 7037fca298b97..e6c1322c38300 100644 --- a/services/discourse/discourse.service.js +++ b/services/discourse/discourse.service.js @@ -1,10 +1,8 @@ -'use strict' - -const camelcase = require('camelcase') -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger, optionalUrl } = require('../validators') -const { BaseJsonService } = require('..') +import camelcase from 'camelcase' +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger, optionalUrl } from '../validators.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ topic_count: nonNegativeInteger, @@ -105,4 +103,4 @@ const metricIntegrations = [ { metricName: 'likes', property: 'like_count' }, ].map(DiscourseMetricIntegrationFactory) -module.exports = [...metricIntegrations, DiscourseStatus] +export default [...metricIntegrations, DiscourseStatus] diff --git a/services/discourse/discourse.tester.js b/services/discourse/discourse.tester.js index a074fe85e8dab..dc779eb291a45 100644 --- a/services/discourse/discourse.tester.js +++ b/services/discourse/discourse.tester.js @@ -1,12 +1,10 @@ -'use strict' +import Joi from 'joi' +import { ServiceTester } from '../tester.js' -const Joi = require('joi') -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'discourse', title: 'Discourse', -})) +}) const data = { topic_count: 22513, diff --git a/services/dockbit/dockbit.service.js b/services/dockbit/dockbit.service.js index f8b2e9028487b..c9ecc64ddcc0e 100644 --- a/services/dockbit/dockbit.service.js +++ b/services/dockbit/dockbit.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ category: 'build', route: { base: 'dockbit', diff --git a/services/dockbit/dockbit.tester.js b/services/dockbit/dockbit.tester.js index 4d9ef389a8321..76029da3c424c 100644 --- a/services/dockbit/dockbit.tester.js +++ b/services/dockbit/dockbit.tester.js @@ -1,11 +1,9 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'dockbit', title: 'Dockbit', -})) +}) t.create('no longer available (previously image size)') .get('/image-size/_/ubuntu/latest.json') diff --git a/services/docker/docker-automated.service.js b/services/docker/docker-automated.service.js index c48a57d63a730..ba28af2990520 100644 --- a/services/docker/docker-automated.service.js +++ b/services/docker/docker-automated.service.js @@ -1,18 +1,16 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') -const { +import Joi from 'joi' +import { BaseJsonService } from '../index.js' +import { dockerBlue, buildDockerUrl, getDockerHubUser, -} = require('./docker-helpers') +} from './docker-helpers.js' const automatedBuildSchema = Joi.object({ is_automated: Joi.boolean().required(), }).required() -module.exports = class DockerAutomatedBuild extends BaseJsonService { +export default class DockerAutomatedBuild extends BaseJsonService { static category = 'build' static route = buildDockerUrl('automated') static examples = [ diff --git a/services/docker/docker-automated.tester.js b/services/docker/docker-automated.tester.js index 4cc144d7ceb9a..f52ae96d0db69 100644 --- a/services/docker/docker-automated.tester.js +++ b/services/docker/docker-automated.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) -const { dockerBlue } = require('./docker-helpers') +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +import { dockerBlue } from './docker-helpers.js' +export const t = await createServiceTester() const isAutomatedBuildStatus = Joi.string().valid('automated', 'manual') diff --git a/services/docker/docker-build.service.js b/services/docker/docker-build.service.js index c98d5ada68863..7c4d0985f35f5 100644 --- a/services/docker/docker-build.service.js +++ b/services/docker/docker-build.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ category: 'build', route: { base: 'docker/build', diff --git a/services/docker/docker-build.tester.js b/services/docker/docker-build.tester.js index efc4fb259791f..9d5876845948d 100644 --- a/services/docker/docker-build.tester.js +++ b/services/docker/docker-build.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'dockerbuild', title: 'DockerBuild', pathPrefix: '/docker/build', -})) +}) t.create('no longer available').get('/jrottenberg/ffmpeg.json').expectBadge({ label: 'docker build', diff --git a/services/docker/docker-cloud-automated.service.js b/services/docker/docker-cloud-automated.service.js index 8fc27256d2d89..a4692a643583b 100644 --- a/services/docker/docker-cloud-automated.service.js +++ b/services/docker/docker-cloud-automated.service.js @@ -1,10 +1,8 @@ -'use strict' +import { BaseJsonService } from '../index.js' +import { dockerBlue, buildDockerUrl } from './docker-helpers.js' +import { fetchBuild } from './docker-cloud-common-fetch.js' -const { BaseJsonService } = require('..') -const { dockerBlue, buildDockerUrl } = require('./docker-helpers') -const { fetchBuild } = require('./docker-cloud-common-fetch') - -module.exports = class DockerCloudAutomatedBuild extends BaseJsonService { +export default class DockerCloudAutomatedBuild extends BaseJsonService { static category = 'build' static route = buildDockerUrl('cloud/automated') static examples = [ diff --git a/services/docker/docker-cloud-automated.tester.js b/services/docker/docker-cloud-automated.tester.js index 22d508dcc3be2..936451900d448 100644 --- a/services/docker/docker-cloud-automated.tester.js +++ b/services/docker/docker-cloud-automated.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) -const { dockerBlue } = require('./docker-helpers') +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +import { dockerBlue } from './docker-helpers.js' +export const t = await createServiceTester() const isAutomatedBuildStatus = Joi.string().valid('automated', 'manual') diff --git a/services/docker/docker-cloud-build.service.js b/services/docker/docker-cloud-build.service.js index d40b058250729..8fd3aa8b45f3e 100644 --- a/services/docker/docker-cloud-build.service.js +++ b/services/docker/docker-cloud-build.service.js @@ -1,10 +1,8 @@ -'use strict' +import { BaseJsonService } from '../index.js' +import { dockerBlue, buildDockerUrl } from './docker-helpers.js' +import { fetchBuild } from './docker-cloud-common-fetch.js' -const { BaseJsonService } = require('..') -const { dockerBlue, buildDockerUrl } = require('./docker-helpers') -const { fetchBuild } = require('./docker-cloud-common-fetch') - -module.exports = class DockerCloudBuild extends BaseJsonService { +export default class DockerCloudBuild extends BaseJsonService { static category = 'build' static route = buildDockerUrl('cloud/build') static examples = [ diff --git a/services/docker/docker-cloud-build.tester.js b/services/docker/docker-cloud-build.tester.js index 59a8f8ef7223d..9335af250124d 100644 --- a/services/docker/docker-cloud-build.tester.js +++ b/services/docker/docker-cloud-build.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const { isBuildStatus } = require('../build-status') -const t = (module.exports = require('../tester').createServiceTester()) -const { dockerBlue } = require('./docker-helpers') +import { isBuildStatus } from '../build-status.js' +import { createServiceTester } from '../tester.js' +import { dockerBlue } from './docker-helpers.js' +export const t = await createServiceTester() t.create('docker cloud build status (valid, user)') .get('/jrottenberg/ffmpeg.json') diff --git a/services/docker/docker-cloud-common-fetch.js b/services/docker/docker-cloud-common-fetch.js index 8ac3db1fa4f69..51a5317348a6a 100644 --- a/services/docker/docker-cloud-common-fetch.js +++ b/services/docker/docker-cloud-common-fetch.js @@ -1,6 +1,4 @@ -'use strict' - -const Joi = require('joi') +import Joi from 'joi' const cloudBuildSchema = Joi.object({ objects: Joi.array() @@ -22,6 +20,4 @@ async function fetchBuild(serviceInstance, { user, repo }) { }) } -module.exports = { - fetchBuild, -} +export { fetchBuild } diff --git a/services/docker/docker-fixtures.js b/services/docker/docker-fixtures.js index de97cf00b8c3a..26218ca350c12 100644 --- a/services/docker/docker-fixtures.js +++ b/services/docker/docker-fixtures.js @@ -1,5 +1,3 @@ -'use strict' - const sizeDataNoTagSemVerSort = [ { name: 'master', full_size: 13449470 }, { name: 'feature-smtps-support', full_size: 13449638 }, @@ -3035,7 +3033,7 @@ const versionDataWithVaryingArchitectures = [ { name: '2.6', images: [] }, ] -module.exports = { +export { sizeDataNoTagSemVerSort, versionDataNoTagDateSort, versionPagedDataNoTagDateSort, diff --git a/services/docker/docker-helpers.js b/services/docker/docker-helpers.js index 87908b00f436a..0b9b1d6879494 100644 --- a/services/docker/docker-helpers.js +++ b/services/docker/docker-helpers.js @@ -1,7 +1,6 @@ -'use strict' - -const dockerBlue = '066da5' // see https://github.com/badges/shields/pull/1690 -const { NotFound } = require('..') +// see https://github.com/badges/shields/pull/1690 +import { NotFound } from '../index.js' +const dockerBlue = '066da5' function buildDockerUrl(badgeName, includeTagRoute) { if (includeTagRoute) { @@ -55,7 +54,7 @@ function getDigestSemVerMatches({ data, digest }) { return version } -module.exports = { +export { dockerBlue, buildDockerUrl, getDockerHubUser, diff --git a/services/docker/docker-pulls.service.js b/services/docker/docker-pulls.service.js index 5749215cac8ca..9d741f8f96158 100644 --- a/services/docker/docker-pulls.service.js +++ b/services/docker/docker-pulls.service.js @@ -1,20 +1,18 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') -const { +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' +import { dockerBlue, buildDockerUrl, getDockerHubUser, -} = require('./docker-helpers') +} from './docker-helpers.js' const pullsSchema = Joi.object({ pull_count: nonNegativeInteger, }).required() -module.exports = class DockerPulls extends BaseJsonService { +export default class DockerPulls extends BaseJsonService { static category = 'downloads' static route = buildDockerUrl('pulls') static examples = [ diff --git a/services/docker/docker-pulls.tester.js b/services/docker/docker-pulls.tester.js index cdf55b257441a..2482edea4acd7 100644 --- a/services/docker/docker-pulls.tester.js +++ b/services/docker/docker-pulls.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) -const { dockerBlue } = require('./docker-helpers') +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +import { dockerBlue } from './docker-helpers.js' +export const t = await createServiceTester() t.create('docker pulls (valid, library)') .get('/_/ubuntu.json') diff --git a/services/docker/docker-size.service.js b/services/docker/docker-size.service.js index 14ed46232fc10..16c7ea49467ce 100644 --- a/services/docker/docker-size.service.js +++ b/services/docker/docker-size.service.js @@ -1,15 +1,13 @@ -'use strict' - -const Joi = require('joi') -const prettyBytes = require('pretty-bytes') -const { nonNegativeInteger } = require('../validators') -const { latest } = require('../version') -const { BaseJsonService, NotFound } = require('..') -const { +import Joi from 'joi' +import prettyBytes from 'pretty-bytes' +import { nonNegativeInteger } from '../validators.js' +import { latest } from '../version.js' +import { BaseJsonService, NotFound } from '../index.js' +import { buildDockerUrl, getDockerHubUser, getMultiPageData, -} = require('./docker-helpers') +} from './docker-helpers.js' const buildSchema = Joi.object({ name: Joi.string().required(), @@ -30,7 +28,7 @@ const queryParamSchema = Joi.object({ sort: Joi.string().valid('date', 'semver').default('date'), }).required() -module.exports = class DockerSize extends BaseJsonService { +export default class DockerSize extends BaseJsonService { static category = 'size' static route = { ...buildDockerUrl('image-size', true), queryParamSchema } static examples = [ diff --git a/services/docker/docker-size.spec.js b/services/docker/docker-size.spec.js index 56857c5fa7e61..946e0d161b668 100644 --- a/services/docker/docker-size.spec.js +++ b/services/docker/docker-size.spec.js @@ -1,8 +1,6 @@ -'use strict' - -const { test, given } = require('sazerac') -const DockerSize = require('./docker-size.service') -const { sizeDataNoTagSemVerSort } = require('./docker-fixtures') +import { test, given } from 'sazerac' +import DockerSize from './docker-size.service.js' +import { sizeDataNoTagSemVerSort } from './docker-fixtures.js' describe('DockerSize', function () { test(DockerSize.prototype.transform, () => { diff --git a/services/docker/docker-size.tester.js b/services/docker/docker-size.tester.js index 6707e88967ab8..c476a773f32c8 100644 --- a/services/docker/docker-size.tester.js +++ b/services/docker/docker-size.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isFileSize } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isFileSize } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('docker image size (valid, library)') .get('/_/alpine.json') diff --git a/services/docker/docker-stars.service.js b/services/docker/docker-stars.service.js index aec79700c9b9d..92cc8eb81e85b 100644 --- a/services/docker/docker-stars.service.js +++ b/services/docker/docker-stars.service.js @@ -1,15 +1,13 @@ -'use strict' - -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { BaseService } = require('..') -const { +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseService } from '../index.js' +import { dockerBlue, buildDockerUrl, getDockerHubUser, -} = require('./docker-helpers') +} from './docker-helpers.js' -module.exports = class DockerStars extends BaseService { +export default class DockerStars extends BaseService { static category = 'rating' static route = buildDockerUrl('stars') static examples = [ diff --git a/services/docker/docker-stars.tester.js b/services/docker/docker-stars.tester.js index 9a732e8564316..ebd715c3372e3 100644 --- a/services/docker/docker-stars.tester.js +++ b/services/docker/docker-stars.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) -const { dockerBlue } = require('./docker-helpers') +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +import { dockerBlue } from './docker-helpers.js' +export const t = await createServiceTester() t.create('docker stars (valid, library)') .get('/_/ubuntu.json') diff --git a/services/docker/docker-version.service.js b/services/docker/docker-version.service.js index 88eabde175b42..00bb00e985698 100644 --- a/services/docker/docker-version.service.js +++ b/services/docker/docker-version.service.js @@ -1,15 +1,13 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { latest, renderVersionBadge } = require('../version') -const { BaseJsonService, NotFound, InvalidResponse } = require('..') -const { +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { latest, renderVersionBadge } from '../version.js' +import { BaseJsonService, NotFound, InvalidResponse } from '../index.js' +import { buildDockerUrl, getDockerHubUser, getMultiPageData, getDigestSemVerMatches, -} = require('./docker-helpers') +} from './docker-helpers.js' const buildSchema = Joi.object({ count: nonNegativeInteger.required(), @@ -47,7 +45,7 @@ const queryParamSchema = Joi.object({ .default('amd64'), }).required() -module.exports = class DockerVersion extends BaseJsonService { +export default class DockerVersion extends BaseJsonService { static category = 'version' static route = { ...buildDockerUrl('v', true), queryParamSchema } static examples = [ diff --git a/services/docker/docker-version.spec.js b/services/docker/docker-version.spec.js index 15fdab400f5fc..bd1681c27b0da 100644 --- a/services/docker/docker-version.spec.js +++ b/services/docker/docker-version.spec.js @@ -1,16 +1,14 @@ -'use strict' - -const { expect } = require('chai') -const { test, given } = require('sazerac') -const { InvalidResponse } = require('..') -const DockerVersion = require('./docker-version.service') -const { +import { expect } from 'chai' +import { test, given } from 'sazerac' +import { InvalidResponse } from '../index.js' +import DockerVersion from './docker-version.service.js' +import { versionDataNoTagDateSort, versionPagedDataNoTagDateSort, versionDataNoTagSemVerSort, versionDataWithTag, versionDataWithVaryingArchitectures, -} = require('./docker-fixtures') +} from './docker-fixtures.js' describe('DockerVersion', function () { test(DockerVersion.prototype.transform, () => { diff --git a/services/docker/docker-version.tester.js b/services/docker/docker-version.tester.js index 46ebefdac650a..097ccc0c5349b 100644 --- a/services/docker/docker-version.tester.js +++ b/services/docker/docker-version.tester.js @@ -1,32 +1,31 @@ -'use strict' - -const { isSemVer } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isSemver } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('docker version (valid, library)').get('/_/alpine.json').expectBadge({ label: 'version', - message: isSemVer, + message: isSemver, }) t.create('docker version (valid, library with tag)') .get('/_/alpine/latest.json') .expectBadge({ label: 'version', - message: isSemVer, + message: isSemver, }) t.create('docker version (valid, user)') .get('/jrottenberg/ffmpeg.json') .expectBadge({ label: 'version', - message: isSemVer, + message: isSemver, }) t.create('docker version (valid, user with tag)') .get('/jrottenberg/ffmpeg/3.2-alpine.json') .expectBadge({ label: 'version', - message: isSemVer, + message: isSemver, }) t.create('docker version (invalid, incorrect tag)') diff --git a/services/docsrs/docsrs.service.js b/services/docsrs/docsrs.service.js index 309eb6ba41468..ca88f67e49259 100644 --- a/services/docsrs/docsrs.service.js +++ b/services/docsrs/docsrs.service.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' const schema = Joi.array() .items( @@ -12,7 +10,7 @@ const schema = Joi.array() .min(1) .required() -module.exports = class DocsRs extends BaseJsonService { +export default class DocsRs extends BaseJsonService { static category = 'build' static route = { base: 'docsrs', pattern: ':crate/:version?' } static examples = [ diff --git a/services/docsrs/docsrs.tester.js b/services/docsrs/docsrs.tester.js index 0e7c566bfcbc7..0bd6157bdc6ff 100644 --- a/services/docsrs/docsrs.tester.js +++ b/services/docsrs/docsrs.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Passing docs') .get('/tokio/0.3.0.json') diff --git a/services/dotnetstatus/dotnetstatus.service.js b/services/dotnetstatus/dotnetstatus.service.js index 11a7918cc9801..7e243fd9c07ab 100644 --- a/services/dotnetstatus/dotnetstatus.service.js +++ b/services/dotnetstatus/dotnetstatus.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ category: 'dependencies', route: { base: 'dotnetstatus', diff --git a/services/dotnetstatus/dotnetstatus.tester.js b/services/dotnetstatus/dotnetstatus.tester.js index e2b0ea1b33520..f15285b3bb461 100644 --- a/services/dotnetstatus/dotnetstatus.tester.js +++ b/services/dotnetstatus/dotnetstatus.tester.js @@ -1,11 +1,9 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'dotnetstatus', title: 'dotnet-status', -})) +}) t.create('no longer available (previously get package status)') .get('/gh/jaredcnance/dotnet-status/API.json') diff --git a/services/drone/drone-build.service.js b/services/drone/drone-build.service.js index 13aaa0721d5d6..5b5986efb6dc3 100644 --- a/services/drone/drone-build.service.js +++ b/services/drone/drone-build.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus, renderBuildStatusBadge } = require('../build-status') -const { optionalUrl } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { isBuildStatus, renderBuildStatusBadge } from '../build-status.js' +import { optionalUrl } from '../validators.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ status: Joi.alternatives() @@ -15,7 +13,7 @@ const queryParamSchema = Joi.object({ server: optionalUrl, }).required() -module.exports = class DroneBuild extends BaseJsonService { +export default class DroneBuild extends BaseJsonService { static category = 'build' static route = { base: 'drone/build', diff --git a/services/drone/drone-build.spec.js b/services/drone/drone-build.spec.js index dc0b914fa521f..0cb15273618a2 100644 --- a/services/drone/drone-build.spec.js +++ b/services/drone/drone-build.spec.js @@ -1,9 +1,7 @@ -'use strict' - -const { expect } = require('chai') -const nock = require('nock') -const { cleanUpNockAfterEach, defaultContext } = require('../test-helpers') -const DroneBuild = require('./drone-build.service') +import { expect } from 'chai' +import nock from 'nock' +import { cleanUpNockAfterEach, defaultContext } from '../test-helpers.js' +import DroneBuild from './drone-build.service.js' describe('DroneBuild', function () { cleanUpNockAfterEach() diff --git a/services/drone/drone-build.tester.js b/services/drone/drone-build.tester.js index 59882a0089139..abd50e8feeb97 100644 --- a/services/drone/drone-build.tester.js +++ b/services/drone/drone-build.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus } = require('../build-status') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { isBuildStatus } from '../build-status.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isDroneBuildStatus = Joi.alternatives().try( isBuildStatus, diff --git a/services/dub/dub-download.service.js b/services/dub/dub-download.service.js index 3c050bc5d901b..e82bf59d6eae6 100644 --- a/services/dub/dub-download.service.js +++ b/services/dub/dub-download.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { downloadCount: downloadCountColor } = require('../color-formatters') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { downloadCount as downloadCountColor } from '../color-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ downloads: Joi.object({ @@ -34,7 +32,7 @@ const intervalMap = { }, } -module.exports = class DubDownloads extends BaseJsonService { +export default class DubDownloads extends BaseJsonService { static category = 'downloads' static route = { base: 'dub', diff --git a/services/dub/dub-download.tester.js b/services/dub/dub-download.tester.js index 423c091513206..4733e5343a2b9 100644 --- a/services/dub/dub-download.tester.js +++ b/services/dub/dub-download.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { isMetric, isMetricOverTimePeriod } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { isMetric, isMetricOverTimePeriod } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isDownloadsColor = Joi.equal( 'red', diff --git a/services/dub/dub-license.service.js b/services/dub/dub-license.service.js index 62f99a0cf2823..52608f43d3e26 100644 --- a/services/dub/dub-license.service.js +++ b/services/dub/dub-license.service.js @@ -1,14 +1,12 @@ -'use strict' - -const Joi = require('joi') -const { renderLicenseBadge } = require('../licenses') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { renderLicenseBadge } from '../licenses.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ info: Joi.object({ license: Joi.string().required() }).required(), }) -module.exports = class DubLicense extends BaseJsonService { +export default class DubLicense extends BaseJsonService { static category = 'license' static route = { base: 'dub/l', pattern: ':packageName' } static examples = [ diff --git a/services/dub/dub-license.tester.js b/services/dub/dub-license.tester.js index f40797ac530f0..0da04e2a2411f 100644 --- a/services/dub/dub-license.tester.js +++ b/services/dub/dub-license.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('license (valid)') .get('/vibe-d.json') diff --git a/services/dub/dub-version.service.js b/services/dub/dub-version.service.js index 8aeced3af4739..19c2c1626f0dc 100644 --- a/services/dub/dub-version.service.js +++ b/services/dub/dub-version.service.js @@ -1,12 +1,10 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { BaseJsonService } from '../index.js' const schema = Joi.string().required() -module.exports = class DubVersion extends BaseJsonService { +export default class DubVersion extends BaseJsonService { static category = 'version' static route = { base: 'dub/v', pattern: ':packageName' } static examples = [ diff --git a/services/dub/dub-version.tester.js b/services/dub/dub-version.tester.js index 972c7256e377c..88015d7660e5a 100644 --- a/services/dub/dub-version.tester.js +++ b/services/dub/dub-version.tester.js @@ -1,10 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { - isVPlusDottedVersionNClausesWithOptionalSuffix, -} = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { isVPlusDottedVersionNClausesWithOptionalSuffix } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('version (valid)') .get('/vibe-d.json') diff --git a/services/dynamic-common.js b/services/dynamic-common.js index 292c84964e115..7cacafa411233 100644 --- a/services/dynamic-common.js +++ b/services/dynamic-common.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const toArray = require('../core/base-service/to-array') -const validate = require('../core/base-service/validate') -const { InvalidResponse } = require('.') +import Joi from 'joi' +import toArray from '../core/base-service/to-array.js' +import validate from '../core/base-service/validate.js' +import { InvalidResponse } from './index.js' const errorMessages = { 404: 'resource not found', @@ -48,7 +46,7 @@ function renderDynamicBadge({ } } -module.exports = { +export { errorMessages, individualValueSchema, transformAndValidate, diff --git a/services/dynamic/dynamic-helpers.js b/services/dynamic/dynamic-helpers.js index 6921857674490..cb3b6c6ebe3d8 100644 --- a/services/dynamic/dynamic-helpers.js +++ b/services/dynamic/dynamic-helpers.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { optionalUrl } = require('../validators') +import Joi from 'joi' +import { optionalUrl } from '../validators.js' const queryParamSchema = Joi.object({ url: optionalUrl.required(), @@ -20,6 +18,4 @@ function createRoute(which) { } } -module.exports = { - createRoute, -} +export { createRoute } diff --git a/services/dynamic/dynamic-json.service.js b/services/dynamic/dynamic-json.service.js index 337fe66d2ded0..5e01de94d1cde 100644 --- a/services/dynamic/dynamic-json.service.js +++ b/services/dynamic/dynamic-json.service.js @@ -1,11 +1,9 @@ -'use strict' +import { MetricNames } from '../../core/base-service/metric-helper.js' +import { BaseJsonService } from '../index.js' +import { createRoute } from './dynamic-helpers.js' +import jsonPath from './json-path.js' -const { MetricNames } = require('../../core/base-service/metric-helper') -const { BaseJsonService } = require('..') -const { createRoute } = require('./dynamic-helpers') -const jsonPath = require('./json-path') - -module.exports = class DynamicJson extends jsonPath(BaseJsonService) { +export default class DynamicJson extends jsonPath(BaseJsonService) { static enabledMetrics = [MetricNames.SERVICE_RESPONSE_SIZE] static route = createRoute('json') diff --git a/services/dynamic/dynamic-json.tester.js b/services/dynamic/dynamic-json.tester.js index d36dda48a30e4..38bb48ee74794 100644 --- a/services/dynamic/dynamic-json.tester.js +++ b/services/dynamic/dynamic-json.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { expect } = require('chai') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { expect } from 'chai' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('No URL specified') .get('.json?query=$.name&label=Package Name') diff --git a/services/dynamic/dynamic-response-fixtures.js b/services/dynamic/dynamic-response-fixtures.js index 25af9ff15ad56..774483608e89b 100644 --- a/services/dynamic/dynamic-response-fixtures.js +++ b/services/dynamic/dynamic-response-fixtures.js @@ -1,7 +1,4 @@ -'use strict' - -module.exports = { - exampleXml: ` +export const exampleXml = ` Gambardella, Matthew @@ -121,5 +118,4 @@ module.exports = { environment. -`, -} +` diff --git a/services/dynamic/dynamic-xml.service.js b/services/dynamic/dynamic-xml.service.js index 9c14c59649740..2278f7260a305 100644 --- a/services/dynamic/dynamic-xml.service.js +++ b/services/dynamic/dynamic-xml.service.js @@ -1,11 +1,9 @@ -'use strict' - -const { DOMParser } = require('xmldom') -const xpath = require('xpath') -const { MetricNames } = require('../../core/base-service/metric-helper') -const { renderDynamicBadge, errorMessages } = require('../dynamic-common') -const { BaseService, InvalidResponse, InvalidParameter } = require('..') -const { createRoute } = require('./dynamic-helpers') +import { DOMParser } from 'xmldom' +import xpath from 'xpath' +import { MetricNames } from '../../core/base-service/metric-helper.js' +import { renderDynamicBadge, errorMessages } from '../dynamic-common.js' +import { BaseService, InvalidResponse, InvalidParameter } from '../index.js' +import { createRoute } from './dynamic-helpers.js' // This service extends BaseService because it uses a different XML parser // than BaseXmlService which can be used with xpath. @@ -13,7 +11,7 @@ const { createRoute } = require('./dynamic-helpers') // One way to create a more performant version would be to use the BaseXml // JSON parser and write the queries in jsonpath instead. Then eventually // deprecate the old version. -module.exports = class DynamicXml extends BaseService { +export default class DynamicXml extends BaseService { static category = 'dynamic' static enabledMetrics = [MetricNames.SERVICE_RESPONSE_SIZE] static route = createRoute('xml') diff --git a/services/dynamic/dynamic-xml.spec.js b/services/dynamic/dynamic-xml.spec.js index 7987164cacb2a..ca233d2c0abeb 100644 --- a/services/dynamic/dynamic-xml.spec.js +++ b/services/dynamic/dynamic-xml.spec.js @@ -1,11 +1,9 @@ -'use strict' - -const { expect } = require('chai') -const sinon = require('sinon') -const xpath = require('xpath') -const { test, given } = require('sazerac') -const { InvalidResponse } = require('..') -const DynamicXml = require('./dynamic-xml.service') +import { expect } from 'chai' +import sinon from 'sinon' +import xpath from 'xpath' +import { test, given } from 'sazerac' +import { InvalidResponse } from '../index.js' +import DynamicXml from './dynamic-xml.service.js' const exampleXml = ` diff --git a/services/dynamic/dynamic-xml.tester.js b/services/dynamic/dynamic-xml.tester.js index d0b76cef41e0d..a35d303c3ec41 100644 --- a/services/dynamic/dynamic-xml.tester.js +++ b/services/dynamic/dynamic-xml.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const queryString = require('query-string') -const t = (module.exports = require('../tester').createServiceTester()) -const { exampleXml } = require('./dynamic-response-fixtures') +import queryString from 'query-string' +import { createServiceTester } from '../tester.js' +import { exampleXml } from './dynamic-response-fixtures.js' +export const t = await createServiceTester() const exampleUrl = 'https://example.test/example.xml' const withExampleXml = nock => diff --git a/services/dynamic/dynamic-yaml.service.js b/services/dynamic/dynamic-yaml.service.js index a77471708606b..1c606f90334ea 100644 --- a/services/dynamic/dynamic-yaml.service.js +++ b/services/dynamic/dynamic-yaml.service.js @@ -1,11 +1,9 @@ -'use strict' +import { MetricNames } from '../../core/base-service/metric-helper.js' +import { BaseYamlService } from '../index.js' +import { createRoute } from './dynamic-helpers.js' +import jsonPath from './json-path.js' -const { MetricNames } = require('../../core/base-service/metric-helper') -const { BaseYamlService } = require('..') -const { createRoute } = require('./dynamic-helpers') -const jsonPath = require('./json-path') - -module.exports = class DynamicYaml extends jsonPath(BaseYamlService) { +export default class DynamicYaml extends jsonPath(BaseYamlService) { static enabledMetrics = [MetricNames.SERVICE_RESPONSE_SIZE] static route = createRoute('yaml') diff --git a/services/dynamic/dynamic-yaml.tester.js b/services/dynamic/dynamic-yaml.tester.js index cb04be8bcf2e2..e3d5cce1fcae3 100644 --- a/services/dynamic/dynamic-yaml.tester.js +++ b/services/dynamic/dynamic-yaml.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('No URL specified') .get('.json?query=$.name&label=Package Name') diff --git a/services/dynamic/json-path.js b/services/dynamic/json-path.js index 9797e81673650..ed242c944aaf4 100644 --- a/services/dynamic/json-path.js +++ b/services/dynamic/json-path.js @@ -2,12 +2,10 @@ * @module */ -'use strict' - -const Joi = require('joi') -const jp = require('jsonpath') -const { renderDynamicBadge, errorMessages } = require('../dynamic-common') -const { InvalidParameter, InvalidResponse } = require('..') +import Joi from 'joi' +import jp from 'jsonpath' +import { renderDynamicBadge, errorMessages } from '../dynamic-common.js' +import { InvalidParameter, InvalidResponse } from '../index.js' /** * Dynamic service class factory which wraps {@link module:core/base-service/base~BaseService} with support of {@link https://jsonpath.com/|JSONPath}. @@ -15,7 +13,7 @@ const { InvalidParameter, InvalidResponse } = require('..') * @param {Function} superclass class to extend * @returns {Function} wrapped class */ -module.exports = superclass => +export default superclass => class extends superclass { static category = 'dynamic' static defaultBadgeData = { label: 'custom badge' } diff --git a/services/dynamic/json-path.spec.js b/services/dynamic/json-path.spec.js index ca30499f8ec31..7e309dba653f6 100644 --- a/services/dynamic/json-path.spec.js +++ b/services/dynamic/json-path.spec.js @@ -1,10 +1,8 @@ -'use strict' - -const chai = require('chai') +import chai from 'chai' +import chaiAsPromised from 'chai-as-promised' +import jsonPath from './json-path.js' const { expect } = chai -const jsonPath = require('./json-path') - -chai.use(require('chai-as-promised')) +chai.use(chaiAsPromised) describe('JSON Path service factory', function () { describe('fetch()', function () { diff --git a/services/eclipse-marketplace/eclipse-marketplace-base.js b/services/eclipse-marketplace/eclipse-marketplace-base.js index fd8c5387b04f0..a4276731b9582 100644 --- a/services/eclipse-marketplace/eclipse-marketplace-base.js +++ b/services/eclipse-marketplace/eclipse-marketplace-base.js @@ -1,8 +1,6 @@ -'use strict' +import { BaseXmlService } from '../index.js' -const { BaseXmlService } = require('..') - -module.exports = class EclipseMarketplaceBase extends BaseXmlService { +export default class EclipseMarketplaceBase extends BaseXmlService { static buildRoute(base) { return { base, diff --git a/services/eclipse-marketplace/eclipse-marketplace-downloads.service.js b/services/eclipse-marketplace/eclipse-marketplace-downloads.service.js index ae4fb3fa39242..c7cbaf118379c 100644 --- a/services/eclipse-marketplace/eclipse-marketplace-downloads.service.js +++ b/services/eclipse-marketplace/eclipse-marketplace-downloads.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { downloadCount: downloadCountColor } = require('../color-formatters') -const { nonNegativeInteger } = require('../validators') -const EclipseMarketplaceBase = require('./eclipse-marketplace-base') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { downloadCount as downloadCountColor } from '../color-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import EclipseMarketplaceBase from './eclipse-marketplace-base.js' const monthlyResponseSchema = Joi.object({ marketplace: Joi.object({ @@ -72,4 +70,4 @@ function DownloadsForInterval(interval) { } } -module.exports = ['month', 'total'].map(DownloadsForInterval) +export default ['month', 'total'].map(DownloadsForInterval) diff --git a/services/eclipse-marketplace/eclipse-marketplace-downloads.tester.js b/services/eclipse-marketplace/eclipse-marketplace-downloads.tester.js index 878fe844c0816..a73862ee73271 100644 --- a/services/eclipse-marketplace/eclipse-marketplace-downloads.tester.js +++ b/services/eclipse-marketplace/eclipse-marketplace-downloads.tester.js @@ -1,13 +1,11 @@ -'use strict' +import { ServiceTester } from '../tester.js' +import { isMetric, isMetricOverTimePeriod } from '../test-validators.js' -const { ServiceTester } = require('../tester') -const { isMetric, isMetricOverTimePeriod } = require('../test-validators') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'EclipseMarketplaceDownloads', title: 'EclipseMarketplaceDownloads', pathPrefix: '/eclipse-marketplace', -})) +}) t.create('total marketplace downloads').get('/dt/notepad4e.json').expectBadge({ label: 'downloads', diff --git a/services/eclipse-marketplace/eclipse-marketplace-favorites.service.js b/services/eclipse-marketplace/eclipse-marketplace-favorites.service.js index 0b648a91ce73c..1f004bad2262f 100644 --- a/services/eclipse-marketplace/eclipse-marketplace-favorites.service.js +++ b/services/eclipse-marketplace/eclipse-marketplace-favorites.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const EclipseMarketplaceBase = require('./eclipse-marketplace-base') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import EclipseMarketplaceBase from './eclipse-marketplace-base.js' const favoritesResponseSchema = Joi.object({ marketplace: Joi.object({ @@ -12,9 +10,7 @@ const favoritesResponseSchema = Joi.object({ }), }).required() -module.exports = class EclipseMarketplaceFavorites extends ( - EclipseMarketplaceBase -) { +export default class EclipseMarketplaceFavorites extends EclipseMarketplaceBase { static category = 'other' static route = this.buildRoute('eclipse-marketplace/favorites') static examples = [ diff --git a/services/eclipse-marketplace/eclipse-marketplace-favorites.tester.js b/services/eclipse-marketplace/eclipse-marketplace-favorites.tester.js index 4322263077a89..74ceb06d6ab78 100644 --- a/services/eclipse-marketplace/eclipse-marketplace-favorites.tester.js +++ b/services/eclipse-marketplace/eclipse-marketplace-favorites.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('favorites count').get('/notepad4e.json').expectBadge({ label: 'favorites', diff --git a/services/eclipse-marketplace/eclipse-marketplace-license.service.js b/services/eclipse-marketplace/eclipse-marketplace-license.service.js index 4faf06a48617c..b25b0ac223c18 100644 --- a/services/eclipse-marketplace/eclipse-marketplace-license.service.js +++ b/services/eclipse-marketplace/eclipse-marketplace-license.service.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const EclipseMarketplaceBase = require('./eclipse-marketplace-base') +import Joi from 'joi' +import EclipseMarketplaceBase from './eclipse-marketplace-base.js' const licenseResponseSchema = Joi.object({ marketplace: Joi.object({ @@ -11,9 +9,7 @@ const licenseResponseSchema = Joi.object({ }), }).required() -module.exports = class EclipseMarketplaceLicense extends ( - EclipseMarketplaceBase -) { +export default class EclipseMarketplaceLicense extends EclipseMarketplaceBase { static category = 'license' static route = this.buildRoute('eclipse-marketplace/l') static examples = [ diff --git a/services/eclipse-marketplace/eclipse-marketplace-license.tester.js b/services/eclipse-marketplace/eclipse-marketplace-license.tester.js index f7b9d8be1a6b5..471651696b295 100644 --- a/services/eclipse-marketplace/eclipse-marketplace-license.tester.js +++ b/services/eclipse-marketplace/eclipse-marketplace-license.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('license').get('/notepad4e.json').expectBadge({ label: 'license', diff --git a/services/eclipse-marketplace/eclipse-marketplace-update.service.js b/services/eclipse-marketplace/eclipse-marketplace-update.service.js index 68361338e7c87..a13b7d0d03ddc 100644 --- a/services/eclipse-marketplace/eclipse-marketplace-update.service.js +++ b/services/eclipse-marketplace/eclipse-marketplace-update.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { formatDate } = require('../text-formatters') -const { age: ageColor } = require('../color-formatters') -const { nonNegativeInteger } = require('../validators') -const EclipseMarketplaceBase = require('./eclipse-marketplace-base') +import Joi from 'joi' +import { formatDate } from '../text-formatters.js' +import { age as ageColor } from '../color-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import EclipseMarketplaceBase from './eclipse-marketplace-base.js' const updateResponseSchema = Joi.object({ marketplace: Joi.object({ @@ -14,7 +12,7 @@ const updateResponseSchema = Joi.object({ }), }).required() -module.exports = class EclipseMarketplaceUpdate extends EclipseMarketplaceBase { +export default class EclipseMarketplaceUpdate extends EclipseMarketplaceBase { static category = 'activity' static route = this.buildRoute('eclipse-marketplace/last-update') static examples = [ diff --git a/services/eclipse-marketplace/eclipse-marketplace-update.tester.js b/services/eclipse-marketplace/eclipse-marketplace-update.tester.js index af1b8628d8eed..fd0d6e756bd51 100644 --- a/services/eclipse-marketplace/eclipse-marketplace-update.tester.js +++ b/services/eclipse-marketplace/eclipse-marketplace-update.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isFormattedDate } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isFormattedDate } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('last update date').get('/notepad4e.json').expectBadge({ label: 'updated', diff --git a/services/eclipse-marketplace/eclipse-marketplace-version.service.js b/services/eclipse-marketplace/eclipse-marketplace-version.service.js index 6f15d0b2e305e..0e367fa12595d 100644 --- a/services/eclipse-marketplace/eclipse-marketplace-version.service.js +++ b/services/eclipse-marketplace/eclipse-marketplace-version.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const EclipseMarketplaceBase = require('./eclipse-marketplace-base') +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import EclipseMarketplaceBase from './eclipse-marketplace-base.js' const versionResponseSchema = Joi.object({ marketplace: Joi.object({ @@ -12,9 +10,7 @@ const versionResponseSchema = Joi.object({ }), }).required() -module.exports = class EclipseMarketplaceVersion extends ( - EclipseMarketplaceBase -) { +export default class EclipseMarketplaceVersion extends EclipseMarketplaceBase { static category = 'version' static route = this.buildRoute('eclipse-marketplace/v') static examples = [ diff --git a/services/eclipse-marketplace/eclipse-marketplace-version.tester.js b/services/eclipse-marketplace/eclipse-marketplace-version.tester.js index b3e58b9bc8164..c47a95c8eea68 100644 --- a/services/eclipse-marketplace/eclipse-marketplace-version.tester.js +++ b/services/eclipse-marketplace/eclipse-marketplace-version.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isVPlusDottedVersionAtLeastOne } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isVPlusDottedVersionAtLeastOne } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('marketplace version').get('/notepad4e.json').expectBadge({ label: 'eclipse marketplace', diff --git a/services/ecologi/ecologi-carbon.service.js b/services/ecologi/ecologi-carbon.service.js index b2eb4040e0157..4aac425d1e608 100644 --- a/services/ecologi/ecologi-carbon.service.js +++ b/services/ecologi/ecologi-carbon.service.js @@ -1,15 +1,13 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { floorCount } = require('../color-formatters') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { floorCount } from '../color-formatters.js' +import { BaseJsonService } from '../index.js' const apiSchema = Joi.object({ total: Joi.number().positive().required(), }).required() -module.exports = class EcologiCarbonOffset extends BaseJsonService { +export default class EcologiCarbonOffset extends BaseJsonService { static category = 'other' static route = { base: 'ecologi/carbon', pattern: ':username' } static examples = [ diff --git a/services/ecologi/ecologi-carbon.tester.js b/services/ecologi/ecologi-carbon.tester.js index 55cacdf10306d..17394e5e293b7 100644 --- a/services/ecologi/ecologi-carbon.tester.js +++ b/services/ecologi/ecologi-carbon.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { withRegex } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { withRegex } from '../test-validators.js' +export const t = await createServiceTester() t.create('request for existing username') .get('/ecologi.json') diff --git a/services/ecologi/ecologi-trees.service.js b/services/ecologi/ecologi-trees.service.js index d2e0a98f485b6..46d41b2f00f19 100644 --- a/services/ecologi/ecologi-trees.service.js +++ b/services/ecologi/ecologi-trees.service.js @@ -1,16 +1,14 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { floorCount } = require('../color-formatters') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { floorCount } from '../color-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' const apiSchema = Joi.object({ total: nonNegativeInteger, }).required() -module.exports = class EcologiTrees extends BaseJsonService { +export default class EcologiTrees extends BaseJsonService { static category = 'other' static route = { base: 'ecologi/trees', pattern: ':username' } static examples = [ diff --git a/services/ecologi/ecologi-trees.tester.js b/services/ecologi/ecologi-trees.tester.js index 3627695a48986..01d776263a396 100644 --- a/services/ecologi/ecologi-trees.tester.js +++ b/services/ecologi/ecologi-trees.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isMetric } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { isMetric } from '../test-validators.js' +export const t = await createServiceTester() t.create('request for existing username').get('/ecologi.json').expectBadge({ label: 'trees', diff --git a/services/elm-package/elm-package.service.js b/services/elm-package/elm-package.service.js index f2f7e45736a3b..dd606d090c0ff 100644 --- a/services/elm-package/elm-package.service.js +++ b/services/elm-package/elm-package.service.js @@ -1,13 +1,11 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { semver } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { semver } from '../validators.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ version: semver }).required() -module.exports = class ElmPackage extends BaseJsonService { +export default class ElmPackage extends BaseJsonService { static category = 'version' static route = { base: 'elm-package/v', pattern: ':user/:packageName' } static examples = [ diff --git a/services/elm-package/elm-package.tester.js b/services/elm-package/elm-package.tester.js index d432de124705f..b1c07737a607c 100644 --- a/services/elm-package/elm-package.tester.js +++ b/services/elm-package/elm-package.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isSemver } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isSemver } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('gets the package version of elm/core') .get('/elm/core.json') diff --git a/services/endpoint-common.js b/services/endpoint-common.js index 81e159bf57e0f..1f3cf8d00cff6 100644 --- a/services/endpoint-common.js +++ b/services/endpoint-common.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const validate = require('../core/base-service/validate') -const { InvalidResponse } = require('.') +import Joi from 'joi' +import validate from '../core/base-service/validate.js' +import { InvalidResponse } from './index.js' const optionalStringWhenNamedLogoPresent = Joi.alternatives().conditional( 'namedLogo', @@ -74,7 +72,4 @@ async function fetchEndpointData( }) } -module.exports = { - validateEndpointData, - fetchEndpointData, -} +export { validateEndpointData, fetchEndpointData } diff --git a/services/endpoint/endpoint-redirect.service.js b/services/endpoint/endpoint-redirect.service.js index 4501e3e6a378c..c8db8c7de1f32 100644 --- a/services/endpoint/endpoint-redirect.service.js +++ b/services/endpoint/endpoint-redirect.service.js @@ -1,8 +1,6 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = redirector({ +export default redirector({ category: 'other', route: { base: 'badge/endpoint', diff --git a/services/endpoint/endpoint-redirect.tester.js b/services/endpoint/endpoint-redirect.tester.js index 097c083fe4021..e0c6de4a5865e 100644 --- a/services/endpoint/endpoint-redirect.tester.js +++ b/services/endpoint/endpoint-redirect.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'EndpointRedirect', title: 'EndpointRedirect', pathPrefix: '/badge/endpoint', -})) +}) t.create('Build: default branch') .get('.svg?url=https://example.com/badge.json') diff --git a/services/endpoint/endpoint.service.js b/services/endpoint/endpoint.service.js index 007fc40a07fde..8a64ccc74ca88 100644 --- a/services/endpoint/endpoint.service.js +++ b/services/endpoint/endpoint.service.js @@ -1,11 +1,9 @@ -'use strict' - -const { URL } = require('url') -const Joi = require('joi') -const { errorMessages } = require('../dynamic-common') -const { optionalUrl } = require('../validators') -const { fetchEndpointData } = require('../endpoint-common') -const { BaseJsonService, InvalidParameter } = require('..') +import { URL } from 'url' +import Joi from 'joi' +import { errorMessages } from '../dynamic-common.js' +import { optionalUrl } from '../validators.js' +import { fetchEndpointData } from '../endpoint-common.js' +import { BaseJsonService, InvalidParameter } from '../index.js' const blockedDomains = ['github.com', 'shields.io'] @@ -13,7 +11,7 @@ const queryParamSchema = Joi.object({ url: optionalUrl.required(), }).required() -module.exports = class Endpoint extends BaseJsonService { +export default class Endpoint extends BaseJsonService { static category = 'dynamic' static route = { base: 'endpoint', diff --git a/services/endpoint/endpoint.tester.js b/services/endpoint/endpoint.tester.js index 2001439674cf9..3be249e02cea0 100644 --- a/services/endpoint/endpoint.tester.js +++ b/services/endpoint/endpoint.tester.js @@ -1,9 +1,8 @@ -'use strict' - -const zlib = require('zlib') -const { expect } = require('chai') -const { getShieldsIcon } = require('../../lib/logos') -const t = (module.exports = require('../tester').createServiceTester()) +import zlib from 'zlib' +import { expect } from 'chai' +import { getShieldsIcon } from '../../lib/logos.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Valid schema') .get('.json?url=https://example.com/badge') diff --git a/services/f-droid/f-droid.service.js b/services/f-droid/f-droid.service.js index 127e426269df7..3ce765eb202c2 100644 --- a/services/f-droid/f-droid.service.js +++ b/services/f-droid/f-droid.service.js @@ -1,13 +1,11 @@ -'use strict' - -const Joi = require('joi') -const { +import Joi from 'joi' +import { optionalNonNegativeInteger, nonNegativeInteger, -} = require('../validators') -const { addv } = require('../text-formatters') -const { version: versionColor } = require('../color-formatters') -const { BaseJsonService, NotFound } = require('..') +} from '../validators.js' +import { addv } from '../text-formatters.js' +import { version as versionColor } from '../color-formatters.js' +import { BaseJsonService, NotFound } from '../index.js' const schema = Joi.object({ packageName: Joi.string().required(), @@ -22,7 +20,7 @@ const queryParamSchema = Joi.object({ include_prereleases: Joi.equal(''), }).required() -module.exports = class FDroid extends BaseJsonService { +export default class FDroid extends BaseJsonService { static category = 'version' static route = { base: 'f-droid/v', pattern: ':appId', queryParamSchema } static examples = [ diff --git a/services/f-droid/f-droid.tester.js b/services/f-droid/f-droid.tester.js index 5d77c54eb2f2b..ea63f06ee635d 100644 --- a/services/f-droid/f-droid.tester.js +++ b/services/f-droid/f-droid.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' +import { isVPlusDottedVersionAtLeastOne } from '../test-validators.js' -const { ServiceTester } = require('../tester') -const { isVPlusDottedVersionAtLeastOne } = require('../test-validators') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'f-droid', title: 'F-Droid', -})) +}) const testPkg = 'org.fdroid.fdroid.privileged' const testJson = ` diff --git a/services/fedora/fedora.service.js b/services/fedora/fedora.service.js index 80e39535411a1..d869bcd6efef1 100644 --- a/services/fedora/fedora.service.js +++ b/services/fedora/fedora.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ version: Joi.string().required(), @@ -11,7 +9,7 @@ const schema = Joi.object({ // No way to permalink to current "stable", https://pagure.io/mdapi/issue/69 const defaultBranch = 'rawhide' -module.exports = class Fedora extends BaseJsonService { +export default class Fedora extends BaseJsonService { static category = 'version' static route = { base: 'fedora/v', pattern: ':packageName/:branch?' } static examples = [ diff --git a/services/fedora/fedora.tester.js b/services/fedora/fedora.tester.js index 134b5e84a2595..51f0d38c5165b 100644 --- a/services/fedora/fedora.tester.js +++ b/services/fedora/fedora.tester.js @@ -1,9 +1,6 @@ -'use strict' - -const { - isVPlusDottedVersionNClausesWithOptionalSuffixAndEpoch, -} = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isVPlusDottedVersionNClausesWithOptionalSuffixAndEpoch } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Fedora package (default branch, valid)') .get('/rpm.json') diff --git a/services/feedz/feedz.service.js b/services/feedz/feedz.service.js index 0e65635588360..54d237de38116 100644 --- a/services/feedz/feedz.service.js +++ b/services/feedz/feedz.service.js @@ -1,13 +1,11 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService, NotFound } = require('..') -const { +import Joi from 'joi' +import { BaseJsonService, NotFound } from '../index.js' +import { renderVersionBadge, searchServiceUrl, stripBuildMetadata, selectVersion, -} = require('../nuget/nuget-helpers') +} from '../nuget/nuget-helpers.js' const schema = Joi.object({ items: Joi.array() @@ -105,6 +103,4 @@ class FeedzVersionService extends BaseJsonService { } } -module.exports = { - FeedzVersionService, -} +export { FeedzVersionService } diff --git a/services/feedz/feedz.service.spec.js b/services/feedz/feedz.service.spec.js index 47189d6e2c39e..c6f1444c39f8c 100644 --- a/services/feedz/feedz.service.spec.js +++ b/services/feedz/feedz.service.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const { FeedzVersionService } = require('./feedz.service') +import { test, given } from 'sazerac' +import { FeedzVersionService } from './feedz.service.js' function json(versions) { return { diff --git a/services/feedz/feedz.tester.js b/services/feedz/feedz.tester.js index 70980d3a5dcba..99133e1025352 100644 --- a/services/feedz/feedz.tester.js +++ b/services/feedz/feedz.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'feedz', title: 'Feedz', pathPrefix: '', -})) +}) // The `shieldstests/public` repo is specifically made for these tests. It contains following packages: // - Shields.NoV1: 0.1.0 diff --git a/services/flathub/flathub.service.js b/services/flathub/flathub.service.js index 6f5b9ad89f317..1b46191ebb9f8 100644 --- a/services/flathub/flathub.service.js +++ b/services/flathub/flathub.service.js @@ -1,14 +1,12 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ currentReleaseVersion: Joi.string().required(), }).required() -module.exports = class Flathub extends BaseJsonService { +export default class Flathub extends BaseJsonService { static category = 'version' static route = { base: 'flathub/v', pattern: ':packageName' } static examples = [ diff --git a/services/flathub/flathub.tester.js b/services/flathub/flathub.tester.js index ce276ab7b4900..727497013dea6 100644 --- a/services/flathub/flathub.tester.js +++ b/services/flathub/flathub.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isVPlusDottedVersionNClauses } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isVPlusDottedVersionNClauses } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Flathub (valid)').get('/org.mozilla.firefox.json').expectBadge({ label: 'flathub', diff --git a/services/gem/gem-downloads.service.js b/services/gem/gem-downloads.service.js index f2e697cde370b..fc72bb3519d6b 100644 --- a/services/gem/gem-downloads.service.js +++ b/services/gem/gem-downloads.service.js @@ -1,12 +1,10 @@ -'use strict' - -const semver = require('semver') -const Joi = require('joi') -const { downloadCount } = require('../color-formatters') -const { metric } = require('../text-formatters') -const { latest: latestVersion } = require('../version') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService, InvalidParameter, InvalidResponse } = require('..') +import semver from 'semver' +import Joi from 'joi' +import { downloadCount } from '../color-formatters.js' +import { metric } from '../text-formatters.js' +import { latest as latestVersion } from '../version.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService, InvalidParameter, InvalidResponse } from '../index.js' const keywords = ['ruby'] @@ -26,7 +24,7 @@ const versionSchema = Joi.array() .min(1) .required() -module.exports = class GemDownloads extends BaseJsonService { +export default class GemDownloads extends BaseJsonService { static category = 'downloads' static route = { base: 'gem', pattern: ':variant(dt|dtv|dv)/:gem/:version?' } static examples = [ diff --git a/services/gem/gem-downloads.tester.js b/services/gem/gem-downloads.tester.js index bb3ccfed06819..cd709bb4bfe1c 100644 --- a/services/gem/gem-downloads.tester.js +++ b/services/gem/gem-downloads.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('total downloads (valid)').get('/dt/rails.json').expectBadge({ label: 'downloads', diff --git a/services/gem/gem-owner.service.js b/services/gem/gem-owner.service.js index 1be79b524505c..5ed9d0df7dd40 100644 --- a/services/gem/gem-owner.service.js +++ b/services/gem/gem-owner.service.js @@ -1,12 +1,10 @@ -'use strict' - -const Joi = require('joi') -const { floorCount: floorCountColor } = require('../color-formatters') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { floorCount as floorCountColor } from '../color-formatters.js' +import { BaseJsonService } from '../index.js' const ownerSchema = Joi.array().required() -module.exports = class GemOwner extends BaseJsonService { +export default class GemOwner extends BaseJsonService { static category = 'other' static route = { base: 'gem/u', pattern: ':user' } static examples = [ diff --git a/services/gem/gem-owner.tester.js b/services/gem/gem-owner.tester.js index 80d1d9286c8d7..9156752cb3553 100644 --- a/services/gem/gem-owner.tester.js +++ b/services/gem/gem-owner.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('users (valid)') .get('/raphink.json') diff --git a/services/gem/gem-rank.service.js b/services/gem/gem-rank.service.js index 1a78371e9212e..de46d4933649d 100644 --- a/services/gem/gem-rank.service.js +++ b/services/gem/gem-rank.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { floorCount } = require('../color-formatters') -const { ordinalNumber } = require('../text-formatters') -const { BaseJsonService, InvalidResponse } = require('..') +import Joi from 'joi' +import { floorCount } from '../color-formatters.js' +import { ordinalNumber } from '../text-formatters.js' +import { BaseJsonService, InvalidResponse } from '../index.js' const keywords = ['ruby'] @@ -24,7 +22,7 @@ const dailySchema = Joi.array() .min(1) .required() -module.exports = class GemRank extends BaseJsonService { +export default class GemRank extends BaseJsonService { static category = 'downloads' static route = { base: 'gem', pattern: ':period(rt|rd)/:gem' } static examples = [ diff --git a/services/gem/gem-rank.tester.js b/services/gem/gem-rank.tester.js index 4cc5d89fcd821..73626c7b9c926 100644 --- a/services/gem/gem-rank.tester.js +++ b/services/gem/gem-rank.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isOrdinalNumber = Joi.string().regex(/^[1-9][0-9]+(ᵗʰ|ˢᵗ|ⁿᵈ|ʳᵈ)$/) const isOrdinalNumberDaily = Joi.string().regex( diff --git a/services/gem/gem-version.service.js b/services/gem/gem-version.service.js index fba13f7d933d4..d122c625c6a46 100644 --- a/services/gem/gem-version.service.js +++ b/services/gem/gem-version.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge, latest } = require('../version') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { renderVersionBadge, latest } from '../version.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ // In most cases `version` will be a SemVer but the registry doesn't @@ -23,7 +21,7 @@ const queryParamSchema = Joi.object({ include_prereleases: Joi.equal(''), }).required() -module.exports = class GemVersion extends BaseJsonService { +export default class GemVersion extends BaseJsonService { static category = 'version' static route = { base: 'gem/v', pattern: ':gem', queryParamSchema } static examples = [ diff --git a/services/gem/gem-version.tester.js b/services/gem/gem-version.tester.js index 6877777e14c33..0043e2ff9be92 100644 --- a/services/gem/gem-version.tester.js +++ b/services/gem/gem-version.tester.js @@ -1,10 +1,9 @@ -'use strict' - -const { +import { isVPlusDottedVersionAtLeastOne, withRegex, -} = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +} from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('version (valid)').get('/formatador.json').expectBadge({ label: 'gem', diff --git a/services/gemnasium/gemnasium.service.js b/services/gemnasium/gemnasium.service.js index b3a76ac147a96..ddcaeba5fedb0 100644 --- a/services/gemnasium/gemnasium.service.js +++ b/services/gemnasium/gemnasium.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ category: 'dependencies', route: { base: 'gemnasium', diff --git a/services/gemnasium/gemnasium.tester.js b/services/gemnasium/gemnasium.tester.js index 152a1ed98577c..9e5431424fcf8 100644 --- a/services/gemnasium/gemnasium.tester.js +++ b/services/gemnasium/gemnasium.tester.js @@ -1,11 +1,9 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'gemnasium', title: 'gemnasium', -})) +}) t.create('no longer available (previously dependencies)') .get('/mathiasbynens/he.json') diff --git a/services/gerrit/gerrit.service.js b/services/gerrit/gerrit.service.js index 4a3c4df77ed1e..04ebca37578d2 100644 --- a/services/gerrit/gerrit.service.js +++ b/services/gerrit/gerrit.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { optionalUrl } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { optionalUrl } from '../validators.js' +import { BaseJsonService } from '../index.js' const queryParamSchema = Joi.object({ baseUrl: optionalUrl.required(), @@ -12,7 +10,7 @@ const schema = Joi.object({ status: Joi.equal('NEW', 'MERGED', 'ABANDONED').required(), }).required() -module.exports = class Gerrit extends BaseJsonService { +export default class Gerrit extends BaseJsonService { static category = 'issue-tracking' static route = { base: 'gerrit', pattern: ':changeId', queryParamSchema } static examples = [ diff --git a/services/gerrit/gerrit.tester.js b/services/gerrit/gerrit.tester.js index b4468af421a72..2b80baf7cc5de 100644 --- a/services/gerrit/gerrit.tester.js +++ b/services/gerrit/gerrit.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() // Change open since December 2010, hopefully won't get merged or abandoned anytime soon. t.create('Gerrit new change') diff --git a/services/github/auth/acceptor.js b/services/github/auth/acceptor.js index 2b6145ea22d0a..80347be581ca2 100644 --- a/services/github/auth/acceptor.js +++ b/services/github/auth/acceptor.js @@ -1,11 +1,7 @@ -'use strict' - -const queryString = require('query-string') -const request = require('request') -const { - userAgent, -} = require('../../../core/base-service/legacy-request-handler') -const log = require('../../../core/server/log') +import queryString from 'query-string' +import request from 'request' +import { userAgent } from '../../../core/base-service/legacy-request-handler.js' +import log from '../../../core/server/log.js' function setRoutes({ server, authHelper, onTokenAccepted }) { const baseUrl = process.env.GATSBY_BASE_URL || 'https://img.shields.io' @@ -29,7 +25,7 @@ function setRoutes({ server, authHelper, onTokenAccepted }) { server.route(/^\/github-auth\/done$/, (data, match, end, ask) => { if (!data.code) { - log(`GitHub OAuth data: ${JSON.stringify(data)}`) + log.log(`GitHub OAuth data: ${JSON.stringify(data)}`) return end('GitHub OAuth authentication failed to provide a code.') } @@ -85,4 +81,4 @@ function setRoutes({ server, authHelper, onTokenAccepted }) { }) } -module.exports = { setRoutes } +export { setRoutes } diff --git a/services/github/auth/acceptor.spec.js b/services/github/auth/acceptor.spec.js index 523d3589f73e8..2d6cab6e24d83 100644 --- a/services/github/auth/acceptor.spec.js +++ b/services/github/auth/acceptor.spec.js @@ -1,15 +1,13 @@ -'use strict' - -const { expect } = require('chai') -const Camp = require('@shields_io/camp') -const FormData = require('form-data') -const sinon = require('sinon') -const portfinder = require('portfinder') -const queryString = require('query-string') -const nock = require('nock') -const got = require('../../../core/got-test-client') -const GithubConstellation = require('../github-constellation') -const acceptor = require('./acceptor') +import { expect } from 'chai' +import Camp from '@shields_io/camp' +import FormData from 'form-data' +import sinon from 'sinon' +import portfinder from 'portfinder' +import queryString from 'query-string' +import nock from 'nock' +import got from '../../../core/got-test-client.js' +import GithubConstellation from '../github-constellation.js' +import { setRoutes } from './acceptor.js' const fakeClientId = 'githubdabomb' @@ -39,7 +37,7 @@ describe('Github token acceptor', function () { let onTokenAccepted beforeEach(function () { onTokenAccepted = sinon.stub() - acceptor.setRoutes({ + setRoutes({ server: camp, authHelper: oauthHelper, onTokenAccepted, diff --git a/services/github/auth/admin.js b/services/github/auth/admin.js index 52a8dbd8feb35..9ffea4d056415 100644 --- a/services/github/auth/admin.js +++ b/services/github/auth/admin.js @@ -1,6 +1,4 @@ -'use strict' - -const { makeSecretIsValid } = require('../../../core/server/secret-is-valid') +import { makeSecretIsValid } from '../../../core/server/secret-is-valid.js' function setRoutes({ shieldsSecret }, { apiProvider, server }) { const secretIsValid = makeSecretIsValid(shieldsSecret) @@ -31,4 +29,4 @@ function setRoutes({ shieldsSecret }, { apiProvider, server }) { }) } -module.exports = { setRoutes } +export { setRoutes } diff --git a/services/github/auth/admin.spec.js b/services/github/auth/admin.spec.js index 438c8386d87a6..fb751498e0270 100644 --- a/services/github/auth/admin.spec.js +++ b/services/github/auth/admin.spec.js @@ -1,11 +1,9 @@ -'use strict' - -const { expect } = require('chai') -const Camp = require('@shields_io/camp') -const portfinder = require('portfinder') -const got = require('../../../core/got-test-client') -const GithubApiProvider = require('../github-api-provider') -const { setRoutes } = require('./admin') +import { expect } from 'chai' +import Camp from '@shields_io/camp' +import portfinder from 'portfinder' +import got from '../../../core/got-test-client.js' +import GithubApiProvider from '../github-api-provider.js' +import { setRoutes } from './admin.js' describe('GitHub admin route', function () { const shieldsSecret = '7'.repeat(40) diff --git a/services/github/github-all-contributors.service.js b/services/github/github-all-contributors.service.js index a2f2d9fa6a022..ed54e6f2ea548 100644 --- a/services/github/github-all-contributors.service.js +++ b/services/github/github-all-contributors.service.js @@ -1,18 +1,14 @@ -'use strict' - -const Joi = require('joi') -const { renderContributorBadge } = require('../contributor-count') -const { ConditionalGithubAuthV3Service } = require('./github-auth-service') -const { fetchJsonFromRepo } = require('./github-common-fetch') -const { documentation } = require('./github-helpers') +import Joi from 'joi' +import { renderContributorBadge } from '../contributor-count.js' +import { ConditionalGithubAuthV3Service } from './github-auth-service.js' +import { fetchJsonFromRepo } from './github-common-fetch.js' +import { documentation } from './github-helpers.js' const schema = Joi.object({ contributors: Joi.array().required(), }).required() -module.exports = class GithubAllContributorsService extends ( - ConditionalGithubAuthV3Service -) { +export default class GithubAllContributorsService extends ConditionalGithubAuthV3Service { static category = 'activity' static route = { base: 'github/all-contributors', diff --git a/services/github/github-all-contributors.tester.js b/services/github/github-all-contributors.tester.js index dea4dd6d01f63..f2656b3cc6b4e 100644 --- a/services/github/github-all-contributors.tester.js +++ b/services/github/github-all-contributors.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isMetric } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { isMetric } from '../test-validators.js' +export const t = await createServiceTester() t.create('all-contributors repo') .get('/all-contributors/all-contributors.json') diff --git a/services/github/github-api-provider.integration.js b/services/github/github-api-provider.integration.js index 0caf068b130da..26f9a0ac17715 100644 --- a/services/github/github-api-provider.integration.js +++ b/services/github/github-api-provider.integration.js @@ -1,8 +1,7 @@ -'use strict' - -const { expect } = require('chai') -const config = require('config').util.toObject() -const GithubApiProvider = require('./github-api-provider') +import { expect } from 'chai' +import config from 'config' +import request from 'request' +import GithubApiProvider from './github-api-provider.js' describe('Github API provider', function () { const baseUrl = process.env.GITHUB_URL || 'https://api.github.com' @@ -10,7 +9,7 @@ describe('Github API provider', function () { let token before(function () { - token = config.private.gh_token + token = config.util.toObject().private.gh_token if (!token) { throw Error('The integration tests require a gh_token to be set') } @@ -32,7 +31,7 @@ describe('Github API provider', function () { this.timeout('20s') for (let i = 0; i < 10; ++i) { await githubApiProvider.requestAsPromise( - require('request'), + request, '/repos/rust-lang/rust', {} ) @@ -54,7 +53,7 @@ describe('Github API provider', function () { const headers = [] async function performOneRequest() { const { res } = await githubApiProvider.requestAsPromise( - require('request'), + request, '/repos/rust-lang/rust', {} ) diff --git a/services/github/github-api-provider.js b/services/github/github-api-provider.js index 74d3607a5a8a8..eefbe1b966892 100644 --- a/services/github/github-api-provider.js +++ b/services/github/github-api-provider.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const log = require('../../core/server/log') -const { TokenPool } = require('../../core/token-pooling/token-pool') -const { userAgent } = require('../../core/base-service/legacy-request-handler') -const { nonNegativeInteger } = require('../validators') +import Joi from 'joi' +import log from '../../core/server/log.js' +import { TokenPool } from '../../core/token-pooling/token-pool.js' +import { userAgent } from '../../core/base-service/legacy-request-handler.js' +import { nonNegativeInteger } from '../validators.js' const headerSchema = Joi.object({ 'x-ratelimit-limit': nonNegativeInteger, @@ -214,4 +212,4 @@ class GithubApiProvider { } } -module.exports = GithubApiProvider +export default GithubApiProvider diff --git a/services/github/github-api-provider.spec.js b/services/github/github-api-provider.spec.js index cd2d173f8ea43..dbb59d68e0552 100644 --- a/services/github/github-api-provider.spec.js +++ b/services/github/github-api-provider.spec.js @@ -1,8 +1,6 @@ -'use strict' - -const { expect } = require('chai') -const sinon = require('sinon') -const GithubApiProvider = require('./github-api-provider') +import { expect } from 'chai' +import sinon from 'sinon' +import GithubApiProvider from './github-api-provider.js' describe('Github API provider', function () { const baseUrl = 'https://github-api.example.com' diff --git a/services/github/github-auth-service.js b/services/github/github-auth-service.js index 16aa35deba9bf..826ab3990d5ab 100644 --- a/services/github/github-auth-service.js +++ b/services/github/github-auth-service.js @@ -1,8 +1,6 @@ -'use strict' - -const gql = require('graphql-tag') -const { mergeQueries } = require('../../core/base-service/graphql') -const { BaseGraphqlService, BaseJsonService } = require('..') +import gql from 'graphql-tag' +import { mergeQueries } from '../../core/base-service/graphql.js' +import { BaseGraphqlService, BaseJsonService } from '../index.js' function createRequestFetcher(context, config) { const { sendAndCacheRequestWithCallbacks, githubApiProvider } = context @@ -89,7 +87,7 @@ All other things being equal, a graphql query will almost always be a smaller number of bytes over the wire and a smaller/simpler object to parse. */ -module.exports = { +export { GithubAuthV3Service, ConditionalGithubAuthV3Service, GithubAuthV4Service, diff --git a/services/github/github-checks-status.service.js b/services/github/github-checks-status.service.js index 79c68724c2066..35097f7b5a042 100644 --- a/services/github/github-checks-status.service.js +++ b/services/github/github-checks-status.service.js @@ -1,15 +1,13 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus, renderBuildStatusBadge } = require('../build-status') -const { GithubAuthV3Service } = require('./github-auth-service') -const { documentation, errorMessagesFor } = require('./github-helpers') +import Joi from 'joi' +import { isBuildStatus, renderBuildStatusBadge } from '../build-status.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { documentation, errorMessagesFor } from './github-helpers.js' const schema = Joi.object({ state: isBuildStatus, }).required() -module.exports = class GithubChecksStatus extends GithubAuthV3Service { +export default class GithubChecksStatus extends GithubAuthV3Service { static category = 'build' static route = { base: 'github/checks-status', diff --git a/services/github/github-checks-status.tester.js b/services/github/github-checks-status.tester.js index 5b6f6c9e6a0bc..80cfe34bdd3ac 100644 --- a/services/github/github-checks-status.tester.js +++ b/services/github/github-checks-status.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isBuildStatus } = require('../build-status') +import { createServiceTester } from '../tester.js' +import { isBuildStatus } from '../build-status.js' +export const t = await createServiceTester() t.create('branch checks (branch)') .get('/badges/shields/master.json') diff --git a/services/github/github-code-size.service.js b/services/github/github-code-size.service.js index e8f1a3548620d..c5b394fbcea1d 100644 --- a/services/github/github-code-size.service.js +++ b/services/github/github-code-size.service.js @@ -1,10 +1,8 @@ -'use strict' +import prettyBytes from 'pretty-bytes' +import { BaseGithubLanguage } from './github-languages-base.js' +import { documentation } from './github-helpers.js' -const prettyBytes = require('pretty-bytes') -const { BaseGithubLanguage } = require('./github-languages-base') -const { documentation } = require('./github-helpers') - -module.exports = class GithubCodeSize extends BaseGithubLanguage { +export default class GithubCodeSize extends BaseGithubLanguage { static category = 'size' static route = { base: 'github/languages/code-size', diff --git a/services/github/github-code-size.tester.js b/services/github/github-code-size.tester.js index 8a6e52e13c63c..39ec144e802f5 100644 --- a/services/github/github-code-size.tester.js +++ b/services/github/github-code-size.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isFileSize } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isFileSize } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('code size in bytes for all languages') .get('/badges/shields.json') diff --git a/services/github/github-commit-activity.service.js b/services/github/github-commit-activity.service.js index d9190659c2856..ee7ad583ac849 100644 --- a/services/github/github-commit-activity.service.js +++ b/services/github/github-commit-activity.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { GithubAuthV3Service } = require('./github-auth-service') -const { errorMessagesFor, documentation } = require('./github-helpers') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { errorMessagesFor, documentation } from './github-helpers.js' const schema = Joi.array() .items( @@ -14,7 +12,7 @@ const schema = Joi.array() ) .required() -module.exports = class GithubCommitActivity extends GithubAuthV3Service { +export default class GithubCommitActivity extends GithubAuthV3Service { static category = 'activity' static route = { base: 'github/commit-activity', diff --git a/services/github/github-commit-activity.tester.js b/services/github/github-commit-activity.tester.js index 3a401e9bc9547..bd18f2d68821e 100644 --- a/services/github/github-commit-activity.tester.js +++ b/services/github/github-commit-activity.tester.js @@ -1,11 +1,10 @@ -'use strict' - -const Joi = require('joi') -const { +import Joi from 'joi' +import { isMetricOverTimePeriod, isZeroOverTimePeriod, -} = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +} from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isCommitActivity = Joi.alternatives().try( isMetricOverTimePeriod, diff --git a/services/github/github-commit-status.service.js b/services/github/github-commit-status.service.js index 613d1f90d8621..46aae3410a8d4 100644 --- a/services/github/github-commit-status.service.js +++ b/services/github/github-commit-status.service.js @@ -1,16 +1,14 @@ -'use strict' - -const Joi = require('joi') -const { NotFound, InvalidParameter } = require('..') -const { GithubAuthV3Service } = require('./github-auth-service') -const { documentation, errorMessagesFor } = require('./github-helpers') +import Joi from 'joi' +import { NotFound, InvalidParameter } from '../index.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { documentation, errorMessagesFor } from './github-helpers.js' const schema = Joi.object({ // https://stackoverflow.com/a/23969867/893113 status: Joi.equal('identical', 'ahead', 'behind', 'diverged'), }).required() -module.exports = class GithubCommitStatus extends GithubAuthV3Service { +export default class GithubCommitStatus extends GithubAuthV3Service { static category = 'issue-tracking' static route = { base: 'github/commit-status', diff --git a/services/github/github-commit-status.tester.js b/services/github/github-commit-status.tester.js index baeb41a6150e2..5e6f9f9fdc19d 100644 --- a/services/github/github-commit-status.tester.js +++ b/services/github/github-commit-status.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { invalidJSONString } = require('../response-fixtures') -const t = (module.exports = require('../tester').createServiceTester()) +import { invalidJSONString } from '../response-fixtures.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('commit status - commit in branch') .get('/badges/shields/master/5d4ab86b1b5ddfb3c4a70a70bd19932c52603b8c.json') diff --git a/services/github/github-commits-since.service.js b/services/github/github-commits-since.service.js index bda397e809493..7fd0cc924b513 100644 --- a/services/github/github-commits-since.service.js +++ b/services/github/github-commits-since.service.js @@ -1,18 +1,16 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { GithubAuthV3Service } = require('./github-auth-service') -const { +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { fetchLatestRelease, queryParamSchema, -} = require('./github-common-release') -const { documentation, errorMessagesFor } = require('./github-helpers') +} from './github-common-release.js' +import { documentation, errorMessagesFor } from './github-helpers.js' const schema = Joi.object({ ahead_by: nonNegativeInteger }).required() -module.exports = class GithubCommitsSince extends GithubAuthV3Service { +export default class GithubCommitsSince extends GithubAuthV3Service { static category = 'activity' static route = { base: 'github/commits-since', diff --git a/services/github/github-commits-since.tester.js b/services/github/github-commits-since.tester.js index 4ba6e65c292c3..a16a093d9cebb 100644 --- a/services/github/github-commits-since.tester.js +++ b/services/github/github-commits-since.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { withRegex, isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { withRegex, isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isCommitsSince = withRegex(/^(commits since){1}[\s\S]+$/) diff --git a/services/github/github-common-fetch.js b/services/github/github-common-fetch.js index 0ddd022a5e15b..1cf6c72fd1f94 100644 --- a/services/github/github-common-fetch.js +++ b/services/github/github-common-fetch.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { InvalidResponse } = require('..') -const { errorMessagesFor } = require('./github-helpers') +import Joi from 'joi' +import { InvalidResponse } from '../index.js' +import { errorMessagesFor } from './github-helpers.js' const issueSchema = Joi.object({ head: Joi.object({ @@ -77,8 +75,4 @@ async function fetchJsonFromRepo( } } -module.exports = { - fetchIssue, - fetchRepoContent, - fetchJsonFromRepo, -} +export { fetchIssue, fetchRepoContent, fetchJsonFromRepo } diff --git a/services/github/github-common-release.js b/services/github/github-common-release.js index 58bbd2489eb4e..81e4f97d92534 100644 --- a/services/github/github-common-release.js +++ b/services/github/github-common-release.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { latest } = require('../version') -const { NotFound } = require('..') -const { errorMessagesFor } = require('./github-helpers') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { latest } from '../version.js' +import { NotFound } from '../index.js' +import { errorMessagesFor } from './github-helpers.js' const releaseInfoSchema = Joi.object({ assets: Joi.array() @@ -96,8 +94,5 @@ async function fetchLatestRelease( return latestRelease } -module.exports = { - fetchLatestRelease, - queryParamSchema, - _getLatestRelease: getLatestRelease, // currently only used for tests -} +export { fetchLatestRelease, queryParamSchema } +export const _getLatestRelease = getLatestRelease // currently only used for tests diff --git a/services/github/github-common-release.spec.js b/services/github/github-common-release.spec.js index 0ecd46fbe4afc..ed927180ac3f9 100644 --- a/services/github/github-common-release.spec.js +++ b/services/github/github-common-release.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const { _getLatestRelease } = require('./github-common-release') +import { test, given } from 'sazerac' +import { _getLatestRelease } from './github-common-release.js' describe('GithubRelease', function () { test(_getLatestRelease, () => { diff --git a/services/github/github-constellation.js b/services/github/github-constellation.js index 7b8d32242e085..e74114e7a46f9 100644 --- a/services/github/github-constellation.js +++ b/services/github/github-constellation.js @@ -1,11 +1,9 @@ -'use strict' - -const { AuthHelper } = require('../../core/base-service/auth-helper') -const RedisTokenPersistence = require('../../core/token-pooling/redis-token-persistence') -const log = require('../../core/server/log') -const GithubApiProvider = require('./github-api-provider') -const { setRoutes: setAdminRoutes } = require('./auth/admin') -const { setRoutes: setAcceptorRoutes } = require('./auth/acceptor') +import { AuthHelper } from '../../core/base-service/auth-helper.js' +import RedisTokenPersistence from '../../core/token-pooling/redis-token-persistence.js' +import log from '../../core/server/log.js' +import GithubApiProvider from './github-api-provider.js' +import { setRoutes as setAdminRoutes } from './auth/admin.js' +import { setRoutes as setAcceptorRoutes } from './auth/acceptor.js' // Convenience class with all the stuff related to the Github API and its // authorization tokens, to simplify server initialization. @@ -29,7 +27,7 @@ class GithubConstellation { const { redis_url: redisUrl, gh_token: globalToken } = config.private if (redisUrl) { - log('Token persistence configured with redisUrl') + log.log('Token persistence configured with redisUrl') this.persistence = new RedisTokenPersistence({ url: redisUrl, key: 'githubUserTokens', @@ -49,7 +47,7 @@ class GithubConstellation { scheduleDebugLogging() { if (this._debugEnabled) { this.debugInterval = setInterval(() => { - log(this.apiProvider.getTokenDebugInfo()) + log.log(this.apiProvider.getTokenDebugInfo()) }, 1000 * this._debugIntervalSeconds) } } @@ -130,4 +128,4 @@ class GithubConstellation { } } -module.exports = GithubConstellation +export default GithubConstellation diff --git a/services/github/github-contributors.service.js b/services/github/github-contributors.service.js index 0103295624dcc..6ad4c713e0a4e 100644 --- a/services/github/github-contributors.service.js +++ b/services/github/github-contributors.service.js @@ -1,15 +1,13 @@ -'use strict' - -const Joi = require('joi') -const parseLinkHeader = require('parse-link-header') -const { renderContributorBadge } = require('../contributor-count') -const { GithubAuthV3Service } = require('./github-auth-service') -const { documentation, errorMessagesFor } = require('./github-helpers') +import Joi from 'joi' +import parseLinkHeader from 'parse-link-header' +import { renderContributorBadge } from '../contributor-count.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { documentation, errorMessagesFor } from './github-helpers.js' // All we do is check its length. const schema = Joi.array().items(Joi.object()) -module.exports = class GithubContributors extends GithubAuthV3Service { +export default class GithubContributors extends GithubAuthV3Service { static category = 'activity' static route = { base: 'github', diff --git a/services/github/github-contributors.tester.js b/services/github/github-contributors.tester.js index 15bebff1019e4..4495d3b473e5b 100644 --- a/services/github/github-contributors.tester.js +++ b/services/github/github-contributors.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isMetric } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { isMetric } from '../test-validators.js' +export const t = await createServiceTester() t.create('Contributors').get('/contributors/badges/shields.json').expectBadge({ label: 'contributors', diff --git a/services/github/github-deployments.service.js b/services/github/github-deployments.service.js index 04dfc21cbcb51..eed495401cfbb 100644 --- a/services/github/github-deployments.service.js +++ b/services/github/github-deployments.service.js @@ -1,10 +1,8 @@ -'use strict' - -const gql = require('graphql-tag') -const Joi = require('joi') -const { NotFound } = require('..') -const { GithubAuthV4Service } = require('./github-auth-service') -const { documentation, transformErrors } = require('./github-helpers') +import gql from 'graphql-tag' +import Joi from 'joi' +import { NotFound } from '../index.js' +import { GithubAuthV4Service } from './github-auth-service.js' +import { documentation, transformErrors } from './github-helpers.js' const greenStates = ['SUCCESS'] const redStates = ['ERROR', 'FAILURE'] @@ -44,7 +42,7 @@ const schema = Joi.object({ }).required(), }).required() -module.exports = class GithubDeployments extends GithubAuthV4Service { +export default class GithubDeployments extends GithubAuthV4Service { static category = 'other' static route = { base: 'github/deployments', diff --git a/services/github/github-deployments.spec.js b/services/github/github-deployments.spec.js index 9f7307c85a81e..d3221706c5740 100644 --- a/services/github/github-deployments.spec.js +++ b/services/github/github-deployments.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const GithubDeployments = require('./github-deployments.service') +import { test, given } from 'sazerac' +import GithubDeployments from './github-deployments.service.js' describe('GithubDeployments', function () { test(GithubDeployments.render, () => { diff --git a/services/github/github-deployments.tester.js b/services/github/github-deployments.tester.js index 753dd2d390bfb..325ae34faad9b 100644 --- a/services/github/github-deployments.tester.js +++ b/services/github/github-deployments.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const validMessages = [ 'success', diff --git a/services/github/github-directory-file-count.service.js b/services/github/github-directory-file-count.service.js index 7b0e4885b0007..24aabaa34e870 100644 --- a/services/github/github-directory-file-count.service.js +++ b/services/github/github-directory-file-count.service.js @@ -1,14 +1,12 @@ -'use strict' - -const path = require('path') -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { InvalidParameter } = require('..') -const { ConditionalGithubAuthV3Service } = require('./github-auth-service') -const { - documentation: commonDocumentation, +import path from 'path' +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { InvalidParameter } from '../index.js' +import { ConditionalGithubAuthV3Service } from './github-auth-service.js' +import { + documentation as commonDocumentation, errorMessagesFor, -} = require('./github-helpers') +} from './github-helpers.js' const documentation = `${commonDocumentation}

@@ -45,9 +43,7 @@ const queryParamSchema = Joi.object({ extension: Joi.string(), }) -module.exports = class GithubDirectoryFileCount extends ( - ConditionalGithubAuthV3Service -) { +export default class GithubDirectoryFileCount extends ConditionalGithubAuthV3Service { static category = 'size' static route = { diff --git a/services/github/github-directory-file-count.spec.js b/services/github/github-directory-file-count.spec.js index 721691ad5bd61..056a9622a0a8a 100644 --- a/services/github/github-directory-file-count.spec.js +++ b/services/github/github-directory-file-count.spec.js @@ -1,9 +1,7 @@ -'use strict' - -const { expect } = require('chai') -const { test, given } = require('sazerac') -const { InvalidParameter } = require('..') -const GithubDirectoryFileCount = require('./github-directory-file-count.service') +import { expect } from 'chai' +import { test, given } from 'sazerac' +import { InvalidParameter } from '../index.js' +import GithubDirectoryFileCount from './github-directory-file-count.service.js' describe('GithubDirectoryFileCount', function () { const contents = [ diff --git a/services/github/github-directory-file-count.tester.js b/services/github/github-directory-file-count.tester.js index 2ea38495e371b..b4ac6c6f2c6c4 100644 --- a/services/github/github-directory-file-count.tester.js +++ b/services/github/github-directory-file-count.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('directory file count').get('/badges/shields.json').expectBadge({ label: 'files', diff --git a/services/github/github-discussions-total.service.js b/services/github/github-discussions-total.service.js index 88bc5c3356438..425563c220a90 100644 --- a/services/github/github-discussions-total.service.js +++ b/services/github/github-discussions-total.service.js @@ -1,10 +1,8 @@ -'use strict' - -const { default: gql } = require('graphql-tag') -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { GithubAuthV4Service } = require('./github-auth-service') -const { transformErrors } = require('./github-helpers') +import gql from 'graphql-tag' +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { GithubAuthV4Service } from './github-auth-service.js' +import { transformErrors } from './github-helpers.js' const schema = Joi.object({ data: Joi.object({ @@ -16,7 +14,7 @@ const schema = Joi.object({ }).required(), }).required() -module.exports = class GithubTotalDiscussions extends GithubAuthV4Service { +export default class GithubTotalDiscussions extends GithubAuthV4Service { static category = 'other' static route = { base: 'github/discussions', diff --git a/services/github/github-discussions-total.tester.js b/services/github/github-discussions-total.tester.js index 737419d485378..7a347876685ce 100644 --- a/services/github/github-discussions-total.tester.js +++ b/services/github/github-discussions-total.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { withRegex } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { withRegex } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('GitHub Total Discussions (repo not found)') .get('/not-a-user/not-a-repo.json') diff --git a/services/github/github-downloads.service.js b/services/github/github-downloads.service.js index cb22a498c428a..d544a91e743d8 100644 --- a/services/github/github-downloads.service.js +++ b/services/github/github-downloads.service.js @@ -1,13 +1,11 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { downloadCount: downloadCountColor } = require('../color-formatters') -const { NotFound } = require('..') -const { GithubAuthV3Service } = require('./github-auth-service') -const { fetchLatestRelease } = require('./github-common-release') -const { documentation, errorMessagesFor } = require('./github-helpers') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { downloadCount as downloadCountColor } from '../color-formatters.js' +import { NotFound } from '../index.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { fetchLatestRelease } from './github-common-release.js' +import { documentation, errorMessagesFor } from './github-helpers.js' const queryParamSchema = Joi.object({ sort: Joi.string().valid('date', 'semver').default('date'), @@ -27,7 +25,7 @@ const releaseArraySchema = Joi.alternatives().try( Joi.array().length(0) ) -module.exports = class GithubDownloads extends GithubAuthV3Service { +export default class GithubDownloads extends GithubAuthV3Service { static category = 'downloads' static route = { base: 'github', diff --git a/services/github/github-downloads.tester.js b/services/github/github-downloads.tester.js index 099092af95285..e002516906684 100644 --- a/services/github/github-downloads.tester.js +++ b/services/github/github-downloads.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const mockLatestRelease = release => nock => nock('https://api.github.com') diff --git a/services/github/github-followers.service.js b/services/github/github-followers.service.js index f39bf32cbb8f5..71b3d01b05c9f 100644 --- a/services/github/github-followers.service.js +++ b/services/github/github-followers.service.js @@ -1,16 +1,14 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { GithubAuthV3Service } = require('./github-auth-service') -const { documentation, errorMessagesFor } = require('./github-helpers') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { documentation, errorMessagesFor } from './github-helpers.js' const schema = Joi.object({ followers: nonNegativeInteger, }).required() -module.exports = class GithubFollowers extends GithubAuthV3Service { +export default class GithubFollowers extends GithubAuthV3Service { static category = 'social' static route = { base: 'github/followers', pattern: ':user' } static examples = [ diff --git a/services/github/github-followers.tester.js b/services/github/github-followers.tester.js index c0db38a83915a..4e1babb264c26 100644 --- a/services/github/github-followers.tester.js +++ b/services/github/github-followers.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Followers').get('/webcaetano.json').expectBadge({ label: 'followers', diff --git a/services/github/github-forks.service.js b/services/github/github-forks.service.js index 67bac545b8003..0c60e03c67ba7 100644 --- a/services/github/github-forks.service.js +++ b/services/github/github-forks.service.js @@ -1,11 +1,9 @@ -'use strict' - -const gql = require('graphql-tag') -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { GithubAuthV4Service } = require('./github-auth-service') -const { documentation, transformErrors } = require('./github-helpers') +import gql from 'graphql-tag' +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { GithubAuthV4Service } from './github-auth-service.js' +import { documentation, transformErrors } from './github-helpers.js' const schema = Joi.object({ data: Joi.object({ @@ -15,7 +13,7 @@ const schema = Joi.object({ }).required(), }).required() -module.exports = class GithubForks extends GithubAuthV4Service { +export default class GithubForks extends GithubAuthV4Service { static category = 'social' static route = { base: 'github/forks', pattern: ':user/:repo' } static examples = [ diff --git a/services/github/github-forks.tester.js b/services/github/github-forks.tester.js index 9656b806dda09..31ad83fbbf8c7 100644 --- a/services/github/github-forks.tester.js +++ b/services/github/github-forks.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Forks') .get('/badges/shields.json') diff --git a/services/github/github-go-mod.service.js b/services/github/github-go-mod.service.js index cb45aa2a4ce4d..9feded9bae79d 100644 --- a/services/github/github-go-mod.service.js +++ b/services/github/github-go-mod.service.js @@ -1,11 +1,9 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { InvalidResponse } = require('..') -const { ConditionalGithubAuthV3Service } = require('./github-auth-service') -const { fetchRepoContent } = require('./github-common-fetch') -const { documentation } = require('./github-helpers') +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { InvalidResponse } from '../index.js' +import { ConditionalGithubAuthV3Service } from './github-auth-service.js' +import { fetchRepoContent } from './github-common-fetch.js' +import { documentation } from './github-helpers.js' const queryParamSchema = Joi.object({ filename: Joi.string(), @@ -15,9 +13,7 @@ const goVersionRegExp = /^go (.+)$/m const keywords = ['golang'] -module.exports = class GithubGoModGoVersion extends ( - ConditionalGithubAuthV3Service -) { +export default class GithubGoModGoVersion extends ConditionalGithubAuthV3Service { static category = 'version' static route = { base: 'github/go-mod/go-version', diff --git a/services/github/github-go-mod.tester.js b/services/github/github-go-mod.tester.js index e83e4a1d8990d..d42378079cc10 100644 --- a/services/github/github-go-mod.tester.js +++ b/services/github/github-go-mod.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isVPlusDottedVersionAtLeastOne } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isVPlusDottedVersionAtLeastOne } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Go version').get('/gohugoio/hugo.json').expectBadge({ label: 'Go', diff --git a/services/github/github-hacktoberfest.service.js b/services/github/github-hacktoberfest.service.js index 85339bd39a8df..bf8782c17a5bf 100644 --- a/services/github/github-hacktoberfest.service.js +++ b/services/github/github-hacktoberfest.service.js @@ -1,15 +1,13 @@ -'use strict' - -const gql = require('graphql-tag') -const Joi = require('joi') -const moment = require('moment') -const { metric, maybePluralize } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { GithubAuthV4Service } = require('./github-auth-service') -const { - documentation: githubDocumentation, +import gql from 'graphql-tag' +import Joi from 'joi' +import moment from 'moment' +import { metric, maybePluralize } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { GithubAuthV4Service } from './github-auth-service.js' +import { + documentation as githubDocumentation, transformErrors, -} = require('./github-helpers') +} from './github-helpers.js' const documentation = `

@@ -58,9 +56,7 @@ const queryParamSchema = Joi.object({ suggestion_label: Joi.string(), }).required() -module.exports = class GithubHacktoberfestCombinedStatus extends ( - GithubAuthV4Service -) { +export default class GithubHacktoberfestCombinedStatus extends GithubAuthV4Service { static category = 'issue-tracking' static route = { base: 'github/hacktoberfest', diff --git a/services/github/github-hacktoberfest.spec.js b/services/github/github-hacktoberfest.spec.js index 01916b5a8a2f6..c872f7ab64bf7 100644 --- a/services/github/github-hacktoberfest.spec.js +++ b/services/github/github-hacktoberfest.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const GitHubHacktoberfest = require('./github-hacktoberfest.service') +import { test, given } from 'sazerac' +import GitHubHacktoberfest from './github-hacktoberfest.service.js' describe('GitHubHacktoberfest', function () { test(GitHubHacktoberfest.render, () => { diff --git a/services/github/github-hacktoberfest.tester.js b/services/github/github-hacktoberfest.tester.js index b11b1526d0880..5fb0212a9f710 100644 --- a/services/github/github-hacktoberfest.tester.js +++ b/services/github/github-hacktoberfest.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isHacktoberfestNoIssuesStatus = Joi.string().regex( /^[0-9]+ PRs?(, [0-9]+ days? left)?$/ diff --git a/services/github/github-helpers.js b/services/github/github-helpers.js index eb11e24fff321..9bbeda52c6961 100644 --- a/services/github/github-helpers.js +++ b/services/github/github-helpers.js @@ -1,7 +1,5 @@ -'use strict' - -const { colorScale } = require('../color-formatters') -const { InvalidResponse, NotFound } = require('..') +import { colorScale } from '../color-formatters.js' +import { InvalidResponse, NotFound } from '../index.js' const documentation = `

@@ -33,7 +31,7 @@ function transformErrors(errors, entity = 'repo') { const commentsColor = colorScale([1, 3, 10, 25], undefined, true) -module.exports = { +export { documentation, stateColor, commentsColor, diff --git a/services/github/github-issue-detail-redirect.service.js b/services/github/github-issue-detail-redirect.service.js index 40be57b51b99c..8bf174f7b67d9 100644 --- a/services/github/github-issue-detail-redirect.service.js +++ b/services/github/github-issue-detail-redirect.service.js @@ -1,13 +1,11 @@ -'use strict' - -const { redirector } = require('..') +import { redirector } from '../index.js' const variantMap = { s: 'state', u: 'author', } -module.exports = [ +export default [ redirector({ category: 'issue-tracking', route: { diff --git a/services/github/github-issue-detail-redirect.tester.js b/services/github/github-issue-detail-redirect.tester.js index da07a159e6f0c..1be7ba22c6b96 100644 --- a/services/github/github-issue-detail-redirect.tester.js +++ b/services/github/github-issue-detail-redirect.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'GithubIssueDetailRedirect', title: 'GithubIssueDetailRedirect', pathPrefix: '/github', -})) +}) t.create('github issue detail (s shorthand)') .get('/issues/detail/s/badges/shields/979.svg') diff --git a/services/github/github-issue-detail.service.js b/services/github/github-issue-detail.service.js index 8fca29bee6866..48359527c6793 100644 --- a/services/github/github-issue-detail.service.js +++ b/services/github/github-issue-detail.service.js @@ -1,17 +1,15 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { formatDate, metric } = require('../text-formatters') -const { age } = require('../color-formatters') -const { InvalidResponse } = require('..') -const { GithubAuthV3Service } = require('./github-auth-service') -const { +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { formatDate, metric } from '../text-formatters.js' +import { age } from '../color-formatters.js' +import { InvalidResponse } from '../index.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { documentation, errorMessagesFor, stateColor, commentsColor, -} = require('./github-helpers') +} from './github-helpers.js' const commonSchemaFields = { number: nonNegativeInteger, @@ -152,7 +150,7 @@ const propertyMap = { 'last-update': ageUpdateMap, } -module.exports = class GithubIssueDetail extends GithubAuthV3Service { +export default class GithubIssueDetail extends GithubAuthV3Service { static category = 'issue-tracking' static route = { base: 'github', diff --git a/services/github/github-issue-detail.spec.js b/services/github/github-issue-detail.spec.js index 3d5ef086f30dd..e639bbd4cca42 100644 --- a/services/github/github-issue-detail.spec.js +++ b/services/github/github-issue-detail.spec.js @@ -1,12 +1,10 @@ -'use strict' - -const { expect } = require('chai') -const { test, given } = require('sazerac') -const { age } = require('../color-formatters') -const { formatDate, metric } = require('../text-formatters') -const { InvalidResponse } = require('..') -const GithubIssueDetail = require('./github-issue-detail.service') -const { stateColor, commentsColor } = require('./github-helpers') +import { expect } from 'chai' +import { test, given } from 'sazerac' +import { age } from '../color-formatters.js' +import { formatDate, metric } from '../text-formatters.js' +import { InvalidResponse } from '../index.js' +import GithubIssueDetail from './github-issue-detail.service.js' +import { stateColor, commentsColor } from './github-helpers.js' describe('GithubIssueDetail', function () { test(GithubIssueDetail.render, () => { diff --git a/services/github/github-issue-detail.tester.js b/services/github/github-issue-detail.tester.js index 0a9de66414ee3..bb0103e48ca48 100644 --- a/services/github/github-issue-detail.tester.js +++ b/services/github/github-issue-detail.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { isFormattedDate } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { isFormattedDate } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('github issue state') .get('/issues/detail/state/badges/shields/979.json') diff --git a/services/github/github-issues-search.service.js b/services/github/github-issues-search.service.js index 979345af9ef6e..68e1b2a5eb766 100644 --- a/services/github/github-issues-search.service.js +++ b/services/github/github-issues-search.service.js @@ -1,11 +1,9 @@ -'use strict' - -const gql = require('graphql-tag') -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { GithubAuthV4Service } = require('./github-auth-service') -const { documentation, transformErrors } = require('./github-helpers') +import gql from 'graphql-tag' +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { GithubAuthV4Service } from './github-auth-service.js' +import { documentation, transformErrors } from './github-helpers.js' const issueCountSchema = Joi.object({ data: Joi.object({ @@ -106,7 +104,4 @@ class GithubRepoIssuesSearch extends BaseGithubIssuesSearch { } } -module.exports = { - GithubIssuesSearch, - GithubRepoIssuesSearch, -} +export { GithubIssuesSearch, GithubRepoIssuesSearch } diff --git a/services/github/github-issues-search.tester.js b/services/github/github-issues-search.tester.js index 04c88c2f24a89..57bd0c11a778b 100644 --- a/services/github/github-issues-search.tester.js +++ b/services/github/github-issues-search.tester.js @@ -1,12 +1,10 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const { ServiceTester } = require('../tester') -const t = (module.exports = new ServiceTester({ +import { isMetric } from '../test-validators.js' +import { ServiceTester } from '../tester.js' +export const t = new ServiceTester({ id: 'GithubIssuesSearch', title: 'Github Issues Search', pathPrefix: '/github', -})) +}) t.create('GitHub issue search (valid query string)') .get( diff --git a/services/github/github-issues.service.js b/services/github/github-issues.service.js index 9f7b37ed2be44..d9bfe3d2adecc 100644 --- a/services/github/github-issues.service.js +++ b/services/github/github-issues.service.js @@ -1,11 +1,9 @@ -'use strict' - -const gql = require('graphql-tag') -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { GithubAuthV4Service } = require('./github-auth-service') -const { documentation, transformErrors } = require('./github-helpers') +import gql from 'graphql-tag' +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { GithubAuthV4Service } from './github-auth-service.js' +import { documentation, transformErrors } from './github-helpers.js' const issueCountSchema = Joi.object({ data: Joi.object({ @@ -37,7 +35,7 @@ const isClosedVariant = { 'issues-pr-closed': true, } -module.exports = class GithubIssues extends GithubAuthV4Service { +export default class GithubIssues extends GithubAuthV4Service { static category = 'issue-tracking' static route = { base: 'github', diff --git a/services/github/github-issues.tester.js b/services/github/github-issues.tester.js index bb25a88dab518..f84a99f432ac5 100644 --- a/services/github/github-issues.tester.js +++ b/services/github/github-issues.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { isMetric, isMetricOpenIssues } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { isMetric, isMetricOpenIssues } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('GitHub closed pull requests') .get('/issues-pr-closed/badges/shields.json') diff --git a/services/github/github-labels.service.js b/services/github/github-labels.service.js index 1bed157eaa96d..70176517bf507 100644 --- a/services/github/github-labels.service.js +++ b/services/github/github-labels.service.js @@ -1,14 +1,12 @@ -'use strict' - -const Joi = require('joi') -const { GithubAuthV3Service } = require('./github-auth-service') -const { documentation, errorMessagesFor } = require('./github-helpers') +import Joi from 'joi' +import { GithubAuthV3Service } from './github-auth-service.js' +import { documentation, errorMessagesFor } from './github-helpers.js' const schema = Joi.object({ color: Joi.string().hex().required(), }).required() -module.exports = class GithubLabels extends GithubAuthV3Service { +export default class GithubLabels extends GithubAuthV3Service { static category = 'issue-tracking' static route = { base: 'github/labels', pattern: ':user/:repo/:name' } static examples = [ diff --git a/services/github/github-labels.tester.js b/services/github/github-labels.tester.js index 1cf89586cf731..d493e03ffd850 100644 --- a/services/github/github-labels.tester.js +++ b/services/github/github-labels.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('labels').get('/badges/shields/bug.json').expectBadge({ message: 'bug', diff --git a/services/github/github-language-count.service.js b/services/github/github-language-count.service.js index 311a097271e09..b730372221517 100644 --- a/services/github/github-language-count.service.js +++ b/services/github/github-language-count.service.js @@ -1,9 +1,7 @@ -'use strict' +import { BaseGithubLanguage } from './github-languages-base.js' +import { documentation } from './github-helpers.js' -const { BaseGithubLanguage } = require('./github-languages-base') -const { documentation } = require('./github-helpers') - -module.exports = class GithubLanguageCount extends BaseGithubLanguage { +export default class GithubLanguageCount extends BaseGithubLanguage { static category = 'analysis' static route = { base: 'github/languages/count', pattern: ':user/:repo' } static examples = [ diff --git a/services/github/github-language-count.tester.js b/services/github/github-language-count.tester.js index f7277d884baaa..b7464402995f4 100644 --- a/services/github/github-language-count.tester.js +++ b/services/github/github-language-count.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('language count').get('/badges/shields.json').expectBadge({ label: 'languages', diff --git a/services/github/github-languages-base.js b/services/github/github-languages-base.js index aa6dc250a606d..92427519feb91 100644 --- a/services/github/github-languages-base.js +++ b/services/github/github-languages-base.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { GithubAuthV3Service } = require('./github-auth-service') -const { errorMessagesFor } = require('./github-helpers') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { errorMessagesFor } from './github-helpers.js' /* We're expecting a response like { "Python": 39624, "Shell": 104 } @@ -25,4 +23,4 @@ class BaseGithubLanguage extends GithubAuthV3Service { } } -module.exports = { BaseGithubLanguage } +export { BaseGithubLanguage } diff --git a/services/github/github-last-commit.service.js b/services/github/github-last-commit.service.js index 76f92fe72a159..b452fbe96b6d4 100644 --- a/services/github/github-last-commit.service.js +++ b/services/github/github-last-commit.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { formatDate } = require('../text-formatters') -const { age: ageColor } = require('../color-formatters') -const { GithubAuthV3Service } = require('./github-auth-service') -const { documentation, errorMessagesFor } = require('./github-helpers') +import Joi from 'joi' +import { formatDate } from '../text-formatters.js' +import { age as ageColor } from '../color-formatters.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { documentation, errorMessagesFor } from './github-helpers.js' const commonExampleAttrs = { keywords: ['latest'], documentation, @@ -22,7 +20,7 @@ const schema = Joi.array() ) .required() -module.exports = class GithubLastCommit extends GithubAuthV3Service { +export default class GithubLastCommit extends GithubAuthV3Service { static category = 'activity' static route = { base: 'github/last-commit', pattern: ':user/:repo/:branch*' } static examples = [ diff --git a/services/github/github-last-commit.tester.js b/services/github/github-last-commit.tester.js index 5ee66e832de3e..23eed9fb37bb6 100644 --- a/services/github/github-last-commit.tester.js +++ b/services/github/github-last-commit.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isFormattedDate } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isFormattedDate } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('last commit (recent)') .get('/eslint/eslint.json') diff --git a/services/github/github-lerna-json.service.js b/services/github/github-lerna-json.service.js index 9fabd62df00c8..f306563a5912f 100644 --- a/services/github/github-lerna-json.service.js +++ b/services/github/github-lerna-json.service.js @@ -1,17 +1,15 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { semver } = require('../validators') -const { ConditionalGithubAuthV3Service } = require('./github-auth-service') -const { fetchJsonFromRepo } = require('./github-common-fetch') -const { documentation } = require('./github-helpers') +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { semver } from '../validators.js' +import { ConditionalGithubAuthV3Service } from './github-auth-service.js' +import { fetchJsonFromRepo } from './github-common-fetch.js' +import { documentation } from './github-helpers.js' const versionSchema = Joi.object({ version: Joi.alternatives().try(semver, Joi.equal('independent').required()), }).required() -module.exports = class GithubLernaJson extends ConditionalGithubAuthV3Service { +export default class GithubLernaJson extends ConditionalGithubAuthV3Service { static category = 'version' static route = { base: 'github/lerna-json/v', diff --git a/services/github/github-lerna-json.tester.js b/services/github/github-lerna-json.tester.js index 907d16942b835..c86f97bcdb826 100644 --- a/services/github/github-lerna-json.tester.js +++ b/services/github/github-lerna-json.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isSemver } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isSemver } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Lerna version').get('/facebook/jest.json').expectBadge({ label: 'lerna', diff --git a/services/github/github-license.service.js b/services/github/github-license.service.js index 0a628700f2fd0..360153f29e61f 100644 --- a/services/github/github-license.service.js +++ b/services/github/github-license.service.js @@ -1,16 +1,14 @@ -'use strict' - -const Joi = require('joi') -const { renderLicenseBadge } = require('../licenses') -const { GithubAuthV3Service } = require('./github-auth-service') -const { documentation, errorMessagesFor } = require('./github-helpers') +import Joi from 'joi' +import { renderLicenseBadge } from '../licenses.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { documentation, errorMessagesFor } from './github-helpers.js' const schema = Joi.object({ // Some repos do not have a license, in which case GitHub returns `{ license: null }`. license: Joi.object({ spdx_id: Joi.string().required() }).allow(null), }).required() -module.exports = class GithubLicense extends GithubAuthV3Service { +export default class GithubLicense extends GithubAuthV3Service { static category = 'license' static route = { base: 'github/license', pattern: ':user/:repo' } static examples = [ diff --git a/services/github/github-license.spec.js b/services/github/github-license.spec.js index 82359204cc8db..87167fc26d516 100644 --- a/services/github/github-license.spec.js +++ b/services/github/github-license.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const GithubLicense = require('./github-license.service') +import { test, given } from 'sazerac' +import GithubLicense from './github-license.service.js' test(GithubLicense.render, () => { given({ license: undefined }).expect({ message: 'not specified' }) diff --git a/services/github/github-license.tester.js b/services/github/github-license.tester.js index 261b4b4126616..0cef52f4c75b8 100644 --- a/services/github/github-license.tester.js +++ b/services/github/github-license.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { licenseToColor } = require('../licenses') -const t = (module.exports = require('../tester').createServiceTester()) +import { licenseToColor } from '../licenses.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const publicDomainLicenseColor = licenseToColor('CC0-1.0') const unknownLicenseColor = licenseToColor() diff --git a/services/github/github-manifest.service.js b/services/github/github-manifest.service.js index 248397a730faa..5919507398597 100644 --- a/services/github/github-manifest.service.js +++ b/services/github/github-manifest.service.js @@ -1,15 +1,13 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { individualValueSchema, transformAndValidate, renderDynamicBadge, -} = require('../dynamic-common') -const { ConditionalGithubAuthV3Service } = require('./github-auth-service') -const { fetchJsonFromRepo } = require('./github-common-fetch') -const { documentation } = require('./github-helpers') +} from '../dynamic-common.js' +import { ConditionalGithubAuthV3Service } from './github-auth-service.js' +import { fetchJsonFromRepo } from './github-common-fetch.js' +import { documentation } from './github-helpers.js' const schema = Joi.object({ version: individualValueSchema, @@ -204,7 +202,4 @@ class DynamicGithubManifest extends ConditionalGithubAuthV3Service { } } -module.exports = { - GithubManifestVersion, - DynamicGithubManifest, -} +export { GithubManifestVersion, DynamicGithubManifest } diff --git a/services/github/github-manifest.tester.js b/services/github/github-manifest.tester.js index 77c1beb32df47..a1e9849f9779e 100644 --- a/services/github/github-manifest.tester.js +++ b/services/github/github-manifest.tester.js @@ -1,14 +1,12 @@ -'use strict' +import Joi from 'joi' +import { ServiceTester } from '../tester.js' +import { isVPlusDottedVersionAtLeastOne } from '../test-validators.js' -const Joi = require('joi') -const { ServiceTester } = require('../tester') -const { isVPlusDottedVersionAtLeastOne } = require('../test-validators') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'GithubManifest', title: 'GithubManifest', pathPrefix: '/github/manifest-json', -})) +}) t.create('Manifest version') .get('/v/sindresorhus/show-all-github-issues.json') diff --git a/services/github/github-milestone-detail.service.js b/services/github/github-milestone-detail.service.js index c70aa58f705c3..ac3b071c5dd6c 100644 --- a/services/github/github-milestone-detail.service.js +++ b/services/github/github-milestone-detail.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { GithubAuthV3Service } = require('./github-auth-service') -const { documentation, errorMessagesFor } = require('./github-helpers') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { documentation, errorMessagesFor } from './github-helpers.js' const schema = Joi.object({ open_issues: nonNegativeInteger, @@ -12,7 +10,7 @@ const schema = Joi.object({ title: Joi.string().required(), }).required() -module.exports = class GithubMilestoneDetail extends GithubAuthV3Service { +export default class GithubMilestoneDetail extends GithubAuthV3Service { static category = 'issue-tracking' static route = { base: 'github/milestones', diff --git a/services/github/github-milestone-detail.tester.js b/services/github/github-milestone-detail.tester.js index e1ed8b5003247..4305a6074b19d 100644 --- a/services/github/github-milestone-detail.tester.js +++ b/services/github/github-milestone-detail.tester.js @@ -1,11 +1,10 @@ -'use strict' - -const { +import { isMetric, isMetricOverMetric, isIntegerPercentage, -} = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +} from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Milestone Open Issues') .get('/issues-open/MacroPower/milestone-test/1.json') diff --git a/services/github/github-milestone.service.js b/services/github/github-milestone.service.js index d345f4ca2a527..62b623aed7fd4 100644 --- a/services/github/github-milestone.service.js +++ b/services/github/github-milestone.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { GithubAuthV3Service } = require('./github-auth-service') -const { documentation, errorMessagesFor } = require('./github-helpers') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { documentation, errorMessagesFor } from './github-helpers.js' const schema = Joi.array() .items( @@ -13,7 +11,7 @@ const schema = Joi.array() ) .required() -module.exports = class GithubMilestone extends GithubAuthV3Service { +export default class GithubMilestone extends GithubAuthV3Service { static category = 'issue-tracking' static route = { base: 'github/milestones', diff --git a/services/github/github-milestone.tester.js b/services/github/github-milestone.tester.js index 30565326578ae..dd9b92234ad72 100644 --- a/services/github/github-milestone.tester.js +++ b/services/github/github-milestone.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('All Milestones') .get('/all/MacroPower/milestone-test.json') diff --git a/services/github/github-package-json.service.js b/services/github/github-package-json.service.js index 9b8dc0004bac2..dc2663069f22f 100644 --- a/services/github/github-package-json.service.js +++ b/services/github/github-package-json.service.js @@ -1,19 +1,14 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { - transformAndValidate, - renderDynamicBadge, -} = require('../dynamic-common') -const { +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { transformAndValidate, renderDynamicBadge } from '../dynamic-common.js' +import { isPackageJsonWithDependencies, getDependencyVersion, -} = require('../package-json-helpers') -const { semver } = require('../validators') -const { ConditionalGithubAuthV3Service } = require('./github-auth-service') -const { fetchJsonFromRepo } = require('./github-common-fetch') -const { documentation } = require('./github-helpers') +} from '../package-json-helpers.js' +import { semver } from '../validators.js' +import { ConditionalGithubAuthV3Service } from './github-auth-service.js' +import { fetchJsonFromRepo } from './github-common-fetch.js' +import { documentation } from './github-helpers.js' const keywords = ['npm', 'node'] @@ -247,7 +242,7 @@ class DynamicGithubPackageJson extends ConditionalGithubAuthV3Service { } } -module.exports = [ +export default [ GithubPackageJsonVersion, GithubPackageJsonDependencyVersion, DynamicGithubPackageJson, diff --git a/services/github/github-package-json.tester.js b/services/github/github-package-json.tester.js index 5a15ccd3be1bf..eb16fb42b0147 100644 --- a/services/github/github-package-json.tester.js +++ b/services/github/github-package-json.tester.js @@ -1,15 +1,13 @@ -'use strict' +import Joi from 'joi' +import { ServiceTester } from '../tester.js' +import { isSemver } from '../test-validators.js' +import { semverRange } from '../validators.js' -const Joi = require('joi') -const { ServiceTester } = require('../tester') -const { isSemver } = require('../test-validators') -const { semverRange } = require('../validators') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'GithubPackageJson', title: 'GithubPackageJson', pathPrefix: '/github/package-json', -})) +}) t.create('Package version').get('/v/badges/shields.json').expectBadge({ label: 'version', diff --git a/services/github/github-pipenv.service.js b/services/github/github-pipenv.service.js index a36b3cc92789d..758903747a49d 100644 --- a/services/github/github-pipenv.service.js +++ b/services/github/github-pipenv.service.js @@ -1,12 +1,10 @@ -'use strict' - -const { renderVersionBadge } = require('../version') -const { isLockfile, getDependencyVersion } = require('../pipenv-helpers') -const { addv } = require('../text-formatters') -const { NotFound } = require('..') -const { ConditionalGithubAuthV3Service } = require('./github-auth-service') -const { fetchJsonFromRepo } = require('./github-common-fetch') -const { documentation: githubDocumentation } = require('./github-helpers') +import { renderVersionBadge } from '../version.js' +import { isLockfile, getDependencyVersion } from '../pipenv-helpers.js' +import { addv } from '../text-formatters.js' +import { NotFound } from '../index.js' +import { ConditionalGithubAuthV3Service } from './github-auth-service.js' +import { fetchJsonFromRepo } from './github-common-fetch.js' +import { documentation as githubDocumentation } from './github-helpers.js' const keywords = ['pipfile'] @@ -174,7 +172,7 @@ class GithubPipenvLockedDependencyVersion extends ConditionalGithubAuthV3Service } } -module.exports = [ +export default [ GithubPipenvLockedPythonVersion, GithubPipenvLockedDependencyVersion, ] diff --git a/services/github/github-pipenv.tester.js b/services/github/github-pipenv.tester.js index 9161c20625805..c3fa864748eb3 100644 --- a/services/github/github-pipenv.tester.js +++ b/services/github/github-pipenv.tester.js @@ -1,21 +1,19 @@ -'use strict' - -const Joi = require('joi') -const { ServiceTester } = require('../tester') -const { +import Joi from 'joi' +import { ServiceTester } from '../tester.js' +import { isVPlusDottedVersionAtLeastOne, isVPlusDottedVersionNClausesWithOptionalSuffix, -} = require('../test-validators') +} from '../test-validators.js' // e.g. v19.3b0 const isBlackVersion = Joi.string().regex(/^v\d+(\.\d+)*(.*)?$/) const isShortSha = Joi.string().regex(/[0-9a-f]{7}/) -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'GithubPipenv', title: 'GithubPipenv', pathPrefix: '/github/pipenv', -})) +}) t.create('Locked Python version') .get('/locked/python-version/metabolize/rq-dashboard-on-heroku.json') diff --git a/services/github/github-pull-request-check-state.service.js b/services/github/github-pull-request-check-state.service.js index 4e0d1c861b685..969c75d91be9d 100644 --- a/services/github/github-pull-request-check-state.service.js +++ b/services/github/github-pull-request-check-state.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const countBy = require('lodash.countby') -const { GithubAuthV3Service } = require('./github-auth-service') -const { fetchIssue } = require('./github-common-fetch') -const { documentation, errorMessagesFor } = require('./github-helpers') +import Joi from 'joi' +import countBy from 'lodash.countby' +import { GithubAuthV3Service } from './github-auth-service.js' +import { fetchIssue } from './github-common-fetch.js' +import { documentation, errorMessagesFor } from './github-helpers.js' const schema = Joi.object({ state: Joi.equal('failure', 'pending', 'success').required(), @@ -19,7 +17,7 @@ const schema = Joi.object({ const keywords = ['pullrequest', 'detail'] -module.exports = class GithubPullRequestCheckState extends GithubAuthV3Service { +export default class GithubPullRequestCheckState extends GithubAuthV3Service { static category = 'build' static route = { base: 'github/status', diff --git a/services/github/github-pull-request-check-state.tester.js b/services/github/github-pull-request-check-state.tester.js index c1215a18c76d6..9095f266f95a1 100644 --- a/services/github/github-pull-request-check-state.tester.js +++ b/services/github/github-pull-request-check-state.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('github pull request check state') .get('/s/pulls/badges/shields/1110.json') diff --git a/services/github/github-r-package.service.js b/services/github/github-r-package.service.js index 449a23e2bb0c9..837abf6151c94 100644 --- a/services/github/github-r-package.service.js +++ b/services/github/github-r-package.service.js @@ -1,11 +1,9 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { InvalidResponse } = require('..') -const { ConditionalGithubAuthV3Service } = require('./github-auth-service') -const { fetchRepoContent } = require('./github-common-fetch') -const { documentation } = require('./github-helpers') +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { InvalidResponse } from '../index.js' +import { ConditionalGithubAuthV3Service } from './github-auth-service.js' +import { fetchRepoContent } from './github-common-fetch.js' +import { documentation } from './github-helpers.js' const queryParamSchema = Joi.object({ filename: Joi.string(), @@ -13,9 +11,7 @@ const queryParamSchema = Joi.object({ const versionRegExp = /^Version:[\s]*(.+)$/m -module.exports = class GithubRPackageVersion extends ( - ConditionalGithubAuthV3Service -) { +export default class GithubRPackageVersion extends ConditionalGithubAuthV3Service { static category = 'version' static route = { diff --git a/services/github/github-r-package.spec.js b/services/github/github-r-package.spec.js index 8bf77d8728712..cc6516685e441 100644 --- a/services/github/github-r-package.spec.js +++ b/services/github/github-r-package.spec.js @@ -1,9 +1,7 @@ -'use strict' - -const { expect } = require('chai') -const { test, given } = require('sazerac') -const { InvalidResponse } = require('..') -const GithubRPackageVersion = require('./github-r-package.service') +import { expect } from 'chai' +import { test, given } from 'sazerac' +import { InvalidResponse } from '../index.js' +import GithubRPackageVersion from './github-r-package.service.js' describe('GithubRPackageVersion', function () { const content = versionLine => diff --git a/services/github/github-r-package.tester.js b/services/github/github-r-package.tester.js index 01d1511674610..18247e1918a2d 100644 --- a/services/github/github-r-package.tester.js +++ b/services/github/github-r-package.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isVPlusDottedVersionAtLeastOne } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isVPlusDottedVersionAtLeastOne } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('R package version').get('/mixOmicsTeam/mixOmics.json').expectBadge({ label: 'R', diff --git a/services/github/github-release-date.service.js b/services/github/github-release-date.service.js index acca83b2c0e60..098bb7c11cc84 100644 --- a/services/github/github-release-date.service.js +++ b/services/github/github-release-date.service.js @@ -1,11 +1,9 @@ -'use strict' - -const moment = require('moment') -const Joi = require('joi') -const { age } = require('../color-formatters') -const { formatDate } = require('../text-formatters') -const { GithubAuthV3Service } = require('./github-auth-service') -const { documentation, errorMessagesFor } = require('./github-helpers') +import moment from 'moment' +import Joi from 'joi' +import { age } from '../color-formatters.js' +import { formatDate } from '../text-formatters.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { documentation, errorMessagesFor } from './github-helpers.js' const schema = Joi.alternatives( Joi.object({ @@ -20,7 +18,7 @@ const schema = Joi.alternatives( .min(1) ) -module.exports = class GithubReleaseDate extends GithubAuthV3Service { +export default class GithubReleaseDate extends GithubAuthV3Service { static category = 'activity' static route = { base: 'github', diff --git a/services/github/github-release-date.tester.js b/services/github/github-release-date.tester.js index 314edaca0ae3c..3cf255fb731ee 100644 --- a/services/github/github-release-date.tester.js +++ b/services/github/github-release-date.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isFormattedDate } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isFormattedDate } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Release Date. e.g release date|today') .get('/release-date/mochajs/mocha.json') diff --git a/services/github/github-release.service.js b/services/github/github-release.service.js index 1329ab06ce80b..94343ad530a7d 100644 --- a/services/github/github-release.service.js +++ b/services/github/github-release.service.js @@ -1,14 +1,12 @@ -'use strict' - -const { addv } = require('../text-formatters') -const { version: versionColor } = require('../color-formatters') -const { redirector } = require('..') -const { GithubAuthV3Service } = require('./github-auth-service') -const { +import { addv } from '../text-formatters.js' +import { version as versionColor } from '../color-formatters.js' +import { redirector } from '../index.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { fetchLatestRelease, queryParamSchema, -} = require('./github-common-release') -const { documentation } = require('./github-helpers') +} from './github-common-release.js' +import { documentation } from './github-helpers.js' class GithubRelease extends GithubAuthV3Service { static category = 'version' @@ -122,7 +120,4 @@ const redirects = { }), } -module.exports = { - GithubRelease, - ...redirects, -} +export { GithubRelease, redirects } diff --git a/services/github/github-release.tester.js b/services/github/github-release.tester.js index 6fa28a54853de..629eafeecb50f 100644 --- a/services/github/github-release.tester.js +++ b/services/github/github-release.tester.js @@ -1,14 +1,12 @@ -'use strict' +import Joi from 'joi' +import { isSemver } from '../test-validators.js' +import { ServiceTester } from '../tester.js' -const Joi = require('joi') -const { isSemver } = require('../test-validators') -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'GithubRelease', title: 'Github Release', pathPrefix: '/github', -})) +}) t.create('Release') .get('/v/release/expressjs/express.json') diff --git a/services/github/github-repo-size.service.js b/services/github/github-repo-size.service.js index f581076bf307a..774ddad426399 100644 --- a/services/github/github-repo-size.service.js +++ b/services/github/github-repo-size.service.js @@ -1,16 +1,14 @@ -'use strict' - -const Joi = require('joi') -const prettyBytes = require('pretty-bytes') -const { nonNegativeInteger } = require('../validators') -const { GithubAuthV3Service } = require('./github-auth-service') -const { documentation, errorMessagesFor } = require('./github-helpers') +import Joi from 'joi' +import prettyBytes from 'pretty-bytes' +import { nonNegativeInteger } from '../validators.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { documentation, errorMessagesFor } from './github-helpers.js' const schema = Joi.object({ size: nonNegativeInteger, }).required() -module.exports = class GithubRepoSize extends GithubAuthV3Service { +export default class GithubRepoSize extends GithubAuthV3Service { static category = 'size' static route = { base: 'github/repo-size', pattern: ':user/:repo' } static examples = [ diff --git a/services/github/github-repo-size.tester.js b/services/github/github-repo-size.tester.js index 5d1e43da21171..c39f5c700f4a2 100644 --- a/services/github/github-repo-size.tester.js +++ b/services/github/github-repo-size.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isFileSize } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isFileSize } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('repository size').get('/badges/shields.json').expectBadge({ label: 'repo size', diff --git a/services/github/github-search.service.js b/services/github/github-search.service.js index f8f9d9ddd9d51..361d1b9eb737a 100644 --- a/services/github/github-search.service.js +++ b/services/github/github-search.service.js @@ -1,14 +1,12 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { GithubAuthV3Service } = require('./github-auth-service') -const { errorMessagesFor, documentation } = require('./github-helpers') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { errorMessagesFor, documentation } from './github-helpers.js' const schema = Joi.object({ total_count: nonNegativeInteger }).required() -module.exports = class GithubSearch extends GithubAuthV3Service { +export default class GithubSearch extends GithubAuthV3Service { static category = 'analysis' static route = { diff --git a/services/github/github-search.tester.js b/services/github/github-search.tester.js index 83dd403194404..cb3fa80564a1c 100644 --- a/services/github/github-search.tester.js +++ b/services/github/github-search.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('hit counter') .get('/badges/shields/async%20handle.json') diff --git a/services/github/github-size.service.js b/services/github/github-size.service.js index 97237a81579f7..b932faf17e21a 100644 --- a/services/github/github-size.service.js +++ b/services/github/github-size.service.js @@ -1,11 +1,9 @@ -'use strict' - -const Joi = require('joi') -const prettyBytes = require('pretty-bytes') -const { nonNegativeInteger } = require('../validators') -const { NotFound } = require('..') -const { GithubAuthV3Service } = require('./github-auth-service') -const { documentation, errorMessagesFor } = require('./github-helpers') +import Joi from 'joi' +import prettyBytes from 'pretty-bytes' +import { nonNegativeInteger } from '../validators.js' +import { NotFound } from '../index.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { documentation, errorMessagesFor } from './github-helpers.js' const schema = Joi.alternatives( Joi.object({ @@ -14,7 +12,7 @@ const schema = Joi.alternatives( Joi.array().required() ) -module.exports = class GithubSize extends GithubAuthV3Service { +export default class GithubSize extends GithubAuthV3Service { static category = 'size' static route = { diff --git a/services/github/github-size.tester.js b/services/github/github-size.tester.js index 9645a469eee22..db61aa9ac9211 100644 --- a/services/github/github-size.tester.js +++ b/services/github/github-size.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isFileSize } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isFileSize } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('File size') .get('/webcaetano/craft/build/phaser-craft.min.js.json') diff --git a/services/github/github-sponsors.service.js b/services/github/github-sponsors.service.js index 6a465bdceb0d5..825104094c7aa 100644 --- a/services/github/github-sponsors.service.js +++ b/services/github/github-sponsors.service.js @@ -1,12 +1,10 @@ -'use strict' - -const gql = require('graphql-tag') -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { NotFound } = require('..') -const { GithubAuthV4Service } = require('./github-auth-service') -const { documentation, transformErrors } = require('./github-helpers') +import gql from 'graphql-tag' +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { NotFound } from '../index.js' +import { GithubAuthV4Service } from './github-auth-service.js' +import { documentation, transformErrors } from './github-helpers.js' const schema = Joi.object({ data: Joi.object({ @@ -18,7 +16,7 @@ const schema = Joi.object({ }).required(), }).required() -module.exports = class GithubSponsors extends GithubAuthV4Service { +export default class GithubSponsors extends GithubAuthV4Service { static category = 'funding' static route = { base: 'github/sponsors', pattern: ':user' } static examples = [ diff --git a/services/github/github-sponsors.tester.js b/services/github/github-sponsors.tester.js index ebe0cd50c1759..dc5247cc4e1d5 100644 --- a/services/github/github-sponsors.tester.js +++ b/services/github/github-sponsors.tester.js @@ -1,13 +1,11 @@ -'use strict' +import { isMetric } from '../test-validators.js' +import { ServiceTester } from '../tester.js' -const { isMetric } = require('../test-validators') -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'GithubSponsors', title: 'Github Sponsors', pathPrefix: '/github', -})) +}) t.create('Sponsors').get('/sponsors/Homebrew.json').expectBadge({ label: 'sponsors', diff --git a/services/github/github-stars.service.js b/services/github/github-stars.service.js index 49ce512086724..c790da3f23815 100644 --- a/services/github/github-stars.service.js +++ b/services/github/github-stars.service.js @@ -1,16 +1,14 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { GithubAuthV3Service } = require('./github-auth-service') -const { documentation, errorMessagesFor } = require('./github-helpers') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { documentation, errorMessagesFor } from './github-helpers.js' const schema = Joi.object({ stargazers_count: nonNegativeInteger, }).required() -module.exports = class GithubStars extends GithubAuthV3Service { +export default class GithubStars extends GithubAuthV3Service { static category = 'social' static route = { diff --git a/services/github/github-stars.tester.js b/services/github/github-stars.tester.js index fda46a39d1c27..6155dd553baeb 100644 --- a/services/github/github-stars.tester.js +++ b/services/github/github-stars.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Stars') .get('/badges/shields.json') diff --git a/services/github/github-tag.service.js b/services/github/github-tag.service.js index c0475651a43cc..d97201d518853 100644 --- a/services/github/github-tag.service.js +++ b/services/github/github-tag.service.js @@ -1,14 +1,12 @@ -'use strict' - -const gql = require('graphql-tag') -const Joi = require('joi') -const { addv } = require('../text-formatters') -const { version: versionColor } = require('../color-formatters') -const { latest } = require('../version') -const { NotFound, redirector } = require('..') -const { GithubAuthV4Service } = require('./github-auth-service') -const { queryParamSchema } = require('./github-common-release') -const { documentation, transformErrors } = require('./github-helpers') +import gql from 'graphql-tag' +import Joi from 'joi' +import { addv } from '../text-formatters.js' +import { version as versionColor } from '../color-formatters.js' +import { latest } from '../version.js' +import { NotFound, redirector } from '../index.js' +import { GithubAuthV4Service } from './github-auth-service.js' +import { queryParamSchema } from './github-common-release.js' +import { documentation, transformErrors } from './github-helpers.js' const schema = Joi.object({ data: Joi.object({ @@ -163,7 +161,4 @@ const redirects = { }), } -module.exports = { - GithubTag, - ...redirects, -} +export { GithubTag, redirects } diff --git a/services/github/github-tag.spec.js b/services/github/github-tag.spec.js index 88ebf8b83889a..c0fbd51e1b14e 100644 --- a/services/github/github-tag.spec.js +++ b/services/github/github-tag.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const { GithubTag } = require('./github-tag.service') +import { test, given } from 'sazerac' +import { GithubTag } from './github-tag.service.js' describe('GithubTag', function () { test(GithubTag.getLatestTag, () => { diff --git a/services/github/github-tag.tester.js b/services/github/github-tag.tester.js index 030eb3283e27c..1a804c288621d 100644 --- a/services/github/github-tag.tester.js +++ b/services/github/github-tag.tester.js @@ -1,14 +1,12 @@ -'use strict' +import Joi from 'joi' +import { isSemver } from '../test-validators.js' +import { ServiceTester } from '../tester.js' -const Joi = require('joi') -const { isSemver } = require('../test-validators') -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'GithubTag', title: 'Github Tag', pathPrefix: '/github', -})) +}) t.create('Tag') .get('/v/tag/expressjs/express.json') diff --git a/services/github/github-top-language.service.js b/services/github/github-top-language.service.js index 9c96e95b64b71..21aac82113531 100644 --- a/services/github/github-top-language.service.js +++ b/services/github/github-top-language.service.js @@ -1,9 +1,7 @@ -'use strict' +import { BaseGithubLanguage } from './github-languages-base.js' +import { documentation } from './github-helpers.js' -const { BaseGithubLanguage } = require('./github-languages-base') -const { documentation } = require('./github-helpers') - -module.exports = class GithubTopLanguage extends BaseGithubLanguage { +export default class GithubTopLanguage extends BaseGithubLanguage { static category = 'analysis' static route = { diff --git a/services/github/github-top-language.tester.js b/services/github/github-top-language.tester.js index 348d0dbf2c5d5..5bfea8d71299a 100644 --- a/services/github/github-top-language.tester.js +++ b/services/github/github-top-language.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('top language') .get('/badges/shields.json') diff --git a/services/github/github-total-star.service.js b/services/github/github-total-star.service.js index 705f5123545e5..70461fe72c64f 100644 --- a/services/github/github-total-star.service.js +++ b/services/github/github-total-star.service.js @@ -1,14 +1,12 @@ -'use strict' - -const Joi = require('joi') -const gql = require('graphql-tag') -const { nonNegativeInteger } = require('../validators') -const { metric } = require('../text-formatters') -const { GithubAuthV4Service } = require('./github-auth-service') -const { - documentation: commonDocumentation, +import Joi from 'joi' +import gql from 'graphql-tag' +import { nonNegativeInteger } from '../validators.js' +import { metric } from '../text-formatters.js' +import { GithubAuthV4Service } from './github-auth-service.js' +import { + documentation as commonDocumentation, transformErrors, -} = require('./github-helpers') +} from './github-helpers.js' const MAX_REPO_LIMIT = 200 @@ -133,7 +131,7 @@ const queryParamSchema = Joi.object({ affiliations: Joi.string().default('OWNER').custom(validateAffiliations), }).required() -module.exports = class GithubTotalStarService extends GithubAuthV4Service { +export default class GithubTotalStarService extends GithubAuthV4Service { static defaultLabel = 'stars' static category = 'social' diff --git a/services/github/github-total-star.tester.js b/services/github/github-total-star.tester.js index 3f4e106746453..e67516275fe2f 100644 --- a/services/github/github-total-star.tester.js +++ b/services/github/github-total-star.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Stars (User)') .get('/hemantsonu20.json') diff --git a/services/github/github-watchers.service.js b/services/github/github-watchers.service.js index 84b1797c23f45..088757ff93a50 100644 --- a/services/github/github-watchers.service.js +++ b/services/github/github-watchers.service.js @@ -1,16 +1,14 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { GithubAuthV3Service } = require('./github-auth-service') -const { documentation, errorMessagesFor } = require('./github-helpers') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { GithubAuthV3Service } from './github-auth-service.js' +import { documentation, errorMessagesFor } from './github-helpers.js' const schema = Joi.object({ subscribers_count: nonNegativeInteger, }).required() -module.exports = class GithubWatchers extends GithubAuthV3Service { +export default class GithubWatchers extends GithubAuthV3Service { static category = 'social' static route = { diff --git a/services/github/github-watchers.tester.js b/services/github/github-watchers.tester.js index 6d58e6ed85b14..606b9e53c8a37 100644 --- a/services/github/github-watchers.tester.js +++ b/services/github/github-watchers.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Watchers') .get('/badges/shields.json') diff --git a/services/github/github-workflow-status.service.js b/services/github/github-workflow-status.service.js index bdcbd4056870f..f5467d7b2aac8 100644 --- a/services/github/github-workflow-status.service.js +++ b/services/github/github-workflow-status.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus, renderBuildStatusBadge } = require('../build-status') -const { BaseSvgScrapingService } = require('..') -const { documentation } = require('./github-helpers') +import Joi from 'joi' +import { isBuildStatus, renderBuildStatusBadge } from '../build-status.js' +import { BaseSvgScrapingService } from '../index.js' +import { documentation } from './github-helpers.js' const schema = Joi.object({ message: Joi.alternatives() @@ -17,7 +15,7 @@ const queryParamSchema = Joi.object({ const keywords = ['action', 'actions'] -module.exports = class GithubWorkflowStatus extends BaseSvgScrapingService { +export default class GithubWorkflowStatus extends BaseSvgScrapingService { static category = 'build' static route = { diff --git a/services/github/github-workflow-status.tester.js b/services/github/github-workflow-status.tester.js index 380823e4b59f9..573a16e7b18f1 100644 --- a/services/github/github-workflow-status.tester.js +++ b/services/github/github-workflow-status.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus } = require('../build-status') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { isBuildStatus } from '../build-status.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isWorkflowStatus = Joi.alternatives() .try(isBuildStatus, Joi.equal('no status')) diff --git a/services/gitlab/gitlab-coverage.service.js b/services/gitlab/gitlab-coverage.service.js index 8f69c62c84873..f7b4c045d8b9b 100644 --- a/services/gitlab/gitlab-coverage.service.js +++ b/services/gitlab/gitlab-coverage.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { coveragePercentage } = require('../color-formatters') -const { optionalUrl } = require('../validators') -const { BaseSvgScrapingService, NotFound } = require('..') +import Joi from 'joi' +import { coveragePercentage } from '../color-formatters.js' +import { optionalUrl } from '../validators.js' +import { BaseSvgScrapingService, NotFound } from '../index.js' const schema = Joi.object({ message: Joi.string() @@ -38,7 +36,7 @@ Also make sure you have set up code covrage parsing as described { diff --git a/services/liberapay/liberapay-goal.tester.js b/services/liberapay/liberapay-goal.tester.js index a340d4d5e5b48..518a84b004107 100644 --- a/services/liberapay/liberapay-goal.tester.js +++ b/services/liberapay/liberapay-goal.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isIntegerPercentage } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isIntegerPercentage } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Goal Progress (valid)').get('/Liberapay.json').expectBadge({ label: 'goal progress', diff --git a/services/liberapay/liberapay-patrons.service.js b/services/liberapay/liberapay-patrons.service.js index 0bcb1ac74a4fc..dbcf4d8639637 100644 --- a/services/liberapay/liberapay-patrons.service.js +++ b/services/liberapay/liberapay-patrons.service.js @@ -1,10 +1,8 @@ -'use strict' +import { metric } from '../text-formatters.js' +import { colorScale } from '../color-formatters.js' +import { LiberapayBase } from './liberapay-base.js' -const { metric } = require('../text-formatters') -const { colorScale } = require('../color-formatters') -const { LiberapayBase } = require('./liberapay-base') - -module.exports = class LiberapayPatrons extends LiberapayBase { +export default class LiberapayPatrons extends LiberapayBase { static route = this.buildRoute('patrons') static examples = [ diff --git a/services/liberapay/liberapay-patrons.tester.js b/services/liberapay/liberapay-patrons.tester.js index 5eee881d67bb2..8c7f780c41cf5 100644 --- a/services/liberapay/liberapay-patrons.tester.js +++ b/services/liberapay/liberapay-patrons.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Patrons (valid)').get('/Liberapay.json').expectBadge({ label: 'patrons', diff --git a/services/liberapay/liberapay-receives.service.js b/services/liberapay/liberapay-receives.service.js index b3cf59d91a414..7d828f90bd684 100644 --- a/services/liberapay/liberapay-receives.service.js +++ b/services/liberapay/liberapay-receives.service.js @@ -1,9 +1,7 @@ -'use strict' +import { InvalidResponse } from '../index.js' +import { renderCurrencyBadge, LiberapayBase } from './liberapay-base.js' -const { InvalidResponse } = require('..') -const { renderCurrencyBadge, LiberapayBase } = require('./liberapay-base') - -module.exports = class LiberapayReceives extends LiberapayBase { +export default class LiberapayReceives extends LiberapayBase { static route = this.buildRoute('receives') static examples = [ diff --git a/services/liberapay/liberapay-receives.tester.js b/services/liberapay/liberapay-receives.tester.js index d2b7a71e4f51d..17988abc7c7a6 100644 --- a/services/liberapay/liberapay-receives.tester.js +++ b/services/liberapay/liberapay-receives.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isCurrencyOverTime } = require('./liberapay-base') +import { createServiceTester } from '../tester.js' +import { isCurrencyOverTime } from './liberapay-base.js' +export const t = await createServiceTester() t.create('Receiving (valid)').get('/Changaco.json').expectBadge({ label: 'receives', diff --git a/services/librariesio/librariesio-common.js b/services/librariesio/librariesio-common.js index 7421be27f0536..974060a688809 100644 --- a/services/librariesio/librariesio-common.js +++ b/services/librariesio/librariesio-common.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger, anyInteger } = require('../validators') +import Joi from 'joi' +import { nonNegativeInteger, anyInteger } from '../validators.js' // API doc: https://libraries.io/api#project const projectSchema = Joi.object({ @@ -21,6 +19,4 @@ async function fetchProject(serviceInstance, { platform, scope, packageName }) { }) } -module.exports = { - fetchProject, -} +export { fetchProject } diff --git a/services/librariesio/librariesio-dependencies-helpers.js b/services/librariesio/librariesio-dependencies-helpers.js index f9bf0b1908ca5..7aaaf71536a37 100644 --- a/services/librariesio/librariesio-dependencies-helpers.js +++ b/services/librariesio/librariesio-dependencies-helpers.js @@ -1,5 +1,3 @@ -'use strict' - function transform({ dependencies }) { return { deprecatedCount: dependencies.filter(dep => dep.deprecated).length, @@ -28,4 +26,4 @@ function renderDependenciesBadge({ deprecatedCount, outdatedCount }) { } } -module.exports = { transform, renderDependenciesBadge } +export { transform, renderDependenciesBadge } diff --git a/services/librariesio/librariesio-dependencies-helpers.spec.js b/services/librariesio/librariesio-dependencies-helpers.spec.js index e073352b1cbbc..bdc1c3d17a15e 100644 --- a/services/librariesio/librariesio-dependencies-helpers.spec.js +++ b/services/librariesio/librariesio-dependencies-helpers.spec.js @@ -1,9 +1,5 @@ -'use strict' - -const { test, given, forCases } = require('sazerac') -const { - renderDependenciesBadge, -} = require('./librariesio-dependencies-helpers') +import { test, given, forCases } from 'sazerac' +import { renderDependenciesBadge } from './librariesio-dependencies-helpers.js' describe('Libraries.io dependency helpers', function () { test(renderDependenciesBadge, () => { diff --git a/services/librariesio/librariesio-dependencies.service.js b/services/librariesio/librariesio-dependencies.service.js index 2b30e4453c05b..05df0e6ae6420 100644 --- a/services/librariesio/librariesio-dependencies.service.js +++ b/services/librariesio/librariesio-dependencies.service.js @@ -1,11 +1,9 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') -const { +import Joi from 'joi' +import { BaseJsonService } from '../index.js' +import { transform, renderDependenciesBadge, -} = require('./librariesio-dependencies-helpers') +} from './librariesio-dependencies-helpers.js' const schema = Joi.object({ dependencies: Joi.array() @@ -134,4 +132,4 @@ class LibrariesIoRepoDependencies extends BaseJsonService { } } -module.exports = [LibrariesIoProjectDependencies, LibrariesIoRepoDependencies] +export default [LibrariesIoProjectDependencies, LibrariesIoRepoDependencies] diff --git a/services/librariesio/librariesio-dependencies.tester.js b/services/librariesio/librariesio-dependencies.tester.js index 45bcabddbe6d7..6aeb2feda475a 100644 --- a/services/librariesio/librariesio-dependencies.tester.js +++ b/services/librariesio/librariesio-dependencies.tester.js @@ -1,12 +1,10 @@ -'use strict' - -const { ServiceTester } = require('../tester') -const { isDependencyState } = require('../test-validators') -const t = (module.exports = new ServiceTester({ +import { ServiceTester } from '../tester.js' +import { isDependencyState } from '../test-validators.js' +export const t = new ServiceTester({ id: 'LibrariesIoDependencies', title: 'LibrariesIoDependencies', pathPrefix: '/librariesio', -})) +}) t.create('dependencies for package (project name contains dot)') .timeout(10000) diff --git a/services/librariesio/librariesio-dependent-repos.service.js b/services/librariesio/librariesio-dependent-repos.service.js index 8d19449d58540..0f8217c11bc73 100644 --- a/services/librariesio/librariesio-dependent-repos.service.js +++ b/services/librariesio/librariesio-dependent-repos.service.js @@ -1,11 +1,9 @@ -'use strict' - -const { metric } = require('../text-formatters') -const { BaseJsonService } = require('..') -const { fetchProject } = require('./librariesio-common') +import { metric } from '../text-formatters.js' +import { BaseJsonService } from '../index.js' +import { fetchProject } from './librariesio-common.js' // https://libraries.io/api#project-dependent-repositories -module.exports = class LibrariesIoDependentRepos extends BaseJsonService { +export default class LibrariesIoDependentRepos extends BaseJsonService { static category = 'other' static route = { diff --git a/services/librariesio/librariesio-dependent-repos.tester.js b/services/librariesio/librariesio-dependent-repos.tester.js index f15fe079cda71..2c7df20c70801 100644 --- a/services/librariesio/librariesio-dependent-repos.tester.js +++ b/services/librariesio/librariesio-dependent-repos.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('dependent repo count') .timeout(10000) diff --git a/services/librariesio/librariesio-dependents.service.js b/services/librariesio/librariesio-dependents.service.js index 9f849206e0ae0..ceaf4f5b27817 100644 --- a/services/librariesio/librariesio-dependents.service.js +++ b/services/librariesio/librariesio-dependents.service.js @@ -1,11 +1,9 @@ -'use strict' - -const { metric } = require('../text-formatters') -const { BaseJsonService } = require('..') -const { fetchProject } = require('./librariesio-common') +import { metric } from '../text-formatters.js' +import { BaseJsonService } from '../index.js' +import { fetchProject } from './librariesio-common.js' // https://libraries.io/api#project-dependents -module.exports = class LibrariesIoDependents extends BaseJsonService { +export default class LibrariesIoDependents extends BaseJsonService { static category = 'other' static route = { diff --git a/services/librariesio/librariesio-dependents.tester.js b/services/librariesio/librariesio-dependents.tester.js index a0b6a24d7ba28..8ca0b4393bd31 100644 --- a/services/librariesio/librariesio-dependents.tester.js +++ b/services/librariesio/librariesio-dependents.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('dependent count').timeout(10000).get('/npm/got.json').expectBadge({ label: 'dependents', diff --git a/services/librariesio/librariesio-sourcerank.service.js b/services/librariesio/librariesio-sourcerank.service.js index 98881416b919f..351a668eeff7f 100644 --- a/services/librariesio/librariesio-sourcerank.service.js +++ b/services/librariesio/librariesio-sourcerank.service.js @@ -1,12 +1,10 @@ -'use strict' - -const { colorScale } = require('../color-formatters') -const { BaseJsonService } = require('..') -const { fetchProject } = require('./librariesio-common') +import { colorScale } from '../color-formatters.js' +import { BaseJsonService } from '../index.js' +import { fetchProject } from './librariesio-common.js' const sourceRankColor = colorScale([10, 15, 20, 25, 30]) -module.exports = class LibrariesIoSourcerank extends BaseJsonService { +export default class LibrariesIoSourcerank extends BaseJsonService { static category = 'rating' static route = { diff --git a/services/librariesio/librariesio-sourcerank.tester.js b/services/librariesio/librariesio-sourcerank.tester.js index c76d302dc520c..7135302de37c1 100644 --- a/services/librariesio/librariesio-sourcerank.tester.js +++ b/services/librariesio/librariesio-sourcerank.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { anyInteger } = require('../validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { anyInteger } from '../validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('sourcerank').timeout(10000).get('/npm/got.json').expectBadge({ label: 'sourcerank', diff --git a/services/libscore/libscore.service.js b/services/libscore/libscore.service.js index 6dd0a755a9aae..234d53e38f8db 100644 --- a/services/libscore/libscore.service.js +++ b/services/libscore/libscore.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ category: 'rating', route: { base: 'libscore/s', diff --git a/services/libscore/libscore.tester.js b/services/libscore/libscore.tester.js index 223e8b3d58962..bf5ec44d0ce07 100644 --- a/services/libscore/libscore.tester.js +++ b/services/libscore/libscore.tester.js @@ -1,9 +1,6 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = new ServiceTester({ id: 'libscore', title: 'libscore' }) -module.exports = t +export const t = new ServiceTester({ id: 'libscore', title: 'libscore' }) t.create('no longer available (previously usage statistics)') .get('/s/jQuery.json') diff --git a/services/licenses.js b/services/licenses.js index b6efcb8ae0d15..9def600c8f591 100644 --- a/services/licenses.js +++ b/services/licenses.js @@ -1,6 +1,4 @@ -'use strict' - -const toArray = require('../core/base-service/to-array') +import toArray from '../core/base-service/to-array.js' const licenseTypes = { // permissive licenses - not public domain and not copyleft @@ -130,4 +128,4 @@ function renderLicenseBadge({ license, licenses }) { } } -module.exports = { licenseToColor, renderLicenseBadge } +export { licenseToColor, renderLicenseBadge } diff --git a/services/licenses.spec.js b/services/licenses.spec.js index 58e95285b6496..20554dadc7305 100644 --- a/services/licenses.spec.js +++ b/services/licenses.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given, forCases } = require('sazerac') -const { licenseToColor, renderLicenseBadge } = require('./licenses') +import { test, given, forCases } from 'sazerac' +import { licenseToColor, renderLicenseBadge } from './licenses.js' describe('license helpers', function () { test(licenseToColor, () => { diff --git a/services/localizely/localizely.service.js b/services/localizely/localizely.service.js index d29d50d658125..1e8ac60608329 100644 --- a/services/localizely/localizely.service.js +++ b/services/localizely/localizely.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService, InvalidResponse } = require('..') -const { coveragePercentage } = require('../color-formatters') +import Joi from 'joi' +import { BaseJsonService, InvalidResponse } from '../index.js' +import { coveragePercentage } from '../color-formatters.js' const keywords = [ 'l10n', @@ -51,7 +49,7 @@ const queryParamSchema = Joi.object({ languageCode: Joi.string().regex(/^[a-z]{2}(-[A-Z][a-z]{3})?(-[A-Z]{2})?$/), }).required() -module.exports = class Localizely extends BaseJsonService { +export default class Localizely extends BaseJsonService { static category = 'other' static route = { diff --git a/services/localizely/localizely.tester.js b/services/localizely/localizely.tester.js index 814573a499776..9f996e287de16 100644 --- a/services/localizely/localizely.tester.js +++ b/services/localizely/localizely.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isIntegerPercentage } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { isIntegerPercentage } from '../test-validators.js' +export const t = await createServiceTester() t.create('Overall progress') .get( diff --git a/services/luarocks/luarocks-version-helpers.js b/services/luarocks/luarocks-version-helpers.js index ee1526adc8fd8..3523f38a5b597 100644 --- a/services/luarocks/luarocks-version-helpers.js +++ b/services/luarocks/luarocks-version-helpers.js @@ -24,9 +24,7 @@ * https://github.com/luarocks/luarocks/blob/405ee29ba8444d97646f62e72effeaff2bfe3f79/src/luarocks/search.lua#L182 * https://github.com/luarocks/luarocks/blob/405ee29ba8444d97646f62e72effeaff2bfe3f79/src/luarocks/core/vers.lua#L83 */ -'use strict' - -const { omitv } = require('../text-formatters') +import { omitv } from '../text-formatters.js' // Compare two arrays containing split and transformed to // positive/negative numbers parts of version strings, @@ -86,8 +84,4 @@ function latestVersion(versions) { .pop() } -module.exports = { - parseVersion, - compareVersionLists, - latestVersion, -} +export { parseVersion, compareVersionLists, latestVersion } diff --git a/services/luarocks/luarocks-version-helpers.spec.js b/services/luarocks/luarocks-version-helpers.spec.js index 22064de414d52..fce50d9acf0ff 100644 --- a/services/luarocks/luarocks-version-helpers.spec.js +++ b/services/luarocks/luarocks-version-helpers.spec.js @@ -1,11 +1,9 @@ -'use strict' - -const { test, given, forCases } = require('sazerac') -const { +import { test, given, forCases } from 'sazerac' +import { parseVersion, compareVersionLists, latestVersion, -} = require('./luarocks-version-helpers') +} from './luarocks-version-helpers.js' describe('LuaRocks-specific helpers', function () { test(compareVersionLists, () => { diff --git a/services/luarocks/luarocks.service.js b/services/luarocks/luarocks.service.js index 4ce526f27f2e4..2ffb68616afad 100644 --- a/services/luarocks/luarocks.service.js +++ b/services/luarocks/luarocks.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { addv } = require('../text-formatters') -const { BaseJsonService, NotFound } = require('..') -const { latestVersion } = require('./luarocks-version-helpers') +import Joi from 'joi' +import { addv } from '../text-formatters.js' +import { BaseJsonService, NotFound } from '../index.js' +import { latestVersion } from './luarocks-version-helpers.js' const schema = Joi.object({ repository: Joi.object() @@ -14,7 +12,7 @@ const schema = Joi.object({ .required(), }).required() -module.exports = class Luarocks extends BaseJsonService { +export default class Luarocks extends BaseJsonService { static category = 'version' static route = { diff --git a/services/luarocks/luarocks.spec.js b/services/luarocks/luarocks.spec.js index ad6479ef7d501..811ab73ccf72a 100644 --- a/services/luarocks/luarocks.spec.js +++ b/services/luarocks/luarocks.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const Luarocks = require('./luarocks.service') +import { test, given } from 'sazerac' +import Luarocks from './luarocks.service.js' test(Luarocks.render, () => { given({ version: 'dev-1' }).expect({ message: 'dev-1', color: 'yellow' }) diff --git a/services/luarocks/luarocks.tester.js b/services/luarocks/luarocks.tester.js index 0e60caf896377..e82ddcf8eed4f 100644 --- a/services/luarocks/luarocks.tester.js +++ b/services/luarocks/luarocks.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isLuaVersion = Joi.string() .regex(/^v\d+\.\d+\.\d+-\d+$/) diff --git a/services/magnumci/magnumci.service.js b/services/magnumci/magnumci.service.js index 5a01a0304b38a..8830135f3a5f7 100644 --- a/services/magnumci/magnumci.service.js +++ b/services/magnumci/magnumci.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ category: 'build', route: { base: 'magnumci/ci', diff --git a/services/magnumci/magnumci.tester.js b/services/magnumci/magnumci.tester.js index d88d56f757622..c42c7f3297d98 100644 --- a/services/magnumci/magnumci.tester.js +++ b/services/magnumci/magnumci.tester.js @@ -1,9 +1,6 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = new ServiceTester({ id: 'magnumci', title: 'Magnum CI' }) -module.exports = t +export const t = new ServiceTester({ id: 'magnumci', title: 'Magnum CI' }) t.create('no longer available') .get('/ci/96ffb83fa700f069024921b0702e76ff.json') diff --git a/services/maintenance/maintenance.service.js b/services/maintenance/maintenance.service.js index e05da9f6bb7b4..c38bc236318ff 100644 --- a/services/maintenance/maintenance.service.js +++ b/services/maintenance/maintenance.service.js @@ -1,8 +1,6 @@ -'use strict' +import { BaseService } from '../index.js' -const { BaseService } = require('..') - -module.exports = class Maintenance extends BaseService { +export default class Maintenance extends BaseService { static category = 'other' static route = { diff --git a/services/maintenance/maintenance.spec.js b/services/maintenance/maintenance.spec.js index 460df7fa941ec..cb98567746fd1 100644 --- a/services/maintenance/maintenance.spec.js +++ b/services/maintenance/maintenance.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const Maintenance = require('./maintenance.service') +import { test, given } from 'sazerac' +import Maintenance from './maintenance.service.js' describe('Maintenance', function () { test(Maintenance.prototype.transform, () => { diff --git a/services/maintenance/maintenance.tester.js b/services/maintenance/maintenance.tester.js index 04e53ee0bea41..1fd3dee957477 100644 --- a/services/maintenance/maintenance.tester.js +++ b/services/maintenance/maintenance.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const currentYear = new Date().getUTCFullYear() diff --git a/services/mastodon/mastodon-follow.service.js b/services/mastodon/mastodon-follow.service.js index 9e0881b5adfd7..cea9e509948e7 100644 --- a/services/mastodon/mastodon-follow.service.js +++ b/services/mastodon/mastodon-follow.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { optionalUrl, nonNegativeInteger } = require('../validators') -const { BaseJsonService, NotFound } = require('..') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { optionalUrl, nonNegativeInteger } from '../validators.js' +import { BaseJsonService, NotFound } from '../index.js' const schema = Joi.object({ username: Joi.string().required(), @@ -20,7 +18,7 @@ const documentation = `

Failing that, you can also visit your profile page, where your user ID will be in the header in a tag like this: <link href='https://your.mastodon.server/api/salmon/{your-user-id}' rel='salmon'>

` -module.exports = class MastodonFollow extends BaseJsonService { +export default class MastodonFollow extends BaseJsonService { static category = 'social' static route = { diff --git a/services/mastodon/mastodon-follow.tester.js b/services/mastodon/mastodon-follow.tester.js index 4f68ec5df905a..1b792bad8c962 100644 --- a/services/mastodon/mastodon-follow.tester.js +++ b/services/mastodon/mastodon-follow.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Followers - default domain') .get('/26471.json') diff --git a/services/matrix/matrix.service.js b/services/matrix/matrix.service.js index 55239edfa379f..d0cdf311e488a 100644 --- a/services/matrix/matrix.service.js +++ b/services/matrix/matrix.service.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService, InvalidParameter } = require('..') +import Joi from 'joi' +import { BaseJsonService, InvalidParameter } from '../index.js' const queryParamSchema = Joi.object({ server_fqdn: Joi.string().hostname(), @@ -52,7 +50,7 @@ const documentation = `

` -module.exports = class Matrix extends BaseJsonService { +export default class Matrix extends BaseJsonService { static category = 'chat' static route = { diff --git a/services/matrix/matrix.tester.js b/services/matrix/matrix.tester.js index 564df75ad80b7..d87857497a2fc 100644 --- a/services/matrix/matrix.tester.js +++ b/services/matrix/matrix.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('get room state as guest') .get('/ALIAS:DUMMY.dumb.json') diff --git a/services/maven-central/maven-central.service.js b/services/maven-central/maven-central.service.js index 49ad30f08946d..feccfe07d39a1 100644 --- a/services/maven-central/maven-central.service.js +++ b/services/maven-central/maven-central.service.js @@ -1,9 +1,7 @@ -'use strict' +import { redirector } from '../index.js' +import { documentation } from '../maven-metadata/maven-metadata.js' -const { redirector } = require('..') -const { documentation } = require('../maven-metadata/maven-metadata') - -module.exports = redirector({ +export default redirector({ category: 'version', isDeprecated: false, route: { diff --git a/services/maven-central/maven-central.tester.js b/services/maven-central/maven-central.tester.js index 3facb65da999e..ef09147dd50bb 100644 --- a/services/maven-central/maven-central.tester.js +++ b/services/maven-central/maven-central.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('latest version redirection') .get('/com.github.fabriziocucci/yacl4j.json') // http://repo1.maven.org/maven2/com/github/fabriziocucci/yacl4j/ diff --git a/services/maven-metadata/maven-metadata-redirect.service.js b/services/maven-metadata/maven-metadata-redirect.service.js index c713ddd35028b..a7cffcca7c577 100644 --- a/services/maven-metadata/maven-metadata-redirect.service.js +++ b/services/maven-metadata/maven-metadata-redirect.service.js @@ -1,8 +1,6 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = redirector({ +export default redirector({ category: 'version', route: { base: 'maven-metadata/v', diff --git a/services/maven-metadata/maven-metadata-redirect.tester.js b/services/maven-metadata/maven-metadata-redirect.tester.js index 4694203de109e..ddd053e8bd129 100644 --- a/services/maven-metadata/maven-metadata-redirect.tester.js +++ b/services/maven-metadata/maven-metadata-redirect.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('maven metadata (badge extension)') .get( diff --git a/services/maven-metadata/maven-metadata.js b/services/maven-metadata/maven-metadata.js index f96ba9a5a83ad..b7f9865ea29cb 100644 --- a/services/maven-metadata/maven-metadata.js +++ b/services/maven-metadata/maven-metadata.js @@ -2,9 +2,7 @@ // the file contains common constants for badges uses maven-metadata -module.exports = {} - -module.exports.documentation = ` +export const documentation = `

versionPrefix and versionSuffix allow narrowing down the range of versions the badge will take into account, diff --git a/services/maven-metadata/maven-metadata.service.js b/services/maven-metadata/maven-metadata.service.js index 3a495ee69ee73..ded8f75965bf5 100644 --- a/services/maven-metadata/maven-metadata.service.js +++ b/services/maven-metadata/maven-metadata.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { optionalUrl } = require('../validators') -const { renderVersionBadge } = require('../version') -const { BaseXmlService, NotFound } = require('..') -const { documentation } = require('./maven-metadata') +import Joi from 'joi' +import { optionalUrl } from '../validators.js' +import { renderVersionBadge } from '../version.js' +import { BaseXmlService, NotFound } from '../index.js' +import { documentation } from './maven-metadata.js' const queryParamSchema = Joi.object({ metadataUrl: optionalUrl.required(), @@ -22,7 +20,7 @@ const schema = Joi.object({ }).required(), }).required() -module.exports = class MavenMetadata extends BaseXmlService { +export default class MavenMetadata extends BaseXmlService { static category = 'version' static route = { diff --git a/services/maven-metadata/maven-metadata.tester.js b/services/maven-metadata/maven-metadata.tester.js index 083c94c5cf030..4115bd7cdd136 100644 --- a/services/maven-metadata/maven-metadata.tester.js +++ b/services/maven-metadata/maven-metadata.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) -const { isVPlusDottedVersionAtLeastOne } = require('../test-validators') +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +import { isVPlusDottedVersionAtLeastOne } from '../test-validators.js' +export const t = await createServiceTester() t.create('valid maven-metadata.xml uri') .get( diff --git a/services/microbadger/microbadger.service.js b/services/microbadger/microbadger.service.js index ba9196d9fd37e..2d1eff78081e7 100644 --- a/services/microbadger/microbadger.service.js +++ b/services/microbadger/microbadger.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ category: 'build', route: { base: 'microbadger', diff --git a/services/microbadger/microbadger.tester.js b/services/microbadger/microbadger.tester.js index 12842da39d2d5..ac6b7ce145d2b 100644 --- a/services/microbadger/microbadger.tester.js +++ b/services/microbadger/microbadger.tester.js @@ -1,10 +1,9 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'microbadger', title: 'Microbadger', -})) +}) t.create('no longer available (previously image size)') .get('/image-size/fedora/apache.json') diff --git a/services/mozilla-observatory/mozilla-observatory.service.js b/services/mozilla-observatory/mozilla-observatory.service.js index 30e9ce43cb8c5..8f436056c2d0d 100644 --- a/services/mozilla-observatory/mozilla-observatory.service.js +++ b/services/mozilla-observatory/mozilla-observatory.service.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ state: Joi.string() @@ -45,7 +43,7 @@ const documentation = `

` -module.exports = class MozillaObservatory extends BaseJsonService { +export default class MozillaObservatory extends BaseJsonService { // TODO: Once created, change to a more appropriate category, // see https://github.com/badges/shields/pull/2926#issuecomment-460777017 static category = 'monitoring' diff --git a/services/mozilla-observatory/mozilla-observatory.tester.js b/services/mozilla-observatory/mozilla-observatory.tester.js index a169bac2fc7db..b3f73f658d512 100644 --- a/services/mozilla-observatory/mozilla-observatory.tester.js +++ b/services/mozilla-observatory/mozilla-observatory.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isMessage = Joi.alternatives() .try( diff --git a/services/myget/myget.service.js b/services/myget/myget.service.js index 38f17e5c0883a..8b654e6ffc31f 100644 --- a/services/myget/myget.service.js +++ b/services/myget/myget.service.js @@ -1,6 +1,4 @@ -'use strict' - -const { createServiceFamily } = require('../nuget/nuget-v3-service-family') +import { createServiceFamily } from '../nuget/nuget-v3-service-family.js' const { NugetVersionService: Version, NugetDownloadService: Downloads } = createServiceFamily({ @@ -57,7 +55,4 @@ class MyGetDownloadService extends Downloads { ] } -module.exports = { - MyGetVersionService, - MyGetDownloadService, -} +export { MyGetVersionService, MyGetDownloadService } diff --git a/services/myget/myget.tester.js b/services/myget/myget.tester.js index bb9ca7fa2a8eb..7b3e9ec5a6e08 100644 --- a/services/myget/myget.tester.js +++ b/services/myget/myget.tester.js @@ -1,23 +1,21 @@ -'use strict' - -const { ServiceTester } = require('../tester') -const { +import { ServiceTester } from '../tester.js' +import { isMetric, isVPlusDottedVersionNClausesWithOptionalSuffix, -} = require('../test-validators') -const { +} from '../test-validators.js' +import { queryIndex, nuGetV3VersionJsonWithDash, nuGetV3VersionJsonFirstCharZero, nuGetV3VersionJsonFirstCharNotZero, -} = require('../nuget-fixtures') -const { invalidJSON } = require('../response-fixtures') +} from '../nuget-fixtures.js' +import { invalidJSON } from '../response-fixtures.js' -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'myget', title: 'MyGet', pathPrefix: '', -})) +}) // downloads diff --git a/services/netlify/netlify.service.js b/services/netlify/netlify.service.js index 37485fde708d2..3feefa4165161 100644 --- a/services/netlify/netlify.service.js +++ b/services/netlify/netlify.service.js @@ -1,7 +1,5 @@ -'use strict' - -const { renderBuildStatusBadge } = require('../build-status') -const { BaseSvgScrapingService } = require('..') +import { renderBuildStatusBadge } from '../build-status.js' +import { BaseSvgScrapingService } from '../index.js' const pendingStatus = 'building' const notBuiltStatus = 'not built' @@ -16,7 +14,7 @@ const statusMap = { infrastructure_failure: 'failed', } -module.exports = class Netlify extends BaseSvgScrapingService { +export default class Netlify extends BaseSvgScrapingService { static category = 'build' static route = { diff --git a/services/netlify/netlify.spec.js b/services/netlify/netlify.spec.js index faee3111220d9..c614e5ee62e1b 100644 --- a/services/netlify/netlify.spec.js +++ b/services/netlify/netlify.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const Netlify = require('./netlify.service') +import { test, given } from 'sazerac' +import Netlify from './netlify.service.js' const building = { message: 'building', label: undefined, color: 'yellow' } const notBuilt = { message: 'not built', label: undefined, color: undefined } diff --git a/services/netlify/netlify.tester.js b/services/netlify/netlify.tester.js index abea04611958a..8d9d8a03eab98 100644 --- a/services/netlify/netlify.tester.js +++ b/services/netlify/netlify.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isBuildStatus } = require('../build-status') -const t = (module.exports = require('../tester').createServiceTester()) +import { isBuildStatus } from '../build-status.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('netlify (valid, no branch)') .get('/e6d5a4e0-dee1-4261-833e-2f47f509c68f.json') diff --git a/services/nexus/nexus-redirect.service.js b/services/nexus/nexus-redirect.service.js index fb194284aefa5..12878567219c8 100644 --- a/services/nexus/nexus-redirect.service.js +++ b/services/nexus/nexus-redirect.service.js @@ -1,8 +1,6 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = [ +export default [ redirector({ category: 'version', route: { diff --git a/services/nexus/nexus-redirect.tester.js b/services/nexus/nexus-redirect.tester.js index 7e6b3f56a86d2..294b0f67143ad 100644 --- a/services/nexus/nexus-redirect.tester.js +++ b/services/nexus/nexus-redirect.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'NexusRedirect', title: 'NexusRedirect', pathPrefix: '/nexus', -})) +}) t.create('Nexus release') .get('/r/https/oss.sonatype.org/com.google.guava/guava.svg') diff --git a/services/nexus/nexus-version.js b/services/nexus/nexus-version.js index 89b1f4a66f2c1..0adb7bf42527f 100644 --- a/services/nexus/nexus-version.js +++ b/services/nexus/nexus-version.js @@ -1,10 +1,6 @@ -'use strict' - function isSnapshotVersion(version) { const pattern = /(\d+\.)*[0-9a-f]-SNAPSHOT/ return version && version.match(pattern) } -module.exports = { - isSnapshotVersion, -} +export { isSnapshotVersion } diff --git a/services/nexus/nexus.service.js b/services/nexus/nexus.service.js index 7906b6933c500..67451ef0c929e 100644 --- a/services/nexus/nexus.service.js +++ b/services/nexus/nexus.service.js @@ -1,14 +1,12 @@ -'use strict' - -const Joi = require('joi') -const { version: versionColor } = require('../color-formatters') -const { addv } = require('../text-formatters') -const { optionalUrl } = require('../validators') -const { +import Joi from 'joi' +import { version as versionColor } from '../color-formatters.js' +import { addv } from '../text-formatters.js' +import { + optionalUrl, optionalDottedVersionNClausesWithOptionalSuffix, -} = require('../validators') -const { BaseJsonService, InvalidResponse, NotFound } = require('..') -const { isSnapshotVersion } = require('./nexus-version') +} from '../validators.js' +import { BaseJsonService, InvalidResponse, NotFound } from '../index.js' +import { isSnapshotVersion } from './nexus-version.js' const nexus2SearchApiSchema = Joi.object({ data: Joi.array() @@ -53,7 +51,7 @@ const queryParamSchema = Joi.object({ nexusVersion: Joi.equal('2', '3'), }).required() -module.exports = class Nexus extends BaseJsonService { +export default class Nexus extends BaseJsonService { static category = 'version' static route = { diff --git a/services/nexus/nexus.spec.js b/services/nexus/nexus.spec.js index d06c051f2672c..43104b8307da8 100644 --- a/services/nexus/nexus.spec.js +++ b/services/nexus/nexus.spec.js @@ -1,10 +1,8 @@ -'use strict' - -const { expect } = require('chai') -const nock = require('nock') -const { cleanUpNockAfterEach, defaultContext } = require('../test-helpers') -const { InvalidResponse, NotFound } = require('..') -const Nexus = require('./nexus.service') +import { expect } from 'chai' +import nock from 'nock' +import { cleanUpNockAfterEach, defaultContext } from '../test-helpers.js' +import { InvalidResponse, NotFound } from '../index.js' +import Nexus from './nexus.service.js' describe('Nexus', function () { context('transform2()', function () { diff --git a/services/nexus/nexus.tester.js b/services/nexus/nexus.tester.js index f2c37a351be82..f3c7d5c31ec26 100644 --- a/services/nexus/nexus.tester.js +++ b/services/nexus/nexus.tester.js @@ -1,9 +1,6 @@ -'use strict' - -const { - isVPlusDottedVersionNClausesWithOptionalSuffix: isVersion, -} = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isVPlusDottedVersionNClausesWithOptionalSuffix as isVersion } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Nexus 2 - search release version valid artifact') .timeout(15000) diff --git a/services/node/node-base.js b/services/node/node-base.js index 007ad6e4b93af..61f049595eec9 100644 --- a/services/node/node-base.js +++ b/services/node/node-base.js @@ -1,10 +1,8 @@ -'use strict' - -const NPMBase = require('../npm/npm-base') +import NPMBase from '../npm/npm-base.js' const keywords = ['npm'] -module.exports = class NodeVersionBase extends NPMBase { +export default class NodeVersionBase extends NPMBase { static category = 'platform-support' static get examples() { diff --git a/services/node/node-current.service.js b/services/node/node-current.service.js index cea93959e662e..4494641fc1f75 100644 --- a/services/node/node-current.service.js +++ b/services/node/node-current.service.js @@ -1,9 +1,7 @@ -'use strict' +import NodeVersionBase from './node-base.js' +import { versionColorForRangeCurrent } from './node-version-color.js' -const NodeVersionBase = require('./node-base') -const { versionColorForRangeCurrent } = require('./node-version-color') - -module.exports = class NodeCurrentVersion extends NodeVersionBase { +export default class NodeCurrentVersion extends NodeVersionBase { static route = this.buildRoute('node/v', { withTag: true }) static defaultBadgeData = { diff --git a/services/node/node-current.spec.js b/services/node/node-current.spec.js index 072bf7350dbad..11cff97eefaa8 100644 --- a/services/node/node-current.spec.js +++ b/services/node/node-current.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const NodeVersion = require('./node-current.service') +import { test, given } from 'sazerac' +import NodeVersion from './node-current.service.js' describe('node static renderStaticPreview', function () { it('should have parity with render()', async function () { diff --git a/services/node/node-current.tester.js b/services/node/node-current.tester.js index b9ae1d9e55cb1..7d50fa272df0a 100644 --- a/services/node/node-current.tester.js +++ b/services/node/node-current.tester.js @@ -1,9 +1,9 @@ -'use strict' - -const { expect } = require('chai') -const { Range } = require('semver') -const t = (module.exports = require('../tester').createServiceTester()) -const { mockPackageData, mockCurrentSha } = require('./testUtils/test-utils') +import { expect } from 'chai' +import semverModule from 'semver' +import { createServiceTester } from '../tester.js' +import { mockPackageData, mockCurrentSha } from './testUtils/test-utils.js' +const { Range } = semverModule +export const t = await createServiceTester() function expectSemverRange(message) { expect(() => new Range(message)).not.to.throw() diff --git a/services/node/node-lts.service.js b/services/node/node-lts.service.js index 790e7ea9d2fd2..934e2ff71912d 100644 --- a/services/node/node-lts.service.js +++ b/services/node/node-lts.service.js @@ -1,9 +1,7 @@ -'use strict' +import NodeVersionBase from './node-base.js' +import { versionColorForRangeLts } from './node-version-color.js' -const NodeVersionBase = require('./node-base') -const { versionColorForRangeLts } = require('./node-version-color') - -module.exports = class NodeLtsVersion extends NodeVersionBase { +export default class NodeLtsVersion extends NodeVersionBase { static route = this.buildRoute('node/v-lts', { withTag: true }) static defaultBadgeData = { diff --git a/services/node/node-lts.spec.js b/services/node/node-lts.spec.js index f1ca6f100297e..cc3711731065d 100644 --- a/services/node/node-lts.spec.js +++ b/services/node/node-lts.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const NodeVersion = require('./node-lts.service') +import { test, given } from 'sazerac' +import NodeVersion from './node-lts.service.js' describe('node-lts renderStaticPreview', function () { it('should have parity with render()', async function () { diff --git a/services/node/node-lts.tester.js b/services/node/node-lts.tester.js index f2d47331fee54..016604c21df79 100644 --- a/services/node/node-lts.tester.js +++ b/services/node/node-lts.tester.js @@ -1,13 +1,13 @@ -'use strict' - -const { expect } = require('chai') -const { Range } = require('semver') -const t = (module.exports = require('../tester').createServiceTester()) -const { +import { expect } from 'chai' +import semverModule from 'semver' +import { createServiceTester } from '../tester.js' +import { mockPackageData, mockReleaseSchedule, mockVersionsSha, -} = require('./testUtils/test-utils') +} from './testUtils/test-utils.js' +const { Range } = semverModule +export const t = await createServiceTester() function expectSemverRange(message) { expect(() => new Range(message)).not.to.throw() diff --git a/services/node/node-version-color.js b/services/node/node-version-color.js index f13d45e54f4a4..44e36984a25ec 100644 --- a/services/node/node-version-color.js +++ b/services/node/node-version-color.js @@ -1,9 +1,7 @@ -'use strict' - -const { promisify } = require('util') -const moment = require('moment') -const semver = require('semver') -const { regularUpdate } = require('../../core/legacy/regular-update') +import { promisify } from 'util' +import moment from 'moment' +import semver from 'semver' +import { regularUpdate } from '../../core/legacy/regular-update.js' const dateFormat = 'YYYY-MM-DD' @@ -84,7 +82,4 @@ async function versionColorForRangeCurrent(range) { } } -module.exports = { - versionColorForRangeCurrent, - versionColorForRangeLts, -} +export { versionColorForRangeCurrent, versionColorForRangeLts } diff --git a/services/node/testUtils/test-utils.js b/services/node/testUtils/test-utils.js index 96b265ee7dac3..2a7535ce04cf4 100644 --- a/services/node/testUtils/test-utils.js +++ b/services/node/testUtils/test-utils.js @@ -1,18 +1,23 @@ -'use strict' - -const fs = require('fs') -const path = require('path') -const moment = require('moment') +import fs from 'fs' +import path from 'path' +import { fileURLToPath } from 'url' +import moment from 'moment' const dateFormat = 'YYYY-MM-DD' const templates = { packageJsonVersionsTemplate: fs.readFileSync( - path.join(__dirname, `packageJsonVersionsTemplate.json`), + path.join( + path.dirname(fileURLToPath(import.meta.url)), + `packageJsonVersionsTemplate.json` + ), 'utf-8' ), packageJsonTemplate: fs.readFileSync( - path.join(__dirname, `packageJsonTemplate.json`), + path.join( + path.dirname(fileURLToPath(import.meta.url)), + `packageJsonTemplate.json` + ), 'utf-8' ), } @@ -145,9 +150,4 @@ const mockReleaseSchedule = () => nock => { .reply(200, schedule) } -module.exports = { - mockPackageData, - mockCurrentSha, - mockVersionsSha, - mockReleaseSchedule, -} +export { mockPackageData, mockCurrentSha, mockVersionsSha, mockReleaseSchedule } diff --git a/services/nodeping/nodeping-status.service.js b/services/nodeping/nodeping-status.service.js index 6b85f3a3afef8..32d145b995fed 100644 --- a/services/nodeping/nodeping-status.service.js +++ b/services/nodeping/nodeping-status.service.js @@ -1,12 +1,10 @@ -'use strict' - -const Joi = require('joi') -const { +import Joi from 'joi' +import { queryParamSchema, exampleQueryParams, renderWebsiteStatus, -} = require('../website-status') -const { BaseJsonService } = require('..') +} from '../website-status.js' +import { BaseJsonService } from '../index.js' const schema = Joi.array() .items(Joi.object().keys({ su: Joi.boolean() })) @@ -17,7 +15,7 @@ const schema = Joi.array() */ const exampleCheckUuid = 'jkiwn052-ntpp-4lbb-8d45-ihew6d9ucoei' -module.exports = class NodePingStatus extends BaseJsonService { +export default class NodePingStatus extends BaseJsonService { static category = 'monitoring' static route = { diff --git a/services/nodeping/nodeping-status.tester.js b/services/nodeping/nodeping-status.tester.js index c497f97c8aede..6361cb99ce305 100644 --- a/services/nodeping/nodeping-status.tester.js +++ b/services/nodeping/nodeping-status.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('NodePing status') .get('/jkiwn052-ntpp-4lbb-8d45-ihew6d9ucoei.json') diff --git a/services/nodeping/nodeping-uptime.service.js b/services/nodeping/nodeping-uptime.service.js index 1c2c428cc9ce2..827ac7b6a826d 100644 --- a/services/nodeping/nodeping-uptime.service.js +++ b/services/nodeping/nodeping-uptime.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { colorScale } = require('../color-formatters') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { colorScale } from '../color-formatters.js' +import { BaseJsonService } from '../index.js' const colorFormatter = colorScale([99, 99.5, 100]) @@ -23,7 +21,7 @@ const sampleCheckUuid = 'jkiwn052-ntpp-4lbb-8d45-ihew6d9ucoei' // TODO: support for custom '100%' label // TODO: support for custom # of decimal places -module.exports = class NodePingUptime extends BaseJsonService { +export default class NodePingUptime extends BaseJsonService { static category = 'monitoring' static route = { base: 'nodeping/uptime', pattern: ':checkUuid' } diff --git a/services/nodeping/nodeping-uptime.tester.js b/services/nodeping/nodeping-uptime.tester.js index 21a02ad42e428..5e09a52eca4ac 100644 --- a/services/nodeping/nodeping-uptime.tester.js +++ b/services/nodeping/nodeping-uptime.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isPercentage } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { isPercentage } from '../test-validators.js' +export const t = await createServiceTester() t.create('NodePing uptime') .get('/jkiwn052-ntpp-4lbb-8d45-ihew6d9ucoei.json') diff --git a/services/npm/npm-base.js b/services/npm/npm-base.js index dc334d45f7266..7f8ed6cbc2ca3 100644 --- a/services/npm/npm-base.js +++ b/services/npm/npm-base.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { optionalUrl } = require('../validators') -const { isDependencyMap } = require('../package-json-helpers') -const { BaseJsonService, InvalidResponse, NotFound } = require('..') +import Joi from 'joi' +import { optionalUrl } from '../validators.js' +import { isDependencyMap } from '../package-json-helpers.js' +import { BaseJsonService, InvalidResponse, NotFound } from '../index.js' const deprecatedLicenseObjectSchema = Joi.object({ type: Joi.string().required(), @@ -32,13 +30,13 @@ const packageDataSchema = Joi.object({ files: Joi.array().items(Joi.string()).default([]), }).required() -const queryParamSchema = Joi.object({ +export const queryParamSchema = Joi.object({ registry_uri: optionalUrl, }).required() // Abstract class for NPM badges which display data about the latest version // of a package. -module.exports = class NpmBase extends BaseJsonService { +export default class NpmBase extends BaseJsonService { static auth = { passKey: 'npm_token', serviceKey: 'npm', @@ -143,5 +141,3 @@ module.exports = class NpmBase extends BaseJsonService { return this.constructor._validate(packageData, packageDataSchema) } } - -module.exports.queryParamSchema = queryParamSchema diff --git a/services/npm/npm-base.spec.js b/services/npm/npm-base.spec.js index 710dee6217b2e..1d68e226d027c 100644 --- a/services/npm/npm-base.spec.js +++ b/services/npm/npm-base.spec.js @@ -1,10 +1,8 @@ -'use strict' - -const { expect } = require('chai') -const nock = require('nock') -const { cleanUpNockAfterEach, defaultContext } = require('../test-helpers') +import { expect } from 'chai' +import nock from 'nock' +import { cleanUpNockAfterEach, defaultContext } from '../test-helpers.js' // use NPM Version as an example implementation of NpmBase for this test -const NpmVersion = require('./npm-version.service') +import NpmVersion from './npm-version.service.js' describe('npm', function () { describe('auth', function () { diff --git a/services/npm/npm-collaborators.service.js b/services/npm/npm-collaborators.service.js index 0071abc3c8a6d..3c277b58c6f0f 100644 --- a/services/npm/npm-collaborators.service.js +++ b/services/npm/npm-collaborators.service.js @@ -1,11 +1,9 @@ -'use strict' - -const { renderContributorBadge } = require('../contributor-count') -const NpmBase = require('./npm-base') +import { renderContributorBadge } from '../contributor-count.js' +import NpmBase from './npm-base.js' const keywords = ['node'] -module.exports = class NpmCollaborators extends NpmBase { +export default class NpmCollaborators extends NpmBase { static category = 'activity' static route = this.buildRoute('npm/collaborators', { withTag: false }) diff --git a/services/npm/npm-collaborators.tester.js b/services/npm/npm-collaborators.tester.js index 45f6c9bab680a..90488d5e85366 100644 --- a/services/npm/npm-collaborators.tester.js +++ b/services/npm/npm-collaborators.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { nonNegativeInteger } = require('../validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { nonNegativeInteger } from '../validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('gets the contributor count') .get('/prettier.json') diff --git a/services/npm/npm-dependency-version.service.js b/services/npm/npm-dependency-version.service.js index 83b1e352c6f0b..916a5d7e0a0a9 100644 --- a/services/npm/npm-dependency-version.service.js +++ b/services/npm/npm-dependency-version.service.js @@ -1,12 +1,10 @@ -'use strict' - -const { getDependencyVersion } = require('../package-json-helpers') -const NpmBase = require('./npm-base') +import { getDependencyVersion } from '../package-json-helpers.js' +import NpmBase from './npm-base.js' const { queryParamSchema } = NpmBase const keywords = ['node'] -module.exports = class NpmDependencyVersion extends NpmBase { +export default class NpmDependencyVersion extends NpmBase { static category = 'platform-support' static route = { diff --git a/services/npm/npm-dependency-version.tester.js b/services/npm/npm-dependency-version.tester.js index f72f598b1ed3a..864c4d6b15e7f 100644 --- a/services/npm/npm-dependency-version.tester.js +++ b/services/npm/npm-dependency-version.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { semverRange } = require('../validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { semverRange } from '../validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('gets the peer dependency version') .get('/react-boxplot/peer/react.json') diff --git a/services/npm/npm-downloads.service.js b/services/npm/npm-downloads.service.js index d263c1f1e4cc7..ca01fae33f147 100644 --- a/services/npm/npm-downloads.service.js +++ b/services/npm/npm-downloads.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' // https://github.com/npm/registry/blob/master/docs/download-counts.md#output const pointResponseSchema = Joi.object({ @@ -45,7 +43,7 @@ const intervalMap = { // This hits an entirely different API from the rest of the NPM services, so // it does not use NpmBase. -module.exports = class NpmDownloads extends BaseJsonService { +export default class NpmDownloads extends BaseJsonService { static category = 'downloads' static route = { diff --git a/services/npm/npm-downloads.spec.js b/services/npm/npm-downloads.spec.js index 4c94a7d2c16fc..edb9854226272 100644 --- a/services/npm/npm-downloads.spec.js +++ b/services/npm/npm-downloads.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const NpmDownloads = require('./npm-downloads.service') +import { test, given } from 'sazerac' +import NpmDownloads from './npm-downloads.service.js' describe('NpmDownloads', function () { test(NpmDownloads._intervalMap.dt.transform, () => { diff --git a/services/npm/npm-downloads.tester.js b/services/npm/npm-downloads.tester.js index e3a9c46d7eee8..4ff67bad94be1 100644 --- a/services/npm/npm-downloads.tester.js +++ b/services/npm/npm-downloads.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetricOverTimePeriod, isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetricOverTimePeriod, isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('weekly downloads of left-pad').get('/dw/left-pad.json').expectBadge({ label: 'downloads', diff --git a/services/npm/npm-license.service.js b/services/npm/npm-license.service.js index 45394ea3e4581..ed354e28b8e03 100644 --- a/services/npm/npm-license.service.js +++ b/services/npm/npm-license.service.js @@ -1,10 +1,8 @@ -'use strict' +import { renderLicenseBadge } from '../licenses.js' +import toArray from '../../core/base-service/to-array.js' +import NpmBase from './npm-base.js' -const { renderLicenseBadge } = require('../licenses') -const toArray = require('../../core/base-service/to-array') -const NpmBase = require('./npm-base') - -module.exports = class NpmLicense extends NpmBase { +export default class NpmLicense extends NpmBase { static category = 'license' static route = this.buildRoute('npm/l', { withTag: false }) diff --git a/services/npm/npm-license.tester.js b/services/npm/npm-license.tester.js index d30c5783b34b3..a06aef4774ae1 100644 --- a/services/npm/npm-license.tester.js +++ b/services/npm/npm-license.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('gets the license of express') .get('/express.json') diff --git a/services/npm/npm-type-definitions.service.js b/services/npm/npm-type-definitions.service.js index ff314e75aba5c..9120b24593cae 100644 --- a/services/npm/npm-type-definitions.service.js +++ b/services/npm/npm-type-definitions.service.js @@ -1,11 +1,9 @@ -'use strict' - -const NpmBase = require('./npm-base') +import NpmBase from './npm-base.js' // For this badge to correctly detect type definitions, either the relevant // dependencies must be declared, or the `types` key must be set in // package.json. -module.exports = class NpmTypeDefinitions extends NpmBase { +export default class NpmTypeDefinitions extends NpmBase { static category = 'platform-support' static route = this.buildRoute('npm/types', { withTag: false }) diff --git a/services/npm/npm-type-definitions.spec.js b/services/npm/npm-type-definitions.spec.js index 98cefb2e53310..69c4f3d45af9f 100644 --- a/services/npm/npm-type-definitions.spec.js +++ b/services/npm/npm-type-definitions.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given, forCases } = require('sazerac') -const NpmTypeDefinitions = require('./npm-type-definitions.service') +import { test, given, forCases } from 'sazerac' +import NpmTypeDefinitions from './npm-type-definitions.service.js' describe('NPM type definitions badge', function () { test(NpmTypeDefinitions.transform, () => { diff --git a/services/npm/npm-type-definitions.tester.js b/services/npm/npm-type-definitions.tester.js index accd7292cb388..60cadb61fac11 100644 --- a/services/npm/npm-type-definitions.tester.js +++ b/services/npm/npm-type-definitions.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isTypeDefinition = Joi.string().regex( /^((Flow|TypeScript)|(Flow \| TypeScript))$/ diff --git a/services/npm/npm-version.service.js b/services/npm/npm-version.service.js index ab517815f3df8..95abd88a6c825 100644 --- a/services/npm/npm-version.service.js +++ b/services/npm/npm-version.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { NotFound } = require('..') -const NpmBase = require('./npm-base') +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { NotFound } from '../index.js' +import NpmBase from './npm-base.js' const keywords = ['node'] @@ -13,7 +11,7 @@ const schema = Joi.object() .pattern(/./, Joi.string()) .required() -module.exports = class NpmVersion extends NpmBase { +export default class NpmVersion extends NpmBase { static category = 'version' static route = this.buildRoute('npm/v', { withTag: true }) diff --git a/services/npm/npm-version.tester.js b/services/npm/npm-version.tester.js index c0b97b3e63563..a7f3d06a2e5ef 100644 --- a/services/npm/npm-version.tester.js +++ b/services/npm/npm-version.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isSemver } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isSemver } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('gets the package version of left-pad') .get('/left-pad.json') diff --git a/services/npms-io/npms-io-score.service.js b/services/npms-io/npms-io-score.service.js index 79adf48816e9b..23f54ac95eb51 100644 --- a/services/npms-io/npms-io-score.service.js +++ b/services/npms-io/npms-io-score.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') -const { coveragePercentage } = require('../color-formatters') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' +import { coveragePercentage } from '../color-formatters.js' // https://api-docs.npms.io/#api-Package-GetPackageInfo const numberSchema = Joi.number().min(0).max(1).required() @@ -19,7 +17,7 @@ const responseSchema = Joi.object({ const keywords = ['node', 'npm score'] -module.exports = class NpmsIOScore extends BaseJsonService { +export default class NpmsIOScore extends BaseJsonService { static category = 'analysis' static route = { diff --git a/services/npms-io/npms-io-score.tester.js b/services/npms-io/npms-io-score.tester.js index 1c1769ed21f59..855efceefad30 100644 --- a/services/npms-io/npms-io-score.tester.js +++ b/services/npms-io/npms-io-score.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isPercentage } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +import { isPercentage } from '../test-validators.js' +export const t = await createServiceTester() t.create('should show final score').get('/final-score/vue.json').expectBadge({ label: 'score', diff --git a/services/nsp/nsp.service.js b/services/nsp/nsp.service.js index ef85af672807f..63671c181ac0e 100644 --- a/services/nsp/nsp.service.js +++ b/services/nsp/nsp.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ route: { base: 'nsp/npm', pattern: ':various*', diff --git a/services/nsp/nsp.tester.js b/services/nsp/nsp.tester.js index 11a33eae1b87c..c7c8a198ab554 100644 --- a/services/nsp/nsp.tester.js +++ b/services/nsp/nsp.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'nsp', title: 'nsp', pathPrefix: '/nsp/npm', -})) +}) t.create('no longer available (previously package)') .get('/gh-badges.json') diff --git a/services/nuget-fixtures.js b/services/nuget-fixtures.js index c4e0fe30394f9..919cdd3b0bcf4 100644 --- a/services/nuget-fixtures.js +++ b/services/nuget-fixtures.js @@ -1,5 +1,3 @@ -'use strict' - const queryIndex = JSON.stringify({ resources: [ { @@ -50,7 +48,7 @@ const nuGetV3VersionJsonBuildMetadataWithDash = JSON.stringify({ ], }) -module.exports = { +export { queryIndex, nuGetV3VersionJsonWithDash, nuGetV3VersionJsonFirstCharZero, diff --git a/services/nuget/nuget-helpers.js b/services/nuget/nuget-helpers.js index 63603c2d5c7e0..d39fbe4348869 100644 --- a/services/nuget/nuget-helpers.js +++ b/services/nuget/nuget-helpers.js @@ -1,10 +1,8 @@ -'use strict' - -const { promisify } = require('util') -const semver = require('semver') -const { metric, addv } = require('../text-formatters') -const { downloadCount: downloadCountColor } = require('../color-formatters') -const { regularUpdate } = require('../../core/legacy/regular-update') +import { promisify } from 'util' +import semver from 'semver' +import { metric, addv } from '../text-formatters.js' +import { downloadCount as downloadCountColor } from '../color-formatters.js' +import { regularUpdate } from '../../core/legacy/regular-update.js' function renderVersionBadge({ version, feed }) { let color @@ -103,7 +101,7 @@ function selectVersion(versions, includePrereleases) { } } -module.exports = { +export { renderVersionBadge, renderDownloadBadge, odataToObject, diff --git a/services/nuget/nuget-helpers.spec.js b/services/nuget/nuget-helpers.spec.js index a4e40a94e8ca1..a5e316490d461 100644 --- a/services/nuget/nuget-helpers.spec.js +++ b/services/nuget/nuget-helpers.spec.js @@ -1,12 +1,10 @@ -'use strict' - -const { test, given } = require('sazerac') -const { +import { test, given } from 'sazerac' +import { renderVersionBadge, odataToObject, stripBuildMetadata, selectVersion, -} = require('./nuget-helpers') +} from './nuget-helpers.js' describe('NuGet helpers', function () { test(renderVersionBadge, () => { diff --git a/services/nuget/nuget-v2-service-family.js b/services/nuget/nuget-v2-service-family.js index 582771ddf21a4..b950a1ed2b6ea 100644 --- a/services/nuget/nuget-v2-service-family.js +++ b/services/nuget/nuget-v2-service-family.js @@ -1,13 +1,16 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService, BaseXmlService, NotFound, redirector } = require('..') -const { +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { + BaseJsonService, + BaseXmlService, + NotFound, + redirector, +} from '../index.js' +import { renderVersionBadge, renderDownloadBadge, odataToObject, -} = require('./nuget-helpers') +} from './nuget-helpers.js' function createFilter({ packageName, includePrereleases }) { const releaseTypeFilter = includePrereleases @@ -224,8 +227,4 @@ function createServiceFamily({ return { NugetVersionService, NugetVersionRedirector, NugetDownloadService } } -module.exports = { - createFilter, - fetch, - createServiceFamily, -} +export { createFilter, fetch, createServiceFamily } diff --git a/services/nuget/nuget-v3-service-family.js b/services/nuget/nuget-v3-service-family.js index 783cc05a7816d..3a06cd297e84d 100644 --- a/services/nuget/nuget-v3-service-family.js +++ b/services/nuget/nuget-v3-service-family.js @@ -1,15 +1,13 @@ -'use strict' - -const Joi = require('joi') -const RouteBuilder = require('../route-builder') -const { BaseJsonService, NotFound } = require('..') -const { +import Joi from 'joi' +import RouteBuilder from '../route-builder.js' +import { BaseJsonService, NotFound } from '../index.js' +import { renderVersionBadge, renderDownloadBadge, searchServiceUrl, stripBuildMetadata, selectVersion, -} = require('./nuget-helpers') +} from './nuget-helpers.js' /* * Build the Shields service URL object for the given service configuration. Return @@ -213,6 +211,4 @@ function createServiceFamily({ } } -module.exports = { - createServiceFamily, -} +export { createServiceFamily } diff --git a/services/nuget/nuget-v3-service-family.spec.js b/services/nuget/nuget-v3-service-family.spec.js index 18b92dccd7899..a6e49f6b6cb46 100644 --- a/services/nuget/nuget-v3-service-family.spec.js +++ b/services/nuget/nuget-v3-service-family.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const { createServiceFamily } = require('./nuget-v3-service-family') +import { test, given } from 'sazerac' +import { createServiceFamily } from './nuget-v3-service-family.js' const { NugetVersionService, NugetDownloadService } = createServiceFamily({ defaultLabel: 'nuget', diff --git a/services/nuget/nuget.service.js b/services/nuget/nuget.service.js index 86c33498f0abc..a05bbc3079075 100644 --- a/services/nuget/nuget.service.js +++ b/services/nuget/nuget.service.js @@ -1,6 +1,4 @@ -'use strict' - -const { createServiceFamily } = require('./nuget-v3-service-family') +import { createServiceFamily } from './nuget-v3-service-family.js' const { NugetVersionService: Version, NugetDownloadService: Downloads } = createServiceFamily({ @@ -39,4 +37,4 @@ class NugetDownloadService extends Downloads { ] } -module.exports = { NugetVersionService, NugetDownloadService } +export { NugetVersionService, NugetDownloadService } diff --git a/services/nuget/nuget.tester.js b/services/nuget/nuget.tester.js index 6bdbf3d663ec1..65878d6a11edd 100644 --- a/services/nuget/nuget.tester.js +++ b/services/nuget/nuget.tester.js @@ -1,21 +1,19 @@ -'use strict' - -const { ServiceTester } = require('../tester') -const { +import { ServiceTester } from '../tester.js' +import { isMetric, isVPlusDottedVersionNClauses, isVPlusDottedVersionNClausesWithOptionalSuffix, -} = require('../test-validators') -const { +} from '../test-validators.js' +import { queryIndex, nuGetV3VersionJsonWithDash, nuGetV3VersionJsonFirstCharZero, nuGetV3VersionJsonFirstCharNotZero, nuGetV3VersionJsonBuildMetadataWithDash, -} = require('../nuget-fixtures') -const { invalidJSON } = require('../response-fixtures') +} from '../nuget-fixtures.js' +import { invalidJSON } from '../response-fixtures.js' -const t = (module.exports = new ServiceTester({ id: 'nuget', title: 'NuGet' })) +export const t = new ServiceTester({ id: 'nuget', title: 'NuGet' }) // downloads diff --git a/services/nycrc/nycrc.service.js b/services/nycrc/nycrc.service.js index 016d45f93d2b2..1e4405e1b64e8 100644 --- a/services/nycrc/nycrc.service.js +++ b/services/nycrc/nycrc.service.js @@ -1,12 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { coveragePercentage } = require('../color-formatters') -const { - ConditionalGithubAuthV3Service, -} = require('../github/github-auth-service') -const { fetchJsonFromRepo } = require('../github/github-common-fetch') -const { InvalidParameter, InvalidResponse, NotFound } = require('..') +import Joi from 'joi' +import { coveragePercentage } from '../color-formatters.js' +import { ConditionalGithubAuthV3Service } from '../github/github-auth-service.js' +import { fetchJsonFromRepo } from '../github/github-common-fetch.js' +import { InvalidParameter, InvalidResponse, NotFound } from '../index.js' const nycrcSchema = Joi.object({ branches: Joi.number().min(0).max(100), @@ -35,7 +31,7 @@ const documentation = `

const validThresholds = ['branches', 'lines', 'functions'] -module.exports = class Nycrc extends ConditionalGithubAuthV3Service { +export default class Nycrc extends ConditionalGithubAuthV3Service { static category = 'coverage' static route = { diff --git a/services/nycrc/nycrc.tester.js b/services/nycrc/nycrc.tester.js index 21fed6954f46a..66894780a8df9 100644 --- a/services/nycrc/nycrc.tester.js +++ b/services/nycrc/nycrc.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isIntegerPercentage } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isIntegerPercentage } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('valid .nycrc') .get('/yargs/yargs.json?config=.nycrc') diff --git a/services/offset-earth/offset-earth-carbon-redirect.service.js b/services/offset-earth/offset-earth-carbon-redirect.service.js index 0ee89549f7428..ccbabfab208fc 100644 --- a/services/offset-earth/offset-earth-carbon-redirect.service.js +++ b/services/offset-earth/offset-earth-carbon-redirect.service.js @@ -1,8 +1,6 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = [ +export default [ // https://github.com/badges/shields/issues/5433 redirector({ name: 'OffsetEarthCarbonRedirect', diff --git a/services/offset-earth/offset-earth-carbon-redirect.tester.js b/services/offset-earth/offset-earth-carbon-redirect.tester.js index 426efe2eadf59..66e171d95215b 100644 --- a/services/offset-earth/offset-earth-carbon-redirect.tester.js +++ b/services/offset-earth/offset-earth-carbon-redirect.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'OffsetEarthCarbonRedirect', title: 'Offset Earth (Carbon Offset) Redirector', pathPrefix: '/offset-earth', -})) +}) t.create('Offset Earth carbon alias') .get('/carbon/ecologi.svg') diff --git a/services/offset-earth/offset-earth-trees-redirect.service.js b/services/offset-earth/offset-earth-trees-redirect.service.js index 7f2567e6eac52..bdc3b16c64d71 100644 --- a/services/offset-earth/offset-earth-trees-redirect.service.js +++ b/services/offset-earth/offset-earth-trees-redirect.service.js @@ -1,8 +1,6 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = [ +export default [ // https://github.com/badges/shields/issues/5433 redirector({ name: 'OffsetEarthTreesRedirect', diff --git a/services/offset-earth/offset-earth-trees-redirect.tester.js b/services/offset-earth/offset-earth-trees-redirect.tester.js index be8427992bff6..eea1a2098e2a4 100644 --- a/services/offset-earth/offset-earth-trees-redirect.tester.js +++ b/services/offset-earth/offset-earth-trees-redirect.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'OffsetEarthTreesRedirect', title: 'Offset Earth (Trees) Redirector', pathPrefix: '/offset-earth', -})) +}) t.create('Offset Earth trees alias') .get('/trees/ecologi.svg') diff --git a/services/open-vsx/open-vsx-base.js b/services/open-vsx/open-vsx-base.js index 1e0a9049a7f94..d17a1e66a8cf7 100644 --- a/services/open-vsx/open-vsx-base.js +++ b/services/open-vsx/open-vsx-base.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { optionalNonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { optionalNonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' const extensionQuerySchema = Joi.object({ error: Joi.string(), @@ -17,7 +15,7 @@ const extensionQuerySchema = Joi.object({ }), }).required() -module.exports = class OpenVSXBase extends BaseJsonService { +export default class OpenVSXBase extends BaseJsonService { static keywords = [ 'ovsx', 'open-vsx', diff --git a/services/open-vsx/open-vsx-downloads.service.js b/services/open-vsx/open-vsx-downloads.service.js index be6470ba1c3e9..b1d86ec4dccad 100644 --- a/services/open-vsx/open-vsx-downloads.service.js +++ b/services/open-vsx/open-vsx-downloads.service.js @@ -1,10 +1,8 @@ -'use strict' +import { metric } from '../text-formatters.js' +import { downloadCount } from '../color-formatters.js' +import OpenVSXBase from './open-vsx-base.js' -const { metric } = require('../text-formatters') -const { downloadCount } = require('../color-formatters') -const OpenVSXBase = require('./open-vsx-base') - -module.exports = class OpenVSXDownloads extends OpenVSXBase { +export default class OpenVSXDownloads extends OpenVSXBase { static category = 'downloads' static route = { diff --git a/services/open-vsx/open-vsx-downloads.tester.js b/services/open-vsx/open-vsx-downloads.tester.js index 7e6797386a11b..72da704337d0f 100644 --- a/services/open-vsx/open-vsx-downloads.tester.js +++ b/services/open-vsx/open-vsx-downloads.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { withRegex, isMetric } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { withRegex, isMetric } from '../test-validators.js' +export const t = await createServiceTester() const isVersionLabel = withRegex(/^downloads@(\d+\.\d+\.\d+)(\.\d+)?$/) diff --git a/services/open-vsx/open-vsx-rating.service.js b/services/open-vsx/open-vsx-rating.service.js index f90eefb54e266..ae5702c0f10a0 100644 --- a/services/open-vsx/open-vsx-rating.service.js +++ b/services/open-vsx/open-vsx-rating.service.js @@ -1,10 +1,8 @@ -'use strict' +import { starRating } from '../text-formatters.js' +import { floorCount } from '../color-formatters.js' +import OpenVSXBase from './open-vsx-base.js' -const { starRating } = require('../text-formatters') -const { floorCount } = require('../color-formatters') -const OpenVSXBase = require('./open-vsx-base') - -module.exports = class OpenVSXRating extends OpenVSXBase { +export default class OpenVSXRating extends OpenVSXBase { static category = 'rating' static route = { diff --git a/services/open-vsx/open-vsx-rating.spec.js b/services/open-vsx/open-vsx-rating.spec.js index 9d0bf7f0ca09a..8dc1ec0c286aa 100644 --- a/services/open-vsx/open-vsx-rating.spec.js +++ b/services/open-vsx/open-vsx-rating.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const OpenVSXRating = require('./open-vsx-rating.service') +import { test, given } from 'sazerac' +import OpenVSXRating from './open-vsx-rating.service.js' describe('OpenVSXRating', function () { test(OpenVSXRating.render, () => { diff --git a/services/open-vsx/open-vsx-rating.tester.js b/services/open-vsx/open-vsx-rating.tester.js index 71b269ebb702f..a007432b78bb4 100644 --- a/services/open-vsx/open-vsx-rating.tester.js +++ b/services/open-vsx/open-vsx-rating.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { withRegex, isStarRating } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { withRegex, isStarRating } from '../test-validators.js' +export const t = await createServiceTester() const isVscodeRating = withRegex(/[0-5]\.[0-9]{1}\/5?\s*\([0-9]*\)$/) diff --git a/services/open-vsx/open-vsx-release-date.service.js b/services/open-vsx/open-vsx-release-date.service.js index 4a4343f649eea..c201306c8eb6a 100644 --- a/services/open-vsx/open-vsx-release-date.service.js +++ b/services/open-vsx/open-vsx-release-date.service.js @@ -1,10 +1,8 @@ -'use strict' +import { age } from '../color-formatters.js' +import { formatDate } from '../text-formatters.js' +import OpenVSXBase from './open-vsx-base.js' -const { age } = require('../color-formatters') -const { formatDate } = require('../text-formatters') -const OpenVSXBase = require('./open-vsx-base') - -module.exports = class OpenVSXReleaseDate extends OpenVSXBase { +export default class OpenVSXReleaseDate extends OpenVSXBase { static category = 'activity' static route = { diff --git a/services/open-vsx/open-vsx-release-date.tester.js b/services/open-vsx/open-vsx-release-date.tester.js index 5c5e2d111c78d..2f3649d3ad60e 100644 --- a/services/open-vsx/open-vsx-release-date.tester.js +++ b/services/open-vsx/open-vsx-release-date.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isFormattedDate } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { isFormattedDate } from '../test-validators.js' +export const t = await createServiceTester() t.create('release date invalid extension') .get('/release-date/badges/shields.json') diff --git a/services/open-vsx/open-vsx-version.service.js b/services/open-vsx/open-vsx-version.service.js index eda1ad0f4b7da..45f342a94c4e0 100644 --- a/services/open-vsx/open-vsx-version.service.js +++ b/services/open-vsx/open-vsx-version.service.js @@ -1,9 +1,7 @@ -'use strict' +import { renderVersionBadge } from '../version.js' +import OpenVSXBase from './open-vsx-base.js' -const { renderVersionBadge } = require('../version') -const OpenVSXBase = require('./open-vsx-base') - -module.exports = class OpenVSXVersion extends OpenVSXBase { +export default class OpenVSXVersion extends OpenVSXBase { static category = 'version' static route = { diff --git a/services/open-vsx/open-vsx-version.tester.js b/services/open-vsx/open-vsx-version.tester.js index 3a0a5e3e73fdb..ee3bc1a18a161 100644 --- a/services/open-vsx/open-vsx-version.tester.js +++ b/services/open-vsx/open-vsx-version.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { withRegex } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { withRegex } from '../test-validators.js' +export const t = await createServiceTester() const isVersion = withRegex(/^v(\d+\.\d+\.\d+)(\.\d+)?$/) diff --git a/services/opencollective/opencollective-all.service.js b/services/opencollective/opencollective-all.service.js index 526eb29d9456e..dac3229f97791 100644 --- a/services/opencollective/opencollective-all.service.js +++ b/services/opencollective/opencollective-all.service.js @@ -1,8 +1,6 @@ -'use strict' +import OpencollectiveBase from './opencollective-base.js' -const OpencollectiveBase = require('./opencollective-base') - -module.exports = class OpencollectiveAll extends OpencollectiveBase { +export default class OpencollectiveAll extends OpencollectiveBase { static route = this.buildRoute('all') static examples = [ diff --git a/services/opencollective/opencollective-all.tester.js b/services/opencollective/opencollective-all.tester.js index 8ba66a063abce..d827313c509ad 100644 --- a/services/opencollective/opencollective-all.tester.js +++ b/services/opencollective/opencollective-all.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { nonNegativeInteger } = require('../validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { nonNegativeInteger } from '../validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('renders correctly') .get('/shields.json') diff --git a/services/opencollective/opencollective-backers.service.js b/services/opencollective/opencollective-backers.service.js index ebbc72a717dbe..3f2b7da4d7541 100644 --- a/services/opencollective/opencollective-backers.service.js +++ b/services/opencollective/opencollective-backers.service.js @@ -1,8 +1,6 @@ -'use strict' +import OpencollectiveBase from './opencollective-base.js' -const OpencollectiveBase = require('./opencollective-base') - -module.exports = class OpencollectiveBackers extends OpencollectiveBase { +export default class OpencollectiveBackers extends OpencollectiveBase { static route = this.buildRoute('backers') static examples = [ diff --git a/services/opencollective/opencollective-backers.tester.js b/services/opencollective/opencollective-backers.tester.js index e9d2c0601b910..7163f9a5da4ce 100644 --- a/services/opencollective/opencollective-backers.tester.js +++ b/services/opencollective/opencollective-backers.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { nonNegativeInteger } = require('../validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { nonNegativeInteger } from '../validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('renders correctly') .get('/shields.json') diff --git a/services/opencollective/opencollective-base.js b/services/opencollective/opencollective-base.js index 74ae8ec35e586..ec92f434e2808 100644 --- a/services/opencollective/opencollective-base.js +++ b/services/opencollective/opencollective-base.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' // https://developer.opencollective.com/#/api/collectives?id=get-info const collectiveDetailsSchema = Joi.object().keys({ @@ -21,7 +19,7 @@ function buildMembersArraySchema({ userType, tierRequired }) { return Joi.array().items(Joi.object().keys(keys)) } -module.exports = class OpencollectiveBase extends BaseJsonService { +export default class OpencollectiveBase extends BaseJsonService { static category = 'funding' static buildRoute(base, withTierId) { diff --git a/services/opencollective/opencollective-by-tier.service.js b/services/opencollective/opencollective-by-tier.service.js index c2712920d29a2..98acc383f509d 100644 --- a/services/opencollective/opencollective-by-tier.service.js +++ b/services/opencollective/opencollective-by-tier.service.js @@ -1,11 +1,9 @@ -'use strict' - -const OpencollectiveBase = require('./opencollective-base') +import OpencollectiveBase from './opencollective-base.js' const documentation = `

How to get the tierId

According to open collectives documentation, you can find the tierId by looking at the URL after clicking on a Tier Card on the collective page. (e.g. tierId for https://opencollective.com/shields/order/2988 is 2988)

` -module.exports = class OpencollectiveByTier extends OpencollectiveBase { +export default class OpencollectiveByTier extends OpencollectiveBase { static route = this.buildRoute('tier', true) static examples = [ diff --git a/services/opencollective/opencollective-by-tier.tester.js b/services/opencollective/opencollective-by-tier.tester.js index d2b53a8d4e03e..c2179fef409a2 100644 --- a/services/opencollective/opencollective-by-tier.tester.js +++ b/services/opencollective/opencollective-by-tier.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { nonNegativeInteger } = require('../validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { nonNegativeInteger } from '../validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('renders correctly') .get('/shields/2988.json') diff --git a/services/opencollective/opencollective-sponsors.service.js b/services/opencollective/opencollective-sponsors.service.js index 6dface34aa369..0f41df6f03657 100644 --- a/services/opencollective/opencollective-sponsors.service.js +++ b/services/opencollective/opencollective-sponsors.service.js @@ -1,8 +1,6 @@ -'use strict' +import OpencollectiveBase from './opencollective-base.js' -const OpencollectiveBase = require('./opencollective-base') - -module.exports = class OpencollectiveSponsors extends OpencollectiveBase { +export default class OpencollectiveSponsors extends OpencollectiveBase { static route = this.buildRoute('sponsors') static examples = [ diff --git a/services/opencollective/opencollective-sponsors.tester.js b/services/opencollective/opencollective-sponsors.tester.js index 8784501370aad..300af584c42ce 100644 --- a/services/opencollective/opencollective-sponsors.tester.js +++ b/services/opencollective/opencollective-sponsors.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { nonNegativeInteger } = require('../validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { nonNegativeInteger } from '../validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('renders correctly') .get('/shields.json') diff --git a/services/opm/opm-version.service.js b/services/opm/opm-version.service.js index 5d84009ce9697..41260c85a3d12 100644 --- a/services/opm/opm-version.service.js +++ b/services/opm/opm-version.service.js @@ -1,9 +1,7 @@ -'use strict' +import { renderVersionBadge } from '../version.js' +import { BaseService, NotFound, InvalidResponse } from '../index.js' -const { renderVersionBadge } = require('../version') -const { BaseService, NotFound, InvalidResponse } = require('..') - -module.exports = class OpmVersion extends BaseService { +export default class OpmVersion extends BaseService { static category = 'version' static route = { diff --git a/services/opm/opm-version.tester.js b/services/opm/opm-version.tester.js index b6ae397047d20..c0e187cf3491a 100644 --- a/services/opm/opm-version.tester.js +++ b/services/opm/opm-version.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isValidVersion = Joi.string() .regex(/^v[\d+.]+$/) diff --git a/services/ore/ore-base.js b/services/ore/ore-base.js index 0158c4d864cdd..670d92af48e51 100644 --- a/services/ore/ore-base.js +++ b/services/ore/ore-base.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService, InvalidResponse } = require('..') +import Joi from 'joi' +import { BaseJsonService, InvalidResponse } from '../index.js' const sessionSchema = Joi.object({ session: Joi.string().required(), @@ -85,4 +83,4 @@ class BaseOreService extends BaseJsonService { BaseOreService.sessionToken = null -module.exports = { keywords, documentation, BaseOreService } +export { keywords, documentation, BaseOreService } diff --git a/services/ore/ore-category.service.js b/services/ore/ore-category.service.js index 690dc5397b70f..ab0e067ce0a6e 100644 --- a/services/ore/ore-category.service.js +++ b/services/ore/ore-category.service.js @@ -1,8 +1,6 @@ -'use strict' +import { BaseOreService, documentation, keywords } from './ore-base.js' -const { BaseOreService, documentation, keywords } = require('./ore-base') - -module.exports = class OreCategory extends BaseOreService { +export default class OreCategory extends BaseOreService { static category = 'other' static route = { diff --git a/services/ore/ore-category.spec.js b/services/ore/ore-category.spec.js index b0572b192ab07..793d38ea346f7 100644 --- a/services/ore/ore-category.spec.js +++ b/services/ore/ore-category.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, forCases, given } = require('sazerac') -const OreCategory = require('./ore-category.service') +import { test, forCases, given } from 'sazerac' +import OreCategory from './ore-category.service.js' describe('OreCategory', function () { test(OreCategory.prototype.transform, () => { diff --git a/services/ore/ore-category.tester.js b/services/ore/ore-category.tester.js index 7ff6e39b8a643..efb62c1324b73 100644 --- a/services/ore/ore-category.tester.js +++ b/services/ore/ore-category.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() // Taken from https://ore.spongepowered.org/api#/Projects/showProject const CATEGORY_ENUM = [ diff --git a/services/ore/ore-downloads.service.js b/services/ore/ore-downloads.service.js index 6817344c33232..dd44194804d32 100644 --- a/services/ore/ore-downloads.service.js +++ b/services/ore/ore-downloads.service.js @@ -1,10 +1,8 @@ -'use strict' +import { metric } from '../text-formatters.js' +import { downloadCount } from '../color-formatters.js' +import { BaseOreService, documentation, keywords } from './ore-base.js' -const { metric } = require('../text-formatters') -const { downloadCount } = require('../color-formatters') -const { BaseOreService, documentation, keywords } = require('./ore-base') - -module.exports = class OreDownloads extends BaseOreService { +export default class OreDownloads extends BaseOreService { static category = 'downloads' static route = { diff --git a/services/ore/ore-downloads.tester.js b/services/ore/ore-downloads.tester.js index bbe43909138e8..dd2ba54bcfe95 100644 --- a/services/ore/ore-downloads.tester.js +++ b/services/ore/ore-downloads.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Nucleus (pluginId nucleus)').get('/nucleus.json').expectBadge({ label: 'downloads', diff --git a/services/ore/ore-license.service.js b/services/ore/ore-license.service.js index 397558ca71831..362c226aa95d8 100644 --- a/services/ore/ore-license.service.js +++ b/services/ore/ore-license.service.js @@ -1,9 +1,7 @@ -'use strict' +import { renderLicenseBadge } from '../licenses.js' +import { BaseOreService, documentation, keywords } from './ore-base.js' -const { renderLicenseBadge } = require('../licenses') -const { BaseOreService, documentation, keywords } = require('./ore-base') - -module.exports = class OreLicense extends BaseOreService { +export default class OreLicense extends BaseOreService { static category = 'license' static route = { diff --git a/services/ore/ore-license.spec.js b/services/ore/ore-license.spec.js index 166e1c34c2e97..5e5e922068d75 100644 --- a/services/ore/ore-license.spec.js +++ b/services/ore/ore-license.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const OreLicense = require('./ore-license.service') +import { test, given } from 'sazerac' +import OreLicense from './ore-license.service.js' describe('OreLicense', function () { test(OreLicense.prototype.transform, () => { diff --git a/services/ore/ore-license.tester.js b/services/ore/ore-license.tester.js index 26617eef67543..dd2c441d594bf 100644 --- a/services/ore/ore-license.tester.js +++ b/services/ore/ore-license.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Nucleus (pluginId nucleus)').get('/nucleus.json').expectBadge({ label: 'license', diff --git a/services/ore/ore-sponge-versions.service.js b/services/ore/ore-sponge-versions.service.js index 12b0d2f194b1f..e7689bdc1842b 100644 --- a/services/ore/ore-sponge-versions.service.js +++ b/services/ore/ore-sponge-versions.service.js @@ -1,8 +1,6 @@ -'use strict' +import { BaseOreService, documentation, keywords } from './ore-base.js' -const { BaseOreService, documentation, keywords } = require('./ore-base') - -module.exports = class OreSpongeVersions extends BaseOreService { +export default class OreSpongeVersions extends BaseOreService { static category = 'platform-support' static route = { diff --git a/services/ore/ore-sponge-versions.spec.js b/services/ore/ore-sponge-versions.spec.js index 21710194283e9..b6c7accd798ce 100644 --- a/services/ore/ore-sponge-versions.spec.js +++ b/services/ore/ore-sponge-versions.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, forCases, given } = require('sazerac') -const OreSpongeVersions = require('./ore-sponge-versions.service') +import { test, forCases, given } from 'sazerac' +import OreSpongeVersions from './ore-sponge-versions.service.js' const PROMOTED_VERSIONS = [ { diff --git a/services/ore/ore-sponge-versions.tester.js b/services/ore/ore-sponge-versions.tester.js index 7af8fb62a5dd8..0d1d6e0570e91 100644 --- a/services/ore/ore-sponge-versions.tester.js +++ b/services/ore/ore-sponge-versions.tester.js @@ -1,6 +1,6 @@ -'use strict' - -const Joi = require('joi').extend(joi => ({ +import joiModule from 'joi' +import { createServiceTester } from '../tester.js' +const Joi = joiModule.extend(joi => ({ base: joi.array(), coerce: (value, helpers) => ({ value: value.split ? value.split(' | ') : value, @@ -8,7 +8,7 @@ const Joi = require('joi').extend(joi => ({ type: 'versionArray', })) const isDottedVersionAtLeastOne = Joi.string().regex(/\d+(\.\d+)?(\.\d+)?$/) -const t = (module.exports = require('../tester').createServiceTester()) +export const t = await createServiceTester() t.create('Nucleus (pluginId nucleus)') .get('/nucleus.json') diff --git a/services/ore/ore-stars.service.js b/services/ore/ore-stars.service.js index d24b8df07e7c7..bdc226423b409 100644 --- a/services/ore/ore-stars.service.js +++ b/services/ore/ore-stars.service.js @@ -1,9 +1,7 @@ -'use strict' +import { metric } from '../text-formatters.js' +import { BaseOreService, documentation, keywords } from './ore-base.js' -const { metric } = require('../text-formatters') -const { BaseOreService, documentation, keywords } = require('./ore-base') - -module.exports = class OreStars extends BaseOreService { +export default class OreStars extends BaseOreService { static category = 'rating' static route = { diff --git a/services/ore/ore-stars.tester.js b/services/ore/ore-stars.tester.js index eb01ba380bd6b..c80e67d43d57b 100644 --- a/services/ore/ore-stars.tester.js +++ b/services/ore/ore-stars.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Nucleus (pluginId nucleus)').get('/nucleus.json').expectBadge({ label: 'stars', diff --git a/services/ore/ore-version.service.js b/services/ore/ore-version.service.js index 5f85de05e1a20..cb7fa47cc4d2f 100644 --- a/services/ore/ore-version.service.js +++ b/services/ore/ore-version.service.js @@ -1,9 +1,7 @@ -'use strict' +import { renderVersionBadge } from '../version.js' +import { BaseOreService, documentation, keywords } from './ore-base.js' -const { renderVersionBadge } = require('../version') -const { BaseOreService, documentation, keywords } = require('./ore-base') - -module.exports = class OreVersion extends BaseOreService { +export default class OreVersion extends BaseOreService { static category = 'version' static route = { diff --git a/services/ore/ore-version.spec.js b/services/ore/ore-version.spec.js index 4b2cb6656eacf..0d50f35acecd5 100644 --- a/services/ore/ore-version.spec.js +++ b/services/ore/ore-version.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const OreVersion = require('./ore-version.service') +import { test, given } from 'sazerac' +import OreVersion from './ore-version.service.js' describe('OreVersion', function () { test(OreVersion.prototype.transform, () => { diff --git a/services/ore/ore-version.tester.js b/services/ore/ore-version.tester.js index a1aa7f8cfe06d..5f3b3ba491021 100644 --- a/services/ore/ore-version.tester.js +++ b/services/ore/ore-version.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isVPlusDottedVersionAtLeastOne } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isVPlusDottedVersionAtLeastOne } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Nucleus (pluginId nucleus)').get('/nucleus.json').expectBadge({ label: 'version', diff --git a/services/osslifecycle/osslifecycle.service.js b/services/osslifecycle/osslifecycle.service.js index 78f110753bf9b..114e0e09d75df 100644 --- a/services/osslifecycle/osslifecycle.service.js +++ b/services/osslifecycle/osslifecycle.service.js @@ -1,6 +1,4 @@ -'use strict' - -const { BaseService, InvalidResponse } = require('..') +import { BaseService, InvalidResponse } from '../index.js' const documentation = `

@@ -13,7 +11,7 @@ const documentation = `

` -module.exports = class OssTracker extends BaseService { +export default class OssTracker extends BaseService { static category = 'other' static route = { diff --git a/services/osslifecycle/osslifecycle.tester.js b/services/osslifecycle/osslifecycle.tester.js index a5d40b61d3fa2..9003d2e778d73 100644 --- a/services/osslifecycle/osslifecycle.tester.js +++ b/services/osslifecycle/osslifecycle.tester.js @@ -1,11 +1,9 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'osslifecycle', title: 'OSS Lifecycle', -})) +}) t.create('osslifecycle active status').get('/netflix/sureal.json').expectBadge({ label: 'oss lifecycle', diff --git a/services/package-json-helpers.js b/services/package-json-helpers.js index c41d3ca3fa1fa..242243ad07dd3 100644 --- a/services/package-json-helpers.js +++ b/services/package-json-helpers.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { InvalidParameter } = require('.') +import Joi from 'joi' +import { InvalidParameter } from './index.js' const isDependencyMap = Joi.object() .pattern( @@ -45,8 +43,4 @@ function getDependencyVersion({ return { range } } -module.exports = { - isDependencyMap, - isPackageJsonWithDependencies, - getDependencyVersion, -} +export { isDependencyMap, isPackageJsonWithDependencies, getDependencyVersion } diff --git a/services/package-json-helpers.spec.js b/services/package-json-helpers.spec.js index 7d6437b0e0185..4cdd60741b4a4 100644 --- a/services/package-json-helpers.spec.js +++ b/services/package-json-helpers.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const { getDependencyVersion } = require('./package-json-helpers') +import { test, given } from 'sazerac' +import { getDependencyVersion } from './package-json-helpers.js' describe('Contributor count helpers', function () { test(getDependencyVersion, () => { diff --git a/services/packagecontrol/packagecontrol.service.js b/services/packagecontrol/packagecontrol.service.js index 595986e13af7e..8189054d8b7fa 100644 --- a/services/packagecontrol/packagecontrol.service.js +++ b/services/packagecontrol/packagecontrol.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { downloadCount } = require('../color-formatters') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { downloadCount } from '../color-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' const keywords = ['sublime', 'sublimetext', 'packagecontrol'] @@ -116,4 +114,4 @@ function DownloadsForInterval(interval) { } } -module.exports = ['day', 'week', 'month', 'total'].map(DownloadsForInterval) +export default ['day', 'week', 'month', 'total'].map(DownloadsForInterval) diff --git a/services/packagecontrol/packagecontrol.tester.js b/services/packagecontrol/packagecontrol.tester.js index 305811406aea1..db61cf1251414 100644 --- a/services/packagecontrol/packagecontrol.tester.js +++ b/services/packagecontrol/packagecontrol.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' +import { isMetric, isMetricOverTimePeriod } from '../test-validators.js' -const { ServiceTester } = require('../tester') -const { isMetric, isMetricOverTimePeriod } = require('../test-validators') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'packagecontrol', title: 'Package Control', -})) +}) t.create('monthly downloads').get('/dm/GitGutter.json').expectBadge({ label: 'downloads', diff --git a/services/packagist/packagist-base.js b/services/packagist/packagist-base.js index 39e645be688d6..083de17bdf102 100644 --- a/services/packagist/packagist-base.js +++ b/services/packagist/packagist-base.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' const packageSchema = Joi.object() .pattern( @@ -101,7 +99,7 @@ const cacheDocumentationFragment = `

` -module.exports = { +export { allVersionsSchema, keywords, BasePackagistService, diff --git a/services/packagist/packagist-downloads.service.js b/services/packagist/packagist-downloads.service.js index adf36593fb3a7..5d8f133b026ec 100644 --- a/services/packagist/packagist-downloads.service.js +++ b/services/packagist/packagist-downloads.service.js @@ -1,15 +1,13 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { downloadCount } = require('../color-formatters') -const { optionalUrl } = require('../validators') -const { +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { downloadCount } from '../color-formatters.js' +import { optionalUrl } from '../validators.js' +import { keywords, BasePackagistService, customServerDocumentationFragment, cacheDocumentationFragment, -} = require('./packagist-base') +} from './packagist-base.js' const periodMap = { dm: { @@ -40,7 +38,7 @@ const queryParamSchema = Joi.object({ server: optionalUrl, }).required() -module.exports = class PackagistDownloads extends BasePackagistService { +export default class PackagistDownloads extends BasePackagistService { static category = 'downloads' static route = { diff --git a/services/packagist/packagist-downloads.tester.js b/services/packagist/packagist-downloads.tester.js index cd23f75723241..ee76c04e3f3cb 100644 --- a/services/packagist/packagist-downloads.tester.js +++ b/services/packagist/packagist-downloads.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric, isMetricOverTimePeriod } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric, isMetricOverTimePeriod } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('daily downloads (valid, no package version specified)') .get('/dd/doctrine/orm.json') diff --git a/services/packagist/packagist-license.service.js b/services/packagist/packagist-license.service.js index c7c99533dbe19..241d9a291908e 100644 --- a/services/packagist/packagist-license.service.js +++ b/services/packagist/packagist-license.service.js @@ -1,14 +1,12 @@ -'use strict' - -const Joi = require('joi') -const { renderLicenseBadge } = require('../licenses') -const { optionalUrl } = require('../validators') -const { NotFound } = require('..') -const { +import Joi from 'joi' +import { renderLicenseBadge } from '../licenses.js' +import { optionalUrl } from '../validators.js' +import { NotFound } from '../index.js' +import { keywords, BasePackagistService, customServerDocumentationFragment, -} = require('./packagist-base') +} from './packagist-base.js' const packageSchema = Joi.object() .pattern( @@ -28,7 +26,7 @@ const queryParamSchema = Joi.object({ server: optionalUrl, }).required() -module.exports = class PackagistLicense extends BasePackagistService { +export default class PackagistLicense extends BasePackagistService { static category = 'license' static route = { diff --git a/services/packagist/packagist-license.spec.js b/services/packagist/packagist-license.spec.js index a9241e10ae78c..8c3aaf1d79ea2 100644 --- a/services/packagist/packagist-license.spec.js +++ b/services/packagist/packagist-license.spec.js @@ -1,8 +1,6 @@ -'use strict' - -const { expect } = require('chai') -const { NotFound } = require('..') -const PackagistLicense = require('./packagist-license.service') +import { expect } from 'chai' +import { NotFound } from '../index.js' +import PackagistLicense from './packagist-license.service.js' describe('PackagistLicense', function () { it('should throw NotFound when default branch is missing', function () { diff --git a/services/packagist/packagist-license.tester.js b/services/packagist/packagist-license.tester.js index 983da773e4f9b..a9f3ef370bcb2 100644 --- a/services/packagist/packagist-license.tester.js +++ b/services/packagist/packagist-license.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('license (valid)') .get('/symfony/symfony.json') diff --git a/services/packagist/packagist-php-version.service.js b/services/packagist/packagist-php-version.service.js index 2514c2ba460dd..72acd7ad98fce 100644 --- a/services/packagist/packagist-php-version.service.js +++ b/services/packagist/packagist-php-version.service.js @@ -1,19 +1,17 @@ -'use strict' - -const Joi = require('joi') -const { optionalUrl } = require('../validators') -const { NotFound } = require('..') -const { +import Joi from 'joi' +import { optionalUrl } from '../validators.js' +import { NotFound } from '../index.js' +import { allVersionsSchema, BasePackagistService, customServerDocumentationFragment, -} = require('./packagist-base') +} from './packagist-base.js' const queryParamSchema = Joi.object({ server: optionalUrl, }).required() -module.exports = class PackagistPhpVersion extends BasePackagistService { +export default class PackagistPhpVersion extends BasePackagistService { static category = 'platform-support' static route = { diff --git a/services/packagist/packagist-php-version.spec.js b/services/packagist/packagist-php-version.spec.js index 7af1b66996b34..1eee30010e1aa 100644 --- a/services/packagist/packagist-php-version.spec.js +++ b/services/packagist/packagist-php-version.spec.js @@ -1,8 +1,6 @@ -'use strict' - -const { expect } = require('chai') -const { NotFound } = require('..') -const PackagistPhpVersion = require('./packagist-php-version.service') +import { expect } from 'chai' +import { NotFound } from '../index.js' +import PackagistPhpVersion from './packagist-php-version.service.js' describe('PackagistPhpVersion', function () { const json = { diff --git a/services/packagist/packagist-php-version.tester.js b/services/packagist/packagist-php-version.tester.js index 0aa385908892e..c1c6015c3920a 100644 --- a/services/packagist/packagist-php-version.tester.js +++ b/services/packagist/packagist-php-version.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isComposerVersion } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isComposerVersion } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('gets the package version of symfony') .get('/symfony/symfony.json') diff --git a/services/packagist/packagist-stars.service.js b/services/packagist/packagist-stars.service.js index 847ee6da2abf6..2b3820ffbcddc 100644 --- a/services/packagist/packagist-stars.service.js +++ b/services/packagist/packagist-stars.service.js @@ -1,15 +1,12 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { optionalUrl } = require('../validators') -const { +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger, optionalUrl } from '../validators.js' +import { keywords, BasePackagistService, customServerDocumentationFragment, cacheDocumentationFragment, -} = require('./packagist-base') +} from './packagist-base.js' const schema = Joi.object({ package: Joi.object({ @@ -21,7 +18,7 @@ const queryParamSchema = Joi.object({ server: optionalUrl, }).required() -module.exports = class PackagistStars extends BasePackagistService { +export default class PackagistStars extends BasePackagistService { static category = 'rating' static route = { diff --git a/services/packagist/packagist-stars.tester.js b/services/packagist/packagist-stars.tester.js index e8b40b69af4f4..00b1e0cca071b 100644 --- a/services/packagist/packagist-stars.tester.js +++ b/services/packagist/packagist-stars.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Stars (valid package)').get('/guzzlehttp/guzzle.json').expectBadge({ label: 'stars', diff --git a/services/packagist/packagist-version.service.js b/services/packagist/packagist-version.service.js index 900ed33505b48..b20c699206696 100644 --- a/services/packagist/packagist-version.service.js +++ b/services/packagist/packagist-version.service.js @@ -1,16 +1,14 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { compare, isStable, latest } = require('../php-version') -const { optionalUrl } = require('../validators') -const { NotFound, redirector } = require('..') -const { +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { compare, isStable, latest } from '../php-version.js' +import { optionalUrl } from '../validators.js' +import { NotFound, redirector } from '../index.js' +import { allVersionsSchema, keywords, BasePackagistService, customServerDocumentationFragment, -} = require('./packagist-base') +} from './packagist-base.js' const packageSchema = Joi.object() .pattern( @@ -148,4 +146,4 @@ const PackagistVersionRedirector = redirector({ dateAdded: new Date('2019-12-15'), }) -module.exports = { PackagistVersion, PackagistVersionRedirector } +export { PackagistVersion, PackagistVersionRedirector } diff --git a/services/packagist/packagist-version.tester.js b/services/packagist/packagist-version.tester.js index b01e1b7935679..ba2c2797448f2 100644 --- a/services/packagist/packagist-version.tester.js +++ b/services/packagist/packagist-version.tester.js @@ -1,15 +1,11 @@ -'use strict' - -const Joi = require('joi') -const { - isVPlusDottedVersionNClausesWithOptionalSuffix, -} = require('../test-validators') -const { ServiceTester } = require('../tester') -const t = (module.exports = new ServiceTester({ +import Joi from 'joi' +import { isVPlusDottedVersionNClausesWithOptionalSuffix } from '../test-validators.js' +import { ServiceTester } from '../tester.js' +export const t = new ServiceTester({ id: 'packagist', title: 'Packagist Version', pathPrefix: '/packagist', -})) +}) /* validator for a packagist version number diff --git a/services/php-eye/php-eye-hhvm.service.js b/services/php-eye/php-eye-hhvm.service.js index f157de1eeb853..1cb7888a4172a 100644 --- a/services/php-eye/php-eye-hhvm.service.js +++ b/services/php-eye/php-eye-hhvm.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = [ +export default [ deprecatedService({ category: 'platform-support', label: 'hhvm', diff --git a/services/php-eye/php-eye-hhvm.tester.js b/services/php-eye/php-eye-hhvm.tester.js index ad4e58852df34..c1c7408a945b0 100644 --- a/services/php-eye/php-eye-hhvm.tester.js +++ b/services/php-eye/php-eye-hhvm.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'hhvm', title: 'hhvm', pathPrefix: '/hhvm', -})) +}) t.create('no longer available (previously default branch)') .get('/symfony/symfony.json') diff --git a/services/php-eye/php-eye-php-version.service.js b/services/php-eye/php-eye-php-version.service.js index e7f13fb857ba1..42e15f8c864a3 100644 --- a/services/php-eye/php-eye-php-version.service.js +++ b/services/php-eye/php-eye-php-version.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = [ +export default [ deprecatedService({ category: 'platform-support', label: 'php tested', diff --git a/services/php-eye/php-eye-php-version.tester.js b/services/php-eye/php-eye-php-version.tester.js index ddf754cf481a2..7806d60f67e0c 100644 --- a/services/php-eye/php-eye-php-version.tester.js +++ b/services/php-eye/php-eye-php-version.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'php-eye', title: 'php-eye', pathPrefix: '/php-eye', -})) +}) t.create('no longer available (previously default branch)') .get('/symfony/symfony.json') diff --git a/services/php-version.js b/services/php-version.js index 17ede45a6f46d..091bca3c8b243 100644 --- a/services/php-version.js +++ b/services/php-version.js @@ -3,13 +3,11 @@ * using the algorithm followed by Composer (see * https://getcomposer.org/doc/04-schema.md#version). */ -'use strict' - -const { promisify } = require('util') -const request = require('request') -const { regularUpdate } = require('../core/legacy/regular-update') -const { listCompare } = require('./version') -const { omitv } = require('./text-formatters') +import { promisify } from 'util' +import request from 'request' +import { regularUpdate } from '../core/legacy/regular-update.js' +import { listCompare } from './version.js' +import { omitv } from './text-formatters.js' // Return a negative value if v1 < v2, // zero if v1 = v2, a positive value otherwise. @@ -240,7 +238,7 @@ async function getPhpReleases(githubApiProvider) { }) } -module.exports = { +export { compare, latest, isStable, diff --git a/services/php-version.spec.js b/services/php-version.spec.js index 607f302ef7eb2..2ccd237dd3b25 100644 --- a/services/php-version.spec.js +++ b/services/php-version.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const { compare, minorVersion, versionReduction } = require('./php-version') +import { test, given } from 'sazerac' +import { compare, minorVersion, versionReduction } from './php-version.js' const phpReleases = [ '5.0', diff --git a/services/pingpong/pingpong-status.service.js b/services/pingpong/pingpong-status.service.js index bdebc42a024de..7297f52a2e551 100644 --- a/services/pingpong/pingpong-status.service.js +++ b/services/pingpong/pingpong-status.service.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService, InvalidParameter, InvalidResponse } = require('..') +import Joi from 'joi' +import { BaseJsonService, InvalidParameter, InvalidResponse } from '../index.js' const schema = Joi.object({ status: Joi.string().required(), @@ -14,7 +12,7 @@ const pingpongDocumentation = `

` -module.exports = class PingPongStatus extends BaseJsonService { +export default class PingPongStatus extends BaseJsonService { static category = 'monitoring' static route = { base: 'pingpong/status', pattern: ':apiKey' } diff --git a/services/pingpong/pingpong-status.tester.js b/services/pingpong/pingpong-status.tester.js index 9f151cc90967e..021e6c1897854 100644 --- a/services/pingpong/pingpong-status.tester.js +++ b/services/pingpong/pingpong-status.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isCorrectStatus = Joi.string().valid( 'up', diff --git a/services/pingpong/pingpong-uptime.service.js b/services/pingpong/pingpong-uptime.service.js index 29878478269e9..eb58d7e456b43 100644 --- a/services/pingpong/pingpong-uptime.service.js +++ b/services/pingpong/pingpong-uptime.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { coveragePercentage } = require('../color-formatters') -const { BaseJsonService, InvalidParameter } = require('..') +import Joi from 'joi' +import { coveragePercentage } from '../color-formatters.js' +import { BaseJsonService, InvalidParameter } from '../index.js' const schema = Joi.object({ uptime: Joi.number().min(0).max(100).required(), @@ -15,7 +13,7 @@ const pingpongDocumentation = `

` -module.exports = class PingPongUptime extends BaseJsonService { +export default class PingPongUptime extends BaseJsonService { static category = 'monitoring' static route = { base: 'pingpong/uptime', pattern: ':apiKey' } diff --git a/services/pingpong/pingpong-uptime.tester.js b/services/pingpong/pingpong-uptime.tester.js index ea72c86ba3b55..0128983289ca4 100644 --- a/services/pingpong/pingpong-uptime.tester.js +++ b/services/pingpong/pingpong-uptime.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isPercentage } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isPercentage } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('PingPong: Uptime (valid)') .get('/sp_eb705b7c189f42e3b574dc790291c33f.json') diff --git a/services/pipenv-helpers.js b/services/pipenv-helpers.js index 4f31f2eaedef7..f5663f6b363e8 100644 --- a/services/pipenv-helpers.js +++ b/services/pipenv-helpers.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { InvalidParameter } = require('.') +import Joi from 'joi' +import { InvalidParameter } from './index.js' const isDependency = Joi.alternatives( Joi.object({ @@ -52,7 +50,4 @@ function getDependencyVersion({ } } -module.exports = { - isLockfile, - getDependencyVersion, -} +export { isLockfile, getDependencyVersion } diff --git a/services/pkgreview/package-rating.service.js b/services/pkgreview/package-rating.service.js index fc7045cbc6a1d..25dbe0cba4bd5 100644 --- a/services/pkgreview/package-rating.service.js +++ b/services/pkgreview/package-rating.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { starRating, metric } = require('../text-formatters') -const { colorScale } = require('../color-formatters') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { starRating, metric } from '../text-formatters.js' +import { colorScale } from '../color-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' const pkgReviewColor = colorScale([2, 3, 4]) @@ -15,7 +13,7 @@ const schema = Joi.object({ // Repository for this service is: https://github.com/iqubex-technologies/pkgreview.dev // Internally the service leverages the npms.io API (https://api.npms.io/v2) -module.exports = class PkgreviewRating extends BaseJsonService { +export default class PkgreviewRating extends BaseJsonService { static category = 'rating' static route = { diff --git a/services/pkgreview/package-rating.tester.js b/services/pkgreview/package-rating.tester.js index a9859265224aa..ad4b483e56d7c 100644 --- a/services/pkgreview/package-rating.tester.js +++ b/services/pkgreview/package-rating.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { withRegex, isStarRating } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { withRegex, isStarRating } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isRatingWithReviews = withRegex( /^(([0-4](.?([0-9]))?)|5)\/5?\s*\([0-9]*\)$/ diff --git a/services/poeditor/poeditor.service.js b/services/poeditor/poeditor.service.js index 3dd84aea53465..806d9bfcfca28 100644 --- a/services/poeditor/poeditor.service.js +++ b/services/poeditor/poeditor.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { coveragePercentage } = require('../color-formatters') -const { BaseJsonService, InvalidResponse } = require('..') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { coveragePercentage } from '../color-formatters.js' +import { BaseJsonService, InvalidResponse } from '../index.js' const documentation = `

@@ -36,7 +34,7 @@ const queryParamSchema = Joi.object({ token: Joi.string().required(), }).required() -module.exports = class POEditor extends BaseJsonService { +export default class POEditor extends BaseJsonService { static category = 'other' static route = { diff --git a/services/poeditor/poeditor.tester.js b/services/poeditor/poeditor.tester.js index 78db3b1657369..691f4d816fa4c 100644 --- a/services/poeditor/poeditor.tester.js +++ b/services/poeditor/poeditor.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isIntegerPercentage } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isIntegerPercentage } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('gets POEditor progress online') .get('/progress/323337/de.json?token=7a666b44c0985d16a7b59748f488275c') diff --git a/services/powershellgallery/powershellgallery.service.js b/services/powershellgallery/powershellgallery.service.js index 60f329ea95521..c5e66108deb60 100644 --- a/services/powershellgallery/powershellgallery.service.js +++ b/services/powershellgallery/powershellgallery.service.js @@ -1,10 +1,5 @@ -'use strict' - -const { - fetch, - createServiceFamily, -} = require('../nuget/nuget-v2-service-family') -const { BaseXmlService } = require('..') +import { fetch, createServiceFamily } from '../nuget/nuget-v2-service-family.js' +import { BaseXmlService } from '../index.js' const WINDOWS_TAG_NAME = 'windows' const MACOS_TAG_NAME = 'macos' @@ -97,7 +92,7 @@ class PowershellGalleryPlatformSupport extends BaseXmlService { } } -module.exports = { +export { PowershellGalleryVersion, PowershellGalleryVersionRedirector, PowershellGalleryDownloads, diff --git a/services/powershellgallery/powershellgallery.tester.js b/services/powershellgallery/powershellgallery.tester.js index d9999b919a23a..14380ca4870de 100644 --- a/services/powershellgallery/powershellgallery.tester.js +++ b/services/powershellgallery/powershellgallery.tester.js @@ -1,21 +1,18 @@ -'use strict' - -const Joi = require('joi') -const { ServiceTester } = require('../tester') -const { +import Joi from 'joi' +import { ServiceTester } from '../tester.js' +import { isMetric, isVPlusDottedVersionNClauses, isVPlusDottedVersionNClausesWithOptionalSuffix, -} = require('../test-validators') +} from '../test-validators.js' const isPlatform = Joi.string().regex( /^(windows|linux|macos)( \| (windows|linux|macos))*$/ ) -const t = new ServiceTester({ +export const t = new ServiceTester({ id: 'powershellgallery', title: 'PowerShell Gallery', }) -module.exports = t t.create('total downloads (valid)').get('/dt/ACMESharp.json').expectBadge({ label: 'downloads', diff --git a/services/pub/pub.service.js b/services/pub/pub.service.js index ccc12017b78c5..19822dc4d5cbd 100644 --- a/services/pub/pub.service.js +++ b/services/pub/pub.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { latest, renderVersionBadge } = require('../version') -const { BaseJsonService, redirector } = require('..') +import Joi from 'joi' +import { latest, renderVersionBadge } from '../version.js' +import { BaseJsonService, redirector } from '../index.js' const schema = Joi.object({ versions: Joi.array().items(Joi.string()).required(), @@ -68,4 +66,4 @@ const PubVersionRedirector = redirector({ dateAdded: new Date('2019-12-15'), }) -module.exports = { PubVersion, PubVersionRedirector } +export { PubVersion, PubVersionRedirector } diff --git a/services/pub/pub.tester.js b/services/pub/pub.tester.js index 613447fff620d..63ff3b6fee3aa 100644 --- a/services/pub/pub.tester.js +++ b/services/pub/pub.tester.js @@ -1,12 +1,10 @@ -'use strict' - -const { isVPlusTripleDottedVersion } = require('../test-validators') -const { ServiceTester } = require('../tester') -const t = (module.exports = new ServiceTester({ +import { isVPlusTripleDottedVersion } from '../test-validators.js' +import { ServiceTester } from '../tester.js' +export const t = new ServiceTester({ id: 'PubVersion', title: 'Pub Version', pathPrefix: '/pub', -})) +}) t.create('package version').get('/v/box2d.json').expectBadge({ label: 'pub', diff --git a/services/puppetforge/puppetforge-base.js b/services/puppetforge/puppetforge-base.js index 4e209ca91821f..8adb266bec92a 100644 --- a/services/puppetforge/puppetforge-base.js +++ b/services/puppetforge/puppetforge-base.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger, semver } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { nonNegativeInteger, semver } from '../validators.js' +import { BaseJsonService } from '../index.js' const usersSchema = Joi.object({ module_count: nonNegativeInteger, @@ -44,7 +42,4 @@ class BasePuppetForgeModulesService extends BaseJsonService { } } -module.exports = { - BasePuppetForgeModulesService, - BasePuppetForgeUsersService, -} +export { BasePuppetForgeModulesService, BasePuppetForgeUsersService } diff --git a/services/puppetforge/puppetforge-module-downloads.service.js b/services/puppetforge/puppetforge-module-downloads.service.js index 84eddb3225d2b..61a9795ff70ca 100644 --- a/services/puppetforge/puppetforge-module-downloads.service.js +++ b/services/puppetforge/puppetforge-module-downloads.service.js @@ -1,12 +1,8 @@ -'use strict' +import { downloadCount } from '../color-formatters.js' +import { metric } from '../text-formatters.js' +import { BasePuppetForgeModulesService } from './puppetforge-base.js' -const { downloadCount } = require('../color-formatters') -const { metric } = require('../text-formatters') -const { BasePuppetForgeModulesService } = require('./puppetforge-base') - -module.exports = class PuppetforgeModuleDownloads extends ( - BasePuppetForgeModulesService -) { +export default class PuppetforgeModuleDownloads extends BasePuppetForgeModulesService { static category = 'downloads' static route = { diff --git a/services/puppetforge/puppetforge-module-downloads.tester.js b/services/puppetforge/puppetforge-module-downloads.tester.js index f7383969f3d12..ad5e9f10b07e5 100644 --- a/services/puppetforge/puppetforge-module-downloads.tester.js +++ b/services/puppetforge/puppetforge-module-downloads.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('module downloads').get('/camptocamp/openssl.json').expectBadge({ label: 'downloads', diff --git a/services/puppetforge/puppetforge-module-endorsement.service.js b/services/puppetforge/puppetforge-module-endorsement.service.js index 4390bff469dd0..2ebc258cb7a1d 100644 --- a/services/puppetforge/puppetforge-module-endorsement.service.js +++ b/services/puppetforge/puppetforge-module-endorsement.service.js @@ -1,11 +1,7 @@ -'use strict' +import { NotFound } from '../index.js' +import { BasePuppetForgeModulesService } from './puppetforge-base.js' -const { NotFound } = require('..') -const { BasePuppetForgeModulesService } = require('./puppetforge-base') - -module.exports = class PuppetforgeModuleEndorsement extends ( - BasePuppetForgeModulesService -) { +export default class PuppetforgeModuleEndorsement extends BasePuppetForgeModulesService { static category = 'rating' static route = { diff --git a/services/puppetforge/puppetforge-module-endorsement.tester.js b/services/puppetforge/puppetforge-module-endorsement.tester.js index 83c5e077585a4..2f03a591fbbfd 100644 --- a/services/puppetforge/puppetforge-module-endorsement.tester.js +++ b/services/puppetforge/puppetforge-module-endorsement.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { withRegex } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { withRegex } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('module endorsement') .get('/camptocamp/openssl.json') diff --git a/services/puppetforge/puppetforge-module-feedback.service.js b/services/puppetforge/puppetforge-module-feedback.service.js index ad2e845cacb9e..041d8b3e87dd0 100644 --- a/services/puppetforge/puppetforge-module-feedback.service.js +++ b/services/puppetforge/puppetforge-module-feedback.service.js @@ -1,14 +1,8 @@ -'use strict' +import { coveragePercentage as coveragePercentageColor } from '../color-formatters.js' +import { NotFound } from '../index.js' +import { BasePuppetForgeModulesService } from './puppetforge-base.js' -const { - coveragePercentage: coveragePercentageColor, -} = require('../color-formatters') -const { NotFound } = require('..') -const { BasePuppetForgeModulesService } = require('./puppetforge-base') - -module.exports = class PuppetforgeModuleFeedback extends ( - BasePuppetForgeModulesService -) { +export default class PuppetforgeModuleFeedback extends BasePuppetForgeModulesService { static category = 'rating' static route = { diff --git a/services/puppetforge/puppetforge-module-feedback.tester.js b/services/puppetforge/puppetforge-module-feedback.tester.js index 1178ab33de086..24128bd7e1d97 100644 --- a/services/puppetforge/puppetforge-module-feedback.tester.js +++ b/services/puppetforge/puppetforge-module-feedback.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isPercentage } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isPercentage } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('module feedback').get('/camptocamp/openssl.json').expectBadge({ label: 'score', diff --git a/services/puppetforge/puppetforge-module-pdk-version.service.js b/services/puppetforge/puppetforge-module-pdk-version.service.js index ced2ff067923f..69c8654214319 100644 --- a/services/puppetforge/puppetforge-module-pdk-version.service.js +++ b/services/puppetforge/puppetforge-module-pdk-version.service.js @@ -1,12 +1,8 @@ -'use strict' +import { renderVersionBadge } from '../version.js' +import { NotFound } from '../index.js' +import { BasePuppetForgeModulesService } from './puppetforge-base.js' -const { renderVersionBadge } = require('../version') -const { NotFound } = require('..') -const { BasePuppetForgeModulesService } = require('./puppetforge-base') - -module.exports = class PuppetforgeModulePdkVersion extends ( - BasePuppetForgeModulesService -) { +export default class PuppetforgeModulePdkVersion extends BasePuppetForgeModulesService { static category = 'platform-support' static route = { diff --git a/services/puppetforge/puppetforge-module-pdk-version.tester.js b/services/puppetforge/puppetforge-module-pdk-version.tester.js index d38efaeb00fa9..cbcd15d9b5c5e 100644 --- a/services/puppetforge/puppetforge-module-pdk-version.tester.js +++ b/services/puppetforge/puppetforge-module-pdk-version.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isSemver } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isSemver } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('PDK version').get('/tragiccode/azure_key_vault.json').expectBadge({ label: 'pdk version', diff --git a/services/puppetforge/puppetforge-module-version.service.js b/services/puppetforge/puppetforge-module-version.service.js index 148a800d8c66a..b3cb980f7e594 100644 --- a/services/puppetforge/puppetforge-module-version.service.js +++ b/services/puppetforge/puppetforge-module-version.service.js @@ -1,11 +1,7 @@ -'use strict' +import { renderVersionBadge } from '../version.js' +import { BasePuppetForgeModulesService } from './puppetforge-base.js' -const { renderVersionBadge } = require('../version') -const { BasePuppetForgeModulesService } = require('./puppetforge-base') - -module.exports = class PuppetforgeModuleVersion extends ( - BasePuppetForgeModulesService -) { +export default class PuppetforgeModuleVersion extends BasePuppetForgeModulesService { static category = 'version' static route = { diff --git a/services/puppetforge/puppetforge-module-version.tester.js b/services/puppetforge/puppetforge-module-version.tester.js index a06132f1c5513..79117a314e308 100644 --- a/services/puppetforge/puppetforge-module-version.tester.js +++ b/services/puppetforge/puppetforge-module-version.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isSemver } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isSemver } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('module version').get('/camptocamp/openssl.json').expectBadge({ label: 'puppetforge', diff --git a/services/puppetforge/puppetforge-user-module-count.service.js b/services/puppetforge/puppetforge-user-module-count.service.js index e45a739a8a225..1666b110197db 100644 --- a/services/puppetforge/puppetforge-user-module-count.service.js +++ b/services/puppetforge/puppetforge-user-module-count.service.js @@ -1,12 +1,8 @@ -'use strict' +import { metric } from '../text-formatters.js' +import { floorCount as floorCountColor } from '../color-formatters.js' +import { BasePuppetForgeUsersService } from './puppetforge-base.js' -const { metric } = require('../text-formatters') -const { floorCount: floorCountColor } = require('../color-formatters') -const { BasePuppetForgeUsersService } = require('./puppetforge-base') - -module.exports = class PuppetForgeModuleCountService extends ( - BasePuppetForgeUsersService -) { +export default class PuppetForgeModuleCountService extends BasePuppetForgeUsersService { static category = 'other' static route = { diff --git a/services/puppetforge/puppetforge-user-module-count.tester.js b/services/puppetforge/puppetforge-user-module-count.tester.js index 1a970d83abb66..2d999d1078416 100644 --- a/services/puppetforge/puppetforge-user-module-count.tester.js +++ b/services/puppetforge/puppetforge-user-module-count.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('modules by user').get('/camptocamp.json').expectBadge({ label: 'modules', diff --git a/services/puppetforge/puppetforge-user-release-count.service.js b/services/puppetforge/puppetforge-user-release-count.service.js index ee2afe4932792..d13703dc395f8 100644 --- a/services/puppetforge/puppetforge-user-release-count.service.js +++ b/services/puppetforge/puppetforge-user-release-count.service.js @@ -1,12 +1,8 @@ -'use strict' +import { metric } from '../text-formatters.js' +import { floorCount as floorCountColor } from '../color-formatters.js' +import { BasePuppetForgeUsersService } from './puppetforge-base.js' -const { metric } = require('../text-formatters') -const { floorCount: floorCountColor } = require('../color-formatters') -const { BasePuppetForgeUsersService } = require('./puppetforge-base') - -module.exports = class PuppetForgeReleaseCountService extends ( - BasePuppetForgeUsersService -) { +export default class PuppetForgeReleaseCountService extends BasePuppetForgeUsersService { static category = 'other' static route = { diff --git a/services/puppetforge/puppetforge-user-release-count.tester.js b/services/puppetforge/puppetforge-user-release-count.tester.js index 75ec3023d2b89..f8a8d60028c05 100644 --- a/services/puppetforge/puppetforge-user-release-count.tester.js +++ b/services/puppetforge/puppetforge-user-release-count.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('releases by user').get('/camptocamp.json').expectBadge({ label: 'releases', diff --git a/services/pypi/pypi-base.js b/services/pypi/pypi-base.js index 8ca4d87f77075..e19d6e23a510c 100644 --- a/services/pypi/pypi-base.js +++ b/services/pypi/pypi-base.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ info: Joi.object({ @@ -24,7 +22,7 @@ const schema = Joi.object({ .required(), }).required() -module.exports = class PypiBase extends BaseJsonService { +export default class PypiBase extends BaseJsonService { static buildRoute(base) { return { base, diff --git a/services/pypi/pypi-django-versions.service.js b/services/pypi/pypi-django-versions.service.js index ca6325ad94ae5..ffe0fbf1bf37f 100644 --- a/services/pypi/pypi-django-versions.service.js +++ b/services/pypi/pypi-django-versions.service.js @@ -1,9 +1,7 @@ -'use strict' +import PypiBase from './pypi-base.js' +import { sortDjangoVersions, parseClassifiers } from './pypi-helpers.js' -const PypiBase = require('./pypi-base') -const { sortDjangoVersions, parseClassifiers } = require('./pypi-helpers') - -module.exports = class PypiDjangoVersions extends PypiBase { +export default class PypiDjangoVersions extends PypiBase { static category = 'platform-support' static route = this.buildRoute('pypi/djversions') diff --git a/services/pypi/pypi-django-versions.tester.js b/services/pypi/pypi-django-versions.tester.js index 8dba69853c573..83fdca15ec086 100644 --- a/services/pypi/pypi-django-versions.tester.js +++ b/services/pypi/pypi-django-versions.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isPipeSeparatedDjangoVersions = Joi.string().regex( /^([1-9]\.[0-9]+(?: \| )?)+$/ diff --git a/services/pypi/pypi-downloads.service.js b/services/pypi/pypi-downloads.service.js index 900dcf614dd5f..21cc1133dd96a 100644 --- a/services/pypi/pypi-downloads.service.js +++ b/services/pypi/pypi-downloads.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { downloadCount } = require('../color-formatters') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { downloadCount } from '../color-formatters.js' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' const keywords = ['python'] @@ -33,7 +31,7 @@ const periodMap = { // this badge uses PyPI Stats instead of the PyPI API // so it doesn't extend PypiBase -module.exports = class PypiDownloads extends BaseJsonService { +export default class PypiDownloads extends BaseJsonService { static category = 'downloads' static route = { diff --git a/services/pypi/pypi-downloads.tester.js b/services/pypi/pypi-downloads.tester.js index c8e17b5ea8dca..5e4b57fe987c2 100644 --- a/services/pypi/pypi-downloads.tester.js +++ b/services/pypi/pypi-downloads.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isMetricOverTimePeriod } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { isMetricOverTimePeriod } from '../test-validators.js' +export const t = await createServiceTester() t.create('daily downloads (valid)') .get('/dd/djangorestframework.json') diff --git a/services/pypi/pypi-format.service.js b/services/pypi/pypi-format.service.js index b96fc3f4b49e0..cef3285e48433 100644 --- a/services/pypi/pypi-format.service.js +++ b/services/pypi/pypi-format.service.js @@ -1,9 +1,7 @@ -'use strict' +import PypiBase from './pypi-base.js' +import { getPackageFormats } from './pypi-helpers.js' -const PypiBase = require('./pypi-base') -const { getPackageFormats } = require('./pypi-helpers') - -module.exports = class PypiFormat extends PypiBase { +export default class PypiFormat extends PypiBase { static category = 'other' static route = this.buildRoute('pypi/format') diff --git a/services/pypi/pypi-format.tester.js b/services/pypi/pypi-format.tester.js index ffc93f9ea58ea..af025c67305b8 100644 --- a/services/pypi/pypi-format.tester.js +++ b/services/pypi/pypi-format.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('format (wheel, package version in request)') .get('/requests/2.18.4.json') diff --git a/services/pypi/pypi-helpers.js b/services/pypi/pypi-helpers.js index 5cdf78ced0809..3d3fa9f9f55a6 100644 --- a/services/pypi/pypi-helpers.js +++ b/services/pypi/pypi-helpers.js @@ -1,5 +1,3 @@ -'use strict' - /* Django versions will be specified in the form major.minor trying to sort with `semver.compare` will throw e.g: @@ -105,7 +103,7 @@ function getPackageFormats(packageData) { } } -module.exports = { +export { parseClassifiers, parseDjangoVersionString, sortDjangoVersions, diff --git a/services/pypi/pypi-helpers.spec.js b/services/pypi/pypi-helpers.spec.js index a236489a8410f..eca6fed39b4b4 100644 --- a/services/pypi/pypi-helpers.spec.js +++ b/services/pypi/pypi-helpers.spec.js @@ -1,13 +1,11 @@ -'use strict' - -const { test, given, forCases } = require('sazerac') -const { +import { test, given, forCases } from 'sazerac' +import { parseClassifiers, parseDjangoVersionString, sortDjangoVersions, getLicenses, getPackageFormats, -} = require('./pypi-helpers') +} from './pypi-helpers.js' const classifiersFixture = { info: { diff --git a/services/pypi/pypi-implementation.service.js b/services/pypi/pypi-implementation.service.js index 4b423855579d7..b5a050fecdd37 100644 --- a/services/pypi/pypi-implementation.service.js +++ b/services/pypi/pypi-implementation.service.js @@ -1,9 +1,7 @@ -'use strict' +import PypiBase from './pypi-base.js' +import { parseClassifiers } from './pypi-helpers.js' -const PypiBase = require('./pypi-base') -const { parseClassifiers } = require('./pypi-helpers') - -module.exports = class PypiImplementation extends PypiBase { +export default class PypiImplementation extends PypiBase { static category = 'platform-support' static route = this.buildRoute('pypi/implementation') diff --git a/services/pypi/pypi-implementation.tester.js b/services/pypi/pypi-implementation.tester.js index 726d4d2912c58..4de094f51205c 100644 --- a/services/pypi/pypi-implementation.tester.js +++ b/services/pypi/pypi-implementation.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('implementation (valid, package version in request)') .get('/beehive/1.0.json') diff --git a/services/pypi/pypi-license.service.js b/services/pypi/pypi-license.service.js index 0844d2a3b86ba..c2d2a3228cf0a 100644 --- a/services/pypi/pypi-license.service.js +++ b/services/pypi/pypi-license.service.js @@ -1,10 +1,8 @@ -'use strict' +import { renderLicenseBadge } from '../licenses.js' +import PypiBase from './pypi-base.js' +import { getLicenses } from './pypi-helpers.js' -const { renderLicenseBadge } = require('../licenses') -const PypiBase = require('./pypi-base') -const { getLicenses } = require('./pypi-helpers') - -module.exports = class PypiLicense extends PypiBase { +export default class PypiLicense extends PypiBase { static category = 'license' static route = this.buildRoute('pypi/l') diff --git a/services/pypi/pypi-license.tester.js b/services/pypi/pypi-license.tester.js index 31c66deeac69f..74cce2a414425 100644 --- a/services/pypi/pypi-license.tester.js +++ b/services/pypi/pypi-license.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('license (valid, package version in request)') .get('/requests/2.18.4.json') diff --git a/services/pypi/pypi-python-versions.service.js b/services/pypi/pypi-python-versions.service.js index 4dcb66a301796..569fc7aa993ec 100644 --- a/services/pypi/pypi-python-versions.service.js +++ b/services/pypi/pypi-python-versions.service.js @@ -1,10 +1,8 @@ -'use strict' +import semver from 'semver' +import PypiBase from './pypi-base.js' +import { parseClassifiers } from './pypi-helpers.js' -const semver = require('semver') -const PypiBase = require('./pypi-base') -const { parseClassifiers } = require('./pypi-helpers') - -module.exports = class PypiPythonVersions extends PypiBase { +export default class PypiPythonVersions extends PypiBase { static category = 'platform-support' static route = this.buildRoute('pypi/pyversions') diff --git a/services/pypi/pypi-python-versions.spec.js b/services/pypi/pypi-python-versions.spec.js index 5ce5c07aa1336..8a8c483882e9e 100644 --- a/services/pypi/pypi-python-versions.spec.js +++ b/services/pypi/pypi-python-versions.spec.js @@ -1,10 +1,8 @@ -'use strict' - -const { test, given } = require('sazerac') -const { render } = require('./pypi-python-versions.service') +import { test, given } from 'sazerac' +import PypiPythonVersions from './pypi-python-versions.service.js' describe('PyPI Python Version', function () { - test(render, function () { + test(PypiPythonVersions.render, function () { // Major versions are hidden if minor are present. given({ versions: ['3', '3.4', '3.5', '3.6', '2', '2.7'] }).expect({ message: '2.7 | 3.4 | 3.5 | 3.6', diff --git a/services/pypi/pypi-python-versions.tester.js b/services/pypi/pypi-python-versions.tester.js index efb9308317d58..36146ddf92a97 100644 --- a/services/pypi/pypi-python-versions.tester.js +++ b/services/pypi/pypi-python-versions.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isPipeSeparatedPythonVersions = Joi.string().regex( /^([1-9]\.[0-9]+(?: \| )?)+$/ diff --git a/services/pypi/pypi-status.service.js b/services/pypi/pypi-status.service.js index 4df298a03d523..77bff049aace1 100644 --- a/services/pypi/pypi-status.service.js +++ b/services/pypi/pypi-status.service.js @@ -1,9 +1,7 @@ -'use strict' +import PypiBase from './pypi-base.js' +import { parseClassifiers } from './pypi-helpers.js' -const PypiBase = require('./pypi-base') -const { parseClassifiers } = require('./pypi-helpers') - -module.exports = class PypiStatus extends PypiBase { +export default class PypiStatus extends PypiBase { static category = 'other' static route = this.buildRoute('pypi/status') diff --git a/services/pypi/pypi-status.tester.js b/services/pypi/pypi-status.tester.js index 751da746de7b0..764254fe0eba6 100644 --- a/services/pypi/pypi-status.tester.js +++ b/services/pypi/pypi-status.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('status (valid, stable, package version in request)') .get('/django/1.11.json') diff --git a/services/pypi/pypi-version.service.js b/services/pypi/pypi-version.service.js index 68ae1c5d532be..9a421bd01c444 100644 --- a/services/pypi/pypi-version.service.js +++ b/services/pypi/pypi-version.service.js @@ -1,9 +1,7 @@ -'use strict' +import { renderVersionBadge } from '../version.js' +import PypiBase from './pypi-base.js' -const { renderVersionBadge } = require('../version') -const PypiBase = require('./pypi-base') - -module.exports = class PypiVersion extends PypiBase { +export default class PypiVersion extends PypiBase { static category = 'version' static route = this.buildRoute('pypi/v') diff --git a/services/pypi/pypi-version.tester.js b/services/pypi/pypi-version.tester.js index 65f881456e841..ed083d92c6504 100644 --- a/services/pypi/pypi-version.tester.js +++ b/services/pypi/pypi-version.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) -const { isSemver } = require('../test-validators') +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +import { isSemver } from '../test-validators.js' +export const t = await createServiceTester() const isPsycopg2Version = Joi.string().regex(/^v([0-9][.]?)+$/) diff --git a/services/pypi/pypi-wheel.service.js b/services/pypi/pypi-wheel.service.js index 47f23b41b2b96..a81e2e4d42bd5 100644 --- a/services/pypi/pypi-wheel.service.js +++ b/services/pypi/pypi-wheel.service.js @@ -1,9 +1,7 @@ -'use strict' +import PypiBase from './pypi-base.js' +import { getPackageFormats } from './pypi-helpers.js' -const PypiBase = require('./pypi-base') -const { getPackageFormats } = require('./pypi-helpers') - -module.exports = class PypiWheel extends PypiBase { +export default class PypiWheel extends PypiBase { static category = 'platform-support' static route = this.buildRoute('pypi/wheel') diff --git a/services/pypi/pypi-wheel.tester.js b/services/pypi/pypi-wheel.tester.js index d888b6a05df2d..a70afaf4d4bf5 100644 --- a/services/pypi/pypi-wheel.tester.js +++ b/services/pypi/pypi-wheel.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('wheel (has wheel, package version in request)') .get('/requests/2.18.4.json') diff --git a/services/readthedocs/readthedocs.service.js b/services/readthedocs/readthedocs.service.js index 3b3b15a8a4deb..7522e69c3fc5f 100644 --- a/services/readthedocs/readthedocs.service.js +++ b/services/readthedocs/readthedocs.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus, renderBuildStatusBadge } = require('../build-status') -const { BaseSvgScrapingService, NotFound } = require('..') +import Joi from 'joi' +import { isBuildStatus, renderBuildStatusBadge } from '../build-status.js' +import { BaseSvgScrapingService, NotFound } from '../index.js' const keywords = ['documentation'] @@ -12,7 +10,7 @@ const schema = Joi.object({ .required(), }).required() -module.exports = class ReadTheDocs extends BaseSvgScrapingService { +export default class ReadTheDocs extends BaseSvgScrapingService { static category = 'build' static route = { diff --git a/services/readthedocs/readthedocs.tester.js b/services/readthedocs/readthedocs.tester.js index 2ed6c8bdb45c4..5bf83194da2d7 100644 --- a/services/readthedocs/readthedocs.tester.js +++ b/services/readthedocs/readthedocs.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus } = require('../build-status') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { isBuildStatus } from '../build-status.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('build status') .get('/pip.json') diff --git a/services/reddit/subreddit-subscribers.service.js b/services/reddit/subreddit-subscribers.service.js index 992d8668090a6..2d0ce5c53d7d3 100644 --- a/services/reddit/subreddit-subscribers.service.js +++ b/services/reddit/subreddit-subscribers.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { optionalNonNegativeInteger } = require('../validators') -const { metric } = require('../text-formatters') -const { BaseJsonService, NotFound } = require('..') +import Joi from 'joi' +import { optionalNonNegativeInteger } from '../validators.js' +import { metric } from '../text-formatters.js' +import { BaseJsonService, NotFound } from '../index.js' const schema = Joi.object({ data: Joi.object({ @@ -11,7 +9,7 @@ const schema = Joi.object({ }).required(), }).required() -module.exports = class RedditSubredditSubscribers extends BaseJsonService { +export default class RedditSubredditSubscribers extends BaseJsonService { static category = 'social' static route = { diff --git a/services/reddit/subreddit-subscribers.tester.js b/services/reddit/subreddit-subscribers.tester.js index b9d4265d5566f..1038718d523c8 100644 --- a/services/reddit/subreddit-subscribers.tester.js +++ b/services/reddit/subreddit-subscribers.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('subreddit-subscribers (valid subreddit)') .get('/drums.json') diff --git a/services/reddit/user-karma.service.js b/services/reddit/user-karma.service.js index 35483bb409771..c5595f21e16e4 100644 --- a/services/reddit/user-karma.service.js +++ b/services/reddit/user-karma.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { metric } = require('../text-formatters') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { metric } from '../text-formatters.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ data: Joi.object({ @@ -12,7 +10,7 @@ const schema = Joi.object({ }).required(), }).required() -module.exports = class RedditUserKarma extends BaseJsonService { +export default class RedditUserKarma extends BaseJsonService { static category = 'social' static route = { diff --git a/services/reddit/user-karma.tester.js b/services/reddit/user-karma.tester.js index e02496e5f2844..9023023dbb630 100644 --- a/services/reddit/user-karma.tester.js +++ b/services/reddit/user-karma.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('user-karma (valid - link)') .get('/link/user_simulator.json') diff --git a/services/redmine/redmine.service.js b/services/redmine/redmine.service.js index 4de51ca74ad23..288a36ffe4719 100644 --- a/services/redmine/redmine.service.js +++ b/services/redmine/redmine.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { starRating } = require('../text-formatters') -const { floorCount: floorCountColor } = require('../color-formatters') -const { BaseXmlService } = require('..') +import Joi from 'joi' +import { starRating } from '../text-formatters.js' +import { floorCount as floorCountColor } from '../color-formatters.js' +import { BaseXmlService } from '../index.js' const schema = Joi.object({ 'redmine-plugin': Joi.object({ @@ -78,4 +76,4 @@ class RedminePluginStars extends BaseRedminePluginRating { } } -module.exports = { RedminePluginRating, RedminePluginStars } +export { RedminePluginRating, RedminePluginStars } diff --git a/services/redmine/redmine.tester.js b/services/redmine/redmine.tester.js index 720d8a77e819d..c69e6e6eceac0 100644 --- a/services/redmine/redmine.tester.js +++ b/services/redmine/redmine.tester.js @@ -1,13 +1,11 @@ -'use strict' +import Joi from 'joi' +import { ServiceTester } from '../tester.js' +import { isStarRating } from '../test-validators.js' -const Joi = require('joi') -const { ServiceTester } = require('../tester') -const { isStarRating } = require('../test-validators') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'redmine', title: 'Redmine', -})) +}) t.create('plugin rating') .get('/plugin/rating/redmine_xlsx_format_issue_exporter.json') diff --git a/services/repology/repology-repositories.service.js b/services/repology/repology-repositories.service.js index 7d179bc3f4623..98b5e3ff55dc6 100644 --- a/services/repology/repology-repositories.service.js +++ b/services/repology/repology-repositories.service.js @@ -1,15 +1,13 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { BaseSvgScrapingService } = require('..') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseSvgScrapingService } from '../index.js' const schema = Joi.object({ message: nonNegativeInteger, }).required() -module.exports = class RepologyRepositories extends BaseSvgScrapingService { +export default class RepologyRepositories extends BaseSvgScrapingService { static category = 'platform-support' static route = { diff --git a/services/repology/repology-repositories.tester.js b/services/repology/repology-repositories.tester.js index b300adc44e05e..8250bec843d54 100644 --- a/services/repology/repology-repositories.tester.js +++ b/services/repology/repology-repositories.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { nonNegativeInteger } = require('../validators') +import { createServiceTester } from '../tester.js' +import { nonNegativeInteger } from '../validators.js' +export const t = await createServiceTester() t.create('Existing project').get('/starship.json').expectBadge({ label: 'repositories', diff --git a/services/requires/requires.service.js b/services/requires/requires.service.js index b8528900ec41d..03f822231647d 100644 --- a/services/requires/requires.service.js +++ b/services/requires/requires.service.js @@ -1,13 +1,11 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' const statusSchema = Joi.object({ status: Joi.string().required(), }).required() -module.exports = class RequiresIo extends BaseJsonService { +export default class RequiresIo extends BaseJsonService { static category = 'dependencies' static route = { diff --git a/services/requires/requires.tester.js b/services/requires/requires.tester.js index 92545be604469..b5dc253ba7087 100644 --- a/services/requires/requires.tester.js +++ b/services/requires/requires.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isRequireStatus = Joi.string().regex( /^(up to date|outdated|insecure|unknown)$/ diff --git a/services/resharper/resharper.service.js b/services/resharper/resharper.service.js index 60585f7464721..ef05a293379ac 100644 --- a/services/resharper/resharper.service.js +++ b/services/resharper/resharper.service.js @@ -1,8 +1,6 @@ -'use strict' +import { createServiceFamily } from '../nuget/nuget-v2-service-family.js' -const { createServiceFamily } = require('../nuget/nuget-v2-service-family') - -module.exports = createServiceFamily({ +export default createServiceFamily({ name: 'ResharperPlugin', defaultLabel: 'resharper', serviceBaseUrl: 'resharper', diff --git a/services/resharper/resharper.tester.js b/services/resharper/resharper.tester.js index bc31157ade833..d4332f8961cd0 100644 --- a/services/resharper/resharper.tester.js +++ b/services/resharper/resharper.tester.js @@ -1,16 +1,14 @@ -'use strict' - -const { ServiceTester } = require('../tester') -const { +import { ServiceTester } from '../tester.js' +import { isMetric, isVPlusDottedVersionNClauses, isVPlusDottedVersionNClausesWithOptionalSuffix, -} = require('../test-validators') +} from '../test-validators.js' -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'resharper', title: 'ReSharper', -})) +}) // downloads diff --git a/services/response-fixtures.js b/services/response-fixtures.js index 18d7439e53af1..90557126f56ad 100644 --- a/services/response-fixtures.js +++ b/services/response-fixtures.js @@ -1,12 +1,7 @@ -'use strict' +export const invalidJSONString = '{{{{{invalid json}}' -const invalidJSONString = '{{{{{invalid json}}' - -module.exports = { - invalidJSON: () => [ - 200, - invalidJSONString, - { 'Content-Type': 'application/json' }, - ], +export const invalidJSON = () => [ + 200, invalidJSONString, -} + { 'Content-Type': 'application/json' }, +] diff --git a/services/reuse/reuse-compliance-helper.js b/services/reuse/reuse-compliance-helper.js index bb25653fdf8b2..7503696bb373c 100644 --- a/services/reuse/reuse-compliance-helper.js +++ b/services/reuse/reuse-compliance-helper.js @@ -1,6 +1,4 @@ -'use strict' - -const Joi = require('joi') +import Joi from 'joi' const COLOR_MAP = { checking: 'brightgreen', @@ -13,7 +11,4 @@ const isReuseCompliance = Joi.string() .valid('compliant', 'non-compliant', 'checking', 'unregistered') .required() -module.exports = { - isReuseCompliance, - COLOR_MAP, -} +export { isReuseCompliance, COLOR_MAP } diff --git a/services/reuse/reuse-compliance.service.js b/services/reuse/reuse-compliance.service.js index c33fb3b2f5bc4..93933f5f9008d 100644 --- a/services/reuse/reuse-compliance.service.js +++ b/services/reuse/reuse-compliance.service.js @@ -1,13 +1,12 @@ -'use strict' -const Joi = require('joi') -const { BaseJsonService } = require('..') -const { isReuseCompliance, COLOR_MAP } = require('./reuse-compliance-helper') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' +import { isReuseCompliance, COLOR_MAP } from './reuse-compliance-helper.js' const responseSchema = Joi.object({ status: isReuseCompliance, }).required() -module.exports = class Reuse extends BaseJsonService { +export default class Reuse extends BaseJsonService { static category = 'license' static route = { diff --git a/services/reuse/reuse-compliance.tester.js b/services/reuse/reuse-compliance.tester.js index a160e66107571..de7202f6dbf76 100644 --- a/services/reuse/reuse-compliance.tester.js +++ b/services/reuse/reuse-compliance.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isReuseCompliance, COLOR_MAP } = require('./reuse-compliance-helper') +import { createServiceTester } from '../tester.js' +import { isReuseCompliance, COLOR_MAP } from './reuse-compliance-helper.js' +export const t = await createServiceTester() t.create('valid repo -- live') .get('/github.com/fsfe/reuse-tool.json') diff --git a/services/route-builder.js b/services/route-builder.js index 99679f316176a..a1c894c945a1c 100644 --- a/services/route-builder.js +++ b/services/route-builder.js @@ -1,6 +1,4 @@ -'use strict' - -const toArray = require('../core/base-service/to-array') +import toArray from '../core/base-service/to-array.js' /* * Factory class for building a BaseService `route` object. This class is useful @@ -10,7 +8,7 @@ const toArray = require('../core/base-service/to-array') * Patterns based on path-to-regex may obviate the need for this, though they * haven't done so yet. */ -module.exports = class RouteBuilder { +export default class RouteBuilder { constructor({ base = '' } = {}) { this.base = base diff --git a/services/scoop/scoop-version.service.js b/services/scoop/scoop-version.service.js index a45310785146e..566a259bf7b8c 100644 --- a/services/scoop/scoop-version.service.js +++ b/services/scoop/scoop-version.service.js @@ -1,12 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { NotFound } = require('..') -const { - ConditionalGithubAuthV3Service, -} = require('../github/github-auth-service') -const { fetchJsonFromRepo } = require('../github/github-common-fetch') -const { renderVersionBadge } = require('../version') +import Joi from 'joi' +import { NotFound } from '../index.js' +import { ConditionalGithubAuthV3Service } from '../github/github-auth-service.js' +import { fetchJsonFromRepo } from '../github/github-common-fetch.js' +import { renderVersionBadge } from '../version.js' const gitHubRepoRegExp = /https:\/\/github.com\/(?.*?)\/(?.*?)(\/|$)/ @@ -20,7 +16,7 @@ const queryParamSchema = Joi.object({ bucket: Joi.string(), }) -module.exports = class ScoopVersion extends ConditionalGithubAuthV3Service { +export default class ScoopVersion extends ConditionalGithubAuthV3Service { // The buckets file (https://github.com/lukesampson/scoop/blob/master/buckets.json) changes very rarely. // Cache it for the lifetime of the current Node.js process. buckets = null diff --git a/services/scoop/scoop-version.tester.js b/services/scoop/scoop-version.tester.js index 42b89bdeb56c3..6e3950e8a58ef 100644 --- a/services/scoop/scoop-version.tester.js +++ b/services/scoop/scoop-version.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' +import { isVPlusDottedVersionNClauses } from '../test-validators.js' -const { ServiceTester } = require('../tester') -const { isVPlusDottedVersionNClauses } = require('../test-validators') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'scoop', title: 'Scoop', -})) +}) // version diff --git a/services/scrutinizer/scrutinizer-base.js b/services/scrutinizer/scrutinizer-base.js index b2a7c59cab849..918a9b6dec49d 100644 --- a/services/scrutinizer/scrutinizer-base.js +++ b/services/scrutinizer/scrutinizer-base.js @@ -1,8 +1,6 @@ -'use strict' +import { BaseJsonService, NotFound, InvalidResponse } from '../index.js' -const { BaseJsonService, NotFound, InvalidResponse } = require('..') - -module.exports = class ScrutinizerBase extends BaseJsonService { +export default class ScrutinizerBase extends BaseJsonService { // https://scrutinizer-ci.com/docs/api/#repository-details async fetch({ schema, vcs, slug }) { return this._requestJson({ diff --git a/services/scrutinizer/scrutinizer-build.service.js b/services/scrutinizer/scrutinizer-build.service.js index 71c67312eba67..44c1f54e44b9e 100644 --- a/services/scrutinizer/scrutinizer-build.service.js +++ b/services/scrutinizer/scrutinizer-build.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus, renderBuildStatusBadge } = require('../build-status') -const ScrutinizerBase = require('./scrutinizer-base') +import Joi from 'joi' +import { isBuildStatus, renderBuildStatusBadge } from '../build-status.js' +import ScrutinizerBase from './scrutinizer-base.js' const schema = Joi.object({ default_branch: Joi.string().required(), @@ -107,7 +105,7 @@ class ScrutinizerPlainGitBuild extends ScrutinizerBuildBase { } } -module.exports = [ +export default [ ScrutinizerBuild, ScrutinizerGitLabBuild, ScrutinizerPlainGitBuild, diff --git a/services/scrutinizer/scrutinizer-build.tester.js b/services/scrutinizer/scrutinizer-build.tester.js index a14498e93933b..37185bf16ba52 100644 --- a/services/scrutinizer/scrutinizer-build.tester.js +++ b/services/scrutinizer/scrutinizer-build.tester.js @@ -1,13 +1,11 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus } = require('../build-status') -const { ServiceTester } = require('../tester') -const t = (module.exports = new ServiceTester({ +import Joi from 'joi' +import { isBuildStatus } from '../build-status.js' +import { ServiceTester } from '../tester.js' +export const t = new ServiceTester({ id: 'ScrutinizerBuild', title: 'ScrutinizerBuild', pathPrefix: '/scrutinizer/build', -})) +}) t.create('build (GitHub)') .get('/g/filp/whoops.json') diff --git a/services/scrutinizer/scrutinizer-coverage.service.js b/services/scrutinizer/scrutinizer-coverage.service.js index c2b57ba98ea73..cedd137e74203 100644 --- a/services/scrutinizer/scrutinizer-coverage.service.js +++ b/services/scrutinizer/scrutinizer-coverage.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { colorScale } = require('../color-formatters') -const { NotFound } = require('..') -const ScrutinizerBase = require('./scrutinizer-base') +import Joi from 'joi' +import { colorScale } from '../color-formatters.js' +import { NotFound } from '../index.js' +import ScrutinizerBase from './scrutinizer-base.js' const schema = Joi.object({ default_branch: Joi.string().required(), @@ -139,8 +137,8 @@ class ScrutinizerCoveragePlainGit extends ScrutinizerCoverageBase { } } -module.exports = [ +export { ScrutinizerCoverage, ScrutinizerCoverageGitLab, ScrutinizerCoveragePlainGit, -] +} diff --git a/services/scrutinizer/scrutinizer-coverage.spec.js b/services/scrutinizer/scrutinizer-coverage.spec.js index c0308172d42de..2928f54f5f690 100644 --- a/services/scrutinizer/scrutinizer-coverage.spec.js +++ b/services/scrutinizer/scrutinizer-coverage.spec.js @@ -1,9 +1,7 @@ -'use strict' - -const { expect } = require('chai') -const { test, given } = require('sazerac') -const { InvalidResponse, NotFound } = require('..') -const [ScrutinizerCoverage] = require('./scrutinizer-coverage.service') +import { expect } from 'chai' +import { test, given } from 'sazerac' +import { InvalidResponse, NotFound } from '../index.js' +import { ScrutinizerCoverage } from './scrutinizer-coverage.service.js' describe('ScrutinizerCoverage', function () { test(ScrutinizerCoverage.render, () => { diff --git a/services/scrutinizer/scrutinizer-coverage.tester.js b/services/scrutinizer/scrutinizer-coverage.tester.js index ee2ca663b1d3b..e23e7f59a3fbb 100644 --- a/services/scrutinizer/scrutinizer-coverage.tester.js +++ b/services/scrutinizer/scrutinizer-coverage.tester.js @@ -1,12 +1,10 @@ -'use strict' - -const { isIntegerPercentage } = require('../test-validators') -const { ServiceTester } = require('../tester') -const t = (module.exports = new ServiceTester({ +import { isIntegerPercentage } from '../test-validators.js' +import { ServiceTester } from '../tester.js' +export const t = new ServiceTester({ id: 'ScrutinizerCoverage', title: 'ScrutinizerCoverage', pathPrefix: '/scrutinizer/coverage', -})) +}) t.create('code coverage (GitHub)').get('/g/filp/whoops.json').expectBadge({ label: 'coverage', diff --git a/services/scrutinizer/scrutinizer-quality.service.js b/services/scrutinizer/scrutinizer-quality.service.js index a5c7406fddcfc..93939a554da62 100644 --- a/services/scrutinizer/scrutinizer-quality.service.js +++ b/services/scrutinizer/scrutinizer-quality.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { colorScale } = require('../color-formatters') -const ScrutinizerBase = require('./scrutinizer-base') +import Joi from 'joi' +import { colorScale } from '../color-formatters.js' +import ScrutinizerBase from './scrutinizer-base.js' const schema = Joi.object({ default_branch: Joi.string().required(), @@ -127,7 +125,7 @@ class ScrutinizerQualityPlainGit extends ScrutinizerQualityBase { } } -module.exports = [ +export default [ ScrutinizerQuality, ScrutinizerQualityGitLab, ScrutinizerQualityPlainGit, diff --git a/services/scrutinizer/scrutinizer-quality.tester.js b/services/scrutinizer/scrutinizer-quality.tester.js index d4e14bd137137..9009a9d1823a7 100644 --- a/services/scrutinizer/scrutinizer-quality.tester.js +++ b/services/scrutinizer/scrutinizer-quality.tester.js @@ -1,12 +1,10 @@ -'use strict' - -const Joi = require('joi') -const { ServiceTester } = require('../tester') -const t = (module.exports = new ServiceTester({ +import Joi from 'joi' +import { ServiceTester } from '../tester.js' +export const t = new ServiceTester({ id: 'ScrutinizerQuality', title: 'ScrutinizerQuality', pathPrefix: '/scrutinizer/quality', -})) +}) const isQualityNumber = Joi.number().positive() diff --git a/services/scrutinizer/scrutinizer-redirect.service.js b/services/scrutinizer/scrutinizer-redirect.service.js index 4aee6a5ebfa0c..95a97967c0d54 100644 --- a/services/scrutinizer/scrutinizer-redirect.service.js +++ b/services/scrutinizer/scrutinizer-redirect.service.js @@ -1,13 +1,11 @@ -'use strict' - -const { redirector } = require('..') +import { redirector } from '../index.js' const commonAttrs = { category: 'analysis', dateAdded: new Date('2019-04-24'), } -module.exports = [ +export default [ redirector({ route: { base: 'scrutinizer', diff --git a/services/scrutinizer/scrutinizer-redirect.tester.js b/services/scrutinizer/scrutinizer-redirect.tester.js index c9ef3fbd569fc..b1d8abc51083b 100644 --- a/services/scrutinizer/scrutinizer-redirect.tester.js +++ b/services/scrutinizer/scrutinizer-redirect.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'ScrutinizerQualityRedirect', title: 'ScrutinizerQualityRedirect', pathPrefix: '/scrutinizer', -})) +}) t.create('scrutinizer quality GitHub') .get('/g/doctrine/orm.svg') diff --git a/services/security-headers/security-headers.service.js b/services/security-headers/security-headers.service.js index 2816da7adf8ea..0b935a871eb45 100644 --- a/services/security-headers/security-headers.service.js +++ b/services/security-headers/security-headers.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { optionalUrl } = require('../validators') -const { BaseService, NotFound } = require('..') +import Joi from 'joi' +import { optionalUrl } from '../validators.js' +import { BaseService, NotFound } from '../index.js' const queryParamSchema = Joi.object({ url: optionalUrl.required(), @@ -20,7 +18,7 @@ const documentation = `

` -module.exports = class SecurityHeaders extends BaseService { +export default class SecurityHeaders extends BaseService { static category = 'monitoring' static route = { diff --git a/services/security-headers/security-headers.tester.js b/services/security-headers/security-headers.tester.js index f3c4e3b1266c3..3be2b605117c7 100644 --- a/services/security-headers/security-headers.tester.js +++ b/services/security-headers/security-headers.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('grade of https://shields.io') .get('/security-headers.json?url=https://shields.io') diff --git a/services/shippable/shippable.service.js b/services/shippable/shippable.service.js index 6d81d15e2e964..426c773e18416 100644 --- a/services/shippable/shippable.service.js +++ b/services/shippable/shippable.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { renderBuildStatusBadge } = require('../build-status') -const { BaseJsonService, NotFound, redirector } = require('..') +import Joi from 'joi' +import { renderBuildStatusBadge } from '../build-status.js' +import { BaseJsonService, NotFound, redirector } from '../index.js' // source: https://github.com/badges/shields/pull/1362#discussion_r161693830 const statusCodes = { @@ -79,4 +77,4 @@ const ShippableRedirect = redirector({ dateAdded: new Date('2020-07-18'), }) -module.exports = { Shippable, ShippableRedirect } +export { Shippable, ShippableRedirect } diff --git a/services/shippable/shippable.tester.js b/services/shippable/shippable.tester.js index 0290b2bd24b3a..789a357b7d1e4 100644 --- a/services/shippable/shippable.tester.js +++ b/services/shippable/shippable.tester.js @@ -1,12 +1,10 @@ -'use strict' - -const { isBuildStatus } = require('../build-status') -const { ServiceTester } = require('../tester') -const t = (module.exports = new ServiceTester({ +import { isBuildStatus } from '../build-status.js' +import { ServiceTester } from '../tester.js' +export const t = new ServiceTester({ id: 'Shippable', title: 'Shippable', pathPrefix: '/shippable', -})) +}) t.create('build status (valid)') .get('/5444c5ecb904a4b21567b0ff/master.json') diff --git a/services/snap-ci/snap-ci.service.js b/services/snap-ci/snap-ci.service.js index 4b3cf224dc325..bf23bad848ac7 100644 --- a/services/snap-ci/snap-ci.service.js +++ b/services/snap-ci/snap-ci.service.js @@ -1,6 +1,4 @@ -'use strict' - -const { deprecatedService } = require('..') +import { deprecatedService } from '../index.js' const commonAttrs = { category: 'build', @@ -8,7 +6,7 @@ const commonAttrs = { dateAdded: new Date('2018-01-23'), } -module.exports = [ +export default [ deprecatedService({ route: { base: 'snap', diff --git a/services/snap-ci/snap-ci.tester.js b/services/snap-ci/snap-ci.tester.js index fb9659ee3e17b..3d8eb809aebec 100644 --- a/services/snap-ci/snap-ci.tester.js +++ b/services/snap-ci/snap-ci.tester.js @@ -1,9 +1,6 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = new ServiceTester({ id: 'snap-ci', title: 'Snap CI' }) -module.exports = t +export const t = new ServiceTester({ id: 'snap-ci', title: 'Snap CI' }) t.create('no longer available (previously build state)') .get('/snap-ci/ThoughtWorksStudios/eb_deployer/master.json') diff --git a/services/snyk/snyk-test-helpers.js b/services/snyk/snyk-test-helpers.js index 3fea094774e10..9f37e02ecdbe1 100644 --- a/services/snyk/snyk-test-helpers.js +++ b/services/snyk/snyk-test-helpers.js @@ -1,11 +1,6 @@ -'use strict' - const zeroVulnerabilitiesSvg = 'vulnerabilitiesvulnerabilities00' const twoVulnerabilitiesSvg = 'vulnerabilitiesvulnerabilities22' -module.exports = { - zeroVulnerabilitiesSvg, - twoVulnerabilitiesSvg, -} +export { zeroVulnerabilitiesSvg, twoVulnerabilitiesSvg } diff --git a/services/snyk/snyk-vulnerability-base.js b/services/snyk/snyk-vulnerability-base.js index 4263c32b97034..1316490a71445 100644 --- a/services/snyk/snyk-vulnerability-base.js +++ b/services/snyk/snyk-vulnerability-base.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { BaseSvgScrapingService } = require('..') +import Joi from 'joi' +import { BaseSvgScrapingService } from '../index.js' const schema = Joi.object({ message: Joi.alternatives() @@ -9,7 +7,7 @@ const schema = Joi.object({ .required(), }).required() -module.exports = class SnykVulnerabilityBase extends BaseSvgScrapingService { +export default class SnykVulnerabilityBase extends BaseSvgScrapingService { static category = 'analysis' static defaultBadgeData = { diff --git a/services/snyk/snyk-vulnerability-github.service.js b/services/snyk/snyk-vulnerability-github.service.js index 445004f5ff1fb..fd187e7fbebce 100644 --- a/services/snyk/snyk-vulnerability-github.service.js +++ b/services/snyk/snyk-vulnerability-github.service.js @@ -1,8 +1,6 @@ -'use strict' +import SynkVulnerabilityBase from './snyk-vulnerability-base.js' -const SynkVulnerabilityBase = require('./snyk-vulnerability-base') - -module.exports = class SnykVulnerabilityGitHub extends SynkVulnerabilityBase { +export default class SnykVulnerabilityGitHub extends SynkVulnerabilityBase { static route = { base: 'snyk/vulnerabilities/github', pattern: ':user/:repo/:manifestFilePath*', diff --git a/services/snyk/snyk-vulnerability-github.tester.js b/services/snyk/snyk-vulnerability-github.tester.js index 32326e9d313e5..0601ef2710620 100644 --- a/services/snyk/snyk-vulnerability-github.tester.js +++ b/services/snyk/snyk-vulnerability-github.tester.js @@ -1,11 +1,10 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) -const { +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +import { twoVulnerabilitiesSvg, zeroVulnerabilitiesSvg, -} = require('./snyk-test-helpers') +} from './snyk-test-helpers.js' +export const t = await createServiceTester() t.create('valid repo').get('/snyk/snyk.json').timeout(20000).expectBadge({ label: 'vulnerabilities', diff --git a/services/snyk/snyk-vulnerability-npm.service.js b/services/snyk/snyk-vulnerability-npm.service.js index 2cbda0c68306f..4e5f99db3e18f 100644 --- a/services/snyk/snyk-vulnerability-npm.service.js +++ b/services/snyk/snyk-vulnerability-npm.service.js @@ -1,9 +1,7 @@ -'use strict' +import { NotFound } from '../index.js' +import SynkVulnerabilityBase from './snyk-vulnerability-base.js' -const { NotFound } = require('..') -const SynkVulnerabilityBase = require('./snyk-vulnerability-base') - -module.exports = class SnykVulnerabilityNpm extends SynkVulnerabilityBase { +export default class SnykVulnerabilityNpm extends SynkVulnerabilityBase { static route = { base: 'snyk/vulnerabilities/npm', pattern: ':packageName(.+?)', diff --git a/services/snyk/snyk-vulnerability-npm.tester.js b/services/snyk/snyk-vulnerability-npm.tester.js index 859eaacfe82e1..5df48e99502e1 100644 --- a/services/snyk/snyk-vulnerability-npm.tester.js +++ b/services/snyk/snyk-vulnerability-npm.tester.js @@ -1,11 +1,10 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) -const { +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +import { twoVulnerabilitiesSvg, zeroVulnerabilitiesSvg, -} = require('./snyk-test-helpers') +} from './snyk-test-helpers.js' +export const t = await createServiceTester() t.create('valid package latest version') .get('/commander.json') diff --git a/services/sonar/sonar-base.js b/services/sonar/sonar-base.js index 588be428ce2c8..4e13f25e24d4f 100644 --- a/services/sonar/sonar-base.js +++ b/services/sonar/sonar-base.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService, NotFound } = require('..') -const { isLegacyVersion } = require('./sonar-helpers') +import Joi from 'joi' +import { BaseJsonService, NotFound } from '../index.js' +import { isLegacyVersion } from './sonar-helpers.js' // It is possible to see HTTP 404 response codes and HTTP 200 responses // with empty arrays of metric values, with both the legacy (pre v5.3) and modern APIs. @@ -51,7 +49,7 @@ const legacySchema = Joi.array() ) .required() -module.exports = class SonarBase extends BaseJsonService { +export default class SonarBase extends BaseJsonService { static auth = { userKey: 'sonarqube_token', serviceKey: 'sonar' } async fetch({ sonarVersion, server, component, metricName }) { diff --git a/services/sonar/sonar-coverage.service.js b/services/sonar/sonar-coverage.service.js index df4edeb9bc18f..ca71ab8264bc5 100644 --- a/services/sonar/sonar-coverage.service.js +++ b/services/sonar/sonar-coverage.service.js @@ -1,10 +1,8 @@ -'use strict' +import { coveragePercentage } from '../color-formatters.js' +import SonarBase from './sonar-base.js' +import { documentation, keywords, queryParamSchema } from './sonar-helpers.js' -const { coveragePercentage } = require('../color-formatters') -const SonarBase = require('./sonar-base') -const { documentation, keywords, queryParamSchema } = require('./sonar-helpers') - -module.exports = class SonarCoverage extends SonarBase { +export default class SonarCoverage extends SonarBase { static category = 'coverage' static route = { diff --git a/services/sonar/sonar-coverage.tester.js b/services/sonar/sonar-coverage.tester.js index feb31425c22fe..6a03fa2171d4d 100644 --- a/services/sonar/sonar-coverage.tester.js +++ b/services/sonar/sonar-coverage.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isIntegerPercentage } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { isIntegerPercentage } from '../test-validators.js' +export const t = await createServiceTester() // The service tests targeting the legacy SonarQube API are mocked // because of the lack of publicly accessible, self-hosted, legacy SonarQube instances diff --git a/services/sonar/sonar-documented-api-density.service.js b/services/sonar/sonar-documented-api-density.service.js index 684152f5d654f..9c605f94beb5a 100644 --- a/services/sonar/sonar-documented-api-density.service.js +++ b/services/sonar/sonar-documented-api-density.service.js @@ -1,17 +1,15 @@ -'use strict' - -const SonarBase = require('./sonar-base') -const { +import SonarBase from './sonar-base.js' +import { queryParamSchema, getLabel, positiveMetricColorScale, keywords, documentation, -} = require('./sonar-helpers') +} from './sonar-helpers.js' const metric = 'public_documented_api_density' -module.exports = class SonarDocumentedApiDensity extends SonarBase { +export default class SonarDocumentedApiDensity extends SonarBase { static category = 'analysis' static route = { diff --git a/services/sonar/sonar-documented-api-density.spec.js b/services/sonar/sonar-documented-api-density.spec.js index f2dc4821d2101..a5ca4fe55267b 100644 --- a/services/sonar/sonar-documented-api-density.spec.js +++ b/services/sonar/sonar-documented-api-density.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const SonarDocumentedApiDensity = require('./sonar-documented-api-density.service') +import { test, given } from 'sazerac' +import SonarDocumentedApiDensity from './sonar-documented-api-density.service.js' describe('SonarDocumentedApiDensity', function () { test(SonarDocumentedApiDensity.render, () => { diff --git a/services/sonar/sonar-documented-api-density.tester.js b/services/sonar/sonar-documented-api-density.tester.js index b879d6f5b10b0..d1fad44e3b8c1 100644 --- a/services/sonar/sonar-documented-api-density.tester.js +++ b/services/sonar/sonar-documented-api-density.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() // The service tests targeting the legacy SonarQube API are mocked // because of the lack of publicly accessible, self-hosted, legacy SonarQube instances diff --git a/services/sonar/sonar-fortify-rating.service.js b/services/sonar/sonar-fortify-rating.service.js index 74cf396fb24ec..2e375c18f0345 100644 --- a/services/sonar/sonar-fortify-rating.service.js +++ b/services/sonar/sonar-fortify-rating.service.js @@ -1,7 +1,5 @@ -'use strict' - -const SonarBase = require('./sonar-base') -const { queryParamSchema, keywords, documentation } = require('./sonar-helpers') +import SonarBase from './sonar-base.js' +import { queryParamSchema, keywords, documentation } from './sonar-helpers.js' const colorMap = { 0: 'red', @@ -12,7 +10,7 @@ const colorMap = { 5: 'brightgreen', } -module.exports = class SonarFortifyRating extends SonarBase { +export default class SonarFortifyRating extends SonarBase { static category = 'analysis' static route = { diff --git a/services/sonar/sonar-fortify-rating.spec.js b/services/sonar/sonar-fortify-rating.spec.js index 2121c484f55a0..ba5869b0dc88e 100644 --- a/services/sonar/sonar-fortify-rating.spec.js +++ b/services/sonar/sonar-fortify-rating.spec.js @@ -1,9 +1,7 @@ -'use strict' - -const { expect } = require('chai') -const nock = require('nock') -const { cleanUpNockAfterEach, defaultContext } = require('../test-helpers') -const SonarFortifyRating = require('./sonar-fortify-rating.service') +import { expect } from 'chai' +import nock from 'nock' +import { cleanUpNockAfterEach, defaultContext } from '../test-helpers.js' +import SonarFortifyRating from './sonar-fortify-rating.service.js' const token = 'abc123def456' const config = { diff --git a/services/sonar/sonar-fortify-rating.tester.js b/services/sonar/sonar-fortify-rating.tester.js index 760ba28d09f59..c6efb951777e9 100644 --- a/services/sonar/sonar-fortify-rating.tester.js +++ b/services/sonar/sonar-fortify-rating.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() // The service tests targeting the legacy SonarQube API are mocked // because of the lack of publicly accessible, self-hosted, legacy SonarQube instances diff --git a/services/sonar/sonar-generic.service.js b/services/sonar/sonar-generic.service.js index 6b8498675497d..adc6bcd6af36c 100644 --- a/services/sonar/sonar-generic.service.js +++ b/services/sonar/sonar-generic.service.js @@ -1,8 +1,6 @@ -'use strict' - -const { metric } = require('../text-formatters') -const SonarBase = require('./sonar-base') -const { queryParamSchema, getLabel } = require('./sonar-helpers') +import { metric } from '../text-formatters.js' +import SonarBase from './sonar-base.js' +import { queryParamSchema, getLabel } from './sonar-helpers.js' // This service is intended to be a temporary solution to avoid breaking // any existing users/badges that were utilizing the "other" Sonar metrics @@ -106,7 +104,7 @@ const metricNames = [ ] const metricNameRouteParam = metricNames.join('|') -module.exports = class SonarGeneric extends SonarBase { +export default class SonarGeneric extends SonarBase { static category = 'analysis' static route = { diff --git a/services/sonar/sonar-generic.tester.js b/services/sonar/sonar-generic.tester.js index 3d5bfffd52834..2c17598222760 100644 --- a/services/sonar/sonar-generic.tester.js +++ b/services/sonar/sonar-generic.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Security Rating') .timeout(10000) diff --git a/services/sonar/sonar-helpers.js b/services/sonar/sonar-helpers.js index e5764304ead5c..c5e49b2728952 100644 --- a/services/sonar/sonar-helpers.js +++ b/services/sonar/sonar-helpers.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { colorScale } = require('../color-formatters') -const { optionalUrl } = require('../validators') +import Joi from 'joi' +import { colorScale } from '../color-formatters.js' +import { optionalUrl } from '../validators.js' const ratingPercentageScaleSteps = [10, 20, 50, 100] const ratingScaleColors = [ @@ -60,7 +58,7 @@ const documentation = `

{ diff --git a/services/sonar/sonar-quality-gate.tester.js b/services/sonar/sonar-quality-gate.tester.js index 518ce9451ba18..39975ad07f270 100644 --- a/services/sonar/sonar-quality-gate.tester.js +++ b/services/sonar/sonar-quality-gate.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isQualityGateStatus = Joi.allow('passed', 'failed') diff --git a/services/sonar/sonar-redirector.service.js b/services/sonar/sonar-redirector.service.js index 8698721eb9e0a..f5289608c68a6 100644 --- a/services/sonar/sonar-redirector.service.js +++ b/services/sonar/sonar-redirector.service.js @@ -1,8 +1,6 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = [ +export default [ redirector({ name: 'SonarVersionPrefixRedirector', category: 'analysis', diff --git a/services/sonar/sonar-redirector.tester.js b/services/sonar/sonar-redirector.tester.js index 7d80d667d5e2e..286d92be7a2df 100644 --- a/services/sonar/sonar-redirector.tester.js +++ b/services/sonar/sonar-redirector.tester.js @@ -1,13 +1,11 @@ -'use strict' +import queryString from 'querystring' +import { ServiceTester } from '../tester.js' -const queryString = require('querystring') -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'SonarRedirect', title: 'SonarRedirect', pathPrefix: '/sonar', -})) +}) t.create('sonar version') .get( diff --git a/services/sonar/sonar-tech-debt.service.js b/services/sonar/sonar-tech-debt.service.js index a54952cbb0800..b8c1de4cd25ed 100644 --- a/services/sonar/sonar-tech-debt.service.js +++ b/services/sonar/sonar-tech-debt.service.js @@ -1,15 +1,13 @@ -'use strict' - -const SonarBase = require('./sonar-base') -const { +import SonarBase from './sonar-base.js' +import { negativeMetricColorScale, getLabel, documentation, keywords, queryParamSchema, -} = require('./sonar-helpers') +} from './sonar-helpers.js' -module.exports = class SonarTechDebt extends SonarBase { +export default class SonarTechDebt extends SonarBase { static category = 'analysis' static route = { diff --git a/services/sonar/sonar-tech-debt.spec.js b/services/sonar/sonar-tech-debt.spec.js index b5c8678e6226a..b6ef2009205bd 100644 --- a/services/sonar/sonar-tech-debt.spec.js +++ b/services/sonar/sonar-tech-debt.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const SonarTechDebt = require('./sonar-tech-debt.service') +import { test, given } from 'sazerac' +import SonarTechDebt from './sonar-tech-debt.service.js' describe('SonarTechDebt', function () { test(SonarTechDebt.render, () => { diff --git a/services/sonar/sonar-tech-debt.tester.js b/services/sonar/sonar-tech-debt.tester.js index 651bc43c8ea23..f9137fe570a87 100644 --- a/services/sonar/sonar-tech-debt.tester.js +++ b/services/sonar/sonar-tech-debt.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isPercentage } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isPercentage } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() // The service tests targeting the legacy SonarQube API are mocked // because of the lack of publicly accessible, self-hosted, legacy SonarQube instances diff --git a/services/sonar/sonar-tests.service.js b/services/sonar/sonar-tests.service.js index 67d1226037105..ec10994ba3f7e 100644 --- a/services/sonar/sonar-tests.service.js +++ b/services/sonar/sonar-tests.service.js @@ -1,18 +1,16 @@ -'use strict' - -const { +import { testResultQueryParamSchema, renderTestResultBadge, - documentation: testResultsDocumentation, -} = require('../test-results') -const { metric: metricCount } = require('../text-formatters') -const SonarBase = require('./sonar-base') -const { + documentation as testResultsDocumentation, +} from '../test-results.js' +import { metric as metricCount } from '../text-formatters.js' +import SonarBase from './sonar-base.js' +import { documentation, keywords, queryParamSchema, getLabel, -} = require('./sonar-helpers') +} from './sonar-helpers.js' class SonarTestsSummary extends SonarBase { static category = 'build' @@ -241,4 +239,4 @@ class SonarTests extends SonarBase { } } -module.exports = [SonarTestsSummary, SonarTests] +export { SonarTestsSummary, SonarTests } diff --git a/services/sonar/sonar-tests.spec.js b/services/sonar/sonar-tests.spec.js index f16dc6137a332..81909602e18d3 100644 --- a/services/sonar/sonar-tests.spec.js +++ b/services/sonar/sonar-tests.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const SonarTests = require('./sonar-tests.service')[1] +import { test, given } from 'sazerac' +import { SonarTests } from './sonar-tests.service.js' describe('SonarTests', function () { test(SonarTests.render, () => { diff --git a/services/sonar/sonar-tests.tester.js b/services/sonar/sonar-tests.tester.js index 2b66bd9296f27..86f26d68a576f 100644 --- a/services/sonar/sonar-tests.tester.js +++ b/services/sonar/sonar-tests.tester.js @@ -1,19 +1,18 @@ -'use strict' - -const Joi = require('joi') -const { ServiceTester } = require('../tester') -const t = (module.exports = new ServiceTester({ - id: 'SonarTests', - title: 'SonarTests', - pathPrefix: '/sonar', -})) -const { +import Joi from 'joi' +import { ServiceTester } from '../tester.js' +import { isDefaultTestTotals, isDefaultCompactTestTotals, isCustomTestTotals, isCustomCompactTestTotals, -} = require('../test-validators') -const { isIntegerPercentage, isMetric } = require('../test-validators') + isIntegerPercentage, + isMetric, +} from '../test-validators.js' +export const t = new ServiceTester({ + id: 'SonarTests', + title: 'SonarTests', + pathPrefix: '/sonar', +}) const isMetricAllowZero = Joi.alternatives( isMetric, Joi.number().valid(0).required() diff --git a/services/sonar/sonar-violations.service.js b/services/sonar/sonar-violations.service.js index 54de34b9bf5b6..e82364bb9e184 100644 --- a/services/sonar/sonar-violations.service.js +++ b/services/sonar/sonar-violations.service.js @@ -1,14 +1,12 @@ -'use strict' - -const { colorScale } = require('../color-formatters') -const { metric } = require('../text-formatters') -const SonarBase = require('./sonar-base') -const { +import { colorScale } from '../color-formatters.js' +import { metric } from '../text-formatters.js' +import SonarBase from './sonar-base.js' +import { getLabel, documentation, keywords, queryParamWithFormatSchema, -} = require('./sonar-helpers') +} from './sonar-helpers.js' const violationsColorScale = colorScale( [1, 2, 3, 5], @@ -23,7 +21,7 @@ const violationCategoryColorMap = { info_violations: 'green', } -module.exports = class SonarViolations extends SonarBase { +export default class SonarViolations extends SonarBase { static category = 'analysis' static route = { diff --git a/services/sonar/sonar-violations.spec.js b/services/sonar/sonar-violations.spec.js index 3509ac0fd33bc..08aa8279125a9 100644 --- a/services/sonar/sonar-violations.spec.js +++ b/services/sonar/sonar-violations.spec.js @@ -1,8 +1,6 @@ -'use strict' - -const { test, given } = require('sazerac') -const { metric } = require('../text-formatters') -const SonarViolations = require('./sonar-violations.service') +import { test, given } from 'sazerac' +import { metric } from '../text-formatters.js' +import SonarViolations from './sonar-violations.service.js' describe('SonarViolations', function () { test(SonarViolations.render, () => { diff --git a/services/sonar/sonar-violations.tester.js b/services/sonar/sonar-violations.tester.js index f5c8095c2e35e..b757df1712bec 100644 --- a/services/sonar/sonar-violations.tester.js +++ b/services/sonar/sonar-violations.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { isMetric, withRegex } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { isMetric, withRegex } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isViolationsLongFormMetric = Joi.alternatives( Joi.allow(0), withRegex( diff --git a/services/sourceforge/sourceforge-open-tickets.service.js b/services/sourceforge/sourceforge-open-tickets.service.js index 6ad2cb4cee231..7cf956105b830 100644 --- a/services/sourceforge/sourceforge-open-tickets.service.js +++ b/services/sourceforge/sourceforge-open-tickets.service.js @@ -1,15 +1,13 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ count: nonNegativeInteger.required(), }).required() -module.exports = class SourceforgeOpenTickets extends BaseJsonService { +export default class SourceforgeOpenTickets extends BaseJsonService { static category = 'other' static route = { diff --git a/services/sourceforge/sourceforge-open-tickets.tester.js b/services/sourceforge/sourceforge-open-tickets.tester.js index 807a6c38e8bc3..4fa123e87b353 100644 --- a/services/sourceforge/sourceforge-open-tickets.tester.js +++ b/services/sourceforge/sourceforge-open-tickets.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('bugs') .get('/sevenzip/bugs.json') diff --git a/services/sourceforge/sourceforge.service.js b/services/sourceforge/sourceforge.service.js index 674337c728705..fb3ed63e604d6 100644 --- a/services/sourceforge/sourceforge.service.js +++ b/services/sourceforge/sourceforge.service.js @@ -1,11 +1,9 @@ -'use strict' - -const Joi = require('joi') -const moment = require('moment') -const { metric } = require('../text-formatters') -const { downloadCount } = require('../color-formatters') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import moment from 'moment' +import { metric } from '../text-formatters.js' +import { downloadCount } from '../color-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ total: nonNegativeInteger, @@ -31,7 +29,7 @@ const intervalMap = { }, } -module.exports = class Sourceforge extends BaseJsonService { +export default class Sourceforge extends BaseJsonService { static category = 'downloads' static route = { diff --git a/services/sourceforge/sourceforge.tester.js b/services/sourceforge/sourceforge.tester.js index 6ccd13192dc9a..e74de6f6fbf4d 100644 --- a/services/sourceforge/sourceforge.tester.js +++ b/services/sourceforge/sourceforge.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric, isMetricOverTimePeriod } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric, isMetricOverTimePeriod } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('total downloads').get('/dt/sevenzip.json').expectBadge({ label: 'downloads', diff --git a/services/sourcegraph/sourcegraph.service.js b/services/sourcegraph/sourcegraph.service.js index d2a218672d237..054685d1b284b 100644 --- a/services/sourcegraph/sourcegraph.service.js +++ b/services/sourcegraph/sourcegraph.service.js @@ -1,14 +1,12 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' const projectsCountRegex = /^\s[0-9]*(\.[0-9]k)?\sprojects$/ const schema = Joi.object({ value: Joi.string().regex(projectsCountRegex).required(), }).required() -module.exports = class Sourcegraph extends BaseJsonService { +export default class Sourcegraph extends BaseJsonService { static category = 'other' static route = { diff --git a/services/sourcegraph/sourcegraph.tester.js b/services/sourcegraph/sourcegraph.tester.js index 1f4bd9a2ee6c4..4d1428674354e 100644 --- a/services/sourcegraph/sourcegraph.tester.js +++ b/services/sourcegraph/sourcegraph.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { withRegex } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { withRegex } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() // Matches API responses such as "0 projects", "1 projects", "182 projects", "14.0k projects". // There may be other cases not covered by this regex, but hopefully the tested projects won't vary much. diff --git a/services/spack/spack.service.js b/services/spack/spack.service.js index fd0ead60d6641..54eb60bb7c67d 100644 --- a/services/spack/spack.service.js +++ b/services/spack/spack.service.js @@ -1,13 +1,11 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('..//version') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { renderVersionBadge } from '..//version.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ latest_version: Joi.string().required(), }).required() -module.exports = class SpackVersion extends BaseJsonService { +export default class SpackVersion extends BaseJsonService { static category = 'version' static route = { diff --git a/services/spack/spack.tester.js b/services/spack/spack.tester.js index f72dd327272cb..6a9fe7d38ef14 100644 --- a/services/spack/spack.tester.js +++ b/services/spack/spack.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isVPlusDottedVersionAtLeastOne } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isVPlusDottedVersionAtLeastOne } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('version (valid)').get('/adios2.json').expectBadge({ label: 'spack', diff --git a/services/spiget/spiget-base.js b/services/spiget/spiget-base.js index 9a434fe40b7d2..0dfb19af624db 100644 --- a/services/spiget/spiget-base.js +++ b/services/spiget/spiget-base.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' const resourceSchema = Joi.object({ downloads: Joi.number().required(), @@ -36,4 +34,4 @@ class BaseSpigetService extends BaseJsonService { } } -module.exports = { keywords, documentation, BaseSpigetService } +export { keywords, documentation, BaseSpigetService } diff --git a/services/spiget/spiget-download-size.service.js b/services/spiget/spiget-download-size.service.js index 9f8c34fdff735..21966b8d291a7 100644 --- a/services/spiget/spiget-download-size.service.js +++ b/services/spiget/spiget-download-size.service.js @@ -1,8 +1,6 @@ -'use strict' +import { BaseSpigetService, documentation, keywords } from './spiget-base.js' -const { BaseSpigetService, documentation, keywords } = require('./spiget-base') - -module.exports = class SpigetDownloadSize extends BaseSpigetService { +export default class SpigetDownloadSize extends BaseSpigetService { static category = 'size' static route = { diff --git a/services/spiget/spiget-download-size.tester.js b/services/spiget/spiget-download-size.tester.js index debdca96683c0..d1a1b20e1e93c 100644 --- a/services/spiget/spiget-download-size.tester.js +++ b/services/spiget/spiget-download-size.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isFileSize } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isFileSize } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('EssentialsX (id 9089)') .get('/9089.json') diff --git a/services/spiget/spiget-downloads.service.js b/services/spiget/spiget-downloads.service.js index 379e8fbe59877..8a3a78a19c372 100644 --- a/services/spiget/spiget-downloads.service.js +++ b/services/spiget/spiget-downloads.service.js @@ -1,10 +1,8 @@ -'use strict' +import { metric } from '../text-formatters.js' +import { downloadCount } from '../color-formatters.js' +import { BaseSpigetService, documentation, keywords } from './spiget-base.js' -const { metric } = require('../text-formatters') -const { downloadCount } = require('../color-formatters') -const { BaseSpigetService, documentation, keywords } = require('./spiget-base') - -module.exports = class SpigetDownloads extends BaseSpigetService { +export default class SpigetDownloads extends BaseSpigetService { static category = 'downloads' static route = { diff --git a/services/spiget/spiget-downloads.tester.js b/services/spiget/spiget-downloads.tester.js index e24e7f5d9f75d..7b372012b7644 100644 --- a/services/spiget/spiget-downloads.tester.js +++ b/services/spiget/spiget-downloads.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('EssentialsX (id 9089)').get('/9089.json').expectBadge({ label: 'downloads', diff --git a/services/spiget/spiget-latest-version.service.js b/services/spiget/spiget-latest-version.service.js index 87dfbd75a5109..321c03a7aab6b 100644 --- a/services/spiget/spiget-latest-version.service.js +++ b/services/spiget/spiget-latest-version.service.js @@ -1,15 +1,13 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { BaseSpigetService, documentation, keywords } = require('./spiget-base') +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { BaseSpigetService, documentation, keywords } from './spiget-base.js' const versionSchema = Joi.object({ downloads: Joi.number().required(), name: Joi.string().required(), }).required() -module.exports = class SpigetLatestVersion extends BaseSpigetService { +export default class SpigetLatestVersion extends BaseSpigetService { static category = 'version' static route = { diff --git a/services/spiget/spiget-latest-version.tester.js b/services/spiget/spiget-latest-version.tester.js index a14abc1aaabb7..bcc8f68fc9f38 100644 --- a/services/spiget/spiget-latest-version.tester.js +++ b/services/spiget/spiget-latest-version.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { withRegex } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { withRegex } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() // Note that Spigot versions can be anything (including just a string), so we'll make sure it's not returning 'not found' diff --git a/services/spiget/spiget-rating.service.js b/services/spiget/spiget-rating.service.js index 1a2962e39fb2a..4d1a41b7c65c5 100644 --- a/services/spiget/spiget-rating.service.js +++ b/services/spiget/spiget-rating.service.js @@ -1,10 +1,8 @@ -'use strict' +import { starRating, metric } from '../text-formatters.js' +import { floorCount } from '../color-formatters.js' +import { BaseSpigetService, documentation, keywords } from './spiget-base.js' -const { starRating, metric } = require('../text-formatters') -const { floorCount } = require('../color-formatters') -const { BaseSpigetService, documentation, keywords } = require('./spiget-base') - -module.exports = class SpigetRatings extends BaseSpigetService { +export default class SpigetRatings extends BaseSpigetService { static category = 'rating' static route = { diff --git a/services/spiget/spiget-rating.tester.js b/services/spiget/spiget-rating.tester.js index efe5a6b52dd81..7d44add2e58d2 100644 --- a/services/spiget/spiget-rating.tester.js +++ b/services/spiget/spiget-rating.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isStarRating, withRegex } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isStarRating, withRegex } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Stars - EssentialsX (id 9089)').get('/stars/9089.json').expectBadge({ label: 'rating', diff --git a/services/spiget/spiget-tested-versions.service.js b/services/spiget/spiget-tested-versions.service.js index dbab624030926..725bf68f34079 100644 --- a/services/spiget/spiget-tested-versions.service.js +++ b/services/spiget/spiget-tested-versions.service.js @@ -1,8 +1,6 @@ -'use strict' +import { BaseSpigetService, documentation, keywords } from './spiget-base.js' -const { BaseSpigetService, documentation, keywords } = require('./spiget-base') - -module.exports = class SpigetTestedVersions extends BaseSpigetService { +export default class SpigetTestedVersions extends BaseSpigetService { static category = 'platform-support' static route = { diff --git a/services/spiget/spiget-tested-versions.tester.js b/services/spiget/spiget-tested-versions.tester.js index 8ab77790e4664..723164f118912 100644 --- a/services/spiget/spiget-tested-versions.tester.js +++ b/services/spiget/spiget-tested-versions.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { withRegex } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { withRegex } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const multipleVersions = withRegex(/^([+]?\d*\.\d+)(-)([+]?\d*\.\d+)$/) diff --git a/services/stackexchange/stackexchange-helpers.js b/services/stackexchange/stackexchange-helpers.js index edb85404beeef..e86c4064d0160 100644 --- a/services/stackexchange/stackexchange-helpers.js +++ b/services/stackexchange/stackexchange-helpers.js @@ -1,9 +1,7 @@ -'use strict' +import { metric } from '../text-formatters.js' +import { floorCount as floorCountColor } from '../color-formatters.js' -const { metric } = require('../text-formatters') -const { floorCount: floorCountColor } = require('../color-formatters') - -module.exports = function renderQuestionsBadge({ +export default function renderQuestionsBadge({ suffix, stackexchangesite, query, diff --git a/services/stackexchange/stackexchange-monthlyquestions.service.js b/services/stackexchange/stackexchange-monthlyquestions.service.js index 02e2f9f9c0599..ff0143c63ddbc 100644 --- a/services/stackexchange/stackexchange-monthlyquestions.service.js +++ b/services/stackexchange/stackexchange-monthlyquestions.service.js @@ -1,16 +1,14 @@ -'use strict' - -const moment = require('moment') -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') -const renderQuestionsBadge = require('./stackexchange-helpers') +import moment from 'moment' +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' +import renderQuestionsBadge from './stackexchange-helpers.js' const tagSchema = Joi.object({ total: nonNegativeInteger, }).required() -module.exports = class StackExchangeMonthlyQuestions extends BaseJsonService { +export default class StackExchangeMonthlyQuestions extends BaseJsonService { static category = 'chat' static route = { diff --git a/services/stackexchange/stackexchange-monthlyquestions.tester.js b/services/stackexchange/stackexchange-monthlyquestions.tester.js index 88f8b16622c31..4341b282fd2c8 100644 --- a/services/stackexchange/stackexchange-monthlyquestions.tester.js +++ b/services/stackexchange/stackexchange-monthlyquestions.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetricOverTimePeriod } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetricOverTimePeriod } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Monthly Questions for StackOverflow Momentjs') .get('/stackoverflow/qm/momentjs.json') diff --git a/services/stackexchange/stackexchange-reputation.service.js b/services/stackexchange/stackexchange-reputation.service.js index fb0989b412f08..ea8b7b36bbac2 100644 --- a/services/stackexchange/stackexchange-reputation.service.js +++ b/services/stackexchange/stackexchange-reputation.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { floorCount: floorCountColor } = require('../color-formatters') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { floorCount as floorCountColor } from '../color-formatters.js' +import { BaseJsonService } from '../index.js' const reputationSchema = Joi.object({ items: Joi.array() @@ -16,7 +14,7 @@ const reputationSchema = Joi.object({ .required(), }).required() -module.exports = class StackExchangeReputation extends BaseJsonService { +export default class StackExchangeReputation extends BaseJsonService { static category = 'chat' static route = { diff --git a/services/stackexchange/stackexchange-reputation.tester.js b/services/stackexchange/stackexchange-reputation.tester.js index b6e3b4a7d4cff..12c043f10c7f1 100644 --- a/services/stackexchange/stackexchange-reputation.tester.js +++ b/services/stackexchange/stackexchange-reputation.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Invalid parameters') .get('/stackoverflow/r/invalidimage.json') diff --git a/services/stackexchange/stackexchange-taginfo.service.js b/services/stackexchange/stackexchange-taginfo.service.js index 72d6377d31ab3..af3d5d2557e46 100644 --- a/services/stackexchange/stackexchange-taginfo.service.js +++ b/services/stackexchange/stackexchange-taginfo.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') -const renderQuestionsBadge = require('./stackexchange-helpers') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' +import renderQuestionsBadge from './stackexchange-helpers.js' const tagSchema = Joi.object({ items: Joi.array() @@ -15,7 +13,7 @@ const tagSchema = Joi.object({ .required(), }).required() -module.exports = class StackExchangeQuestions extends BaseJsonService { +export default class StackExchangeQuestions extends BaseJsonService { static category = 'chat' static route = { diff --git a/services/stackexchange/stackexchange-taginfo.tester.js b/services/stackexchange/stackexchange-taginfo.tester.js index e80b518ce3a0c..9c615fb693a49 100644 --- a/services/stackexchange/stackexchange-taginfo.tester.js +++ b/services/stackexchange/stackexchange-taginfo.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isMetric } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isMetric } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('JavaScript Questions') .get('/stackoverflow/t/javascript.json') diff --git a/services/static-badge/query-string-static.service.js b/services/static-badge/query-string-static.service.js index 65afeeaa995e3..1555e55bcf777 100644 --- a/services/static-badge/query-string-static.service.js +++ b/services/static-badge/query-string-static.service.js @@ -1,13 +1,11 @@ -'use strict' - -const Joi = require('joi') -const { BaseStaticService } = require('..') +import Joi from 'joi' +import { BaseStaticService } from '../index.js' const queryParamSchema = Joi.object({ message: Joi.string().required(), }).required() -module.exports = class QueryStringStaticBadge extends BaseStaticService { +export default class QueryStringStaticBadge extends BaseStaticService { static category = 'static' static route = { diff --git a/services/static-badge/query-string-static.tester.js b/services/static-badge/query-string-static.tester.js index 2e1e7602a6bb8..b6609c250521b 100644 --- a/services/static-badge/query-string-static.tester.js +++ b/services/static-badge/query-string-static.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Missing message') .get('/static/v1.json?label=label&message=&color=blue') diff --git a/services/static-badge/static-badge.service.js b/services/static-badge/static-badge.service.js index 4ce76a780595e..0bcbe488e3b5f 100644 --- a/services/static-badge/static-badge.service.js +++ b/services/static-badge/static-badge.service.js @@ -1,9 +1,7 @@ -'use strict' +import { escapeFormat } from '../../core/badge-urls/path-helpers.js' +import { BaseStaticService } from '../index.js' -const { escapeFormat } = require('../../core/badge-urls/path-helpers') -const { BaseStaticService } = require('..') - -module.exports = class StaticBadge extends BaseStaticService { +export default class StaticBadge extends BaseStaticService { static category = 'static' static route = { diff --git a/services/static-badge/static-badge.tester.js b/services/static-badge/static-badge.tester.js index ccbeccc14f338..dc0b0218c0348 100644 --- a/services/static-badge/static-badge.tester.js +++ b/services/static-badge/static-badge.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Shields colorscheme color') .get('/badge/label-message-blue.json') diff --git a/services/steam/steam-base.js b/services/steam/steam-base.js index 4c2951c4c90f8..9ea5cae989cdc 100644 --- a/services/steam/steam-base.js +++ b/services/steam/steam-base.js @@ -1,9 +1,8 @@ -'use strict' /** * @module */ -const { BaseJsonService } = require('..') +import { BaseJsonService } from '../index.js' /** * The steam api is based like /{interface}/{method}/v{version}/ @@ -54,4 +53,4 @@ class BaseSteamAPI extends BaseJsonService { } } -module.exports = BaseSteamAPI +export default BaseSteamAPI diff --git a/services/steam/steam-workshop.service.js b/services/steam/steam-workshop.service.js index cd10a7377385b..23207eb80d9cf 100644 --- a/services/steam/steam-workshop.service.js +++ b/services/steam/steam-workshop.service.js @@ -1,11 +1,9 @@ -'use strict' - -const Joi = require('joi') -const prettyBytes = require('pretty-bytes') -const { metric, formatDate } = require('../text-formatters') -const { age: ageColor, downloadCount } = require('../color-formatters') -const { NotFound } = require('..') -const BaseSteamAPI = require('./steam-base') +import Joi from 'joi' +import prettyBytes from 'pretty-bytes' +import { metric, formatDate } from '../text-formatters.js' +import { age as ageColor, downloadCount } from '../color-formatters.js' +import { NotFound } from '../index.js' +import BaseSteamAPI from './steam-base.js' const documentation = `

@@ -402,7 +400,7 @@ class SteamFileViews extends SteamFileService { } } -module.exports = { +export { SteamCollectionSize, SteamFileSize, SteamFileReleaseDate, diff --git a/services/steam/steam-workshop.tester.js b/services/steam/steam-workshop.tester.js index c2963e3828d39..05b424ac9d658 100644 --- a/services/steam/steam-workshop.tester.js +++ b/services/steam/steam-workshop.tester.js @@ -1,10 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' +import { isMetric, isFileSize, isFormattedDate } from '../test-validators.js' -const { ServiceTester } = require('../tester') -const { isMetric, isFileSize, isFormattedDate } = require('../test-validators') - -const t = new ServiceTester({ id: 'steam', title: 'Steam Workshop Tests' }) -module.exports = t +export const t = new ServiceTester({ + id: 'steam', + title: 'Steam Workshop Tests', +}) t.create('Collection Files') .get('/collection-files/180077636.json') diff --git a/services/suggest.integration.js b/services/suggest.integration.js index c000ebbb9c090..68efaafcaae4f 100644 --- a/services/suggest.integration.js +++ b/services/suggest.integration.js @@ -1,19 +1,17 @@ -'use strict' - -const { expect } = require('chai') -const Camp = require('@shields_io/camp') -const portfinder = require('portfinder') -const config = require('config').util.toObject() -const got = require('../core/got-test-client') -const { setRoutes } = require('./suggest') -const GithubApiProvider = require('./github/github-api-provider') +import { expect } from 'chai' +import Camp from '@shields_io/camp' +import portfinder from 'portfinder' +import config from 'config' +import got from '../core/got-test-client.js' +import { setRoutes } from './suggest.js' +import GithubApiProvider from './github/github-api-provider.js' describe('Badge suggestions for', function () { const githubApiBaseUrl = process.env.GITHUB_URL || 'https://api.github.com' let token, apiProvider before(function () { - token = config.private.gh_token + token = config.util.toObject().private.gh_token if (!token) { throw Error('The integration tests require a gh_token to be set') } diff --git a/services/suggest.js b/services/suggest.js index 432c000001974..ce23724f9a5d3 100644 --- a/services/suggest.js +++ b/services/suggest.js @@ -4,10 +4,8 @@ // // This endpoint is called from frontend/components/suggestion-and-search.js. -'use strict' - -const { URL } = require('url') -const request = require('request') +import { URL } from 'url' +import request from 'request' function twitterPage(url) { if (url.protocol === null) { @@ -200,8 +198,4 @@ function setRoutes(allowedOrigin, githubApiProvider, server) { }) } -module.exports = { - findSuggestions, - githubLicense, - setRoutes, -} +export { findSuggestions, githubLicense, setRoutes } diff --git a/services/suggest.spec.js b/services/suggest.spec.js index 0288dc801a46e..3e2a9c8f495c1 100644 --- a/services/suggest.spec.js +++ b/services/suggest.spec.js @@ -1,12 +1,10 @@ -'use strict' - -const Camp = require('@shields_io/camp') -const { expect } = require('chai') -const nock = require('nock') -const portfinder = require('portfinder') -const got = require('../core/got-test-client') -const { setRoutes, githubLicense } = require('./suggest') -const GithubApiProvider = require('./github/github-api-provider') +import Camp from '@shields_io/camp' +import { expect } from 'chai' +import nock from 'nock' +import portfinder from 'portfinder' +import got from '../core/got-test-client.js' +import { setRoutes, githubLicense } from './suggest.js' +import GithubApiProvider from './github/github-api-provider.js' describe('Badge suggestions', function () { const githubApiBaseUrl = 'https://api.github.test' diff --git a/services/swagger/swagger-redirect.service.js b/services/swagger/swagger-redirect.service.js index 954bd131b0365..091acf5c08c6f 100644 --- a/services/swagger/swagger-redirect.service.js +++ b/services/swagger/swagger-redirect.service.js @@ -1,8 +1,6 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = [ +export default [ redirector({ category: 'other', name: 'SwaggerRedirect', diff --git a/services/swagger/swagger-redirect.tester.js b/services/swagger/swagger-redirect.tester.js index 3fec29b7d6a9d..c4658882236c1 100644 --- a/services/swagger/swagger-redirect.tester.js +++ b/services/swagger/swagger-redirect.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'SwaggerUrlRedirect', title: 'SwaggerUrlRedirect', pathPrefix: '/swagger/valid/2.0', -})) +}) t.create('swagger json') .get('/https/example.com/example.svg') diff --git a/services/swagger/swagger.service.js b/services/swagger/swagger.service.js index 422768dd9977c..be4127345553b 100644 --- a/services/swagger/swagger.service.js +++ b/services/swagger/swagger.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { optionalUrl } = require('../validators') -const { BaseJsonService, NotFound } = require('..') +import Joi from 'joi' +import { optionalUrl } from '../validators.js' +import { BaseJsonService, NotFound } from '../index.js' const schema = Joi.object() .keys({ @@ -19,7 +17,7 @@ const queryParamSchema = Joi.object({ specUrl: optionalUrl.required(), }).required() -module.exports = class SwaggerValidatorService extends BaseJsonService { +export default class SwaggerValidatorService extends BaseJsonService { static category = 'other' static route = { diff --git a/services/swagger/swagger.tester.js b/services/swagger/swagger.tester.js index 3f8749e46ff4e..6c154b6354223 100644 --- a/services/swagger/swagger.tester.js +++ b/services/swagger/swagger.tester.js @@ -1,4 +1,4 @@ -'use strict' +import { createServiceTester } from '../tester.js' const getURL = '/3.0.json?specUrl=https://example.com/example.json' const getURLBase = '/3.0.json?specUrl=' @@ -7,8 +7,7 @@ const apiGetURL = '/validator/debug' const apiGetQueryParams = { url: 'https://example.com/example.json', } - -const t = (module.exports = require('../tester').createServiceTester()) +export const t = await createServiceTester() t.create('Invalid') .get(getURL) diff --git a/services/symfony/sensiolabs-redirect.service.js b/services/symfony/sensiolabs-redirect.service.js index 35cdae90c4f13..5196e02b8d4a7 100644 --- a/services/symfony/sensiolabs-redirect.service.js +++ b/services/symfony/sensiolabs-redirect.service.js @@ -1,8 +1,6 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = [ +export default [ // The SymfonyInsight service was previously branded as SensioLabs, and // accordingly the badge path used to be /sensiolabs/i/projectUuid'. redirector({ diff --git a/services/symfony/sensiolabs-redirect.tester.js b/services/symfony/sensiolabs-redirect.tester.js index b5c409a1af024..fd10afb597236 100644 --- a/services/symfony/sensiolabs-redirect.tester.js +++ b/services/symfony/sensiolabs-redirect.tester.js @@ -1,11 +1,9 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'sensiolabs', title: 'SensioLabs', -})) +}) t.create('sensiolabs insight') .get('/i/825be328-29f8-44f7-a750-f82818ae9111.svg') diff --git a/services/symfony/symfony-insight-base.js b/services/symfony/symfony-insight-base.js index 4397492a2cc5f..8cace75a89741 100644 --- a/services/symfony/symfony-insight-base.js +++ b/services/symfony/symfony-insight-base.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { BaseXmlService, NotFound } = require('..') +import Joi from 'joi' +import { BaseXmlService, NotFound } from '../index.js' const violationSchema = Joi.object({ severity: Joi.equal('info', 'minor', 'major', 'critical').required(), @@ -126,8 +124,4 @@ class SymfonyInsightBase extends BaseXmlService { } } -module.exports = { - SymfonyInsightBase, - keywords, - gradeColors, -} +export { SymfonyInsightBase, keywords, gradeColors } diff --git a/services/symfony/symfony-insight-base.spec.js b/services/symfony/symfony-insight-base.spec.js index 19cc1cc41c561..91af55d63539b 100644 --- a/services/symfony/symfony-insight-base.spec.js +++ b/services/symfony/symfony-insight-base.spec.js @@ -1,8 +1,6 @@ -'use strict' - -const { expect } = require('chai') -const { NotFound } = require('..') -const { SymfonyInsightBase } = require('./symfony-insight-base') +import { expect } from 'chai' +import { NotFound } from '../index.js' +import { SymfonyInsightBase } from './symfony-insight-base.js' describe('SymfonyInsightBase', function () { context('transform()', function () { diff --git a/services/symfony/symfony-insight-grade.service.js b/services/symfony/symfony-insight-grade.service.js index 6c0a05594d30c..4e220915373a3 100644 --- a/services/symfony/symfony-insight-grade.service.js +++ b/services/symfony/symfony-insight-grade.service.js @@ -1,12 +1,10 @@ -'use strict' - -const { +import { SymfonyInsightBase, keywords, gradeColors, -} = require('./symfony-insight-base') +} from './symfony-insight-base.js' -module.exports = class SymfonyInsightGrade extends SymfonyInsightBase { +export default class SymfonyInsightGrade extends SymfonyInsightBase { static route = { base: 'symfony/i/grade', pattern: ':projectUuid', diff --git a/services/symfony/symfony-insight-grade.tester.js b/services/symfony/symfony-insight-grade.tester.js index 4c0a741b823bf..85d4be697c0bc 100644 --- a/services/symfony/symfony-insight-grade.tester.js +++ b/services/symfony/symfony-insight-grade.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) -const { sampleProjectUuid, noSymfonyToken } = require('./symfony-test-helpers') +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +import { sampleProjectUuid, noSymfonyToken } from './symfony-test-helpers.js' +export const t = await createServiceTester() t.create('valid project grade') .skipWhen(noSymfonyToken) diff --git a/services/symfony/symfony-insight-stars.service.js b/services/symfony/symfony-insight-stars.service.js index 78cb0f94bc334..1665c255b8d6d 100644 --- a/services/symfony/symfony-insight-stars.service.js +++ b/services/symfony/symfony-insight-stars.service.js @@ -1,11 +1,9 @@ -'use strict' - -const { starRating } = require('../text-formatters') -const { +import { starRating } from '../text-formatters.js' +import { SymfonyInsightBase, keywords, gradeColors, -} = require('./symfony-insight-base') +} from './symfony-insight-base.js' const gradeStars = { none: 0, @@ -15,7 +13,7 @@ const gradeStars = { platinum: 4, } -module.exports = class SymfonyInsightStars extends SymfonyInsightBase { +export default class SymfonyInsightStars extends SymfonyInsightBase { static route = { base: 'symfony/i/stars', pattern: ':projectUuid', diff --git a/services/symfony/symfony-insight-stars.tester.js b/services/symfony/symfony-insight-stars.tester.js index 7bc4162ae7968..0370fb01f2055 100644 --- a/services/symfony/symfony-insight-stars.tester.js +++ b/services/symfony/symfony-insight-stars.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { withRegex } = require('../test-validators') -const { sampleProjectUuid, noSymfonyToken } = require('./symfony-test-helpers') +import { createServiceTester } from '../tester.js' +import { withRegex } from '../test-validators.js' +import { sampleProjectUuid, noSymfonyToken } from './symfony-test-helpers.js' +export const t = await createServiceTester() t.create('valid project stars') .skipWhen(noSymfonyToken) diff --git a/services/symfony/symfony-insight-violations.service.js b/services/symfony/symfony-insight-violations.service.js index a00650865a4f2..b620286b254c4 100644 --- a/services/symfony/symfony-insight-violations.service.js +++ b/services/symfony/symfony-insight-violations.service.js @@ -1,8 +1,6 @@ -'use strict' +import { SymfonyInsightBase, keywords } from './symfony-insight-base.js' -const { SymfonyInsightBase, keywords } = require('./symfony-insight-base') - -module.exports = class SymfonyInsightViolations extends SymfonyInsightBase { +export default class SymfonyInsightViolations extends SymfonyInsightBase { static route = { base: 'symfony/i/violations', pattern: ':projectUuid', diff --git a/services/symfony/symfony-insight-violations.tester.js b/services/symfony/symfony-insight-violations.tester.js index 5d2e0306dd819..f35a9bbc63762 100644 --- a/services/symfony/symfony-insight-violations.tester.js +++ b/services/symfony/symfony-insight-violations.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { withRegex } = require('../test-validators') -const { sampleProjectUuid, noSymfonyToken } = require('./symfony-test-helpers') +import { createServiceTester } from '../tester.js' +import { withRegex } from '../test-validators.js' +import { sampleProjectUuid, noSymfonyToken } from './symfony-test-helpers.js' +export const t = await createServiceTester() t.create('valid project violations') .skipWhen(noSymfonyToken) diff --git a/services/symfony/symfony-insight.spec.js b/services/symfony/symfony-insight.spec.js index d2c0b10324829..ea9855d96878b 100644 --- a/services/symfony/symfony-insight.spec.js +++ b/services/symfony/symfony-insight.spec.js @@ -1,13 +1,11 @@ -'use strict' - -const { expect } = require('chai') -const nock = require('nock') -const { cleanUpNockAfterEach, defaultContext } = require('../test-helpers') -const SymfonyInsightGrade = require('./symfony-insight-grade.service') -const SymfonyInsightStars = require('./symfony-insight-stars.service') -const SymfonyInsightViolations = require('./symfony-insight-violations.service') -const { - sampleProjectUuid: projectUuid, +import { expect } from 'chai' +import nock from 'nock' +import { cleanUpNockAfterEach, defaultContext } from '../test-helpers.js' +import SymfonyInsightGrade from './symfony-insight-grade.service.js' +import SymfonyInsightStars from './symfony-insight-stars.service.js' +import SymfonyInsightViolations from './symfony-insight-violations.service.js' +import { + sampleProjectUuid as projectUuid, runningMockResponse, platinumMockResponse, goldMockResponse, @@ -23,7 +21,7 @@ const { user, token, config, -} = require('./symfony-test-helpers') +} from './symfony-test-helpers.js' // These tests are organized in a fairly unusual way because the service uses // XML, so it's difficult to decouple the parsing from the transform + render. diff --git a/services/symfony/symfony-test-helpers.js b/services/symfony/symfony-test-helpers.js index 3652fddd7b0db..3b8e3f7f64bbb 100644 --- a/services/symfony/symfony-test-helpers.js +++ b/services/symfony/symfony-test-helpers.js @@ -1,4 +1,5 @@ -'use strict' +import { noToken } from '../test-helpers.js' +import { SymfonyInsightBase } from './symfony-insight-base.js' const sampleProjectUuid = '825be328-29f8-44f7-a750-f82818ae9111' @@ -85,12 +86,9 @@ const config = { sl_insight_apiToken: token, }, } - -const { noToken } = require('../test-helpers') -const { SymfonyInsightBase } = require('./symfony-insight-base') const noSymfonyToken = noToken(SymfonyInsightBase) -module.exports = { +export { sampleProjectUuid, runningMockResponse, platinumMockResponse, diff --git a/services/teamcity/teamcity-base.js b/services/teamcity/teamcity-base.js index 4abbac669b731..1e811a7aef5c6 100644 --- a/services/teamcity/teamcity-base.js +++ b/services/teamcity/teamcity-base.js @@ -1,8 +1,6 @@ -'use strict' +import { BaseJsonService } from '../index.js' -const { BaseJsonService } = require('..') - -module.exports = class TeamCityBase extends BaseJsonService { +export default class TeamCityBase extends BaseJsonService { static auth = { userKey: 'teamcity_user', passKey: 'teamcity_pass', diff --git a/services/teamcity/teamcity-build-redirect.service.js b/services/teamcity/teamcity-build-redirect.service.js index 09684097b3ba9..bb63122228c5c 100644 --- a/services/teamcity/teamcity-build-redirect.service.js +++ b/services/teamcity/teamcity-build-redirect.service.js @@ -1,13 +1,11 @@ -'use strict' - -const { redirector } = require('..') +import { redirector } from '../index.js' const commonAttrs = { dateAdded: new Date('2019-09-15'), category: 'build', } -module.exports = [ +export default [ redirector({ ...commonAttrs, name: 'TeamCityBuildLegacyCodeBetterRedirect', diff --git a/services/teamcity/teamcity-build-redirect.tester.js b/services/teamcity/teamcity-build-redirect.tester.js index fc1870445c79b..c3f20425bbf24 100644 --- a/services/teamcity/teamcity-build-redirect.tester.js +++ b/services/teamcity/teamcity-build-redirect.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'TeamCityBuildRedirect', title: 'TeamCityBuildRedirect', pathPrefix: '/teamcity', -})) +}) t.create('codebetter') .get('/codebetter/IntelliJIdeaCe_JavaDecompilerEngineTests.svg') diff --git a/services/teamcity/teamcity-build.service.js b/services/teamcity/teamcity-build.service.js index b318decf7f897..bf90c10979a8f 100644 --- a/services/teamcity/teamcity-build.service.js +++ b/services/teamcity/teamcity-build.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { optionalUrl } = require('../validators') -const TeamCityBase = require('./teamcity-base') +import Joi from 'joi' +import { optionalUrl } from '../validators.js' +import TeamCityBase from './teamcity-base.js' const buildStatusSchema = Joi.object({ status: Joi.equal('SUCCESS', 'FAILURE', 'ERROR').required(), @@ -13,7 +11,7 @@ const queryParamSchema = Joi.object({ server: optionalUrl, }).required() -module.exports = class TeamCityBuild extends TeamCityBase { +export default class TeamCityBuild extends TeamCityBase { static category = 'build' static route = { diff --git a/services/teamcity/teamcity-build.spec.js b/services/teamcity/teamcity-build.spec.js index b19b6148801dd..f81599a62e3b7 100644 --- a/services/teamcity/teamcity-build.spec.js +++ b/services/teamcity/teamcity-build.spec.js @@ -1,10 +1,8 @@ -'use strict' - -const { expect } = require('chai') -const nock = require('nock') -const { cleanUpNockAfterEach, defaultContext } = require('../test-helpers') -const TeamCityBuild = require('./teamcity-build.service') -const { user, pass, host, config } = require('./teamcity-test-helpers') +import { expect } from 'chai' +import nock from 'nock' +import { cleanUpNockAfterEach, defaultContext } from '../test-helpers.js' +import TeamCityBuild from './teamcity-build.service.js' +import { user, pass, host, config } from './teamcity-test-helpers.js' describe('TeamCityBuild', function () { cleanUpNockAfterEach() diff --git a/services/teamcity/teamcity-build.tester.js b/services/teamcity/teamcity-build.tester.js index da29069c45482..3fcbb217e8b1e 100644 --- a/services/teamcity/teamcity-build.tester.js +++ b/services/teamcity/teamcity-build.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { withRegex } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { withRegex } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const buildStatusValues = Joi.equal('passing', 'failure', 'error').required() const buildStatusTextRegex = diff --git a/services/teamcity/teamcity-coverage-redirect.service.js b/services/teamcity/teamcity-coverage-redirect.service.js index d41c37dabc312..5c989dea9e647 100644 --- a/services/teamcity/teamcity-coverage-redirect.service.js +++ b/services/teamcity/teamcity-coverage-redirect.service.js @@ -1,8 +1,6 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = [ +export default [ redirector({ category: 'coverage', route: { diff --git a/services/teamcity/teamcity-coverage-redirect.tester.js b/services/teamcity/teamcity-coverage-redirect.tester.js index df0decb3912b7..aeb6ce0068c27 100644 --- a/services/teamcity/teamcity-coverage-redirect.tester.js +++ b/services/teamcity/teamcity-coverage-redirect.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'TeamCityCoverageRedirect', title: 'TeamCityCoverageRedirect', pathPrefix: '/teamcity/coverage', -})) +}) t.create('coverage') .get('/https/teamcity.jetbrains.com/ReactJSNet_PullRequests.svg') diff --git a/services/teamcity/teamcity-coverage.service.js b/services/teamcity/teamcity-coverage.service.js index cffb07ee3a1bc..8737da79e91c5 100644 --- a/services/teamcity/teamcity-coverage.service.js +++ b/services/teamcity/teamcity-coverage.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { coveragePercentage } = require('../color-formatters') -const { optionalUrl } = require('../validators') -const { InvalidResponse } = require('..') -const TeamCityBase = require('./teamcity-base') +import Joi from 'joi' +import { coveragePercentage } from '../color-formatters.js' +import { optionalUrl } from '../validators.js' +import { InvalidResponse } from '../index.js' +import TeamCityBase from './teamcity-base.js' const buildStatisticsSchema = Joi.object({ property: Joi.array() @@ -21,7 +19,7 @@ const queryParamSchema = Joi.object({ server: optionalUrl, }).required() -module.exports = class TeamCityCoverage extends TeamCityBase { +export default class TeamCityCoverage extends TeamCityBase { static category = 'coverage' static route = { diff --git a/services/teamcity/teamcity-coverage.spec.js b/services/teamcity/teamcity-coverage.spec.js index b6bcd35fb7a3e..f0fc578371af8 100644 --- a/services/teamcity/teamcity-coverage.spec.js +++ b/services/teamcity/teamcity-coverage.spec.js @@ -1,10 +1,8 @@ -'use strict' - -const { expect } = require('chai') -const nock = require('nock') -const { cleanUpNockAfterEach, defaultContext } = require('../test-helpers') -const TeamCityCoverage = require('./teamcity-coverage.service') -const { user, pass, host, config } = require('./teamcity-test-helpers') +import { expect } from 'chai' +import nock from 'nock' +import { cleanUpNockAfterEach, defaultContext } from '../test-helpers.js' +import TeamCityCoverage from './teamcity-coverage.service.js' +import { user, pass, host, config } from './teamcity-test-helpers.js' describe('TeamCityCoverage', function () { cleanUpNockAfterEach() diff --git a/services/teamcity/teamcity-coverage.tester.js b/services/teamcity/teamcity-coverage.tester.js index a259d150512ec..7a0c0387baab7 100644 --- a/services/teamcity/teamcity-coverage.tester.js +++ b/services/teamcity/teamcity-coverage.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isIntegerPercentage } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isIntegerPercentage } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('invalid buildId') .get('/btABC999.json') diff --git a/services/teamcity/teamcity-test-helpers.js b/services/teamcity/teamcity-test-helpers.js index 21d7a8b3ad89c..655a16cbd94fb 100644 --- a/services/teamcity/teamcity-test-helpers.js +++ b/services/teamcity/teamcity-test-helpers.js @@ -1,5 +1,3 @@ -'use strict' - const user = 'admin' const pass = 'password' const host = 'mycompany.teamcity.com' @@ -17,9 +15,4 @@ const config = { }, } -module.exports = { - user, - pass, - host, - config, -} +export { user, pass, host, config } diff --git a/services/test-helpers.js b/services/test-helpers.js index cc3013135d4ac..0896cf57d5935 100644 --- a/services/test-helpers.js +++ b/services/test-helpers.js @@ -1,9 +1,8 @@ -'use strict' - -const nock = require('nock') -const request = require('request') -const runnerConfig = require('config').util.toObject() -const { promisify } = require('../core/base-service/legacy-request-handler') +import nock from 'nock' +import request from 'request' +import config from 'config' +import { promisify } from '../core/base-service/legacy-request-handler.js' +const runnerConfig = config.util.toObject() function cleanUpNockAfterEach() { afterEach(function () { @@ -36,9 +35,4 @@ const sendAndCacheRequest = promisify(request) const defaultContext = { sendAndCacheRequest } -module.exports = { - cleanUpNockAfterEach, - noToken, - sendAndCacheRequest, - defaultContext, -} +export { cleanUpNockAfterEach, noToken, sendAndCacheRequest, defaultContext } diff --git a/services/test-results.js b/services/test-results.js index a46841939e65a..84f6831762087 100644 --- a/services/test-results.js +++ b/services/test-results.js @@ -1,6 +1,4 @@ -'use strict' - -const Joi = require('joi') +import Joi from 'joi' const testResultQueryParamSchema = Joi.object({ compact_message: Joi.equal(''), @@ -106,7 +104,7 @@ const documentation = `

` -module.exports = { +export { testResultQueryParamSchema, renderTestResultMessage, renderTestResultBadge, diff --git a/services/test-results.spec.js b/services/test-results.spec.js index 5953f51954a31..d9c337676092c 100644 --- a/services/test-results.spec.js +++ b/services/test-results.spec.js @@ -1,10 +1,8 @@ -'use strict' - -const { test, given } = require('sazerac') -const { +import { test, given } from 'sazerac' +import { renderTestResultMessage, renderTestResultBadge, -} = require('./test-results') +} from './test-results.js' describe('Test result helpers', function () { function renderBothStyles(props) { diff --git a/services/test-validators.js b/services/test-validators.js index b6a30c2cb1e9d..b20bf071ab304 100644 --- a/services/test-validators.js +++ b/services/test-validators.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { semver: isSemver } = require('./validators') +import Joi from 'joi' +import { semver as isSemver } from './validators.js' /* Note: @@ -148,7 +146,7 @@ const isCustomCompactTestTotals = makeCompactTestTotalsValidator({ skipped: '🤷', }) -module.exports = { +export { isSemver, isVPlusTripleDottedVersion, isVPlusDottedVersionAtLeastOne, diff --git a/services/tester.js b/services/tester.js index c9d230b0f968c..1eead4670f29d 100644 --- a/services/tester.js +++ b/services/tester.js @@ -1,9 +1,4 @@ -'use strict' +import createServiceTester from '../core/service-test-runner/create-service-tester.js' +import ServiceTester from '../core/service-test-runner/service-tester.js' -const createServiceTester = require('../core/service-test-runner/create-service-tester') -const ServiceTester = require('../core/service-test-runner/service-tester') - -module.exports = { - createServiceTester, - ServiceTester, -} +export { createServiceTester, ServiceTester } diff --git a/services/testspace/testspace-base.js b/services/testspace/testspace-base.js index b35b929f95aeb..1bb0d209a7353 100644 --- a/services/testspace/testspace-base.js +++ b/services/testspace/testspace-base.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService, NotFound } = require('..') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService, NotFound } from '../index.js' // https://help.testspace.com/docs/reference/web-api#list-results // case_counts|array|The contained cases [passed, failed, na, errored]|counters of result @@ -25,7 +23,7 @@ const schema = Joi.array() // Org is owner/account // Project is generally a repository // Space is a container, often a branch -module.exports = class TestspaceBase extends BaseJsonService { +export default class TestspaceBase extends BaseJsonService { static category = 'build' static defaultBadgeData = { label: 'tests' } diff --git a/services/testspace/testspace-base.spec.js b/services/testspace/testspace-base.spec.js index 7d46fa8e6c2ea..ff55a819653ce 100644 --- a/services/testspace/testspace-base.spec.js +++ b/services/testspace/testspace-base.spec.js @@ -1,8 +1,6 @@ -'use strict' - -const { expect } = require('chai') -const { NotFound } = require('..') -const TestspaceBase = require('./testspace-base') +import { expect } from 'chai' +import { NotFound } from '../index.js' +import TestspaceBase from './testspace-base.js' describe('TestspaceBase', function () { it('throws NotFound when response is missing space results', function () { diff --git a/services/testspace/testspace-test-count.service.js b/services/testspace/testspace-test-count.service.js index 38a73558dcc3a..0a217254357b8 100644 --- a/services/testspace/testspace-test-count.service.js +++ b/services/testspace/testspace-test-count.service.js @@ -1,9 +1,7 @@ -'use strict' +import { metric as metricCount } from '../text-formatters.js' +import TestspaceBase from './testspace-base.js' -const { metric: metricCount } = require('../text-formatters') -const TestspaceBase = require('./testspace-base') - -module.exports = class TestspaceTestCount extends TestspaceBase { +export default class TestspaceTestCount extends TestspaceBase { static route = { base: 'testspace', pattern: diff --git a/services/testspace/testspace-test-count.spec.js b/services/testspace/testspace-test-count.spec.js index 9a03d3530ec39..cb6b59b06e0fc 100644 --- a/services/testspace/testspace-test-count.spec.js +++ b/services/testspace/testspace-test-count.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const TestspaceTestCount = require('./testspace-test-count.service') +import { test, given } from 'sazerac' +import TestspaceTestCount from './testspace-test-count.service.js' describe('TestspaceTestCount', function () { test(TestspaceTestCount.render, () => { diff --git a/services/testspace/testspace-test-count.tester.js b/services/testspace/testspace-test-count.tester.js index b57fd9b25f010..2ca45d6486096 100644 --- a/services/testspace/testspace-test-count.tester.js +++ b/services/testspace/testspace-test-count.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) -const { isMetric } = require('../test-validators') +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +import { isMetric } from '../test-validators.js' +export const t = await createServiceTester() const isMetricAllowZero = Joi.alternatives( isMetric, Joi.number().valid(0).required() diff --git a/services/testspace/testspace-test-pass-ratio.service.js b/services/testspace/testspace-test-pass-ratio.service.js index dbe4526cfd5b6..ea78e7eaec6c9 100644 --- a/services/testspace/testspace-test-pass-ratio.service.js +++ b/services/testspace/testspace-test-pass-ratio.service.js @@ -1,8 +1,6 @@ -'use strict' +import TestspaceBase from './testspace-base.js' -const TestspaceBase = require('./testspace-base') - -module.exports = class TestspacePassRatio extends TestspaceBase { +export default class TestspacePassRatio extends TestspaceBase { static route = { base: 'testspace/pass-ratio', pattern: ':org/:project/:space+', diff --git a/services/testspace/testspace-test-pass-ratio.spec.js b/services/testspace/testspace-test-pass-ratio.spec.js index 4cf4fe3cd2c49..1aed0d418955e 100644 --- a/services/testspace/testspace-test-pass-ratio.spec.js +++ b/services/testspace/testspace-test-pass-ratio.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const TestspacePassRatio = require('./testspace-test-pass-ratio.service') +import { test, given } from 'sazerac' +import TestspacePassRatio from './testspace-test-pass-ratio.service.js' describe('TestspacePassRatio', function () { test(TestspacePassRatio.render, () => { diff --git a/services/testspace/testspace-test-pass-ratio.tester.js b/services/testspace/testspace-test-pass-ratio.tester.js index 42d81db751161..4d0de2d72abb0 100644 --- a/services/testspace/testspace-test-pass-ratio.tester.js +++ b/services/testspace/testspace-test-pass-ratio.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isIntegerPercentage } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { isIntegerPercentage } from '../test-validators.js' +export const t = await createServiceTester() t.create('Non-existent or unauthorized org') .get('/swellaby1239017823123/swellaby:testspace-sample/main.json') diff --git a/services/testspace/testspace-test-summary.service.js b/services/testspace/testspace-test-summary.service.js index ca5fcd5aed33b..f5176012a815b 100644 --- a/services/testspace/testspace-test-summary.service.js +++ b/services/testspace/testspace-test-summary.service.js @@ -1,13 +1,11 @@ -'use strict' - -const { +import { documentation, testResultQueryParamSchema, renderTestResultBadge, -} = require('../test-results') -const TestspaceBase = require('./testspace-base') +} from '../test-results.js' +import TestspaceBase from './testspace-base.js' -module.exports = class TestspaceTests extends TestspaceBase { +export default class TestspaceTests extends TestspaceBase { static route = { base: 'testspace/tests', pattern: ':org/:project/:space+', diff --git a/services/testspace/testspace-test-summary.tester.js b/services/testspace/testspace-test-summary.tester.js index aaebf6868d7ba..2a4bc4ccf02a5 100644 --- a/services/testspace/testspace-test-summary.tester.js +++ b/services/testspace/testspace-test-summary.tester.js @@ -1,12 +1,11 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { +import { createServiceTester } from '../tester.js' +import { isDefaultTestTotals, isDefaultCompactTestTotals, isCustomTestTotals, isCustomCompactTestTotals, -} = require('../test-validators') +} from '../test-validators.js' +export const t = await createServiceTester() t.create('Tests') .get('/swellaby/swellaby:testspace-sample/main.json') diff --git a/services/text-formatters.js b/services/text-formatters.js index 95cb600d4e3d0..50525fd6debda 100644 --- a/services/text-formatters.js +++ b/services/text-formatters.js @@ -2,9 +2,7 @@ * Commonly-used functions for formatting text in badge labels. Includes * ordinal numbers, currency codes, star ratings, versions, etc. */ -'use strict' - -const moment = require('moment') +import moment from 'moment' moment().format() function starRating(rating, max = 5) { @@ -124,7 +122,7 @@ function formatRelativeDate(timestamp) { .toLowerCase() } -module.exports = { +export { starRating, currencyFromCode, ordinalNumber, diff --git a/services/text-formatters.spec.js b/services/text-formatters.spec.js index a1b5d0ae048b8..efcfae4c15b96 100644 --- a/services/text-formatters.spec.js +++ b/services/text-formatters.spec.js @@ -1,8 +1,6 @@ -'use strict' - -const { test, given } = require('sazerac') -const sinon = require('sinon') -const { +import { test, given } from 'sazerac' +import sinon from 'sinon' +import { starRating, currencyFromCode, ordinalNumber, @@ -12,7 +10,7 @@ const { maybePluralize, formatDate, formatRelativeDate, -} = require('./text-formatters') +} from './text-formatters.js' describe('Text formatters', function () { test(starRating, () => { diff --git a/services/tokei/tokei.service.js b/services/tokei/tokei.service.js index 97124289aee7c..dd01918b8d404 100644 --- a/services/tokei/tokei.service.js +++ b/services/tokei/tokei.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ lines: nonNegativeInteger, @@ -26,7 +24,7 @@ const documentation = `

` -module.exports = class Tokei extends BaseJsonService { +export default class Tokei extends BaseJsonService { static category = 'size' static route = { base: 'tokei/lines', pattern: ':provider/:user/:repo' } diff --git a/services/tokei/tokei.tester.js b/services/tokei/tokei.tester.js index 0b310c8288ad2..9671c7b58848b 100644 --- a/services/tokei/tokei.tester.js +++ b/services/tokei/tokei.tester.js @@ -1,10 +1,7 @@ -'use strict' +import { ServiceTester } from '../tester.js' +import { isMetric } from '../test-validators.js' -const { ServiceTester } = require('../tester') -const { isMetric } = require('../test-validators') - -const t = new ServiceTester({ id: 'tokei', title: 'Tokei LOC Tests' }) -module.exports = t +export const t = new ServiceTester({ id: 'tokei', title: 'Tokei LOC Tests' }) t.create('GitHub LOC') .get('/lines/github/badges/shields.json') diff --git a/services/travis/travis-build.service.js b/services/travis/travis-build.service.js index b679ffcdfb592..2c52799588a4c 100644 --- a/services/travis/travis-build.service.js +++ b/services/travis/travis-build.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus, renderBuildStatusBadge } = require('../build-status') -const { BaseSvgScrapingService } = require('..') +import Joi from 'joi' +import { isBuildStatus, renderBuildStatusBadge } from '../build-status.js' +import { BaseSvgScrapingService } from '../index.js' const schema = Joi.object({ message: Joi.alternatives() @@ -10,7 +8,7 @@ const schema = Joi.object({ .required(), }).required() -module.exports = class TravisBuild extends BaseSvgScrapingService { +export default class TravisBuild extends BaseSvgScrapingService { static category = 'build' static route = { diff --git a/services/travis/travis-build.tester.js b/services/travis/travis-build.tester.js index a7d6fcfef7e28..f6bd4df392f79 100644 --- a/services/travis/travis-build.tester.js +++ b/services/travis/travis-build.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus } = require('../build-status') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { isBuildStatus } from '../build-status.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() // Travis (.org) CI diff --git a/services/travis/travis-php-version-redirect.service.js b/services/travis/travis-php-version-redirect.service.js index 3fc26b116d96e..a61b4467fcff9 100644 --- a/services/travis/travis-php-version-redirect.service.js +++ b/services/travis/travis-php-version-redirect.service.js @@ -1,6 +1,4 @@ -'use strict' - -const { redirector } = require('..') +import { redirector } from '../index.js' const ciRedirect = redirector({ category: 'platform-support', @@ -25,4 +23,4 @@ const branchRedirect = redirector({ dateAdded: new Date('2020-07-12'), }) -module.exports = { ciRedirect, branchRedirect } +export { ciRedirect, branchRedirect } diff --git a/services/travis/travis-php-version-redirect.tester.js b/services/travis/travis-php-version-redirect.tester.js index adf9fb66695a7..4326a1175d3dc 100644 --- a/services/travis/travis-php-version-redirect.tester.js +++ b/services/travis/travis-php-version-redirect.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'TravisPhpVersionRedirect', title: 'TravisPhpVersionRedirect', pathPrefix: '/', -})) +}) t.create('travis-ci no branch') .get('travis-ci/php-v/symfony/symfony.svg') diff --git a/services/travis/travis-php-version.service.js b/services/travis/travis-php-version.service.js index e11312cb6fe97..f8a29a39cd76d 100644 --- a/services/travis/travis-php-version.service.js +++ b/services/travis/travis-php-version.service.js @@ -1,12 +1,10 @@ -'use strict' - -const Joi = require('joi') -const { +import Joi from 'joi' +import { minorVersion, versionReduction, getPhpReleases, -} = require('../php-version') -const { BaseJsonService } = require('..') +} from '../php-version.js' +import { BaseJsonService } from '../index.js' const optionalNumberOrString = Joi.alternatives(Joi.string(), Joi.number()) const schema = Joi.object({ @@ -23,7 +21,7 @@ const schema = Joi.object({ }).required(), }).required() -module.exports = class TravisPhpVersion extends BaseJsonService { +export default class TravisPhpVersion extends BaseJsonService { static category = 'platform-support' static route = { diff --git a/services/travis/travis-php-version.tester.js b/services/travis/travis-php-version.tester.js index 4213a167b894d..16a23bd0c5183 100644 --- a/services/travis/travis-php-version.tester.js +++ b/services/travis/travis-php-version.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isPhpVersionReduction } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isPhpVersionReduction } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('gets the package version of symfony 5.1') .get('/symfony/symfony/5.1.json') diff --git a/services/treeware/treeware-trees.service.js b/services/treeware/treeware-trees.service.js index 3e27679032367..1fcbc10125cfb 100644 --- a/services/treeware/treeware-trees.service.js +++ b/services/treeware/treeware-trees.service.js @@ -1,16 +1,14 @@ -'use strict' - -const crypto = require('crypto') -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { floorCount } = require('../color-formatters') -const { BaseJsonService } = require('..') +import crypto from 'crypto' +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { floorCount } from '../color-formatters.js' +import { BaseJsonService } from '../index.js' const apiSchema = Joi.object({ total: Joi.number().required(), }).required() -module.exports = class TreewareTrees extends BaseJsonService { +export default class TreewareTrees extends BaseJsonService { static category = 'other' static route = { diff --git a/services/treeware/treeware-trees.tester.js b/services/treeware/treeware-trees.tester.js index bc2d1a84f4736..07ada0cf8de39 100644 --- a/services/treeware/treeware-trees.tester.js +++ b/services/treeware/treeware-trees.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isMetric } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { isMetric } from '../test-validators.js' +export const t = await createServiceTester() t.create('request for existing package') .get('/stoplightio/spectral.json') diff --git a/services/twitch/twitch-base.js b/services/twitch/twitch-base.js index b6526a50a3553..85d4e6b08303f 100644 --- a/services/twitch/twitch-base.js +++ b/services/twitch/twitch-base.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' const tokenSchema = Joi.object({ access_token: Joi.string().required(), @@ -16,7 +14,7 @@ function sleep(ms) { } // Abstract class for Twitch badges -module.exports = class TwitchBase extends BaseJsonService { +export default class TwitchBase extends BaseJsonService { static auth = { userKey: 'twitch_client_id', passKey: 'twitch_client_secret', diff --git a/services/twitch/twitch.service.js b/services/twitch/twitch.service.js index 2bd3f53a320dc..402f7e52cc459 100644 --- a/services/twitch/twitch.service.js +++ b/services/twitch/twitch.service.js @@ -1,13 +1,11 @@ -'use strict' - -const Joi = require('joi') -const TwitchBase = require('./twitch-base') +import Joi from 'joi' +import TwitchBase from './twitch-base.js' const helixSchema = Joi.object({ data: Joi.array().required(), }) -module.exports = class TwitchStatus extends TwitchBase { +export default class TwitchStatus extends TwitchBase { static category = 'social' static route = { diff --git a/services/twitch/twitch.spec.js b/services/twitch/twitch.spec.js index 7573d5542795d..c3ec31522eb66 100644 --- a/services/twitch/twitch.spec.js +++ b/services/twitch/twitch.spec.js @@ -1,9 +1,7 @@ -'use strict' - -const { expect } = require('chai') -const nock = require('nock') -const { cleanUpNockAfterEach, defaultContext } = require('../test-helpers') -const TwitchStatus = require('./twitch.service') +import { expect } from 'chai' +import nock from 'nock' +import { cleanUpNockAfterEach, defaultContext } from '../test-helpers.js' +import TwitchStatus from './twitch.service.js' describe('TwitchStatus', function () { describe('auth', function () { diff --git a/services/twitch/twitch.tester.js b/services/twitch/twitch.tester.js index 53f3f68f5904c..9f68a1d82caae 100644 --- a/services/twitch/twitch.tester.js +++ b/services/twitch/twitch.tester.js @@ -1,14 +1,13 @@ -'use strict' +import Joi from 'joi' +import { ServiceTester } from '../tester.js' +import { noToken } from '../test-helpers.js' +import _noTwitchToken from './twitch.service.js' +const noTwitchToken = noToken(_noTwitchToken) -const Joi = require('joi') -const { ServiceTester } = require('../tester') -const { noToken } = require('../test-helpers') -const noTwitchToken = noToken(require('./twitch.service')) - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'twitch', title: 'Twitch', -})) +}) // the first request would take longer since we need to wait for a token t.create('Status of andyonthewings') diff --git a/services/twitter/twitter-redirect.service.js b/services/twitter/twitter-redirect.service.js index b7cacce78661d..5291115dbdf43 100644 --- a/services/twitter/twitter-redirect.service.js +++ b/services/twitter/twitter-redirect.service.js @@ -1,8 +1,6 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = [ +export default [ redirector({ category: 'social', name: 'TwitterUrlRedirect', diff --git a/services/twitter/twitter-redirect.tester.js b/services/twitter/twitter-redirect.tester.js index 84d0f9a2895c4..e777d9a5bee72 100644 --- a/services/twitter/twitter-redirect.tester.js +++ b/services/twitter/twitter-redirect.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'TwitterUrlRedirect', title: 'TwitterUrlRedirect', pathPrefix: '/twitter/url', -})) +}) t.create('twitter') .get('/https/shields.io.svg') diff --git a/services/twitter/twitter.service.js b/services/twitter/twitter.service.js index a46c82142149a..2da76486a0846 100644 --- a/services/twitter/twitter.service.js +++ b/services/twitter/twitter.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { optionalUrl } = require('../validators') -const { BaseService, BaseJsonService, NotFound } = require('..') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { optionalUrl } from '../validators.js' +import { BaseService, BaseJsonService, NotFound } from '../index.js' const queryParamSchema = Joi.object({ url: optionalUrl.required(), @@ -115,4 +113,4 @@ class TwitterFollow extends BaseJsonService { } } -module.exports = [TwitterUrl, TwitterFollow] +export default [TwitterUrl, TwitterFollow] diff --git a/services/twitter/twitter.tester.js b/services/twitter/twitter.tester.js index 50941c9838176..e15b79f08f4dd 100644 --- a/services/twitter/twitter.tester.js +++ b/services/twitter/twitter.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { isMetric } from '../test-validators.js' +import { ServiceTester } from '../tester.js' -const { isMetric } = require('../test-validators') -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'twitter', title: 'Twitter', -})) +}) t.create('Followers') .get('/follow/shields_io.json') diff --git a/services/ubuntu/ubuntu.service.js b/services/ubuntu/ubuntu.service.js index c4c407da69262..c584c95503edc 100644 --- a/services/ubuntu/ubuntu.service.js +++ b/services/ubuntu/ubuntu.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { BaseJsonService, NotFound } = require('..') +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { BaseJsonService, NotFound } from '../index.js' const schema = Joi.object({ entries: Joi.array() @@ -14,7 +12,7 @@ const schema = Joi.object({ .required(), }).required() -module.exports = class Ubuntu extends BaseJsonService { +export default class Ubuntu extends BaseJsonService { static category = 'version' static route = { diff --git a/services/ubuntu/ubuntu.tester.js b/services/ubuntu/ubuntu.tester.js index a20217c741641..c622493075b08 100644 --- a/services/ubuntu/ubuntu.tester.js +++ b/services/ubuntu/ubuntu.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isUbuntuVersion = Joi.string().regex( /^v(\d+:)?\d+(\.\d+)*([\w\\.]*)?([-+~].*)?$/ diff --git a/services/uptimerobot/uptimerobot-base.js b/services/uptimerobot/uptimerobot-base.js index d929863efd3f5..2afa607b9fa70 100644 --- a/services/uptimerobot/uptimerobot-base.js +++ b/services/uptimerobot/uptimerobot-base.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService, InvalidParameter, InvalidResponse } = require('..') +import Joi from 'joi' +import { BaseJsonService, InvalidParameter, InvalidResponse } from '../index.js' // https://uptimerobot.com/api // POST getMonitors @@ -38,7 +36,7 @@ const singleMonitorResponseWithUptime = Joi.alternatives( }).required() ) -module.exports = class UptimeRobotBase extends BaseJsonService { +export default class UptimeRobotBase extends BaseJsonService { static category = 'monitoring' static ensureIsMonitorApiKey(value) { diff --git a/services/uptimerobot/uptimerobot-ratio.service.js b/services/uptimerobot/uptimerobot-ratio.service.js index ac7fb2bb16fbc..fa98e8ed1fd05 100644 --- a/services/uptimerobot/uptimerobot-ratio.service.js +++ b/services/uptimerobot/uptimerobot-ratio.service.js @@ -1,11 +1,9 @@ -'use strict' - -const { colorScale } = require('../color-formatters') -const UptimeRobotBase = require('./uptimerobot-base') +import { colorScale } from '../color-formatters.js' +import UptimeRobotBase from './uptimerobot-base.js' const ratioColor = colorScale([10, 30, 50, 70]) -module.exports = class UptimeRobotRatio extends UptimeRobotBase { +export default class UptimeRobotRatio extends UptimeRobotBase { static route = { base: 'uptimerobot/ratio', pattern: ':numberOfDays(\\d+)?/:monitorSpecificKey', diff --git a/services/uptimerobot/uptimerobot-ratio.tester.js b/services/uptimerobot/uptimerobot-ratio.tester.js index 049fc9c05ac05..db6b55c9da933 100644 --- a/services/uptimerobot/uptimerobot-ratio.tester.js +++ b/services/uptimerobot/uptimerobot-ratio.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const { isPercentage } = require('../test-validators') -const { invalidJSON } = require('../response-fixtures') -const t = (module.exports = require('../tester').createServiceTester()) +import { isPercentage } from '../test-validators.js' +import { invalidJSON } from '../response-fixtures.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Uptime Robot: Percentage (valid)') .get('/m778918918-3e92c097147760ee39d02d36.json') diff --git a/services/uptimerobot/uptimerobot-status.service.js b/services/uptimerobot/uptimerobot-status.service.js index c4b5614201d42..a468175c42b62 100644 --- a/services/uptimerobot/uptimerobot-status.service.js +++ b/services/uptimerobot/uptimerobot-status.service.js @@ -1,8 +1,6 @@ -'use strict' +import UptimeRobotBase from './uptimerobot-base.js' -const UptimeRobotBase = require('./uptimerobot-base') - -module.exports = class UptimeRobotStatus extends UptimeRobotBase { +export default class UptimeRobotStatus extends UptimeRobotBase { static route = { base: 'uptimerobot/status', pattern: ':monitorSpecificKey', diff --git a/services/uptimerobot/uptimerobot-status.tester.js b/services/uptimerobot/uptimerobot-status.tester.js index 319d4c0456166..dca7e92554e3d 100644 --- a/services/uptimerobot/uptimerobot-status.tester.js +++ b/services/uptimerobot/uptimerobot-status.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { invalidJSON } = require('../response-fixtures') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { invalidJSON } from '../response-fixtures.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isUptimeStatus = Joi.string().valid( 'paused', diff --git a/services/vaadin-directory/vaadin-directory-base.js b/services/vaadin-directory/vaadin-directory-base.js index fe05d0f1dd2aa..b567df2b3177e 100644 --- a/services/vaadin-directory/vaadin-directory-base.js +++ b/services/vaadin-directory/vaadin-directory-base.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ ratingCount: nonNegativeInteger, @@ -29,4 +27,4 @@ class BaseVaadinDirectoryService extends BaseJsonService { } } -module.exports = { BaseVaadinDirectoryService } +export { BaseVaadinDirectoryService } diff --git a/services/vaadin-directory/vaadin-directory-rating-count.service.js b/services/vaadin-directory/vaadin-directory-rating-count.service.js index 56518f6c8db72..e8af652c66d28 100644 --- a/services/vaadin-directory/vaadin-directory-rating-count.service.js +++ b/services/vaadin-directory/vaadin-directory-rating-count.service.js @@ -1,12 +1,8 @@ -'use strict' +import { metric } from '../text-formatters.js' +import { floorCount as floorCountColor } from '../color-formatters.js' +import { BaseVaadinDirectoryService } from './vaadin-directory-base.js' -const { metric } = require('../text-formatters') -const { floorCount: floorCountColor } = require('../color-formatters') -const { BaseVaadinDirectoryService } = require('./vaadin-directory-base') - -module.exports = class VaadinDirectoryRatingCount extends ( - BaseVaadinDirectoryService -) { +export default class VaadinDirectoryRatingCount extends BaseVaadinDirectoryService { static category = 'rating' static route = { diff --git a/services/vaadin-directory/vaadin-directory-rating-count.tester.js b/services/vaadin-directory/vaadin-directory-rating-count.tester.js index 75942ed786220..8b43ed993cb71 100644 --- a/services/vaadin-directory/vaadin-directory-rating-count.tester.js +++ b/services/vaadin-directory/vaadin-directory-rating-count.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('rating count of component') .get('/rating-count/vaadinvaadin-grid.json') diff --git a/services/vaadin-directory/vaadin-directory-rating.service.js b/services/vaadin-directory/vaadin-directory-rating.service.js index a829de8856dbf..c07ddf091b099 100644 --- a/services/vaadin-directory/vaadin-directory-rating.service.js +++ b/services/vaadin-directory/vaadin-directory-rating.service.js @@ -1,12 +1,8 @@ -'use strict' +import { starRating } from '../text-formatters.js' +import { floorCount as floorCountColor } from '../color-formatters.js' +import { BaseVaadinDirectoryService } from './vaadin-directory-base.js' -const { starRating } = require('../text-formatters') -const { floorCount: floorCountColor } = require('../color-formatters') -const { BaseVaadinDirectoryService } = require('./vaadin-directory-base') - -module.exports = class VaadinDirectoryRating extends ( - BaseVaadinDirectoryService -) { +export default class VaadinDirectoryRating extends BaseVaadinDirectoryService { static category = 'rating' static route = { diff --git a/services/vaadin-directory/vaadin-directory-rating.tester.js b/services/vaadin-directory/vaadin-directory-rating.tester.js index ae2466116d478..e4074eb1e6430 100644 --- a/services/vaadin-directory/vaadin-directory-rating.tester.js +++ b/services/vaadin-directory/vaadin-directory-rating.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { isStarRating } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { isStarRating } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('stars of component displayed in star icons') .get('/star/vaadinvaadin-grid.json') diff --git a/services/vaadin-directory/vaadin-directory-release-date.service.js b/services/vaadin-directory/vaadin-directory-release-date.service.js index 7d9b9a9f3e5da..d9069ca4c9897 100644 --- a/services/vaadin-directory/vaadin-directory-release-date.service.js +++ b/services/vaadin-directory/vaadin-directory-release-date.service.js @@ -1,12 +1,8 @@ -'use strict' +import { formatDate } from '../text-formatters.js' +import { age as ageColor } from '../color-formatters.js' +import { BaseVaadinDirectoryService } from './vaadin-directory-base.js' -const { formatDate } = require('../text-formatters') -const { age: ageColor } = require('../color-formatters') -const { BaseVaadinDirectoryService } = require('./vaadin-directory-base') - -module.exports = class VaadinDirectoryReleaseDate extends ( - BaseVaadinDirectoryService -) { +export default class VaadinDirectoryReleaseDate extends BaseVaadinDirectoryService { static category = 'activity' static route = { diff --git a/services/vaadin-directory/vaadin-directory-release-date.tester.js b/services/vaadin-directory/vaadin-directory-release-date.tester.js index f5102380ea68b..9c1c68dc64318 100644 --- a/services/vaadin-directory/vaadin-directory-release-date.tester.js +++ b/services/vaadin-directory/vaadin-directory-release-date.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isFormattedDate } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isFormattedDate } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('latest release date of the component (format: yyyy-mm-dd)') .get('/rd/vaadinvaadin-grid.json') diff --git a/services/vaadin-directory/vaadin-directory-status.service.js b/services/vaadin-directory/vaadin-directory-status.service.js index 12263e62859eb..0ad9186faad5b 100644 --- a/services/vaadin-directory/vaadin-directory-status.service.js +++ b/services/vaadin-directory/vaadin-directory-status.service.js @@ -1,10 +1,6 @@ -'use strict' +import { BaseVaadinDirectoryService } from './vaadin-directory-base.js' -const { BaseVaadinDirectoryService } = require('./vaadin-directory-base') - -module.exports = class VaadinDirectoryStatus extends ( - BaseVaadinDirectoryService -) { +export default class VaadinDirectoryStatus extends BaseVaadinDirectoryService { static category = 'other' static route = { diff --git a/services/vaadin-directory/vaadin-directory-status.tester.js b/services/vaadin-directory/vaadin-directory-status.tester.js index 770d35a97a21f..7caa48c2165fa 100644 --- a/services/vaadin-directory/vaadin-directory-status.tester.js +++ b/services/vaadin-directory/vaadin-directory-status.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('publish status of the component') .get('/vaadinvaadin-grid.json') diff --git a/services/vaadin-directory/vaadin-directory-version.service.js b/services/vaadin-directory/vaadin-directory-version.service.js index 0ebbaadc13925..53af932836ecc 100644 --- a/services/vaadin-directory/vaadin-directory-version.service.js +++ b/services/vaadin-directory/vaadin-directory-version.service.js @@ -1,11 +1,7 @@ -'use strict' +import { renderVersionBadge } from '../version.js' +import { BaseVaadinDirectoryService } from './vaadin-directory-base.js' -const { renderVersionBadge } = require('../version') -const { BaseVaadinDirectoryService } = require('./vaadin-directory-base') - -module.exports = class VaadinDirectoryVersion extends ( - BaseVaadinDirectoryService -) { +export default class VaadinDirectoryVersion extends BaseVaadinDirectoryService { static category = 'version' static route = { diff --git a/services/vaadin-directory/vaadin-directory-version.tester.js b/services/vaadin-directory/vaadin-directory-version.tester.js index 51d6c61269e7a..957e6006a5959 100644 --- a/services/vaadin-directory/vaadin-directory-version.tester.js +++ b/services/vaadin-directory/vaadin-directory-version.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isSemver } = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +import { isSemver } from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('latest version of the component (can have v prefixed or without)') .get('/v/vaadinvaadin-grid.json') diff --git a/services/validators.js b/services/validators.js index 1017a9988445c..42b89cd1d10e2 100644 --- a/services/validators.js +++ b/services/validators.js @@ -1,26 +1,19 @@ -'use strict' - -const { semver, semverRange } = require('joi-extension-semver') -const Joi = require('joi').extend(semver).extend(semverRange) +import { + semver as joiSemver, + semverRange as joiSemverRange, +} from 'joi-extension-semver' +import joi from 'joi' +const Joi = joi.extend(joiSemver).extend(joiSemverRange) const optionalNonNegativeInteger = Joi.number().integer().min(0) -module.exports = { - optionalNonNegativeInteger, - - nonNegativeInteger: optionalNonNegativeInteger.required(), - - anyInteger: Joi.number().integer().required(), - - semver: Joi.semver().valid().required(), - - semverRange: Joi.semverRange().valid().required(), - - optionalDottedVersionNClausesWithOptionalSuffix: Joi.string().regex( - /^\d+(\.\d+)*([-+].*)?$/ - ), - - // TODO This accepts URLs with query strings and fragments, which for some - // purposes should be rejected. - optionalUrl: Joi.string().uri({ scheme: ['http', 'https'] }), -} +export { optionalNonNegativeInteger } +export const nonNegativeInteger = optionalNonNegativeInteger.required() +export const anyInteger = Joi.number().integer().required() +export const semver = Joi.semver().valid().required() +export const semverRange = Joi.semverRange().valid().required() +export const optionalDottedVersionNClausesWithOptionalSuffix = + Joi.string().regex(/^\d+(\.\d+)*([-+].*)?$/) +// TODO This accepts URLs with query strings and fragments, which for some +// purposes should be rejected. +export const optionalUrl = Joi.string().uri({ scheme: ['http', 'https'] }) diff --git a/services/version.js b/services/version.js index bd71881311ba8..934b4d8de71d5 100644 --- a/services/version.js +++ b/services/version.js @@ -5,11 +5,9 @@ * * For utilities specific to PHP version ranges, see php-version.js. */ -'use strict' - -const semver = require('semver') -const { addv } = require('./text-formatters') -const { version: versionColor } = require('./color-formatters') +import semver from 'semver' +import { addv } from './text-formatters.js' +import { version as versionColor } from './color-formatters.js' function listCompare(a, b) { const alen = a.length @@ -162,10 +160,4 @@ function renderVersionBadge({ version, tag, defaultLabel }) { } } -module.exports = { - latest, - listCompare, - slice, - rangeStart, - renderVersionBadge, -} +export { latest, listCompare, slice, rangeStart, renderVersionBadge } diff --git a/services/version.spec.js b/services/version.spec.js index f447f43ac87f3..92b040cfa3090 100644 --- a/services/version.spec.js +++ b/services/version.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const { latest, slice, rangeStart, renderVersionBadge } = require('./version') +import { test, given } from 'sazerac' +import { latest, slice, rangeStart, renderVersionBadge } from './version.js' const includePre = true describe('Version helpers', function () { diff --git a/services/versioneye/versioneye.service.js b/services/versioneye/versioneye.service.js index 8fa1d3ce356b7..c248e64c43a99 100644 --- a/services/versioneye/versioneye.service.js +++ b/services/versioneye/versioneye.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ category: 'downloads', route: { base: 'versioneye/d', diff --git a/services/versioneye/versioneye.tester.js b/services/versioneye/versioneye.tester.js index 8523ffa54bfdc..77e17b5dca4e1 100644 --- a/services/versioneye/versioneye.tester.js +++ b/services/versioneye/versioneye.tester.js @@ -1,9 +1,6 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = new ServiceTester({ id: 'versioneye', title: 'VersionEye' }) -module.exports = t +export const t = new ServiceTester({ id: 'versioneye', title: 'VersionEye' }) t.create('no longer available (previously dependencies status)') .get('/d/ruby/rails.json') diff --git a/services/visual-studio-app-center/visual-studio-app-center-base.js b/services/visual-studio-app-center/visual-studio-app-center-base.js index a4c10f75da757..e90a6ee2f368b 100644 --- a/services/visual-studio-app-center/visual-studio-app-center-base.js +++ b/services/visual-studio-app-center/visual-studio-app-center-base.js @@ -1,6 +1,4 @@ -'use strict' - -const { BaseJsonService } = require('..') +import { BaseJsonService } from '../index.js' const keywords = [ 'visual-studio', @@ -37,4 +35,4 @@ class BaseVisualStudioAppCenterService extends BaseJsonService { } } -module.exports = { keywords, documentation, BaseVisualStudioAppCenterService } +export { keywords, documentation, BaseVisualStudioAppCenterService } diff --git a/services/visual-studio-app-center/visual-studio-app-center-builds.service.js b/services/visual-studio-app-center/visual-studio-app-center-builds.service.js index da790f24d460a..6b70a31a6f7dd 100644 --- a/services/visual-studio-app-center/visual-studio-app-center-builds.service.js +++ b/services/visual-studio-app-center/visual-studio-app-center-builds.service.js @@ -1,21 +1,17 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus, renderBuildStatusBadge } = require('../build-status') -const { NotFound } = require('..') -const { +import Joi from 'joi' +import { isBuildStatus, renderBuildStatusBadge } from '../build-status.js' +import { NotFound } from '../index.js' +import { BaseVisualStudioAppCenterService, keywords, documentation, -} = require('./visual-studio-app-center-base') +} from './visual-studio-app-center-base.js' const schema = Joi.array().items({ result: isBuildStatus.required(), }) -module.exports = class VisualStudioAppCenterBuilds extends ( - BaseVisualStudioAppCenterService -) { +export default class VisualStudioAppCenterBuilds extends BaseVisualStudioAppCenterService { static category = 'build' static route = { diff --git a/services/visual-studio-app-center/visual-studio-app-center-builds.tester.js b/services/visual-studio-app-center/visual-studio-app-center-builds.tester.js index 062285493987c..0a70d24e994d5 100644 --- a/services/visual-studio-app-center/visual-studio-app-center-builds.tester.js +++ b/services/visual-studio-app-center/visual-studio-app-center-builds.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() // Mocked response rather than real data as old builds are deleted after some time. t.create('Valid Build') diff --git a/services/visual-studio-app-center/visual-studio-app-center-releases-osversion.service.js b/services/visual-studio-app-center/visual-studio-app-center-releases-osversion.service.js index c7960c4ea62ca..9f51181597afa 100644 --- a/services/visual-studio-app-center/visual-studio-app-center-releases-osversion.service.js +++ b/services/visual-studio-app-center/visual-studio-app-center-releases-osversion.service.js @@ -1,20 +1,16 @@ -'use strict' - -const Joi = require('joi') -const { +import Joi from 'joi' +import { BaseVisualStudioAppCenterService, keywords, documentation, -} = require('./visual-studio-app-center-base') +} from './visual-studio-app-center-base.js' const schema = Joi.object({ app_os: Joi.string().required(), min_os: Joi.string().required(), }).required() -module.exports = class VisualStudioAppCenterReleasesOSVersion extends ( - BaseVisualStudioAppCenterService -) { +export default class VisualStudioAppCenterReleasesOSVersion extends BaseVisualStudioAppCenterService { static category = 'version' static route = { diff --git a/services/visual-studio-app-center/visual-studio-app-center-releases-osversion.tester.js b/services/visual-studio-app-center/visual-studio-app-center-releases-osversion.tester.js index e2a590794892a..826bcf1ad863b 100644 --- a/services/visual-studio-app-center/visual-studio-app-center-releases-osversion.tester.js +++ b/services/visual-studio-app-center/visual-studio-app-center-releases-osversion.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() // Note: // Unfortunately an Invalid user, invalid project, valid API token test is not possible due to the way Microsoft cache their responses. diff --git a/services/visual-studio-app-center/visual-studio-app-center-releases-size.service.js b/services/visual-studio-app-center/visual-studio-app-center-releases-size.service.js index 4fff5e2ecb028..76dd16ceb6f34 100644 --- a/services/visual-studio-app-center/visual-studio-app-center-releases-size.service.js +++ b/services/visual-studio-app-center/visual-studio-app-center-releases-size.service.js @@ -1,21 +1,17 @@ -'use strict' - -const Joi = require('joi') -const prettyBytes = require('pretty-bytes') -const { nonNegativeInteger } = require('../validators') -const { +import Joi from 'joi' +import prettyBytes from 'pretty-bytes' +import { nonNegativeInteger } from '../validators.js' +import { BaseVisualStudioAppCenterService, keywords, documentation, -} = require('./visual-studio-app-center-base') +} from './visual-studio-app-center-base.js' const schema = Joi.object({ size: nonNegativeInteger, }).required() -module.exports = class VisualStudioAppCenterReleasesSize extends ( - BaseVisualStudioAppCenterService -) { +export default class VisualStudioAppCenterReleasesSize extends BaseVisualStudioAppCenterService { static category = 'size' static route = { diff --git a/services/visual-studio-app-center/visual-studio-app-center-releases-size.tester.js b/services/visual-studio-app-center/visual-studio-app-center-releases-size.tester.js index e3b2964e9b743..5a1681a79eab0 100644 --- a/services/visual-studio-app-center/visual-studio-app-center-releases-size.tester.js +++ b/services/visual-studio-app-center/visual-studio-app-center-releases-size.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isFileSize } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { isFileSize } from '../test-validators.js' +export const t = await createServiceTester() t.create('8368844 bytes to 8.37 megabytes') .get('/nock/nock/nock.json') diff --git a/services/visual-studio-app-center/visual-studio-app-center-releases-version.service.js b/services/visual-studio-app-center/visual-studio-app-center-releases-version.service.js index 7316fb044819b..a4f90d3096a93 100644 --- a/services/visual-studio-app-center/visual-studio-app-center-releases-version.service.js +++ b/services/visual-studio-app-center/visual-studio-app-center-releases-version.service.js @@ -1,21 +1,17 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { BaseVisualStudioAppCenterService, keywords, documentation, -} = require('./visual-studio-app-center-base') +} from './visual-studio-app-center-base.js' const schema = Joi.object({ version: Joi.string().required(), short_version: Joi.string().required(), }).required() -module.exports = class VisualStudioAppCenterReleasesVersion extends ( - BaseVisualStudioAppCenterService -) { +export default class VisualStudioAppCenterReleasesVersion extends BaseVisualStudioAppCenterService { static category = 'version' static route = { diff --git a/services/visual-studio-app-center/visual-studio-app-center-releases-version.tester.js b/services/visual-studio-app-center/visual-studio-app-center-releases-version.tester.js index 47dd1b650e12d..49f528a0bfbe8 100644 --- a/services/visual-studio-app-center/visual-studio-app-center-releases-version.tester.js +++ b/services/visual-studio-app-center/visual-studio-app-center-releases-version.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() // Note: // Unfortunately an Invalid user, invalid project, valid API token test is not possible due to the way Microsoft cache their responses. diff --git a/services/visual-studio-marketplace/visual-studio-marketplace-azure-devops-installs.service.js b/services/visual-studio-marketplace/visual-studio-marketplace-azure-devops-installs.service.js index 5765adc403397..8cfd950274f29 100644 --- a/services/visual-studio-marketplace/visual-studio-marketplace-azure-devops-installs.service.js +++ b/services/visual-studio-marketplace/visual-studio-marketplace-azure-devops-installs.service.js @@ -1,8 +1,6 @@ -'use strict' - -const { metric } = require('../text-formatters') -const { downloadCount } = require('../color-formatters') -const VisualStudioMarketplaceBase = require('./visual-studio-marketplace-base') +import { metric } from '../text-formatters.js' +import { downloadCount } from '../color-formatters.js' +import VisualStudioMarketplaceBase from './visual-studio-marketplace-base.js' const documentation = `

@@ -14,9 +12,7 @@ const documentation = ` // This service exists separately from the other Marketplace downloads badges (in ./visual-studio-marketplace-downloads.js) // due differences in how the Marketplace tracks metrics for Azure DevOps extensions vs. other extension types. // See https://github.com/badges/shields/pull/2748 for more information on the discussion and decision. -module.exports = class VisualStudioMarketplaceAzureDevOpsInstalls extends ( - VisualStudioMarketplaceBase -) { +export default class VisualStudioMarketplaceAzureDevOpsInstalls extends VisualStudioMarketplaceBase { static category = 'downloads' static route = { diff --git a/services/visual-studio-marketplace/visual-studio-marketplace-azure-devops-installs.tester.js b/services/visual-studio-marketplace/visual-studio-marketplace-azure-devops-installs.tester.js index 741722d819910..f4b209c5460c5 100644 --- a/services/visual-studio-marketplace/visual-studio-marketplace-azure-devops-installs.tester.js +++ b/services/visual-studio-marketplace/visual-studio-marketplace-azure-devops-installs.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isMetric } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { isMetric } from '../test-validators.js' +export const t = await createServiceTester() const mockResponse = { results: [ diff --git a/services/visual-studio-marketplace/visual-studio-marketplace-base.js b/services/visual-studio-marketplace/visual-studio-marketplace-base.js index 12a7218129d21..d25e9c11a2fc7 100644 --- a/services/visual-studio-marketplace/visual-studio-marketplace-base.js +++ b/services/visual-studio-marketplace/visual-studio-marketplace-base.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const validate = require('../../core/base-service/validate') -const { BaseJsonService, NotFound } = require('..') +import Joi from 'joi' +import validate from '../../core/base-service/validate.js' +import { BaseJsonService, NotFound } from '../index.js' const extensionQuerySchema = Joi.object({ results: Joi.array() @@ -45,7 +43,7 @@ const statisticSchema = Joi.object().keys({ ratingcount: Joi.number().default(0), }) -module.exports = class VisualStudioMarketplaceBase extends BaseJsonService { +export default class VisualStudioMarketplaceBase extends BaseJsonService { static keywords = [ 'vscode', 'tfs', diff --git a/services/visual-studio-marketplace/visual-studio-marketplace-downloads.service.js b/services/visual-studio-marketplace/visual-studio-marketplace-downloads.service.js index 71e459f25390d..1d90a6275cfa9 100644 --- a/services/visual-studio-marketplace/visual-studio-marketplace-downloads.service.js +++ b/services/visual-studio-marketplace/visual-studio-marketplace-downloads.service.js @@ -1,8 +1,6 @@ -'use strict' - -const { metric } = require('../text-formatters') -const { downloadCount } = require('../color-formatters') -const VisualStudioMarketplaceBase = require('./visual-studio-marketplace-base') +import { metric } from '../text-formatters.js' +import { downloadCount } from '../color-formatters.js' +import VisualStudioMarketplaceBase from './visual-studio-marketplace-base.js' const documentation = `

@@ -13,9 +11,7 @@ const documentation = `

` -module.exports = class VisualStudioMarketplaceDownloads extends ( - VisualStudioMarketplaceBase -) { +export default class VisualStudioMarketplaceDownloads extends VisualStudioMarketplaceBase { static category = 'downloads' static route = { diff --git a/services/visual-studio-marketplace/visual-studio-marketplace-downloads.tester.js b/services/visual-studio-marketplace/visual-studio-marketplace-downloads.tester.js index 9c6b775de7b0d..d74b78cb87470 100644 --- a/services/visual-studio-marketplace/visual-studio-marketplace-downloads.tester.js +++ b/services/visual-studio-marketplace/visual-studio-marketplace-downloads.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isMetric } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { isMetric } from '../test-validators.js' +export const t = await createServiceTester() const mockResponse = { results: [ diff --git a/services/visual-studio-marketplace/visual-studio-marketplace-last-updated.service.js b/services/visual-studio-marketplace/visual-studio-marketplace-last-updated.service.js index db4b5300a7e1e..5d7106fa58151 100644 --- a/services/visual-studio-marketplace/visual-studio-marketplace-last-updated.service.js +++ b/services/visual-studio-marketplace/visual-studio-marketplace-last-updated.service.js @@ -1,12 +1,8 @@ -'use strict' +import { age } from '../color-formatters.js' +import { formatDate } from '../text-formatters.js' +import VisualStudioMarketplaceBase from './visual-studio-marketplace-base.js' -const { age } = require('../color-formatters') -const { formatDate } = require('../text-formatters') -const VisualStudioMarketplaceBase = require('./visual-studio-marketplace-base') - -module.exports = class VisualStudioMarketplaceLastUpdated extends ( - VisualStudioMarketplaceBase -) { +export default class VisualStudioMarketplaceLastUpdated extends VisualStudioMarketplaceBase { static category = 'activity' static route = { diff --git a/services/visual-studio-marketplace/visual-studio-marketplace-last-updated.tester.js b/services/visual-studio-marketplace/visual-studio-marketplace-last-updated.tester.js index 5588f0fdbdaba..cd7e40745a4ff 100644 --- a/services/visual-studio-marketplace/visual-studio-marketplace-last-updated.tester.js +++ b/services/visual-studio-marketplace/visual-studio-marketplace-last-updated.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isFormattedDate } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { isFormattedDate } from '../test-validators.js' +export const t = await createServiceTester() t.create('date') .get('/visual-studio-marketplace/last-updated/yasht.terminal-all-in-one.json') diff --git a/services/visual-studio-marketplace/visual-studio-marketplace-rating.service.js b/services/visual-studio-marketplace/visual-studio-marketplace-rating.service.js index 3c9f4312e56b5..20de188d7fcd0 100644 --- a/services/visual-studio-marketplace/visual-studio-marketplace-rating.service.js +++ b/services/visual-studio-marketplace/visual-studio-marketplace-rating.service.js @@ -1,12 +1,8 @@ -'use strict' +import { starRating } from '../text-formatters.js' +import { floorCount } from '../color-formatters.js' +import VisualStudioMarketplaceBase from './visual-studio-marketplace-base.js' -const { starRating } = require('../text-formatters') -const { floorCount } = require('../color-formatters') -const VisualStudioMarketplaceBase = require('./visual-studio-marketplace-base') - -module.exports = class VisualStudioMarketplaceRating extends ( - VisualStudioMarketplaceBase -) { +export default class VisualStudioMarketplaceRating extends VisualStudioMarketplaceBase { static category = 'rating' static route = { diff --git a/services/visual-studio-marketplace/visual-studio-marketplace-rating.tester.js b/services/visual-studio-marketplace/visual-studio-marketplace-rating.tester.js index 7457cbc753914..213285adbfda4 100644 --- a/services/visual-studio-marketplace/visual-studio-marketplace-rating.tester.js +++ b/services/visual-studio-marketplace/visual-studio-marketplace-rating.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { withRegex, isStarRating } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { withRegex, isStarRating } from '../test-validators.js' +export const t = await createServiceTester() const isVscodeRating = withRegex(/[0-5]\.[0-9]{1}\/5?\s*\([0-9]*\)$/) diff --git a/services/visual-studio-marketplace/visual-studio-marketplace-release-date.service.js b/services/visual-studio-marketplace/visual-studio-marketplace-release-date.service.js index 4a3bb5d0554fe..d604c425c1a84 100644 --- a/services/visual-studio-marketplace/visual-studio-marketplace-release-date.service.js +++ b/services/visual-studio-marketplace/visual-studio-marketplace-release-date.service.js @@ -1,12 +1,8 @@ -'use strict' +import { age } from '../color-formatters.js' +import { formatDate } from '../text-formatters.js' +import VisualStudioMarketplaceBase from './visual-studio-marketplace-base.js' -const { age } = require('../color-formatters') -const { formatDate } = require('../text-formatters') -const VisualStudioMarketplaceBase = require('./visual-studio-marketplace-base') - -module.exports = class VisualStudioMarketplaceReleaseDate extends ( - VisualStudioMarketplaceBase -) { +export default class VisualStudioMarketplaceReleaseDate extends VisualStudioMarketplaceBase { static category = 'activity' static route = { diff --git a/services/visual-studio-marketplace/visual-studio-marketplace-release-date.tester.js b/services/visual-studio-marketplace/visual-studio-marketplace-release-date.tester.js index 6469ab49c97ad..acf9da220bd8f 100644 --- a/services/visual-studio-marketplace/visual-studio-marketplace-release-date.tester.js +++ b/services/visual-studio-marketplace/visual-studio-marketplace-release-date.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isFormattedDate } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { isFormattedDate } from '../test-validators.js' +export const t = await createServiceTester() t.create('date') .get('/visual-studio-marketplace/release-date/yasht.terminal-all-in-one.json') diff --git a/services/visual-studio-marketplace/visual-studio-marketplace-version.service.js b/services/visual-studio-marketplace/visual-studio-marketplace-version.service.js index 3d4eff80d4920..e0e8e2458b31e 100644 --- a/services/visual-studio-marketplace/visual-studio-marketplace-version.service.js +++ b/services/visual-studio-marketplace/visual-studio-marketplace-version.service.js @@ -1,11 +1,7 @@ -'use strict' +import { renderVersionBadge } from '../version.js' +import VisualStudioMarketplaceBase from './visual-studio-marketplace-base.js' -const { renderVersionBadge } = require('../version') -const VisualStudioMarketplaceBase = require('./visual-studio-marketplace-base') - -module.exports = class VisualStudioMarketplaceVersion extends ( - VisualStudioMarketplaceBase -) { +export default class VisualStudioMarketplaceVersion extends VisualStudioMarketplaceBase { static category = 'version' static route = { diff --git a/services/visual-studio-marketplace/visual-studio-marketplace-version.tester.js b/services/visual-studio-marketplace/visual-studio-marketplace-version.tester.js index 6e026eb69928d..1b44b3e0e0e26 100644 --- a/services/visual-studio-marketplace/visual-studio-marketplace-version.tester.js +++ b/services/visual-studio-marketplace/visual-studio-marketplace-version.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { withRegex } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { withRegex } from '../test-validators.js' +export const t = await createServiceTester() const isMarketplaceVersion = withRegex(/^v(\d+\.\d+\.\d+)(\.\d+)?$/) diff --git a/services/w3c/w3c-validation-helper.js b/services/w3c/w3c-validation-helper.js index 3f0a75f4016db..fef29ef373811 100644 --- a/services/w3c/w3c-validation-helper.js +++ b/services/w3c/w3c-validation-helper.js @@ -1,5 +1,3 @@ -'use strict' - const html5Expression = '^HTML\\s?,\\s?SVG\\s?1\\.1\\s?,\\s?MathML\\s?3\\.0(\\s?,\\s?((ITS\\s?2\\.0)|(RDFa\\s?Lite\\s?1\\.1)))?$' const html4Expression = @@ -147,10 +145,4 @@ const documentation = `

` -module.exports = { - documentation, - presetRegex, - getColor, - getMessage, - getSchema, -} +export { documentation, presetRegex, getColor, getMessage, getSchema } diff --git a/services/w3c/w3c-validation-helper.spec.js b/services/w3c/w3c-validation-helper.spec.js index 819f1afd53969..3c024c2bbc89b 100644 --- a/services/w3c/w3c-validation-helper.spec.js +++ b/services/w3c/w3c-validation-helper.spec.js @@ -1,12 +1,11 @@ -'use strict' -const { expect } = require('chai') -const { test, given, forCases } = require('sazerac') -const { +import { expect } from 'chai' +import { test, given, forCases } from 'sazerac' +import { presetRegex, getMessage, getColor, getSchema, -} = require('./w3c-validation-helper') +} from './w3c-validation-helper.js' describe('w3c-validation-helper', function () { describe('presetRegex', function () { diff --git a/services/w3c/w3c-validation.service.js b/services/w3c/w3c-validation.service.js index a0482c5002d21..945fd9a27473c 100644 --- a/services/w3c/w3c-validation.service.js +++ b/services/w3c/w3c-validation.service.js @@ -1,14 +1,13 @@ -'use strict' -const Joi = require('joi') -const { optionalUrl } = require('../validators') -const { BaseJsonService, NotFound } = require('..') -const { +import Joi from 'joi' +import { optionalUrl } from '../validators.js' +import { BaseJsonService, NotFound } from '../index.js' +import { documentation, presetRegex, getColor, getMessage, getSchema, -} = require('./w3c-validation-helper') +} from './w3c-validation-helper.js' const schema = Joi.object({ url: Joi.string().optional(), @@ -30,7 +29,7 @@ const queryParamSchema = Joi.object({ preset: Joi.string().regex(presetRegex).allow(''), }).required() -module.exports = class W3cValidation extends BaseJsonService { +export default class W3cValidation extends BaseJsonService { static category = 'analysis' static route = { diff --git a/services/w3c/w3c-validation.tester.js b/services/w3c/w3c-validation.tester.js index 4dc93b6e0d76a..75bbae5787775 100644 --- a/services/w3c/w3c-validation.tester.js +++ b/services/w3c/w3c-validation.tester.js @@ -1,6 +1,6 @@ -'use strict' -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() const isErrorOnly = Joi.string().regex(/^[0-9]+ errors?$/) diff --git a/services/waffle/waffle-label-redirect.service.js b/services/waffle/waffle-label-redirect.service.js index 0275bc1d5cbf3..2a31d3417ce14 100644 --- a/services/waffle/waffle-label-redirect.service.js +++ b/services/waffle/waffle-label-redirect.service.js @@ -1,8 +1,6 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = [ +export default [ // The WaffleLabel service originally had 'label' as an optional parameter // with a default value of 'ready'. However, after some discussion it was // agreed that 'ready' didn't make sense as a default, nor was there any other diff --git a/services/waffle/waffle-label-redirect.tester.js b/services/waffle/waffle-label-redirect.tester.js index fb1b0cd6cabfa..3d6625615be8a 100644 --- a/services/waffle/waffle-label-redirect.tester.js +++ b/services/waffle/waffle-label-redirect.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'WaffleLabelRedirect', title: 'WaffleLabelRedirect', pathPrefix: '/waffle/label', -})) +}) t.create('waffle label redirect') .get('/waffleio/waffle.io.svg') diff --git a/services/waffle/waffle-label.service.js b/services/waffle/waffle-label.service.js index de28fb92643e2..d5ea4832bbc86 100644 --- a/services/waffle/waffle-label.service.js +++ b/services/waffle/waffle-label.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ route: { base: 'waffle/label', pattern: ':various*', diff --git a/services/waffle/waffle-label.tester.js b/services/waffle/waffle-label.tester.js index 98158d93fc8ff..05e9e1bd1d9ed 100644 --- a/services/waffle/waffle-label.tester.js +++ b/services/waffle/waffle-label.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'Waffle', title: 'WaffleLabel', pathPrefix: '/waffle/label', -})) +}) t.create('no longer available') .get('/ritwickdey/vscode-live-server/bug.json') diff --git a/services/weblate/weblate-component-license.service.js b/services/weblate/weblate-component-license.service.js index 22e1038979d7b..bd1ce1b3fef8a 100644 --- a/services/weblate/weblate-component-license.service.js +++ b/services/weblate/weblate-component-license.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') -const { optionalUrl } = require('../validators') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' +import { optionalUrl } from '../validators.js' const schema = Joi.object({ license: Joi.string().required(), @@ -15,7 +13,7 @@ const queryParamSchema = Joi.object({ /** * This badge displays the license of a component on a Weblate instance. */ -module.exports = class WeblateComponentLicense extends BaseJsonService { +export default class WeblateComponentLicense extends BaseJsonService { static category = 'license' static route = { base: 'weblate/license', diff --git a/services/weblate/weblate-component-license.tester.js b/services/weblate/weblate-component-license.tester.js index 60ec6c726f032..844aa362c48f2 100644 --- a/services/weblate/weblate-component-license.tester.js +++ b/services/weblate/weblate-component-license.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('License') .get('/godot-engine/godot.json?server=https://hosted.weblate.org') diff --git a/services/weblate/weblate-entity-count.service.js b/services/weblate/weblate-entity-count.service.js index 3b04ea3f0494b..8080f97d94c6c 100644 --- a/services/weblate/weblate-entity-count.service.js +++ b/services/weblate/weblate-entity-count.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const camelcase = require('camelcase') -const { BaseJsonService } = require('..') -const { nonNegativeInteger, optionalUrl } = require('../validators') -const { metric } = require('../text-formatters') +import Joi from 'joi' +import camelcase from 'camelcase' +import { BaseJsonService } from '../index.js' +import { nonNegativeInteger, optionalUrl } from '../validators.js' +import { metric } from '../text-formatters.js' const schema = Joi.object({ count: nonNegativeInteger, @@ -71,4 +69,4 @@ const entityCounts = [ { entityName: 'users', exampleValue: 33058 }, ].map(WeblateEntityCountFactory) -module.exports = [...entityCounts] +export default [...entityCounts] diff --git a/services/weblate/weblate-entity-count.tester.js b/services/weblate/weblate-entity-count.tester.js index a78a5bfc8def7..4e5d183aff863 100644 --- a/services/weblate/weblate-entity-count.tester.js +++ b/services/weblate/weblate-entity-count.tester.js @@ -1,13 +1,10 @@ -'use strict' - -const { ServiceTester } = require('../tester') -const { isMetric } = require('../test-validators') - -const t = (module.exports = new ServiceTester({ +import { ServiceTester } from '../tester.js' +import { isMetric } from '../test-validators.js' +export const t = new ServiceTester({ id: 'WeblateEntity', title: 'Weblate Entity', pathPrefix: '/weblate', -})) +}) t.create('Components') .get('/components.json?server=https://hosted.weblate.org') diff --git a/services/weblate/weblate-project-translated-percentage.service.js b/services/weblate/weblate-project-translated-percentage.service.js index d5bf6bbbfb597..87e073514f4d1 100644 --- a/services/weblate/weblate-project-translated-percentage.service.js +++ b/services/weblate/weblate-project-translated-percentage.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') -const { optionalUrl } = require('../validators') -const { colorScale } = require('../color-formatters') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' +import { optionalUrl } from '../validators.js' +import { colorScale } from '../color-formatters.js' const schema = Joi.object({ translated_percent: Joi.number().required(), @@ -17,9 +15,7 @@ const queryParamSchema = Joi.object({ * This badge displays the percentage of strings translated on a project on a * Weblate instance. */ -module.exports = class WeblateProjectTranslatedPercentage extends ( - BaseJsonService -) { +export default class WeblateProjectTranslatedPercentage extends BaseJsonService { static category = 'other' static route = { base: 'weblate', pattern: ':project', queryParamSchema } diff --git a/services/weblate/weblate-project-translated-percentage.tester.js b/services/weblate/weblate-project-translated-percentage.tester.js index 52a8ba67d167d..20f9368ac333b 100644 --- a/services/weblate/weblate-project-translated-percentage.tester.js +++ b/services/weblate/weblate-project-translated-percentage.tester.js @@ -1,8 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) - -const { isPercentage } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { isPercentage } from '../test-validators.js' +export const t = await createServiceTester() t.create('License') .get('/godot-engine.json?server=https://hosted.weblate.org') diff --git a/services/weblate/weblate-user-statistics.service.js b/services/weblate/weblate-user-statistics.service.js index e61cdd881494d..467b2df76dcc8 100644 --- a/services/weblate/weblate-user-statistics.service.js +++ b/services/weblate/weblate-user-statistics.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const camelcase = require('camelcase') -const { BaseJsonService } = require('..') -const { nonNegativeInteger, optionalUrl } = require('../validators') -const { metric } = require('../text-formatters') +import Joi from 'joi' +import camelcase from 'camelcase' +import { BaseJsonService } from '../index.js' +import { nonNegativeInteger, optionalUrl } from '../validators.js' +import { metric } from '../text-formatters.js' const schema = Joi.object({ translated: nonNegativeInteger, @@ -87,4 +85,4 @@ const userStatistics = [ { statisticName: 'languages', property: 'languages', exampleValue: 1 }, ].map(WeblateUserStatisticFactory) -module.exports = [...userStatistics] +export default [...userStatistics] diff --git a/services/weblate/weblate-user-statistics.tester.js b/services/weblate/weblate-user-statistics.tester.js index 42934b072fd71..1e0848fbd723a 100644 --- a/services/weblate/weblate-user-statistics.tester.js +++ b/services/weblate/weblate-user-statistics.tester.js @@ -1,13 +1,10 @@ -'use strict' - -const { ServiceTester } = require('../tester') -const { isMetric } = require('../test-validators') - -const t = (module.exports = new ServiceTester({ +import { ServiceTester } from '../tester.js' +import { isMetric } from '../test-validators.js' +export const t = new ServiceTester({ id: 'WeblateUserStatistic', title: 'Weblate User Statistic', pathPrefix: '/weblate', -})) +}) t.create('Translations') .get('/user/nijel/translations.json?server=https://hosted.weblate.org') diff --git a/services/website-status.js b/services/website-status.js index c22cf690bde61..c0fdb252b07b1 100644 --- a/services/website-status.js +++ b/services/website-status.js @@ -1,6 +1,4 @@ -'use strict' - -const Joi = require('joi') +import Joi from 'joi' const queryParamSchema = Joi.object({ up_message: Joi.string(), @@ -30,8 +28,4 @@ function renderWebsiteStatus({ } } -module.exports = { - queryParamSchema, - exampleQueryParams, - renderWebsiteStatus, -} +export { queryParamSchema, exampleQueryParams, renderWebsiteStatus } diff --git a/services/website-status.spec.js b/services/website-status.spec.js index d87f33a4a0003..5e73cd774292f 100644 --- a/services/website-status.spec.js +++ b/services/website-status.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const { renderWebsiteStatus } = require('./website-status') +import { test, given } from 'sazerac' +import { renderWebsiteStatus } from './website-status.js' describe('Website status helpers', function () { const customOptions = { diff --git a/services/website/website-redirect.service.js b/services/website/website-redirect.service.js index f2597dd1ceb72..a7a6b18a64472 100644 --- a/services/website/website-redirect.service.js +++ b/services/website/website-redirect.service.js @@ -1,7 +1,5 @@ -'use strict' - -const { escapeFormat } = require('../../core/badge-urls/path-helpers') -const { redirector } = require('..') +import { escapeFormat } from '../../core/badge-urls/path-helpers.js' +import { redirector } from '../index.js' function escapeFormatSlashes(t) { return ( @@ -51,7 +49,7 @@ Old documentation, for reference:

*/ -module.exports = [ +export default [ redirector({ category: 'monitoring', route: { diff --git a/services/website/website-redirect.tester.js b/services/website/website-redirect.tester.js index 4e0b27bca2d73..0aeba6b5bc629 100644 --- a/services/website/website-redirect.tester.js +++ b/services/website/website-redirect.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'WebsiteRedirect', title: 'WebsiteRedirect', pathPrefix: '', -})) +}) t.create('Website with custom messages') .get('/website-up-down/https/www.google.com.svg') diff --git a/services/website/website.service.js b/services/website/website.service.js index 0a9b278daa135..5ac7e4536a0c8 100644 --- a/services/website/website.service.js +++ b/services/website/website.service.js @@ -1,15 +1,13 @@ -'use strict' - -const Joi = require('joi') -const emojic = require('emojic') -const { optionalUrl } = require('../validators') -const { +import Joi from 'joi' +import emojic from 'emojic' +import { optionalUrl } from '../validators.js' +import { queryParamSchema, exampleQueryParams, renderWebsiteStatus, -} = require('../website-status') -const { BaseService } = require('..') -const trace = require('../../core/base-service/trace') +} from '../website-status.js' +import { BaseService } from '../index.js' +import trace from '../../core/base-service/trace.js' const documentation = `

@@ -35,7 +33,7 @@ const urlQueryParamSchema = Joi.object({ url: optionalUrl.required(), }).required() -module.exports = class Website extends BaseService { +export default class Website extends BaseService { static category = 'monitoring' static route = { diff --git a/services/website/website.tester.js b/services/website/website.tester.js index f60fafbd2ac89..95d2caeac1c59 100644 --- a/services/website/website.tester.js +++ b/services/website/website.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('status of http://shields.io') .get('/website.json?url=http://shields.io') diff --git a/services/wercker/wercker.service.js b/services/wercker/wercker.service.js index 94bb3288ffbd2..7dcb1faa9f417 100644 --- a/services/wercker/wercker.service.js +++ b/services/wercker/wercker.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus, renderBuildStatusBadge } = require('../build-status') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { isBuildStatus, renderBuildStatusBadge } from '../build-status.js' +import { BaseJsonService } from '../index.js' const werckerSchema = Joi.array() .items( @@ -32,7 +30,7 @@ const werckerCIDocumentation = `

` -module.exports = class Wercker extends BaseJsonService { +export default class Wercker extends BaseJsonService { static category = 'build' static route = { diff --git a/services/wercker/wercker.tester.js b/services/wercker/wercker.tester.js index 28cba83661019..bcbd29368db1b 100644 --- a/services/wercker/wercker.tester.js +++ b/services/wercker/wercker.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const { isBuildStatus } = require('../build-status') -const t = (module.exports = require('../tester').createServiceTester()) +import { isBuildStatus } from '../build-status.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Build status') .get('/build/wercker/go-wercker-api.json') diff --git a/services/wheelmap/wheelmap.service.js b/services/wheelmap/wheelmap.service.js index 1973d0b326c42..c6abf22d8c6cd 100644 --- a/services/wheelmap/wheelmap.service.js +++ b/services/wheelmap/wheelmap.service.js @@ -1,7 +1,5 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ node: Joi.object({ @@ -9,7 +7,7 @@ const schema = Joi.object({ }).required(), }).required() -module.exports = class Wheelmap extends BaseJsonService { +export default class Wheelmap extends BaseJsonService { static category = 'other' static route = { diff --git a/services/wheelmap/wheelmap.spec.js b/services/wheelmap/wheelmap.spec.js index 41b80594b4afa..80287395c033d 100644 --- a/services/wheelmap/wheelmap.spec.js +++ b/services/wheelmap/wheelmap.spec.js @@ -1,9 +1,7 @@ -'use strict' - -const { expect } = require('chai') -const nock = require('nock') -const { cleanUpNockAfterEach, defaultContext } = require('../test-helpers') -const Wheelmap = require('./wheelmap.service') +import { expect } from 'chai' +import nock from 'nock' +import { cleanUpNockAfterEach, defaultContext } from '../test-helpers.js' +import Wheelmap from './wheelmap.service.js' describe('Wheelmap', function () { cleanUpNockAfterEach() diff --git a/services/wheelmap/wheelmap.tester.js b/services/wheelmap/wheelmap.tester.js index 1a618029fd413..e4d5e6c49b580 100644 --- a/services/wheelmap/wheelmap.tester.js +++ b/services/wheelmap/wheelmap.tester.js @@ -1,8 +1,8 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { noToken } = require('../test-helpers') -const noWheelmapToken = noToken(require('./wheelmap.service')) +import { createServiceTester } from '../tester.js' +import { noToken } from '../test-helpers.js' +import _noWheelmapToken from './wheelmap.service.js' +export const t = await createServiceTester() +const noWheelmapToken = noToken(_noWheelmapToken) t.create('node with accessibility') .skipWhen(noWheelmapToken) diff --git a/services/wikiapiary/wikiapiary-installs.service.js b/services/wikiapiary/wikiapiary-installs.service.js index 3aa11e110da2a..222e16c4c875a 100644 --- a/services/wikiapiary/wikiapiary-installs.service.js +++ b/services/wikiapiary/wikiapiary-installs.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { BaseJsonService, NotFound } = require('..') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { BaseJsonService, NotFound } from '../index.js' const documentation = `

@@ -48,7 +46,7 @@ const schema = Joi.object({ * * {@link https://www.mediawiki.org/wiki/Manual:Extensions MediaWiki Extensions Manual} */ -module.exports = class WikiapiaryInstalls extends BaseJsonService { +export default class WikiapiaryInstalls extends BaseJsonService { static category = 'downloads' static route = { base: 'wikiapiary', diff --git a/services/wikiapiary/wikiapiary-installs.tester.js b/services/wikiapiary/wikiapiary-installs.tester.js index fee38c87645f1..878ec756dd163 100644 --- a/services/wikiapiary/wikiapiary-installs.tester.js +++ b/services/wikiapiary/wikiapiary-installs.tester.js @@ -1,7 +1,6 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isMetric } = require('../test-validators') +import { createServiceTester } from '../tester.js' +import { isMetric } from '../test-validators.js' +export const t = await createServiceTester() t.create('Extension') .get('/extension/installs/ParserFunctions.json') diff --git a/services/wordpress/wordpress-base.js b/services/wordpress/wordpress-base.js index 36a04628e4bfd..c11852b4f5e23 100644 --- a/services/wordpress/wordpress-base.js +++ b/services/wordpress/wordpress-base.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService, NotFound } = require('..') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService, NotFound } from '../index.js' const stringOrFalse = Joi.alternatives(Joi.string(), Joi.bool()) @@ -42,7 +40,7 @@ const notFoundSchema = Joi.object() const pluginSchemas = Joi.alternatives(pluginSchema, notFoundSchema) const themeSchemas = Joi.alternatives(themeSchema, notFoundSchema) -module.exports = class BaseWordpress extends BaseJsonService { +export default class BaseWordpress extends BaseJsonService { async fetch({ extensionType, slug }) { const url = `https://api.wordpress.org/${extensionType}s/info/1.2/` let schemas diff --git a/services/wordpress/wordpress-downloads.service.js b/services/wordpress/wordpress-downloads.service.js index 81a7ae3e381d0..83979488b5fa4 100644 --- a/services/wordpress/wordpress-downloads.service.js +++ b/services/wordpress/wordpress-downloads.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { downloadCount } = require('../color-formatters') -const { NotFound } = require('..') -const BaseWordpress = require('./wordpress-base') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { downloadCount } from '../color-formatters.js' +import { NotFound } from '../index.js' +import BaseWordpress from './wordpress-base.js' const dateSchema = Joi.object() .pattern(Joi.date().iso(), Joi.number().integer()) @@ -158,4 +156,4 @@ function InstallsForExtensionType(extensionType) { const downloadServices = ['plugin', 'theme'].map(DownloadsForExtensionType) const installServices = ['plugin', 'theme'].map(InstallsForExtensionType) const modules = [...downloadServices, ...installServices] -module.exports = modules +export default modules diff --git a/services/wordpress/wordpress-downloads.tester.js b/services/wordpress/wordpress-downloads.tester.js index 21b48fcd08594..05019f0782733 100644 --- a/services/wordpress/wordpress-downloads.tester.js +++ b/services/wordpress/wordpress-downloads.tester.js @@ -1,13 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' +import { isMetric, isMetricOverTimePeriod } from '../test-validators.js' -const { ServiceTester } = require('../tester') -const { isMetric, isMetricOverTimePeriod } = require('../test-validators') - -const t = new ServiceTester({ +export const t = new ServiceTester({ id: 'wordpress', title: 'WordPress Download Tests', }) -module.exports = t t.create('Plugin Downloads - Total') .get('/plugin/dt/akismet.json') diff --git a/services/wordpress/wordpress-last-update.service.js b/services/wordpress/wordpress-last-update.service.js index cbf018d9319a3..10b48ef92b7e4 100644 --- a/services/wordpress/wordpress-last-update.service.js +++ b/services/wordpress/wordpress-last-update.service.js @@ -1,10 +1,8 @@ -'use strict' - -const moment = require('moment') -const { InvalidResponse } = require('..') -const { formatDate } = require('../text-formatters') -const { age: ageColor } = require('../color-formatters') -const BaseWordpress = require('./wordpress-base') +import moment from 'moment' +import { InvalidResponse } from '../index.js' +import { formatDate } from '../text-formatters.js' +import { age as ageColor } from '../color-formatters.js' +import BaseWordpress from './wordpress-base.js' const extensionData = { plugin: { @@ -76,4 +74,4 @@ function LastUpdateForType(extensionType) { } const lastupdate = ['plugin', 'theme'].map(LastUpdateForType) -module.exports = [...lastupdate] +export default [...lastupdate] diff --git a/services/wordpress/wordpress-last-update.tester.js b/services/wordpress/wordpress-last-update.tester.js index 9301a0d6267b1..d490b6ee72f03 100644 --- a/services/wordpress/wordpress-last-update.tester.js +++ b/services/wordpress/wordpress-last-update.tester.js @@ -1,13 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' +import { isFormattedDate } from '../test-validators.js' -const { ServiceTester } = require('../tester') -const { isFormattedDate } = require('../test-validators') - -const t = new ServiceTester({ +export const t = new ServiceTester({ id: 'wordpress', title: 'WordPress Last Update', }) -module.exports = t t.create('Plugin Last Update') .get('/plugin/last-updated/akismet.json') diff --git a/services/wordpress/wordpress-platform-redirect.service.js b/services/wordpress/wordpress-platform-redirect.service.js index 10b74f8d99893..5f9544e5e1bcf 100644 --- a/services/wordpress/wordpress-platform-redirect.service.js +++ b/services/wordpress/wordpress-platform-redirect.service.js @@ -1,8 +1,6 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = redirector({ +export default redirector({ category: 'platform-support', route: { base: 'wordpress/v', diff --git a/services/wordpress/wordpress-platform-redirect.tester.js b/services/wordpress/wordpress-platform-redirect.tester.js index 2e665cadb9266..2f0816dea5633 100644 --- a/services/wordpress/wordpress-platform-redirect.tester.js +++ b/services/wordpress/wordpress-platform-redirect.tester.js @@ -1,6 +1,5 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() t.create('Plugin Tested WP Version (Alias)') .get('/akismet.svg') diff --git a/services/wordpress/wordpress-platform.service.js b/services/wordpress/wordpress-platform.service.js index cca782975c558..5c0d1cbd05aa7 100644 --- a/services/wordpress/wordpress-platform.service.js +++ b/services/wordpress/wordpress-platform.service.js @@ -1,10 +1,8 @@ -'use strict' - -const { NotFound } = require('..') -const { addv } = require('../text-formatters') -const { version: versionColor } = require('../color-formatters') -const BaseWordpress = require('./wordpress-base') -const { versionColorForWordpressVersion } = require('./wordpress-version-color') +import { NotFound } from '../index.js' +import { addv } from '../text-formatters.js' +import { version as versionColor } from '../color-formatters.js' +import BaseWordpress from './wordpress-base.js' +import { versionColorForWordpressVersion } from './wordpress-version-color.js' const extensionData = { plugin: { @@ -164,7 +162,7 @@ function RequiresPHPVersionForType(extensionType) { const requiredPhp = ['plugin', 'theme'].map(RequiresPHPVersionForType) const requiresVersion = ['plugin', 'theme'].map(WordpressRequiresVersion) -module.exports = [ +export default [ ...requiredPhp, ...requiresVersion, WordpressPluginTestedVersion, diff --git a/services/wordpress/wordpress-platform.tester.js b/services/wordpress/wordpress-platform.tester.js index 43e7edb27287b..ded6f1b6b094b 100644 --- a/services/wordpress/wordpress-platform.tester.js +++ b/services/wordpress/wordpress-platform.tester.js @@ -1,17 +1,15 @@ -'use strict' - -const Joi = require('joi') -const { ServiceTester } = require('../tester') -const { +import Joi from 'joi' +import { ServiceTester } from '../tester.js' +import { isVPlusDottedVersionAtLeastOne, isComposerVersion, -} = require('../test-validators') +} from '../test-validators.js' -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'WordpressPlatform', title: 'WordPress Platform Tests', pathPrefix: '/wordpress', -})) +}) t.create('Plugin Required WP Version') .get('/plugin/wp-version/akismet.json') diff --git a/services/wordpress/wordpress-rating.service.js b/services/wordpress/wordpress-rating.service.js index 843915f1e5ab6..6489fde9dae90 100644 --- a/services/wordpress/wordpress-rating.service.js +++ b/services/wordpress/wordpress-rating.service.js @@ -1,8 +1,6 @@ -'use strict' - -const { starRating, metric } = require('../text-formatters') -const { floorCount } = require('../color-formatters') -const BaseWordpress = require('./wordpress-base') +import { starRating, metric } from '../text-formatters.js' +import { floorCount } from '../color-formatters.js' +import BaseWordpress from './wordpress-base.js' const extensionData = { plugin: { @@ -103,4 +101,4 @@ const ratingsServices = ['plugin', 'theme'].map(RatingForExtensionType) const starsServices = ['plugin', 'theme'].map(StarsForExtensionType) const modules = [...ratingsServices, ...starsServices] -module.exports = modules +export default modules diff --git a/services/wordpress/wordpress-rating.tester.js b/services/wordpress/wordpress-rating.tester.js index a1e1b8c3bae2b..1c686890f16cf 100644 --- a/services/wordpress/wordpress-rating.tester.js +++ b/services/wordpress/wordpress-rating.tester.js @@ -1,13 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' +import { isStarRating } from '../test-validators.js' -const { ServiceTester } = require('../tester') -const { isStarRating } = require('../test-validators') - -const t = new ServiceTester({ +export const t = new ServiceTester({ id: 'wordpress', title: 'WordPress Rating Tests', }) -module.exports = t t.create('Plugin Rating - Stars') .get('/plugin/stars/akismet.json') diff --git a/services/wordpress/wordpress-version-color.js b/services/wordpress/wordpress-version-color.js index fd46f718987a2..4e15ca3c32653 100644 --- a/services/wordpress/wordpress-version-color.js +++ b/services/wordpress/wordpress-version-color.js @@ -1,8 +1,6 @@ -'use strict' - -const { promisify } = require('util') -const semver = require('semver') -const { regularUpdate } = require('../../core/legacy/regular-update') +import { promisify } from 'util' +import semver from 'semver' +import { regularUpdate } from '../../core/legacy/regular-update.js' // TODO: Incorporate this schema. // const schema = Joi.object() @@ -61,8 +59,4 @@ async function versionColorForWordpressVersion(version) { } } -module.exports = { - toSemver, - getOfferedVersions, - versionColorForWordpressVersion, -} +export { toSemver, getOfferedVersions, versionColorForWordpressVersion } diff --git a/services/wordpress/wordpress-version-color.spec.js b/services/wordpress/wordpress-version-color.spec.js index d7d9d8cb8635f..c428886c55347 100644 --- a/services/wordpress/wordpress-version-color.spec.js +++ b/services/wordpress/wordpress-version-color.spec.js @@ -1,10 +1,8 @@ -'use strict' - -const { expect } = require('chai') -const { +import { expect } from 'chai' +import { toSemver, versionColorForWordpressVersion, -} = require('./wordpress-version-color') +} from './wordpress-version-color.js' describe('toSemver() function', function () { it('coerces versions', function () { diff --git a/services/wordpress/wordpress-version.service.js b/services/wordpress/wordpress-version.service.js index 4980ec7f6a4e2..9f5d62741391e 100644 --- a/services/wordpress/wordpress-version.service.js +++ b/services/wordpress/wordpress-version.service.js @@ -1,8 +1,6 @@ -'use strict' - -const { addv } = require('../text-formatters') -const { version: versionColor } = require('../color-formatters') -const BaseWordpress = require('./wordpress-base') +import { addv } from '../text-formatters.js' +import { version as versionColor } from '../color-formatters.js' +import BaseWordpress from './wordpress-base.js' function VersionForExtensionType(extensionType) { const { capt, exampleSlug } = { @@ -53,4 +51,4 @@ function VersionForExtensionType(extensionType) { } } -module.exports = ['theme', 'plugin'].map(VersionForExtensionType) +export default ['theme', 'plugin'].map(VersionForExtensionType) diff --git a/services/wordpress/wordpress-version.tester.js b/services/wordpress/wordpress-version.tester.js index e8fc1a94de078..9abf4a330e7b1 100644 --- a/services/wordpress/wordpress-version.tester.js +++ b/services/wordpress/wordpress-version.tester.js @@ -1,12 +1,10 @@ -'use strict' +import { ServiceTester } from '../tester.js' +import { isVPlusDottedVersionAtLeastOne } from '../test-validators.js' -const { ServiceTester } = require('../tester') -const { isVPlusDottedVersionAtLeastOne } = require('../test-validators') - -const t = (module.exports = new ServiceTester({ +export const t = new ServiceTester({ id: 'wordpress', title: 'WordPress Version Tests', -})) +}) t.create('Plugin Version').get('/plugin/v/akismet.json').expectBadge({ label: 'plugin', diff --git a/services/youtube/youtube-base.js b/services/youtube/youtube-base.js index ad2bfd83fc3c6..94f14ee6018d2 100644 --- a/services/youtube/youtube-base.js +++ b/services/youtube/youtube-base.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { BaseJsonService, NotFound } = require('..') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') +import Joi from 'joi' +import { BaseJsonService, NotFound } from '../index.js' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' const documentation = `

By using the YouTube badges provided by Shields.io, you are agreeing to be bound by the YouTube Terms of Service. These can be found here: @@ -92,4 +90,4 @@ class YouTubeChannelBase extends YouTubeBase { static type = 'channel' } -module.exports = { documentation, YouTubeVideoBase, YouTubeChannelBase } +export { documentation, YouTubeVideoBase, YouTubeChannelBase } diff --git a/services/youtube/youtube-channel-views.service.js b/services/youtube/youtube-channel-views.service.js index 27712d5c83ebf..d3f854a920a6f 100644 --- a/services/youtube/youtube-channel-views.service.js +++ b/services/youtube/youtube-channel-views.service.js @@ -1,8 +1,6 @@ -'use strict' +import { documentation, YouTubeChannelBase } from './youtube-base.js' -const { documentation, YouTubeChannelBase } = require('./youtube-base') - -module.exports = class YouTubeChannelViews extends YouTubeChannelBase { +export default class YouTubeChannelViews extends YouTubeChannelBase { static route = { base: 'youtube/channel/views', pattern: ':channelId', diff --git a/services/youtube/youtube-channel-views.tester.js b/services/youtube/youtube-channel-views.tester.js index eab2689fd0ec7..47501da678108 100644 --- a/services/youtube/youtube-channel-views.tester.js +++ b/services/youtube/youtube-channel-views.tester.js @@ -1,9 +1,9 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { noToken } = require('../test-helpers') -const { isMetric } = require('../test-validators') -const noYouTubeToken = noToken(require('./youtube-channel-views.service')) +import { createServiceTester } from '../tester.js' +import { noToken } from '../test-helpers.js' +import { isMetric } from '../test-validators.js' +import _noYouTubeToken from './youtube-channel-views.service.js' +export const t = await createServiceTester() +const noYouTubeToken = noToken(_noYouTubeToken) t.create('channel view count') .skipWhen(noYouTubeToken) diff --git a/services/youtube/youtube-comments.service.js b/services/youtube/youtube-comments.service.js index 679605684cc6a..0f7faf3c7806b 100644 --- a/services/youtube/youtube-comments.service.js +++ b/services/youtube/youtube-comments.service.js @@ -1,8 +1,6 @@ -'use strict' +import { documentation, YouTubeVideoBase } from './youtube-base.js' -const { documentation, YouTubeVideoBase } = require('./youtube-base') - -module.exports = class YouTubeComments extends YouTubeVideoBase { +export default class YouTubeComments extends YouTubeVideoBase { static route = { base: 'youtube/comments', pattern: ':videoId', diff --git a/services/youtube/youtube-comments.tester.js b/services/youtube/youtube-comments.tester.js index dfdbde45d49c2..dded2be9dfb28 100644 --- a/services/youtube/youtube-comments.tester.js +++ b/services/youtube/youtube-comments.tester.js @@ -1,9 +1,9 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { noToken } = require('../test-helpers') -const { isMetric } = require('../test-validators') -const noYouTubeToken = noToken(require('./youtube-comments.service')) +import { createServiceTester } from '../tester.js' +import { noToken } from '../test-helpers.js' +import { isMetric } from '../test-validators.js' +import _noYouTubeToken from './youtube-comments.service.js' +export const t = await createServiceTester() +const noYouTubeToken = noToken(_noYouTubeToken) t.create('video comment count') .skipWhen(noYouTubeToken) diff --git a/services/youtube/youtube-likes.service.js b/services/youtube/youtube-likes.service.js index e2133cd392c1a..94e2d7ae66264 100644 --- a/services/youtube/youtube-likes.service.js +++ b/services/youtube/youtube-likes.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { documentation, YouTubeVideoBase } = require('./youtube-base') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { documentation, YouTubeVideoBase } from './youtube-base.js' const documentationWithDislikes = ` ${documentation} @@ -16,7 +14,7 @@ const queryParamSchema = Joi.object({ withDislikes: Joi.equal(''), }).required() -module.exports = class YouTubeLikes extends YouTubeVideoBase { +export default class YouTubeLikes extends YouTubeVideoBase { static route = { base: 'youtube/likes', pattern: ':videoId', diff --git a/services/youtube/youtube-likes.tester.js b/services/youtube/youtube-likes.tester.js index 5c266e0987323..8f6f8dc8fcac6 100644 --- a/services/youtube/youtube-likes.tester.js +++ b/services/youtube/youtube-likes.tester.js @@ -1,10 +1,10 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) -const { noToken } = require('../test-helpers') -const { isMetric } = require('../test-validators') -const noYouTubeToken = noToken(require('./youtube-likes.service')) +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +import { noToken } from '../test-helpers.js' +import { isMetric } from '../test-validators.js' +import _noYouTubeToken from './youtube-likes.service.js' +export const t = await createServiceTester() +const noYouTubeToken = noToken(_noYouTubeToken) t.create('video like count') .skipWhen(noYouTubeToken) diff --git a/services/youtube/youtube-subscribers.service.js b/services/youtube/youtube-subscribers.service.js index 408b451bae908..0c0d1b69aaf70 100644 --- a/services/youtube/youtube-subscribers.service.js +++ b/services/youtube/youtube-subscribers.service.js @@ -1,8 +1,6 @@ -'use strict' +import { documentation, YouTubeChannelBase } from './youtube-base.js' -const { documentation, YouTubeChannelBase } = require('./youtube-base') - -module.exports = class YouTubeSubscribes extends YouTubeChannelBase { +export default class YouTubeSubscribes extends YouTubeChannelBase { static route = { base: 'youtube/channel/subscribers', pattern: ':channelId', diff --git a/services/youtube/youtube-subscribers.tester.js b/services/youtube/youtube-subscribers.tester.js index acff789b0c64b..d1d1c5175996b 100644 --- a/services/youtube/youtube-subscribers.tester.js +++ b/services/youtube/youtube-subscribers.tester.js @@ -1,9 +1,9 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { noToken } = require('../test-helpers') -const { isMetric } = require('../test-validators') -const noYouTubeToken = noToken(require('./youtube-subscribers.service')) +import { createServiceTester } from '../tester.js' +import { noToken } from '../test-helpers.js' +import { isMetric } from '../test-validators.js' +import _noYouTubeToken from './youtube-subscribers.service.js' +export const t = await createServiceTester() +const noYouTubeToken = noToken(_noYouTubeToken) t.create('subscriber count') .skipWhen(noYouTubeToken) diff --git a/services/youtube/youtube-views.service.js b/services/youtube/youtube-views.service.js index 5259e6818add2..32c2d6afa92ec 100644 --- a/services/youtube/youtube-views.service.js +++ b/services/youtube/youtube-views.service.js @@ -1,8 +1,6 @@ -'use strict' +import { documentation, YouTubeVideoBase } from './youtube-base.js' -const { documentation, YouTubeVideoBase } = require('./youtube-base') - -module.exports = class YouTubeViews extends YouTubeVideoBase { +export default class YouTubeViews extends YouTubeVideoBase { static route = { base: 'youtube/views', pattern: ':videoId', diff --git a/services/youtube/youtube-views.tester.js b/services/youtube/youtube-views.tester.js index af7c036daff38..f825e71fb46f8 100644 --- a/services/youtube/youtube-views.tester.js +++ b/services/youtube/youtube-views.tester.js @@ -1,9 +1,9 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { noToken } = require('../test-helpers') -const { isMetric } = require('../test-validators') -const noYouTubeToken = noToken(require('./youtube-views.service')) +import { createServiceTester } from '../tester.js' +import { noToken } from '../test-helpers.js' +import { isMetric } from '../test-validators.js' +import _noYouTubeToken from './youtube-views.service.js' +export const t = await createServiceTester() +const noYouTubeToken = noToken(_noYouTubeToken) t.create('video view count') .skipWhen(noYouTubeToken)