{
  "name": "invoice-generation-api",
  "version": "1.0.0",
  "description": "Enterprise Invoice Generation Backend API",
  "main": "src/app.js",
  "scripts": {
    "start": "node src/server.js",
    "dev": "nodemon src/server.js",
    "test": "jest --coverage --detectOpenHandles",
    "lint": "eslint . --fix",
    "migrate": "sequelize-cli db:migrate",
    "seed": "sequelize-cli db:seed:all",
    "security-check": "snyk test",
    "prepare": "husky install",
    "audit": "npm audit",
    "docs": "jsdoc -c jsdoc.json",
    "format": "prettier --write 'src/**/*.js'"
  },
  "dependencies": {
    "express": "^4.18.2",
    "helmet": "^7.0.0",
    "cors": "^2.8.5",
    "dotenv": "^16.0.3",
    "winston": "^3.8.2",
    "express-rate-limit": "^6.7.0",
    "pg": "^8.10.0",
    "sequelize": "^6.31.1",
    "joi": "^17.9.2",
    "jsonwebtoken": "^9.0.0",
    "bcryptjs": "^2.4.3",
    "compression": "^1.7.4",
    "swagger-ui-express": "^4.6.3",
    "express-async-handler": "^1.2.0",
    "morgan": "^1.10.0",
    "express-validator": "^7.0.1",
    "uuid": "^9.0.0",
    "sanitize-html": "^2.10.0",
    "express-mongo-sanitize": "^2.2.0",
    "hpp": "^0.2.3",
    "helmet-csp": "^3.4.0",
    "express-brute": "^1.0.1",
    "express-slow-down": "^1.5.0",
    "rate-limit-redis": "^3.0.1",
    "ioredis": "^5.3.2",
    "prom-client": "^14.2.0",
    "express-openapi-validator": "^5.0.4",
    "class-validator": "^0.14.0",
    "class-transformer": "^0.5.1",
    "celebrate": "^15.0.1",
    "express-jwt": "^8.4.1",
    "express-rate-limit-flexible": "^3.0.0",
    "express-validator": "^7.0.1",
    "helmet-csp": "^3.4.0",
    "rate-limit-redis": "^3.0.1"
  },
  "devDependencies": {
    "jest": "^29.5.0",
    "nodemon": "^2.0.22",
    "supertest": "^6.3.3",
    "eslint": "^8.40.0",
    "eslint-config-airbnb-base": "^15.0.0",
    "husky": "^8.0.3",
    "lint-staged": "^13.2.2",
    "snyk": "^1.1130.0",
    "jest-sonar-reporter": "^2.0.0",
    "prettier": "^2.8.8",
    "jsdoc": "^4.0.2",
    "typescript": "^5.0.4",
    "@types/express": "^4.17.17",
    "@types/jest": "^29.5.2",
    "ts-jest": "^29.1.0",
    "@typescript-eslint/parser": "^5.59.9",
    "@typescript-eslint/eslint-plugin": "^5.59.9"
  },
  "lint-staged": {
    "*.js": ["eslint --fix", "prettier --write"]
  },
  "jest": {
    "testEnvironment": "node",
    "coverageThreshold": {
      "global": {
        "branches": 90,
        "functions": 90,
        "lines": 90,
        "statements": 90
      }
    },
    "collectCoverageFrom": [
      "src/**/*.js",
      "!src/docs/**",
      "!src/tests/**"
    ]
  }
}