moelove commited on
Commit
434a486
·
1 Parent(s): fa4edd5

feat: update package dependencies and enhance UI styling

Browse files
Files changed (4) hide show
  1. package-lock.json +1098 -9
  2. package.json +7 -6
  3. src/components/ChatWindow.jsx +26 -4
  4. src/index.css +116 -2
package-lock.json CHANGED
@@ -1,18 +1,19 @@
1
  {
2
- "name": "ai-chat-app",
3
  "version": "0.1.0",
4
  "lockfileVersion": 3,
5
  "requires": true,
6
  "packages": {
7
  "": {
8
- "name": "ai-chat-app",
9
  "version": "0.1.0",
10
  "dependencies": {
11
  "cors": "^2.8.5",
12
  "express": "^4.18.2",
13
  "node-fetch": "^3.3.2",
14
  "react": "^18.2.0",
15
- "react-dom": "^18.2.0"
 
16
  },
17
  "devDependencies": {
18
  "@types/react": "^18.2.15",
@@ -742,17 +743,57 @@
742
  "@babel/types": "^7.20.7"
743
  }
744
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
745
  "node_modules/@types/prop-types": {
746
  "version": "15.7.14",
747
  "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz",
748
- "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==",
749
- "dev": true
750
  },
751
  "node_modules/@types/react": {
752
  "version": "18.3.18",
753
  "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz",
754
  "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==",
755
- "dev": true,
756
  "dependencies": {
757
  "@types/prop-types": "*",
758
  "csstype": "^3.0.2"
@@ -767,6 +808,16 @@
767
  "@types/react": "^18.0.0"
768
  }
769
  },
 
 
 
 
 
 
 
 
 
 
770
  "node_modules/@vitejs/plugin-react": {
771
  "version": "4.3.4",
772
  "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz",
@@ -827,6 +878,15 @@
827
  "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
828
  "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
829
  },
 
 
 
 
 
 
 
 
 
830
  "node_modules/body-parser": {
831
  "version": "1.20.3",
832
  "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
@@ -950,6 +1010,15 @@
950
  }
951
  ]
952
  },
 
 
 
 
 
 
 
 
 
953
  "node_modules/chalk": {
954
  "version": "4.1.2",
955
  "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -978,6 +1047,42 @@
978
  "node": ">=8"
979
  }
980
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
981
  "node_modules/cliui": {
982
  "version": "8.0.1",
983
  "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
@@ -1010,6 +1115,15 @@
1010
  "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1011
  "dev": true
1012
  },
 
 
 
 
 
 
 
 
 
1013
  "node_modules/concurrently": {
1014
  "version": "8.2.2",
1015
  "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz",
@@ -1090,8 +1204,7 @@
1090
  "node_modules/csstype": {
1091
  "version": "3.1.3",
1092
  "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
1093
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
1094
- "dev": true
1095
  },
1096
  "node_modules/data-uri-to-buffer": {
1097
  "version": "4.0.1",
@@ -1121,7 +1234,6 @@
1121
  "version": "4.4.0",
1122
  "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
1123
  "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
1124
- "dev": true,
1125
  "dependencies": {
1126
  "ms": "^2.1.3"
1127
  },
@@ -1134,6 +1246,18 @@
1134
  }
1135
  }
1136
  },
 
 
 
 
 
 
 
 
 
 
 
 
1137
  "node_modules/depd": {
1138
  "version": "2.0.0",
1139
  "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -1142,6 +1266,14 @@
1142
  "node": ">= 0.8"
1143
  }
1144
  },
 
 
 
 
 
 
 
 
1145
  "node_modules/destroy": {
1146
  "version": "1.2.0",
1147
  "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
@@ -1151,6 +1283,18 @@
1151
  "npm": "1.2.8000 || >= 1.4.16"
1152
  }
1153
  },
 
 
 
 
 
 
 
 
 
 
 
 
1154
  "node_modules/dunder-proto": {
1155
  "version": "1.0.1",
1156
  "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
@@ -1267,6 +1411,15 @@
1267
  "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
1268
  "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
1269
  },
 
 
 
 
 
 
 
 
 
1270
  "node_modules/etag": {
1271
  "version": "1.8.1",
1272
  "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
@@ -1333,6 +1486,11 @@
1333
  "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1334
  "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
1335
  },
 
 
 
 
 
1336
  "node_modules/fetch-blob": {
1337
  "version": "3.2.0",
1338
  "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
@@ -1538,6 +1696,53 @@
1538
  "node": ">= 0.4"
1539
  }
1540
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1541
  "node_modules/http-errors": {
1542
  "version": "2.0.0",
1543
  "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
@@ -1569,6 +1774,11 @@
1569
  "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1570
  "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
1571
  },
 
 
 
 
 
1572
  "node_modules/ipaddr.js": {
1573
  "version": "1.9.1",
1574
  "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
@@ -1577,6 +1787,37 @@
1577
  "node": ">= 0.10"
1578
  }
1579
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1580
  "node_modules/is-fullwidth-code-point": {
1581
  "version": "3.0.0",
1582
  "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -1586,6 +1827,26 @@
1586
  "node": ">=8"
1587
  }
1588
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1589
  "node_modules/js-tokens": {
1590
  "version": "4.0.0",
1591
  "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -1621,6 +1882,15 @@
1621
  "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
1622
  "dev": true
1623
  },
 
 
 
 
 
 
 
 
 
1624
  "node_modules/loose-envify": {
1625
  "version": "1.4.0",
1626
  "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -1649,6 +1919,151 @@
1649
  "node": ">= 0.4"
1650
  }
1651
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1652
  "node_modules/media-typer": {
1653
  "version": "0.3.0",
1654
  "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -1673,6 +2088,427 @@
1673
  "node": ">= 0.6"
1674
  }
1675
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1676
  "node_modules/mime": {
1677
  "version": "1.6.0",
1678
  "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
@@ -1805,6 +2641,29 @@
1805
  "node": ">= 0.8"
1806
  }
1807
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1808
  "node_modules/parseurl": {
1809
  "version": "1.3.3",
1810
  "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -1852,6 +2711,15 @@
1852
  "node": "^10 || ^12 || >=14"
1853
  }
1854
  },
 
 
 
 
 
 
 
 
 
1855
  "node_modules/proxy-addr": {
1856
  "version": "2.0.7",
1857
  "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -1923,6 +2791,32 @@
1923
  "react": "^18.3.1"
1924
  }
1925
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1926
  "node_modules/react-refresh": {
1927
  "version": "0.14.2",
1928
  "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
@@ -1938,6 +2832,37 @@
1938
  "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
1939
  "dev": true
1940
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1941
  "node_modules/require-directory": {
1942
  "version": "2.1.1",
1943
  "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -2165,6 +3090,15 @@
2165
  "node": ">=0.10.0"
2166
  }
2167
  },
 
 
 
 
 
 
 
 
 
2168
  "node_modules/spawn-command": {
2169
  "version": "0.0.2",
2170
  "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz",
@@ -2193,6 +3127,19 @@
2193
  "node": ">=8"
2194
  }
2195
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
2196
  "node_modules/strip-ansi": {
2197
  "version": "6.0.1",
2198
  "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -2205,6 +3152,14 @@
2205
  "node": ">=8"
2206
  }
2207
  },
 
 
 
 
 
 
 
 
2208
  "node_modules/supports-color": {
2209
  "version": "8.1.1",
2210
  "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
@@ -2237,6 +3192,24 @@
2237
  "tree-kill": "cli.js"
2238
  }
2239
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2240
  "node_modules/tslib": {
2241
  "version": "2.8.1",
2242
  "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
@@ -2255,6 +3228,87 @@
2255
  "node": ">= 0.6"
2256
  }
2257
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2258
  "node_modules/unpipe": {
2259
  "version": "1.0.0",
2260
  "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
@@ -2309,6 +3363,32 @@
2309
  "node": ">= 0.8"
2310
  }
2311
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2312
  "node_modules/vite": {
2313
  "version": "4.5.9",
2314
  "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.9.tgz",
@@ -2430,6 +3510,15 @@
2430
  "engines": {
2431
  "node": ">=12"
2432
  }
 
 
 
 
 
 
 
 
 
2433
  }
2434
  }
2435
  }
 
1
  {
2
+ "name": "thinking-model-client",
3
  "version": "0.1.0",
4
  "lockfileVersion": 3,
5
  "requires": true,
6
  "packages": {
7
  "": {
8
+ "name": "thinking-model-client",
9
  "version": "0.1.0",
10
  "dependencies": {
11
  "cors": "^2.8.5",
12
  "express": "^4.18.2",
13
  "node-fetch": "^3.3.2",
14
  "react": "^18.2.0",
15
+ "react-dom": "^18.2.0",
16
+ "react-markdown": "^10.0.0"
17
  },
18
  "devDependencies": {
19
  "@types/react": "^18.2.15",
 
743
  "@babel/types": "^7.20.7"
744
  }
745
  },
746
+ "node_modules/@types/debug": {
747
+ "version": "4.1.12",
748
+ "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
749
+ "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
750
+ "dependencies": {
751
+ "@types/ms": "*"
752
+ }
753
+ },
754
+ "node_modules/@types/estree": {
755
+ "version": "1.0.6",
756
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
757
+ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw=="
758
+ },
759
+ "node_modules/@types/estree-jsx": {
760
+ "version": "1.0.5",
761
+ "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz",
762
+ "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==",
763
+ "dependencies": {
764
+ "@types/estree": "*"
765
+ }
766
+ },
767
+ "node_modules/@types/hast": {
768
+ "version": "3.0.4",
769
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
770
+ "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
771
+ "dependencies": {
772
+ "@types/unist": "*"
773
+ }
774
+ },
775
+ "node_modules/@types/mdast": {
776
+ "version": "4.0.4",
777
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
778
+ "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
779
+ "dependencies": {
780
+ "@types/unist": "*"
781
+ }
782
+ },
783
+ "node_modules/@types/ms": {
784
+ "version": "2.1.0",
785
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
786
+ "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="
787
+ },
788
  "node_modules/@types/prop-types": {
789
  "version": "15.7.14",
790
  "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz",
791
+ "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ=="
 
792
  },
793
  "node_modules/@types/react": {
794
  "version": "18.3.18",
795
  "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz",
796
  "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==",
 
797
  "dependencies": {
798
  "@types/prop-types": "*",
799
  "csstype": "^3.0.2"
 
808
  "@types/react": "^18.0.0"
809
  }
810
  },
811
+ "node_modules/@types/unist": {
812
+ "version": "3.0.3",
813
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
814
+ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="
815
+ },
816
+ "node_modules/@ungap/structured-clone": {
817
+ "version": "1.3.0",
818
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
819
+ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="
820
+ },
821
  "node_modules/@vitejs/plugin-react": {
822
  "version": "4.3.4",
823
  "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz",
 
878
  "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
879
  "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
880
  },
881
+ "node_modules/bail": {
882
+ "version": "2.0.2",
883
+ "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
884
+ "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
885
+ "funding": {
886
+ "type": "github",
887
+ "url": "https://github.com/sponsors/wooorm"
888
+ }
889
+ },
890
  "node_modules/body-parser": {
891
  "version": "1.20.3",
892
  "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
 
1010
  }
1011
  ]
1012
  },
1013
+ "node_modules/ccount": {
1014
+ "version": "2.0.1",
1015
+ "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
1016
+ "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
1017
+ "funding": {
1018
+ "type": "github",
1019
+ "url": "https://github.com/sponsors/wooorm"
1020
+ }
1021
+ },
1022
  "node_modules/chalk": {
1023
  "version": "4.1.2",
1024
  "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
 
1047
  "node": ">=8"
1048
  }
1049
  },
1050
+ "node_modules/character-entities": {
1051
+ "version": "2.0.2",
1052
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
1053
+ "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
1054
+ "funding": {
1055
+ "type": "github",
1056
+ "url": "https://github.com/sponsors/wooorm"
1057
+ }
1058
+ },
1059
+ "node_modules/character-entities-html4": {
1060
+ "version": "2.1.0",
1061
+ "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
1062
+ "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
1063
+ "funding": {
1064
+ "type": "github",
1065
+ "url": "https://github.com/sponsors/wooorm"
1066
+ }
1067
+ },
1068
+ "node_modules/character-entities-legacy": {
1069
+ "version": "3.0.0",
1070
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
1071
+ "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
1072
+ "funding": {
1073
+ "type": "github",
1074
+ "url": "https://github.com/sponsors/wooorm"
1075
+ }
1076
+ },
1077
+ "node_modules/character-reference-invalid": {
1078
+ "version": "2.0.1",
1079
+ "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
1080
+ "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
1081
+ "funding": {
1082
+ "type": "github",
1083
+ "url": "https://github.com/sponsors/wooorm"
1084
+ }
1085
+ },
1086
  "node_modules/cliui": {
1087
  "version": "8.0.1",
1088
  "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
 
1115
  "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1116
  "dev": true
1117
  },
1118
+ "node_modules/comma-separated-tokens": {
1119
+ "version": "2.0.3",
1120
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
1121
+ "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
1122
+ "funding": {
1123
+ "type": "github",
1124
+ "url": "https://github.com/sponsors/wooorm"
1125
+ }
1126
+ },
1127
  "node_modules/concurrently": {
1128
  "version": "8.2.2",
1129
  "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz",
 
1204
  "node_modules/csstype": {
1205
  "version": "3.1.3",
1206
  "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
1207
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
 
1208
  },
1209
  "node_modules/data-uri-to-buffer": {
1210
  "version": "4.0.1",
 
1234
  "version": "4.4.0",
1235
  "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
1236
  "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
 
1237
  "dependencies": {
1238
  "ms": "^2.1.3"
1239
  },
 
1246
  }
1247
  }
1248
  },
1249
+ "node_modules/decode-named-character-reference": {
1250
+ "version": "1.0.2",
1251
+ "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz",
1252
+ "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==",
1253
+ "dependencies": {
1254
+ "character-entities": "^2.0.0"
1255
+ },
1256
+ "funding": {
1257
+ "type": "github",
1258
+ "url": "https://github.com/sponsors/wooorm"
1259
+ }
1260
+ },
1261
  "node_modules/depd": {
1262
  "version": "2.0.0",
1263
  "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
 
1266
  "node": ">= 0.8"
1267
  }
1268
  },
1269
+ "node_modules/dequal": {
1270
+ "version": "2.0.3",
1271
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
1272
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
1273
+ "engines": {
1274
+ "node": ">=6"
1275
+ }
1276
+ },
1277
  "node_modules/destroy": {
1278
  "version": "1.2.0",
1279
  "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
 
1283
  "npm": "1.2.8000 || >= 1.4.16"
1284
  }
1285
  },
1286
+ "node_modules/devlop": {
1287
+ "version": "1.1.0",
1288
+ "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
1289
+ "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
1290
+ "dependencies": {
1291
+ "dequal": "^2.0.0"
1292
+ },
1293
+ "funding": {
1294
+ "type": "github",
1295
+ "url": "https://github.com/sponsors/wooorm"
1296
+ }
1297
+ },
1298
  "node_modules/dunder-proto": {
1299
  "version": "1.0.1",
1300
  "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
 
1411
  "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
1412
  "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
1413
  },
1414
+ "node_modules/estree-util-is-identifier-name": {
1415
+ "version": "3.0.0",
1416
+ "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
1417
+ "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==",
1418
+ "funding": {
1419
+ "type": "opencollective",
1420
+ "url": "https://opencollective.com/unified"
1421
+ }
1422
+ },
1423
  "node_modules/etag": {
1424
  "version": "1.8.1",
1425
  "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
 
1486
  "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1487
  "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
1488
  },
1489
+ "node_modules/extend": {
1490
+ "version": "3.0.2",
1491
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
1492
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
1493
+ },
1494
  "node_modules/fetch-blob": {
1495
  "version": "3.2.0",
1496
  "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
 
1696
  "node": ">= 0.4"
1697
  }
1698
  },
1699
+ "node_modules/hast-util-to-jsx-runtime": {
1700
+ "version": "2.3.5",
1701
+ "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.5.tgz",
1702
+ "integrity": "sha512-gHD+HoFxOMmmXLuq9f2dZDMQHVcplCVpMfBNRpJsF03yyLZvJGzsFORe8orVuYDX9k2w0VH0uF8oryFd1whqKQ==",
1703
+ "dependencies": {
1704
+ "@types/estree": "^1.0.0",
1705
+ "@types/hast": "^3.0.0",
1706
+ "@types/unist": "^3.0.0",
1707
+ "comma-separated-tokens": "^2.0.0",
1708
+ "devlop": "^1.0.0",
1709
+ "estree-util-is-identifier-name": "^3.0.0",
1710
+ "hast-util-whitespace": "^3.0.0",
1711
+ "mdast-util-mdx-expression": "^2.0.0",
1712
+ "mdast-util-mdx-jsx": "^3.0.0",
1713
+ "mdast-util-mdxjs-esm": "^2.0.0",
1714
+ "property-information": "^7.0.0",
1715
+ "space-separated-tokens": "^2.0.0",
1716
+ "style-to-object": "^1.0.0",
1717
+ "unist-util-position": "^5.0.0",
1718
+ "vfile-message": "^4.0.0"
1719
+ },
1720
+ "funding": {
1721
+ "type": "opencollective",
1722
+ "url": "https://opencollective.com/unified"
1723
+ }
1724
+ },
1725
+ "node_modules/hast-util-whitespace": {
1726
+ "version": "3.0.0",
1727
+ "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
1728
+ "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
1729
+ "dependencies": {
1730
+ "@types/hast": "^3.0.0"
1731
+ },
1732
+ "funding": {
1733
+ "type": "opencollective",
1734
+ "url": "https://opencollective.com/unified"
1735
+ }
1736
+ },
1737
+ "node_modules/html-url-attributes": {
1738
+ "version": "3.0.1",
1739
+ "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz",
1740
+ "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==",
1741
+ "funding": {
1742
+ "type": "opencollective",
1743
+ "url": "https://opencollective.com/unified"
1744
+ }
1745
+ },
1746
  "node_modules/http-errors": {
1747
  "version": "2.0.0",
1748
  "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
 
1774
  "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1775
  "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
1776
  },
1777
+ "node_modules/inline-style-parser": {
1778
+ "version": "0.2.4",
1779
+ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz",
1780
+ "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q=="
1781
+ },
1782
  "node_modules/ipaddr.js": {
1783
  "version": "1.9.1",
1784
  "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
 
1787
  "node": ">= 0.10"
1788
  }
1789
  },
1790
+ "node_modules/is-alphabetical": {
1791
+ "version": "2.0.1",
1792
+ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
1793
+ "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
1794
+ "funding": {
1795
+ "type": "github",
1796
+ "url": "https://github.com/sponsors/wooorm"
1797
+ }
1798
+ },
1799
+ "node_modules/is-alphanumerical": {
1800
+ "version": "2.0.1",
1801
+ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
1802
+ "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
1803
+ "dependencies": {
1804
+ "is-alphabetical": "^2.0.0",
1805
+ "is-decimal": "^2.0.0"
1806
+ },
1807
+ "funding": {
1808
+ "type": "github",
1809
+ "url": "https://github.com/sponsors/wooorm"
1810
+ }
1811
+ },
1812
+ "node_modules/is-decimal": {
1813
+ "version": "2.0.1",
1814
+ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
1815
+ "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
1816
+ "funding": {
1817
+ "type": "github",
1818
+ "url": "https://github.com/sponsors/wooorm"
1819
+ }
1820
+ },
1821
  "node_modules/is-fullwidth-code-point": {
1822
  "version": "3.0.0",
1823
  "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
 
1827
  "node": ">=8"
1828
  }
1829
  },
1830
+ "node_modules/is-hexadecimal": {
1831
+ "version": "2.0.1",
1832
+ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
1833
+ "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
1834
+ "funding": {
1835
+ "type": "github",
1836
+ "url": "https://github.com/sponsors/wooorm"
1837
+ }
1838
+ },
1839
+ "node_modules/is-plain-obj": {
1840
+ "version": "4.1.0",
1841
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
1842
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
1843
+ "engines": {
1844
+ "node": ">=12"
1845
+ },
1846
+ "funding": {
1847
+ "url": "https://github.com/sponsors/sindresorhus"
1848
+ }
1849
+ },
1850
  "node_modules/js-tokens": {
1851
  "version": "4.0.0",
1852
  "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
 
1882
  "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
1883
  "dev": true
1884
  },
1885
+ "node_modules/longest-streak": {
1886
+ "version": "3.1.0",
1887
+ "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
1888
+ "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
1889
+ "funding": {
1890
+ "type": "github",
1891
+ "url": "https://github.com/sponsors/wooorm"
1892
+ }
1893
+ },
1894
  "node_modules/loose-envify": {
1895
  "version": "1.4.0",
1896
  "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
 
1919
  "node": ">= 0.4"
1920
  }
1921
  },
1922
+ "node_modules/mdast-util-from-markdown": {
1923
+ "version": "2.0.2",
1924
+ "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz",
1925
+ "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==",
1926
+ "dependencies": {
1927
+ "@types/mdast": "^4.0.0",
1928
+ "@types/unist": "^3.0.0",
1929
+ "decode-named-character-reference": "^1.0.0",
1930
+ "devlop": "^1.0.0",
1931
+ "mdast-util-to-string": "^4.0.0",
1932
+ "micromark": "^4.0.0",
1933
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
1934
+ "micromark-util-decode-string": "^2.0.0",
1935
+ "micromark-util-normalize-identifier": "^2.0.0",
1936
+ "micromark-util-symbol": "^2.0.0",
1937
+ "micromark-util-types": "^2.0.0",
1938
+ "unist-util-stringify-position": "^4.0.0"
1939
+ },
1940
+ "funding": {
1941
+ "type": "opencollective",
1942
+ "url": "https://opencollective.com/unified"
1943
+ }
1944
+ },
1945
+ "node_modules/mdast-util-mdx-expression": {
1946
+ "version": "2.0.1",
1947
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz",
1948
+ "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==",
1949
+ "dependencies": {
1950
+ "@types/estree-jsx": "^1.0.0",
1951
+ "@types/hast": "^3.0.0",
1952
+ "@types/mdast": "^4.0.0",
1953
+ "devlop": "^1.0.0",
1954
+ "mdast-util-from-markdown": "^2.0.0",
1955
+ "mdast-util-to-markdown": "^2.0.0"
1956
+ },
1957
+ "funding": {
1958
+ "type": "opencollective",
1959
+ "url": "https://opencollective.com/unified"
1960
+ }
1961
+ },
1962
+ "node_modules/mdast-util-mdx-jsx": {
1963
+ "version": "3.2.0",
1964
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz",
1965
+ "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==",
1966
+ "dependencies": {
1967
+ "@types/estree-jsx": "^1.0.0",
1968
+ "@types/hast": "^3.0.0",
1969
+ "@types/mdast": "^4.0.0",
1970
+ "@types/unist": "^3.0.0",
1971
+ "ccount": "^2.0.0",
1972
+ "devlop": "^1.1.0",
1973
+ "mdast-util-from-markdown": "^2.0.0",
1974
+ "mdast-util-to-markdown": "^2.0.0",
1975
+ "parse-entities": "^4.0.0",
1976
+ "stringify-entities": "^4.0.0",
1977
+ "unist-util-stringify-position": "^4.0.0",
1978
+ "vfile-message": "^4.0.0"
1979
+ },
1980
+ "funding": {
1981
+ "type": "opencollective",
1982
+ "url": "https://opencollective.com/unified"
1983
+ }
1984
+ },
1985
+ "node_modules/mdast-util-mdxjs-esm": {
1986
+ "version": "2.0.1",
1987
+ "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
1988
+ "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
1989
+ "dependencies": {
1990
+ "@types/estree-jsx": "^1.0.0",
1991
+ "@types/hast": "^3.0.0",
1992
+ "@types/mdast": "^4.0.0",
1993
+ "devlop": "^1.0.0",
1994
+ "mdast-util-from-markdown": "^2.0.0",
1995
+ "mdast-util-to-markdown": "^2.0.0"
1996
+ },
1997
+ "funding": {
1998
+ "type": "opencollective",
1999
+ "url": "https://opencollective.com/unified"
2000
+ }
2001
+ },
2002
+ "node_modules/mdast-util-phrasing": {
2003
+ "version": "4.1.0",
2004
+ "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
2005
+ "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
2006
+ "dependencies": {
2007
+ "@types/mdast": "^4.0.0",
2008
+ "unist-util-is": "^6.0.0"
2009
+ },
2010
+ "funding": {
2011
+ "type": "opencollective",
2012
+ "url": "https://opencollective.com/unified"
2013
+ }
2014
+ },
2015
+ "node_modules/mdast-util-to-hast": {
2016
+ "version": "13.2.0",
2017
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
2018
+ "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
2019
+ "dependencies": {
2020
+ "@types/hast": "^3.0.0",
2021
+ "@types/mdast": "^4.0.0",
2022
+ "@ungap/structured-clone": "^1.0.0",
2023
+ "devlop": "^1.0.0",
2024
+ "micromark-util-sanitize-uri": "^2.0.0",
2025
+ "trim-lines": "^3.0.0",
2026
+ "unist-util-position": "^5.0.0",
2027
+ "unist-util-visit": "^5.0.0",
2028
+ "vfile": "^6.0.0"
2029
+ },
2030
+ "funding": {
2031
+ "type": "opencollective",
2032
+ "url": "https://opencollective.com/unified"
2033
+ }
2034
+ },
2035
+ "node_modules/mdast-util-to-markdown": {
2036
+ "version": "2.1.2",
2037
+ "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz",
2038
+ "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==",
2039
+ "dependencies": {
2040
+ "@types/mdast": "^4.0.0",
2041
+ "@types/unist": "^3.0.0",
2042
+ "longest-streak": "^3.0.0",
2043
+ "mdast-util-phrasing": "^4.0.0",
2044
+ "mdast-util-to-string": "^4.0.0",
2045
+ "micromark-util-classify-character": "^2.0.0",
2046
+ "micromark-util-decode-string": "^2.0.0",
2047
+ "unist-util-visit": "^5.0.0",
2048
+ "zwitch": "^2.0.0"
2049
+ },
2050
+ "funding": {
2051
+ "type": "opencollective",
2052
+ "url": "https://opencollective.com/unified"
2053
+ }
2054
+ },
2055
+ "node_modules/mdast-util-to-string": {
2056
+ "version": "4.0.0",
2057
+ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
2058
+ "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
2059
+ "dependencies": {
2060
+ "@types/mdast": "^4.0.0"
2061
+ },
2062
+ "funding": {
2063
+ "type": "opencollective",
2064
+ "url": "https://opencollective.com/unified"
2065
+ }
2066
+ },
2067
  "node_modules/media-typer": {
2068
  "version": "0.3.0",
2069
  "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
 
2088
  "node": ">= 0.6"
2089
  }
2090
  },
2091
+ "node_modules/micromark": {
2092
+ "version": "4.0.2",
2093
+ "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz",
2094
+ "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==",
2095
+ "funding": [
2096
+ {
2097
+ "type": "GitHub Sponsors",
2098
+ "url": "https://github.com/sponsors/unifiedjs"
2099
+ },
2100
+ {
2101
+ "type": "OpenCollective",
2102
+ "url": "https://opencollective.com/unified"
2103
+ }
2104
+ ],
2105
+ "dependencies": {
2106
+ "@types/debug": "^4.0.0",
2107
+ "debug": "^4.0.0",
2108
+ "decode-named-character-reference": "^1.0.0",
2109
+ "devlop": "^1.0.0",
2110
+ "micromark-core-commonmark": "^2.0.0",
2111
+ "micromark-factory-space": "^2.0.0",
2112
+ "micromark-util-character": "^2.0.0",
2113
+ "micromark-util-chunked": "^2.0.0",
2114
+ "micromark-util-combine-extensions": "^2.0.0",
2115
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
2116
+ "micromark-util-encode": "^2.0.0",
2117
+ "micromark-util-normalize-identifier": "^2.0.0",
2118
+ "micromark-util-resolve-all": "^2.0.0",
2119
+ "micromark-util-sanitize-uri": "^2.0.0",
2120
+ "micromark-util-subtokenize": "^2.0.0",
2121
+ "micromark-util-symbol": "^2.0.0",
2122
+ "micromark-util-types": "^2.0.0"
2123
+ }
2124
+ },
2125
+ "node_modules/micromark-core-commonmark": {
2126
+ "version": "2.0.3",
2127
+ "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz",
2128
+ "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==",
2129
+ "funding": [
2130
+ {
2131
+ "type": "GitHub Sponsors",
2132
+ "url": "https://github.com/sponsors/unifiedjs"
2133
+ },
2134
+ {
2135
+ "type": "OpenCollective",
2136
+ "url": "https://opencollective.com/unified"
2137
+ }
2138
+ ],
2139
+ "dependencies": {
2140
+ "decode-named-character-reference": "^1.0.0",
2141
+ "devlop": "^1.0.0",
2142
+ "micromark-factory-destination": "^2.0.0",
2143
+ "micromark-factory-label": "^2.0.0",
2144
+ "micromark-factory-space": "^2.0.0",
2145
+ "micromark-factory-title": "^2.0.0",
2146
+ "micromark-factory-whitespace": "^2.0.0",
2147
+ "micromark-util-character": "^2.0.0",
2148
+ "micromark-util-chunked": "^2.0.0",
2149
+ "micromark-util-classify-character": "^2.0.0",
2150
+ "micromark-util-html-tag-name": "^2.0.0",
2151
+ "micromark-util-normalize-identifier": "^2.0.0",
2152
+ "micromark-util-resolve-all": "^2.0.0",
2153
+ "micromark-util-subtokenize": "^2.0.0",
2154
+ "micromark-util-symbol": "^2.0.0",
2155
+ "micromark-util-types": "^2.0.0"
2156
+ }
2157
+ },
2158
+ "node_modules/micromark-factory-destination": {
2159
+ "version": "2.0.1",
2160
+ "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
2161
+ "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==",
2162
+ "funding": [
2163
+ {
2164
+ "type": "GitHub Sponsors",
2165
+ "url": "https://github.com/sponsors/unifiedjs"
2166
+ },
2167
+ {
2168
+ "type": "OpenCollective",
2169
+ "url": "https://opencollective.com/unified"
2170
+ }
2171
+ ],
2172
+ "dependencies": {
2173
+ "micromark-util-character": "^2.0.0",
2174
+ "micromark-util-symbol": "^2.0.0",
2175
+ "micromark-util-types": "^2.0.0"
2176
+ }
2177
+ },
2178
+ "node_modules/micromark-factory-label": {
2179
+ "version": "2.0.1",
2180
+ "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz",
2181
+ "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==",
2182
+ "funding": [
2183
+ {
2184
+ "type": "GitHub Sponsors",
2185
+ "url": "https://github.com/sponsors/unifiedjs"
2186
+ },
2187
+ {
2188
+ "type": "OpenCollective",
2189
+ "url": "https://opencollective.com/unified"
2190
+ }
2191
+ ],
2192
+ "dependencies": {
2193
+ "devlop": "^1.0.0",
2194
+ "micromark-util-character": "^2.0.0",
2195
+ "micromark-util-symbol": "^2.0.0",
2196
+ "micromark-util-types": "^2.0.0"
2197
+ }
2198
+ },
2199
+ "node_modules/micromark-factory-space": {
2200
+ "version": "2.0.1",
2201
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
2202
+ "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
2203
+ "funding": [
2204
+ {
2205
+ "type": "GitHub Sponsors",
2206
+ "url": "https://github.com/sponsors/unifiedjs"
2207
+ },
2208
+ {
2209
+ "type": "OpenCollective",
2210
+ "url": "https://opencollective.com/unified"
2211
+ }
2212
+ ],
2213
+ "dependencies": {
2214
+ "micromark-util-character": "^2.0.0",
2215
+ "micromark-util-types": "^2.0.0"
2216
+ }
2217
+ },
2218
+ "node_modules/micromark-factory-title": {
2219
+ "version": "2.0.1",
2220
+ "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz",
2221
+ "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==",
2222
+ "funding": [
2223
+ {
2224
+ "type": "GitHub Sponsors",
2225
+ "url": "https://github.com/sponsors/unifiedjs"
2226
+ },
2227
+ {
2228
+ "type": "OpenCollective",
2229
+ "url": "https://opencollective.com/unified"
2230
+ }
2231
+ ],
2232
+ "dependencies": {
2233
+ "micromark-factory-space": "^2.0.0",
2234
+ "micromark-util-character": "^2.0.0",
2235
+ "micromark-util-symbol": "^2.0.0",
2236
+ "micromark-util-types": "^2.0.0"
2237
+ }
2238
+ },
2239
+ "node_modules/micromark-factory-whitespace": {
2240
+ "version": "2.0.1",
2241
+ "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz",
2242
+ "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==",
2243
+ "funding": [
2244
+ {
2245
+ "type": "GitHub Sponsors",
2246
+ "url": "https://github.com/sponsors/unifiedjs"
2247
+ },
2248
+ {
2249
+ "type": "OpenCollective",
2250
+ "url": "https://opencollective.com/unified"
2251
+ }
2252
+ ],
2253
+ "dependencies": {
2254
+ "micromark-factory-space": "^2.0.0",
2255
+ "micromark-util-character": "^2.0.0",
2256
+ "micromark-util-symbol": "^2.0.0",
2257
+ "micromark-util-types": "^2.0.0"
2258
+ }
2259
+ },
2260
+ "node_modules/micromark-util-character": {
2261
+ "version": "2.1.1",
2262
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
2263
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
2264
+ "funding": [
2265
+ {
2266
+ "type": "GitHub Sponsors",
2267
+ "url": "https://github.com/sponsors/unifiedjs"
2268
+ },
2269
+ {
2270
+ "type": "OpenCollective",
2271
+ "url": "https://opencollective.com/unified"
2272
+ }
2273
+ ],
2274
+ "dependencies": {
2275
+ "micromark-util-symbol": "^2.0.0",
2276
+ "micromark-util-types": "^2.0.0"
2277
+ }
2278
+ },
2279
+ "node_modules/micromark-util-chunked": {
2280
+ "version": "2.0.1",
2281
+ "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz",
2282
+ "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==",
2283
+ "funding": [
2284
+ {
2285
+ "type": "GitHub Sponsors",
2286
+ "url": "https://github.com/sponsors/unifiedjs"
2287
+ },
2288
+ {
2289
+ "type": "OpenCollective",
2290
+ "url": "https://opencollective.com/unified"
2291
+ }
2292
+ ],
2293
+ "dependencies": {
2294
+ "micromark-util-symbol": "^2.0.0"
2295
+ }
2296
+ },
2297
+ "node_modules/micromark-util-classify-character": {
2298
+ "version": "2.0.1",
2299
+ "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz",
2300
+ "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==",
2301
+ "funding": [
2302
+ {
2303
+ "type": "GitHub Sponsors",
2304
+ "url": "https://github.com/sponsors/unifiedjs"
2305
+ },
2306
+ {
2307
+ "type": "OpenCollective",
2308
+ "url": "https://opencollective.com/unified"
2309
+ }
2310
+ ],
2311
+ "dependencies": {
2312
+ "micromark-util-character": "^2.0.0",
2313
+ "micromark-util-symbol": "^2.0.0",
2314
+ "micromark-util-types": "^2.0.0"
2315
+ }
2316
+ },
2317
+ "node_modules/micromark-util-combine-extensions": {
2318
+ "version": "2.0.1",
2319
+ "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz",
2320
+ "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==",
2321
+ "funding": [
2322
+ {
2323
+ "type": "GitHub Sponsors",
2324
+ "url": "https://github.com/sponsors/unifiedjs"
2325
+ },
2326
+ {
2327
+ "type": "OpenCollective",
2328
+ "url": "https://opencollective.com/unified"
2329
+ }
2330
+ ],
2331
+ "dependencies": {
2332
+ "micromark-util-chunked": "^2.0.0",
2333
+ "micromark-util-types": "^2.0.0"
2334
+ }
2335
+ },
2336
+ "node_modules/micromark-util-decode-numeric-character-reference": {
2337
+ "version": "2.0.2",
2338
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz",
2339
+ "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==",
2340
+ "funding": [
2341
+ {
2342
+ "type": "GitHub Sponsors",
2343
+ "url": "https://github.com/sponsors/unifiedjs"
2344
+ },
2345
+ {
2346
+ "type": "OpenCollective",
2347
+ "url": "https://opencollective.com/unified"
2348
+ }
2349
+ ],
2350
+ "dependencies": {
2351
+ "micromark-util-symbol": "^2.0.0"
2352
+ }
2353
+ },
2354
+ "node_modules/micromark-util-decode-string": {
2355
+ "version": "2.0.1",
2356
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz",
2357
+ "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==",
2358
+ "funding": [
2359
+ {
2360
+ "type": "GitHub Sponsors",
2361
+ "url": "https://github.com/sponsors/unifiedjs"
2362
+ },
2363
+ {
2364
+ "type": "OpenCollective",
2365
+ "url": "https://opencollective.com/unified"
2366
+ }
2367
+ ],
2368
+ "dependencies": {
2369
+ "decode-named-character-reference": "^1.0.0",
2370
+ "micromark-util-character": "^2.0.0",
2371
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
2372
+ "micromark-util-symbol": "^2.0.0"
2373
+ }
2374
+ },
2375
+ "node_modules/micromark-util-encode": {
2376
+ "version": "2.0.1",
2377
+ "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
2378
+ "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
2379
+ "funding": [
2380
+ {
2381
+ "type": "GitHub Sponsors",
2382
+ "url": "https://github.com/sponsors/unifiedjs"
2383
+ },
2384
+ {
2385
+ "type": "OpenCollective",
2386
+ "url": "https://opencollective.com/unified"
2387
+ }
2388
+ ]
2389
+ },
2390
+ "node_modules/micromark-util-html-tag-name": {
2391
+ "version": "2.0.1",
2392
+ "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz",
2393
+ "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==",
2394
+ "funding": [
2395
+ {
2396
+ "type": "GitHub Sponsors",
2397
+ "url": "https://github.com/sponsors/unifiedjs"
2398
+ },
2399
+ {
2400
+ "type": "OpenCollective",
2401
+ "url": "https://opencollective.com/unified"
2402
+ }
2403
+ ]
2404
+ },
2405
+ "node_modules/micromark-util-normalize-identifier": {
2406
+ "version": "2.0.1",
2407
+ "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz",
2408
+ "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==",
2409
+ "funding": [
2410
+ {
2411
+ "type": "GitHub Sponsors",
2412
+ "url": "https://github.com/sponsors/unifiedjs"
2413
+ },
2414
+ {
2415
+ "type": "OpenCollective",
2416
+ "url": "https://opencollective.com/unified"
2417
+ }
2418
+ ],
2419
+ "dependencies": {
2420
+ "micromark-util-symbol": "^2.0.0"
2421
+ }
2422
+ },
2423
+ "node_modules/micromark-util-resolve-all": {
2424
+ "version": "2.0.1",
2425
+ "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz",
2426
+ "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==",
2427
+ "funding": [
2428
+ {
2429
+ "type": "GitHub Sponsors",
2430
+ "url": "https://github.com/sponsors/unifiedjs"
2431
+ },
2432
+ {
2433
+ "type": "OpenCollective",
2434
+ "url": "https://opencollective.com/unified"
2435
+ }
2436
+ ],
2437
+ "dependencies": {
2438
+ "micromark-util-types": "^2.0.0"
2439
+ }
2440
+ },
2441
+ "node_modules/micromark-util-sanitize-uri": {
2442
+ "version": "2.0.1",
2443
+ "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
2444
+ "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
2445
+ "funding": [
2446
+ {
2447
+ "type": "GitHub Sponsors",
2448
+ "url": "https://github.com/sponsors/unifiedjs"
2449
+ },
2450
+ {
2451
+ "type": "OpenCollective",
2452
+ "url": "https://opencollective.com/unified"
2453
+ }
2454
+ ],
2455
+ "dependencies": {
2456
+ "micromark-util-character": "^2.0.0",
2457
+ "micromark-util-encode": "^2.0.0",
2458
+ "micromark-util-symbol": "^2.0.0"
2459
+ }
2460
+ },
2461
+ "node_modules/micromark-util-subtokenize": {
2462
+ "version": "2.1.0",
2463
+ "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz",
2464
+ "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==",
2465
+ "funding": [
2466
+ {
2467
+ "type": "GitHub Sponsors",
2468
+ "url": "https://github.com/sponsors/unifiedjs"
2469
+ },
2470
+ {
2471
+ "type": "OpenCollective",
2472
+ "url": "https://opencollective.com/unified"
2473
+ }
2474
+ ],
2475
+ "dependencies": {
2476
+ "devlop": "^1.0.0",
2477
+ "micromark-util-chunked": "^2.0.0",
2478
+ "micromark-util-symbol": "^2.0.0",
2479
+ "micromark-util-types": "^2.0.0"
2480
+ }
2481
+ },
2482
+ "node_modules/micromark-util-symbol": {
2483
+ "version": "2.0.1",
2484
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
2485
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
2486
+ "funding": [
2487
+ {
2488
+ "type": "GitHub Sponsors",
2489
+ "url": "https://github.com/sponsors/unifiedjs"
2490
+ },
2491
+ {
2492
+ "type": "OpenCollective",
2493
+ "url": "https://opencollective.com/unified"
2494
+ }
2495
+ ]
2496
+ },
2497
+ "node_modules/micromark-util-types": {
2498
+ "version": "2.0.2",
2499
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
2500
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
2501
+ "funding": [
2502
+ {
2503
+ "type": "GitHub Sponsors",
2504
+ "url": "https://github.com/sponsors/unifiedjs"
2505
+ },
2506
+ {
2507
+ "type": "OpenCollective",
2508
+ "url": "https://opencollective.com/unified"
2509
+ }
2510
+ ]
2511
+ },
2512
  "node_modules/mime": {
2513
  "version": "1.6.0",
2514
  "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
 
2641
  "node": ">= 0.8"
2642
  }
2643
  },
2644
+ "node_modules/parse-entities": {
2645
+ "version": "4.0.2",
2646
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz",
2647
+ "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==",
2648
+ "dependencies": {
2649
+ "@types/unist": "^2.0.0",
2650
+ "character-entities-legacy": "^3.0.0",
2651
+ "character-reference-invalid": "^2.0.0",
2652
+ "decode-named-character-reference": "^1.0.0",
2653
+ "is-alphanumerical": "^2.0.0",
2654
+ "is-decimal": "^2.0.0",
2655
+ "is-hexadecimal": "^2.0.0"
2656
+ },
2657
+ "funding": {
2658
+ "type": "github",
2659
+ "url": "https://github.com/sponsors/wooorm"
2660
+ }
2661
+ },
2662
+ "node_modules/parse-entities/node_modules/@types/unist": {
2663
+ "version": "2.0.11",
2664
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
2665
+ "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
2666
+ },
2667
  "node_modules/parseurl": {
2668
  "version": "1.3.3",
2669
  "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
 
2711
  "node": "^10 || ^12 || >=14"
2712
  }
2713
  },
2714
+ "node_modules/property-information": {
2715
+ "version": "7.0.0",
2716
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz",
2717
+ "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==",
2718
+ "funding": {
2719
+ "type": "github",
2720
+ "url": "https://github.com/sponsors/wooorm"
2721
+ }
2722
+ },
2723
  "node_modules/proxy-addr": {
2724
  "version": "2.0.7",
2725
  "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
 
2791
  "react": "^18.3.1"
2792
  }
2793
  },
2794
+ "node_modules/react-markdown": {
2795
+ "version": "10.0.0",
2796
+ "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-10.0.0.tgz",
2797
+ "integrity": "sha512-4mTz7Sya/YQ1jYOrkwO73VcFdkFJ8L8I9ehCxdcV0XrClHyOJGKbBk5FR4OOOG+HnyKw5u+C/Aby9TwinCteYA==",
2798
+ "dependencies": {
2799
+ "@types/hast": "^3.0.0",
2800
+ "@types/mdast": "^4.0.0",
2801
+ "devlop": "^1.0.0",
2802
+ "hast-util-to-jsx-runtime": "^2.0.0",
2803
+ "html-url-attributes": "^3.0.0",
2804
+ "mdast-util-to-hast": "^13.0.0",
2805
+ "remark-parse": "^11.0.0",
2806
+ "remark-rehype": "^11.0.0",
2807
+ "unified": "^11.0.0",
2808
+ "unist-util-visit": "^5.0.0",
2809
+ "vfile": "^6.0.0"
2810
+ },
2811
+ "funding": {
2812
+ "type": "opencollective",
2813
+ "url": "https://opencollective.com/unified"
2814
+ },
2815
+ "peerDependencies": {
2816
+ "@types/react": ">=18",
2817
+ "react": ">=18"
2818
+ }
2819
+ },
2820
  "node_modules/react-refresh": {
2821
  "version": "0.14.2",
2822
  "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
 
2832
  "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
2833
  "dev": true
2834
  },
2835
+ "node_modules/remark-parse": {
2836
+ "version": "11.0.0",
2837
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
2838
+ "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
2839
+ "dependencies": {
2840
+ "@types/mdast": "^4.0.0",
2841
+ "mdast-util-from-markdown": "^2.0.0",
2842
+ "micromark-util-types": "^2.0.0",
2843
+ "unified": "^11.0.0"
2844
+ },
2845
+ "funding": {
2846
+ "type": "opencollective",
2847
+ "url": "https://opencollective.com/unified"
2848
+ }
2849
+ },
2850
+ "node_modules/remark-rehype": {
2851
+ "version": "11.1.1",
2852
+ "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz",
2853
+ "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==",
2854
+ "dependencies": {
2855
+ "@types/hast": "^3.0.0",
2856
+ "@types/mdast": "^4.0.0",
2857
+ "mdast-util-to-hast": "^13.0.0",
2858
+ "unified": "^11.0.0",
2859
+ "vfile": "^6.0.0"
2860
+ },
2861
+ "funding": {
2862
+ "type": "opencollective",
2863
+ "url": "https://opencollective.com/unified"
2864
+ }
2865
+ },
2866
  "node_modules/require-directory": {
2867
  "version": "2.1.1",
2868
  "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
 
3090
  "node": ">=0.10.0"
3091
  }
3092
  },
3093
+ "node_modules/space-separated-tokens": {
3094
+ "version": "2.0.2",
3095
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
3096
+ "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
3097
+ "funding": {
3098
+ "type": "github",
3099
+ "url": "https://github.com/sponsors/wooorm"
3100
+ }
3101
+ },
3102
  "node_modules/spawn-command": {
3103
  "version": "0.0.2",
3104
  "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz",
 
3127
  "node": ">=8"
3128
  }
3129
  },
3130
+ "node_modules/stringify-entities": {
3131
+ "version": "4.0.4",
3132
+ "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
3133
+ "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
3134
+ "dependencies": {
3135
+ "character-entities-html4": "^2.0.0",
3136
+ "character-entities-legacy": "^3.0.0"
3137
+ },
3138
+ "funding": {
3139
+ "type": "github",
3140
+ "url": "https://github.com/sponsors/wooorm"
3141
+ }
3142
+ },
3143
  "node_modules/strip-ansi": {
3144
  "version": "6.0.1",
3145
  "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
 
3152
  "node": ">=8"
3153
  }
3154
  },
3155
+ "node_modules/style-to-object": {
3156
+ "version": "1.0.8",
3157
+ "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz",
3158
+ "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==",
3159
+ "dependencies": {
3160
+ "inline-style-parser": "0.2.4"
3161
+ }
3162
+ },
3163
  "node_modules/supports-color": {
3164
  "version": "8.1.1",
3165
  "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
 
3192
  "tree-kill": "cli.js"
3193
  }
3194
  },
3195
+ "node_modules/trim-lines": {
3196
+ "version": "3.0.1",
3197
+ "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
3198
+ "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
3199
+ "funding": {
3200
+ "type": "github",
3201
+ "url": "https://github.com/sponsors/wooorm"
3202
+ }
3203
+ },
3204
+ "node_modules/trough": {
3205
+ "version": "2.2.0",
3206
+ "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz",
3207
+ "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==",
3208
+ "funding": {
3209
+ "type": "github",
3210
+ "url": "https://github.com/sponsors/wooorm"
3211
+ }
3212
+ },
3213
  "node_modules/tslib": {
3214
  "version": "2.8.1",
3215
  "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
 
3228
  "node": ">= 0.6"
3229
  }
3230
  },
3231
+ "node_modules/unified": {
3232
+ "version": "11.0.5",
3233
+ "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
3234
+ "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==",
3235
+ "dependencies": {
3236
+ "@types/unist": "^3.0.0",
3237
+ "bail": "^2.0.0",
3238
+ "devlop": "^1.0.0",
3239
+ "extend": "^3.0.0",
3240
+ "is-plain-obj": "^4.0.0",
3241
+ "trough": "^2.0.0",
3242
+ "vfile": "^6.0.0"
3243
+ },
3244
+ "funding": {
3245
+ "type": "opencollective",
3246
+ "url": "https://opencollective.com/unified"
3247
+ }
3248
+ },
3249
+ "node_modules/unist-util-is": {
3250
+ "version": "6.0.0",
3251
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
3252
+ "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
3253
+ "dependencies": {
3254
+ "@types/unist": "^3.0.0"
3255
+ },
3256
+ "funding": {
3257
+ "type": "opencollective",
3258
+ "url": "https://opencollective.com/unified"
3259
+ }
3260
+ },
3261
+ "node_modules/unist-util-position": {
3262
+ "version": "5.0.0",
3263
+ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
3264
+ "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
3265
+ "dependencies": {
3266
+ "@types/unist": "^3.0.0"
3267
+ },
3268
+ "funding": {
3269
+ "type": "opencollective",
3270
+ "url": "https://opencollective.com/unified"
3271
+ }
3272
+ },
3273
+ "node_modules/unist-util-stringify-position": {
3274
+ "version": "4.0.0",
3275
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
3276
+ "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
3277
+ "dependencies": {
3278
+ "@types/unist": "^3.0.0"
3279
+ },
3280
+ "funding": {
3281
+ "type": "opencollective",
3282
+ "url": "https://opencollective.com/unified"
3283
+ }
3284
+ },
3285
+ "node_modules/unist-util-visit": {
3286
+ "version": "5.0.0",
3287
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
3288
+ "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
3289
+ "dependencies": {
3290
+ "@types/unist": "^3.0.0",
3291
+ "unist-util-is": "^6.0.0",
3292
+ "unist-util-visit-parents": "^6.0.0"
3293
+ },
3294
+ "funding": {
3295
+ "type": "opencollective",
3296
+ "url": "https://opencollective.com/unified"
3297
+ }
3298
+ },
3299
+ "node_modules/unist-util-visit-parents": {
3300
+ "version": "6.0.1",
3301
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
3302
+ "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
3303
+ "dependencies": {
3304
+ "@types/unist": "^3.0.0",
3305
+ "unist-util-is": "^6.0.0"
3306
+ },
3307
+ "funding": {
3308
+ "type": "opencollective",
3309
+ "url": "https://opencollective.com/unified"
3310
+ }
3311
+ },
3312
  "node_modules/unpipe": {
3313
  "version": "1.0.0",
3314
  "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
 
3363
  "node": ">= 0.8"
3364
  }
3365
  },
3366
+ "node_modules/vfile": {
3367
+ "version": "6.0.3",
3368
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
3369
+ "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
3370
+ "dependencies": {
3371
+ "@types/unist": "^3.0.0",
3372
+ "vfile-message": "^4.0.0"
3373
+ },
3374
+ "funding": {
3375
+ "type": "opencollective",
3376
+ "url": "https://opencollective.com/unified"
3377
+ }
3378
+ },
3379
+ "node_modules/vfile-message": {
3380
+ "version": "4.0.2",
3381
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
3382
+ "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
3383
+ "dependencies": {
3384
+ "@types/unist": "^3.0.0",
3385
+ "unist-util-stringify-position": "^4.0.0"
3386
+ },
3387
+ "funding": {
3388
+ "type": "opencollective",
3389
+ "url": "https://opencollective.com/unified"
3390
+ }
3391
+ },
3392
  "node_modules/vite": {
3393
  "version": "4.5.9",
3394
  "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.9.tgz",
 
3510
  "engines": {
3511
  "node": ">=12"
3512
  }
3513
+ },
3514
+ "node_modules/zwitch": {
3515
+ "version": "2.0.4",
3516
+ "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
3517
+ "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
3518
+ "funding": {
3519
+ "type": "github",
3520
+ "url": "https://github.com/sponsors/wooorm"
3521
+ }
3522
  }
3523
  }
3524
  }
package.json CHANGED
@@ -12,17 +12,18 @@
12
  "prod": "NODE_ENV=production node server/index.js"
13
  },
14
  "dependencies": {
 
 
 
15
  "react": "^18.2.0",
16
  "react-dom": "^18.2.0",
17
- "express": "^4.18.2",
18
- "cors": "^2.8.5",
19
- "node-fetch": "^3.3.2"
20
  },
21
  "devDependencies": {
22
  "@types/react": "^18.2.15",
23
  "@types/react-dom": "^18.2.7",
24
  "@vitejs/plugin-react": "^4.0.3",
25
- "vite": "^4.4.5",
26
- "concurrently": "^8.2.0"
27
  }
28
- }
 
12
  "prod": "NODE_ENV=production node server/index.js"
13
  },
14
  "dependencies": {
15
+ "cors": "^2.8.5",
16
+ "express": "^4.18.2",
17
+ "node-fetch": "^3.3.2",
18
  "react": "^18.2.0",
19
  "react-dom": "^18.2.0",
20
+ "react-markdown": "^10.0.0"
 
 
21
  },
22
  "devDependencies": {
23
  "@types/react": "^18.2.15",
24
  "@types/react-dom": "^18.2.7",
25
  "@vitejs/plugin-react": "^4.0.3",
26
+ "concurrently": "^8.2.0",
27
+ "vite": "^4.4.5"
28
  }
29
+ }
src/components/ChatWindow.jsx CHANGED
@@ -1,4 +1,5 @@
1
  import React, { useState, useRef, useEffect } from 'react';
 
2
 
3
  function ChatWindow({ chat, profile, onUpdateChat }) {
4
  const [input, setInput] = useState('');
@@ -6,6 +7,7 @@ function ChatWindow({ chat, profile, onUpdateChat }) {
6
  const [collapsedThinks, setCollapsedThinks] = useState(new Set());
7
  const [partialResponse, setPartialResponse] = useState('');
8
  const [streamController, setStreamController] = useState(null);
 
9
  const messagesEndRef = useRef(null);
10
 
11
  // Scroll to bottom when messages change
@@ -141,6 +143,14 @@ function ChatWindow({ chat, profile, onUpdateChat }) {
141
  return date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });
142
  };
143
 
 
 
 
 
 
 
 
 
144
  return (
145
  <div className="chat-window">
146
  <div className="chat-messages">
@@ -164,20 +174,32 @@ function ChatWindow({ chat, profile, onUpdateChat }) {
164
  </div>
165
  {!collapsedThinks.has(message.timestamp) && (
166
  <div className="reasoning-content">
167
- {parsedMessage.think}
168
  </div>
169
  )}
170
  </div>
171
  )}
172
  <div className="message-content">
173
- {parsedMessage.content}
 
 
 
 
 
 
174
  </div>
175
  </>
176
  )}
177
 
178
  {message.role === 'user' && (
179
  <div className="message-content">
180
- {parsedMessage.content}
 
 
 
 
 
 
181
  </div>
182
  )}
183
 
@@ -193,7 +215,7 @@ function ChatWindow({ chat, profile, onUpdateChat }) {
193
  {isLoading && (
194
  <div className="message assistant">
195
  <div className="message-content">
196
- {partialResponse}
197
  <span className="loading-cursor">|</span>
198
  </div>
199
  </div>
 
1
  import React, { useState, useRef, useEffect } from 'react';
2
+ import ReactMarkdown from 'react-markdown';
3
 
4
  function ChatWindow({ chat, profile, onUpdateChat }) {
5
  const [input, setInput] = useState('');
 
7
  const [collapsedThinks, setCollapsedThinks] = useState(new Set());
8
  const [partialResponse, setPartialResponse] = useState('');
9
  const [streamController, setStreamController] = useState(null);
10
+ const [copiedMessageId, setCopiedMessageId] = useState(null);
11
  const messagesEndRef = useRef(null);
12
 
13
  // Scroll to bottom when messages change
 
143
  return date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });
144
  };
145
 
146
+ const handleCopyMessage = (content) => {
147
+ navigator.clipboard.writeText(content).then(() => {
148
+ // Show feedback by temporarily updating the copied message state
149
+ setCopiedMessageId(content);
150
+ setTimeout(() => setCopiedMessageId(null), 2000);
151
+ });
152
+ };
153
+
154
  return (
155
  <div className="chat-window">
156
  <div className="chat-messages">
 
174
  </div>
175
  {!collapsedThinks.has(message.timestamp) && (
176
  <div className="reasoning-content">
177
+ <ReactMarkdown>{parsedMessage.think}</ReactMarkdown>
178
  </div>
179
  )}
180
  </div>
181
  )}
182
  <div className="message-content">
183
+ <ReactMarkdown>{parsedMessage.content}</ReactMarkdown>
184
+ <button
185
+ className={`copy-button ${copiedMessageId === message.content ? 'copied' : ''}`}
186
+ onClick={() => handleCopyMessage(message.content)}
187
+ >
188
+ {copiedMessageId === message.content ? 'Copied!' : 'Copy'}
189
+ </button>
190
  </div>
191
  </>
192
  )}
193
 
194
  {message.role === 'user' && (
195
  <div className="message-content">
196
+ <ReactMarkdown>{parsedMessage.content}</ReactMarkdown>
197
+ <button
198
+ className={`copy-button ${copiedMessageId === message.content ? 'copied' : ''}`}
199
+ onClick={() => handleCopyMessage(message.content)}
200
+ >
201
+ {copiedMessageId === message.content ? 'Copied!' : 'Copy'}
202
+ </button>
203
  </div>
204
  )}
205
 
 
215
  {isLoading && (
216
  <div className="message assistant">
217
  <div className="message-content">
218
+ <ReactMarkdown>{partialResponse}</ReactMarkdown>
219
  <span className="loading-cursor">|</span>
220
  </div>
221
  </div>
src/index.css CHANGED
@@ -10,8 +10,8 @@
10
  --sidebar-width: 280px;
11
  --header-height: 60px;
12
  --reasoning-background: #f9fafb;
13
- --user-message-bg: #3e6ae1;
14
- --user-message-color: #ffffff;
15
  --assistant-message-bg: #f9f9f9;
16
  --assistant-message-color: #1a1a1a;
17
  --hover-color: #f5f5f5;
@@ -393,6 +393,7 @@ body {
393
  line-height: 1.5;
394
  word-wrap: break-word;
395
  max-width: 90%;
 
396
  }
397
 
398
  .message.user .message-content {
@@ -407,6 +408,119 @@ body {
407
  border-radius: 6px 6px 6px 0;
408
  }
409
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
410
  .message-time {
411
  font-size: 0.75rem;
412
  color: var(--lightest-text);
 
10
  --sidebar-width: 280px;
11
  --header-height: 60px;
12
  --reasoning-background: #f9fafb;
13
+ --user-message-bg: #f9f8f6;
14
+ --user-message-color: var(--text-color);
15
  --assistant-message-bg: #f9f9f9;
16
  --assistant-message-color: #1a1a1a;
17
  --hover-color: #f5f5f5;
 
393
  line-height: 1.5;
394
  word-wrap: break-word;
395
  max-width: 90%;
396
+ position: relative;
397
  }
398
 
399
  .message.user .message-content {
 
408
  border-radius: 6px 6px 6px 0;
409
  }
410
 
411
+ .copy-button {
412
+ position: absolute;
413
+ right: 8px;
414
+ bottom: 8px;
415
+ background-color: rgba(255, 255, 255, 0.8);
416
+ border: 1px solid var(--border-color);
417
+ border-radius: 4px;
418
+ padding: 4px 8px;
419
+ font-size: 0.75rem;
420
+ cursor: pointer;
421
+ opacity: 0;
422
+ transition: opacity 0.2s ease;
423
+ }
424
+
425
+ .message-content:hover .copy-button {
426
+ opacity: 1;
427
+ }
428
+
429
+ .copy-button.copied {
430
+ background-color: #10B981;
431
+ color: white;
432
+ border-color: #059669;
433
+ }
434
+
435
+ .message.user .copy-button {
436
+ background-color: rgba(255, 255, 255, 0.9);
437
+ color: var(--light-text);
438
+ }
439
+
440
+ .message.user .copy-button:hover {
441
+ background-color: white;
442
+ color: var(--text-color);
443
+ }
444
+
445
+ .message.assistant .copy-button {
446
+ background-color: rgba(249, 249, 249, 0.9);
447
+ color: var(--text-color);
448
+ }
449
+
450
+ .message.assistant .copy-button:hover {
451
+ background-color: var(--background-color);
452
+ }
453
+
454
+ /* Add styles for markdown content */
455
+ .message-content p {
456
+ margin-bottom: 1em;
457
+ }
458
+
459
+ .message-content p:last-child {
460
+ margin-bottom: 0;
461
+ }
462
+
463
+ .message-content pre {
464
+ background-color: rgba(0, 0, 0, 0.05);
465
+ padding: 12px;
466
+ border-radius: 4px;
467
+ overflow-x: auto;
468
+ margin: 1em 0;
469
+ }
470
+
471
+ .message-content code {
472
+ background-color: rgba(0, 0, 0, 0.05);
473
+ padding: 2px 4px;
474
+ border-radius: 3px;
475
+ font-family: monospace;
476
+ }
477
+
478
+ .message-content pre code {
479
+ background-color: transparent;
480
+ padding: 0;
481
+ }
482
+
483
+ .message-content ul,
484
+ .message-content ol {
485
+ margin: 1em 0;
486
+ padding-left: 2em;
487
+ }
488
+
489
+ .message-content li {
490
+ margin: 0.5em 0;
491
+ }
492
+
493
+ .message-content blockquote {
494
+ border-left: 4px solid var(--border-color);
495
+ margin: 1em 0;
496
+ padding-left: 1em;
497
+ color: var(--light-text);
498
+ }
499
+
500
+ .message-content img {
501
+ max-width: 100%;
502
+ height: auto;
503
+ margin: 1em 0;
504
+ border-radius: 4px;
505
+ }
506
+
507
+ .message-content table {
508
+ border-collapse: collapse;
509
+ width: 100%;
510
+ margin: 1em 0;
511
+ }
512
+
513
+ .message-content th,
514
+ .message-content td {
515
+ border: 1px solid var(--border-color);
516
+ padding: 8px;
517
+ text-align: left;
518
+ }
519
+
520
+ .message-content th {
521
+ background-color: var(--hover-color);
522
+ }
523
+
524
  .message-time {
525
  font-size: 0.75rem;
526
  color: var(--lightest-text);