@gientech/modual 2.0.8 → 2.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/.editorconfig +38 -0
  2. package/.prettierignore +16 -0
  3. package/.prettierrc +17 -0
  4. package/INSTALL_TROUBLESHOOTING.md +316 -0
  5. package/USAGE.md +247 -0
  6. package/bash.exe.stackdump +40 -0
  7. package/components.json +21 -0
  8. package/dist/README.md +761 -0
  9. package/dist/package.json +68 -0
  10. package/doc_assets/2.png +0 -0
  11. package/doc_assets/demo.md +27 -0
  12. package/doc_assets/demos/dist-app/assets/index.Dh-ZAS9Z.css +2 -0
  13. package/doc_assets/demos/dist-app/assets/index.Dv8KVW18.js +23699 -0
  14. package/doc_assets/demos/dist-app/assets/index.Dv8KVW18.js.map +1 -0
  15. package/doc_assets/demos/dist-app/index.html +14 -0
  16. package/doc_assets/demos/dist-app/vite.svg +1 -0
  17. package/doc_assets/images/1.png +0 -0
  18. package/doc_assets/images/3.png +0 -0
  19. package/doc_assets/images/component-screenshot.png +1 -0
  20. package/doc_assets/install.md +5 -0
  21. package/doc_assets/v2.0.7/345/217/230/346/233/264/346/200/273/347/273/223.md +115 -0
  22. package/doc_assets//346/226/271/346/241/210//344/274/230/345/214/226/346/226/271/346/241/210-/345/244/232/344/274/232/350/257/235SSE/350/277/236/346/216/245/347/256/241/347/220/206.md +504 -0
  23. package/eslint.config.js +92 -0
  24. package/index.html +13 -0
  25. package/package.json +103 -41
  26. package/package.json.demo-backup +109 -0
  27. package/postcss.config.cjs +19 -0
  28. package/public/icons/answerAwartar.png +0 -0
  29. package/public/icons/docx-file.png +0 -0
  30. package/public/icons/folder.png +0 -0
  31. package/public/icons/html.png +0 -0
  32. package/public/icons/image.png +0 -0
  33. package/public/icons/jpg-file.png +0 -0
  34. package/public/icons/json.png +0 -0
  35. package/public/icons/md.png +0 -0
  36. package/public/icons/pdf.png +0 -0
  37. package/public/icons/pptx.png +0 -0
  38. package/public/icons/questionAwartar.png +0 -0
  39. package/public/icons/sheets.png +0 -0
  40. package/public/icons/txt.png +0 -0
  41. package/public/icons/xlsx.png +0 -0
  42. package/public/vite.svg +1 -0
  43. package/public/worker/pdf.worker.min.js +22 -0
  44. package/scripts/README.md +133 -0
  45. package/scripts/build-demo.js +88 -0
  46. package/scripts/decrypt-api-key.js +95 -0
  47. package/scripts/demo-selector.js +216 -0
  48. package/scripts/dev-demo.js +76 -0
  49. package/scripts/preview-demo.js +130 -0
  50. package/scripts/run-demo.bat +34 -0
  51. package/src/assets/img/close.png +0 -0
  52. package/src/assets/img/database.png +0 -0
  53. package/src/assets/img/downArrow.png +0 -0
  54. package/src/assets/img/downLoad.png +0 -0
  55. package/src/assets/img/excel.png +0 -0
  56. package/src/assets/img/graphIcon.png +0 -0
  57. package/src/assets/img/img.png +0 -0
  58. package/src/assets/img/pdf.png +0 -0
  59. package/src/assets/img/ppt.png +0 -0
  60. package/src/assets/img/singleQa.png +0 -0
  61. package/src/assets/img/txt.png +0 -0
  62. package/src/assets/img/webSearch.png +0 -0
  63. package/src/assets/img/word.png +0 -0
  64. package/src/assets/login/homeBg.png +0 -0
  65. package/src/assets/login/left.jpg +0 -0
  66. package/src/assets/login/logoImg.png +0 -0
  67. package/src/examples/ConversationAssistantPage/index.tsx +41 -0
  68. package/src/examples/Demo/index.tsx +12 -0
  69. package/src/examples/LoginPage/index.tsx +18 -0
  70. package/src/examples/chat/components/DrawerGraphPreview.tsx +78 -0
  71. package/src/examples/chat/index.tsx +166 -0
  72. package/src/examples/chat/logo03.png +0 -0
  73. package/src/examples/gientechStreamFilesReader/index.tsx +951 -0
  74. package/src/examples/headlessChat/assets/mind.svg +6 -0
  75. package/src/examples/headlessChat/assets/net.svg +7 -0
  76. package/src/examples/headlessChat/index.tsx +285 -0
  77. package/src/examples/ragDatabaseDataPage/index.tsx +40 -0
  78. package/src/examples/ragDatabaseIdPage/index.tsx +47 -0
  79. package/src/examples/ragDatabasePage/index.tsx +36 -0
  80. package/src/examples/ragModelManagePage/index.tsx +38 -0
  81. package/src/examples/ragSearchPage/index.tsx +0 -0
  82. package/src/examples/ragSensitiveWordsPage/index.tsx +32 -0
  83. package/src/examples/streamFiles/index.tsx +417 -0
  84. package/src/lib_enter.ts +43 -0
  85. package/src/main.tsx +5 -0
  86. package/src/main.tsx.backup +5 -0
  87. package/src/modules/CHAT_UNIFICATION_PLAN.md +324 -0
  88. package/src/modules/assistantConfig/assets/databse.svg +6 -0
  89. package/src/modules/assistantConfig/assets/empty.png +0 -0
  90. package/src/modules/assistantConfig/assets/graph.svg +4 -0
  91. package/src/modules/assistantConfig/assets/knowledge.svg +4 -0
  92. package/src/modules/assistantConfig/assets/sensitive.svg +5 -0
  93. package/src/modules/assistantConfig/components/Database.tsx +171 -0
  94. package/src/modules/assistantConfig/components/Graph.tsx +177 -0
  95. package/src/modules/assistantConfig/components/Knowledge.tsx +276 -0
  96. package/src/modules/assistantConfig/components/NotFoundContent.tsx +21 -0
  97. package/src/modules/assistantConfig/components/Paragraph.tsx +51 -0
  98. package/src/modules/assistantConfig/components/ParamsItem.tsx +39 -0
  99. package/src/modules/assistantConfig/components/ResourceBinderItem.tsx +133 -0
  100. package/src/modules/assistantConfig/components/SearchableSelector.tsx +500 -0
  101. package/src/modules/assistantConfig/components/Sensitive.tsx +221 -0
  102. package/src/modules/assistantConfig/components/SliderInput.tsx +65 -0
  103. package/src/modules/assistantConfig/constants.tsx +75 -0
  104. package/src/modules/assistantConfig/index.tsx +710 -0
  105. package/src/modules/assistantConfig/server.ts +262 -0
  106. package/src/modules/chat/Conversations/Item.tsx +167 -0
  107. package/src/modules/chat/Conversations/List.tsx +210 -0
  108. package/src/modules/chat/Conversations/groupByTime.ts +39 -0
  109. package/src/modules/chat/Conversations/index.tsx +252 -0
  110. package/src/modules/chat/ReferenceBar.tsx +622 -0
  111. package/src/modules/chat/constants.tsx +57 -0
  112. package/src/modules/chat/index.tsx +2449 -0
  113. package/src/modules/chat/referenceCom/DeleteModal.tsx +75 -0
  114. package/src/modules/chat/referenceCom/DrawerContent.tsx +136 -0
  115. package/src/modules/chat/referenceCom/DrawerDatabase.tsx +102 -0
  116. package/src/modules/chat/referenceCom/DrawerGraphPreview.tsx +86 -0
  117. package/src/modules/chat/referenceCom/DrawerPreview.tsx +73 -0
  118. package/src/modules/chat/referenceCom/DrawerTitle.tsx +26 -0
  119. package/src/modules/chat/referenceCom/RenameModal.tsx +86 -0
  120. package/src/modules/chat/referenceCom/TagCom.tsx +30 -0
  121. package/src/modules/chat/style.less +3 -0
  122. package/src/modules/chat/types.ts +17 -0
  123. package/src/modules/chat/utils/index.ts +348 -0
  124. package/src/modules/database/CreateModal.tsx +403 -0
  125. package/src/modules/database/assets/Doris.png +0 -0
  126. package/src/modules/database/assets/PostgreSQL.png +0 -0
  127. package/src/modules/database/assets/SQLServer.png +0 -0
  128. package/src/modules/database/assets/database.svg +11 -0
  129. package/src/modules/database/assets/database_add.svg +53 -0
  130. package/src/modules/database/assets/database_connect.svg +66 -0
  131. package/src/modules/database/assets/database_upload.svg +29 -0
  132. package/src/modules/database/assets/empty.png +0 -0
  133. package/src/modules/database/assets/mysql.svg +14 -0
  134. package/src/modules/database/index.tsx +477 -0
  135. package/src/modules/database/server.ts +196 -0
  136. package/src/modules/databaseId/CustomCom.tsx +156 -0
  137. package/src/modules/databaseId/EditConfig.tsx +280 -0
  138. package/src/modules/databaseId/UploadDrawer.tsx +535 -0
  139. package/src/modules/databaseId/assets/aiOptimize.svg +10 -0
  140. package/src/modules/databaseId/assets/empty.png +0 -0
  141. package/src/modules/databaseId/assets/template.svg +6 -0
  142. package/src/modules/databaseId/assets/upload.svg +9 -0
  143. package/src/modules/databaseId/assets/useTemp.svg +6 -0
  144. package/src/modules/databaseId/index.tsx +769 -0
  145. package/src/modules/databaseId/server.ts +286 -0
  146. package/src/modules/databaseId/style.css +5 -0
  147. package/src/modules/databaseTable/EditRowDrawer.tsx +124 -0
  148. package/src/modules/databaseTable/index.tsx +359 -0
  149. package/src/modules/databaseTable/server.ts +180 -0
  150. package/src/modules/headlessChat/ReferenceBar.tsx +783 -0
  151. package/src/modules/headlessChat/constants.tsx +54 -0
  152. package/src/modules/headlessChat/index.tsx +1782 -0
  153. package/src/modules/headlessChat/referenceCom/DeleteModal.tsx +75 -0
  154. package/src/modules/headlessChat/referenceCom/DrawerContent.tsx +136 -0
  155. package/src/modules/headlessChat/referenceCom/DrawerDatabase.tsx +102 -0
  156. package/src/modules/headlessChat/referenceCom/DrawerGraphPreview.tsx +86 -0
  157. package/src/modules/headlessChat/referenceCom/DrawerPreview.tsx +73 -0
  158. package/src/modules/headlessChat/referenceCom/DrawerTitle.tsx +26 -0
  159. package/src/modules/headlessChat/referenceCom/RenameModal.tsx +86 -0
  160. package/src/modules/headlessChat/referenceCom/TagCom.tsx +30 -0
  161. package/src/modules/headlessChat/style.less +3 -0
  162. package/src/modules/headlessChat/types.ts +23 -0
  163. package/src/modules/headlessChat/utils/index.ts +348 -0
  164. package/src/modules/login/components/Login/LoginBox/index.tsx +102 -0
  165. package/src/modules/login/components/Login/RegisterBox/index.tsx +180 -0
  166. package/src/modules/login/components/Login/index.tsx +100 -0
  167. package/src/modules/login/index.tsx +106 -0
  168. package/src/modules/login/style.css +3 -0
  169. package/src/modules/login/useServices.ts +53 -0
  170. package/src/modules/login/utils.ts +42 -0
  171. package/src/modules/modelManage/ConfigDrawer.tsx +249 -0
  172. package/src/modules/modelManage/ReplaceModal.tsx +124 -0
  173. package/src/modules/modelManage/assets/empty.png +0 -0
  174. package/src/modules/modelManage/const.ts +51 -0
  175. package/src/modules/modelManage/index.tsx +606 -0
  176. package/src/modules/modelManage/server.ts +223 -0
  177. package/src/modules/nodegraph/index.tsx +1 -0
  178. package/src/modules/search/assets/Icon-history.svg +8 -0
  179. package/src/modules/search/assets/answerAwartar.png +0 -0
  180. package/src/modules/search/assets/doc.png +0 -0
  181. package/src/modules/search/assets/genera.gif +0 -0
  182. package/src/modules/search/assets/icon-robot.svg +9 -0
  183. package/src/modules/search/assets/icon-search-bar.svg +14 -0
  184. package/src/modules/search/assets/icon-sub-title.svg +3 -0
  185. package/src/modules/search/assets/icon-title.svg +9 -0
  186. package/src/modules/search/assets/icon-zoomOut.svg +9 -0
  187. package/src/modules/search/assets/iconAi.svg +9 -0
  188. package/src/modules/search/assets/pdf.png +0 -0
  189. package/src/modules/search/assets/ppt.png +0 -0
  190. package/src/modules/search/assets/search.svg +3 -0
  191. package/src/modules/search/assets/selected.svg +4 -0
  192. package/src/modules/search/assets/txt.png +0 -0
  193. package/src/modules/search/assets/xls.png +0 -0
  194. package/src/modules/search/components/AssisSelect.tsx +137 -0
  195. package/src/modules/search/components/Editor/ChatViewEditor.tsx +261 -0
  196. package/src/modules/search/components/Editor/aichat.css +1 -0
  197. package/src/modules/search/components/Editor/constant.ts +13 -0
  198. package/src/modules/search/components/Editor/index.tsx +113 -0
  199. package/src/modules/search/components/Editor/plugins/autofomatRules.ts +332 -0
  200. package/src/modules/search/components/Editor/plugins/convertImgPlugins.tsx +20 -0
  201. package/src/modules/search/components/Editor/plugins/createIndexes.tsx +38 -0
  202. package/src/modules/search/components/Editor/plugins/displayer.ts +298 -0
  203. package/src/modules/search/components/Editor/plugins/imageClick.tsx +32 -0
  204. package/src/modules/search/components/Editor/plugins/myplugin.tsx +98 -0
  205. package/src/modules/search/components/Editor/ui/avatar.tsx +19 -0
  206. package/src/modules/search/components/Editor/ui/blockquote-element.tsx +21 -0
  207. package/src/modules/search/components/Editor/ui/button.tsx +58 -0
  208. package/src/modules/search/components/Editor/ui/calendar.tsx +68 -0
  209. package/src/modules/search/components/Editor/ui/caption.tsx +46 -0
  210. package/src/modules/search/components/Editor/ui/checkbox.tsx +27 -0
  211. package/src/modules/search/components/Editor/ui/code-block-combobox.tsx +188 -0
  212. package/src/modules/search/components/Editor/ui/code-block-element.css +434 -0
  213. package/src/modules/search/components/Editor/ui/code-block-element.tsx +39 -0
  214. package/src/modules/search/components/Editor/ui/code-leaf.tsx +24 -0
  215. package/src/modules/search/components/Editor/ui/code-line-element.tsx +10 -0
  216. package/src/modules/search/components/Editor/ui/code-syntax-leaf.tsx +21 -0
  217. package/src/modules/search/components/Editor/ui/column-element.tsx +30 -0
  218. package/src/modules/search/components/Editor/ui/column-group-element.tsx +94 -0
  219. package/src/modules/search/components/Editor/ui/command.tsx +75 -0
  220. package/src/modules/search/components/Editor/ui/comment-avatar.tsx +22 -0
  221. package/src/modules/search/components/Editor/ui/comment-create-form.tsx +37 -0
  222. package/src/modules/search/components/Editor/ui/comment-item.tsx +74 -0
  223. package/src/modules/search/components/Editor/ui/comment-leaf.tsx +49 -0
  224. package/src/modules/search/components/Editor/ui/comment-more-dropdown.tsx +42 -0
  225. package/src/modules/search/components/Editor/ui/comment-reply-items.tsx +22 -0
  226. package/src/modules/search/components/Editor/ui/comment-resolve-button.tsx +32 -0
  227. package/src/modules/search/components/Editor/ui/comment-value.tsx +34 -0
  228. package/src/modules/search/components/Editor/ui/comments-popover.tsx +63 -0
  229. package/src/modules/search/components/Editor/ui/date-element.tsx +83 -0
  230. package/src/modules/search/components/Editor/ui/dialog.tsx +63 -0
  231. package/src/modules/search/components/Editor/ui/draggable.tsx +177 -0
  232. package/src/modules/search/components/Editor/ui/dropdown-menu.tsx +180 -0
  233. package/src/modules/search/components/Editor/ui/emoji-input-element.tsx +85 -0
  234. package/src/modules/search/components/Editor/ui/excalidraw-element.tsx +28 -0
  235. package/src/modules/search/components/Editor/ui/fixed-toolbar-buttons.tsx +76 -0
  236. package/src/modules/search/components/Editor/ui/fixed-toolbar.tsx +8 -0
  237. package/src/modules/search/components/Editor/ui/floating-toolbar-buttons.tsx +51 -0
  238. package/src/modules/search/components/Editor/ui/floating-toolbar.tsx +77 -0
  239. package/src/modules/search/components/Editor/ui/heading-element.tsx +48 -0
  240. package/src/modules/search/components/Editor/ui/highlight-leaf.tsx +17 -0
  241. package/src/modules/search/components/Editor/ui/hr-element.tsx +30 -0
  242. package/src/modules/search/components/Editor/ui/icons.tsx +267 -0
  243. package/src/modules/search/components/Editor/ui/image-element.tsx +74 -0
  244. package/src/modules/search/components/Editor/ui/inline-combobox.tsx +368 -0
  245. package/src/modules/search/components/Editor/ui/input.tsx +25 -0
  246. package/src/modules/search/components/Editor/ui/insert-dropdown-menu.tsx +218 -0
  247. package/src/modules/search/components/Editor/ui/kbd-leaf.tsx +20 -0
  248. package/src/modules/search/components/Editor/ui/link-element.tsx +29 -0
  249. package/src/modules/search/components/Editor/ui/link-floating-toolbar.tsx +161 -0
  250. package/src/modules/search/components/Editor/ui/list-element.tsx +30 -0
  251. package/src/modules/search/components/Editor/ui/mark-toolbar-button.tsx +24 -0
  252. package/src/modules/search/components/Editor/ui/media-embed-element.tsx +133 -0
  253. package/src/modules/search/components/Editor/ui/media-popover.tsx +97 -0
  254. package/src/modules/search/components/Editor/ui/mention-element.tsx +43 -0
  255. package/src/modules/search/components/Editor/ui/mention-input-element.tsx +141 -0
  256. package/src/modules/search/components/Editor/ui/mode-dropdown-menu.tsx +93 -0
  257. package/src/modules/search/components/Editor/ui/more-dropdown-menu.tsx +67 -0
  258. package/src/modules/search/components/Editor/ui/paragraph-element.tsx +4 -0
  259. package/src/modules/search/components/Editor/ui/placeholder.tsx +52 -0
  260. package/src/modules/search/components/Editor/ui/popover.tsx +32 -0
  261. package/src/modules/search/components/Editor/ui/resizable.tsx +66 -0
  262. package/src/modules/search/components/Editor/ui/separator.tsx +25 -0
  263. package/src/modules/search/components/Editor/ui/style.less +12 -0
  264. package/src/modules/search/components/Editor/ui/table-cell-element.tsx +143 -0
  265. package/src/modules/search/components/Editor/ui/table-element.tsx +243 -0
  266. package/src/modules/search/components/Editor/ui/table-row-element.tsx +22 -0
  267. package/src/modules/search/components/Editor/ui/tableValue.tsx +135 -0
  268. package/src/modules/search/components/Editor/ui/todo-list-element.tsx +43 -0
  269. package/src/modules/search/components/Editor/ui/toggle-element.tsx +31 -0
  270. package/src/modules/search/components/Editor/ui/toolbar.tsx +157 -0
  271. package/src/modules/search/components/Editor/ui/tooltip.tsx +65 -0
  272. package/src/modules/search/components/Editor/ui/turn-into-dropdown-menu.tsx +160 -0
  273. package/src/modules/search/components/Editor/ui/with-draggables.tsx +175 -0
  274. package/src/modules/search/components/FileList.tsx +287 -0
  275. package/src/modules/search/components/ImageGroupView/index.tsx +85 -0
  276. package/src/modules/search/components/ResultContent.tsx +232 -0
  277. package/src/modules/search/components/SearchInput.tsx +232 -0
  278. package/src/modules/search/components/SearchLanding.tsx +74 -0
  279. package/src/modules/search/components/SearchView.tsx +563 -0
  280. package/src/modules/search/components/SimpleEditor.tsx +158 -0
  281. package/src/modules/search/components/SimpleFileList.tsx +215 -0
  282. package/src/modules/search/index.tsx +10 -0
  283. package/src/modules/search/reademe.md +1 -0
  284. package/src/modules/search/servers/apis.tsx +19 -0
  285. package/src/modules/search/servers/index.ts +184 -0
  286. package/src/modules/search/style.less +503 -0
  287. package/src/modules/search/type.ts +22 -0
  288. package/src/modules/search/utils.ts +34 -0
  289. package/src/modules/sensitive/index.tsx +313 -0
  290. package/src/modules/sensitive/server.ts +122 -0
  291. package/src/modules/streamFilesReader/GientechStreamReader.tsx +1625 -0
  292. package/src/modules/streamFilesReader/components/Header/Toolbar.tsx +0 -0
  293. package/src/modules/streamFilesReader/components/Header/index.tsx +297 -0
  294. package/src/modules/streamFilesReader/index.tsx +3 -0
  295. package/src/style.css +6 -0
  296. package/src/type.d.ts +0 -0
  297. package/src/utils/commonFn.tsx +111 -0
  298. package/src/utils/decryptApiKey.ts +40 -0
  299. package/src/utils/gientechCommon/components/AppError.tsx +32 -0
  300. package/src/utils/gientechCommon/components/AppLoading.tsx +75 -0
  301. package/src/utils/gientechCommon/components/DeleteModal.tsx +75 -0
  302. package/src/utils/gientechCommon/components/DisplayError.tsx +33 -0
  303. package/src/utils/gientechCommon/components/DisplayLoading.tsx +38 -0
  304. package/src/utils/gientechCommon/components/FeedBackModal.tsx +319 -0
  305. package/src/utils/gientechCommon/components/FileCardCommon.tsx +82 -0
  306. package/src/utils/gientechCommon/components/FileManager/index.tsx +418 -0
  307. package/src/utils/gientechCommon/components/FileManager/style.css +5 -0
  308. package/src/utils/gientechCommon/components/Messages/GientechNewChatWelcome.tsx +581 -0
  309. package/src/utils/gientechCommon/components/Messages/ReferenceCard.tsx +359 -0
  310. package/src/utils/gientechCommon/components/Messages/RetriveItem.tsx +245 -0
  311. package/src/utils/gientechCommon/components/Messages/WebRetriveItem.tsx +209 -0
  312. package/src/utils/gientechCommon/components/Messages/defaultBot.png +0 -0
  313. package/src/utils/gientechCommon/components/Messages/defaultStyleSet.tsx +148 -0
  314. package/src/utils/gientechCommon/components/Messages/defaultWeLogo.svg +14 -0
  315. package/src/utils/gientechCommon/components/RenameModal.tsx +86 -0
  316. package/src/utils/gientechCommon/components/style.less +11 -0
  317. package/src/utils/gientechCommon/configs/commonConfig.ts +2 -0
  318. package/src/utils/gientechCommon/configs/senderConfig.ts +0 -0
  319. package/src/utils/gientechCommon/configs/stylesConfig.ts +142 -0
  320. package/src/utils/gientechCommon/hooks/AichatUseController.tsx +417 -0
  321. package/src/utils/gientechCommon/hooks/useFileDisplayTools.tsx +251 -0
  322. package/src/utils/gientechCommon/hooks/useFileManager.ts +208 -0
  323. package/src/utils/gientechCommon/slate/converters/deserializers.ts +763 -0
  324. package/src/utils/gientechCommon/slate/converters/mockData.ts +232 -0
  325. package/src/utils/gientechCommon/slate/converters/slateConverters.ts +258 -0
  326. package/src/utils/gientechCommon/slate/richElements/index.tsx +499 -0
  327. package/src/utils/gientechCommon/utils/fileUtils.ts +86 -0
  328. package/src/utils/gientechCommon/utils/request.ts +37 -0
  329. package/src/utils/gientechCommon/utils/serverFn.ts +172 -0
  330. package/src/utils/index.tsx +142 -0
  331. package/src/utils/testconfigs/demologin/index.tsx +32 -0
  332. package/src/utils/testconfigs/index.ts +59 -0
  333. package/src/vite-env.d.ts +42 -0
  334. package/stats.html +4949 -0
  335. package/tailwind.config.js +170 -0
  336. package/tsconfig.app.json +30 -0
  337. package/tsconfig.app.tsbuildinfo +11 -0
  338. package/tsconfig.json +13 -0
  339. package/tsconfig.node.json +22 -0
  340. package/tsconfig.node.tsbuildinfo +1 -0
  341. package/vite.config.app.ts +93 -0
  342. package/vite.config.ts +232 -0
  343. package/workflows/release.yml +60 -0
  344. package//346/215/242/350/241/214/346/240/274/345/274/217/344/277/235/346/214/201/344/274/230/345/214/226/346/226/271/346/241/210.md +359 -0
  345. /package/{assets → dist/assets}/Doris.png +0 -0
  346. /package/{assets → dist/assets}/GientechStreamReader-CNj6Rcm7.js +0 -0
  347. /package/{assets → dist/assets}/PostgreSQL.png +0 -0
  348. /package/{assets → dist/assets}/SQLServer.png +0 -0
  349. /package/{assets → dist/assets}/database.svg +0 -0
  350. /package/{assets → dist/assets}/database_add.svg +0 -0
  351. /package/{assets → dist/assets}/database_connect.svg +0 -0
  352. /package/{assets → dist/assets}/database_upload.svg +0 -0
  353. /package/{assets → dist/assets}/databse.svg +0 -0
  354. /package/{assets → dist/assets}/defaultWeLogo.svg +0 -0
  355. /package/{assets → dist/assets}/empty.png +0 -0
  356. /package/{assets → dist/assets}/graph.svg +0 -0
  357. /package/{assets → dist/assets}/homeBg.png +0 -0
  358. /package/{assets → dist/assets}/index-B2yNvzjy.js +0 -0
  359. /package/{assets → dist/assets}/index-BJv0t0eJ.js +0 -0
  360. /package/{assets → dist/assets}/index-BKe5FgcC.js +0 -0
  361. /package/{assets → dist/assets}/index-CU45mVZ4.js +0 -0
  362. /package/{assets → dist/assets}/index-CpW6Dhpp.js +0 -0
  363. /package/{assets → dist/assets}/index-D72cKELw.js +0 -0
  364. /package/{assets → dist/assets}/index-DdVFXD_y.js +0 -0
  365. /package/{assets → dist/assets}/index-DrkSoKz6.js +0 -0
  366. /package/{assets → dist/assets}/index-ZopkeZtI.js +0 -0
  367. /package/{assets → dist/assets}/index-g-SUxfJH.js +0 -0
  368. /package/{assets → dist/assets}/index-j0kQJd0a.js +0 -0
  369. /package/{assets → dist/assets}/knowledge.svg +0 -0
  370. /package/{assets → dist/assets}/left.jpg +0 -0
  371. /package/{assets → dist/assets}/logoImg.png +0 -0
  372. /package/{assets → dist/assets}/mysql.svg +0 -0
  373. /package/{assets → dist/assets}/plus-V9zUoSq6.js +0 -0
  374. /package/{assets → dist/assets}/sensitive.svg +0 -0
  375. /package/{assets → dist/assets}/style-CGmZ5osp.js +0 -0
  376. /package/{assets → dist/assets}/style.css +0 -0
  377. /package/{assets → dist/assets}/style2.css +0 -0
  378. /package/{assets → dist/assets}/style3.css +0 -0
  379. /package/{assets → dist/assets}/style4.css +0 -0
  380. /package/{assets → dist/assets}/worker-BbpylX7l.js +0 -0
  381. /package/{assets → dist/assets}/x-CnaaLGJF.js +0 -0
  382. /package/{assistantConfig.d.ts → dist/assistantConfig.d.ts} +0 -0
  383. /package/{assistantConfig.js → dist/assistantConfig.js} +0 -0
  384. /package/{chat.d.ts → dist/chat.d.ts} +0 -0
  385. /package/{chat.js → dist/chat.js} +0 -0
  386. /package/{database.d.ts → dist/database.d.ts} +0 -0
  387. /package/{database.js → dist/database.js} +0 -0
  388. /package/{databaseId.d.ts → dist/databaseId.d.ts} +0 -0
  389. /package/{databaseId.js → dist/databaseId.js} +0 -0
  390. /package/{databaseTable.d.ts → dist/databaseTable.d.ts} +0 -0
  391. /package/{databaseTable.js → dist/databaseTable.js} +0 -0
  392. /package/{icons → dist/icons}/answerAwartar.png +0 -0
  393. /package/{icons → dist/icons}/docx-file.png +0 -0
  394. /package/{icons → dist/icons}/folder.png +0 -0
  395. /package/{icons → dist/icons}/html.png +0 -0
  396. /package/{icons → dist/icons}/image.png +0 -0
  397. /package/{icons → dist/icons}/jpg-file.png +0 -0
  398. /package/{icons → dist/icons}/json.png +0 -0
  399. /package/{icons → dist/icons}/md.png +0 -0
  400. /package/{icons → dist/icons}/pdf.png +0 -0
  401. /package/{icons → dist/icons}/pptx.png +0 -0
  402. /package/{icons → dist/icons}/questionAwartar.png +0 -0
  403. /package/{icons → dist/icons}/sheets.png +0 -0
  404. /package/{icons → dist/icons}/txt.png +0 -0
  405. /package/{icons → dist/icons}/xlsx.png +0 -0
  406. /package/{index.d.ts → dist/index.d.ts} +0 -0
  407. /package/{index.js → dist/index.js} +0 -0
  408. /package/{modelManage.d.ts → dist/modelManage.d.ts} +0 -0
  409. /package/{modelManage.js → dist/modelManage.js} +0 -0
  410. /package/{sensitive.d.ts → dist/sensitive.d.ts} +0 -0
  411. /package/{sensitive.js → dist/sensitive.js} +0 -0
  412. /package/{streamFilesReader.d.ts → dist/streamFilesReader.d.ts} +0 -0
  413. /package/{streamFilesReader.js → dist/streamFilesReader.js} +0 -0
  414. /package/{vite.svg → dist/vite.svg} +0 -0
  415. /package/{worker → dist/worker}/pdf.worker.min.js +0 -0
@@ -0,0 +1,133 @@
1
+ # XViewer 演示脚本使用说明
2
+
3
+ ## 概述
4
+
5
+ 这套脚本用于运行 XViewer 组件的演示示例,支持跨平台运行(Windows、macOS、Linux)。
6
+
7
+ ## 脚本文件
8
+
9
+ - `demo-selector.js` - 示例选择器,扫描并选择要运行的示例
10
+ - `dev-demo.js` - 开发模式演示
11
+ - `build-demo.js` - 打包模式演示
12
+ - `preview-demo.js` - 预览模式演示
13
+ - `run-demo.bat` - Windows 批处理文件(备用方案)
14
+
15
+ ## 使用方法
16
+
17
+ ### 方法一:使用 npm 脚本(推荐)
18
+
19
+ ```bash
20
+ # 开发模式
21
+ pnpm run dev:demo
22
+
23
+ # 打包模式
24
+ pnpm run build:demo
25
+
26
+ # 预览模式
27
+ pnpm run preview:demo
28
+ ```
29
+
30
+ ### 方法二:直接运行 Node.js 脚本
31
+
32
+ ```bash
33
+ # 开发模式
34
+ node scripts/dev-demo.js
35
+
36
+ # 打包模式
37
+ node scripts/build-demo.js
38
+
39
+ # 预览模式
40
+ node scripts/preview-demo.js
41
+ ```
42
+
43
+ ### 方法三:Windows 批处理文件
44
+
45
+ ```cmd
46
+ # 开发模式
47
+ scripts\run-demo.bat dev-demo
48
+
49
+ # 打包模式
50
+ scripts\run-demo.bat build-demo
51
+
52
+ # 预览模式
53
+ scripts\run-demo.bat preview-demo
54
+ ```
55
+
56
+ ## 示例文件格式
57
+
58
+ 脚本支持两种示例文件格式:
59
+
60
+ 1. **单文件模式**: `src/Example_XXXX.tsx`
61
+ 2. **文件夹模式**:
62
+ - `src/examples/XXXX/index.tsx`
63
+ - `src/examples/XXXX/XXXX.tsx`
64
+
65
+ ## Windows 兼容性
66
+
67
+ ### 已解决的问题
68
+
69
+ 1. ✅ **依赖包缺失** - 已添加 `inquirer` 和 `fs-extra` 依赖
70
+ 2. ✅ **Shell 执行** - Windows 下使用 `shell: true` 选项
71
+ 3. ✅ **环境变量** - 自动设置 `NODE_OPTIONS` 环境变量
72
+ 4. ✅ **路径处理** - 使用 `path.join()` 确保跨平台兼容
73
+ 5. ✅ **调试信息** - 添加详细的调试输出
74
+
75
+ ### 调试信息
76
+
77
+ 脚本运行时会显示以下调试信息:
78
+ - Node.js 版本
79
+ - 操作系统类型
80
+ - 当前工作目录
81
+ - 脚本目录
82
+ - Windows 模式标识
83
+
84
+ ## 故障排除
85
+
86
+ ### 问题 1:脚本执行没有反应
87
+
88
+ **解决方案**:
89
+ 1. 确保已安装依赖:`pnpm install`
90
+ 2. 检查 Node.js 版本:`node --version`(需要 >= 22)
91
+ 3. 使用调试模式查看详细信息
92
+
93
+ ### 问题 2:Windows 下 pnpm 命令无法识别
94
+
95
+ **解决方案**:
96
+ 1. 确保 pnpm 已全局安装:`npm install -g pnpm`
97
+ 2. 检查 PATH 环境变量
98
+ 3. 使用批处理文件:`scripts\run-demo.bat`
99
+
100
+ ### 问题 3:内存不足错误
101
+
102
+ **解决方案**:
103
+ 1. 脚本已自动设置 `NODE_OPTIONS=--max-old-space-size=16384`
104
+ 2. 如需调整,修改脚本中的环境变量设置
105
+
106
+ ### 问题 4:示例文件扫描失败
107
+
108
+ **解决方案**:
109
+ 1. 确保示例文件格式正确
110
+ 2. 检查文件路径和权限
111
+ 3. 查看调试信息中的路径信息
112
+
113
+ ## 开发说明
114
+
115
+ ### 添加新示例
116
+
117
+ 1. 在 `src/examples/` 下创建新文件夹
118
+ 2. 添加 `index.tsx` 或 `[文件夹名].tsx` 文件
119
+ 3. 脚本会自动扫描并显示
120
+
121
+ ### 修改脚本
122
+
123
+ 1. 所有脚本都支持跨平台运行
124
+ 2. 使用 `process.platform === 'win32'` 检测 Windows
125
+ 3. 使用 `path.join()` 处理路径
126
+ 4. 使用 `shell: isWindows` 设置 spawn 选项
127
+
128
+ ## 技术细节
129
+
130
+ - **Node.js 版本要求**: >= 22
131
+ - **依赖包**: inquirer, fs-extra
132
+ - **支持平台**: Windows, macOS, Linux
133
+ - **脚本类型**: ES Modules
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { spawn } from 'child_process';
4
+ import { main, restoreMainFile } from './demo-selector.js';
5
+ import path from 'path';
6
+ import { fileURLToPath } from 'url';
7
+
8
+ const __filename = fileURLToPath(import.meta.url);
9
+ const __dirname = path.dirname(__filename);
10
+
11
+ // 检测操作系统
12
+ const isWindows = process.platform === 'win32';
13
+
14
+ /**
15
+ * 执行打包
16
+ */
17
+ function runBuild() {
18
+ console.log('\n🔨 正在执行打包...\n');
19
+ console.log('🔧 调试信息:');
20
+ console.log(' 操作系统:', process.platform);
21
+ console.log(' Windows 模式:', isWindows);
22
+ console.log(' 工作目录:', path.resolve(__dirname, '..'));
23
+ console.log('');
24
+
25
+ const buildProcess = spawn('pnpm', ['run', 'build:app'], {
26
+ stdio: 'inherit',
27
+ shell: isWindows, // Windows 下需要 shell: true
28
+ cwd: path.resolve(__dirname, '..'),
29
+ env: {
30
+ ...process.env,
31
+ NODE_OPTIONS: '--max-old-space-size=16384',
32
+ },
33
+ });
34
+
35
+ buildProcess.on('close', code => {
36
+ if (code === 0) {
37
+ console.log('\n✅ 打包完成!');
38
+ console.log('📁 输出目录: dist-app/');
39
+ } else {
40
+ console.error(`\n❌ 打包失败 (退出码: ${code})`);
41
+ }
42
+
43
+ // 恢复原始 main.tsx 文件
44
+ restoreMainFile();
45
+ process.exit(code);
46
+ });
47
+
48
+ buildProcess.on('error', error => {
49
+ console.error('❌ 执行打包失败:', error);
50
+ restoreMainFile();
51
+ process.exit(1);
52
+ });
53
+
54
+ // 处理进程退出信号
55
+ process.on('SIGINT', () => {
56
+ console.log('\n🔄 正在取消打包...');
57
+ buildProcess.kill('SIGINT');
58
+ });
59
+
60
+ process.on('SIGTERM', () => {
61
+ console.log('\n🔄 正在取消打包...');
62
+ buildProcess.kill('SIGTERM');
63
+ });
64
+ }
65
+
66
+ /**
67
+ * 主函数
68
+ */
69
+ async function runBuildDemo() {
70
+ try {
71
+ // 先选择示例
72
+ await main();
73
+
74
+ // 执行打包
75
+ runBuild();
76
+ } catch (error) {
77
+ console.error('❌ 打包模式启动失败:', error);
78
+ restoreMainFile();
79
+ process.exit(1);
80
+ }
81
+ }
82
+
83
+ // 如果直接运行此脚本
84
+ //if (import.meta.url === `file://${process.argv[1]}`) {
85
+ runBuildDemo();
86
+ //}
87
+
88
+ export { runBuildDemo };
@@ -0,0 +1,95 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * API Key 解密工具
5
+ * 使用方法: node scripts/decrypt-api-key.js <encrypted-key>
6
+ */
7
+
8
+ import CryptoJS from 'crypto-js';
9
+
10
+ // 默认的 KEY 与 IV(与代码库中的一致)
11
+ const DEFAULT_KEY = CryptoJS.enc.Utf8.parse("1234567890123456");
12
+ const DEFAULT_IV = CryptoJS.enc.Utf8.parse("1234567890123456");
13
+
14
+ /**
15
+ * AES 解密函数
16
+ */
17
+ function decrypt(encryptedText, keyStr, ivStr) {
18
+ let key = DEFAULT_KEY;
19
+ let iv = DEFAULT_IV;
20
+
21
+ if (keyStr) {
22
+ key = CryptoJS.enc.Utf8.parse(keyStr);
23
+ iv = CryptoJS.enc.Utf8.parse(ivStr || keyStr);
24
+ }
25
+
26
+ try {
27
+ const base64 = CryptoJS.enc.Base64.parse(encryptedText);
28
+ const src = CryptoJS.enc.Base64.stringify(base64);
29
+
30
+ const decrypted = CryptoJS.AES.decrypt(src, key, {
31
+ iv: iv,
32
+ mode: CryptoJS.mode.CBC,
33
+ padding: CryptoJS.pad.ZeroPadding,
34
+ });
35
+
36
+ const decryptedStr = decrypted.toString(CryptoJS.enc.Utf8);
37
+ return decryptedStr.toString().replace(/\0/g, ''); // 移除填充的 null 字符
38
+ } catch (error) {
39
+ return null;
40
+ }
41
+ }
42
+
43
+ // 主函数
44
+ function main() {
45
+ const args = process.argv.slice(2);
46
+
47
+ if (args.length === 0) {
48
+ console.log('使用方法: node scripts/decrypt-api-key.js <encrypted-key> [key] [iv]');
49
+ console.log('');
50
+ console.log('示例:');
51
+ console.log(' node scripts/decrypt-api-key.js "apiKey_r6HozveeuFu31Ix8MSW6BYODRzUNGmxAG6bC58dvYOSzzCaqVJ56nKGybQy2aCfQfGXru0/BWC2ozy232FCf0w=="');
52
+ console.log(' node scripts/decrypt-api-key.js "encrypted-text" "custom-key" "custom-iv"');
53
+ process.exit(1);
54
+ }
55
+
56
+ let encryptedKey = args[0];
57
+ const customKey = args[1];
58
+ const customIV = args[2];
59
+
60
+ // 如果 key 以 apiKey_ 开头,去掉前缀
61
+ if (encryptedKey.startsWith('apiKey_')) {
62
+ encryptedKey = encryptedKey.replace('apiKey_', '');
63
+ }
64
+
65
+ console.log('🔐 尝试解密 API Key...');
66
+ console.log('加密文本:', encryptedKey);
67
+ console.log('');
68
+
69
+ // 尝试使用默认密钥解密
70
+ console.log('📝 使用默认密钥 (1234567890123456) 解密:');
71
+ const result1 = decrypt(encryptedKey);
72
+ if (result1) {
73
+ console.log('✅ 解密结果:', result1);
74
+ } else {
75
+ console.log('❌ 解密失败(可能使用了不同的密钥)');
76
+ }
77
+ console.log('');
78
+
79
+ // 如果提供了自定义密钥,尝试使用自定义密钥解密
80
+ if (customKey) {
81
+ console.log(`📝 使用自定义密钥 (${customKey}) 解密:`);
82
+ const result2 = decrypt(encryptedKey, customKey, customIV);
83
+ if (result2) {
84
+ console.log('✅ 解密结果:', result2);
85
+ } else {
86
+ console.log('❌ 解密失败');
87
+ }
88
+ console.log('');
89
+ }
90
+
91
+ console.log('⚠️ 注意: 如果解密失败,可能需要使用不同的密钥或加密算法');
92
+ }
93
+
94
+ main();
95
+
@@ -0,0 +1,216 @@
1
+ #!/usr/bin/env node
2
+
3
+ import inquirer from 'inquirer';
4
+ import fs from 'fs-extra';
5
+ import path from 'path';
6
+ import { fileURLToPath } from 'url';
7
+
8
+ const __filename = fileURLToPath(import.meta.url);
9
+ const __dirname = path.dirname(__filename);
10
+
11
+ // 检测操作系统
12
+ const isWindows = process.platform === 'win32';
13
+
14
+ // 调试信息
15
+ console.log('🔧 调试信息:');
16
+ console.log(' Node.js 版本:', process.version);
17
+ console.log(' 操作系统:', process.platform);
18
+ console.log(' 当前工作目录:', process.cwd());
19
+ console.log(' 脚本目录:', __dirname);
20
+ console.log(' Windows 模式:', isWindows);
21
+ console.log('');
22
+
23
+ // 项目根目录
24
+ const PROJECT_ROOT = path.resolve(__dirname, '..');
25
+ const SRC_DIR = path.join(PROJECT_ROOT, 'src');
26
+ const MAIN_TEMPLATE = path.join(PROJECT_ROOT, 'src/main.template.tsx');
27
+ const MAIN_FILE = path.join(PROJECT_ROOT, 'src/main.tsx');
28
+
29
+ /**
30
+ * 扫描示例文件
31
+ * 支持两种模式:
32
+ * 1. src/Example_XXXX.tsx (单文件模式)
33
+ * 2. src/examples/XXXX/XXXX.tsx 或 src/examples/XXXX/index.tsx (文件夹模式)
34
+ */
35
+ function scanExampleFiles() {
36
+ const examples = [];
37
+
38
+ try {
39
+ // 扫描单文件模式: Example_XXXX.tsx
40
+ const files = fs.readdirSync(SRC_DIR);
41
+ files.forEach(file => {
42
+ if (file.startsWith('Example_') && file.endsWith('.tsx')) {
43
+ const name = file.replace('Example_', '').replace('.tsx', '');
44
+ examples.push({
45
+ name: `${name} (单文件)`,
46
+ value: file,
47
+ type: 'single',
48
+ path: path.join(SRC_DIR, file)
49
+ });
50
+ }
51
+ });
52
+
53
+ // 扫描文件夹模式: examples/XXXX/
54
+ const examplesDir = path.join(SRC_DIR, 'examples');
55
+ if (fs.existsSync(examplesDir)) {
56
+ const exampleDirs = fs.readdirSync(examplesDir);
57
+ exampleDirs.forEach(dir => {
58
+ const dirPath = path.join(examplesDir, dir);
59
+ if (fs.statSync(dirPath).isDirectory()) {
60
+ // 检查是否有 index.tsx 或 同名.tsx 文件
61
+ const indexFile = path.join(dirPath, 'index.tsx');
62
+ const namedFile = path.join(dirPath, `${dir}.tsx`);
63
+
64
+ if (fs.existsSync(indexFile)) {
65
+ examples.push({
66
+ name: `${dir} (文件夹 - index.tsx)`,
67
+ value: `examples/${dir}/index.tsx`,
68
+ type: 'folder',
69
+ path: indexFile
70
+ });
71
+ } else if (fs.existsSync(namedFile)) {
72
+ examples.push({
73
+ name: `${dir} (文件夹 - ${dir}.tsx)`,
74
+ value: `examples/${dir}/${dir}.tsx`,
75
+ type: 'folder',
76
+ path: namedFile
77
+ });
78
+ }
79
+ }
80
+ });
81
+ }
82
+ } catch (error) {
83
+ console.error('扫描示例文件时出错:', error);
84
+ }
85
+
86
+ return examples;
87
+ }
88
+
89
+ /**
90
+ * 生成临时的 main.tsx 文件
91
+ */
92
+ function generateMainFile(selectedExample) {
93
+ // 统一去掉扩展名,确保导入路径无后缀
94
+ const normalizedImportPath = selectedExample.replace(/\.(t|j)sx?$/, '');
95
+
96
+ // 智能解析组件名称,且确保不包含扩展名或非法标识符字符
97
+ let componentName;
98
+ if (selectedExample.includes('examples/')) {
99
+ // 文件夹模式:使用文件夹名称作为组件名
100
+ const folderName = selectedExample.split('/')[1]; // 获取 examples/Form/ 中的 Form
101
+ componentName = folderName.charAt(0).toUpperCase() + folderName.slice(1); // 首字母大写
102
+ } else {
103
+ // 单文件模式:使用文件名作为组件名
104
+ componentName = path.basename(normalizedImportPath);
105
+ }
106
+ // 清理可能的无效字符并确保首字符为字母/下划线
107
+ componentName = componentName.replace(/\.(t|j)sx?$/i, '').replace(/[^\w$]/g, '');
108
+ if (!/^[A-Za-z_$]/.test(componentName)) {
109
+ componentName = '_' + componentName;
110
+ }
111
+
112
+ const mainContent = `import React from 'react';
113
+ import ReactDOM from 'react-dom/client';
114
+ import ${componentName} from './${normalizedImportPath}';
115
+
116
+ ReactDOM.createRoot(document.getElementById('root')!).render(<${componentName} />);
117
+ `;
118
+
119
+ try {
120
+ // 备份原始 main.tsx 文件
121
+ if (fs.existsSync(MAIN_FILE)) {
122
+ fs.copyFileSync(MAIN_FILE, MAIN_FILE + '.backup');
123
+ }
124
+
125
+ // 写入新的 main.tsx
126
+ fs.writeFileSync(MAIN_FILE, mainContent);
127
+ console.log(`✅ 已生成临时 main.tsx,导入示例: ${selectedExample}`);
128
+
129
+ return true;
130
+ } catch (error) {
131
+ console.error('生成 main.tsx 文件时出错:', error);
132
+ return false;
133
+ }
134
+ }
135
+
136
+ /**
137
+ * 恢复原始的 main.tsx 文件
138
+ */
139
+ function restoreMainFile() {
140
+ try {
141
+ if (fs.existsSync(MAIN_FILE + '.backup')) {
142
+ fs.copyFileSync(MAIN_FILE + '.backup', MAIN_FILE);
143
+ fs.removeSync(MAIN_FILE + '.backup');
144
+ console.log('✅ 已恢复原始 main.tsx 文件');
145
+ }
146
+ } catch (error) {
147
+ console.error('恢复 main.tsx 文件时出错:', error);
148
+ }
149
+ }
150
+
151
+ /**
152
+ * 主函数
153
+ */
154
+ async function main() {
155
+ console.log('🔍 正在扫描示例文件...\n');
156
+
157
+ const examples = scanExampleFiles();
158
+
159
+ if (examples.length === 0) {
160
+ console.log('❌ 未找到任何示例文件');
161
+ console.log('请确保有以下格式的文件:');
162
+ console.log(' - src/Example_XXXX.tsx');
163
+ console.log(' - src/examples/XXXX/XXXX.tsx');
164
+ console.log(' - src/examples/XXXX/index.tsx');
165
+ process.exit(1);
166
+ }
167
+
168
+ console.log(`📁 找到 ${examples.length} 个示例文件:\n`);
169
+
170
+ const { selectedExample } = await inquirer.prompt([
171
+ {
172
+ type: 'list',
173
+ name: 'selectedExample',
174
+ message: '请选择要运行的示例:',
175
+ choices: examples,
176
+ pageSize: 10
177
+ }
178
+ ]);
179
+
180
+ console.log(`\n🎯 已选择: ${selectedExample}`);
181
+
182
+ // 生成临时 main.tsx
183
+ if (generateMainFile(selectedExample)) {
184
+ console.log('\n🚀 示例文件已准备就绪!');
185
+ console.log('现在可以运行以下命令:');
186
+ console.log(' - 开发模式: pnpm run dev:demo');
187
+ console.log(' - 打包模式: pnpm run build:demo');
188
+ console.log('\n💡 提示: 运行完成后会自动恢复原始 main.tsx 文件');
189
+ } else {
190
+ console.error('❌ 准备示例文件失败');
191
+ process.exit(1);
192
+ }
193
+ }
194
+
195
+ // 处理进程退出,确保恢复原始文件
196
+ process.on('SIGINT', () => {
197
+ console.log('\n\n🔄 正在清理...');
198
+ restoreMainFile();
199
+ process.exit(0);
200
+ });
201
+
202
+ process.on('SIGTERM', () => {
203
+ console.log('\n\n🔄 正在清理...');
204
+ restoreMainFile();
205
+ process.exit(0);
206
+ });
207
+
208
+ // 如果直接运行此脚本
209
+ if (import.meta.url === `file://${process.argv[1]}`) {
210
+ main().catch(error => {
211
+ console.error('❌ 脚本执行失败:', error);
212
+ process.exit(1);
213
+ });
214
+ }
215
+
216
+ export { main, generateMainFile, restoreMainFile, scanExampleFiles };
@@ -0,0 +1,76 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { spawn } from 'child_process';
4
+ import { main, restoreMainFile } from './demo-selector.js';
5
+ import path from 'path';
6
+ import { fileURLToPath } from 'url';
7
+
8
+ const __filename = fileURLToPath(import.meta.url);
9
+ const __dirname = path.dirname(__filename);
10
+
11
+ // 检测操作系统
12
+ const isWindows = process.platform === 'win32';
13
+
14
+ /**
15
+ * 启动开发服务器
16
+ */
17
+ function startDevServer() {
18
+ console.log('\n🚀 正在启动开发服务器...\n');
19
+ console.log('🔧 调试信息:');
20
+ console.log(' 操作系统:', process.platform);
21
+ console.log(' Windows 模式:', isWindows);
22
+ console.log(' 工作目录:', path.resolve(__dirname, '..'));
23
+ console.log('');
24
+
25
+ const viteProcess = spawn('pnpm', ['run', 'dev'], {
26
+ stdio: 'inherit',
27
+ shell: isWindows, // Windows 下需要 shell: true
28
+ cwd: path.resolve(__dirname, '..'),
29
+ });
30
+
31
+ viteProcess.on('close', code => {
32
+ console.log(`\n🔄 开发服务器已关闭 (退出码: ${code})`);
33
+ restoreMainFile();
34
+ });
35
+
36
+ viteProcess.on('error', error => {
37
+ console.error('❌ 启动开发服务器失败:', error);
38
+ restoreMainFile();
39
+ process.exit(1);
40
+ });
41
+
42
+ // 处理进程退出信号
43
+ process.on('SIGINT', () => {
44
+ console.log('\n🔄 正在关闭开发服务器...');
45
+ viteProcess.kill('SIGINT');
46
+ });
47
+
48
+ process.on('SIGTERM', () => {
49
+ console.log('\n🔄 正在关闭开发服务器...');
50
+ viteProcess.kill('SIGTERM');
51
+ });
52
+ }
53
+
54
+ /**
55
+ * 主函数
56
+ */
57
+ async function runDevDemo() {
58
+ try {
59
+ // 先选择示例
60
+ await main();
61
+
62
+ // 启动开发服务器
63
+ startDevServer();
64
+ } catch (error) {
65
+ console.error('❌ 开发模式启动失败:', error);
66
+ restoreMainFile();
67
+ process.exit(1);
68
+ }
69
+ }
70
+
71
+ // 如果直接运行此脚本
72
+ //if (import.meta.url === `file://${process.argv[1]}`) {
73
+ runDevDemo();
74
+ //}
75
+
76
+ export { runDevDemo };