{ "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 ", "repository": { "type": "git", "url": "https://github.com/badges/shields" }, "dependencies": { "@renovatebot/pep440": "^3.0.20", "@renovatebot/ruby-semver": "^3.0.23", "@sentry/node": "^8.36.0", "@shields_io/camp": "^18.1.2", "@xmldom/xmldom": "0.9.5", "badge-maker": "file:badge-maker", "bytes": "^3.1.2", "camelcase": "^8.0.0", "chalk": "^5.3.0", "check-node-version": "^4.2.1", "cloudflare-middleware": "^1.0.4", "config": "^3.3.12", "cross-env": "^7.0.3", "dayjs": "^1.11.13", "decamelize": "^3.2.0", "emojic": "^1.1.17", "escape-string-regexp": "^4.0.0", "fast-xml-parser": "^4.5.0", "glob": "^11.0.0", "global-agent": "^3.0.0", "got": "^14.4.4", "graphql": "16.9.0", "graphql-tag": "^2.12.6", "joi": "17.13.3", "joi-extension-semver": "5.0.0", "js-yaml": "^4.1.0", "jsonpath-plus": "^10.1.0", "lodash.countby": "^4.6.0", "lodash.groupby": "^4.6.0", "lodash.times": "^4.3.2", "matcher": "^5.0.0", "node-env-flag": "^0.1.0", "node-pg-migrate": "^7.7.1", "parse-link-header": "^2.0.0", "path-to-regexp": "^6.3.0", "pg": "^8.13.1", "pretty-bytes": "^6.1.1", "priorityqueuejs": "^2.0.0", "prom-client": "^15.1.3", "qs": "^6.13.0", "query-string": "^9.1.1", "semver": "~7.6.3", "simple-icons": "13.15.0", "smol-toml": "1.3.0", "svg-path-bbox": "^2.1.0", "svgpath": "^2.6.0", "webextension-store-meta": "^1.2.4", "xpath": "~0.0.34" }, "scripts": { "coverage:test:core": "c8 npm run test:core", "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 coverage", "precoverage:test": "cross-env BASE_URL=http://localhost:8080 run-s --silent coverage:clean defs", "coverage:test": "run-s --silent --continue-on-error coverage:test:core coverage:test:package coverage:test:entrypoint 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 \"**/*.@(cjs|js|ts|tsx)\"", "prettier": "prettier --write \"**/*.@(cjs|js|ts|tsx|md|json|yml)\"", "prettier:check": "prettier --check \"**/*.@(cjs|js|ts|tsx|md|json|yml)\"", "danger": "danger", "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": "cross-env BASE_URL=http://localhost:8080 run-s --silent defs", "test": "run-s --silent --continue-on-error lint test:package test:core test:entrypoint check-types:package prettier:check", "check-types:package": "tsd badge-maker", "depcheck": "check-node-version --node \">= 20.0\"", "prebuild": "run-s --silent depcheck", "defs": "node scripts/export-openapi-cli.js", "build": "rimraf public && run-s defs docusaurus:build", "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": "cross-env BASE_URL=http://localhost:8080 run-s --silent depcheck defs", "start": "concurrently --names server,frontend \"npm run start:server\" \"npm run docusaurus:start\"", "e2e": "cross-env BASE_URL=http://localhost:8080 run-s build e2e-on-build", "e2e-on-build": "cross-env CYPRESS_BASE_URL=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", "migrate": "node scripts/write-migrations-config.js > migrations-config.json && node-pg-migrate --config-file=migrations-config.json", "docusaurus:start": "docusaurus start frontend", "docusaurus:build": "docusaurus build frontend --out-dir ../public", "docusaurus:swizzle": "cd frontend && docusaurus swizzle", "docusaurus:clear": "docusaurus clear frontend" }, "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": { "@docusaurus/core": "^3.5.2", "@docusaurus/preset-classic": "^3.5.2", "@easyops-cn/docusaurus-search-local": "^0.45.0", "@mdx-js/react": "^3.1.0", "@typescript-eslint/parser": "^8.12.2", "c8": "^10.1.2", "caller": "^1.1.0", "chai": "^4.5.0", "chai-as-promised": "^8.0.0", "chai-datetime": "^1.8.1", "chai-string": "^1.4.0", "child-process-promise": "^2.2.1", "clsx": "^2.1.1", "concurrently": "^9.0.1", "cypress": "^13.15.1", "cypress-wait-for-stable-dom": "^0.1.0", "danger": "^12.3.3", "deepmerge": "^4.3.1", "docusaurus-preset-openapi": "0.7.5", "eslint": "8.57.1", "eslint-config-prettier": "^9.1.0", "eslint-config-standard": "17.1.0", "eslint-config-standard-jsx": "11.0.0", "eslint-config-standard-react": "13.0.0", "eslint-plugin-chai-friendly": "^1.0.1", "eslint-plugin-cypress": "^3.6.0", "eslint-plugin-icedfrisby": "^0.1.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsdoc": "^50.4.3", "eslint-plugin-mocha": "^10.5.0", "eslint-plugin-no-extension-in-require": "^0.2.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "6.6.0", "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-sort-class-members": "^1.21.0", "form-data": "^4.0.1", "icedfrisby": "4.0.0", "icedfrisby-nock": "^2.1.0", "is-svg": "^5.1.0", "jsdoc": "^4.0.4", "lint-staged": "^15.2.10", "lodash.difference": "^4.5.0", "minimist": "^1.2.8", "mocha": "^10.8.2", "mocha-env-reporter": "^4.0.0", "mocha-junit-reporter": "^2.2.1", "mocha-yaml-loader": "^1.0.3", "nock": "13.5.5", "node-mocks-http": "^1.16.1", "nodemon": "^3.1.7", "npm-run-all": "^4.1.5", "open-cli": "^8.0.0", "portfinder": "^1.0.32", "prettier": "3.3.3", "prism-react-renderer": "^2.4.0", "react": "^18.3.0", "react-dom": "^18.3.1", "read-all-stdin-sync": "^1.0.5", "rimraf": "^6.0.1", "sazerac": "^2.0.0", "simple-git-hooks": "^2.11.1", "sinon": "^19.0.2", "sinon-chai": "^3.7.0", "snap-shot-it": "^7.9.10", "start-server-and-test": "2.0.8", "tsd": "^0.31.2", "url": "^0.11.4" }, "engines": { "node": "^20.10.0", "npm": "^9.0.0 || ^10.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" } }