Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
This project manages its dependencies using yarn. Learn more
package.json 13.20 KiB
{
  "name": "metabase",
  "private": true,
  "version": "0.0.0",
  "description": "Metabase Analytics Report Server",
  "repository": "https://github.com/metabase/metabase",
  "license": "private",
  "engines": {
    "node": ">=14.2",
    "yarn": ">=1.12.3"
  },
  "dependencies": {
    "@emotion/react": "^11.7.1",
    "@emotion/styled": "^11.6.0",
    "@react-oauth/google": "^0.2.1",
    "@snowplow/browser-tracker": "^3.1.6",
    "@tippyjs/react": "^4.2.6",
    "@visx/axis": "1.8.0",
    "@visx/clip-path": "^2.1.0",
    "@visx/grid": "1.16.0",
    "@visx/group": "1.7.0",
    "@visx/scale": "1.7.0",
    "@visx/shape": "1.8.0",
    "@visx/text": "1.7.0",
    "ace-builds": "^1.4.7",
    "arg": "^5.0.0",
    "classlist-polyfill": "^1.2.0",
    "classnames": "^2.1.3",
    "color": "^3.0.0",
    "color-harmony": "^0.3.0",
    "core-js": "^3.1.4",
    "cron-expression-validator": "^1.0.20",
    "cronstrue": "^2.11.0",
    "crossfilter": "^1.3.12",
    "cy2": "^1.3.0",
    "d3": "^3.5.17",
    "d3-array": "^3.1.1",
    "d3-scale": "^2.1.0",
    "dc": "2.1.9",
    "diff": "^3.2.0",
    "eslint-plugin-no-only-tests": "^2.4.0",
    "formik": "^2.2.9",
    "history": "3",
    "humanize-plus": "^1.8.1",
    "icepick": "2.4.0",
    "iframe-resizer": "^4.3.2",
    "inflection": "^1.7.1",
    "isomorphic-fetch": "^2.2.1",
    "js-cookie": "^2.1.2",
    "jsrsasign": "^10.5.25",
    "leaflet": "^1.2.0",
    "leaflet-draw": "^0.4.9",
    "leaflet.heat": "^0.2.0",
    "mochawesome": "^7.1.3",
    "mochawesome-merge": "^4.2.1",
    "mochawesome-report-generator": "^6.2.0",
    "moment-timezone": "^0.5.26",
    "mustache": "^2.3.2",
    "node-polyfill-webpack-plugin": "^1.1.2",
    "normalizr": "^3.0.2",
    "number-to-locale-string": "^1.0.1",
    "password-generator": "^2.0.1",
    "prop-types": "^15.5.7",
    "raf-schd": "^4.0.3",
    "re-reselect": "^3.4.0",
    "react": "~16.14.0",
    "react-ace": "^9.5.0",
    "react-ansi-style": "^1.0.0",
    "react-collapse": "^4.0.3",
    "react-color": "^2.14.1",
    "react-copy-to-clipboard": "^5.0.1",
    "react-dnd": "3",
    "react-dnd-html5-backend": "3",
    "react-dom": "~16.14.0",
    "react-draggable": "^3.3.2",
    "react-element-to-jsx-string": "^13.1.0",
    "react-grid-layout": "^1.2.5",
    "react-is": "^17.0.2",
    "react-markdown": "^6.0.2",
    "react-motion": "0.5.2",
    "react-redux": "^5.0.4",
    "react-resizable": "^1.9.0",
    "react-router": "3",
    "react-router-redux": "^4.0.8",
    "react-sortable-hoc": "^1.11.0",
    "react-textarea-autosize": "^5.2.1",
    "react-transition-group": "1",
    "react-virtualized": "^9.7.2",
    "redux": "^3.5.2",
    "redux-actions": "^2.0.1",
    "redux-auth-wrapper": "^1.0.0",
    "redux-form": "5",
    "redux-logger": "^3.0.1",
    "redux-promise": "^0.5.0",
    "redux-router": "^2.1.2",
    "regenerator": "^0.14.1",
    "regexp.escape": "^1.1.0",
    "remark-gfm": "1.0.0",
    "reselect": "^3.0.0",
    "screenfull": "^4.2.1",
    "simple-statistics": "^3.0.0",
    "slugg": "^1.2.1",
    "styled-system": "2.2.5",
    "tether": "^1.2.0",
    "tippy.js": "^6.3.5",
    "ttag": "1.7.15",
    "underscore": "~1.13.3",
    "yarn.lock": "^0.0.1-security",
    "z-index": "0.0.1"
  },
  "devDependencies": {
    "@babel/cli": "^7.14.5",
    "@babel/core": "^7.14.6",
    "@babel/node": "^7.14.7",
    "@babel/preset-env": "^7.14.7",
    "@babel/preset-react": "^7.14.5",
    "@babel/preset-typescript": "^7.17.12",
    "@bahmutov/cypress-esbuild-preprocessor": "^2.1.3",
    "@cypress/skip-test": "^2.6.1",
    "@emotion/babel-plugin": "^11.7.2",
    "@percy/cli": "^1.3.0",
    "@percy/cypress": "^3.1.1",
    "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5",
    "@sinonjs/fake-timers": "^9.1.2",
    "@storybook/addon-actions": "^6.4.22",
    "@storybook/addon-essentials": "^6.4.22",
    "@storybook/addon-links": "^6.4.22",
    "@storybook/builder-webpack5": "^6.4.22",
    "@storybook/client-api": "6.4.22",
    "@storybook/manager-webpack5": "^6.4.22",
    "@storybook/react": "^6.4.22",
    "@testing-library/cypress": "^8.0.2",
    "@testing-library/dom": "^7.29.0",
    "@testing-library/jest-dom": "^4.0.0",
    "@testing-library/react": "^11.0.2",
    "@testing-library/react-hooks": "^8.0.0",
    "@testing-library/user-event": "^12.6.0",
    "@types/babel__core": "^7.1.16",
    "@types/babel__preset-env": "^7.9.2",
    "@types/color": "^3.0.2",
    "@types/concurrently": "^6.3.0",
    "@types/core-js": "^2.5.5",
    "@types/crossfilter": "^0.0.34",
    "@types/d3": "^3.5.46",
    "@types/d3-scale": "^2.2.6",
    "@types/dc": "0.0.29",
    "@types/diff": "^3.5.4",
    "@types/eslint": "7.29.0",
    "@types/glob": "^7.1.4",
    "@types/history": "3.2.5",
    "@types/humanize-plus": "^1.8.0",
    "@types/icepick": "2.3.0",
    "@types/iframe-resizer": "^3.5.9",
    "@types/inflection": "^1.13.0",
    "@types/isomorphic-fetch": "^0.0.35",
    "@types/js-cookie": "^2.2.7",
    "@types/jsonwebtoken": "^7.2.8",
    "@types/jsrsasign": "^8.0.13",
    "@types/leaflet": "^1.7.5",
    "@types/leaflet-draw": "^0.4.14",
    "@types/leaflet.heat": "^0.2.1",
    "@types/mini-css-extract-plugin": "^2.4.0",
    "@types/mockdate": "^3.0.0",
    "@types/moment-timezone": "^0.5.26",
    "@types/mustache": "^4.1.2",
    "@types/postcss-import": "^12.0.1",
    "@types/postcss-url": "^8.0.2",
    "@types/prettier": "1.19.1",
    "@types/prop-types": "^15.7.4",
    "@types/raf": "^3.4.0",
    "@types/raf-schd": "^4.0.1",
    "@types/react": "~16.14.17",
    "@types/react-collapse": "^5.0.1",
    "@types/react-color": "^2.17.6",
    "@types/react-copy-to-clipboard": "^5.0.2",
    "@types/react-dom": "~17.0.9",
    "@types/react-grid-layout": "^1.1.3",
    "@types/react-is": "^17.0.3",
    "@types/react-motion": "0.0.32",
    "@types/react-redux": "^5.0.22",
    "@types/react-resizable": "^1.7.4",
    "@types/react-router": "3.0.28",
    "@types/react-router-redux": "^4.0.53",
    "@types/react-textarea-autosize": "^4.3.6",
    "@types/react-transition-group": "1.1.8",
    "@types/react-virtualized": "^9.21.13",
    "@types/redux-actions": "^2.6.2",
    "@types/redux-auth-wrapper": "^1.0.7",
    "@types/redux-form": "5.0.2",
    "@types/redux-logger": "^3.0.9",
    "@types/redux-promise": "^0.5.29",
    "@types/redux-router": "^1.0.45",
    "@types/styled-system": "2.3.2",
    "@types/testing-library__jest-dom": "^5.14.1",
    "@types/tether": "^1.4.6",
    "@types/underscore": "^1.11.3",
    "@types/webpack-dev-server": "^4.7.2",
    "@typescript-eslint/eslint-plugin": "^5.27.0",
    "@typescript-eslint/parser": "^5.27.0",
    "babel-eslint": "10.1.0",
    "babel-jest": "^27.0.6",
    "babel-loader": "^8.2.2",
    "babel-plugin-ttag": "^1.7.26",
    "chromatic": "^6.3.3",
    "concurrently": "^3.1.0",
    "css-loader": "^0.28.7",
    "cypress": "9.7.0",
    "cypress-grep": "^2.13.1",
    "cypress-real-events": "^1.7.0",
    "documentation": "^13.2.5",
    "esbuild": "^0.14.49",
    "eslint": "7.32.0",
    "eslint-import-resolver-webpack": "^0.8.3",
    "eslint-loader": "4.0.2",
    "eslint-plugin-cypress": "^2.12.1",
    "eslint-plugin-import": "^2.22.0",
    "eslint-plugin-react": "^7.22.0",
    "eslint-plugin-react-hooks": "^4.2.0",
    "glob": "^7.1.1",
    "html-webpack-harddisk-plugin": "^2.0.0",
    "html-webpack-plugin": "^5.3.1",
    "husky": "^7.0.4",
    "jest": "^27.0.6",
    "jest-canvas-mock": "^2.4.0",
    "jest-localstorage-mock": "^2.2.0",
    "jest-watch-typeahead": "^0.6.4",
    "jsonwebtoken": "^8.5.1",
    "lint-staged": "^12.3.2",
    "mini-css-extract-plugin": "^1.6.0",
    "mockdate": "^2.0.2",
    "mutationobserver-shim": "^0.3.7",
    "postcss": "~8.4.13",
    "postcss-color-mod-function": "^3.0.3",
    "postcss-import": "^14.0.2",
    "postcss-loader": "^6.2.0",
    "postcss-preset-env": "^6.7.0",
    "postcss-url": "^10.1.3",
    "prettier": "^2.7.1",
    "promise-loader": "^1.0.0",
    "raf": "^3.4.0",
    "react-refresh": "^0.13.0",
    "shadow-cljs": "2.19.6",
    "style-loader": "0.23.1",
    "typescript": "^4.7.2",
    "webpack": "^5.69.0",
    "webpack-cli": "^4.9.2",
    "webpack-dev-server": "^4.7.4",
    "webpack-notifier": "^1.8.0",
    "xhr-mock": "^2.4.1",
    "xlsx": "0.18.3",
    "yaml-lint": "~1.6.0"
  },
  "resolutions": {
    "ansi-regex": "5.0.1",
    "nth-check": "2.0.1",
    "set-value": "4.0.1",
    "immer": "9.0.6",
    "ansi-html": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
    "prismjs": "1.27.0",
    "nanoid": "3.1.31",
    "minimist": "1.2.6",
    "node-forge": "1.3.0"
  },
  "scripts": {
    "concurrently": "yarn && concurrently --kill-others -p name",
    "dev": "yarn concurrently -n 'backend,frontend,cljs,docs' -c 'blue,green,yellow,magenta' 'clojure -M:run' 'yarn build-hot:js' 'yarn build-hot:cljs' 'yarn docs'",
    "dev-ee": "yarn concurrently -n 'backend,frontend,cljs,docs' -c 'blue,green,yellow,magenta' 'clojure -M:run:ee' 'MB_EDITION=ee yarn build-hot:js' 'MB_EDITION=ee yarn build-hot:cljs' 'yarn docs'",
    "type-check": "yarn && tsc --noEmit",
    "remove-webpack-cache": "rm -rf ./node_modules/.cache",
    "lint": "yarn lint-eslint && yarn lint-prettier && yarn lint-docs-links && yarn lint-yaml && yarn type-check",
    "lint-eslint": "yarn build-quick:cljs && eslint --ext .js,.jsx,.ts,.tsx --rulesdir frontend/lint/eslint-rules --max-warnings 0 enterprise/frontend/src frontend/src frontend/test",
    "lint-prettier": "yarn && prettier -l '{enterprise/,}frontend/**/*.{js,jsx,ts,tsx,css}' || (echo '\nThese files are not formatted correctly. Did you forget to \"yarn prettier\"?' && false)",
    "lint-docs-links": "yarn && ./bin/verify-doc-links",
    "lint-yaml": "yamllint **/*.{yaml,yml} --ignore=node_modules/**/*.{yaml,yml}",
    "test": "yarn test-unit && yarn test-timezones && yarn test-cypress",
    "test-unit": "yarn build-quick:cljs && jest --silent --maxWorkers=2 --config jest.unit.conf.json",
    "test-unit-watch": "yarn test-unit --watch",
    "test-timezones-unit": "yarn build-quick:cljs && jest --silent --maxWorkers=2 --config jest.tz.unit.conf.json",
    "test-timezones": "yarn && ./frontend/test/__runner__/run_timezone_tests",
    "build:js": "yarn && webpack --bail",
    "build-watch:js": "yarn && webpack --watch",
    "build-hot:js": "yarn && NODE_OPTIONS=--max-old-space-size=8096 WEBPACK_BUNDLE=hot webpack serve --progress --host 0.0.0.0",
    "build:cljs": "yarn && rm -rf frontend/src/cljs/* && shadow-cljs release app",
    "build-quick:cljs": "yarn build:cljs",
    "build-watch:cljs": "yarn cljs-server-restart && shadow-cljs watch app",
    "build-hot:cljs": "yarn cljs-server-restart && shadow-cljs watch app",
    "cljs-server-start": "yarn && shadow-cljs start",
    "cljs-server-stop": "yarn && shadow-cljs stop",
    "cljs-server-restart": "yarn && shadow-cljs restart",
    "cljs-nrepl": "yarn && shadow-cljs node-repl -d cider/cider-nrepl:0.25.8 -d cider/piggieback:0.5.1 -d refactor-nrepl:2.5.1",
    "test-cljs": "yarn && shadow-cljs compile test && node target/node-tests.js",
    "build": "yarn build:cljs && yarn build:js",
    "build-watch": "yarn concurrently -n 'cljs,js' 'yarn build-watch:cljs' 'yarn build-watch:js'",
    "build-hot": "yarn concurrently -n 'cljs,js' 'yarn build-hot:cljs' 'yarn build-hot:js'",
    "build-stats": "yarn && webpack --json > stats.json",
    "build-shared": "yarn && webpack --config webpack.shared.config.js",
    "build-static-viz": "yarn && webpack --config webpack.static-viz.config.js",
    "precommit": "lint-staged",
    "preinstall": "echo $npm_execpath | grep -q yarn || echo '\\033[0;33mSorry, npm is not supported. Please use Yarn (https://yarnpkg.com/).\\033[0m'",
    "prettier": "prettier --write '{enterprise/,}frontend/**/*.{js,jsx,ts,tsx,css}'",
    "eslint-fix": "yarn && eslint --fix --ext .js,.jsx,.ts,.tsx --rulesdir frontend/lint/eslint-rules {enterprise/,}frontend/{src,test}",
    "docs": "documentation serve --watch frontend/src/metabase-lib/lib/**",
    "ci": "yarn ci-frontend && yarn ci-backend",
    "ci-frontend": "yarn lint && yarn test",
    "ci-backend": "clojure -X:dev:ee:ee-dev:drivers:drivers-dev:eastwood && clojure -X:dev:test",
    "test-cypress-run": "node ./frontend/test/__runner__/run_cypress_tests.js",
    "test-cypress-open": "./bin/build-for-test && yarn test-cypress-run --open",
    "test-cypress-open-no-backend": "E2E_HOST='http://localhost:3000' yarn test-cypress-run --open",
    "test-cypress": "yarn build && ./bin/build-for-test && yarn test-cypress-run",
    "clean-cypress-artifacts": "rm -R -f cypress/",
    "generate-cypress-html-report": "mochawesome-merge cypress/reports/mochareports/*.json > cypress/reports/cypress-test-report.json && marge cypress/reports/cypress-test-report.json -o cypress/reports/mochareports --inline",
    "test-visual-run": "percy exec -- yarn test-cypress-run --spec \"./frontend/test/metabase-visual/**/*.cy.spec.js\"",
    "test-visual-open": "percy exec -- yarn test-cypress-open",
    "test-visual": "yarn build && ./bin/build-for-test && yarn test-visual-run",
    "prepare": "husky install",
    "storybook": "start-storybook -p 6006",
    "build-storybook": "build-storybook",
    "chromatic": "chromatic"
  },
  "lint-staged": {
    "+(enterprise|frontend)/**/*.css": [
      "prettier --write"
    ],
    "+(enterprise|frontend)/**/*.{js,jsx,ts,tsx}": [
      "eslint --rulesdir frontend/lint/eslint-rules --max-warnings 0",
      "prettier --write"
    ]
  },
  "browserslist": [
    "defaults"
  ]
}