balibabu
commited on
Commit
·
aa396c5
1
Parent(s):
6943c52
feat: render message reference and add avatar to MessageItem (#73)
Browse files* feat: add temporary conversation
* feat: add avatar to MessageItem
* feat: render message reference
- web/package-lock.json +710 -9
- web/package.json +3 -0
- web/src/assets/svg/assistant.svg +25 -0
- web/src/hooks/userSettingHook.ts +22 -0
- web/src/interfaces/database/chat.ts +27 -1
- web/src/interfaces/database/userSetting.ts +21 -0
- web/src/layouts/components/header/index.tsx +10 -7
- web/src/layouts/components/user/index.tsx +9 -2
- web/src/pages/chat/chat-container/index.less +25 -2
- web/src/pages/chat/chat-container/index.tsx +110 -19
- web/src/pages/chat/hooks.ts +147 -68
- web/src/pages/chat/index.tsx +9 -9
- web/src/pages/chat/model.ts +5 -4
- web/src/pages/chat/utils.ts +5 -1
- web/src/pages/setting/model.ts +18 -13
web/package-lock.json
CHANGED
|
@@ -21,8 +21,11 @@
|
|
| 21 |
"react-chat-elements": "^12.0.13",
|
| 22 |
"react-i18next": "^14.0.0",
|
| 23 |
"react-infinite-scroll-component": "^6.1.0",
|
|
|
|
|
|
|
| 24 |
"umi": "^4.0.90",
|
| 25 |
"umi-request": "^1.4.0",
|
|
|
|
| 26 |
"uuid": "^9.0.1"
|
| 27 |
},
|
| 28 |
"devDependencies": {
|
|
@@ -2667,6 +2670,14 @@
|
|
| 2667 |
"@babel/types": "^7.20.7"
|
| 2668 |
}
|
| 2669 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2670 |
"node_modules/@types/eslint": {
|
| 2671 |
"version": "8.56.1",
|
| 2672 |
"resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.1.tgz",
|
|
@@ -2690,8 +2701,15 @@
|
|
| 2690 |
"node_modules/@types/estree": {
|
| 2691 |
"version": "1.0.5",
|
| 2692 |
"resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz",
|
| 2693 |
-
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
|
| 2694 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2695 |
},
|
| 2696 |
"node_modules/@types/glob": {
|
| 2697 |
"version": "7.2.0",
|
|
@@ -2716,6 +2734,14 @@
|
|
| 2716 |
"resolved": "https://registry.npmmirror.com/@types/hapi__joi/-/hapi__joi-17.1.9.tgz",
|
| 2717 |
"integrity": "sha512-oOMFT8vmCTFncsF1engrs04jatz8/Anwx3De9uxnOK4chgSEgWBvFtpSoJo8u3784JNO+ql5tzRR6phHoRnscQ=="
|
| 2718 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2719 |
"node_modules/@types/history": {
|
| 2720 |
"version": "5.0.0",
|
| 2721 |
"resolved": "https://registry.npmmirror.com/@types/history/-/history-5.0.0.tgz",
|
|
@@ -2787,6 +2813,14 @@
|
|
| 2787 |
"integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==",
|
| 2788 |
"dev": true
|
| 2789 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2790 |
"node_modules/@types/minimatch": {
|
| 2791 |
"version": "5.1.2",
|
| 2792 |
"resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-5.1.2.tgz",
|
|
@@ -2799,6 +2833,11 @@
|
|
| 2799 |
"integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==",
|
| 2800 |
"peer": true
|
| 2801 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2802 |
"node_modules/@types/node": {
|
| 2803 |
"version": "20.10.6",
|
| 2804 |
"resolved": "https://registry.npmmirror.com/@types/node/-/node-20.10.6.tgz",
|
|
@@ -2821,8 +2860,7 @@
|
|
| 2821 |
"node_modules/@types/prop-types": {
|
| 2822 |
"version": "15.7.11",
|
| 2823 |
"resolved": "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.11.tgz",
|
| 2824 |
-
"integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng=="
|
| 2825 |
-
"dev": true
|
| 2826 |
},
|
| 2827 |
"node_modules/@types/q": {
|
| 2828 |
"version": "1.5.8",
|
|
@@ -2834,7 +2872,6 @@
|
|
| 2834 |
"version": "18.2.46",
|
| 2835 |
"resolved": "https://registry.npmmirror.com/@types/react/-/react-18.2.46.tgz",
|
| 2836 |
"integrity": "sha512-nNCvVBcZlvX4NU1nRRNV/mFl1nNRuTuslAJglQsq+8ldXe5Xv0Wd2f7WTE3jOxhLH2BFfiZGC6GCp+kHQbgG+w==",
|
| 2837 |
-
"dev": true,
|
| 2838 |
"dependencies": {
|
| 2839 |
"@types/prop-types": "*",
|
| 2840 |
"@types/scheduler": "*",
|
|
@@ -2912,8 +2949,7 @@
|
|
| 2912 |
"node_modules/@types/scheduler": {
|
| 2913 |
"version": "0.16.8",
|
| 2914 |
"resolved": "https://registry.npmmirror.com/@types/scheduler/-/scheduler-0.16.8.tgz",
|
| 2915 |
-
"integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A=="
|
| 2916 |
-
"dev": true
|
| 2917 |
},
|
| 2918 |
"node_modules/@types/semver": {
|
| 2919 |
"version": "7.5.6",
|
|
@@ -2926,6 +2962,11 @@
|
|
| 2926 |
"integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==",
|
| 2927 |
"dev": true
|
| 2928 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2929 |
"node_modules/@types/use-sync-external-store": {
|
| 2930 |
"version": "0.0.3",
|
| 2931 |
"resolved": "https://registry.npmmirror.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
|
|
@@ -4364,8 +4405,7 @@
|
|
| 4364 |
"node_modules/@ungap/structured-clone": {
|
| 4365 |
"version": "1.2.0",
|
| 4366 |
"resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
|
| 4367 |
-
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
|
| 4368 |
-
"peer": true
|
| 4369 |
},
|
| 4370 |
"node_modules/@vitejs/plugin-react": {
|
| 4371 |
"version": "4.0.0",
|
|
@@ -5216,6 +5256,11 @@
|
|
| 5216 |
"@babel/core": "^7.0.0"
|
| 5217 |
}
|
| 5218 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5219 |
"node_modules/balanced-match": {
|
| 5220 |
"version": "1.0.2",
|
| 5221 |
"resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
|
|
@@ -5557,6 +5602,11 @@
|
|
| 5557 |
"resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001574.tgz",
|
| 5558 |
"integrity": "sha512-BtYEK4r/iHt/txm81KBudCUcTy7t+s9emrIaHqjYurQ10x71zJ5VQ9x1dYPcz/b+pKSp4y/v1xSI67A+LzpNyg=="
|
| 5559 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5560 |
"node_modules/chalk": {
|
| 5561 |
"version": "2.4.2",
|
| 5562 |
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
|
|
@@ -5570,6 +5620,26 @@
|
|
| 5570 |
"node": ">=4"
|
| 5571 |
}
|
| 5572 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5573 |
"node_modules/chokidar": {
|
| 5574 |
"version": "3.5.3",
|
| 5575 |
"resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
|
|
@@ -5777,6 +5847,11 @@
|
|
| 5777 |
"node": ">= 0.8"
|
| 5778 |
}
|
| 5779 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5780 |
"node_modules/commander": {
|
| 5781 |
"version": "8.3.0",
|
| 5782 |
"resolved": "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz",
|
|
@@ -6588,6 +6663,14 @@
|
|
| 6588 |
"node": ">=0.10.0"
|
| 6589 |
}
|
| 6590 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6591 |
"node_modules/decode-uri-component": {
|
| 6592 |
"version": "0.2.2",
|
| 6593 |
"resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
|
|
@@ -6772,6 +6855,14 @@
|
|
| 6772 |
"node": ">=0.4.0"
|
| 6773 |
}
|
| 6774 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6775 |
"node_modules/des.js": {
|
| 6776 |
"version": "1.1.0",
|
| 6777 |
"resolved": "https://registry.npmmirror.com/des.js/-/des.js-1.1.0.tgz",
|
|
@@ -6845,6 +6936,14 @@
|
|
| 6845 |
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
|
| 6846 |
"dev": true
|
| 6847 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6848 |
"node_modules/diffie-hellman": {
|
| 6849 |
"version": "5.0.3",
|
| 6850 |
"resolved": "https://registry.npmmirror.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
|
|
@@ -7981,6 +8080,11 @@
|
|
| 7981 |
"node": ">=4.0"
|
| 7982 |
}
|
| 7983 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7984 |
"node_modules/esutils": {
|
| 7985 |
"version": "2.0.3",
|
| 7986 |
"resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz",
|
|
@@ -8129,6 +8233,11 @@
|
|
| 8129 |
"integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
|
| 8130 |
"dev": true
|
| 8131 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8132 |
"node_modules/extend-shallow": {
|
| 8133 |
"version": "3.0.2",
|
| 8134 |
"resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
|
|
@@ -9038,6 +9147,36 @@
|
|
| 9038 |
"node": ">= 0.4"
|
| 9039 |
}
|
| 9040 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9041 |
"node_modules/he": {
|
| 9042 |
"version": "1.2.0",
|
| 9043 |
"resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
|
|
@@ -9203,6 +9342,11 @@
|
|
| 9203 |
"node": ">=8"
|
| 9204 |
}
|
| 9205 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9206 |
"node_modules/html-webpack-plugin": {
|
| 9207 |
"version": "5.5.0",
|
| 9208 |
"resolved": "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz",
|
|
@@ -9400,6 +9544,11 @@
|
|
| 9400 |
"resolved": "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz",
|
| 9401 |
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
|
| 9402 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9403 |
"node_modules/insert-css": {
|
| 9404 |
"version": "2.0.0",
|
| 9405 |
"resolved": "https://registry.npmmirror.com/insert-css/-/insert-css-2.0.0.tgz",
|
|
@@ -9471,6 +9620,20 @@
|
|
| 9471 |
"node": ">= 0.10"
|
| 9472 |
}
|
| 9473 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9474 |
"node_modules/is-arguments": {
|
| 9475 |
"version": "1.1.1",
|
| 9476 |
"resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz",
|
|
@@ -9596,6 +9759,11 @@
|
|
| 9596 |
"node": ">= 0.4"
|
| 9597 |
}
|
| 9598 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9599 |
"node_modules/is-descriptor": {
|
| 9600 |
"version": "1.0.3",
|
| 9601 |
"resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.3.tgz",
|
|
@@ -9710,6 +9878,11 @@
|
|
| 9710 |
"node": ">=0.10.0"
|
| 9711 |
}
|
| 9712 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9713 |
"node_modules/is-inside-container": {
|
| 9714 |
"version": "1.0.0",
|
| 9715 |
"resolved": "https://registry.npmmirror.com/is-inside-container/-/is-inside-container-1.0.0.tgz",
|
|
@@ -10779,6 +10952,11 @@
|
|
| 10779 |
"integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==",
|
| 10780 |
"dev": true
|
| 10781 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10782 |
"node_modules/loose-envify": {
|
| 10783 |
"version": "1.4.0",
|
| 10784 |
"resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz",
|
|
@@ -10882,6 +11060,119 @@
|
|
| 10882 |
"safe-buffer": "^5.1.2"
|
| 10883 |
}
|
| 10884 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10885 |
"node_modules/mdn-data": {
|
| 10886 |
"version": "2.0.14",
|
| 10887 |
"resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz",
|
|
@@ -10934,6 +11225,217 @@
|
|
| 10934 |
"node": ">= 8"
|
| 10935 |
}
|
| 10936 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10937 |
"node_modules/micromatch": {
|
| 10938 |
"version": "4.0.5",
|
| 10939 |
"resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
|
|
@@ -11787,6 +12289,26 @@
|
|
| 11787 |
"safe-buffer": "^5.1.1"
|
| 11788 |
}
|
| 11789 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11790 |
"node_modules/parse-json": {
|
| 11791 |
"version": "5.2.0",
|
| 11792 |
"resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz",
|
|
@@ -12717,6 +13239,11 @@
|
|
| 12717 |
"resolved": "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz",
|
| 12718 |
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
|
| 12719 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12720 |
"node_modules/proxy-compare": {
|
| 12721 |
"version": "2.5.1",
|
| 12722 |
"resolved": "https://registry.npmmirror.com/proxy-compare/-/proxy-compare-2.5.1.tgz",
|
|
@@ -13860,6 +14387,27 @@
|
|
| 13860 |
"resolved": "https://registry.npmmirror.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
|
| 13861 |
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
|
| 13862 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13863 |
"node_modules/react-merge-refs": {
|
| 13864 |
"version": "1.1.0",
|
| 13865 |
"resolved": "https://registry.npmmirror.com/react-merge-refs/-/react-merge-refs-1.1.0.tgz",
|
|
@@ -13982,6 +14530,14 @@
|
|
| 13982 |
"prop-types": "^15.5.8"
|
| 13983 |
}
|
| 13984 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13985 |
"node_modules/reactcss": {
|
| 13986 |
"version": "1.2.3",
|
| 13987 |
"resolved": "https://registry.npmmirror.com/reactcss/-/reactcss-1.2.3.tgz",
|
|
@@ -14270,6 +14826,29 @@
|
|
| 14270 |
"node": ">= 0.10"
|
| 14271 |
}
|
| 14272 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14273 |
"node_modules/remove-accents": {
|
| 14274 |
"version": "0.4.2",
|
| 14275 |
"resolved": "https://registry.npmmirror.com/remove-accents/-/remove-accents-0.4.2.tgz",
|
|
@@ -15043,6 +15622,11 @@
|
|
| 15043 |
"deprecated": "See https://github.com/lydell/source-map-url#deprecated",
|
| 15044 |
"dev": true
|
| 15045 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15046 |
"node_modules/spdx-correct": {
|
| 15047 |
"version": "3.2.0",
|
| 15048 |
"resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz",
|
|
@@ -15369,6 +15953,15 @@
|
|
| 15369 |
"es-abstract": "^1.22.1"
|
| 15370 |
}
|
| 15371 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15372 |
"node_modules/strip-ansi": {
|
| 15373 |
"version": "6.0.1",
|
| 15374 |
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
|
@@ -15415,6 +16008,14 @@
|
|
| 15415 |
"integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==",
|
| 15416 |
"peer": true
|
| 15417 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15418 |
"node_modules/style-utils": {
|
| 15419 |
"version": "0.3.8",
|
| 15420 |
"resolved": "https://registry.npmmirror.com/style-utils/-/style-utils-0.3.8.tgz",
|
|
@@ -15983,6 +16584,11 @@
|
|
| 15983 |
"resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
|
| 15984 |
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
|
| 15985 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15986 |
"node_modules/trim-newlines": {
|
| 15987 |
"version": "3.0.1",
|
| 15988 |
"resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-3.0.1.tgz",
|
|
@@ -15992,6 +16598,11 @@
|
|
| 15992 |
"node": ">=8"
|
| 15993 |
}
|
| 15994 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15995 |
"node_modules/tslib": {
|
| 15996 |
"version": "2.6.2",
|
| 15997 |
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.2.tgz",
|
|
@@ -16718,6 +17329,20 @@
|
|
| 16718 |
"./packages/isomorphic-unfetch"
|
| 16719 |
]
|
| 16720 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16721 |
"node_modules/union-value": {
|
| 16722 |
"version": "1.0.1",
|
| 16723 |
"resolved": "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz",
|
|
@@ -16742,6 +17367,58 @@
|
|
| 16742 |
"node": ">=0.10.0"
|
| 16743 |
}
|
| 16744 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16745 |
"node_modules/universalify": {
|
| 16746 |
"version": "2.0.1",
|
| 16747 |
"resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz",
|
|
@@ -16994,6 +17671,25 @@
|
|
| 16994 |
"node": ">= 0.8"
|
| 16995 |
}
|
| 16996 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16997 |
"node_modules/vite": {
|
| 16998 |
"version": "4.3.1",
|
| 16999 |
"resolved": "https://registry.npmmirror.com/vite/-/vite-4.3.1.tgz",
|
|
@@ -17370,6 +18066,11 @@
|
|
| 17370 |
"engines": {
|
| 17371 |
"node": ">=10"
|
| 17372 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17373 |
}
|
| 17374 |
}
|
| 17375 |
}
|
|
|
|
| 21 |
"react-chat-elements": "^12.0.13",
|
| 22 |
"react-i18next": "^14.0.0",
|
| 23 |
"react-infinite-scroll-component": "^6.1.0",
|
| 24 |
+
"react-markdown": "^9.0.1",
|
| 25 |
+
"react-string-replace": "^1.1.1",
|
| 26 |
"umi": "^4.0.90",
|
| 27 |
"umi-request": "^1.4.0",
|
| 28 |
+
"unist-util-visit-parents": "^6.0.1",
|
| 29 |
"uuid": "^9.0.1"
|
| 30 |
},
|
| 31 |
"devDependencies": {
|
|
|
|
| 2670 |
"@babel/types": "^7.20.7"
|
| 2671 |
}
|
| 2672 |
},
|
| 2673 |
+
"node_modules/@types/debug": {
|
| 2674 |
+
"version": "4.1.12",
|
| 2675 |
+
"resolved": "https://registry.npmmirror.com/@types/debug/-/debug-4.1.12.tgz",
|
| 2676 |
+
"integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
|
| 2677 |
+
"dependencies": {
|
| 2678 |
+
"@types/ms": "*"
|
| 2679 |
+
}
|
| 2680 |
+
},
|
| 2681 |
"node_modules/@types/eslint": {
|
| 2682 |
"version": "8.56.1",
|
| 2683 |
"resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.1.tgz",
|
|
|
|
| 2701 |
"node_modules/@types/estree": {
|
| 2702 |
"version": "1.0.5",
|
| 2703 |
"resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz",
|
| 2704 |
+
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
|
| 2705 |
+
},
|
| 2706 |
+
"node_modules/@types/estree-jsx": {
|
| 2707 |
+
"version": "1.0.5",
|
| 2708 |
+
"resolved": "https://registry.npmmirror.com/@types/estree-jsx/-/estree-jsx-1.0.5.tgz",
|
| 2709 |
+
"integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==",
|
| 2710 |
+
"dependencies": {
|
| 2711 |
+
"@types/estree": "*"
|
| 2712 |
+
}
|
| 2713 |
},
|
| 2714 |
"node_modules/@types/glob": {
|
| 2715 |
"version": "7.2.0",
|
|
|
|
| 2734 |
"resolved": "https://registry.npmmirror.com/@types/hapi__joi/-/hapi__joi-17.1.9.tgz",
|
| 2735 |
"integrity": "sha512-oOMFT8vmCTFncsF1engrs04jatz8/Anwx3De9uxnOK4chgSEgWBvFtpSoJo8u3784JNO+ql5tzRR6phHoRnscQ=="
|
| 2736 |
},
|
| 2737 |
+
"node_modules/@types/hast": {
|
| 2738 |
+
"version": "3.0.4",
|
| 2739 |
+
"resolved": "https://registry.npmmirror.com/@types/hast/-/hast-3.0.4.tgz",
|
| 2740 |
+
"integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
|
| 2741 |
+
"dependencies": {
|
| 2742 |
+
"@types/unist": "*"
|
| 2743 |
+
}
|
| 2744 |
+
},
|
| 2745 |
"node_modules/@types/history": {
|
| 2746 |
"version": "5.0.0",
|
| 2747 |
"resolved": "https://registry.npmmirror.com/@types/history/-/history-5.0.0.tgz",
|
|
|
|
| 2813 |
"integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==",
|
| 2814 |
"dev": true
|
| 2815 |
},
|
| 2816 |
+
"node_modules/@types/mdast": {
|
| 2817 |
+
"version": "4.0.3",
|
| 2818 |
+
"resolved": "https://registry.npmmirror.com/@types/mdast/-/mdast-4.0.3.tgz",
|
| 2819 |
+
"integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==",
|
| 2820 |
+
"dependencies": {
|
| 2821 |
+
"@types/unist": "*"
|
| 2822 |
+
}
|
| 2823 |
+
},
|
| 2824 |
"node_modules/@types/minimatch": {
|
| 2825 |
"version": "5.1.2",
|
| 2826 |
"resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-5.1.2.tgz",
|
|
|
|
| 2833 |
"integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==",
|
| 2834 |
"peer": true
|
| 2835 |
},
|
| 2836 |
+
"node_modules/@types/ms": {
|
| 2837 |
+
"version": "0.7.34",
|
| 2838 |
+
"resolved": "https://registry.npmmirror.com/@types/ms/-/ms-0.7.34.tgz",
|
| 2839 |
+
"integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
|
| 2840 |
+
},
|
| 2841 |
"node_modules/@types/node": {
|
| 2842 |
"version": "20.10.6",
|
| 2843 |
"resolved": "https://registry.npmmirror.com/@types/node/-/node-20.10.6.tgz",
|
|
|
|
| 2860 |
"node_modules/@types/prop-types": {
|
| 2861 |
"version": "15.7.11",
|
| 2862 |
"resolved": "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.11.tgz",
|
| 2863 |
+
"integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng=="
|
|
|
|
| 2864 |
},
|
| 2865 |
"node_modules/@types/q": {
|
| 2866 |
"version": "1.5.8",
|
|
|
|
| 2872 |
"version": "18.2.46",
|
| 2873 |
"resolved": "https://registry.npmmirror.com/@types/react/-/react-18.2.46.tgz",
|
| 2874 |
"integrity": "sha512-nNCvVBcZlvX4NU1nRRNV/mFl1nNRuTuslAJglQsq+8ldXe5Xv0Wd2f7WTE3jOxhLH2BFfiZGC6GCp+kHQbgG+w==",
|
|
|
|
| 2875 |
"dependencies": {
|
| 2876 |
"@types/prop-types": "*",
|
| 2877 |
"@types/scheduler": "*",
|
|
|
|
| 2949 |
"node_modules/@types/scheduler": {
|
| 2950 |
"version": "0.16.8",
|
| 2951 |
"resolved": "https://registry.npmmirror.com/@types/scheduler/-/scheduler-0.16.8.tgz",
|
| 2952 |
+
"integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A=="
|
|
|
|
| 2953 |
},
|
| 2954 |
"node_modules/@types/semver": {
|
| 2955 |
"version": "7.5.6",
|
|
|
|
| 2962 |
"integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==",
|
| 2963 |
"dev": true
|
| 2964 |
},
|
| 2965 |
+
"node_modules/@types/unist": {
|
| 2966 |
+
"version": "3.0.2",
|
| 2967 |
+
"resolved": "https://registry.npmmirror.com/@types/unist/-/unist-3.0.2.tgz",
|
| 2968 |
+
"integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
|
| 2969 |
+
},
|
| 2970 |
"node_modules/@types/use-sync-external-store": {
|
| 2971 |
"version": "0.0.3",
|
| 2972 |
"resolved": "https://registry.npmmirror.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
|
|
|
|
| 4405 |
"node_modules/@ungap/structured-clone": {
|
| 4406 |
"version": "1.2.0",
|
| 4407 |
"resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
|
| 4408 |
+
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
|
|
|
|
| 4409 |
},
|
| 4410 |
"node_modules/@vitejs/plugin-react": {
|
| 4411 |
"version": "4.0.0",
|
|
|
|
| 5256 |
"@babel/core": "^7.0.0"
|
| 5257 |
}
|
| 5258 |
},
|
| 5259 |
+
"node_modules/bail": {
|
| 5260 |
+
"version": "2.0.2",
|
| 5261 |
+
"resolved": "https://registry.npmmirror.com/bail/-/bail-2.0.2.tgz",
|
| 5262 |
+
"integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="
|
| 5263 |
+
},
|
| 5264 |
"node_modules/balanced-match": {
|
| 5265 |
"version": "1.0.2",
|
| 5266 |
"resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
|
|
|
|
| 5602 |
"resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001574.tgz",
|
| 5603 |
"integrity": "sha512-BtYEK4r/iHt/txm81KBudCUcTy7t+s9emrIaHqjYurQ10x71zJ5VQ9x1dYPcz/b+pKSp4y/v1xSI67A+LzpNyg=="
|
| 5604 |
},
|
| 5605 |
+
"node_modules/ccount": {
|
| 5606 |
+
"version": "2.0.1",
|
| 5607 |
+
"resolved": "https://registry.npmmirror.com/ccount/-/ccount-2.0.1.tgz",
|
| 5608 |
+
"integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="
|
| 5609 |
+
},
|
| 5610 |
"node_modules/chalk": {
|
| 5611 |
"version": "2.4.2",
|
| 5612 |
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
|
|
|
|
| 5620 |
"node": ">=4"
|
| 5621 |
}
|
| 5622 |
},
|
| 5623 |
+
"node_modules/character-entities": {
|
| 5624 |
+
"version": "2.0.2",
|
| 5625 |
+
"resolved": "https://registry.npmmirror.com/character-entities/-/character-entities-2.0.2.tgz",
|
| 5626 |
+
"integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="
|
| 5627 |
+
},
|
| 5628 |
+
"node_modules/character-entities-html4": {
|
| 5629 |
+
"version": "2.1.0",
|
| 5630 |
+
"resolved": "https://registry.npmmirror.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
|
| 5631 |
+
"integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="
|
| 5632 |
+
},
|
| 5633 |
+
"node_modules/character-entities-legacy": {
|
| 5634 |
+
"version": "3.0.0",
|
| 5635 |
+
"resolved": "https://registry.npmmirror.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
|
| 5636 |
+
"integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="
|
| 5637 |
+
},
|
| 5638 |
+
"node_modules/character-reference-invalid": {
|
| 5639 |
+
"version": "2.0.1",
|
| 5640 |
+
"resolved": "https://registry.npmmirror.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
|
| 5641 |
+
"integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="
|
| 5642 |
+
},
|
| 5643 |
"node_modules/chokidar": {
|
| 5644 |
"version": "3.5.3",
|
| 5645 |
"resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
|
|
|
|
| 5847 |
"node": ">= 0.8"
|
| 5848 |
}
|
| 5849 |
},
|
| 5850 |
+
"node_modules/comma-separated-tokens": {
|
| 5851 |
+
"version": "2.0.3",
|
| 5852 |
+
"resolved": "https://registry.npmmirror.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
|
| 5853 |
+
"integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="
|
| 5854 |
+
},
|
| 5855 |
"node_modules/commander": {
|
| 5856 |
"version": "8.3.0",
|
| 5857 |
"resolved": "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz",
|
|
|
|
| 6663 |
"node": ">=0.10.0"
|
| 6664 |
}
|
| 6665 |
},
|
| 6666 |
+
"node_modules/decode-named-character-reference": {
|
| 6667 |
+
"version": "1.0.2",
|
| 6668 |
+
"resolved": "https://registry.npmmirror.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz",
|
| 6669 |
+
"integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==",
|
| 6670 |
+
"dependencies": {
|
| 6671 |
+
"character-entities": "^2.0.0"
|
| 6672 |
+
}
|
| 6673 |
+
},
|
| 6674 |
"node_modules/decode-uri-component": {
|
| 6675 |
"version": "0.2.2",
|
| 6676 |
"resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
|
|
|
|
| 6855 |
"node": ">=0.4.0"
|
| 6856 |
}
|
| 6857 |
},
|
| 6858 |
+
"node_modules/dequal": {
|
| 6859 |
+
"version": "2.0.3",
|
| 6860 |
+
"resolved": "https://registry.npmmirror.com/dequal/-/dequal-2.0.3.tgz",
|
| 6861 |
+
"integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
|
| 6862 |
+
"engines": {
|
| 6863 |
+
"node": ">=6"
|
| 6864 |
+
}
|
| 6865 |
+
},
|
| 6866 |
"node_modules/des.js": {
|
| 6867 |
"version": "1.1.0",
|
| 6868 |
"resolved": "https://registry.npmmirror.com/des.js/-/des.js-1.1.0.tgz",
|
|
|
|
| 6936 |
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
|
| 6937 |
"dev": true
|
| 6938 |
},
|
| 6939 |
+
"node_modules/devlop": {
|
| 6940 |
+
"version": "1.1.0",
|
| 6941 |
+
"resolved": "https://registry.npmmirror.com/devlop/-/devlop-1.1.0.tgz",
|
| 6942 |
+
"integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
|
| 6943 |
+
"dependencies": {
|
| 6944 |
+
"dequal": "^2.0.0"
|
| 6945 |
+
}
|
| 6946 |
+
},
|
| 6947 |
"node_modules/diffie-hellman": {
|
| 6948 |
"version": "5.0.3",
|
| 6949 |
"resolved": "https://registry.npmmirror.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
|
|
|
|
| 8080 |
"node": ">=4.0"
|
| 8081 |
}
|
| 8082 |
},
|
| 8083 |
+
"node_modules/estree-util-is-identifier-name": {
|
| 8084 |
+
"version": "3.0.0",
|
| 8085 |
+
"resolved": "https://registry.npmmirror.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
|
| 8086 |
+
"integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg=="
|
| 8087 |
+
},
|
| 8088 |
"node_modules/esutils": {
|
| 8089 |
"version": "2.0.3",
|
| 8090 |
"resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz",
|
|
|
|
| 8233 |
"integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
|
| 8234 |
"dev": true
|
| 8235 |
},
|
| 8236 |
+
"node_modules/extend": {
|
| 8237 |
+
"version": "3.0.2",
|
| 8238 |
+
"resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz",
|
| 8239 |
+
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
|
| 8240 |
+
},
|
| 8241 |
"node_modules/extend-shallow": {
|
| 8242 |
"version": "3.0.2",
|
| 8243 |
"resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
|
|
|
|
| 9147 |
"node": ">= 0.4"
|
| 9148 |
}
|
| 9149 |
},
|
| 9150 |
+
"node_modules/hast-util-to-jsx-runtime": {
|
| 9151 |
+
"version": "2.3.0",
|
| 9152 |
+
"resolved": "https://registry.npmmirror.com/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz",
|
| 9153 |
+
"integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==",
|
| 9154 |
+
"dependencies": {
|
| 9155 |
+
"@types/estree": "^1.0.0",
|
| 9156 |
+
"@types/hast": "^3.0.0",
|
| 9157 |
+
"@types/unist": "^3.0.0",
|
| 9158 |
+
"comma-separated-tokens": "^2.0.0",
|
| 9159 |
+
"devlop": "^1.0.0",
|
| 9160 |
+
"estree-util-is-identifier-name": "^3.0.0",
|
| 9161 |
+
"hast-util-whitespace": "^3.0.0",
|
| 9162 |
+
"mdast-util-mdx-expression": "^2.0.0",
|
| 9163 |
+
"mdast-util-mdx-jsx": "^3.0.0",
|
| 9164 |
+
"mdast-util-mdxjs-esm": "^2.0.0",
|
| 9165 |
+
"property-information": "^6.0.0",
|
| 9166 |
+
"space-separated-tokens": "^2.0.0",
|
| 9167 |
+
"style-to-object": "^1.0.0",
|
| 9168 |
+
"unist-util-position": "^5.0.0",
|
| 9169 |
+
"vfile-message": "^4.0.0"
|
| 9170 |
+
}
|
| 9171 |
+
},
|
| 9172 |
+
"node_modules/hast-util-whitespace": {
|
| 9173 |
+
"version": "3.0.0",
|
| 9174 |
+
"resolved": "https://registry.npmmirror.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
|
| 9175 |
+
"integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
|
| 9176 |
+
"dependencies": {
|
| 9177 |
+
"@types/hast": "^3.0.0"
|
| 9178 |
+
}
|
| 9179 |
+
},
|
| 9180 |
"node_modules/he": {
|
| 9181 |
"version": "1.2.0",
|
| 9182 |
"resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
|
|
|
|
| 9342 |
"node": ">=8"
|
| 9343 |
}
|
| 9344 |
},
|
| 9345 |
+
"node_modules/html-url-attributes": {
|
| 9346 |
+
"version": "3.0.0",
|
| 9347 |
+
"resolved": "https://registry.npmmirror.com/html-url-attributes/-/html-url-attributes-3.0.0.tgz",
|
| 9348 |
+
"integrity": "sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow=="
|
| 9349 |
+
},
|
| 9350 |
"node_modules/html-webpack-plugin": {
|
| 9351 |
"version": "5.5.0",
|
| 9352 |
"resolved": "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz",
|
|
|
|
| 9544 |
"resolved": "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz",
|
| 9545 |
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
|
| 9546 |
},
|
| 9547 |
+
"node_modules/inline-style-parser": {
|
| 9548 |
+
"version": "0.2.2",
|
| 9549 |
+
"resolved": "https://registry.npmmirror.com/inline-style-parser/-/inline-style-parser-0.2.2.tgz",
|
| 9550 |
+
"integrity": "sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ=="
|
| 9551 |
+
},
|
| 9552 |
"node_modules/insert-css": {
|
| 9553 |
"version": "2.0.0",
|
| 9554 |
"resolved": "https://registry.npmmirror.com/insert-css/-/insert-css-2.0.0.tgz",
|
|
|
|
| 9620 |
"node": ">= 0.10"
|
| 9621 |
}
|
| 9622 |
},
|
| 9623 |
+
"node_modules/is-alphabetical": {
|
| 9624 |
+
"version": "2.0.1",
|
| 9625 |
+
"resolved": "https://registry.npmmirror.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
|
| 9626 |
+
"integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ=="
|
| 9627 |
+
},
|
| 9628 |
+
"node_modules/is-alphanumerical": {
|
| 9629 |
+
"version": "2.0.1",
|
| 9630 |
+
"resolved": "https://registry.npmmirror.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
|
| 9631 |
+
"integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
|
| 9632 |
+
"dependencies": {
|
| 9633 |
+
"is-alphabetical": "^2.0.0",
|
| 9634 |
+
"is-decimal": "^2.0.0"
|
| 9635 |
+
}
|
| 9636 |
+
},
|
| 9637 |
"node_modules/is-arguments": {
|
| 9638 |
"version": "1.1.1",
|
| 9639 |
"resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz",
|
|
|
|
| 9759 |
"node": ">= 0.4"
|
| 9760 |
}
|
| 9761 |
},
|
| 9762 |
+
"node_modules/is-decimal": {
|
| 9763 |
+
"version": "2.0.1",
|
| 9764 |
+
"resolved": "https://registry.npmmirror.com/is-decimal/-/is-decimal-2.0.1.tgz",
|
| 9765 |
+
"integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="
|
| 9766 |
+
},
|
| 9767 |
"node_modules/is-descriptor": {
|
| 9768 |
"version": "1.0.3",
|
| 9769 |
"resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.3.tgz",
|
|
|
|
| 9878 |
"node": ">=0.10.0"
|
| 9879 |
}
|
| 9880 |
},
|
| 9881 |
+
"node_modules/is-hexadecimal": {
|
| 9882 |
+
"version": "2.0.1",
|
| 9883 |
+
"resolved": "https://registry.npmmirror.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
|
| 9884 |
+
"integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="
|
| 9885 |
+
},
|
| 9886 |
"node_modules/is-inside-container": {
|
| 9887 |
"version": "1.0.0",
|
| 9888 |
"resolved": "https://registry.npmmirror.com/is-inside-container/-/is-inside-container-1.0.0.tgz",
|
|
|
|
| 10952 |
"integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==",
|
| 10953 |
"dev": true
|
| 10954 |
},
|
| 10955 |
+
"node_modules/longest-streak": {
|
| 10956 |
+
"version": "3.1.0",
|
| 10957 |
+
"resolved": "https://registry.npmmirror.com/longest-streak/-/longest-streak-3.1.0.tgz",
|
| 10958 |
+
"integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="
|
| 10959 |
+
},
|
| 10960 |
"node_modules/loose-envify": {
|
| 10961 |
"version": "1.4.0",
|
| 10962 |
"resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz",
|
|
|
|
| 11060 |
"safe-buffer": "^5.1.2"
|
| 11061 |
}
|
| 11062 |
},
|
| 11063 |
+
"node_modules/mdast-util-from-markdown": {
|
| 11064 |
+
"version": "2.0.0",
|
| 11065 |
+
"resolved": "https://registry.npmmirror.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz",
|
| 11066 |
+
"integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==",
|
| 11067 |
+
"dependencies": {
|
| 11068 |
+
"@types/mdast": "^4.0.0",
|
| 11069 |
+
"@types/unist": "^3.0.0",
|
| 11070 |
+
"decode-named-character-reference": "^1.0.0",
|
| 11071 |
+
"devlop": "^1.0.0",
|
| 11072 |
+
"mdast-util-to-string": "^4.0.0",
|
| 11073 |
+
"micromark": "^4.0.0",
|
| 11074 |
+
"micromark-util-decode-numeric-character-reference": "^2.0.0",
|
| 11075 |
+
"micromark-util-decode-string": "^2.0.0",
|
| 11076 |
+
"micromark-util-normalize-identifier": "^2.0.0",
|
| 11077 |
+
"micromark-util-symbol": "^2.0.0",
|
| 11078 |
+
"micromark-util-types": "^2.0.0",
|
| 11079 |
+
"unist-util-stringify-position": "^4.0.0"
|
| 11080 |
+
}
|
| 11081 |
+
},
|
| 11082 |
+
"node_modules/mdast-util-mdx-expression": {
|
| 11083 |
+
"version": "2.0.0",
|
| 11084 |
+
"resolved": "https://registry.npmmirror.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz",
|
| 11085 |
+
"integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==",
|
| 11086 |
+
"dependencies": {
|
| 11087 |
+
"@types/estree-jsx": "^1.0.0",
|
| 11088 |
+
"@types/hast": "^3.0.0",
|
| 11089 |
+
"@types/mdast": "^4.0.0",
|
| 11090 |
+
"devlop": "^1.0.0",
|
| 11091 |
+
"mdast-util-from-markdown": "^2.0.0",
|
| 11092 |
+
"mdast-util-to-markdown": "^2.0.0"
|
| 11093 |
+
}
|
| 11094 |
+
},
|
| 11095 |
+
"node_modules/mdast-util-mdx-jsx": {
|
| 11096 |
+
"version": "3.1.0",
|
| 11097 |
+
"resolved": "https://registry.npmmirror.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.0.tgz",
|
| 11098 |
+
"integrity": "sha512-A8AJHlR7/wPQ3+Jre1+1rq040fX9A4Q1jG8JxmSNp/PLPHg80A6475wxTp3KzHpApFH6yWxFotHrJQA3dXP6/w==",
|
| 11099 |
+
"dependencies": {
|
| 11100 |
+
"@types/estree-jsx": "^1.0.0",
|
| 11101 |
+
"@types/hast": "^3.0.0",
|
| 11102 |
+
"@types/mdast": "^4.0.0",
|
| 11103 |
+
"@types/unist": "^3.0.0",
|
| 11104 |
+
"ccount": "^2.0.0",
|
| 11105 |
+
"devlop": "^1.1.0",
|
| 11106 |
+
"mdast-util-from-markdown": "^2.0.0",
|
| 11107 |
+
"mdast-util-to-markdown": "^2.0.0",
|
| 11108 |
+
"parse-entities": "^4.0.0",
|
| 11109 |
+
"stringify-entities": "^4.0.0",
|
| 11110 |
+
"unist-util-remove-position": "^5.0.0",
|
| 11111 |
+
"unist-util-stringify-position": "^4.0.0",
|
| 11112 |
+
"vfile-message": "^4.0.0"
|
| 11113 |
+
}
|
| 11114 |
+
},
|
| 11115 |
+
"node_modules/mdast-util-mdxjs-esm": {
|
| 11116 |
+
"version": "2.0.1",
|
| 11117 |
+
"resolved": "https://registry.npmmirror.com/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
|
| 11118 |
+
"integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
|
| 11119 |
+
"dependencies": {
|
| 11120 |
+
"@types/estree-jsx": "^1.0.0",
|
| 11121 |
+
"@types/hast": "^3.0.0",
|
| 11122 |
+
"@types/mdast": "^4.0.0",
|
| 11123 |
+
"devlop": "^1.0.0",
|
| 11124 |
+
"mdast-util-from-markdown": "^2.0.0",
|
| 11125 |
+
"mdast-util-to-markdown": "^2.0.0"
|
| 11126 |
+
}
|
| 11127 |
+
},
|
| 11128 |
+
"node_modules/mdast-util-phrasing": {
|
| 11129 |
+
"version": "4.1.0",
|
| 11130 |
+
"resolved": "https://registry.npmmirror.com/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
|
| 11131 |
+
"integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
|
| 11132 |
+
"dependencies": {
|
| 11133 |
+
"@types/mdast": "^4.0.0",
|
| 11134 |
+
"unist-util-is": "^6.0.0"
|
| 11135 |
+
}
|
| 11136 |
+
},
|
| 11137 |
+
"node_modules/mdast-util-to-hast": {
|
| 11138 |
+
"version": "13.1.0",
|
| 11139 |
+
"resolved": "https://registry.npmmirror.com/mdast-util-to-hast/-/mdast-util-to-hast-13.1.0.tgz",
|
| 11140 |
+
"integrity": "sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==",
|
| 11141 |
+
"dependencies": {
|
| 11142 |
+
"@types/hast": "^3.0.0",
|
| 11143 |
+
"@types/mdast": "^4.0.0",
|
| 11144 |
+
"@ungap/structured-clone": "^1.0.0",
|
| 11145 |
+
"devlop": "^1.0.0",
|
| 11146 |
+
"micromark-util-sanitize-uri": "^2.0.0",
|
| 11147 |
+
"trim-lines": "^3.0.0",
|
| 11148 |
+
"unist-util-position": "^5.0.0",
|
| 11149 |
+
"unist-util-visit": "^5.0.0",
|
| 11150 |
+
"vfile": "^6.0.0"
|
| 11151 |
+
}
|
| 11152 |
+
},
|
| 11153 |
+
"node_modules/mdast-util-to-markdown": {
|
| 11154 |
+
"version": "2.1.0",
|
| 11155 |
+
"resolved": "https://registry.npmmirror.com/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz",
|
| 11156 |
+
"integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==",
|
| 11157 |
+
"dependencies": {
|
| 11158 |
+
"@types/mdast": "^4.0.0",
|
| 11159 |
+
"@types/unist": "^3.0.0",
|
| 11160 |
+
"longest-streak": "^3.0.0",
|
| 11161 |
+
"mdast-util-phrasing": "^4.0.0",
|
| 11162 |
+
"mdast-util-to-string": "^4.0.0",
|
| 11163 |
+
"micromark-util-decode-string": "^2.0.0",
|
| 11164 |
+
"unist-util-visit": "^5.0.0",
|
| 11165 |
+
"zwitch": "^2.0.0"
|
| 11166 |
+
}
|
| 11167 |
+
},
|
| 11168 |
+
"node_modules/mdast-util-to-string": {
|
| 11169 |
+
"version": "4.0.0",
|
| 11170 |
+
"resolved": "https://registry.npmmirror.com/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
|
| 11171 |
+
"integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
|
| 11172 |
+
"dependencies": {
|
| 11173 |
+
"@types/mdast": "^4.0.0"
|
| 11174 |
+
}
|
| 11175 |
+
},
|
| 11176 |
"node_modules/mdn-data": {
|
| 11177 |
"version": "2.0.14",
|
| 11178 |
"resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz",
|
|
|
|
| 11225 |
"node": ">= 8"
|
| 11226 |
}
|
| 11227 |
},
|
| 11228 |
+
"node_modules/micromark": {
|
| 11229 |
+
"version": "4.0.0",
|
| 11230 |
+
"resolved": "https://registry.npmmirror.com/micromark/-/micromark-4.0.0.tgz",
|
| 11231 |
+
"integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==",
|
| 11232 |
+
"dependencies": {
|
| 11233 |
+
"@types/debug": "^4.0.0",
|
| 11234 |
+
"debug": "^4.0.0",
|
| 11235 |
+
"decode-named-character-reference": "^1.0.0",
|
| 11236 |
+
"devlop": "^1.0.0",
|
| 11237 |
+
"micromark-core-commonmark": "^2.0.0",
|
| 11238 |
+
"micromark-factory-space": "^2.0.0",
|
| 11239 |
+
"micromark-util-character": "^2.0.0",
|
| 11240 |
+
"micromark-util-chunked": "^2.0.0",
|
| 11241 |
+
"micromark-util-combine-extensions": "^2.0.0",
|
| 11242 |
+
"micromark-util-decode-numeric-character-reference": "^2.0.0",
|
| 11243 |
+
"micromark-util-encode": "^2.0.0",
|
| 11244 |
+
"micromark-util-normalize-identifier": "^2.0.0",
|
| 11245 |
+
"micromark-util-resolve-all": "^2.0.0",
|
| 11246 |
+
"micromark-util-sanitize-uri": "^2.0.0",
|
| 11247 |
+
"micromark-util-subtokenize": "^2.0.0",
|
| 11248 |
+
"micromark-util-symbol": "^2.0.0",
|
| 11249 |
+
"micromark-util-types": "^2.0.0"
|
| 11250 |
+
}
|
| 11251 |
+
},
|
| 11252 |
+
"node_modules/micromark-core-commonmark": {
|
| 11253 |
+
"version": "2.0.0",
|
| 11254 |
+
"resolved": "https://registry.npmmirror.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz",
|
| 11255 |
+
"integrity": "sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==",
|
| 11256 |
+
"dependencies": {
|
| 11257 |
+
"decode-named-character-reference": "^1.0.0",
|
| 11258 |
+
"devlop": "^1.0.0",
|
| 11259 |
+
"micromark-factory-destination": "^2.0.0",
|
| 11260 |
+
"micromark-factory-label": "^2.0.0",
|
| 11261 |
+
"micromark-factory-space": "^2.0.0",
|
| 11262 |
+
"micromark-factory-title": "^2.0.0",
|
| 11263 |
+
"micromark-factory-whitespace": "^2.0.0",
|
| 11264 |
+
"micromark-util-character": "^2.0.0",
|
| 11265 |
+
"micromark-util-chunked": "^2.0.0",
|
| 11266 |
+
"micromark-util-classify-character": "^2.0.0",
|
| 11267 |
+
"micromark-util-html-tag-name": "^2.0.0",
|
| 11268 |
+
"micromark-util-normalize-identifier": "^2.0.0",
|
| 11269 |
+
"micromark-util-resolve-all": "^2.0.0",
|
| 11270 |
+
"micromark-util-subtokenize": "^2.0.0",
|
| 11271 |
+
"micromark-util-symbol": "^2.0.0",
|
| 11272 |
+
"micromark-util-types": "^2.0.0"
|
| 11273 |
+
}
|
| 11274 |
+
},
|
| 11275 |
+
"node_modules/micromark-factory-destination": {
|
| 11276 |
+
"version": "2.0.0",
|
| 11277 |
+
"resolved": "https://registry.npmmirror.com/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz",
|
| 11278 |
+
"integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==",
|
| 11279 |
+
"dependencies": {
|
| 11280 |
+
"micromark-util-character": "^2.0.0",
|
| 11281 |
+
"micromark-util-symbol": "^2.0.0",
|
| 11282 |
+
"micromark-util-types": "^2.0.0"
|
| 11283 |
+
}
|
| 11284 |
+
},
|
| 11285 |
+
"node_modules/micromark-factory-label": {
|
| 11286 |
+
"version": "2.0.0",
|
| 11287 |
+
"resolved": "https://registry.npmmirror.com/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz",
|
| 11288 |
+
"integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==",
|
| 11289 |
+
"dependencies": {
|
| 11290 |
+
"devlop": "^1.0.0",
|
| 11291 |
+
"micromark-util-character": "^2.0.0",
|
| 11292 |
+
"micromark-util-symbol": "^2.0.0",
|
| 11293 |
+
"micromark-util-types": "^2.0.0"
|
| 11294 |
+
}
|
| 11295 |
+
},
|
| 11296 |
+
"node_modules/micromark-factory-space": {
|
| 11297 |
+
"version": "2.0.0",
|
| 11298 |
+
"resolved": "https://registry.npmmirror.com/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
|
| 11299 |
+
"integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
|
| 11300 |
+
"dependencies": {
|
| 11301 |
+
"micromark-util-character": "^2.0.0",
|
| 11302 |
+
"micromark-util-types": "^2.0.0"
|
| 11303 |
+
}
|
| 11304 |
+
},
|
| 11305 |
+
"node_modules/micromark-factory-title": {
|
| 11306 |
+
"version": "2.0.0",
|
| 11307 |
+
"resolved": "https://registry.npmmirror.com/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz",
|
| 11308 |
+
"integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==",
|
| 11309 |
+
"dependencies": {
|
| 11310 |
+
"micromark-factory-space": "^2.0.0",
|
| 11311 |
+
"micromark-util-character": "^2.0.0",
|
| 11312 |
+
"micromark-util-symbol": "^2.0.0",
|
| 11313 |
+
"micromark-util-types": "^2.0.0"
|
| 11314 |
+
}
|
| 11315 |
+
},
|
| 11316 |
+
"node_modules/micromark-factory-whitespace": {
|
| 11317 |
+
"version": "2.0.0",
|
| 11318 |
+
"resolved": "https://registry.npmmirror.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz",
|
| 11319 |
+
"integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==",
|
| 11320 |
+
"dependencies": {
|
| 11321 |
+
"micromark-factory-space": "^2.0.0",
|
| 11322 |
+
"micromark-util-character": "^2.0.0",
|
| 11323 |
+
"micromark-util-symbol": "^2.0.0",
|
| 11324 |
+
"micromark-util-types": "^2.0.0"
|
| 11325 |
+
}
|
| 11326 |
+
},
|
| 11327 |
+
"node_modules/micromark-util-character": {
|
| 11328 |
+
"version": "2.1.0",
|
| 11329 |
+
"resolved": "https://registry.npmmirror.com/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
|
| 11330 |
+
"integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
|
| 11331 |
+
"dependencies": {
|
| 11332 |
+
"micromark-util-symbol": "^2.0.0",
|
| 11333 |
+
"micromark-util-types": "^2.0.0"
|
| 11334 |
+
}
|
| 11335 |
+
},
|
| 11336 |
+
"node_modules/micromark-util-chunked": {
|
| 11337 |
+
"version": "2.0.0",
|
| 11338 |
+
"resolved": "https://registry.npmmirror.com/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz",
|
| 11339 |
+
"integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==",
|
| 11340 |
+
"dependencies": {
|
| 11341 |
+
"micromark-util-symbol": "^2.0.0"
|
| 11342 |
+
}
|
| 11343 |
+
},
|
| 11344 |
+
"node_modules/micromark-util-classify-character": {
|
| 11345 |
+
"version": "2.0.0",
|
| 11346 |
+
"resolved": "https://registry.npmmirror.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz",
|
| 11347 |
+
"integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==",
|
| 11348 |
+
"dependencies": {
|
| 11349 |
+
"micromark-util-character": "^2.0.0",
|
| 11350 |
+
"micromark-util-symbol": "^2.0.0",
|
| 11351 |
+
"micromark-util-types": "^2.0.0"
|
| 11352 |
+
}
|
| 11353 |
+
},
|
| 11354 |
+
"node_modules/micromark-util-combine-extensions": {
|
| 11355 |
+
"version": "2.0.0",
|
| 11356 |
+
"resolved": "https://registry.npmmirror.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz",
|
| 11357 |
+
"integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==",
|
| 11358 |
+
"dependencies": {
|
| 11359 |
+
"micromark-util-chunked": "^2.0.0",
|
| 11360 |
+
"micromark-util-types": "^2.0.0"
|
| 11361 |
+
}
|
| 11362 |
+
},
|
| 11363 |
+
"node_modules/micromark-util-decode-numeric-character-reference": {
|
| 11364 |
+
"version": "2.0.1",
|
| 11365 |
+
"resolved": "https://registry.npmmirror.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz",
|
| 11366 |
+
"integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==",
|
| 11367 |
+
"dependencies": {
|
| 11368 |
+
"micromark-util-symbol": "^2.0.0"
|
| 11369 |
+
}
|
| 11370 |
+
},
|
| 11371 |
+
"node_modules/micromark-util-decode-string": {
|
| 11372 |
+
"version": "2.0.0",
|
| 11373 |
+
"resolved": "https://registry.npmmirror.com/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz",
|
| 11374 |
+
"integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==",
|
| 11375 |
+
"dependencies": {
|
| 11376 |
+
"decode-named-character-reference": "^1.0.0",
|
| 11377 |
+
"micromark-util-character": "^2.0.0",
|
| 11378 |
+
"micromark-util-decode-numeric-character-reference": "^2.0.0",
|
| 11379 |
+
"micromark-util-symbol": "^2.0.0"
|
| 11380 |
+
}
|
| 11381 |
+
},
|
| 11382 |
+
"node_modules/micromark-util-encode": {
|
| 11383 |
+
"version": "2.0.0",
|
| 11384 |
+
"resolved": "https://registry.npmmirror.com/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz",
|
| 11385 |
+
"integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA=="
|
| 11386 |
+
},
|
| 11387 |
+
"node_modules/micromark-util-html-tag-name": {
|
| 11388 |
+
"version": "2.0.0",
|
| 11389 |
+
"resolved": "https://registry.npmmirror.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz",
|
| 11390 |
+
"integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw=="
|
| 11391 |
+
},
|
| 11392 |
+
"node_modules/micromark-util-normalize-identifier": {
|
| 11393 |
+
"version": "2.0.0",
|
| 11394 |
+
"resolved": "https://registry.npmmirror.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz",
|
| 11395 |
+
"integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==",
|
| 11396 |
+
"dependencies": {
|
| 11397 |
+
"micromark-util-symbol": "^2.0.0"
|
| 11398 |
+
}
|
| 11399 |
+
},
|
| 11400 |
+
"node_modules/micromark-util-resolve-all": {
|
| 11401 |
+
"version": "2.0.0",
|
| 11402 |
+
"resolved": "https://registry.npmmirror.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz",
|
| 11403 |
+
"integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==",
|
| 11404 |
+
"dependencies": {
|
| 11405 |
+
"micromark-util-types": "^2.0.0"
|
| 11406 |
+
}
|
| 11407 |
+
},
|
| 11408 |
+
"node_modules/micromark-util-sanitize-uri": {
|
| 11409 |
+
"version": "2.0.0",
|
| 11410 |
+
"resolved": "https://registry.npmmirror.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz",
|
| 11411 |
+
"integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==",
|
| 11412 |
+
"dependencies": {
|
| 11413 |
+
"micromark-util-character": "^2.0.0",
|
| 11414 |
+
"micromark-util-encode": "^2.0.0",
|
| 11415 |
+
"micromark-util-symbol": "^2.0.0"
|
| 11416 |
+
}
|
| 11417 |
+
},
|
| 11418 |
+
"node_modules/micromark-util-subtokenize": {
|
| 11419 |
+
"version": "2.0.0",
|
| 11420 |
+
"resolved": "https://registry.npmmirror.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz",
|
| 11421 |
+
"integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==",
|
| 11422 |
+
"dependencies": {
|
| 11423 |
+
"devlop": "^1.0.0",
|
| 11424 |
+
"micromark-util-chunked": "^2.0.0",
|
| 11425 |
+
"micromark-util-symbol": "^2.0.0",
|
| 11426 |
+
"micromark-util-types": "^2.0.0"
|
| 11427 |
+
}
|
| 11428 |
+
},
|
| 11429 |
+
"node_modules/micromark-util-symbol": {
|
| 11430 |
+
"version": "2.0.0",
|
| 11431 |
+
"resolved": "https://registry.npmmirror.com/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
|
| 11432 |
+
"integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw=="
|
| 11433 |
+
},
|
| 11434 |
+
"node_modules/micromark-util-types": {
|
| 11435 |
+
"version": "2.0.0",
|
| 11436 |
+
"resolved": "https://registry.npmmirror.com/micromark-util-types/-/micromark-util-types-2.0.0.tgz",
|
| 11437 |
+
"integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w=="
|
| 11438 |
+
},
|
| 11439 |
"node_modules/micromatch": {
|
| 11440 |
"version": "4.0.5",
|
| 11441 |
"resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
|
|
|
|
| 12289 |
"safe-buffer": "^5.1.1"
|
| 12290 |
}
|
| 12291 |
},
|
| 12292 |
+
"node_modules/parse-entities": {
|
| 12293 |
+
"version": "4.0.1",
|
| 12294 |
+
"resolved": "https://registry.npmmirror.com/parse-entities/-/parse-entities-4.0.1.tgz",
|
| 12295 |
+
"integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==",
|
| 12296 |
+
"dependencies": {
|
| 12297 |
+
"@types/unist": "^2.0.0",
|
| 12298 |
+
"character-entities": "^2.0.0",
|
| 12299 |
+
"character-entities-legacy": "^3.0.0",
|
| 12300 |
+
"character-reference-invalid": "^2.0.0",
|
| 12301 |
+
"decode-named-character-reference": "^1.0.0",
|
| 12302 |
+
"is-alphanumerical": "^2.0.0",
|
| 12303 |
+
"is-decimal": "^2.0.0",
|
| 12304 |
+
"is-hexadecimal": "^2.0.0"
|
| 12305 |
+
}
|
| 12306 |
+
},
|
| 12307 |
+
"node_modules/parse-entities/node_modules/@types/unist": {
|
| 12308 |
+
"version": "2.0.10",
|
| 12309 |
+
"resolved": "https://registry.npmmirror.com/@types/unist/-/unist-2.0.10.tgz",
|
| 12310 |
+
"integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
|
| 12311 |
+
},
|
| 12312 |
"node_modules/parse-json": {
|
| 12313 |
"version": "5.2.0",
|
| 12314 |
"resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz",
|
|
|
|
| 13239 |
"resolved": "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz",
|
| 13240 |
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
|
| 13241 |
},
|
| 13242 |
+
"node_modules/property-information": {
|
| 13243 |
+
"version": "6.4.1",
|
| 13244 |
+
"resolved": "https://registry.npmmirror.com/property-information/-/property-information-6.4.1.tgz",
|
| 13245 |
+
"integrity": "sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w=="
|
| 13246 |
+
},
|
| 13247 |
"node_modules/proxy-compare": {
|
| 13248 |
"version": "2.5.1",
|
| 13249 |
"resolved": "https://registry.npmmirror.com/proxy-compare/-/proxy-compare-2.5.1.tgz",
|
|
|
|
| 14387 |
"resolved": "https://registry.npmmirror.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
|
| 14388 |
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
|
| 14389 |
},
|
| 14390 |
+
"node_modules/react-markdown": {
|
| 14391 |
+
"version": "9.0.1",
|
| 14392 |
+
"resolved": "https://registry.npmmirror.com/react-markdown/-/react-markdown-9.0.1.tgz",
|
| 14393 |
+
"integrity": "sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==",
|
| 14394 |
+
"dependencies": {
|
| 14395 |
+
"@types/hast": "^3.0.0",
|
| 14396 |
+
"devlop": "^1.0.0",
|
| 14397 |
+
"hast-util-to-jsx-runtime": "^2.0.0",
|
| 14398 |
+
"html-url-attributes": "^3.0.0",
|
| 14399 |
+
"mdast-util-to-hast": "^13.0.0",
|
| 14400 |
+
"remark-parse": "^11.0.0",
|
| 14401 |
+
"remark-rehype": "^11.0.0",
|
| 14402 |
+
"unified": "^11.0.0",
|
| 14403 |
+
"unist-util-visit": "^5.0.0",
|
| 14404 |
+
"vfile": "^6.0.0"
|
| 14405 |
+
},
|
| 14406 |
+
"peerDependencies": {
|
| 14407 |
+
"@types/react": ">=18",
|
| 14408 |
+
"react": ">=18"
|
| 14409 |
+
}
|
| 14410 |
+
},
|
| 14411 |
"node_modules/react-merge-refs": {
|
| 14412 |
"version": "1.1.0",
|
| 14413 |
"resolved": "https://registry.npmmirror.com/react-merge-refs/-/react-merge-refs-1.1.0.tgz",
|
|
|
|
| 14530 |
"prop-types": "^15.5.8"
|
| 14531 |
}
|
| 14532 |
},
|
| 14533 |
+
"node_modules/react-string-replace": {
|
| 14534 |
+
"version": "1.1.1",
|
| 14535 |
+
"resolved": "https://registry.npmmirror.com/react-string-replace/-/react-string-replace-1.1.1.tgz",
|
| 14536 |
+
"integrity": "sha512-26TUbLzLfHQ5jO5N7y3Mx88eeKo0Ml0UjCQuX4BMfOd/JX+enQqlKpL1CZnmjeBRvQE8TR+ds9j1rqx9CxhKHQ==",
|
| 14537 |
+
"engines": {
|
| 14538 |
+
"node": ">=0.12.0"
|
| 14539 |
+
}
|
| 14540 |
+
},
|
| 14541 |
"node_modules/reactcss": {
|
| 14542 |
"version": "1.2.3",
|
| 14543 |
"resolved": "https://registry.npmmirror.com/reactcss/-/reactcss-1.2.3.tgz",
|
|
|
|
| 14826 |
"node": ">= 0.10"
|
| 14827 |
}
|
| 14828 |
},
|
| 14829 |
+
"node_modules/remark-parse": {
|
| 14830 |
+
"version": "11.0.0",
|
| 14831 |
+
"resolved": "https://registry.npmmirror.com/remark-parse/-/remark-parse-11.0.0.tgz",
|
| 14832 |
+
"integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
|
| 14833 |
+
"dependencies": {
|
| 14834 |
+
"@types/mdast": "^4.0.0",
|
| 14835 |
+
"mdast-util-from-markdown": "^2.0.0",
|
| 14836 |
+
"micromark-util-types": "^2.0.0",
|
| 14837 |
+
"unified": "^11.0.0"
|
| 14838 |
+
}
|
| 14839 |
+
},
|
| 14840 |
+
"node_modules/remark-rehype": {
|
| 14841 |
+
"version": "11.1.0",
|
| 14842 |
+
"resolved": "https://registry.npmmirror.com/remark-rehype/-/remark-rehype-11.1.0.tgz",
|
| 14843 |
+
"integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==",
|
| 14844 |
+
"dependencies": {
|
| 14845 |
+
"@types/hast": "^3.0.0",
|
| 14846 |
+
"@types/mdast": "^4.0.0",
|
| 14847 |
+
"mdast-util-to-hast": "^13.0.0",
|
| 14848 |
+
"unified": "^11.0.0",
|
| 14849 |
+
"vfile": "^6.0.0"
|
| 14850 |
+
}
|
| 14851 |
+
},
|
| 14852 |
"node_modules/remove-accents": {
|
| 14853 |
"version": "0.4.2",
|
| 14854 |
"resolved": "https://registry.npmmirror.com/remove-accents/-/remove-accents-0.4.2.tgz",
|
|
|
|
| 15622 |
"deprecated": "See https://github.com/lydell/source-map-url#deprecated",
|
| 15623 |
"dev": true
|
| 15624 |
},
|
| 15625 |
+
"node_modules/space-separated-tokens": {
|
| 15626 |
+
"version": "2.0.2",
|
| 15627 |
+
"resolved": "https://registry.npmmirror.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
|
| 15628 |
+
"integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="
|
| 15629 |
+
},
|
| 15630 |
"node_modules/spdx-correct": {
|
| 15631 |
"version": "3.2.0",
|
| 15632 |
"resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz",
|
|
|
|
| 15953 |
"es-abstract": "^1.22.1"
|
| 15954 |
}
|
| 15955 |
},
|
| 15956 |
+
"node_modules/stringify-entities": {
|
| 15957 |
+
"version": "4.0.3",
|
| 15958 |
+
"resolved": "https://registry.npmmirror.com/stringify-entities/-/stringify-entities-4.0.3.tgz",
|
| 15959 |
+
"integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==",
|
| 15960 |
+
"dependencies": {
|
| 15961 |
+
"character-entities-html4": "^2.0.0",
|
| 15962 |
+
"character-entities-legacy": "^3.0.0"
|
| 15963 |
+
}
|
| 15964 |
+
},
|
| 15965 |
"node_modules/strip-ansi": {
|
| 15966 |
"version": "6.0.1",
|
| 15967 |
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
|
|
|
| 16008 |
"integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==",
|
| 16009 |
"peer": true
|
| 16010 |
},
|
| 16011 |
+
"node_modules/style-to-object": {
|
| 16012 |
+
"version": "1.0.5",
|
| 16013 |
+
"resolved": "https://registry.npmmirror.com/style-to-object/-/style-to-object-1.0.5.tgz",
|
| 16014 |
+
"integrity": "sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==",
|
| 16015 |
+
"dependencies": {
|
| 16016 |
+
"inline-style-parser": "0.2.2"
|
| 16017 |
+
}
|
| 16018 |
+
},
|
| 16019 |
"node_modules/style-utils": {
|
| 16020 |
"version": "0.3.8",
|
| 16021 |
"resolved": "https://registry.npmmirror.com/style-utils/-/style-utils-0.3.8.tgz",
|
|
|
|
| 16584 |
"resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
|
| 16585 |
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
|
| 16586 |
},
|
| 16587 |
+
"node_modules/trim-lines": {
|
| 16588 |
+
"version": "3.0.1",
|
| 16589 |
+
"resolved": "https://registry.npmmirror.com/trim-lines/-/trim-lines-3.0.1.tgz",
|
| 16590 |
+
"integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="
|
| 16591 |
+
},
|
| 16592 |
"node_modules/trim-newlines": {
|
| 16593 |
"version": "3.0.1",
|
| 16594 |
"resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-3.0.1.tgz",
|
|
|
|
| 16598 |
"node": ">=8"
|
| 16599 |
}
|
| 16600 |
},
|
| 16601 |
+
"node_modules/trough": {
|
| 16602 |
+
"version": "2.2.0",
|
| 16603 |
+
"resolved": "https://registry.npmmirror.com/trough/-/trough-2.2.0.tgz",
|
| 16604 |
+
"integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="
|
| 16605 |
+
},
|
| 16606 |
"node_modules/tslib": {
|
| 16607 |
"version": "2.6.2",
|
| 16608 |
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.2.tgz",
|
|
|
|
| 17329 |
"./packages/isomorphic-unfetch"
|
| 17330 |
]
|
| 17331 |
},
|
| 17332 |
+
"node_modules/unified": {
|
| 17333 |
+
"version": "11.0.4",
|
| 17334 |
+
"resolved": "https://registry.npmmirror.com/unified/-/unified-11.0.4.tgz",
|
| 17335 |
+
"integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==",
|
| 17336 |
+
"dependencies": {
|
| 17337 |
+
"@types/unist": "^3.0.0",
|
| 17338 |
+
"bail": "^2.0.0",
|
| 17339 |
+
"devlop": "^1.0.0",
|
| 17340 |
+
"extend": "^3.0.0",
|
| 17341 |
+
"is-plain-obj": "^4.0.0",
|
| 17342 |
+
"trough": "^2.0.0",
|
| 17343 |
+
"vfile": "^6.0.0"
|
| 17344 |
+
}
|
| 17345 |
+
},
|
| 17346 |
"node_modules/union-value": {
|
| 17347 |
"version": "1.0.1",
|
| 17348 |
"resolved": "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz",
|
|
|
|
| 17367 |
"node": ">=0.10.0"
|
| 17368 |
}
|
| 17369 |
},
|
| 17370 |
+
"node_modules/unist-util-is": {
|
| 17371 |
+
"version": "6.0.0",
|
| 17372 |
+
"resolved": "https://registry.npmmirror.com/unist-util-is/-/unist-util-is-6.0.0.tgz",
|
| 17373 |
+
"integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
|
| 17374 |
+
"dependencies": {
|
| 17375 |
+
"@types/unist": "^3.0.0"
|
| 17376 |
+
}
|
| 17377 |
+
},
|
| 17378 |
+
"node_modules/unist-util-position": {
|
| 17379 |
+
"version": "5.0.0",
|
| 17380 |
+
"resolved": "https://registry.npmmirror.com/unist-util-position/-/unist-util-position-5.0.0.tgz",
|
| 17381 |
+
"integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
|
| 17382 |
+
"dependencies": {
|
| 17383 |
+
"@types/unist": "^3.0.0"
|
| 17384 |
+
}
|
| 17385 |
+
},
|
| 17386 |
+
"node_modules/unist-util-remove-position": {
|
| 17387 |
+
"version": "5.0.0",
|
| 17388 |
+
"resolved": "https://registry.npmmirror.com/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz",
|
| 17389 |
+
"integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==",
|
| 17390 |
+
"dependencies": {
|
| 17391 |
+
"@types/unist": "^3.0.0",
|
| 17392 |
+
"unist-util-visit": "^5.0.0"
|
| 17393 |
+
}
|
| 17394 |
+
},
|
| 17395 |
+
"node_modules/unist-util-stringify-position": {
|
| 17396 |
+
"version": "4.0.0",
|
| 17397 |
+
"resolved": "https://registry.npmmirror.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
|
| 17398 |
+
"integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
|
| 17399 |
+
"dependencies": {
|
| 17400 |
+
"@types/unist": "^3.0.0"
|
| 17401 |
+
}
|
| 17402 |
+
},
|
| 17403 |
+
"node_modules/unist-util-visit": {
|
| 17404 |
+
"version": "5.0.0",
|
| 17405 |
+
"resolved": "https://registry.npmmirror.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
|
| 17406 |
+
"integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
|
| 17407 |
+
"dependencies": {
|
| 17408 |
+
"@types/unist": "^3.0.0",
|
| 17409 |
+
"unist-util-is": "^6.0.0",
|
| 17410 |
+
"unist-util-visit-parents": "^6.0.0"
|
| 17411 |
+
}
|
| 17412 |
+
},
|
| 17413 |
+
"node_modules/unist-util-visit-parents": {
|
| 17414 |
+
"version": "6.0.1",
|
| 17415 |
+
"resolved": "https://registry.npmmirror.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
|
| 17416 |
+
"integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
|
| 17417 |
+
"dependencies": {
|
| 17418 |
+
"@types/unist": "^3.0.0",
|
| 17419 |
+
"unist-util-is": "^6.0.0"
|
| 17420 |
+
}
|
| 17421 |
+
},
|
| 17422 |
"node_modules/universalify": {
|
| 17423 |
"version": "2.0.1",
|
| 17424 |
"resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz",
|
|
|
|
| 17671 |
"node": ">= 0.8"
|
| 17672 |
}
|
| 17673 |
},
|
| 17674 |
+
"node_modules/vfile": {
|
| 17675 |
+
"version": "6.0.1",
|
| 17676 |
+
"resolved": "https://registry.npmmirror.com/vfile/-/vfile-6.0.1.tgz",
|
| 17677 |
+
"integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==",
|
| 17678 |
+
"dependencies": {
|
| 17679 |
+
"@types/unist": "^3.0.0",
|
| 17680 |
+
"unist-util-stringify-position": "^4.0.0",
|
| 17681 |
+
"vfile-message": "^4.0.0"
|
| 17682 |
+
}
|
| 17683 |
+
},
|
| 17684 |
+
"node_modules/vfile-message": {
|
| 17685 |
+
"version": "4.0.2",
|
| 17686 |
+
"resolved": "https://registry.npmmirror.com/vfile-message/-/vfile-message-4.0.2.tgz",
|
| 17687 |
+
"integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
|
| 17688 |
+
"dependencies": {
|
| 17689 |
+
"@types/unist": "^3.0.0",
|
| 17690 |
+
"unist-util-stringify-position": "^4.0.0"
|
| 17691 |
+
}
|
| 17692 |
+
},
|
| 17693 |
"node_modules/vite": {
|
| 17694 |
"version": "4.3.1",
|
| 17695 |
"resolved": "https://registry.npmmirror.com/vite/-/vite-4.3.1.tgz",
|
|
|
|
| 18066 |
"engines": {
|
| 18067 |
"node": ">=10"
|
| 18068 |
}
|
| 18069 |
+
},
|
| 18070 |
+
"node_modules/zwitch": {
|
| 18071 |
+
"version": "2.0.4",
|
| 18072 |
+
"resolved": "https://registry.npmmirror.com/zwitch/-/zwitch-2.0.4.tgz",
|
| 18073 |
+
"integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="
|
| 18074 |
}
|
| 18075 |
}
|
| 18076 |
}
|
web/package.json
CHANGED
|
@@ -25,8 +25,11 @@
|
|
| 25 |
"react-chat-elements": "^12.0.13",
|
| 26 |
"react-i18next": "^14.0.0",
|
| 27 |
"react-infinite-scroll-component": "^6.1.0",
|
|
|
|
|
|
|
| 28 |
"umi": "^4.0.90",
|
| 29 |
"umi-request": "^1.4.0",
|
|
|
|
| 30 |
"uuid": "^9.0.1"
|
| 31 |
},
|
| 32 |
"devDependencies": {
|
|
|
|
| 25 |
"react-chat-elements": "^12.0.13",
|
| 26 |
"react-i18next": "^14.0.0",
|
| 27 |
"react-infinite-scroll-component": "^6.1.0",
|
| 28 |
+
"react-markdown": "^9.0.1",
|
| 29 |
+
"react-string-replace": "^1.1.1",
|
| 30 |
"umi": "^4.0.90",
|
| 31 |
"umi-request": "^1.4.0",
|
| 32 |
+
"unist-util-visit-parents": "^6.0.1",
|
| 33 |
"uuid": "^9.0.1"
|
| 34 |
},
|
| 35 |
"devDependencies": {
|
web/src/assets/svg/assistant.svg
ADDED
|
|
web/src/hooks/userSettingHook.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { IUserInfo } from '@/interfaces/database/userSetting';
|
| 2 |
+
import { useCallback, useEffect } from 'react';
|
| 3 |
+
import { useDispatch, useSelector } from 'umi';
|
| 4 |
+
|
| 5 |
+
export const useFetchUserInfo = () => {
|
| 6 |
+
const dispatch = useDispatch();
|
| 7 |
+
const fetchUserInfo = useCallback(() => {
|
| 8 |
+
dispatch({ type: 'settingModel/getUserInfo' });
|
| 9 |
+
}, [dispatch]);
|
| 10 |
+
|
| 11 |
+
useEffect(() => {
|
| 12 |
+
fetchUserInfo();
|
| 13 |
+
}, [fetchUserInfo]);
|
| 14 |
+
};
|
| 15 |
+
|
| 16 |
+
export const useSelectUserInfo = () => {
|
| 17 |
+
const userInfo: IUserInfo = useSelector(
|
| 18 |
+
(state: any) => state.settingModel.userInfo,
|
| 19 |
+
);
|
| 20 |
+
|
| 21 |
+
return userInfo;
|
| 22 |
+
};
|
web/src/interfaces/database/chat.ts
CHANGED
|
@@ -54,7 +54,7 @@ export interface IConversation {
|
|
| 54 |
dialog_id: string;
|
| 55 |
id: string;
|
| 56 |
message: Message[];
|
| 57 |
-
reference:
|
| 58 |
name: string;
|
| 59 |
update_date: string;
|
| 60 |
update_time: number;
|
|
@@ -64,3 +64,29 @@ export interface Message {
|
|
| 64 |
content: string;
|
| 65 |
role: MessageType;
|
| 66 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
dialog_id: string;
|
| 55 |
id: string;
|
| 56 |
message: Message[];
|
| 57 |
+
reference: IReference[];
|
| 58 |
name: string;
|
| 59 |
update_date: string;
|
| 60 |
update_time: number;
|
|
|
|
| 64 |
content: string;
|
| 65 |
role: MessageType;
|
| 66 |
}
|
| 67 |
+
|
| 68 |
+
export interface IReference {
|
| 69 |
+
chunks: Chunk[];
|
| 70 |
+
doc_aggs: Docagg[];
|
| 71 |
+
total: number;
|
| 72 |
+
}
|
| 73 |
+
|
| 74 |
+
interface Docagg {
|
| 75 |
+
count: number;
|
| 76 |
+
doc_id: string;
|
| 77 |
+
doc_name: string;
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
interface Chunk {
|
| 81 |
+
chunk_id: string;
|
| 82 |
+
content_ltks: string;
|
| 83 |
+
content_with_weight: string;
|
| 84 |
+
doc_id: string;
|
| 85 |
+
docnm_kwd: string;
|
| 86 |
+
img_id: string;
|
| 87 |
+
important_kwd: any[];
|
| 88 |
+
kb_id: string;
|
| 89 |
+
similarity: number;
|
| 90 |
+
term_similarity: number;
|
| 91 |
+
vector_similarity: number;
|
| 92 |
+
}
|
web/src/interfaces/database/userSetting.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
export interface IUserInfo {
|
| 2 |
+
access_token: string;
|
| 3 |
+
avatar?: any;
|
| 4 |
+
color_schema: string;
|
| 5 |
+
create_date: string;
|
| 6 |
+
create_time: number;
|
| 7 |
+
email: string;
|
| 8 |
+
id: string;
|
| 9 |
+
is_active: string;
|
| 10 |
+
is_anonymous: string;
|
| 11 |
+
is_authenticated: string;
|
| 12 |
+
is_superuser: boolean;
|
| 13 |
+
language: string;
|
| 14 |
+
last_login_time: string;
|
| 15 |
+
login_channel: string;
|
| 16 |
+
nickname: string;
|
| 17 |
+
password: string;
|
| 18 |
+
status: string;
|
| 19 |
+
update_date: string;
|
| 20 |
+
update_time: number;
|
| 21 |
+
}
|
web/src/layouts/components/header/index.tsx
CHANGED
|
@@ -19,17 +19,20 @@ const RagHeader = () => {
|
|
| 19 |
const navigate = useNavigate();
|
| 20 |
const { pathname } = useLocation();
|
| 21 |
|
| 22 |
-
const tagsData =
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
|
|
|
|
|
|
|
|
|
| 27 |
|
| 28 |
const currentPath = useMemo(() => {
|
| 29 |
return (
|
| 30 |
tagsData.find((x) => pathname.startsWith(x.path))?.name || 'knowledge'
|
| 31 |
);
|
| 32 |
-
}, [pathname]);
|
| 33 |
|
| 34 |
const handleChange = (path: string) => {
|
| 35 |
navigate(path);
|
|
@@ -48,7 +51,7 @@ const RagHeader = () => {
|
|
| 48 |
>
|
| 49 |
<Space size={12}>
|
| 50 |
<Logo className={styles.appIcon}></Logo>
|
| 51 |
-
<label className={styles.appName}>
|
| 52 |
</Space>
|
| 53 |
<Space size={[0, 8]} wrap>
|
| 54 |
<Radio.Group
|
|
|
|
| 19 |
const navigate = useNavigate();
|
| 20 |
const { pathname } = useLocation();
|
| 21 |
|
| 22 |
+
const tagsData = useMemo(
|
| 23 |
+
() => [
|
| 24 |
+
{ path: '/knowledge', name: 'Knowledge Base', icon: KnowledgeBaseIcon },
|
| 25 |
+
{ path: '/chat', name: 'Chat', icon: StarIon },
|
| 26 |
+
{ path: '/file', name: 'File Management', icon: FileIcon },
|
| 27 |
+
],
|
| 28 |
+
[],
|
| 29 |
+
);
|
| 30 |
|
| 31 |
const currentPath = useMemo(() => {
|
| 32 |
return (
|
| 33 |
tagsData.find((x) => pathname.startsWith(x.path))?.name || 'knowledge'
|
| 34 |
);
|
| 35 |
+
}, [pathname, tagsData]);
|
| 36 |
|
| 37 |
const handleChange = (path: string) => {
|
| 38 |
navigate(path);
|
|
|
|
| 51 |
>
|
| 52 |
<Space size={12}>
|
| 53 |
<Logo className={styles.appIcon}></Logo>
|
| 54 |
+
<label className={styles.appName}>RagFlow</label>
|
| 55 |
</Space>
|
| 56 |
<Space size={[0, 8]} wrap>
|
| 57 |
<Radio.Group
|
web/src/layouts/components/user/index.tsx
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
|
|
| 1 |
import authorizationUtil from '@/utils/authorizationUtil';
|
| 2 |
import type { MenuProps } from 'antd';
|
| 3 |
import { Avatar, Button, Dropdown } from 'antd';
|
|
@@ -7,6 +8,7 @@ import { history } from 'umi';
|
|
| 7 |
|
| 8 |
const App: React.FC = () => {
|
| 9 |
const { t } = useTranslation();
|
|
|
|
| 10 |
|
| 11 |
const logout = () => {
|
| 12 |
authorizationUtil.removeAll();
|
|
@@ -36,13 +38,18 @@ const App: React.FC = () => {
|
|
| 36 |
),
|
| 37 |
},
|
| 38 |
];
|
| 39 |
-
}, []);
|
|
|
|
|
|
|
| 40 |
|
| 41 |
return (
|
| 42 |
<Dropdown menu={{ items }} placement="bottomLeft" arrow>
|
| 43 |
<Avatar
|
| 44 |
size={32}
|
| 45 |
-
src=
|
|
|
|
|
|
|
|
|
|
| 46 |
/>
|
| 47 |
</Dropdown>
|
| 48 |
);
|
|
|
|
| 1 |
+
import { useFetchUserInfo, useSelectUserInfo } from '@/hooks/userSettingHook';
|
| 2 |
import authorizationUtil from '@/utils/authorizationUtil';
|
| 3 |
import type { MenuProps } from 'antd';
|
| 4 |
import { Avatar, Button, Dropdown } from 'antd';
|
|
|
|
| 8 |
|
| 9 |
const App: React.FC = () => {
|
| 10 |
const { t } = useTranslation();
|
| 11 |
+
const userInfo = useSelectUserInfo();
|
| 12 |
|
| 13 |
const logout = () => {
|
| 14 |
authorizationUtil.removeAll();
|
|
|
|
| 38 |
),
|
| 39 |
},
|
| 40 |
];
|
| 41 |
+
}, [t]);
|
| 42 |
+
|
| 43 |
+
useFetchUserInfo();
|
| 44 |
|
| 45 |
return (
|
| 46 |
<Dropdown menu={{ items }} placement="bottomLeft" arrow>
|
| 47 |
<Avatar
|
| 48 |
size={32}
|
| 49 |
+
src={
|
| 50 |
+
userInfo.avatar ??
|
| 51 |
+
'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png'
|
| 52 |
+
}
|
| 53 |
/>
|
| 54 |
</Dropdown>
|
| 55 |
);
|
web/src/pages/chat/chat-container/index.less
CHANGED
|
@@ -1,11 +1,34 @@
|
|
| 1 |
.chatContainer {
|
| 2 |
padding: 0 24px 24px;
|
|
|
|
|
|
|
|
|
|
| 3 |
}
|
| 4 |
|
| 5 |
.messageItem {
|
| 6 |
-
|
|
|
|
| 7 |
display: inline-block;
|
| 8 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
}
|
| 10 |
}
|
| 11 |
|
|
|
|
| 1 |
.chatContainer {
|
| 2 |
padding: 0 24px 24px;
|
| 3 |
+
.messageContainer {
|
| 4 |
+
overflow-y: auto;
|
| 5 |
+
}
|
| 6 |
}
|
| 7 |
|
| 8 |
.messageItem {
|
| 9 |
+
padding: 24px 0;
|
| 10 |
+
.messageItemSection {
|
| 11 |
display: inline-block;
|
| 12 |
+
}
|
| 13 |
+
.messageItemSectionLeft {
|
| 14 |
+
width: 70%;
|
| 15 |
+
}
|
| 16 |
+
.messageItemSectionRight {
|
| 17 |
+
width: 30%;
|
| 18 |
+
}
|
| 19 |
+
.messageItemContent {
|
| 20 |
+
display: inline-flex;
|
| 21 |
+
gap: 20px;
|
| 22 |
+
}
|
| 23 |
+
.messageItemContentReverse {
|
| 24 |
+
flex-direction: row-reverse;
|
| 25 |
+
}
|
| 26 |
+
.messageText {
|
| 27 |
+
padding: 0 14px;
|
| 28 |
+
background-color: rgba(249, 250, 251, 1);
|
| 29 |
+
}
|
| 30 |
+
.referenceIcon {
|
| 31 |
+
padding: 0 6px;
|
| 32 |
}
|
| 33 |
}
|
| 34 |
|
web/src/pages/chat/chat-container/index.tsx
CHANGED
|
@@ -1,17 +1,59 @@
|
|
| 1 |
-
import {
|
| 2 |
-
import {
|
| 3 |
-
|
| 4 |
-
import {
|
|
|
|
|
|
|
| 5 |
import classNames from 'classnames';
|
|
|
|
|
|
|
| 6 |
import { useFetchConversation, useSendMessage } from '../hooks';
|
| 7 |
-
|
| 8 |
-
import { MessageType } from '@/constants/chat';
|
| 9 |
import { IClientConversation } from '../interface';
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
import styles from './index.less';
|
| 11 |
|
| 12 |
-
const
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
|
| 14 |
-
const MessageItem = ({ item }: { item: Message }) => {
|
| 15 |
return (
|
| 16 |
<div
|
| 17 |
className={classNames(styles.messageItem, {
|
|
@@ -19,11 +61,50 @@ const MessageItem = ({ item }: { item: Message }) => {
|
|
| 19 |
[styles.messageItemRight]: item.role === MessageType.User,
|
| 20 |
})}
|
| 21 |
>
|
| 22 |
-
<
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
</div>
|
| 28 |
);
|
| 29 |
};
|
|
@@ -32,9 +113,13 @@ const ChatContainer = () => {
|
|
| 32 |
const [value, setValue] = useState('');
|
| 33 |
const conversation: IClientConversation = useFetchConversation();
|
| 34 |
const { sendMessage } = useSendMessage();
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
|
| 36 |
const handlePressEnter = () => {
|
| 37 |
-
|
| 38 |
sendMessage(value);
|
| 39 |
};
|
| 40 |
|
|
@@ -44,17 +129,23 @@ const ChatContainer = () => {
|
|
| 44 |
|
| 45 |
return (
|
| 46 |
<Flex flex={1} className={styles.chatContainer} vertical>
|
| 47 |
-
<Flex flex={1} vertical>
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
</Flex>
|
| 52 |
<Input
|
| 53 |
size="large"
|
| 54 |
placeholder="Message Resume Assistant..."
|
| 55 |
value={value}
|
| 56 |
suffix={
|
| 57 |
-
<Button type="primary" onClick={handlePressEnter}>
|
| 58 |
Send
|
| 59 |
</Button>
|
| 60 |
}
|
|
|
|
| 1 |
+
import { ReactComponent as AssistantIcon } from '@/assets/svg/assistant.svg';
|
| 2 |
+
import { MessageType } from '@/constants/chat';
|
| 3 |
+
import { useOneNamespaceEffectsLoading } from '@/hooks/storeHooks';
|
| 4 |
+
import { useSelectUserInfo } from '@/hooks/userSettingHook';
|
| 5 |
+
import { IReference, Message } from '@/interfaces/database/chat';
|
| 6 |
+
import { Avatar, Button, Flex, Input, Popover } from 'antd';
|
| 7 |
import classNames from 'classnames';
|
| 8 |
+
import { ChangeEventHandler, useCallback, useMemo, useState } from 'react';
|
| 9 |
+
import reactStringReplace from 'react-string-replace';
|
| 10 |
import { useFetchConversation, useSendMessage } from '../hooks';
|
|
|
|
|
|
|
| 11 |
import { IClientConversation } from '../interface';
|
| 12 |
+
|
| 13 |
+
import { InfoCircleOutlined } from '@ant-design/icons';
|
| 14 |
+
import Markdown from 'react-markdown';
|
| 15 |
+
import { visitParents } from 'unist-util-visit-parents';
|
| 16 |
import styles from './index.less';
|
| 17 |
|
| 18 |
+
const rehypeWrapReference = () => {
|
| 19 |
+
return function wrapTextTransform(tree: any) {
|
| 20 |
+
visitParents(tree, 'text', (node, ancestors) => {
|
| 21 |
+
if (ancestors.at(-1).tagName !== 'custom-typography') {
|
| 22 |
+
node.type = 'element';
|
| 23 |
+
node.tagName = 'custom-typography';
|
| 24 |
+
node.properties = {};
|
| 25 |
+
node.children = [{ type: 'text', value: node.value }];
|
| 26 |
+
}
|
| 27 |
+
});
|
| 28 |
+
};
|
| 29 |
+
};
|
| 30 |
+
|
| 31 |
+
const MessageItem = ({ item }: { item: Message; references: IReference[] }) => {
|
| 32 |
+
const userInfo = useSelectUserInfo();
|
| 33 |
+
|
| 34 |
+
const popoverContent = useMemo(
|
| 35 |
+
() => (
|
| 36 |
+
<div>
|
| 37 |
+
<p>Content</p>
|
| 38 |
+
<p>Content</p>
|
| 39 |
+
</div>
|
| 40 |
+
),
|
| 41 |
+
[],
|
| 42 |
+
);
|
| 43 |
+
|
| 44 |
+
const renderReference = useCallback(
|
| 45 |
+
(text: string) => {
|
| 46 |
+
return reactStringReplace(text, /#{2}\d{1,}\${2}/g, (match, i) => {
|
| 47 |
+
return (
|
| 48 |
+
<Popover content={popoverContent}>
|
| 49 |
+
<InfoCircleOutlined key={i} className={styles.referenceIcon} />
|
| 50 |
+
</Popover>
|
| 51 |
+
);
|
| 52 |
+
});
|
| 53 |
+
},
|
| 54 |
+
[popoverContent],
|
| 55 |
+
);
|
| 56 |
|
|
|
|
| 57 |
return (
|
| 58 |
<div
|
| 59 |
className={classNames(styles.messageItem, {
|
|
|
|
| 61 |
[styles.messageItemRight]: item.role === MessageType.User,
|
| 62 |
})}
|
| 63 |
>
|
| 64 |
+
<section
|
| 65 |
+
className={classNames(styles.messageItemSection, {
|
| 66 |
+
[styles.messageItemSectionLeft]: item.role === MessageType.Assistant,
|
| 67 |
+
[styles.messageItemSectionRight]: item.role === MessageType.User,
|
| 68 |
+
})}
|
| 69 |
+
>
|
| 70 |
+
<div
|
| 71 |
+
className={classNames(styles.messageItemContent, {
|
| 72 |
+
[styles.messageItemContentReverse]: item.role === MessageType.User,
|
| 73 |
+
})}
|
| 74 |
+
>
|
| 75 |
+
{item.role === MessageType.User ? (
|
| 76 |
+
userInfo.avatar ?? (
|
| 77 |
+
<Avatar
|
| 78 |
+
size={40}
|
| 79 |
+
src={
|
| 80 |
+
userInfo.avatar ??
|
| 81 |
+
'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png'
|
| 82 |
+
}
|
| 83 |
+
/>
|
| 84 |
+
)
|
| 85 |
+
) : (
|
| 86 |
+
<AssistantIcon></AssistantIcon>
|
| 87 |
+
)}
|
| 88 |
+
<Flex vertical gap={8} flex={1}>
|
| 89 |
+
<b>
|
| 90 |
+
{item.role === MessageType.Assistant ? 'Resume Assistant' : 'You'}
|
| 91 |
+
</b>
|
| 92 |
+
<div className={styles.messageText}>
|
| 93 |
+
<Markdown
|
| 94 |
+
rehypePlugins={[rehypeWrapReference]}
|
| 95 |
+
components={
|
| 96 |
+
{
|
| 97 |
+
'custom-typography': ({ children }: { children: string }) =>
|
| 98 |
+
renderReference(children),
|
| 99 |
+
} as any
|
| 100 |
+
}
|
| 101 |
+
>
|
| 102 |
+
{item.content}
|
| 103 |
+
</Markdown>
|
| 104 |
+
</div>
|
| 105 |
+
</Flex>
|
| 106 |
+
</div>
|
| 107 |
+
</section>
|
| 108 |
</div>
|
| 109 |
);
|
| 110 |
};
|
|
|
|
| 113 |
const [value, setValue] = useState('');
|
| 114 |
const conversation: IClientConversation = useFetchConversation();
|
| 115 |
const { sendMessage } = useSendMessage();
|
| 116 |
+
const loading = useOneNamespaceEffectsLoading('chatModel', [
|
| 117 |
+
'completeConversation',
|
| 118 |
+
'getConversation',
|
| 119 |
+
]);
|
| 120 |
|
| 121 |
const handlePressEnter = () => {
|
| 122 |
+
setValue('');
|
| 123 |
sendMessage(value);
|
| 124 |
};
|
| 125 |
|
|
|
|
| 129 |
|
| 130 |
return (
|
| 131 |
<Flex flex={1} className={styles.chatContainer} vertical>
|
| 132 |
+
<Flex flex={1} vertical className={styles.messageContainer}>
|
| 133 |
+
<div>
|
| 134 |
+
{conversation?.message?.map((message) => (
|
| 135 |
+
<MessageItem
|
| 136 |
+
key={message.id}
|
| 137 |
+
item={message}
|
| 138 |
+
references={conversation.reference}
|
| 139 |
+
></MessageItem>
|
| 140 |
+
))}
|
| 141 |
+
</div>
|
| 142 |
</Flex>
|
| 143 |
<Input
|
| 144 |
size="large"
|
| 145 |
placeholder="Message Resume Assistant..."
|
| 146 |
value={value}
|
| 147 |
suffix={
|
| 148 |
+
<Button type="primary" onClick={handlePressEnter} loading={loading}>
|
| 149 |
Send
|
| 150 |
</Button>
|
| 151 |
}
|
web/src/pages/chat/hooks.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
| 1 |
import showDeleteConfirm from '@/components/deleting-confirm';
|
| 2 |
import { MessageType } from '@/constants/chat';
|
| 3 |
-
import { IDialog } from '@/interfaces/database/chat';
|
| 4 |
import omit from 'lodash/omit';
|
| 5 |
-
import { useCallback, useEffect, useMemo } from 'react';
|
| 6 |
import { useDispatch, useSearchParams, useSelector } from 'umi';
|
| 7 |
import { v4 as uuid } from 'uuid';
|
| 8 |
import { ChatSearchParams, EmptyConversationId } from './constants';
|
|
@@ -11,6 +11,8 @@ import {
|
|
| 11 |
IMessage,
|
| 12 |
VariableTableDataType,
|
| 13 |
} from './interface';
|
|
|
|
|
|
|
| 14 |
|
| 15 |
export const useFetchDialogList = () => {
|
| 16 |
const dispatch = useDispatch();
|
|
@@ -137,16 +139,46 @@ export const useRemoveDialog = () => {
|
|
| 137 |
return { onRemoveDialog };
|
| 138 |
};
|
| 139 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 140 |
export const useClickDialogCard = () => {
|
| 141 |
const [currentQueryParameters, setSearchParams] = useSearchParams();
|
| 142 |
|
| 143 |
const newQueryParameters: URLSearchParams = useMemo(() => {
|
| 144 |
-
return new URLSearchParams(
|
| 145 |
-
}, [
|
| 146 |
|
| 147 |
const handleClickDialog = useCallback(
|
| 148 |
(dialogId: string) => {
|
| 149 |
newQueryParameters.set(ChatSearchParams.DialogId, dialogId);
|
|
|
|
|
|
|
|
|
|
|
|
|
| 150 |
setSearchParams(newQueryParameters);
|
| 151 |
},
|
| 152 |
[newQueryParameters, setSearchParams],
|
|
@@ -155,16 +187,6 @@ export const useClickDialogCard = () => {
|
|
| 155 |
return { handleClickDialog };
|
| 156 |
};
|
| 157 |
|
| 158 |
-
export const useGetChatSearchParams = () => {
|
| 159 |
-
const [currentQueryParameters] = useSearchParams();
|
| 160 |
-
|
| 161 |
-
return {
|
| 162 |
-
dialogId: currentQueryParameters.get(ChatSearchParams.DialogId) || '',
|
| 163 |
-
conversationId:
|
| 164 |
-
currentQueryParameters.get(ChatSearchParams.ConversationId) || '',
|
| 165 |
-
};
|
| 166 |
-
};
|
| 167 |
-
|
| 168 |
export const useSelectFirstDialogOnMount = () => {
|
| 169 |
const dialogList = useFetchDialogList();
|
| 170 |
const { dialogId } = useGetChatSearchParams();
|
|
@@ -182,70 +204,42 @@ export const useSelectFirstDialogOnMount = () => {
|
|
| 182 |
|
| 183 |
//#region conversation
|
| 184 |
|
| 185 |
-
export const useFetchConversationList = (dialogId?: string) => {
|
| 186 |
-
const dispatch = useDispatch();
|
| 187 |
-
const conversationList: any[] = useSelector(
|
| 188 |
-
(state: any) => state.chatModel.conversationList,
|
| 189 |
-
);
|
| 190 |
-
|
| 191 |
-
const fetchConversationList = useCallback(() => {
|
| 192 |
-
if (dialogId) {
|
| 193 |
-
dispatch({
|
| 194 |
-
type: 'chatModel/listConversation',
|
| 195 |
-
payload: { dialog_id: dialogId },
|
| 196 |
-
});
|
| 197 |
-
}
|
| 198 |
-
}, [dispatch, dialogId]);
|
| 199 |
-
|
| 200 |
-
useEffect(() => {
|
| 201 |
-
fetchConversationList();
|
| 202 |
-
}, [fetchConversationList]);
|
| 203 |
-
|
| 204 |
-
return conversationList;
|
| 205 |
-
};
|
| 206 |
-
|
| 207 |
-
export const useClickConversationCard = () => {
|
| 208 |
-
const [currentQueryParameters, setSearchParams] = useSearchParams();
|
| 209 |
-
const newQueryParameters: URLSearchParams = new URLSearchParams(
|
| 210 |
-
currentQueryParameters.toString(),
|
| 211 |
-
);
|
| 212 |
-
|
| 213 |
-
const handleClickConversation = (conversationId: string) => {
|
| 214 |
-
newQueryParameters.set(ChatSearchParams.ConversationId, conversationId);
|
| 215 |
-
setSearchParams(newQueryParameters);
|
| 216 |
-
};
|
| 217 |
-
|
| 218 |
-
return { handleClickConversation };
|
| 219 |
-
};
|
| 220 |
-
|
| 221 |
export const useCreateTemporaryConversation = () => {
|
| 222 |
const dispatch = useDispatch();
|
| 223 |
const { dialogId } = useGetChatSearchParams();
|
| 224 |
const { handleClickConversation } = useClickConversationCard();
|
| 225 |
let chatModel = useSelector((state: any) => state.chatModel);
|
| 226 |
-
|
|
|
|
| 227 |
IClientConversation,
|
| 228 |
'id' | 'message' | 'name' | 'dialog_id'
|
| 229 |
> = chatModel.currentConversation;
|
| 230 |
-
let conversationList: IClientConversation[] = chatModel.conversationList;
|
| 231 |
|
| 232 |
-
const
|
| 233 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 234 |
if (messages.some((x) => x.id === EmptyConversationId)) {
|
| 235 |
return;
|
| 236 |
}
|
| 237 |
-
messages.
|
| 238 |
id: EmptyConversationId,
|
| 239 |
-
content:
|
| 240 |
role: MessageType.Assistant,
|
| 241 |
});
|
| 242 |
|
|
|
|
|
|
|
| 243 |
// It’s the back-end data.
|
| 244 |
if ('id' in currentConversation) {
|
| 245 |
-
|
| 246 |
} else {
|
| 247 |
// client data
|
| 248 |
-
|
| 249 |
id: EmptyConversationId,
|
| 250 |
name: 'New conversation',
|
| 251 |
dialog_id: dialogId,
|
|
@@ -255,23 +249,105 @@ export const useCreateTemporaryConversation = () => {
|
|
| 255 |
|
| 256 |
const nextConversationList = [...conversationList];
|
| 257 |
|
| 258 |
-
nextConversationList.
|
|
|
|
|
|
|
| 259 |
|
| 260 |
-
|
| 261 |
-
type: 'chatModel/setCurrentConversation',
|
| 262 |
-
payload: currentConversation,
|
| 263 |
-
});
|
| 264 |
|
| 265 |
dispatch({
|
| 266 |
type: 'chatModel/setConversationList',
|
| 267 |
payload: nextConversationList,
|
| 268 |
});
|
| 269 |
handleClickConversation(EmptyConversationId);
|
| 270 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 271 |
|
| 272 |
return { createTemporaryConversation };
|
| 273 |
};
|
| 274 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 275 |
export const useSetConversation = () => {
|
| 276 |
const dispatch = useDispatch();
|
| 277 |
const { dialogId } = useGetChatSearchParams();
|
|
@@ -302,17 +378,20 @@ export const useFetchConversation = () => {
|
|
| 302 |
const conversation = useSelector(
|
| 303 |
(state: any) => state.chatModel.currentConversation,
|
| 304 |
);
|
|
|
|
| 305 |
|
| 306 |
const fetchConversation = useCallback(() => {
|
| 307 |
-
if (conversationId
|
| 308 |
-
dispatch({
|
| 309 |
type: 'chatModel/getConversation',
|
| 310 |
payload: {
|
| 311 |
conversation_id: conversationId,
|
| 312 |
},
|
| 313 |
});
|
|
|
|
|
|
|
| 314 |
}
|
| 315 |
-
}, [dispatch, conversationId]);
|
| 316 |
|
| 317 |
useEffect(() => {
|
| 318 |
fetchConversation();
|
|
@@ -347,7 +426,7 @@ export const useSendMessage = () => {
|
|
| 347 |
};
|
| 348 |
|
| 349 |
const handleSendMessage = async (message: string) => {
|
| 350 |
-
if (conversationId !==
|
| 351 |
sendMessage(message);
|
| 352 |
} else {
|
| 353 |
const data = await setConversation(message);
|
|
|
|
| 1 |
import showDeleteConfirm from '@/components/deleting-confirm';
|
| 2 |
import { MessageType } from '@/constants/chat';
|
| 3 |
+
import { IConversation, IDialog } from '@/interfaces/database/chat';
|
| 4 |
import omit from 'lodash/omit';
|
| 5 |
+
import { useCallback, useEffect, useMemo, useState } from 'react';
|
| 6 |
import { useDispatch, useSearchParams, useSelector } from 'umi';
|
| 7 |
import { v4 as uuid } from 'uuid';
|
| 8 |
import { ChatSearchParams, EmptyConversationId } from './constants';
|
|
|
|
| 11 |
IMessage,
|
| 12 |
VariableTableDataType,
|
| 13 |
} from './interface';
|
| 14 |
+
import { ChatModelState } from './model';
|
| 15 |
+
import { isConversationIdNotExist } from './utils';
|
| 16 |
|
| 17 |
export const useFetchDialogList = () => {
|
| 18 |
const dispatch = useDispatch();
|
|
|
|
| 139 |
return { onRemoveDialog };
|
| 140 |
};
|
| 141 |
|
| 142 |
+
export const useGetChatSearchParams = () => {
|
| 143 |
+
const [currentQueryParameters] = useSearchParams();
|
| 144 |
+
|
| 145 |
+
return {
|
| 146 |
+
dialogId: currentQueryParameters.get(ChatSearchParams.DialogId) || '',
|
| 147 |
+
conversationId:
|
| 148 |
+
currentQueryParameters.get(ChatSearchParams.ConversationId) || '',
|
| 149 |
+
};
|
| 150 |
+
};
|
| 151 |
+
|
| 152 |
+
export const useSetCurrentConversation = () => {
|
| 153 |
+
const dispatch = useDispatch();
|
| 154 |
+
|
| 155 |
+
const setCurrentConversation = useCallback(
|
| 156 |
+
(currentConversation: IClientConversation) => {
|
| 157 |
+
dispatch({
|
| 158 |
+
type: 'chatModel/setCurrentConversation',
|
| 159 |
+
payload: currentConversation,
|
| 160 |
+
});
|
| 161 |
+
},
|
| 162 |
+
[dispatch],
|
| 163 |
+
);
|
| 164 |
+
|
| 165 |
+
return setCurrentConversation;
|
| 166 |
+
};
|
| 167 |
+
|
| 168 |
export const useClickDialogCard = () => {
|
| 169 |
const [currentQueryParameters, setSearchParams] = useSearchParams();
|
| 170 |
|
| 171 |
const newQueryParameters: URLSearchParams = useMemo(() => {
|
| 172 |
+
return new URLSearchParams();
|
| 173 |
+
}, []);
|
| 174 |
|
| 175 |
const handleClickDialog = useCallback(
|
| 176 |
(dialogId: string) => {
|
| 177 |
newQueryParameters.set(ChatSearchParams.DialogId, dialogId);
|
| 178 |
+
// newQueryParameters.set(
|
| 179 |
+
// ChatSearchParams.ConversationId,
|
| 180 |
+
// EmptyConversationId,
|
| 181 |
+
// );
|
| 182 |
setSearchParams(newQueryParameters);
|
| 183 |
},
|
| 184 |
[newQueryParameters, setSearchParams],
|
|
|
|
| 187 |
return { handleClickDialog };
|
| 188 |
};
|
| 189 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 190 |
export const useSelectFirstDialogOnMount = () => {
|
| 191 |
const dialogList = useFetchDialogList();
|
| 192 |
const { dialogId } = useGetChatSearchParams();
|
|
|
|
| 204 |
|
| 205 |
//#region conversation
|
| 206 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 207 |
export const useCreateTemporaryConversation = () => {
|
| 208 |
const dispatch = useDispatch();
|
| 209 |
const { dialogId } = useGetChatSearchParams();
|
| 210 |
const { handleClickConversation } = useClickConversationCard();
|
| 211 |
let chatModel = useSelector((state: any) => state.chatModel);
|
| 212 |
+
|
| 213 |
+
const currentConversation: Pick<
|
| 214 |
IClientConversation,
|
| 215 |
'id' | 'message' | 'name' | 'dialog_id'
|
| 216 |
> = chatModel.currentConversation;
|
|
|
|
| 217 |
|
| 218 |
+
const conversationList: IClientConversation[] = chatModel.conversationList;
|
| 219 |
+
const currentDialog: IDialog = chatModel.currentDialog;
|
| 220 |
+
|
| 221 |
+
const setCurrentConversation = useSetCurrentConversation();
|
| 222 |
+
|
| 223 |
+
const createTemporaryConversation = useCallback(() => {
|
| 224 |
+
const firstConversation = conversationList[0];
|
| 225 |
+
const messages = [...(firstConversation?.message ?? [])];
|
| 226 |
if (messages.some((x) => x.id === EmptyConversationId)) {
|
| 227 |
return;
|
| 228 |
}
|
| 229 |
+
messages.push({
|
| 230 |
id: EmptyConversationId,
|
| 231 |
+
content: currentDialog?.prompt_config?.prologue ?? '',
|
| 232 |
role: MessageType.Assistant,
|
| 233 |
});
|
| 234 |
|
| 235 |
+
let nextCurrentConversation = currentConversation;
|
| 236 |
+
|
| 237 |
// It’s the back-end data.
|
| 238 |
if ('id' in currentConversation) {
|
| 239 |
+
nextCurrentConversation = { ...currentConversation, message: messages };
|
| 240 |
} else {
|
| 241 |
// client data
|
| 242 |
+
nextCurrentConversation = {
|
| 243 |
id: EmptyConversationId,
|
| 244 |
name: 'New conversation',
|
| 245 |
dialog_id: dialogId,
|
|
|
|
| 249 |
|
| 250 |
const nextConversationList = [...conversationList];
|
| 251 |
|
| 252 |
+
nextConversationList.unshift(
|
| 253 |
+
nextCurrentConversation as IClientConversation,
|
| 254 |
+
);
|
| 255 |
|
| 256 |
+
setCurrentConversation(nextCurrentConversation as IClientConversation);
|
|
|
|
|
|
|
|
|
|
| 257 |
|
| 258 |
dispatch({
|
| 259 |
type: 'chatModel/setConversationList',
|
| 260 |
payload: nextConversationList,
|
| 261 |
});
|
| 262 |
handleClickConversation(EmptyConversationId);
|
| 263 |
+
}, [
|
| 264 |
+
dispatch,
|
| 265 |
+
currentConversation,
|
| 266 |
+
dialogId,
|
| 267 |
+
setCurrentConversation,
|
| 268 |
+
handleClickConversation,
|
| 269 |
+
conversationList,
|
| 270 |
+
currentDialog,
|
| 271 |
+
]);
|
| 272 |
|
| 273 |
return { createTemporaryConversation };
|
| 274 |
};
|
| 275 |
|
| 276 |
+
export const useFetchConversationList = () => {
|
| 277 |
+
const dispatch = useDispatch();
|
| 278 |
+
const conversationList: any[] = useSelector(
|
| 279 |
+
(state: any) => state.chatModel.conversationList,
|
| 280 |
+
);
|
| 281 |
+
const { dialogId } = useGetChatSearchParams();
|
| 282 |
+
|
| 283 |
+
const fetchConversationList = useCallback(async () => {
|
| 284 |
+
if (dialogId) {
|
| 285 |
+
dispatch({
|
| 286 |
+
type: 'chatModel/listConversation',
|
| 287 |
+
payload: { dialog_id: dialogId },
|
| 288 |
+
});
|
| 289 |
+
}
|
| 290 |
+
}, [dispatch, dialogId]);
|
| 291 |
+
|
| 292 |
+
useEffect(() => {
|
| 293 |
+
fetchConversationList();
|
| 294 |
+
}, [fetchConversationList]);
|
| 295 |
+
|
| 296 |
+
return conversationList;
|
| 297 |
+
};
|
| 298 |
+
|
| 299 |
+
export const useSelectConversationList = () => {
|
| 300 |
+
const [list, setList] = useState<Array<IConversation>>([]);
|
| 301 |
+
let chatModel: ChatModelState = useSelector((state: any) => state.chatModel);
|
| 302 |
+
const { conversationList, currentDialog } = chatModel;
|
| 303 |
+
const { dialogId } = useGetChatSearchParams();
|
| 304 |
+
const prologue = currentDialog?.prompt_config?.prologue ?? '';
|
| 305 |
+
|
| 306 |
+
const addTemporaryConversation = useCallback(() => {
|
| 307 |
+
setList(() => {
|
| 308 |
+
const nextList = [
|
| 309 |
+
{
|
| 310 |
+
id: '',
|
| 311 |
+
name: 'New conversation',
|
| 312 |
+
dialog_id: dialogId,
|
| 313 |
+
message: [
|
| 314 |
+
{
|
| 315 |
+
content: prologue,
|
| 316 |
+
role: MessageType.Assistant,
|
| 317 |
+
},
|
| 318 |
+
],
|
| 319 |
+
} as IConversation,
|
| 320 |
+
...conversationList,
|
| 321 |
+
];
|
| 322 |
+
return nextList;
|
| 323 |
+
});
|
| 324 |
+
}, [conversationList, dialogId, prologue]);
|
| 325 |
+
|
| 326 |
+
useEffect(() => {
|
| 327 |
+
addTemporaryConversation();
|
| 328 |
+
}, [addTemporaryConversation]);
|
| 329 |
+
|
| 330 |
+
return { list, addTemporaryConversation };
|
| 331 |
+
};
|
| 332 |
+
|
| 333 |
+
export const useClickConversationCard = () => {
|
| 334 |
+
const [currentQueryParameters, setSearchParams] = useSearchParams();
|
| 335 |
+
const newQueryParameters: URLSearchParams = useMemo(
|
| 336 |
+
() => new URLSearchParams(currentQueryParameters.toString()),
|
| 337 |
+
[currentQueryParameters],
|
| 338 |
+
);
|
| 339 |
+
|
| 340 |
+
const handleClickConversation = useCallback(
|
| 341 |
+
(conversationId: string) => {
|
| 342 |
+
newQueryParameters.set(ChatSearchParams.ConversationId, conversationId);
|
| 343 |
+
setSearchParams(newQueryParameters);
|
| 344 |
+
},
|
| 345 |
+
[newQueryParameters, setSearchParams],
|
| 346 |
+
);
|
| 347 |
+
|
| 348 |
+
return { handleClickConversation };
|
| 349 |
+
};
|
| 350 |
+
|
| 351 |
export const useSetConversation = () => {
|
| 352 |
const dispatch = useDispatch();
|
| 353 |
const { dialogId } = useGetChatSearchParams();
|
|
|
|
| 378 |
const conversation = useSelector(
|
| 379 |
(state: any) => state.chatModel.currentConversation,
|
| 380 |
);
|
| 381 |
+
const setCurrentConversation = useSetCurrentConversation();
|
| 382 |
|
| 383 |
const fetchConversation = useCallback(() => {
|
| 384 |
+
if (isConversationIdNotExist(conversationId)) {
|
| 385 |
+
dispatch<any>({
|
| 386 |
type: 'chatModel/getConversation',
|
| 387 |
payload: {
|
| 388 |
conversation_id: conversationId,
|
| 389 |
},
|
| 390 |
});
|
| 391 |
+
} else {
|
| 392 |
+
setCurrentConversation({} as IClientConversation);
|
| 393 |
}
|
| 394 |
+
}, [dispatch, conversationId, setCurrentConversation]);
|
| 395 |
|
| 396 |
useEffect(() => {
|
| 397 |
fetchConversation();
|
|
|
|
| 426 |
};
|
| 427 |
|
| 428 |
const handleSendMessage = async (message: string) => {
|
| 429 |
+
if (conversationId !== '') {
|
| 430 |
sendMessage(message);
|
| 431 |
} else {
|
| 432 |
const data = await setConversation(message);
|
web/src/pages/chat/index.tsx
CHANGED
|
@@ -18,11 +18,11 @@ import ChatContainer from './chat-container';
|
|
| 18 |
import {
|
| 19 |
useClickConversationCard,
|
| 20 |
useClickDialogCard,
|
| 21 |
-
useCreateTemporaryConversation,
|
| 22 |
useFetchConversationList,
|
| 23 |
useFetchDialog,
|
| 24 |
useGetChatSearchParams,
|
| 25 |
useRemoveDialog,
|
|
|
|
| 26 |
useSelectFirstDialogOnMount,
|
| 27 |
useSetCurrentDialog,
|
| 28 |
} from './hooks';
|
|
@@ -38,12 +38,10 @@ const Chat = () => {
|
|
| 38 |
const { handleClickDialog } = useClickDialogCard();
|
| 39 |
const { handleClickConversation } = useClickConversationCard();
|
| 40 |
const { dialogId, conversationId } = useGetChatSearchParams();
|
| 41 |
-
const list =
|
| 42 |
-
|
| 43 |
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
const prologue = selectedDialog?.prompt_config?.prologue || '';
|
| 47 |
|
| 48 |
const handleAppCardEnter = (id: string) => () => {
|
| 49 |
setActivated(id);
|
|
@@ -69,8 +67,8 @@ const Chat = () => {
|
|
| 69 |
};
|
| 70 |
|
| 71 |
const handleCreateTemporaryConversation = useCallback(() => {
|
| 72 |
-
|
| 73 |
-
}, [
|
| 74 |
|
| 75 |
const items: MenuProps['items'] = [
|
| 76 |
{
|
|
@@ -112,6 +110,8 @@ const Chat = () => {
|
|
| 112 |
return appItems;
|
| 113 |
};
|
| 114 |
|
|
|
|
|
|
|
| 115 |
return (
|
| 116 |
<Flex className={styles.chatWrapper}>
|
| 117 |
<Flex className={styles.chatAppWrapper}>
|
|
@@ -171,7 +171,7 @@ const Chat = () => {
|
|
| 171 |
</Flex>
|
| 172 |
<Divider></Divider>
|
| 173 |
<Flex vertical gap={10} className={styles.chatTitleContent}>
|
| 174 |
-
{
|
| 175 |
<Card
|
| 176 |
key={x.id}
|
| 177 |
hoverable
|
|
|
|
| 18 |
import {
|
| 19 |
useClickConversationCard,
|
| 20 |
useClickDialogCard,
|
|
|
|
| 21 |
useFetchConversationList,
|
| 22 |
useFetchDialog,
|
| 23 |
useGetChatSearchParams,
|
| 24 |
useRemoveDialog,
|
| 25 |
+
useSelectConversationList,
|
| 26 |
useSelectFirstDialogOnMount,
|
| 27 |
useSetCurrentDialog,
|
| 28 |
} from './hooks';
|
|
|
|
| 38 |
const { handleClickDialog } = useClickDialogCard();
|
| 39 |
const { handleClickConversation } = useClickConversationCard();
|
| 40 |
const { dialogId, conversationId } = useGetChatSearchParams();
|
| 41 |
+
const { list: conversationList, addTemporaryConversation } =
|
| 42 |
+
useSelectConversationList();
|
| 43 |
|
| 44 |
+
useFetchDialog(dialogId, true);
|
|
|
|
|
|
|
| 45 |
|
| 46 |
const handleAppCardEnter = (id: string) => () => {
|
| 47 |
setActivated(id);
|
|
|
|
| 67 |
};
|
| 68 |
|
| 69 |
const handleCreateTemporaryConversation = useCallback(() => {
|
| 70 |
+
addTemporaryConversation();
|
| 71 |
+
}, [addTemporaryConversation]);
|
| 72 |
|
| 73 |
const items: MenuProps['items'] = [
|
| 74 |
{
|
|
|
|
| 110 |
return appItems;
|
| 111 |
};
|
| 112 |
|
| 113 |
+
useFetchConversationList();
|
| 114 |
+
|
| 115 |
return (
|
| 116 |
<Flex className={styles.chatWrapper}>
|
| 117 |
<Flex className={styles.chatAppWrapper}>
|
|
|
|
| 171 |
</Flex>
|
| 172 |
<Divider></Divider>
|
| 173 |
<Flex vertical gap={10} className={styles.chatTitleContent}>
|
| 174 |
+
{conversationList.map((x) => (
|
| 175 |
<Card
|
| 176 |
key={x.id}
|
| 177 |
hoverable
|
web/src/pages/chat/model.ts
CHANGED
|
@@ -48,10 +48,11 @@ const model: DvaModel<ChatModelState> = {
|
|
| 48 |
};
|
| 49 |
},
|
| 50 |
setCurrentConversation(state, { payload }) {
|
| 51 |
-
const messageList =
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
|
|
|
| 55 |
return {
|
| 56 |
...state,
|
| 57 |
currentConversation: { ...payload, message: messageList },
|
|
|
|
| 48 |
};
|
| 49 |
},
|
| 50 |
setCurrentConversation(state, { payload }) {
|
| 51 |
+
const messageList =
|
| 52 |
+
payload?.message?.map((x: Message | IMessage) => ({
|
| 53 |
+
...x,
|
| 54 |
+
id: 'id' in x ? x.id : uuid(),
|
| 55 |
+
})) ?? [];
|
| 56 |
return {
|
| 57 |
...state,
|
| 58 |
currentConversation: { ...payload, message: messageList },
|
web/src/pages/chat/utils.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
import { variableEnabledFieldMap } from './constants';
|
| 2 |
|
| 3 |
export const excludeUnEnabledVariables = (values: any) => {
|
| 4 |
const unEnabledFields: Array<keyof typeof variableEnabledFieldMap> =
|
|
@@ -10,3 +10,7 @@ export const excludeUnEnabledVariables = (values: any) => {
|
|
| 10 |
(key) => `llm_setting.${variableEnabledFieldMap[key]}`,
|
| 11 |
);
|
| 12 |
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { EmptyConversationId, variableEnabledFieldMap } from './constants';
|
| 2 |
|
| 3 |
export const excludeUnEnabledVariables = (values: any) => {
|
| 4 |
const unEnabledFields: Array<keyof typeof variableEnabledFieldMap> =
|
|
|
|
| 10 |
(key) => `llm_setting.${variableEnabledFieldMap[key]}`,
|
| 11 |
);
|
| 12 |
};
|
| 13 |
+
|
| 14 |
+
export const isConversationIdNotExist = (conversationId: string) => {
|
| 15 |
+
return conversationId !== EmptyConversationId && conversationId !== '';
|
| 16 |
+
};
|
web/src/pages/setting/model.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
import { ITenantInfo } from '@/interfaces/database/knowledge';
|
| 2 |
import { IThirdOAIModelCollection as IThirdAiModelCollection } from '@/interfaces/database/llm';
|
|
|
|
| 3 |
import userService from '@/services/userService';
|
| 4 |
-
import authorizationUtil from '@/utils/authorizationUtil';
|
| 5 |
import { message } from 'antd';
|
| 6 |
import { Nullable } from 'typings';
|
| 7 |
import { DvaModel } from 'umi';
|
|
@@ -16,6 +16,7 @@ export interface SettingModelState {
|
|
| 16 |
llmInfo: IThirdAiModelCollection;
|
| 17 |
myLlm: any[];
|
| 18 |
factoriesList: any[];
|
|
|
|
| 19 |
}
|
| 20 |
|
| 21 |
const model: DvaModel<SettingModelState> = {
|
|
@@ -30,6 +31,7 @@ const model: DvaModel<SettingModelState> = {
|
|
| 30 |
llmInfo: {},
|
| 31 |
myLlm: [],
|
| 32 |
factoriesList: [],
|
|
|
|
| 33 |
},
|
| 34 |
reducers: {
|
| 35 |
updateState(state, { payload }) {
|
|
@@ -38,10 +40,11 @@ const model: DvaModel<SettingModelState> = {
|
|
| 38 |
...payload,
|
| 39 |
};
|
| 40 |
},
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
|
|
|
| 45 |
},
|
| 46 |
},
|
| 47 |
effects: {
|
|
@@ -63,15 +66,17 @@ const model: DvaModel<SettingModelState> = {
|
|
| 63 |
}
|
| 64 |
},
|
| 65 |
*getUserInfo({ payload = {} }, { call, put }) {
|
| 66 |
-
const { data
|
| 67 |
-
const { retcode, data: res
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
|
|
|
| 74 |
if (retcode === 0) {
|
|
|
|
| 75 |
// localStorage.setItem('userInfo',res.)
|
| 76 |
}
|
| 77 |
},
|
|
|
|
| 1 |
import { ITenantInfo } from '@/interfaces/database/knowledge';
|
| 2 |
import { IThirdOAIModelCollection as IThirdAiModelCollection } from '@/interfaces/database/llm';
|
| 3 |
+
import { IUserInfo } from '@/interfaces/database/userSetting';
|
| 4 |
import userService from '@/services/userService';
|
|
|
|
| 5 |
import { message } from 'antd';
|
| 6 |
import { Nullable } from 'typings';
|
| 7 |
import { DvaModel } from 'umi';
|
|
|
|
| 16 |
llmInfo: IThirdAiModelCollection;
|
| 17 |
myLlm: any[];
|
| 18 |
factoriesList: any[];
|
| 19 |
+
userInfo: IUserInfo;
|
| 20 |
}
|
| 21 |
|
| 22 |
const model: DvaModel<SettingModelState> = {
|
|
|
|
| 31 |
llmInfo: {},
|
| 32 |
myLlm: [],
|
| 33 |
factoriesList: [],
|
| 34 |
+
userInfo: {} as IUserInfo,
|
| 35 |
},
|
| 36 |
reducers: {
|
| 37 |
updateState(state, { payload }) {
|
|
|
|
| 40 |
...payload,
|
| 41 |
};
|
| 42 |
},
|
| 43 |
+
setUserInfo(state, { payload }) {
|
| 44 |
+
return {
|
| 45 |
+
...state,
|
| 46 |
+
userInfo: payload,
|
| 47 |
+
};
|
| 48 |
},
|
| 49 |
},
|
| 50 |
effects: {
|
|
|
|
| 66 |
}
|
| 67 |
},
|
| 68 |
*getUserInfo({ payload = {} }, { call, put }) {
|
| 69 |
+
const { data } = yield call(userService.user_info, payload);
|
| 70 |
+
const { retcode, data: res } = data;
|
| 71 |
+
|
| 72 |
+
// const userInfo = {
|
| 73 |
+
// avatar: res.avatar,
|
| 74 |
+
// name: res.nickname,
|
| 75 |
+
// email: res.email,
|
| 76 |
+
// };
|
| 77 |
+
// authorizationUtil.setUserInfo(userInfo);
|
| 78 |
if (retcode === 0) {
|
| 79 |
+
yield put({ type: 'setUserInfo', payload: res });
|
| 80 |
// localStorage.setItem('userInfo',res.)
|
| 81 |
}
|
| 82 |
},
|