@pb33f/cowboy-components 0.7.18 → 0.8.0

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 (532) hide show
  1. package/dist/_basePickBy-DtTwxTrV.js +151 -0
  2. package/dist/_baseUniq-C5Y4WFmx.js +614 -0
  3. package/dist/arc-a-7w7y90.js +83 -0
  4. package/dist/architecture-U656AL7Q-c_zxypEp.js +5 -0
  5. package/dist/architectureDiagram-VXUJARFQ-CIhQJ6xS.js +4661 -0
  6. package/dist/assets/elk-layout.worker-B71_NI2D.js +1 -0
  7. package/dist/assets/equalizer.worker-A8HFNy4g.js +1 -0
  8. package/dist/assets/graph-dependent.worker-BgWuMZsb.js +1 -0
  9. package/dist/assets/rule-documentation.worker-BCKuwSgZ.js +1 -0
  10. package/dist/assets/search-graph.worker-Cwqb-ecv.js +1 -0
  11. package/dist/blockDiagram-VD42YOAC-BLl5ID-l.js +2261 -0
  12. package/dist/c4Diagram-YG6GDRKO-BOGfb13x.js +1580 -0
  13. package/dist/channel-DYeI56io.js +5 -0
  14. package/dist/chunk-4BX2VUAB-BeHGB7ON.js +8 -0
  15. package/dist/chunk-55IACEB6-DgHUzWsw.js +8 -0
  16. package/dist/chunk-B4BG7PRW-Vs7GiQMf.js +1375 -0
  17. package/dist/chunk-DI55MBZ5-CHjdGXx0.js +1370 -0
  18. package/dist/chunk-FMBD7UC4-D-H9-bHN.js +19 -0
  19. package/dist/chunk-QN33PNHL-D7uE2r1Y.js +19 -0
  20. package/dist/chunk-QZHKN3VN-Cp3sUp7e.js +15 -0
  21. package/dist/chunk-TZMSLE5B-BmXGcXo9.js +64 -0
  22. package/dist/classDiagram-2ON5EDUG-9ilqiDEi.js +16 -0
  23. package/dist/classDiagram-v2-WZHVMYZB-9ilqiDEi.js +16 -0
  24. package/dist/clone-CybyMoa0.js +8 -0
  25. package/dist/components/attention-box/attention-box.css.js +8 -0
  26. package/dist/components/auth/login-button.js +1 -1
  27. package/dist/components/auth/login-panel.d.ts +4 -0
  28. package/dist/components/auth/login-panel.js +12 -4
  29. package/dist/components/auth/oauth-login.css.js +4 -0
  30. package/dist/components/auth/oauth-login.d.ts +2 -0
  31. package/dist/components/auth/oauth-login.js +12 -3
  32. package/dist/components/brokerable.d.ts +21 -0
  33. package/dist/components/brokerable.js +39 -0
  34. package/dist/components/bundle-toolbar/bundle-toolbar.css.js +110 -0
  35. package/dist/components/bundle-toolbar/bundle-toolbar.d.ts +21 -0
  36. package/dist/components/bundle-toolbar/bundle-toolbar.js +93 -0
  37. package/dist/components/changelog/changelog.css.js +2 -0
  38. package/dist/components/changelog/changelog.d.ts +2 -0
  39. package/dist/components/changelog/changelog.js +10 -1
  40. package/dist/components/changelog/release.css.js +5 -1
  41. package/dist/components/charts/beefy-chart.js +0 -2
  42. package/dist/components/charts/doughnut-chart.d.ts +5 -1
  43. package/dist/components/charts/doughnut-chart.js +20 -1
  44. package/dist/components/credit-ticker/credit-ticker.d.ts +3 -0
  45. package/dist/components/credit-ticker/credit-ticker.js +20 -4
  46. package/dist/components/details-drawer/details-drawer.css.d.ts +2 -0
  47. package/dist/components/{problem-list → details-drawer}/details-drawer.css.js +18 -3
  48. package/dist/components/details-drawer/generic-details-drawer.css.d.ts +1 -0
  49. package/dist/components/details-drawer/generic-details-drawer.css.js +219 -0
  50. package/dist/components/details-drawer/generic-details-drawer.d.ts +38 -0
  51. package/dist/components/details-drawer/generic-details-drawer.js +245 -0
  52. package/dist/components/details-drawer/handlers/diagram-handler.d.ts +35 -0
  53. package/dist/components/details-drawer/handlers/diagram-handler.js +248 -0
  54. package/dist/components/details-drawer/handlers/documentation-handler.d.ts +11 -0
  55. package/dist/components/details-drawer/handlers/documentation-handler.js +46 -0
  56. package/dist/components/details-drawer/handlers/example-handler.d.ts +18 -0
  57. package/dist/components/details-drawer/handlers/example-handler.js +146 -0
  58. package/dist/components/details-drawer/handlers/howto-handler.d.ts +11 -0
  59. package/dist/components/details-drawer/handlers/howto-handler.js +36 -0
  60. package/dist/components/details-drawer/handlers/markdown-handler.d.ts +12 -0
  61. package/dist/components/details-drawer/handlers/markdown-handler.js +54 -0
  62. package/dist/components/editor/editor-breadcrumb.css.js +1 -1
  63. package/dist/components/editor/editor.css.js +42 -0
  64. package/dist/components/editor/editor.d.ts +29 -3
  65. package/dist/components/editor/editor.js +495 -73
  66. package/dist/components/github/github-workspace-view.css.d.ts +2 -0
  67. package/dist/components/github/github-workspace-view.css.js +165 -0
  68. package/dist/components/github/github-workspace-view.d.ts +59 -0
  69. package/dist/components/github/github-workspace-view.js +525 -0
  70. package/dist/components/global-task/global-task-view.css.d.ts +2 -0
  71. package/dist/components/global-task/global-task-view.css.js +392 -0
  72. package/dist/components/global-task/global-task-view.d.ts +48 -0
  73. package/dist/components/global-task/global-task-view.js +359 -0
  74. package/dist/components/header/header.css.js +9 -1
  75. package/dist/components/http-method/http-method.css.js +5 -1
  76. package/dist/components/indeterminate-loader/indeterminate-loader.css.d.ts +2 -0
  77. package/dist/components/indeterminate-loader/indeterminate-loader.css.js +135 -0
  78. package/dist/components/indeterminate-loader/indeterminate-loader.d.ts +35 -0
  79. package/dist/components/indeterminate-loader/indeterminate-loader.js +201 -0
  80. package/dist/components/kv-view/kv-view.css.js +2 -0
  81. package/dist/components/kv-view/kv-view.js +0 -1
  82. package/dist/components/logo-wall/logo-wall.css.js +9 -0
  83. package/dist/components/manage-ruleset/manage-ruleset.css.js +14 -1
  84. package/dist/components/manage-ruleset/manage-ruleset.d.ts +1 -0
  85. package/dist/components/manage-ruleset/manage-ruleset.js +54 -22
  86. package/dist/components/manage-ruleset/rule-action.css.js +2 -0
  87. package/dist/components/manage-ruleset/rule-action.d.ts +10 -3
  88. package/dist/components/manage-ruleset/rule-action.js +118 -129
  89. package/dist/components/manage-ruleset/rule-input.d.ts +3 -1
  90. package/dist/components/manage-ruleset/rule-input.js +38 -34
  91. package/dist/components/manage-ruleset/rule.css.js +15 -1
  92. package/dist/components/manage-ruleset/rule.d.ts +4 -1
  93. package/dist/components/manage-ruleset/rule.js +44 -17
  94. package/dist/components/mermaid/mermaid-renderer.css.d.ts +1 -0
  95. package/dist/components/mermaid/mermaid-renderer.css.js +121 -0
  96. package/dist/components/mermaid/mermaid-renderer.d.ts +75 -0
  97. package/dist/components/mermaid/mermaid-renderer.js +485 -0
  98. package/dist/components/model-icon/doctor-icon.d.ts +9 -0
  99. package/dist/components/model-icon/doctor-icon.js +60 -0
  100. package/dist/components/model-icon/model-icon.d.ts +2 -1
  101. package/dist/components/model-icon/model-icon.js +13 -1
  102. package/dist/components/model-renderer/change.css.js +22 -8
  103. package/dist/components/model-renderer/changes.d.ts +1 -0
  104. package/dist/components/model-renderer/changes.js +47 -32
  105. package/dist/components/model-renderer/clickable-ref.d.ts +9 -3
  106. package/dist/components/model-renderer/clickable-ref.js +49 -10
  107. package/dist/components/model-renderer/components.d.ts +2 -0
  108. package/dist/components/model-renderer/components.js +196 -116
  109. package/dist/components/model-renderer/contact.js +2 -2
  110. package/dist/components/model-renderer/description.css.js +2 -0
  111. package/dist/components/model-renderer/document.d.ts +1 -0
  112. package/dist/components/model-renderer/document.js +14 -9
  113. package/dist/components/model-renderer/encoding.d.ts +2 -0
  114. package/dist/components/model-renderer/encoding.js +16 -7
  115. package/dist/components/model-renderer/example.css.js +5 -1
  116. package/dist/components/model-renderer/example.d.ts +4 -1
  117. package/dist/components/model-renderer/example.js +72 -118
  118. package/dist/components/model-renderer/extensions.d.ts +2 -0
  119. package/dist/components/model-renderer/extensions.js +11 -2
  120. package/dist/components/model-renderer/external-docs.d.ts +2 -0
  121. package/dist/components/model-renderer/external-docs.js +13 -4
  122. package/dist/components/model-renderer/has-changes.js +3 -3
  123. package/dist/components/model-renderer/header.d.ts +2 -0
  124. package/dist/components/model-renderer/header.js +27 -14
  125. package/dist/components/model-renderer/info.d.ts +2 -0
  126. package/dist/components/model-renderer/info.js +20 -7
  127. package/dist/components/model-renderer/link.d.ts +2 -0
  128. package/dist/components/model-renderer/link.js +27 -10
  129. package/dist/components/model-renderer/media-type.js +2 -2
  130. package/dist/components/model-renderer/model-badge.d.ts +11 -0
  131. package/dist/components/model-renderer/model-badge.js +59 -0
  132. package/dist/components/model-renderer/model-shared.css.js +14 -2
  133. package/dist/components/model-renderer/oauth-flows.js +4 -4
  134. package/dist/components/model-renderer/operation.d.ts +2 -1
  135. package/dist/components/model-renderer/operation.js +37 -16
  136. package/dist/components/model-renderer/param-location.js +3 -3
  137. package/dist/components/model-renderer/parameter.d.ts +2 -0
  138. package/dist/components/model-renderer/parameter.js +28 -15
  139. package/dist/components/model-renderer/path-item.d.ts +3 -0
  140. package/dist/components/model-renderer/path-item.js +52 -80
  141. package/dist/components/model-renderer/paths.d.ts +2 -0
  142. package/dist/components/model-renderer/paths.js +10 -3
  143. package/dist/components/model-renderer/problem-node.js +10 -10
  144. package/dist/components/model-renderer/rendered-node.css.js +35 -6
  145. package/dist/components/model-renderer/rendered-node.d.ts +14 -4
  146. package/dist/components/model-renderer/rendered-node.js +121 -58
  147. package/dist/components/model-renderer/rendered-property.js +4 -4
  148. package/dist/components/model-renderer/request-body.d.ts +2 -0
  149. package/dist/components/model-renderer/request-body.js +16 -9
  150. package/dist/components/model-renderer/response.d.ts +2 -0
  151. package/dist/components/model-renderer/response.js +35 -17
  152. package/dist/components/model-renderer/schema.css.js +10 -1
  153. package/dist/components/model-renderer/schema.d.ts +3 -2
  154. package/dist/components/model-renderer/schema.js +127 -129
  155. package/dist/components/model-renderer/security-scheme.js +3 -3
  156. package/dist/components/model-renderer/server.js +18 -8
  157. package/dist/components/model-renderer/tag.js +1 -1
  158. package/dist/components/model-tree/tree.css.js +21 -10
  159. package/dist/components/model-tree/tree.d.ts +39 -22
  160. package/dist/components/model-tree/tree.js +230 -167
  161. package/dist/components/paginator/paginator-navigator.css.js +9 -5
  162. package/dist/components/paginator/paginator-navigator.js +6 -6
  163. package/dist/components/paginator/paginator.css.js +2 -0
  164. package/dist/components/paginator/paginator.js +5 -8
  165. package/dist/components/percent-bar/percent-bar.css.js +133 -13
  166. package/dist/components/percent-bar/percent-bar.d.ts +2 -0
  167. package/dist/components/percent-bar/percent-bar.js +28 -24
  168. package/dist/components/premium-gate/premium-gate.css.d.ts +1 -0
  169. package/dist/components/premium-gate/premium-gate.css.js +117 -0
  170. package/dist/components/premium-gate/premium-gate.d.ts +49 -0
  171. package/dist/components/premium-gate/premium-gate.js +336 -0
  172. package/dist/components/problem-list/problem-list.css.js +72 -1
  173. package/dist/components/problem-list/problem-list.d.ts +17 -9
  174. package/dist/components/problem-list/problem-list.js +222 -226
  175. package/dist/components/problem-list/problem-mainview.css.js +12 -2
  176. package/dist/components/problem-list/problem-mainview.d.ts +3 -0
  177. package/dist/components/problem-list/problem-mainview.js +37 -17
  178. package/dist/components/problem-list/problem-toolbar.css.js +10 -7
  179. package/dist/components/problems-overview/diagnostic-evaluation.css.js +11 -1
  180. package/dist/components/problems-overview/diagnostic-evaluation.js +6 -7
  181. package/dist/components/problems-overview/document-statistic.css.js +6 -0
  182. package/dist/components/problems-overview/document-statistic.js +1 -1
  183. package/dist/components/problems-overview/problem-overview-group.js +5 -5
  184. package/dist/components/problems-overview/problem-statistic.css.js +24 -5
  185. package/dist/components/problems-overview/problem-statistic.js +15 -6
  186. package/dist/components/problems-overview/problem-statistics.css.js +4 -4
  187. package/dist/components/problems-overview/problem-statistics.js +29 -25
  188. package/dist/components/problems-overview/problems-overview.css.js +2 -2
  189. package/dist/components/property-view/property-view.css.js +2 -0
  190. package/dist/components/render-json-path/render-json-path.css.js +11 -3
  191. package/dist/components/render-json-path/render-json-path.js +3 -0
  192. package/dist/components/render-operation-path/render-operation-path.css.js +9 -0
  193. package/dist/components/render-operation-path/render-operation-path.js +7 -22
  194. package/dist/components/rodeo/rodeo.d.ts +1 -0
  195. package/dist/components/rodeo/rodeo.js +5 -0
  196. package/dist/components/rodeo/roundup.js +2 -2
  197. package/dist/components/rodeo/statistic.css.js +25 -2
  198. package/dist/components/rodeo/statistic.js +0 -4
  199. package/dist/components/shader-canvas/shader-canvas.css.d.ts +2 -0
  200. package/dist/components/shader-canvas/shader-canvas.css.js +66 -0
  201. package/dist/components/shader-canvas/shader-canvas.d.ts +36 -0
  202. package/dist/components/shader-canvas/shader-canvas.js +363 -0
  203. package/dist/components/shaders/flowing-waves-shader.d.ts +2 -0
  204. package/dist/components/shaders/flowing-waves-shader.js +70 -0
  205. package/dist/components/shaders/neon-canyon-shader.d.ts +2 -0
  206. package/dist/components/shaders/neon-canyon-shader.js +265 -0
  207. package/dist/components/shaders/neon-lines-shader.d.ts +2 -0
  208. package/dist/components/shaders/neon-lines-shader.js +181 -0
  209. package/dist/components/shaders/neon-squircles-shader.d.ts +2 -0
  210. package/dist/components/shaders/neon-squircles-shader.js +56 -0
  211. package/dist/components/shaders/retro-grid-shader.d.ts +2 -0
  212. package/dist/components/shaders/retro-grid-shader.js +53 -0
  213. package/dist/components/shaders/shader-base.d.ts +9 -0
  214. package/dist/components/shaders/shader-base.js +11 -0
  215. package/dist/components/terminal/terminal-example.css.js +4 -0
  216. package/dist/components/terminal/terminal-example.js +2 -3
  217. package/dist/components/terminal-emulator/terminal-emulator.css.js +12 -2
  218. package/dist/components/terminal-emulator/terminal-emulator.d.ts +7 -1
  219. package/dist/components/terminal-emulator/terminal-emulator.js +10 -5
  220. package/dist/components/the-doctor/doctor-controls-panel.css.d.ts +2 -0
  221. package/dist/components/the-doctor/doctor-controls-panel.css.js +53 -0
  222. package/dist/components/the-doctor/doctor-controls-panel.d.ts +20 -0
  223. package/dist/components/the-doctor/doctor-controls-panel.js +78 -0
  224. package/dist/components/the-doctor/doctor-editor-panel.css.d.ts +2 -0
  225. package/dist/components/the-doctor/doctor-editor-panel.css.js +209 -0
  226. package/dist/components/the-doctor/doctor-editor-panel.d.ts +41 -0
  227. package/dist/components/the-doctor/doctor-editor-panel.js +188 -0
  228. package/dist/components/the-doctor/doctor-navigator-panel.css.d.ts +2 -0
  229. package/dist/components/the-doctor/doctor-navigator-panel.css.js +134 -0
  230. package/dist/components/the-doctor/doctor-navigator-panel.d.ts +35 -0
  231. package/dist/components/the-doctor/doctor-navigator-panel.js +117 -0
  232. package/dist/components/the-doctor/doctor-sidebar-panel.css.d.ts +2 -0
  233. package/dist/components/the-doctor/doctor-sidebar-panel.css.js +143 -0
  234. package/dist/components/the-doctor/doctor-sidebar-panel.d.ts +31 -0
  235. package/dist/components/the-doctor/doctor-sidebar-panel.js +131 -0
  236. package/dist/components/the-doctor/doctor-url-overlay.css.d.ts +2 -0
  237. package/dist/components/the-doctor/doctor-url-overlay.css.js +59 -0
  238. package/dist/components/the-doctor/doctor-url-overlay.d.ts +23 -0
  239. package/dist/components/the-doctor/doctor-url-overlay.js +82 -0
  240. package/dist/components/the-doctor/nuke-workspace.js +4 -3
  241. package/dist/components/the-doctor/settings.css.js +2 -0
  242. package/dist/components/the-doctor/settings.js +5 -8
  243. package/dist/components/the-doctor/status-bar.d.ts +2 -2
  244. package/dist/components/the-doctor/status-bar.js +32 -31
  245. package/dist/components/the-doctor/the-doctor.css.js +47 -238
  246. package/dist/components/the-doctor/the-doctor.d.ts +149 -37
  247. package/dist/components/the-doctor/the-doctor.js +958 -528
  248. package/dist/components/the-doctor/upload-archive.css.js +8 -2
  249. package/dist/components/the-doctor/upload-archive.js +2 -2
  250. package/dist/components/theme-switcher/theme-switcher.js +5 -1
  251. package/dist/components/time-vortex/change-list-item.css.js +18 -4
  252. package/dist/components/time-vortex/change-list-item.d.ts +1 -0
  253. package/dist/components/time-vortex/change-list-item.js +4 -3
  254. package/dist/components/time-vortex/history-picker.css.js +60 -1
  255. package/dist/components/time-vortex/history-picker.d.ts +7 -1
  256. package/dist/components/time-vortex/history-picker.js +109 -5
  257. package/dist/components/time-vortex/tardis-control.css.js +339 -14
  258. package/dist/components/time-vortex/tardis-control.d.ts +31 -3
  259. package/dist/components/time-vortex/tardis-control.js +296 -58
  260. package/dist/components/time-vortex/time-vortex.d.ts +8 -2
  261. package/dist/components/time-vortex/time-vortex.js +54 -13
  262. package/dist/components/toast/toast-component.css.js +1 -0
  263. package/dist/components/toast/toast-component.d.ts +1 -0
  264. package/dist/components/toast/toast-component.js +23 -8
  265. package/dist/components/toast/toast-manager.d.ts +5 -0
  266. package/dist/components/toast/toast-manager.js +29 -7
  267. package/dist/components/visualizer/edge.d.ts +11 -1
  268. package/dist/components/visualizer/edge.js +27 -22
  269. package/dist/components/visualizer/equalizer.css.js +118 -76
  270. package/dist/components/visualizer/equalizer.d.ts +24 -45
  271. package/dist/components/visualizer/equalizer.js +262 -363
  272. package/dist/components/visualizer/explorer.d.ts +94 -14
  273. package/dist/components/visualizer/explorer.js +580 -393
  274. package/dist/components/visualizer/foreign-object.d.ts +12 -2
  275. package/dist/components/visualizer/foreign-object.js +21 -10
  276. package/dist/components/visualizer/key.js +12 -1
  277. package/dist/components/visualizer/nodes/callback.d.ts +2 -1
  278. package/dist/components/visualizer/nodes/callback.js +2 -2
  279. package/dist/components/visualizer/nodes/components.d.ts +2 -1
  280. package/dist/components/visualizer/nodes/components.js +2 -2
  281. package/dist/components/visualizer/nodes/contact.d.ts +2 -1
  282. package/dist/components/visualizer/nodes/contact.js +2 -2
  283. package/dist/components/visualizer/nodes/document.d.ts +2 -1
  284. package/dist/components/visualizer/nodes/document.js +2 -2
  285. package/dist/components/visualizer/nodes/graph-node.d.ts +14 -3
  286. package/dist/components/visualizer/nodes/graph-node.js +94 -43
  287. package/dist/components/visualizer/nodes/header.d.ts +2 -1
  288. package/dist/components/visualizer/nodes/header.js +2 -2
  289. package/dist/components/visualizer/nodes/info.d.ts +2 -1
  290. package/dist/components/visualizer/nodes/info.js +2 -2
  291. package/dist/components/visualizer/nodes/license.d.ts +2 -1
  292. package/dist/components/visualizer/nodes/license.js +2 -2
  293. package/dist/components/visualizer/nodes/link.d.ts +2 -1
  294. package/dist/components/visualizer/nodes/link.js +2 -2
  295. package/dist/components/visualizer/nodes/media-type.d.ts +2 -1
  296. package/dist/components/visualizer/nodes/media-type.js +2 -2
  297. package/dist/components/visualizer/nodes/operation.d.ts +2 -1
  298. package/dist/components/visualizer/nodes/operation.js +3 -4
  299. package/dist/components/visualizer/nodes/parameter.d.ts +3 -1
  300. package/dist/components/visualizer/nodes/parameter.js +3 -4
  301. package/dist/components/visualizer/nodes/path-item.d.ts +2 -1
  302. package/dist/components/visualizer/nodes/path-item.js +2 -2
  303. package/dist/components/visualizer/nodes/request-body.d.ts +2 -1
  304. package/dist/components/visualizer/nodes/request-body.js +2 -2
  305. package/dist/components/visualizer/nodes/response.d.ts +2 -1
  306. package/dist/components/visualizer/nodes/response.js +2 -2
  307. package/dist/components/visualizer/nodes/schema.d.ts +2 -1
  308. package/dist/components/visualizer/nodes/schema.js +64 -9
  309. package/dist/components/visualizer/nodes/security-scheme.d.ts +2 -1
  310. package/dist/components/visualizer/nodes/security-scheme.js +2 -2
  311. package/dist/components/visualizer/nodes/server.d.ts +2 -1
  312. package/dist/components/visualizer/nodes/server.js +3 -4
  313. package/dist/components/visualizer/nodes/tag.d.ts +2 -1
  314. package/dist/components/visualizer/nodes/tag.js +4 -5
  315. package/dist/components/visualizer/nodes/xml.d.ts +2 -1
  316. package/dist/components/visualizer/nodes/xml.js +2 -2
  317. package/dist/components/visualizer/orientation-controls.d.ts +6 -1
  318. package/dist/components/visualizer/orientation-controls.js +65 -7
  319. package/dist/components/visualizer/search.d.ts +2 -1
  320. package/dist/components/visualizer/search.js +22 -29
  321. package/dist/components/visualizer/shared.css.js +55 -18
  322. package/dist/components/visualizer/templates/svg-markers.d.ts +2 -0
  323. package/dist/components/visualizer/templates/svg-markers.js +73 -0
  324. package/dist/components/waiting-line/waiting-line.css.d.ts +2 -0
  325. package/dist/components/waiting-line/waiting-line.css.js +26 -0
  326. package/dist/components/waiting-line/waiting-line.d.ts +30 -0
  327. package/dist/components/waiting-line/waiting-line.js +424 -0
  328. package/dist/components/workspaces/workspace-view.css.js +89 -8
  329. package/dist/components/workspaces/workspace-view.d.ts +8 -1
  330. package/dist/components/workspaces/workspace-view.js +77 -25
  331. package/dist/controllers/auth-controller.d.ts +9 -0
  332. package/dist/controllers/auth-controller.js +12 -5
  333. package/dist/controllers/broker-controller.d.ts +30 -4
  334. package/dist/controllers/broker-controller.js +148 -25
  335. package/dist/controllers/bundle-controller.d.ts +21 -0
  336. package/dist/controllers/bundle-controller.js +122 -0
  337. package/dist/controllers/countdown-controller.d.ts +17 -0
  338. package/dist/controllers/countdown-controller.js +59 -0
  339. package/dist/controllers/diagnostic-controller.d.ts +18 -5
  340. package/dist/controllers/diagnostic-controller.js +206 -218
  341. package/dist/controllers/diagramatron-controller.d.ts +33 -0
  342. package/dist/controllers/diagramatron-controller.js +128 -0
  343. package/dist/controllers/docs-controller.d.ts +11 -5
  344. package/dist/controllers/docs-controller.js +97 -97
  345. package/dist/controllers/github-controller.d.ts +47 -0
  346. package/dist/controllers/github-controller.js +494 -0
  347. package/dist/controllers/global-task-controller.d.ts +46 -0
  348. package/dist/controllers/global-task-controller.js +352 -0
  349. package/dist/controllers/model-controller.d.ts +26 -4
  350. package/dist/controllers/model-controller.js +98 -62
  351. package/dist/controllers/node-clicker-controller.d.ts +121 -4
  352. package/dist/controllers/node-clicker-controller.js +526 -253
  353. package/dist/controllers/problem-controller.d.ts +11 -4
  354. package/dist/controllers/problem-controller.js +98 -39
  355. package/dist/controllers/rolodex-controller.d.ts +8 -3
  356. package/dist/controllers/rolodex-controller.js +117 -83
  357. package/dist/controllers/rule-controller.d.ts +12 -5
  358. package/dist/controllers/rule-controller.js +154 -161
  359. package/dist/controllers/spec-controller.d.ts +16 -4
  360. package/dist/controllers/spec-controller.js +91 -62
  361. package/dist/controllers/state-controller.d.ts +4 -3
  362. package/dist/controllers/state-controller.js +201 -154
  363. package/dist/controllers/tab-cache-controller.d.ts +29 -0
  364. package/dist/controllers/tab-cache-controller.js +68 -0
  365. package/dist/controllers/timeline-controller.d.ts +18 -0
  366. package/dist/controllers/timeline-controller.js +129 -0
  367. package/dist/controllers/wallet-controller.d.ts +3 -3
  368. package/dist/controllers/wallet-controller.js +22 -41
  369. package/dist/controllers/workspace-controller.d.ts +10 -4
  370. package/dist/controllers/workspace-controller.js +67 -22
  371. package/dist/cose-bilkent-S5V4N54A-2TG-C-n3.js +2608 -0
  372. package/dist/cowboy-components-BcyXo9oX.js +68425 -0
  373. package/dist/cowboy-components.css +1 -1
  374. package/dist/cowboy-components.umd.cjs +14117 -6601
  375. package/dist/css/alerts.css.js +2 -0
  376. package/dist/css/badges.css.js +2 -0
  377. package/dist/css/button.css.js +34 -1
  378. package/dist/css/cowboy-components.css +34 -0
  379. package/dist/css/dialog.css.js +11 -2
  380. package/dist/css/filter.css.js +17 -5
  381. package/dist/css/forms.css.js +14 -0
  382. package/dist/css/pb33f-theme.css +87 -16
  383. package/dist/css/syntax.css.js +5 -0
  384. package/dist/css/tabs.css.js +19 -2
  385. package/dist/css/tooltip.css.js +4 -0
  386. package/dist/cytoscape.esm-DfdJODL8.js +18735 -0
  387. package/dist/dagre-6UL2VRFP-BIlmTbhO.js +444 -0
  388. package/dist/defaultLocale-D7EN2tov.js +171 -0
  389. package/dist/diagram-PSM6KHXK-CeWby24E.js +531 -0
  390. package/dist/diagram-QEK2KX5R-DGonyVCK.js +217 -0
  391. package/dist/diagram-S2PKOQOG-mGn-y1uX.js +142 -0
  392. package/dist/erDiagram-Q2GNP2WA-BlBBw4Mz.js +841 -0
  393. package/dist/events/doctor.d.ts +63 -9
  394. package/dist/events/doctor.js +29 -1
  395. package/dist/events/drawer-events.d.ts +7 -0
  396. package/dist/events/drawer-events.js +3 -0
  397. package/dist/events/theme.d.ts +4 -0
  398. package/dist/events/theme.js +1 -0
  399. package/dist/factories/explorer-component-factory.d.ts +49 -0
  400. package/dist/factories/explorer-component-factory.js +205 -0
  401. package/dist/factories/state-controller-deps.factory.d.ts +88 -0
  402. package/dist/factories/state-controller-deps.factory.js +116 -0
  403. package/dist/flowDiagram-NV44I4VS-BlLzzy1C.js +1620 -0
  404. package/dist/ganttDiagram-LVOFAZNH-BoQtPC8k.js +2505 -0
  405. package/dist/gitGraph-F6HP7TQM-CShNSlrW.js +5 -0
  406. package/dist/gitGraphDiagram-NY62KEGX-BdpWBgHy.js +699 -0
  407. package/dist/graph-D9HS4Ahd.js +247 -0
  408. package/dist/helpers/event-wiring.d.ts +72 -0
  409. package/dist/helpers/event-wiring.js +58 -0
  410. package/dist/helpers/file-size-formatter.d.ts +3 -0
  411. package/dist/helpers/file-size-formatter.js +15 -0
  412. package/dist/helpers/filename-colorizer.d.ts +5 -0
  413. package/dist/helpers/filename-colorizer.js +30 -0
  414. package/dist/helpers/navigation-helper.d.ts +54 -0
  415. package/dist/helpers/navigation-helper.js +159 -0
  416. package/dist/helpers/typed-events.d.ts +1 -0
  417. package/dist/helpers/typed-events.js +3 -0
  418. package/dist/info-NVLQJR56-Bpi6I8up.js +5 -0
  419. package/dist/infoDiagram-F6ZHWCRC-DmhhbuMJ.js +24 -0
  420. package/dist/init-DjUOC4st.js +16 -0
  421. package/dist/interfaces/bundle-interfaces.d.ts +7 -0
  422. package/dist/interfaces/bundle-interfaces.js +1 -0
  423. package/dist/interfaces/doctor-interfaces.d.ts +506 -0
  424. package/dist/interfaces/doctor-interfaces.js +1 -0
  425. package/dist/journeyDiagram-XKPGCS4Q-CpkhK8vl.js +834 -0
  426. package/dist/kanban-definition-3W4ZIXB7-BFbucfYE.js +719 -0
  427. package/dist/katex-SsTUIUTC.js +11688 -0
  428. package/dist/layout-B8H1_UrM.js +1324 -0
  429. package/dist/linear-Bo0rJUSQ.js +259 -0
  430. package/dist/managers/drag-handler.d.ts +28 -0
  431. package/dist/managers/drag-handler.js +64 -0
  432. package/dist/managers/event-registration-manager.d.ts +17 -0
  433. package/dist/managers/event-registration-manager.js +34 -0
  434. package/dist/managers/expansion-manager.d.ts +58 -0
  435. package/dist/managers/expansion-manager.js +189 -0
  436. package/dist/managers/layout-filter-manager.d.ts +31 -0
  437. package/dist/managers/layout-filter-manager.js +109 -0
  438. package/dist/managers/panel-divider-manager.d.ts +33 -0
  439. package/dist/managers/panel-divider-manager.js +71 -0
  440. package/dist/managers/view-state-manager.d.ts +48 -0
  441. package/dist/managers/view-state-manager.js +101 -0
  442. package/dist/managers/viewport-manager.d.ts +53 -0
  443. package/dist/managers/viewport-manager.js +198 -0
  444. package/dist/mermaid-parser.core-BPror82d.js +12966 -0
  445. package/dist/mindmap-definition-VGOIOE7T-VAn-EShH.js +784 -0
  446. package/dist/mocks/task-mock-generator.d.ts +13 -0
  447. package/dist/mocks/task-mock-generator.js +200 -0
  448. package/dist/model/api-response.d.ts +2 -7
  449. package/dist/model/api-response.js +0 -2
  450. package/dist/model/bundle.d.ts +35 -0
  451. package/dist/model/bundle.js +1 -0
  452. package/dist/model/channels.d.ts +8 -1
  453. package/dist/model/channels.js +7 -0
  454. package/dist/model/drawer-content.d.ts +80 -0
  455. package/dist/model/drawer-content.js +14 -0
  456. package/dist/model/formable.js +22 -11
  457. package/dist/model/github.d.ts +125 -0
  458. package/dist/model/github.js +1 -0
  459. package/dist/model/graph.d.ts +15 -15
  460. package/dist/model/graph.js +24 -4
  461. package/dist/model/media-type.js +2 -2
  462. package/dist/model/node_type.d.ts +4 -0
  463. package/dist/model/node_type.js +4 -0
  464. package/dist/model/panel-state.d.ts +1 -0
  465. package/dist/model/rolodex.d.ts +3 -0
  466. package/dist/model/task.d.ts +50 -0
  467. package/dist/model/task.js +22 -0
  468. package/dist/model/timeline.d.ts +107 -1
  469. package/dist/model/tree-icon-config.d.ts +11 -0
  470. package/dist/model/tree-icon-config.js +46 -0
  471. package/dist/model/workspace.d.ts +2 -0
  472. package/dist/ordinal-DfAQgscy.js +61 -0
  473. package/dist/packet-BFZMPI3H-CXPCK9Q2.js +5 -0
  474. package/dist/pie-7BOR55EZ-CMcuUZ_S.js +5 -0
  475. package/dist/pieDiagram-ADFJNKIX-C0kdlQqn.js +161 -0
  476. package/dist/quadrantDiagram-AYHSOK5B-CRVq6wY3.js +1022 -0
  477. package/dist/radar-NHE76QYJ-CX_Gyp4h.js +5 -0
  478. package/dist/requirementDiagram-UZGBJVZJ-B8ZGgMKn.js +850 -0
  479. package/dist/sankeyDiagram-TZEHDZUN-CWAUJJue.js +810 -0
  480. package/dist/sequenceDiagram-WL72ISMW-nz81a4Cq.js +2511 -0
  481. package/dist/services/diagramatron-service.d.ts +20 -0
  482. package/dist/services/diagramatron-service.js +48 -0
  483. package/dist/services/doctor-events.d.ts +58 -0
  484. package/dist/services/doctor-events.js +33 -0
  485. package/dist/services/drawer-content-registry.d.ts +9 -0
  486. package/dist/services/drawer-content-registry.js +37 -0
  487. package/dist/services/github-service.d.ts +9 -0
  488. package/dist/services/github-service.js +166 -0
  489. package/dist/services/global-task-service.d.ts +6 -0
  490. package/dist/services/global-task-service.js +27 -0
  491. package/dist/services/header-service.d.ts +5 -3
  492. package/dist/services/header-service.js +13 -0
  493. package/dist/services/linting-service.d.ts +2 -0
  494. package/dist/services/linting-service.js +19 -2
  495. package/dist/services/mermaid-config-service.d.ts +53 -0
  496. package/dist/services/mermaid-config-service.js +519 -0
  497. package/dist/services/model-service.d.ts +12 -7
  498. package/dist/services/model-service.js +64 -11
  499. package/dist/services/rodeo-service.js +12 -12
  500. package/dist/services/timeline-service.d.ts +12 -2
  501. package/dist/services/timeline-service.js +329 -0
  502. package/dist/services/wallet-service.d.ts +1 -1
  503. package/dist/services/wallet-service.js +4 -1
  504. package/dist/services/workspace-service.js +16 -2
  505. package/dist/stateDiagram-FKZM4ZOC-3PFzJlcG.js +263 -0
  506. package/dist/stateDiagram-v2-4FDKWEC3-Bp46vM6_.js +16 -0
  507. package/dist/timeline-definition-IT6M3QCI-utm7jTLb.js +795 -0
  508. package/dist/treemap-KMMF4GRG-BvEKHn43.js +5 -0
  509. package/dist/utils/language-utils.d.ts +1 -0
  510. package/dist/utils/language-utils.js +23 -0
  511. package/dist/utils/lru-cache.d.ts +11 -0
  512. package/dist/utils/lru-cache.js +38 -0
  513. package/dist/utils/node-helpers.d.ts +6 -0
  514. package/dist/utils/node-helpers.js +62 -0
  515. package/dist/utils/path-utils.d.ts +5 -0
  516. package/dist/utils/path-utils.js +22 -0
  517. package/dist/workers/elk-layout.worker.d.ts +2 -0
  518. package/dist/workers/elk-layout.worker.js +31 -0
  519. package/dist/workers/equalizer.worker.d.ts +6 -1
  520. package/dist/workers/equalizer.worker.js +144 -195
  521. package/dist/workers/graph-dependent.worker.js +6 -6
  522. package/dist/workers/rule-documentation.worker.js +12 -48
  523. package/dist/workers/search-graph.worker.js +8 -23
  524. package/dist/xychartDiagram-PRI3JC2R-twqDKWMX.js +1340 -0
  525. package/package.json +17 -10
  526. package/dist/assets/equalizer.worker-B1FBgh0h.js +0 -1
  527. package/dist/assets/graph-dependent.worker-CxW1u577.js +0 -1
  528. package/dist/assets/rule-documentation.worker-B4_JKUg4.js +0 -1
  529. package/dist/assets/search-graph.worker-DJxOIWLn.js +0 -1
  530. package/dist/components/problem-list/details-drawer.d.ts +0 -34
  531. package/dist/components/problem-list/details-drawer.js +0 -200
  532. /package/dist/components/{problem-list/details-drawer.css.d.ts → bundle-toolbar/bundle-toolbar.css.d.ts} +0 -0
@@ -6,10 +6,11 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { html } from "lit";
8
8
  import { customElement, state } from "lit/decorators.js";
9
+ import { GitHubWorkspaceView } from "../github/github-workspace-view.js";
9
10
  import { Formable } from "../../model/formable.js";
10
11
  import { WorkspaceForm } from "./workspace-form.js";
11
12
  import { WorkspaceDestroyView } from "./workspace-destroy-dialog.js";
12
- import { DeleteWorkspace, SwitchWorkspace, FormSubmitComplete, RefreshWorkspaces, CreateWorkspace, UpdateWorkspace, DailyCreditRequested, DailyCreditApplied, DailyCreditErrorChanged } from "../../events/doctor.js";
13
+ import { DeleteWorkspace, SwitchWorkspace, FormSubmitComplete, RefreshWorkspaces, CreateWorkspace, UpdateWorkspace, DailyCreditRequested, DailyCreditApplied, DailyCreditErrorChanged, LinkedWorkspaceHoverOver, LinkedWorkspaceHoverOut } from "../../events/doctor.js";
13
14
  import { AttentionType } from "../attention-box/attention-box.js";
14
15
  import listsCss from "../../css/lists.css.js";
15
16
  import workspaceViewCss from "./workspace-view.css.js";
@@ -17,16 +18,21 @@ import badgesCss from "../../css/badges.css.js";
17
18
  import linksCss from "../../css/links.css.js";
18
19
  import tooltipCss from "../../css/tooltip.css.js";
19
20
  import hrCss from "../../css/hr.css.js";
21
+ import { DoctorIcon } from "../model-icon/doctor-icon.js";
20
22
  let WorkspacesView = class WorkspacesView extends Formable {
21
- constructor(doc, wsController, walletController) {
23
+ constructor(doc, wsController, walletController, githubController) {
22
24
  super(doc);
23
25
  this.doc = doc;
24
26
  this.wsController = wsController;
25
27
  this.walletController = walletController;
28
+ this.githubController = githubController;
26
29
  this.active = false;
27
30
  this.mutateWorkspaceActive = false;
28
31
  this.workspaceForm = new WorkspaceForm();
29
32
  this.destroyDialog = new WorkspaceDestroyView();
33
+ this.githubView = new GitHubWorkspaceView();
34
+ this.githubView.githubController = this.githubController;
35
+ this.githubController.setGitHubView(this.githubView);
30
36
  this.setupDestroyDialogEvents();
31
37
  this.setupWorkspaceFormEvents();
32
38
  this.setupWalletEvents();
@@ -58,6 +64,13 @@ let WorkspacesView = class WorkspacesView extends Formable {
58
64
  this.walletController.addEventListener(DailyCreditApplied, () => this.requestUpdate());
59
65
  this.walletController.addEventListener(DailyCreditErrorChanged, () => this.requestUpdate());
60
66
  }
67
+ async firstUpdated() {
68
+ // Initialize GitHub controller after the view is rendered
69
+ if (this.githubController && this.doc?.brokerController) {
70
+ await this.doc.brokerController.waitUntilReady();
71
+ await this.githubController.init();
72
+ }
73
+ }
61
74
  handleDailyCreditRequest() {
62
75
  this.walletController.dispatchEvent(new CustomEvent(DailyCreditRequested, {
63
76
  bubbles: true,
@@ -84,17 +97,17 @@ let WorkspacesView = class WorkspacesView extends Formable {
84
97
  }
85
98
  lightWorkspace(id) {
86
99
  if (id) {
87
- let li = this.shadowRoot?.querySelector('li#workspace-' + id);
88
- if (li) {
89
- li.classList.add('active');
100
+ let row = this.shadowRoot?.querySelector('.workspace-row#workspace-' + id);
101
+ if (row) {
102
+ row.classList.add('active');
90
103
  }
91
104
  }
92
105
  }
93
106
  dimWorkspace(id) {
94
107
  if (id) {
95
- let li = this.shadowRoot?.querySelector('li#workspace-' + id);
96
- if (li) {
97
- li.classList.remove('active');
108
+ let row = this.shadowRoot?.querySelector('.workspace-row#workspace-' + id);
109
+ if (row) {
110
+ row.classList.remove('active');
98
111
  }
99
112
  }
100
113
  }
@@ -123,10 +136,40 @@ let WorkspacesView = class WorkspacesView extends Formable {
123
136
  deleteWorkspaceError(error) {
124
137
  this.destroyDialog.setError(error);
125
138
  }
139
+ handleWorkspaceHover(workspace) {
140
+ this.lightWorkspace(workspace.workspaceId);
141
+ if (workspace.linkedRepo && workspace.workspaceId) {
142
+ this.githubController.dispatchEvent(new CustomEvent(LinkedWorkspaceHoverOver, {
143
+ bubbles: true,
144
+ composed: true,
145
+ detail: {
146
+ repositoryId: workspace.linkedRepo,
147
+ workspaceId: workspace.workspaceId,
148
+ workspaceName: workspace.name
149
+ }
150
+ }));
151
+ }
152
+ }
153
+ handleWorkspaceUnhover(workspace) {
154
+ this.dimWorkspace(workspace.workspaceId);
155
+ if (workspace.linkedRepo && workspace.workspaceId) {
156
+ this.githubController.dispatchEvent(new CustomEvent(LinkedWorkspaceHoverOut, {
157
+ bubbles: true,
158
+ composed: true,
159
+ detail: {
160
+ repositoryId: workspace.linkedRepo,
161
+ workspaceId: workspace.workspaceId,
162
+ workspaceName: workspace.name
163
+ }
164
+ }));
165
+ }
166
+ }
126
167
  render() {
127
168
  if (!this.workspaces || this.workspaces.length === 0) {
128
169
  return html ``;
129
170
  }
171
+ const activeWorkspace = this.workspaces.find(w => w.active);
172
+ this.githubView.workspaceReadOnly = activeWorkspace?.readOnly ?? false;
130
173
  return html `
131
174
  <div class="workspace-area">
132
175
  ${this.destroyDialog}
@@ -160,42 +203,51 @@ let WorkspacesView = class WorkspacesView extends Formable {
160
203
  ` : ''}
161
204
 
162
205
  <hr class="main-break"/>
163
- <ul>
164
-
206
+ <div class="workspace-grid">
165
207
  ${this.workspaces.map((w) => {
166
208
  // Determine workspace content based on active status
167
209
  const workspaceContent = w.active
168
210
  ? html `<strong>${w.name}</strong> &nbsp;<sl-badge pulse>active</sl-badge>`
169
211
  : html `<a href="#" class="workspace-link" @click=${() => this.selectWorkspace(w)}>${w.name}</a>`;
170
- // Determine CSS classes and styling
171
- const liClasses = w.active ? 'secondary' : '';
172
- const liStyles = w.active ? 'color: var(--secondary-color)' : '';
212
+ // Determine chevron color based on active status
213
+ const chevronColor = w.active ? 'var(--secondary-color)' : 'var(--primary-color)';
173
214
  return html `
174
- <li id="workspace-${w.workspaceId}"
175
- class="${liClasses}"
176
- style="${liStyles}"
177
- @mouseover="${() => this.lightWorkspace(w.workspaceId)}"
178
- @mouseout="${() => this.dimWorkspace(w.workspaceId)}">
215
+ <div class="workspace-row"
216
+ id="workspace-${w.workspaceId}"
217
+ @mouseover="${() => this.handleWorkspaceHover(w)}"
218
+ @mouseout="${() => this.handleWorkspaceUnhover(w)}">
219
+
220
+ <div class="col-github-icon">
221
+ ${w.linkedRepo ? DoctorIcon.getGitHubIcon(16) : ''}
222
+ </div>
179
223
 
180
- ${workspaceContent}
224
+ <div class="col-chevron" style="color: ${chevronColor}">></div>
181
225
 
182
- <div style="display: inline-block; float: right">
183
- <sl-icon-button class="edit-workspace" name="pencil-square"
226
+ <div class="col-name">
227
+ ${workspaceContent}
228
+ </div>
229
+
230
+ <div class="col-actions">
231
+ <sl-icon-button class="edit-workspace" name="pencil-square" label="Edit workspace"
184
232
  @click="${() => { this.showEditDialog(w); }}"></sl-icon-button>
185
233
  ${!w.default && !w.active ? html `
186
- <sl-icon-button class="delete-workspace" name="trash3"
234
+ <sl-icon-button class="delete-workspace" name="trash3" label="Delete workspace"
187
235
  @click="${() => { this.showDestroyDialog(w); }}"></sl-icon-button>
188
236
  ` : ''}
189
237
  </div>
190
- </li>
238
+ </div>
191
239
  `;
192
240
  })}
193
- </ul>
241
+ </div>
242
+
243
+ <hr/>
244
+
245
+ ${this.githubView}
194
246
 
195
247
  <hr/>
196
248
  <h3>
197
249
  <span style="color: var(--terminal-text)">$</span>
198
- Free Daily Credit <span style="color: var(--terminal-text)">$</span>
250
+ FREE DAILY CREDIT <span style="color: var(--terminal-text)">$</span>
199
251
  </h3>
200
252
 
201
253
  <p>
@@ -1,6 +1,15 @@
1
1
  import { AuthenticationMeta } from "../events/doctor.js";
2
2
  import { AuthenticationState } from "../model/auth.js";
3
3
  import { Session } from "../model/session.js";
4
+ /**
5
+ * AuthController uses a singleton pattern intentionally:
6
+ * - Maintains shared auth state across components outside TheDoctor
7
+ * - Tracks multiple host components via hosts[] array for coordinated updates
8
+ * - Listens for window-level auth events (GitHub auth, logout)
9
+ * - Constructor returns existing instance if one exists, adding new host to hosts[]
10
+ *
11
+ * For testing: Use vi.mocked(AuthController.getInstance).mockReturnValue(mockAuthController)
12
+ */
4
13
  export declare class AuthController extends EventTarget {
5
14
  private static _instance;
6
15
  static getInstance(): AuthController | null;
@@ -1,6 +1,16 @@
1
1
  import { AuthenticationGithubRequested, AuthenticationStateChange, CreditEmpty, LogoutRequested, NukeWorkspaceEvent, StartSessionFailed } from "../events/doctor.js";
2
2
  import { AuthService } from "../services/auth-service.js";
3
3
  import { HeaderService } from "../services/header-service.js";
4
+ import { typedEventHandler } from "../helpers/typed-events.js";
5
+ /**
6
+ * AuthController uses a singleton pattern intentionally:
7
+ * - Maintains shared auth state across components outside TheDoctor
8
+ * - Tracks multiple host components via hosts[] array for coordinated updates
9
+ * - Listens for window-level auth events (GitHub auth, logout)
10
+ * - Constructor returns existing instance if one exists, adding new host to hosts[]
11
+ *
12
+ * For testing: Use vi.mocked(AuthController.getInstance).mockReturnValue(mockAuthController)
13
+ */
4
14
  export class AuthController extends EventTarget {
5
15
  static getInstance() {
6
16
  const t = AuthController._instance;
@@ -20,7 +30,6 @@ export class AuthController extends EventTarget {
20
30
  }
21
31
  t.startSessionAutomatically = autoStart;
22
32
  t.brokerStarted = false;
23
- // t.start()
24
33
  return t;
25
34
  }
26
35
  this.checkingState = false;
@@ -41,10 +50,8 @@ export class AuthController extends EventTarget {
41
50
  }
42
51
  // cache the one and only instance
43
52
  AuthController._instance = this;
44
- // @ts-ignore
45
- window.addEventListener(AuthenticationGithubRequested, this.authGithub.bind(this));
46
- // @ts-ignore
47
- window.addEventListener(LogoutRequested, this.logout.bind(this));
53
+ window.addEventListener(AuthenticationGithubRequested, typedEventHandler(this.authGithub.bind(this)));
54
+ window.addEventListener(LogoutRequested, typedEventHandler(this.logout.bind(this)));
48
55
  }
49
56
  start() {
50
57
  if (!this.brokerStarted) {
@@ -1,22 +1,48 @@
1
- import { TheDoctor } from "../components/the-doctor/the-doctor.js";
2
- import { BusCallback, CommandResponse } from "@pb33f/ranch";
1
+ import type { BrokerControllerDeps } from "../interfaces/doctor-interfaces.js";
2
+ import { BusCallback, CommandResponse, StompError } from "@pb33f/ranch";
3
3
  export declare class BrokerController extends EventTarget {
4
4
  private readonly specStreamChannel;
5
5
  private readonly creditStreamChannel;
6
+ private readonly rulesetChannel;
6
7
  private readonly doctorServiceChannel;
8
+ private readonly modelServiceChannel;
9
+ private readonly errorChannel;
7
10
  private readonly busPort;
8
11
  private readonly busHost;
9
12
  private readonly busVersion;
10
13
  private readonly bus;
11
- readonly doc: TheDoctor;
14
+ private readonly deps;
12
15
  readonly useTLS: boolean;
13
16
  brokerConnectionId: string;
14
17
  currentVersion: string;
15
- constructor(doc: TheDoctor);
18
+ private readyPromise;
19
+ private readyResolver;
20
+ private heartbeatInterval;
21
+ private readonly HEARTBEAT_INTERVAL_MS;
22
+ private doctorServiceSubscription;
23
+ private specStreamSubscription;
24
+ private creditStreamSubscription;
25
+ private errorStreamSubscription;
26
+ constructor(deps: BrokerControllerDeps);
16
27
  connectToBroker(): void;
17
28
  doctorServiceHandler(): BusCallback<CommandResponse>;
18
29
  whoAmI(): void;
19
30
  startTheDoctor(): void;
20
31
  specStreamHandler(): BusCallback<CommandResponse>;
21
32
  creditStreamHandler(): BusCallback<CommandResponse>;
33
+ errorStreamHandler(): BusCallback<StompError>;
34
+ /**
35
+ * Returns a promise that resolves when the broker connection is established and ready.
36
+ * If already connected, resolves immediately.
37
+ */
38
+ waitUntilReady(): Promise<void>;
39
+ /**
40
+ * Checks if the broker is currently connected and ready.
41
+ */
42
+ isReady(): boolean;
43
+ private mapChannels;
44
+ private confirmBrokerConnection;
45
+ private startBrokerHeartbeat;
46
+ private stopBrokerHeartbeat;
47
+ destroy(): void;
22
48
  }
@@ -1,18 +1,31 @@
1
1
  import { DefaultDocument } from "../components/the-doctor/the-doctor.js";
2
- import { Command, CreditStreamChannel, DoctorServiceChannel, isBrokerResponse, QueuePrefix, SpecStreamChannel } from "../model/channels.js";
3
- import { CreditStreamUpdated } from "../events/doctor.js";
2
+ import { Command, CreditStreamChannel, DoctorServiceChannel, isBrokerResponse, ModelServiceChannel, QueuePrefix, PublishQueuePrefix, SpecStreamChannel, WalletServiceChannel, BrokerConfirmChannel, BrokerHeartbeatChannel, RuleSetServiceChannel } from "../model/channels.js";
3
+ import { CreditStreamUpdated, BrokerConnected, SocketDisconnected } from "../events/doctor.js";
4
4
  export class BrokerController extends EventTarget {
5
- constructor(doc) {
5
+ constructor(deps) {
6
6
  super();
7
7
  this.useTLS = false;
8
- this.doc = doc;
9
- this.bus = doc.bus;
8
+ this.currentVersion = '';
9
+ this.readyResolver = null;
10
+ this.heartbeatInterval = null;
11
+ this.HEARTBEAT_INTERVAL_MS = 30000;
12
+ this.doctorServiceSubscription = null;
13
+ this.specStreamSubscription = null;
14
+ this.creditStreamSubscription = null;
15
+ this.errorStreamSubscription = null;
16
+ this.deps = deps;
17
+ this.bus = deps.bus;
18
+ this.readyPromise = new Promise((resolve) => {
19
+ this.readyResolver = resolve;
20
+ });
10
21
  this.doctorServiceChannel = this.bus.createChannel(DoctorServiceChannel);
22
+ this.modelServiceChannel = this.bus.createChannel(ModelServiceChannel);
11
23
  this.specStreamChannel = this.bus.createChannel(SpecStreamChannel);
12
24
  this.creditStreamChannel = this.bus.createChannel(CreditStreamChannel);
13
- this.bus.mapChannelToBrokerDestination(QueuePrefix + DoctorServiceChannel, DoctorServiceChannel);
14
- this.doctorServiceChannel.subscribe(this.doctorServiceHandler());
15
- // extract port from session storage.
25
+ this.rulesetChannel = this.bus.createChannel(RuleSetServiceChannel);
26
+ this.errorChannel = this.bus.getChannel('errors');
27
+ this.mapChannels(DoctorServiceChannel, ModelServiceChannel, RuleSetServiceChannel);
28
+ this.doctorServiceSubscription = this.doctorServiceChannel.subscribe(this.doctorServiceHandler());
16
29
  this.busPort = sessionStorage.getItem("pb33f-doctor-port");
17
30
  this.busHost = sessionStorage.getItem("pb33f-doctor-host");
18
31
  if (!this.busPort) {
@@ -31,7 +44,6 @@ export class BrokerController extends EventTarget {
31
44
  if (this.useTLS) {
32
45
  protocol = "wss://";
33
46
  }
34
- // configure wiretap broker.
35
47
  const config = {
36
48
  brokerURL: protocol + this.busHost + ':' + this.busPort + '/ranch',
37
49
  heartbeatIncoming: 0,
@@ -40,6 +52,20 @@ export class BrokerController extends EventTarget {
40
52
  console.log("💊 Connected to the %cOpenAPI Doctor%c, we are ready to communicate.", 'background: #0d1117; color: #62C4FFFF; font-weight: bold', 'color: default');
41
53
  this.bus.mapChannels();
42
54
  this.whoAmI();
55
+ },
56
+ onStompError: (frame) => {
57
+ console.log("🛑 Socket Error received:", frame.body || frame.headers?.message || 'Unknown error', "- Stopping all STOMP communication");
58
+ this.stopBrokerHeartbeat();
59
+ const client = this.bus.getClient();
60
+ if (client) {
61
+ client.reconnectDelay = 0;
62
+ client.deactivate();
63
+ }
64
+ this.deps.dispatchEvent(new CustomEvent(SocketDisconnected, {
65
+ bubbles: true,
66
+ composed: true,
67
+ detail: { frame }
68
+ }));
43
69
  }
44
70
  };
45
71
  this.bus.connectToBroker(config);
@@ -49,7 +75,7 @@ export class BrokerController extends EventTarget {
49
75
  if (msg.payload?.payload != null) {
50
76
  if (isBrokerResponse(msg.payload.payload)) {
51
77
  this.brokerConnectionId = msg.payload.payload.broker;
52
- this.doc.authController.associateBroker(this.brokerConnectionId).then(() => {
78
+ this.deps.authController.associateBroker(this.brokerConnectionId).then(() => {
53
79
  // check version from the server
54
80
  const version = msg.payload.payload.version;
55
81
  if (version !== "") {
@@ -58,11 +84,11 @@ export class BrokerController extends EventTarget {
58
84
  const memVersion = localStorage.getItem("pb33f-doctor-version");
59
85
  if (memVersion) {
60
86
  if (this.currentVersion != memVersion) {
61
- if (!this.doc.authController.authenticated) {
62
- this.doc.nukeWorkspaceHandler();
87
+ if (!this.deps.authController.authenticated) {
88
+ this.deps.nukeWorkspaceHandler();
63
89
  }
64
90
  else {
65
- this.doc.bagManager.resetBags();
91
+ this.deps.bagManager.resetBags();
66
92
  localStorage.removeItem("pb33f-doctor-version");
67
93
  window.location.reload();
68
94
  }
@@ -73,6 +99,17 @@ export class BrokerController extends EventTarget {
73
99
  localStorage.setItem("pb33f-doctor-version", this.currentVersion);
74
100
  }
75
101
  console.log("💊 Welcome to the clinic, the %cdoctor %cis ready to see you. [" + "v" + version + "]", 'color: #62C4FFFF; font-weight: bold', 'color: default');
102
+ // Resolve the ready promise
103
+ if (this.readyResolver) {
104
+ this.readyResolver();
105
+ this.readyResolver = null;
106
+ }
107
+ // Dispatch broker connected event so components can start using the broker
108
+ this.deps.dispatchEvent(new CustomEvent(BrokerConnected, {
109
+ bubbles: true,
110
+ composed: true,
111
+ detail: { brokerId: this.brokerConnectionId }
112
+ }));
76
113
  this.startTheDoctor();
77
114
  });
78
115
  }
@@ -86,22 +123,25 @@ export class BrokerController extends EventTarget {
86
123
  });
87
124
  }
88
125
  startTheDoctor() {
89
- this.specStreamChannel.subscribe(this.specStreamHandler());
90
- this.creditStreamChannel.subscribe(this.creditStreamHandler());
91
- this.bus.mapChannelToBrokerDestination(QueuePrefix + SpecStreamChannel, SpecStreamChannel);
92
- this.bus.mapChannelToBrokerDestination(QueuePrefix + CreditStreamChannel, CreditStreamChannel);
93
- this.doc.boostrap();
126
+ this.specStreamSubscription = this.specStreamChannel.subscribe(this.specStreamHandler());
127
+ this.creditStreamSubscription = this.creditStreamChannel.subscribe(this.creditStreamHandler());
128
+ this.errorStreamSubscription = this.errorChannel.subscribe(this.errorStreamHandler());
129
+ this.mapChannels(SpecStreamChannel, CreditStreamChannel, WalletServiceChannel);
130
+ this.deps.globalTaskController.init();
131
+ this.deps.timelineController.init();
132
+ this.confirmBrokerConnection();
133
+ this.startBrokerHeartbeat();
134
+ this.deps.boostrap();
94
135
  }
95
136
  specStreamHandler() {
96
137
  return (msg) => {
97
138
  if (msg.payload?.payload != null) {
98
- // base64 decode the payload and update the editor!
99
139
  const decoded = atob(msg.payload.payload);
100
- if (this.doc.docBag) {
101
- this.doc.docBag.set(DefaultDocument, decoded);
140
+ if (this.deps.docBag) {
141
+ this.deps.docBag.set(DefaultDocument, decoded);
102
142
  }
103
- this.doc.editor?.setValue(decoded, true);
104
- this.doc.requestUpdate();
143
+ this.deps.editor?.setValue(decoded, true);
144
+ this.deps.requestUpdate();
105
145
  }
106
146
  };
107
147
  }
@@ -109,9 +149,9 @@ export class BrokerController extends EventTarget {
109
149
  return (msg) => {
110
150
  if (msg.payload?.payload != null) {
111
151
  const newCredits = parseInt(msg.payload.payload);
112
- this.doc.creditTicker.credits = newCredits;
152
+ this.deps.creditTicker.credits = newCredits;
113
153
  // Dispatch event to the doctor for credit stream updates
114
- this.doc.dispatchEvent(new CustomEvent(CreditStreamUpdated, {
154
+ this.deps.dispatchEvent(new CustomEvent(CreditStreamUpdated, {
115
155
  bubbles: true,
116
156
  composed: true,
117
157
  detail: { credits: newCredits }
@@ -119,4 +159,87 @@ export class BrokerController extends EventTarget {
119
159
  }
120
160
  };
121
161
  }
162
+ errorStreamHandler() {
163
+ return (msg) => {
164
+ if (msg.command === 'STOMP_ERROR' && msg.payload) {
165
+ const error = msg.payload;
166
+ console.log("💊 Centralized error handler:", error.message);
167
+ }
168
+ };
169
+ }
170
+ /**
171
+ * Returns a promise that resolves when the broker connection is established and ready.
172
+ * If already connected, resolves immediately.
173
+ */
174
+ async waitUntilReady() {
175
+ if (this.brokerConnectionId) {
176
+ return;
177
+ }
178
+ return this.readyPromise;
179
+ }
180
+ /**
181
+ * Checks if the broker is currently connected and ready.
182
+ */
183
+ isReady() {
184
+ return Boolean(this.brokerConnectionId);
185
+ }
186
+ mapChannels(...channels) {
187
+ channels.forEach(channel => {
188
+ this.bus.mapChannelToBrokerDestination(QueuePrefix + channel, channel);
189
+ });
190
+ }
191
+ confirmBrokerConnection() {
192
+ try {
193
+ this.bus.publish({
194
+ destination: PublishQueuePrefix + BrokerConfirmChannel,
195
+ body: JSON.stringify({
196
+ request: 'confirm',
197
+ payload: { brokerId: this.brokerConnectionId }
198
+ })
199
+ });
200
+ }
201
+ catch (error) {
202
+ console.error('failed to confirm broker connection:', error);
203
+ }
204
+ }
205
+ startBrokerHeartbeat() {
206
+ this.stopBrokerHeartbeat();
207
+ this.heartbeatInterval = setInterval(() => {
208
+ const client = this.bus.getClient();
209
+ if (!client || !client.connected) {
210
+ this.stopBrokerHeartbeat();
211
+ return;
212
+ }
213
+ try {
214
+ this.bus.publish({
215
+ destination: PublishQueuePrefix + BrokerHeartbeatChannel,
216
+ body: JSON.stringify({
217
+ request: 'heartbeat',
218
+ payload: { brokerId: this.brokerConnectionId }
219
+ })
220
+ });
221
+ }
222
+ catch (error) {
223
+ console.warn('heartbeat publish failed:', error);
224
+ this.stopBrokerHeartbeat();
225
+ }
226
+ }, this.HEARTBEAT_INTERVAL_MS);
227
+ }
228
+ stopBrokerHeartbeat() {
229
+ if (this.heartbeatInterval) {
230
+ clearInterval(this.heartbeatInterval);
231
+ this.heartbeatInterval = null;
232
+ }
233
+ }
234
+ destroy() {
235
+ this.stopBrokerHeartbeat();
236
+ this.doctorServiceSubscription?.unsubscribe();
237
+ this.doctorServiceSubscription = null;
238
+ this.specStreamSubscription?.unsubscribe();
239
+ this.specStreamSubscription = null;
240
+ this.creditStreamSubscription?.unsubscribe();
241
+ this.creditStreamSubscription = null;
242
+ this.errorStreamSubscription?.unsubscribe();
243
+ this.errorStreamSubscription = null;
244
+ }
122
245
  }
@@ -0,0 +1,21 @@
1
+ import { BundleControllerDeps } from "../interfaces/bundle-interfaces.js";
2
+ import { BundleReferenceMapping, BundleResponse } from "../model/bundle.js";
3
+ export declare class BundleController extends EventTarget {
4
+ private readonly deps;
5
+ private _bundleResponse;
6
+ private _loading;
7
+ private _referenceMapIndex;
8
+ constructor(deps: BundleControllerDeps);
9
+ get isBundled(): boolean;
10
+ get isLoading(): boolean;
11
+ getBundledSpec(): string | null;
12
+ getBundleResponse(): BundleResponse | null;
13
+ private createToast;
14
+ bundleSpec(): Promise<void>;
15
+ downloadBundledSpec(): void;
16
+ copyToClipboard(): Promise<void>;
17
+ reset(): void;
18
+ private buildReferenceMapIndex;
19
+ private normalizeBracketNotation;
20
+ findOriginalLocation(nodePath: string): BundleReferenceMapping | null;
21
+ }