{ "private": true, "scripts": { "start": "concurrently -n w: npm:start:*", "start:update": "ts-node -P tsconfig.back.json ./back/update.ts", "start:public": "ts-node -P tsconfig.back.json ./back/public.ts", "start:rpc": "ts-node -P tsconfig.back.json ./back/schedule/index.ts", "start:back": "nodemon", "start:front": "max dev", "build:front": "max build", "build:back": "tsc -p tsconfig.back.json", "panel": "npm run build:back && node static/build/app.js", "schedule": "npm run build:back && node static/build/schedule/index.js", "public": "npm run build:back && node static/build/public.js", "update": "npm run build:back && node static/build/update.js", "gen:proto": "protoc --experimental_allow_proto3_optional --plugin=./node_modules/.bin/protoc-gen-ts_proto ./back/protos/*.proto --ts_proto_out=./ --ts_proto_opt=outputServices=grpc-js,env=node,esModuleInterop=true", "prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,md,json}'", "postinstall": "max setup 2>/dev/null || true", "test": "umi-test", "test:coverage": "umi-test --coverage" }, "gitHooks": { "pre-commit": "lint-staged" }, "lint-staged": { "*.{js,jsx,less,md,json}": [ "prettier --write" ], "*.ts?(x)": [ "prettier --parser=typescript --write" ] }, "pnpm": { "peerDependencyRules": { "ignoreMissing": [ "react", "react-dom", "antd", "dva", "postcss", "webpack", "eslint", "stylelint", "redux", "@babel/core", "monaco-editor", "rc-field-form", "@types/lodash.merge", "rollup", "styled-components" ], "allowedVersions": { "react": "18", "react-dom": "18", "dva-core": "2" } } }, "dependencies": { "@grpc/grpc-js": "^1.8.13", "@otplib/preset-default": "^12.0.1", "@sentry/node": "^8.26.0", "body-parser": "^1.19.2", "celebrate": "^15.0.1", "chokidar": "^3.5.3", "cors": "^2.8.5", "cron-parser": "^4.2.1", "cross-spawn": "^7.0.3", "dayjs": "^1.11.2", "dotenv": "^16.0.0", "express": "^4.17.3", "express-jwt": "^6.1.1", "express-rate-limit": "^7.0.0", "express-urlrewrite": "^1.4.0", "form-data": "^4.0.0", "got": "^11.8.2", "hpagent": "^1.2.0", "http-proxy-middleware": "^2.0.6", "iconv-lite": "^0.6.3", "js-yaml": "^4.1.0", "jsonwebtoken": "^8.5.1", "lodash": "^4.17.21", "multer": "1.4.5-lts.1", "nedb": "^1.8.0", "node-schedule": "^2.1.0", "nodemailer": "^6.7.2", "p-queue-cjs": "7.3.4", "protobufjs": "^7.3.0", "pstree.remy": "^1.1.8", "reflect-metadata": "^0.1.13", "sequelize": "^6.25.5", "serve-handler": "^6.1.3", "sockjs": "^0.3.24", "sqlite3": "git+https://github.com/whyour/node-sqlite3.git#v1.0.3", "toad-scheduler": "^1.6.0", "typedi": "^0.10.0", "uuid": "^8.3.2", "winston": "^3.6.0", "winston-daily-rotate-file": "^4.7.1", "yargs": "^17.3.1", "tough-cookie": "^4.0.0", "request-ip": "3.3.0", "ip2region": "2.3.0" }, "devDependencies": { "moment": "2.30.1", "@ant-design/icons": "^4.7.0", "@ant-design/pro-layout": "6.38.22", "@monaco-editor/react": "4.2.1", "@react-hook/resize-observer": "^1.2.6", "react-router-dom": "6.26.1", "@sentry/react": "^8.26.0", "@types/body-parser": "^1.19.2", "@types/cors": "^2.8.12", "@types/cross-spawn": "^6.0.2", "@types/express": "^4.17.13", "@types/express-jwt": "^6.0.4", "@types/file-saver": "2.0.2", "@types/js-yaml": "^4.0.5", "@types/jsonwebtoken": "^8.5.8", "@types/lodash": "^4.14.185", "@types/multer": "^1.4.7", "@types/nedb": "^1.8.12", "@types/node": "^17.0.21", "@types/node-schedule": "^1.3.2", "@types/nodemailer": "^6.4.4", "@types/qrcode.react": "^1.0.2", "@types/react": "^18.0.20", "@types/react-copy-to-clipboard": "^5.0.4", "@types/react-dom": "^18.0.6", "@types/serve-handler": "^6.1.1", "@types/sockjs": "^0.3.33", "@types/sockjs-client": "^1.5.1", "@types/uuid": "^8.3.4", "@types/request-ip": "0.0.41", "@uiw/codemirror-extensions-langs": "^4.21.9", "@uiw/react-codemirror": "^4.21.9", "@umijs/max": "^4.0.72", "@umijs/ssr-darkreader": "^4.9.45", "ahooks": "^3.7.8", "ansi-to-react": "^6.1.6", "antd": "^4.24.8", "antd-img-crop": "^4.2.3", "axios": "^1.4.0", "compression-webpack-plugin": "9.2.0", "concurrently": "^7.0.0", "react-hotkeys-hook": "^4.4.1", "file-saver": "2.0.2", "lint-staged": "^13.0.3", "monaco-editor": "0.33.0", "nodemon": "^3.0.1", "prettier": "^2.5.1", "pretty-bytes": "6.1.1", "qiniu": "^7.4.0", "qrcode.react": "^1.0.1", "query-string": "^7.1.1", "rc-tween-one": "^3.0.6", "rc-virtual-list": "3.5.3", "react": "18.2.0", "react-copy-to-clipboard": "^5.1.0", "react-diff-viewer": "^3.1.1", "react-dnd": "^14.0.2", "react-dnd-html5-backend": "^14.0.0", "react-dom": "18.2.0", "react-intl-universal": "^2.6.21", "react-split-pane": "^0.1.92", "sockjs-client": "^1.6.0", "ts-node": "^10.9.2", "ts-proto": "^1.146.0", "tslib": "^2.4.0", "typescript": "5.2.2", "vh-check": "^2.0.5", "virtualizedtableforantd4": "1.3.0", "webpack": "^5.70.0", "yorkie": "^2.0.0" } }