{
  "name": "shields.io",
  "version": "0.0.0",
  "description": "Shields.io server and frontend",
  "private": true,
  "keywords": [
    "GitHub",
    "badge",
    "SVG",
    "image",
    "shields.io"
  ],
  "homepage": "https://shields.io",
  "bugs": {
    "url": "https://github.com/badges/shields/issues"
  },
  "license": "CC0-1.0",
  "author": "Thaddée Tyl <thaddee.tyl@gmail.com>",
  "repository": {
    "type": "git",
    "url": "https://github.com/badges/shields"
  },
  "dependencies": {
    "@fontsource/lato": "^4.5.10",
    "@fontsource/lekton": "^4.5.11",
    "@renovate/pep440": "^1.0.0",
    "@renovatebot/ruby-semver": "^2.1.4",
    "@sentry/node": "^7.34.0",
    "@shields_io/camp": "^18.1.1",
    "badge-maker": "file:badge-maker",
    "bytes": "^3.1.2",
    "camelcase": "^7.0.1",
    "chalk": "^5.2.0",
    "check-node-version": "^4.2.1",
    "cloudflare-middleware": "^1.0.4",
    "config": "^3.3.9",
    "cross-env": "^7.0.3",
    "dayjs": "^1.11.7",
    "decamelize": "^3.2.0",
    "emojic": "^1.1.17",
    "escape-string-regexp": "^4.0.0",
    "fast-xml-parser": "^4.0.15",
    "glob": "^8.1.0",
    "global-agent": "^3.0.0",
    "got": "^12.5.3",
    "graphql": "^15.6.1",
    "graphql-tag": "^2.12.6",
    "ioredis": "5.3.0",
    "joi": "17.7.0",
    "joi-extension-semver": "5.0.0",
    "js-yaml": "^4.1.0",
    "jsonpath": "~1.1.1",
    "lodash.countby": "^4.6.0",
    "lodash.groupby": "^4.6.0",
    "lodash.times": "^4.3.2",
    "node-env-flag": "^0.1.0",
    "parse-link-header": "^2.0.0",
    "path-to-regexp": "^6.2.1",
    "pretty-bytes": "^6.0.0",
    "priorityqueuejs": "^2.0.0",
    "prom-client": "^14.1.1",
    "qs": "^6.11.0",
    "query-string": "^8.1.0",
    "semver": "~7.3.8",
    "simple-icons": "8.3.0",
    "webextension-store-meta": "^1.0.5",
    "xmldom": "~0.6.0",
    "xpath": "~0.0.32"
  },
  "scripts": {
    "coverage:test:core": "c8 npm run test:core",
    "coverage:test:frontend": "c8 -c .nycrc-frontend.json npm run test:frontend",
    "coverage:test:package": "c8 npm run test:package",
    "coverage:test:entrypoint": "c8 npm run test:entrypoint",
    "coverage:test:integration": "c8 npm run test:integration",
    "coverage:test:services": "c8 npm run test:services",
    "coverage:clean": "rimraf .nyc_output coverage",
    "precoverage:test": "run-s --silent coverage:clean defs features",
    "coverage:test": "run-s --silent --continue-on-error coverage:test:core coverage:test:package coverage:test:entrypoint coverage:test:frontend coverage:test:integration",
    "coverage:report:generate": "c8 report",
    "coverage:report:open": "open-cli coverage/lcov-report/index.html",
    "coverage:report": "run-s --silent coverage:report:generate coverage:report:open",
    "lint": "eslint \"**/*.@(js|ts|tsx)\"",
    "prettier": "prettier --write \"**/*.@(js|ts|tsx|md|json|yml)\"",
    "prettier:check": "prettier --check \"**/*.@(js|ts|tsx|md|json|yml)\"",
    "danger": "danger",
    "test:frontend": "cross-env NODE_ENV=test ts-mocha --config .mocharc-frontend.yml \"frontend/**/*.spec.@(js|ts|tsx)\"",
    "test:e2e": "cypress run",
    "test:core": "cross-env NODE_CONFIG_ENV=test mocha \"core/**/*.spec.js\" \"lib/**/*.spec.js\" \"services/**/*.spec.js\"",
    "test:package": "mocha \"badge-maker/**/*.spec.js\"",
    "test:entrypoint": "cross-env NODE_CONFIG_ENV=test mocha entrypoint.spec.js",
    "test:integration": "cross-env NODE_CONFIG_ENV=test mocha \"core/**/*.integration.js\" \"services/**/*.integration.js\"",
    "test:services": "cross-env NODE_CONFIG_ENV=test mocha core/service-test-runner/cli.js",
    "test:services:trace": "cross-env NODE_CONFIG_ENV=test TRACE_SERVICES=true npm run test:services -- $*",
    "test:services:pr:prepare": "node core/service-test-runner/pull-request-services-cli.js > pull-request-services.log",
    "test:services:pr:run": "cross-env NODE_CONFIG_ENV=test mocha core/service-test-runner/cli.js --stdin < pull-request-services.log",
    "test:services:pr": "run-s --silent test:services:pr:prepare test:services:pr:run",
    "pretest": "run-s --silent defs features",
    "test": "run-s --silent --continue-on-error lint test:frontend test:package test:core test:entrypoint check-types:package check-types:frontend prettier:check",
    "check-types:package": "tsd badge-maker",
    "check-types:frontend": "tsc --noEmit --project .",
    "depcheck": "check-node-version --node \">= 16.0\"",
    "prebuild": "run-s --silent depcheck",
    "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",
    "start:server:e2e-on-build": "node server 8080",
    "start:server": "cross-env NODE_CONFIG_ENV=development nodemon server 8080",
    "debug:server": "cross-env NODE_CONFIG_ENV=development nodemon --inspect server.js 8080",
    "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\" \"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",
    "build-docs": "rimraf api-docs/ && jsdoc --pedantic -c ./jsdoc.json . && echo 'contributing.shields.io' > api-docs/CNAME"
  },
  "lint-staged": {
    "**/*.@(js|ts|tsx)": [
      "eslint --fix",
      "prettier --write"
    ],
    "**/*.@(md|json|yml)": [
      "prettier --write"
    ]
  },
  "nodemonConfig": {
    "verbose": true,
    "ext": "js",
    "ignore": [
      "package.json",
      "**/*.spec.js",
      "**/*.tester.js",
      "**/*.integration.js",
      "frontend/",
      "build/",
      "cypress/"
    ]
  },
  "devDependencies": {
    "@babel/core": "^7.20.12",
    "@babel/polyfill": "^7.12.1",
    "@babel/register": "7.18.9",
    "@istanbuljs/schema": "^0.1.3",
    "@mapbox/react-click-to-select": "^2.2.1",
    "@types/chai": "^4.3.4",
    "@types/lodash.debounce": "^4.0.7",
    "@types/lodash.groupby": "^4.6.7",
    "@types/mocha": "^10.0.1",
    "@types/node": "^16.7.10",
    "@types/react-helmet": "^6.1.6",
    "@types/react-modal": "^3.13.1",
    "@types/react-select": "^4.0.17",
    "@types/styled-components": "5.1.26",
    "@typescript-eslint/eslint-plugin": "^5.48.0",
    "@typescript-eslint/parser": "^5.46.0",
    "babel-plugin-inline-react-svg": "^2.0.1",
    "babel-preset-gatsby": "^2.22.0",
    "c8": "^7.12.0",
    "caller": "^1.1.0",
    "chai": "^4.3.7",
    "chai-as-promised": "^7.1.1",
    "chai-datetime": "^1.8.0",
    "chai-string": "^1.4.0",
    "child-process-promise": "^2.2.1",
    "clipboard-copy": "^4.0.1",
    "concurrently": "^7.6.0",
    "cypress": "^12.3.0",
    "cypress-wait-for-stable-dom": "^0.1.0",
    "danger": "^11.2.3",
    "deepmerge": "^4.2.2",
    "eslint": "^7.32.0",
    "eslint-config-prettier": "^8.6.0",
    "eslint-config-standard": "^16.0.3",
    "eslint-config-standard-jsx": "^10.0.0",
    "eslint-config-standard-react": "^11.0.1",
    "eslint-plugin-chai-friendly": "^0.7.2",
    "eslint-plugin-cypress": "^2.12.1",
    "eslint-plugin-import": "^2.27.5",
    "eslint-plugin-jsdoc": "^39.6.9",
    "eslint-plugin-mocha": "^10.1.0",
    "eslint-plugin-no-extension-in-require": "^0.2.0",
    "eslint-plugin-node": "^11.1.0",
    "eslint-plugin-promise": "^5.2.0",
    "eslint-plugin-react": "^7.32.1",
    "eslint-plugin-react-hooks": "^4.6.0",
    "eslint-plugin-sort-class-members": "^1.16.0",
    "fetch-ponyfill": "^7.1.0",
    "form-data": "^4.0.0",
    "gatsby": "4.23.1",
    "gatsby-plugin-catch-links": "^4.25.0",
    "gatsby-plugin-page-creator": "^4.25.0",
    "gatsby-plugin-react-helmet": "^5.25.0",
    "gatsby-plugin-remove-trailing-slashes": "^4.9.0",
    "gatsby-plugin-styled-components": "^5.24.0",
    "gatsby-plugin-typescript": "^4.25.0",
    "humanize-string": "^2.1.0",
    "icedfrisby": "4.0.0",
    "icedfrisby-nock": "^2.1.0",
    "is-svg": "^4.3.2",
    "js-yaml-loader": "^1.2.2",
    "jsdoc": "^4.0.0",
    "lint-staged": "^13.1.0",
    "lodash.debounce": "^4.0.8",
    "lodash.difference": "^4.5.0",
    "minimist": "^1.2.7",
    "mocha": "^10.2.0",
    "mocha-env-reporter": "^4.0.0",
    "mocha-junit-reporter": "^2.2.0",
    "mocha-yaml-loader": "^1.0.3",
    "nock": "13.3.0",
    "node-mocks-http": "^1.12.1",
    "nodemon": "^2.0.20",
    "npm-run-all": "^4.1.5",
    "open-cli": "^7.1.0",
    "portfinder": "^1.0.32",
    "prettier": "2.8.3",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-error-overlay": "^6.0.11",
    "react-helmet": "^6.1.0",
    "react-modal": "^3.16.1",
    "react-pose": "^4.0.10",
    "react-select": "^4.3.1",
    "read-all-stdin-sync": "^1.0.5",
    "redis-server": "^1.2.2",
    "rimraf": "^4.1.2",
    "sazerac": "^2.0.0",
    "simple-git-hooks": "^2.8.1",
    "sinon": "^15.0.1",
    "sinon-chai": "^3.7.0",
    "snap-shot-it": "^7.9.10",
    "start-server-and-test": "1.15.3",
    "styled-components": "^5.3.6",
    "ts-mocha": "^10.0.0",
    "tsd": "^0.25.0",
    "typescript": "^4.9.4",
    "url": "^0.11.0"
  },
  "engines": {
    "node": "^16.13.0",
    "npm": ">=8.0.0"
  },
  "type": "module",
  "collective": {
    "type": "opencollective",
    "url": "https://opencollective.com/shields",
    "logo": "https://opencollective.com/opencollective/logo.txt"
  },
  "simple-git-hooks": {
    "pre-commit": "npx lint-staged"
  }
}
