{
  "type": "module",
  "private": true,
  "name": "nextstrain.org",
  "main": "server.js",
  "author": "James Hadfield",
  "license": "AGPL-3.0-only",
  "repository": "github:nextstrain/nextstrain.org",
  "homepage": "https://nextstrain.org",
  "engines": {
    "node": "^24.10",
    "npm": "^11.6"
  },
  "scripts": {
    "build": "./build.sh",
    "build:feeds": "node scripts/generate-blog-feeds.js",
    "lint": "DEBUG=eslint:cli-engine npx eslint --max-warnings=0 .",
    "type-check": "cd static-site && tsc",
    "type-check:ci": "npm run build && cd static-site && tsc",
    "check-dependencies": "knip",
    "server": "node server.js",
    "groups": "node server.js --app ./src/groupsApp.js",
    "start": "npm run server",
    "//test": "echo 'NODE_OPTIONS is required until this issue is resolved: https://github.com/facebook/jest/issues/9430 '",
    "test": "NODE_OPTIONS='--experimental-vm-modules' jest --roots ./test/",
    "test:ci": "start-server-and-test 'USE_PREBUILT_STATIC_SITE=1 RESOURCE_INDEX=test/date_descriptor_index.json DEBUG=\"nextstrain:*${DEBUG:+,}${DEBUG:-}\" node server.js --verbose >./test/server.log 2>&1' http://localhost:5000 test",
    "dev": "NODE_ENV=development nodemon --verbose -- server.js --verbose \"$@\"",
    "dev:ssg": "NODE_ENV=development USE_PREBUILT_STATIC_SITE=1 nodemon --verbose -- server.js --verbose \"$@\""
  },
  "dependencies": {
    "@aws-crypto/client-node": "^4.0.1",
    "@aws-sdk/client-cognito-identity-provider": "^3.53.0",
    "@aws-sdk/client-s3": "^3.431.0",
    "@aws-sdk/client-sts": "^3.552.0",
    "@aws-sdk/s3-request-presigner": "^3.431.0",
    "@keyv/redis": "^2.8.0",
    "@keyv/sqlite": "^3.6.6",
    "@renovatebot/pep440": "^2.1.20",
    "@smithy/node-http-handler": "^2.1.8",
    "@types/sanitize-html": "^2.13.0",
    "argparse": "^1.0.10",
    "aws-sdk": "^2.908.0",
    "chalk": "^2.4.1",
    "compression": "^1.7.3",
    "connect-redis": "^4.0.3",
    "content-disposition": "^0.5.4",
    "content-type": "^1.0.4",
    "d3": "^7.9.0",
    "debug": "^4.3.4",
    "escape-string-regexp": "^5.0.0",
    "express": "^4.17.1",
    "express-naked-redirect": "^0.1.2",
    "express-session": "^1.16.2",
    "express-static-gzip": "^0.2.2",
    "finalhandler": "^2.1.1",
    "gray-matter": "^4.0.3",
    "heroku-ssl-redirect": "0.0.4",
    "http-errors": "^1.8.0",
    "http-link-header": "^1.1.1",
    "ioredis": "^4.14.1",
    "jose": "npm:jose-node-cjs-runtime@^3.11.3",
    "js-yaml": "^4.0.0",
    "jszip": "^3.10.1",
    "jump.js": "^1.0.2",
    "keyv": "^4.5.4",
    "lodash": "^4.17.21",
    "lodash.partition": "^4.6.0",
    "luxon": "^3.4.4",
    "make-fetch-happen": "^11.1.1",
    "mapbox-gl": "^3.2.0",
    "marked": "^14.1.3",
    "mime": "^2.5.2",
    "neat-csv": "^7.0.0",
    "negotiator": "^0.6.2",
    "next": "^14.1.4",
    "next-plugin-yaml": "^1.0.1",
    "node-fetch": "^2.6.0",
    "passport": "^0.4.0",
    "passport-oauth2": "^1.5.0",
    "passport-strategy": "^1.0.0",
    "path-to-regexp": "^6.2.1",
    "proxy-agent": "^6.3.1",
    "raw-body": "^2.4.2",
    "react": "^18.3.1",
    "react-collapsible": "^2.10.0",
    "react-dom": "^18.3.1",
    "react-icons": "^5.0.1",
    "react-map-gl": "^7.1.7",
    "react-select": "^5.8.0",
    "react-tooltip": "^4.5.1",
    "react-tooltip-v5": "npm:react-tooltip@^5.26.3",
    "react-virtualized": "^9.22.5",
    "sanitize-html": "^2.13.0",
    "session-file-store": "^1.3.1",
    "user-agent-bag": "^0.3.0",
    "yaml-front-matter": "^4.0.0"
  },
  "devDependencies": {
    "@babel/core": "^7.19.0",
    "@babel/eslint-parser": "^7.18.9",
    "@babel/plugin-proposal-class-properties": "^7.18.6",
    "@babel/plugin-syntax-jsx": "^7.27.1",
    "@jest/globals": "^30.1.2",
    "@types/lodash": "^4.17.21",
    "@types/react": "^18.2.73",
    "@types/react-virtualized": "^9.22.3",
    "@typescript-eslint/eslint-plugin": "^7.18.0",
    "@typescript-eslint/parser": "^7.18.0",
    "benchmark": "^2.1.4",
    "eslint": "^8.23.0",
    "eslint-config-next": "^14.1.4",
    "eslint-plugin-jest": "^28.6.0",
    "eslint-plugin-react": "^7.37.5",
    "feed": "^4.2.2",
    "jest": "^30.1.3",
    "jest-extended": "^1.1.0",
    "knip": "^5.71.0",
    "nodemon": "^2.0.22",
    "start-server-and-test": "^2.1.3",
    "typescript": "^5.4.5"
  },
  "cacheDirectories": [
    "node_modules",
    "static-site/node_modules"
  ]
}
