-
Alexander Polyankin authoredAlexander Polyankin 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 16.06 KiB
{
"name": "metabase",
"private": true,
"version": "0.0.0",
"description": "Metabase Analytics Report Server",
"repository": "https://github.com/metabase/metabase",
"license": "private",
"engines": {
"node": ">=18",
"yarn": "^1.12.3"
},
"dependencies": {
"@dnd-kit/core": "^6.0.8",
"@dnd-kit/modifiers": "^6.0.1",
"@dnd-kit/sortable": "^7.0.2",
"@emotion/cache": "^11.7.1",
"@emotion/is-prop-valid": "^1.1.1",
"@emotion/react": "^11.7.1",
"@emotion/styled": "^11.6.0",
"@mantine/core": "^6.0.13",
"@mantine/hooks": "^6.0.13",
"@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",
"lodash.debounce": "^4.0.8",
"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": "^3.0.5",
"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",
"tether": "^1.2.0",
"tippy.js": "^6.3.5",
"ttag": "1.7.21",
"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.8.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",
"@replayio/cypress": "^1.0.5",
"@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/blocks": "^7.0.18",
"@storybook/builder-webpack5": "6.5.15",
"@storybook/client-api": "6.5.15",
"@storybook/manager-webpack5": "6.5.15",
"@storybook/react": "6.5.15",
"@svgr/webpack": "^8.0.1",
"@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": "^13.1.3",
"@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": "^3.0.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/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.32.2",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-testing-library": "^5.11.0",
"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.5.0",
"jest-canvas-mock": "^2.4.0",
"jest-environment-jsdom": "^29.5.0",
"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.24.0",
"source-map-loader": "^4.0.1",
"terser-webpack-plugin": "^5.3.9",
"typescript": "^4.7.2",
"webpack": "^5.85.0",
"webpack-cli": "^5.1.1",
"webpack-dev-server": "^4.15.0",
"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",
"jsdom": "^22.1.0",
"json5": "2.2.2"
},
"scripts": {
"concurrently": "yarn && concurrently --kill-others -p name",
"dev": "yarn && yarn clean:cljs && yarn build:cljs && 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 && yarn clean:cljs && yarn build:cljs && 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": "yarn clean:cljs && 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 --report-unused-disable-directives 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 && NODE_OPTIONS=--max-old-space-size=8196 webpack --bail",
"build-watch:js": "yarn && NODE_OPTIONS=--max-old-space-size=8196 webpack --watch",
"build-hot:js": "yarn && NODE_OPTIONS=--max-old-space-size=8196 WEBPACK_BUNDLE=hot webpack serve --host 0.0.0.0",
"build-release:js": "yarn && WEBPACK_BUNDLE=production NODE_OPTIONS=--max-old-space-size=8196 webpack --bail",
"build-release:cljs": "yarn && yarn clean-release:cljs && shadow-cljs release app",
"build:cljs": "yarn && yarn clean-dev: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/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:cljs": "yarn && yarn clean-dev:cljs && yarn clean-release:cljs",
"clean-dev:cljs": "rm -rf frontend/src/cljs/*",
"clean-release:cljs": "rm -rf frontend/src/cljs_release/*",
"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 && NODE_OPTIONS=--max-old-space-size=8196 build-storybook",
"chromatic": "yarn build:cljs && NODE_OPTIONS=--max-old-space-size=8196 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"
]
}