-
Nemanja Glumac authored
* Upgrade Cypress grep library to its latest version * Add Cypress grep types to our E2E TS config * PoC: Convert existing JS Cypress spec to TS
Nemanja Glumac authored* Upgrade Cypress grep library to its latest version * Add Cypress grep types to our E2E TS config * PoC: Convert existing JS Cypress spec to TS
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 17.17 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": "^8.0.0",
"@emotion/cache": "^11.10.5",
"@emotion/is-prop-valid": "^1.1.1",
"@emotion/react": "^11.10.5",
"@emotion/styled": "^11.10.5",
"@mantine/core": "^6.0.13",
"@mantine/dates": "^6.0.13",
"@mantine/hooks": "^6.0.13",
"@react-oauth/google": "^0.11.1",
"@reduxjs/toolkit": "^1.9.3",
"@snowplow/browser-tracker": "^3.1.6",
"@tanstack/react-virtual": "^3.1.2",
"@tippyjs/react": "^4.2.6",
"@types/redux-auth-wrapper": "^2.0.16",
"@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": "^4.2.3",
"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",
"dayjs": "^1.10.4",
"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",
"immer": "^9.0.17",
"inflection": "^1.7.1",
"js-cookie": "^2.1.2",
"jspdf": "^2.5.1",
"jsrsasign": "^11.0.0",
"leaflet": "^1.2.0",
"leaflet-draw": "^0.4.9",
"leaflet.heat": "^0.2.0",
"lodash.debounce": "^4.0.8",
"lodash.orderby": "^4.6.0",
"moment-timezone": "^0.5.38",
"mustache": "^2.3.2",
"normalizr": "^3.0.2",
"number-to-locale-string": "^1.0.1",
"password-generator": "^2.0.1",
"postcss-discard-comments": "^6.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-grid-layout": "^1.2.5",
"react-innertext": "^1.1.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": "^2.1.0",
"redux-promise": "^0.5.0",
"regenerator-runtime": "^0.14.1",
"rehype-external-links": "^2.0.1",
"remark-gfm": "1.0.0",
"reselect": "^5.1.0",
"screenfull": "^4.2.1",
"server-text-width": "^1.0.2",
"simple-statistics": "^3.0.0",
"slugg": "^1.2.1",
"sql-formatter": "^15.1.2",
"tether": "^1.2.0",
"tippy.js": "^6.3.5",
"ttag": "1.7.21",
"underscore": "~1.13.3",
"yup": "^0.32.11",
"z-index": "0.0.1"
},
"devDependencies": {
"@babel/cli": "^7.23.0",
"@babel/core": "^7.23.3",
"@babel/node": "^7.22.19",
"@babel/preset-env": "^7.23.3",
"@babel/preset-react": "^7.23.3",
"@babel/preset-typescript": "^7.23.3",
"@bahmutov/cypress-esbuild-preprocessor": "^2.2.0",
"@cypress/grep": "^4.0.1",
"@cypress/skip-test": "^2.6.1",
"@emotion/babel-plugin": "^11.11.0",
"@esbuild-plugins/node-modules-polyfill": "^0.2.2",
"@percy/cli": "^1.27.2",
"@percy/cypress": "^3.1.2",
"@pmmmwh/react-refresh-webpack-plugin": "0.5.10",
"@replayio/cypress": "^1.7.15",
"@sinonjs/fake-timers": "^9.1.2",
"@storybook/addon-a11y": "^6.5.16",
"@storybook/addon-actions": "6.5.16",
"@storybook/addon-essentials": "6.5.16",
"@storybook/addon-links": "6.5.16",
"@storybook/blocks": "^7.0.18",
"@storybook/builder-webpack5": "6.5.16",
"@storybook/manager-webpack5": "6.5.16",
"@storybook/react": "6.5.16",
"@svgr/webpack": "^8.0.1",
"@swc/core": "^1.3.99",
"@testing-library/cypress": "^9.0.0",
"@testing-library/dom": "^7.29.0",
"@testing-library/jest-dom": "^6.1.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.20.4",
"@types/babel__preset-env": "^7.9.5",
"@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": "^10.5.12",
"@types/leaflet": "^1.7.5",
"@types/leaflet-draw": "^0.4.14",
"@types/leaflet.heat": "^0.2.1",
"@types/lodash.clonedeep": "^4.5.9",
"@types/lodash.debounce": "^4.0.9",
"@types/lodash.orderby": "^4.6.9",
"@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-logger": "^3.0.9",
"@types/redux-promise": "^0.5.29",
"@types/testing-library__jest-dom": "^5.14.5",
"@types/tether": "^1.4.6",
"@types/underscore": "^1.11.3",
"@typescript-eslint/eslint-plugin": "^6.21.0",
"@typescript-eslint/parser": "^6.21.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": "^10.2.0",
"concurrently": "^7.6.0",
"cross-fetch": "^3.1.5",
"css-loader": "^6.10.0",
"cypress": "13.6.1",
"cypress-multi-reporters": "^1.6.4",
"cypress-real-events": "^1.11.0",
"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.29.1",
"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-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-junit": "^16.0.0",
"jest-localstorage-mock": "^2.4.22",
"jest-watch-typeahead": "^2.2.1",
"json-to-pretty-yaml": "^1.2.2",
"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",
"mocha": "^10.2.0",
"mocha-junit-reporter": "^2.2.1",
"mochawesome": "^7.1.3",
"mochawesome-merge": "^4.2.1",
"mochawesome-report-generator": "^6.2.0",
"mockdate": "^2.0.2",
"mutationobserver-shim": "^0.3.7",
"mysql2": "^3.6.3",
"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.27.4",
"source-map-loader": "^4.0.1",
"stylelint": "^16.2.1",
"stylelint-config-css-modules": "^4.4.0",
"stylelint-config-standard": "^36.0.0",
"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",
"webpack-stats-plugin": "^1.1.3",
"xlsx": "^0.18.5",
"yaml-lint": "~1.6.0"
},
"resolutions": {
"ansi-html": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
"ansi-regex": "5.0.1",
"d3-color": "^3.1.0",
"debug": "^4.3.4",
"follow-redirects": "^1.15.5",
"jsdom": "^22.1.0",
"json5": "2.2.2",
"nth-check": "2.0.1",
"set-value": "4.0.1",
"source-map-js": "git+https://github.com/7rulnik/source-map-js#6e5dfccf75f84f619d3646188aef7ef7cf8f6376",
"unset-value": "2.0.1"
},
"scripts": {
"build": "yarn build:cljs && yarn build:js",
"build-hot": "rm -f target/cljs_dev/cljs.core.js && yarn concurrently -n 'cljs,js' -c 'yellow,green' 'yarn build-hot:cljs' 'yarn build-hot:js-wait'",
"build-hot:cljs": "yarn && shadow-cljs watch app",
"build-hot:js": "yarn && NODE_OPTIONS=--max-old-space-size=8196 WEBPACK_BUNDLE=hot webpack serve --host 0.0.0.0",
"build-hot:js-wait": "yarn wait:cljs; yarn build-hot:js",
"build-pure:cljs": "yarn clean-dev:cljs && shadow-cljs compile app",
"build-release": "yarn build-release:cljs && yarn build-release:js",
"build-release:cljs": "yarn && yarn clean-release:cljs && shadow-cljs release app",
"build-release:js": "yarn && WEBPACK_BUNDLE=production NODE_OPTIONS=--max-old-space-size=8196 webpack --bail",
"build-shared": "yarn && webpack --config webpack.shared.config.js",
"build-static-viz": "yarn && yarn build-release:cljs && WEBPACK_BUNDLE=production webpack --config webpack.static-viz.config.js",
"build-static-viz:watch": "webpack --config webpack.static-viz.config.js --watch",
"build-static-viz:watch-wait": "yarn wait:cljs; yarn build-static-viz:watch",
"build-stats": "yarn && webpack --json > stats.json",
"build-storybook": "NODE_ENV=development yarn build:cljs && NODE_OPTIONS=--max-old-space-size=8196 build-storybook",
"build-watch": "yarn concurrently -n 'cljs,js' 'yarn build-watch:cljs' 'yarn build-watch:js'",
"build-watch:cljs": "yarn && shadow-cljs watch app",
"build-watch:js": "yarn && NODE_OPTIONS=--max-old-space-size=8196 webpack --watch",
"build:cljs": "yarn && yarn build-pure:cljs",
"build:js": "yarn && NODE_OPTIONS=--max-old-space-size=8196 webpack --bail",
"chromatic": "yarn build:cljs && NODE_OPTIONS=--max-old-space-size=8196 chromatic",
"ci": "yarn ci-frontend && yarn ci-backend",
"ci-backend": "clojure -X:dev:ee:ee-dev:drivers:drivers-dev:eastwood && clojure -X:dev:test",
"ci-frontend": "yarn lint && yarn test",
"clean-cypress-artifacts": "rm -R -f cypress/",
"clean-dev:cljs": "rm -rf target/cljs_dev/*",
"clean-release:cljs": "rm -rf target/cljs_release/*",
"clean:cljs": "yarn && yarn clean-dev:cljs && yarn clean-release:cljs",
"cljs-nrepl": "yarn && shadow-cljs node-repl -d cider/cider-nrepl:0.45.0 -d cider/piggieback:0.5.3 -d refactor-nrepl/refactor-nrepl:3.9.1",
"cljs-server-restart": "yarn && shadow-cljs restart",
"cljs-server-start": "yarn && shadow-cljs start",
"cljs-server-stop": "yarn && shadow-cljs stop",
"concurrently": "yarn && concurrently --kill-others -p name",
"dev": "yarn && yarn clean:cljs && concurrently -n 'backend,frontend,cljs,static-viz' -c 'blue,green,yellow,magenta,red' 'clojure -M:run' 'yarn build-hot:js-wait' 'yarn build-hot:cljs' 'yarn build-static-viz:watch-wait'",
"dev-ee": "yarn && yarn clean: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-wait' 'MB_EDITION=ee yarn build-hot:cljs' 'yarn build-static-viz:watch-wait'",
"docs-lint-links": "find docs -type f -name '*.md' -print0 | xargs -0 markdown-link-check --quiet --config .mlc_config.json",
"eslint-fix": "yarn lint-eslint --fix",
"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",
"lint": "yarn lint-eslint && yarn lint-prettier && yarn lint-docs-links && yarn lint-yaml && yarn type-check",
"lint-docs-links": "yarn && ./bin/verify-doc-links",
"lint-eslint": "yarn build:cljs && yarn lint-eslint-pure",
"lint-eslint-pure": "eslint --ext .js,.jsx,.ts,.tsx --rulesdir frontend/lint/eslint-rules --max-warnings 0 --report-unused-disable-directives enterprise/frontend frontend e2e",
"lint-prettier": "yarn && yarn lint-prettier-pure",
"lint-prettier-pure": "prettier --check '{frontend,enterprise/frontend,e2e}/**/*.{js,jsx,ts,tsx,css}'",
"lint-yaml": "yamllint **/*.{yaml,yml} --ignore=node_modules/**/*.{yaml,yml}",
"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'",
"prepare": "husky install",
"prettier": "prettier --write '{frontend,enterprise/frontend,e2e}/**/*.{js,jsx,ts,tsx,css}'",
"remove-webpack-cache": "rm -rf ./node_modules/.cache",
"storybook": "yarn build:cljs && start-storybook -p 6006",
"test": "yarn test-unit && yarn test-timezones && yarn test-cypress",
"test-cljs": "yarn && shadow-cljs compile test && node target/node-tests.js",
"test-cypress": "yarn build && ./bin/build-for-test && yarn test-cypress-run",
"test-cypress-open": "./bin/build-for-test && CYPRESS_FE_HEALTHCHECK=false yarn test-cypress-run --e2e --open",
"test-cypress-open-no-backend": "E2E_HOST='http://localhost:3000' 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-run": "node ./e2e/runner/run_cypress_tests.js",
"test-debug": "yarn build:cljs && node --inspect-brk node_modules/.bin/jest --runInBand --detectOpenHandles",
"test-qa-dbs:down": "docker-compose -f ./e2e/test/scenarios/docker-compose.yml down",
"test-qa-dbs:up": "docker-compose -f ./e2e/test/scenarios/docker-compose.yml up -d",
"test-timezones": "yarn && ./frontend/test/__runner__/run_timezone_tests",
"test-timezones-unit": "yarn build:cljs && jest --silent --maxWorkers=2 --config jest.tz.unit.conf.json",
"test-unit": "yarn build:cljs && jest --maxWorkers=2",
"test-unit-keep-cljs": "jest --maxWorkers=2",
"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-visual": "yarn build && ./bin/build-for-test && yarn test-visual-run",
"test-visual-open": "percy exec -- yarn test-cypress-open",
"test-visual-run": "percy exec -- yarn test-cypress-run --spec \"./e2e/test/visual/**/*.cy.spec.js\"",
"type-check": "yarn clean:cljs && yarn build:cljs && yarn type-check-pure",
"type-check-pure": "tsc --noEmit",
"validate-e2e-filenames": "node e2e/validate-e2e-test-files.js",
"wait:cljs": "echo Waiting for first CLJS build; until [ -f target/cljs_dev/cljs.core.js ]; do sleep 1; done; echo CLJS build done"
},
"lint-staged": {
"+(frontend|enterprise/frontend|e2e)/**/*.css": [
"stylelint --fix",
"prettier --write"
],
"+(frontend|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|ts),!(helpers|shared)/*.(js|ts)}": [
"node e2e/validate-e2e-test-files.js"
],
"**/*.{clj,cljc,cljs,bb}": [
"clj-kondo --config ./.clj-kondo/config.edn --config-dir ./.clj-kondo --parallel --lint",
"./bin/whitespace_lint_staged.sh"
]
},
"browserslist": [
"defaults"
]
}