{ "name": "litefarm-api", "version": "3.13.4", "description": "LiteFarm API server", "main": "./api/src/server.js", "type": "module", "engines": { "node": "22.23" }, "scripts": { "test": "node --inspect ./node_modules/.bin/jest --runInBand", "test-ci": "NODE_ENV=pipeline jest --runInBand --forceExit", "test-end2end": "jest endToEnd", "jest-w": "jest --watch", "start": "set NODE_ENV=development&& node --import @swc-node/register/esm-register src/server.ts", "start:prod": "node dist/app/src/server.js", "build": "rimraf dist && tsc -p src/tsconfig.json", "cp-uncompiled-to-dist": "rsync -a --include='*' --exclude='*.cjs' --exclude='*.js' --exclude='*.ts' ./src/templates ./dist/app/src && rsync -a --include='*' --exclude='*.cjs' --exclude='*.js' --exclude='*.ts' ./src/static ./dist/app/src/", "dev": "set NODE_ENV=development && node --inspect=0.0.0.0:9230 --watch --import @swc-node/register/esm-register src/server.ts", "debug-email-template": "DEBUG=email-templates npm run dev", "debug-i18n": "DEBUG=i18n:* npm run dev", "production": "NODE_ENV=production npm run start:prod", "integration": "NODE_ENV=integration npm run start:prod", "migrate:testing:db": "NODE_ENV=test knex migrate:latest --env=test --knexfile=./.knex/knexfile.js", "migrate:dev:db": "knex migrate:latest --knexfile=./.knex/knexfile.js", "migrate:make:dev": "knex migrate:latest --knexfile=./.knex/knexfile.js", "migrate:make:rollback": "knex migrate:rollback --knexfile=./.knex/knexfile.js", "migrate:dev:seed": "knex seed:run --knexfile=./.knex/knexfile.js", "migrate:pipeline:db": "NODE_ENV=test knex migrate:latest --env=pipeline --knexfile=./.knex/knexfile.js", "migrate:testing:seed": "knex seed:run --env=test --knexfile=./.knex/knexfile.js", "migrate:rollback:testing:db": "NODE_ENV=test knex migrate:rollback --env=test --knexfile=./.knex/knexfile.js", "i18n-scheduler": "npx i18next 'src/jobs/certification/**/*.js' -c 'src/jobs/locales/i18next-parser.config.js'", "scheduler": "cp ../webapp/public/locales/en/crop.json src/jobs/locales/en && cp ../webapp/public/locales/es/crop.json src/jobs/locales/es && cp ../webapp/public/locales/pt/crop.json src/jobs/locales/pt && cp ../webapp/public/locales/fr/crop.json src/jobs/locales/fr && cp ../webapp/public/locales/de/crop.json src/jobs/locales/de && cp ../webapp/public/locales/hi/crop.json src/jobs/locales/hi && cp ../webapp/public/locales/pa/crop.json src/jobs/locales/pa && cp ../webapp/public/locales/ml/crop.json src/jobs/locales/ml && cp ../webapp/public/locales/km/crop.json src/jobs/locales/km && cp ../webapp/public/locales/it/crop.json src/jobs/locales/it && node src/jobs/index.js", "publish-surveys": "node --import @swc-node/register/esm-register scripts/surveyCdnRelease/index.ts", "lint": "eslint src scripts", "fix-lint": "eslint src scripts --fix", "precommit": "lint-staged" }, "jest": { "verbose": true, "testEnvironment": "node", "transform": { "^.+\\.(t|j)sx?$": "@swc/jest" }, "transformIgnorePatterns": [ "node_modules/(?!(lodash|axios|uuid|core-js|@datafoodconsortium|@virtual-assembly|@rdfjs|rdf-ext|jsonld|grapoi|stream-chunks|duplex-|readable-stream|nodeify-fetch|node-fetch|is-stream|data-uri-to-buffer|fetch-blob|formdata-polyfill|duplex-to|file-fetch|proto-fetch)/)" ], "moduleNameMapper": { "^(\\.{1,2}/.*)\\.js$": "$1", "^axios$": "axios/dist/node/axios.cjs" }, "collectCoverageFrom": [ "src/**/*.{js,ts,jsx,mjs}" ], "globalSetup": "./jest-global-setup.ts", "setupFiles": [ "dotenv/config" ] }, "dependencies": { "@aws-sdk/client-s3": "^3.994.0", "@datafoodconsortium/connector": "2.0.0-beta.2", "@googlemaps/google-maps-services-js": "^3.4.1", "@sentry/node": "^7.119.2", "@turf/area": "^7.2.0", "@turf/centroid": "^7.2.0", "ajv-formats": "^2.1.1", "async-file": "^2.0.2", "axios": "^1.18.1", "bcryptjs": "^2.4.3", "bull": "^3.22.9", "chai": "^4.2.0", "chai-http": "^4.3.0", "core-js": "^3.24.1", "cors": "^2.8.5", "csvtojson": "^2.0.10", "dotenv": "^8.2.0", "email-templates": "^8.0.4", "exceljs": "4.3.0", "express": "^4.22.1", "express-jwt": "^8.4.1", "express-jwt-authz": "^2.4.1", "express-oas-generator": "^1.0.44", "express-promise-router": "^4.0.1", "form-data": "^4.0.6", "google-auth-library": "^6.1.3", "i18n-iso-countries": "^7.14.0", "i18next": "^21.4.0", "i18next-fs-backend": "^2.6.6", "jsdom": "^16.4.0", "jsonwebtoken": "^9.0.0", "jwk-to-pem": "^2.0.7", "jwks-rsa": "^3.0.1", "knex": "^3.1.0", "lodash": "^4.18.1", "lodash.groupby": "^4.6.0", "multer": "^2.4.0", "node-cron": "^3.0.3", "objection": "^3.0.1", "objection-soft-delete": "^1.0.7", "pg": "^8.5.1", "puppeteer": "^24.4.0", "request": "^2.87.0", "request-promise": "^4.2.2", "rimraf": "^3.0.2", "rxjs": "^6.6.3", "ua-parser-js": "^0.7.28", "uuid": "^14.0.0", "winston": "^3.8.2", "winston-daily-rotate-file": "^4.7.1", "winston-transport": "4.6.0", "xlsx-populate": "^1.21.0" }, "devDependencies": { "@eslint/js": "^9.10.0", "@faker-js/faker": "^7.6.0", "@swc-node/register": "^1.11.1", "@swc/core": "^1.15.1", "@swc/jest": "^0.2.39", "@tsconfig/node22": "^22.0.2", "@types/cors": "^2.8.17", "@types/eslint__js": "^8.42.3", "@types/express": "^4.17.21", "@types/jest": "^30.0.0", "@types/jwk-to-pem": "^2.0.3", "@types/multer": "^2.1.0", "@types/node": "^22.5.4", "@types/ua-parser-js": "^0.7.39", "@types/uuid": "^10.0.0", "eslint": "^9.10.0", "eslint-config-prettier": "^10.0.1", "eslint-plugin-json": "^4.0.1", "globals": "^15.14.0", "i18next-parser": "^5.3.0", "jest": "^30.2.0", "prettier": "^3.5.0", "typescript": "^5.6.2", "typescript-eslint": "^8.5.0" }, "overrides": { "glob-parent@<5.1.2": ">=5.1.2" } }