@flanksource/clicky-ui 0.2.13 → 0.2.15

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 (466) hide show
  1. package/dist/chat.cjs +20 -0
  2. package/dist/chat.cjs.map +1 -0
  3. package/dist/chat.d.ts +2 -0
  4. package/dist/chat.d.ts.map +1 -0
  5. package/dist/chat.js +20 -0
  6. package/dist/chat.js.map +1 -0
  7. package/dist/components/Combobox.cjs +5 -3
  8. package/dist/components/Combobox.cjs.map +1 -1
  9. package/dist/components/Combobox.d.ts +2 -0
  10. package/dist/components/Combobox.d.ts.map +1 -1
  11. package/dist/components/Combobox.js +5 -3
  12. package/dist/components/Combobox.js.map +1 -1
  13. package/dist/components/DateTimePicker.cjs +3 -1
  14. package/dist/components/DateTimePicker.cjs.map +1 -1
  15. package/dist/components/DateTimePicker.d.ts +5 -1
  16. package/dist/components/DateTimePicker.d.ts.map +1 -1
  17. package/dist/components/DateTimePicker.js +3 -1
  18. package/dist/components/DateTimePicker.js.map +1 -1
  19. package/dist/components/FilterBar.cjs +8 -41
  20. package/dist/components/FilterBar.cjs.map +1 -1
  21. package/dist/components/FilterBar.d.ts +0 -2
  22. package/dist/components/FilterBar.d.ts.map +1 -1
  23. package/dist/components/FilterBar.js +3 -36
  24. package/dist/components/FilterBar.js.map +1 -1
  25. package/dist/components/FormatOptionsDropdown.cjs +2 -18
  26. package/dist/components/FormatOptionsDropdown.cjs.map +1 -1
  27. package/dist/components/FormatOptionsDropdown.d.ts +1 -17
  28. package/dist/components/FormatOptionsDropdown.d.ts.map +1 -1
  29. package/dist/components/FormatOptionsDropdown.js +1 -17
  30. package/dist/components/FormatOptionsDropdown.js.map +1 -1
  31. package/dist/components/JsonSchemaForm.cjs +128 -12
  32. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  33. package/dist/components/JsonSchemaForm.d.ts +1 -1
  34. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  35. package/dist/components/JsonSchemaForm.js +131 -15
  36. package/dist/components/JsonSchemaForm.js.map +1 -1
  37. package/dist/components/SecretKeySelector.cjs +1 -2
  38. package/dist/components/SecretKeySelector.cjs.map +1 -1
  39. package/dist/components/SecretKeySelector.d.ts +5 -3
  40. package/dist/components/SecretKeySelector.d.ts.map +1 -1
  41. package/dist/components/SecretKeySelector.js +2 -3
  42. package/dist/components/SecretKeySelector.js.map +1 -1
  43. package/dist/components/TreePickerField.cjs +137 -0
  44. package/dist/components/TreePickerField.cjs.map +1 -0
  45. package/dist/components/TreePickerField.d.ts +30 -0
  46. package/dist/components/TreePickerField.d.ts.map +1 -0
  47. package/dist/components/TreePickerField.js +137 -0
  48. package/dist/components/TreePickerField.js.map +1 -0
  49. package/dist/components/WorkloadPicker.cjs +6 -81
  50. package/dist/components/WorkloadPicker.cjs.map +1 -1
  51. package/dist/components/WorkloadPicker.d.ts +1 -20
  52. package/dist/components/WorkloadPicker.d.ts.map +1 -1
  53. package/dist/components/WorkloadPicker.js +3 -78
  54. package/dist/components/WorkloadPicker.js.map +1 -1
  55. package/dist/components/button-variants.cjs +30 -0
  56. package/dist/components/button-variants.cjs.map +1 -0
  57. package/dist/components/button-variants.d.ts +5 -0
  58. package/dist/components/button-variants.d.ts.map +1 -0
  59. package/dist/components/button-variants.js +30 -0
  60. package/dist/components/button-variants.js.map +1 -0
  61. package/dist/components/button.cjs +11 -82
  62. package/dist/components/button.cjs.map +1 -1
  63. package/dist/components/button.d.ts +1 -5
  64. package/dist/components/button.d.ts.map +1 -1
  65. package/dist/components/button.js +5 -76
  66. package/dist/components/button.js.map +1 -1
  67. package/dist/components/filter-bar-utils.cjs +37 -0
  68. package/dist/components/filter-bar-utils.cjs.map +1 -0
  69. package/dist/components/filter-bar-utils.d.ts +4 -0
  70. package/dist/components/filter-bar-utils.d.ts.map +1 -0
  71. package/dist/components/filter-bar-utils.js +37 -0
  72. package/dist/components/filter-bar-utils.js.map +1 -0
  73. package/dist/components/format-options.cjs +20 -0
  74. package/dist/components/format-options.cjs.map +1 -0
  75. package/dist/components/format-options.d.ts +18 -0
  76. package/dist/components/format-options.d.ts.map +1 -0
  77. package/dist/components/format-options.js +20 -0
  78. package/dist/components/format-options.js.map +1 -0
  79. package/dist/components/json-schema-form-array.cjs +13 -17
  80. package/dist/components/json-schema-form-array.cjs.map +1 -1
  81. package/dist/components/json-schema-form-array.d.ts +1 -2
  82. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  83. package/dist/components/json-schema-form-array.js +3 -7
  84. package/dist/components/json-schema-form-array.js.map +1 -1
  85. package/dist/components/json-schema-form-fields.cjs +90 -232
  86. package/dist/components/json-schema-form-fields.cjs.map +1 -1
  87. package/dist/components/json-schema-form-fields.d.ts +51 -6
  88. package/dist/components/json-schema-form-fields.d.ts.map +1 -1
  89. package/dist/components/json-schema-form-fields.js +82 -224
  90. package/dist/components/json-schema-form-fields.js.map +1 -1
  91. package/dist/components/json-schema-form-object.cjs +149 -0
  92. package/dist/components/json-schema-form-object.cjs.map +1 -0
  93. package/dist/components/json-schema-form-object.d.ts +10 -0
  94. package/dist/components/json-schema-form-object.d.ts.map +1 -0
  95. package/dist/components/json-schema-form-object.js +149 -0
  96. package/dist/components/json-schema-form-object.js.map +1 -0
  97. package/dist/components/json-schema-form-preferences.cjs +41 -0
  98. package/dist/components/json-schema-form-preferences.cjs.map +1 -0
  99. package/dist/components/json-schema-form-preferences.d.ts +10 -0
  100. package/dist/components/json-schema-form-preferences.d.ts.map +1 -0
  101. package/dist/components/json-schema-form-preferences.js +41 -0
  102. package/dist/components/json-schema-form-preferences.js.map +1 -0
  103. package/dist/components/json-schema-form-render.cjs +43 -72
  104. package/dist/components/json-schema-form-render.cjs.map +1 -1
  105. package/dist/components/json-schema-form-render.d.ts +5 -33
  106. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  107. package/dist/components/json-schema-form-render.js +41 -70
  108. package/dist/components/json-schema-form-render.js.map +1 -1
  109. package/dist/components/json-schema-form-resolve.cjs +9 -1
  110. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  111. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  112. package/dist/components/json-schema-form-resolve.js +9 -1
  113. package/dist/components/json-schema-form-resolve.js.map +1 -1
  114. package/dist/components/json-schema-form-types.d.ts +58 -1
  115. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  116. package/dist/components/json-schema-form-utils.cjs +96 -0
  117. package/dist/components/json-schema-form-utils.cjs.map +1 -0
  118. package/dist/components/json-schema-form-utils.d.ts +17 -0
  119. package/dist/components/json-schema-form-utils.d.ts.map +1 -0
  120. package/dist/components/json-schema-form-utils.js +96 -0
  121. package/dist/components/json-schema-form-utils.js.map +1 -0
  122. package/dist/components/loading.cjs +109 -0
  123. package/dist/components/loading.cjs.map +1 -0
  124. package/dist/components/loading.d.ts +27 -0
  125. package/dist/components/loading.d.ts.map +1 -0
  126. package/dist/components/loading.js +109 -0
  127. package/dist/components/loading.js.map +1 -0
  128. package/dist/components/workload-picker-utils.cjs +88 -0
  129. package/dist/components/workload-picker-utils.cjs.map +1 -0
  130. package/dist/components/workload-picker-utils.d.ts +34 -0
  131. package/dist/components/workload-picker-utils.d.ts.map +1 -0
  132. package/dist/components/workload-picker-utils.js +88 -0
  133. package/dist/components/workload-picker-utils.js.map +1 -0
  134. package/dist/components.cjs +18 -6
  135. package/dist/components.cjs.map +1 -1
  136. package/dist/components.d.ts +10 -3
  137. package/dist/components.d.ts.map +1 -1
  138. package/dist/components.js +16 -4
  139. package/dist/components.js.map +1 -1
  140. package/dist/data/Badge.cjs +11 -91
  141. package/dist/data/Badge.cjs.map +1 -1
  142. package/dist/data/Badge.d.ts +1 -5
  143. package/dist/data/Badge.d.ts.map +1 -1
  144. package/dist/data/Badge.js +11 -91
  145. package/dist/data/Badge.js.map +1 -1
  146. package/dist/data/Clicky.cjs +4 -3
  147. package/dist/data/Clicky.cjs.map +1 -1
  148. package/dist/data/Clicky.d.ts.map +1 -1
  149. package/dist/data/Clicky.js +4 -3
  150. package/dist/data/Clicky.js.map +1 -1
  151. package/dist/data/DataTable.cjs +161 -156
  152. package/dist/data/DataTable.cjs.map +1 -1
  153. package/dist/data/DataTable.d.ts +25 -4
  154. package/dist/data/DataTable.d.ts.map +1 -1
  155. package/dist/data/DataTable.js +140 -135
  156. package/dist/data/DataTable.js.map +1 -1
  157. package/dist/data/FilterPill.cjs +3 -0
  158. package/dist/data/FilterPill.cjs.map +1 -1
  159. package/dist/data/FilterPill.d.ts.map +1 -1
  160. package/dist/data/FilterPill.js +3 -0
  161. package/dist/data/FilterPill.js.map +1 -1
  162. package/dist/data/Icon.cjs +7 -7
  163. package/dist/data/Icon.cjs.map +1 -1
  164. package/dist/data/Icon.js +7 -7
  165. package/dist/data/Icon.js.map +1 -1
  166. package/dist/data/LogDetails.cjs +5 -14
  167. package/dist/data/LogDetails.cjs.map +1 -1
  168. package/dist/data/LogDetails.d.ts +8 -4
  169. package/dist/data/LogDetails.d.ts.map +1 -1
  170. package/dist/data/LogDetails.js +4 -13
  171. package/dist/data/LogDetails.js.map +1 -1
  172. package/dist/data/LogsTable.cjs +6 -165
  173. package/dist/data/LogsTable.cjs.map +1 -1
  174. package/dist/data/LogsTable.d.ts +2 -15
  175. package/dist/data/LogsTable.d.ts.map +1 -1
  176. package/dist/data/LogsTable.js +6 -165
  177. package/dist/data/LogsTable.js.map +1 -1
  178. package/dist/data/TimeseriesCoreBars.cjs +8 -1
  179. package/dist/data/TimeseriesCoreBars.cjs.map +1 -1
  180. package/dist/data/TimeseriesCoreBars.d.ts.map +1 -1
  181. package/dist/data/TimeseriesCoreBars.js +8 -1
  182. package/dist/data/TimeseriesCoreBars.js.map +1 -1
  183. package/dist/data/TimeseriesPanel.axes.cjs.map +1 -1
  184. package/dist/data/TimeseriesPanel.axes.js.map +1 -1
  185. package/dist/data/TreeNode.cjs +13 -7
  186. package/dist/data/TreeNode.cjs.map +1 -1
  187. package/dist/data/TreeNode.d.ts.map +1 -1
  188. package/dist/data/TreeNode.js +13 -7
  189. package/dist/data/TreeNode.js.map +1 -1
  190. package/dist/data/badge-variants.cjs +85 -0
  191. package/dist/data/badge-variants.cjs.map +1 -0
  192. package/dist/data/badge-variants.d.ts +6 -0
  193. package/dist/data/badge-variants.d.ts.map +1 -0
  194. package/dist/data/badge-variants.js +85 -0
  195. package/dist/data/badge-variants.js.map +1 -0
  196. package/dist/data/cache-browser/CacheBrowser.cjs +59 -0
  197. package/dist/data/cache-browser/CacheBrowser.cjs.map +1 -0
  198. package/dist/data/cache-browser/CacheBrowser.d.ts +26 -0
  199. package/dist/data/cache-browser/CacheBrowser.d.ts.map +1 -0
  200. package/dist/data/cache-browser/CacheBrowser.js +59 -0
  201. package/dist/data/cache-browser/CacheBrowser.js.map +1 -0
  202. package/dist/data/cache-browser/CacheDetailPanel.cjs +193 -0
  203. package/dist/data/cache-browser/CacheDetailPanel.cjs.map +1 -0
  204. package/dist/data/cache-browser/CacheDetailPanel.d.ts +20 -0
  205. package/dist/data/cache-browser/CacheDetailPanel.d.ts.map +1 -0
  206. package/dist/data/cache-browser/CacheDetailPanel.js +193 -0
  207. package/dist/data/cache-browser/CacheDetailPanel.js.map +1 -0
  208. package/dist/data/cache-browser/CacheStatsOverview.cjs +126 -0
  209. package/dist/data/cache-browser/CacheStatsOverview.cjs.map +1 -0
  210. package/dist/data/cache-browser/CacheStatsOverview.d.ts +17 -0
  211. package/dist/data/cache-browser/CacheStatsOverview.d.ts.map +1 -0
  212. package/dist/data/cache-browser/CacheStatsOverview.js +126 -0
  213. package/dist/data/cache-browser/CacheStatsOverview.js.map +1 -0
  214. package/dist/data/cache-browser/CacheTree.cjs +189 -0
  215. package/dist/data/cache-browser/CacheTree.cjs.map +1 -0
  216. package/dist/data/cache-browser/CacheTree.d.ts +27 -0
  217. package/dist/data/cache-browser/CacheTree.d.ts.map +1 -0
  218. package/dist/data/cache-browser/CacheTree.js +189 -0
  219. package/dist/data/cache-browser/CacheTree.js.map +1 -0
  220. package/dist/data/cache-browser/CacheValue.cjs +86 -0
  221. package/dist/data/cache-browser/CacheValue.cjs.map +1 -0
  222. package/dist/data/cache-browser/CacheValue.d.ts +11 -0
  223. package/dist/data/cache-browser/CacheValue.d.ts.map +1 -0
  224. package/dist/data/cache-browser/CacheValue.js +86 -0
  225. package/dist/data/cache-browser/CacheValue.js.map +1 -0
  226. package/dist/data/cache-browser/adapter.cjs +52 -0
  227. package/dist/data/cache-browser/adapter.cjs.map +1 -0
  228. package/dist/data/cache-browser/adapter.d.ts +48 -0
  229. package/dist/data/cache-browser/adapter.d.ts.map +1 -0
  230. package/dist/data/cache-browser/adapter.js +52 -0
  231. package/dist/data/cache-browser/adapter.js.map +1 -0
  232. package/dist/data/cache-browser/api.cjs +42 -0
  233. package/dist/data/cache-browser/api.cjs.map +1 -0
  234. package/dist/data/cache-browser/api.d.ts +33 -0
  235. package/dist/data/cache-browser/api.d.ts.map +1 -0
  236. package/dist/data/cache-browser/api.js +42 -0
  237. package/dist/data/cache-browser/api.js.map +1 -0
  238. package/dist/data/cache-browser/index.d.ts +9 -0
  239. package/dist/data/cache-browser/index.d.ts.map +1 -0
  240. package/dist/data/cache-browser/types.cjs +7 -0
  241. package/dist/data/cache-browser/types.cjs.map +1 -0
  242. package/dist/data/cache-browser/types.d.ts +78 -0
  243. package/dist/data/cache-browser/types.d.ts.map +1 -0
  244. package/dist/data/cache-browser/types.js +7 -0
  245. package/dist/data/cache-browser/types.js.map +1 -0
  246. package/dist/data/cells/TagList.cjs +4 -101
  247. package/dist/data/cells/TagList.cjs.map +1 -1
  248. package/dist/data/cells/TagList.d.ts +1 -49
  249. package/dist/data/cells/TagList.d.ts.map +1 -1
  250. package/dist/data/cells/TagList.js +3 -100
  251. package/dist/data/cells/TagList.js.map +1 -1
  252. package/dist/data/cells/Timestamp.cjs +3 -192
  253. package/dist/data/cells/Timestamp.cjs.map +1 -1
  254. package/dist/data/cells/Timestamp.d.ts +1 -50
  255. package/dist/data/cells/Timestamp.d.ts.map +1 -1
  256. package/dist/data/cells/Timestamp.js +2 -191
  257. package/dist/data/cells/Timestamp.js.map +1 -1
  258. package/dist/data/cells/tag-utils.cjs +103 -0
  259. package/dist/data/cells/tag-utils.cjs.map +1 -0
  260. package/dist/data/cells/tag-utils.d.ts +51 -0
  261. package/dist/data/cells/tag-utils.d.ts.map +1 -0
  262. package/dist/data/cells/tag-utils.js +103 -0
  263. package/dist/data/cells/tag-utils.js.map +1 -0
  264. package/dist/data/cells/timestamp-format.cjs +193 -0
  265. package/dist/data/cells/timestamp-format.cjs.map +1 -0
  266. package/dist/data/cells/timestamp-format.d.ts +51 -0
  267. package/dist/data/cells/timestamp-format.d.ts.map +1 -0
  268. package/dist/data/cells/timestamp-format.js +193 -0
  269. package/dist/data/cells/timestamp-format.js.map +1 -0
  270. package/dist/data/chat/Chat.cjs +48 -0
  271. package/dist/data/chat/Chat.cjs.map +1 -0
  272. package/dist/data/chat/Chat.d.ts +26 -0
  273. package/dist/data/chat/Chat.d.ts.map +1 -0
  274. package/dist/data/chat/Chat.fixtures.d.ts +6 -0
  275. package/dist/data/chat/Chat.fixtures.d.ts.map +1 -0
  276. package/dist/data/chat/Chat.js +48 -0
  277. package/dist/data/chat/Chat.js.map +1 -0
  278. package/dist/data/chat/Conversation.cjs +34 -0
  279. package/dist/data/chat/Conversation.cjs.map +1 -0
  280. package/dist/data/chat/Conversation.d.ts +11 -0
  281. package/dist/data/chat/Conversation.d.ts.map +1 -0
  282. package/dist/data/chat/Conversation.js +34 -0
  283. package/dist/data/chat/Conversation.js.map +1 -0
  284. package/dist/data/chat/Message.cjs +44 -0
  285. package/dist/data/chat/Message.cjs.map +1 -0
  286. package/dist/data/chat/Message.d.ts +10 -0
  287. package/dist/data/chat/Message.d.ts.map +1 -0
  288. package/dist/data/chat/Message.js +44 -0
  289. package/dist/data/chat/Message.js.map +1 -0
  290. package/dist/data/chat/PromptInput.cjs +61 -0
  291. package/dist/data/chat/PromptInput.cjs.map +1 -0
  292. package/dist/data/chat/PromptInput.d.ts +16 -0
  293. package/dist/data/chat/PromptInput.d.ts.map +1 -0
  294. package/dist/data/chat/PromptInput.js +61 -0
  295. package/dist/data/chat/PromptInput.js.map +1 -0
  296. package/dist/data/chat/ToolCall.cjs +92 -0
  297. package/dist/data/chat/ToolCall.cjs.map +1 -0
  298. package/dist/data/chat/ToolCall.d.ts +14 -0
  299. package/dist/data/chat/ToolCall.d.ts.map +1 -0
  300. package/dist/data/chat/ToolCall.js +92 -0
  301. package/dist/data/chat/ToolCall.js.map +1 -0
  302. package/dist/data/chat/clickyOperationsToTools.cjs +73 -0
  303. package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -0
  304. package/dist/data/chat/clickyOperationsToTools.d.ts +10 -0
  305. package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -0
  306. package/dist/data/chat/clickyOperationsToTools.js +73 -0
  307. package/dist/data/chat/clickyOperationsToTools.js.map +1 -0
  308. package/dist/data/chat/index.d.ts +8 -0
  309. package/dist/data/chat/index.d.ts.map +1 -0
  310. package/dist/data/chat/types.cjs +18 -0
  311. package/dist/data/chat/types.cjs.map +1 -0
  312. package/dist/data/chat/types.d.ts +41 -0
  313. package/dist/data/chat/types.d.ts.map +1 -0
  314. package/dist/data/chat/types.js +18 -0
  315. package/dist/data/chat/types.js.map +1 -0
  316. package/dist/data/data-table-utils.cjs +55 -0
  317. package/dist/data/data-table-utils.cjs.map +1 -0
  318. package/dist/data/data-table-utils.d.ts +24 -0
  319. package/dist/data/data-table-utils.d.ts.map +1 -0
  320. package/dist/data/data-table-utils.js +55 -0
  321. package/dist/data/data-table-utils.js.map +1 -0
  322. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs +2 -1
  323. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs.map +1 -1
  324. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts.map +1 -1
  325. package/dist/data/diagnostics/DiagnosticsDetailPanel.js +3 -2
  326. package/dist/data/diagnostics/DiagnosticsDetailPanel.js.map +1 -1
  327. package/dist/data/diagnostics/GoroutineCard.cjs +3 -22
  328. package/dist/data/diagnostics/GoroutineCard.cjs.map +1 -1
  329. package/dist/data/diagnostics/GoroutineCard.d.ts +0 -2
  330. package/dist/data/diagnostics/GoroutineCard.d.ts.map +1 -1
  331. package/dist/data/diagnostics/GoroutineCard.js +2 -21
  332. package/dist/data/diagnostics/GoroutineCard.js.map +1 -1
  333. package/dist/data/diagnostics/ThreadCard.cjs +3 -38
  334. package/dist/data/diagnostics/ThreadCard.cjs.map +1 -1
  335. package/dist/data/diagnostics/ThreadCard.d.ts +0 -2
  336. package/dist/data/diagnostics/ThreadCard.d.ts.map +1 -1
  337. package/dist/data/diagnostics/ThreadCard.js +2 -37
  338. package/dist/data/diagnostics/ThreadCard.js.map +1 -1
  339. package/dist/data/diagnostics/state-styles.cjs +59 -0
  340. package/dist/data/diagnostics/state-styles.cjs.map +1 -0
  341. package/dist/data/diagnostics/state-styles.d.ts +5 -0
  342. package/dist/data/diagnostics/state-styles.d.ts.map +1 -0
  343. package/dist/data/diagnostics/state-styles.js +59 -0
  344. package/dist/data/diagnostics/state-styles.js.map +1 -0
  345. package/dist/data/logs-normalize.cjs +166 -0
  346. package/dist/data/logs-normalize.cjs.map +1 -0
  347. package/dist/data/logs-normalize.d.ts +16 -0
  348. package/dist/data/logs-normalize.d.ts.map +1 -0
  349. package/dist/data/logs-normalize.js +166 -0
  350. package/dist/data/logs-normalize.js.map +1 -0
  351. package/dist/data/task-status.cjs +19 -19
  352. package/dist/data/task-status.cjs.map +1 -1
  353. package/dist/data/task-status.js +19 -19
  354. package/dist/data/task-status.js.map +1 -1
  355. package/dist/data/version-info.cjs +3 -3
  356. package/dist/data/version-info.js +3 -3
  357. package/dist/data.cjs +43 -18
  358. package/dist/data.cjs.map +1 -1
  359. package/dist/data.d.ts +11 -5
  360. package/dist/data.d.ts.map +1 -1
  361. package/dist/data.js +30 -5
  362. package/dist/data.js.map +1 -1
  363. package/dist/hooks/density-provider.cjs +38 -0
  364. package/dist/hooks/density-provider.cjs.map +1 -0
  365. package/dist/hooks/density-provider.d.ts +20 -0
  366. package/dist/hooks/density-provider.d.ts.map +1 -0
  367. package/dist/hooks/density-provider.js +38 -0
  368. package/dist/hooks/density-provider.js.map +1 -0
  369. package/dist/hooks/theme-provider.cjs +43 -0
  370. package/dist/hooks/theme-provider.cjs.map +1 -0
  371. package/dist/hooks/theme-provider.d.ts +9 -0
  372. package/dist/hooks/theme-provider.d.ts.map +1 -0
  373. package/dist/hooks/theme-provider.js +43 -0
  374. package/dist/hooks/theme-provider.js.map +1 -0
  375. package/dist/hooks/use-density.cjs +8 -37
  376. package/dist/hooks/use-density.cjs.map +1 -1
  377. package/dist/hooks/use-density.d.ts +5 -20
  378. package/dist/hooks/use-density.d.ts.map +1 -1
  379. package/dist/hooks/use-density.js +9 -38
  380. package/dist/hooks/use-density.js.map +1 -1
  381. package/dist/hooks/use-theme.cjs +10 -43
  382. package/dist/hooks/use-theme.cjs.map +1 -1
  383. package/dist/hooks/use-theme.d.ts +6 -9
  384. package/dist/hooks/use-theme.d.ts.map +1 -1
  385. package/dist/hooks/use-theme.js +11 -44
  386. package/dist/hooks/use-theme.js.map +1 -1
  387. package/dist/hooks.cjs +5 -2
  388. package/dist/hooks.cjs.map +1 -1
  389. package/dist/hooks.d.ts +4 -2
  390. package/dist/hooks.d.ts.map +1 -1
  391. package/dist/hooks.js +5 -2
  392. package/dist/hooks.js.map +1 -1
  393. package/dist/icons/changeIconAliases.cjs +13 -13
  394. package/dist/icons/changeIconAliases.cjs.map +1 -1
  395. package/dist/icons/changeIconAliases.d.ts.map +1 -1
  396. package/dist/icons/changeIconAliases.js +13 -13
  397. package/dist/icons/changeIconAliases.js.map +1 -1
  398. package/dist/index.cjs +71 -30
  399. package/dist/index.cjs.map +1 -1
  400. package/dist/index.js +53 -12
  401. package/dist/index.js.map +1 -1
  402. package/dist/overlay/DropdownMenu.cjs +2 -0
  403. package/dist/overlay/DropdownMenu.cjs.map +1 -1
  404. package/dist/overlay/DropdownMenu.d.ts +3 -1
  405. package/dist/overlay/DropdownMenu.d.ts.map +1 -1
  406. package/dist/overlay/DropdownMenu.js +2 -0
  407. package/dist/overlay/DropdownMenu.js.map +1 -1
  408. package/dist/overlay/Modal.cjs +11 -4
  409. package/dist/overlay/Modal.cjs.map +1 -1
  410. package/dist/overlay/Modal.d.ts +1 -1
  411. package/dist/overlay/Modal.d.ts.map +1 -1
  412. package/dist/overlay/Modal.js +11 -4
  413. package/dist/overlay/Modal.js.map +1 -1
  414. package/dist/overlay/modalStack.cjs +35 -0
  415. package/dist/overlay/modalStack.cjs.map +1 -0
  416. package/dist/overlay/modalStack.d.ts +13 -0
  417. package/dist/overlay/modalStack.d.ts.map +1 -0
  418. package/dist/overlay/modalStack.js +35 -0
  419. package/dist/overlay/modalStack.js.map +1 -0
  420. package/dist/rpc/AcceptPicker.cjs +2 -18
  421. package/dist/rpc/AcceptPicker.cjs.map +1 -1
  422. package/dist/rpc/AcceptPicker.d.ts +1 -41
  423. package/dist/rpc/AcceptPicker.d.ts.map +1 -1
  424. package/dist/rpc/AcceptPicker.js +2 -18
  425. package/dist/rpc/AcceptPicker.js.map +1 -1
  426. package/dist/rpc/CommandOutput.cjs +1 -1
  427. package/dist/rpc/CommandOutput.cjs.map +1 -1
  428. package/dist/rpc/CommandOutput.js +1 -1
  429. package/dist/rpc/CommandOutput.js.map +1 -1
  430. package/dist/rpc/EndpointList.cjs +1 -1
  431. package/dist/rpc/EndpointList.cjs.map +1 -1
  432. package/dist/rpc/EndpointList.js +1 -1
  433. package/dist/rpc/EndpointList.js.map +1 -1
  434. package/dist/rpc/OperationCatalog.cjs +23 -41
  435. package/dist/rpc/OperationCatalog.cjs.map +1 -1
  436. package/dist/rpc/OperationCatalog.d.ts.map +1 -1
  437. package/dist/rpc/OperationCatalog.js +24 -42
  438. package/dist/rpc/OperationCatalog.js.map +1 -1
  439. package/dist/rpc/OperationCommandPage.cjs.map +1 -1
  440. package/dist/rpc/OperationCommandPage.d.ts.map +1 -1
  441. package/dist/rpc/OperationCommandPage.js.map +1 -1
  442. package/dist/rpc/accept-options.cjs +20 -0
  443. package/dist/rpc/accept-options.cjs.map +1 -0
  444. package/dist/rpc/accept-options.d.ts +42 -0
  445. package/dist/rpc/accept-options.d.ts.map +1 -0
  446. package/dist/rpc/accept-options.js +20 -0
  447. package/dist/rpc/accept-options.js.map +1 -0
  448. package/dist/rpc/classify.cjs +15 -4
  449. package/dist/rpc/classify.cjs.map +1 -1
  450. package/dist/rpc/classify.d.ts.map +1 -1
  451. package/dist/rpc/classify.js +15 -4
  452. package/dist/rpc/classify.js.map +1 -1
  453. package/dist/rpc/clickyMetadata.cjs +13 -3
  454. package/dist/rpc/clickyMetadata.cjs.map +1 -1
  455. package/dist/rpc/clickyMetadata.d.ts +2 -0
  456. package/dist/rpc/clickyMetadata.d.ts.map +1 -1
  457. package/dist/rpc/clickyMetadata.js +14 -4
  458. package/dist/rpc/clickyMetadata.js.map +1 -1
  459. package/dist/rpc.cjs +3 -2
  460. package/dist/rpc.cjs.map +1 -1
  461. package/dist/rpc.d.ts +2 -1
  462. package/dist/rpc.d.ts.map +1 -1
  463. package/dist/rpc.js +2 -1
  464. package/dist/rpc.js.map +1 -1
  465. package/dist/styles.css +1 -1
  466. package/package.json +16 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadCard.cjs","sources":["../../../src/data/diagnostics/ThreadCard.tsx"],"sourcesContent":["import { JvmStackTrace, type JvmFrameSourceResolver } from \"./JvmStackTrace\";\nimport type { ParsedThread } from \"./jvm-stacktrace\";\n\nexport function threadStateBadge(state: string): string {\n switch (state) {\n case \"runnable\":\n return \"bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300\";\n case \"blocked\":\n return \"bg-red-50 text-red-700 dark:bg-red-500/20 dark:text-red-300\";\n case \"waiting\":\n case \"timed_waiting\":\n return \"bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300\";\n case \"new\":\n return \"bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300\";\n case \"terminated\":\n return \"bg-muted text-muted-foreground\";\n default:\n return \"bg-muted text-muted-foreground\";\n }\n}\n\nexport function threadStateDot(state: string): string {\n switch (state) {\n case \"runnable\":\n return \"bg-green-500\";\n case \"blocked\":\n return \"bg-red-500\";\n case \"waiting\":\n case \"timed_waiting\":\n return \"bg-blue-500\";\n case \"new\":\n return \"bg-amber-500\";\n case \"terminated\":\n return \"bg-muted-foreground/40\";\n default:\n return \"bg-muted-foreground/40\";\n }\n}\n\nexport type ThreadCardProps = {\n thread: ParsedThread;\n search: string;\n hideRuntimeOnly: boolean;\n resolveSource?: JvmFrameSourceResolver;\n};\n\nexport function ThreadCard({ thread, search, hideRuntimeOnly, resolveSource }: ThreadCardProps) {\n const frames = hideRuntimeOnly\n ? thread.frames.filter((f) => f.kind !== \"frame\" || !f.runtime)\n : thread.frames;\n const defaultOpen = thread.state === \"runnable\" || thread.state === \"blocked\" || !!search;\n\n return (\n <details className=\"border-0 bg-transparent\" open={defaultOpen}>\n <summary className=\"cursor-pointer list-none px-0 py-1\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <span className=\"font-mono text-xs font-semibold text-foreground\">#{thread.id}</span>\n <span className=\"truncate font-mono text-xs text-foreground\">{thread.name}</span>\n <span\n className={`inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[11px] ${threadStateBadge(\n thread.state,\n )}`}\n >\n <span className={`h-2 w-2 rounded-full ${threadStateDot(thread.state)}`} />\n {thread.rawState || thread.state}\n </span>\n {thread.daemon && (\n <span className=\"rounded-full bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground\">\n daemon\n </span>\n )}\n <span className=\"text-[11px] text-muted-foreground\">{frames.length}f</span>\n {thread.userFrameCount > 0 && (\n <span className=\"text-[11px] text-muted-foreground\">{thread.userFrameCount}u</span>\n )}\n {thread.topFunction && (\n <span className=\"truncate text-[11px] text-muted-foreground\">{thread.topFunction}</span>\n )}\n </div>\n </summary>\n <JvmStackTrace\n frames={frames}\n className=\"space-y-0.5 py-1 pl-3\"\n {...(resolveSource ? { resolveSource } : {})}\n />\n </details>\n );\n}\n"],"names":["jsxs","jsx","JvmStackTrace"],"mappings":";;;;AAGO,SAAS,iBAAiB,OAAuB;AACtD,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAEO,SAAS,eAAe,OAAuB;AACpD,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AASO,SAAS,WAAW,EAAE,QAAQ,QAAQ,iBAAiB,iBAAkC;AAC9F,QAAM,SAAS,kBACX,OAAO,OAAO,OAAO,CAAC,MAAM,EAAE,SAAS,WAAW,CAAC,EAAE,OAAO,IAC5D,OAAO;AACX,QAAM,cAAc,OAAO,UAAU,cAAc,OAAO,UAAU,aAAa,CAAC,CAAC;AAEnF,SACEA,2BAAAA,KAAC,WAAA,EAAQ,WAAU,2BAA0B,MAAM,aACjD,UAAA;AAAA,IAAAC,2BAAAA,IAAC,aAAQ,WAAU,sCACjB,UAAAD,2BAAAA,KAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,MAAAA,2BAAAA,KAAC,QAAA,EAAK,WAAU,mDAAkD,UAAA;AAAA,QAAA;AAAA,QAAE,OAAO;AAAA,MAAA,GAAG;AAAA,MAC9EC,2BAAAA,IAAC,QAAA,EAAK,WAAU,8CAA8C,iBAAO,MAAK;AAAA,MAC1ED,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW,uEAAuE;AAAA,YAChF,OAAO;AAAA,UAAA,CACR;AAAA,UAED,UAAA;AAAA,YAAAC,+BAAC,UAAK,WAAW,wBAAwB,eAAe,OAAO,KAAK,CAAC,IAAI;AAAA,YACxE,OAAO,YAAY,OAAO;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAE5B,OAAO,UACNA,2BAAAA,IAAC,QAAA,EAAK,WAAU,yEAAwE,UAAA,UAExF;AAAA,MAEFD,2BAAAA,KAAC,QAAA,EAAK,WAAU,qCAAqC,UAAA;AAAA,QAAA,OAAO;AAAA,QAAO;AAAA,MAAA,GAAC;AAAA,MACnE,OAAO,iBAAiB,KACvBA,2BAAAA,KAAC,QAAA,EAAK,WAAU,qCAAqC,UAAA;AAAA,QAAA,OAAO;AAAA,QAAe;AAAA,MAAA,GAAC;AAAA,MAE7E,OAAO,eACNC,2BAAAA,IAAC,UAAK,WAAU,8CAA8C,iBAAO,YAAA,CAAY;AAAA,IAAA,EAAA,CAErF,EAAA,CACF;AAAA,IACAA,2BAAAA;AAAAA,MAACC,cAAAA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAU;AAAA,QACT,GAAI,gBAAgB,EAAE,kBAAkB,CAAA;AAAA,MAAC;AAAA,IAAA;AAAA,EAC5C,GACF;AAEJ;;;;"}
1
+ {"version":3,"file":"ThreadCard.cjs","sources":["../../../src/data/diagnostics/ThreadCard.tsx"],"sourcesContent":["import { JvmStackTrace, type JvmFrameSourceResolver } from \"./JvmStackTrace\";\nimport type { ParsedThread } from \"./jvm-stacktrace\";\nimport { threadStateBadge, threadStateDot } from \"./state-styles\";\n\nexport type ThreadCardProps = {\n thread: ParsedThread;\n search: string;\n hideRuntimeOnly: boolean;\n resolveSource?: JvmFrameSourceResolver;\n};\n\nexport function ThreadCard({ thread, search, hideRuntimeOnly, resolveSource }: ThreadCardProps) {\n const frames = hideRuntimeOnly\n ? thread.frames.filter((f) => f.kind !== \"frame\" || !f.runtime)\n : thread.frames;\n const defaultOpen = thread.state === \"runnable\" || thread.state === \"blocked\" || !!search;\n\n return (\n <details className=\"border-0 bg-transparent\" open={defaultOpen}>\n <summary className=\"cursor-pointer list-none px-0 py-1\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <span className=\"font-mono text-xs font-semibold text-foreground\">#{thread.id}</span>\n <span className=\"truncate font-mono text-xs text-foreground\">{thread.name}</span>\n <span\n className={`inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[11px] ${threadStateBadge(\n thread.state,\n )}`}\n >\n <span className={`h-2 w-2 rounded-full ${threadStateDot(thread.state)}`} />\n {thread.rawState || thread.state}\n </span>\n {thread.daemon && (\n <span className=\"rounded-full bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground\">\n daemon\n </span>\n )}\n <span className=\"text-[11px] text-muted-foreground\">{frames.length}f</span>\n {thread.userFrameCount > 0 && (\n <span className=\"text-[11px] text-muted-foreground\">{thread.userFrameCount}u</span>\n )}\n {thread.topFunction && (\n <span className=\"truncate text-[11px] text-muted-foreground\">{thread.topFunction}</span>\n )}\n </div>\n </summary>\n <JvmStackTrace\n frames={frames}\n className=\"space-y-0.5 py-1 pl-3\"\n {...(resolveSource ? { resolveSource } : {})}\n />\n </details>\n );\n}\n"],"names":["jsxs","jsx","threadStateBadge","threadStateDot","JvmStackTrace"],"mappings":";;;;;AAWO,SAAS,WAAW,EAAE,QAAQ,QAAQ,iBAAiB,iBAAkC;AAC9F,QAAM,SAAS,kBACX,OAAO,OAAO,OAAO,CAAC,MAAM,EAAE,SAAS,WAAW,CAAC,EAAE,OAAO,IAC5D,OAAO;AACX,QAAM,cAAc,OAAO,UAAU,cAAc,OAAO,UAAU,aAAa,CAAC,CAAC;AAEnF,SACEA,2BAAAA,KAAC,WAAA,EAAQ,WAAU,2BAA0B,MAAM,aACjD,UAAA;AAAA,IAAAC,2BAAAA,IAAC,aAAQ,WAAU,sCACjB,UAAAD,2BAAAA,KAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,MAAAA,2BAAAA,KAAC,QAAA,EAAK,WAAU,mDAAkD,UAAA;AAAA,QAAA;AAAA,QAAE,OAAO;AAAA,MAAA,GAAG;AAAA,MAC9EC,2BAAAA,IAAC,QAAA,EAAK,WAAU,8CAA8C,iBAAO,MAAK;AAAA,MAC1ED,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW,uEAAuEE,YAAAA;AAAAA,YAChF,OAAO;AAAA,UAAA,CACR;AAAA,UAED,UAAA;AAAA,YAAAD,+BAAC,UAAK,WAAW,wBAAwBE,YAAAA,eAAe,OAAO,KAAK,CAAC,IAAI;AAAA,YACxE,OAAO,YAAY,OAAO;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAE5B,OAAO,UACNF,2BAAAA,IAAC,QAAA,EAAK,WAAU,yEAAwE,UAAA,UAExF;AAAA,MAEFD,2BAAAA,KAAC,QAAA,EAAK,WAAU,qCAAqC,UAAA;AAAA,QAAA,OAAO;AAAA,QAAO;AAAA,MAAA,GAAC;AAAA,MACnE,OAAO,iBAAiB,KACvBA,2BAAAA,KAAC,QAAA,EAAK,WAAU,qCAAqC,UAAA;AAAA,QAAA,OAAO;AAAA,QAAe;AAAA,MAAA,GAAC;AAAA,MAE7E,OAAO,eACNC,2BAAAA,IAAC,UAAK,WAAU,8CAA8C,iBAAO,YAAA,CAAY;AAAA,IAAA,EAAA,CAErF,EAAA,CACF;AAAA,IACAA,2BAAAA;AAAAA,MAACG,cAAAA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAU;AAAA,QACT,GAAI,gBAAgB,EAAE,kBAAkB,CAAA;AAAA,MAAC;AAAA,IAAA;AAAA,EAC5C,GACF;AAEJ;;"}
@@ -1,7 +1,5 @@
1
1
  import { JvmFrameSourceResolver } from './JvmStackTrace';
2
2
  import { ParsedThread } from './jvm-stacktrace';
3
- export declare function threadStateBadge(state: string): string;
4
- export declare function threadStateDot(state: string): string;
5
3
  export type ThreadCardProps = {
6
4
  thread: ParsedThread;
7
5
  search: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadCard.d.ts","sourceRoot":"","sources":["../../../src/data/diagnostics/ThreadCard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgBtD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgBpD;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,sBAAsB,CAAC;CACxC,CAAC;AAEF,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,EAAE,eAAe,2CAyC7F"}
1
+ {"version":3,"file":"ThreadCard.d.ts","sourceRoot":"","sources":["../../../src/data/diagnostics/ThreadCard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,sBAAsB,CAAC;CACxC,CAAC;AAEF,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,EAAE,eAAe,2CAyC7F"}
@@ -1,39 +1,6 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { JvmStackTrace } from "./JvmStackTrace.js";
3
- function threadStateBadge(state) {
4
- switch (state) {
5
- case "runnable":
6
- return "bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300";
7
- case "blocked":
8
- return "bg-red-50 text-red-700 dark:bg-red-500/20 dark:text-red-300";
9
- case "waiting":
10
- case "timed_waiting":
11
- return "bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300";
12
- case "new":
13
- return "bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300";
14
- case "terminated":
15
- return "bg-muted text-muted-foreground";
16
- default:
17
- return "bg-muted text-muted-foreground";
18
- }
19
- }
20
- function threadStateDot(state) {
21
- switch (state) {
22
- case "runnable":
23
- return "bg-green-500";
24
- case "blocked":
25
- return "bg-red-500";
26
- case "waiting":
27
- case "timed_waiting":
28
- return "bg-blue-500";
29
- case "new":
30
- return "bg-amber-500";
31
- case "terminated":
32
- return "bg-muted-foreground/40";
33
- default:
34
- return "bg-muted-foreground/40";
35
- }
36
- }
3
+ import { threadStateDot, threadStateBadge } from "./state-styles.js";
37
4
  function ThreadCard({ thread, search, hideRuntimeOnly, resolveSource }) {
38
5
  const frames = hideRuntimeOnly ? thread.frames.filter((f) => f.kind !== "frame" || !f.runtime) : thread.frames;
39
6
  const defaultOpen = thread.state === "runnable" || thread.state === "blocked" || !!search;
@@ -78,8 +45,6 @@ function ThreadCard({ thread, search, hideRuntimeOnly, resolveSource }) {
78
45
  ] });
79
46
  }
80
47
  export {
81
- ThreadCard,
82
- threadStateBadge,
83
- threadStateDot
48
+ ThreadCard
84
49
  };
85
50
  //# sourceMappingURL=ThreadCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadCard.js","sources":["../../../src/data/diagnostics/ThreadCard.tsx"],"sourcesContent":["import { JvmStackTrace, type JvmFrameSourceResolver } from \"./JvmStackTrace\";\nimport type { ParsedThread } from \"./jvm-stacktrace\";\n\nexport function threadStateBadge(state: string): string {\n switch (state) {\n case \"runnable\":\n return \"bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300\";\n case \"blocked\":\n return \"bg-red-50 text-red-700 dark:bg-red-500/20 dark:text-red-300\";\n case \"waiting\":\n case \"timed_waiting\":\n return \"bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300\";\n case \"new\":\n return \"bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300\";\n case \"terminated\":\n return \"bg-muted text-muted-foreground\";\n default:\n return \"bg-muted text-muted-foreground\";\n }\n}\n\nexport function threadStateDot(state: string): string {\n switch (state) {\n case \"runnable\":\n return \"bg-green-500\";\n case \"blocked\":\n return \"bg-red-500\";\n case \"waiting\":\n case \"timed_waiting\":\n return \"bg-blue-500\";\n case \"new\":\n return \"bg-amber-500\";\n case \"terminated\":\n return \"bg-muted-foreground/40\";\n default:\n return \"bg-muted-foreground/40\";\n }\n}\n\nexport type ThreadCardProps = {\n thread: ParsedThread;\n search: string;\n hideRuntimeOnly: boolean;\n resolveSource?: JvmFrameSourceResolver;\n};\n\nexport function ThreadCard({ thread, search, hideRuntimeOnly, resolveSource }: ThreadCardProps) {\n const frames = hideRuntimeOnly\n ? thread.frames.filter((f) => f.kind !== \"frame\" || !f.runtime)\n : thread.frames;\n const defaultOpen = thread.state === \"runnable\" || thread.state === \"blocked\" || !!search;\n\n return (\n <details className=\"border-0 bg-transparent\" open={defaultOpen}>\n <summary className=\"cursor-pointer list-none px-0 py-1\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <span className=\"font-mono text-xs font-semibold text-foreground\">#{thread.id}</span>\n <span className=\"truncate font-mono text-xs text-foreground\">{thread.name}</span>\n <span\n className={`inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[11px] ${threadStateBadge(\n thread.state,\n )}`}\n >\n <span className={`h-2 w-2 rounded-full ${threadStateDot(thread.state)}`} />\n {thread.rawState || thread.state}\n </span>\n {thread.daemon && (\n <span className=\"rounded-full bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground\">\n daemon\n </span>\n )}\n <span className=\"text-[11px] text-muted-foreground\">{frames.length}f</span>\n {thread.userFrameCount > 0 && (\n <span className=\"text-[11px] text-muted-foreground\">{thread.userFrameCount}u</span>\n )}\n {thread.topFunction && (\n <span className=\"truncate text-[11px] text-muted-foreground\">{thread.topFunction}</span>\n )}\n </div>\n </summary>\n <JvmStackTrace\n frames={frames}\n className=\"space-y-0.5 py-1 pl-3\"\n {...(resolveSource ? { resolveSource } : {})}\n />\n </details>\n );\n}\n"],"names":[],"mappings":";;AAGO,SAAS,iBAAiB,OAAuB;AACtD,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAEO,SAAS,eAAe,OAAuB;AACpD,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AASO,SAAS,WAAW,EAAE,QAAQ,QAAQ,iBAAiB,iBAAkC;AAC9F,QAAM,SAAS,kBACX,OAAO,OAAO,OAAO,CAAC,MAAM,EAAE,SAAS,WAAW,CAAC,EAAE,OAAO,IAC5D,OAAO;AACX,QAAM,cAAc,OAAO,UAAU,cAAc,OAAO,UAAU,aAAa,CAAC,CAAC;AAEnF,SACE,qBAAC,WAAA,EAAQ,WAAU,2BAA0B,MAAM,aACjD,UAAA;AAAA,IAAA,oBAAC,aAAQ,WAAU,sCACjB,UAAA,qBAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,MAAA,qBAAC,QAAA,EAAK,WAAU,mDAAkD,UAAA;AAAA,QAAA;AAAA,QAAE,OAAO;AAAA,MAAA,GAAG;AAAA,MAC9E,oBAAC,QAAA,EAAK,WAAU,8CAA8C,iBAAO,MAAK;AAAA,MAC1E;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW,uEAAuE;AAAA,YAChF,OAAO;AAAA,UAAA,CACR;AAAA,UAED,UAAA;AAAA,YAAA,oBAAC,UAAK,WAAW,wBAAwB,eAAe,OAAO,KAAK,CAAC,IAAI;AAAA,YACxE,OAAO,YAAY,OAAO;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAE5B,OAAO,UACN,oBAAC,QAAA,EAAK,WAAU,yEAAwE,UAAA,UAExF;AAAA,MAEF,qBAAC,QAAA,EAAK,WAAU,qCAAqC,UAAA;AAAA,QAAA,OAAO;AAAA,QAAO;AAAA,MAAA,GAAC;AAAA,MACnE,OAAO,iBAAiB,KACvB,qBAAC,QAAA,EAAK,WAAU,qCAAqC,UAAA;AAAA,QAAA,OAAO;AAAA,QAAe;AAAA,MAAA,GAAC;AAAA,MAE7E,OAAO,eACN,oBAAC,UAAK,WAAU,8CAA8C,iBAAO,YAAA,CAAY;AAAA,IAAA,EAAA,CAErF,EAAA,CACF;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAU;AAAA,QACT,GAAI,gBAAgB,EAAE,kBAAkB,CAAA;AAAA,MAAC;AAAA,IAAA;AAAA,EAC5C,GACF;AAEJ;"}
1
+ {"version":3,"file":"ThreadCard.js","sources":["../../../src/data/diagnostics/ThreadCard.tsx"],"sourcesContent":["import { JvmStackTrace, type JvmFrameSourceResolver } from \"./JvmStackTrace\";\nimport type { ParsedThread } from \"./jvm-stacktrace\";\nimport { threadStateBadge, threadStateDot } from \"./state-styles\";\n\nexport type ThreadCardProps = {\n thread: ParsedThread;\n search: string;\n hideRuntimeOnly: boolean;\n resolveSource?: JvmFrameSourceResolver;\n};\n\nexport function ThreadCard({ thread, search, hideRuntimeOnly, resolveSource }: ThreadCardProps) {\n const frames = hideRuntimeOnly\n ? thread.frames.filter((f) => f.kind !== \"frame\" || !f.runtime)\n : thread.frames;\n const defaultOpen = thread.state === \"runnable\" || thread.state === \"blocked\" || !!search;\n\n return (\n <details className=\"border-0 bg-transparent\" open={defaultOpen}>\n <summary className=\"cursor-pointer list-none px-0 py-1\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <span className=\"font-mono text-xs font-semibold text-foreground\">#{thread.id}</span>\n <span className=\"truncate font-mono text-xs text-foreground\">{thread.name}</span>\n <span\n className={`inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[11px] ${threadStateBadge(\n thread.state,\n )}`}\n >\n <span className={`h-2 w-2 rounded-full ${threadStateDot(thread.state)}`} />\n {thread.rawState || thread.state}\n </span>\n {thread.daemon && (\n <span className=\"rounded-full bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground\">\n daemon\n </span>\n )}\n <span className=\"text-[11px] text-muted-foreground\">{frames.length}f</span>\n {thread.userFrameCount > 0 && (\n <span className=\"text-[11px] text-muted-foreground\">{thread.userFrameCount}u</span>\n )}\n {thread.topFunction && (\n <span className=\"truncate text-[11px] text-muted-foreground\">{thread.topFunction}</span>\n )}\n </div>\n </summary>\n <JvmStackTrace\n frames={frames}\n className=\"space-y-0.5 py-1 pl-3\"\n {...(resolveSource ? { resolveSource } : {})}\n />\n </details>\n );\n}\n"],"names":[],"mappings":";;;AAWO,SAAS,WAAW,EAAE,QAAQ,QAAQ,iBAAiB,iBAAkC;AAC9F,QAAM,SAAS,kBACX,OAAO,OAAO,OAAO,CAAC,MAAM,EAAE,SAAS,WAAW,CAAC,EAAE,OAAO,IAC5D,OAAO;AACX,QAAM,cAAc,OAAO,UAAU,cAAc,OAAO,UAAU,aAAa,CAAC,CAAC;AAEnF,SACE,qBAAC,WAAA,EAAQ,WAAU,2BAA0B,MAAM,aACjD,UAAA;AAAA,IAAA,oBAAC,aAAQ,WAAU,sCACjB,UAAA,qBAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,MAAA,qBAAC,QAAA,EAAK,WAAU,mDAAkD,UAAA;AAAA,QAAA;AAAA,QAAE,OAAO;AAAA,MAAA,GAAG;AAAA,MAC9E,oBAAC,QAAA,EAAK,WAAU,8CAA8C,iBAAO,MAAK;AAAA,MAC1E;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW,uEAAuE;AAAA,YAChF,OAAO;AAAA,UAAA,CACR;AAAA,UAED,UAAA;AAAA,YAAA,oBAAC,UAAK,WAAW,wBAAwB,eAAe,OAAO,KAAK,CAAC,IAAI;AAAA,YACxE,OAAO,YAAY,OAAO;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAE5B,OAAO,UACN,oBAAC,QAAA,EAAK,WAAU,yEAAwE,UAAA,UAExF;AAAA,MAEF,qBAAC,QAAA,EAAK,WAAU,qCAAqC,UAAA;AAAA,QAAA,OAAO;AAAA,QAAO;AAAA,MAAA,GAAC;AAAA,MACnE,OAAO,iBAAiB,KACvB,qBAAC,QAAA,EAAK,WAAU,qCAAqC,UAAA;AAAA,QAAA,OAAO;AAAA,QAAe;AAAA,MAAA,GAAC;AAAA,MAE7E,OAAO,eACN,oBAAC,UAAK,WAAU,8CAA8C,iBAAO,YAAA,CAAY;AAAA,IAAA,EAAA,CAErF,EAAA,CACF;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAU;AAAA,QACT,GAAI,gBAAgB,EAAE,kBAAkB,CAAA;AAAA,MAAC;AAAA,IAAA;AAAA,EAC5C,GACF;AAEJ;"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ function goroutineStateBadge(state) {
4
+ if (state.includes("running"))
5
+ return "bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300";
6
+ if (state.includes("chan") || state.includes("wait"))
7
+ return "bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300";
8
+ if (state.includes("sleep"))
9
+ return "bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300";
10
+ if (state.includes("select"))
11
+ return "bg-violet-50 text-violet-700 dark:bg-violet-500/20 dark:text-violet-300";
12
+ return "bg-muted text-muted-foreground";
13
+ }
14
+ function goroutineStateDot(state) {
15
+ if (state.includes("running")) return "bg-green-500";
16
+ if (state.includes("chan") || state.includes("wait")) return "bg-blue-500";
17
+ if (state.includes("sleep")) return "bg-amber-500";
18
+ if (state.includes("select")) return "bg-violet-500";
19
+ return "bg-muted-foreground/40";
20
+ }
21
+ function threadStateBadge(state) {
22
+ switch (state) {
23
+ case "runnable":
24
+ return "bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300";
25
+ case "blocked":
26
+ return "bg-red-50 text-red-700 dark:bg-red-500/20 dark:text-red-300";
27
+ case "waiting":
28
+ case "timed_waiting":
29
+ return "bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300";
30
+ case "new":
31
+ return "bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300";
32
+ case "terminated":
33
+ return "bg-muted text-muted-foreground";
34
+ default:
35
+ return "bg-muted text-muted-foreground";
36
+ }
37
+ }
38
+ function threadStateDot(state) {
39
+ switch (state) {
40
+ case "runnable":
41
+ return "bg-green-500";
42
+ case "blocked":
43
+ return "bg-red-500";
44
+ case "waiting":
45
+ case "timed_waiting":
46
+ return "bg-blue-500";
47
+ case "new":
48
+ return "bg-amber-500";
49
+ case "terminated":
50
+ return "bg-muted-foreground/40";
51
+ default:
52
+ return "bg-muted-foreground/40";
53
+ }
54
+ }
55
+ exports.goroutineStateBadge = goroutineStateBadge;
56
+ exports.goroutineStateDot = goroutineStateDot;
57
+ exports.threadStateBadge = threadStateBadge;
58
+ exports.threadStateDot = threadStateDot;
59
+ //# sourceMappingURL=state-styles.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-styles.cjs","sources":["../../../src/data/diagnostics/state-styles.ts"],"sourcesContent":["// Tailwind class pickers for goroutine / JVM-thread states, shared by the\n// stack cards and the diagnostics detail panel.\n\nexport function goroutineStateBadge(state: string): string {\n if (state.includes(\"running\"))\n return \"bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300\";\n if (state.includes(\"chan\") || state.includes(\"wait\"))\n return \"bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300\";\n if (state.includes(\"sleep\"))\n return \"bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300\";\n if (state.includes(\"select\"))\n return \"bg-violet-50 text-violet-700 dark:bg-violet-500/20 dark:text-violet-300\";\n return \"bg-muted text-muted-foreground\";\n}\n\nexport function goroutineStateDot(state: string): string {\n if (state.includes(\"running\")) return \"bg-green-500\";\n if (state.includes(\"chan\") || state.includes(\"wait\")) return \"bg-blue-500\";\n if (state.includes(\"sleep\")) return \"bg-amber-500\";\n if (state.includes(\"select\")) return \"bg-violet-500\";\n return \"bg-muted-foreground/40\";\n}\n\nexport function threadStateBadge(state: string): string {\n switch (state) {\n case \"runnable\":\n return \"bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300\";\n case \"blocked\":\n return \"bg-red-50 text-red-700 dark:bg-red-500/20 dark:text-red-300\";\n case \"waiting\":\n case \"timed_waiting\":\n return \"bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300\";\n case \"new\":\n return \"bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300\";\n case \"terminated\":\n return \"bg-muted text-muted-foreground\";\n default:\n return \"bg-muted text-muted-foreground\";\n }\n}\n\nexport function threadStateDot(state: string): string {\n switch (state) {\n case \"runnable\":\n return \"bg-green-500\";\n case \"blocked\":\n return \"bg-red-500\";\n case \"waiting\":\n case \"timed_waiting\":\n return \"bg-blue-500\";\n case \"new\":\n return \"bg-amber-500\";\n case \"terminated\":\n return \"bg-muted-foreground/40\";\n default:\n return \"bg-muted-foreground/40\";\n }\n}\n"],"names":[],"mappings":";;AAGO,SAAS,oBAAoB,OAAuB;AACzD,MAAI,MAAM,SAAS,SAAS;AAC1B,WAAO;AACT,MAAI,MAAM,SAAS,MAAM,KAAK,MAAM,SAAS,MAAM;AACjD,WAAO;AACT,MAAI,MAAM,SAAS,OAAO;AACxB,WAAO;AACT,MAAI,MAAM,SAAS,QAAQ;AACzB,WAAO;AACT,SAAO;AACT;AAEO,SAAS,kBAAkB,OAAuB;AACvD,MAAI,MAAM,SAAS,SAAS,EAAG,QAAO;AACtC,MAAI,MAAM,SAAS,MAAM,KAAK,MAAM,SAAS,MAAM,EAAG,QAAO;AAC7D,MAAI,MAAM,SAAS,OAAO,EAAG,QAAO;AACpC,MAAI,MAAM,SAAS,QAAQ,EAAG,QAAO;AACrC,SAAO;AACT;AAEO,SAAS,iBAAiB,OAAuB;AACtD,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAEO,SAAS,eAAe,OAAuB;AACpD,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;;;;;"}
@@ -0,0 +1,5 @@
1
+ export declare function goroutineStateBadge(state: string): string;
2
+ export declare function goroutineStateDot(state: string): string;
3
+ export declare function threadStateBadge(state: string): string;
4
+ export declare function threadStateDot(state: string): string;
5
+ //# sourceMappingURL=state-styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-styles.d.ts","sourceRoot":"","sources":["../../../src/data/diagnostics/state-styles.ts"],"names":[],"mappings":"AAGA,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUzD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMvD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgBtD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgBpD"}
@@ -0,0 +1,59 @@
1
+ function goroutineStateBadge(state) {
2
+ if (state.includes("running"))
3
+ return "bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300";
4
+ if (state.includes("chan") || state.includes("wait"))
5
+ return "bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300";
6
+ if (state.includes("sleep"))
7
+ return "bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300";
8
+ if (state.includes("select"))
9
+ return "bg-violet-50 text-violet-700 dark:bg-violet-500/20 dark:text-violet-300";
10
+ return "bg-muted text-muted-foreground";
11
+ }
12
+ function goroutineStateDot(state) {
13
+ if (state.includes("running")) return "bg-green-500";
14
+ if (state.includes("chan") || state.includes("wait")) return "bg-blue-500";
15
+ if (state.includes("sleep")) return "bg-amber-500";
16
+ if (state.includes("select")) return "bg-violet-500";
17
+ return "bg-muted-foreground/40";
18
+ }
19
+ function threadStateBadge(state) {
20
+ switch (state) {
21
+ case "runnable":
22
+ return "bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300";
23
+ case "blocked":
24
+ return "bg-red-50 text-red-700 dark:bg-red-500/20 dark:text-red-300";
25
+ case "waiting":
26
+ case "timed_waiting":
27
+ return "bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300";
28
+ case "new":
29
+ return "bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300";
30
+ case "terminated":
31
+ return "bg-muted text-muted-foreground";
32
+ default:
33
+ return "bg-muted text-muted-foreground";
34
+ }
35
+ }
36
+ function threadStateDot(state) {
37
+ switch (state) {
38
+ case "runnable":
39
+ return "bg-green-500";
40
+ case "blocked":
41
+ return "bg-red-500";
42
+ case "waiting":
43
+ case "timed_waiting":
44
+ return "bg-blue-500";
45
+ case "new":
46
+ return "bg-amber-500";
47
+ case "terminated":
48
+ return "bg-muted-foreground/40";
49
+ default:
50
+ return "bg-muted-foreground/40";
51
+ }
52
+ }
53
+ export {
54
+ goroutineStateBadge,
55
+ goroutineStateDot,
56
+ threadStateBadge,
57
+ threadStateDot
58
+ };
59
+ //# sourceMappingURL=state-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-styles.js","sources":["../../../src/data/diagnostics/state-styles.ts"],"sourcesContent":["// Tailwind class pickers for goroutine / JVM-thread states, shared by the\n// stack cards and the diagnostics detail panel.\n\nexport function goroutineStateBadge(state: string): string {\n if (state.includes(\"running\"))\n return \"bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300\";\n if (state.includes(\"chan\") || state.includes(\"wait\"))\n return \"bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300\";\n if (state.includes(\"sleep\"))\n return \"bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300\";\n if (state.includes(\"select\"))\n return \"bg-violet-50 text-violet-700 dark:bg-violet-500/20 dark:text-violet-300\";\n return \"bg-muted text-muted-foreground\";\n}\n\nexport function goroutineStateDot(state: string): string {\n if (state.includes(\"running\")) return \"bg-green-500\";\n if (state.includes(\"chan\") || state.includes(\"wait\")) return \"bg-blue-500\";\n if (state.includes(\"sleep\")) return \"bg-amber-500\";\n if (state.includes(\"select\")) return \"bg-violet-500\";\n return \"bg-muted-foreground/40\";\n}\n\nexport function threadStateBadge(state: string): string {\n switch (state) {\n case \"runnable\":\n return \"bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300\";\n case \"blocked\":\n return \"bg-red-50 text-red-700 dark:bg-red-500/20 dark:text-red-300\";\n case \"waiting\":\n case \"timed_waiting\":\n return \"bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300\";\n case \"new\":\n return \"bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300\";\n case \"terminated\":\n return \"bg-muted text-muted-foreground\";\n default:\n return \"bg-muted text-muted-foreground\";\n }\n}\n\nexport function threadStateDot(state: string): string {\n switch (state) {\n case \"runnable\":\n return \"bg-green-500\";\n case \"blocked\":\n return \"bg-red-500\";\n case \"waiting\":\n case \"timed_waiting\":\n return \"bg-blue-500\";\n case \"new\":\n return \"bg-amber-500\";\n case \"terminated\":\n return \"bg-muted-foreground/40\";\n default:\n return \"bg-muted-foreground/40\";\n }\n}\n"],"names":[],"mappings":"AAGO,SAAS,oBAAoB,OAAuB;AACzD,MAAI,MAAM,SAAS,SAAS;AAC1B,WAAO;AACT,MAAI,MAAM,SAAS,MAAM,KAAK,MAAM,SAAS,MAAM;AACjD,WAAO;AACT,MAAI,MAAM,SAAS,OAAO;AACxB,WAAO;AACT,MAAI,MAAM,SAAS,QAAQ;AACzB,WAAO;AACT,SAAO;AACT;AAEO,SAAS,kBAAkB,OAAuB;AACvD,MAAI,MAAM,SAAS,SAAS,EAAG,QAAO;AACtC,MAAI,MAAM,SAAS,MAAM,KAAK,MAAM,SAAS,MAAM,EAAG,QAAO;AAC7D,MAAI,MAAM,SAAS,OAAO,EAAG,QAAO;AACpC,MAAI,MAAM,SAAS,QAAQ,EAAG,QAAO;AACrC,SAAO;AACT;AAEO,SAAS,iBAAiB,OAAuB;AACtD,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAEO,SAAS,eAAe,OAAuB;AACpD,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const logUtils = require("./log-utils.cjs");
4
+ const JSON_PARSE_FAILED = Symbol("json-parse-failed");
5
+ function normalizeLogsTableRows(logs) {
6
+ const entries = typeof logs === "string" ? splitLogLines(logs) : logs;
7
+ return entries.map((entry, index) => normalizeLogEntry(entry, index));
8
+ }
9
+ function splitLogLines(logs) {
10
+ return logs.split(/\r?\n/).filter((line) => line.length > 0);
11
+ }
12
+ function normalizeLogEntry(entry, index) {
13
+ const parsedOuterValue = typeof entry === "string" ? tryParseJson(entry) : entry;
14
+ const parsedOuter = parsedOuterValue === JSON_PARSE_FAILED ? entry : parsedOuterValue;
15
+ const outer = logUtils.asRecord(parsedOuter);
16
+ const outerLine = stringValue(outer == null ? void 0 : outer.line);
17
+ const parsedLineValue = outerLine ? tryParseJson(outerLine) : JSON_PARSE_FAILED;
18
+ const parsedLine = parsedLineValue === JSON_PARSE_FAILED ? void 0 : parsedLineValue;
19
+ const inner = logUtils.asRecord(parsedLine) ?? (outerLine ? void 0 : outer);
20
+ const labels = logUtils.asRecord(outer == null ? void 0 : outer.labels);
21
+ const timestamp = firstString(
22
+ pick(outer, "timestamp"),
23
+ pick(inner, "@timestamp"),
24
+ pick(outer, "ts"),
25
+ pick(inner, "timestamp"),
26
+ pick(outer, "time"),
27
+ pick(inner, "time")
28
+ );
29
+ const level = firstString(
30
+ pick(inner, "log.level"),
31
+ pick(inner, "level"),
32
+ pick(outer, "level"),
33
+ pick(outer, "severity"),
34
+ pick(inner, "severity")
35
+ );
36
+ const pod = firstString(
37
+ pick(outer, "pod"),
38
+ pick(labels, "pod"),
39
+ pick(inner, "kubernetes.pod.name")
40
+ );
41
+ const namespace = firstString(
42
+ pick(outer, "namespace"),
43
+ pick(labels, "namespace"),
44
+ pick(inner, "kubernetes.namespace")
45
+ );
46
+ const container = firstString(
47
+ pick(outer, "container"),
48
+ pick(labels, "container"),
49
+ pick(inner, "container.name")
50
+ );
51
+ const service = firstString(
52
+ pick(inner, "service.name"),
53
+ pick(inner, "service"),
54
+ pick(outer, "service"),
55
+ pick(labels, "service")
56
+ );
57
+ const dataset = firstString(pick(inner, "event.dataset"), pick(inner, "dataset"));
58
+ const logger = firstString(
59
+ pick(inner, "log.logger"),
60
+ pick(inner, "logger"),
61
+ pick(outer, "logger")
62
+ );
63
+ const thread = firstString(
64
+ pick(inner, "process.thread.name"),
65
+ pick(inner, "thread"),
66
+ pick(outer, "thread")
67
+ );
68
+ const message = firstString(
69
+ pick(inner, "message"),
70
+ pick(inner, "msg"),
71
+ pick(outer, "message"),
72
+ outerLine,
73
+ typeof entry === "string" ? entry : void 0
74
+ );
75
+ const tags = buildTags({
76
+ namespace,
77
+ container,
78
+ service,
79
+ dataset,
80
+ ecsVersion: firstString(pick(inner, "ecs.version")),
81
+ labels
82
+ });
83
+ return {
84
+ id: `${index}:${timestamp || pod || message || stableString(entry)}`,
85
+ timestamp,
86
+ level,
87
+ pod,
88
+ logger,
89
+ thread,
90
+ message,
91
+ tags,
92
+ line: outerLine ?? (typeof entry === "string" ? entry : stableString(entry)),
93
+ raw: parsedOuter,
94
+ ...parsedLine !== void 0 ? { parsedLine } : {}
95
+ };
96
+ }
97
+ function buildTags({
98
+ namespace,
99
+ container,
100
+ service,
101
+ dataset,
102
+ ecsVersion,
103
+ labels
104
+ }) {
105
+ const tags = [];
106
+ const seen = /* @__PURE__ */ new Set();
107
+ const addTag = (key, value) => {
108
+ const valueString = stringValue(value);
109
+ if (!valueString) return;
110
+ const tag = `${key}=${valueString}`;
111
+ if (seen.has(tag)) return;
112
+ seen.add(tag);
113
+ tags.push(tag);
114
+ };
115
+ addTag("namespace", namespace);
116
+ addTag("container", container);
117
+ addTag("service", service);
118
+ addTag("dataset", dataset);
119
+ addTag("ecs.version", ecsVersion);
120
+ if (labels) {
121
+ for (const [key, value] of Object.entries(labels)) {
122
+ addTag(key, value);
123
+ }
124
+ }
125
+ return tags;
126
+ }
127
+ function tryParseJson(value) {
128
+ try {
129
+ return JSON.parse(value);
130
+ } catch {
131
+ return JSON_PARSE_FAILED;
132
+ }
133
+ }
134
+ function pick(record, path) {
135
+ if (!record) return void 0;
136
+ if (Object.prototype.hasOwnProperty.call(record, path)) return record[path];
137
+ return path.split(".").reduce((current, key) => {
138
+ if (current && typeof current === "object") {
139
+ return current[key];
140
+ }
141
+ return void 0;
142
+ }, record);
143
+ }
144
+ function firstString(...values) {
145
+ for (const value of values) {
146
+ const string = stringValue(value);
147
+ if (string) return string;
148
+ }
149
+ return "";
150
+ }
151
+ function stringValue(value) {
152
+ if (value == null) return "";
153
+ if (typeof value === "string") return value.trim();
154
+ if (typeof value === "number" || typeof value === "boolean") return String(value);
155
+ return "";
156
+ }
157
+ function stableString(value) {
158
+ if (typeof value === "string") return value;
159
+ try {
160
+ return JSON.stringify(value);
161
+ } catch {
162
+ return String(value);
163
+ }
164
+ }
165
+ exports.normalizeLogsTableRows = normalizeLogsTableRows;
166
+ //# sourceMappingURL=logs-normalize.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs-normalize.cjs","sources":["../../src/data/logs-normalize.ts"],"sourcesContent":["import { asRecord } from \"./log-utils\";\n\nexport type LogsTableInput = string | Record<string, unknown>;\n\nexport type LogsTableRow = {\n id: string;\n timestamp: string;\n level: string;\n pod: string;\n logger: string;\n thread: string;\n message: string;\n tags: string[];\n line: string;\n parsedLine?: unknown;\n raw: unknown;\n};\n\nconst JSON_PARSE_FAILED = Symbol(\"json-parse-failed\");\n\nexport function normalizeLogsTableRows(logs: string | LogsTableInput[]): LogsTableRow[] {\n const entries = typeof logs === \"string\" ? splitLogLines(logs) : logs;\n return entries.map((entry, index) => normalizeLogEntry(entry, index));\n}\n\nfunction splitLogLines(logs: string): string[] {\n return logs.split(/\\r?\\n/).filter((line) => line.length > 0);\n}\n\nfunction normalizeLogEntry(entry: LogsTableInput, index: number): LogsTableRow {\n const parsedOuterValue = typeof entry === \"string\" ? tryParseJson(entry) : entry;\n const parsedOuter = parsedOuterValue === JSON_PARSE_FAILED ? entry : parsedOuterValue;\n const outer = asRecord(parsedOuter);\n const outerLine = stringValue(outer?.line);\n const parsedLineValue = outerLine ? tryParseJson(outerLine) : JSON_PARSE_FAILED;\n const parsedLine = parsedLineValue === JSON_PARSE_FAILED ? undefined : parsedLineValue;\n const inner = asRecord(parsedLine) ?? (outerLine ? undefined : outer);\n const labels = asRecord(outer?.labels);\n\n const timestamp = firstString(\n pick(outer, \"timestamp\"),\n pick(inner, \"@timestamp\"),\n pick(outer, \"ts\"),\n pick(inner, \"timestamp\"),\n pick(outer, \"time\"),\n pick(inner, \"time\"),\n );\n const level = firstString(\n pick(inner, \"log.level\"),\n pick(inner, \"level\"),\n pick(outer, \"level\"),\n pick(outer, \"severity\"),\n pick(inner, \"severity\"),\n );\n const pod = firstString(\n pick(outer, \"pod\"),\n pick(labels, \"pod\"),\n pick(inner, \"kubernetes.pod.name\"),\n );\n const namespace = firstString(\n pick(outer, \"namespace\"),\n pick(labels, \"namespace\"),\n pick(inner, \"kubernetes.namespace\"),\n );\n const container = firstString(\n pick(outer, \"container\"),\n pick(labels, \"container\"),\n pick(inner, \"container.name\"),\n );\n const service = firstString(\n pick(inner, \"service.name\"),\n pick(inner, \"service\"),\n pick(outer, \"service\"),\n pick(labels, \"service\"),\n );\n const dataset = firstString(pick(inner, \"event.dataset\"), pick(inner, \"dataset\"));\n const logger = firstString(\n pick(inner, \"log.logger\"),\n pick(inner, \"logger\"),\n pick(outer, \"logger\"),\n );\n const thread = firstString(\n pick(inner, \"process.thread.name\"),\n pick(inner, \"thread\"),\n pick(outer, \"thread\"),\n );\n const message = firstString(\n pick(inner, \"message\"),\n pick(inner, \"msg\"),\n pick(outer, \"message\"),\n outerLine,\n typeof entry === \"string\" ? entry : undefined,\n );\n\n const tags = buildTags({\n namespace,\n container,\n service,\n dataset,\n ecsVersion: firstString(pick(inner, \"ecs.version\")),\n labels,\n });\n\n return {\n id: `${index}:${timestamp || pod || message || stableString(entry)}`,\n timestamp,\n level,\n pod,\n logger,\n thread,\n message,\n tags,\n line: outerLine ?? (typeof entry === \"string\" ? entry : stableString(entry)),\n raw: parsedOuter,\n ...(parsedLine !== undefined ? { parsedLine } : {}),\n };\n}\n\nfunction buildTags({\n namespace,\n container,\n service,\n dataset,\n ecsVersion,\n labels,\n}: {\n namespace: string;\n container: string;\n service: string;\n dataset: string;\n ecsVersion: string;\n labels: Record<string, unknown> | undefined;\n}) {\n const tags: string[] = [];\n const seen = new Set<string>();\n const addTag = (key: string, value: unknown) => {\n const valueString = stringValue(value);\n if (!valueString) return;\n const tag = `${key}=${valueString}`;\n if (seen.has(tag)) return;\n seen.add(tag);\n tags.push(tag);\n };\n\n addTag(\"namespace\", namespace);\n addTag(\"container\", container);\n addTag(\"service\", service);\n addTag(\"dataset\", dataset);\n addTag(\"ecs.version\", ecsVersion);\n\n if (labels) {\n for (const [key, value] of Object.entries(labels)) {\n addTag(key, value);\n }\n }\n\n return tags;\n}\n\nfunction tryParseJson(value: string): unknown | typeof JSON_PARSE_FAILED {\n try {\n return JSON.parse(value) as unknown;\n } catch {\n return JSON_PARSE_FAILED;\n }\n}\n\nfunction pick(record: Record<string, unknown> | undefined, path: string): unknown {\n if (!record) return undefined;\n if (Object.prototype.hasOwnProperty.call(record, path)) return record[path];\n return path.split(\".\").reduce<unknown>((current, key) => {\n if (current && typeof current === \"object\") {\n return (current as Record<string, unknown>)[key];\n }\n return undefined;\n }, record);\n}\n\nfunction firstString(...values: unknown[]): string {\n for (const value of values) {\n const string = stringValue(value);\n if (string) return string;\n }\n return \"\";\n}\n\nfunction stringValue(value: unknown): string {\n if (value == null) return \"\";\n if (typeof value === \"string\") return value.trim();\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n return \"\";\n}\n\nfunction stableString(value: unknown): string {\n if (typeof value === \"string\") return value;\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n"],"names":["asRecord"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export type LogsTableInput = string | Record<string, unknown>;
2
+ export type LogsTableRow = {
3
+ id: string;
4
+ timestamp: string;
5
+ level: string;
6
+ pod: string;
7
+ logger: string;
8
+ thread: string;
9
+ message: string;
10
+ tags: string[];
11
+ line: string;
12
+ parsedLine?: unknown;
13
+ raw: unknown;
14
+ };
15
+ export declare function normalizeLogsTableRows(logs: string | LogsTableInput[]): LogsTableRow[];
16
+ //# sourceMappingURL=logs-normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs-normalize.d.ts","sourceRoot":"","sources":["../../src/data/logs-normalize.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9D,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;AAIF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,GAAG,YAAY,EAAE,CAGtF"}
@@ -0,0 +1,166 @@
1
+ import { asRecord } from "./log-utils.js";
2
+ const JSON_PARSE_FAILED = Symbol("json-parse-failed");
3
+ function normalizeLogsTableRows(logs) {
4
+ const entries = typeof logs === "string" ? splitLogLines(logs) : logs;
5
+ return entries.map((entry, index) => normalizeLogEntry(entry, index));
6
+ }
7
+ function splitLogLines(logs) {
8
+ return logs.split(/\r?\n/).filter((line) => line.length > 0);
9
+ }
10
+ function normalizeLogEntry(entry, index) {
11
+ const parsedOuterValue = typeof entry === "string" ? tryParseJson(entry) : entry;
12
+ const parsedOuter = parsedOuterValue === JSON_PARSE_FAILED ? entry : parsedOuterValue;
13
+ const outer = asRecord(parsedOuter);
14
+ const outerLine = stringValue(outer == null ? void 0 : outer.line);
15
+ const parsedLineValue = outerLine ? tryParseJson(outerLine) : JSON_PARSE_FAILED;
16
+ const parsedLine = parsedLineValue === JSON_PARSE_FAILED ? void 0 : parsedLineValue;
17
+ const inner = asRecord(parsedLine) ?? (outerLine ? void 0 : outer);
18
+ const labels = asRecord(outer == null ? void 0 : outer.labels);
19
+ const timestamp = firstString(
20
+ pick(outer, "timestamp"),
21
+ pick(inner, "@timestamp"),
22
+ pick(outer, "ts"),
23
+ pick(inner, "timestamp"),
24
+ pick(outer, "time"),
25
+ pick(inner, "time")
26
+ );
27
+ const level = firstString(
28
+ pick(inner, "log.level"),
29
+ pick(inner, "level"),
30
+ pick(outer, "level"),
31
+ pick(outer, "severity"),
32
+ pick(inner, "severity")
33
+ );
34
+ const pod = firstString(
35
+ pick(outer, "pod"),
36
+ pick(labels, "pod"),
37
+ pick(inner, "kubernetes.pod.name")
38
+ );
39
+ const namespace = firstString(
40
+ pick(outer, "namespace"),
41
+ pick(labels, "namespace"),
42
+ pick(inner, "kubernetes.namespace")
43
+ );
44
+ const container = firstString(
45
+ pick(outer, "container"),
46
+ pick(labels, "container"),
47
+ pick(inner, "container.name")
48
+ );
49
+ const service = firstString(
50
+ pick(inner, "service.name"),
51
+ pick(inner, "service"),
52
+ pick(outer, "service"),
53
+ pick(labels, "service")
54
+ );
55
+ const dataset = firstString(pick(inner, "event.dataset"), pick(inner, "dataset"));
56
+ const logger = firstString(
57
+ pick(inner, "log.logger"),
58
+ pick(inner, "logger"),
59
+ pick(outer, "logger")
60
+ );
61
+ const thread = firstString(
62
+ pick(inner, "process.thread.name"),
63
+ pick(inner, "thread"),
64
+ pick(outer, "thread")
65
+ );
66
+ const message = firstString(
67
+ pick(inner, "message"),
68
+ pick(inner, "msg"),
69
+ pick(outer, "message"),
70
+ outerLine,
71
+ typeof entry === "string" ? entry : void 0
72
+ );
73
+ const tags = buildTags({
74
+ namespace,
75
+ container,
76
+ service,
77
+ dataset,
78
+ ecsVersion: firstString(pick(inner, "ecs.version")),
79
+ labels
80
+ });
81
+ return {
82
+ id: `${index}:${timestamp || pod || message || stableString(entry)}`,
83
+ timestamp,
84
+ level,
85
+ pod,
86
+ logger,
87
+ thread,
88
+ message,
89
+ tags,
90
+ line: outerLine ?? (typeof entry === "string" ? entry : stableString(entry)),
91
+ raw: parsedOuter,
92
+ ...parsedLine !== void 0 ? { parsedLine } : {}
93
+ };
94
+ }
95
+ function buildTags({
96
+ namespace,
97
+ container,
98
+ service,
99
+ dataset,
100
+ ecsVersion,
101
+ labels
102
+ }) {
103
+ const tags = [];
104
+ const seen = /* @__PURE__ */ new Set();
105
+ const addTag = (key, value) => {
106
+ const valueString = stringValue(value);
107
+ if (!valueString) return;
108
+ const tag = `${key}=${valueString}`;
109
+ if (seen.has(tag)) return;
110
+ seen.add(tag);
111
+ tags.push(tag);
112
+ };
113
+ addTag("namespace", namespace);
114
+ addTag("container", container);
115
+ addTag("service", service);
116
+ addTag("dataset", dataset);
117
+ addTag("ecs.version", ecsVersion);
118
+ if (labels) {
119
+ for (const [key, value] of Object.entries(labels)) {
120
+ addTag(key, value);
121
+ }
122
+ }
123
+ return tags;
124
+ }
125
+ function tryParseJson(value) {
126
+ try {
127
+ return JSON.parse(value);
128
+ } catch {
129
+ return JSON_PARSE_FAILED;
130
+ }
131
+ }
132
+ function pick(record, path) {
133
+ if (!record) return void 0;
134
+ if (Object.prototype.hasOwnProperty.call(record, path)) return record[path];
135
+ return path.split(".").reduce((current, key) => {
136
+ if (current && typeof current === "object") {
137
+ return current[key];
138
+ }
139
+ return void 0;
140
+ }, record);
141
+ }
142
+ function firstString(...values) {
143
+ for (const value of values) {
144
+ const string = stringValue(value);
145
+ if (string) return string;
146
+ }
147
+ return "";
148
+ }
149
+ function stringValue(value) {
150
+ if (value == null) return "";
151
+ if (typeof value === "string") return value.trim();
152
+ if (typeof value === "number" || typeof value === "boolean") return String(value);
153
+ return "";
154
+ }
155
+ function stableString(value) {
156
+ if (typeof value === "string") return value;
157
+ try {
158
+ return JSON.stringify(value);
159
+ } catch {
160
+ return String(value);
161
+ }
162
+ }
163
+ export {
164
+ normalizeLogsTableRows
165
+ };
166
+ //# sourceMappingURL=logs-normalize.js.map