{
  "name": "express-api-starter-ts",
  "version": "2.0.0",
  "description": "A basic starter for an express.js v5 API with Typescript",
  "author": "CJ R. <cj@null.computer> (https://w3cj.now.sh)",
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "https://github.com/w3cj/express-api-starter-ts.git"
  },
  "keywords": [],
  "main": "src/index.ts",
  "scripts": {
    "notifications:check": "tsx --env-file-if-exists=.env prisma/check-notifications.ts",
    "test:notifications": "node --env-file=.env prisma/verify-notifications.cjs",
    "maintenance:generate": "tsx --env-file=.env prisma/generate-maintenance.ts",
    "test:maintenance": "node --env-file=.env prisma/verify-maintenance-api.cjs --tests",
    "start": "node --env-file=.env dist/src/index.js",
    "dev": "tsx watch --env-file=.env src/index.ts",
    "build": "prisma generate && tsc",
    "prisma:generate": "prisma generate",
    "prisma:preflight:pilot-plant": "tsx --env-file=.env prisma/pilot-plant-preflight.ts",
    "prisma:preflight:inventory": "tsx --env-file=.env prisma/inventory-preflight.ts",
    "test:inventory": "node --env-file=.env prisma/verify-inventory-api.cjs",
    "test:migration:pilot-plant": "node --env-file=.env prisma/verify-pilot-plant-migration.cjs",
    "lint": "eslint --fix src test",
    "test": "node --env-file=.env ./node_modules/vitest/vitest.mjs run",
    "typecheck": "tsc --noEmit",
    "seed": "prisma db seed",
    "prisma:cleanup": "tsx --env-file-if-exists=.env prisma/seeders/cleanup.ts",
    "prisma:seed": "prisma db seed",
    "prisma:seed:admin": "tsx --env-file-if-exists=.env prisma/seeders/index.ts --admin",
    "prisma:seed:notifications": "tsx --env-file-if-exists=.env prisma/seeders/index.ts --notifications",
    "prisma:seed:inventory": "tsx --env-file=.env prisma/seeders/index.ts --inventory",
    "prisma:seed:maintenance-sparepart": "tsx --env-file=.env prisma/seeders/index.ts --maintenance-sparepart",
    "test:docs": "node -e \"require('./dist/test/swagger-contract').assertSwaggerContract(require('./dist/src/config/swagger').swaggerDocs); console.log('Compiled Swagger contract passed')\"",
    "test:pilot-plant": "node --env-file=.env prisma/verify-pilot-plant-api.cjs",
    "media:cleanup": "tsx --env-file=.env prisma/cleanup-photos.ts",
    "test:pilot-browser": "node --env-file=.env prisma/verify-pilot-plant-api.cjs --browser",
    "prisma:seed:pilot-plant": "tsx --env-file=.env prisma/seeders/index.ts --pilot-plant",
    "prisma:migrate:deploy": "prisma migrate deploy",
    "prisma:seed:deploy": "tsx --env-file-if-exists=.env prisma/seeders/index.ts --all"
  },
  "dependencies": {
    "@preventive-maintenance/shared": "workspace:*",
    "@prisma/adapter-mariadb": "7.2.0",
    "@prisma/client": "7.2.0",
    "cors": "^2.8.5",
    "exceljs": "4.4.0",
    "express": "^5.1.0",
    "express-rate-limit": "8.7.1",
    "helmet": "^8.1.0",
    "jsonwebtoken": "^9.0.3",
    "morgan": "^1.10.1",
    "multer": "^2.4.0",
    "node-cron": "^4.6.0",
    "sharp": "^0.35.5",
    "swagger-jsdoc": "^6.3.0",
    "swagger-ui-express": "^5.0.1",
    "zod": "^4.1.12"
  },
  "devDependencies": {
    "@antfu/eslint-config": "^6.2.0",
    "@types/cors": "^2.8.19",
    "@types/express": "^5.0.5",
    "@types/jsonwebtoken": "^9.0.10",
    "@types/morgan": "^1.9.10",
    "@types/multer": "^2.3.0",
    "@types/node": "^24.19.1",
    "@types/supertest": "^6.0.3",
    "@types/swagger-jsdoc": "^6.0.4",
    "@types/swagger-ui-express": "^4.1.8",
    "eslint": "^9.38.0",
    "eslint-plugin-format": "^1.0.2",
    "prisma": "7.2.0",
    "supertest": "^7.1.4",
    "tsx": "^4.20.6",
    "typescript": "^5.9.3",
    "vitest": "^4.0.6"
  },
  "private": true
}
