This is the code part of #3027, following [this article](https://www.viget.com/articles/heroku-cloudflare-the-right-way/) and using [this middleware](https://github.com/clive-io/cloudflare-middleware). I pulled in the `addHandlerAtIndex()` function @chris48s wrote for #5574. The middleware isn't perfect for scoutcamp, since it relies on `req.ip` which is something set by Express. However, the other solutions I found were either explicitly deprecated ([cloudflare-ip](https://www.npmjs.com/package/cloudflare-ip)) or relied on dynamically fetching the list of Cloudflare hosts ([cloudflare-ips](https://www.npmjs.com/package/cloudflare-ips)), which seems unnecessary as this list has not changed in several years. I've left this off to start, so we can test it in production using an env var before we make it the production default.
283 lines
10 KiB
JSON
283 lines
10 KiB
JSON
{
|
|
"name": "shields.io",
|
|
"version": "0.0.0",
|
|
"description": "Shields.io server and frontend",
|
|
"private": true,
|
|
"keywords": [
|
|
"GitHub",
|
|
"badge",
|
|
"SVG",
|
|
"image",
|
|
"shields.io"
|
|
],
|
|
"homepage": "http://shields.io",
|
|
"bugs": {
|
|
"url": "https://github.com/badges/shields/issues",
|
|
"email": "thaddee.tyl@gmail.com"
|
|
},
|
|
"license": "CC0-1.0",
|
|
"author": "Thaddée Tyl <thaddee.tyl@gmail.com>",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/badges/shields"
|
|
},
|
|
"dependencies": {
|
|
"@sentry/node": "^5.25.0",
|
|
"@shields_io/camp": "^18.0.0",
|
|
"badge-maker": "file:badge-maker",
|
|
"bytes": "^3.1.0",
|
|
"camelcase": "^6.1.0",
|
|
"chalk": "^4.1.0",
|
|
"check-node-version": "^4.0.3",
|
|
"chrome-web-store-item-property": "~1.2.0",
|
|
"cloudflare-middleware": "^1.0.4",
|
|
"config": "^3.3.2",
|
|
"cross-env": "^7.0.2",
|
|
"decamelize": "^3.2.0",
|
|
"dotenv": "^8.2.0",
|
|
"emojic": "^1.1.16",
|
|
"escape-string-regexp": "^4.0.0",
|
|
"fast-xml-parser": "^3.17.4",
|
|
"glob": "^7.1.6",
|
|
"graphql": "^14.7.0",
|
|
"graphql-tag": "^2.11.0",
|
|
"ioredis": "4.17.3",
|
|
"joi": "17.2.1",
|
|
"joi-extension-semver": "5.0.0",
|
|
"js-yaml": "^3.14.0",
|
|
"jsonpath": "~1.0.2",
|
|
"lodash.countby": "^4.6.0",
|
|
"lodash.groupby": "^4.6.0",
|
|
"lodash.times": "^4.3.2",
|
|
"moment": "^2.29.1",
|
|
"node-env-flag": "^0.1.0",
|
|
"parse-link-header": "^1.0.1",
|
|
"path-to-regexp": "^5.0.0",
|
|
"pretty-bytes": "^5.4.1",
|
|
"priorityqueuejs": "^2.0.0",
|
|
"prom-client": "^11.5.3",
|
|
"query-string": "^6.13.2",
|
|
"request": "~2.88.2",
|
|
"semver": "~7.3.2",
|
|
"simple-icons": "3.11.0",
|
|
"xmldom": "~0.2.1",
|
|
"xpath": "~0.0.29"
|
|
},
|
|
"scripts": {
|
|
"coverage:test:core": "nyc npm run test:core",
|
|
"coverage:test:frontend": "nyc --nycrc-path .nycrc-frontend.json npm run test:frontend",
|
|
"coverage:test:package": "nyc npm run test:package",
|
|
"coverage:test:entrypoint": "nyc npm run test:entrypoint",
|
|
"coverage:test:integration": "nyc npm run test:integration",
|
|
"coverage:test:services": "nyc 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": "nyc 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 \">= 12.0\"",
|
|
"fix-issue-5294": "rimraf node_modules/@types/react-native",
|
|
"postinstall": "run-s --silent depcheck fix-issue-5294",
|
|
"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",
|
|
"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\" \"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 ."
|
|
},
|
|
"lint-staged": {
|
|
"**/*.js": [
|
|
"eslint --fix",
|
|
"prettier --write"
|
|
],
|
|
"**/*.@(md|json|yml)": [
|
|
"prettier --write"
|
|
]
|
|
},
|
|
"nodemonConfig": {
|
|
"verbose": true,
|
|
"ext": "js",
|
|
"ignore": [
|
|
"package.json",
|
|
"**/*.spec.js",
|
|
"**/*.tester.js",
|
|
"**/*.integration.js",
|
|
"frontend/",
|
|
"public/",
|
|
"build/",
|
|
"cypress/"
|
|
]
|
|
},
|
|
"devDependencies": {
|
|
"@babel/core": "^7.11.6",
|
|
"@babel/polyfill": "^7.11.5",
|
|
"@babel/register": "7.11.5",
|
|
"@mapbox/react-click-to-select": "^2.2.0",
|
|
"@types/chai": "^4.2.12",
|
|
"@types/lodash.debounce": "^4.0.6",
|
|
"@types/lodash.groupby": "^4.6.6",
|
|
"@types/mocha": "^8.0.3",
|
|
"@types/node": "^14.11.8",
|
|
"@types/react-helmet": "^6.1.0",
|
|
"@types/react-modal": "^3.10.6",
|
|
"@types/react-select": "^3.0.22",
|
|
"@types/styled-components": "5.1.3",
|
|
"@typescript-eslint/eslint-plugin": "^2.34.0",
|
|
"@typescript-eslint/parser": "^2.34.0",
|
|
"babel-plugin-inline-react-svg": "^1.1.1",
|
|
"babel-plugin-istanbul": "^6.0.0",
|
|
"babel-preset-gatsby": "^0.5.1",
|
|
"caller": "^1.0.1",
|
|
"chai": "^4.1.2",
|
|
"chai-as-promised": "^7.1.1",
|
|
"chai-datetime": "^1.7.0",
|
|
"chai-string": "^1.4.0",
|
|
"cheerio": "^1.0.0-rc.3",
|
|
"child-process-promise": "^2.2.1",
|
|
"clipboard-copy": "^3.1.0",
|
|
"concurrently": "^5.3.0",
|
|
"cypress": "^5.3.0",
|
|
"danger": "^10.5.0",
|
|
"danger-plugin-no-test-shortcuts": "^2.0.0",
|
|
"deepmerge": "^4.2.2",
|
|
"eslint": "^6.8.0",
|
|
"eslint-config-prettier": "^6.12.0",
|
|
"eslint-config-standard": "^14.1.1",
|
|
"eslint-config-standard-react": "^9.2.0",
|
|
"eslint-plugin-chai-friendly": "^0.6.0",
|
|
"eslint-plugin-cypress": "^2.11.2",
|
|
"eslint-plugin-import": "^2.22.0",
|
|
"eslint-plugin-jsdoc": "^30.6.4",
|
|
"eslint-plugin-mocha": "^6.3.0",
|
|
"eslint-plugin-no-extension-in-require": "^0.2.0",
|
|
"eslint-plugin-node": "^11.1.0",
|
|
"eslint-plugin-promise": "^4.2.1",
|
|
"eslint-plugin-react": "^7.21.4",
|
|
"eslint-plugin-react-hooks": "^2.5.1",
|
|
"eslint-plugin-sort-class-members": "^1.8.0",
|
|
"eslint-plugin-standard": "^4.0.1",
|
|
"fetch-ponyfill": "^6.1.1",
|
|
"form-data": "^3.0.0",
|
|
"fs-readfile-promise": "^3.0.1",
|
|
"gatsby": "2.24.73",
|
|
"gatsby-plugin-catch-links": "^2.3.10",
|
|
"gatsby-plugin-page-creator": "^2.3.32",
|
|
"gatsby-plugin-react-helmet": "^3.3.9",
|
|
"gatsby-plugin-remove-trailing-slashes": "^2.3.10",
|
|
"gatsby-plugin-styled-components": "^3.3.9",
|
|
"gatsby-plugin-typescript": "^2.4.16",
|
|
"got": "11.7.0",
|
|
"humanize-string": "^2.1.0",
|
|
"husky": "^4.3.0",
|
|
"icedfrisby": "4.0.0",
|
|
"icedfrisby-nock": "^2.0.0",
|
|
"is-png": "^2.0.0",
|
|
"is-svg": "^4.2.1",
|
|
"js-yaml-loader": "^1.2.2",
|
|
"jsdoc": "^3.6.6",
|
|
"lint-staged": "^10.4.0",
|
|
"lodash.debounce": "^4.0.8",
|
|
"lodash.difference": "^4.5.0",
|
|
"minimist": "^1.2.5",
|
|
"mocha": "^7.2.0",
|
|
"mocha-env-reporter": "^4.0.0",
|
|
"mocha-junit-reporter": "^2.0.0",
|
|
"mocha-yaml-loader": "^1.0.3",
|
|
"nock": "13.0.4",
|
|
"node-mocks-http": "^1.9.0",
|
|
"nodemon": "^2.0.4",
|
|
"npm-run-all": "^4.1.5",
|
|
"nyc": "^15.1.0",
|
|
"opn-cli": "^5.0.0",
|
|
"portfinder": "^1.0.28",
|
|
"prettier": "2.1.2",
|
|
"react": "^16.13.1",
|
|
"react-dom": "^16.13.1",
|
|
"react-error-overlay": "^6.0.7",
|
|
"react-helmet": "^6.1.0",
|
|
"react-modal": "^3.11.2",
|
|
"react-pose": "^4.0.10",
|
|
"react-select": "^3.1.0",
|
|
"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": "^9.2.0",
|
|
"sinon-chai": "^3.5.0",
|
|
"snap-shot-it": "^7.9.3",
|
|
"start-server-and-test": "1.11.5",
|
|
"styled-components": "^5.2.0",
|
|
"tmp": "0.2.1",
|
|
"tsd": "^0.13.1",
|
|
"ts-mocha": "^7.0.0",
|
|
"typescript": "^4.0.3"
|
|
},
|
|
"engines": {
|
|
"node": "^12.18.3",
|
|
"npm": "^6.14.7"
|
|
},
|
|
"babel": {
|
|
"plugins": [
|
|
[
|
|
"inline-react-svg",
|
|
{
|
|
"svgo": false
|
|
}
|
|
]
|
|
],
|
|
"presets": [
|
|
"babel-preset-gatsby"
|
|
],
|
|
"env": {
|
|
"test": {
|
|
"plugins": [
|
|
"istanbul"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"collective": {
|
|
"type": "opencollective",
|
|
"url": "https://opencollective.com/shields",
|
|
"logo": "https://opencollective.com/opencollective/logo.txt"
|
|
},
|
|
"husky": {
|
|
"hooks": {
|
|
"pre-commit": "lint-staged"
|
|
}
|
|
}
|
|
}
|