@flanksource/clicky-ui 0.3.49 → 0.3.50

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 (384) hide show
  1. package/dist/connections/ConnectionsPage.cjs +219 -0
  2. package/dist/connections/ConnectionsPage.cjs.map +1 -0
  3. package/dist/connections/ConnectionsPage.d.ts +23 -0
  4. package/dist/connections/ConnectionsPage.d.ts.map +1 -0
  5. package/dist/connections/ConnectionsPage.js +219 -0
  6. package/dist/connections/ConnectionsPage.js.map +1 -0
  7. package/dist/connections/connectionActionStatus.cjs +43 -0
  8. package/dist/connections/connectionActionStatus.cjs.map +1 -0
  9. package/dist/connections/connectionActionStatus.d.ts +5 -0
  10. package/dist/connections/connectionActionStatus.d.ts.map +1 -0
  11. package/dist/connections/connectionActionStatus.js +43 -0
  12. package/dist/connections/connectionActionStatus.js.map +1 -0
  13. package/dist/connections/connectionActionTypes.cjs +24 -0
  14. package/dist/connections/connectionActionTypes.cjs.map +1 -0
  15. package/dist/connections/connectionActionTypes.d.ts +36 -0
  16. package/dist/connections/connectionActionTypes.d.ts.map +1 -0
  17. package/dist/connections/connectionActionTypes.js +24 -0
  18. package/dist/connections/connectionActionTypes.js.map +1 -0
  19. package/dist/connections/connectionActions.cjs +11 -0
  20. package/dist/connections/connectionActions.cjs.map +1 -0
  21. package/dist/connections/connectionActions.d.ts +15 -0
  22. package/dist/connections/connectionActions.d.ts.map +1 -0
  23. package/dist/connections/connectionActions.js +11 -0
  24. package/dist/connections/connectionActions.js.map +1 -0
  25. package/dist/connections/connectionDashboard.cjs +185 -0
  26. package/dist/connections/connectionDashboard.cjs.map +1 -0
  27. package/dist/connections/connectionDashboard.d.ts +25 -0
  28. package/dist/connections/connectionDashboard.d.ts.map +1 -0
  29. package/dist/connections/connectionDashboard.js +185 -0
  30. package/dist/connections/connectionDashboard.js.map +1 -0
  31. package/dist/connections/connectionDashboardModel.cjs +43 -0
  32. package/dist/connections/connectionDashboardModel.cjs.map +1 -0
  33. package/dist/connections/connectionDashboardModel.d.ts +75 -0
  34. package/dist/connections/connectionDashboardModel.d.ts.map +1 -0
  35. package/dist/connections/connectionDashboardModel.js +43 -0
  36. package/dist/connections/connectionDashboardModel.js.map +1 -0
  37. package/dist/connections/connectionDashboardRenderer.cjs +21 -0
  38. package/dist/connections/connectionDashboardRenderer.cjs.map +1 -0
  39. package/dist/connections/connectionDashboardRenderer.d.ts +15 -0
  40. package/dist/connections/connectionDashboardRenderer.d.ts.map +1 -0
  41. package/dist/connections/connectionDashboardRenderer.js +21 -0
  42. package/dist/connections/connectionDashboardRenderer.js.map +1 -0
  43. package/dist/connections/connectionDashboardRow.cjs +169 -0
  44. package/dist/connections/connectionDashboardRow.cjs.map +1 -0
  45. package/dist/connections/connectionDashboardRow.d.ts +12 -0
  46. package/dist/connections/connectionDashboardRow.d.ts.map +1 -0
  47. package/dist/connections/connectionDashboardRow.js +169 -0
  48. package/dist/connections/connectionDashboardRow.js.map +1 -0
  49. package/dist/connections/connectionErrorView.cjs +8 -0
  50. package/dist/connections/connectionErrorView.cjs.map +1 -0
  51. package/dist/connections/connectionErrorView.d.ts +4 -0
  52. package/dist/connections/connectionErrorView.d.ts.map +1 -0
  53. package/dist/connections/connectionErrorView.js +8 -0
  54. package/dist/connections/connectionErrorView.js.map +1 -0
  55. package/dist/connections/connectionHealth.cjs +82 -0
  56. package/dist/connections/connectionHealth.cjs.map +1 -0
  57. package/dist/connections/connectionHealth.d.ts +33 -0
  58. package/dist/connections/connectionHealth.d.ts.map +1 -0
  59. package/dist/connections/connectionHealth.js +82 -0
  60. package/dist/connections/connectionHealth.js.map +1 -0
  61. package/dist/connections/connectionLogging.cjs +29 -0
  62. package/dist/connections/connectionLogging.cjs.map +1 -0
  63. package/dist/connections/connectionLogging.d.ts +11 -0
  64. package/dist/connections/connectionLogging.d.ts.map +1 -0
  65. package/dist/connections/connectionLogging.js +29 -0
  66. package/dist/connections/connectionLogging.js.map +1 -0
  67. package/dist/connections/connectionLoggingField.cjs +37 -0
  68. package/dist/connections/connectionLoggingField.cjs.map +1 -0
  69. package/dist/connections/connectionLoggingField.d.ts +12 -0
  70. package/dist/connections/connectionLoggingField.d.ts.map +1 -0
  71. package/dist/connections/connectionLoggingField.js +37 -0
  72. package/dist/connections/connectionLoggingField.js.map +1 -0
  73. package/dist/connections/connectionLoggingModel.cjs +16 -0
  74. package/dist/connections/connectionLoggingModel.cjs.map +1 -0
  75. package/dist/connections/connectionLoggingModel.d.ts +6 -0
  76. package/dist/connections/connectionLoggingModel.d.ts.map +1 -0
  77. package/dist/connections/connectionLoggingModel.js +16 -0
  78. package/dist/connections/connectionLoggingModel.js.map +1 -0
  79. package/dist/connections/connectionResolveView.cjs +24 -0
  80. package/dist/connections/connectionResolveView.cjs.map +1 -0
  81. package/dist/connections/connectionResolveView.d.ts +5 -0
  82. package/dist/connections/connectionResolveView.d.ts.map +1 -0
  83. package/dist/connections/connectionResolveView.js +24 -0
  84. package/dist/connections/connectionResolveView.js.map +1 -0
  85. package/dist/connections/connectionTestButton.cjs +58 -0
  86. package/dist/connections/connectionTestButton.cjs.map +1 -0
  87. package/dist/connections/connectionTestButton.d.ts +6 -0
  88. package/dist/connections/connectionTestButton.d.ts.map +1 -0
  89. package/dist/connections/connectionTestButton.js +58 -0
  90. package/dist/connections/connectionTestButton.js.map +1 -0
  91. package/dist/connections/connectionTestView.cjs +12 -0
  92. package/dist/connections/connectionTestView.cjs.map +1 -0
  93. package/dist/connections/connectionTestView.d.ts +5 -0
  94. package/dist/connections/connectionTestView.d.ts.map +1 -0
  95. package/dist/connections/connectionTestView.js +12 -0
  96. package/dist/connections/connectionTestView.js.map +1 -0
  97. package/dist/connections/connectionsPageModel.cjs +33 -0
  98. package/dist/connections/connectionsPageModel.cjs.map +1 -0
  99. package/dist/connections/connectionsPageModel.d.ts +24 -0
  100. package/dist/connections/connectionsPageModel.d.ts.map +1 -0
  101. package/dist/connections/connectionsPageModel.js +33 -0
  102. package/dist/connections/connectionsPageModel.js.map +1 -0
  103. package/dist/connections/iconProvider.cjs +20 -0
  104. package/dist/connections/iconProvider.cjs.map +1 -0
  105. package/dist/connections/iconProvider.d.ts +7 -0
  106. package/dist/connections/iconProvider.d.ts.map +1 -0
  107. package/dist/connections/iconProvider.js +20 -0
  108. package/dist/connections/iconProvider.js.map +1 -0
  109. package/dist/connections.cjs +45 -0
  110. package/dist/connections.cjs.map +1 -0
  111. package/dist/connections.d.ts +34 -0
  112. package/dist/connections.d.ts.map +1 -0
  113. package/dist/connections.js +45 -0
  114. package/dist/connections.js.map +1 -0
  115. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs +52 -295
  116. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs.map +1 -1
  117. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts.map +1 -1
  118. package/dist/data/diagnostics/DiagnosticsDetailPanel.js +47 -290
  119. package/dist/data/diagnostics/DiagnosticsDetailPanel.js.map +1 -1
  120. package/dist/data/diagnostics/MetricTile.cjs +44 -0
  121. package/dist/data/diagnostics/MetricTile.cjs.map +1 -0
  122. package/dist/data/diagnostics/MetricTile.d.ts +13 -0
  123. package/dist/data/diagnostics/MetricTile.d.ts.map +1 -0
  124. package/dist/data/diagnostics/MetricTile.js +44 -0
  125. package/dist/data/diagnostics/MetricTile.js.map +1 -0
  126. package/dist/data/diagnostics/StackDumpView.cjs +227 -0
  127. package/dist/data/diagnostics/StackDumpView.cjs.map +1 -0
  128. package/dist/data/diagnostics/StackDumpView.d.ts +53 -0
  129. package/dist/data/diagnostics/StackDumpView.d.ts.map +1 -0
  130. package/dist/data/diagnostics/StackDumpView.js +227 -0
  131. package/dist/data/diagnostics/StackDumpView.js.map +1 -0
  132. package/dist/data/diagnostics/fixtures.d.ts +1 -0
  133. package/dist/data/diagnostics/fixtures.d.ts.map +1 -1
  134. package/dist/data/diagnostics/metric-tone.cjs +18 -0
  135. package/dist/data/diagnostics/metric-tone.cjs.map +1 -0
  136. package/dist/data/diagnostics/metric-tone.d.ts +6 -0
  137. package/dist/data/diagnostics/metric-tone.d.ts.map +1 -0
  138. package/dist/data/diagnostics/metric-tone.js +18 -0
  139. package/dist/data/diagnostics/metric-tone.js.map +1 -0
  140. package/dist/data/diagnostics/stacktrace.cjs +44 -0
  141. package/dist/data/diagnostics/stacktrace.cjs.map +1 -1
  142. package/dist/data/diagnostics/stacktrace.d.ts +7 -0
  143. package/dist/data/diagnostics/stacktrace.d.ts.map +1 -1
  144. package/dist/data/diagnostics/stacktrace.js +44 -0
  145. package/dist/data/diagnostics/stacktrace.js.map +1 -1
  146. package/dist/data/diagnostics/types.d.ts +2 -8
  147. package/dist/data/diagnostics/types.d.ts.map +1 -1
  148. package/dist/data/lint/LintDetail.cjs +339 -0
  149. package/dist/data/lint/LintDetail.cjs.map +1 -0
  150. package/dist/data/lint/LintDetail.d.ts +17 -0
  151. package/dist/data/lint/LintDetail.d.ts.map +1 -0
  152. package/dist/data/lint/LintDetail.js +339 -0
  153. package/dist/data/lint/LintDetail.js.map +1 -0
  154. package/dist/data/lint/LintFilterBar.cjs +103 -0
  155. package/dist/data/lint/LintFilterBar.cjs.map +1 -0
  156. package/dist/data/lint/LintFilterBar.d.ts +16 -0
  157. package/dist/data/lint/LintFilterBar.d.ts.map +1 -0
  158. package/dist/data/lint/LintFilterBar.js +103 -0
  159. package/dist/data/lint/LintFilterBar.js.map +1 -0
  160. package/dist/data/lint/LintResults.cjs +144 -0
  161. package/dist/data/lint/LintResults.cjs.map +1 -0
  162. package/dist/data/lint/LintResults.d.ts +39 -0
  163. package/dist/data/lint/LintResults.d.ts.map +1 -0
  164. package/dist/data/lint/LintResults.fixtures.d.ts +10 -0
  165. package/dist/data/lint/LintResults.fixtures.d.ts.map +1 -0
  166. package/dist/data/lint/LintResults.js +144 -0
  167. package/dist/data/lint/LintResults.js.map +1 -0
  168. package/dist/data/lint/LintTreeNode.cjs +66 -0
  169. package/dist/data/lint/LintTreeNode.cjs.map +1 -0
  170. package/dist/data/lint/LintTreeNode.d.ts +7 -0
  171. package/dist/data/lint/LintTreeNode.d.ts.map +1 -0
  172. package/dist/data/lint/LintTreeNode.js +66 -0
  173. package/dist/data/lint/LintTreeNode.js.map +1 -0
  174. package/dist/data/lint/actions.cjs +195 -0
  175. package/dist/data/lint/actions.cjs.map +1 -0
  176. package/dist/data/lint/actions.d.ts +29 -0
  177. package/dist/data/lint/actions.d.ts.map +1 -0
  178. package/dist/data/lint/actions.js +195 -0
  179. package/dist/data/lint/actions.js.map +1 -0
  180. package/dist/data/lint/grouping-options.cjs +14 -0
  181. package/dist/data/lint/grouping-options.cjs.map +1 -0
  182. package/dist/data/lint/grouping-options.d.ts +9 -0
  183. package/dist/data/lint/grouping-options.d.ts.map +1 -0
  184. package/dist/data/lint/grouping-options.js +14 -0
  185. package/dist/data/lint/grouping-options.js.map +1 -0
  186. package/dist/data/lint/grouping.cjs +450 -0
  187. package/dist/data/lint/grouping.cjs.map +1 -0
  188. package/dist/data/lint/grouping.d.ts +10 -0
  189. package/dist/data/lint/grouping.d.ts.map +1 -0
  190. package/dist/data/lint/grouping.js +450 -0
  191. package/dist/data/lint/grouping.js.map +1 -0
  192. package/dist/data/lint/index.d.ts +10 -0
  193. package/dist/data/lint/index.d.ts.map +1 -0
  194. package/dist/data/lint/paths.cjs +35 -0
  195. package/dist/data/lint/paths.cjs.map +1 -0
  196. package/dist/data/lint/paths.d.ts +13 -0
  197. package/dist/data/lint/paths.d.ts.map +1 -0
  198. package/dist/data/lint/paths.js +35 -0
  199. package/dist/data/lint/paths.js.map +1 -0
  200. package/dist/data/lint/stats.cjs +76 -0
  201. package/dist/data/lint/stats.cjs.map +1 -0
  202. package/dist/data/lint/stats.d.ts +19 -0
  203. package/dist/data/lint/stats.d.ts.map +1 -0
  204. package/dist/data/lint/stats.js +76 -0
  205. package/dist/data/lint/stats.js.map +1 -0
  206. package/dist/data/lint/types.cjs +16 -0
  207. package/dist/data/lint/types.cjs.map +1 -0
  208. package/dist/data/lint/types.d.ts +93 -0
  209. package/dist/data/lint/types.d.ts.map +1 -0
  210. package/dist/data/lint/types.js +16 -0
  211. package/dist/data/lint/types.js.map +1 -0
  212. package/dist/data/test-runner/TestAttemptDetail.cjs +113 -0
  213. package/dist/data/test-runner/TestAttemptDetail.cjs.map +1 -0
  214. package/dist/data/test-runner/TestAttemptDetail.d.ts +19 -0
  215. package/dist/data/test-runner/TestAttemptDetail.d.ts.map +1 -0
  216. package/dist/data/test-runner/TestAttemptDetail.js +113 -0
  217. package/dist/data/test-runner/TestAttemptDetail.js.map +1 -0
  218. package/dist/data/test-runner/TestAttempts.cjs +36 -0
  219. package/dist/data/test-runner/TestAttempts.cjs.map +1 -0
  220. package/dist/data/test-runner/TestAttempts.d.ts +5 -0
  221. package/dist/data/test-runner/TestAttempts.d.ts.map +1 -0
  222. package/dist/data/test-runner/TestAttempts.js +36 -0
  223. package/dist/data/test-runner/TestAttempts.js.map +1 -0
  224. package/dist/data/test-runner/TestDetailPanel.cjs +13 -3
  225. package/dist/data/test-runner/TestDetailPanel.cjs.map +1 -1
  226. package/dist/data/test-runner/TestDetailPanel.d.ts.map +1 -1
  227. package/dist/data/test-runner/TestDetailPanel.js +14 -4
  228. package/dist/data/test-runner/TestDetailPanel.js.map +1 -1
  229. package/dist/data/test-runner/TestFailureDetail.cjs +9 -29
  230. package/dist/data/test-runner/TestFailureDetail.cjs.map +1 -1
  231. package/dist/data/test-runner/TestFailureDetail.d.ts +6 -6
  232. package/dist/data/test-runner/TestFailureDetail.d.ts.map +1 -1
  233. package/dist/data/test-runner/TestFailureDetail.js +9 -29
  234. package/dist/data/test-runner/TestFailureDetail.js.map +1 -1
  235. package/dist/data/test-runner/TestRunSummary.cjs +33 -0
  236. package/dist/data/test-runner/TestRunSummary.cjs.map +1 -1
  237. package/dist/data/test-runner/TestRunSummary.d.ts.map +1 -1
  238. package/dist/data/test-runner/TestRunSummary.js +34 -1
  239. package/dist/data/test-runner/TestRunSummary.js.map +1 -1
  240. package/dist/data/test-runner/TestRunner.cjs +3 -0
  241. package/dist/data/test-runner/TestRunner.cjs.map +1 -1
  242. package/dist/data/test-runner/TestRunner.d.ts +8 -1
  243. package/dist/data/test-runner/TestRunner.d.ts.map +1 -1
  244. package/dist/data/test-runner/TestRunner.js +3 -0
  245. package/dist/data/test-runner/TestRunner.js.map +1 -1
  246. package/dist/data/test-runner/TestTreeNode.cjs +3 -1
  247. package/dist/data/test-runner/TestTreeNode.cjs.map +1 -1
  248. package/dist/data/test-runner/TestTreeNode.d.ts.map +1 -1
  249. package/dist/data/test-runner/TestTreeNode.js +3 -1
  250. package/dist/data/test-runner/TestTreeNode.js.map +1 -1
  251. package/dist/data/test-runner/adapter.cjs +9 -1
  252. package/dist/data/test-runner/adapter.cjs.map +1 -1
  253. package/dist/data/test-runner/adapter.d.ts +5 -0
  254. package/dist/data/test-runner/adapter.d.ts.map +1 -1
  255. package/dist/data/test-runner/adapter.js +9 -1
  256. package/dist/data/test-runner/adapter.js.map +1 -1
  257. package/dist/data/test-runner/attempts.cjs +62 -0
  258. package/dist/data/test-runner/attempts.cjs.map +1 -0
  259. package/dist/data/test-runner/attempts.d.ts +13 -0
  260. package/dist/data/test-runner/attempts.d.ts.map +1 -0
  261. package/dist/data/test-runner/attempts.js +62 -0
  262. package/dist/data/test-runner/attempts.js.map +1 -0
  263. package/dist/data/test-runner/context.cjs.map +1 -1
  264. package/dist/data/test-runner/context.d.ts +6 -0
  265. package/dist/data/test-runner/context.d.ts.map +1 -1
  266. package/dist/data/test-runner/context.js.map +1 -1
  267. package/dist/data/test-runner/index.d.ts +5 -1
  268. package/dist/data/test-runner/index.d.ts.map +1 -1
  269. package/dist/data/test-runner/marks.cjs +2 -0
  270. package/dist/data/test-runner/marks.cjs.map +1 -1
  271. package/dist/data/test-runner/marks.d.ts.map +1 -1
  272. package/dist/data/test-runner/marks.js +2 -0
  273. package/dist/data/test-runner/marks.js.map +1 -1
  274. package/dist/data/test-runner/process-metrics.cjs +15 -0
  275. package/dist/data/test-runner/process-metrics.cjs.map +1 -0
  276. package/dist/data/test-runner/process-metrics.d.ts +22 -0
  277. package/dist/data/test-runner/process-metrics.d.ts.map +1 -0
  278. package/dist/data/test-runner/process-metrics.js +15 -0
  279. package/dist/data/test-runner/process-metrics.js.map +1 -0
  280. package/dist/data/test-runner/status.cjs +11 -3
  281. package/dist/data/test-runner/status.cjs.map +1 -1
  282. package/dist/data/test-runner/status.d.ts +3 -1
  283. package/dist/data/test-runner/status.d.ts.map +1 -1
  284. package/dist/data/test-runner/status.js +11 -3
  285. package/dist/data/test-runner/status.js.map +1 -1
  286. package/dist/data/test-runner/types.d.ts +14 -0
  287. package/dist/data/test-runner/types.d.ts.map +1 -1
  288. package/dist/data/traces/GoProfileView.cjs +176 -0
  289. package/dist/data/traces/GoProfileView.cjs.map +1 -0
  290. package/dist/data/traces/GoProfileView.d.ts +30 -0
  291. package/dist/data/traces/GoProfileView.d.ts.map +1 -0
  292. package/dist/data/traces/GoProfileView.js +176 -0
  293. package/dist/data/traces/GoProfileView.js.map +1 -0
  294. package/dist/data/traces/ProcessFacetTable.cjs +79 -0
  295. package/dist/data/traces/ProcessFacetTable.cjs.map +1 -0
  296. package/dist/data/traces/ProcessFacetTable.d.ts +21 -0
  297. package/dist/data/traces/ProcessFacetTable.d.ts.map +1 -0
  298. package/dist/data/traces/ProcessFacetTable.js +79 -0
  299. package/dist/data/traces/ProcessFacetTable.js.map +1 -0
  300. package/dist/data/traces/ProcessRecordViews.cjs +41 -0
  301. package/dist/data/traces/ProcessRecordViews.cjs.map +1 -0
  302. package/dist/data/traces/ProcessRecordViews.d.ts +16 -0
  303. package/dist/data/traces/ProcessRecordViews.d.ts.map +1 -0
  304. package/dist/data/traces/ProcessRecordViews.js +41 -0
  305. package/dist/data/traces/ProcessRecordViews.js.map +1 -0
  306. package/dist/data/traces/ProcessTraceDetail.cjs +316 -0
  307. package/dist/data/traces/ProcessTraceDetail.cjs.map +1 -0
  308. package/dist/data/traces/ProcessTraceDetail.d.ts +39 -0
  309. package/dist/data/traces/ProcessTraceDetail.d.ts.map +1 -0
  310. package/dist/data/traces/ProcessTraceDetail.js +316 -0
  311. package/dist/data/traces/ProcessTraceDetail.js.map +1 -0
  312. package/dist/data/traces/ProcessTraceTree.cjs +76 -34
  313. package/dist/data/traces/ProcessTraceTree.cjs.map +1 -1
  314. package/dist/data/traces/ProcessTraceTree.d.ts +21 -4
  315. package/dist/data/traces/ProcessTraceTree.d.ts.map +1 -1
  316. package/dist/data/traces/ProcessTraceTree.js +72 -30
  317. package/dist/data/traces/ProcessTraceTree.js.map +1 -1
  318. package/dist/data/traces/Sparkline.cjs +27 -5
  319. package/dist/data/traces/Sparkline.cjs.map +1 -1
  320. package/dist/data/traces/Sparkline.d.ts +17 -1
  321. package/dist/data/traces/Sparkline.d.ts.map +1 -1
  322. package/dist/data/traces/Sparkline.js +28 -6
  323. package/dist/data/traces/Sparkline.js.map +1 -1
  324. package/dist/data/traces/TraceView.cjs +9 -0
  325. package/dist/data/traces/TraceView.cjs.map +1 -1
  326. package/dist/data/traces/TraceView.d.ts +4 -2
  327. package/dist/data/traces/TraceView.d.ts.map +1 -1
  328. package/dist/data/traces/TraceView.js +9 -0
  329. package/dist/data/traces/TraceView.js.map +1 -1
  330. package/dist/data/traces/TraceWindowList.cjs +117 -0
  331. package/dist/data/traces/TraceWindowList.cjs.map +1 -0
  332. package/dist/data/traces/TraceWindowList.d.ts +48 -0
  333. package/dist/data/traces/TraceWindowList.d.ts.map +1 -0
  334. package/dist/data/traces/TraceWindowList.js +117 -0
  335. package/dist/data/traces/TraceWindowList.js.map +1 -0
  336. package/dist/data/traces/fixtures.d.ts +25 -1
  337. package/dist/data/traces/fixtures.d.ts.map +1 -1
  338. package/dist/data/traces/index.d.ts +10 -3
  339. package/dist/data/traces/index.d.ts.map +1 -1
  340. package/dist/data/traces/process-facets.cjs +48 -0
  341. package/dist/data/traces/process-facets.cjs.map +1 -0
  342. package/dist/data/traces/process-facets.d.ts +38 -0
  343. package/dist/data/traces/process-facets.d.ts.map +1 -0
  344. package/dist/data/traces/process-facets.js +48 -0
  345. package/dist/data/traces/process-facets.js.map +1 -0
  346. package/dist/data/traces/process-tree.cjs +36 -4
  347. package/dist/data/traces/process-tree.cjs.map +1 -1
  348. package/dist/data/traces/process-tree.d.ts +20 -1
  349. package/dist/data/traces/process-tree.d.ts.map +1 -1
  350. package/dist/data/traces/process-tree.js +36 -4
  351. package/dist/data/traces/process-tree.js.map +1 -1
  352. package/dist/data/traces/profile-aggregate.cjs +78 -0
  353. package/dist/data/traces/profile-aggregate.cjs.map +1 -0
  354. package/dist/data/traces/profile-aggregate.d.ts +41 -0
  355. package/dist/data/traces/profile-aggregate.d.ts.map +1 -0
  356. package/dist/data/traces/profile-aggregate.js +78 -0
  357. package/dist/data/traces/profile-aggregate.js.map +1 -0
  358. package/dist/data/traces/stack-checkpoints.cjs +22 -0
  359. package/dist/data/traces/stack-checkpoints.cjs.map +1 -0
  360. package/dist/data/traces/stack-checkpoints.d.ts +18 -0
  361. package/dist/data/traces/stack-checkpoints.d.ts.map +1 -0
  362. package/dist/data/traces/stack-checkpoints.js +22 -0
  363. package/dist/data/traces/stack-checkpoints.js.map +1 -0
  364. package/dist/data/traces/types.d.ts +120 -5
  365. package/dist/data/traces/types.d.ts.map +1 -1
  366. package/dist/data/verification/adapters.cjs +1 -0
  367. package/dist/data/verification/adapters.cjs.map +1 -1
  368. package/dist/data/verification/adapters.d.ts.map +1 -1
  369. package/dist/data/verification/adapters.js +1 -0
  370. package/dist/data/verification/adapters.js.map +1 -1
  371. package/dist/data/version-info.cjs +3 -3
  372. package/dist/data/version-info.js +3 -3
  373. package/dist/data.cjs +85 -7
  374. package/dist/data.cjs.map +1 -1
  375. package/dist/data.d.ts +4 -0
  376. package/dist/data.d.ts.map +1 -1
  377. package/dist/data.js +81 -3
  378. package/dist/data.js.map +1 -1
  379. package/dist/index.cjs +87 -9
  380. package/dist/index.cjs.map +1 -1
  381. package/dist/index.js +81 -3
  382. package/dist/index.js.map +1 -1
  383. package/dist/styles.css +1 -1
  384. package/package.json +6 -1
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const string = require("../lib/string.cjs");
4
+ const CONNECTION_DASHBOARD_QUERY_KEY = "connection-dashboard";
5
+ function groupConnectionDashboardLanes(connections) {
6
+ const lanes = /* @__PURE__ */ new Map();
7
+ for (const connection of connections) {
8
+ const lane = lanes.get(connection.namespace);
9
+ if (lane) lane.push(connection);
10
+ else lanes.set(connection.namespace, [connection]);
11
+ }
12
+ return [...lanes].map(([namespace, items]) => ({
13
+ namespace,
14
+ connections: [...items].sort((a, b) => a.name.localeCompare(b.name))
15
+ })).sort((a, b) => {
16
+ if (a.namespace === "") return 1;
17
+ if (b.namespace === "") return -1;
18
+ return a.namespace.localeCompare(b.namespace);
19
+ });
20
+ }
21
+ function connectionHealthUrl(apiBase) {
22
+ return `${string.stripTrailingSlashes(apiBase)}/connections/health`;
23
+ }
24
+ function connectionDashboardUrl({
25
+ apiBase,
26
+ requestUrl
27
+ }) {
28
+ const search = new URLSearchParams();
29
+ if (requestUrl) {
30
+ const source = new URL(requestUrl, "http://connections.local");
31
+ for (const key of ["type", "types"]) {
32
+ const value = source.searchParams.get(key);
33
+ if (value) search.set(key, value);
34
+ }
35
+ }
36
+ const query = search.toString();
37
+ return `${string.stripTrailingSlashes(apiBase)}/connections/dashboard${query ? `?${query}` : ""}`;
38
+ }
39
+ exports.CONNECTION_DASHBOARD_QUERY_KEY = CONNECTION_DASHBOARD_QUERY_KEY;
40
+ exports.connectionDashboardUrl = connectionDashboardUrl;
41
+ exports.connectionHealthUrl = connectionHealthUrl;
42
+ exports.groupConnectionDashboardLanes = groupConnectionDashboardLanes;
43
+ //# sourceMappingURL=connectionDashboardModel.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectionDashboardModel.cjs","sources":["../../src/connections/connectionDashboardModel.ts"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { stripTrailingSlashes } from \"../lib/string\";\n\n/**\n * The connection dashboard's pure shapes and derivations: what the API returns,\n * how connections group into namespace lanes, and the URLs the dashboard calls\n * under a host's `apiBase` (the path the commons-db connections service is\n * mounted at, e.g. `/api/v1`). Kept apart from the components so the\n * derivations stay directly testable and the component files export\n * components only.\n */\n\nexport type ConnectionDashboardHealthState =\n | \"healthy\"\n | \"credentials\"\n | \"unreachable\"\n | \"unverifiable\"\n | \"unknown\";\n\nexport type ConnectionHealth = {\n state: ConnectionDashboardHealthState;\n detail: string;\n checkedAt: string;\n cached: boolean;\n};\n\nexport type ConnectionDashboardItem = {\n id: string;\n name: string;\n namespace: string;\n type: string;\n endpoint?: { scheme: string; host: string; path?: string };\n secretCount: number;\n inlineCredential: boolean;\n insecureTLS: boolean;\n // Absent until someone checks: listing reads the database only, so a\n // connection has no health until a check is explicitly requested.\n health?: ConnectionHealth | null;\n profileCount: number;\n updatedAt: string;\n};\n\nexport type ConnectionDashboardResponse = {\n connections: ConnectionDashboardItem[];\n generatedAt: string;\n};\n\nexport type ConnectionHealthResult = ConnectionHealth & {\n id: string;\n durationMs: number;\n};\n\nexport type ConnectionHealthResponse = {\n results: ConnectionHealthResult[];\n generatedAt: string;\n};\n\nexport type ConnectionDashboardLane = {\n namespace: string;\n connections: ConnectionDashboardItem[];\n};\n\n/** What a row hands the host to wrap its body in a link to the connection. */\nexport type ConnectionLinkProps = {\n className: string;\n title?: string;\n children: ReactNode;\n};\n\n/**\n * Renders a dashboard row's link. The host owns routing: an EntityExplorerApp\n * host routes through its RouterAdapter's `renderLink`, a host with its own\n * route state renders an anchor that selects the connection.\n */\nexport type ConnectionLinkRenderer = (\n connection: ConnectionDashboardItem,\n link: ConnectionLinkProps,\n) => ReactNode;\n\n/** The react-query key prefix every dashboard listing is cached under. */\nexport const CONNECTION_DASHBOARD_QUERY_KEY = \"connection-dashboard\";\n\nexport function groupConnectionDashboardLanes(\n connections: ConnectionDashboardItem[],\n): ConnectionDashboardLane[] {\n const lanes = new Map<string, ConnectionDashboardItem[]>();\n for (const connection of connections) {\n const lane = lanes.get(connection.namespace);\n if (lane) lane.push(connection);\n else lanes.set(connection.namespace, [connection]);\n }\n return [...lanes]\n .map(([namespace, items]) => ({\n namespace,\n connections: [...items].sort((a, b) => a.name.localeCompare(b.name)),\n }))\n .sort((a, b) => {\n if (a.namespace === \"\") return 1;\n if (b.namespace === \"\") return -1;\n return a.namespace.localeCompare(b.namespace);\n });\n}\n\nexport function connectionHealthUrl(apiBase: string): string {\n return `${stripTrailingSlashes(apiBase)}/connections/health`;\n}\n\n/**\n * The dashboard inventory URL. A list request's connection type filters carry\n * over, so a dashboard rendered in place of a filtered list shows the same\n * subset; paging parameters do not, because the dashboard lists the fleet.\n */\nexport function connectionDashboardUrl({\n apiBase,\n requestUrl,\n}: {\n apiBase: string;\n requestUrl?: string;\n}): string {\n const search = new URLSearchParams();\n if (requestUrl) {\n const source = new URL(requestUrl, \"http://connections.local\");\n for (const key of [\"type\", \"types\"]) {\n const value = source.searchParams.get(key);\n if (value) search.set(key, value);\n }\n }\n const query = search.toString();\n return `${stripTrailingSlashes(apiBase)}/connections/dashboard${query ? `?${query}` : \"\"}`;\n}\n"],"names":["stripTrailingSlashes"],"mappings":";;;AAgFO,MAAM,iCAAiC;AAEvC,SAAS,8BACd,aAC2B;AAC3B,QAAM,4BAAY,IAAA;AAClB,aAAW,cAAc,aAAa;AACpC,UAAM,OAAO,MAAM,IAAI,WAAW,SAAS;AAC3C,QAAI,KAAM,MAAK,KAAK,UAAU;AAAA,eACnB,IAAI,WAAW,WAAW,CAAC,UAAU,CAAC;AAAA,EACnD;AACA,SAAO,CAAC,GAAG,KAAK,EACb,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO;AAAA,IAC5B;AAAA,IACA,aAAa,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAAA,EAAA,EACnE,EACD,KAAK,CAAC,GAAG,MAAM;AACd,QAAI,EAAE,cAAc,GAAI,QAAO;AAC/B,QAAI,EAAE,cAAc,GAAI,QAAO;AAC/B,WAAO,EAAE,UAAU,cAAc,EAAE,SAAS;AAAA,EAC9C,CAAC;AACL;AAEO,SAAS,oBAAoB,SAAyB;AAC3D,SAAO,GAAGA,OAAAA,qBAAqB,OAAO,CAAC;AACzC;AAOO,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA;AACF,GAGW;AACT,QAAM,SAAS,IAAI,gBAAA;AACnB,MAAI,YAAY;AACd,UAAM,SAAS,IAAI,IAAI,YAAY,0BAA0B;AAC7D,eAAW,OAAO,CAAC,QAAQ,OAAO,GAAG;AACnC,YAAM,QAAQ,OAAO,aAAa,IAAI,GAAG;AACzC,UAAI,MAAO,QAAO,IAAI,KAAK,KAAK;AAAA,IAClC;AAAA,EACF;AACA,QAAM,QAAQ,OAAO,SAAA;AACrB,SAAO,GAAGA,OAAAA,qBAAqB,OAAO,CAAC,yBAAyB,QAAQ,IAAI,KAAK,KAAK,EAAE;AAC1F;;;;;"}
@@ -0,0 +1,75 @@
1
+ import { ReactNode } from 'react';
2
+ /**
3
+ * The connection dashboard's pure shapes and derivations: what the API returns,
4
+ * how connections group into namespace lanes, and the URLs the dashboard calls
5
+ * under a host's `apiBase` (the path the commons-db connections service is
6
+ * mounted at, e.g. `/api/v1`). Kept apart from the components so the
7
+ * derivations stay directly testable and the component files export
8
+ * components only.
9
+ */
10
+ export type ConnectionDashboardHealthState = "healthy" | "credentials" | "unreachable" | "unverifiable" | "unknown";
11
+ export type ConnectionHealth = {
12
+ state: ConnectionDashboardHealthState;
13
+ detail: string;
14
+ checkedAt: string;
15
+ cached: boolean;
16
+ };
17
+ export type ConnectionDashboardItem = {
18
+ id: string;
19
+ name: string;
20
+ namespace: string;
21
+ type: string;
22
+ endpoint?: {
23
+ scheme: string;
24
+ host: string;
25
+ path?: string;
26
+ };
27
+ secretCount: number;
28
+ inlineCredential: boolean;
29
+ insecureTLS: boolean;
30
+ health?: ConnectionHealth | null;
31
+ profileCount: number;
32
+ updatedAt: string;
33
+ };
34
+ export type ConnectionDashboardResponse = {
35
+ connections: ConnectionDashboardItem[];
36
+ generatedAt: string;
37
+ };
38
+ export type ConnectionHealthResult = ConnectionHealth & {
39
+ id: string;
40
+ durationMs: number;
41
+ };
42
+ export type ConnectionHealthResponse = {
43
+ results: ConnectionHealthResult[];
44
+ generatedAt: string;
45
+ };
46
+ export type ConnectionDashboardLane = {
47
+ namespace: string;
48
+ connections: ConnectionDashboardItem[];
49
+ };
50
+ /** What a row hands the host to wrap its body in a link to the connection. */
51
+ export type ConnectionLinkProps = {
52
+ className: string;
53
+ title?: string;
54
+ children: ReactNode;
55
+ };
56
+ /**
57
+ * Renders a dashboard row's link. The host owns routing: an EntityExplorerApp
58
+ * host routes through its RouterAdapter's `renderLink`, a host with its own
59
+ * route state renders an anchor that selects the connection.
60
+ */
61
+ export type ConnectionLinkRenderer = (connection: ConnectionDashboardItem, link: ConnectionLinkProps) => ReactNode;
62
+ /** The react-query key prefix every dashboard listing is cached under. */
63
+ export declare const CONNECTION_DASHBOARD_QUERY_KEY = "connection-dashboard";
64
+ export declare function groupConnectionDashboardLanes(connections: ConnectionDashboardItem[]): ConnectionDashboardLane[];
65
+ export declare function connectionHealthUrl(apiBase: string): string;
66
+ /**
67
+ * The dashboard inventory URL. A list request's connection type filters carry
68
+ * over, so a dashboard rendered in place of a filtered list shows the same
69
+ * subset; paging parameters do not, because the dashboard lists the fleet.
70
+ */
71
+ export declare function connectionDashboardUrl({ apiBase, requestUrl, }: {
72
+ apiBase: string;
73
+ requestUrl?: string;
74
+ }): string;
75
+ //# sourceMappingURL=connectionDashboardModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectionDashboardModel.d.ts","sourceRoot":"","sources":["../../src/connections/connectionDashboardModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;;;;GAOG;AAEH,MAAM,MAAM,8BAA8B,GACtC,SAAS,GACT,aAAa,GACb,aAAa,GACb,cAAc,GACd,SAAS,CAAC;AAEd,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,8BAA8B,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IAGrB,MAAM,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,WAAW,EAAE,uBAAuB,EAAE,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,GAAG;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,uBAAuB,EAAE,CAAC;CACxC,CAAC;AAEF,8EAA8E;AAC9E,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,CACnC,UAAU,EAAE,uBAAuB,EACnC,IAAI,EAAE,mBAAmB,KACtB,SAAS,CAAC;AAEf,0EAA0E;AAC1E,eAAO,MAAM,8BAA8B,yBAAyB,CAAC;AAErE,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,uBAAuB,EAAE,GACrC,uBAAuB,EAAE,CAiB3B;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,UAAU,GACX,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAWT"}
@@ -0,0 +1,43 @@
1
+ import { stripTrailingSlashes } from "../lib/string.js";
2
+ const CONNECTION_DASHBOARD_QUERY_KEY = "connection-dashboard";
3
+ function groupConnectionDashboardLanes(connections) {
4
+ const lanes = /* @__PURE__ */ new Map();
5
+ for (const connection of connections) {
6
+ const lane = lanes.get(connection.namespace);
7
+ if (lane) lane.push(connection);
8
+ else lanes.set(connection.namespace, [connection]);
9
+ }
10
+ return [...lanes].map(([namespace, items]) => ({
11
+ namespace,
12
+ connections: [...items].sort((a, b) => a.name.localeCompare(b.name))
13
+ })).sort((a, b) => {
14
+ if (a.namespace === "") return 1;
15
+ if (b.namespace === "") return -1;
16
+ return a.namespace.localeCompare(b.namespace);
17
+ });
18
+ }
19
+ function connectionHealthUrl(apiBase) {
20
+ return `${stripTrailingSlashes(apiBase)}/connections/health`;
21
+ }
22
+ function connectionDashboardUrl({
23
+ apiBase,
24
+ requestUrl
25
+ }) {
26
+ const search = new URLSearchParams();
27
+ if (requestUrl) {
28
+ const source = new URL(requestUrl, "http://connections.local");
29
+ for (const key of ["type", "types"]) {
30
+ const value = source.searchParams.get(key);
31
+ if (value) search.set(key, value);
32
+ }
33
+ }
34
+ const query = search.toString();
35
+ return `${stripTrailingSlashes(apiBase)}/connections/dashboard${query ? `?${query}` : ""}`;
36
+ }
37
+ export {
38
+ CONNECTION_DASHBOARD_QUERY_KEY,
39
+ connectionDashboardUrl,
40
+ connectionHealthUrl,
41
+ groupConnectionDashboardLanes
42
+ };
43
+ //# sourceMappingURL=connectionDashboardModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectionDashboardModel.js","sources":["../../src/connections/connectionDashboardModel.ts"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { stripTrailingSlashes } from \"../lib/string\";\n\n/**\n * The connection dashboard's pure shapes and derivations: what the API returns,\n * how connections group into namespace lanes, and the URLs the dashboard calls\n * under a host's `apiBase` (the path the commons-db connections service is\n * mounted at, e.g. `/api/v1`). Kept apart from the components so the\n * derivations stay directly testable and the component files export\n * components only.\n */\n\nexport type ConnectionDashboardHealthState =\n | \"healthy\"\n | \"credentials\"\n | \"unreachable\"\n | \"unverifiable\"\n | \"unknown\";\n\nexport type ConnectionHealth = {\n state: ConnectionDashboardHealthState;\n detail: string;\n checkedAt: string;\n cached: boolean;\n};\n\nexport type ConnectionDashboardItem = {\n id: string;\n name: string;\n namespace: string;\n type: string;\n endpoint?: { scheme: string; host: string; path?: string };\n secretCount: number;\n inlineCredential: boolean;\n insecureTLS: boolean;\n // Absent until someone checks: listing reads the database only, so a\n // connection has no health until a check is explicitly requested.\n health?: ConnectionHealth | null;\n profileCount: number;\n updatedAt: string;\n};\n\nexport type ConnectionDashboardResponse = {\n connections: ConnectionDashboardItem[];\n generatedAt: string;\n};\n\nexport type ConnectionHealthResult = ConnectionHealth & {\n id: string;\n durationMs: number;\n};\n\nexport type ConnectionHealthResponse = {\n results: ConnectionHealthResult[];\n generatedAt: string;\n};\n\nexport type ConnectionDashboardLane = {\n namespace: string;\n connections: ConnectionDashboardItem[];\n};\n\n/** What a row hands the host to wrap its body in a link to the connection. */\nexport type ConnectionLinkProps = {\n className: string;\n title?: string;\n children: ReactNode;\n};\n\n/**\n * Renders a dashboard row's link. The host owns routing: an EntityExplorerApp\n * host routes through its RouterAdapter's `renderLink`, a host with its own\n * route state renders an anchor that selects the connection.\n */\nexport type ConnectionLinkRenderer = (\n connection: ConnectionDashboardItem,\n link: ConnectionLinkProps,\n) => ReactNode;\n\n/** The react-query key prefix every dashboard listing is cached under. */\nexport const CONNECTION_DASHBOARD_QUERY_KEY = \"connection-dashboard\";\n\nexport function groupConnectionDashboardLanes(\n connections: ConnectionDashboardItem[],\n): ConnectionDashboardLane[] {\n const lanes = new Map<string, ConnectionDashboardItem[]>();\n for (const connection of connections) {\n const lane = lanes.get(connection.namespace);\n if (lane) lane.push(connection);\n else lanes.set(connection.namespace, [connection]);\n }\n return [...lanes]\n .map(([namespace, items]) => ({\n namespace,\n connections: [...items].sort((a, b) => a.name.localeCompare(b.name)),\n }))\n .sort((a, b) => {\n if (a.namespace === \"\") return 1;\n if (b.namespace === \"\") return -1;\n return a.namespace.localeCompare(b.namespace);\n });\n}\n\nexport function connectionHealthUrl(apiBase: string): string {\n return `${stripTrailingSlashes(apiBase)}/connections/health`;\n}\n\n/**\n * The dashboard inventory URL. A list request's connection type filters carry\n * over, so a dashboard rendered in place of a filtered list shows the same\n * subset; paging parameters do not, because the dashboard lists the fleet.\n */\nexport function connectionDashboardUrl({\n apiBase,\n requestUrl,\n}: {\n apiBase: string;\n requestUrl?: string;\n}): string {\n const search = new URLSearchParams();\n if (requestUrl) {\n const source = new URL(requestUrl, \"http://connections.local\");\n for (const key of [\"type\", \"types\"]) {\n const value = source.searchParams.get(key);\n if (value) search.set(key, value);\n }\n }\n const query = search.toString();\n return `${stripTrailingSlashes(apiBase)}/connections/dashboard${query ? `?${query}` : \"\"}`;\n}\n"],"names":[],"mappings":";AAgFO,MAAM,iCAAiC;AAEvC,SAAS,8BACd,aAC2B;AAC3B,QAAM,4BAAY,IAAA;AAClB,aAAW,cAAc,aAAa;AACpC,UAAM,OAAO,MAAM,IAAI,WAAW,SAAS;AAC3C,QAAI,KAAM,MAAK,KAAK,UAAU;AAAA,eACnB,IAAI,WAAW,WAAW,CAAC,UAAU,CAAC;AAAA,EACnD;AACA,SAAO,CAAC,GAAG,KAAK,EACb,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO;AAAA,IAC5B;AAAA,IACA,aAAa,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAAA,EAAA,EACnE,EACD,KAAK,CAAC,GAAG,MAAM;AACd,QAAI,EAAE,cAAc,GAAI,QAAO;AAC/B,QAAI,EAAE,cAAc,GAAI,QAAO;AAC/B,WAAO,EAAE,UAAU,cAAc,EAAE,SAAS;AAAA,EAC9C,CAAC;AACL;AAEO,SAAS,oBAAoB,SAAyB;AAC3D,SAAO,GAAG,qBAAqB,OAAO,CAAC;AACzC;AAOO,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA;AACF,GAGW;AACT,QAAM,SAAS,IAAI,gBAAA;AACnB,MAAI,YAAY;AACd,UAAM,SAAS,IAAI,IAAI,YAAY,0BAA0B;AAC7D,eAAW,OAAO,CAAC,QAAQ,OAAO,GAAG;AACnC,YAAM,QAAQ,OAAO,aAAa,IAAI,GAAG;AACzC,UAAI,MAAO,QAAO,IAAI,KAAK,KAAK;AAAA,IAClC;AAAA,EACF;AACA,QAAM,QAAQ,OAAO,SAAA;AACrB,SAAO,GAAG,qBAAqB,OAAO,CAAC,yBAAyB,QAAQ,IAAI,KAAK,KAAK,EAAE;AAC1F;"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const connectionDashboard = require("./connectionDashboard.cjs");
5
+ function createConnectionDashboardResultRenderer(options) {
6
+ return (context) => {
7
+ var _a;
8
+ if (context.surfaceKey !== "connection") return context.defaultView;
9
+ const requestUrl = (_a = context.response) == null ? void 0 : _a.requestUrl;
10
+ return /* @__PURE__ */ jsxRuntime.jsx(
11
+ connectionDashboard.ConnectionDashboardSurface,
12
+ {
13
+ apiBase: options.apiBase,
14
+ renderConnectionLink: options.renderConnectionLink,
15
+ ...requestUrl ? { requestUrl } : {}
16
+ }
17
+ );
18
+ };
19
+ }
20
+ exports.createConnectionDashboardResultRenderer = createConnectionDashboardResultRenderer;
21
+ //# sourceMappingURL=connectionDashboardRenderer.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectionDashboardRenderer.cjs","sources":["../../src/connections/connectionDashboardRenderer.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport type { ResultRenderContext } from \"../rpc/OperationResultView\";\nimport { ConnectionDashboardSurface } from \"./connectionDashboard\";\nimport type { ConnectionLinkRenderer } from \"./connectionDashboardModel\";\n\n/**\n * Builds an EntityExplorerApp `resultRenderer` that replaces the `connection`\n * surface's list with the dashboard. The dashboard's identity is its request\n * URL alone. Keying it off the response body instead would mint a fresh query\n * cache entry on nearly every render, which is what made the surface refetch\n * constantly.\n */\nexport function createConnectionDashboardResultRenderer(options: {\n apiBase: string;\n renderConnectionLink: ConnectionLinkRenderer;\n}): (context: ResultRenderContext) => ReactNode {\n return (context) => {\n if (context.surfaceKey !== \"connection\") return context.defaultView;\n const requestUrl = context.response?.requestUrl;\n return (\n <ConnectionDashboardSurface\n apiBase={options.apiBase}\n renderConnectionLink={options.renderConnectionLink}\n {...(requestUrl ? { requestUrl } : {})}\n />\n );\n };\n}\n"],"names":["jsx","ConnectionDashboardSurface"],"mappings":";;;;AAYO,SAAS,wCAAwC,SAGR;AAC9C,SAAO,CAAC,YAAY;;AAClB,QAAI,QAAQ,eAAe,aAAc,QAAO,QAAQ;AACxD,UAAM,cAAa,aAAQ,aAAR,mBAAkB;AACrC,WACEA,2BAAAA;AAAAA,MAACC,oBAAAA;AAAAA,MAAA;AAAA,QACC,SAAS,QAAQ;AAAA,QACjB,sBAAsB,QAAQ;AAAA,QAC7B,GAAI,aAAa,EAAE,eAAe,CAAA;AAAA,MAAC;AAAA,IAAA;AAAA,EAG1C;AACF;;"}
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from 'react';
2
+ import { ResultRenderContext } from '../rpc/OperationResultView.js';
3
+ import { ConnectionLinkRenderer } from './connectionDashboardModel.js';
4
+ /**
5
+ * Builds an EntityExplorerApp `resultRenderer` that replaces the `connection`
6
+ * surface's list with the dashboard. The dashboard's identity is its request
7
+ * URL alone. Keying it off the response body instead would mint a fresh query
8
+ * cache entry on nearly every render, which is what made the surface refetch
9
+ * constantly.
10
+ */
11
+ export declare function createConnectionDashboardResultRenderer(options: {
12
+ apiBase: string;
13
+ renderConnectionLink: ConnectionLinkRenderer;
14
+ }): (context: ResultRenderContext) => ReactNode;
15
+ //# sourceMappingURL=connectionDashboardRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectionDashboardRenderer.d.ts","sourceRoot":"","sources":["../../src/connections/connectionDashboardRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEzE;;;;;;GAMG;AACH,wBAAgB,uCAAuC,CAAC,OAAO,EAAE;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,sBAAsB,CAAC;CAC9C,GAAG,CAAC,OAAO,EAAE,mBAAmB,KAAK,SAAS,CAY9C"}
@@ -0,0 +1,21 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { ConnectionDashboardSurface } from "./connectionDashboard.js";
3
+ function createConnectionDashboardResultRenderer(options) {
4
+ return (context) => {
5
+ var _a;
6
+ if (context.surfaceKey !== "connection") return context.defaultView;
7
+ const requestUrl = (_a = context.response) == null ? void 0 : _a.requestUrl;
8
+ return /* @__PURE__ */ jsx(
9
+ ConnectionDashboardSurface,
10
+ {
11
+ apiBase: options.apiBase,
12
+ renderConnectionLink: options.renderConnectionLink,
13
+ ...requestUrl ? { requestUrl } : {}
14
+ }
15
+ );
16
+ };
17
+ }
18
+ export {
19
+ createConnectionDashboardResultRenderer
20
+ };
21
+ //# sourceMappingURL=connectionDashboardRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectionDashboardRenderer.js","sources":["../../src/connections/connectionDashboardRenderer.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport type { ResultRenderContext } from \"../rpc/OperationResultView\";\nimport { ConnectionDashboardSurface } from \"./connectionDashboard\";\nimport type { ConnectionLinkRenderer } from \"./connectionDashboardModel\";\n\n/**\n * Builds an EntityExplorerApp `resultRenderer` that replaces the `connection`\n * surface's list with the dashboard. The dashboard's identity is its request\n * URL alone. Keying it off the response body instead would mint a fresh query\n * cache entry on nearly every render, which is what made the surface refetch\n * constantly.\n */\nexport function createConnectionDashboardResultRenderer(options: {\n apiBase: string;\n renderConnectionLink: ConnectionLinkRenderer;\n}): (context: ResultRenderContext) => ReactNode {\n return (context) => {\n if (context.surfaceKey !== \"connection\") return context.defaultView;\n const requestUrl = context.response?.requestUrl;\n return (\n <ConnectionDashboardSurface\n apiBase={options.apiBase}\n renderConnectionLink={options.renderConnectionLink}\n {...(requestUrl ? { requestUrl } : {})}\n />\n );\n };\n}\n"],"names":[],"mappings":";;AAYO,SAAS,wCAAwC,SAGR;AAC9C,SAAO,CAAC,YAAY;;AAClB,QAAI,QAAQ,eAAe,aAAc,QAAO,QAAQ;AACxD,UAAM,cAAa,aAAQ,aAAR,mBAAkB;AACrC,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAS,QAAQ;AAAA,QACjB,sBAAsB,QAAQ;AAAA,QAC7B,GAAI,aAAa,EAAE,eAAe,CAAA;AAAA,MAAC;AAAA,IAAA;AAAA,EAG1C;AACF;"}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const Icon = require("../data/Icon.cjs");
5
+ const utils = require("../lib/utils.cjs");
6
+ const iconProvider = require("./iconProvider.cjs");
7
+ const UiLink = require("../icons/components/UiLink.cjs");
8
+ const UiLock = require("../icons/components/UiLock.cjs");
9
+ const UiKey = require("../icons/components/UiKey.cjs");
10
+ const UiWarningTriangle = require("../icons/components/UiWarningTriangle.cjs");
11
+ const HEALTH_LABELS = {
12
+ healthy: "Reachable",
13
+ credentials: "Credentials failed",
14
+ unreachable: "Unreachable",
15
+ unverifiable: "Not verifiable",
16
+ unknown: "Check did not complete"
17
+ };
18
+ const HEALTH_LEGEND_LABELS = {
19
+ healthy: "reachable",
20
+ credentials: "credentials failed",
21
+ unreachable: "unreachable",
22
+ unverifiable: "no endpoint to probe",
23
+ unknown: "check did not complete"
24
+ };
25
+ const HEALTH_STYLES = {
26
+ healthy: { dot: "bg-emerald-400", edge: "border-l-emerald-400" },
27
+ credentials: { dot: "bg-amber-400", edge: "border-l-amber-400" },
28
+ unreachable: { dot: "bg-rose-400", edge: "border-l-rose-400" },
29
+ unverifiable: { dot: "bg-muted-foreground", edge: "border-l-border" },
30
+ unknown: { dot: "bg-muted-foreground/50", edge: "border-l-border" }
31
+ };
32
+ const UNCHECKED_EDGE = "border-l-transparent";
33
+ function ConnectionDashboardRow({
34
+ connection,
35
+ health,
36
+ pending,
37
+ onCheck,
38
+ renderConnectionLink
39
+ }) {
40
+ return /* @__PURE__ */ jsxRuntime.jsxs(
41
+ "div",
42
+ {
43
+ className: utils.cn(
44
+ "flex min-w-0 items-center gap-3 border-l-2 py-2 pl-3 pr-2 hover:bg-muted/30",
45
+ health ? HEALTH_STYLES[health.state].edge : UNCHECKED_EDGE
46
+ ),
47
+ children: [
48
+ /* @__PURE__ */ jsxRuntime.jsx(
49
+ HealthDot,
50
+ {
51
+ health,
52
+ pending,
53
+ onCheck: () => onCheck([connection.id], { force: Boolean(health) })
54
+ }
55
+ ),
56
+ renderConnectionLink(connection, {
57
+ ...(health == null ? void 0 : health.detail) ? { title: health.detail } : {},
58
+ className: "flex min-w-0 flex-1 items-center gap-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",
59
+ children: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
60
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0", "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx(iconProvider.ConnectionTypeIcon, { type: connection.type, className: "size-4" }) }),
61
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-32 shrink-0 truncate text-sm font-medium md:w-40", title: connection.name, children: connection.name }),
62
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(EndpointLine, { endpoint: connection.endpoint }) }),
63
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "hidden shrink-0 items-center gap-1.5 lg:flex", children: [
64
+ /* @__PURE__ */ jsxRuntime.jsx(SecretChip, { count: connection.secretCount }),
65
+ /* @__PURE__ */ jsxRuntime.jsx(RiskChips, { connection })
66
+ ] }),
67
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-24 shrink-0 text-right text-xs text-muted-foreground", children: connection.profileCount === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground/60", children: "unused" }) : `${connection.profileCount} profile${connection.profileCount === 1 ? "" : "s"}` }),
68
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden w-16 shrink-0 text-right text-xs text-muted-foreground/70 xl:inline", children: ageLabel(connection.updatedAt) })
69
+ ] })
70
+ })
71
+ ]
72
+ }
73
+ );
74
+ }
75
+ function HealthDot({
76
+ health,
77
+ pending,
78
+ onCheck
79
+ }) {
80
+ const label = pending ? "Checking health" : health ? `${HEALTH_LABELS[health.state]} — check again` : "Check health";
81
+ return /* @__PURE__ */ jsxRuntime.jsx(
82
+ "button",
83
+ {
84
+ type: "button",
85
+ onClick: onCheck,
86
+ disabled: pending,
87
+ title: (health == null ? void 0 : health.detail) ?? label,
88
+ "aria-label": label,
89
+ className: "shrink-0 rounded-full p-1 hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
90
+ children: /* @__PURE__ */ jsxRuntime.jsx(
91
+ "span",
92
+ {
93
+ className: utils.cn(
94
+ "block size-2 rounded-full",
95
+ pending ? "animate-pulse bg-muted-foreground/60" : health ? HEALTH_STYLES[health.state].dot : "border border-muted-foreground/50"
96
+ )
97
+ }
98
+ )
99
+ }
100
+ );
101
+ }
102
+ function EndpointLine({ endpoint }) {
103
+ if (!endpoint) {
104
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1.5 text-xs text-muted-foreground", children: [
105
+ /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiLink.UiLink, className: "text-xs" }),
106
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "italic", children: "Resolved from ambient config" })
107
+ ] });
108
+ }
109
+ const indirect = ["connection", "host", "portforward"].includes(endpoint.scheme);
110
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 items-center gap-1.5 font-mono text-xs", children: [
111
+ /* @__PURE__ */ jsxRuntime.jsx(
112
+ "span",
113
+ {
114
+ className: utils.cn(
115
+ "shrink-0 rounded px-1 py-0.5 text-[10px] ring-1 ring-inset",
116
+ indirect ? "bg-violet-100 text-violet-700 ring-violet-300/60 dark:bg-violet-400/10 dark:text-violet-300 dark:ring-violet-400/25" : "bg-muted text-muted-foreground ring-border"
117
+ ),
118
+ children: endpoint.scheme
119
+ }
120
+ ),
121
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "truncate text-foreground", title: `${endpoint.host}${endpoint.path ?? ""}`, children: [
122
+ endpoint.host,
123
+ endpoint.path ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: endpoint.path }) : null
124
+ ] })
125
+ ] });
126
+ }
127
+ function SecretChip({ count }) {
128
+ if (count === 0) return null;
129
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1 rounded bg-teal-100 px-1.5 py-0.5 text-[11px] text-teal-700 ring-1 ring-inset ring-teal-300/60 dark:bg-teal-400/10 dark:text-teal-300 dark:ring-teal-400/25", children: [
130
+ /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiLock.UiLock, className: "text-[11px]" }),
131
+ count,
132
+ " secret",
133
+ count === 1 ? "" : "s"
134
+ ] });
135
+ }
136
+ function RiskChips({ connection }) {
137
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
138
+ connection.inlineCredential ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1 rounded bg-rose-100 px-1.5 py-0.5 text-[11px] text-rose-700 ring-1 ring-inset ring-rose-300/60 dark:bg-rose-400/10 dark:text-rose-300 dark:ring-rose-400/25", children: [
139
+ /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiKey.UiKey, className: "text-[11px]" }),
140
+ "Password in URL"
141
+ ] }) : null,
142
+ connection.insecureTLS ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1 rounded bg-amber-100 px-1.5 py-0.5 text-[11px] text-amber-800 ring-1 ring-inset ring-amber-300/60 dark:bg-amber-400/10 dark:text-amber-300 dark:ring-amber-400/25", children: [
143
+ /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiWarningTriangle.UiWarningTriangle, className: "text-[11px]" }),
144
+ "TLS verification off"
145
+ ] }) : null
146
+ ] });
147
+ }
148
+ function ConnectionHealthLegend() {
149
+ return /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-muted-foreground", children: [
150
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1.5", children: [
151
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block size-2 rounded-full border border-muted-foreground/50" }),
152
+ "not checked"
153
+ ] }),
154
+ ["healthy", "credentials", "unreachable", "unverifiable", "unknown"].map(
155
+ (state) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1.5", children: [
156
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: utils.cn("inline-block h-3 w-0.5", HEALTH_STYLES[state].dot) }),
157
+ HEALTH_LEGEND_LABELS[state]
158
+ ] }, state)
159
+ )
160
+ ] });
161
+ }
162
+ function ageLabel(updatedAt) {
163
+ const timestamp = Date.parse(updatedAt);
164
+ if (!Number.isFinite(timestamp)) return "—";
165
+ return `${Math.max(0, Math.floor((Date.now() - timestamp) / 864e5))}d`;
166
+ }
167
+ exports.ConnectionDashboardRow = ConnectionDashboardRow;
168
+ exports.ConnectionHealthLegend = ConnectionHealthLegend;
169
+ //# sourceMappingURL=connectionDashboardRow.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectionDashboardRow.cjs","sources":["../../src/connections/connectionDashboardRow.tsx"],"sourcesContent":["import { Icon } from \"../data/Icon\";\nimport { UiKey, UiLink, UiLock, UiWarningTriangle } from \"../icons\";\nimport { cn } from \"../lib/utils\";\nimport { ConnectionTypeIcon } from \"./iconProvider\";\nimport type {\n ConnectionDashboardHealthState,\n ConnectionDashboardItem,\n ConnectionHealth,\n ConnectionLinkRenderer,\n} from \"./connectionDashboardModel\";\n\nconst HEALTH_LABELS: Record<ConnectionDashboardHealthState, string> = {\n healthy: \"Reachable\",\n credentials: \"Credentials failed\",\n unreachable: \"Unreachable\",\n unverifiable: \"Not verifiable\",\n unknown: \"Check did not complete\",\n};\n\nconst HEALTH_LEGEND_LABELS: Record<ConnectionDashboardHealthState, string> = {\n healthy: \"reachable\",\n credentials: \"credentials failed\",\n unreachable: \"unreachable\",\n unverifiable: \"no endpoint to probe\",\n unknown: \"check did not complete\",\n};\n\nconst HEALTH_STYLES: Record<\n ConnectionDashboardHealthState,\n { dot: string; edge: string }\n> = {\n healthy: { dot: \"bg-emerald-400\", edge: \"border-l-emerald-400\" },\n credentials: { dot: \"bg-amber-400\", edge: \"border-l-amber-400\" },\n unreachable: { dot: \"bg-rose-400\", edge: \"border-l-rose-400\" },\n unverifiable: { dot: \"bg-muted-foreground\", edge: \"border-l-border\" },\n unknown: { dot: \"bg-muted-foreground/50\", edge: \"border-l-border\" },\n};\n\nconst UNCHECKED_EDGE = \"border-l-transparent\";\n\nexport function ConnectionDashboardRow({\n connection,\n health,\n pending,\n onCheck,\n renderConnectionLink,\n}: {\n connection: ConnectionDashboardItem;\n health?: ConnectionHealth | undefined;\n pending: boolean;\n onCheck: (ids: string[], options?: { force?: boolean }) => void;\n renderConnectionLink: ConnectionLinkRenderer;\n}) {\n return (\n <div\n className={cn(\n \"flex min-w-0 items-center gap-3 border-l-2 py-2 pl-3 pr-2 hover:bg-muted/30\",\n health ? HEALTH_STYLES[health.state].edge : UNCHECKED_EDGE,\n )}\n >\n {/* The dot sits outside the link: a button nested in an anchor is invalid\n markup and the anchor swallows its click. */}\n <HealthDot\n health={health}\n pending={pending}\n onCheck={() => onCheck([connection.id], { force: Boolean(health) })}\n />\n {renderConnectionLink(connection, {\n ...(health?.detail ? { title: health.detail } : {}),\n className:\n \"flex min-w-0 flex-1 items-center gap-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset\",\n children: (\n <>\n <span className=\"shrink-0\" aria-hidden>\n <ConnectionTypeIcon type={connection.type} className=\"size-4\" />\n </span>\n <span className=\"w-32 shrink-0 truncate text-sm font-medium md:w-40\" title={connection.name}>\n {connection.name}\n </span>\n <div className=\"min-w-0 flex-1\">\n <EndpointLine endpoint={connection.endpoint} />\n </div>\n <div className=\"hidden shrink-0 items-center gap-1.5 lg:flex\">\n <SecretChip count={connection.secretCount} />\n <RiskChips connection={connection} />\n </div>\n <span className=\"w-24 shrink-0 text-right text-xs text-muted-foreground\">\n {connection.profileCount === 0 ? (\n <span className=\"text-muted-foreground/60\">unused</span>\n ) : (\n `${connection.profileCount} profile${connection.profileCount === 1 ? \"\" : \"s\"}`\n )}\n </span>\n <span className=\"hidden w-16 shrink-0 text-right text-xs text-muted-foreground/70 xl:inline\">\n {ageLabel(connection.updatedAt)}\n </span>\n </>\n ),\n })}\n </div>\n );\n}\n\nfunction HealthDot({\n health,\n pending,\n onCheck,\n}: {\n health?: ConnectionHealth | undefined;\n pending: boolean;\n onCheck: () => void;\n}) {\n const label = pending\n ? \"Checking health\"\n : health\n ? `${HEALTH_LABELS[health.state]} — check again`\n : \"Check health\";\n return (\n <button\n type=\"button\"\n onClick={onCheck}\n disabled={pending}\n title={health?.detail ?? label}\n aria-label={label}\n className=\"shrink-0 rounded-full p-1 hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <span\n className={cn(\n \"block size-2 rounded-full\",\n pending\n ? \"animate-pulse bg-muted-foreground/60\"\n : health\n ? HEALTH_STYLES[health.state].dot\n : \"border border-muted-foreground/50\",\n )}\n />\n </button>\n );\n}\n\nfunction EndpointLine({ endpoint }: { endpoint: ConnectionDashboardItem[\"endpoint\"] }) {\n if (!endpoint) {\n return (\n <span className=\"inline-flex items-center gap-1.5 text-xs text-muted-foreground\">\n <Icon icon={UiLink} className=\"text-xs\" />\n <span className=\"italic\">Resolved from ambient config</span>\n </span>\n );\n }\n const indirect = [\"connection\", \"host\", \"portforward\"].includes(endpoint.scheme);\n return (\n <span className=\"flex min-w-0 items-center gap-1.5 font-mono text-xs\">\n <span\n className={cn(\n \"shrink-0 rounded px-1 py-0.5 text-[10px] ring-1 ring-inset\",\n indirect\n ? \"bg-violet-100 text-violet-700 ring-violet-300/60 dark:bg-violet-400/10 dark:text-violet-300 dark:ring-violet-400/25\"\n : \"bg-muted text-muted-foreground ring-border\",\n )}\n >\n {endpoint.scheme}\n </span>\n <span className=\"truncate text-foreground\" title={`${endpoint.host}${endpoint.path ?? \"\"}`}>\n {endpoint.host}\n {endpoint.path ? <span className=\"text-muted-foreground\">{endpoint.path}</span> : null}\n </span>\n </span>\n );\n}\n\nfunction SecretChip({ count }: { count: number }) {\n if (count === 0) return null;\n return (\n <span className=\"inline-flex items-center gap-1 rounded bg-teal-100 px-1.5 py-0.5 text-[11px] text-teal-700 ring-1 ring-inset ring-teal-300/60 dark:bg-teal-400/10 dark:text-teal-300 dark:ring-teal-400/25\">\n <Icon icon={UiLock} className=\"text-[11px]\" />\n {count} secret{count === 1 ? \"\" : \"s\"}\n </span>\n );\n}\n\nfunction RiskChips({ connection }: { connection: ConnectionDashboardItem }) {\n return (\n <>\n {connection.inlineCredential ? (\n <span className=\"inline-flex items-center gap-1 rounded bg-rose-100 px-1.5 py-0.5 text-[11px] text-rose-700 ring-1 ring-inset ring-rose-300/60 dark:bg-rose-400/10 dark:text-rose-300 dark:ring-rose-400/25\">\n <Icon icon={UiKey} className=\"text-[11px]\" />\n Password in URL\n </span>\n ) : null}\n {connection.insecureTLS ? (\n <span className=\"inline-flex items-center gap-1 rounded bg-amber-100 px-1.5 py-0.5 text-[11px] text-amber-800 ring-1 ring-inset ring-amber-300/60 dark:bg-amber-400/10 dark:text-amber-300 dark:ring-amber-400/25\">\n <Icon icon={UiWarningTriangle} className=\"text-[11px]\" />\n TLS verification off\n </span>\n ) : null}\n </>\n );\n}\n\nexport function ConnectionHealthLegend() {\n return (\n <p className=\"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-muted-foreground\">\n <span className=\"inline-flex items-center gap-1.5\">\n <span className=\"inline-block size-2 rounded-full border border-muted-foreground/50\" />\n not checked\n </span>\n {([\"healthy\", \"credentials\", \"unreachable\", \"unverifiable\", \"unknown\"] as const).map(\n (state) => (\n <span key={state} className=\"inline-flex items-center gap-1.5\">\n <span className={cn(\"inline-block h-3 w-0.5\", HEALTH_STYLES[state].dot)} />\n {HEALTH_LEGEND_LABELS[state]}\n </span>\n ),\n )}\n </p>\n );\n}\n\nfunction ageLabel(updatedAt: string): string {\n const timestamp = Date.parse(updatedAt);\n if (!Number.isFinite(timestamp)) return \"—\";\n return `${Math.max(0, Math.floor((Date.now() - timestamp) / 86_400_000))}d`;\n}\n"],"names":["jsxs","cn","jsx","Fragment","ConnectionTypeIcon","Icon","UiLink","UiLock","UiKey","UiWarningTriangle"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { ConnectionDashboardItem, ConnectionHealth, ConnectionLinkRenderer } from './connectionDashboardModel.js';
2
+ export declare function ConnectionDashboardRow({ connection, health, pending, onCheck, renderConnectionLink, }: {
3
+ connection: ConnectionDashboardItem;
4
+ health?: ConnectionHealth | undefined;
5
+ pending: boolean;
6
+ onCheck: (ids: string[], options?: {
7
+ force?: boolean;
8
+ }) => void;
9
+ renderConnectionLink: ConnectionLinkRenderer;
10
+ }): import("react").JSX.Element;
11
+ export declare function ConnectionHealthLegend(): import("react").JSX.Element;
12
+ //# sourceMappingURL=connectionDashboardRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectionDashboardRow.d.ts","sourceRoot":"","sources":["../../src/connections/connectionDashboardRow.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,4BAA4B,CAAC;AA+BpC,wBAAgB,sBAAsB,CAAC,EACrC,UAAU,EACV,MAAM,EACN,OAAO,EACP,OAAO,EACP,oBAAoB,GACrB,EAAE;IACD,UAAU,EAAE,uBAAuB,CAAC;IACpC,MAAM,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAChE,oBAAoB,EAAE,sBAAsB,CAAC;CAC9C,+BAiDA;AAkGD,wBAAgB,sBAAsB,gCAiBrC"}