-
Nemanja Glumac authoredNemanja Glumac authored
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 15.26 KiB
{
"name": "metabase",
"private": true,
"version": "0.0.0",
"description": "Metabase Analytics Report Server",
"repository": "https://github.com/metabase/metabase",
"license": "private",
"engines": {
"node": ">=16",
"yarn": "^1.12.3"
},
"dependencies": {
"@emotion/react": "^11.7.1",
"@emotion/styled": "^11.6.0",
"@react-oauth/google": "^0.4.0",
"@reduxjs/toolkit": "^1.9.3",
"@snowplow/browser-tracker": "^3.1.6",
"@tippyjs/react": "^4.2.6",
"@visx/axis": "1.8.0",
"@visx/clip-path": "^2.1.0",
"@visx/event": "^2.6.0",
"@visx/grid": "1.16.0",
"@visx/group": "1.7.0",
"@visx/legend": "^2.10.0",
"@visx/mock-data": "^2.1.2",
"@visx/responsive": "^2.10.0",
"@visx/scale": "1.7.0",
"@visx/shape": "2.12.2",
"@visx/text": "1.7.0",
"@visx/tooltip": "^2.10.0",
"ace-builds": "^1.4.13",
"classlist-polyfill": "^1.2.0",
"classnames": "^2.1.3",
"color": "^3.0.0",
"color-harmony": "^0.3.0",
"crc-32": "^1.2.2",
"cron-expression-validator": "^1.0.20",
"cronstrue": "^2.11.0",
"crossfilter": "^1.3.12",
"d3": "^3.5.17",
"d3-array": "^3.1.1",
"d3-scale": "^3.3.0",
"d3-shape": "^3.1.0",
"d3-time-format": "^4.1.0",
"dc": "2.1.9",
"diff": "^3.2.0",
"formik": "^2.2.9",
"history": "3",
"html2canvas": "^1.4.1",
"humanize-plus": "^1.8.1",
"icepick": "2.4.0",
"iframe-resizer": "^4.3.2",
"inflection": "^1.7.1",
"js-cookie": "^2.1.2",
"jspdf": "^2.5.1",
"jsrsasign": "^10.5.25",
"leaflet": "^1.2.0",
"leaflet-draw": "^0.4.9",
"leaflet.heat": "^0.2.0",
"moment-timezone": "^0.5.38",
"mustache": "^2.3.2",
"mysql2": "^3.1.0",
"normalizr": "^3.0.2",
"number-to-locale-string": "^1.0.1",
"password-generator": "^2.0.1",
"prop-types": "^15.5.7",
"re-reselect": "^4.0.1",
"react": "~16.14.0",
"react-ace": "^9.5.0",
"react-ansi-style": "^1.0.0",
"react-beautiful-dnd": "^13.1.1",
"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-dropzone": "^14.2.3",
"react-element-to-jsx-string": "^13.1.0",
"react-grid-layout": "^1.2.5",
"react-is": "^17.0.2",
"react-markdown": "^8.0.4",
"react-motion": "0.5.2",
"react-redux": "^8.0.5",
"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": "^4.4.5",
"react-use": "^17.4.0",
"react-virtualized": "^9.22.3",
"reduce-reducers": "^1.0.4",
"redux-actions": "^2.0.1",
"redux-auth-wrapper": "^1.0.0",
"redux-promise": "^0.5.0",
"redux-router": "^2.1.2",
"regenerator": "^0.14.1",
"rehype-external-links": "^2.0.1",
"remark-gfm": "1.0.0",
"screenfull": "^4.2.1",
"server-text-width": "^1.0.2",
"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",
"yup": "^0.32.11",
"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.2.0",
"@cypress/grep": "^3.1.0",
"@cypress/skip-test": "^2.6.1",
"@deploysentinel/cypress-debugger": "^0.7.8",
"@emotion/babel-plugin": "^11.7.2",
"@esbuild-plugins/node-modules-polyfill": "^0.2.2",
"@percy/cli": "^1.23.0",
"@percy/cypress": "^3.1.2",
"@pmmmwh/react-refresh-webpack-plugin": "0.5.10",
"@sinonjs/fake-timers": "^9.1.2",
"@storybook/addon-a11y": "^6.5.16",
"@storybook/addon-actions": "6.5.15",
"@storybook/addon-essentials": "6.5.15",
"@storybook/addon-links": "6.5.15",
"@storybook/builder-webpack5": "6.5.15",
"@storybook/client-api": "6.5.15",
"@storybook/manager-webpack5": "6.5.15",
"@storybook/react": "6.5.15",
"@testing-library/cypress": "^9.0.0",
"@testing-library/dom": "^7.29.0",
"@testing-library/jest-dom": "^5.16.5",
"@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/crossfilter": "^0.0.34",
"@types/d3": "^3.5.46",
"@types/d3-array": "^3.0.3",
"@types/d3-scale": "^4.0.2",
"@types/d3-shape": "^3.1.0",
"@types/d3-time": "^3.0.0",
"@types/d3-time-format": "^4.0.0",
"@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/jest": "^29.2.3",
"@types/js-cookie": "^2.2.7",
"@types/jsonwebtoken": "^9.0.1",
"@types/jsrsasign": "^8.0.13",
"@types/leaflet": "^1.7.5",
"@types/leaflet-draw": "^0.4.14",
"@types/leaflet.heat": "^0.2.1",
"@types/mockdate": "^3.0.0",
"@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/react": "~16.14.17",
"@types/react-beautiful-dnd": "^13.1.3",
"@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": "^7.1.24",
"@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": "^4.4.5",
"@types/react-virtualized": "^9.21.13",
"@types/redux-actions": "^2.6.2",
"@types/redux-auth-wrapper": "^1.0.7",
"@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.5",
"@types/tether": "^1.4.6",
"@types/underscore": "^1.11.3",
"@typescript-eslint/eslint-plugin": "^5.27.0",
"@typescript-eslint/parser": "^5.27.0",
"arg": "^5.0.0",
"babel-eslint": "10.1.0",
"babel-jest": "^29.3.1",
"babel-loader": "^9.1.2",
"babel-plugin-ttag": "^1.7.26",
"chromatic": "^6.3.3",
"concurrently": "^7.6.0",
"cross-fetch": "^3.1.5",
"css-loader": "1.0.1",
"cy-verify-downloads": "^0.1.12",
"cypress": "^12.8.1",
"cypress-real-events": "^1.7.6",
"esbuild": "^0.17.9",
"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-jest": "^27.2.0",
"eslint-plugin-jest-dom": "^4.0.3",
"eslint-plugin-no-only-tests": "^2.4.0",
"eslint-plugin-react": "^7.22.0",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-testing-library": "^5.9.1",
"fetch-mock": "^9.11.0",
"glob": "^7.1.1",
"html-webpack-harddisk-plugin": "^2.0.0",
"html-webpack-plugin": "5.5.0",
"husky": "^8.0.2",
"jest": "^29.3.1",
"jest-canvas-mock": "^2.4.0",
"jest-environment-jsdom": "^29.3.1",
"jest-localstorage-mock": "^2.4.22",
"jest-watch-typeahead": "^2.2.1",
"jsonwebtoken": "^9.0.0",
"knex": "^2.4.2",
"lint-staged": "^13.1.2",
"markdown-link-check": "^3.10.2",
"mini-css-extract-plugin": "2.7.2",
"mochawesome": "^7.1.3",
"mochawesome-merge": "^4.2.1",
"mochawesome-report-generator": "^6.2.0",
"mockdate": "^2.0.2",
"mutationobserver-shim": "^0.3.7",
"node-polyfill-webpack-plugin": "2.0.1",
"pg": "^8.8.0",
"postcss": "8.4.19",
"postcss-color-mod-function": "^3.0.3",
"postcss-import": "15.1.0",
"postcss-loader": "7.0.2",
"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",
"source-map-loader": "^4.0.1",
"style-loader": "3.3.1",
"typescript": "^4.7.2",
"webpack": "^5.82.0",
"webpack-cli": "^5.0.2",
"webpack-dev-server": "^4.13.3",
"webpack-notifier": "1.15.0",
"xlsx": "^0.18.5",
"yaml-lint": "~1.6.0"
},
"resolutions": {
"ansi-regex": "5.0.1",
"set-value": "4.0.1",
"ansi-html": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
"unset-value": "2.0.1",
"nth-check": "2.0.1",
"json5": "2.2.2"
},
"scripts": {
"concurrently": "yarn && concurrently --kill-others -p name",
"dev": "yarn concurrently -n 'backend,frontend,cljs,static-viz' -c 'blue,green,yellow,magenta,red' 'clojure -M:run' 'yarn build-hot:js' 'yarn build-hot:cljs' 'yarn build-static-viz:watch'",
"dev-ee": "yarn concurrently -n 'backend,frontend,cljs,static-viz' -c 'blue,green,yellow,magenta,red' 'clojure -M:run:ee' 'MB_EDITION=ee yarn build-hot:js' 'MB_EDITION=ee yarn build-hot:cljs' 'yarn build-static-viz:watch'",
"type-check": "rm -rf frontend/src/{cljs,cljs_release} && yarn build:cljs && 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:cljs && eslint --ext .js,.jsx,.ts,.tsx --rulesdir frontend/lint/eslint-rules --max-warnings 0 enterprise/frontend/src frontend/src frontend/test e2e/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-debug": "yarn build:cljs && node --inspect-brk node_modules/.bin/jest --runInBand --detectOpenHandles --config jest.unit.conf.json",
"test-unit": "yarn build:cljs && jest --maxWorkers=2 --config jest.unit.conf.json",
"test-unit-keep-cljs": "jest --maxWorkers=2 --config jest.unit.conf.json",
"test-unit-watch": "yarn test-unit --watch",
"test-unit-watch:cljs": "yarn concurrently -n 'cljs,tests' 'yarn build-watch:cljs' 'yarn test-unit-keep-cljs --watch'",
"test-timezones-unit": "yarn build: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 --host 0.0.0.0",
"build-release:js": "yarn && WEBPACK_BUNDLE=production webpack --bail",
"build-release:cljs": "yarn && rm -rf frontend/src/cljs_release/* && shadow-cljs release app",
"build:cljs": "yarn && rm -rf frontend/src/cljs/* && shadow-cljs compile app",
"build-watch:cljs": "yarn && shadow-cljs watch app",
"build-hot:cljs": "yarn && 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.30.0 -d cider/piggieback:0.5.3 -d refactor-nrepl:3.6.0",
"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-release": "yarn build-release:cljs && yarn build-release:js",
"build-stats": "yarn && webpack --json > stats.json",
"build-shared": "yarn && webpack --config webpack.shared.config.js",
"build-static-viz": "yarn && yarn build-release:cljs && webpack --config webpack.static-viz.config.js",
"build-static-viz:watch": "webpack --config webpack.static-viz.config.js --watch",
"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 lint-eslint --fix",
"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 ./e2e/runner/run_cypress_tests.js",
"test-cypress-open": "./bin/build-for-test && yarn test-cypress-run --e2e --open",
"test-cypress-open-qa": "yarn test-qa-dbs:up && QA_DB_ENABLED=true TZ='US/Pacific' yarn test-cypress-open",
"test-cypress-open-no-backend": "E2E_HOST='http://localhost:3000' yarn test-cypress-run --e2e --open",
"test-cypress": "yarn build && ./bin/build-for-test && yarn test-cypress-run",
"test-qa-dbs:up": "docker-compose -f ./e2e/test/scenarios/docker-compose.yml up -d",
"test-qa-dbs:down": "docker-compose -f ./e2e/test/scenarios/docker-compose.yml down",
"validate-e2e-filenames": "node e2e/validate-e2e-test-files.js",
"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 \"./e2e/test/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": "yarn build:cljs && start-storybook -p 6006",
"build-storybook": "yarn build:cljs && build-storybook",
"chromatic": "yarn build:cljs && chromatic",
"docs-lint-links": "find docs -type f -name '*.md' -print0 | xargs -0 markdown-link-check --quiet --config .mlc_config.json"
},
"lint-staged": {
"+(enterprise|frontend)/**/*.css": [
"prettier --write"
],
"+(enterprise|frontend)/**/*.{js,jsx,ts,tsx}": [
"eslint --rulesdir frontend/lint/eslint-rules --max-warnings 0 --fix",
"prettier --write",
"node ./bin/verify-doc-links"
],
"e2e/**/*.{js,jsx,ts,jsx}": [
"eslint --rulesdir frontend/lint/eslint-rules --max-warnings 0 --fix",
"prettier --write"
],
"e2e/test/scenarios/*/{*.js,!(helpers|shared)/*.js}": [
"eslint --rulesdir frontend/lint/eslint-rules --max-warnings 0 --fix",
"node e2e/validate-e2e-test-files.js"
]
},
"browserslist": [
"defaults"
]
}