{ "name": "umami", "version": "1.16.0", "description": "A simple, fast, website analytics alternative to Google Analytics. ", "author": "Mike Cao <mike@mikecao.com>", "license": "MIT", "homepage": "https://umami.is", "repository": { "type": "git", "url": "https://github.com/mikecao/umami.git" }, "scripts": { "dev": "next dev", "build": "npm-run-all build-tracker build-lang build-geo build-db build-app", "start": "next start", "start-env": "node -r dotenv/config scripts/start-env.js", "build-app": "next build", "build-tracker": "rollup -c rollup.tracker.config.js", "build-db": "npm-run-all copy-db-schema build-db-client", "build-lang": "npm-run-all format-lang compile-lang", "build-geo": "node scripts/build-geo.js", "build-db-schema": "dotenv prisma introspect", "build-db-client": "dotenv prisma generate", "build-mysql-schema": "dotenv prisma introspect -- --schema=./prisma/schema.mysql.prisma", "build-mysql-client": "dotenv prisma generate -- --schema=./prisma/schema.mysql.prisma", "build-postgresql-schema": "dotenv prisma introspect -- --schema=./prisma/schema.postgresql.prisma", "build-postgresql-client": "dotenv prisma generate -- --schema=./prisma/schema.postgresql.prisma", "copy-db-schema": "node scripts/copy-db-schema.js", "generate-lang": "npm-run-all extract-lang merge-lang", "extract-lang": "formatjs extract '{pages,components}/**/*.js' --out-file build/messages.json", "merge-lang": "node scripts/merge-lang.js", "format-lang": "node scripts/format-lang.js", "compile-lang": "formatjs compile-folder --ast build lang-compiled", "check-lang": "node scripts/check-lang.js", "download-country-names": "node scripts/download-country-names.js", "loadtest": "node scripts/loadtest.js", "loadtest:medium": "node scripts/loadtest.js --weight=medium", "loadtest:heavy": "node scripts/loadtest.js --weight=heavy --verbose" }, "lint-staged": { "**/*.js": [ "prettier --write", "eslint" ], "**/*.css": [ "stylelint --fix", "prettier --write" ], "**/*.json": [ "prettier --write" ] }, "husky": { "hooks": { "pre-commit": "lint-staged" } }, "dependencies": { "@prisma/client": "2.19.0", "@reduxjs/toolkit": "^1.5.0", "bcrypt": "^5.0.0", "chalk": "^4.1.0", "chart.js": "^2.9.4", "classnames": "^2.2.6", "cookie": "^0.4.1", "cors": "^2.8.5", "date-fns": "^2.16.1", "date-fns-tz": "^1.0.12", "detect-browser": "^5.2.0", "dotenv": "^8.2.0", "formik": "^2.2.6", "immer": "^8.0.1", "is-localhost-ip": "^1.4.0", "isbot": "^3.0.25", "jose": "2.0.3", "maxmind": "^4.3.1", "moment-timezone": "^0.5.32", "next": "^10.0.9", "prompts": "2.4.0", "prop-types": "^15.7.2", "react": "^17.0.2", "react-dom": "^17.0.2", "react-intl": "^5.14.1", "react-redux": "^7.2.3", "react-simple-maps": "^2.3.0", "react-spring": "^8.0.27", "react-tooltip": "^4.2.17", "react-use-measure": "^2.0.4", "react-window": "^1.8.6", "redux": "^4.0.5", "redux-thunk": "^2.3.0", "request-ip": "^2.1.3", "semver": "^7.3.4", "thenby": "^1.3.4", "timezone-support": "^2.0.2", "tinycolor2": "^1.4.2", "uuid": "^8.3.2" }, "devDependencies": { "@formatjs/cli": "^2.13.16", "@rollup/plugin-buble": "^0.21.3", "@rollup/plugin-node-resolve": "^11.1.1", "@rollup/plugin-replace": "^2.3.4", "@svgr/webpack": "^5.5.0", "cross-env": "^7.0.3", "del": "^6.0.0", "dotenv-cli": "^4.0.0", "eslint": "^7.20.0", "eslint-config-prettier": "^7.2.0", "eslint-plugin-prettier": "^3.3.1", "eslint-plugin-react": "^7.22.0", "eslint-plugin-react-hooks": "^4.2.0", "extract-react-intl-messages": "^4.1.1", "husky": "^4.3.8", "lint-staged": "^10.5.4", "loadtest": "5.1.2", "npm-run-all": "^4.1.5", "postcss-flexbugs-fixes": "^5.0.2", "postcss-import": "^13.0.0", "postcss-preset-env": "^6.7.0", "prettier": "^2.2.1", "prettier-eslint": "^12.0.0", "prisma": "2.19.0", "rollup": "^2.38.3", "rollup-plugin-hashbang": "^2.2.2", "rollup-plugin-terser": "^7.0.2", "stylelint": "^13.10.0", "stylelint-config-css-modules": "^2.2.0", "stylelint-config-prettier": "^8.0.1", "stylelint-config-recommended": "^3.0.0", "tar": "^6.0.5" } }