{
  "name": "aptfuel-api-service",
  "version": "1.0.0",
  "description": "api service for aptfuel platform",
  "main": "dist/index.js",
  "scripts": {
    "build": "tsc -p tsconfig.json && tsc-alias && npm run copy-assets",
    "build:staging": "cross-env NODE_ENV=staging tsc -p tsconfig.json && tsc-alias && npm run copy-assets",
    "build:main": "cross-env NODE_ENV=production tsc -p tsconfig.json && tsc-alias && npm run copy-assets",
    "copy-assets": "cp -r src/mails dist/ && cp -r src/database/seeds/*.json dist/database/seeds/ 2>/dev/null || true",
    "start": "node -r tsconfig-paths/register dist/index.js",
    "repair:streaks": "cross-env NODE_ENV=production node -r tsconfig-paths/register dist/scripts/repairStreaksAfterOutage.js",
    "repair:streaks:apply": "cross-env NODE_ENV=production node -r tsconfig-paths/register dist/scripts/repairStreaksAfterOutage.js --apply",
    "start:dev": "cross-env NODE_ENV=development ts-node-dev -r tsconfig-paths/register --respawn --transpile-only src/index.ts",
    "typeorm": "typeorm-ts-node-commonjs",
    "migration:generate": "cross-env NODE_ENV=development ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js migration:generate -d src/config/data-source.ts",
    "db-migrate:generate": "cross-env NODE_ENV=development npx ts-node --project tsconfig.json -r tsconfig-paths/register ./node_modules/typeorm/cli.js migration:generate ./src/database/migrations/MyNewMigration -d src/config/data-source.ts",
    "db-migrate:run": "cross-env NODE_ENV=development npx ts-node --project tsconfig.json -r tsconfig-paths/register ./node_modules/typeorm/cli.js migration:run --dataSource src/config/data-source.ts",
    "db-migrate:run:prod": "cross-env NODE_ENV=production npx typeorm migration:run --dataSource dist/config/data-source.js",
    "db-migrate:build-run:prod": "npm run build:main && npm run db-migrate:run:prod",
    "db-create-support-tickets:prod": "cross-env NODE_ENV=production node scripts/create-support-tickets.js",
    "db-migrate:generate:prod": "cross-env NODE_ENV=production npx typeorm migration:generate ./src/database/migrations/MyNewMigration --outputJs -d dist/config/data-source.js",
    "db-migrate:generate:staging": "cross-env NODE_ENV=staging npx typeorm migration:generate ./src/database/migrations/MyNewMigration --outputJs -d dist/config/data-source.js",
    "db-migrate:run:staging": "cross-env NODE_ENV=staging npx typeorm migration:run --dataSource dist/config/data-source.js",
    "db-migrate:sync:prod": "cross-env NODE_ENV=production npx typeorm schema:sync --dataSource dist/config/data-source.js",
    "migration:run": "cross-env NODE_ENV=development ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js migration:run -d src/config/data-source.ts",
    "migration:revert": "cross-env NODE_ENV=development ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js migration:revert -d src/config/data-source.ts",
    "dev": "npm run start:dev",
    "db-seed": "cross-env NODE_ENV=development ts-node -r tsconfig-paths/register src/database/seeders/seed-runner.ts",
    "seed:blogs": "cross-env NODE_ENV=development ts-node -r tsconfig-paths/register src/database/seeders/blog.seeder.ts",
    "seed:faqs": "cross-env NODE_ENV=development ts-node -r tsconfig-paths/register src/database/seeders/faq.seeder.ts",
    "seed:church-portal": "cross-env NODE_ENV=development ts-node -r tsconfig-paths/register scripts/seed-church-portal.ts",
    "seed:church-demo": "cross-env NODE_ENV=development ts-node -r tsconfig-paths/register src/database/seeds/seedChurchDemo.ts",
    "seed:quiz": "cross-env NODE_ENV=development ts-node -r tsconfig-paths/register src/database/seeds/seedQuizData.ts",
    "seed:quiz:prod": "cross-env NODE_ENV=production node dist/database/seeds/seedQuizData.js",
    "db-seed:prod": "cross-env NODE_ENV=production node database/seeders/seed-runner.js",
    "db-seed:staging": "cross-env NODE_ENV=staging node database/seeders/seed-runner.js",
    "build-and-seed:prod": "npm run build:main && npm run db-seed:prod",
    "check:dist": "node -e \"const fs = require('fs'); const path = './dist/config/data-source.js'; if (fs.existsSync(path)) { console.log('✅ Found:', path); } else { console.error('❌ Missing:', path); process.exit(1); }\"",
    "db:clear": "cross-env NODE_ENV=development ts-node -r tsconfig-paths/register scripts/clear-database.ts",
    "db:clear-app-users": "cross-env NODE_ENV=development ts-node -r tsconfig-paths/register scripts/clear-app-users-for-launch.ts",
    "db:clear-app-users:prod": "cross-env NODE_ENV=production ts-node -r tsconfig-paths/register scripts/clear-app-users-for-launch.ts",
    "db:backup": "cross-env NODE_ENV=development ts-node -r tsconfig-paths/register scripts/backup-database.ts",
    "db:backup:staging": "cross-env NODE_ENV=staging ts-node -r tsconfig-paths/register scripts/backup-database.ts",
    "db:backup:prod": "cross-env NODE_ENV=production ts-node -r tsconfig-paths/register scripts/backup-database.ts",
    "db:delete-user": "cross-env NODE_ENV=development ts-node -r tsconfig-paths/register scripts/delete-user.ts",
    "db:delete-user:staging": "cross-env NODE_ENV=staging ts-node -r tsconfig-paths/register scripts/delete-user.ts",
    "db:delete-user:prod": "cross-env NODE_ENV=production ts-node -r tsconfig-paths/register scripts/delete-user.ts",
    "admin:create-user": "cross-env NODE_ENV=development ts-node -r tsconfig-paths/register scripts/create-admin-user.ts",
    "upload:email-icons": "cross-env NODE_ENV=development ts-node -r tsconfig-paths/register scripts/upload-email-icons.ts",
    "test": "cross-env NODE_ENV=development node -r ts-node/register -r tsconfig-paths/register --test src/common/subscription/crossProviderGuard.test.ts src/common/subscription/stripePaymentFailedResolver.test.ts src/common/subscription/revenueCatEventId.test.ts src/common/constants/subscriptionMrr.test.ts src/common/study/mergeStudyProgress.test.ts src/common/appRelease.test.ts src/common/callHealth.test.ts src/common/adminAlerts.test.ts src/common/videoUploadAttempt.test.ts src/common/redactSensitive.test.ts src/common/streakRepair.test.ts"
  },
  "dependencies": {
    "@bull-board/api": "^6.10.0",
    "@bull-board/express": "^6.10.0",
    "@bull-board/ui": "^6.10.0",
    "@faker-js/faker": "^9.8.0",
    "@stream-io/node-sdk": "^0.7.40",
    "@types/bull": "^3.15.9",
    "@types/express": "^4.17.21",
    "@types/multer": "^2.0.0",
    "@types/node": "^20.11.19",
    "@types/node-cron": "^3.0.11",
    "apple-signin-auth": "^2.0.0",
    "axios": "^1.6.7",
    "bcryptjs": "^3.0.2",
    "bull": "^4.16.5",
    "bullmq": "^5.53.2",
    "cloudinary": "^2.5.1",
    "cors": "^2.8.5",
    "cross-env": "^7.0.3",
    "crypto-js": "^4.2.0",
    "date-fns": "^4.1.0",
    "date-fns-tz": "^3.2.0",
    "dotenv": "^16.4.4",
    "exceljs": "^4.4.0",
    "expo-server-sdk": "^4.0.0",
    "express": "^4.18.2",
    "express-async-errors": "^3.1.1",
    "express-rate-limit": "^8.2.1",
    "form-data": "^4.0.4",
    "google-auth-library": "^10.5.0",
    "handlebars": "^4.7.8",
    "helmet": "^8.1.0",
    "http-status-codes": "^2.3.0",
    "ioredis": "^5.3.2",
    "jsonwebtoken": "^9.0.2",
    "multer": "^2.0.2",
    "mysql2": "^3.15.1",
    "nanoid": "^5.1.5",
    "node-cron": "^4.2.1",
    "nodemailer": "^7.0.3",
    "openai": "^6.37.0",
    "reflect-metadata": "^0.2.2",
    "socket.io": "^4.8.1",
    "socket.io-client": "^4.8.1",
    "stripe": "^22.1.0",
    "tsc-alias": "^1.8.16",
    "tsconfig-paths": "^4.2.0",
    "typeorm": "^0.3.20",
    "typeorm-extension": "^3.7.1",
    "typescript": "^5.3.3",
    "uuid": "^13.0.0",
    "web-push": "^3.6.7",
    "winston": "^3.17.0",
    "winston-daily-rotate-file": "^5.0.0",
    "zod": "^3.22.4"
  },
  "devDependencies": {
    "@types/cors": "^2.8.18",
    "@types/crypto-js": "^4.2.2",
    "@types/jsonwebtoken": "^9.0.9",
    "@types/nodemailer": "^6.4.17",
    "@types/web-push": "^3.6.4",
    "ts-node": "^10.9.2",
    "ts-node-dev": "^2.0.0"
  }
}
