Merge pull request #107 from covespace/replace_dtm_with_git
replace dtm with git
This commit is contained in:
commit
1ea353cfd9
163
package-lock.json
generated
163
package-lock.json
generated
@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "devchat",
|
||||
"version": "0.0.34",
|
||||
"version": "0.0.45",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "devchat",
|
||||
"version": "0.0.34",
|
||||
"version": "0.0.45",
|
||||
"dependencies": {
|
||||
"@emotion/react": "^11.10.8",
|
||||
"@mantine/core": "^6.0.10",
|
||||
@ -16,6 +16,7 @@
|
||||
"@mantine/tiptap": "^6.0.10",
|
||||
"@tabler/icons-react": "^2.17.0",
|
||||
"@tiptap/extension-link": "^2.0.3",
|
||||
"@tiptap/pm": "^2.0.0",
|
||||
"@tiptap/react": "^2.0.3",
|
||||
"@tiptap/starter-kit": "^2.0.3",
|
||||
"axios": "^1.3.6",
|
||||
@ -28,6 +29,7 @@
|
||||
"react-markdown": "^8.0.7",
|
||||
"react-syntax-highlighter": "^15.5.0",
|
||||
"shell-escape": "^0.2.0",
|
||||
"string-argv": "^0.3.2",
|
||||
"uuid": "^9.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
@ -2727,7 +2729,6 @@
|
||||
"version": "4.2.9",
|
||||
"resolved": "https://registry.npmjs.org/@linaria/core/-/core-4.2.9.tgz",
|
||||
"integrity": "sha512-ELcu37VNVOT/PU0L6WDIN+aLzNFyJrqoBYT0CucGOCAmODbojUMCv8oJYRbWzA3N34w1t199dN4UFdfRWFG2rg==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@linaria/logger": "^4.0.0",
|
||||
"@linaria/tags": "^4.3.4",
|
||||
@ -2741,7 +2742,6 @@
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@linaria/logger/-/logger-4.0.0.tgz",
|
||||
"integrity": "sha512-YnBq0JlDWMEkTOK+tMo5yEVR0f5V//6qMLToGcLhTyM9g9i+IDFn51Z+5q2hLk7RdG4NBPgbcCXYi2w4RKsPeg==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"debug": "^4.1.1",
|
||||
"picocolors": "^1.0.0"
|
||||
@ -2754,7 +2754,6 @@
|
||||
"version": "4.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@linaria/tags/-/tags-4.3.4.tgz",
|
||||
"integrity": "sha512-W8zaLKtC4YFCwkZ9DMu2enCiD/zGyYmFSTzEvJP7ZycdftMizoOrWNOyF9kITyjGdq+jZvAXJz0BZDT6axgIRg==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/generator": "^7.20.4",
|
||||
"@linaria/logger": "^4.0.0",
|
||||
@ -2768,7 +2767,6 @@
|
||||
"version": "4.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@linaria/utils/-/utils-4.3.3.tgz",
|
||||
"integrity": "sha512-xSe/tod9A44aIMbtds9fWLNe2TT080lLdRSaoqX+UHsBWqClkrw5cXEt3lm8Vr4hZiXT2r/1AldjuHb9YbUlMg==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.20.2",
|
||||
"@babel/plugin-proposal-export-namespace-from": "^7.18.9",
|
||||
@ -3061,7 +3059,6 @@
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-2.0.1.tgz",
|
||||
"integrity": "sha512-ZR4aihtnnT9lMbhh5DEbsriJRlukRXmLZe7HmM+6ufJNNUDoazc75UX26xbgQlNUqgAqMcUdGFAnPc1JwgAdLQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.21.0"
|
||||
}
|
||||
@ -3070,7 +3067,6 @@
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@remirror/core-helpers/-/core-helpers-2.0.3.tgz",
|
||||
"integrity": "sha512-LqIPF4stGG69l9qu/FFicv9d9B+YaItzgDMC5A0CEvDQfKkGD3BfabLmfpnuWbsc06oKGdTduilgWcALLZoYLg==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.21.0",
|
||||
"@linaria/core": "4.2.9",
|
||||
@ -3093,7 +3089,6 @@
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@remirror/types/-/types-1.0.1.tgz",
|
||||
"integrity": "sha512-VlZQxwGnt1jtQ18D6JqdIF+uFZo525WEqrfp9BOc3COPpK4+AWCgdnAWL+ho6imWcoINlGjR/+3b6y5C1vBVEA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"type-fest": "^2.19.0"
|
||||
}
|
||||
@ -3102,7 +3097,6 @@
|
||||
"version": "2.19.0",
|
||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
|
||||
"integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=12.20"
|
||||
},
|
||||
@ -3444,7 +3438,6 @@
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.0.3.tgz",
|
||||
"integrity": "sha512-I9dsInD89Agdm1QjFRO9dmJtU1ldVSILNPW0pEhv9wYqYVvl4HUj/JMtYNqu2jWrCHNXQcaX/WkdSdvGJtmg5g==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"prosemirror-changeset": "^2.2.0",
|
||||
"prosemirror-collab": "^1.3.0",
|
||||
@ -3803,14 +3796,12 @@
|
||||
"node_modules/@types/object.omit": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/object.omit/-/object.omit-3.0.0.tgz",
|
||||
"integrity": "sha512-I27IoPpH250TUzc9FzXd0P1BV/BMJuzqD3jOz98ehf9dQqGkxlq+hO1bIqZGWqCg5bVOy0g4AUVJtnxe0klDmw==",
|
||||
"peer": true
|
||||
"integrity": "sha512-I27IoPpH250TUzc9FzXd0P1BV/BMJuzqD3jOz98ehf9dQqGkxlq+hO1bIqZGWqCg5bVOy0g4AUVJtnxe0klDmw=="
|
||||
},
|
||||
"node_modules/@types/object.pick": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/object.pick/-/object.pick-1.3.2.tgz",
|
||||
"integrity": "sha512-sn7L+qQ6RLPdXRoiaE7bZ/Ek+o4uICma/lBFPyJEKDTPTBP1W8u0c4baj3EiS4DiqLs+Hk+KUGvMVJtAw3ePJg==",
|
||||
"peer": true
|
||||
"integrity": "sha512-sn7L+qQ6RLPdXRoiaE7bZ/Ek+o4uICma/lBFPyJEKDTPTBP1W8u0c4baj3EiS4DiqLs+Hk+KUGvMVJtAw3ePJg=="
|
||||
},
|
||||
"node_modules/@types/parse-json": {
|
||||
"version": "4.0.0",
|
||||
@ -3938,8 +3929,7 @@
|
||||
"node_modules/@types/throttle-debounce": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz",
|
||||
"integrity": "sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==",
|
||||
"peer": true
|
||||
"integrity": "sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ=="
|
||||
},
|
||||
"node_modules/@types/unist": {
|
||||
"version": "2.0.6",
|
||||
@ -4736,7 +4726,6 @@
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-merge/-/babel-merge-3.0.0.tgz",
|
||||
"integrity": "sha512-eBOBtHnzt9xvnjpYNI5HmaPp/b2vMveE5XggzqHnQeHJ8mFIBrBv6WZEVIj5jJ2uwTItkqKo9gWzEEcBxEq0yw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"deepmerge": "^2.2.1",
|
||||
"object.omit": "^3.0.0"
|
||||
@ -4749,7 +4738,6 @@
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz",
|
||||
"integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
@ -5139,7 +5127,6 @@
|
||||
"version": "2.1.10",
|
||||
"resolved": "https://registry.npmjs.org/case-anything/-/case-anything-2.1.10.tgz",
|
||||
"integrity": "sha512-JczJwVrCP0jPKh05McyVsuOg6AYosrB9XWZKbQzXeDAm2ClE/PJE/BcrrQrVyGYH7Jg8V/LDupmyL4kFlVsVFQ==",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=12.13"
|
||||
},
|
||||
@ -5641,8 +5628,7 @@
|
||||
"node_modules/crelt": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz",
|
||||
"integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==",
|
||||
"peer": true
|
||||
"integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA=="
|
||||
},
|
||||
"node_modules/cross-spawn": {
|
||||
"version": "7.0.3",
|
||||
@ -5732,8 +5718,7 @@
|
||||
"node_modules/dash-get": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/dash-get/-/dash-get-1.0.2.tgz",
|
||||
"integrity": "sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ==",
|
||||
"peer": true
|
||||
"integrity": "sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ=="
|
||||
},
|
||||
"node_modules/data-uri-to-buffer": {
|
||||
"version": "4.0.1",
|
||||
@ -7575,7 +7560,6 @@
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
|
||||
"integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"is-plain-object": "^2.0.4"
|
||||
},
|
||||
@ -8627,7 +8611,6 @@
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz",
|
||||
"integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"uc.micro": "^1.0.1"
|
||||
}
|
||||
@ -8792,7 +8775,6 @@
|
||||
"version": "13.0.1",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz",
|
||||
"integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"argparse": "^2.0.1",
|
||||
"entities": "~3.0.1",
|
||||
@ -8808,7 +8790,6 @@
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
|
||||
"integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=0.12"
|
||||
},
|
||||
@ -8819,8 +8800,7 @@
|
||||
"node_modules/mdurl": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
|
||||
"integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
|
||||
"peer": true
|
||||
"integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g=="
|
||||
},
|
||||
"node_modules/media-typer": {
|
||||
"version": "0.3.0",
|
||||
@ -9526,7 +9506,6 @@
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz",
|
||||
"integrity": "sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"is-extendable": "^1.0.0"
|
||||
},
|
||||
@ -9538,7 +9517,6 @@
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
|
||||
"integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"isobject": "^3.0.1"
|
||||
},
|
||||
@ -9651,8 +9629,7 @@
|
||||
"node_modules/orderedmap": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.0.tgz",
|
||||
"integrity": "sha512-/pIFexOm6S70EPdznemIz3BQZoJ4VTFrhqzu0ACBqBgeLsLxq8e6Jim63ImIfwW/zAD1AlXpRMlOv3aghmo4dA==",
|
||||
"peer": true
|
||||
"integrity": "sha512-/pIFexOm6S70EPdznemIz3BQZoJ4VTFrhqzu0ACBqBgeLsLxq8e6Jim63ImIfwW/zAD1AlXpRMlOv3aghmo4dA=="
|
||||
},
|
||||
"node_modules/p-limit": {
|
||||
"version": "3.1.0",
|
||||
@ -10169,7 +10146,6 @@
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.2.0.tgz",
|
||||
"integrity": "sha512-QM7ohGtkpVpwVGmFb8wqVhaz9+6IUXcIQBGZ81YNAKYuHiFJ1ShvSzab4pKqTinJhwciZbrtBEk/2WsqSt2PYg==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"prosemirror-transform": "^1.0.0"
|
||||
}
|
||||
@ -10178,7 +10154,6 @@
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.0.tgz",
|
||||
"integrity": "sha512-+S/IJ69G2cUu2IM5b3PBekuxs94HO1CxJIWOFrLQXUaUDKL/JfBx+QcH31ldBlBXyDEUl+k3Vltfi1E1MKp2mA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"prosemirror-state": "^1.0.0"
|
||||
}
|
||||
@ -10187,7 +10162,6 @@
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.5.1.tgz",
|
||||
"integrity": "sha512-ga1ga/RkbzxfAvb6iEXYmrEpekn5NCwTb8w1dr/gmhSoaGcQ0VPuCzOn5qDEpC45ql2oDkKoKQbRxLJwKLpMTQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"prosemirror-model": "^1.0.0",
|
||||
"prosemirror-state": "^1.0.0",
|
||||
@ -10198,7 +10172,6 @@
|
||||
"version": "1.8.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.0.tgz",
|
||||
"integrity": "sha512-TZMitR8nlp9Xh42pDYGcWopCoFPmJduoyGJ7FjYM2/7gZKnfD41TIaZN5Q1cQjm6Fm/P5vk/DpVYFhS8kDdigw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"prosemirror-state": "^1.0.0",
|
||||
"prosemirror-transform": "^1.1.0",
|
||||
@ -10209,7 +10182,6 @@
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.1.tgz",
|
||||
"integrity": "sha512-GKTeE7ZoMsx5uVfc51/ouwMFPq0o8YrZ7Hx4jTF4EeGbXxBveUV8CGv46mSHuBBeXGmvu50guoV2kSnOeZZnUA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"prosemirror-keymap": "^1.0.0",
|
||||
"prosemirror-model": "^1.0.0",
|
||||
@ -10221,7 +10193,6 @@
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.3.1.tgz",
|
||||
"integrity": "sha512-YMV/IWBZ+LZSfaNcBbPcaQUiAiJRYFyJW2aapuNzL8nhIRsI7fIO0ykJFSe802+mWeoTsVJ1jxvRWPYqaUqljQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"prosemirror-state": "^1.2.2",
|
||||
"prosemirror-transform": "^1.0.0",
|
||||
@ -10233,7 +10204,6 @@
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.2.0.tgz",
|
||||
"integrity": "sha512-eAW/M/NTSSzpCOxfR8Abw6OagdG0MiDAiWHQMQveIsZtoKVYzm0AflSPq/ymqJd56/Su1YPbwy9lM13wgHOFmQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"prosemirror-state": "^1.0.0",
|
||||
"prosemirror-transform": "^1.0.0"
|
||||
@ -10243,7 +10213,6 @@
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.1.tgz",
|
||||
"integrity": "sha512-kVK6WGC+83LZwuSJnuCb9PsADQnFZllt94qPP3Rx/vLcOUV65+IbBeH2nS5cFggPyEVJhGkGrgYFRrG250WhHQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"prosemirror-state": "^1.0.0",
|
||||
"w3c-keyname": "^2.2.0"
|
||||
@ -10253,7 +10222,6 @@
|
||||
"version": "1.10.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.10.1.tgz",
|
||||
"integrity": "sha512-s7iaTLiX+qO5z8kF2NcMmy2T7mIlxzkS4Sp3vTKSYChPtbMpg6YxFkU0Y06rUg2WtKlvBu7v1bXzlGBkfjUWAA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"markdown-it": "^13.0.1",
|
||||
"prosemirror-model": "^1.0.0"
|
||||
@ -10263,7 +10231,6 @@
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.1.tgz",
|
||||
"integrity": "sha512-sBirXxVfHalZO4f1ZS63WzewINK4182+7dOmoMeBkqYO8wqMBvBS7wQuwVOHnkMWPEh0+N0LJ856KYUN+vFkmQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"crelt": "^1.0.0",
|
||||
"prosemirror-commands": "^1.0.0",
|
||||
@ -10275,7 +10242,6 @@
|
||||
"version": "1.19.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.19.0.tgz",
|
||||
"integrity": "sha512-/CvFGJnwc41EJSfDkQLly1cAJJJmBpZwwUJtwZPTjY2RqZJfM8HVbCreOY/jti8wTRbVyjagcylyGoeJH/g/3w==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"orderedmap": "^2.0.0"
|
||||
}
|
||||
@ -10284,7 +10250,6 @@
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.1.tgz",
|
||||
"integrity": "sha512-vYBdIHsYKSDIqYmPBC7lnwk9DsKn8PnVqK97pMYP5MLEDFqWIX75JiaJTzndBii4bRuNqhC2UfDOfM3FKhlBHg==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"prosemirror-model": "^1.19.0"
|
||||
}
|
||||
@ -10293,7 +10258,6 @@
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.2.2.tgz",
|
||||
"integrity": "sha512-rd0pqSDp86p0MUMKG903g3I9VmElFkQpkZ2iOd3EOVg1vo5Cst51rAsoE+5IPy0LPXq64eGcCYlW1+JPNxOj2w==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"prosemirror-model": "^1.0.0",
|
||||
"prosemirror-state": "^1.0.0",
|
||||
@ -10304,7 +10268,6 @@
|
||||
"version": "1.4.2",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.2.tgz",
|
||||
"integrity": "sha512-puuzLD2mz/oTdfgd8msFbe0A42j5eNudKAAPDB0+QJRw8cO1ygjLmhLrg9RvDpf87Dkd6D4t93qdef00KKNacQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"prosemirror-model": "^1.0.0",
|
||||
"prosemirror-transform": "^1.0.0",
|
||||
@ -10315,7 +10278,6 @@
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.3.2.tgz",
|
||||
"integrity": "sha512-/9JTeN6s58Zq66HXaxP6uf8PAmc7XXKZFPlOGVtLvxEd6xBP6WtzaJB9wBjiGUzwbdhdMEy7V62yuHqk/3VrnQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"prosemirror-keymap": "^1.1.2",
|
||||
"prosemirror-model": "^1.8.1",
|
||||
@ -10328,7 +10290,6 @@
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.4.tgz",
|
||||
"integrity": "sha512-0Yl9w7IdHkaCdqR+NE3FOucePME4OmiGcybnF1iasarEILP5U8+4xTnl53yafULjmwcg1SrSG65Hg7Zk2H2v3g==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.21.0",
|
||||
"@remirror/core-constants": "^2.0.1",
|
||||
@ -10345,7 +10306,6 @@
|
||||
"version": "1.7.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.7.1.tgz",
|
||||
"integrity": "sha512-VteoifAfpt46z0yEt6Fc73A5OID9t/y2QIeR5MgxEwTuitadEunD/V0c9jQW8ziT8pbFM54uTzRLJ/nLuQjMxg==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"prosemirror-model": "^1.0.0"
|
||||
}
|
||||
@ -10354,7 +10314,6 @@
|
||||
"version": "1.31.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.31.1.tgz",
|
||||
"integrity": "sha512-9NKJdXnGV4+1qFRi16XFZxpnx6zNok9MEj/HElkqUJ1HtOyKOICffKxqoXUUCAdHrrP+yMDvdXc6wT7GGWBL3A==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"prosemirror-model": "^1.16.0",
|
||||
"prosemirror-state": "^1.0.0",
|
||||
@ -11331,8 +11290,7 @@
|
||||
"node_modules/rope-sequence": {
|
||||
"version": "1.3.3",
|
||||
"resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.3.tgz",
|
||||
"integrity": "sha512-85aZYCxweiD5J8yTEbw+E6A27zSnLPNDL0WfPdw3YYodq7WjnTKo0q4dtyQ2gz23iPT8Q9CUyJtAaUNcTxRf5Q==",
|
||||
"peer": true
|
||||
"integrity": "sha512-85aZYCxweiD5J8yTEbw+E6A27zSnLPNDL0WfPdw3YYodq7WjnTKo0q4dtyQ2gz23iPT8Q9CUyJtAaUNcTxRf5Q=="
|
||||
},
|
||||
"node_modules/run-parallel": {
|
||||
"version": "1.2.0",
|
||||
@ -11826,6 +11784,14 @@
|
||||
"safe-buffer": "~5.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/string-argv": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz",
|
||||
"integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==",
|
||||
"engines": {
|
||||
"node": ">=0.6.19"
|
||||
}
|
||||
},
|
||||
"node_modules/string-length": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
|
||||
@ -12058,7 +12024,6 @@
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz",
|
||||
"integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
@ -12275,8 +12240,7 @@
|
||||
"node_modules/uc.micro": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
|
||||
"integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
|
||||
"peer": true
|
||||
"integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
|
||||
},
|
||||
"node_modules/unicode-canonical-property-names-ecmascript": {
|
||||
"version": "2.0.0",
|
||||
@ -12575,8 +12539,7 @@
|
||||
"node_modules/w3c-keyname": {
|
||||
"version": "2.2.6",
|
||||
"resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz",
|
||||
"integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==",
|
||||
"peer": true
|
||||
"integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg=="
|
||||
},
|
||||
"node_modules/walker": {
|
||||
"version": "1.0.8",
|
||||
@ -15014,7 +14977,6 @@
|
||||
"version": "4.2.9",
|
||||
"resolved": "https://registry.npmjs.org/@linaria/core/-/core-4.2.9.tgz",
|
||||
"integrity": "sha512-ELcu37VNVOT/PU0L6WDIN+aLzNFyJrqoBYT0CucGOCAmODbojUMCv8oJYRbWzA3N34w1t199dN4UFdfRWFG2rg==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@linaria/logger": "^4.0.0",
|
||||
"@linaria/tags": "^4.3.4",
|
||||
@ -15025,7 +14987,6 @@
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@linaria/logger/-/logger-4.0.0.tgz",
|
||||
"integrity": "sha512-YnBq0JlDWMEkTOK+tMo5yEVR0f5V//6qMLToGcLhTyM9g9i+IDFn51Z+5q2hLk7RdG4NBPgbcCXYi2w4RKsPeg==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"debug": "^4.1.1",
|
||||
"picocolors": "^1.0.0"
|
||||
@ -15035,7 +14996,6 @@
|
||||
"version": "4.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@linaria/tags/-/tags-4.3.4.tgz",
|
||||
"integrity": "sha512-W8zaLKtC4YFCwkZ9DMu2enCiD/zGyYmFSTzEvJP7ZycdftMizoOrWNOyF9kITyjGdq+jZvAXJz0BZDT6axgIRg==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/generator": "^7.20.4",
|
||||
"@linaria/logger": "^4.0.0",
|
||||
@ -15046,7 +15006,6 @@
|
||||
"version": "4.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@linaria/utils/-/utils-4.3.3.tgz",
|
||||
"integrity": "sha512-xSe/tod9A44aIMbtds9fWLNe2TT080lLdRSaoqX+UHsBWqClkrw5cXEt3lm8Vr4hZiXT2r/1AldjuHb9YbUlMg==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/core": "^7.20.2",
|
||||
"@babel/plugin-proposal-export-namespace-from": "^7.18.9",
|
||||
@ -15261,7 +15220,6 @@
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-2.0.1.tgz",
|
||||
"integrity": "sha512-ZR4aihtnnT9lMbhh5DEbsriJRlukRXmLZe7HmM+6ufJNNUDoazc75UX26xbgQlNUqgAqMcUdGFAnPc1JwgAdLQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.21.0"
|
||||
}
|
||||
@ -15270,7 +15228,6 @@
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@remirror/core-helpers/-/core-helpers-2.0.3.tgz",
|
||||
"integrity": "sha512-LqIPF4stGG69l9qu/FFicv9d9B+YaItzgDMC5A0CEvDQfKkGD3BfabLmfpnuWbsc06oKGdTduilgWcALLZoYLg==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.21.0",
|
||||
"@linaria/core": "4.2.9",
|
||||
@ -15293,7 +15250,6 @@
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@remirror/types/-/types-1.0.1.tgz",
|
||||
"integrity": "sha512-VlZQxwGnt1jtQ18D6JqdIF+uFZo525WEqrfp9BOc3COPpK4+AWCgdnAWL+ho6imWcoINlGjR/+3b6y5C1vBVEA==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"type-fest": "^2.19.0"
|
||||
},
|
||||
@ -15301,8 +15257,7 @@
|
||||
"type-fest": {
|
||||
"version": "2.19.0",
|
||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
|
||||
"integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
|
||||
"peer": true
|
||||
"integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -15486,7 +15441,6 @@
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.0.3.tgz",
|
||||
"integrity": "sha512-I9dsInD89Agdm1QjFRO9dmJtU1ldVSILNPW0pEhv9wYqYVvl4HUj/JMtYNqu2jWrCHNXQcaX/WkdSdvGJtmg5g==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"prosemirror-changeset": "^2.2.0",
|
||||
"prosemirror-collab": "^1.3.0",
|
||||
@ -15821,14 +15775,12 @@
|
||||
"@types/object.omit": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/object.omit/-/object.omit-3.0.0.tgz",
|
||||
"integrity": "sha512-I27IoPpH250TUzc9FzXd0P1BV/BMJuzqD3jOz98ehf9dQqGkxlq+hO1bIqZGWqCg5bVOy0g4AUVJtnxe0klDmw==",
|
||||
"peer": true
|
||||
"integrity": "sha512-I27IoPpH250TUzc9FzXd0P1BV/BMJuzqD3jOz98ehf9dQqGkxlq+hO1bIqZGWqCg5bVOy0g4AUVJtnxe0klDmw=="
|
||||
},
|
||||
"@types/object.pick": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/object.pick/-/object.pick-1.3.2.tgz",
|
||||
"integrity": "sha512-sn7L+qQ6RLPdXRoiaE7bZ/Ek+o4uICma/lBFPyJEKDTPTBP1W8u0c4baj3EiS4DiqLs+Hk+KUGvMVJtAw3ePJg==",
|
||||
"peer": true
|
||||
"integrity": "sha512-sn7L+qQ6RLPdXRoiaE7bZ/Ek+o4uICma/lBFPyJEKDTPTBP1W8u0c4baj3EiS4DiqLs+Hk+KUGvMVJtAw3ePJg=="
|
||||
},
|
||||
"@types/parse-json": {
|
||||
"version": "4.0.0",
|
||||
@ -15956,8 +15908,7 @@
|
||||
"@types/throttle-debounce": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz",
|
||||
"integrity": "sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==",
|
||||
"peer": true
|
||||
"integrity": "sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ=="
|
||||
},
|
||||
"@types/unist": {
|
||||
"version": "2.0.6",
|
||||
@ -16547,7 +16498,6 @@
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-merge/-/babel-merge-3.0.0.tgz",
|
||||
"integrity": "sha512-eBOBtHnzt9xvnjpYNI5HmaPp/b2vMveE5XggzqHnQeHJ8mFIBrBv6WZEVIj5jJ2uwTItkqKo9gWzEEcBxEq0yw==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"deepmerge": "^2.2.1",
|
||||
"object.omit": "^3.0.0"
|
||||
@ -16556,8 +16506,7 @@
|
||||
"deepmerge": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz",
|
||||
"integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==",
|
||||
"peer": true
|
||||
"integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -16856,8 +16805,7 @@
|
||||
"case-anything": {
|
||||
"version": "2.1.10",
|
||||
"resolved": "https://registry.npmjs.org/case-anything/-/case-anything-2.1.10.tgz",
|
||||
"integrity": "sha512-JczJwVrCP0jPKh05McyVsuOg6AYosrB9XWZKbQzXeDAm2ClE/PJE/BcrrQrVyGYH7Jg8V/LDupmyL4kFlVsVFQ==",
|
||||
"peer": true
|
||||
"integrity": "sha512-JczJwVrCP0jPKh05McyVsuOg6AYosrB9XWZKbQzXeDAm2ClE/PJE/BcrrQrVyGYH7Jg8V/LDupmyL4kFlVsVFQ=="
|
||||
},
|
||||
"chalk": {
|
||||
"version": "4.1.2",
|
||||
@ -17216,8 +17164,7 @@
|
||||
"crelt": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz",
|
||||
"integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==",
|
||||
"peer": true
|
||||
"integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA=="
|
||||
},
|
||||
"cross-spawn": {
|
||||
"version": "7.0.3",
|
||||
@ -17279,8 +17226,7 @@
|
||||
"dash-get": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/dash-get/-/dash-get-1.0.2.tgz",
|
||||
"integrity": "sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ==",
|
||||
"peer": true
|
||||
"integrity": "sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ=="
|
||||
},
|
||||
"data-uri-to-buffer": {
|
||||
"version": "4.0.1",
|
||||
@ -18628,7 +18574,6 @@
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
|
||||
"integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"is-plain-object": "^2.0.4"
|
||||
}
|
||||
@ -19439,7 +19384,6 @@
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz",
|
||||
"integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"uc.micro": "^1.0.1"
|
||||
}
|
||||
@ -19577,7 +19521,6 @@
|
||||
"version": "13.0.1",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz",
|
||||
"integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"argparse": "^2.0.1",
|
||||
"entities": "~3.0.1",
|
||||
@ -19589,16 +19532,14 @@
|
||||
"entities": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
|
||||
"integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
|
||||
"peer": true
|
||||
"integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"mdurl": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
|
||||
"integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
|
||||
"peer": true
|
||||
"integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g=="
|
||||
},
|
||||
"media-typer": {
|
||||
"version": "0.3.0",
|
||||
@ -20020,7 +19961,6 @@
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz",
|
||||
"integrity": "sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"is-extendable": "^1.0.0"
|
||||
}
|
||||
@ -20029,7 +19969,6 @@
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
|
||||
"integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"isobject": "^3.0.1"
|
||||
}
|
||||
@ -20120,8 +20059,7 @@
|
||||
"orderedmap": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.0.tgz",
|
||||
"integrity": "sha512-/pIFexOm6S70EPdznemIz3BQZoJ4VTFrhqzu0ACBqBgeLsLxq8e6Jim63ImIfwW/zAD1AlXpRMlOv3aghmo4dA==",
|
||||
"peer": true
|
||||
"integrity": "sha512-/pIFexOm6S70EPdznemIz3BQZoJ4VTFrhqzu0ACBqBgeLsLxq8e6Jim63ImIfwW/zAD1AlXpRMlOv3aghmo4dA=="
|
||||
},
|
||||
"p-limit": {
|
||||
"version": "3.1.0",
|
||||
@ -20498,7 +20436,6 @@
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.2.0.tgz",
|
||||
"integrity": "sha512-QM7ohGtkpVpwVGmFb8wqVhaz9+6IUXcIQBGZ81YNAKYuHiFJ1ShvSzab4pKqTinJhwciZbrtBEk/2WsqSt2PYg==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"prosemirror-transform": "^1.0.0"
|
||||
}
|
||||
@ -20507,7 +20444,6 @@
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.0.tgz",
|
||||
"integrity": "sha512-+S/IJ69G2cUu2IM5b3PBekuxs94HO1CxJIWOFrLQXUaUDKL/JfBx+QcH31ldBlBXyDEUl+k3Vltfi1E1MKp2mA==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"prosemirror-state": "^1.0.0"
|
||||
}
|
||||
@ -20516,7 +20452,6 @@
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.5.1.tgz",
|
||||
"integrity": "sha512-ga1ga/RkbzxfAvb6iEXYmrEpekn5NCwTb8w1dr/gmhSoaGcQ0VPuCzOn5qDEpC45ql2oDkKoKQbRxLJwKLpMTQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"prosemirror-model": "^1.0.0",
|
||||
"prosemirror-state": "^1.0.0",
|
||||
@ -20527,7 +20462,6 @@
|
||||
"version": "1.8.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.0.tgz",
|
||||
"integrity": "sha512-TZMitR8nlp9Xh42pDYGcWopCoFPmJduoyGJ7FjYM2/7gZKnfD41TIaZN5Q1cQjm6Fm/P5vk/DpVYFhS8kDdigw==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"prosemirror-state": "^1.0.0",
|
||||
"prosemirror-transform": "^1.1.0",
|
||||
@ -20538,7 +20472,6 @@
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.1.tgz",
|
||||
"integrity": "sha512-GKTeE7ZoMsx5uVfc51/ouwMFPq0o8YrZ7Hx4jTF4EeGbXxBveUV8CGv46mSHuBBeXGmvu50guoV2kSnOeZZnUA==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"prosemirror-keymap": "^1.0.0",
|
||||
"prosemirror-model": "^1.0.0",
|
||||
@ -20550,7 +20483,6 @@
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.3.1.tgz",
|
||||
"integrity": "sha512-YMV/IWBZ+LZSfaNcBbPcaQUiAiJRYFyJW2aapuNzL8nhIRsI7fIO0ykJFSe802+mWeoTsVJ1jxvRWPYqaUqljQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"prosemirror-state": "^1.2.2",
|
||||
"prosemirror-transform": "^1.0.0",
|
||||
@ -20562,7 +20494,6 @@
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.2.0.tgz",
|
||||
"integrity": "sha512-eAW/M/NTSSzpCOxfR8Abw6OagdG0MiDAiWHQMQveIsZtoKVYzm0AflSPq/ymqJd56/Su1YPbwy9lM13wgHOFmQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"prosemirror-state": "^1.0.0",
|
||||
"prosemirror-transform": "^1.0.0"
|
||||
@ -20572,7 +20503,6 @@
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.1.tgz",
|
||||
"integrity": "sha512-kVK6WGC+83LZwuSJnuCb9PsADQnFZllt94qPP3Rx/vLcOUV65+IbBeH2nS5cFggPyEVJhGkGrgYFRrG250WhHQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"prosemirror-state": "^1.0.0",
|
||||
"w3c-keyname": "^2.2.0"
|
||||
@ -20582,7 +20512,6 @@
|
||||
"version": "1.10.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.10.1.tgz",
|
||||
"integrity": "sha512-s7iaTLiX+qO5z8kF2NcMmy2T7mIlxzkS4Sp3vTKSYChPtbMpg6YxFkU0Y06rUg2WtKlvBu7v1bXzlGBkfjUWAA==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"markdown-it": "^13.0.1",
|
||||
"prosemirror-model": "^1.0.0"
|
||||
@ -20592,7 +20521,6 @@
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.1.tgz",
|
||||
"integrity": "sha512-sBirXxVfHalZO4f1ZS63WzewINK4182+7dOmoMeBkqYO8wqMBvBS7wQuwVOHnkMWPEh0+N0LJ856KYUN+vFkmQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"crelt": "^1.0.0",
|
||||
"prosemirror-commands": "^1.0.0",
|
||||
@ -20604,7 +20532,6 @@
|
||||
"version": "1.19.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.19.0.tgz",
|
||||
"integrity": "sha512-/CvFGJnwc41EJSfDkQLly1cAJJJmBpZwwUJtwZPTjY2RqZJfM8HVbCreOY/jti8wTRbVyjagcylyGoeJH/g/3w==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"orderedmap": "^2.0.0"
|
||||
}
|
||||
@ -20613,7 +20540,6 @@
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.1.tgz",
|
||||
"integrity": "sha512-vYBdIHsYKSDIqYmPBC7lnwk9DsKn8PnVqK97pMYP5MLEDFqWIX75JiaJTzndBii4bRuNqhC2UfDOfM3FKhlBHg==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"prosemirror-model": "^1.19.0"
|
||||
}
|
||||
@ -20622,7 +20548,6 @@
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.2.2.tgz",
|
||||
"integrity": "sha512-rd0pqSDp86p0MUMKG903g3I9VmElFkQpkZ2iOd3EOVg1vo5Cst51rAsoE+5IPy0LPXq64eGcCYlW1+JPNxOj2w==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"prosemirror-model": "^1.0.0",
|
||||
"prosemirror-state": "^1.0.0",
|
||||
@ -20633,7 +20558,6 @@
|
||||
"version": "1.4.2",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.2.tgz",
|
||||
"integrity": "sha512-puuzLD2mz/oTdfgd8msFbe0A42j5eNudKAAPDB0+QJRw8cO1ygjLmhLrg9RvDpf87Dkd6D4t93qdef00KKNacQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"prosemirror-model": "^1.0.0",
|
||||
"prosemirror-transform": "^1.0.0",
|
||||
@ -20644,7 +20568,6 @@
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.3.2.tgz",
|
||||
"integrity": "sha512-/9JTeN6s58Zq66HXaxP6uf8PAmc7XXKZFPlOGVtLvxEd6xBP6WtzaJB9wBjiGUzwbdhdMEy7V62yuHqk/3VrnQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"prosemirror-keymap": "^1.1.2",
|
||||
"prosemirror-model": "^1.8.1",
|
||||
@ -20657,7 +20580,6 @@
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.4.tgz",
|
||||
"integrity": "sha512-0Yl9w7IdHkaCdqR+NE3FOucePME4OmiGcybnF1iasarEILP5U8+4xTnl53yafULjmwcg1SrSG65Hg7Zk2H2v3g==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.21.0",
|
||||
"@remirror/core-constants": "^2.0.1",
|
||||
@ -20669,7 +20591,6 @@
|
||||
"version": "1.7.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.7.1.tgz",
|
||||
"integrity": "sha512-VteoifAfpt46z0yEt6Fc73A5OID9t/y2QIeR5MgxEwTuitadEunD/V0c9jQW8ziT8pbFM54uTzRLJ/nLuQjMxg==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"prosemirror-model": "^1.0.0"
|
||||
}
|
||||
@ -20678,7 +20599,6 @@
|
||||
"version": "1.31.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.31.1.tgz",
|
||||
"integrity": "sha512-9NKJdXnGV4+1qFRi16XFZxpnx6zNok9MEj/HElkqUJ1HtOyKOICffKxqoXUUCAdHrrP+yMDvdXc6wT7GGWBL3A==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"prosemirror-model": "^1.16.0",
|
||||
"prosemirror-state": "^1.0.0",
|
||||
@ -21370,8 +21290,7 @@
|
||||
"rope-sequence": {
|
||||
"version": "1.3.3",
|
||||
"resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.3.tgz",
|
||||
"integrity": "sha512-85aZYCxweiD5J8yTEbw+E6A27zSnLPNDL0WfPdw3YYodq7WjnTKo0q4dtyQ2gz23iPT8Q9CUyJtAaUNcTxRf5Q==",
|
||||
"peer": true
|
||||
"integrity": "sha512-85aZYCxweiD5J8yTEbw+E6A27zSnLPNDL0WfPdw3YYodq7WjnTKo0q4dtyQ2gz23iPT8Q9CUyJtAaUNcTxRf5Q=="
|
||||
},
|
||||
"run-parallel": {
|
||||
"version": "1.2.0",
|
||||
@ -21780,6 +21699,11 @@
|
||||
"safe-buffer": "~5.1.0"
|
||||
}
|
||||
},
|
||||
"string-argv": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz",
|
||||
"integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q=="
|
||||
},
|
||||
"string-length": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
|
||||
@ -21937,8 +21861,7 @@
|
||||
"throttle-debounce": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz",
|
||||
"integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==",
|
||||
"peer": true
|
||||
"integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg=="
|
||||
},
|
||||
"thunky": {
|
||||
"version": "1.1.0",
|
||||
@ -22076,8 +21999,7 @@
|
||||
"uc.micro": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
|
||||
"integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
|
||||
"peer": true
|
||||
"integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
|
||||
},
|
||||
"unicode-canonical-property-names-ecmascript": {
|
||||
"version": "2.0.0",
|
||||
@ -22269,8 +22191,7 @@
|
||||
"w3c-keyname": {
|
||||
"version": "2.2.6",
|
||||
"resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz",
|
||||
"integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==",
|
||||
"peer": true
|
||||
"integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg=="
|
||||
},
|
||||
"walker": {
|
||||
"version": "1.0.8",
|
||||
|
@ -293,9 +293,9 @@
|
||||
"@mantine/tiptap": "^6.0.10",
|
||||
"@tabler/icons-react": "^2.17.0",
|
||||
"@tiptap/extension-link": "^2.0.3",
|
||||
"@tiptap/pm": "^2.0.0",
|
||||
"@tiptap/react": "^2.0.3",
|
||||
"@tiptap/starter-kit": "^2.0.3",
|
||||
"@tiptap/pm": "^2.0.0",
|
||||
"axios": "^1.3.6",
|
||||
"dotenv": "^16.0.3",
|
||||
"ncp": "^2.0.0",
|
||||
@ -306,6 +306,7 @@
|
||||
"react-markdown": "^8.0.7",
|
||||
"react-syntax-highlighter": "^15.5.0",
|
||||
"shell-escape": "^0.2.0",
|
||||
"string-argv": "^0.3.2",
|
||||
"uuid": "^9.0.0"
|
||||
}
|
||||
}
|
||||
|
@ -1,13 +1,11 @@
|
||||
// devchat.ts
|
||||
|
||||
import { spawn } from "child_process";
|
||||
import { promisify } from "util";
|
||||
import * as vscode from 'vscode';
|
||||
import * as dotenv from 'dotenv';
|
||||
import * as path from 'path';
|
||||
import * as fs from 'fs';
|
||||
|
||||
import { logger } from '../util/logger';
|
||||
import { CommandRun } from "../util/commonUtil";
|
||||
import ExtensionContextHolder from '../util/extensionContext';
|
||||
|
||||
|
||||
@ -47,59 +45,16 @@ export interface ChatResponse {
|
||||
isError: boolean;
|
||||
}
|
||||
|
||||
|
||||
|
||||
class DevChat {
|
||||
private childProcess: any;
|
||||
private commandRun: CommandRun;
|
||||
|
||||
async spawnAsync(command: string, args: string[], options: any, onData: (data: string) => void): Promise<{ code: number, stdout: string; stderr: string }> {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.childProcess = spawn(command, args, options);
|
||||
|
||||
let stdout = '';
|
||||
let stderr = '';
|
||||
|
||||
this.childProcess.stdout.on('data', (data: { toString: () => any; }) => {
|
||||
const dataStr = data.toString();
|
||||
onData(dataStr);
|
||||
stdout += dataStr;
|
||||
});
|
||||
|
||||
this.childProcess.stderr.on('data', (data: string) => {
|
||||
stderr += data;
|
||||
});
|
||||
|
||||
this.childProcess.on('close', (code: number) => {
|
||||
if (stderr) {
|
||||
logger.channel()?.error(stderr);
|
||||
logger.channel()?.show();
|
||||
}
|
||||
|
||||
if (code === 0) {
|
||||
resolve({ code, stdout, stderr });
|
||||
} else {
|
||||
reject({ code, stdout, stderr });
|
||||
}
|
||||
});
|
||||
|
||||
// Add error event listener to handle command not found exception
|
||||
this.childProcess.on('error', (error: any) => {
|
||||
if (error.code === 'ENOENT') {
|
||||
logger.channel()?.error(`Command not found: ${command}`);
|
||||
logger.channel()?.show();
|
||||
} else {
|
||||
logger.channel()?.error(`Error occurred: ${error.message}`);
|
||||
logger.channel()?.show();
|
||||
}
|
||||
reject({ code: error.code, stdout: "", stderr: error.message });
|
||||
});
|
||||
});
|
||||
};
|
||||
constructor() {
|
||||
this.commandRun = new CommandRun();
|
||||
}
|
||||
|
||||
public stop() {
|
||||
if (this.childProcess) {
|
||||
this.childProcess.kill();
|
||||
this.childProcess = null;
|
||||
}
|
||||
this.commandRun.stop();
|
||||
}
|
||||
|
||||
async chat(content: string, options: ChatOptions = {}, onData: (data: ChatResponse) => void): Promise<ChatResponse> {
|
||||
@ -124,7 +79,6 @@ class DevChat {
|
||||
args.push(content)
|
||||
|
||||
const workspaceDir = vscode.workspace.workspaceFolders?.[0].uri.fsPath;
|
||||
// const openaiApiKey = process.env.OPENAI_API_KEY;
|
||||
|
||||
const secretStorage: vscode.SecretStorage = ExtensionContextHolder.context!.secrets;
|
||||
let openaiApiKey = await secretStorage.get("devchat_OPENAI_API_KEY");
|
||||
@ -147,9 +101,8 @@ class DevChat {
|
||||
const openaiStream = vscode.workspace.getConfiguration('DevChat').get('OpenAI.stream');
|
||||
const llmModel = vscode.workspace.getConfiguration('DevChat').get('llmModel');
|
||||
const tokensPerPrompt = vscode.workspace.getConfiguration('DevChat').get('OpenAI.tokensPerPrompt');
|
||||
// const userHistoryPrompts = vscode.workspace.getConfiguration('DevChat').get('OpenAI.useHistoryPrompt');
|
||||
|
||||
let devChat : string|undefined = vscode.workspace.getConfiguration('DevChat').get('DevChatPath');
|
||||
let devChat: string | undefined = vscode.workspace.getConfiguration('DevChat').get('DevChatPath');
|
||||
if (!devChat) {
|
||||
devChat = 'devchat';
|
||||
}
|
||||
@ -157,7 +110,7 @@ class DevChat {
|
||||
if (options.parent) {
|
||||
args.push("-p", options.parent);
|
||||
}
|
||||
|
||||
|
||||
const devchatConfig = {
|
||||
model: openaiModel,
|
||||
provider: llmModel,
|
||||
@ -176,7 +129,7 @@ class DevChat {
|
||||
try {
|
||||
const parseOutData = (stdout: string, isPartial: boolean) => {
|
||||
const responseLines = stdout.trim().split("\n");
|
||||
|
||||
|
||||
if (responseLines.length < 2) {
|
||||
return {
|
||||
"prompt-hash": "",
|
||||
@ -233,7 +186,7 @@ class DevChat {
|
||||
};
|
||||
|
||||
logger.channel()?.info(`Running devchat with args: ${args.join(" ")}`);
|
||||
const { code, stdout, stderr } = await this.spawnAsync(devChat, args, {
|
||||
const { exitCode: code, stdout, stderr } = await this.commandRun.spawnAsync(devChat, args, {
|
||||
maxBuffer: 10 * 1024 * 1024, // Set maxBuffer to 10 MB
|
||||
cwd: workspaceDir,
|
||||
env: {
|
||||
@ -241,7 +194,7 @@ class DevChat {
|
||||
OPENAI_API_KEY: openaiApiKey,
|
||||
...openAiApiBaseObject
|
||||
},
|
||||
}, onStdoutPartial);
|
||||
}, onStdoutPartial, undefined, undefined, undefined);
|
||||
|
||||
if (stderr) {
|
||||
const errorMessage = stderr.trim().match(/Error:(.+)/)?.[1];
|
||||
@ -268,39 +221,21 @@ class DevChat {
|
||||
}
|
||||
|
||||
async log(options: LogOptions = {}): Promise<LogEntry[]> {
|
||||
let args = ["log"];
|
||||
|
||||
if (options.skip) {
|
||||
args.push('--skip', `${options.skip}`);
|
||||
} else {
|
||||
// const skipLogCount = vscode.workspace.getConfiguration('DevChat').get('logSkip');
|
||||
// args.push('--skip', `${skipLogCount}`);
|
||||
}
|
||||
if (options.maxCount) {
|
||||
args.push('--max-count', `${options.maxCount}`);
|
||||
} else {
|
||||
const maxLogCount = vscode.workspace.getConfiguration('DevChat').get('maxLogCount');
|
||||
args.push('--max-count', `${maxLogCount}`);
|
||||
}
|
||||
|
||||
let devChat : string|undefined = vscode.workspace.getConfiguration('DevChat').get('DevChatPath');
|
||||
if (!devChat) {
|
||||
devChat = 'devchat';
|
||||
}
|
||||
|
||||
const args = this.buildLogArgs(options);
|
||||
const devChat = this.getDevChatPath();
|
||||
const workspaceDir = vscode.workspace.workspaceFolders?.[0].uri.fsPath;
|
||||
const openaiApiKey = process.env.OPENAI_API_KEY;
|
||||
|
||||
try {
|
||||
logger.channel()?.info(`Running devchat with args: ${args.join(" ")}`);
|
||||
const { code, stdout, stderr } = await this.spawnAsync(devChat, args, {
|
||||
const { exitCode: code, stdout, stderr } = await this.commandRun.spawnAsync(devChat, args, {
|
||||
maxBuffer: 10 * 1024 * 1024, // Set maxBuffer to 10 MB
|
||||
cwd: workspaceDir,
|
||||
env: {
|
||||
...process.env,
|
||||
OPENAI_API_KEY: openaiApiKey,
|
||||
},
|
||||
}, (partialResponse: string) => { });
|
||||
}, undefined, undefined, undefined, undefined);
|
||||
|
||||
logger.channel()?.info(`Finish devchat with args: ${args.join(" ")}`);
|
||||
if (stderr) {
|
||||
@ -309,13 +244,37 @@ class DevChat {
|
||||
return [];
|
||||
}
|
||||
|
||||
return JSON.parse(stdout.trim()).reverse();
|
||||
return JSON.parse(stdout.trim()).reverse();
|
||||
} catch (error) {
|
||||
logger.channel()?.error(`Error getting log: ${error}`);
|
||||
logger.channel()?.show();
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
private buildLogArgs(options: LogOptions): string[] {
|
||||
let args = ["log"];
|
||||
|
||||
if (options.skip) {
|
||||
args.push('--skip', `${options.skip}`);
|
||||
}
|
||||
if (options.maxCount) {
|
||||
args.push('--max-count', `${options.maxCount}`);
|
||||
} else {
|
||||
const maxLogCount = vscode.workspace.getConfiguration('DevChat').get('maxLogCount');
|
||||
args.push('--max-count', `${maxLogCount}`);
|
||||
}
|
||||
|
||||
return args;
|
||||
}
|
||||
|
||||
private getDevChatPath(): string {
|
||||
let devChat: string | undefined = vscode.workspace.getConfiguration('DevChat').get('DevChatPath');
|
||||
if (!devChat) {
|
||||
devChat = 'devchat';
|
||||
}
|
||||
return devChat;
|
||||
}
|
||||
}
|
||||
|
||||
export default DevChat;
|
||||
|
@ -4,6 +4,7 @@ import * as path from 'path';
|
||||
import * as fs from 'fs';
|
||||
|
||||
import { logger } from "../util/logger";
|
||||
import { CommandRun } from "../util/commonUtil";
|
||||
|
||||
interface DtmResponse {
|
||||
status: number;
|
||||
@ -13,102 +14,18 @@ interface DtmResponse {
|
||||
|
||||
class DtmWrapper {
|
||||
private workspaceDir: string;
|
||||
private binaryPath: string;
|
||||
private commandRun: CommandRun;
|
||||
|
||||
constructor() {
|
||||
this.workspaceDir = vscode.workspace.workspaceFolders?.[0].uri.fsPath || '.';
|
||||
this.binaryPath = 'dtm';
|
||||
|
||||
let binaryName: string;
|
||||
switch (process.platform) {
|
||||
case 'win32':
|
||||
binaryName = 'dtm.exe';
|
||||
break;
|
||||
case 'darwin':
|
||||
binaryName = 'dtm';
|
||||
break;
|
||||
case 'linux':
|
||||
binaryName = 'dtm';
|
||||
break;
|
||||
default:
|
||||
vscode.window.showErrorMessage(`Unsupported platform: ${process.platform}`);
|
||||
return;
|
||||
}
|
||||
|
||||
this.binaryPath = path.join(__dirname, '..', 'bin', process.platform, process.arch, binaryName);
|
||||
if (!fs.existsSync(this.binaryPath)) {
|
||||
logger.channel()?.error(`Binary not found: ${this.binaryPath}`);
|
||||
logger.channel()?.show();
|
||||
}
|
||||
}
|
||||
|
||||
private async runCommand(command: string, args: string[]): Promise<DtmResponse> {
|
||||
return new Promise((resolve, reject) => {
|
||||
logger.channel()?.info(`Running command: ${command} ${args.join(' ')}`);
|
||||
const child = spawn(command, args, { cwd: this.workspaceDir });
|
||||
let stdout = '';
|
||||
let stderr = '';
|
||||
|
||||
child.stdout.on('data', (data) => {
|
||||
stdout += data;
|
||||
});
|
||||
|
||||
child.stderr.on('data', (data) => {
|
||||
stderr += data;
|
||||
});
|
||||
|
||||
child.on('close', (code) => {
|
||||
try {
|
||||
const parsedOutput = JSON.parse(stdout.trim());
|
||||
if (code === 0) {
|
||||
resolve(parsedOutput);
|
||||
} else {
|
||||
reject(parsedOutput);
|
||||
}
|
||||
} catch (error) {
|
||||
// 处理 JSON 解析异常
|
||||
const errorObj = error as Error;
|
||||
reject({ status: -1, message: 'JSON parse error', log: errorObj.message });
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private async runCommand2(command: string, args: string[]): Promise<DtmResponse> {
|
||||
return new Promise((resolve, reject) => {
|
||||
logger.channel()?.info(`Running command: ${command} ${args.join(' ')}`);
|
||||
const child = spawn(command, args, { cwd: this.workspaceDir });
|
||||
let stdout = '';
|
||||
let stderr = '';
|
||||
|
||||
child.stdout.on('data', (data) => {
|
||||
stdout += data;
|
||||
});
|
||||
|
||||
child.stderr.on('data', (data) => {
|
||||
stderr += data;
|
||||
});
|
||||
|
||||
child.on('close', (code) => {
|
||||
if (code === null) {
|
||||
code = 0;
|
||||
}
|
||||
resolve({ status: code, message: stdout, log: stderr });
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async scaffold(directoryTree: string): Promise<DtmResponse> {
|
||||
return await this.runCommand(this.binaryPath, ['scaffold', directoryTree, '-o', 'json']);
|
||||
}
|
||||
|
||||
async patch(patchFilePath: string): Promise<DtmResponse> {
|
||||
return await this.runCommand(this.binaryPath, ['patch', patchFilePath, '-o', 'json']);
|
||||
this.commandRun = new CommandRun();
|
||||
}
|
||||
|
||||
async commit(commitMsg: string): Promise<DtmResponse> {
|
||||
try {
|
||||
return await this.runCommand(this.binaryPath, ['commit', '-m', commitMsg, '-o', 'json']);
|
||||
logger.channel()?.info(`Running command: git commit -m ${commitMsg}`);
|
||||
const result = await this.commandRun.spawnAsync("git", ['commit', '-m', commitMsg], { cwd: this.workspaceDir }, undefined, undefined, undefined, undefined);
|
||||
return { status: result.exitCode || 0, message: result.stdout, log: result.stderr };
|
||||
} catch (error) {
|
||||
// 处理 runCommand 中的 reject 错误
|
||||
logger.channel()?.error(`Error in commit: ${error}`);
|
||||
@ -120,7 +37,8 @@ class DtmWrapper {
|
||||
async commitall(commitMsg: string): Promise<DtmResponse> {
|
||||
try {
|
||||
logger.channel()?.info(`Running command: git commit -am ${commitMsg}`);
|
||||
return await this.runCommand2("git", ['commit', '-am', commitMsg]);
|
||||
const result = await this.commandRun.spawnAsync("git", ['commit', '-am', commitMsg], { cwd: this.workspaceDir }, undefined, undefined, undefined, undefined);
|
||||
return { status: result.exitCode || 0, message: result.stdout, log: result.stderr };
|
||||
} catch (error) {
|
||||
// 处理 runCommand 中的 reject 错误
|
||||
logger.channel()?.error(`Error in commit: ${error}`);
|
||||
|
@ -2,109 +2,154 @@ import * as fs from 'fs';
|
||||
import * as os from 'os';
|
||||
import * as path from 'path';
|
||||
import * as vscode from 'vscode';
|
||||
import { parseArgsStringToArgv } from 'string-argv';
|
||||
|
||||
import { logger } from './logger';
|
||||
import { spawn, exec } from 'child_process';
|
||||
|
||||
export function createTempSubdirectory(subdir: string): string {
|
||||
// 获取系统临时目录
|
||||
const tempDir = os.tmpdir();
|
||||
// 构建完整的目录路径
|
||||
let targetDir = path.join(tempDir, subdir, Date.now().toString());
|
||||
// 检查目录是否存在,如果存在则重新生成目录名称
|
||||
while (fs.existsSync(targetDir)) {
|
||||
targetDir = path.join(tempDir, subdir, Date.now().toString());
|
||||
}
|
||||
// 递归创建目录
|
||||
fs.mkdirSync(targetDir, { recursive: true });
|
||||
// 返回创建的目录的绝对路径
|
||||
return targetDir;
|
||||
// 获取系统临时目录
|
||||
const tempDir = os.tmpdir();
|
||||
// 构建完整的目录路径
|
||||
let targetDir = path.join(tempDir, subdir, Date.now().toString());
|
||||
// 检查目录是否存在,如果存在则重新生成目录名称
|
||||
while (fs.existsSync(targetDir)) {
|
||||
targetDir = path.join(tempDir, subdir, Date.now().toString());
|
||||
}
|
||||
// 递归创建目录
|
||||
fs.mkdirSync(targetDir, { recursive: true });
|
||||
// 返回创建的目录的绝对路径
|
||||
return targetDir;
|
||||
}
|
||||
|
||||
interface CommandResult {
|
||||
exitCode: number | null;
|
||||
stdout: string;
|
||||
stderr: string;
|
||||
}
|
||||
|
||||
export async function runCommandAndWriteOutput(
|
||||
command: string,
|
||||
args: string[],
|
||||
outputFile: string
|
||||
): Promise<CommandResult> {
|
||||
return new Promise((resolve) => {
|
||||
// 获取当前工作区目录
|
||||
const workspaceDir = vscode.workspace.workspaceFolders?.[0].uri.fsPath || '.';
|
||||
|
||||
// 使用spawn执行命令
|
||||
const childProcess = spawn(command, args, { cwd: workspaceDir });
|
||||
|
||||
let stdout = '';
|
||||
let stderr = '';
|
||||
|
||||
// 监听stdout数据
|
||||
childProcess.stdout.on('data', (data) => {
|
||||
stdout += data.toString();
|
||||
});
|
||||
|
||||
// 监听stderr数据
|
||||
childProcess.stderr.on('data', (data) => {
|
||||
stderr += data.toString();
|
||||
});
|
||||
|
||||
// 监听进程退出事件
|
||||
childProcess.on('exit', (exitCode) => {
|
||||
// 将命令输出结果写入到文件
|
||||
if (outputFile !== '') {
|
||||
fs.writeFileSync(outputFile, stdout);
|
||||
}
|
||||
|
||||
// 返回结果
|
||||
resolve({
|
||||
exitCode,
|
||||
stdout,
|
||||
stderr,
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
exitCode: number | null;
|
||||
stdout: string;
|
||||
stderr: string;
|
||||
}
|
||||
|
||||
export async function runCommandStringAndWriteOutput(
|
||||
export class CommandRun {
|
||||
private childProcess: any;
|
||||
|
||||
// init childProcess in construction function
|
||||
constructor() {
|
||||
this.childProcess = null;
|
||||
}
|
||||
|
||||
public async spawnAsync(command: string, args: string[], options: object, onData: ((data: string) => void) | undefined, onError: ((data: string) => void) | undefined, onOutputFile: ((command: string, stdout: string, stderr: string) => string) | undefined, outputFile: string | undefined): Promise<CommandResult> {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.childProcess = spawn(command, args, options);
|
||||
|
||||
let stdout = '';
|
||||
let stderr = '';
|
||||
|
||||
this.childProcess.stdout.on('data', (data: { toString: () => any; }) => {
|
||||
const dataStr = data.toString();
|
||||
if (onData) {
|
||||
onData(dataStr);
|
||||
}
|
||||
stdout += dataStr;
|
||||
});
|
||||
|
||||
this.childProcess.stderr.on('data', (data: string) => {
|
||||
const dataStr = data.toString();
|
||||
if (onError) {
|
||||
onError(dataStr);
|
||||
}
|
||||
stderr += dataStr;
|
||||
});
|
||||
|
||||
this.childProcess.on('close', (code: number) => {
|
||||
let outputData = stdout;
|
||||
if (onOutputFile) {
|
||||
outputData = onOutputFile(command + " " + args.join(" "), stdout, stderr);
|
||||
}
|
||||
|
||||
if (outputFile) {
|
||||
fs.writeFileSync(outputFile, outputData);
|
||||
}
|
||||
|
||||
if (stderr) {
|
||||
logger.channel()?.error(stderr);
|
||||
logger.channel()?.show();
|
||||
}
|
||||
|
||||
if (code === 0) {
|
||||
resolve({ exitCode: code, stdout, stderr });
|
||||
} else {
|
||||
reject({ exitCode: code, stdout, stderr });
|
||||
}
|
||||
});
|
||||
|
||||
// Add error event listener to handle command not found exception
|
||||
this.childProcess.on('error', (error: any) => {
|
||||
if (error.code === 'ENOENT') {
|
||||
logger.channel()?.error(`Command not found: ${command}`);
|
||||
logger.channel()?.show();
|
||||
} else {
|
||||
logger.channel()?.error(`Error occurred: ${error.message}`);
|
||||
logger.channel()?.show();
|
||||
}
|
||||
reject({ exitCode: error.code, stdout: "", stderr: error.message });
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
public stop() {
|
||||
if (this.childProcess) {
|
||||
this.childProcess.kill();
|
||||
this.childProcess = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export async function runCommandAndWriteOutput(
|
||||
command: string,
|
||||
args: string[],
|
||||
outputFile: string
|
||||
): Promise<CommandResult> {
|
||||
const run = new CommandRun();
|
||||
const options = {
|
||||
cwd: vscode.workspace.workspaceFolders?.[0].uri.fsPath || '.',
|
||||
};
|
||||
|
||||
return run.spawnAsync(command, args, options, undefined, undefined, undefined, outputFile);
|
||||
}
|
||||
|
||||
export async function runCommandStringAndWriteOutput(
|
||||
commandString: string,
|
||||
outputFile: string
|
||||
): Promise<CommandResult> {
|
||||
return new Promise((resolve) => {
|
||||
const workspaceDir = vscode.workspace.workspaceFolders?.[0].uri.fsPath || '.';
|
||||
|
||||
// 使用exec执行命令行字符串
|
||||
const childProcess = exec(commandString, { cwd: workspaceDir }, (error, stdout, stderr) => {
|
||||
// 将命令输出结果写入到文件
|
||||
const data = {
|
||||
command: commandString,
|
||||
content: stdout
|
||||
};
|
||||
const jsonData = JSON.stringify(data);
|
||||
): Promise<CommandResult> {
|
||||
const run = new CommandRun();
|
||||
const options = {
|
||||
cwd: vscode.workspace.workspaceFolders?.[0].uri.fsPath || '.'
|
||||
};
|
||||
|
||||
fs.writeFileSync(outputFile, jsonData);
|
||||
|
||||
// 返回结果
|
||||
resolve({
|
||||
exitCode: error && error.code? error.code : 0,
|
||||
stdout,
|
||||
stderr,
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
// Split the commandString into command and args array using string-argv
|
||||
const commandParts = parseArgsStringToArgv(commandString);
|
||||
const command = commandParts[0];
|
||||
const args = commandParts.slice(1);
|
||||
|
||||
export async function getLanguageIdByFileName(fileName: string): Promise<string | undefined> {
|
||||
try {
|
||||
// 打开指定的文件
|
||||
const document = await vscode.workspace.openTextDocument(fileName);
|
||||
// 获取文件的语言标识符
|
||||
const languageId = document.languageId;
|
||||
return languageId;
|
||||
} catch (error) {
|
||||
// 如果无法打开文件或发生其他错误,返回undefined
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
const onOutputFile = (command: string, stdout: string, stderr: string): string => {
|
||||
const data = {
|
||||
command: commandString,
|
||||
content: stdout,
|
||||
};
|
||||
return JSON.stringify(data);
|
||||
};
|
||||
|
||||
return run.spawnAsync(command, args, options, undefined, undefined, onOutputFile, outputFile);
|
||||
}
|
||||
|
||||
export async function getLanguageIdByFileName(fileName: string): Promise<string | undefined> {
|
||||
try {
|
||||
// 打开指定的文件
|
||||
const document = await vscode.workspace.openTextDocument(fileName);
|
||||
// 获取文件的语言标识符
|
||||
const languageId = document.languageId;
|
||||
return languageId;
|
||||
} catch (error) {
|
||||
// 如果无法打开文件或发生其他错误,返回undefined
|
||||
return undefined;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user