{"_id":"chatgpt-app","_rev":"4-7e0520046f5832199a09cb6aabd35080","name":"chatgpt-app","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"chatgpt-app","version":"1.0.0","description":"","main":"dist/cjs.js","module":"dist/esm.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"rollup --config"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@babel/core":"^7.21.3","@babel/preset-env":"^7.20.2","@rollup/plugin-babel":"^6.0.3","@rollup/plugin-image":"^3.0.2","@rollup/plugin-node-resolve":"^15.0.1","@types/react":"16.9.0","@types/react-dom":"16.9.0","less":"^4.1.3","rollup":"^3.20.2","rollup-plugin-less":"^1.1.3","rollup-plugin-typescript2":"^0.34.1","typescript":"^5.0.2"},"dependencies":{"@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.21.0","@rollup/plugin-commonjs":"^24.0.1","axios":"^1.3.4","classnames":"^2.3.2","react":"16.9.0","react-copy-to-clipboard":"^5.1.0","react-dom":"16.9.0","reconnecting-websocket":"^4.4.0","uid":"^2.0.1"},"peerDependencies":{"axios":">=1","react":">=16.9.0","react-dom":">=16.9.0"},"type":"module","types":"dist/index.d.ts","_id":"chatgpt-app@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"16.16.0","_npmUser":{"name":"morningsun","email":"892474885@qq.com"},"dist":{"integrity":"sha512-wdzBBT800MZCBcbl/LZLpE7aWbPyqikvbscYg1bcSphq4ueZckuXuou0l+pFJAIX0ekQB4MnupnDe3bS9uFpfQ==","shasum":"b2f5ed4eaffce568d8ad36782fd7a3b82e05fe93","tarball":"https://registry.npmjs.org/chatgpt-app/-/chatgpt-app-1.0.0.tgz","fileCount":16,"unpackedSize":372772,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHU+xjfxPHsk/8BylzC99bgFAZHVt33/7c7UgoPsKi7UAiBy6zaHO16wIYnkTbXP4sI8HNcFSGiEj6snsUQ3q4T5SQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkJPreACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmohyw//fOsvhteHOSVqDWfTEo+ibJjLOO25A4wZx43WPcnqaTFYRt0W\r\nKZg+8VRNlnJmK62T6vamZdrghLIiYeg7UyTGy/Zej3J9FCsKzI4q2TqVS43q\r\nhjO1nfP/6x/szVIP99up6botEacMnmtMYKEEd4M7V7Y2k+0F5Fd7He8Arl8z\r\nRFbrjh6NJY88fjn2tELgLw7JriAB8cmzrL1VwPf1h89seenqkDdcZfk4R7O7\r\nXMECSaPGuIP2VmxT3+YpkuNNgTQqCoVDqnu93Rw5Vxcc0xRECjeOiUPGdrMa\r\nptqSOpA2tGJ5QTR8iKYC/i29sGUc2rPdKuiKRvrPltTIFmCBDwUSoYYCtZp4\r\nYBZpGgWcXmV909W5fm+yJEQjC/Rw9p09XbXzqclJoj7HrpuF650xRwgbpk0D\r\nOSOeOtXc6VQUOLK9F2tyEwHBTQEmni+jc2es1ZFoKFGfjXOI0r7GKbnlnWpc\r\nOAZFEisAtldEGb31/gjAE9lHqobp8FlthlDpv3LdcfDW1rH7ZeC5HYGi/VAg\r\ndVyOTBnLC606uPIeEtn5ykmtLHE12X1cUWieZheVR3x3FCekxCxfqVtBA/td\r\nnTYTpXJE21Eip1HzuRohA6sgc3JCq3eoxDqkBlVZGcrHc5Klg9mXHYGqHhbn\r\n3CS2X72MBsoGp8xaNwe3OFGgxZLqWFdSq4c=\r\n=SeiX\r\n-----END PGP SIGNATURE-----\r\n"},"directories":{},"maintainers":[{"name":"morningsun","email":"892474885@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/chatgpt-app_1.0.0_1680145118564_0.10817574420084597"},"_hasShrinkwrap":false},"1.0.1":{"name":"chatgpt-app","version":"1.0.1","description":"基于react、webSocket开发的类ChatGPT组件","main":"dist/cjs.js","module":"dist/esm.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"rollup --config"},"keywords":["chatgpt","react","webSocket","chat-online","component"],"author":"","license":"ISC","devDependencies":{"@babel/core":"^7.21.3","@babel/preset-env":"^7.20.2","@rollup/plugin-babel":"^6.0.3","@rollup/plugin-image":"^3.0.2","@rollup/plugin-node-resolve":"^15.0.1","@types/react":"16.9.0","@types/react-dom":"16.9.0","less":"^4.1.3","rollup":"^3.20.2","rollup-plugin-less":"^1.1.3","rollup-plugin-typescript2":"^0.34.1","typescript":"^5.0.2"},"dependencies":{"@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.21.0","@rollup/plugin-commonjs":"^24.0.1","axios":"^1.3.4","classnames":"^2.3.2","react":"16.9.0","react-copy-to-clipboard":"^5.1.0","react-dom":"16.9.0","reconnecting-websocket":"^4.4.0","uid":"^2.0.1"},"peerDependencies":{"axios":">=1","react":">=16.9.0","react-dom":">=16.9.0"},"type":"module","types":"dist/index.d.ts","homepage":"https://github.com/chenqinyang1994/chatgpt-app","repository":{"type":"git","url":"git+ssh://git@github.com/chenqinyang1994/chatgpt-app.git"},"bugs":{"url":"https://github.com/chenqinyang1994/chatgpt-app/issues"},"gitHead":"fbe9aba71b1810ddd2725dd3405507824a724c23","_id":"chatgpt-app@1.0.1","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-0UN724PABId9hmkyfjF6RrKPXMN8quOcDpmmRvzkqS31vbDbwslWvjTktk5pLlSQV/jSpNME6oMDjXEcsAnppQ==","shasum":"949c1c34e557d0052e44f19bb98f1b50b77af635","tarball":"https://registry.npmjs.org/chatgpt-app/-/chatgpt-app-1.0.1.tgz","fileCount":17,"unpackedSize":373593,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDqvUgux3DPxKgtXZiOQ5uZRoEySZVMHn1iJNqgmbh9wIhALSbClbn+jSwxKLdWsorlBj5aidMqQdYYhSuPuX8YWLa"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkJQYLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpQBg//ZBB2ZJt1xcSGNOND6EyRcPIS7l/LiRTy2nDdN2hmhKNQYzpf\r\nO5HkpqkaErMJUK1xdlHaGuH1nhTy2W0tX1z04UxBW+PZbjspqCdsvmuX+64+\r\nwYiD+y5fqeM51pZE8U/2iqMdqSuxvSy3zP0D6e7OaY0d38+casYa1peXhhRN\r\nCABGWxjkakzcLrug56OJHibFNXhUJgIJEKKzqqxXzEtpMesEGnCxBXXLWWbT\r\ng61skv/DS6yjjKYxCZDLuvN9Ahu1LPBIkoMPt8p52qrdcibgXB3zZka2590S\r\n1Bb2LsaD1PWXTc6pdsA2Z+e89MaVjt3oX7iUZ/eYkS9kS2FZB5IqiXqgOb7E\r\np4wLBduNjV/4E/PrUGAnBgkTEbpjkaOKIbd2OHqXNW7igU5bmU98E1/k+8Nj\r\nGcIPh4ZjG7O10tCblM8cu8DP1zOqVAlZeS5ntvZSZZO+f3umcnJw21pHkMUG\r\ntpWTyVQJ2EnCLZ4HgL33FwIYqW/9v6NzjLlRyAEcIK1zmmVG0oNTk5l9VgbB\r\nqFt3Ct6iXqxXeCxeqEr+zOKZcsGizSD8XCc9+eW+fX3WBP/lkZzf4/Zl8abj\r\nyOg9SXTghSWkPfiqWCZKiOXYfRhBrmy0PzEzftgveoT8GILL7HCprPz3S/ci\r\nVDlP3KC0z27vZ3LYnDgV3448h0xCGxkW3ZI=\r\n=3o4z\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"morningsun","email":"892474885@qq.com"},"directories":{},"maintainers":[{"name":"morningsun","email":"892474885@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/chatgpt-app_1.0.1_1680147978900_0.5654574682033575"},"_hasShrinkwrap":false},"1.0.2":{"name":"chatgpt-app","version":"1.0.2","description":"基于react、webSocket开发的类ChatGPT组件","main":"dist/cjs.js","module":"dist/esm.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"rollup --config"},"keywords":["chatgpt","react","webSocket","chat-online","component"],"author":"","license":"ISC","devDependencies":{"@babel/core":"^7.21.3","@babel/preset-env":"^7.20.2","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.21.0","@rollup/plugin-babel":"^6.0.3","@rollup/plugin-commonjs":"^24.0.1","@rollup/plugin-image":"^3.0.2","@rollup/plugin-node-resolve":"^15.0.1","@rollup/plugin-terser":"^0.4.0","@types/react":"16.9.0","@types/react-dom":"16.9.0","less":"^4.1.3","rollup":"^3.20.2","rollup-plugin-less":"^1.1.3","rollup-plugin-typescript2":"^0.34.1","typescript":"^5.0.2"},"dependencies":{"axios":"^1.3.4","classnames":"^2.3.2","react":"16.9.0","react-copy-to-clipboard":"^5.1.0","react-dom":"16.9.0","reconnecting-websocket":"^4.4.0","uid":"^2.0.1"},"peerDependencies":{"axios":">=1","react":">=16.9.0","react-dom":">=16.9.0"},"type":"module","types":"dist/index.d.ts","homepage":"https://github.com/chenqinyang1994/chatgpt-app","repository":{"type":"git","url":"git+ssh://git@github.com/chenqinyang1994/chatgpt-app.git"},"bugs":{"url":"https://github.com/chenqinyang1994/chatgpt-app/issues"},"gitHead":"579b2f20524e23c9400b854797a364d55dd5dc96","_id":"chatgpt-app@1.0.2","_nodeVersion":"16.16.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-cjTvVPGWxKQtTpoAi+W4N1+0Z8awqpFbiR3RdgEHsUbfoBxWHZVakgN/Dw/3IWKdQ+CmbYfgmLUDfzyBYOnmWQ==","shasum":"fa3b31ac412db1c806bbe2ebc355dbcce796ed76","tarball":"https://registry.npmjs.org/chatgpt-app/-/chatgpt-app-1.0.2.tgz","fileCount":15,"unpackedSize":217458,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCM7DcG1GO1e0Bx50N3wnddVic2oHD2Mle0Rhzgs0seBAIgeI5nTe7wjTKnlz6ugtSGPqgIGd6r9+cKFLogh/Wn6VU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkJpGTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpYmg//eoYeibkktyv4KLVbaRitfq+5cHfUO6dT2gAo15v2reSCsbJy\r\nammVArBFvyNlDlSycJxnqt/on5BeIsYlANGvAZcxX3S82CGythKE0RAYGw+e\r\nQTVx4C5ew+eRhoTNGeBEjkjm3HhrTwWxTOBOd1RWQ6BItYkmPWsvO6ckvYce\r\nfMhsIPFCBFiCImItsQlYvb+L2i4cG/P8lBtsXSF8QYZ/f4sbQdrlaiaK4PQO\r\nUH9k/vxL8XFTbBIvKVkwuSchp44JdB6N2qEflJy+iw8SHBSr+yAKmispn0lP\r\neUnDQbeqJzmLJ2DALiThkpfWhBLnkFwAzS9Kiia98M8GyDZtn3vV9kd6vQHS\r\nwRAUdmHYR8GKclk42rnDHJ+9y0vvFLRgzkCK445Lz88NvYEWB5AxSGrIjZIw\r\nc9D36uSL+oyRrwdKbyIZCxSFjSjD0x8R8tPSisPKIXXNaTGKDb97MufaqF+I\r\nnNSVUQ2S1NdqzNeQtVTbWe6hfaxvXdFQcFKupF+McCipIZGrvCPyE7Ix9ZCA\r\ngOe7/GBlNhHEKpYTygIv1JDM/7LFwOQ7locpEftND5bXOi3kYdwmk+iWrBgj\r\nrt8mcDjBrkrwx/x5+88+8UorCyr9dSU+Yp+IwQM2P8Y63FCI6sJIAe876Cch\r\n6ZLqUrjdpzx5d1b7/7aLYALdluyObEAESZc=\r\n=oNho\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"morningsun","email":"892474885@qq.com"},"directories":{},"maintainers":[{"name":"morningsun","email":"892474885@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/chatgpt-app_1.0.2_1680249235500_0.10193387620943106"},"_hasShrinkwrap":false},"1.0.3":{"name":"chatgpt-app","version":"1.0.3","description":"基于react、webSocket开发的类ChatGPT组件","main":"dist/cjs.js","module":"dist/esm.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"rollup --config"},"keywords":["chatgpt","react","webSocket","chat-online","component"],"author":"","license":"ISC","devDependencies":{"@babel/core":"^7.21.3","@babel/preset-env":"^7.20.2","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.21.0","@rollup/plugin-babel":"^6.0.3","@rollup/plugin-commonjs":"^24.0.1","@rollup/plugin-image":"^3.0.2","@rollup/plugin-node-resolve":"^15.0.1","@rollup/plugin-terser":"^0.4.0","@types/react":"16.9.0","@types/react-dom":"16.9.0","less":"^4.1.3","rollup":"^3.20.2","rollup-plugin-less":"^1.1.3","rollup-plugin-typescript2":"^0.34.1","typescript":"^5.0.2"},"dependencies":{"axios":"^1.3.4","classnames":"^2.3.2","react":"16.9.0","react-copy-to-clipboard":"^5.1.0","react-dom":"16.9.0","reconnecting-websocket":"^4.4.0","uid":"^2.0.1"},"peerDependencies":{"axios":">=1","react":">=16.9.0","react-dom":">=16.9.0"},"type":"module","types":"dist/index.d.ts","homepage":"https://github.com/chenqinyang1994/chatgpt-app","repository":{"type":"git","url":"git+ssh://git@github.com/chenqinyang1994/chatgpt-app.git"},"bugs":{"url":"https://github.com/chenqinyang1994/chatgpt-app/issues"},"gitHead":"81d4c499fb46ea752d8cfe69b6b5a372565d6d44","_id":"chatgpt-app@1.0.3","_nodeVersion":"16.16.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-OHFv2BU4tlO8WkXQq7dPfXrANGUdrHTYugxM422xAabfn2A7rCNsMOI2x1mC9rPbqkjDd+6WKb+iMtnLY/x0cA==","shasum":"dd42e6897dca2720572eca19f76f9c796af44d83","tarball":"https://registry.npmjs.org/chatgpt-app/-/chatgpt-app-1.0.3.tgz","fileCount":15,"unpackedSize":220989,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF9lXZ1EU3yA5u0z2krKBOePnU9wwm5viw3u6/96a4VgAiEAulBg39ijAqlmfscWH/WFbFFXUxve6ak3r0dt7ii/1bw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkJphoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq47RAAiwcFNNX0V1qeTEgdmYSybJR6Rhp27dOfvzp9VwQFR2RFxX+y\r\nHdgKV5pZ3YPgnmlccUmg57Jpryqse7I/ao0/Zq38DWCR2HuhdJFmpNwW7zYj\r\nwKuNfNKwgQKewXrD3nRhkhIrrBwTnrDS3FoYOWIjwVGN9+xa8d7AeQ7lU47N\r\nMF9uVqx8/kwB9hMXei91GMLQtOovfLDAJZtLYDupWiDOSs6Voe2zvE4Rlblj\r\ncxulCq/zDGZpT8QPedYT62nLb4tXmh7YJm7N3Tg8qt66DL1fLt2Z0H8pXGUG\r\nEql8NuxMoxdswTCmkzWj0TZ9W3tQwIR/vJZltEj5EN7V9vSCVq2so/fQ/a7r\r\n4eEGyAswmWSH4LALuzIAjVq74YbmBLPWvH3Yo4tVQ3dmlgc7Ajx7yKTV5Dsm\r\nOpWNCwHeYYsN4puw6DNNPdXp01LisHOB2Cf5hnq/WKnNbtLAJ0s9sMsyL/bC\r\nvcVWAP2okdRkdMN+4c4cZNeTrX7Uz/QrHX+YhvmCohi0STQAbQFdLF4VPUC6\r\nnFZdlc8MvIMuksD47V5EOCYtXGh2kRBXZb7w9PzFNgmfpRd7z9CeVi0Ncv16\r\niwjRqkZVLGuYChyVeh9RUQoCEKaLTOdZh/EYWb4twwcsFIPPzh19i+fdYGls\r\n3ONOV+GKBIKU5UirielHWxiFK+7yyNG/dKw=\r\n=X5zP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"morningsun","email":"892474885@qq.com"},"directories":{},"maintainers":[{"name":"morningsun","email":"892474885@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/chatgpt-app_1.0.3_1680250984079_0.8106676216372599"},"_hasShrinkwrap":false},"1.0.4":{"name":"chatgpt-app","version":"1.0.4","description":"基于react、webSocket开发的类ChatGPT组件","main":"dist/cjs.js","module":"dist/esm.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"rollup --config"},"keywords":["chatgpt","react","webSocket","chat-online","component"],"author":"","license":"ISC","devDependencies":{"@babel/core":"^7.21.3","@babel/preset-env":"^7.20.2","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.21.0","@rollup/plugin-babel":"^6.0.3","@rollup/plugin-commonjs":"^24.0.1","@rollup/plugin-image":"^3.0.2","@rollup/plugin-node-resolve":"^15.0.1","@rollup/plugin-terser":"^0.4.0","@types/react":"16.9.0","@types/react-dom":"16.9.0","less":"^4.1.3","rollup":"^3.20.2","rollup-plugin-less":"^1.1.3","rollup-plugin-typescript2":"^0.34.1","typescript":"^5.0.2"},"dependencies":{"axios":"^1.3.4","classnames":"^2.3.2","react":"16.9.0","react-copy-to-clipboard":"^5.1.0","react-dom":"16.9.0","reconnecting-websocket":"^4.4.0","uid":"^2.0.1"},"peerDependencies":{"axios":">=1","react":">=16.9.0","react-dom":">=16.9.0"},"type":"module","types":"dist/index.d.ts","homepage":"https://github.com/cmux/chatgpt-app","repository":{"type":"git","url":"git+ssh://git@github.com/cmux/chatgpt-app.git"},"bugs":{"url":"https://github.com/cmux/chatgpt-app/issues"},"gitHead":"088a83f119cadbf9485e822e33f2e5ec6e6de4e4","_id":"chatgpt-app@1.0.4","_nodeVersion":"14.19.3","_npmVersion":"9.5.0","dist":{"integrity":"sha512-yGfddp4xXV6r9BwMqtaaDLvgV9N9SCf++1JTFdb/3rk9JQwf7InbEcTMbEOpPpuOvlLlUUmhNhCXlKJdzXCoLg==","shasum":"36e795bd231bb04d73ad1cad36e587a8c1fe50ed","tarball":"https://registry.npmjs.org/chatgpt-app/-/chatgpt-app-1.0.4.tgz","fileCount":15,"unpackedSize":224541,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGmnLPsyu1EA3BI9vpt3Ss38ItBXO4w6pSf/3tBUwi09AiA6A1OiZoUM/BvT7sS+IGviacdYol3iuiE7Ma2NjqzFOw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkLnKPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo/BQ/8CVYnf4PQJT7+blgn7YwJyL+jhd9Vm4jHURTAheOwfhCKkVw+\r\nSq3gTT4Dd3SOrauFaFi1u/tvzP/Y0nihHnNcxDyfxlNauTIje1zQdAvKnhGo\r\n4b9vR/6bRRuz5Cfiqx4W0ebGFR4v2nHFRpx9cCoBh6JzfEzqzbHSV5FA9thC\r\nhPpleVKIsR9AgfTIswb/kwpKxl859xZZgcSL+T3zr3/G0P2zRXxKgZTV9ONs\r\nSzQaay4daRybigq166Zh6HCrHpMT8zYmBwZUNMrda8NyamSvJ3OSli4iSZh6\r\nWGS0QnoAfFFVBgsXtpVH9wJ2MvMHhj0xmD3I95jxyIsJ7t0pB+9zWzoblwO7\r\nwzqhl4w2Ii4hTB/rVFHgqrXnlhGd4zirOX/7V8I/u04fN7aEozwV5Q6CAihc\r\nTYQvVfKylH0u1Et4ppc0NyDZSQ2WmXIb2rTh+71j/SY1KRJpdcR6RR8Cjbmt\r\ntvX75IX53SYXzVj9edXXIHFlIV3ojl/i8l4toErQqysLOMx9lyT0G5K2bYzx\r\ns/5z3h4JoPj8wSYBpDL6Z9sx2krn4oBHKc7almnUmaNU4HdU17T1xPRK2WLA\r\npNPuPmXi5B25nxTOIeL81DR6M/y3ei3C+zEG1Jv6nCZqRWUD0uk+xIeYYQXx\r\n1q41Gj5heoGn0SZTcvSU3BEKxKZGBzP3XRA=\r\n=SRXJ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"morningsun","email":"892474885@qq.com"},"directories":{},"maintainers":[{"name":"morningsun","email":"892474885@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/chatgpt-app_1.0.4_1680765583254_0.2818722416734716"},"_hasShrinkwrap":false}},"time":{"created":"2023-03-30T02:58:38.564Z","1.0.0":"2023-03-30T02:58:38.779Z","modified":"2023-04-06T07:19:43.545Z","1.0.1":"2023-03-30T03:46:19.085Z","1.0.2":"2023-03-31T07:53:55.689Z","1.0.3":"2023-03-31T08:23:04.389Z","1.0.4":"2023-04-06T07:19:43.419Z"},"maintainers":[{"name":"morningsun","email":"892474885@qq.com"}],"keywords":["chatgpt","react","webSocket","chat-online","component"],"license":"ISC","readme":"# chatgpt-app\n\nChatGPT 聊天 UI，进行了 webSocket 和 http 异常处理，如下异常：\n\n- 消息发出，服务端没有任何返回\n- 服务端返回消息，但是消息中断\n- 网络中断\n\n## 使用前需引入 css\n\n```js\nimport \"chatgpt-app/dist/bundle.css\";\n```\n\n## 示例\n\n```jsx\nimport React from \"react\";\nimport ChatgptApp from \"chatgpt-app\";\nimport \"chatgpt-app/dist/bundle.css\";\n\nconst baseConfig = {\n  httpAPI: \"http://10.60.129.65:3080\",\n  wsAPI: \"ws://10.60.129.65:3080\",\n};\n\nconst onError = (type) => {\n  console.log(\"🚀 ~ type:\", type);\n};\n\nconst App = () => <ChatgptApp baseConfig={baseConfig} onError={onError} />;\n\nexport default App;\n```\n\n## API\n\n### ChatgptApp\n\n| 参数       | 说明                           | 类型                                                                   | 默认值               | 是否必传                           |\n| ---------- | ------------------------------ | ---------------------------------------------------------------------- | -------------------- | ---------------------------------- |\n| baseConfig | 基础配置                       | [baseProps](#baseProps)                                                | [默认值](#baseProps) | <span style=\"color: red\">是</span> |\n| className  | 组件最外层自定义 class         | string                                                                 | -                    | 否                                 |\n| userId     | 自定义传给服务端的 userId      | string                                                                 | -                    | 否                                 |\n| onError    | websocket 交互过程中的报错回调 | ([errorType](#errorType): string, msg?: string) => void                | -                    | <span style=\"color: red\">是</span> |\n| onCopy     | 点击复制问题 or 答案的成功回调 | (type: 'question' \\| 'answer') => void                                 | -                    | 否                                 |\n| Question   | 自定义 Question 组件           | ({ data }: { data: string }) => JSX.Element                            | -                    | 否                                 |\n| Answer     | 自定义 Answer 组件             | ({ data, isDone, status }: [AnswerProps](#AnswerProps)) => JSX.Element | -                    | 否                                 |\n\n### baseProps\n\n组件必传的基础配置说明\n\n| 参数                  | 说明                                                         | 类型                  | 默认值 | 是否必传                           |\n| --------------------- | ------------------------------------------------------------ | --------------------- | ------ | ---------------------------------- |\n| httpAPI               | http 请求的 api 地址                                         | string                | -      | <span style=\"color: red\">是</span> |\n| wsAPI                 | websocket 请求的 api 地址                                    | string                | -      | <span style=\"color: red\">是</span> |\n| waitTimer             | 后端无响应等待时长 单位 秒                                   | number                | 5      | 否                                 |\n| answeringTimer        | websocket message 回复中断等待时长 单位 秒                   | number                | 3      | 否                                 |\n| questionFetchCountMax | websocket message 回复中断 用 http 轮询 最大轮询次数 单位 次 | number                | 10     | 否                                 |\n| socketHeartbeat       | websocket 心跳时间间隔 单位 秒                               | number                | 30     | 否                                 |\n| questionFetchTimer    | question 详情接口轮询间隔 单位 秒                            | number                | 3      | 否                                 |\n| httpError             | axios 的 http 请求报错回调                                   | (msg: string) => void | -      | 否                                 |\n\n### errorType\n\nwebsocket 交互过程中的报错回调的参数说明\n\n| 参数                   | 说明                                                       | 类型   | 其他                                                |\n| ---------------------- | ---------------------------------------------------------- | ------ | --------------------------------------------------- |\n| INPUT_EMPTY            | 点击发送内容为空                                           | string |                                                     |\n| NOT_LOGIN              | token 不存在或 token 过期                                  | string |                                                     |\n| NET_OFFLINE            | 网络中断                                                   | string |                                                     |\n| SERVICE_NOT_RESPONDING | 点击发送后，后端无响应                                     | string |                                                     |\n| QUESTION_FETCH_MAX     | websocket message 回复中断 用 http 轮询 超过了最大轮询次数 | string |                                                     |\n| INSUFFICIENT_BALANCE   | 余额不足 or 提问次数不足                                   | string |                                                     |\n| WS_ERROR               | websocket 报错                                             | string | 此时回调会有第二个参数 msg，是 websocket 的报错信息 |\n\n### AnswerProps\n\nAnswer 组件的 props\n\n| 参数   | 说明         | 类型             | 其他                                                |\n| ------ | ------------ | ---------------- | --------------------------------------------------- |\n| data   | 回答的内容   | string           |                                                     |\n| isDone | 回答是否结束 | boolean          |                                                     |\n| status | 回答的状态值 | 1 \\| 2 \\| 3 \\| 4 | 1 创建提问未开始回答 2 回答中 3 回答完成 4 回答异常 |\n\n### getAllData\n\n通过 ref 转发获取组件内全部数据\n\n```jsx\nimport React, { useRef } from \"react\";\nimport ChatgptApp from \"chatgpt-app\";\nimport \"chatgpt-app/dist/bundle.css\";\n\nconst chatRef = useRef(null);\n\nconst baseConfig = {\n  httpAPI: \"http://10.60.129.65:3080\",\n  wsAPI: \"ws://10.60.129.65:3080\",\n};\n\nconst onError = (type) => {\n  console.log(\"🚀 ~ type:\", type);\n};\n\nconst fn = () => {\n  // 获取组件内全部数据\n  console.log(chatRef.current?.getAllData());\n};\n\nconst App = () => (\n  <ChatgptApp ref={chatRef} baseConfig={baseConfig} onError={onError} />\n);\n\nexport default App;\n```\n\n## 服务端接口文档\n\n### websocket 对接规范\n\n#### 连接\n\n前端发起连接请求，在 query 中加 token 参数，用来识别用户。\n\n```js\nws://127.0.0.1:3080?token=xxx\n```\n\n#### 心跳\n\n前端每隔 30 秒，发送一个心跳：ping，服务端需返回：pong\n\n#### 数据交互\n\n- 前端发送消息\n  - 消息体为 json 格式的字符串（json -> string -> server）\n\n| 参数   | 说明         | 必传 |\n| ------ | ------------ | ---- |\n| op   | 操作类型，前后端开发前约定好   | Y |\n| userId | 表示用户唯一标识 | N    |\n| webId | 一组对话中，前端生成这组对话的唯一id | N    |\n| webId | 问题内容 | Y    |\n\n例：\n\n```json\n{\n    \"op\": \"question\",\n    \"userId\": 123,\n    \"question\": \"今天天气怎么样\",\n    \"webId\": \"xxx111\"\n}\n```\n\n- 服务端返回消息\n    - 消息体为json格式的字符串（json -> string -> web）\n\n| 参数   | 说明         | 必传 |\n| ------ | ------------ | ---- |\n| op   | 操作类型，前后端开发前约定好answer   | Y |\n| index | 服务端返回的回答内容的索引（用来给前端排序，有时可能返回的是乱序） | Y |\n| webId | 前端如果发送，后端必须返回 | N    |\n| answer | 服务端返回的回答内容 | Y |\n\n例：\n\n```json\n{\n    \"op\": \"answer\",\n    \"answer\": \"今天下雨\",\n    \"index\": 1,\n    \"webId\": \"sdf4324lsjdfkl\"\n}\n```\n\n- 服务端返回状态\n    - 服务端处理消息的各个阶段，需返回前端处理状态，参数如下：\n\n| 参数   | 说明         | 必传 | 类型 |\n| ------ | ------------ | ---- | ---- |\n| op   | 固定“status”。表示消息是返回状态 | Y | string |\n| status | 1 服务端收到消息 2 服务端处理消息完成，开始向前端发送消息 3 所有消息发送完毕 4 处理当前消息发生错误 | Y | number |\n| webId | 前端如果发送，后端必须返回 | N    | string |\n| isDone | 表示此组对话是否已结束。一般status=3、4时isDone=true | Y | boolean |\n\n例：\n\n```json\n{\n    \"op\": \"status\",\n    \"status\": 1,\n    \"isDone\": false,\n    \"webId\": \"xljlsdf123sfg\"\n}\n```\n\n- 服务端返回异常\n    - 服务端发生错误时，需要返回错误信息，参数如下：\n\n| 参数   | 说明         | 必传 | 类型 |\n| ------ | ------------ | ---- | ---- |\n| op   | 固定“error”。表示消息是返回错误 | Y | string |\n| message | 错误提示内容（约定：如果message为4201，则表示“免费提问额度不足”） | N    | string |\n\n例：\n\n```json\n{\n    \"op\": \"error\",\n    \"message\": \"网络波动\"\n}\n```\n\n### http接口查询问题详情\n\nGET http://127.0.0.1:3080/question/:webId\n\n\n| 参数   | 说明         | 位置 |\n| ------ | ------------ | ---- |\n| webId   | 前端生成的webId | query |\n| Authorization   | token | header |\n\nResponse\n\n```json\n{\n    \"code\": 200,\n    \"data\": {\n        \"id\": 20666,\n        \"webId\": \"wsl3\",\n        \"userId\": 1,\n        \"anchorId\": null,\n        \"question\": \"今年哪年\",\n        \"answer\": null,\n        \"questionAt\": \"2023-03-29T10:01:05.000Z\",\n        \"answerAt\": null,\n        \"needDigest\": 0,\n        \"digest\": null,\n        \"finalQuestion\": [\n            {\n                \"role\": \"system\",\n                \"content\": \"nihao。\\n你好！有什么可以帮助您的吗？\\n\\n今年哪年。\\n今年是2021年。\\n\\n今年哪年。\\n今年是2021年。\\n\\n今年哪年。\\n今年是2021年。\"\n            },\n            {\n                \"role\": \"user\",\n                \"content\": \"今年哪年\"\n            }\n        ],\n        \"status\": 1,\n        \"error\": null\n    },\n    \"error\": \"\"\n}\n```","readmeFilename":"README.md","description":"基于react、webSocket开发的类ChatGPT组件","homepage":"https://github.com/cmux/chatgpt-app","repository":{"type":"git","url":"git+ssh://git@github.com/cmux/chatgpt-app.git"},"bugs":{"url":"https://github.com/cmux/chatgpt-app/issues"}}