{ "name": "worklenz-backend", "version": "1.4.16", "private": true, "engines": { "npm": ">=8.11.0", "node": ">=20.0.0", "yarn": "WARNING: Please use npm package manager instead of yarn" }, "main": "build/bin/www", "repository": "GITHUB_REPO_HERE", "author": "worklenz.com", "scripts": { "test": "jest", "start": "node build/bin/www.js", "dev": "npm run build:dev && npm run watch", "build": "npm run clean && npm run compile && npm run copy && npm run compress", "build:dev": "npm run clean && npm run compile:dev && npm run copy", "build:prod": "npm run clean && npm run compile:prod && npm run copy && npm run minify && npm run compress", "clean": "rimraf build", "compile": "tsc --build tsconfig.prod.json", "compile:dev": "tsc --build tsconfig.json", "compile:prod": "tsc --build tsconfig.prod.json", "copy": "npm run copy:assets && npm run copy:views && npm run copy:config && npm run copy:shared", "copy:assets": "npx cpx2 \"src/public/**\" build/public", "copy:views": "npx cpx2 \"src/views/**\" build/views", "copy:config": "npx cpx2 \".env\" build && npx cpx2 \"package.json\" build", "copy:shared": "npx cpx2 \"src/shared/postgresql-error-codes.json\" build/shared && npx cpx2 \"src/shared/sample-data.json\" build/shared && npx cpx2 \"src/shared/templates/**\" build/shared/templates", "watch": "concurrently \"npm run watch:ts\" \"npm run watch:assets\"", "watch:ts": "tsc --build tsconfig.json --watch", "watch:assets": "npx cpx2 \"src/{public,views}/**\" build --watch", "minify": "terser build/**/*.js --compress --mangle --output-dir build", "compress": "node scripts/compress.js", "swagger": "node ./cli/swagger", "inline-queries": "node ./cli/inline-queries", "sonar": "sonar-scanner -Dproject.settings=sonar-project-dev.properties", "tsc": "tsc", "test:watch": "jest --watch --setupFiles dotenv/config" }, "jestSonar": { "reportPath": "coverage", "reportFile": "test-reporter.xml", "indent": 4 }, "dependencies": { "@aws-sdk/client-s3": "^3.378.0", "@aws-sdk/client-ses": "^3.378.0", "@aws-sdk/s3-request-presigner": "^3.378.0", "@aws-sdk/util-format-url": "^3.357.0", "@azure/storage-blob": "^12.27.0", "axios": "^1.6.0", "bcrypt": "^5.1.0", "bluebird": "^3.7.2", "chartjs-to-image": "^1.2.1", "compression": "^1.7.4", "connect-flash": "^0.1.1", "connect-pg-simple": "^7.0.0", "cookie-parser": "~1.4.4", "cors": "^2.8.5", "cron": "^2.4.0", "crypto-js": "^4.1.1", "csrf-sync": "^4.2.1", "csurf": "^1.11.0", "debug": "^4.3.4", "dotenv": "^16.3.1", "exceljs": "^4.3.0", "express": "^4.18.2", "express-rate-limit": "^6.8.0", "express-session": "^1.17.3", "express-validator": "^6.15.0", "helmet": "^6.2.0", "hpp": "^0.2.3", "http-errors": "^2.0.0", "jsonschema": "^1.4.1", "jsonwebtoken": "^9.0.1", "lodash": "^4.17.21", "mime-types": "^2.1.35", "moment": "^2.29.4", "moment-timezone": "^0.5.43", "morgan": "^1.10.0", "nanoid": "^3.3.6", "passport": "^0.7.0", "passport-custom": "^1.1.1", "passport-google-oauth2": "^0.2.0", "passport-google-oauth20": "^2.0.0", "passport-local": "^1.0.0", "path": "^0.12.7", "pg": "^8.14.1", "pug": "^3.0.2", "redis": "^4.6.7", "sanitize-html": "^2.11.0", "segfault-handler": "^1.3.0", "sharp": "^0.32.6", "slugify": "^1.6.6", "socket.io": "^4.7.1", "tinymce": "^7.8.0", "uglify-js": "^3.17.4", "winston": "^3.10.0", "worklenz-backend": "file:", "xss-filters": "^1.2.7" }, "devDependencies": { "@babel/preset-env": "^7.22.9", "@babel/preset-typescript": "^7.22.5", "@types/bcrypt": "^5.0.0", "@types/bluebird": "^3.5.38", "@types/body-parser": "^1.19.2", "@types/compression": "^1.7.2", "@types/connect-flash": "^0.0.37", "@types/cookie-parser": "^1.4.3", "@types/cookie-signature": "^1.1.2", "@types/cron": "^2.0.1", "@types/crypto-js": "^4.2.2", "@types/csurf": "^1.11.2", "@types/express": "^4.17.21", "@types/express-brute": "^1.0.2", "@types/express-brute-redis": "^0.0.4", "@types/express-serve-static-core": "^4.17.34", "@types/express-session": "^1.17.7", "@types/fs-extra": "^9.0.13", "@types/hpp": "^0.2.2", "@types/http-errors": "^1.8.2", "@types/jest": "^28.1.8", "@types/jsonwebtoken": "^9.0.2", "@types/lodash": "^4.14.196", "@types/mime-types": "^2.1.1", "@types/morgan": "^1.9.4", "@types/node": "^18.17.1", "@types/passport": "^1.0.17", "@types/passport-google-oauth20": "^2.0.16", "@types/passport-local": "^1.0.38", "@types/pg": "^8.11.11", "@types/pug": "^2.0.6", "@types/sanitize-html": "^2.9.0", "@types/sharp": "^0.31.1", "@types/swagger-jsdoc": "^6.0.1", "@types/toobusy-js": "^0.5.2", "@types/uglify-js": "^3.17.1", "@types/xss-filters": "^0.0.27", "@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/parser": "^5.62.0", "chokidar": "^3.5.3", "concurrently": "^9.1.2", "cpx2": "^8.0.0", "esbuild": "^0.17.19", "esbuild-envfile-plugin": "^1.0.5", "esbuild-node-externals": "^1.8.0", "eslint": "^8.45.0", "eslint-plugin-security": "^1.7.1", "fs-extra": "^10.1.0", "highcharts": "^11.1.0", "jest": "^28.1.3", "jest-sonar-reporter": "^2.0.0", "ncp": "^2.0.0", "nodeman": "^1.1.2", "rimraf": "^6.0.1", "swagger-jsdoc": "^6.2.8", "terser": "^5.40.0", "ts-jest": "^28.0.8", "ts-node": "^10.9.1", "tslint": "^6.1.3", "typescript": "^4.9.5" } }