From 23c0406bedfc6930735e8f5ea75dfe34faf1f290 Mon Sep 17 00:00:00 2001 From: Pierre-Yves B <PyvesDev@gmail.com> 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 3ecdeec47a..0c4a2f6f86 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 3024b09851..170a29b892 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 3662cf5b3b..0614f9a013 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 4f1faad2b1..771e46a75d 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 8a85e65d93..0e076ba900 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 66e7a5e5bf..9f913cee41 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 42c09f9168..82e3f5fa25 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 94642db1f8..da0b156d5e 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 b7b3bded44..74c1004f30 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 // <https://github.com/espadrine/gh-badges/issues/12#issuecomment-31518129> 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 ef7a0068e1..88de5a4869 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 f4ce181026..8c9c7976be 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 2666c818aa..fd36f95057 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 9d70fcf52c..bbdcb92248 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 187063c88d..ee59b8ddec 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 3d786df49a..7f4730d2d2 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 464b3800e6..45665e4702 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 3781d450e3..df9eae5efb 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 a79caeca82..993e0b584b 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 25b0a33e82..728f3bd188 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 d42a54e11d..ee0c5e9020 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 42ca1505fb..8db8dfc6f7 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 3f16ea0c81..0dd75930ca 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 781c76f130..50b42990c1 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 332c7ca838..0a22086601 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 9fa7e7e1a2..ac58c86598 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 999867aa22..14a707efae 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 c6f5d6afb5..9c705116a2 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 d1bb0028fa..14042f9a4d 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 1c4816b111..ea21344f36 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 34404aa658..82d239bec1 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 9a94cb2752..db171fee34 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 195926d74a..07ffedbe20 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 4875b409c7..8a55ff4c89 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 b83b458caf..361f2bd8a7 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 a2c4796a58..03ce5b2485 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 3cc321efe3..58ca62b6d9 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 5bbd709089..a1c897ff6d 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 99200d6564..6aa9ff03ed 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 3428771bfb..770b257165 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 3a78deb09a..416fc735d7 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 202dd052c6..2267ecf41b 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 ef99fdb296..502ede424b 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 6186b1e6b0..f7b549e151 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 f048ec55bd..725b1d6617 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 a4cd21bbd3..1ea498f72a 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 01ffc800cc..90ee870e4b 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 d0c6276a37..9859f07972 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 883cb52b67..e4e8dbb5a4 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 545992ebbb..336ce12bb9 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 3ad27782bc..edb72725b9 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 7cacacc903..40096a3065 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 2a8a55c48e..4651b17bfe 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 89b1451d96..9ca5e17cb4 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 ee8e213954..c820022a8a 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 41ae5ed905..0b193a9405 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 4bf828f9cc..5a312db98f 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 c2404b8c38..cf499eca15 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 374c17cb00..e26c28fc1e 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 33f472b02d..646aa721b5 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 5d499e9dad..094e3af07f 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 1f81913c6f..4b1912d230 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 9d60b495af..24a7801ed1 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 612a0d5cc2..42326d8745 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 3f93145827..1d66f4e914 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 e22a7227b3..f2131490cf 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 97ef96c66c..7eda5881c5 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 a2da0e922d..23990b15dd 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 c51f771070..78f6c46f5c 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 70af889af9..d8800f4617 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 e32e05c412..d60d89112f 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 0873f4c863..7b38803d7b 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 85280a1a31..f27bc447c2 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 2d87cc56d5..eae365f9e0 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 4b91b05523..529edeaaeb 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 e156070161..63ad06d09a 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 46cb98a24a..c89aae419a 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 bb3903a684..53a60b0f54 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 f4f2381429..3ea4a51028 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 a19c916d92..072a497c1b 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 22cffbaef7..31fa40afb0 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 d00118969a..c8b87ffda1 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 36e9d57d73..b19278b049 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 3955561034..dc43db3f56 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 d63be95a0d..917c1f859b 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 4f90a614c4..17246b6693 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 f4a99b7b72..947b7f2eb0 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 c9c4695fbe..91a46cadb8 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 610c258eeb..c2050d533e 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 0a23f638ed..34d8d20993 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 44e4718267..4b6cf47f89 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 4aa282f853..3cc94c5d55 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 f5c6fcb46c..862198fcea 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 40d216d896..f89f23d8f5 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 a852e28515..ca1d65cd9b 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 05a5ee3fbc..dd0b6fb306 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 54e4cfb8a9..7dcf64ad5a 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 8780b17e6f..fdfa937d20 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 b155793b9b..17c42ac09b 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 412c50e375..009371ecff 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 94b4185945..f59f587886 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}\`. <br>`, diff --git a/doc/TUTORIAL.md b/doc/TUTORIAL.md index 9d8bb05371..b107a385b2 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 <https://img.shields.io/gem/v/formatador> to generate this badge:  @@ -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 353b56de6b..8f8b727490 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 a7816e7c18..0a332806bc 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 c52368d162..4325c0365a 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 2a973fd4f1..0e83d9aa21 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 ebf6b46e08..e363cb3cbd 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 0b6e5fa44d..1d90adebb7 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 e358139614..31fe5ed8b4 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 65ef3d3dc9..275b5cd886 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 cefd367d9f..0000000000 --- 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 0000000000..deaac236c6 --- /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 7a9efbfdbf..f48f32d0d9 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 86f9b8e356..a17b7ce8a2 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 d32f95bb93..da64c20d34 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 26000732e5..a64f716c3b 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 38964fa37b..0d6eaae400 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 7011c156ae..040df8a503 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 c36fe39ffe..6434f661f8 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 3f90cbf780..5866174a93 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 04a09f2b82..234168c42a 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 9e29ad246c..bf8e943828 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 7686138f7c..addbdedb81 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 fee8bf24a2..4b60fa8925 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 fc41143139..e019bbcd17 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 a3dfb61486..bf84d46ea8 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 de161e029a..5e61fd5cdf 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 7eb2bbc6f8..ea2caef701 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 090221348f..d23b354586 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 ad3012d4fd..89e50dbbdb 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 = ` <p> @@ -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 9ad91c2905..b181673ec5 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 9943176473..1f26f9127c 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 f17a90656f..9843273741 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 91a774279b..0d42ee8731 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 a0f168ad0f..5355be2ce1 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 33bf27b85c..96394bba7f 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 9f63c1b0b0..e900a589a6 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 43da34f60d..6af7ae16ca 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 f9dd14a4d6..4ac15bff0c 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 c447859782..aa1cdcb773 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 ac1a3980d4..8679789fa0 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 9b52cfe7ed..681bd0d465 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 c7553a491e..ed6f7c861e 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 015612c43c..923b718466 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 df72345999..61e43b31b2 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 625a1f1a16..40ad8049d4 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 352a9e7ec8..29cb395835 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 9858a91f17..b1141067e4 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 dc389cbde6..fc856aa7f2 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 5d539a72cd..4e83a26fd4 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 81cccb39f2..a31306e30e 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 c3efa4e636..465130445e 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 = ` <p> @@ -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 df81a2de2e..102f532d29 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 f06a5003a8..c3ee192b13 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 379e8133c6..d92b65464b 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 dbab2748a0..901e8e0bf9 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 93fd0a8a70..0bdc44bec7 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 51b176a4cc..c6026d4f35 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 37d0702bd9..184530bde7 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 5159c86408..8485fa49fe 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 871d2a89b4..7302741117 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 f2c28adeae..4234b36f48 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 = ` <p> @@ -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 3de650324f..2177d9077c 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 9b841bb077..67b457352a 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 eccbfc90c5..96393ad4b0 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 = ` <p> @@ -22,7 +20,7 @@ const documentation = ` </p> ` -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 c161bd618b..7ffa1d94e3 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 5b373a3fe7..a2939b95ae 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 eb3425b89c..d708183ac8 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 a8b5d8435f..e67c703dd8 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 7cd544b7d9..d36f81ca27 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 287eb9296a..19b8620e24 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 3901ec29de..a4360440e1 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 fd19d8e82b..f181fb2c25 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 a16e2413c8..cc55f5bdba 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 3b852d46e6..e223663903 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 9a51426dd1..2f6dee749d 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 f2399d66cf..9bcf5a5b92 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 4f05579b35..4bdb300b52 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 347e1d97cb..dc28820bcd 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 2eeec523f9..1fe7293a8a 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 3ecc002899..add3ad820f 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 39aefaea11..565a2c1634 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 9e9f48ba85..c9ab932578 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 0a36660e95..1898317b54 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 f4c7018165..03bbf3c049 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 c3a27f6838..ee76f55972 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 b31ba9f78e..26c2b238ad 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 9834fdd8e6..1bb4b81aff 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 634b8adbbc..cec68a500c 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 12438ceff8..43a7054289 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 2c454ba11f..24476a20d6 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 dc89bdaf96..18ba64b760 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 aa34d2ece8..277d704021 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 2f7129b438..acccf3a756 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 855875c467..5b8eccd36f 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 c4d7a7064e..31b84be9fd 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 156458798b..f90f95397a 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 8fee06bcc6..c673891b67 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 e0acfd608f..aadc849eed 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 = ` </p> ` -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 64b50f9431..114e29fa42 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 3bdffa120a..f3489bfee5 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 4a088eee45..9b33b6c2be 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 69b19d2165..07cf9be308 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 16b298b0cf..c9cfb31648 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 bca5c506e7..d2819659f9 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 fbc4eb5e68..5609e0880a 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 a4ec4d6f29..525bff0e02 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 fc45a33520..a17077b32d 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 64cfbf49dd..85b64cab52 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 aa23655b92..14c96f7e3e 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 4e3503de27..d1d9e967f5 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 6f7a3139d2..a2da7ec375 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 a564c340a3..8ee0365156 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 c03f3d1a7c..584c6c9f14 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 f7ac3e9910..6c2a3a18de 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 ac0049d372..77e917c2b7 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 e2faa0d679..99068389d0 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 cc2ffaa587..8c017faf57 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 95bbe0009b..5c273b5357 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 bf5d670442..3d4f20c1d5 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 12f5130e9a..7e8341c969 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 a0f3f5cef5..d00b6c3c13 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 ea9082779b..e9e42af959 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 09d49442d4..cccf0b95e1 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 7a38690077..4aefbf8af7 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 b908976637..ba62ffaa11 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 84efe01135..2087af4531 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 ecdded2b10..8cbda6b312 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 7e4b9d07bb..437f2d630a 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 a23d9cc8ce..a3f6e396fb 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 9a89c9e6dd..15996eebb3 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 3925de5f1e..1a5932354d 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 94ec0aad26..afb116f46d 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 048161a8ff..344eddc901 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 ee495b9c7e..5d7e23cd35 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 277cc6a43c..b0b65a80bd 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 07c8e86521..cba658950f 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 e0ae168661..98bcbf49de 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 3f942a24ff..a25403ad65 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 7fe160e207..746505bc21 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 c0caf8da6b..e54056deed 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 8e66b7470e..b7dbf18ba8 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 65d3c02bc3..95f401b054 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 3f6c633192..c4eba4f9ff 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 dc2b4fb4d1..83cb468d84 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 c05aa58bb5..f2d176f973 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 f82fccf2cb..bc55f83063 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 468ea4fa2f..e4e934abf5 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 3c0b4b082e..04da6a9b74 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 580018b2b4..ab0c24fed2 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 7f417bd26e..4c4d35d76d 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 cc8020e210..be97c7eae0 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 9c222194c3..8408c492ad 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 e70062db79..d2b68b56de 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 2e6eb7e42c..38531168c8 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 2de65a67a1..811ceb6db1 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 33ee8fd131..9bab1043d1 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 94c441a5ca..b987317b0b 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 57b440c855..4999796188 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 2ea8184631..cc0ead2a18 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 a58bce7b6d..9b7f81eb8a 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 de7c9acdc9..66ca304512 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 9d56de406e..2707d2e180 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 1a9154db68..4e23c04550 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 c5fb7d0761..ecafc48cf9 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 = ` </p> ` -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 ed54900d27..d0f599a3fa 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 e7e3170073..4eeea1c609 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 613efb1306..748a87950b 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 d9b1a80f0d..a4ba4d95e8 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 1df7970214..56be9a4fd3 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 1672c89c96..d110eabdfb 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 1cac77ef25..d9a8bde1d6 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 37fbe1cd75..0b0f52f5db 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 dce57d7ee4..ffd179a44f 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 54716697ec..118c55251a 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 4aab0ce96c..130451f9b0 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 ce9fa6e78b..de45ed9e3e 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 265b5094b9..049c5fd2a1 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 939cee58de..d7cd3f7a00 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 6fa6962ef7..8b7f54b4a6 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 1d86806051..796cb38551 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 d2ecf97870..b6e936cbc1 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 7cffa6ca27..cfafec49a8 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 73444a7be4..fdf7cc13aa 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 aa06463aaf..3154582414 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 9491912ab5..486dba8a0d 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 4ffc6516a2..90d9af9f0a 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 01883e775f..6d7d147f5e 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 fe2e36560b..c68eb20bea 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 523a5ace78..60c8664766 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 1ebdf4d31e..ba4e0fe6cb 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 0e45f12abc..4b6604d531 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 9fa5eba654..2cecfad467 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 b1eb9550f2..1fd09fef64 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 48af1e3356..de826f7cd7 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 235927a6b3..46b0d556a7 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 d530078cb5..415dfa6857 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 6f6d0b52b4..3b2705ecc7 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 09199d9150..cdc0f561b8 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 1643786e91..a28e7d4f1d 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 e8a997cacd..83aa2b092e 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 bcf2433863..53ea4f4a5f 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 fb9f4dfa76..8cfba3c5e1 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 b54ec9c988..92cba8d084 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 a9f6c31c32..402601004d 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 56af778661..96d0c4c941 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 850d6e976c..bb25656e21 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 3a1161e97c..1581c8a7dd 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 855072761c..e87fe5cea8 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 fd89ebcb53..ec442f8365 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 da064bf954..9e2e13ccf4 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 bb12937c09..c32ab9517b 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 79d711034e..390295433b 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 4f631dae9e..be7a6d1c18 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 97898f6b8a..7ceba9f3ba 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 4fc19952d8..3242c1cd5a 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 15d2c3041e..440bb822c8 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 0fd70f95db..6df7615a94 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 f297d44d24..9e476514d8 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 4e8d95c3ee..e6a97345cf 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 29268a604e..10f4386a2b 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 d01f3f973e..32fda7de30 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 = ` <p> @@ -9,7 +7,7 @@ const documentation = ` </p> ` -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 3e0135bd01..ec5000da23 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 18f499aa8d..67e171d93b 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 275e702ab1..b7e4ac0761 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 c113ca13e0..404cc75b3d 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 046c31d1e1..d56026c476 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 b24d61c671..93dc625dea 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 2885b9479d..f57dcaf341 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 f3e121f28d..57d2cf3a31 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 aa920d84d5..9ac85a9e1e 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 8be46d36a4..b35daf9f90 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 957704f3c4..04aeaf2b02 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 d01055bd00..fb6ecc6b79 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 63632cc7e0..34779dad7f 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 7e510d0cad..65837b9a35 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 = ` <iframe src="https://player.vimeo.com/video/364220040" width="640" height="210" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe> ` -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 926ac9859d..4dbbeae36b 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 694775133a..4e9ca9d6d6 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 72d265fe10..f1285eba11 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 772eb34658..6dce032f5b 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 7037fca298..e6c1322c38 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 a074fe85e8..dc779eb291 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 f8b2e90284..c9ecc64ddc 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 4d9ef389a8..76029da3c4 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 c48a57d63a..ba28af2990 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 4cc144d7ce..f52ae96d0d 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 c98d5ada68..7c4d0985f3 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 efc4fb2597..9d58768459 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 8fc27256d2..a4692a6435 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 22d508dcc3..936451900d 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 d40b058250..8fd3aa8b45 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 59a8f8ef72..9335af2501 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 8ac3db1fa4..51a5317348 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 de97cf00b8..26218ca350 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 87908b00f4..0b9b1d6879 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 5749215cac..9d741f8f96 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 cdf55b2574..2482edea4a 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 14ed46232f..16c7ea4946 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 56857c5fa7..946e0d161b 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 6707e88967..c476a773f3 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 aec79700c9..92cc8eb81e 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 9a732e8564..ebd715c337 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 88eabde175..00bb00e985 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 15fdab400f..bd1681c27b 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 46ebefdac6..097ccc0c53 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 309eb6ba41..ca88f67e49 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 0e7c566bfc..0bd6157bdc 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 11a7918cc9..7e243fd9c0 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 e2b0ea1b33..f15285b3bb 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 13aaa0721d..5b5986efb6 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 dc0b914fa5..0cb1527361 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 59882a0089..abd50e8fee 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 3c050bc5d9..e82bf59d6e 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 423c091513..4733e5343a 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 62f99a0cf2..52608f43d3 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 f40797ac53..0da04e2a24 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 8aeced3af4..19c2c1626f 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 972c7256e3..88015d7660 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 292c84964e..7cacafa411 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 6921857674..cb3b6c6ebe 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 337fe66d2d..5e01de94d1 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 d36dda48a3..38bb48ee74 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 25af9ff15a..774483608e 100644 --- a/services/dynamic/dynamic-response-fixtures.js +++ b/services/dynamic/dynamic-response-fixtures.js @@ -1,7 +1,4 @@ -'use strict' - -module.exports = { - exampleXml: `<?xml version="1.0"?> +export const exampleXml = `<?xml version="1.0"?> <catalog> <book id="bk101"> <author>Gambardella, Matthew</author> @@ -121,5 +118,4 @@ module.exports = { environment.</description> </book> </catalog> -`, -} +` diff --git a/services/dynamic/dynamic-xml.service.js b/services/dynamic/dynamic-xml.service.js index 9c14c59649..2278f7260a 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 7987164cac..ca233d2c0a 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 = `<?xml version="1.0"?> <catalog> diff --git a/services/dynamic/dynamic-xml.tester.js b/services/dynamic/dynamic-xml.tester.js index d0b76cef41..a35d303c3e 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 a774717086..1c606f9033 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 cb04be8bcf..e3d5cce1fc 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 9797e81673..ed242c944a 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 ca30499f8e..7e309dba65 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 fd8c5387b0..a4276731b9 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 ae4fb3fa39..c7cbaf1183 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 878fe844c0..a73862ee73 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 0b648a91ce..1f004bad22 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 4322263077..74ceb06d6a 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 4faf06a486..b25b0ac223 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 f7b9d8be1a..471651696b 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 68361338e7..a13b7d0d03 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 af1b8628d8..fd0d6e756b 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 6f15d0b2e3..0e367fa125 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 b3e58b9bc8..c47a95c8ee 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 b2eb4040e0..4aac425d1e 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 55cacdf103..17394e5e29 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 d2e0a98f48..46d41b2f00 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 3627695a48..01d776263a 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 f2f7e45736..dd606d090c 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 d432de1247..b1c07737a6 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 81e159bf57..1f3cf8d00c 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 4501e3e6a3..c8db8c7de1 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 097c083fe4..e0c6de4a58 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 007fc40a07..8a64ccc74c 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 2001439674..3be249e02c 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 127e426269..3ce765eb20 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 5d77c54eb2..ea63f06ee6 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 80e3953541..d869bcd6ef 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 134b5e84a2..51f0d38c51 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 0e65635588..54d237de38 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 47189d6e2c..c6f1444c39 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 70980d3a5d..99133e1025 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 6f5b9ad89f..1b46191ebb 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 ce276ab7b4..727497013d 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 f2e697cde3..fc72bb3519 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 bb3ccfed06..cd709bb4bf 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 1be79b5245..5ed9d0df7d 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 80d1d9286c..9156752cb3 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 1a78371e92..de46d49336 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 4cc5d89fcd..73626c7b9c 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 fba13f7d93..d122c625c6 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 6877777e14..0043e2ff9b 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 b3a76ac147..ddcaeba5fe 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 152a1ed985..9e5431424f 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 4a3c4df77e..04ebca3757 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 b4468af421..2b80baf7cc 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 2b6145ea22..80347be581 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 523d3589f7..2d6cab6e24 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 52a8dbd8fe..9ffea4d056 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 438c8386d8..fb751498e0 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 a2f2d9fa6a..ed54e6f2ea 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 dea4dd6d01..f2656b3cc6 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 0caf068b13..26f9a0ac17 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 74d3607a5a..eefbe1b966 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 cd2d173f8e..dbb59d68e0 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 16aa35deba..826ab3990d 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 79c68724c2..35097f7b5a 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 5b6f6c9e6a..80cfe34bdd 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 e8f1a35486..c5b394fbce 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 8a6e52e13c..39ec144e80 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 d9190659c2..ee7ad583ac 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 3a401e9bc9..bd18f2d688 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 613d1f90d8..46aae3410a 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 baeb41a615..5e6f9f9fdc 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 bda397e809..7fd0cc924b 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 4ba6e65c29..a16a093d9c 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 0ddd022a5e..1cf6c72fd1 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 58bbd2489e..81e4f97d92 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 0ecd46fbe4..ed927180ac 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 7b8d32242e..e74114e7a4 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 0103295624..6ad4c713e0 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 15bebff101..4495d3b473 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 04dfc21cbc..eed495401c 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 9f7307c85a..d3221706c5 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 753dd2d390..325ae34faa 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 7b0e4885b0..24aabaa34e 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} <p> @@ -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 721691ad5b..056a9622a0 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 2ea38495e3..b4ac6c6f2c 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 88bc5c3356..425563c220 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 737419d485..7a34787668 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 cb22a498c4..d544a91e74 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 099092af95..e002516906 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 f39bf32cbb..71b3d01b05 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 c0db38a839..4e1babb264 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 67bac545b8..0c60e03c67 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 9656b806dd..31ad83fbbf 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 cb45aa2a4c..9feded9bae 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 e83e4a1d89..d42378079c 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 85339bd39a..bf8782c17a 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 = ` <p> @@ -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 01916b5a8a..c872f7ab64 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 b11b1526d0..5fb0212a9f 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 eb11e24fff..9bbeda52c6 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 = ` <p> @@ -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 40be57b51b..8bf174f7b6 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 da07a159e6..1be7ba22c6 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 8fca29bee6..48359527c6 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 3d5ef086f3..e639bbd4cc 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 0a9de66414..bb0103e48c 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 979345af9e..68e1b2a5eb 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 04c88c2f24..57bd0c11a7 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 9f7b37ed2b..d9bfe3d2ad 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 bb25a88dab..f84a99f432 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 1bed157eaa..70176517bf 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 1cf89586cf..d493e03ffd 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 311a097271..b730372221 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 f7277d884b..b746440299 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 aa6dc250a6..92427519fe 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 76f92fe72a..b452fbe96b 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 5ee66e832d..23eed9fb37 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 9fabd62df0..f306563a59 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 907d16942b..c86f97bcdb 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 0a628700f2..360153f29e 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 82359204cc..87167fc26d 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 261b4b4126..0cef52f4c7 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 248397a730..5919507398 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 77c1beb32d..a1e9849f97 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 c70aa58f70..ac3b071c5d 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 e1ed8b5003..4305a6074b 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 d345f4ca2a..62b623aed7 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 3056532657..dd9b92234a 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 9b8dc0004b..dc2663069f 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 5a15ccd3be..eb16fb42b0 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 a36b3cc927..758903747a 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 9161c20625..c3fa864748 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 4e0d1c861b..969c75d91b 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 c1215a18c7..9095f266f9 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 449a23e2bb..837abf6151 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 8bf77d8728..cc6516685e 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 01d1511674..18247e1918 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 acca83b2c0..098bb7c11c 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 314edaca0a..3cf255fb73 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 1329ab06ce..94343ad530 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 6fa28a5485..629eafeecb 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 f581076bf3..774ddad426 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 5d1e43da21..c39f5c700f 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 f8f9d9ddd9..361d1b9eb7 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 83dd403194..cb3fa80564 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 97237a8157..b932faf17e 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 9645a469ee..db61aa9ac9 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 6a465bdceb..825104094c 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 ebe0cd50c1..dc5247cc4e 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 49ce512086..c790da3f23 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 fda46a39d1..6155dd553b 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 c0475651a4..d97201d518 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 88ebf8b838..c0fbd51e1b 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 030eb3283e..1a804c2886 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 9c96e95b64..21aac82113 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 348d0dbf2c..5bfea8d712 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 705f512354..70461fe72c 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 3f4e106746..e67516275f 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 84b1797c23..088757ff93 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 6d58e6ed85..606b9e53c8 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 bdcbd40568..f5467d7b2a 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 380823e4b5..573a16e7b1 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 8f69c62c84..f7b4c045d8 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 <a href="https: </p> ` -module.exports = class GitlabCoverage extends BaseSvgScrapingService { +export default class GitlabCoverage extends BaseSvgScrapingService { static category = 'coverage' static route = { diff --git a/services/gitlab/gitlab-coverage.tester.js b/services/gitlab/gitlab-coverage.tester.js index e655e39211..576c5a8972 100644 --- a/services/gitlab/gitlab-coverage.tester.js +++ b/services/gitlab/gitlab-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 (branch)') .get('/gitlab-org/gitlab-runner/12-0-stable.json') diff --git a/services/gitlab/gitlab-pipeline-status.service.js b/services/gitlab/gitlab-pipeline-status.service.js index 084b1a9fbe..70494b1a6c 100644 --- a/services/gitlab/gitlab-pipeline-status.service.js +++ b/services/gitlab/gitlab-pipeline-status.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { isBuildStatus, renderBuildStatusBadge } = require('../build-status') -const { optionalUrl } = require('../validators') -const { BaseSvgScrapingService, NotFound, redirector } = require('..') +import Joi from 'joi' +import { isBuildStatus, renderBuildStatusBadge } from '../build-status.js' +import { optionalUrl } from '../validators.js' +import { BaseSvgScrapingService, NotFound, redirector } from '../index.js' const badgeSchema = Joi.object({ message: Joi.alternatives() @@ -99,7 +97,4 @@ const GitlabPipelineStatusRedirector = redirector({ dateAdded: new Date('2020-07-12'), }) -module.exports = { - GitlabPipelineStatus, - GitlabPipelineStatusRedirector, -} +export { GitlabPipelineStatus, GitlabPipelineStatusRedirector } diff --git a/services/gitlab/gitlab-pipeline-status.tester.js b/services/gitlab/gitlab-pipeline-status.tester.js index 0ab56554a6..db8ee99ed7 100644 --- a/services/gitlab/gitlab-pipeline-status.tester.js +++ b/services/gitlab/gitlab-pipeline-status.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: 'GitlabPipeline', title: 'Gitlab Pipeline', pathPrefix: '/gitlab/pipeline', -})) +}) t.create('Pipeline status').get('/gitlab-org/gitlab/v10.7.6.json').expectBadge({ label: 'build', diff --git a/services/gitter/gitter.service.js b/services/gitter/gitter.service.js index 53a8f3bf6d..55e5d119f7 100644 --- a/services/gitter/gitter.service.js +++ b/services/gitter/gitter.service.js @@ -1,8 +1,6 @@ -'use strict' +import { BaseStaticService } from '../index.js' -const { BaseStaticService } = require('..') - -module.exports = class Gitter extends BaseStaticService { +export default class Gitter extends BaseStaticService { static category = 'chat' static route = { diff --git a/services/gitter/gitter.tester.js b/services/gitter/gitter.tester.js index 488c6224e2..53c8a9cdd9 100644 --- a/services/gitter/gitter.tester.js +++ b/services/gitter/gitter.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('on gitter').get('/nwjs/nw.js.json').expectBadge({ label: 'chat', diff --git a/services/gradle-plugin-portal/gradle-plugin-portal.service.js b/services/gradle-plugin-portal/gradle-plugin-portal.service.js index ffa94cbd96..c1602647f2 100644 --- a/services/gradle-plugin-portal/gradle-plugin-portal.service.js +++ b/services/gradle-plugin-portal/gradle-plugin-portal.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/gradle-plugin-portal/gradle-plugin-portal.tester.js b/services/gradle-plugin-portal/gradle-plugin-portal.tester.js index 8b360b1cb2..a662dc4f19 100644 --- a/services/gradle-plugin-portal/gradle-plugin-portal.tester.js +++ b/services/gradle-plugin-portal/gradle-plugin-portal.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('gradle plugin portal') .get('/com.gradle.plugin-publish') diff --git a/services/gratipay/gratipay.service.js b/services/gratipay/gratipay.service.js index 3ad1964d72..8ea38b6e95 100644 --- a/services/gratipay/gratipay.service.js +++ b/services/gratipay/gratipay.service.js @@ -1,6 +1,4 @@ -'use strict' - -const { deprecatedService } = require('..') +import { deprecatedService } from '../index.js' const commonAttrs = { category: 'funding', @@ -8,7 +6,7 @@ const commonAttrs = { dateAdded: new Date('2017-12-29'), } -module.exports = [ +export default [ deprecatedService({ route: { base: 'gittip', diff --git a/services/gratipay/gratipay.tester.js b/services/gratipay/gratipay.tester.js index 57a7130fa7..f7684a05de 100644 --- a/services/gratipay/gratipay.tester.js +++ b/services/gratipay/gratipay.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: 'gratipay', title: 'Gratipay', -})) +}) t.create('Receiving').get('/Gratipay.json').expectBadge({ label: 'gratipay', diff --git a/services/hackage/hackage-deps.service.js b/services/hackage/hackage-deps.service.js index b2b5939a40..f3cbd1deb9 100644 --- a/services/hackage/hackage-deps.service.js +++ b/services/hackage/hackage-deps.service.js @@ -1,8 +1,6 @@ -'use strict' +import { BaseService } from '../index.js' -const { BaseService } = require('..') - -module.exports = class HackageDeps extends BaseService { +export default class HackageDeps extends BaseService { static category = 'dependencies' static route = { diff --git a/services/hackage/hackage-deps.tester.js b/services/hackage/hackage-deps.tester.js index caab395b12..6133b776e6 100644 --- a/services/hackage/hackage-deps.tester.js +++ b/services/hackage/hackage-deps.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('hackage deps (valid)') .get('/lens.json') diff --git a/services/hackage/hackage-version.service.js b/services/hackage/hackage-version.service.js index b86f2e4d65..e1333a14e6 100644 --- a/services/hackage/hackage-version.service.js +++ b/services/hackage/hackage-version.service.js @@ -1,9 +1,7 @@ -'use strict' +import { renderVersionBadge } from '../version.js' +import { BaseService, InvalidResponse } from '../index.js' -const { renderVersionBadge } = require('../version') -const { BaseService, InvalidResponse } = require('..') - -module.exports = class HackageVersion extends BaseService { +export default class HackageVersion extends BaseService { static category = 'version' static route = { diff --git a/services/hackage/hackage-version.tester.js b/services/hackage/hackage-version.tester.js index 5349195ccd..f4074ec9c1 100644 --- a/services/hackage/hackage-version.tester.js +++ b/services/hackage/hackage-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('hackage version (valid)').get('/lens.json').expectBadge({ label: 'hackage', diff --git a/services/hexpm/hexpm.service.js b/services/hexpm/hexpm.service.js index 9e0e9d0698..fe03981abe 100644 --- a/services/hexpm/hexpm.service.js +++ b/services/hexpm/hexpm.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { metric, addv, maybePluralize } = require('../text-formatters') -const { downloadCount, version: versionColor } = require('../color-formatters') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { metric, addv, maybePluralize } from '../text-formatters.js' +import { downloadCount, version as versionColor } from '../color-formatters.js' +import { BaseJsonService } from '../index.js' const hexSchema = Joi.object({ downloads: Joi.object({ @@ -149,4 +147,4 @@ function DownloadsForInterval(interval) { const downloadsServices = ['day', 'week', 'all'].map(DownloadsForInterval) -module.exports = [...downloadsServices, HexPmLicense, HexPmVersion] +export default [...downloadsServices, HexPmLicense, HexPmVersion] diff --git a/services/hexpm/hexpm.tester.js b/services/hexpm/hexpm.tester.js index 936f74b1df..d7f1d661b7 100644 --- a/services/hexpm/hexpm.tester.js +++ b/services/hexpm/hexpm.tester.js @@ -1,12 +1,10 @@ -'use strict' - -const Joi = require('joi') -const { ServiceTester } = require('../tester') -const { isMetric, isMetricOverTimePeriod } = require('../test-validators') +import Joi from 'joi' +import { ServiceTester } from '../tester.js' +import { isMetric, isMetricOverTimePeriod } from '../test-validators.js' const isHexpmVersion = Joi.string().regex(/^v\d+.\d+.?\d?$/) -const t = (module.exports = new ServiceTester({ id: 'hexpm', title: 'Hex.pm' })) +export const t = new ServiceTester({ id: 'hexpm', title: 'Hex.pm' }) t.create('downloads per week') .get('/dw/cowboy.json') diff --git a/services/homebrew/homebrew-cask.service.js b/services/homebrew/homebrew-cask.service.js index 93310bd31c..bb08a435b4 100644 --- a/services/homebrew/homebrew-cask.service.js +++ b/services/homebrew/homebrew-cask.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({ version: Joi.string().required(), }).required() -module.exports = class HomebrewCask extends BaseJsonService { +export default class HomebrewCask extends BaseJsonService { static category = 'version' static route = { base: 'homebrew/cask/v', pattern: ':cask' } diff --git a/services/homebrew/homebrew-cask.tester.js b/services/homebrew/homebrew-cask.tester.js index c192510cf7..7535c3a8e5 100644 --- a/services/homebrew/homebrew-cask.tester.js +++ b/services/homebrew/homebrew-cask.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('homebrew cask (valid)').get('/iterm2.json').expectBadge({ label: 'homebrew cask', diff --git a/services/homebrew/homebrew-downloads.service.js b/services/homebrew/homebrew-downloads.service.js index 201b5c7bf5..b4e39cbee8 100644 --- a/services/homebrew/homebrew-downloads.service.js +++ b/services/homebrew/homebrew-downloads.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { downloadCount } = require('../color-formatters') -const { metric } = require('../text-formatters') -const { BaseJsonService } = require('..') -const { nonNegativeInteger } = require('../validators') +import Joi from 'joi' +import { downloadCount } from '../color-formatters.js' +import { metric } from '../text-formatters.js' +import { BaseJsonService } from '../index.js' +import { nonNegativeInteger } from '../validators.js' function getSchema({ formula }) { return Joi.object({ @@ -33,7 +31,7 @@ const periodMap = { }, } -module.exports = class HomebrewDownloads extends BaseJsonService { +export default class HomebrewDownloads extends BaseJsonService { static category = 'downloads' static route = { diff --git a/services/homebrew/homebrew-downloads.tester.js b/services/homebrew/homebrew-downloads.tester.js index 5f612ace9f..972df583f3 100644 --- a/services/homebrew/homebrew-downloads.tester.js +++ b/services/homebrew/homebrew-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('/installs/dm/cake.json') diff --git a/services/homebrew/homebrew-version.service.js b/services/homebrew/homebrew-version.service.js index 02d0f8f925..f32e77e518 100644 --- a/services/homebrew/homebrew-version.service.js +++ b/services/homebrew/homebrew-version.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({ versions: Joi.object({ @@ -10,7 +8,7 @@ const schema = Joi.object({ }).required(), }).required() -module.exports = class HomebrewVersion extends BaseJsonService { +export default class HomebrewVersion extends BaseJsonService { static category = 'version' static route = { base: 'homebrew/v', pattern: ':formula' } diff --git a/services/homebrew/homebrew-version.tester.js b/services/homebrew/homebrew-version.tester.js index 13fbd91b4e..1e69f15cfb 100644 --- a/services/homebrew/homebrew-version.tester.js +++ b/services/homebrew/homebrew-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('homebrew (valid)').get('/cake.json').expectBadge({ label: 'homebrew', diff --git a/services/hsts/hsts.service.js b/services/hsts/hsts.service.js index 9361eb7e67..c768815d56 100644 --- a/services/hsts/hsts.service.js +++ b/services/hsts/hsts.service.js @@ -1,8 +1,6 @@ -'use strict' - +import Joi from 'joi' +import { BaseJsonService } from '../index.js' const label = 'hsts preloaded' -const Joi = require('joi') -const { BaseJsonService } = require('..') const schema = Joi.object({ status: Joi.string().required(), }).required() @@ -21,7 +19,7 @@ const documentation = ` </p> ` -module.exports = class HSTS extends BaseJsonService { +export default class HSTS extends BaseJsonService { static category = 'monitoring' static route = { diff --git a/services/hsts/hsts.tester.js b/services/hsts/hsts.tester.js index ce04eb2590..0f55a07b79 100644 --- a/services/hsts/hsts.tester.js +++ b/services/hsts/hsts.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 label = 'hsts preloaded' t.create('gets the hsts status of github').get('/github.com.json').expectBadge({ diff --git a/services/imagelayers/imagelayers.service.js b/services/imagelayers/imagelayers.service.js index 8e948c17ab..1ae1d3f1e3 100644 --- a/services/imagelayers/imagelayers.service.js +++ b/services/imagelayers/imagelayers.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ category: 'size', route: { base: 'imagelayers', diff --git a/services/imagelayers/imagelayers.tester.js b/services/imagelayers/imagelayers.tester.js index 35234ace9e..7e4b780817 100644 --- a/services/imagelayers/imagelayers.tester.js +++ b/services/imagelayers/imagelayers.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: 'imagelayers', title: 'ImageLayers', -})) +}) t.create('no longer available (previously image size)') .get('/image-size/_/ubuntu/latest.json') diff --git a/services/index.js b/services/index.js index 14d418b6df..1ba849b1b8 100644 --- a/services/index.js +++ b/services/index.js @@ -1,7 +1 @@ -'use strict' - -const base = require('../core/base-service') - -module.exports = { - ...base, -} +export * from '../core/base-service/index.js' diff --git a/services/issuestats/issuestats.service.js b/services/issuestats/issuestats.service.js index ed1bb6af8d..1ab375a8c5 100644 --- a/services/issuestats/issuestats.service.js +++ b/services/issuestats/issuestats.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ category: 'issue-tracking', route: { base: 'issuestats', pattern: ':various+' }, label: 'issue stats', diff --git a/services/issuestats/issuestats.tester.js b/services/issuestats/issuestats.tester.js index 1eab93c18a..3f4853bdad 100644 --- a/services/issuestats/issuestats.tester.js +++ b/services/issuestats/issuestats.tester.js @@ -1,9 +1,6 @@ -'use strict' +import { ServiceTester } from '../tester.js' -const { ServiceTester } = require('../tester') - -const t = new ServiceTester({ id: 'issuestats', title: 'Issue Stats' }) -module.exports = t +export const t = new ServiceTester({ id: 'issuestats', title: 'Issue Stats' }) t.create('no longer available (previously issue analysis)') .get('/i/github/expressjs/express.json') diff --git a/services/itunes/itunes.service.js b/services/itunes/itunes.service.js index 2f82a9580f..bcb367bc8a 100644 --- a/services/itunes/itunes.service.js +++ b/services/itunes/itunes.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService, NotFound } = require('..') +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService, NotFound } from '../index.js' const schema = Joi.object({ resultCount: nonNegativeInteger, @@ -12,7 +10,7 @@ const schema = Joi.object({ .min(0), }).required() -module.exports = class Itunes extends BaseJsonService { +export default class Itunes extends BaseJsonService { static category = 'version' static route = { diff --git a/services/itunes/itunes.tester.js b/services/itunes/itunes.tester.js index cc34225498..2499ed3f97 100644 --- a/services/itunes/itunes.tester.js +++ b/services/itunes/itunes.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('iTunes version (valid)').get('/324684580.json').expectBadge({ label: 'itunes app store', diff --git a/services/jenkins/jenkins-base.js b/services/jenkins/jenkins-base.js index 762278b584..f7243d0b37 100644 --- a/services/jenkins/jenkins-base.js +++ b/services/jenkins/jenkins-base.js @@ -1,8 +1,6 @@ -'use strict' +import { BaseJsonService } from '../index.js' -const { BaseJsonService } = require('..') - -module.exports = class JenkinsBase extends BaseJsonService { +export default class JenkinsBase extends BaseJsonService { static auth = { userKey: 'jenkins_user', passKey: 'jenkins_pass', diff --git a/services/jenkins/jenkins-build-redirect.service.js b/services/jenkins/jenkins-build-redirect.service.js index b26738b726..b7666291c7 100644 --- a/services/jenkins/jenkins-build-redirect.service.js +++ b/services/jenkins/jenkins-build-redirect.service.js @@ -1,7 +1,5 @@ -'use strict' - -const { redirector } = require('..') -const { buildRedirectUrl } = require('./jenkins-common') +import { redirector } from '../index.js' +import { buildRedirectUrl } from './jenkins-common.js' const commonProps = { category: 'build', @@ -11,7 +9,7 @@ const commonProps = { }), } -module.exports = [ +export default [ redirector({ route: { base: 'jenkins-ci/s', diff --git a/services/jenkins/jenkins-build-redirect.tester.js b/services/jenkins/jenkins-build-redirect.tester.js index 33a0168837..3e5e76aa0c 100644 --- a/services/jenkins/jenkins-build-redirect.tester.js +++ b/services/jenkins/jenkins-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: 'JenkinsBuildRedirect', title: 'JenkinsBuildRedirect', pathPrefix: '/', -})) +}) t.create('old jenkins ci prefix + job url in path') .get('jenkins-ci/s/https/updates.jenkins-ci.org/job/foo.svg') diff --git a/services/jenkins/jenkins-build.service.js b/services/jenkins/jenkins-build.service.js index b0051963ad..667d42bb37 100644 --- a/services/jenkins/jenkins-build.service.js +++ b/services/jenkins/jenkins-build.service.js @@ -1,13 +1,11 @@ -'use strict' - -const Joi = require('joi') -const { renderBuildStatusBadge } = require('../build-status') -const JenkinsBase = require('./jenkins-base') -const { +import Joi from 'joi' +import { renderBuildStatusBadge } from '../build-status.js' +import JenkinsBase from './jenkins-base.js' +import { buildTreeParamQueryString, buildUrl, queryParamSchema, -} = require('./jenkins-common') +} from './jenkins-common.js' // https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/BallColor.java#L56 const colorStatusMap = { @@ -33,7 +31,7 @@ const schema = Joi.object({ color: Joi.allow(...Object.keys(colorStatusMap)).required(), }).required() -module.exports = class JenkinsBuild extends JenkinsBase { +export default class JenkinsBuild extends JenkinsBase { static category = 'build' static route = { diff --git a/services/jenkins/jenkins-build.spec.js b/services/jenkins/jenkins-build.spec.js index 6223e51eaa..a821f27270 100644 --- a/services/jenkins/jenkins-build.spec.js +++ b/services/jenkins/jenkins-build.spec.js @@ -1,11 +1,9 @@ -'use strict' - -const { expect } = require('chai') -const nock = require('nock') -const { test, forCases, given } = require('sazerac') -const { renderBuildStatusBadge } = require('../build-status') -const { cleanUpNockAfterEach, defaultContext } = require('../test-helpers') -const JenkinsBuild = require('./jenkins-build.service') +import { expect } from 'chai' +import nock from 'nock' +import { test, forCases, given } from 'sazerac' +import { renderBuildStatusBadge } from '../build-status.js' +import { cleanUpNockAfterEach, defaultContext } from '../test-helpers.js' +import JenkinsBuild from './jenkins-build.service.js' describe('JenkinsBuild', function () { test(JenkinsBuild.prototype.transform, () => { diff --git a/services/jenkins/jenkins-build.tester.js b/services/jenkins/jenkins-build.tester.js index 440e309c27..7ebfb5df86 100644 --- a/services/jenkins/jenkins-build.tester.js +++ b/services/jenkins/jenkins-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 isJenkinsBuildStatus = Joi.alternatives( isBuildStatus, diff --git a/services/jenkins/jenkins-common.js b/services/jenkins/jenkins-common.js index 5656bdb12e..c9c6b771be 100644 --- a/services/jenkins/jenkins-common.js +++ b/services/jenkins/jenkins-common.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({ disableStrictSSL: Joi.equal(''), @@ -21,9 +19,5 @@ const buildUrl = ({ jobUrl, lastCompletedBuild = true, plugin }) => { return `${jobUrl}/${lastCompletedBuildElement}${pluginElement}api/json` } -module.exports = { - queryParamSchema, - buildTreeParamQueryString: tree => ({ tree }), - buildUrl, - buildRedirectUrl, -} +export { queryParamSchema, buildUrl, buildRedirectUrl } +export const buildTreeParamQueryString = tree => ({ tree }) diff --git a/services/jenkins/jenkins-common.spec.js b/services/jenkins/jenkins-common.spec.js index 8a639a1ee5..ae1e2e9983 100644 --- a/services/jenkins/jenkins-common.spec.js +++ b/services/jenkins/jenkins-common.spec.js @@ -1,6 +1,5 @@ -'use strict' -const { expect } = require('chai') -const { buildRedirectUrl, buildUrl } = require('./jenkins-common') +import { expect } from 'chai' +import { buildRedirectUrl, buildUrl } from './jenkins-common.js' describe('jenkins-common', function () { describe('buildUrl', function () { diff --git a/services/jenkins/jenkins-coverage-redirector.service.js b/services/jenkins/jenkins-coverage-redirector.service.js index 7658977c15..05b828f870 100644 --- a/services/jenkins/jenkins-coverage-redirector.service.js +++ b/services/jenkins/jenkins-coverage-redirector.service.js @@ -1,7 +1,5 @@ -'use strict' - -const { redirector } = require('..') -const { buildRedirectUrl } = require('./jenkins-common') +import { redirector } from '../index.js' +import { buildRedirectUrl } from './jenkins-common.js' const commonProps = { category: 'coverage', @@ -10,7 +8,7 @@ const commonProps = { }), } -module.exports = [ +export default [ redirector({ route: { base: 'jenkins', diff --git a/services/jenkins/jenkins-coverage-redirector.tester.js b/services/jenkins/jenkins-coverage-redirector.tester.js index fd67cf389d..d6475017c5 100644 --- a/services/jenkins/jenkins-coverage-redirector.tester.js +++ b/services/jenkins/jenkins-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: 'JenkinsCoverageRedirector', title: 'JenkinsCoverageRedirector', pathPrefix: '/jenkins', -})) +}) t.create('old Jacoco prefix + job url in path') .get( diff --git a/services/jenkins/jenkins-coverage.service.js b/services/jenkins/jenkins-coverage.service.js index aefa814a85..1d918b4216 100644 --- a/services/jenkins/jenkins-coverage.service.js +++ b/services/jenkins/jenkins-coverage.service.js @@ -1,13 +1,11 @@ -'use strict' - -const Joi = require('joi') -const { coveragePercentage } = require('../color-formatters') -const JenkinsBase = require('./jenkins-base') -const { +import Joi from 'joi' +import { coveragePercentage } from '../color-formatters.js' +import JenkinsBase from './jenkins-base.js' +import { buildTreeParamQueryString, buildUrl, queryParamSchema, -} = require('./jenkins-common') +} from './jenkins-common.js' const formatMap = { jacoco: { @@ -81,7 +79,7 @@ const documentation = ` </p> ` -module.exports = class JenkinsCoverage extends JenkinsBase { +export default class JenkinsCoverage extends JenkinsBase { static category = 'coverage' static route = { diff --git a/services/jenkins/jenkins-coverage.tester.js b/services/jenkins/jenkins-coverage.tester.js index 525187cd58..fae3f9b4d9 100644 --- a/services/jenkins/jenkins-coverage.tester.js +++ b/services/jenkins/jenkins-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() // The below page includes links to various publicly accessible Jenkins instances // although many of the links are dead, it is is still a helpful resource for finding diff --git a/services/jenkins/jenkins-plugin-installs.service.js b/services/jenkins/jenkins-plugin-installs.service.js index 1c9620109a..ef24d19e72 100644 --- a/services/jenkins/jenkins-plugin-installs.service.js +++ b/services/jenkins/jenkins-plugin-installs.service.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { downloadCount: downloadCountColor } = require('../color-formatters') -const { metric } = require('../text-formatters') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService, NotFound } = require('..') +import Joi from 'joi' +import { downloadCount as downloadCountColor } from '../color-formatters.js' +import { metric } from '../text-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService, NotFound } from '../index.js' const schemaInstallations = Joi.object() .keys({ @@ -24,7 +22,7 @@ const schemaInstallationsPerVersion = Joi.object() }) .required() -module.exports = class JenkinsPluginInstalls extends BaseJsonService { +export default class JenkinsPluginInstalls extends BaseJsonService { static _getSchema(version) { if (version) { return schemaInstallationsPerVersion diff --git a/services/jenkins/jenkins-plugin-installs.tester.js b/services/jenkins/jenkins-plugin-installs.tester.js index ece5eaacf0..5c0f0687b8 100644 --- a/services/jenkins/jenkins-plugin-installs.tester.js +++ b/services/jenkins/jenkins-plugin-installs.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() // total installs diff --git a/services/jenkins/jenkins-plugin-version.service.js b/services/jenkins/jenkins-plugin-version.service.js index 2ab78f3299..98486776bf 100644 --- a/services/jenkins/jenkins-plugin-version.service.js +++ b/services/jenkins/jenkins-plugin-version.service.js @@ -1,11 +1,9 @@ -'use strict' +import { promisify } from 'util' +import { regularUpdate } from '../../core/legacy/regular-update.js' +import { renderVersionBadge } from '../version.js' +import { BaseService, NotFound } from '../index.js' -const { promisify } = require('util') -const { regularUpdate } = require('../../core/legacy/regular-update') -const { renderVersionBadge } = require('../version') -const { BaseService, NotFound } = require('..') - -module.exports = class JenkinsPluginVersion extends BaseService { +export default class JenkinsPluginVersion extends BaseService { static category = 'version' static route = { diff --git a/services/jenkins/jenkins-plugin-version.tester.js b/services/jenkins/jenkins-plugin-version.tester.js index 9a64bcbae0..f9c4d2dfc9 100644 --- a/services/jenkins/jenkins-plugin-version.tester.js +++ b/services/jenkins/jenkins-plugin-version.tester.js @@ -1,14 +1,11 @@ -'use strict' +import Joi from 'joi' +import { ServiceTester } from '../tester.js' -const Joi = require('joi') -const { ServiceTester } = require('../tester') - -const t = new ServiceTester({ +export const t = new ServiceTester({ id: 'jenkins-plugin', title: 'JenkinsPluginVersion', pathPrefix: '/jenkins', }) -module.exports = t t.create('latest version') .get('/plugin/v/blueocean.json') diff --git a/services/jenkins/jenkins-tests-redirector.service.js b/services/jenkins/jenkins-tests-redirector.service.js index 138ded80bc..051b21a81f 100644 --- a/services/jenkins/jenkins-tests-redirector.service.js +++ b/services/jenkins/jenkins-tests-redirector.service.js @@ -1,7 +1,5 @@ -'use strict' - -const { redirector } = require('..') -const { buildRedirectUrl } = require('./jenkins-common') +import { redirector } from '../index.js' +import { buildRedirectUrl } from './jenkins-common.js' const commonProps = { category: 'build', @@ -11,7 +9,7 @@ const commonProps = { }), } -module.exports = [ +export default [ redirector({ route: { base: 'jenkins/t', diff --git a/services/jenkins/jenkins-tests-redirector.tester.js b/services/jenkins/jenkins-tests-redirector.tester.js index 3f6cfc9de6..837c9f4b13 100644 --- a/services/jenkins/jenkins-tests-redirector.tester.js +++ b/services/jenkins/jenkins-tests-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: 'JenkinsTestsRedirector', title: 'JenkinsTestsRedirector', pathPrefix: '/jenkins', -})) +}) t.create('old tests prefix + job url in path') .get( diff --git a/services/jenkins/jenkins-tests.service.js b/services/jenkins/jenkins-tests.service.js index a438609dc1..4c9a74767a 100644 --- a/services/jenkins/jenkins-tests.service.js +++ b/services/jenkins/jenkins-tests.service.js @@ -1,19 +1,17 @@ -'use strict' - -const Joi = require('joi') -const { +import Joi from 'joi' +import { documentation, testResultQueryParamSchema, renderTestResultBadge, -} = require('../test-results') -const { optionalNonNegativeInteger } = require('../validators') -const { InvalidResponse } = require('..') -const JenkinsBase = require('./jenkins-base') -const { +} from '../test-results.js' +import { optionalNonNegativeInteger } from '../validators.js' +import { InvalidResponse } from '../index.js' +import JenkinsBase from './jenkins-base.js' +import { buildTreeParamQueryString, buildUrl, queryParamSchema, -} = require('./jenkins-common') +} from './jenkins-common.js' // In the API response, the `actions` array can be empty, and when it is not empty it will contain a // mix of objects. Some will be empty objects, and several will not have the test count properties. @@ -35,7 +33,7 @@ const schema = Joi.object({ .required(), }).required() -module.exports = class JenkinsTests extends JenkinsBase { +export default class JenkinsTests extends JenkinsBase { static category = 'build' static route = { diff --git a/services/jenkins/jenkins-tests.tester.js b/services/jenkins/jenkins-tests.tester.js index 7b4f490ffb..a9269c9bd6 100644 --- a/services/jenkins/jenkins-tests.tester.js +++ b/services/jenkins/jenkins-tests.tester.js @@ -1,12 +1,11 @@ -'use strict' - -const { +import { isDefaultTestTotals, isDefaultCompactTestTotals, isCustomTestTotals, isCustomCompactTestTotals, -} = require('../test-validators') -const t = (module.exports = require('../tester').createServiceTester()) +} from '../test-validators.js' +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() // The below page includes links to various publicly accessible Jenkins instances // although many of the links are dead, it is is still a helpful resource for finding diff --git a/services/jetbrains/jetbrains-base.js b/services/jetbrains/jetbrains-base.js index cba934dd42..140a94b2a7 100644 --- a/services/jetbrains/jetbrains-base.js +++ b/services/jetbrains/jetbrains-base.js @@ -1,7 +1,5 @@ -'use strict' - -const { BaseXmlService, NotFound } = require('..') -const { parseJson } = require('../../core/base-service/json') +import { BaseXmlService, NotFound } from '../index.js' +import { parseJson } from '../../core/base-service/json.js' /* JetBrains is a bit awkward. Sometimes we want to call an XML API @@ -10,7 +8,7 @@ When the legacy IntelliJ (XML) API is retired we can simplify all this and switch JetbrainsDownloads, JetbrainsRating and JetbrainsVersion to just inherit from BaseJsonService directly. */ -module.exports = class JetbrainsBase extends BaseXmlService { +export default class JetbrainsBase extends BaseXmlService { static _isLegacyPluginId(pluginId) { return !pluginId.match(/^([0-9])+/) } diff --git a/services/jetbrains/jetbrains-downloads.service.js b/services/jetbrains/jetbrains-downloads.service.js index c2d7f87904..ab379c5eb7 100644 --- a/services/jetbrains/jetbrains-downloads.service.js +++ b/services/jetbrains/jetbrains-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 JetbrainsBase = require('./jetbrains-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 JetbrainsBase from './jetbrains-base.js' const intelliJschema = Joi.object({ 'plugin-repository': Joi.object({ @@ -24,7 +22,7 @@ const intelliJschema = Joi.object({ const jetbrainsSchema = Joi.object({ downloads: nonNegativeInteger }).required() -module.exports = class JetbrainsDownloads extends JetbrainsBase { +export default class JetbrainsDownloads extends JetbrainsBase { static category = 'downloads' static route = { diff --git a/services/jetbrains/jetbrains-downloads.tester.js b/services/jetbrains/jetbrains-downloads.tester.js index 946f43e517..06c3063647 100644 --- a/services/jetbrains/jetbrains-downloads.tester.js +++ b/services/jetbrains/jetbrains-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 (number as a plugin id)') .get('/7495.json') diff --git a/services/jetbrains/jetbrains-rating.service.js b/services/jetbrains/jetbrains-rating.service.js index 480d276b6b..55ae869627 100644 --- a/services/jetbrains/jetbrains-rating.service.js +++ b/services/jetbrains/jetbrains-rating.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { starRating } = require('../text-formatters') -const { colorScale } = require('../color-formatters') -const JetbrainsBase = require('./jetbrains-base') +import Joi from 'joi' +import { starRating } from '../text-formatters.js' +import { colorScale } from '../color-formatters.js' +import JetbrainsBase from './jetbrains-base.js' const pluginRatingColor = colorScale([2, 3, 4]) @@ -27,7 +25,7 @@ const jetbrainsSchema = Joi.object({ meanRating: Joi.number().min(0).required(), }).required() -module.exports = class JetbrainsRating extends JetbrainsBase { +export default class JetbrainsRating extends JetbrainsBase { static category = 'rating' static route = { diff --git a/services/jetbrains/jetbrains-rating.tester.js b/services/jetbrains/jetbrains-rating.tester.js index be721b1c32..b80d03c5ad 100644 --- a/services/jetbrains/jetbrains-rating.tester.js +++ b/services/jetbrains/jetbrains-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 isRating = withRegex(/^(([0-4](.?([0-9]))?)|5)\/5$/) diff --git a/services/jetbrains/jetbrains-version.service.js b/services/jetbrains/jetbrains-version.service.js index 09aa91bf04..2b7d8dd3b2 100644 --- a/services/jetbrains/jetbrains-version.service.js +++ b/services/jetbrains/jetbrains-version.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { renderVersionBadge } = require('../version') -const JetbrainsBase = require('./jetbrains-base') +import Joi from 'joi' +import { renderVersionBadge } from '../version.js' +import JetbrainsBase from './jetbrains-base.js' const intelliJschema = Joi.object({ 'plugin-repository': Joi.object({ @@ -29,7 +27,7 @@ const jetbrainsSchema = Joi.array() ) .required() -module.exports = class JetbrainsVersion extends JetbrainsBase { +export default class JetbrainsVersion extends JetbrainsBase { static category = 'version' static route = { diff --git a/services/jetbrains/jetbrains-version.tester.js b/services/jetbrains/jetbrains-version.tester.js index 0d5861c176..5a4d477e62 100644 --- a/services/jetbrains/jetbrains-version.tester.js +++ b/services/jetbrains/jetbrains-version.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('version (user friendly plugin id)') .get('/1347-scala.json') diff --git a/services/jira/jira-common.js b/services/jira/jira-common.js index e8fa679159..546435a14f 100644 --- a/services/jira/jira-common.js +++ b/services/jira/jira-common.js @@ -1,9 +1,7 @@ -'use strict' - const authConfig = { userKey: 'jira_user', passKey: 'jira_pass', serviceKey: 'jira', } -module.exports = { authConfig } +export { authConfig } diff --git a/services/jira/jira-issue-redirect.service.js b/services/jira/jira-issue-redirect.service.js index 1c98e875c3..8f7f2b9f58 100644 --- a/services/jira/jira-issue-redirect.service.js +++ b/services/jira/jira-issue-redirect.service.js @@ -1,8 +1,6 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = [ +export default [ redirector({ category: 'issue-tracking', route: { diff --git a/services/jira/jira-issue-redirect.tester.js b/services/jira/jira-issue-redirect.tester.js index 412fcccd50..b414839c47 100644 --- a/services/jira/jira-issue-redirect.tester.js +++ b/services/jira/jira-issue-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: 'JiraIssueRedirect', title: 'JiraIssueRedirect', pathPrefix: '/jira/issue', -})) +}) t.create('jira issue') .get('/https/issues.apache.org/jira/kafka-2896.svg') diff --git a/services/jira/jira-issue.service.js b/services/jira/jira-issue.service.js index 3d54657f54..35fafa60a3 100644 --- a/services/jira/jira-issue.service.js +++ b/services/jira/jira-issue.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { optionalUrl } = require('../validators') -const { BaseJsonService } = require('..') -const { authConfig } = require('./jira-common') +import Joi from 'joi' +import { optionalUrl } from '../validators.js' +import { BaseJsonService } from '../index.js' +import { authConfig } from './jira-common.js' const queryParamSchema = Joi.object({ baseUrl: optionalUrl.required(), @@ -20,7 +18,7 @@ const schema = Joi.object({ }).required(), }).required() -module.exports = class JiraIssue extends BaseJsonService { +export default class JiraIssue extends BaseJsonService { static category = 'issue-tracking' static route = { diff --git a/services/jira/jira-issue.spec.js b/services/jira/jira-issue.spec.js index 3b7cdfb333..10ff23efd3 100644 --- a/services/jira/jira-issue.spec.js +++ b/services/jira/jira-issue.spec.js @@ -1,10 +1,8 @@ -'use strict' - -const { expect } = require('chai') -const nock = require('nock') -const { cleanUpNockAfterEach, defaultContext } = require('../test-helpers') -const JiraIssue = require('./jira-issue.service') -const { user, pass, host, config } = require('./jira-test-helpers') +import { expect } from 'chai' +import nock from 'nock' +import { cleanUpNockAfterEach, defaultContext } from '../test-helpers.js' +import JiraIssue from './jira-issue.service.js' +import { user, pass, host, config } from './jira-test-helpers.js' describe('JiraIssue', function () { cleanUpNockAfterEach() diff --git a/services/jira/jira-issue.tester.js b/services/jira/jira-issue.tester.js index 649510f939..faab0a4ebb 100644 --- a/services/jira/jira-issue.tester.js +++ b/services/jira/jira-issue.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('unknown issue') .get('/notArealIssue-000.json?baseUrl=https://issues.apache.org/jira') diff --git a/services/jira/jira-sprint-redirect.service.js b/services/jira/jira-sprint-redirect.service.js index b3f460b044..54dec2a42f 100644 --- a/services/jira/jira-sprint-redirect.service.js +++ b/services/jira/jira-sprint-redirect.service.js @@ -1,8 +1,6 @@ -'use strict' +import { redirector } from '../index.js' -const { redirector } = require('..') - -module.exports = [ +export default [ redirector({ category: 'issue-tracking', route: { diff --git a/services/jira/jira-sprint-redirect.tester.js b/services/jira/jira-sprint-redirect.tester.js index 7bcf30e334..86c417106a 100644 --- a/services/jira/jira-sprint-redirect.tester.js +++ b/services/jira/jira-sprint-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: 'JiraSprintRedirect', title: 'JiraSprintRedirect', pathPrefix: '/jira/sprint', -})) +}) t.create('jira sprint') .get('/https/jira.spring.io/94.svg') diff --git a/services/jira/jira-sprint.service.js b/services/jira/jira-sprint.service.js index 4af49aa130..875a85e92c 100644 --- a/services/jira/jira-sprint.service.js +++ b/services/jira/jira-sprint.service.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { optionalUrl } = require('../validators') -const { BaseJsonService } = require('..') -const { authConfig } = require('./jira-common') +import Joi from 'joi' +import { optionalUrl } from '../validators.js' +import { BaseJsonService } from '../index.js' +import { authConfig } from './jira-common.js' const queryParamSchema = Joi.object({ baseUrl: optionalUrl.required(), @@ -32,7 +30,7 @@ const documentation = ` </p> ` -module.exports = class JiraSprint extends BaseJsonService { +export default class JiraSprint extends BaseJsonService { static category = 'issue-tracking' static route = { diff --git a/services/jira/jira-sprint.spec.js b/services/jira/jira-sprint.spec.js index 0214f2da00..8bcead5bb2 100644 --- a/services/jira/jira-sprint.spec.js +++ b/services/jira/jira-sprint.spec.js @@ -1,17 +1,15 @@ -'use strict' - -const { expect } = require('chai') -const nock = require('nock') -const { cleanUpNockAfterEach, defaultContext } = require('../test-helpers') -const JiraSprint = require('./jira-sprint.service') -const { +import { expect } from 'chai' +import nock from 'nock' +import { cleanUpNockAfterEach, defaultContext } from '../test-helpers.js' +import JiraSprint from './jira-sprint.service.js' +import { user, pass, host, config, sprintId, sprintQueryString, -} = require('./jira-test-helpers') +} from './jira-test-helpers.js' describe('JiraSprint', function () { cleanUpNockAfterEach() diff --git a/services/jira/jira-sprint.tester.js b/services/jira/jira-sprint.tester.js index fe817f6344..997b3aaf55 100644 --- a/services/jira/jira-sprint.tester.js +++ b/services/jira/jira-sprint.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const t = (module.exports = require('../tester').createServiceTester()) -const { isIntegerPercentage } = require('../test-validators') -const { sprintId, sprintQueryString } = require('./jira-test-helpers') +import { createServiceTester } from '../tester.js' +import { isIntegerPercentage } from '../test-validators.js' +import { sprintId, sprintQueryString } from './jira-test-helpers.js' +export const t = await createServiceTester() t.create('unknown sprint') .get('/abc.json?baseUrl=https://jira.spring.io') diff --git a/services/jira/jira-test-helpers.js b/services/jira/jira-test-helpers.js index 11c01cff67..e188179146 100644 --- a/services/jira/jira-test-helpers.js +++ b/services/jira/jira-test-helpers.js @@ -1,5 +1,3 @@ -'use strict' - const sprintId = 8 const sprintQueryString = { jql: `sprint=${sprintId} AND type IN (Bug,Improvement,Story,"Technical task")`, @@ -21,11 +19,4 @@ const config = { private: { jira_user: user, jira_pass: pass }, } -module.exports = { - sprintId, - sprintQueryString, - user, - pass, - host, - config, -} +export { sprintId, sprintQueryString, user, pass, host, config } diff --git a/services/jitpack/jitpack-downloads.service.js b/services/jitpack/jitpack-downloads.service.js index c3d25e1bcd..b50ca6b519 100644 --- a/services/jitpack/jitpack-downloads.service.js +++ b/services/jitpack/jitpack-downloads.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ route: { base: 'jitpack', pattern: ':interval(dw|dm)/:various*', diff --git a/services/jitpack/jitpack-downloads.tester.js b/services/jitpack/jitpack-downloads.tester.js index 2aa58b9fb7..3e7fb42db0 100644 --- a/services/jitpack/jitpack-downloads.tester.js +++ b/services/jitpack/jitpack-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: 'JitPackDownloads', title: 'JitPackDownloads', pathPrefix: '/jitpack', -})) +}) t.create('no longer available (dw)') .get('/dw/github/jitpack/maven-simple.json') diff --git a/services/jitpack/jitpack-version-redirector.service.js b/services/jitpack/jitpack-version-redirector.service.js index 9fc943c329..bda5c01485 100644 --- a/services/jitpack/jitpack-version-redirector.service.js +++ b/services/jitpack/jitpack-version-redirector.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/jitpack/jitpack-version-redirector.tester.js b/services/jitpack/jitpack-version-redirector.tester.js index 9e19c99e11..deb2b820cf 100644 --- a/services/jitpack/jitpack-version-redirector.tester.js +++ b/services/jitpack/jitpack-version-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: 'JitpackVersionRedirect', title: 'JitpackVersionRedirect', pathPrefix: '/jitpack/v', -})) +}) t.create('jitpack version redirect') .get('/jitpack/maven-simple.svg') diff --git a/services/jitpack/jitpack-version.service.js b/services/jitpack/jitpack-version.service.js index 3e5fdd2886..e739e06ce8 100644 --- a/services/jitpack/jitpack-version.service.js +++ b/services/jitpack/jitpack-version.service.js @@ -1,15 +1,13 @@ -'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(), status: Joi.string().valid('ok').required(), }).required() -module.exports = class JitPackVersion extends BaseJsonService { +export default class JitPackVersion extends BaseJsonService { static category = 'version' static route = { diff --git a/services/jitpack/jitpack-version.tester.js b/services/jitpack/jitpack-version.tester.js index 695a32d76e..5d7322f8e3 100644 --- a/services/jitpack/jitpack-version.tester.js +++ b/services/jitpack/jitpack-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() // Github allows versions with chars, etc. const isAnyV = Joi.string().regex(/^v.+$/) diff --git a/services/jsdelivr/jsdelivr-base.js b/services/jsdelivr/jsdelivr-base.js index 65cf5327b1..be2b3495fe 100644 --- a/services/jsdelivr/jsdelivr-base.js +++ b/services/jsdelivr/jsdelivr-base.js @@ -1,9 +1,7 @@ -'use strict' - -const Joi = require('joi') -const { downloadCount } = require('../color-formatters') -const { metric } = require('../text-formatters') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { downloadCount } from '../color-formatters.js' +import { metric } from '../text-formatters.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ total: Joi.number().required(), @@ -31,4 +29,4 @@ class BaseJsDelivrService extends BaseJsonService { } } -module.exports = { schema, periodMap, BaseJsDelivrService } +export { schema, periodMap, BaseJsDelivrService } diff --git a/services/jsdelivr/jsdelivr-hits-github.service.js b/services/jsdelivr/jsdelivr-hits-github.service.js index 69b5a53329..8d760b8992 100644 --- a/services/jsdelivr/jsdelivr-hits-github.service.js +++ b/services/jsdelivr/jsdelivr-hits-github.service.js @@ -1,8 +1,6 @@ -'use strict' +import { schema, periodMap, BaseJsDelivrService } from './jsdelivr-base.js' -const { schema, periodMap, BaseJsDelivrService } = require('./jsdelivr-base') - -module.exports = class JsDelivrHitsGitHub extends BaseJsDelivrService { +export default class JsDelivrHitsGitHub extends BaseJsDelivrService { static route = { base: 'jsdelivr/gh', pattern: ':period(hd|hw|hm|hy)/:user/:repo', diff --git a/services/jsdelivr/jsdelivr-hits-github.tester.js b/services/jsdelivr/jsdelivr-hits-github.tester.js index ea9a330a20..48231e1fd8 100644 --- a/services/jsdelivr/jsdelivr-hits-github.tester.js +++ b/services/jsdelivr/jsdelivr-hits-github.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 isDownloadsOverTimePeriod = Joi.alternatives().try( isMetricOverTimePeriod, diff --git a/services/jsdelivr/jsdelivr-hits-npm.service.js b/services/jsdelivr/jsdelivr-hits-npm.service.js index 86ecdb2450..79db7f7f55 100644 --- a/services/jsdelivr/jsdelivr-hits-npm.service.js +++ b/services/jsdelivr/jsdelivr-hits-npm.service.js @@ -1,8 +1,6 @@ -'use strict' +import { schema, periodMap, BaseJsDelivrService } from './jsdelivr-base.js' -const { schema, periodMap, BaseJsDelivrService } = require('./jsdelivr-base') - -module.exports = class JsDelivrHitsNPM extends BaseJsDelivrService { +export default class JsDelivrHitsNPM extends BaseJsDelivrService { static route = { base: 'jsdelivr/npm', pattern: ':period(hd|hw|hm|hy)/:scope(@[^/]+)?/:packageName', diff --git a/services/jsdelivr/jsdelivr-hits-npm.tester.js b/services/jsdelivr/jsdelivr-hits-npm.tester.js index 18d53af0ef..2c41ed9fe8 100644 --- a/services/jsdelivr/jsdelivr-hits-npm.tester.js +++ b/services/jsdelivr/jsdelivr-hits-npm.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 isDownloadsOverTimePeriod = Joi.alternatives().try( isMetricOverTimePeriod, diff --git a/services/keybase/keybase-btc.service.js b/services/keybase/keybase-btc.service.js index c463b208b0..1ef7d547ff 100644 --- a/services/keybase/keybase-btc.service.js +++ b/services/keybase/keybase-btc.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const KeybaseProfile = require('./keybase-profile') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import KeybaseProfile from './keybase-profile.js' const bitcoinAddressSchema = Joi.object({ status: Joi.object({ @@ -28,7 +26,7 @@ const bitcoinAddressSchema = Joi.object({ .max(1), }).required() -module.exports = class KeybaseBTC extends KeybaseProfile { +export default class KeybaseBTC extends KeybaseProfile { static route = { base: 'keybase/btc', pattern: ':username', diff --git a/services/keybase/keybase-btc.tester.js b/services/keybase/keybase-btc.tester.js index 2728d6625e..01e4531ad8 100644 --- a/services/keybase/keybase-btc.tester.js +++ b/services/keybase/keybase-btc.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('existing bitcoin address') .get('/skyplabs.json') diff --git a/services/keybase/keybase-pgp.service.js b/services/keybase/keybase-pgp.service.js index 0f73aa229b..117a6f2582 100644 --- a/services/keybase/keybase-pgp.service.js +++ b/services/keybase/keybase-pgp.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const KeybaseProfile = require('./keybase-profile') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import KeybaseProfile from './keybase-profile.js' const keyFingerprintSchema = Joi.object({ status: Joi.object({ @@ -24,7 +22,7 @@ const keyFingerprintSchema = Joi.object({ .max(1), }).required() -module.exports = class KeybasePGP extends KeybaseProfile { +export default class KeybasePGP extends KeybaseProfile { static route = { base: 'keybase/pgp', pattern: ':username', diff --git a/services/keybase/keybase-pgp.tester.js b/services/keybase/keybase-pgp.tester.js index db05abe97b..4a964597d2 100644 --- a/services/keybase/keybase-pgp.tester.js +++ b/services/keybase/keybase-pgp.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('existing key fingerprint') .get('/skyplabs.json') diff --git a/services/keybase/keybase-profile.js b/services/keybase/keybase-profile.js index f663b2bbba..1949c52457 100644 --- a/services/keybase/keybase-profile.js +++ b/services/keybase/keybase-profile.js @@ -1,9 +1,6 @@ -'use strict' +import { BaseJsonService, NotFound } from '../index.js' -const { BaseJsonService } = require('..') -const { NotFound } = require('..') - -module.exports = class KeybaseProfile extends BaseJsonService { +export default class KeybaseProfile extends BaseJsonService { static get apiVersion() { throw new Error(`apiVersion() is not implemented for ${this.name}`) } diff --git a/services/keybase/keybase-xlm.service.js b/services/keybase/keybase-xlm.service.js index e5b0f2ee9b..652f0a0b3a 100644 --- a/services/keybase/keybase-xlm.service.js +++ b/services/keybase/keybase-xlm.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const KeybaseProfile = require('./keybase-profile') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import KeybaseProfile from './keybase-profile.js' const stellarAddressSchema = Joi.object({ status: Joi.object({ @@ -26,7 +24,7 @@ const stellarAddressSchema = Joi.object({ .max(1), }).required() -module.exports = class KeybaseXLM extends KeybaseProfile { +export default class KeybaseXLM extends KeybaseProfile { static route = { base: 'keybase/xlm', pattern: ':username', diff --git a/services/keybase/keybase-xlm.tester.js b/services/keybase/keybase-xlm.tester.js index 79a277862b..ce8b78637c 100644 --- a/services/keybase/keybase-xlm.tester.js +++ b/services/keybase/keybase-xlm.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('existing stellar address') .get('/skyplabs.json') diff --git a/services/keybase/keybase-zec.service.js b/services/keybase/keybase-zec.service.js index b22b6ffab7..0e367a9dfc 100644 --- a/services/keybase/keybase-zec.service.js +++ b/services/keybase/keybase-zec.service.js @@ -1,8 +1,6 @@ -'use strict' - -const Joi = require('joi') -const { nonNegativeInteger } = require('../validators') -const KeybaseProfile = require('./keybase-profile') +import Joi from 'joi' +import { nonNegativeInteger } from '../validators.js' +import KeybaseProfile from './keybase-profile.js' const zcachAddressSchema = Joi.object({ status: Joi.object({ @@ -28,7 +26,7 @@ const zcachAddressSchema = Joi.object({ .max(1), }).required() -module.exports = class KeybaseZEC extends KeybaseProfile { +export default class KeybaseZEC extends KeybaseProfile { static route = { base: 'keybase/zec', pattern: ':username', diff --git a/services/keybase/keybase-zec.tester.js b/services/keybase/keybase-zec.tester.js index 5a2f065b36..f38a394116 100644 --- a/services/keybase/keybase-zec.tester.js +++ b/services/keybase/keybase-zec.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('existing zcash address') .get('/skyplabs.json') diff --git a/services/leanpub/leanpub-book-summary.service.js b/services/leanpub/leanpub-book-summary.service.js index 64ccbd37a0..8328862ad3 100644 --- a/services/leanpub/leanpub-book-summary.service.js +++ b/services/leanpub/leanpub-book-summary.service.js @@ -1,8 +1,6 @@ -'use strict' +import { deprecatedService } from '../index.js' -const { deprecatedService } = require('..') - -module.exports = deprecatedService({ +export default deprecatedService({ route: { base: 'leanpub/book', pattern: ':various+', diff --git a/services/leanpub/leanpub-book-summary.tester.js b/services/leanpub/leanpub-book-summary.tester.js index 9ed01c2a06..feef7ffd30 100644 --- a/services/leanpub/leanpub-book-summary.tester.js +++ b/services/leanpub/leanpub-book-summary.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: 'LeanPub', title: 'LeanPub', pathPrefix: '/leanpub/book', -})) +}) t.create('no longer available (previously book pages)') .get('/pages/juice-shop.json') diff --git a/services/lgtm/lgtm-alerts.service.js b/services/lgtm/lgtm-alerts.service.js index 6716d1ab84..814dce1d63 100644 --- a/services/lgtm/lgtm-alerts.service.js +++ b/services/lgtm/lgtm-alerts.service.js @@ -1,9 +1,7 @@ -'use strict' +import { metric } from '../text-formatters.js' +import LgtmBaseService from './lgtm-base.js' -const { metric } = require('../text-formatters') -const LgtmBaseService = require('./lgtm-base') - -module.exports = class LgtmAlerts extends LgtmBaseService { +export default class LgtmAlerts extends LgtmBaseService { static route = { base: 'lgtm/alerts', pattern: this.pattern, diff --git a/services/lgtm/lgtm-alerts.tester.js b/services/lgtm/lgtm-alerts.tester.js index b8e86a13ef..ed747c5a3d 100644 --- a/services/lgtm/lgtm-alerts.tester.js +++ b/services/lgtm/lgtm-alerts.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) -const { data } = require('./lgtm-test-helpers') +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +import { data } from './lgtm-test-helpers.js' +export const t = await createServiceTester() t.create('alerts: total alerts for a project') .get('/github/apache/cloudstack.json') diff --git a/services/lgtm/lgtm-base.js b/services/lgtm/lgtm-base.js index 9690882651..ed1e120910 100644 --- a/services/lgtm/lgtm-base.js +++ b/services/lgtm/lgtm-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({ alerts: Joi.number().required(), @@ -22,7 +20,7 @@ const hostMappings = { gitlab: 'gl', } -module.exports = class LgtmBaseService extends BaseJsonService { +export default class LgtmBaseService extends BaseJsonService { static category = 'analysis' static defaultBadgeData = { label: 'lgtm' } diff --git a/services/lgtm/lgtm-grade.service.js b/services/lgtm/lgtm-grade.service.js index 81a861924e..3f196949b4 100644 --- a/services/lgtm/lgtm-grade.service.js +++ b/services/lgtm/lgtm-grade.service.js @@ -1,8 +1,6 @@ -'use strict' +import LgtmBaseService from './lgtm-base.js' -const LgtmBaseService = require('./lgtm-base') - -module.exports = class LgtmGrade extends LgtmBaseService { +export default class LgtmGrade extends LgtmBaseService { static route = { base: 'lgtm/grade', pattern: `:language/${this.pattern}`, diff --git a/services/lgtm/lgtm-grade.tester.js b/services/lgtm/lgtm-grade.tester.js index a9d9971f50..8e8c3ba3f8 100644 --- a/services/lgtm/lgtm-grade.tester.js +++ b/services/lgtm/lgtm-grade.tester.js @@ -1,8 +1,7 @@ -'use strict' - -const Joi = require('joi') -const t = (module.exports = require('../tester').createServiceTester()) -const { data } = require('./lgtm-test-helpers') +import Joi from 'joi' +import { createServiceTester } from '../tester.js' +import { data } from './lgtm-test-helpers.js' +export const t = await createServiceTester() t.create('grade: missing project') .get('/java/github/some-org/this-project-doesnt-exist.json') diff --git a/services/lgtm/lgtm-redirector.service.js b/services/lgtm/lgtm-redirector.service.js index b88b3778ee..bc6bd04806 100644 --- a/services/lgtm/lgtm-redirector.service.js +++ b/services/lgtm/lgtm-redirector.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-30'), } -module.exports = [ +export default [ redirector({ route: { base: 'lgtm/alerts/g', diff --git a/services/lgtm/lgtm-redirector.tester.js b/services/lgtm/lgtm-redirector.tester.js index 449955ad9e..d6d5663181 100644 --- a/services/lgtm/lgtm-redirector.tester.js +++ b/services/lgtm/lgtm-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: 'LgtmRedirect', title: 'LgtmRedirect', pathPrefix: '/lgtm', -})) +}) t.create('alerts') .get('/alerts/g/badges/shields.svg') diff --git a/services/lgtm/lgtm-test-helpers.js b/services/lgtm/lgtm-test-helpers.js index 71154a409a..e169d4c6dd 100644 --- a/services/lgtm/lgtm-test-helpers.js +++ b/services/lgtm/lgtm-test-helpers.js @@ -1,5 +1,3 @@ -'use strict' - const data = { alerts: 0, languages: [ @@ -13,6 +11,4 @@ const data = { ], } -module.exports = { - data, -} +export { data } diff --git a/services/liberapay/liberapay-base.js b/services/liberapay/liberapay-base.js index 8e47ce60e0..a044844150 100644 --- a/services/liberapay/liberapay-base.js +++ b/services/liberapay/liberapay-base.js @@ -1,10 +1,8 @@ -'use strict' - -const Joi = require('joi') -const { metric } = require('../text-formatters') -const { colorScale } = require('../color-formatters') -const { nonNegativeInteger } = require('../validators') -const { BaseJsonService } = require('..') +import Joi from 'joi' +import { metric } from '../text-formatters.js' +import { colorScale } from '../color-formatters.js' +import { nonNegativeInteger } from '../validators.js' +import { BaseJsonService } from '../index.js' const schema = Joi.object({ npatrons: nonNegativeInteger, @@ -64,8 +62,4 @@ class LiberapayBase extends BaseJsonService { } } -module.exports = { - renderCurrencyBadge, - LiberapayBase, - isCurrencyOverTime, -} +export { renderCurrencyBadge, LiberapayBase, isCurrencyOverTime } diff --git a/services/liberapay/liberapay-gives.service.js b/services/liberapay/liberapay-gives.service.js index e294bd472a..127a3a34e8 100644 --- a/services/liberapay/liberapay-gives.service.js +++ b/services/liberapay/liberapay-gives.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 LiberapayGives extends LiberapayBase { +export default class LiberapayGives extends LiberapayBase { static route = this.buildRoute('gives') static examples = [ diff --git a/services/liberapay/liberapay-gives.tester.js b/services/liberapay/liberapay-gives.tester.js index b91f47a045..daf77a689f 100644 --- a/services/liberapay/liberapay-gives.tester.js +++ b/services/liberapay/liberapay-gives.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('Giving (valid)').get('/Changaco.json').expectBadge({ label: 'gives', diff --git a/services/liberapay/liberapay-goal.service.js b/services/liberapay/liberapay-goal.service.js index 3d96cea41d..4c7ae71e42 100644 --- a/services/liberapay/liberapay-goal.service.js +++ b/services/liberapay/liberapay-goal.service.js @@ -1,10 +1,8 @@ -'use strict' +import { colorScale } from '../color-formatters.js' +import { InvalidResponse } from '../index.js' +import { LiberapayBase } from './liberapay-base.js' -const { colorScale } = require('../color-formatters') -const { InvalidResponse } = require('..') -const { LiberapayBase } = require('./liberapay-base') - -module.exports = class LiberapayGoal extends LiberapayBase { +export default class LiberapayGoal extends LiberapayBase { static route = this.buildRoute('goal') static examples = [ diff --git a/services/liberapay/liberapay-goal.spec.js b/services/liberapay/liberapay-goal.spec.js index 87b8eb4755..ace4d40c45 100644 --- a/services/liberapay/liberapay-goal.spec.js +++ b/services/liberapay/liberapay-goal.spec.js @@ -1,9 +1,7 @@ -'use strict' - -const { expect } = require('chai') -const { test, given } = require('sazerac') -const { InvalidResponse } = require('..') -const LiberapayGoal = require('./liberapay-goal.service') +import { expect } from 'chai' +import { test, given } from 'sazerac' +import { InvalidResponse } from '../index.js' +import LiberapayGoal from './liberapay-goal.service.js' describe('LiberapayGoal', function () { test(LiberapayGoal.prototype.transform, () => { diff --git a/services/liberapay/liberapay-goal.tester.js b/services/liberapay/liberapay-goal.tester.js index a340d4d5e5..518a84b004 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 0bcb1ac74a..dbcf4d8639 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 5eee881d67..8c7f780c41 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 b3cf59d91a..7d828f90bd 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 d2b7a71e4f..17988abc7c 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 7421be27f0..974060a688 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 f9bf0b1908..7aaaf71536 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 e073352b1c..bdc1c3d17a 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 2b30e4453c..05df0e6ae6 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 45bcabddbe..6aeb2feda4 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 8d19449d58..0f8217c11b 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 f15fe079cd..2c7df20c70 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 9f849206e0..ceaf4f5b27 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 a0b6a24d7b..8ca0b4393b 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 98881416b9..351a668eef 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 c76d302dc5..7135302de3 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 6dd0a755a9..234d53e38f 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 223e8b3d58..bf5ec44d0c 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 b6efcb8ae0..9def600c8f 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 58e95285b6..20554dadc7 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 d29d50d658..1e8ac60608 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 814573a499..9f996e287d 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 ee1526adc8..3523f38a5b 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 22064de414..fce50d9acf 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 4ce526f27f..2ffb68616a 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 ad6479ef7d..811ab73ccf 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 0e60caf896..e82ddcf8ee 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 5a01a0304b..8830135f3a 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 d88d56f757..c42c7f3297 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 e05da9f6bb..c38bc23631 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 460df7fa94..cb98567746 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 04e53ee0be..1fd3dee957 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 9e0881b5ad..cea9e50994 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 = ` <p>Failing that, you can also visit your profile page, where your user ID will be in the header in a tag like this: <code><link href='https://your.mastodon.server/api/salmon/{your-user-id}' rel='salmon'></code></p> ` -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 4f68ec5df9..1b792bad8c 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 55239edfa3..d0cdf311e4 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 = ` </p> ` -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 564df75ad8..d87857497a 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 49ad30f089..feccfe07d3 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 3facb65da9..ef09147dd5 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 c713ddd350..a7cffcca7c 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 4694203de1..ddd053e8bd 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 f96ba9a5a8..b7f9865ea2 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 = ` <p> <code>versionPrefix</code> and <code>versionSuffix</code> 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 3a495ee69e..ded8f75965 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 083c94c5cf..4115bd7cdd 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 ba9196d9fd..2d1eff7808 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 12842da39d..ac6b7ce145 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 30e9ce43cb..8f436056c2 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 = ` </p> ` -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 a169bac2fc..b3f73f658d 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 38f17e5c08..8b654e6ffc 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 bb9ca7fa2a..7b3e9ec5a6 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 37485fde70..3feefa4165 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 faee311122..c614e5ee62 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 abea046119..8d9d8a03ea 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 fb194284ae..1287856721 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 7e6b3f56a8..294b0f6714 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 89b1f4a66f..0adb7bf425 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 7906b6933c..67451ef0c9 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 d06c051f26..43104b8307 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 f2c37a351b..f3c7d5c31e 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 007ad6e4b9..61f049595e 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 cea93959e6..4494641fc1 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 072bf7350d..11cff97eef 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 b9ae1d9e55..7d50fa272d 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 790e7ea9d2..934e2ff719 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 f1ca6f1002..cc37117310 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 f2d47331fe..016604c21d 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 f13d45e54f..44e36984a2 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 96b265ee7d..2a7535ce04 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 6b85f3a3af..32d145b995 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 c497f97c8a..6361cb99ce 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 1c2c428cc9..827ac7b6a8 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 21a02ad42e..5e09a52eca 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 dc334d45f7..7f8ed6cbc2 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 710dee6217..1d68e226d0 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 0071abc3c8..3c277b58c6 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 45f6c9bab6..90488d5e85 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 83b1e352c6..916a5d7e0a 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 f72f598b1e..864c4d6b15 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 d263c1f1e4..ca01fae33f 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 4c94a7d2c1..edb9854226 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 e3a9c46d7e..4ff67bad94 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 45394ea3e4..ed354e28b8 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 d30c5783b3..a06aef4774 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 ff314e75ab..9120b24593 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 98cefb2e53..69c4f3d45a 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 accd7292cb..60cadb61fa 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 ab517815f3..95abd88a6c 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 c0b97b3e63..a7f3d06a2e 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 79adf48816..23f54ac95e 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 1c1769ed21..855efceefa 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 ef85af6728..63671c181a 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 11a33eae1b..c7c8a198ab 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 c4e0fe3039..919cdd3b0b 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 63603c2d5c..d39fbe4348 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 a4e40a94e8..a5e316490d 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 582771ddf2..b950a1ed2b 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 783cc05a78..3a06cd297e 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 18b92dccd7..a6e49f6b6c 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 86c33498f0..a05bbc3079 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 6bdbf3d663..65878d6a11 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 016d45f93d..1e4405e1b6 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 = `<p> 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 21fed6954f..66894780a8 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 0ee89549f7..ccbabfab20 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 426efe2ead..66e171d952 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 7f2567e6ea..bdc3b16c64 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 be8427992b..eea1a2098e 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 1e0a9049a7..d17a1e66a8 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 be6470ba1c..b1d86ec4dc 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 7e6797386a..72da704337 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 f90eefb54e..ae5702c0f1 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 9d0bf7f0ca..8dc1ec0c28 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 71b269ebb7..a007432b78 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 4a4343f649..c201306c8e 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 5c5e2d111c..2f3649d3ad 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 eda1ad0f4b..45f342a94c 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 3a0a5e3e73..ee3bc1a18a 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 526eb29d94..dac3229f97 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 8ba66a063a..d827313c50 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 ebbc72a717..3f2b7da4d7 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 e9d2c0601b..7163f9a5da 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 74ae8ec35e..ec92f434e2 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 c2712920d2..98acc383f5 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 = `<h3>How to get the tierId</h3> <p>According to <a target="_blank" href="https://developer.opencollective.com/#/api/collectives?id=get-members-per-tier">open collectives documentation</a>, 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)</p>` -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 d2b53a8d4e..c2179fef40 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 6dface34aa..0f41df6f03 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 8784501370..300af584c4 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 5d84009ce9..41260c85a3 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 b6ae397047..c0e187cf34 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 0158c4d864..670d92af48 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 690dc5397b..ab0e067ce0 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 b0572b192a..793d38ea34 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 7ff6e39b8a..efb62c1324 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 6817344c33..dd44194804 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 bbe4390913..dd2ba54bcf 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 397558ca71..362c226aa9 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 166e1c34c2..5e5e922068 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 26617eef67..dd2c441d59 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 12b0d2f194..e7689bdc18 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 2171019428..b6c7accd79 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 7af8fb62a5..0d1d6e0570 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 d24b8df07e..bdc226423b 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 eb01ba380b..c80e67d43d 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 5f85de05e1..cb7fa47cc4 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 4b2cb6656e..0d50f35ace 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 a1aa7f8cfe..5f3b3ba491 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 78f110753b..114e0e09d7 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 = ` <p> @@ -13,7 +11,7 @@ const documentation = ` </p> ` -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 a5d40b61d3..9003d2e778 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 c41d3ca3fa..242243ad07 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 7d6437b0e0..4cdd60741b 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 595986e13a..8189054d8b 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 305811406a..db61cf1251 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 39e645be68..083de17bdf 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 = ` </p> ` -module.exports = { +export { allVersionsSchema, keywords, BasePackagistService, diff --git a/services/packagist/packagist-downloads.service.js b/services/packagist/packagist-downloads.service.js index adf36593fb..5d8f133b02 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 cd23f75723..ee76c04e3f 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 c7c99533db..241d9a2919 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 a9241e10ae..8c3aaf1d79 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 983da773e4..a9f3ef370b 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 2514c2ba46..72acd7ad98 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 7af1b66996..1eee30010e 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 0aa3859088..c1c6015c39 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 847ee6da2a..2b3820ffbc 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 e8b40b69af..00b1e0cca0 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 900ed33505..b20c699206 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 b01e1b7935..ba2c279744 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 f157de1eeb..1cb7888a41 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 ad4e58852d..c1c7408a94 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 e7f13fb857..42e15f8c86 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 ddf754cf48..7806d60f67 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 17ede45a6f..091bca3c8b 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 607f302ef7..2ccd237dd3 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 bdebc42a02..7297f52a2e 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 = ` </p> ` -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 9f151cc909..021e6c1897 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 2987847826..eb58d7e456 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 = ` </p> ` -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 ea72c86ba3..0128983289 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 4f31f2eaed..f5663f6b36 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 fc7045cbc6..25dbe0cba4 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 a985926522..ad4b483e56 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 3dd84aea53..806d9bfcfc 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 = ` <p> @@ -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 78db3b1657..691f4d816f 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 60f329ea95..c5e66108de 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 d9999b919a..14380ca487 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 ccc12017b7..19822dc4d5 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 613447fff6..63ff3b6fee 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 4e209ca918..8adb266bec 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 84eddb3225..61a9795ff7 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 f7383969f3..ad5e9f10b0 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 4390bff469..2ebc258cb7 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 83c5e07758..2f03a591fb 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 ad2e845cac..041d8b3e87 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 1178ab33de..24128bd7e1 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 ced2ff0679..69c8654214 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 d38efaeb00..cbcd15d9b5 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 148a800d8c..b3cb980f7e 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 a06132f1c5..79117a314e 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 e45a739a8a..1666b11019 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 1a970d83ab..2d999d1078 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 ee2afe4932..d13703dc39 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 75ec3023d2..f8a8d60028 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 8ca4d87f77..e19d6e23a5 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 ca6325ad94..ffe0fbf1bf 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 8dba69853c..83fdca15ec 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 900dcf614d..21cc1133dd 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 c8e17b5ea8..5e4b57fe98 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 b96fc3f4b4..cef3285e48 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 ffc93f9ea5..af025c6730 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 5cdf78ced0..3d3fa9f9f5 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 a236489a84..eca6fed39b 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 4b42385557..b5a050fecd 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 726d4d2912..4de094f512 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 0844d2a3b8..c2d2a3228c 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 31c66deeac..74cce2a414 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 4dcb66a301..569fc7aa99 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 5ce5c07aa1..8a8c483882 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 efb9308317..36146ddf92 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 4df298a03d..77bff049aa 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 751da746de..764254fe0e 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 68ae1c5d53..9a421bd01c 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 65f881456e..ed083d92c6 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 47f23b41b2..a81e2e4d42 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 d888b6a05d..a70afaf4d4 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 3b3b15a8a4..7522e69c3f 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 2ed6c8bdb4..5bf83194da 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 992d866809..2d0ce5c53d 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 b9d4265d55..1038718d52 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 35483bb409..c5595f21e1 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 e02496e5f2..9023023dbb 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 4de51ca74a..288a36ffe4 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 720d8a77e8..c69e6e6ece 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 7d179bc3f4..98b5e3ff55 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 b300adc44e..8250bec843 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 b8528900ec..03f8222316 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 92545be604..b5dc253ba7 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 60585f7464..ef05a29337 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 bc31157ade..d4332f8961 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 18d7439e53..90557126f5 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 bb25653fdf..7503696bb3 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 c33fb3b2f5..93933f5f90 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 a160e66107..de7202f6db 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 99679f3161..a1c894c945 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 a453107851..566a259bf7 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\/(?<user>.*?)\/(?<repo>.*?)(\/|$)/ @@ -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 42b89bdeb5..6e3950e8a5 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 b2a7c59cab..918a9b6dec 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 71c67312eb..44c1f54e44 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 a14498e939..37185bf16b 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 c2b57ba98e..cedd137e74 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 c0308172d4..2928f54f5f 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 ee2ca663b1..e23e7f59a3 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 a5c7406fdd..93939a554d 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 d4e14bd137..9009a9d182 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 4aee6a5ebf..95a97967c0 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 c9ef3fbd56..b1d8abc510 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 2816da7adf..0b935a871e 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 = ` <p> ` -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 f3c4e3b126..3be2b60511 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 6d81d15e2e..426c773e18 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 0290b2bd24..789a357b7d 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 4b3cf224dc..bf23bad848 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 fb9659ee3e..3d8eb809ae 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 3fea094774..9f37e02ecd 100644 --- a/services/snyk/snyk-test-helpers.js +++ b/services/snyk/snyk-test-helpers.js @@ -1,11 +1,6 @@ -'use strict' - const zeroVulnerabilitiesSvg = '<svg id="snyk-badge" data-package="undefined@undefined" width="152" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1" /><stop offset="1" stop-opacity=".1" /></linearGradient><mask id="a"><rect width="152" height="20" rx="3" fill="#fff" /></mask><g mask="url(#a)"><path fill="#555" d="M0 0h90v20H0z" /><path fill="#7B7B7B" d="M90 0h152v20H90z" /><path fill="url(#b)" d="M0 0h152v20H0z" /></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11"><text x="45" y="15" fill="#010101" fill-opacity=".3">vulnerabilities</text><text x="45" y="14">vulnerabilities</text><text x="120" y="15" fill="#010101" fill-opacity=".3">0</text><text x="120" y="14">0</text></g></svg>' const twoVulnerabilitiesSvg = '<svg id="snyk-badge" data-package="undefined@undefined" width="152" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1" /><stop offset="1" stop-opacity=".1" /></linearGradient><mask id="a"><rect width="152" height="20" rx="3" fill="#fff" /></mask><g mask="url(#a)"><path fill="#555" d="M0 0h90v20H0z" /><path fill="#7B7B7B" d="M90 0h152v20H90z" /><path fill="url(#b)" d="M0 0h152v20H0z" /></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11"><text x="45" y="15" fill="#010101" fill-opacity=".3">vulnerabilities</text><text x="45" y="14">vulnerabilities</text><text x="120" y="15" fill="#010101" fill-opacity=".3">2</text><text x="120" y="14">2</text></g></svg>' -module.exports = { - zeroVulnerabilitiesSvg, - twoVulnerabilitiesSvg, -} +export { zeroVulnerabilitiesSvg, twoVulnerabilitiesSvg } diff --git a/services/snyk/snyk-vulnerability-base.js b/services/snyk/snyk-vulnerability-base.js index 4263c32b97..1316490a71 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 445004f5ff..fd187e7fbe 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 32326e9d31..0601ef2710 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 2cbda0c683..4e5f99db3e 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 859eaacfe8..5df48e9950 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 588be428ce..4e13f25e24 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 df4edeb9bc..ca71ab8264 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 feb31425c2..6a03fa2171 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 684152f5d6..9c605f94be 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 f2dc4821d2..a5ca4fe552 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 b879d6f5b1..d1fad44e3b 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 74cf396fb2..2e375c18f0 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 2121c484f5..ba5869b0dc 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 760ba28d09..c6efb95177 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 6b84986754..adc6bcd6af 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 3d5bfffd52..2c17598222 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 e5764304ea..c5e49b2728 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 = ` </p ` -module.exports = { +export { getLabel, isLegacyVersion, queryParamSchema, diff --git a/services/sonar/sonar-quality-gate.service.js b/services/sonar/sonar-quality-gate.service.js index b615c5d5f2..d2b8a31f0f 100644 --- a/services/sonar/sonar-quality-gate.service.js +++ b/services/sonar/sonar-quality-gate.service.js @@ -1,9 +1,7 @@ -'use strict' +import SonarBase from './sonar-base.js' +import { documentation, keywords, queryParamSchema } from './sonar-helpers.js' -const SonarBase = require('./sonar-base') -const { documentation, keywords, queryParamSchema } = require('./sonar-helpers') - -module.exports = class SonarQualityGate extends SonarBase { +export default class SonarQualityGate extends SonarBase { static category = 'analysis' static route = { diff --git a/services/sonar/sonar-quality-gate.spec.js b/services/sonar/sonar-quality-gate.spec.js index a7da68177b..aa694ae066 100644 --- a/services/sonar/sonar-quality-gate.spec.js +++ b/services/sonar/sonar-quality-gate.spec.js @@ -1,7 +1,5 @@ -'use strict' - -const { test, given } = require('sazerac') -const SonarQualityGate = require('./sonar-quality-gate.service') +import { test, given } from 'sazerac' +import SonarQualityGate from './sonar-quality-gate.service.js' describe('SonarQualityGate', function () { test(SonarQualityGate.render, () => { diff --git a/services/sonar/sonar-quality-gate.tester.js b/services/sonar/sonar-quality-gate.tester.js index 518ce9451b..39975ad07f 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 8698721eb9..f5289608c6 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 7d80d667d5..286d92be7a 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 a54952cbb0..b8c1de4cd2 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 b5c8678e62..b6ef200920 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 651bc43c8e..f9137fe570 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 67d1226037..ec10994ba3 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 f16dc6137a..81909602e1 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 2b66bd9296..86f26d68a5 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 54de34b9bf..e82364bb9e 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 3509ac0fd3..08aa827912 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 f5c8095c2e..b757df1712 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 6ad2cb4cee..7cf956105b 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 807a6c38e8..4fa123e87b 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 674337c728..fb3ed63e60 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 6ccd13192d..e74de6f6fb 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 d2a218672d..054685d1b2 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 1f4bd9a2ee..4d14286743 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 fd0ead60d6..54eb60bb7c 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 f72dd32727..6a9fe7d38e 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 9a434fe40b..0dfb19af62 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 9f8c34fdff..21966b8d29 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 debdca9668..d1a1b20e1e 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 379e8fbe59..8a3a78a19c 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 e24e7f5d9f..7b372012b7 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 87dfbd75a5..321c03a7aa 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 a14abc1aaa..bcc8f68fc9 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 1a2962e39f..4d1a41b7c6 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 efe5a6b52d..7d44add2e5 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 dbab624030..725bf68f34 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 8ab77790e4..723164f118 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 edb85404be..e86c4064d0 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 02e2f9f9c0..ff0143c63d 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 88f8b16622..4341b282fd 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 fb0989b412..ea8b7b36bb 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 b6e3b4a7d4..12c043f10c 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 72d6377d31..af3d5d2557 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 e80b518ce3..9c615fb693 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 65afeeaa99..1555e55bcf 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 2e1e7602a6..b6609c2505 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 4ce76a7805..0bcbe488e3 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 ccbeccc14f..dc0b0218c0 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 4c2951c4c9..9ea5cae989 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 cd10a73773..23207eb80d 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 = ` <p> @@ -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 c2963e3828..05b424ac9d 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 c000ebbb9c..68efaafcaa 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 432c000001..ce23724f9a 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 0288dc801a..3e2a9c8f49 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 954bd131b0..091acf5c08 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 3fec29b7d6..c465888223 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 422768dd99..be41273455 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 3f8749e46f..6c154b6354 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 35cdae90c4..5196e02b8d 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 b5c409a1af..fd10afb597 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 4397492a2c..8cace75a89 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 19cc1cc41c..91af55d635 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 6c0a05594d..4e22091537 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 4c0a741b82..85d4be697c 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 78cb0f94bc..1665c255b8 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 7bc4162ae7..0370fb01f2 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 a00650865a..b620286b25 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 5d2e0306dd..f35a9bbc63 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 d2c0b10324..ea9855d968 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 3652fddd7b..3b8e3f7f64 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 4abbac669b..1e811a7aef 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 09684097b3..bb63122228 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 fc1870445c..c3f20425bb 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 b318decf7f..bf90c10979 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 b19b614880..f81599a62e 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 da29069c45..3fcbb217e8 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 d41c37dabc..5c989dea9e 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 df0decb391..aeb6ce0068 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 cffb07ee3a..8737da79e9 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 b6bcd35fb7..f0fc578371 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 a259d15051..7a0c0387ba 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 21d7a8b3ad..655a16cbd9 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 cc3013135d..0896cf57d5 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 a46841939e..84f6831762 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 = ` </p> ` -module.exports = { +export { testResultQueryParamSchema, renderTestResultMessage, renderTestResultBadge, diff --git a/services/test-results.spec.js b/services/test-results.spec.js index 5953f51954..d9c3376760 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 b6a30c2cb1..b20bf071ab 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 c9d230b0f9..1eead4670f 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 b35b929f95..1bb0d209a7 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 7d46fa8e6c..ff55a81965 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 38a73558dc..0a21725435 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 9a03d3530e..cb6b59b06e 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 b57fd9b25f..2ca45d6486 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 dbe4526cfd..ea78e7eaec 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 4cf4fe3cd2..1aed0d4189 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 42d81db751..4d0de2d72a 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 ca5fcd5aed..f5176012a8 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 aaebf6868d..2a4bc4ccf0 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 95cb600d4e..50525fd6de 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 a1b5d0ae04..efcfae4c15 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 97124289ae..dd01918b8d 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 = ` </p> ` -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 0b310c8288..9671c7b588 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 b679ffcdfb..2c52799588 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 a7d6fcfef7..f6bd4df392 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 3fc26b116d..a61b4467fc 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 adf9fb6669..4326a1175d 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 e11312cb6f..f8a29a39cd 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 4213a167b8..16a23bd0c5 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 3e27679032..1fcbc10125 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 bc2d1a84f4..07ada0cf8d 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 b6526a50a3..85d4e6b083 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 2bd3f53a32..402f7e52cc 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 7573d55427..c3ec31522e 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 53f3f68f59..9f68a1d82c 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 b7cacce786..5291115dbd 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 84d0f9a289..e777d9a5be 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 a46c821421..2da76486a0 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 50941c9838..e15b79f08f 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 c4c407da69..c584c95503 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 a20217c741..c622493075 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 d929863efd..2afa607b9f 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 ac7fb2bb16..fa98e8ed1f 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 049fc9c05a..db6b55c9da 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 c4b5614201..a468175c42 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 319d4c0456..dca7e92554 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 fe05d0f1dd..b567df2b31 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 56518f6c8d..e8af652c66 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 75942ed786..8b43ed993c 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 a829de8856..c07ddf091b 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 ae2466116d..e4074eb1e6 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 7d9b9a9f3e..d9069ca4c9 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 f5102380ea..9c1c68dc64 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 12263e6285..0ad9186faa 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 770d35a97a..7caa48c216 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 0ebbaadc13..53af932836 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 51d6c61269..957e6006a5 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 1017a99884..42b89cd1d1 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 bd71881311..934b4d8de7 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 f447f43ac8..92b040cfa3 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 8fa1d3ce35..c248e64c43 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 8523ffa54b..77e17b5dca 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 a4c10f75da..e90a6ee2f3 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 da790f24d4..6b70a31a6f 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 0622854939..0a70d24e99 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 c7960c4ea6..9f51181597 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 e2a5907948..826bcf1ad8 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 4fff5e2ecb..76dd16ceb6 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 e3b2964e9b..5a1681a79e 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 7316fb0448..a4f90d3096 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 47dd1b650e..49f528a0bf 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 5765adc403..8cfd950274 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 = ` <p> @@ -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 741722d819..f4b209c546 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 12a7218129..d25e9c11a2 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 71e459f253..1d90a6275c 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 = ` <p> @@ -13,9 +11,7 @@ const documentation = ` </p> ` -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 9c6b775de7..d74b78cb87 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 db4b5300a7..5d7106fa58 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 5588f0fdbd..cd7e40745a 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 3c9f4312e5..20de188d7f 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 7457cbc753..213285adbf 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 4a3bb5d055..d604c425c1 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 6469ab49c9..acf9da220b 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 3d4eff80d4..e0e8e2458b 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 6e026eb699..1b44b3e0e0 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 3f0a75f401..fef29ef373 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 = ` </p> ` -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 819f1afd53..3c024c2bbc 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 a0482c5002..945fd9a274 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 4dc93b6e0d..75bbae5787 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 0275bc1d5c..2a31d3417c 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 fb1b0cd6ca..3d6625615b 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 de28fb9264..d5ea4832bb 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 98158d93fc..05e9e1bd1d 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 22e1038979..bd1ce1b3fe 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 60ec6c726f..844aa362c4 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 3b04ea3f04..8080f97d94 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 a78a5bfc8d..4e5d183aff 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 d5bf6bbbfb..87e073514f 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 52a8ba67d1..20f9368ac3 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 e61cdd8814..467b2df76d 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 42934b072f..1e0848fbd7 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 c22cf690bd..c0fdb252b0 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 d87f33a4a0..5e73cd7742 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 f2597dd1ce..a7a6b18a64 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: </p> */ -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 4e0b27bca2..0aeba6b5bc 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 0a9b278daa..5ac7e4536a 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 = ` <p> @@ -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 f60fafbd2a..95d2caeac1 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 94bb3288ff..7dcb1faa9f 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 = ` </p> ` -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 28cba83661..bcbd29368d 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 1973d0b326..c6abf22d8c 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 41b80594b4..80287395c0 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 1a618029fd..e4d5e6c49b 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 3aa11e110d..222e16c4c8 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 = ` <p> @@ -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 fee38c8764..878ec756dd 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 36a04628e4..c11852b4f5 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 81a7ae3e38..83979488b5 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 21b48fcd08..05019f0782 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 cbf018d931..10b48ef92b 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 9301a0d626..d490b6ee72 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 10b74f8d99..5f9544e5e1 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 2e665cadb9..2f0816dea5 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 cca782975c..5c0d1cbd05 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 43e7edb272..ded6f1b6b0 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 843915f1e5..6489fde9da 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 a1e1b8c3ba..1c686890f1 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 fd46f71898..4e15ca3c32 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 d7d9d8cb86..c428886c55 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 4980ec7f6a..9f5d627413 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 e8fc1a94de..9abf4a330e 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 ad2bfd83fc..94f14ee601 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 = ` <p>By using the YouTube badges provided by Shields.io, you are agreeing to be bound by the YouTube Terms of Service. These can be found here: @@ -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 27712d5c83..d3f854a920 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 eab2689fd0..47501da678 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 679605684c..0f7faf3c78 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 dfdbde45d4..dded2be9df 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 e2133cd392..94e2d7ae66 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 5c266e0987..8f6f8dc8fc 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 408b451bae..0c0d1b69aa 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 acff789b0c..d1d1c51759 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 5259e6818a..32c2d6afa9 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 af7c036daf..f825e71fb4 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) -- GitLab