{ "name": "tourbuilderplatform", "description": "Tour Builder Platform - template backend", "type": "module", "scripts": { "start": "npm run db:migrate && npm run db:seed && npm run watch", "start-dev": "LOG_PRETTY=true npm run start", "typecheck": "tsc -p tsconfig.json --noEmit", "build": "tsc -p tsconfig.json && node scripts/copy-runtime-assets.ts", "test": "node --test tests/*.test.ts", "test:integration": "node --test tests/integration/*.test.ts", "verify": "npm run typecheck && npm run lint && npm run check:esm-boundaries && npm run test", "check:esm-boundaries": "node scripts/check-esm-boundaries.ts", "check:public-access": "node scripts/check-public-access-hardening.ts", "fix:public-access": "node scripts/check-public-access-hardening.ts --fix", "lint": "eslint .", "db:migrate": "node src/db/umzug.ts migrate:up", "db:migrate:undo": "node src/db/umzug.ts migrate:down", "db:migrate:undo:all": "node src/db/umzug.ts migrate:down:all", "db:migrate:status": "node src/db/umzug.ts migrate:status", "db:seed": "node src/db/umzug.ts seed:up", "db:seed:undo": "node src/db/umzug.ts seed:down:all", "db:drop": "node src/db/umzug.ts db:drop", "db:create": "node src/db/umzug.ts db:create", "db:reset": "npm run db:drop && npm run db:create && npm run db:migrate && npm run db:seed", "watch": "node watcher.ts" }, "dependencies": { "@aws-sdk/client-s3": "^3.1011.0", "@aws-sdk/s3-request-presigner": "^3.1016.0", "@google-cloud/storage": "^7.0.0", "@smithy/node-http-handler": "^4.9.1", "@smithy/types": "^4.15.0", "bcrypt": "^6.0.0", "body-parser": "^2.3.0", "chokidar": "^4.0.3", "cors": "^2.8.6", "csv-parser": "^3.2.0", "dotenv": "^16.4.0", "express": "^4.22.2", "ffmpeg-static": "^5.2.0", "ffprobe-static": "^3.1.0", "fluent-ffmpeg": "^2.1.3", "helmet": "^8.0.0", "joi": "^17.13.0", "json2csv": "^5.0.7", "jsonwebtoken": "^9.0.0", "multer": "^2.0.0", "nodemailer": "^9.0.3", "passport": "^0.7.0", "passport-google-oauth2": "^0.2.0", "passport-jwt": "^4.0.1", "passport-microsoft": "^2.0.0", "pg": "^8.20.0", "pino": "^9.0.0", "pino-pretty": "^11.0.0", "sequelize": "^6.37.0", "swagger-jsdoc": "^6.2.8", "swagger-ui-express": "^5.0.0", "uuid": "^14.0.1", "validator": "^13.15.35" }, "engines": { "node": ">=24 <25" }, "overrides": { "gaxios": { "uuid": "^11.1.1" }, "sequelize": { "uuid": "^11.1.1" }, "teeny-request": { "uuid": "^11.1.1" } }, "private": true, "devDependencies": { "@eslint/js": "^8.57.1", "@types/bcrypt": "^6.0.0", "@types/body-parser": "^1.19.6", "@types/cors": "^2.8.19", "@types/express": "^4.17.25", "@types/express-serve-static-core": "^4.19.8", "@types/ffprobe-static": "^2.0.3", "@types/fluent-ffmpeg": "^2.1.28", "@types/json2csv": "^5.0.7", "@types/jsonwebtoken": "^9.0.10", "@types/multer": "^2.1.0", "@types/node": "^24.13.2", "@types/nodemailer": "^8.0.1", "@types/passport": "^1.0.17", "@types/passport-google-oauth2": "^0.1.10", "@types/passport-jwt": "^4.0.1", "@types/passport-microsoft": "^2.1.1", "@types/swagger-jsdoc": "^6.0.4", "@types/swagger-ui-express": "^4.1.8", "@types/validator": "^13.15.10", "@typescript-eslint/eslint-plugin": "^8.62.1", "@typescript-eslint/parser": "^8.62.1", "eslint": "^8.57.0", "eslint-import-resolver-typescript": "^4.4.5", "eslint-plugin-import": "^2.29.1", "globals": "^15.15.0", "node-mocks-http": "^1.17.0", "nodemon": "^3.0.0", "typescript": "^6.0.3", "umzug": "^3.8.3" } }