{ "name": "monitor", "version": "1.0.0", "description": "Firefox Monitor", "type": "module", "engines": { "node": "18.12.x", "npm": "8.x" }, "scripts": { "prestart": "npm run build", "start": "node src/app.js", "dev": "nodemon src/app.js", "build": "node esbuild & npm run copy:root & npm run copy:webp & npm run copy:png & npm run build:svg", "build:svg": "svgo -f src/client/images/ -r -o dist/images", "copy:root": "mkdir -p dist/ && cp src/client/*.* dist/", "copy:webp": "mkdir -p dist/images/ && cp -r src/client/images/*.webp dist/images/", "copy:png": "mkdir -p dist/images/email/ && cp -r src/client/images/email/*.png dist/images/email/", "convert:webp": "sh src/scripts/webp.sh", "db:migrate": "node -r dotenv/config node_modules/knex/bin/cli.js migrate:latest --knexfile src/db/knexfile.js", "db:rollback": "node -r dotenv/config node_modules/knex/bin/cli.js migrate:rollback --knexfile src/db/knexfile.js", "test": "NODE_OPTIONS=--loader=testdouble c8 ava", "e2e": "playwright test src/e2e/", "lint": "npm run lint:css && npm run lint:js", "lint:css": "stylelint src/client/css/", "lint:js": "eslint .", "lint:ts": "tsc --noEmit", "fix": "npm run fix:css && npm run fix:js", "fix:js": "eslint . --fix", "fix:css": "stylelint src/client/css/ --fix" }, "nodemonConfig": { "watch": [ "*", ".env" ], "ignore": [ "src/client/*" ], "env": { "LIVE_RELOAD": true }, "ext": "js,css,json,ftl,env" }, "ava": { "files": [ "!src/e2e/" ] }, "repository": { "type": "git", "url": "git+https://github.com/mozilla/blurts-server.git" }, "homepage": "https://github.com/mozilla/blurts-server", "license": "MPL-2.0", "volta": { "node": "18.12.1", "npm": "8.19.3" }, "dependencies": { "@fluent/bundle": "^0.17.1", "@fluent/langneg": "^0.6.2", "@sentry/node": "^7.40.0", "@sentry/tracing": "^7.38.0", "client-oauth2": "^4.3.3", "connect-redis": "^7.0.0", "cookie-parser": "^1.4.6", "csrf-csrf": "^2.2.2", "dotenv": "^16.0.3", "esbuild": "^0.17.8", "express": "^4.18.2", "express-rate-limit": "^6.7.0", "express-session": "^1.17.3", "helmet": "^6.0.0", "knex": "^2.4.2", "mozlog": "^3.0.2", "nodemailer": "^6.9.1", "pg": "^8.9.0", "redis": "^4.6.5", "uuid": "^9.0.0" }, "devDependencies": { "@playwright/test": "^1.32.3", "@types/express": "^4.17.17", "@typescript-eslint/eslint-plugin": "^5.59.1", "@typescript-eslint/parser": "^5.59.1", "ava": "^5.1.0", "c8": "^7.12.0", "eslint": "^8.32.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-check-file": "^2.2.0", "eslint-plugin-header": "^3.1.1", "eslint-plugin-jsdoc": "^40.0.0", "node-mocks-http": "^1.12.1", "nodemon": "^2.0.20", "redis-mock": "^0.56.3", "stylelint": "^15.6.0", "stylelint-config-standard": "^33.0.0", "svgo": "^3.0.2", "testdouble": "^3.16.8", "typescript": "^5.0.4" } }