{
"name": "redisinsight",
"productName": "Redis Insight",
"description": "Redis Insight",
"license": "SSPL",
"private": true,
"scripts": {
"dev:ui": "cross-env npm run dev --prefix redisinsight/ui",
"dev:ui:coverage": "cross-env COLLECT_COVERAGE=true npm run dev --prefix redisinsight/ui",
"dev:api": "cross-env npm run start:dev --prefix redisinsight/api",
"dev:electron:ui": "cross-env RI_APP_PORT=8080 RI_APP_TYPE=ELECTRON NODE_ENV=development npm run dev --prefix redisinsight/ui",
"dev:electron:api": "cross-env RI_APP_PORT=5540 RI_APP_TYPE=ELECTRON NODE_ENV=development USE_TCP_CLOUD_AUTH=true npm run start:dev --prefix redisinsight/api",
"dev:electron": "cross-env RI_APP_TYPE=ELECTRON RI_AUTO_BOOTSTRAP=false NODE_ENV=development USE_TCP_CLOUD_AUTH=true npm run dev --prefix redisinsight/desktop",
"dev:desktop": "concurrently \"npm run dev:electron:api\" \"npm run dev:electron:ui\" \"npm run dev:electron\"",
"build:ui": "cross-env NODE_ENV=production RI_APP_TYPE=web npm run build --prefix redisinsight/ui",
"build:renderer": "cross-env NODE_ENV=production RI_APP_TYPE=ELECTRON npm run build --prefix redisinsight/ui -- --emptyOutDir && copyfiles ./redisinsight/desktop/splash.html ./redisinsight/dist/renderer -f",
"stats:ui": "npm run stats --prefix redisinsight/ui",
"build": "cross-env NODE_ENV=development concurrently \"npm run build:main\" \"npm run build:renderer\"",
"build:stage": "cross-env NODE_ENV=staging TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=./configs/tsconfig.json concurrently \"npm run build:api:stage && npm run build:main:stage\" \"npm run build:renderer\"",
"build:prod": "cross-env NODE_ENV=production concurrently \"npm run build:api && npm run build:main\" \"npm run build:renderer\"",
"build:api": "npm run build:prod --prefix redisinsight/api",
"build:api:stage": "npm run build:stage --prefix redisinsight/api",
"build:main": "cross-env NODE_ENV=production TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=./configs/tsconfig.json webpack --config ./configs/webpack.config.main.prod.ts",
"build:main:stage": "cross-env TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=./configs/tsconfig.json webpack --config ./configs/webpack.config.main.stage.ts",
"build:defaults": "npm run build:defaults --prefix redisinsight/api",
"generate:api-client": "node ./scripts/generate-api-client.js",
"i18n:extract": "i18next-cli extract",
"i18n:check": "node ./scripts/check-i18n-locales.js",
"build:statics": "npm run build:defaults && sh ./scripts/build-statics.sh",
"build:statics:win": "npm run build:defaults && .\\scripts\\build-statics.cmd",
"rebuild": "electron-rebuild --parallel --types prod,dev,optional --module-dir redisinsight",
"lint": "eslint . --ext .js,.jsx,.ts,.tsx --cache --cache-strategy content",
"lint:ui": "eslint ./redisinsight/ui --ext .js,.jsx,.ts,.tsx --cache --cache-strategy content",
"lint:api": "eslint ./redisinsight/api --ext .js,.ts --cache --cache-strategy content",
"lint:desktop": "eslint ./redisinsight/desktop --cache --cache-strategy content",
"prettier": "prettier --check .",
"prettier:update": "prettier --write .",
"prettier:fix": "prettier --write",
"package": "npm run package:dev",
"package:prod": "node ./scripts/prebuild.js dist && npm run build:prod && electron-builder build -p never",
"package:stage": "node ./scripts/prebuild.js dist && npm run build:stage && electron-builder build -p never -c.mac.bundleVersion=$GITHUB_RUN_ID",
"package:mas": "electron-builder build -p never -m mas:universal -c.mac.bundleVersion=$GITHUB_RUN_ID -c ./electron-builder-mas.js",
"package:mas:dev": "electron-builder build -p never -m mas-dev:universal -c ./electron-builder-mas.js",
"package:dev": "npm run build && cross-env DEBUG=electron-builder electron-builder build -p never",
"package:win": "npm run build:prod && electron-builder build --win --x64 -p never",
"package:mac": "npm run build:prod && electron-builder build --mac -p never",
"package:mac:arm": "npm run build:prod && electron-builder build --mac --arm64 -p never",
"package:linux": "npm run build:prod && electron-builder build --linux -p never",
"postinstall": "patch-package && vite optimize -c ./redisinsight/ui/vite.config.mjs",
"test": "jest -w 1",
"test:api": "npm run test --prefix redisinsight/api",
"test:api:integration": "npm run test:api --prefix redisinsight/api",
"test:watch": "jest --watch -w 1",
"test:cov": "cross-env NODE_OPTIONS='' jest --testLocationInResults --json --outputFile=\"report/coverage/report.json\" --silent --coverage --no-cache --forceExit -w 3",
"test:cov:unit": "jest --group=-component --coverage -w 1",
"test:cov:component": "jest --group=component --coverage -w 1",
"type-check": "npm run type-check --prefix redisinsight/ui && npm run type-check --prefix redisinsight/api && npm run type-check --prefix redisinsight/desktop && tsc --project configs/tsconfig.json --noEmit",
"tscheck": "npm run tscheck --prefix redisinsight/ui && npm run tscheck --prefix redisinsight/api && npm run tscheck --prefix redisinsight/desktop",
"tscheck:force": "npm run tscheck:force --prefix redisinsight/ui && npm run tscheck:force --prefix redisinsight/api && npm run tscheck:force --prefix redisinsight/desktop",
"sb": "storybook dev -p 6006",
"build-sb": "storybook build",
"deps:audit": "node scripts/dependency-audit-report.mjs",
"test:scripts": "node --test scripts/lib/*.test.mjs",
"test:security": "node --import tsx --test tests/security/*.test.mts"
},
"lint-staged": {
"*.{js,jsx,ts,tsx}": [
"eslint --cache"
]
},
"build": {
"extends": "./electron-builder.json"
},
"repository": {
"type": "git",
"url": "git+https://github.com/RedisInsight/RedisInsight.git"
},
"author": {
"name": "Redis Ltd.",
"email": "support@redis.com",
"url": "https://redis.com/redis-enterprise/redis-insight"
},
"bugs": {
"url": "https://github.com/RedisInsight/RedisInsight/issues"
},
"keywords": [
"redisinsight",
"redis",
"electron",
"react",
"nest",
"typescript",
"sass",
"webpack",
"vite"
],
"homepage": "https://github.com/RedisInsight/RedisInsight#readme",
"overrides": {
"trim": "0.0.3",
"word-wrap": "1.2.4",
"semver": "7.7.4",
"eslint-plugin-sonarjs": {
"semver": "^7.8.5"
},
"rawproto": {
"protobufjs": "^7.6.5"
},
"@electron/notarize": "2.3.2",
"@elastic/eui": {
"prismjs": "~1.30.0"
},
"react-router-dom": {
"react-router": {
"path-to-regexp": "^1.9.0"
}
},
"form-data": "^4.0.6",
"@sentry/core": "10.73.0",
"@types/react": "18.2.1",
"@types/react-dom": "18.2.1"
},
"devDependencies": {
"@aivenio/tsc-output-parser": "2.1.1",
"@babel/plugin-proposal-decorators": "^7.29.7",
"@babel/preset-env": "^7.29.7",
"@babel/preset-react": "^7.29.7",
"@babel/preset-typescript": "^7.29.7",
"@electron/rebuild": "^4.2.0",
"@faker-js/faker": "^8.4.1",
"@pmmmwh/react-refresh-webpack-plugin": "^0.6.3",
"@sentry/vite-plugin": "^5.4.0",
"@sentry/webpack-plugin": "^5.4.0",
"@storybook/addon-a11y": "^9.1.19",
"@storybook/addon-docs": "^9.1.11",
"@storybook/addon-links": "^9.1.11",
"@storybook/addon-themes": "^9.1.11",
"@storybook/react-vite": "^9.1.11",
"@svgr/webpack": "^8.1.0",
"@teamsupercell/typings-for-css-modules-loader": "^2.4.0",
"@testing-library/jest-dom": "^6.2.0",
"@testing-library/react": "^13.3.0",
"@testing-library/react-hooks": "^8.0.1",
"@testing-library/user-event": "^14.6.7",
"@types/classnames": "^2.3.4",
"@types/d3": "^7.4.3",
"@types/detect-port": "^1.3.5",
"@types/dompurify": "^3.2.0",
"@types/electron-store": "^3.2.0",
"@types/express": "^5.0.6",
"@types/file-saver": "^2.0.7",
"@types/html-entities": "^1.3.4",
"@types/ioredis": "^4.26.0",
"@types/is-glob": "^4.0.4",
"@types/jest": "^29.5.14",
"@types/js-yaml": "^4.0.9",
"@types/json-bigint": "^1.0.4",
"@types/lodash": "^4.17.25",
"@types/node": "14.18.63",
"@types/pako": "^2.0.4",
"@types/react": "18.2.1",
"@types/react-dom": "18.2.1",
"@types/react-router-dom": "^5.3.3",
"@types/react-virtualized": "^9.22.3",
"@types/react-window-infinite-loader": "^1.0.6",
"@types/segment-analytics": "^0.0.38",
"@types/semver": "^7.7.0",
"@types/styled-components": "^5.1.34",
"@types/supertest": "^2.0.8",
"@types/text-encoding": "^0.0.40",
"@types/webpack-env": "^1.18.8",
"@typescript-eslint/eslint-plugin": "^7.18.0",
"@typescript-eslint/parser": "^7.18.0",
"@vitejs/plugin-react": "^4.7.0",
"@vitejs/plugin-react-swc": "^3.6.0",
"assert": "^2.1.0",
"babel-preset-vite": "^1.1.3",
"concurrently": "^9.2.4",
"construct-style-sheets-polyfill": "^3.1.0",
"copyfiles": "^2.4.1",
"core-js": "^3.50.0",
"cross-env": "^7.0.2",
"css-loader": "^5.0.1",
"css-minimizer-webpack-plugin": "^8.0.0",
"csv-parser": "^3.2.1",
"csv-stringify": "^6.8.3",
"deep-object-diff": "^1.1.9",
"dotenv": "^16.4.5",
"electron": "^43.7.1",
"electron-builder": "26.16.1",
"electron-builder-notarize": "^1.5.2",
"electron-debug": "^3.2.0",
"electron-devtools-installer": "^3.2.1",
"esbuild-plugin-react-virtualized": "^1.0.6",
"eslint": "^8.57.1",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-airbnb-typescript": "^18.0.0",
"eslint-config-prettier": "^10.1.8",
"eslint-import-resolver-webpack": "^0.13.11",
"eslint-plugin-compat": "^6.2.1",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jest": "^28.9.0",
"eslint-plugin-jsx-a11y": "^6.10.2",
"eslint-plugin-prettier": "^5.5.6",
"eslint-plugin-promise": "^7.3.0",
"eslint-plugin-react": "^7.37.2",
"eslint-plugin-react-hooks": "^5.0.0",
"eslint-plugin-sonarjs": "^4.2.0",
"eslint-plugin-storybook": "^9.1.11",
"file-loader": "^6.0.0",
"fishery": "^2.4.0",
"google-auth-library": "^10.9.1",
"googleapis": "^125.0.0",
"html-webpack-plugin": "^5.6.8",
"i18next-cli": "^1",
"identity-obj-proxy": "^3.0.0",
"istanbul-lib-coverage": "^3.2.2",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"jest-fixed-jsdom": "^0.0.11",
"jest-html-reporters": "^3.1.7",
"jest-runner-groups": "^2.2.0",
"jest-watch-typeahead": "^2.2.2",
"jest-when": "^4.0.3",
"json-stable-stringify": "^1.3.0",
"license-checker": "^25.0.1",
"lint-staged": "^16.4.0",
"mini-css-extract-plugin": "2.10.2",
"moment": "^2.30.1",
"msw": "2.15.0",
"patch-package": "^8.0.1",
"prettier": "3.9.6",
"react-refresh": "^0.19.0",
"redux-mock-store": "^1.5.5",
"redux-thunk": "^3.1.0",
"regenerator-runtime": "^0.14.1",
"rimraf": "^3.0.2",
"sass": "npm:sass-embedded@1.75.0",
"socket.io-mock": "^1.3.2",
"source-map-support": "^0.5.19",
"storybook": "^9.1.19",
"style-loader": "^2.0.0",
"supertest": "^4.0.2",
"terser-webpack-plugin": "^5.6.1",
"text-encoding": "^0.7.0",
"ts-jest": "^29.4.12",
"ts-loader": "^9.6.2",
"ts-mockito": "^2.6.1",
"ts-node": "^10.9.2",
"tsconfig-paths": "^3.9.0",
"tsconfig-paths-webpack-plugin": "^4.2.0",
"tsx": "^4.23.13",
"typescript": "^4.0.5",
"url-loader": "^4.1.0",
"vite": "^6.4.3",
"vite-bundle-visualizer": "1.2.1",
"vite-plugin-compression2": "^2.5.3",
"vite-plugin-ejs": "^1.8.0",
"vite-plugin-electron": "^0.29.1",
"vite-plugin-electron-renderer": "^0.14.7",
"vite-plugin-istanbul": "^7.2.1",
"vite-plugin-react-click-to-component": "^3.0.0",
"vite-plugin-svgr": "^4.2.0",
"webpack": "^5.110.3",
"webpack-bundle-analyzer": "^4.10.2",
"webpack-cli": "^5.1.4",
"webpack-merge": "^5.10.0",
"whatwg-fetch": "^3.6.20"
},
"dependencies": {
"@elastic/datemath": "^5.0.3",
"@elastic/eui": "34.6.0",
"@redis-ui/components": "^44.0.2",
"@redis-ui/icons": "^6.9.3",
"@redis-ui/styles": "^15.0.0",
"@redis-ui/table": "^3.7.0",
"@reduxjs/toolkit": "^2.12.0",
"@sentry/electron": "^7.18.0",
"@sentry/react": "^10.73.0",
"@stablelib/snappy": "^1.0.3",
"@types/json-dup-key-validator": "^1.0.2",
"ajv": "^8.20.0",
"axios": "^1.20.0",
"brotli-dec-wasm": "^2.3.2",
"buffer": "^6.0.3",
"classnames": "^2.5.1",
"connection-string": "^4.4.0",
"d3": "^7.9.0",
"date-fns": "^3.6.0",
"date-fns-tz": "^3.2.0",
"dompurify": "^3.4.14",
"electron-context-menu": "^3.1.0",
"electron-log": "^4.2.4",
"electron-store": "^8.2.0",
"electron-updater": "^6.8.9",
"file-saver": "^2.0.5",
"formik": "^2.4.9",
"fzstd": "^0.1.1",
"get-port": "^7.2.0",
"html-entities": "^2.6.0",
"html-react-parser": "^1.2.4",
"i18next": "^23.16",
"java-object-serialization": "^0.1.2",
"js-yaml": "^4.3.2",
"json-bigint": "^1.0.0",
"json-dup-key-validator": "^1.0.3",
"jszip": "^3.10.1",
"lodash": "^4.18.1",
"lz4js": "^0.2.0",
"modern-normalize": "^3.0.1",
"monaco-editor": "^0.48.0",
"monaco-yaml": "^5.1.1",
"msgpackr": "^1.12.1",
"node-abi": "^4.35.0",
"pako": "^2.2.0",
"php-serialize": "^5.1.3",
"pickleparser": "^0.2.1",
"rawproto": "^0.7.15",
"react": "^18.3.1",
"react-contenteditable": "^3.3.5",
"react-dom": "^18.3.1",
"react-focus-on": "^3.10.2",
"react-hotkeys-hook": "^3.3.1",
"react-i18next": "^13.5",
"react-markdown": "^9.1.0",
"react-monaco-editor": "^0.59.0",
"react-redux": "^9.2.0",
"react-resizable-panels": "^3.0.6",
"react-rnd": "^10.5.3",
"react-router-dom": "^5.3.4",
"react-virtualized": "^9.22.2",
"react-virtualized-auto-sizer": "^1.0.26",
"react-vtree": "^3.0.0-beta.3",
"react-window": "^1.8.11",
"react-window-infinite-loader": "^1.0.10",
"redux": "^5.0.1",
"rehype-stringify": "^10.0.1",
"remark-gfm": "^4.0.1",
"remark-parse": "^11.0.0",
"remark-rehype": "^11.1.2",
"semver": "7.7.4",
"socket.io-client": "^4.8.3",
"styled-components": "^5.0.0",
"unified": "^11.0.5",
"unist-util-visit": "^5.0.0",
"url-parse": "^1.5.10",
"uuid": "^14.0.0"
},
"engines": {
"node": ">=24.x",
"npm": ">=11.10.0"
}
}