worklenz-backend/package.json
Rama main · réplica de lectura del repositorio original.
{
"name": "worklenz-backend",
"version": "3.0.0",
"private": true,
"engines": {
"npm": ">=8.11.0",
"node": ">=22.12.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 compile:dev && npm run copy && concurrently \"npm run watch\" \"npm run dev:server\"",
"dev:server": "nodemon --watch build --ext js,json,pug --delay 2000ms build/bin/www.js",
"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 && npm run copy:templates && npm run copy:release-notes && npm run copy:docs",
"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",
"copy:templates": "npx cpx2 \"worklenz-email-templates/**\" build/worklenz-email-templates",
"copy:release-notes": "npx cpx2 \"release-notes/**\" build/release-notes",
"copy:docs": "npx cpx2 \"src/docs/**\" build/docs",
"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",
"validate-docs": "echo 'Note: Install swagger-cli globally (npm install -g @apidevtools/swagger-cli) to validate OpenAPI spec' && echo 'For now, validation happens automatically when Swagger UI loads'",
"migrate:up": "node scripts/migrate.js up",
"migrate:down": "node scripts/migrate.js down 1",
"migrate:create": "node scripts/migrate.js create",
"migrate:addons": "node scripts/migrate-addons.js",
"build:addons": "node scripts/build-addons.js",
"migrate:bootstrap": "node scripts/migrate-bootstrap.js",
"migrate:reconcile-legacy-ids": "node scripts/reconcile-legacy-migration-ids.js",
"migrate:validate-ids": "node scripts/validate-migration-ids.js"
},
"jestSonar": {
"reportPath": "coverage",
"reportFile": "test-reporter.xml",
"indent": 4
},
"dependencies": {
"@aws-sdk/client-s3": "^3.952.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",
"@slack/events-api": "^3.0.1",
"@slack/interactive-messages": "^2.0.2",
"@slack/web-api": "^7.11.0",
"@types/nodemailer": "^8.0.2",
"archiver": "^7.0.1",
"axios": "^1.20.0",
"bcrypt": "^5.1.0",
"bluebird": "^3.7.2",
"chartjs-to-image": "^1.2.1",
"compression": "^1.8.2",
"connect-flash": "^0.1.1",
"connect-pg-simple": "^10.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",
"date-holidays": "^3.34.1",
"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",
"gray-matter": "^4.0.3",
"helmet": "^6.2.0",
"hpp": "^0.2.3",
"http-errors": "^2.0.0",
"i18next": "^23.16.8",
"i18next-fs-backend": "^2.6.8",
"jsonschema": "^1.4.1",
"jsonwebtoken": "^9.0.1",
"jwks-rsa": "^3.2.0",
"libphonenumber-js": "^1.12.33",
"lodash": "^4.17.21",
"marked": "^4.3.0",
"mime-types": "^2.1.35",
"moment": "^2.31.0",
"moment-timezone": "^0.5.43",
"morgan": "^1.12.1",
"multer": "^2.5.0",
"nanoid": "^3.3.6",
"nodemailer": "^10.1.4",
"passport": "^0.7.0",
"passport-apple": "^2.0.2",
"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.16.3",
"pug": "^3.0.2",
"puppeteer": "^24.34.0",
"redis": "^4.6.7",
"sanitize-html": "^2.18.1",
"segfault-handler": "^1.3.0",
"sharp": "^0.35.5",
"slugify": "^1.6.6",
"socket.io": "^4.7.1",
"tinymce": "^8.9.3",
"uglify-js": "^3.17.4",
"winston": "^3.10.0",
"worklenz-backend": "file:",
"xss-filters": "^1.2.7"
},
"devDependencies": {
"@babel/plugin-proposal-decorators": "^7.29.7",
"@babel/preset-env": "^7.22.9",
"@babel/preset-typescript": "^7.22.5",
"@types/archiver": "^6.0.4",
"@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/i18next-fs-backend": "^1.1.5",
"@types/jest": "^28.1.8",
"@types/jsonwebtoken": "^9.0.2",
"@types/lodash": "^4.14.196",
"@types/marked": "^5.0.2",
"@types/mime-types": "^2.1.1",
"@types/morgan": "^1.9.4",
"@types/multer": "^1.4.13",
"@types/node": "^18.19.129",
"@types/passport": "^1.0.17",
"@types/passport-apple": "^2.0.3",
"@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/swagger-ui-express": "^4.1.8",
"@types/toobusy-js": "^0.5.2",
"@types/uglify-js": "^3.17.1",
"@types/uuid": "^9.0.8",
"@types/xss-filters": "^0.0.27",
"@types/yamljs": "^0.2.34",
"@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.25.8",
"esbuild-envfile-plugin": "^1.0.5",
"esbuild-node-externals": "^1.8.0",
"eslint": "^8.57.1",
"eslint-plugin-security": "^1.7.1",
"fs-extra": "^10.1.0",
"highcharts": "^11.4.9",
"jest": "^28.1.3",
"jest-sonar-reporter": "^2.0.0",
"ncp": "^2.0.0",
"node-pg-migrate": "^8.0.4",
"nodemon": "^3.1.10",
"rimraf": "^6.0.1",
"swagger-jsdoc": "^6.2.8",
"swagger-ui-express": "^5.0.1",
"terser": "^5.40.0",
"ts-jest": "^28.0.8",
"ts-node": "^10.9.1",
"typescript": "^4.9.5",
"yamljs": "^0.3.0"
},
"overrides": {
"passport-custom": {
"@types/express": "$@types/express"
}
}
}