api-node/package.json
{
"name": "hm-api-node",
"main": "index.js",
"private": true,
"engines": {
"node": "22.x"
},
"scripts": {
"build": "tsc && babel src --out-dir build --extensions .ts",
"build:scripts": "tsc && babel scripts --out-dir build/scripts --extensions .ts",
"build:web": "bash bin/build_web.sh",
"debug": "npm run build && NODE_ENV=development node --inspect-brk build/index.js",
"dev": "nodemon --ext ts --exec 'NODE_ENV=development babel-node src/index.ts --extensions .ts -- --hideHTTPLog --prettifyLog'",
"dev:log": "nodemon --ext ts --exec 'NODE_ENV=development babel-node src/index.ts --extensions .ts -- --prettifyLog'",
"serve": "NODE_ENV=production node build/index.js",
"tsc": "tsc --noEmit",
"lint:javascript": "eslint . --ext .js,.ts,.tsx",
"lint:javascript:fix": "eslint . --ext .js,.ts,.tsx --fix",
"test": "jest",
"test:watch": "jest --watch",
"test:coverage": "jest --coverage",
"test:stryker": "stryker run",
"autocannon": "autocannon http://localhost:5000",
"profile:endpoints": "npm run build:scripts && NODE_ENV=production node build/scripts/profileEndpoints.js",
"profile:bubbleprof": "npm run build:scripts && NODE_ENV=production clinic bubbleprof --on-port 'bash bin/profile.sh' -- node build/index.js",
"profile:doctor": "npm run build:scripts && NODE_ENV=production clinic doctor --on-port 'bash bin/profile.sh' -- node build/index.js",
"profile:flame": "npm run build:scripts && NODE_ENV=production clinic flame --on-port 'bash bin/profile.sh' -- node build/index.js"
},
"dependencies": {
"@faker-js/faker": "8.4.1",
"@godaddy/terminus": "4.12.1",
"@opentelemetry/api": "1.7.0",
"@opentelemetry/exporter-trace-otlp-http": "0.48.0",
"@opentelemetry/instrumentation": "0.48.0",
"@opentelemetry/instrumentation-dns": "0.39.0",
"@opentelemetry/instrumentation-express": "0.43.0",
"@opentelemetry/instrumentation-graphql": "0.43.0",
"@opentelemetry/instrumentation-http": "0.48.0",
"@opentelemetry/instrumentation-ioredis": "0.43.0",
"@opentelemetry/instrumentation-pg": "0.45.1",
"@opentelemetry/instrumentation-pino": "0.42.0",
"@opentelemetry/resources": "1.21.0",
"@opentelemetry/sdk-metrics-base": "0.31.0",
"@opentelemetry/sdk-trace-base": "1.21.0",
"@opentelemetry/sdk-trace-node": "1.21.0",
"@opentelemetry/semantic-conventions": "1.21.0",
"@sentry/node": "7.119.2",
"@typescript-eslint/eslint-plugin": "8.9.0",
"@typescript-eslint/parser": "8.9.0",
"axios": "1.7.7",
"bcrypt": "5.1.1",
"connect-timeout": "1.9.0",
"cookie-parser": "1.4.7",
"cors": "2.8.5",
"csurf": "1.11.0",
"dataloader": "2.2.2",
"dotenv-flow": "4.1.0",
"express": "5.0.0-beta.3",
"express-graphql": "0.12.0",
"express-jwt": "8.4.1",
"express-request-id": "1.4.1",
"graphql": "16.9.0",
"graphql-depth-limit": "1.1.0",
"graphql-middleware": "6.1.35",
"graphql-query-complexity": "1.0.0",
"graphql-shield": "7.6.5",
"graphql-subscriptions": "2.0.0",
"graphql-upload": "13.0.0",
"graphql-ws": "5.16.0",
"helmet": "7.2.0",
"ioredis": "5.4.1",
"jsonwebtoken": "9.0.2",
"knex": "3.1.0",
"lodash.uniq": "4.5.0",
"multer": "1.4.4",
"network-error-logging": "1.2.1",
"pg": "8.13.0",
"pino": "9.4.0",
"pino-http": "10.3.0",
"rate-limiter-flexible": "5.0.3",
"report-to": "1.1.0",
"response-time": "2.3.3",
"serve-favicon": "2.5.0",
"spdy": "4.0.2",
"validator": "13.12.0",
"ws": "8.18.0",
"yargs": "17.7.2"
},
"devDependencies": {
"@babel/cli": "7.25.7",
"@babel/core": "7.25.8",
"@babel/node": "7.25.7",
"@babel/preset-env": "7.25.8",
"@babel/preset-typescript": "7.25.7",
"@stryker-mutator/core": "8.6.0",
"@stryker-mutator/jest-runner": "8.6.0",
"@types/autocannon": "7.12.5",
"@types/bcrypt": "5.0.2",
"@types/connect-timeout": "0.0.39",
"@types/cookie-parser": "1.4.7",
"@types/cors": "2.8.17",
"@types/csurf": "1.11.5",
"@types/dotenv-flow": "3.3.3",
"@types/express": "4.17.21",
"@types/express-list-endpoints": "6.0.3",
"@types/express-request-id": "1.4.3",
"@types/graphql-depth-limit": "1.1.6",
"@types/graphql-upload": "8.0.12",
"@types/ioredis-mock": "8.2.5",
"@types/jest": "29.5.13",
"@types/jsonwebtoken": "9.0.7",
"@types/lodash.uniq": "4.5.9",
"@types/multer": "1.4.12",
"@types/node": "20.16.11",
"@types/response-time": "2.3.8",
"@types/serve-favicon": "2.5.7",
"@types/spdy": "3.4.9",
"@types/supertest": "6.0.2",
"@types/validator": "13.12.2",
"@types/ws": "8.5.12",
"@types/yargs": "17.0.33",
"eslint": "8.57.1",
"eslint-config-airbnb-base": "15.0.0",
"eslint-config-prettier": "9.1.0",
"eslint-plugin-import": "2.31.0",
"eslint-plugin-jest": "28.8.3",
"eslint-plugin-prettier": "5.2.1",
"eslint-plugin-security": "3.0.1",
"ioredis-mock": "8.9.0",
"jest": "29.7.0",
"nodemon": "3.1.7",
"pino-pretty": "11.2.2",
"prettier": "3.3.3",
"supertest": "7.0.0",
"typescript": "5.6.3"
},
"optionalDependencies": {
"autocannon": "7.15.0",
"clinic": "13.0.0",
"express-list-endpoints": "7.1.0"
}
}