@aithe/aithe-ui 26.2.3 → 26.3.2

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 (620) hide show
  1. package/README.md +19 -11
  2. package/dist/apps/admin/app.js +12 -0
  3. package/dist/apps/admin/components/admin-app.js +83 -0
  4. package/dist/apps/admin/components/admin-layout.d.ts +0 -1
  5. package/dist/apps/admin/components/admin-layout.d.ts.map +1 -1
  6. package/dist/apps/admin/components/admin-layout.js +250 -0
  7. package/dist/apps/admin/datahub/auth.js +24 -0
  8. package/dist/apps/admin/datahub/dashboard.js +16 -0
  9. package/dist/apps/admin/datahub/index.js +42 -0
  10. package/dist/apps/admin/datahub/menu.js +16 -0
  11. package/dist/apps/admin/datahub/mock/auth.js +11 -0
  12. package/dist/apps/admin/datahub/mock/dashboard.js +10 -0
  13. package/dist/apps/admin/datahub/mock/menu.js +42 -0
  14. package/dist/apps/admin/i18n/de-DE.js +37 -0
  15. package/dist/apps/admin/i18n/en-US.js +37 -0
  16. package/dist/apps/admin/i18n/es-ES.js +38 -0
  17. package/dist/apps/admin/i18n/fr-FR.js +37 -0
  18. package/dist/apps/admin/i18n/index.js +27 -0
  19. package/dist/apps/admin/i18n/ja-JP.js +38 -0
  20. package/dist/apps/admin/i18n/ko-KR.js +37 -0
  21. package/dist/apps/admin/i18n/pt-BR.js +37 -0
  22. package/dist/apps/admin/i18n/zh-CN.js +37 -0
  23. package/dist/apps/admin/i18n/zh-HK.js +37 -0
  24. package/dist/apps/admin/i18n/zh-TW.js +37 -0
  25. package/dist/apps/admin/pages/dashboard-page.d.ts +1 -0
  26. package/dist/apps/admin/pages/dashboard-page.d.ts.map +1 -1
  27. package/dist/apps/admin/pages/dashboard-page.js +199 -0
  28. package/dist/apps/admin/pages/login-page.js +278 -0
  29. package/dist/apps/admin/pages/not-found-page.js +57 -0
  30. package/dist/apps/admin/pages/role-page.js +76 -0
  31. package/dist/apps/admin/pages/settings-page.js +95 -0
  32. package/dist/apps/admin/pages/user-page.js +76 -0
  33. package/dist/apps/admin/router/index.js +43 -0
  34. package/dist/apps/admin/standalone.js +1 -0
  35. package/dist/apps/admin/store/auth.js +42 -0
  36. package/dist/apps/api/app.js +82 -0
  37. package/dist/apps/api/demo-data.d.ts.map +1 -1
  38. package/dist/apps/api/demo-data.js +965 -0
  39. package/dist/apps/api/docs-viewer.js +684 -0
  40. package/dist/apps/api/i18n/de-DE.d.ts.map +1 -1
  41. package/dist/apps/api/i18n/de-DE.js +131 -0
  42. package/dist/apps/api/i18n/en-US.d.ts.map +1 -1
  43. package/dist/apps/api/i18n/en-US.js +141 -0
  44. package/dist/apps/api/i18n/es-ES.d.ts.map +1 -1
  45. package/dist/apps/api/i18n/es-ES.js +131 -0
  46. package/dist/apps/api/i18n/fr-FR.d.ts.map +1 -1
  47. package/dist/apps/api/i18n/fr-FR.js +131 -0
  48. package/dist/apps/api/i18n/index.js +27 -0
  49. package/dist/apps/api/i18n/ja-JP.d.ts.map +1 -1
  50. package/dist/apps/api/i18n/ja-JP.js +131 -0
  51. package/dist/apps/api/i18n/ko-KR.d.ts.map +1 -1
  52. package/dist/apps/api/i18n/ko-KR.js +131 -0
  53. package/dist/apps/api/i18n/pt-BR.d.ts.map +1 -1
  54. package/dist/apps/api/i18n/pt-BR.js +131 -0
  55. package/dist/apps/api/i18n/zh-CN.d.ts.map +1 -1
  56. package/dist/apps/api/i18n/zh-CN.js +141 -0
  57. package/dist/apps/api/i18n/zh-HK.d.ts.map +1 -1
  58. package/dist/apps/api/i18n/zh-HK.js +131 -0
  59. package/dist/apps/api/i18n/zh-TW.d.ts.map +1 -1
  60. package/dist/apps/api/i18n/zh-TW.js +131 -0
  61. package/dist/apps/api/pages/docs.d.ts.map +1 -1
  62. package/dist/apps/api/pages/docs.js +369 -0
  63. package/dist/apps/api/standalone.js +1 -0
  64. package/dist/apps/demo/app.d.ts.map +1 -1
  65. package/dist/apps/demo/app.js +275 -0
  66. package/dist/apps/demo/editor.d.ts.map +1 -1
  67. package/dist/apps/demo/editor.js +270 -0
  68. package/dist/apps/demo/helpers.js +7 -0
  69. package/dist/apps/demo/i18n/de-DE.d.ts.map +1 -1
  70. package/dist/apps/demo/i18n/de-DE.js +289 -0
  71. package/dist/apps/demo/i18n/en-US.d.ts.map +1 -1
  72. package/dist/apps/demo/i18n/en-US.js +301 -0
  73. package/dist/apps/demo/i18n/es-ES.d.ts.map +1 -1
  74. package/dist/apps/demo/i18n/es-ES.js +289 -0
  75. package/dist/apps/demo/i18n/fr-FR.d.ts.map +1 -1
  76. package/dist/apps/demo/i18n/fr-FR.js +289 -0
  77. package/dist/apps/demo/i18n/index.js +27 -0
  78. package/dist/apps/demo/i18n/ja-JP.d.ts.map +1 -1
  79. package/dist/apps/demo/i18n/ja-JP.js +289 -0
  80. package/dist/apps/demo/i18n/ko-KR.d.ts.map +1 -1
  81. package/dist/apps/demo/i18n/ko-KR.js +289 -0
  82. package/dist/apps/demo/i18n/pt-BR.d.ts.map +1 -1
  83. package/dist/apps/demo/i18n/pt-BR.js +289 -0
  84. package/dist/apps/demo/i18n/zh-CN.d.ts.map +1 -1
  85. package/dist/apps/demo/i18n/zh-CN.js +301 -0
  86. package/dist/apps/demo/i18n/zh-HK.d.ts.map +1 -1
  87. package/dist/apps/demo/i18n/zh-HK.js +289 -0
  88. package/dist/apps/demo/i18n/zh-TW.d.ts.map +1 -1
  89. package/dist/apps/demo/i18n/zh-TW.js +289 -0
  90. package/dist/apps/demo/pages/autoform.d.ts.map +1 -1
  91. package/dist/apps/demo/pages/autoform.js +422 -0
  92. package/dist/apps/demo/pages/autoview.d.ts +3 -0
  93. package/dist/apps/demo/pages/autoview.d.ts.map +1 -0
  94. package/dist/apps/demo/pages/autoview.js +310 -0
  95. package/dist/apps/demo/pages/basic.js +157 -0
  96. package/dist/apps/demo/pages/code.js +1088 -0
  97. package/dist/apps/demo/pages/container.js +42 -0
  98. package/dist/apps/demo/pages/dashboard.js +159 -0
  99. package/dist/apps/demo/pages/data.d.ts.map +1 -1
  100. package/dist/apps/demo/pages/data.js +327 -0
  101. package/dist/apps/demo/pages/display.d.ts.map +1 -1
  102. package/dist/apps/demo/pages/display.js +295 -0
  103. package/dist/apps/demo/pages/feedback.js +94 -0
  104. package/dist/apps/demo/pages/form.d.ts.map +1 -1
  105. package/dist/apps/demo/pages/form.js +119 -0
  106. package/dist/apps/demo/pages/layout.js +74 -0
  107. package/dist/apps/demo/pages/navigation.js +54 -0
  108. package/dist/apps/demo/pages/progress.js +42 -0
  109. package/dist/apps/demo/pages/theme.js +126 -0
  110. package/dist/apps/demo/standalone.js +1 -0
  111. package/dist/components/basic/AGENTS.md +1 -0
  112. package/dist/components/basic/avatar.js +168 -0
  113. package/dist/components/basic/badge.js +157 -0
  114. package/dist/components/basic/button-group.js +70 -0
  115. package/dist/components/basic/button.d.ts +2 -4
  116. package/dist/components/basic/button.d.ts.map +1 -1
  117. package/dist/components/basic/button.js +315 -0
  118. package/dist/components/basic/card.js +186 -0
  119. package/dist/components/basic/chip.js +103 -0
  120. package/dist/components/basic/divider.js +127 -0
  121. package/dist/components/basic/empty.js +72 -0
  122. package/dist/components/basic/icon.js +129 -0
  123. package/dist/components/basic/input.d.ts.map +1 -1
  124. package/dist/components/basic/input.js +314 -0
  125. package/dist/components/basic/tag.d.ts +7 -2
  126. package/dist/components/basic/tag.d.ts.map +1 -1
  127. package/dist/components/basic/tag.js +248 -0
  128. package/dist/components/basic/textarea.d.ts +0 -1
  129. package/dist/components/basic/textarea.d.ts.map +1 -1
  130. package/dist/components/basic/textarea.js +130 -0
  131. package/dist/components/container/callout.js +108 -0
  132. package/dist/components/container/details.js +117 -0
  133. package/dist/components/container/scroller.js +144 -0
  134. package/dist/components/container/split-panel.js +150 -0
  135. package/dist/components/data/AGENTS.md +1 -1
  136. package/dist/components/data/box-table.d.ts +53 -0
  137. package/dist/components/data/box-table.d.ts.map +1 -0
  138. package/dist/components/data/box-table.js +220 -0
  139. package/dist/components/data/dropdown.d.ts +8 -5
  140. package/dist/components/data/dropdown.d.ts.map +1 -1
  141. package/dist/components/data/dropdown.js +219 -0
  142. package/dist/components/data/metrics-group.js +180 -0
  143. package/dist/components/data/metrics.d.ts +11 -0
  144. package/dist/components/data/metrics.d.ts.map +1 -1
  145. package/dist/components/data/metrics.js +309 -0
  146. package/dist/components/data/pagination.js +119 -0
  147. package/dist/components/data/tab-pane.d.ts +58 -12
  148. package/dist/components/data/tab-pane.d.ts.map +1 -1
  149. package/dist/components/data/tab-pane.js +130 -0
  150. package/dist/components/data/table-column.d.ts +29 -5
  151. package/dist/components/data/table-column.d.ts.map +1 -1
  152. package/dist/components/data/table-column.js +123 -0
  153. package/dist/components/data/table.d.ts +134 -54
  154. package/dist/components/data/table.d.ts.map +1 -1
  155. package/dist/components/data/table.js +1210 -0
  156. package/dist/components/data/tabs.d.ts +60 -3
  157. package/dist/components/data/tabs.d.ts.map +1 -1
  158. package/dist/components/data/tabs.js +416 -0
  159. package/dist/components/data/timeline-item.js +127 -0
  160. package/dist/components/data/timeline.js +204 -0
  161. package/dist/components/data/tree-menu.d.ts +12 -2
  162. package/dist/components/data/tree-menu.d.ts.map +1 -1
  163. package/dist/components/data/tree-menu.js +482 -0
  164. package/dist/components/data/tree.js +269 -0
  165. package/dist/components/display/AGENTS.md +5 -2
  166. package/dist/components/display/animated-image.js +98 -0
  167. package/dist/components/display/autoview.d.ts +139 -0
  168. package/dist/components/display/autoview.d.ts.map +1 -0
  169. package/dist/components/display/autoview.js +460 -0
  170. package/dist/components/display/brief-box.d.ts +42 -0
  171. package/dist/components/display/brief-box.d.ts.map +1 -0
  172. package/dist/components/display/brief-box.js +117 -0
  173. package/dist/components/display/carousel.js +223 -0
  174. package/dist/components/display/code-editor.d.ts.map +1 -1
  175. package/dist/components/display/code-editor.js +976 -0
  176. package/dist/components/display/comparison.js +132 -0
  177. package/dist/components/display/desc-item.d.ts +48 -0
  178. package/dist/components/display/desc-item.d.ts.map +1 -0
  179. package/dist/components/display/desc-item.js +150 -0
  180. package/dist/components/display/desc.d.ts +68 -0
  181. package/dist/components/display/desc.d.ts.map +1 -0
  182. package/dist/components/display/desc.js +405 -0
  183. package/dist/components/display/detail-box.d.ts +51 -0
  184. package/dist/components/display/detail-box.d.ts.map +1 -0
  185. package/dist/components/display/detail-box.js +157 -0
  186. package/dist/components/display/label.js +166 -0
  187. package/dist/components/display/markdown-editor.js +319 -0
  188. package/dist/components/display/markdown.d.ts.map +1 -1
  189. package/dist/components/display/markdown.js +193 -0
  190. package/dist/components/display/mini-box.d.ts +31 -0
  191. package/dist/components/display/mini-box.d.ts.map +1 -0
  192. package/dist/components/display/mini-box.js +137 -0
  193. package/dist/components/display/profile.d.ts +18 -0
  194. package/dist/components/display/profile.d.ts.map +1 -0
  195. package/dist/components/display/profile.js +164 -0
  196. package/dist/components/feedback/AGENTS.md +1 -0
  197. package/dist/components/feedback/alert.js +150 -0
  198. package/dist/components/feedback/dialog.js +228 -0
  199. package/dist/components/feedback/drawer.d.ts.map +1 -1
  200. package/dist/components/feedback/drawer.js +338 -0
  201. package/dist/components/feedback/loading.js +130 -0
  202. package/dist/components/feedback/modal.d.ts.map +1 -1
  203. package/dist/components/feedback/modal.js +303 -0
  204. package/dist/components/feedback/notification.js +170 -0
  205. package/dist/components/feedback/popover.d.ts +1 -1
  206. package/dist/components/feedback/popover.js +124 -0
  207. package/dist/components/feedback/toast.js +142 -0
  208. package/dist/components/feedback/tooltip.d.ts +1 -1
  209. package/dist/components/feedback/tooltip.js +153 -0
  210. package/dist/components/form/AGENTS.md +4 -0
  211. package/dist/components/form/autoform-item.d.ts +6 -0
  212. package/dist/components/form/autoform-item.d.ts.map +1 -1
  213. package/dist/components/form/autoform-item.js +791 -0
  214. package/dist/components/form/autoform.d.ts +15 -5
  215. package/dist/components/form/autoform.d.ts.map +1 -1
  216. package/dist/components/form/autoform.js +303 -0
  217. package/dist/components/form/checkbox-group.js +118 -0
  218. package/dist/components/form/checkbox.js +123 -0
  219. package/dist/components/form/color-picker.js +148 -0
  220. package/dist/components/form/combobox.d.ts +4 -0
  221. package/dist/components/form/combobox.d.ts.map +1 -1
  222. package/dist/components/form/combobox.js +325 -0
  223. package/dist/components/form/date-picker.js +123 -0
  224. package/dist/components/form/form-item.d.ts.map +1 -1
  225. package/dist/components/form/form-item.js +141 -0
  226. package/dist/components/form/form.js +94 -0
  227. package/dist/components/form/radio-group.js +106 -0
  228. package/dist/components/form/radio.js +110 -0
  229. package/dist/components/form/rate.js +116 -0
  230. package/dist/components/form/select.d.ts +5 -1
  231. package/dist/components/form/select.d.ts.map +1 -1
  232. package/dist/components/form/select.js +539 -0
  233. package/dist/components/form/slider.js +134 -0
  234. package/dist/components/form/switch.js +146 -0
  235. package/dist/components/form/time-picker.js +92 -0
  236. package/dist/components/form/transfer.js +273 -0
  237. package/dist/components/form/upload.js +138 -0
  238. package/dist/components/framework/body.js +333 -0
  239. package/dist/components/framework/dashboard-panel.js +519 -0
  240. package/dist/components/framework/dashboard.d.ts.map +1 -1
  241. package/dist/components/framework/dashboard.js +1084 -0
  242. package/dist/components/framework/header.js +237 -0
  243. package/dist/components/framework/log-panel.js +637 -0
  244. package/dist/components/framework/page.js +151 -0
  245. package/dist/components/framework/sidebar.d.ts +4 -10
  246. package/dist/components/framework/sidebar.d.ts.map +1 -1
  247. package/dist/components/framework/sidebar.js +477 -0
  248. package/dist/components/layout/affix.js +137 -0
  249. package/dist/components/layout/col.js +103 -0
  250. package/dist/components/layout/collapse-item.js +165 -0
  251. package/dist/components/layout/collapse.js +108 -0
  252. package/dist/components/layout/container.js +92 -0
  253. package/dist/components/layout/flex.js +100 -0
  254. package/dist/components/layout/row.js +103 -0
  255. package/dist/components/layout/space.js +85 -0
  256. package/dist/components/navigation/back-top.js +127 -0
  257. package/dist/components/navigation/breadcrumb-item.js +108 -0
  258. package/dist/components/navigation/breadcrumb.js +70 -0
  259. package/dist/components/navigation/menu-item.js +181 -0
  260. package/dist/components/navigation/menu.js +126 -0
  261. package/dist/components/navigation/steps.js +183 -0
  262. package/dist/components/navigation/sub-menu.d.ts.map +1 -1
  263. package/dist/components/navigation/sub-menu.js +252 -0
  264. package/dist/components/progress/progress-bar.js +97 -0
  265. package/dist/components/progress/progress-ring.js +111 -0
  266. package/dist/components/progress/skeleton.js +108 -0
  267. package/dist/components/progress/spinner.js +129 -0
  268. package/dist/components/theme/locale-switch.js +241 -0
  269. package/dist/components/theme/shadow-picker.js +233 -0
  270. package/dist/components/theme/shape-picker.js +232 -0
  271. package/dist/components/theme/theme-picker.js +236 -0
  272. package/dist/components/theme/theme-preview.d.ts +1 -2
  273. package/dist/components/theme/theme-preview.d.ts.map +1 -1
  274. package/dist/components/theme/theme-preview.js +376 -0
  275. package/dist/components/theme/theme-switch.d.ts.map +1 -1
  276. package/dist/components/theme/theme-switch.js +318 -0
  277. package/dist/components/theme/typo-picker.js +219 -0
  278. package/dist/core/AGENTS.md +6 -1
  279. package/dist/core/aithe-element.d.ts +2 -2
  280. package/dist/core/aithe-element.js +135 -0
  281. package/dist/core/aithe-widget.js +30 -0
  282. package/dist/core/anchored-overlay.d.ts +3 -0
  283. package/dist/core/anchored-overlay.d.ts.map +1 -1
  284. package/dist/core/anchored-overlay.js +111 -0
  285. package/dist/core/autoform/autoform.js +79 -0
  286. package/dist/core/autoform/autoview.d.ts +86 -0
  287. package/dist/core/autoform/autoview.d.ts.map +1 -0
  288. package/dist/core/autoform/autoview.js +37 -0
  289. package/dist/core/autoform/condition.js +170 -0
  290. package/dist/core/autoform/index.d.ts +2 -0
  291. package/dist/core/autoform/index.d.ts.map +1 -1
  292. package/dist/core/autoform/index.js +9 -0
  293. package/dist/core/autoform/types.js +7 -0
  294. package/dist/core/datahub/__tests__/force-options.test.d.ts +8 -0
  295. package/dist/core/datahub/__tests__/force-options.test.d.ts.map +1 -0
  296. package/dist/core/datahub/__tests__/force-options.test.js +161 -0
  297. package/dist/core/datahub/config/strategy.d.ts +1 -1
  298. package/dist/core/datahub/config/strategy.d.ts.map +1 -1
  299. package/dist/core/datahub/config/strategy.js +50 -0
  300. package/dist/core/datahub/core/adapter/fetch-adapter.d.ts +1 -1
  301. package/dist/core/datahub/core/adapter/fetch-adapter.d.ts.map +1 -1
  302. package/dist/core/datahub/core/adapter/fetch-adapter.js +118 -0
  303. package/dist/core/datahub/core/adapter/index.js +7 -0
  304. package/dist/core/datahub/core/adapter/mock-adapter.d.ts +1 -1
  305. package/dist/core/datahub/core/adapter/mock-adapter.d.ts.map +1 -1
  306. package/dist/core/datahub/core/adapter/mock-adapter.js +58 -0
  307. package/dist/core/datahub/core/api-styles.d.ts +1 -1
  308. package/dist/core/datahub/core/api-styles.d.ts.map +1 -1
  309. package/dist/core/datahub/core/api-styles.js +136 -0
  310. package/dist/core/datahub/core/datahub-core.d.ts +53 -3
  311. package/dist/core/datahub/core/datahub-core.d.ts.map +1 -1
  312. package/dist/core/datahub/core/datahub-core.js +520 -0
  313. package/dist/core/datahub/core/index.js +7 -0
  314. package/dist/core/datahub/index.js +50 -0
  315. package/dist/core/datahub/types.d.ts +24 -0
  316. package/dist/core/datahub/types.d.ts.map +1 -1
  317. package/dist/core/datahub/types.js +31 -0
  318. package/dist/core/datahub/utils/cache.js +55 -0
  319. package/dist/core/datahub/utils/common.js +23 -0
  320. package/dist/core/datahub/utils/dedup.d.ts +1 -1
  321. package/dist/core/datahub/utils/dedup.d.ts.map +1 -1
  322. package/dist/core/datahub/utils/dedup.js +52 -0
  323. package/dist/core/datahub/utils/idempotent.js +61 -0
  324. package/dist/core/datahub/utils/is-query.js +53 -0
  325. package/dist/core/datahub/utils/loading.js +78 -0
  326. package/dist/core/filter/__tests__/index.test.d.ts +2 -0
  327. package/dist/core/filter/__tests__/index.test.d.ts.map +1 -0
  328. package/dist/core/filter/__tests__/index.test.js +230 -0
  329. package/dist/core/filter/builtins.d.ts +60 -0
  330. package/dist/core/filter/builtins.d.ts.map +1 -0
  331. package/dist/core/filter/builtins.js +172 -0
  332. package/dist/core/filter/factory.d.ts +54 -0
  333. package/dist/core/filter/factory.d.ts.map +1 -0
  334. package/dist/core/filter/factory.js +96 -0
  335. package/dist/core/filter/index.d.ts +11 -0
  336. package/dist/core/filter/index.d.ts.map +1 -0
  337. package/dist/core/filter/index.js +9 -0
  338. package/dist/core/filter/types.d.ts +12 -0
  339. package/dist/core/filter/types.d.ts.map +1 -0
  340. package/dist/core/filter/types.js +1 -0
  341. package/dist/core/floating.js +132 -0
  342. package/dist/core/highlight/index.js +43 -0
  343. package/dist/core/highlight/lang-bash.js +27 -0
  344. package/dist/core/highlight/lang-c.js +27 -0
  345. package/dist/core/highlight/lang-cmake.js +27 -0
  346. package/dist/core/highlight/lang-cpp.js +27 -0
  347. package/dist/core/highlight/lang-css.js +24 -0
  348. package/dist/core/highlight/lang-dart.js +27 -0
  349. package/dist/core/highlight/lang-dockerfile.js +16 -0
  350. package/dist/core/highlight/lang-fsharp.js +23 -0
  351. package/dist/core/highlight/lang-go.js +22 -0
  352. package/dist/core/highlight/lang-html.js +12 -0
  353. package/dist/core/highlight/lang-java.js +22 -0
  354. package/dist/core/highlight/lang-javascript.js +26 -0
  355. package/dist/core/highlight/lang-json.js +13 -0
  356. package/dist/core/highlight/lang-jsonline.js +13 -0
  357. package/dist/core/highlight/lang-jsx.js +30 -0
  358. package/dist/core/highlight/lang-kotlin.js +27 -0
  359. package/dist/core/highlight/lang-latex.js +22 -0
  360. package/dist/core/highlight/lang-lua.js +26 -0
  361. package/dist/core/highlight/lang-makefile.js +22 -0
  362. package/dist/core/highlight/lang-markdown.js +18 -0
  363. package/dist/core/highlight/lang-objectivec.js +24 -0
  364. package/dist/core/highlight/lang-perl.js +30 -0
  365. package/dist/core/highlight/lang-powershell.js +23 -0
  366. package/dist/core/highlight/lang-python.js +27 -0
  367. package/dist/core/highlight/lang-r.js +21 -0
  368. package/dist/core/highlight/lang-ruby.js +29 -0
  369. package/dist/core/highlight/lang-rust.js +24 -0
  370. package/dist/core/highlight/lang-scala.js +26 -0
  371. package/dist/core/highlight/lang-sql.js +21 -0
  372. package/dist/core/highlight/lang-svelte.js +27 -0
  373. package/dist/core/highlight/lang-swift.js +28 -0
  374. package/dist/core/highlight/lang-tsx.js +35 -0
  375. package/dist/core/highlight/lang-typescript.js +31 -0
  376. package/dist/core/highlight/lang-vue.js +29 -0
  377. package/dist/core/highlight/lang-wasm.js +22 -0
  378. package/dist/core/highlight/lang-xml.js +12 -0
  379. package/dist/core/highlight/lang-yaml.js +14 -0
  380. package/dist/core/highlight/registry.js +99 -0
  381. package/dist/core/logger/LoggerCore.js +626 -0
  382. package/dist/core/logger/index.js +10 -0
  383. package/dist/core/logger/types.js +29 -0
  384. package/dist/core/markdown/index.js +20 -0
  385. package/dist/core/markdown/parser.d.ts +2 -0
  386. package/dist/core/markdown/parser.d.ts.map +1 -1
  387. package/dist/core/markdown/parser.js +376 -0
  388. package/dist/core/markdown/plugins.d.ts +2 -1
  389. package/dist/core/markdown/plugins.d.ts.map +1 -1
  390. package/dist/core/markdown/plugins.js +755 -0
  391. package/dist/core/markdown/types.d.ts +5 -0
  392. package/dist/core/markdown/types.d.ts.map +1 -1
  393. package/dist/core/markdown/types.js +7 -0
  394. package/dist/core/router/index.js +244 -0
  395. package/dist/core/styles.js +44 -0
  396. package/dist/core/types.d.ts +52 -3
  397. package/dist/core/types.d.ts.map +1 -1
  398. package/dist/core/types.js +1 -0
  399. package/dist/index.d.ts +9 -0
  400. package/dist/index.d.ts.map +1 -1
  401. package/dist/index.js +3695 -1622
  402. package/dist/index.js.map +1 -1
  403. package/dist/index.umd.js +1844 -758
  404. package/dist/index.umd.js.map +1 -1
  405. package/dist/styles/aithe-ui.d.ts +23 -0
  406. package/dist/styles/aithe-ui.d.ts.map +1 -1
  407. package/dist/styles/aithe-ui.js +185 -0
  408. package/dist/styles/global.css.d.ts +1 -1
  409. package/dist/styles/global.css.d.ts.map +1 -1
  410. package/dist/styles/global.css.js +119 -0
  411. package/dist/styles/i18n/index.js +206 -0
  412. package/dist/styles/i18n/locales/de-DE.d.ts.map +1 -1
  413. package/dist/styles/i18n/locales/de-DE.js +151 -0
  414. package/dist/styles/i18n/locales/en-US.d.ts.map +1 -1
  415. package/dist/styles/i18n/locales/en-US.js +160 -0
  416. package/dist/styles/i18n/locales/es-ES.d.ts.map +1 -1
  417. package/dist/styles/i18n/locales/es-ES.js +151 -0
  418. package/dist/styles/i18n/locales/fr-FR.d.ts.map +1 -1
  419. package/dist/styles/i18n/locales/fr-FR.js +151 -0
  420. package/dist/styles/i18n/locales/index.js +14 -0
  421. package/dist/styles/i18n/locales/ja-JP.d.ts.map +1 -1
  422. package/dist/styles/i18n/locales/ja-JP.js +151 -0
  423. package/dist/styles/i18n/locales/ko-KR.d.ts.map +1 -1
  424. package/dist/styles/i18n/locales/ko-KR.js +151 -0
  425. package/dist/styles/i18n/locales/pt-BR.d.ts.map +1 -1
  426. package/dist/styles/i18n/locales/pt-BR.js +151 -0
  427. package/dist/styles/i18n/locales/zh-CN.d.ts.map +1 -1
  428. package/dist/styles/i18n/locales/zh-CN.js +160 -0
  429. package/dist/styles/i18n/locales/zh-HK.d.ts.map +1 -1
  430. package/dist/styles/i18n/locales/zh-HK.js +151 -0
  431. package/dist/styles/i18n/locales/zh-TW.d.ts.map +1 -1
  432. package/dist/styles/i18n/locales/zh-TW.js +151 -0
  433. package/dist/styles/layout/index.js +88 -0
  434. package/dist/styles/mixins.js +43 -0
  435. package/dist/styles/shadow/cyber.js +19 -0
  436. package/dist/styles/shadow/deep.js +19 -0
  437. package/dist/styles/shadow/diffuse.js +19 -0
  438. package/dist/styles/shadow/flat.js +19 -0
  439. package/dist/styles/shadow/glassmorphism.js +19 -0
  440. package/dist/styles/shadow/index.js +129 -0
  441. package/dist/styles/shadow/neumorphism.js +21 -0
  442. package/dist/styles/shadow/retro.js +19 -0
  443. package/dist/styles/shadow/sharp-business.js +19 -0
  444. package/dist/styles/shadow/skeuomorphic.js +21 -0
  445. package/dist/styles/shape/chamfer.js +19 -0
  446. package/dist/styles/shape/circle.js +19 -0
  447. package/dist/styles/shape/index.js +174 -0
  448. package/dist/styles/shape/organic.js +19 -0
  449. package/dist/styles/shape/pill.js +19 -0
  450. package/dist/styles/shape/rounded.js +21 -0
  451. package/dist/styles/shape/rounder.js +19 -0
  452. package/dist/styles/shape/sharp.js +19 -0
  453. package/dist/styles/shape/smooth.js +19 -0
  454. package/dist/styles/theme/aliyun.d.ts +1 -1
  455. package/dist/styles/theme/aliyun.d.ts.map +1 -1
  456. package/dist/styles/theme/aliyun.js +102 -0
  457. package/dist/styles/theme/amber.d.ts +1 -1
  458. package/dist/styles/theme/amber.d.ts.map +1 -1
  459. package/dist/styles/theme/amber.js +101 -0
  460. package/dist/styles/theme/blue.d.ts +1 -1
  461. package/dist/styles/theme/blue.d.ts.map +1 -1
  462. package/dist/styles/theme/blue.js +101 -0
  463. package/dist/styles/theme/charcoal.d.ts +1 -1
  464. package/dist/styles/theme/charcoal.d.ts.map +1 -1
  465. package/dist/styles/theme/charcoal.js +106 -0
  466. package/dist/styles/theme/cyan.d.ts +1 -1
  467. package/dist/styles/theme/cyan.d.ts.map +1 -1
  468. package/dist/styles/theme/cyan.js +96 -0
  469. package/dist/styles/theme/dark.d.ts +1 -1
  470. package/dist/styles/theme/dark.d.ts.map +1 -1
  471. package/dist/styles/theme/dark.js +106 -0
  472. package/dist/styles/theme/ebony.d.ts +1 -1
  473. package/dist/styles/theme/ebony.d.ts.map +1 -1
  474. package/dist/styles/theme/ebony.js +106 -0
  475. package/dist/styles/theme/festive.d.ts +1 -1
  476. package/dist/styles/theme/festive.d.ts.map +1 -1
  477. package/dist/styles/theme/festive.js +101 -0
  478. package/dist/styles/theme/graphite.d.ts +1 -1
  479. package/dist/styles/theme/graphite.d.ts.map +1 -1
  480. package/dist/styles/theme/graphite.js +106 -0
  481. package/dist/styles/theme/gray.d.ts +1 -1
  482. package/dist/styles/theme/gray.d.ts.map +1 -1
  483. package/dist/styles/theme/gray.js +101 -0
  484. package/dist/styles/theme/huawei.d.ts +1 -1
  485. package/dist/styles/theme/huawei.d.ts.map +1 -1
  486. package/dist/styles/theme/huawei.js +102 -0
  487. package/dist/styles/theme/index.d.ts +1 -1
  488. package/dist/styles/theme/index.d.ts.map +1 -1
  489. package/dist/styles/theme/index.js +276 -0
  490. package/dist/styles/theme/indigo.d.ts +1 -1
  491. package/dist/styles/theme/indigo.d.ts.map +1 -1
  492. package/dist/styles/theme/indigo.js +101 -0
  493. package/dist/styles/theme/ink.d.ts +1 -1
  494. package/dist/styles/theme/ink.d.ts.map +1 -1
  495. package/dist/styles/theme/ink.js +106 -0
  496. package/dist/styles/theme/light.d.ts +1 -1
  497. package/dist/styles/theme/light.d.ts.map +1 -1
  498. package/dist/styles/theme/light.js +102 -0
  499. package/dist/styles/theme/midnight.d.ts +1 -1
  500. package/dist/styles/theme/midnight.d.ts.map +1 -1
  501. package/dist/styles/theme/midnight.js +106 -0
  502. package/dist/styles/theme/navy.d.ts +1 -1
  503. package/dist/styles/theme/navy.d.ts.map +1 -1
  504. package/dist/styles/theme/navy.js +106 -0
  505. package/dist/styles/theme/obsidian.d.ts +1 -1
  506. package/dist/styles/theme/obsidian.d.ts.map +1 -1
  507. package/dist/styles/theme/obsidian.js +106 -0
  508. package/dist/styles/theme/onyx.d.ts +1 -1
  509. package/dist/styles/theme/onyx.d.ts.map +1 -1
  510. package/dist/styles/theme/onyx.js +106 -0
  511. package/dist/styles/theme/orange.d.ts +1 -1
  512. package/dist/styles/theme/orange.d.ts.map +1 -1
  513. package/dist/styles/theme/orange.js +101 -0
  514. package/dist/styles/theme/pink.d.ts +1 -1
  515. package/dist/styles/theme/pink.d.ts.map +1 -1
  516. package/dist/styles/theme/pink.js +101 -0
  517. package/dist/styles/theme/purple.d.ts +1 -1
  518. package/dist/styles/theme/purple.d.ts.map +1 -1
  519. package/dist/styles/theme/purple.js +101 -0
  520. package/dist/styles/theme/raisin.d.ts +1 -1
  521. package/dist/styles/theme/raisin.d.ts.map +1 -1
  522. package/dist/styles/theme/raisin.js +106 -0
  523. package/dist/styles/theme/slate.d.ts +1 -1
  524. package/dist/styles/theme/slate.d.ts.map +1 -1
  525. package/dist/styles/theme/slate.js +106 -0
  526. package/dist/styles/theme/teal.d.ts +1 -1
  527. package/dist/styles/theme/teal.d.ts.map +1 -1
  528. package/dist/styles/theme/teal.js +101 -0
  529. package/dist/styles/theme/tianyi.d.ts +1 -1
  530. package/dist/styles/theme/tianyi.d.ts.map +1 -1
  531. package/dist/styles/theme/tianyi.js +102 -0
  532. package/dist/styles/types.js +1 -0
  533. package/dist/styles/typo/business.js +34 -0
  534. package/dist/styles/typo/compact.js +34 -0
  535. package/dist/styles/typo/index.js +99 -0
  536. package/dist/styles/typo/luxury.js +34 -0
  537. package/dist/styles/typo/minimal.js +34 -0
  538. package/dist/types/index.js +2 -0
  539. package/dist/utils/dom.js +51 -0
  540. package/dist/utils/events.js +32 -0
  541. package/dist/utils/icon.js +176 -0
  542. package/dist/utils/index.js +4 -0
  543. package/dist/utils/utils.d.ts +5 -5
  544. package/dist/utils/utils.js +89 -0
  545. package/dist/utils/validation.js +52 -0
  546. package/docs/api/basic/button.md +9 -6
  547. package/docs/api/basic/tag.md +24 -17
  548. package/docs/api/data/box-table.md +73 -0
  549. package/docs/api/data/dropdown.md +3 -2
  550. package/docs/api/data/metrics.md +2 -0
  551. package/docs/api/data/table-column.md +37 -23
  552. package/docs/api/data/table.md +158 -44
  553. package/docs/api/data/tabs.md +46 -1
  554. package/docs/api/data/tree-menu.md +55 -2
  555. package/docs/api/display/autoview.md +277 -0
  556. package/docs/api/display/box.md +66 -0
  557. package/docs/api/display/brief-box.md +73 -0
  558. package/docs/api/display/desc-item.md +57 -0
  559. package/docs/api/display/desc.md +246 -0
  560. package/docs/api/display/detail-box.md +75 -0
  561. package/docs/api/display/mini-box.md +100 -0
  562. package/docs/api/display/profile.md +92 -0
  563. package/docs/api/feedback/popover.md +10 -10
  564. package/docs/api/feedback/tooltip.md +14 -14
  565. package/docs/api/form/autoform-item.md +115 -0
  566. package/docs/api/form/autoform.md +7 -3
  567. package/docs/api/form/combobox.md +27 -7
  568. package/docs/api/form/select.md +50 -28
  569. package/docs/api/framework/log-panel.md +46 -0
  570. package/docs/api/framework/sidebar.md +3 -2
  571. package/docs/api/summary.md +46 -35
  572. package/docs/api/theme/theme-switch.md +1 -1
  573. package/docs/autoform.md +14 -33
  574. package/docs/changelog/CHANGELOG.md +155 -0
  575. package/docs/changelog/VERSION_26.3.1.md +966 -0
  576. package/docs/changelog/VERSION_26.3.2.md +852 -0
  577. package/docs/datahub.md +4 -1
  578. package/docs/filter.md +332 -0
  579. package/docs/framework-integration.md +2 -2
  580. package/docs/guide.md +72 -6
  581. package/docs/i18n.md +2 -4
  582. package/docs/issue/26.3.1/issue_26.3.1.0.md +84 -0
  583. package/docs/issue/26.3.1/issue_26.3.1.1.md +72 -0
  584. package/docs/issue/26.3.1/issue_26.3.1.2.md +75 -0
  585. package/docs/issue/26.3.1/issue_26.3.1.3.md +78 -0
  586. package/docs/issue/26.3.1/issue_26.3.1.4.md +113 -0
  587. package/docs/issue/26.3.1/issue_26.3.1.5.md +142 -0
  588. package/docs/issue/26.3.1/issue_26.3.1.6.md +100 -0
  589. package/docs/issue/26.3.1/issue_26.3.1.7.md +78 -0
  590. package/docs/issue/26.3.2/issue_26.3.2.1.md +46 -0
  591. package/docs/issue/26.3.2/issue_26.3.2.2.md +82 -0
  592. package/docs/issue/26.3.2/issue_26.3.2.3.md +57 -0
  593. package/docs/issue/26.3.2/issue_26.3.2.4.md +43 -0
  594. package/docs/issue/AGENTS.md +24 -3
  595. package/docs/markdown.md +2 -2
  596. package/docs/quickstart.md +5 -5
  597. package/docs/theming.md +5 -4
  598. package/package.json +5 -2
  599. package/dist/components/navigation/dropdown.d.ts +0 -56
  600. package/dist/components/navigation/dropdown.d.ts.map +0 -1
  601. /package/docs/issue/{issue_26.2.2.1.md → 26.2.2/issue_26.2.2.1.md} +0 -0
  602. /package/docs/issue/{issue_26.2.2.2.md → 26.2.2/issue_26.2.2.2.md} +0 -0
  603. /package/docs/issue/{issue_26.2.2.3.md → 26.2.2/issue_26.2.2.3.md} +0 -0
  604. /package/docs/issue/{issue_26.2.2.4.md → 26.2.2/issue_26.2.2.4.md} +0 -0
  605. /package/docs/issue/{issue_26.2.3.1.md → 26.2.3/issue_26.2.3.1.md} +0 -0
  606. /package/docs/issue/{issue_26.2.3.10.md → 26.2.3/issue_26.2.3.10.md} +0 -0
  607. /package/docs/issue/{issue_26.2.3.11.md → 26.2.3/issue_26.2.3.11.md} +0 -0
  608. /package/docs/issue/{issue_26.2.3.12.md → 26.2.3/issue_26.2.3.12.md} +0 -0
  609. /package/docs/issue/{issue_26.2.3.13.md → 26.2.3/issue_26.2.3.13.md} +0 -0
  610. /package/docs/issue/{issue_26.2.3.14.md → 26.2.3/issue_26.2.3.14.md} +0 -0
  611. /package/docs/issue/{issue_26.2.3.15.md → 26.2.3/issue_26.2.3.15.md} +0 -0
  612. /package/docs/issue/{issue_26.2.3.16.md → 26.2.3/issue_26.2.3.16.md} +0 -0
  613. /package/docs/issue/{issue_26.2.3.2.md → 26.2.3/issue_26.2.3.2.md} +0 -0
  614. /package/docs/issue/{issue_26.2.3.3.md → 26.2.3/issue_26.2.3.3.md} +0 -0
  615. /package/docs/issue/{issue_26.2.3.4.md → 26.2.3/issue_26.2.3.4.md} +0 -0
  616. /package/docs/issue/{issue_26.2.3.5.md → 26.2.3/issue_26.2.3.5.md} +0 -0
  617. /package/docs/issue/{issue_26.2.3.6.md → 26.2.3/issue_26.2.3.6.md} +0 -0
  618. /package/docs/issue/{issue_26.2.3.7.md → 26.2.3/issue_26.2.3.7.md} +0 -0
  619. /package/docs/issue/{issue_26.2.3.8.md → 26.2.3/issue_26.2.3.8.md} +0 -0
  620. /package/docs/issue/{issue_26.2.3.9.md → 26.2.3/issue_26.2.3.9.md} +0 -0
@@ -0,0 +1,626 @@
1
+ import { LogLevel, LOG_LEVEL_LABEL, DEFAULT_LOG_CONFIG, } from './types';
2
+ /**
3
+ * Map native console methods to the appropriate log level.
4
+ * console.log → INFO is more conventional than DEBUG.
5
+ */
6
+ const CONSOLE_LEVEL_MAP = {
7
+ log: LogLevel.INFO,
8
+ info: LogLevel.INFO,
9
+ warn: LogLevel.WARN,
10
+ error: LogLevel.ERROR,
11
+ };
12
+ /** Auto-incrementing counter for unique entry IDs. */
13
+ let idCounter = 0;
14
+ function generateId() {
15
+ return `log_${Date.now()}_${++idCounter}`;
16
+ }
17
+ /**
18
+ * Convert the first log argument to a string message.
19
+ * 将日志的第一个参数转为字符串消息。
20
+ */
21
+ function firstArgToString(value) {
22
+ if (value === null || value === undefined)
23
+ return '';
24
+ if (typeof value === 'string')
25
+ return value;
26
+ if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {
27
+ return String(value);
28
+ }
29
+ if (value instanceof Error)
30
+ return value.message;
31
+ return safeToString(value);
32
+ }
33
+ /**
34
+ * Safely convert any value to a string, protecting against circular refs.
35
+ * 安全地将任意值转为字符串,防止循环引用。
36
+ */
37
+ function safeToString(value) {
38
+ try {
39
+ if (value === null)
40
+ return 'null';
41
+ if (value === undefined)
42
+ return 'undefined';
43
+ if (typeof value === 'string')
44
+ return value;
45
+ if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {
46
+ return String(value);
47
+ }
48
+ if (value instanceof Error)
49
+ return value.message;
50
+ return JSON.stringify(value, safeReplacer());
51
+ }
52
+ catch {
53
+ return '[Unserializable]';
54
+ }
55
+ }
56
+ /**
57
+ * JSON.stringify replacer that guards against circular references and
58
+ * non-serializable values. 防止循环引用和不可序列化值的 JSON.stringify 替换函数。
59
+ */
60
+ function safeReplacer() {
61
+ const seen = new WeakSet();
62
+ return (_key, value) => {
63
+ if (typeof value === 'object' && value !== null) {
64
+ if (seen.has(value))
65
+ return '[Circular]';
66
+ seen.add(value);
67
+ }
68
+ if (typeof value === 'function')
69
+ return '[Function]';
70
+ if (typeof value === 'symbol')
71
+ return value.toString();
72
+ if (typeof value === 'bigint')
73
+ return `BigInt(${value})`;
74
+ if (value === undefined)
75
+ return '[Undefined]';
76
+ return value;
77
+ };
78
+ }
79
+ /**
80
+ * Safely serialize an unknown value to a JSON-compatible representation.
81
+ * 将未知值安全序列化为 JSON 兼容的表示。
82
+ */
83
+ function safeSerialize(value) {
84
+ if (value === null || value === undefined)
85
+ return value;
86
+ if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
87
+ return value;
88
+ }
89
+ try {
90
+ return JSON.parse(JSON.stringify(value, safeReplacer()));
91
+ }
92
+ catch {
93
+ return safeToString(value);
94
+ }
95
+ }
96
+ /**
97
+ * Extract a stack trace if available.
98
+ * 提取可用的调用栈。
99
+ */
100
+ function extractStack(data) {
101
+ const err = data.find((a) => a instanceof Error);
102
+ if (err?.stack)
103
+ return err.stack;
104
+ try {
105
+ return new Error('LoggerCore: stack capture').stack?.replace(/^Error: LoggerCore: stack capture\n/, '') ?? undefined;
106
+ }
107
+ catch {
108
+ return undefined;
109
+ }
110
+ }
111
+ /* ------------------------------------------------------------------ */
112
+ /* Browser env helpers */
113
+ /* ------------------------------------------------------------------ */
114
+ function currentUrl() {
115
+ try {
116
+ return typeof location === 'undefined' ? '' : location.href;
117
+ }
118
+ catch {
119
+ return '';
120
+ }
121
+ }
122
+ function userAgent() {
123
+ try {
124
+ return typeof navigator === 'undefined' ? '' : navigator.userAgent;
125
+ }
126
+ catch {
127
+ return '';
128
+ }
129
+ }
130
+ /* ------------------------------------------------------------------ */
131
+ /* Entry factory */
132
+ /* ------------------------------------------------------------------ */
133
+ function createEntry(level, message, data, tags) {
134
+ return {
135
+ id: generateId(),
136
+ timestamp: Date.now(),
137
+ level,
138
+ levelLabel: LOG_LEVEL_LABEL[level] ?? 'UNKNOWN',
139
+ message: message || (LOG_LEVEL_LABEL[level] ?? ''),
140
+ data,
141
+ url: currentUrl(),
142
+ ua: userAgent(),
143
+ stack: level >= LogLevel.ERROR ? extractStack(data) : undefined,
144
+ tags,
145
+ };
146
+ }
147
+ /* ------------------------------------------------------------------ */
148
+ /* LoggerCore */
149
+ /* ------------------------------------------------------------------ */
150
+ /**
151
+ * Core logger that intercepts `console` calls, captures global errors,
152
+ * aithe-* component events (via `emitAitheEvent`), and optionally reports
153
+ * to a remote endpoint.
154
+ * Hijacks console and starts error capture immediately on construction.
155
+ *
156
+ * 核心日志器:拦截 console 调用、捕获全局错误、aithe-* 组件事件(通过 `emitAitheEvent`),并可远程上报。
157
+ * 构造时即劫持 console 并开始错误捕获。
158
+ *
159
+ * @example
160
+ * ```ts
161
+ * import logger from '../logger';
162
+ * logger.setMinLevel(LogLevel.WARN);
163
+ * logger.setReporter({ url: '/log', levelThreshold: LogLevel.ERROR });
164
+ * logger.info('Component mounted'); // filtered by minLevel
165
+ * logger.error('Failed to load', new Error()); // stored & reported
166
+ * ```
167
+ */
168
+ export class LoggerCore {
169
+ /* ---- Construction ---- */
170
+ /**
171
+ * Create a logger instance. Normally import the default singleton from `@core/logger`.
172
+ * 创建日志器实例。通常从 `@core/logger` 导入默认单例即可。
173
+ *
174
+ * @example
175
+ * ```ts
176
+ * // Use the default singleton. 使用默认单例。
177
+ * import logger from '../logger';
178
+ *
179
+ * // Or create an isolated instance for testing. 或为测试创建独立实例。
180
+ * const testLogger = new LoggerCore({ minLevel: LogLevel.ERROR });
181
+ * ```
182
+ */
183
+ constructor(config) {
184
+ /* ---- Private state ---- */
185
+ this._entries = [];
186
+ this._listeners = new Set();
187
+ this._clearListeners = new Set();
188
+ this._originalConsole = null;
189
+ this._hijacked = false;
190
+ /* Remote reporting */
191
+ this._reportBuffer = [];
192
+ this._reportTimer = null;
193
+ /* Global error capture */
194
+ this._globalErrorHandler = null;
195
+ this._rejectionHandler = null;
196
+ this._config = { ...DEFAULT_LOG_CONFIG, ...config };
197
+ this.hijack();
198
+ this.startGlobalErrorCapture();
199
+ }
200
+ /* ---- Public accessors ---- */
201
+ /** All recorded entries. 所有已记录的日志条目。 */
202
+ get entries() {
203
+ return this._entries;
204
+ }
205
+ /** Whether console methods are currently hijacked. 当前是否已劫持 console 方法。 */
206
+ get isHijacked() {
207
+ return this._hijacked;
208
+ }
209
+ /** Current configuration (read-only reference). 当前配置(只读引用)。 */
210
+ get config() {
211
+ return this._config;
212
+ }
213
+ /* ---- Configuration ---- */
214
+ /**
215
+ * Enable logging. `addEntry()` will start recording and notifying listeners.
216
+ * 启用日志记录。`addEntry()` 将开始记录并通知监听器。
217
+ */
218
+ enable() {
219
+ this._config.enabled = true;
220
+ }
221
+ /**
222
+ * Disable logging. `addEntry()` returns early — console output still works.
223
+ * Use this to eliminate per-call overhead in production / high-frequency loops.
224
+ * 禁用日志记录。`addEntry()` 直接返回 — console 输出不受影响。
225
+ * 用于生产环境或高频循环中消除每次调用的开销。
226
+ */
227
+ disable() {
228
+ this._config.enabled = false;
229
+ }
230
+ /** Whether logging is currently enabled. 当前是否已启用日志记录。 */
231
+ get isEnabled() {
232
+ return this._config.enabled;
233
+ }
234
+ /**
235
+ * Apply partial configuration overrides. Only provided fields are updated.
236
+ * 应用部分配置覆盖。仅更新提供的字段。
237
+ *
238
+ * @param config - Partial configuration overrides. 配置覆盖项。
239
+ */
240
+ applyConfig(config) {
241
+ if (config.enabled !== undefined) {
242
+ this._config.enabled = config.enabled;
243
+ }
244
+ if (config.reporter !== undefined) {
245
+ this._config.reporter = config.reporter;
246
+ }
247
+ if (config.minLevel !== undefined) {
248
+ this._config.minLevel = config.minLevel;
249
+ }
250
+ if (config.maxEntries !== undefined) {
251
+ this.setMaxEntries(config.maxEntries);
252
+ }
253
+ }
254
+ /**
255
+ * Update the minimum log level. Entries below this level will not be stored.
256
+ * 更新最低日志级别。低于此级别的条目将不会被存储。
257
+ */
258
+ setMinLevel(level) {
259
+ this._config.minLevel = level;
260
+ }
261
+ /**
262
+ * Set the maximum number of entries retained in memory.
263
+ * Existing entries will be trimmed if necessary.
264
+ * 设置内存中保留的最大条目数。如有必要,现有条目将被修剪。
265
+ */
266
+ setMaxEntries(max) {
267
+ this._config.maxEntries = max;
268
+ if (this._entries.length > max) {
269
+ this._entries = this._entries.slice(-max);
270
+ }
271
+ }
272
+ /**
273
+ * Configure or remove the remote reporter.
274
+ * 配置或移除远程上报器。
275
+ *
276
+ * @param config - Reporter config, or `undefined` to disable reporting. 上报配置,传 undefined 禁用上报。
277
+ */
278
+ setReporter(config) {
279
+ if (config === undefined) {
280
+ delete this._config.reporter;
281
+ }
282
+ else {
283
+ this._config.reporter = config;
284
+ }
285
+ }
286
+ /**
287
+ * Restore original console methods and stop all listeners.
288
+ * 恢复原始 console 方法并停止所有监听器。
289
+ */
290
+ restore() {
291
+ if (!this._hijacked || !this._originalConsole)
292
+ return;
293
+ // eslint-disable-next-line no-console
294
+ console.log = this._originalConsole.log;
295
+ // eslint-disable-next-line no-console
296
+ console.info = this._originalConsole.info;
297
+ // eslint-disable-next-line no-console
298
+ console.warn = this._originalConsole.warn;
299
+ // eslint-disable-next-line no-console
300
+ console.error = this._originalConsole.error;
301
+ this._originalConsole = null;
302
+ this._hijacked = false;
303
+ this.stopGlobalErrorCapture();
304
+ }
305
+ /**
306
+ * Fully destroy the logger: restore console, flush reports, clear state.
307
+ *
308
+ * 彻底销毁日志器:恢复 console、刷新上报、清空状态。
309
+ */
310
+ destroy() {
311
+ this.restore();
312
+ this._flushReport();
313
+ this._listeners.clear();
314
+ this._clearListeners.clear();
315
+ this._entries = [];
316
+ }
317
+ /* ---- Console hijacking ---- */
318
+ /**
319
+ * Intercept native console methods. 劫持原生 console 方法。
320
+ */
321
+ hijack() {
322
+ if (this._hijacked)
323
+ return;
324
+ this._originalConsole = {
325
+ log: console.log.bind(console), // eslint-disable-line no-console
326
+ info: console.info.bind(console), // eslint-disable-line no-console
327
+ warn: console.warn.bind(console), // eslint-disable-line no-console
328
+ error: console.error.bind(console), // eslint-disable-line no-console
329
+ };
330
+ for (const method of ['log', 'info', 'warn', 'error']) {
331
+ const original = this._originalConsole[method];
332
+ const level = CONSOLE_LEVEL_MAP[method];
333
+ this._overrideConsoleMethod(method, original, level);
334
+ }
335
+ this._hijacked = true;
336
+ }
337
+ /**
338
+ * Override a single console method to forward calls to the logger.
339
+ * 覆盖单个 console 方法,将调用转发到日志器。
340
+ */
341
+ _overrideConsoleMethod(method, original, level) {
342
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
343
+ console[method] = (...args) => {
344
+ original(...args);
345
+ this.addEntry(level, args);
346
+ };
347
+ }
348
+ /* ---- Log entry management ---- */
349
+ /**
350
+ * Add a log entry programmatically. Used internally and exposed for direct calls.
351
+ * 以编程方式添加日志条目。内部使用,同时暴露供直接调用。
352
+ *
353
+ * @param level - Severity level. 严重级别。
354
+ * @param args - Arbitrary arguments. 任意参数。
355
+ * @param tags - Optional context tags. 可选的上下文标签。
356
+ */
357
+ addEntry(level, args, tags) {
358
+ // args[0] → message, args[1..] → data
359
+ const message = args.length > 0 ? firstArgToString(args[0]) : '';
360
+ const data = args.slice(1);
361
+ // Bail early when globally disabled — the cheapest path possible.
362
+ if (!this._config.enabled) {
363
+ return {
364
+ id: generateId(),
365
+ timestamp: Date.now(),
366
+ level,
367
+ levelLabel: LOG_LEVEL_LABEL[level] ?? 'UNKNOWN',
368
+ message,
369
+ data,
370
+ url: '',
371
+ ua: '',
372
+ };
373
+ }
374
+ // Respect minLevel filter
375
+ if (level < this._config.minLevel) {
376
+ return createEntry(level, message, data, tags);
377
+ }
378
+ const entry = createEntry(level, message, data, tags);
379
+ this._entries.push(entry);
380
+ // Trim to max capacity
381
+ if (this._entries.length > this._config.maxEntries) {
382
+ this._entries = this._entries.slice(-this._config.maxEntries);
383
+ }
384
+ this._notifyListeners(entry);
385
+ this._enqueueReport(entry);
386
+ return entry;
387
+ }
388
+ /**
389
+ * Convenience: log at a given level. 便捷方法:以指定级别记录日志。
390
+ */
391
+ log(level, ...args) {
392
+ return this.addEntry(level, args);
393
+ }
394
+ /** Log at DEBUG level. 以 DEBUG 级别记录。 */
395
+ debug(...args) {
396
+ return this.log(LogLevel.DEBUG, ...args);
397
+ }
398
+ /** Log at INFO level. 以 INFO 级别记录。 */
399
+ info(...args) {
400
+ return this.log(LogLevel.INFO, ...args);
401
+ }
402
+ /** Log at WARN level. 以 WARN 级别记录。 */
403
+ warn(...args) {
404
+ return this.log(LogLevel.WARN, ...args);
405
+ }
406
+ /** Log at ERROR level. 以 ERROR 级别记录。 */
407
+ error(...args) {
408
+ return this.log(LogLevel.ERROR, ...args);
409
+ }
410
+ /** Log at FATAL level. 以 FATAL 级别记录。 */
411
+ fatal(...args) {
412
+ return this.log(LogLevel.FATAL, ...args);
413
+ }
414
+ /**
415
+ * Retrieve entries filtered by minimum level. 按最低级别过滤获取日志条目。
416
+ *
417
+ * @param minLevel - Minimum log level threshold. 最低日志级别阈值。
418
+ * @returns Filtered list of entries. 过滤后的条目列表。
419
+ */
420
+ getEntries(minLevel) {
421
+ if (minLevel === undefined)
422
+ return this._entries;
423
+ return this._entries.filter((e) => e.level >= minLevel);
424
+ }
425
+ /**
426
+ * Clear all stored entries and notify clear listeners.
427
+ * 清空所有存储的条目并通知清空监听器。
428
+ */
429
+ clear() {
430
+ const snapshot = this._entries;
431
+ this._entries = [];
432
+ this._notifyClearListeners(snapshot);
433
+ }
434
+ /* ---- Subscription ---- */
435
+ /**
436
+ * Subscribe to new log entries. Returns an unsubscribe function.
437
+ * 订阅新日志条目。返回取消订阅函数。
438
+ *
439
+ * @param listener - Callback invoked on every new entry. 每条新日志时触发的回调。
440
+ * @returns Unsubscribe function. 取消订阅函数。
441
+ */
442
+ subscribe(listener) {
443
+ this._listeners.add(listener);
444
+ return () => {
445
+ this._listeners.delete(listener);
446
+ };
447
+ }
448
+ /**
449
+ * Subscribe to log clear events. 订阅日志清空事件。
450
+ *
451
+ * @param listener - Callback invoked when entries are cleared. 条目清空时触发的回调。
452
+ * @returns Unsubscribe function. 取消订阅函数。
453
+ */
454
+ onClear(listener) {
455
+ this._clearListeners.add(listener);
456
+ return () => {
457
+ this._clearListeners.delete(listener);
458
+ };
459
+ }
460
+ _notifyListeners(entry) {
461
+ const entries = this._entries;
462
+ for (const listener of this._listeners) {
463
+ try {
464
+ listener(entry, entries);
465
+ }
466
+ catch {
467
+ // Swallow listener errors to prevent cascading failures.
468
+ // 吞没监听器错误以防止连锁故障。
469
+ }
470
+ }
471
+ }
472
+ _notifyClearListeners(entriesBeforeClear) {
473
+ for (const listener of this._clearListeners) {
474
+ try {
475
+ listener(entriesBeforeClear);
476
+ }
477
+ catch {
478
+ // Swallow
479
+ }
480
+ }
481
+ }
482
+ /* ---- Global error capture ---- */
483
+ /**
484
+ * Start capturing uncaught errors and unhandled promise rejections.
485
+ * 开始捕获未捕获的错误和未处理的 Promise 拒绝。
486
+ */
487
+ startGlobalErrorCapture() {
488
+ if (this._globalErrorHandler)
489
+ return;
490
+ this._globalErrorHandler = (ev) => {
491
+ this.addEntry(LogLevel.ERROR, [
492
+ `[Uncaught] ${ev.message}`,
493
+ {
494
+ filename: ev.filename,
495
+ lineno: ev.lineno,
496
+ colno: ev.colno,
497
+ error: ev.error,
498
+ },
499
+ ]);
500
+ };
501
+ this._rejectionHandler = (ev) => {
502
+ this.addEntry(LogLevel.ERROR, [`[UnhandledRejection] ${ev.reason}`, { reason: ev.reason }]);
503
+ };
504
+ globalThis.addEventListener('error', this._globalErrorHandler);
505
+ globalThis.addEventListener('unhandledrejection', this._rejectionHandler);
506
+ }
507
+ /**
508
+ * Stop global error listeners. 停止全局错误监听器。
509
+ */
510
+ stopGlobalErrorCapture() {
511
+ if (this._globalErrorHandler) {
512
+ globalThis.removeEventListener('error', this._globalErrorHandler);
513
+ this._globalErrorHandler = null;
514
+ }
515
+ if (this._rejectionHandler) {
516
+ globalThis.removeEventListener('unhandledrejection', this._rejectionHandler);
517
+ this._rejectionHandler = null;
518
+ }
519
+ }
520
+ /* ---- Remote reporting ---- */
521
+ _enqueueReport(entry) {
522
+ const reporter = this._config.reporter;
523
+ if (!reporter)
524
+ return;
525
+ if (entry.level < reporter.levelThreshold)
526
+ return;
527
+ this._reportBuffer.push(entry);
528
+ const batchSize = reporter.batchSize ?? 10;
529
+ if (this._reportBuffer.length >= batchSize) {
530
+ this._flushReport();
531
+ return;
532
+ }
533
+ if (!this._reportTimer) {
534
+ const debounceMs = reporter.debounceMs ?? 3000;
535
+ this._reportTimer = setTimeout(() => this._flushReport(), debounceMs);
536
+ }
537
+ }
538
+ _flushReport() {
539
+ if (this._reportTimer) {
540
+ clearTimeout(this._reportTimer);
541
+ this._reportTimer = null;
542
+ }
543
+ const reporter = this._config.reporter;
544
+ if (!reporter || this._reportBuffer.length === 0)
545
+ return;
546
+ const batch = this._reportBuffer.splice(0);
547
+ this._sendReport(batch, reporter);
548
+ }
549
+ _sendReport(batch, reporter) {
550
+ let payload = batch.map((e) => ({
551
+ id: e.id,
552
+ timestamp: e.timestamp,
553
+ level: e.levelLabel,
554
+ message: e.message,
555
+ url: e.url,
556
+ ua: e.ua,
557
+ stack: e.stack,
558
+ data: e.data.length === 1 ? safeSerialize(e.data[0]) : safeSerialize(e.data),
559
+ tags: e.tags,
560
+ }));
561
+ if (reporter.beforeSend) {
562
+ const result = reporter.beforeSend(payload);
563
+ if (result === false)
564
+ return;
565
+ if (Array.isArray(result))
566
+ payload = result;
567
+ }
568
+ try {
569
+ fetch(reporter.url, {
570
+ method: 'POST',
571
+ headers: {
572
+ 'Content-Type': 'application/json',
573
+ ...reporter.headers,
574
+ },
575
+ body: JSON.stringify(payload),
576
+ keepalive: true,
577
+ }).catch(() => {
578
+ // Swallow network errors. 吞没网络错误。
579
+ });
580
+ }
581
+ catch {
582
+ // Swallow
583
+ }
584
+ }
585
+ /* ---- Utility: formatted console output ---- */
586
+ /**
587
+ * Pretty-print recent entries to the original console with colored level labels.
588
+ * 将最近的日志条目格式化输出到原始控制台,带彩色级别标签。
589
+ *
590
+ * @param max - Max entries to print (default: 50). 最大打印条目数(默认 50)。
591
+ */
592
+ print(max = 50) {
593
+ const original = this._originalConsole;
594
+ const out = original?.log ?? console.log; // eslint-disable-line no-console
595
+ const levelStyle = {
596
+ DEBUG: 'color: #8899aa',
597
+ INFO: 'color: #3399ee',
598
+ WARN: 'color: #ee9900; font-weight: bold',
599
+ ERROR: 'color: #ee3333; font-weight: bold',
600
+ FATAL: 'color: #ffffff; background: #ee3333; font-weight: bold',
601
+ };
602
+ const slice = this._entries.slice(-max);
603
+ for (const entry of slice) {
604
+ const label = entry.levelLabel;
605
+ const style = levelStyle[label] ?? '';
606
+ const time = new Date(entry.timestamp).toISOString();
607
+ out(`%c[${label}]%c ${time} %c${entry.message}`, style, '', 'color: inherit');
608
+ }
609
+ }
610
+ /**
611
+ * Export all entries as JSON-safe array. 将所有条目导出为 JSON 安全数组。
612
+ */
613
+ serialize() {
614
+ return this._entries.map((e) => ({
615
+ id: e.id,
616
+ timestamp: e.timestamp,
617
+ level: e.levelLabel,
618
+ message: e.message,
619
+ url: e.url,
620
+ ua: e.ua,
621
+ stack: e.stack,
622
+ data: safeSerialize(e.data),
623
+ tags: e.tags,
624
+ }));
625
+ }
626
+ }
@@ -0,0 +1,10 @@
1
+ export { LoggerCore } from './LoggerCore';
2
+ export { LogLevel, LOG_LEVEL_LABEL, DEFAULT_LOG_CONFIG } from './types';
3
+ import { LoggerCore } from './LoggerCore';
4
+ /**
5
+ * Default singleton logger instance. Console hijacking and error capture start
6
+ * immediately on module load. Customise via `applyConfig()` / `setMinLevel()` etc.
7
+ * 默认单例日志器实例。模块加载时即开始劫持 console 与错误捕获。
8
+ * 通过 `applyConfig()` / `setMinLevel()` 等方法定制配置。
9
+ */
10
+ export const logger = new LoggerCore();
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Log severity levels. 日志严重级别。
3
+ */
4
+ export var LogLevel;
5
+ (function (LogLevel) {
6
+ LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
7
+ LogLevel[LogLevel["INFO"] = 1] = "INFO";
8
+ LogLevel[LogLevel["WARN"] = 2] = "WARN";
9
+ LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
10
+ LogLevel[LogLevel["FATAL"] = 4] = "FATAL";
11
+ })(LogLevel || (LogLevel = {}));
12
+ /**
13
+ * Human-readable label for each log level. 每个日志级别对应的可读标签。
14
+ */
15
+ export const LOG_LEVEL_LABEL = {
16
+ [LogLevel.DEBUG]: 'DEBUG',
17
+ [LogLevel.INFO]: 'INFO',
18
+ [LogLevel.WARN]: 'WARN',
19
+ [LogLevel.ERROR]: 'ERROR',
20
+ [LogLevel.FATAL]: 'FATAL',
21
+ };
22
+ /**
23
+ * Default log configuration. 默认日志配置。
24
+ */
25
+ export const DEFAULT_LOG_CONFIG = {
26
+ enabled: true,
27
+ maxEntries: 500,
28
+ minLevel: LogLevel.DEBUG,
29
+ };
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Markdown 解析模块
3
+ *
4
+ * 提供基于插件架构的 Markdown → HTML 转换能力。
5
+ *
6
+ * 使用方式:
7
+ * ```ts
8
+ * import { SimpleMarkdownParser, FullMarkdownParser, plugins } from '../markdown';
9
+ *
10
+ * const simple = new SimpleMarkdownParser();
11
+ * simple.parse('**bold**'); // '<strong>bold</strong>'
12
+ *
13
+ * const full = new FullMarkdownParser();
14
+ * full.parse('# Hello\n\n> quote'); // '<h1>Hello</h1><blockquote>quote</blockquote>'
15
+ * ```
16
+ *
17
+ * @module
18
+ */
19
+ export { MarkdownParser, SimpleMarkdownParser, FullMarkdownParser } from './parser';
20
+ export * as plugins from './plugins';
@@ -34,6 +34,8 @@ export declare class MarkdownParser {
34
34
  * 块级解析:从 lines[start..end) 解析块级节点
35
35
  */
36
36
  protected parseBlocks(lines: string[], start: number, end: number): AstNode[];
37
+ /** 递归遍历 AST,将 raw-inline 节点解析为行内 AST 节点 */
38
+ private _resolveRawInlines;
37
39
  private _matchBlockPlugin;
38
40
  private _collectParagraph;
39
41
  private _isBlockStart;