@50arms/ui 0.0.0-stage → 35.1.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 (1256) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +193 -2
  3. package/dist/components/Accordion.js +68 -0
  4. package/dist/components/Accordion.js.map +1 -0
  5. package/dist/components/AgentWorkingSpinner.js +46 -0
  6. package/dist/components/AgentWorkingSpinner.js.map +1 -0
  7. package/dist/components/AppShell.js +228 -0
  8. package/dist/components/AppShell.js.map +1 -0
  9. package/dist/components/Attention.js +130 -0
  10. package/dist/components/Attention.js.map +1 -0
  11. package/dist/components/Avatar.js +99 -0
  12. package/dist/components/Avatar.js.map +1 -0
  13. package/dist/components/Badge.js +143 -0
  14. package/dist/components/Badge.js.map +1 -0
  15. package/dist/components/Board.js +292 -0
  16. package/dist/components/Board.js.map +1 -0
  17. package/dist/components/Button.js +327 -0
  18. package/dist/components/Button.js.map +1 -0
  19. package/dist/components/Callout.js +106 -0
  20. package/dist/components/Callout.js.map +1 -0
  21. package/dist/components/Card.js +140 -0
  22. package/dist/components/Card.js.map +1 -0
  23. package/dist/components/Choice.js +361 -0
  24. package/dist/components/Choice.js.map +1 -0
  25. package/dist/components/CodeEditor.js +384 -0
  26. package/dist/components/CodeEditor.js.map +1 -0
  27. package/dist/components/ColorPicker.js +174 -0
  28. package/dist/components/ColorPicker.js.map +1 -0
  29. package/dist/components/Combobox.js +212 -0
  30. package/dist/components/Combobox.js.map +1 -0
  31. package/dist/components/CommandPalette.js +163 -0
  32. package/dist/components/CommandPalette.js.map +1 -0
  33. package/dist/components/ConcentricRing.js +60 -0
  34. package/dist/components/ConcentricRing.js.map +1 -0
  35. package/dist/components/ConnectionCard.js +98 -0
  36. package/dist/components/ConnectionCard.js.map +1 -0
  37. package/dist/components/ContextItemRow.js +49 -0
  38. package/dist/components/ContextItemRow.js.map +1 -0
  39. package/dist/components/CopyValue.js +57 -0
  40. package/dist/components/CopyValue.js.map +1 -0
  41. package/dist/components/CountBadge.js +26 -0
  42. package/dist/components/CountBadge.js.map +1 -0
  43. package/dist/components/DateCalendar.js +156 -0
  44. package/dist/components/DateCalendar.js.map +1 -0
  45. package/dist/components/DateField.js +166 -0
  46. package/dist/components/DateField.js.map +1 -0
  47. package/dist/components/DatePicker.js +56 -0
  48. package/dist/components/DatePicker.js.map +1 -0
  49. package/dist/components/DateTimeText.js +19 -0
  50. package/dist/components/DateTimeText.js.map +1 -0
  51. package/dist/components/DescriptionList.js +25 -0
  52. package/dist/components/DescriptionList.js.map +1 -0
  53. package/dist/components/Dialog.js +332 -0
  54. package/dist/components/Dialog.js.map +1 -0
  55. package/dist/components/DragDrop.js +395 -0
  56. package/dist/components/DragDrop.js.map +1 -0
  57. package/dist/components/Drawer.js +100 -0
  58. package/dist/components/Drawer.js.map +1 -0
  59. package/dist/components/EditGutter.js +110 -0
  60. package/dist/components/EditGutter.js.map +1 -0
  61. package/dist/components/EmojiPicker.js +174 -0
  62. package/dist/components/EmojiPicker.js.map +1 -0
  63. package/dist/components/ErrorBoundary.js +47 -0
  64. package/dist/components/ErrorBoundary.js.map +1 -0
  65. package/dist/components/Field.js +115 -0
  66. package/dist/components/Field.js.map +1 -0
  67. package/dist/components/FileUpload.js +128 -0
  68. package/dist/components/FileUpload.js.map +1 -0
  69. package/dist/components/FilterMenu.js +256 -0
  70. package/dist/components/FilterMenu.js.map +1 -0
  71. package/dist/components/GatesSection.js +79 -0
  72. package/dist/components/GatesSection.js.map +1 -0
  73. package/dist/components/Icon.js +50 -0
  74. package/dist/components/Icon.js.map +1 -0
  75. package/dist/components/IconButton.js +59 -0
  76. package/dist/components/IconButton.js.map +1 -0
  77. package/dist/components/IconStack.js +69 -0
  78. package/dist/components/IconStack.js.map +1 -0
  79. package/dist/components/ImageUploadField.js +146 -0
  80. package/dist/components/ImageUploadField.js.map +1 -0
  81. package/dist/components/InlineEdit.js +432 -0
  82. package/dist/components/InlineEdit.js.map +1 -0
  83. package/dist/components/InlineMarkdownEdit.js +184 -0
  84. package/dist/components/InlineMarkdownEdit.js.map +1 -0
  85. package/dist/components/Input.js +156 -0
  86. package/dist/components/Input.js.map +1 -0
  87. package/dist/components/LegalDocument.js +155 -0
  88. package/dist/components/LegalDocument.js.map +1 -0
  89. package/dist/components/LineDiff.js +95 -0
  90. package/dist/components/LineDiff.js.map +1 -0
  91. package/dist/components/ListHeader.js +72 -0
  92. package/dist/components/ListHeader.js.map +1 -0
  93. package/dist/components/Loading.js +111 -0
  94. package/dist/components/Loading.js.map +1 -0
  95. package/dist/components/Markdown.js +28 -0
  96. package/dist/components/Markdown.js.map +1 -0
  97. package/dist/components/MarkdownEditor.js +467 -0
  98. package/dist/components/MarkdownEditor.js.map +1 -0
  99. package/dist/components/Menu.js +185 -0
  100. package/dist/components/Menu.js.map +1 -0
  101. package/dist/components/Navigation.js +87 -0
  102. package/dist/components/Navigation.js.map +1 -0
  103. package/dist/components/NumberInput.js +119 -0
  104. package/dist/components/NumberInput.js.map +1 -0
  105. package/dist/components/OTPInput.js +71 -0
  106. package/dist/components/OTPInput.js.map +1 -0
  107. package/dist/components/OrderedEntityManager.js +170 -0
  108. package/dist/components/OrderedEntityManager.js.map +1 -0
  109. package/dist/components/PagedWindowList.js +74 -0
  110. package/dist/components/PagedWindowList.js.map +1 -0
  111. package/dist/components/PaginationBar.js +95 -0
  112. package/dist/components/PaginationBar.js.map +1 -0
  113. package/dist/components/Panel.js +396 -0
  114. package/dist/components/Panel.js.map +1 -0
  115. package/dist/components/PasswordInput.js +32 -0
  116. package/dist/components/PasswordInput.js.map +1 -0
  117. package/dist/components/PasswordRequirements.js +25 -0
  118. package/dist/components/PasswordRequirements.js.map +1 -0
  119. package/dist/components/PatchDiff.js +96 -0
  120. package/dist/components/PatchDiff.js.map +1 -0
  121. package/dist/components/PendingVeil.js +18 -0
  122. package/dist/components/PendingVeil.js.map +1 -0
  123. package/dist/components/Popover.js +214 -0
  124. package/dist/components/Popover.js.map +1 -0
  125. package/dist/components/Progress.js +419 -0
  126. package/dist/components/Progress.js.map +1 -0
  127. package/dist/components/RatingScale.js +89 -0
  128. package/dist/components/RatingScale.js.map +1 -0
  129. package/dist/components/ReadMore.js +232 -0
  130. package/dist/components/ReadMore.js.map +1 -0
  131. package/dist/components/RecordCard.js +202 -0
  132. package/dist/components/RecordCard.js.map +1 -0
  133. package/dist/components/RelativeTime.js +29 -0
  134. package/dist/components/RelativeTime.js.map +1 -0
  135. package/dist/components/SandboxedFrame.js +135 -0
  136. package/dist/components/SandboxedFrame.js.map +1 -0
  137. package/dist/components/SearchInput.js +38 -0
  138. package/dist/components/SearchInput.js.map +1 -0
  139. package/dist/components/SecretField.js +228 -0
  140. package/dist/components/SecretField.js.map +1 -0
  141. package/dist/components/SectionNav.js +42 -0
  142. package/dist/components/SectionNav.js.map +1 -0
  143. package/dist/components/Select.js +172 -0
  144. package/dist/components/Select.js.map +1 -0
  145. package/dist/components/SequenceDiagram.js +109 -0
  146. package/dist/components/SequenceDiagram.js.map +1 -0
  147. package/dist/components/SettingRow.js +124 -0
  148. package/dist/components/SettingRow.js.map +1 -0
  149. package/dist/components/SignOffRings.js +36 -0
  150. package/dist/components/SignOffRings.js.map +1 -0
  151. package/dist/components/Slider.js +353 -0
  152. package/dist/components/Slider.js.map +1 -0
  153. package/dist/components/SolutionChoice.js +89 -0
  154. package/dist/components/SolutionChoice.js.map +1 -0
  155. package/dist/components/SortMenu.js +75 -0
  156. package/dist/components/SortMenu.js.map +1 -0
  157. package/dist/components/Spinner.js +42 -0
  158. package/dist/components/Spinner.js.map +1 -0
  159. package/dist/components/Stat.js +148 -0
  160. package/dist/components/Stat.js.map +1 -0
  161. package/dist/components/StatusSelect.js +119 -0
  162. package/dist/components/StatusSelect.js.map +1 -0
  163. package/dist/components/Surface.js +210 -0
  164. package/dist/components/Surface.js.map +1 -0
  165. package/dist/components/Table.js +300 -0
  166. package/dist/components/Table.js.map +1 -0
  167. package/dist/components/Tabs.js +288 -0
  168. package/dist/components/Tabs.js.map +1 -0
  169. package/dist/components/ThemeMenu.js +198 -0
  170. package/dist/components/ThemeMenu.js.map +1 -0
  171. package/dist/components/Toast.js +217 -0
  172. package/dist/components/Toast.js.map +1 -0
  173. package/dist/components/Toggle.js +147 -0
  174. package/dist/components/Toggle.js.map +1 -0
  175. package/dist/components/ToggleMatrix.js +157 -0
  176. package/dist/components/ToggleMatrix.js.map +1 -0
  177. package/dist/components/Tree.js +125 -0
  178. package/dist/components/Tree.js.map +1 -0
  179. package/dist/components/TriStateSwitch.js +111 -0
  180. package/dist/components/TriStateSwitch.js.map +1 -0
  181. package/dist/components/VideoPlayer.js +64 -0
  182. package/dist/components/VideoPlayer.js.map +1 -0
  183. package/dist/components/auth/AcceptInvitationCard.js +110 -0
  184. package/dist/components/auth/AcceptInvitationCard.js.map +1 -0
  185. package/dist/components/auth/AuthLayout.js +18 -0
  186. package/dist/components/auth/AuthLayout.js.map +1 -0
  187. package/dist/components/auth/ForgotPasswordForm.js +44 -0
  188. package/dist/components/auth/ForgotPasswordForm.js.map +1 -0
  189. package/dist/components/auth/LoginForm.js +76 -0
  190. package/dist/components/auth/LoginForm.js.map +1 -0
  191. package/dist/components/auth/ResetPasswordForm.js +69 -0
  192. package/dist/components/auth/ResetPasswordForm.js.map +1 -0
  193. package/dist/components/auth/SignInProviders.js +45 -0
  194. package/dist/components/auth/SignInProviders.js.map +1 -0
  195. package/dist/components/auth/SignupCard.js +204 -0
  196. package/dist/components/auth/SignupCard.js.map +1 -0
  197. package/dist/components/auth/TermsAcceptance.js +43 -0
  198. package/dist/components/auth/TermsAcceptance.js.map +1 -0
  199. package/dist/components/board/context.js +32 -0
  200. package/dist/components/board/context.js.map +1 -0
  201. package/dist/components/board/recipe.js +94 -0
  202. package/dist/components/board/recipe.js.map +1 -0
  203. package/dist/components/calendar/CalendarMonth.js +299 -0
  204. package/dist/components/calendar/CalendarMonth.js.map +1 -0
  205. package/dist/components/calendar/CalendarTimeGrid.js +430 -0
  206. package/dist/components/calendar/CalendarTimeGrid.js.map +1 -0
  207. package/dist/components/calendar/EventActions.js +101 -0
  208. package/dist/components/calendar/EventActions.js.map +1 -0
  209. package/dist/components/calendar/format.js +73 -0
  210. package/dist/components/calendar/format.js.map +1 -0
  211. package/dist/components/calendar/palette.js +31 -0
  212. package/dist/components/calendar/palette.js.map +1 -0
  213. package/dist/components/calendar/use-calendar-drag.js +149 -0
  214. package/dist/components/calendar/use-calendar-drag.js.map +1 -0
  215. package/dist/components/calendar/use-event-keyboard.js +87 -0
  216. package/dist/components/calendar/use-event-keyboard.js.map +1 -0
  217. package/dist/components/calendar/use-grid-navigation.js +79 -0
  218. package/dist/components/calendar/use-grid-navigation.js.map +1 -0
  219. package/dist/components/calendar/use-now.js +27 -0
  220. package/dist/components/calendar/use-now.js.map +1 -0
  221. package/dist/components/card-face/AcRingGlyph.js +39 -0
  222. package/dist/components/card-face/AcRingGlyph.js.map +1 -0
  223. package/dist/components/card-face/BoardCardAgentSlot.js +17 -0
  224. package/dist/components/card-face/BoardCardAgentSlot.js.map +1 -0
  225. package/dist/components/card-face/CardFace.js +109 -0
  226. package/dist/components/card-face/CardFace.js.map +1 -0
  227. package/dist/components/card-face/CardTypeBadge.js +17 -0
  228. package/dist/components/card-face/CardTypeBadge.js.map +1 -0
  229. package/dist/components/card-face/EffortBadge.js +11 -0
  230. package/dist/components/card-face/EffortBadge.js.map +1 -0
  231. package/dist/components/card-face/GateRingGlyph.js +31 -0
  232. package/dist/components/card-face/GateRingGlyph.js.map +1 -0
  233. package/dist/components/card-face/OverflowRow.js +70 -0
  234. package/dist/components/card-face/OverflowRow.js.map +1 -0
  235. package/dist/components/card-face/TapTip.js +32 -0
  236. package/dist/components/card-face/TapTip.js.map +1 -0
  237. package/dist/components/card-face/hit-area.js +6 -0
  238. package/dist/components/card-face/hit-area.js.map +1 -0
  239. package/dist/components/card-face/vocabulary.js +102 -0
  240. package/dist/components/card-face/vocabulary.js.map +1 -0
  241. package/dist/components/chart/BarList.js +78 -0
  242. package/dist/components/chart/BarList.js.map +1 -0
  243. package/dist/components/chart/LineChart.js +310 -0
  244. package/dist/components/chart/LineChart.js.map +1 -0
  245. package/dist/components/chart/ShareBar.js +141 -0
  246. package/dist/components/chart/ShareBar.js.map +1 -0
  247. package/dist/components/chart/TimeSeriesChart.js +305 -0
  248. package/dist/components/chart/TimeSeriesChart.js.map +1 -0
  249. package/dist/components/chart/label-metrics.js +17 -0
  250. package/dist/components/chart/label-metrics.js.map +1 -0
  251. package/dist/components/chart/line-chart-axis.js +38 -0
  252. package/dist/components/chart/line-chart-axis.js.map +1 -0
  253. package/dist/components/chart/line-chart-scale.js +132 -0
  254. package/dist/components/chart/line-chart-scale.js.map +1 -0
  255. package/dist/components/chart/line-series-style.js +22 -0
  256. package/dist/components/chart/line-series-style.js.map +1 -0
  257. package/dist/components/chart/share-bar-labels.js +14 -0
  258. package/dist/components/chart/share-bar-labels.js.map +1 -0
  259. package/dist/components/chart/shared.js +157 -0
  260. package/dist/components/chart/shared.js.map +1 -0
  261. package/dist/components/chart/time-series-scale.js +51 -0
  262. package/dist/components/chart/time-series-scale.js.map +1 -0
  263. package/dist/components/chat/Attachment.js +316 -0
  264. package/dist/components/chat/Attachment.js.map +1 -0
  265. package/dist/components/chat/Chat.js +171 -0
  266. package/dist/components/chat/Chat.js.map +1 -0
  267. package/dist/components/chat/Composer.js +274 -0
  268. package/dist/components/chat/Composer.js.map +1 -0
  269. package/dist/components/chat/ContextMeter.js +202 -0
  270. package/dist/components/chat/ContextMeter.js.map +1 -0
  271. package/dist/components/chat/EffortControl.js +116 -0
  272. package/dist/components/chat/EffortControl.js.map +1 -0
  273. package/dist/components/chat/FileCover.js +78 -0
  274. package/dist/components/chat/FileCover.js.map +1 -0
  275. package/dist/components/chat/Message.js +356 -0
  276. package/dist/components/chat/Message.js.map +1 -0
  277. package/dist/components/chat/MessageScroller.js +104 -0
  278. package/dist/components/chat/MessageScroller.js.map +1 -0
  279. package/dist/components/chat/ModelSelector.js +156 -0
  280. package/dist/components/chat/ModelSelector.js.map +1 -0
  281. package/dist/components/chat/StreamingMarkdown.js +42 -0
  282. package/dist/components/chat/StreamingMarkdown.js.map +1 -0
  283. package/dist/components/chat/download-file.js +9 -0
  284. package/dist/components/chat/download-file.js.map +1 -0
  285. package/dist/components/chat/file-icon.js +39 -0
  286. package/dist/components/chat/file-icon.js.map +1 -0
  287. package/dist/components/checklist/StatusChecklist.js +103 -0
  288. package/dist/components/checklist/StatusChecklist.js.map +1 -0
  289. package/dist/components/checklist/tally.js +29 -0
  290. package/dist/components/checklist/tally.js.map +1 -0
  291. package/dist/components/code-editor/context.js +13 -0
  292. package/dist/components/code-editor/context.js.map +1 -0
  293. package/dist/components/code-editor/editing.js +93 -0
  294. package/dist/components/code-editor/editing.js.map +1 -0
  295. package/dist/components/code-editor/highlight.js +27 -0
  296. package/dist/components/code-editor/highlight.js.map +1 -0
  297. package/dist/components/code-editor/recipe.js +75 -0
  298. package/dist/components/code-editor/recipe.js.map +1 -0
  299. package/dist/components/date-timeline/DateTimeline.js +358 -0
  300. package/dist/components/date-timeline/DateTimeline.js.map +1 -0
  301. package/dist/components/date-timeline/TimelineRow.js +100 -0
  302. package/dist/components/date-timeline/TimelineRow.js.map +1 -0
  303. package/dist/components/date-timeline/useBarDrag.js +44 -0
  304. package/dist/components/date-timeline/useBarDrag.js.map +1 -0
  305. package/dist/components/date-timeline/useMarkerDrag.js +40 -0
  306. package/dist/components/date-timeline/useMarkerDrag.js.map +1 -0
  307. package/dist/components/date-timeline/useTimelineZoom.js +44 -0
  308. package/dist/components/date-timeline/useTimelineZoom.js.map +1 -0
  309. package/dist/components/drag-drop/context.js +37 -0
  310. package/dist/components/drag-drop/context.js.map +1 -0
  311. package/dist/components/drag-drop/recipe.js +270 -0
  312. package/dist/components/drag-drop/recipe.js.map +1 -0
  313. package/dist/components/drag-drop/shift.js +157 -0
  314. package/dist/components/drag-drop/shift.js.map +1 -0
  315. package/dist/components/edit/activation.js +10 -0
  316. package/dist/components/edit/activation.js.map +1 -0
  317. package/dist/components/edit/outcome.js +47 -0
  318. package/dist/components/edit/outcome.js.map +1 -0
  319. package/dist/components/edit/use-edit-session.js +146 -0
  320. package/dist/components/edit/use-edit-session.js.map +1 -0
  321. package/dist/components/file-viewer/FileViewer.js +97 -0
  322. package/dist/components/file-viewer/FileViewer.js.map +1 -0
  323. package/dist/components/file-viewer/PageNumberJumpField.js +47 -0
  324. package/dist/components/file-viewer/PageNumberJumpField.js.map +1 -0
  325. package/dist/components/file-viewer/ViewerControls.js +122 -0
  326. package/dist/components/file-viewer/ViewerControls.js.map +1 -0
  327. package/dist/components/file-viewer/ViewerRail.js +57 -0
  328. package/dist/components/file-viewer/ViewerRail.js.map +1 -0
  329. package/dist/components/file-viewer/ViewerStage.js +112 -0
  330. package/dist/components/file-viewer/ViewerStage.js.map +1 -0
  331. package/dist/components/file-viewer/frames.js +37 -0
  332. package/dist/components/file-viewer/frames.js.map +1 -0
  333. package/dist/components/file-viewer/use-frame-cursor.js +32 -0
  334. package/dist/components/file-viewer/use-frame-cursor.js.map +1 -0
  335. package/dist/components/file-viewer/use-viewer-keys.js +50 -0
  336. package/dist/components/file-viewer/use-viewer-keys.js.map +1 -0
  337. package/dist/components/file-viewer/use-viewer-zoom.js +68 -0
  338. package/dist/components/file-viewer/use-viewer-zoom.js.map +1 -0
  339. package/dist/components/focus-web/FocusWeb.js +322 -0
  340. package/dist/components/focus-web/FocusWeb.js.map +1 -0
  341. package/dist/components/focus-web/layout.js +34 -0
  342. package/dist/components/focus-web/layout.js.map +1 -0
  343. package/dist/components/graph-explorer/GraphExplorer.js +441 -0
  344. package/dist/components/graph-explorer/GraphExplorer.js.map +1 -0
  345. package/dist/components/graph-explorer/camera-math.js +102 -0
  346. package/dist/components/graph-explorer/camera-math.js.map +1 -0
  347. package/dist/components/graph-explorer/tree-layout.js +103 -0
  348. package/dist/components/graph-explorer/tree-layout.js.map +1 -0
  349. package/dist/components/graph-explorer/use-camera.js +82 -0
  350. package/dist/components/graph-explorer/use-camera.js.map +1 -0
  351. package/dist/components/graph-explorer/viewport-gesture.js +107 -0
  352. package/dist/components/graph-explorer/viewport-gesture.js.map +1 -0
  353. package/dist/components/kanban/KanbanBoard.js +219 -0
  354. package/dist/components/kanban/KanbanBoard.js.map +1 -0
  355. package/dist/components/kanban/recipe.js +144 -0
  356. package/dist/components/kanban/recipe.js.map +1 -0
  357. package/dist/components/markdown/Affordances.js +398 -0
  358. package/dist/components/markdown/Affordances.js.map +1 -0
  359. package/dist/components/markdown/AttachmentStrip.js +128 -0
  360. package/dist/components/markdown/AttachmentStrip.js.map +1 -0
  361. package/dist/components/markdown/ImageUpload.js +45 -0
  362. package/dist/components/markdown/ImageUpload.js.map +1 -0
  363. package/dist/components/media-error.js +7 -0
  364. package/dist/components/media-error.js.map +1 -0
  365. package/dist/components/nav-sections.js +61 -0
  366. package/dist/components/nav-sections.js.map +1 -0
  367. package/dist/components/node-canvas/NodeCanvas.js +384 -0
  368. package/dist/components/node-canvas/NodeCanvas.js.map +1 -0
  369. package/dist/components/node-canvas/layout.js +237 -0
  370. package/dist/components/node-canvas/layout.js.map +1 -0
  371. package/dist/components/node-canvas/use-canvas-gestures.js +143 -0
  372. package/dist/components/node-canvas/use-canvas-gestures.js.map +1 -0
  373. package/dist/components/openapi/OpenApiViewer.js +137 -0
  374. package/dist/components/openapi/OpenApiViewer.js.map +1 -0
  375. package/dist/components/openapi/OperationCard.js +145 -0
  376. package/dist/components/openapi/OperationCard.js.map +1 -0
  377. package/dist/components/openapi/SchemaView.js +68 -0
  378. package/dist/components/openapi/SchemaView.js.map +1 -0
  379. package/dist/components/openapi/resolve.js +102 -0
  380. package/dist/components/openapi/resolve.js.map +1 -0
  381. package/dist/components/openapi/types.js +5 -0
  382. package/dist/components/openapi/types.js.map +1 -0
  383. package/dist/components/overlay-shell.js +29 -0
  384. package/dist/components/overlay-shell.js.map +1 -0
  385. package/dist/components/overlay-stack.js +27 -0
  386. package/dist/components/overlay-stack.js.map +1 -0
  387. package/dist/components/paged-window/PageBlock.js +50 -0
  388. package/dist/components/paged-window/PageBlock.js.map +1 -0
  389. package/dist/components/provenance/ConfidenceBar.js +60 -0
  390. package/dist/components/provenance/ConfidenceBar.js.map +1 -0
  391. package/dist/components/provenance/ConfidenceMeter.js +36 -0
  392. package/dist/components/provenance/ConfidenceMeter.js.map +1 -0
  393. package/dist/components/provenance/ConfidenceReadout.js +31 -0
  394. package/dist/components/provenance/ConfidenceReadout.js.map +1 -0
  395. package/dist/components/provenance/ProvenanceBadge.js +44 -0
  396. package/dist/components/provenance/ProvenanceBadge.js.map +1 -0
  397. package/dist/components/provenance/ProvenanceDetail.js +114 -0
  398. package/dist/components/provenance/ProvenanceDetail.js.map +1 -0
  399. package/dist/components/provenance/ProvenanceDisclosure.js +111 -0
  400. package/dist/components/provenance/ProvenanceDisclosure.js.map +1 -0
  401. package/dist/components/provenance/absence.js +31 -0
  402. package/dist/components/provenance/absence.js.map +1 -0
  403. package/dist/components/provenance/types.js +30 -0
  404. package/dist/components/provenance/types.js.map +1 -0
  405. package/dist/components/rbac/AccessRequestPanel.js +153 -0
  406. package/dist/components/rbac/AccessRequestPanel.js.map +1 -0
  407. package/dist/components/rbac/AccountMenu.js +118 -0
  408. package/dist/components/rbac/AccountMenu.js.map +1 -0
  409. package/dist/components/rbac/AgentKeysList.js +20 -0
  410. package/dist/components/rbac/AgentKeysList.js.map +1 -0
  411. package/dist/components/rbac/ApiKeysPanel.js +172 -0
  412. package/dist/components/rbac/ApiKeysPanel.js.map +1 -0
  413. package/dist/components/rbac/ApiKeysTable.js +167 -0
  414. package/dist/components/rbac/ApiKeysTable.js.map +1 -0
  415. package/dist/components/rbac/Brand.js +13 -0
  416. package/dist/components/rbac/Brand.js.map +1 -0
  417. package/dist/components/rbac/Can.js +18 -0
  418. package/dist/components/rbac/Can.js.map +1 -0
  419. package/dist/components/rbac/ChangePasswordForm.js +73 -0
  420. package/dist/components/rbac/ChangePasswordForm.js.map +1 -0
  421. package/dist/components/rbac/DangerZone.js +27 -0
  422. package/dist/components/rbac/DangerZone.js.map +1 -0
  423. package/dist/components/rbac/DevToolsPopover.js +140 -0
  424. package/dist/components/rbac/DevToolsPopover.js.map +1 -0
  425. package/dist/components/rbac/EndedLine.js +24 -0
  426. package/dist/components/rbac/EndedLine.js.map +1 -0
  427. package/dist/components/rbac/InvitationsList.js +148 -0
  428. package/dist/components/rbac/InvitationsList.js.map +1 -0
  429. package/dist/components/rbac/InviteMembersDialog.js +97 -0
  430. package/dist/components/rbac/InviteMembersDialog.js.map +1 -0
  431. package/dist/components/rbac/MembersPanel.js +138 -0
  432. package/dist/components/rbac/MembersPanel.js.map +1 -0
  433. package/dist/components/rbac/PermissionRequestPanel.js +141 -0
  434. package/dist/components/rbac/PermissionRequestPanel.js.map +1 -0
  435. package/dist/components/rbac/ProfileForm.js +86 -0
  436. package/dist/components/rbac/ProfileForm.js.map +1 -0
  437. package/dist/components/rbac/ProfilePage.js +58 -0
  438. package/dist/components/rbac/ProfilePage.js.map +1 -0
  439. package/dist/components/rbac/RBACProvider.js +82 -0
  440. package/dist/components/rbac/RBACProvider.js.map +1 -0
  441. package/dist/components/rbac/RoleEditorDialog.js +90 -0
  442. package/dist/components/rbac/RoleEditorDialog.js.map +1 -0
  443. package/dist/components/rbac/RoleKeyPicker.js +77 -0
  444. package/dist/components/rbac/RoleKeyPicker.js.map +1 -0
  445. package/dist/components/rbac/RolePermissionMatrix.js +37 -0
  446. package/dist/components/rbac/RolePermissionMatrix.js.map +1 -0
  447. package/dist/components/rbac/RolesPermissionsPage.js +142 -0
  448. package/dist/components/rbac/RolesPermissionsPage.js.map +1 -0
  449. package/dist/components/rbac/SessionsList.js +146 -0
  450. package/dist/components/rbac/SessionsList.js.map +1 -0
  451. package/dist/components/rbac/TeamSettingsForm.js +69 -0
  452. package/dist/components/rbac/TeamSettingsForm.js.map +1 -0
  453. package/dist/components/rbac/TeamSwitcher.js +66 -0
  454. package/dist/components/rbac/TeamSwitcher.js.map +1 -0
  455. package/dist/components/rbac/approvalPanelParts.js +130 -0
  456. package/dist/components/rbac/approvalPanelParts.js.map +1 -0
  457. package/dist/components/rbac/permissionSections.js +8 -0
  458. package/dist/components/rbac/permissionSections.js.map +1 -0
  459. package/dist/components/rbac/stagedForm.js +42 -0
  460. package/dist/components/rbac/stagedForm.js.map +1 -0
  461. package/dist/components/rbac/useStagedImage.js +21 -0
  462. package/dist/components/rbac/useStagedImage.js.map +1 -0
  463. package/dist/components/roadmap/PhaseManager.js +48 -0
  464. package/dist/components/roadmap/PhaseManager.js.map +1 -0
  465. package/dist/components/roadmap/RoadmapItemCard.js +96 -0
  466. package/dist/components/roadmap/RoadmapItemCard.js.map +1 -0
  467. package/dist/components/roadmap/RoadmapPage.js +34 -0
  468. package/dist/components/roadmap/RoadmapPage.js.map +1 -0
  469. package/dist/components/roadmap/RoadmapSwimlaneBoard.js +91 -0
  470. package/dist/components/roadmap/RoadmapSwimlaneBoard.js.map +1 -0
  471. package/dist/components/roadmap/TrackManager.js +58 -0
  472. package/dist/components/roadmap/TrackManager.js.map +1 -0
  473. package/dist/components/roadmap/UseCaseCard.js +93 -0
  474. package/dist/components/roadmap/UseCaseCard.js.map +1 -0
  475. package/dist/components/roadmap/UseCaseLedgerPage.js +98 -0
  476. package/dist/components/roadmap/UseCaseLedgerPage.js.map +1 -0
  477. package/dist/components/roadmap/chip-tones.js +9 -0
  478. package/dist/components/roadmap/chip-tones.js.map +1 -0
  479. package/dist/components/roadmap/derive.js +28 -0
  480. package/dist/components/roadmap/derive.js.map +1 -0
  481. package/dist/components/stepper/Stepper.js +276 -0
  482. package/dist/components/stepper/Stepper.js.map +1 -0
  483. package/dist/components/stepper/derive.js +53 -0
  484. package/dist/components/stepper/derive.js.map +1 -0
  485. package/dist/confidence.css +222 -0
  486. package/dist/fonts/bricolage-grotesque-0.woff2 +0 -0
  487. package/dist/fonts/bricolage-grotesque-1.woff2 +0 -0
  488. package/dist/fonts/bricolage-grotesque-2.woff2 +0 -0
  489. package/dist/fonts/figtree-0.woff2 +0 -0
  490. package/dist/fonts/figtree-1.woff2 +0 -0
  491. package/dist/fonts/figtree-2.woff2 +0 -0
  492. package/dist/fonts/figtree-3.woff2 +0 -0
  493. package/dist/fonts/jetbrains-mono-0.woff2 +0 -0
  494. package/dist/fonts/jetbrains-mono-1.woff2 +0 -0
  495. package/dist/fonts/jetbrains-mono-10.woff2 +0 -0
  496. package/dist/fonts/jetbrains-mono-11.woff2 +0 -0
  497. package/dist/fonts/jetbrains-mono-2.woff2 +0 -0
  498. package/dist/fonts/jetbrains-mono-3.woff2 +0 -0
  499. package/dist/fonts/jetbrains-mono-4.woff2 +0 -0
  500. package/dist/fonts/jetbrains-mono-5.woff2 +0 -0
  501. package/dist/fonts/jetbrains-mono-6.woff2 +0 -0
  502. package/dist/fonts/jetbrains-mono-7.woff2 +0 -0
  503. package/dist/fonts/jetbrains-mono-8.woff2 +0 -0
  504. package/dist/fonts/jetbrains-mono-9.woff2 +0 -0
  505. package/dist/fonts.css +187 -0
  506. package/dist/icons/data.js +233 -0
  507. package/dist/icons/data.js.map +1 -0
  508. package/dist/index.js +942 -0
  509. package/dist/index.js.map +1 -0
  510. package/dist/lib/attention.js +75 -0
  511. package/dist/lib/attention.js.map +1 -0
  512. package/dist/lib/board/anchor.js +14 -0
  513. package/dist/lib/board/anchor.js.map +1 -0
  514. package/dist/lib/board/model.js +41 -0
  515. package/dist/lib/board/model.js.map +1 -0
  516. package/dist/lib/board/move.js +161 -0
  517. package/dist/lib/board/move.js.map +1 -0
  518. package/dist/lib/board/position.js +11 -0
  519. package/dist/lib/board/position.js.map +1 -0
  520. package/dist/lib/board/rejection.js +22 -0
  521. package/dist/lib/board/rejection.js.map +1 -0
  522. package/dist/lib/board/use-board.js +43 -0
  523. package/dist/lib/board/use-board.js.map +1 -0
  524. package/dist/lib/calendar/band-packer.js +44 -0
  525. package/dist/lib/calendar/band-packer.js.map +1 -0
  526. package/dist/lib/calendar/drag.js +74 -0
  527. package/dist/lib/calendar/drag.js.map +1 -0
  528. package/dist/lib/calendar/lane-packer.js +67 -0
  529. package/dist/lib/calendar/lane-packer.js.map +1 -0
  530. package/dist/lib/calendar/segments.js +82 -0
  531. package/dist/lib/calendar/segments.js.map +1 -0
  532. package/dist/lib/calendar/types.js +7 -0
  533. package/dist/lib/calendar/types.js.map +1 -0
  534. package/dist/lib/chart-palette.js +27 -0
  535. package/dist/lib/chart-palette.js.map +1 -0
  536. package/dist/lib/clipboard.js +30 -0
  537. package/dist/lib/clipboard.js.map +1 -0
  538. package/dist/lib/cn.js +9 -0
  539. package/dist/lib/cn.js.map +1 -0
  540. package/dist/lib/color.js +24 -0
  541. package/dist/lib/color.js.map +1 -0
  542. package/dist/lib/component-guidance.js +297 -0
  543. package/dist/lib/component-guidance.js.map +1 -0
  544. package/dist/lib/confidence.js +22 -0
  545. package/dist/lib/confidence.js.map +1 -0
  546. package/dist/lib/date-timeline/scale.js +197 -0
  547. package/dist/lib/date-timeline/scale.js.map +1 -0
  548. package/dist/lib/design-frame/document.js +44 -0
  549. package/dist/lib/design-frame/document.js.map +1 -0
  550. package/dist/lib/design-frame/mini-app-script.js +107 -0
  551. package/dist/lib/design-frame/mini-app-script.js.map +1 -0
  552. package/dist/lib/design-frame/mini-app.js +12 -0
  553. package/dist/lib/design-frame/mini-app.js.map +1 -0
  554. package/dist/lib/design-frame/protocol.js +46 -0
  555. package/dist/lib/design-frame/protocol.js.map +1 -0
  556. package/dist/lib/dev-warn.js +17 -0
  557. package/dist/lib/dev-warn.js.map +1 -0
  558. package/dist/lib/dnd/announce.js +120 -0
  559. package/dist/lib/dnd/announce.js.map +1 -0
  560. package/dist/lib/dnd/autoscroll.js +123 -0
  561. package/dist/lib/dnd/autoscroll.js.map +1 -0
  562. package/dist/lib/dnd/cross-drop.js +11 -0
  563. package/dist/lib/dnd/cross-drop.js.map +1 -0
  564. package/dist/lib/dnd/geometry.js +99 -0
  565. package/dist/lib/dnd/geometry.js.map +1 -0
  566. package/dist/lib/dnd/sensors/gesture.js +86 -0
  567. package/dist/lib/dnd/sensors/gesture.js.map +1 -0
  568. package/dist/lib/dnd/sensors/keyboard.js +47 -0
  569. package/dist/lib/dnd/sensors/keyboard.js.map +1 -0
  570. package/dist/lib/dnd/sensors/pointer.js +32 -0
  571. package/dist/lib/dnd/sensors/pointer.js.map +1 -0
  572. package/dist/lib/dnd/session.js +256 -0
  573. package/dist/lib/dnd/session.js.map +1 -0
  574. package/dist/lib/dnd/use-drag.js +90 -0
  575. package/dist/lib/dnd/use-drag.js.map +1 -0
  576. package/dist/lib/dom/scroll-ancestor.js +18 -0
  577. package/dist/lib/dom/scroll-ancestor.js.map +1 -0
  578. package/dist/lib/format.js +23 -0
  579. package/dist/lib/format.js.map +1 -0
  580. package/dist/lib/group-in-order.js +13 -0
  581. package/dist/lib/group-in-order.js.map +1 -0
  582. package/dist/lib/header-fold.js +11 -0
  583. package/dist/lib/header-fold.js.map +1 -0
  584. package/dist/lib/i18n/areas/auth-provenance-flows.js +156 -0
  585. package/dist/lib/i18n/areas/auth-provenance-flows.js.map +1 -0
  586. package/dist/lib/i18n/areas/board.js +35 -0
  587. package/dist/lib/i18n/areas/board.js.map +1 -0
  588. package/dist/lib/i18n/areas/card-face.js +10 -0
  589. package/dist/lib/i18n/areas/card-face.js.map +1 -0
  590. package/dist/lib/i18n/areas/chat-chart.js +118 -0
  591. package/dist/lib/i18n/areas/chat-chart.js.map +1 -0
  592. package/dist/lib/i18n/areas/code-editor.js +24 -0
  593. package/dist/lib/i18n/areas/code-editor.js.map +1 -0
  594. package/dist/lib/i18n/areas/date-timeline.js +21 -0
  595. package/dist/lib/i18n/areas/date-timeline.js.map +1 -0
  596. package/dist/lib/i18n/areas/dates.js +71 -0
  597. package/dist/lib/i18n/areas/dates.js.map +1 -0
  598. package/dist/lib/i18n/areas/docs-views.js +183 -0
  599. package/dist/lib/i18n/areas/docs-views.js.map +1 -0
  600. package/dist/lib/i18n/areas/feedback.js +75 -0
  601. package/dist/lib/i18n/areas/feedback.js.map +1 -0
  602. package/dist/lib/i18n/areas/formats.js +24 -0
  603. package/dist/lib/i18n/areas/formats.js.map +1 -0
  604. package/dist/lib/i18n/areas/forms.js +110 -0
  605. package/dist/lib/i18n/areas/forms.js.map +1 -0
  606. package/dist/lib/i18n/areas/keys.js +25 -0
  607. package/dist/lib/i18n/areas/keys.js.map +1 -0
  608. package/dist/lib/i18n/areas/markdown.js +136 -0
  609. package/dist/lib/i18n/areas/markdown.js.map +1 -0
  610. package/dist/lib/i18n/areas/move-rejected.js +14 -0
  611. package/dist/lib/i18n/areas/move-rejected.js.map +1 -0
  612. package/dist/lib/i18n/areas/navigation.js +104 -0
  613. package/dist/lib/i18n/areas/navigation.js.map +1 -0
  614. package/dist/lib/i18n/areas/rbac.js +331 -0
  615. package/dist/lib/i18n/areas/rbac.js.map +1 -0
  616. package/dist/lib/i18n/emphasis.js +6 -0
  617. package/dist/lib/i18n/emphasis.js.map +1 -0
  618. package/dist/lib/i18n/number-format.js +9 -0
  619. package/dist/lib/i18n/number-format.js.map +1 -0
  620. package/dist/lib/i18n/plural.js +9 -0
  621. package/dist/lib/i18n/plural.js.map +1 -0
  622. package/dist/lib/i18n/provider.js +27 -0
  623. package/dist/lib/i18n/provider.js.map +1 -0
  624. package/dist/lib/i18n/strings.js +38 -0
  625. package/dist/lib/i18n/strings.js.map +1 -0
  626. package/dist/lib/icons.js +17 -0
  627. package/dist/lib/icons.js.map +1 -0
  628. package/dist/lib/interactive-target.js +9 -0
  629. package/dist/lib/interactive-target.js.map +1 -0
  630. package/dist/lib/intl-cache.js +69 -0
  631. package/dist/lib/intl-cache.js.map +1 -0
  632. package/dist/lib/legal-document.js +37 -0
  633. package/dist/lib/legal-document.js.map +1 -0
  634. package/dist/lib/line-diff-model.js +51 -0
  635. package/dist/lib/line-diff-model.js.map +1 -0
  636. package/dist/lib/markdown/attachments.js +71 -0
  637. package/dist/lib/markdown/attachments.js.map +1 -0
  638. package/dist/lib/markdown/caret-map.js +153 -0
  639. package/dist/lib/markdown/caret-map.js.map +1 -0
  640. package/dist/lib/markdown/caret.js +35 -0
  641. package/dist/lib/markdown/caret.js.map +1 -0
  642. package/dist/lib/markdown/commands.js +443 -0
  643. package/dist/lib/markdown/commands.js.map +1 -0
  644. package/dist/lib/markdown/convert.js +153 -0
  645. package/dist/lib/markdown/convert.js.map +1 -0
  646. package/dist/lib/markdown/dom.js +89 -0
  647. package/dist/lib/markdown/dom.js.map +1 -0
  648. package/dist/lib/markdown/edit.js +92 -0
  649. package/dist/lib/markdown/edit.js.map +1 -0
  650. package/dist/lib/markdown/history.js +79 -0
  651. package/dist/lib/markdown/history.js.map +1 -0
  652. package/dist/lib/markdown/hotkeys.js +63 -0
  653. package/dist/lib/markdown/hotkeys.js.map +1 -0
  654. package/dist/lib/markdown/image-pipeline.js +236 -0
  655. package/dist/lib/markdown/image-pipeline.js.map +1 -0
  656. package/dist/lib/markdown/images.js +85 -0
  657. package/dist/lib/markdown/images.js.map +1 -0
  658. package/dist/lib/markdown/input.js +210 -0
  659. package/dist/lib/markdown/input.js.map +1 -0
  660. package/dist/lib/markdown/keys.js +37 -0
  661. package/dist/lib/markdown/keys.js.map +1 -0
  662. package/dist/lib/markdown/paste.js +180 -0
  663. package/dist/lib/markdown/paste.js.map +1 -0
  664. package/dist/lib/markdown/position.js +111 -0
  665. package/dist/lib/markdown/position.js.map +1 -0
  666. package/dist/lib/markdown/project.js +108 -0
  667. package/dist/lib/markdown/project.js.map +1 -0
  668. package/dist/lib/markdown/reconcile.js +127 -0
  669. package/dist/lib/markdown/reconcile.js.map +1 -0
  670. package/dist/lib/markdown/surface.js +373 -0
  671. package/dist/lib/markdown/surface.js.map +1 -0
  672. package/dist/lib/motion.js +22 -0
  673. package/dist/lib/motion.js.map +1 -0
  674. package/dist/lib/pad.js +7 -0
  675. package/dist/lib/pad.js.map +1 -0
  676. package/dist/lib/paged-window/layout.js +15 -0
  677. package/dist/lib/paged-window/layout.js.map +1 -0
  678. package/dist/lib/paged-window/list-owner.js +21 -0
  679. package/dist/lib/paged-window/list-owner.js.map +1 -0
  680. package/dist/lib/paged-window/records-binding.js +239 -0
  681. package/dist/lib/paged-window/records-binding.js.map +1 -0
  682. package/dist/lib/paged-window/store.js +562 -0
  683. package/dist/lib/paged-window/store.js.map +1 -0
  684. package/dist/lib/paged-window/use-measured-pitch.js +38 -0
  685. package/dist/lib/paged-window/use-measured-pitch.js.map +1 -0
  686. package/dist/lib/paged-window/use-page-visibility.js +36 -0
  687. package/dist/lib/paged-window/use-page-visibility.js.map +1 -0
  688. package/dist/lib/paged-window/use-paged-window.js +43 -0
  689. package/dist/lib/paged-window/use-paged-window.js.map +1 -0
  690. package/dist/lib/paged-window/use-scroll-root.js +12 -0
  691. package/dist/lib/paged-window/use-scroll-root.js.map +1 -0
  692. package/dist/lib/persist.js +84 -0
  693. package/dist/lib/persist.js.map +1 -0
  694. package/dist/lib/preference-values.js +13 -0
  695. package/dist/lib/preference-values.js.map +1 -0
  696. package/dist/lib/preferences.js +86 -0
  697. package/dist/lib/preferences.js.map +1 -0
  698. package/dist/lib/reads/hooks.js +156 -0
  699. package/dist/lib/reads/hooks.js.map +1 -0
  700. package/dist/lib/reads/optimistic.js +169 -0
  701. package/dist/lib/reads/optimistic.js.map +1 -0
  702. package/dist/lib/reads/refetch.js +108 -0
  703. package/dist/lib/reads/refetch.js.map +1 -0
  704. package/dist/lib/reads/slots.js +215 -0
  705. package/dist/lib/reads/slots.js.map +1 -0
  706. package/dist/lib/realtime/hooks.js +40 -0
  707. package/dist/lib/realtime/hooks.js.map +1 -0
  708. package/dist/lib/realtime/provider.js +25 -0
  709. package/dist/lib/realtime/provider.js.map +1 -0
  710. package/dist/lib/realtime/registry.js +472 -0
  711. package/dist/lib/realtime/registry.js.map +1 -0
  712. package/dist/lib/records/define-record-type.js +33 -0
  713. package/dist/lib/records/define-record-type.js.map +1 -0
  714. package/dist/lib/records/hooks.js +39 -0
  715. package/dist/lib/records/hooks.js.map +1 -0
  716. package/dist/lib/records/store.js +572 -0
  717. package/dist/lib/records/store.js.map +1 -0
  718. package/dist/lib/records/wire.js +58 -0
  719. package/dist/lib/records/wire.js.map +1 -0
  720. package/dist/lib/reduced-motion-help.js +19 -0
  721. package/dist/lib/reduced-motion-help.js.map +1 -0
  722. package/dist/lib/scroll-caret.js +18 -0
  723. package/dist/lib/scroll-caret.js.map +1 -0
  724. package/dist/lib/sim/createSimStore.js +54 -0
  725. package/dist/lib/sim/createSimStore.js.map +1 -0
  726. package/dist/lib/sim/latency.js +28 -0
  727. package/dist/lib/sim/latency.js.map +1 -0
  728. package/dist/lib/sim/registry.js +13 -0
  729. package/dist/lib/sim/registry.js.map +1 -0
  730. package/dist/lib/sim/settings.js +41 -0
  731. package/dist/lib/sim/settings.js.map +1 -0
  732. package/dist/lib/submit-shortcut.js +25 -0
  733. package/dist/lib/submit-shortcut.js.map +1 -0
  734. package/dist/lib/syntax/index.js +33 -0
  735. package/dist/lib/syntax/index.js.map +1 -0
  736. package/dist/lib/syntax/languages/bash.js +77 -0
  737. package/dist/lib/syntax/languages/bash.js.map +1 -0
  738. package/dist/lib/syntax/languages/css.js +81 -0
  739. package/dist/lib/syntax/languages/css.js.map +1 -0
  740. package/dist/lib/syntax/languages/html.js +91 -0
  741. package/dist/lib/syntax/languages/html.js.map +1 -0
  742. package/dist/lib/syntax/languages/index.js +49 -0
  743. package/dist/lib/syntax/languages/index.js.map +1 -0
  744. package/dist/lib/syntax/languages/javascript.js +133 -0
  745. package/dist/lib/syntax/languages/javascript.js.map +1 -0
  746. package/dist/lib/syntax/languages/json.js +45 -0
  747. package/dist/lib/syntax/languages/json.js.map +1 -0
  748. package/dist/lib/syntax/languages/mongodb.js +24 -0
  749. package/dist/lib/syntax/languages/mongodb.js.map +1 -0
  750. package/dist/lib/syntax/languages/plain.js +10 -0
  751. package/dist/lib/syntax/languages/plain.js.map +1 -0
  752. package/dist/lib/syntax/languages/sql.js +113 -0
  753. package/dist/lib/syntax/languages/sql.js.map +1 -0
  754. package/dist/lib/syntax/languages/vue.js +31 -0
  755. package/dist/lib/syntax/languages/vue.js.map +1 -0
  756. package/dist/lib/syntax/languages/yaml.js +55 -0
  757. package/dist/lib/syntax/languages/yaml.js.map +1 -0
  758. package/dist/lib/syntax/markdown/grammar.js +52 -0
  759. package/dist/lib/syntax/markdown/grammar.js.map +1 -0
  760. package/dist/lib/syntax/markdown/inline.js +477 -0
  761. package/dist/lib/syntax/markdown/inline.js.map +1 -0
  762. package/dist/lib/syntax/markdown/parse.js +464 -0
  763. package/dist/lib/syntax/markdown/parse.js.map +1 -0
  764. package/dist/lib/syntax/markdown/refs.js +94 -0
  765. package/dist/lib/syntax/markdown/refs.js.map +1 -0
  766. package/dist/lib/syntax/markdown/render.js +230 -0
  767. package/dist/lib/syntax/markdown/render.js.map +1 -0
  768. package/dist/lib/syntax/markdown/spans.js +40 -0
  769. package/dist/lib/syntax/markdown/spans.js.map +1 -0
  770. package/dist/lib/syntax/registry.js +55 -0
  771. package/dist/lib/syntax/registry.js.map +1 -0
  772. package/dist/lib/syntax/tokenize.js +96 -0
  773. package/dist/lib/syntax/tokenize.js.map +1 -0
  774. package/dist/lib/time/instant.js +7 -0
  775. package/dist/lib/time/instant.js.map +1 -0
  776. package/dist/lib/time/plain.js +83 -0
  777. package/dist/lib/time/plain.js.map +1 -0
  778. package/dist/lib/time/relativeAge.js +20 -0
  779. package/dist/lib/time/relativeAge.js.map +1 -0
  780. package/dist/lib/time/relativeClock.js +59 -0
  781. package/dist/lib/time/relativeClock.js.map +1 -0
  782. package/dist/lib/time/types.js +23 -0
  783. package/dist/lib/time/types.js.map +1 -0
  784. package/dist/lib/time/zone.js +148 -0
  785. package/dist/lib/time/zone.js.map +1 -0
  786. package/dist/lib/use-controllable.js +16 -0
  787. package/dist/lib/use-controllable.js.map +1 -0
  788. package/dist/lib/use-fill-height.js +49 -0
  789. package/dist/lib/use-fill-height.js.map +1 -0
  790. package/dist/lib/use-hydrated.js +14 -0
  791. package/dist/lib/use-hydrated.js.map +1 -0
  792. package/dist/lib/use-media-query.js +30 -0
  793. package/dist/lib/use-media-query.js.map +1 -0
  794. package/dist/lib/use-relabel-base-ui-dismiss.js +26 -0
  795. package/dist/lib/use-relabel-base-ui-dismiss.js.map +1 -0
  796. package/dist/lib/use-release-snap-drag.js +29 -0
  797. package/dist/lib/use-release-snap-drag.js.map +1 -0
  798. package/dist/lib/use-roving-options.js +18 -0
  799. package/dist/lib/use-roving-options.js.map +1 -0
  800. package/dist/lib/values/absent.js +5 -0
  801. package/dist/lib/values/absent.js.map +1 -0
  802. package/dist/lib/values/boolean.js +13 -0
  803. package/dist/lib/values/boolean.js.map +1 -0
  804. package/dist/lib/values/currency.js +23 -0
  805. package/dist/lib/values/currency.js.map +1 -0
  806. package/dist/lib/values/date.js +35 -0
  807. package/dist/lib/values/date.js.map +1 -0
  808. package/dist/lib/values/datetime.js +54 -0
  809. package/dist/lib/values/datetime.js.map +1 -0
  810. package/dist/lib/values/locale-date.js +60 -0
  811. package/dist/lib/values/locale-date.js.map +1 -0
  812. package/dist/lib/values/number.js +16 -0
  813. package/dist/lib/values/number.js.map +1 -0
  814. package/dist/pure.js +379 -0
  815. package/dist/pure.js.map +1 -0
  816. package/dist/styles.css +190 -0
  817. package/dist/theme.css +360 -0
  818. package/dist/types/components/Accordion.d.ts +15 -0
  819. package/dist/types/components/AgentWorkingSpinner.d.ts +23 -0
  820. package/dist/types/components/AppShell.d.ts +164 -0
  821. package/dist/types/components/Attention.d.ts +87 -0
  822. package/dist/types/components/Avatar.d.ts +154 -0
  823. package/dist/types/components/Badge.d.ts +131 -0
  824. package/dist/types/components/Board.d.ts +239 -0
  825. package/dist/types/components/Button.d.ts +208 -0
  826. package/dist/types/components/Callout.d.ts +163 -0
  827. package/dist/types/components/Card.d.ts +219 -0
  828. package/dist/types/components/Choice.d.ts +127 -0
  829. package/dist/types/components/CodeEditor.d.ts +86 -0
  830. package/dist/types/components/ColorPicker.d.ts +14 -0
  831. package/dist/types/components/Combobox.d.ts +43 -0
  832. package/dist/types/components/CommandPalette.d.ts +35 -0
  833. package/dist/types/components/ConcentricRing.d.ts +61 -0
  834. package/dist/types/components/ConnectionCard.d.ts +64 -0
  835. package/dist/types/components/ContextItemRow.d.ts +35 -0
  836. package/dist/types/components/CopyValue.d.ts +14 -0
  837. package/dist/types/components/CountBadge.d.ts +14 -0
  838. package/dist/types/components/DateCalendar.d.ts +30 -0
  839. package/dist/types/components/DateField.d.ts +29 -0
  840. package/dist/types/components/DatePicker.d.ts +20 -0
  841. package/dist/types/components/DateTimeText.d.ts +9 -0
  842. package/dist/types/components/DescriptionList.d.ts +40 -0
  843. package/dist/types/components/Dialog.d.ts +269 -0
  844. package/dist/types/components/DragDrop.d.ts +196 -0
  845. package/dist/types/components/Drawer.d.ts +163 -0
  846. package/dist/types/components/EditGutter.d.ts +44 -0
  847. package/dist/types/components/EmojiPicker.d.ts +30 -0
  848. package/dist/types/components/ErrorBoundary.d.ts +43 -0
  849. package/dist/types/components/Field.d.ts +37 -0
  850. package/dist/types/components/FileUpload.d.ts +22 -0
  851. package/dist/types/components/FilterMenu.d.ts +120 -0
  852. package/dist/types/components/GatesSection.d.ts +79 -0
  853. package/dist/types/components/Icon.d.ts +40 -0
  854. package/dist/types/components/IconButton.d.ts +69 -0
  855. package/dist/types/components/IconStack.d.ts +28 -0
  856. package/dist/types/components/ImageUploadField.d.ts +38 -0
  857. package/dist/types/components/InlineEdit.d.ts +183 -0
  858. package/dist/types/components/InlineMarkdownEdit.d.ts +100 -0
  859. package/dist/types/components/Input.d.ts +128 -0
  860. package/dist/types/components/LegalDocument.d.ts +23 -0
  861. package/dist/types/components/LineDiff.d.ts +53 -0
  862. package/dist/types/components/ListHeader.d.ts +45 -0
  863. package/dist/types/components/Loading.d.ts +131 -0
  864. package/dist/types/components/Markdown.d.ts +35 -0
  865. package/dist/types/components/MarkdownEditor.d.ts +129 -0
  866. package/dist/types/components/Menu.d.ts +157 -0
  867. package/dist/types/components/Navigation.d.ts +67 -0
  868. package/dist/types/components/NumberInput.d.ts +177 -0
  869. package/dist/types/components/OTPInput.d.ts +13 -0
  870. package/dist/types/components/OrderedEntityManager.d.ts +64 -0
  871. package/dist/types/components/PagedWindowList.d.ts +23 -0
  872. package/dist/types/components/PaginationBar.d.ts +31 -0
  873. package/dist/types/components/Panel.d.ts +94 -0
  874. package/dist/types/components/PasswordInput.d.ts +7 -0
  875. package/dist/types/components/PasswordRequirements.d.ts +11 -0
  876. package/dist/types/components/PatchDiff.d.ts +38 -0
  877. package/dist/types/components/PendingVeil.d.ts +8 -0
  878. package/dist/types/components/Popover.d.ts +231 -0
  879. package/dist/types/components/Progress.d.ts +580 -0
  880. package/dist/types/components/RatingScale.d.ts +30 -0
  881. package/dist/types/components/ReadMore.d.ts +26 -0
  882. package/dist/types/components/RecordCard.d.ts +413 -0
  883. package/dist/types/components/RelativeTime.d.ts +17 -0
  884. package/dist/types/components/SandboxedFrame.d.ts +37 -0
  885. package/dist/types/components/SearchInput.d.ts +6 -0
  886. package/dist/types/components/SecretField.d.ts +90 -0
  887. package/dist/types/components/SectionNav.d.ts +15 -0
  888. package/dist/types/components/Select.d.ts +53 -0
  889. package/dist/types/components/SequenceDiagram.d.ts +15 -0
  890. package/dist/types/components/SettingRow.d.ts +144 -0
  891. package/dist/types/components/SignOffRings.d.ts +29 -0
  892. package/dist/types/components/Slider.d.ts +255 -0
  893. package/dist/types/components/SolutionChoice.d.ts +49 -0
  894. package/dist/types/components/SortMenu.d.ts +45 -0
  895. package/dist/types/components/Spinner.d.ts +29 -0
  896. package/dist/types/components/Stat.d.ts +136 -0
  897. package/dist/types/components/StatusSelect.d.ts +93 -0
  898. package/dist/types/components/Surface.d.ts +145 -0
  899. package/dist/types/components/Table.d.ts +164 -0
  900. package/dist/types/components/Tabs.d.ts +142 -0
  901. package/dist/types/components/ThemeMenu.d.ts +56 -0
  902. package/dist/types/components/Toast.d.ts +63 -0
  903. package/dist/types/components/Toggle.d.ts +168 -0
  904. package/dist/types/components/ToggleMatrix.d.ts +51 -0
  905. package/dist/types/components/Tree.d.ts +20 -0
  906. package/dist/types/components/TriStateSwitch.d.ts +63 -0
  907. package/dist/types/components/VideoPlayer.d.ts +26 -0
  908. package/dist/types/components/auth/AcceptInvitationCard.d.ts +54 -0
  909. package/dist/types/components/auth/AuthLayout.d.ts +12 -0
  910. package/dist/types/components/auth/ForgotPasswordForm.d.ts +6 -0
  911. package/dist/types/components/auth/LoginForm.d.ts +13 -0
  912. package/dist/types/components/auth/ResetPasswordForm.d.ts +9 -0
  913. package/dist/types/components/auth/SignInProviders.d.ts +56 -0
  914. package/dist/types/components/auth/SignupCard.d.ts +62 -0
  915. package/dist/types/components/auth/TermsAcceptance.d.ts +14 -0
  916. package/dist/types/components/auth/index.d.ts +8 -0
  917. package/dist/types/components/board/context.d.ts +65 -0
  918. package/dist/types/components/board/recipe.d.ts +97 -0
  919. package/dist/types/components/calendar/CalendarMonth.d.ts +32 -0
  920. package/dist/types/components/calendar/CalendarTimeGrid.d.ts +74 -0
  921. package/dist/types/components/calendar/EventActions.d.ts +16 -0
  922. package/dist/types/components/calendar/format.d.ts +42 -0
  923. package/dist/types/components/calendar/palette.d.ts +17 -0
  924. package/dist/types/components/calendar/use-calendar-drag.d.ts +53 -0
  925. package/dist/types/components/calendar/use-event-keyboard.d.ts +23 -0
  926. package/dist/types/components/calendar/use-grid-navigation.d.ts +47 -0
  927. package/dist/types/components/calendar/use-now.d.ts +20 -0
  928. package/dist/types/components/card-face/AcRingGlyph.d.ts +20 -0
  929. package/dist/types/components/card-face/BoardCardAgentSlot.d.ts +19 -0
  930. package/dist/types/components/card-face/CardFace.d.ts +106 -0
  931. package/dist/types/components/card-face/CardTypeBadge.d.ts +21 -0
  932. package/dist/types/components/card-face/EffortBadge.d.ts +9 -0
  933. package/dist/types/components/card-face/GateRingGlyph.d.ts +22 -0
  934. package/dist/types/components/card-face/OverflowRow.d.ts +40 -0
  935. package/dist/types/components/card-face/TapTip.d.ts +15 -0
  936. package/dist/types/components/card-face/hit-area.d.ts +20 -0
  937. package/dist/types/components/card-face/vocabulary.d.ts +83 -0
  938. package/dist/types/components/chart/BarList.d.ts +27 -0
  939. package/dist/types/components/chart/LineChart.d.ts +64 -0
  940. package/dist/types/components/chart/ShareBar.d.ts +26 -0
  941. package/dist/types/components/chart/TimeSeriesChart.d.ts +60 -0
  942. package/dist/types/components/chart/label-metrics.d.ts +9 -0
  943. package/dist/types/components/chart/line-chart-axis.d.ts +14 -0
  944. package/dist/types/components/chart/line-chart-scale.d.ts +55 -0
  945. package/dist/types/components/chart/line-series-style.d.ts +14 -0
  946. package/dist/types/components/chart/share-bar-labels.d.ts +17 -0
  947. package/dist/types/components/chart/shared.d.ts +122 -0
  948. package/dist/types/components/chart/time-series-scale.d.ts +29 -0
  949. package/dist/types/components/chat/Attachment.d.ts +125 -0
  950. package/dist/types/components/chat/Chat.d.ts +60 -0
  951. package/dist/types/components/chat/Composer.d.ts +62 -0
  952. package/dist/types/components/chat/ContextMeter.d.ts +45 -0
  953. package/dist/types/components/chat/EffortControl.d.ts +23 -0
  954. package/dist/types/components/chat/FileCover.d.ts +14 -0
  955. package/dist/types/components/chat/Message.d.ts +66 -0
  956. package/dist/types/components/chat/MessageScroller.d.ts +18 -0
  957. package/dist/types/components/chat/ModelSelector.d.ts +44 -0
  958. package/dist/types/components/chat/StreamingMarkdown.d.ts +11 -0
  959. package/dist/types/components/chat/download-file.d.ts +7 -0
  960. package/dist/types/components/chat/file-icon.d.ts +29 -0
  961. package/dist/types/components/chat/types.d.ts +165 -0
  962. package/dist/types/components/checklist/StatusChecklist.d.ts +37 -0
  963. package/dist/types/components/checklist/index.d.ts +3 -0
  964. package/dist/types/components/checklist/tally.d.ts +19 -0
  965. package/dist/types/components/checklist/types.d.ts +28 -0
  966. package/dist/types/components/code-editor/context.d.ts +32 -0
  967. package/dist/types/components/code-editor/editing.d.ts +39 -0
  968. package/dist/types/components/code-editor/highlight.d.ts +20 -0
  969. package/dist/types/components/code-editor/recipe.d.ts +109 -0
  970. package/dist/types/components/date-timeline/DateTimeline.d.ts +99 -0
  971. package/dist/types/components/date-timeline/TimelineRow.d.ts +22 -0
  972. package/dist/types/components/date-timeline/useBarDrag.d.ts +15 -0
  973. package/dist/types/components/date-timeline/useMarkerDrag.d.ts +14 -0
  974. package/dist/types/components/date-timeline/useTimelineZoom.d.ts +23 -0
  975. package/dist/types/components/drag-drop/context.d.ts +85 -0
  976. package/dist/types/components/drag-drop/recipe.d.ts +163 -0
  977. package/dist/types/components/drag-drop/shift.d.ts +153 -0
  978. package/dist/types/components/edit/activation.d.ts +21 -0
  979. package/dist/types/components/edit/outcome.d.ts +29 -0
  980. package/dist/types/components/edit/use-edit-session.d.ts +77 -0
  981. package/dist/types/components/file-viewer/FileViewer.d.ts +2 -0
  982. package/dist/types/components/file-viewer/PageNumberJumpField.d.ts +9 -0
  983. package/dist/types/components/file-viewer/ViewerControls.d.ts +20 -0
  984. package/dist/types/components/file-viewer/ViewerRail.d.ts +10 -0
  985. package/dist/types/components/file-viewer/ViewerStage.d.ts +22 -0
  986. package/dist/types/components/file-viewer/frames.d.ts +28 -0
  987. package/dist/types/components/file-viewer/index.d.ts +3 -0
  988. package/dist/types/components/file-viewer/types.d.ts +70 -0
  989. package/dist/types/components/file-viewer/use-frame-cursor.d.ts +13 -0
  990. package/dist/types/components/file-viewer/use-viewer-keys.d.ts +24 -0
  991. package/dist/types/components/file-viewer/use-viewer-zoom.d.ts +29 -0
  992. package/dist/types/components/focus-web/FocusWeb.d.ts +3 -0
  993. package/dist/types/components/focus-web/index.d.ts +4 -0
  994. package/dist/types/components/focus-web/layout.d.ts +55 -0
  995. package/dist/types/components/focus-web/types.d.ts +131 -0
  996. package/dist/types/components/graph-explorer/GraphExplorer.d.ts +42 -0
  997. package/dist/types/components/graph-explorer/camera-math.d.ts +119 -0
  998. package/dist/types/components/graph-explorer/index.d.ts +5 -0
  999. package/dist/types/components/graph-explorer/tree-layout.d.ts +67 -0
  1000. package/dist/types/components/graph-explorer/types.d.ts +62 -0
  1001. package/dist/types/components/graph-explorer/use-camera.d.ts +81 -0
  1002. package/dist/types/components/graph-explorer/viewport-gesture.d.ts +32 -0
  1003. package/dist/types/components/kanban/KanbanBoard.d.ts +72 -0
  1004. package/dist/types/components/kanban/recipe.d.ts +73 -0
  1005. package/dist/types/components/kanban/types.d.ts +55 -0
  1006. package/dist/types/components/markdown/Affordances.d.ts +105 -0
  1007. package/dist/types/components/markdown/AttachmentStrip.d.ts +25 -0
  1008. package/dist/types/components/markdown/ImageUpload.d.ts +56 -0
  1009. package/dist/types/components/media-error.d.ts +11 -0
  1010. package/dist/types/components/nav-sections.d.ts +10 -0
  1011. package/dist/types/components/node-canvas/NodeCanvas.d.ts +66 -0
  1012. package/dist/types/components/node-canvas/index.d.ts +3 -0
  1013. package/dist/types/components/node-canvas/layout.d.ts +29 -0
  1014. package/dist/types/components/node-canvas/types.d.ts +207 -0
  1015. package/dist/types/components/node-canvas/use-canvas-gestures.d.ts +39 -0
  1016. package/dist/types/components/openapi/OpenApiViewer.d.ts +14 -0
  1017. package/dist/types/components/openapi/OperationCard.d.ts +33 -0
  1018. package/dist/types/components/openapi/SchemaView.d.ts +14 -0
  1019. package/dist/types/components/openapi/index.d.ts +6 -0
  1020. package/dist/types/components/openapi/resolve.d.ts +72 -0
  1021. package/dist/types/components/openapi/types.d.ts +128 -0
  1022. package/dist/types/components/overlay-shell.d.ts +48 -0
  1023. package/dist/types/components/overlay-stack.d.ts +18 -0
  1024. package/dist/types/components/paged-window/PageBlock.d.ts +31 -0
  1025. package/dist/types/components/provenance/ConfidenceBar.d.ts +118 -0
  1026. package/dist/types/components/provenance/ConfidenceMeter.d.ts +21 -0
  1027. package/dist/types/components/provenance/ConfidenceReadout.d.ts +17 -0
  1028. package/dist/types/components/provenance/ProvenanceBadge.d.ts +23 -0
  1029. package/dist/types/components/provenance/ProvenanceDetail.d.ts +109 -0
  1030. package/dist/types/components/provenance/ProvenanceDisclosure.d.ts +107 -0
  1031. package/dist/types/components/provenance/absence.d.ts +37 -0
  1032. package/dist/types/components/provenance/index.d.ts +7 -0
  1033. package/dist/types/components/provenance/types.d.ts +137 -0
  1034. package/dist/types/components/rbac/AccessRequestPanel.d.ts +92 -0
  1035. package/dist/types/components/rbac/AccountMenu.d.ts +46 -0
  1036. package/dist/types/components/rbac/AgentKeysList.d.ts +20 -0
  1037. package/dist/types/components/rbac/ApiKeysPanel.d.ts +26 -0
  1038. package/dist/types/components/rbac/ApiKeysTable.d.ts +63 -0
  1039. package/dist/types/components/rbac/Brand.d.ts +8 -0
  1040. package/dist/types/components/rbac/Can.d.ts +19 -0
  1041. package/dist/types/components/rbac/ChangePasswordForm.d.ts +18 -0
  1042. package/dist/types/components/rbac/DangerZone.d.ts +8 -0
  1043. package/dist/types/components/rbac/DevToolsPopover.d.ts +36 -0
  1044. package/dist/types/components/rbac/EndedLine.d.ts +21 -0
  1045. package/dist/types/components/rbac/InvitationsList.d.ts +39 -0
  1046. package/dist/types/components/rbac/InviteMembersDialog.d.ts +21 -0
  1047. package/dist/types/components/rbac/MembersPanel.d.ts +31 -0
  1048. package/dist/types/components/rbac/PermissionRequestPanel.d.ts +36 -0
  1049. package/dist/types/components/rbac/ProfileForm.d.ts +27 -0
  1050. package/dist/types/components/rbac/ProfilePage.d.ts +16 -0
  1051. package/dist/types/components/rbac/RBACProvider.d.ts +69 -0
  1052. package/dist/types/components/rbac/RoleEditorDialog.d.ts +28 -0
  1053. package/dist/types/components/rbac/RoleKeyPicker.d.ts +24 -0
  1054. package/dist/types/components/rbac/RolePermissionMatrix.d.ts +21 -0
  1055. package/dist/types/components/rbac/RolesPermissionsPage.d.ts +24 -0
  1056. package/dist/types/components/rbac/SessionsList.d.ts +35 -0
  1057. package/dist/types/components/rbac/TeamSettingsForm.d.ts +22 -0
  1058. package/dist/types/components/rbac/TeamSwitcher.d.ts +5 -0
  1059. package/dist/types/components/rbac/approvalPanelParts.d.ts +69 -0
  1060. package/dist/types/components/rbac/index.d.ts +25 -0
  1061. package/dist/types/components/rbac/permissionSections.d.ts +8 -0
  1062. package/dist/types/components/rbac/stagedForm.d.ts +25 -0
  1063. package/dist/types/components/rbac/types.d.ts +65 -0
  1064. package/dist/types/components/rbac/useStagedImage.d.ts +15 -0
  1065. package/dist/types/components/roadmap/PhaseManager.d.ts +19 -0
  1066. package/dist/types/components/roadmap/RoadmapItemCard.d.ts +51 -0
  1067. package/dist/types/components/roadmap/RoadmapPage.d.ts +12 -0
  1068. package/dist/types/components/roadmap/RoadmapSwimlaneBoard.d.ts +15 -0
  1069. package/dist/types/components/roadmap/TrackManager.d.ts +19 -0
  1070. package/dist/types/components/roadmap/UseCaseCard.d.ts +30 -0
  1071. package/dist/types/components/roadmap/UseCaseLedgerPage.d.ts +29 -0
  1072. package/dist/types/components/roadmap/chip-tones.d.ts +2 -0
  1073. package/dist/types/components/roadmap/derive.d.ts +39 -0
  1074. package/dist/types/components/roadmap/index.d.ts +10 -0
  1075. package/dist/types/components/roadmap/types.d.ts +86 -0
  1076. package/dist/types/components/stepper/Stepper.d.ts +79 -0
  1077. package/dist/types/components/stepper/derive.d.ts +49 -0
  1078. package/dist/types/components/stepper/index.d.ts +3 -0
  1079. package/dist/types/components/stepper/types.d.ts +118 -0
  1080. package/dist/types/icons/data.d.ts +2054 -0
  1081. package/dist/types/index.d.ts +209 -0
  1082. package/dist/types/lib/attention.d.ts +62 -0
  1083. package/dist/types/lib/board/anchor.d.ts +69 -0
  1084. package/dist/types/lib/board/index.d.ts +17 -0
  1085. package/dist/types/lib/board/model.d.ts +43 -0
  1086. package/dist/types/lib/board/move.d.ts +181 -0
  1087. package/dist/types/lib/board/position.d.ts +22 -0
  1088. package/dist/types/lib/board/rejection.d.ts +8 -0
  1089. package/dist/types/lib/board/types.d.ts +294 -0
  1090. package/dist/types/lib/board/use-board.d.ts +47 -0
  1091. package/dist/types/lib/calendar/band-packer.d.ts +53 -0
  1092. package/dist/types/lib/calendar/drag.d.ts +125 -0
  1093. package/dist/types/lib/calendar/index.d.ts +4 -0
  1094. package/dist/types/lib/calendar/lane-packer.d.ts +88 -0
  1095. package/dist/types/lib/calendar/segments.d.ts +91 -0
  1096. package/dist/types/lib/calendar/types.d.ts +166 -0
  1097. package/dist/types/lib/chart-palette.d.ts +14 -0
  1098. package/dist/types/lib/clipboard.d.ts +12 -0
  1099. package/dist/types/lib/cn.d.ts +7 -0
  1100. package/dist/types/lib/color.d.ts +14 -0
  1101. package/dist/types/lib/component-guidance.d.ts +15 -0
  1102. package/dist/types/lib/confidence.d.ts +28 -0
  1103. package/dist/types/lib/date-timeline/scale.d.ts +143 -0
  1104. package/dist/types/lib/design-frame/document.d.ts +39 -0
  1105. package/dist/types/lib/design-frame/mini-app-script.d.ts +29 -0
  1106. package/dist/types/lib/design-frame/mini-app.d.ts +17 -0
  1107. package/dist/types/lib/design-frame/protocol.d.ts +78 -0
  1108. package/dist/types/lib/dev-warn.d.ts +10 -0
  1109. package/dist/types/lib/dnd/announce.d.ts +124 -0
  1110. package/dist/types/lib/dnd/autoscroll.d.ts +88 -0
  1111. package/dist/types/lib/dnd/cross-drop.d.ts +18 -0
  1112. package/dist/types/lib/dnd/geometry.d.ts +126 -0
  1113. package/dist/types/lib/dnd/index.d.ts +17 -0
  1114. package/dist/types/lib/dnd/sensors/gesture.d.ts +37 -0
  1115. package/dist/types/lib/dnd/sensors/keyboard.d.ts +54 -0
  1116. package/dist/types/lib/dnd/sensors/pointer.d.ts +59 -0
  1117. package/dist/types/lib/dnd/session.d.ts +124 -0
  1118. package/dist/types/lib/dnd/types.d.ts +226 -0
  1119. package/dist/types/lib/dnd/use-drag.d.ts +82 -0
  1120. package/dist/types/lib/dom/scroll-ancestor.d.ts +15 -0
  1121. package/dist/types/lib/format.d.ts +33 -0
  1122. package/dist/types/lib/group-in-order.d.ts +13 -0
  1123. package/dist/types/lib/header-fold.d.ts +10 -0
  1124. package/dist/types/lib/i18n/areas/auth-provenance-flows.d.ts +287 -0
  1125. package/dist/types/lib/i18n/areas/board.d.ts +51 -0
  1126. package/dist/types/lib/i18n/areas/card-face.d.ts +8 -0
  1127. package/dist/types/lib/i18n/areas/chat-chart.d.ts +202 -0
  1128. package/dist/types/lib/i18n/areas/code-editor.d.ts +40 -0
  1129. package/dist/types/lib/i18n/areas/date-timeline.d.ts +36 -0
  1130. package/dist/types/lib/i18n/areas/dates.d.ts +103 -0
  1131. package/dist/types/lib/i18n/areas/docs-views.d.ts +297 -0
  1132. package/dist/types/lib/i18n/areas/feedback.d.ts +132 -0
  1133. package/dist/types/lib/i18n/areas/formats.d.ts +30 -0
  1134. package/dist/types/lib/i18n/areas/forms.d.ts +182 -0
  1135. package/dist/types/lib/i18n/areas/keys.d.ts +15 -0
  1136. package/dist/types/lib/i18n/areas/markdown.d.ts +150 -0
  1137. package/dist/types/lib/i18n/areas/move-rejected.d.ts +16 -0
  1138. package/dist/types/lib/i18n/areas/navigation.d.ts +185 -0
  1139. package/dist/types/lib/i18n/areas/rbac.d.ts +633 -0
  1140. package/dist/types/lib/i18n/emphasis.d.ts +3 -0
  1141. package/dist/types/lib/i18n/index.d.ts +10 -0
  1142. package/dist/types/lib/i18n/number-format.d.ts +5 -0
  1143. package/dist/types/lib/i18n/plural.d.ts +7 -0
  1144. package/dist/types/lib/i18n/provider.d.ts +16 -0
  1145. package/dist/types/lib/i18n/strings.d.ts +18 -0
  1146. package/dist/types/lib/icons.d.ts +22 -0
  1147. package/dist/types/lib/interactive-target.d.ts +3 -0
  1148. package/dist/types/lib/intl-cache.d.ts +31 -0
  1149. package/dist/types/lib/legal-document.d.ts +82 -0
  1150. package/dist/types/lib/line-diff-model.d.ts +39 -0
  1151. package/dist/types/lib/markdown/attachments.d.ts +50 -0
  1152. package/dist/types/lib/markdown/caret-map.d.ts +69 -0
  1153. package/dist/types/lib/markdown/caret.d.ts +6 -0
  1154. package/dist/types/lib/markdown/commands.d.ts +186 -0
  1155. package/dist/types/lib/markdown/convert.d.ts +99 -0
  1156. package/dist/types/lib/markdown/dom.d.ts +30 -0
  1157. package/dist/types/lib/markdown/edit.d.ts +16 -0
  1158. package/dist/types/lib/markdown/history.d.ts +59 -0
  1159. package/dist/types/lib/markdown/hotkeys.d.ts +63 -0
  1160. package/dist/types/lib/markdown/image-pipeline.d.ts +173 -0
  1161. package/dist/types/lib/markdown/images.d.ts +138 -0
  1162. package/dist/types/lib/markdown/input.d.ts +38 -0
  1163. package/dist/types/lib/markdown/keys.d.ts +34 -0
  1164. package/dist/types/lib/markdown/paste.d.ts +9 -0
  1165. package/dist/types/lib/markdown/position.d.ts +43 -0
  1166. package/dist/types/lib/markdown/project.d.ts +88 -0
  1167. package/dist/types/lib/markdown/reconcile.d.ts +63 -0
  1168. package/dist/types/lib/markdown/surface.d.ts +236 -0
  1169. package/dist/types/lib/motion.d.ts +30 -0
  1170. package/dist/types/lib/pad.d.ts +6 -0
  1171. package/dist/types/lib/paged-window/index.d.ts +2 -0
  1172. package/dist/types/lib/paged-window/layout.d.ts +21 -0
  1173. package/dist/types/lib/paged-window/list-owner.d.ts +12 -0
  1174. package/dist/types/lib/paged-window/records-binding.d.ts +102 -0
  1175. package/dist/types/lib/paged-window/store.d.ts +307 -0
  1176. package/dist/types/lib/paged-window/use-measured-pitch.d.ts +34 -0
  1177. package/dist/types/lib/paged-window/use-page-visibility.d.ts +20 -0
  1178. package/dist/types/lib/paged-window/use-paged-window.d.ts +61 -0
  1179. package/dist/types/lib/paged-window/use-scroll-root.d.ts +18 -0
  1180. package/dist/types/lib/persist.d.ts +57 -0
  1181. package/dist/types/lib/preference-values.d.ts +72 -0
  1182. package/dist/types/lib/preferences.d.ts +26 -0
  1183. package/dist/types/lib/reads/hooks.d.ts +49 -0
  1184. package/dist/types/lib/reads/index.d.ts +5 -0
  1185. package/dist/types/lib/reads/optimistic.d.ts +119 -0
  1186. package/dist/types/lib/reads/refetch.d.ts +83 -0
  1187. package/dist/types/lib/reads/slots.d.ts +137 -0
  1188. package/dist/types/lib/reads/types.d.ts +155 -0
  1189. package/dist/types/lib/realtime/hooks.d.ts +38 -0
  1190. package/dist/types/lib/realtime/index.d.ts +4 -0
  1191. package/dist/types/lib/realtime/provider.d.ts +38 -0
  1192. package/dist/types/lib/realtime/registry.d.ts +225 -0
  1193. package/dist/types/lib/realtime/types.d.ts +242 -0
  1194. package/dist/types/lib/records/define-record-type.d.ts +29 -0
  1195. package/dist/types/lib/records/hooks.d.ts +46 -0
  1196. package/dist/types/lib/records/index.d.ts +5 -0
  1197. package/dist/types/lib/records/store.d.ts +289 -0
  1198. package/dist/types/lib/records/types.d.ts +195 -0
  1199. package/dist/types/lib/records/wire.d.ts +96 -0
  1200. package/dist/types/lib/reduced-motion-help.d.ts +23 -0
  1201. package/dist/types/lib/scroll-caret.d.ts +6 -0
  1202. package/dist/types/lib/sim/createSimStore.d.ts +18 -0
  1203. package/dist/types/lib/sim/index.d.ts +5 -0
  1204. package/dist/types/lib/sim/latency.d.ts +10 -0
  1205. package/dist/types/lib/sim/registry.d.ts +14 -0
  1206. package/dist/types/lib/sim/settings.d.ts +11 -0
  1207. package/dist/types/lib/sim/types.d.ts +3 -0
  1208. package/dist/types/lib/submit-shortcut.d.ts +24 -0
  1209. package/dist/types/lib/syntax/index.d.ts +16 -0
  1210. package/dist/types/lib/syntax/languages/bash.d.ts +1 -0
  1211. package/dist/types/lib/syntax/languages/css.d.ts +1 -0
  1212. package/dist/types/lib/syntax/languages/html.d.ts +17 -0
  1213. package/dist/types/lib/syntax/languages/index.d.ts +33 -0
  1214. package/dist/types/lib/syntax/languages/javascript.d.ts +22 -0
  1215. package/dist/types/lib/syntax/languages/json.d.ts +1 -0
  1216. package/dist/types/lib/syntax/languages/mongodb.d.ts +1 -0
  1217. package/dist/types/lib/syntax/languages/plain.d.ts +9 -0
  1218. package/dist/types/lib/syntax/languages/sql.d.ts +4 -0
  1219. package/dist/types/lib/syntax/languages/vue.d.ts +1 -0
  1220. package/dist/types/lib/syntax/languages/yaml.d.ts +1 -0
  1221. package/dist/types/lib/syntax/markdown/frames.d.ts +145 -0
  1222. package/dist/types/lib/syntax/markdown/grammar.d.ts +1 -0
  1223. package/dist/types/lib/syntax/markdown/index.d.ts +5 -0
  1224. package/dist/types/lib/syntax/markdown/inline.d.ts +21 -0
  1225. package/dist/types/lib/syntax/markdown/parse.d.ts +15 -0
  1226. package/dist/types/lib/syntax/markdown/refs.d.ts +47 -0
  1227. package/dist/types/lib/syntax/markdown/render.d.ts +25 -0
  1228. package/dist/types/lib/syntax/markdown/spans.d.ts +84 -0
  1229. package/dist/types/lib/syntax/markdown/types.d.ts +108 -0
  1230. package/dist/types/lib/syntax/registry.d.ts +37 -0
  1231. package/dist/types/lib/syntax/tokenize.d.ts +17 -0
  1232. package/dist/types/lib/syntax/types.d.ts +119 -0
  1233. package/dist/types/lib/time/index.d.ts +4 -0
  1234. package/dist/types/lib/time/instant.d.ts +2 -0
  1235. package/dist/types/lib/time/plain.d.ts +61 -0
  1236. package/dist/types/lib/time/relativeAge.d.ts +18 -0
  1237. package/dist/types/lib/time/relativeClock.d.ts +8 -0
  1238. package/dist/types/lib/time/types.d.ts +87 -0
  1239. package/dist/types/lib/time/zone.d.ts +106 -0
  1240. package/dist/types/lib/use-controllable.d.ts +14 -0
  1241. package/dist/types/lib/use-fill-height.d.ts +26 -0
  1242. package/dist/types/lib/use-hydrated.d.ts +8 -0
  1243. package/dist/types/lib/use-media-query.d.ts +29 -0
  1244. package/dist/types/lib/use-relabel-base-ui-dismiss.d.ts +6 -0
  1245. package/dist/types/lib/use-release-snap-drag.d.ts +25 -0
  1246. package/dist/types/lib/use-roving-options.d.ts +10 -0
  1247. package/dist/types/lib/values/absent.d.ts +7 -0
  1248. package/dist/types/lib/values/boolean.d.ts +29 -0
  1249. package/dist/types/lib/values/currency.d.ts +22 -0
  1250. package/dist/types/lib/values/date.d.ts +30 -0
  1251. package/dist/types/lib/values/datetime.d.ts +48 -0
  1252. package/dist/types/lib/values/index.d.ts +5 -0
  1253. package/dist/types/lib/values/locale-date.d.ts +34 -0
  1254. package/dist/types/lib/values/number.d.ts +27 -0
  1255. package/dist/types/pure.d.ts +48 -0
  1256. package/package.json +136 -4
@@ -0,0 +1,472 @@
1
+ import { devWarn as m } from "../dev-warn.js";
2
+ import { normalizeTypeName as y, recordKey as k } from "../records/wire.js";
3
+ import { write as E } from "../records/store.js";
4
+ const A = 6e4, S = 6e4, w = 1e3, M = 3e4, x = 6;
5
+ let p = 0;
6
+ const f = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Set();
7
+ function D() {
8
+ return p;
9
+ }
10
+ function N(i) {
11
+ return f.add(i), () => f.delete(i);
12
+ }
13
+ function K(i) {
14
+ return u.add(i), () => u.delete(i);
15
+ }
16
+ function F() {
17
+ p += 1;
18
+ for (const i of [...f]) i();
19
+ }
20
+ function $() {
21
+ p = 0, f.clear(), u.clear();
22
+ }
23
+ function g(i) {
24
+ return i === "all" ? { kind: "all" } : Array.isArray(i) ? { kind: "ids", ids: [...new Set(i.map((t) => String(t)))].sort() } : { kind: "filter", filter: i.filter };
25
+ }
26
+ function R(i) {
27
+ return i.kind === "all" ? "all" : i.kind === "ids" ? `ids:${i.ids.join(",")}` : `filter:${v(i.filter)}`;
28
+ }
29
+ function T(i, e) {
30
+ const t = C(e) ? e : g(e);
31
+ return `${y(i)}|${R(t)}`;
32
+ }
33
+ function C(i) {
34
+ return typeof i == "object" && i !== null && !Array.isArray(i) && "kind" in i;
35
+ }
36
+ function v(i) {
37
+ return i === null || typeof i != "object" ? JSON.stringify(i) ?? "null" : Array.isArray(i) ? `[${i.map(v).join(",")}]` : `{${Object.entries(i).sort(([t], [s]) => t < s ? -1 : t > s ? 1 : 0).map(([t, s]) => `${JSON.stringify(t)}:${v(s)}`).join(",")}}`;
38
+ }
39
+ class B {
40
+ transport;
41
+ entries = /* @__PURE__ */ new Map();
42
+ channels = /* @__PURE__ */ new Map();
43
+ options;
44
+ healthListeners = /* @__PURE__ */ new Set();
45
+ tenant;
46
+ connection;
47
+ stopConnectionObserver = null;
48
+ timer = null;
49
+ healthSnapshot = null;
50
+ lastError;
51
+ started = !1;
52
+ disposed = !1;
53
+ constructor(e) {
54
+ this.transport = e.transport, this.tenant = e.tenant, this.options = {
55
+ keepaliveIntervalMs: e.keepaliveIntervalMs ?? A,
56
+ expiryMarginMs: e.expiryMarginMs ?? S,
57
+ baseBackoffMs: e.baseBackoffMs ?? w,
58
+ maxBackoffMs: e.maxBackoffMs ?? M,
59
+ maxAttempts: e.maxAttempts ?? x,
60
+ createdEventName: e.createdEventName ?? "created",
61
+ now: e.now ?? Date.now,
62
+ isSelfEvent: e.isSelfEvent,
63
+ onDiagnostic: e.onDiagnostic
64
+ }, this.connection = c(() => this.transport.connectionState(), "connecting");
65
+ }
66
+ /* --- Lifecycle ----------------------------------------------------------- */
67
+ /**
68
+ * Begin observing the connection and renewing leases.
69
+ *
70
+ * THE TIMER STARTS HERE, NEVER ON IMPORT. A design-system module that starts
71
+ * an interval because somebody imported it is a worse defect than the leak it
72
+ * would be preventing: it runs in every consumer, including the ones that
73
+ * never touch realtime at all.
74
+ */
75
+ start() {
76
+ this.started || (this.started = !0, this.disposed = !1, this.stopConnectionObserver = c(
77
+ () => this.transport.observeConnection((e) => this.onConnectionState(e)),
78
+ () => {
79
+ }
80
+ ), this.timer = setInterval(() => this.tick(), this.options.keepaliveIntervalMs), typeof document < "u" && document.addEventListener("visibilitychange", this.handleVisibilityChange), typeof window < "u" && window.addEventListener("pageshow", this.handlePageShow));
81
+ }
82
+ /**
83
+ * The document became visible again, or the page was restored from the
84
+ * back/forward cache — either way, a gap of UNKNOWN length just ended.
85
+ *
86
+ * `pusher:subscription_succeeded`/`state_change` (what `onConnectionState`
87
+ * listens for) is the transport TELLING us the socket dropped and came
88
+ * back. It is not the only way a gap happens: the OS suspending the
89
+ * machine, or the browser freezing a backgrounded tab under memory
90
+ * pressure, pauses this process's OWN timers along with everything else —
91
+ * including whatever ping/pong loop the transport uses to notice its own
92
+ * connection died. A transport that never got to run its detection code
93
+ * has nothing to report, so `connectionState()` can read "connected"
94
+ * throughout a gap the socket did not actually survive, and `tick()`'s own
95
+ * `isDead()` check — which trusts that string — has nothing to catch.
96
+ *
97
+ * Pusher has no event replay. Broadcasting is also gated server-side on a
98
+ * short-TTL registration (`PusherSubscriptionService`, 300s) that a long
99
+ * enough gap can outlive on its own. Either way, "did we actually miss
100
+ * anything" has no answer worth computing — the same reasoning
101
+ * `onConnectionState`'s reconnect branch already acts on — so becoming
102
+ * visible again is treated exactly like a reconnect: every entry is
103
+ * resubscribed (which the SubscriptionRegistry itself dedupes against
104
+ * one that is still genuinely healthy — a resubscribe is bounded, cheap,
105
+ * and correctness-preserving even when it turns out to have been
106
+ * unnecessary), and the epoch bumps on each success, which is what
107
+ * drives every mounted read (`reads/refetch.ts`'s `onEpoch`) to reissue
108
+ * the request it already made.
109
+ */
110
+ onResume() {
111
+ if (!this.disposed) {
112
+ for (const e of this.entries.values())
113
+ e.subscribers !== 0 && (this.clearRetry(e), e.attempts = 0, this.subscribeEntry(e, !0));
114
+ this.notifyHealth();
115
+ }
116
+ }
117
+ handleVisibilityChange = () => {
118
+ typeof document < "u" && document.visibilityState === "visible" && this.onResume();
119
+ };
120
+ /** `event.persisted` is a bfcache restore — a full page resume with no `visibilitychange` of its own. */
121
+ handlePageShow = (e) => {
122
+ e.persisted && this.onResume();
123
+ };
124
+ /**
125
+ * Stop the timers. REVERSIBLE, and it keeps every entry and every channel.
126
+ *
127
+ * THIS IS WHAT STRICTMODE REQUIRES. React mounts every effect, unmounts it,
128
+ * and mounts it again in development — so a teardown that dropped the entries
129
+ * would make the remount issue a SECOND subscribe for a registration that is
130
+ * still perfectly live, and the whole misbehaviour would exist only in
131
+ * development, which is the worst place for a realtime bug to live because it
132
+ * is where the thing is being debugged.
133
+ *
134
+ * IT DOES NOT UNSUBSCRIBE, and it does not leave the socket channels. Unmount
135
+ * never touches the server-side registry — the entry lapses against its own
136
+ * TTL — and the socket belongs to the application that injected it. A tenant
137
+ * switch is the one place either of those happens, and it has its own method.
138
+ */
139
+ stop() {
140
+ this.started = !1, this.timer !== null && (clearInterval(this.timer), this.timer = null), this.stopConnectionObserver?.(), this.stopConnectionObserver = null, typeof document < "u" && document.removeEventListener("visibilitychange", this.handleVisibilityChange), typeof window < "u" && window.removeEventListener("pageshow", this.handlePageShow);
141
+ for (const e of this.entries.values()) this.clearRetry(e);
142
+ }
143
+ /**
144
+ * Full teardown: stop, leave every channel, forget every entry.
145
+ *
146
+ * NOT what a component unmount calls — see `stop`. This exists for an
147
+ * application deliberately switching realtime off, which is a decision no
148
+ * lifecycle can infer.
149
+ */
150
+ dispose() {
151
+ this.stop(), this.disposed = !0, this.leaveAllChannels(), this.entries.clear(), this.healthSnapshot = null, this.notifyHealth();
152
+ }
153
+ /**
154
+ * Switch tenants: tear the server-side registrations down, clear the socket,
155
+ * and re-establish everything still mounted under the new tenant.
156
+ *
157
+ * THIS IS THE ONE PLACE `unsubscribe` IS CALLED. Never-unsubscribe applies to
158
+ * UNMOUNT, where tearing down can kill another tab's subscription; a
159
+ * subscription left lapsing on the PREVIOUS tenant's channel is a leak of a
160
+ * different kind, and one this library can close on its own.
161
+ */
162
+ setTenant(e) {
163
+ if (e !== this.tenant) {
164
+ for (const t of this.entries.values())
165
+ this.clearRetry(t), t.everRegistered && this.callTransport(
166
+ () => this.transport.unsubscribe(this.requestFor(t, this.tenant)),
167
+ "unsubscribed",
168
+ t
169
+ ), t.registered = !1, t.everRegistered = !1, t.expiresAt = void 0, t.serverKeys = [], t.keepaliveFailed = !1, t.attempts = 0, t.lastError = void 0;
170
+ this.leaveAllChannels(), this.tenant = e;
171
+ for (const t of this.entries.values()) {
172
+ if (t.subscribers === 0) {
173
+ this.entries.delete(t.key);
174
+ continue;
175
+ }
176
+ this.ensureChannel(t.type, t.events), this.subscribeEntry(t, !1);
177
+ }
178
+ this.notifyHealth();
179
+ }
180
+ }
181
+ getTenant() {
182
+ return this.tenant;
183
+ }
184
+ /* --- Acquire / release --------------------------------------------------- */
185
+ /**
186
+ * Declare interest in a (type, scope) with a set of event names.
187
+ *
188
+ * THE RETURNED RELEASE IS IDEMPOTENT AND EXACTLY PAIRED, which is what makes
189
+ * StrictMode's mount / unmount / mount leave exactly ONE subscription: the
190
+ * refcount goes 1, 0, 1 while the server-side registration is never dropped,
191
+ * so the remount reuses the live lease instead of issuing a second subscribe.
192
+ */
193
+ acquire(e, t, s) {
194
+ const n = y(e), r = g(t), o = T(n, r);
195
+ let a = this.entries.get(o);
196
+ a || (a = {
197
+ key: o,
198
+ type: n,
199
+ scope: r,
200
+ events: /* @__PURE__ */ new Set(),
201
+ subscribers: 0,
202
+ expiresAt: void 0,
203
+ keepaliveFailed: !1,
204
+ registered: !1,
205
+ inFlight: !1,
206
+ attempts: 0,
207
+ retry: null,
208
+ lastError: void 0,
209
+ everRegistered: !1,
210
+ serverKeys: []
211
+ }, this.entries.set(o, a)), a.subscribers += 1;
212
+ let l = !1;
213
+ for (const h of s)
214
+ a.events.has(h) || (a.events.add(h), l = !0);
215
+ this.ensureChannel(n, a.events), l && this.notifyHealth(), !a.registered && !a.inFlight ? this.subscribeEntry(a, !1) : this.notifyHealth();
216
+ let b = !1;
217
+ return () => {
218
+ if (b) return;
219
+ b = !0;
220
+ const h = this.entries.get(o);
221
+ h && (h.subscribers = Math.max(0, h.subscribers - 1), this.notifyHealth());
222
+ };
223
+ }
224
+ /* --- Subscribing --------------------------------------------------------- */
225
+ async subscribeEntry(e, t) {
226
+ if (!(this.disposed || e.inFlight)) {
227
+ e.inFlight = !0, this.notifyHealth();
228
+ try {
229
+ const s = await this.transport.subscribe(this.requestFor(e, this.tenant));
230
+ if (this.disposed) return;
231
+ e.registered = !0, e.everRegistered = !0, e.keepaliveFailed = !1, e.expiresAt = s?.expiresAt, e.serverKeys = s?.keys ?? [], e.attempts = 0, e.lastError = void 0, this.diagnose({ kind: t ? "resubscribed" : "subscribed", key: e.key, type: e.type }), t && F();
232
+ } catch (s) {
233
+ if (this.disposed) return;
234
+ e.registered = !1, e.attempts += 1, e.lastError = d(s), this.lastError = e.lastError, this.diagnose({
235
+ kind: "subscribe-failed",
236
+ key: e.key,
237
+ type: e.type,
238
+ message: e.lastError
239
+ }), this.scheduleRetry(e);
240
+ } finally {
241
+ e.inFlight = !1, this.notifyHealth();
242
+ }
243
+ }
244
+ }
245
+ /**
246
+ * Bounded exponential backoff, then a terminal DEAD state.
247
+ *
248
+ * NOTHING IS ESCALATED, EVER. The failure that motivates this is a 401 on a
249
+ * background resubscribe: routed through an app's ordinary HTTP error path it
250
+ * clears the session and logs somebody out mid-screen. Here it is a number in
251
+ * `attempts`, a string in `lastError`, and a status a screen can print.
252
+ */
253
+ scheduleRetry(e) {
254
+ if (this.clearRetry(e), e.attempts >= this.options.maxAttempts) {
255
+ m(
256
+ "realtime",
257
+ `${e.key} stayed dead after ${e.attempts} attempts — it is rendered as dead rather than retried forever.`
258
+ );
259
+ return;
260
+ }
261
+ const t = Math.min(this.options.baseBackoffMs * 2 ** (e.attempts - 1), this.options.maxBackoffMs);
262
+ e.retry = setTimeout(() => {
263
+ e.retry = null, e.subscribers !== 0 && this.subscribeEntry(e, !0);
264
+ }, t);
265
+ }
266
+ clearRetry(e) {
267
+ e.retry !== null && (clearTimeout(e.retry), e.retry = null);
268
+ }
269
+ /* --- Liveness ------------------------------------------------------------ */
270
+ /**
271
+ * Is this subscription failing to deliver?
272
+ *
273
+ * THREE INPUTS, ANY ONE SUFFICIENT, and the first is the one no reconnect
274
+ * hook can see: the lease simply runs out while everything else looks
275
+ * healthy.
276
+ */
277
+ isDead(e) {
278
+ return e.subscribers === 0 ? !1 : !!(this.connection !== "connected" || e.keepaliveFailed || !e.registered || e.expiresAt !== void 0 && this.options.now() > e.expiresAt - this.options.expiryMarginMs);
279
+ }
280
+ /**
281
+ * One pass: renew what is live, revive what is dead.
282
+ *
283
+ * Exposed so a consumer — or a test — can run it without waiting for the
284
+ * interval. Everything it does is idempotent.
285
+ */
286
+ tick() {
287
+ if (this.disposed) return;
288
+ const e = [...this.entries.values()].filter((s) => s.subscribers > 0);
289
+ if (e.length === 0) return;
290
+ const t = e.filter((s) => s.registered && !this.isDead(s));
291
+ t.length > 0 && this.keepalive(t);
292
+ for (const s of e)
293
+ this.isDead(s) && (s.inFlight || s.retry !== null || this.connection === "connected" && (s.expiresAt !== void 0 && this.options.now() > s.expiresAt - this.options.expiryMarginMs && this.diagnose({ kind: "expired", key: s.key, type: s.type }), this.subscribeEntry(s, !0)));
294
+ this.notifyHealth();
295
+ }
296
+ async keepalive(e) {
297
+ const t = e.map((s) => this.requestFor(s, this.tenant));
298
+ try {
299
+ const s = await this.transport.keepalive(t);
300
+ if (this.disposed) return;
301
+ e.forEach((n, r) => {
302
+ n.keepaliveFailed = !1;
303
+ const o = s?.[r];
304
+ o?.expiresAt !== void 0 && (n.expiresAt = o.expiresAt), o?.keys !== void 0 && (n.serverKeys = o.keys);
305
+ });
306
+ } catch (s) {
307
+ if (this.disposed) return;
308
+ const n = d(s);
309
+ for (const r of e)
310
+ r.keepaliveFailed = !0, r.lastError = n;
311
+ this.lastError = n, this.diagnose({ kind: "keepalive-failed", message: n });
312
+ for (const r of e)
313
+ this.connection === "connected" && !r.inFlight && r.retry === null && this.subscribeEntry(r, !0);
314
+ } finally {
315
+ this.notifyHealth();
316
+ }
317
+ }
318
+ onConnectionState(e) {
319
+ if (e !== this.connection) {
320
+ if (this.connection = e, e !== "connected") {
321
+ this.diagnose({ kind: "disconnected", message: e }), this.notifyHealth();
322
+ return;
323
+ }
324
+ this.onResume();
325
+ }
326
+ }
327
+ /* --- Channels and delivery ----------------------------------------------- */
328
+ ensureChannel(e, t) {
329
+ let s = this.channels.get(e);
330
+ if (!s) {
331
+ const n = c(() => this.transport.channel(e, this.tenant), null);
332
+ if (!n) return;
333
+ s = { channel: n, bound: /* @__PURE__ */ new Set(), tenant: this.tenant }, this.channels.set(e, s);
334
+ }
335
+ for (const n of t) {
336
+ if (s.bound.has(n)) continue;
337
+ s.bound.add(n);
338
+ const r = s.tenant;
339
+ s.channel.bind(n, (o) => this.deliver(e, n, o, r));
340
+ }
341
+ }
342
+ leaveAllChannels() {
343
+ for (const e of this.channels.values()) c(() => e.channel.leave(), void 0);
344
+ this.channels.clear();
345
+ }
346
+ /**
347
+ * One broadcast: filter, write, announce.
348
+ *
349
+ * THE TENANT IS THE ONE THE CHANNEL WAS JOINED UNDER, captured at bind time
350
+ * and never read at delivery time. Reading it on arrival reads the tenant as
351
+ * it is NOW, which is precisely how a payload from the team you just left
352
+ * lands in the store as the team you just joined.
353
+ */
354
+ deliver(e, t, s, n) {
355
+ if (this.options.isSelfEvent?.(s)) {
356
+ this.diagnose({ kind: "self-event-dropped", type: e, event: t });
357
+ return;
358
+ }
359
+ const r = E(s, { source: "broadcast", tenant: n }), o = r.verdict === "applied" || r.verdict === "unchanged" ? L(s) : void 0;
360
+ this.diagnose({ kind: "event", type: e, event: t, key: o, message: r.verdict });
361
+ const a = {
362
+ type: e,
363
+ event: t,
364
+ key: o,
365
+ payload: s,
366
+ tenant: n,
367
+ isCreate: t === this.options.createdEventName,
368
+ subscriptions: this.attribute(e, s)
369
+ };
370
+ for (const l of [...u]) l(a);
371
+ }
372
+ /**
373
+ * This client's subscriptions a broadcast satisfied, translated from the
374
+ * server's names through each entry's lease keys.
375
+ *
376
+ * THE WHOLE REASON THIS IS NEEDED: the channel is per type per tenant, so an
377
+ * event arrives here whenever ANY subscription on the tenant matched — a
378
+ * teammate's unfiltered list included. Arrival says "somebody on this team
379
+ * asked"; only this says "you asked". `undefined` when the transport cannot
380
+ * say, which is a different answer from `[]` ("it said, and none were yours").
381
+ */
382
+ attribute(e, t) {
383
+ const s = this.transport.subscriptionsOf;
384
+ if (!s) return;
385
+ const n = c(() => s.call(this.transport, t), void 0);
386
+ if (n === void 0) return;
387
+ const r = new Set(n), o = [];
388
+ for (const a of this.entries.values())
389
+ a.type === e && a.serverKeys.some((l) => r.has(l)) && o.push(a.key);
390
+ return o;
391
+ }
392
+ /** The event name that means "entered the set", for the read binding. */
393
+ get createdEventName() {
394
+ return this.options.createdEventName;
395
+ }
396
+ /* --- Health -------------------------------------------------------------- */
397
+ subscribeToHealth = (e) => (this.healthListeners.add(e), () => this.healthListeners.delete(e));
398
+ /**
399
+ * The renderable state, memoized so `getSnapshot` returns the identical
400
+ * object when nothing changed — the constraint every store in this package is
401
+ * written around.
402
+ */
403
+ readHealth = () => {
404
+ if (this.healthSnapshot) return this.healthSnapshot;
405
+ const e = [...this.entries.values()].filter((t) => t.subscribers > 0 || t.registered).map((t) => ({
406
+ key: t.key,
407
+ type: t.type,
408
+ scope: t.scope,
409
+ events: [...t.events].sort(),
410
+ subscribers: t.subscribers,
411
+ expiresAt: t.expiresAt,
412
+ dead: this.isDead(t),
413
+ attempts: t.attempts,
414
+ lastError: t.lastError
415
+ }));
416
+ return this.healthSnapshot = Object.freeze({
417
+ status: this.deriveStatus(e),
418
+ connection: this.connection,
419
+ subscriptions: Object.freeze(e),
420
+ epoch: p,
421
+ lastError: this.lastError
422
+ }), this.healthSnapshot;
423
+ };
424
+ deriveStatus(e) {
425
+ const t = e.filter((s) => s.subscribers > 0);
426
+ return t.length === 0 ? "idle" : t.some((s) => s.dead) ? t.some((n) => n.attempts > 0 || n.expiresAt !== void 0) || this.connection !== "connected" ? "dead" : "connecting" : "live";
427
+ }
428
+ notifyHealth() {
429
+ this.healthSnapshot = null;
430
+ for (const e of [...this.healthListeners]) e();
431
+ }
432
+ /* --- Small helpers ------------------------------------------------------- */
433
+ requestFor(e, t) {
434
+ return { type: e.type, scope: e.scope, tenant: t, key: e.key };
435
+ }
436
+ async callTransport(e, t, s) {
437
+ try {
438
+ await e(), this.diagnose({ kind: t, key: s.key, type: s.type });
439
+ } catch (n) {
440
+ this.diagnose({ kind: t, key: s.key, type: s.type, message: d(n) });
441
+ }
442
+ }
443
+ diagnose(e) {
444
+ this.options.onDiagnostic?.({ ...e, at: this.options.now() });
445
+ }
446
+ }
447
+ function L(i) {
448
+ const e = i.__type, t = i.id;
449
+ if (!(typeof e != "string" || e === "") && !(typeof t != "string" && typeof t != "number"))
450
+ return k(e, t);
451
+ }
452
+ function d(i) {
453
+ return i instanceof Error ? i.message : typeof i == "string" ? i : String(i);
454
+ }
455
+ function c(i, e) {
456
+ try {
457
+ return i();
458
+ } catch (t) {
459
+ return m("realtime", `the injected transport threw: ${d(t)}`), e;
460
+ }
461
+ }
462
+ export {
463
+ B as SubscriptionRegistry,
464
+ g as normalizeScope,
465
+ D as readRealtimeEpoch,
466
+ $ as resetRealtimeSignals,
467
+ R as scopeKey,
468
+ N as subscribeToRealtimeEpoch,
469
+ K as subscribeToRealtimeEvents,
470
+ T as subscriptionKey
471
+ };
472
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sources":["../../../src/lib/realtime/registry.ts"],"sourcesContent":["import { devWarn } from \"../dev-warn\";\nimport { normalizeTypeName, recordKey, write } from \"../records\";\nimport type {\n RealtimeChannel,\n RealtimeConnectionState,\n RealtimeDiagnostic,\n RealtimeEvent,\n RealtimeHealth,\n RealtimeScope,\n RealtimeScopeInput,\n RealtimeStatus,\n RealtimeTransport,\n SubscriptionHealth,\n SubscriptionRequest,\n} from \"./types\";\nimport type { RecordPayload } from \"../records\";\n\n/* ============================================================================\n THE SUBSCRIPTION REGISTRY.\n\n THE FAILURE THIS IS BUILT AROUND, stated once so every rule below has a\n reason attached: broadcasting is gated SERVER-SIDE on a registry entry with a\n short TTL. When that entry lapses, the broadcast job is never enqueued, while\n the socket stays connected, stays subscribed, and receives nothing. The\n connection state never changes. There is no disconnect event to hang a\n refetch off, because there is no disconnect.\n\n So a subscription is a THIRD STATE — dead, not quiet — and it is computed\n from three inputs, any one of which is sufficient:\n\n 1. the clock has passed the lease's `expires_at` minus a margin;\n 2. the last keepalive failed;\n 3. the connection is not connected.\n\n Dead means RESUBSCRIBE, then REFETCH, automatically. Never \"let it expire\n naturally\" — that is the prior art's own comment and its own bug.\n\n FOUR MORE RULES, each preventing a specific observed defect:\n\n THE UNION OF EVENT NAMES IS BOUND, and bound AGAIN when a later subscriber\n brings a new one. The prior art returns before its bind call when the channel\n already exists, so the second of two real subscribers is silently dead in\n production right now. This is the only rule in this module written against a\n bug that was SEEN rather than reasoned about.\n\n SUBSCRIBERS ARE COALESCED BY REFCOUNT, and release is idempotent and exactly\n paired with acquire. The prior art dedupes by key with no count at all, so\n the FIRST unmount tears the subscription down for every other consumer.\n\n UNSUBSCRIBE IS NEVER CALLED ON UNMOUNT. The server keys its entry by user, so\n two tabs are one entry and one tab's teardown kills the other's. It IS called\n on a tenant switch, where a lapsing subscription to the previous tenant's\n channel is the leak.\n\n A FAILED RESUBSCRIBE IS HANDLED HERE AND NOWHERE ELSE. Bounded backoff, a\n cap, and a terminal DEAD state that is rendered. It is never escalated —\n escalating a background 401 into an app's session handler logs somebody out\n mid-screen, which is strictly worse than the staleness the resubscribe was\n fixing.\n ========================================================================= */\n\nconst DEFAULT_KEEPALIVE_INTERVAL_MS = 60_000;\n/**\n * How long before a lease's expiry a subscription is already considered dead.\n *\n * Generous on purpose. The alternative — resubscribing at the last moment —\n * makes correctness depend on one request winning a race against a TTL, and the\n * cost of being early is one extra HTTP call.\n */\nconst DEFAULT_EXPIRY_MARGIN_MS = 60_000;\nconst DEFAULT_BASE_BACKOFF_MS = 1_000;\nconst DEFAULT_MAX_BACKOFF_MS = 30_000;\n/** Attempts before a subscription stays dead until something else wakes it. */\nconst DEFAULT_MAX_ATTEMPTS = 6;\n\nexport interface RegistryOptions {\n readonly transport: RealtimeTransport;\n readonly tenant?: string | number;\n readonly keepaliveIntervalMs?: number;\n readonly expiryMarginMs?: number;\n readonly baseBackoffMs?: number;\n readonly maxBackoffMs?: number;\n readonly maxAttempts?: number;\n /**\n * The event name that means \"this record just entered the set\".\n *\n * Configurable because the name is the backend's, not this library's, and\n * hard-coding one would be the only domain fact in this module.\n */\n readonly createdEventName?: string;\n /**\n * Drop a broadcast this client caused.\n *\n * A PREDICATE RATHER THAN A FIELD NAME, because the field that says who\n * caused a change belongs to a wire format, not to a design system. Supplied\n * by the app or absent; absent means every broadcast is written.\n *\n * IT APPLIES TO BROADCASTS ONLY, structurally — a fetch and a mutation's\n * returned item never pass through here at all. That matters: a mutation\n * response is self-caused BY DEFINITION, and dropping it would discard the\n * server-computed fields the client asked for.\n */\n readonly isSelfEvent?: (payload: RecordPayload) => boolean;\n readonly onDiagnostic?: (diagnostic: RealtimeDiagnostic) => void;\n /** Test seam. Defaults to `Date.now`. */\n readonly now?: () => number;\n}\n\ninterface Entry {\n readonly key: string;\n readonly type: string;\n readonly scope: RealtimeScope;\n /** Bound event names contributed by every subscriber of this entry. */\n readonly events: Set<string>;\n subscribers: number;\n expiresAt: number | undefined;\n keepaliveFailed: boolean;\n /** True once a subscribe has succeeded and the lease is still good. */\n registered: boolean;\n inFlight: boolean;\n attempts: number;\n retry: ReturnType<typeof setTimeout> | null;\n lastError: string | undefined;\n /** Set once this entry has been registered at least once under this tenant. */\n everRegistered: boolean;\n /**\n * The server's names for this registration, from the last successful\n * subscribe (`SubscriptionLease.keys`). What a broadcast's attribution is\n * matched against; empty until registered, and after a tenant switch.\n */\n serverKeys: readonly string[];\n}\n\ninterface ChannelEntry {\n readonly channel: RealtimeChannel;\n /** Event names already bound on THIS channel object. */\n readonly bound: Set<string>;\n readonly tenant: string | number | undefined;\n}\n\n/* --- Module-level signals -------------------------------------------------- */\n\n/**\n * The epoch and the event stream are MODULE-LEVEL, not context.\n *\n * The read binding consumes both and must work with no provider mounted at all\n * — an application with realtime switched off still fetches, still renders, and\n * must never crash because an optional capability is absent. A design system\n * that hard-fails when an optional capability is missing is not optional. So\n * these are plain pub/subs that simply never fire when nothing is publishing.\n */\nlet epoch = 0;\nconst epochListeners = new Set<() => void>();\nconst eventListeners = new Set<(event: RealtimeEvent) => void>();\n\nexport function readRealtimeEpoch(): number {\n return epoch;\n}\n\nexport function subscribeToRealtimeEpoch(listener: () => void): () => void {\n epochListeners.add(listener);\n return () => epochListeners.delete(listener);\n}\n\n/** Every broadcast, AFTER it has been written to the store. */\nexport function subscribeToRealtimeEvents(listener: (event: RealtimeEvent) => void): () => void {\n eventListeners.add(listener);\n return () => eventListeners.delete(listener);\n}\n\nfunction bumpEpoch(): void {\n epoch += 1;\n for (const listener of [...epochListeners]) listener();\n}\n\n/** Test seam. Nothing in the library calls this. */\nexport function resetRealtimeSignals(): void {\n epoch = 0;\n epochListeners.clear();\n eventListeners.clear();\n}\n\n/* --- Scope ----------------------------------------------------------------- */\n\n/**\n * Normalize a caller's scope and give it a stable key.\n *\n * IDS ARE SORTED AND STRINGIFIED so two components asking for the same rows in\n * a different order coalesce onto one subscription rather than opening two —\n * and so a numeric id and its string form never split an entry, exactly as the\n * store keys records.\n */\nexport function normalizeScope(input: RealtimeScopeInput): RealtimeScope {\n if (input === \"all\") return { kind: \"all\" };\n if (Array.isArray(input)) {\n const ids = [...new Set(input.map((id) => String(id)))].sort();\n return { kind: \"ids\", ids };\n }\n return { kind: \"filter\", filter: (input as { filter: Record<string, unknown> }).filter };\n}\n\nexport function scopeKey(scope: RealtimeScope): string {\n if (scope.kind === \"all\") return \"all\";\n if (scope.kind === \"ids\") return `ids:${scope.ids.join(\",\")}`;\n return `filter:${stableStringify(scope.filter)}`;\n}\n\n/**\n * The registry's key for a (type, scope) subscription — the identity\n * `RealtimeEvent.subscriptions` names.\n *\n * ONE FUNCTION FOR BOTH SIDES. The registry keys its entries with it and a list\n * slot keys its declared `createdScope` with it, so the two cannot disagree\n * about what \"the same subscription\" means — a type spelled `WorkflowInput`\n * here and `WorkflowInputResource` there would silently never match.\n */\nexport function subscriptionKey(type: string, scope: RealtimeScopeInput | RealtimeScope): string {\n const normalized = isNormalizedScope(scope) ? scope : normalizeScope(scope);\n return `${normalizeTypeName(type)}|${scopeKey(normalized)}`;\n}\n\nfunction isNormalizedScope(scope: RealtimeScopeInput | RealtimeScope): scope is RealtimeScope {\n return typeof scope === \"object\" && scope !== null && !Array.isArray(scope) && \"kind\" in scope;\n}\n\n/** Key order must not decide identity — two equal filters are one subscription. */\nfunction stableStringify(value: unknown): string {\n if (value === null || typeof value !== \"object\") return JSON.stringify(value) ?? \"null\";\n if (Array.isArray(value)) return `[${value.map(stableStringify).join(\",\")}]`;\n const entries = Object.entries(value as Record<string, unknown>).sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));\n return `{${entries.map(([key, nested]) => `${JSON.stringify(key)}:${stableStringify(nested)}`).join(\",\")}}`;\n}\n\n/* --- The registry ---------------------------------------------------------- */\n\nexport class SubscriptionRegistry {\n private readonly transport: RealtimeTransport;\n private readonly entries = new Map<string, Entry>();\n private readonly channels = new Map<string, ChannelEntry>();\n private readonly options: Required<Omit<RegistryOptions, \"transport\" | \"tenant\" | \"isSelfEvent\" | \"onDiagnostic\">> &\n Pick<RegistryOptions, \"isSelfEvent\" | \"onDiagnostic\">;\n private readonly healthListeners = new Set<() => void>();\n\n private tenant: string | number | undefined;\n private connection: RealtimeConnectionState;\n private stopConnectionObserver: (() => void) | null = null;\n private timer: ReturnType<typeof setInterval> | null = null;\n private healthSnapshot: RealtimeHealth | null = null;\n private lastError: string | undefined;\n private started = false;\n private disposed = false;\n\n constructor(options: RegistryOptions) {\n this.transport = options.transport;\n this.tenant = options.tenant;\n this.options = {\n keepaliveIntervalMs: options.keepaliveIntervalMs ?? DEFAULT_KEEPALIVE_INTERVAL_MS,\n expiryMarginMs: options.expiryMarginMs ?? DEFAULT_EXPIRY_MARGIN_MS,\n baseBackoffMs: options.baseBackoffMs ?? DEFAULT_BASE_BACKOFF_MS,\n maxBackoffMs: options.maxBackoffMs ?? DEFAULT_MAX_BACKOFF_MS,\n maxAttempts: options.maxAttempts ?? DEFAULT_MAX_ATTEMPTS,\n createdEventName: options.createdEventName ?? \"created\",\n now: options.now ?? Date.now,\n isSelfEvent: options.isSelfEvent,\n onDiagnostic: options.onDiagnostic,\n };\n this.connection = safely(() => this.transport.connectionState(), \"connecting\");\n }\n\n /* --- Lifecycle ----------------------------------------------------------- */\n\n /**\n * Begin observing the connection and renewing leases.\n *\n * THE TIMER STARTS HERE, NEVER ON IMPORT. A design-system module that starts\n * an interval because somebody imported it is a worse defect than the leak it\n * would be preventing: it runs in every consumer, including the ones that\n * never touch realtime at all.\n */\n start(): void {\n if (this.started) return;\n this.started = true;\n this.disposed = false;\n\n this.stopConnectionObserver = safely(\n () => this.transport.observeConnection((state) => this.onConnectionState(state)),\n () => {},\n );\n this.timer = setInterval(() => this.tick(), this.options.keepaliveIntervalMs);\n\n /* THE SECOND, INDEPENDENT WAY A GAP OF UNKNOWN LENGTH BEGINS AND ENDS —\n see `onResume`'s own docblock for why a Pusher connection-state change\n is not a sufficient trigger on its own. Guarded for non-browser\n environments (SSR, this library's own non-DOM tests): a design system\n that throws when `document`/`window` are absent is not usable there. */\n if (typeof document !== \"undefined\") {\n document.addEventListener(\"visibilitychange\", this.handleVisibilityChange);\n }\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"pageshow\", this.handlePageShow);\n }\n }\n\n /**\n * The document became visible again, or the page was restored from the\n * back/forward cache — either way, a gap of UNKNOWN length just ended.\n *\n * `pusher:subscription_succeeded`/`state_change` (what `onConnectionState`\n * listens for) is the transport TELLING us the socket dropped and came\n * back. It is not the only way a gap happens: the OS suspending the\n * machine, or the browser freezing a backgrounded tab under memory\n * pressure, pauses this process's OWN timers along with everything else —\n * including whatever ping/pong loop the transport uses to notice its own\n * connection died. A transport that never got to run its detection code\n * has nothing to report, so `connectionState()` can read \"connected\"\n * throughout a gap the socket did not actually survive, and `tick()`'s own\n * `isDead()` check — which trusts that string — has nothing to catch.\n *\n * Pusher has no event replay. Broadcasting is also gated server-side on a\n * short-TTL registration (`PusherSubscriptionService`, 300s) that a long\n * enough gap can outlive on its own. Either way, \"did we actually miss\n * anything\" has no answer worth computing — the same reasoning\n * `onConnectionState`'s reconnect branch already acts on — so becoming\n * visible again is treated exactly like a reconnect: every entry is\n * resubscribed (which the SubscriptionRegistry itself dedupes against\n * one that is still genuinely healthy — a resubscribe is bounded, cheap,\n * and correctness-preserving even when it turns out to have been\n * unnecessary), and the epoch bumps on each success, which is what\n * drives every mounted read (`reads/refetch.ts`'s `onEpoch`) to reissue\n * the request it already made.\n */\n private onResume(): void {\n if (this.disposed) return;\n for (const entry of this.entries.values()) {\n if (entry.subscribers === 0) continue;\n this.clearRetry(entry);\n entry.attempts = 0;\n void this.subscribeEntry(entry, true);\n }\n this.notifyHealth();\n }\n\n private handleVisibilityChange = (): void => {\n if (typeof document !== \"undefined\" && document.visibilityState === \"visible\") this.onResume();\n };\n\n /** `event.persisted` is a bfcache restore — a full page resume with no `visibilitychange` of its own. */\n private handlePageShow = (event: PageTransitionEvent): void => {\n if (event.persisted) this.onResume();\n };\n\n /**\n * Stop the timers. REVERSIBLE, and it keeps every entry and every channel.\n *\n * THIS IS WHAT STRICTMODE REQUIRES. React mounts every effect, unmounts it,\n * and mounts it again in development — so a teardown that dropped the entries\n * would make the remount issue a SECOND subscribe for a registration that is\n * still perfectly live, and the whole misbehaviour would exist only in\n * development, which is the worst place for a realtime bug to live because it\n * is where the thing is being debugged.\n *\n * IT DOES NOT UNSUBSCRIBE, and it does not leave the socket channels. Unmount\n * never touches the server-side registry — the entry lapses against its own\n * TTL — and the socket belongs to the application that injected it. A tenant\n * switch is the one place either of those happens, and it has its own method.\n */\n stop(): void {\n this.started = false;\n if (this.timer !== null) {\n clearInterval(this.timer);\n this.timer = null;\n }\n this.stopConnectionObserver?.();\n this.stopConnectionObserver = null;\n if (typeof document !== \"undefined\") {\n document.removeEventListener(\"visibilitychange\", this.handleVisibilityChange);\n }\n if (typeof window !== \"undefined\") {\n window.removeEventListener(\"pageshow\", this.handlePageShow);\n }\n for (const entry of this.entries.values()) this.clearRetry(entry);\n }\n\n /**\n * Full teardown: stop, leave every channel, forget every entry.\n *\n * NOT what a component unmount calls — see `stop`. This exists for an\n * application deliberately switching realtime off, which is a decision no\n * lifecycle can infer.\n */\n dispose(): void {\n this.stop();\n this.disposed = true;\n this.leaveAllChannels();\n this.entries.clear();\n this.healthSnapshot = null;\n this.notifyHealth();\n }\n\n\n /**\n * Switch tenants: tear the server-side registrations down, clear the socket,\n * and re-establish everything still mounted under the new tenant.\n *\n * THIS IS THE ONE PLACE `unsubscribe` IS CALLED. Never-unsubscribe applies to\n * UNMOUNT, where tearing down can kill another tab's subscription; a\n * subscription left lapsing on the PREVIOUS tenant's channel is a leak of a\n * different kind, and one this library can close on its own.\n */\n setTenant(tenant: string | number | undefined): void {\n if (tenant === this.tenant) return;\n\n for (const entry of this.entries.values()) {\n this.clearRetry(entry);\n if (entry.everRegistered) {\n void this.callTransport(\n () => this.transport.unsubscribe(this.requestFor(entry, this.tenant)),\n \"unsubscribed\",\n entry,\n );\n }\n entry.registered = false;\n entry.everRegistered = false;\n entry.expiresAt = undefined;\n entry.serverKeys = [];\n entry.keepaliveFailed = false;\n entry.attempts = 0;\n entry.lastError = undefined;\n }\n\n this.leaveAllChannels();\n this.tenant = tenant;\n\n /* Re-bind and re-subscribe only what is still MOUNTED. An entry whose\n subscribers have gone belongs to the tenant that just left. */\n for (const entry of this.entries.values()) {\n if (entry.subscribers === 0) {\n this.entries.delete(entry.key);\n continue;\n }\n this.ensureChannel(entry.type, entry.events);\n void this.subscribeEntry(entry, false);\n }\n\n this.notifyHealth();\n }\n\n getTenant(): string | number | undefined {\n return this.tenant;\n }\n\n /* --- Acquire / release --------------------------------------------------- */\n\n /**\n * Declare interest in a (type, scope) with a set of event names.\n *\n * THE RETURNED RELEASE IS IDEMPOTENT AND EXACTLY PAIRED, which is what makes\n * StrictMode's mount / unmount / mount leave exactly ONE subscription: the\n * refcount goes 1, 0, 1 while the server-side registration is never dropped,\n * so the remount reuses the live lease instead of issuing a second subscribe.\n */\n acquire(type: string, scopeInput: RealtimeScopeInput, events: readonly string[]): () => void {\n const normalizedType = normalizeTypeName(type);\n const scope = normalizeScope(scopeInput);\n const key = subscriptionKey(normalizedType, scope);\n\n let entry = this.entries.get(key);\n if (!entry) {\n entry = {\n key,\n type: normalizedType,\n scope,\n events: new Set(),\n subscribers: 0,\n expiresAt: undefined,\n keepaliveFailed: false,\n registered: false,\n inFlight: false,\n attempts: 0,\n retry: null,\n lastError: undefined,\n everRegistered: false,\n serverKeys: [],\n };\n this.entries.set(key, entry);\n }\n\n entry.subscribers += 1;\n let broughtNewEvents = false;\n for (const event of events) {\n if (!entry.events.has(event)) {\n entry.events.add(event);\n broughtNewEvents = true;\n }\n }\n\n /* THE UNION, BOUND EVERY TIME. `ensureChannel` binds only the names not yet\n bound on this channel object, so a later subscriber's events reach the\n same channel the first subscriber joined. Returning early here — the\n prior art's shape — is what leaves one of two live subscribers dead. */\n this.ensureChannel(normalizedType, entry.events);\n if (broughtNewEvents) this.notifyHealth();\n\n if (!entry.registered && !entry.inFlight) void this.subscribeEntry(entry, false);\n else this.notifyHealth();\n\n let released = false;\n return () => {\n if (released) return;\n released = true;\n const current = this.entries.get(key);\n if (!current) return;\n current.subscribers = Math.max(0, current.subscribers - 1);\n /* NO unsubscribe, and no channel teardown. The entry stays so a remount\n within the lease reuses it. */\n this.notifyHealth();\n };\n }\n\n /* --- Subscribing --------------------------------------------------------- */\n\n private async subscribeEntry(entry: Entry, isResubscribe: boolean): Promise<void> {\n if (this.disposed || entry.inFlight) return;\n entry.inFlight = true;\n this.notifyHealth();\n\n try {\n const lease = await this.transport.subscribe(this.requestFor(entry, this.tenant));\n if (this.disposed) return;\n entry.registered = true;\n entry.everRegistered = true;\n entry.keepaliveFailed = false;\n entry.expiresAt = lease?.expiresAt;\n entry.serverKeys = lease?.keys ?? [];\n entry.attempts = 0;\n entry.lastError = undefined;\n this.diagnose({ kind: isResubscribe ? \"resubscribed\" : \"subscribed\", key: entry.key, type: entry.type });\n\n /* THE REFETCH HALF OF \"dead means resubscribe THEN refetch\". A first\n subscribe bumps nothing — the reader is about to fetch anyway — but a\n RE-subscribe means events were missed during a window nobody can\n enumerate, so the only honest signal is \"something may be gone\". */\n if (isResubscribe) bumpEpoch();\n } catch (error) {\n if (this.disposed) return;\n entry.registered = false;\n entry.attempts += 1;\n entry.lastError = messageOf(error);\n this.lastError = entry.lastError;\n this.diagnose({\n kind: \"subscribe-failed\",\n key: entry.key,\n type: entry.type,\n message: entry.lastError,\n });\n this.scheduleRetry(entry);\n } finally {\n entry.inFlight = false;\n this.notifyHealth();\n }\n }\n\n /**\n * Bounded exponential backoff, then a terminal DEAD state.\n *\n * NOTHING IS ESCALATED, EVER. The failure that motivates this is a 401 on a\n * background resubscribe: routed through an app's ordinary HTTP error path it\n * clears the session and logs somebody out mid-screen. Here it is a number in\n * `attempts`, a string in `lastError`, and a status a screen can print.\n */\n private scheduleRetry(entry: Entry): void {\n this.clearRetry(entry);\n if (entry.attempts >= this.options.maxAttempts) {\n devWarn(\n \"realtime\",\n `${entry.key} stayed dead after ${entry.attempts} attempts — it is rendered as dead rather than retried forever.`,\n );\n return;\n }\n const delay = Math.min(this.options.baseBackoffMs * 2 ** (entry.attempts - 1), this.options.maxBackoffMs);\n entry.retry = setTimeout(() => {\n entry.retry = null;\n if (entry.subscribers === 0) return;\n void this.subscribeEntry(entry, true);\n }, delay);\n }\n\n private clearRetry(entry: Entry): void {\n if (entry.retry !== null) {\n clearTimeout(entry.retry);\n entry.retry = null;\n }\n }\n\n /* --- Liveness ------------------------------------------------------------ */\n\n /**\n * Is this subscription failing to deliver?\n *\n * THREE INPUTS, ANY ONE SUFFICIENT, and the first is the one no reconnect\n * hook can see: the lease simply runs out while everything else looks\n * healthy.\n */\n private isDead(entry: Entry): boolean {\n if (entry.subscribers === 0) return false;\n if (this.connection !== \"connected\") return true;\n if (entry.keepaliveFailed) return true;\n if (!entry.registered) return true;\n if (entry.expiresAt !== undefined && this.options.now() > entry.expiresAt - this.options.expiryMarginMs) {\n return true;\n }\n return false;\n }\n\n /**\n * One pass: renew what is live, revive what is dead.\n *\n * Exposed so a consumer — or a test — can run it without waiting for the\n * interval. Everything it does is idempotent.\n */\n tick(): void {\n if (this.disposed) return;\n const active = [...this.entries.values()].filter((entry) => entry.subscribers > 0);\n if (active.length === 0) return;\n\n const renewable = active.filter((entry) => entry.registered && !this.isDead(entry));\n if (renewable.length > 0) void this.keepalive(renewable);\n\n for (const entry of active) {\n if (!this.isDead(entry)) continue;\n if (entry.inFlight || entry.retry !== null) continue;\n if (this.connection !== \"connected\") continue;\n if (entry.expiresAt !== undefined && this.options.now() > entry.expiresAt - this.options.expiryMarginMs) {\n this.diagnose({ kind: \"expired\", key: entry.key, type: entry.type });\n }\n void this.subscribeEntry(entry, true);\n }\n this.notifyHealth();\n }\n\n private async keepalive(entries: readonly Entry[]): Promise<void> {\n const requests = entries.map((entry) => this.requestFor(entry, this.tenant));\n try {\n const leases = await this.transport.keepalive(requests);\n if (this.disposed) return;\n entries.forEach((entry, index) => {\n entry.keepaliveFailed = false;\n const lease = leases?.[index];\n if (lease?.expiresAt !== undefined) entry.expiresAt = lease.expiresAt;\n if (lease?.keys !== undefined) entry.serverKeys = lease.keys;\n });\n } catch (error) {\n if (this.disposed) return;\n /* A FAILED KEEPALIVE IS A DEAD SUBSCRIPTION, NOT A WARNING. The prior art\n deletes the subscription here and deliberately does not retry, with the\n comment \"let subscriptions expire naturally\" — two failures inside one\n TTL window and that resource stops updating forever. */\n const message = messageOf(error);\n for (const entry of entries) {\n entry.keepaliveFailed = true;\n entry.lastError = message;\n }\n this.lastError = message;\n this.diagnose({ kind: \"keepalive-failed\", message });\n for (const entry of entries) {\n if (this.connection === \"connected\" && !entry.inFlight && entry.retry === null) {\n void this.subscribeEntry(entry, true);\n }\n }\n } finally {\n this.notifyHealth();\n }\n }\n\n private onConnectionState(state: RealtimeConnectionState): void {\n if (state === this.connection) return;\n this.connection = state;\n if (state !== \"connected\") {\n this.diagnose({ kind: \"disconnected\", message: state });\n this.notifyHealth();\n return;\n }\n /* Coming back is not enough on its own — the server-side entry may have\n lapsed while the socket was away, and it reports nothing when it has. So\n every active entry is re-registered rather than assumed — the same\n \"gap of unknown length just ended\" handling `onResume` gives a tab\n becoming visible again, below. */\n this.onResume();\n }\n\n /* --- Channels and delivery ----------------------------------------------- */\n\n private ensureChannel(type: string, events: ReadonlySet<string>): void {\n let channelEntry = this.channels.get(type);\n if (!channelEntry) {\n const channel = safely(() => this.transport.channel(type, this.tenant), null);\n if (!channel) return;\n channelEntry = { channel, bound: new Set(), tenant: this.tenant };\n this.channels.set(type, channelEntry);\n }\n\n for (const event of events) {\n if (channelEntry.bound.has(event)) continue;\n channelEntry.bound.add(event);\n const tenantAtBind = channelEntry.tenant;\n channelEntry.channel.bind(event, (payload) => this.deliver(type, event, payload, tenantAtBind));\n }\n }\n\n private leaveAllChannels(): void {\n for (const entry of this.channels.values()) safely(() => entry.channel.leave(), undefined);\n this.channels.clear();\n }\n\n /**\n * One broadcast: filter, write, announce.\n *\n * THE TENANT IS THE ONE THE CHANNEL WAS JOINED UNDER, captured at bind time\n * and never read at delivery time. Reading it on arrival reads the tenant as\n * it is NOW, which is precisely how a payload from the team you just left\n * lands in the store as the team you just joined.\n */\n private deliver(type: string, event: string, payload: RecordPayload, tenant: string | number | undefined): void {\n if (this.options.isSelfEvent?.(payload)) {\n this.diagnose({ kind: \"self-event-dropped\", type, event });\n return;\n }\n\n const result = write(payload, { source: \"broadcast\", tenant });\n /* The key is derived from the payload rather than read out of the write's\n touched set: a write refused for tenancy touches nothing, and a `created`\n event whose record was refused must not reach a list slot either — so the\n key is only announced when the write actually landed. */\n const key = result.verdict === \"applied\" || result.verdict === \"unchanged\" ? keyOf(payload) : undefined;\n this.diagnose({ kind: \"event\", type, event, key, message: result.verdict });\n\n const realtimeEvent: RealtimeEvent = {\n type,\n event,\n key,\n payload,\n tenant,\n isCreate: event === this.options.createdEventName,\n subscriptions: this.attribute(type, payload),\n };\n for (const listener of [...eventListeners]) listener(realtimeEvent);\n }\n\n /**\n * This client's subscriptions a broadcast satisfied, translated from the\n * server's names through each entry's lease keys.\n *\n * THE WHOLE REASON THIS IS NEEDED: the channel is per type per tenant, so an\n * event arrives here whenever ANY subscription on the tenant matched — a\n * teammate's unfiltered list included. Arrival says \"somebody on this team\n * asked\"; only this says \"you asked\". `undefined` when the transport cannot\n * say, which is a different answer from `[]` (\"it said, and none were yours\").\n */\n private attribute(type: string, payload: RecordPayload): readonly string[] | undefined {\n const subscriptionsOf = this.transport.subscriptionsOf;\n if (!subscriptionsOf) return undefined;\n const named = safely(() => subscriptionsOf.call(this.transport, payload), undefined);\n if (named === undefined) return undefined;\n\n const satisfied = new Set(named);\n const mine: string[] = [];\n for (const entry of this.entries.values()) {\n if (entry.type !== type) continue;\n if (entry.serverKeys.some((serverKey) => satisfied.has(serverKey))) mine.push(entry.key);\n }\n return mine;\n }\n\n /** The event name that means \"entered the set\", for the read binding. */\n get createdEventName(): string {\n return this.options.createdEventName;\n }\n\n /* --- Health -------------------------------------------------------------- */\n\n subscribeToHealth = (listener: () => void): (() => void) => {\n this.healthListeners.add(listener);\n return () => this.healthListeners.delete(listener);\n };\n\n /**\n * The renderable state, memoized so `getSnapshot` returns the identical\n * object when nothing changed — the constraint every store in this package is\n * written around.\n */\n readHealth = (): RealtimeHealth => {\n if (this.healthSnapshot) return this.healthSnapshot;\n\n const subscriptions: SubscriptionHealth[] = [...this.entries.values()]\n .filter((entry) => entry.subscribers > 0 || entry.registered)\n .map((entry) => ({\n key: entry.key,\n type: entry.type,\n scope: entry.scope,\n events: [...entry.events].sort(),\n subscribers: entry.subscribers,\n expiresAt: entry.expiresAt,\n dead: this.isDead(entry),\n attempts: entry.attempts,\n lastError: entry.lastError,\n }));\n\n this.healthSnapshot = Object.freeze({\n status: this.deriveStatus(subscriptions),\n connection: this.connection,\n subscriptions: Object.freeze(subscriptions),\n epoch,\n lastError: this.lastError,\n });\n return this.healthSnapshot;\n };\n\n private deriveStatus(subscriptions: readonly SubscriptionHealth[]): RealtimeStatus {\n const active = subscriptions.filter((subscription) => subscription.subscribers > 0);\n if (active.length === 0) return \"idle\";\n if (active.some((subscription) => subscription.dead)) {\n /* A first subscribe still in flight is \"connecting\", not \"dead\" — the\n difference is between \"not yet\" and \"not any more\", and a screen says\n different things for each. */\n const settled = active.some((subscription) => subscription.attempts > 0 || subscription.expiresAt !== undefined);\n return settled || this.connection !== \"connected\" ? \"dead\" : \"connecting\";\n }\n return \"live\";\n }\n\n private notifyHealth(): void {\n this.healthSnapshot = null;\n for (const listener of [...this.healthListeners]) listener();\n }\n\n /* --- Small helpers ------------------------------------------------------- */\n\n private requestFor(entry: Entry, tenant: string | number | undefined): SubscriptionRequest {\n return { type: entry.type, scope: entry.scope, tenant, key: entry.key };\n }\n\n private async callTransport(\n call: () => Promise<unknown>,\n kind: RealtimeDiagnostic[\"kind\"],\n entry: Entry,\n ): Promise<void> {\n try {\n await call();\n this.diagnose({ kind, key: entry.key, type: entry.type });\n } catch (error) {\n /* Even a teardown failure is swallowed. There is nothing useful an app\n can do with it, and the one thing it must not do is surface it as an\n auth failure. */\n this.diagnose({ kind, key: entry.key, type: entry.type, message: messageOf(error) });\n }\n }\n\n private diagnose(diagnostic: Omit<RealtimeDiagnostic, \"at\">): void {\n this.options.onDiagnostic?.({ ...diagnostic, at: this.options.now() });\n }\n}\n\n/** `Type:id` for a payload that carries both, or `undefined`. */\nfunction keyOf(payload: RecordPayload): string | undefined {\n const type = payload.__type;\n const id = payload.id;\n if (typeof type !== \"string\" || type === \"\") return undefined;\n if (typeof id !== \"string\" && typeof id !== \"number\") return undefined;\n return recordKey(type, id);\n}\n\nfunction messageOf(error: unknown): string {\n if (error instanceof Error) return error.message;\n if (typeof error === \"string\") return error;\n return String(error);\n}\n\n/** A transport is a foreign object; a throw from one must not take the app out. */\nfunction safely<T>(call: () => T, fallback: T): T {\n try {\n return call();\n } catch (error) {\n devWarn(\"realtime\", `the injected transport threw: ${messageOf(error)}`);\n return fallback;\n }\n}\n"],"names":["DEFAULT_KEEPALIVE_INTERVAL_MS","DEFAULT_EXPIRY_MARGIN_MS","DEFAULT_BASE_BACKOFF_MS","DEFAULT_MAX_BACKOFF_MS","DEFAULT_MAX_ATTEMPTS","epoch","epochListeners","eventListeners","readRealtimeEpoch","subscribeToRealtimeEpoch","listener","subscribeToRealtimeEvents","bumpEpoch","resetRealtimeSignals","normalizeScope","input","id","scopeKey","scope","stableStringify","subscriptionKey","type","normalized","isNormalizedScope","normalizeTypeName","value","a","b","key","nested","SubscriptionRegistry","options","safely","state","entry","event","tenant","scopeInput","events","normalizedType","broughtNewEvents","released","current","isResubscribe","lease","error","messageOf","devWarn","delay","active","renewable","entries","requests","leases","index","message","channelEntry","channel","tenantAtBind","payload","result","write","keyOf","realtimeEvent","subscriptionsOf","named","satisfied","mine","serverKey","subscriptions","subscription","call","kind","diagnostic","recordKey","fallback"],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { devWarn as l } from "../dev-warn.js";
2
+ import { normalizeTypeName as d } from "./wire.js";
3
+ const r = /* @__PURE__ */ new Map();
4
+ function u(e, i = {}) {
5
+ const t = d(e);
6
+ t !== e && l(
7
+ "defineRecordType",
8
+ `"${e}" carries a Resource suffix — register the model name ("${t}"). The store normalizes it either way, but a caller writing the suffixed name usually also expects reads to key on it, and they do not.`
9
+ );
10
+ const n = i.staleFields ?? [], s = r.get(t);
11
+ if (s)
12
+ return a(s.staleFields, n) || l(
13
+ "defineRecordType",
14
+ `"${t}" is registered twice with different staleFields — the first registration wins.`
15
+ ), s;
16
+ const o = { type: t, staleFields: n };
17
+ return r.set(t, o), o;
18
+ }
19
+ function a(e, i) {
20
+ return e === "*" || i === "*" ? e === i : e.length === i.length && e.every((t) => i.includes(t));
21
+ }
22
+ function y(e) {
23
+ return r.get(e)?.staleFields ?? [];
24
+ }
25
+ function p() {
26
+ r.clear();
27
+ }
28
+ export {
29
+ u as defineRecordType,
30
+ p as resetRecordTypes,
31
+ y as staleFieldsFor
32
+ };
33
+ //# sourceMappingURL=define-record-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-record-type.js","sources":["../../../src/lib/records/define-record-type.ts"],"sourcesContent":["import { devWarn } from \"../dev-warn\";\nimport type { RecordTypeOptions, RecordTypeToken } from \"./types\";\nimport { normalizeTypeName } from \"./wire\";\n\n/* ============================================================================\n TYPE REGISTRATION — a token carrying both the runtime string and the\n compile-time type, so the two can never drift.\n\n WHY A TOKEN RATHER THAN A STRING OR A GENERIC. A bare string key returning\n `unknown` is unusable in a TypeScript app. A caller-supplied generic —\n `useRecord<WorkflowRun>(\"WorkflowRun\", id)` — is honest but UNCHECKED:\n nothing stops the string and the type disagreeing, and that mistake is\n invisible until runtime. Global declaration merging gives the nicest call\n site and forces every consumer to maintain an ambient module block, which\n fails this library's generality test.\n\n This is also not a new idea here. It is the only answer this package has\n ever given to this question — `createSimStore`'s factory and `DataTable`'s\n `TData` both do it. Matching an existing convention beats inventing a third.\n\n ONE DELIBERATE REVERSAL, DOCUMENTED BECAUSE IT CONTRADICTS A STATED\n PRINCIPLE IN THIS SAME PACKAGE. `createSimStore` takes a caller-supplied\n `getId` and says in so many words that it never assumes a field called `id`,\n because this library's own simulated entities do not agree on one\n (`Role.id`, `Permission.key`, `UseCase.ref`). THIS store DOES assume `id`,\n unconditionally, and does not accept a `getId`.\n\n The reason is that the two are answering different questions. `createSimStore`\n holds whatever a caller invents; this store holds records off ONE wire\n format, and that format guarantees `id`: the serializer prepends `id`,\n `__type`, `__timestamp` and `__deleted_at` to every payload AFTER the field\n whitelist is applied, so a whitelist cannot remove them. Accepting a `getId`\n here would offer a choice that has exactly one correct answer, and would\n invite a caller to key on `name` — which merges two different rows the day\n two of them share one. It is a defensible narrowing of a general tool into a\n specific one; it is written down here so a future reader does not think it\n was overlooked.\n ========================================================================= */\n\nconst registry = new Map<string, RecordTypeToken<unknown>>();\n\n/**\n * Declare a record type.\n *\n * THE NAME IS THE NORMALIZED MODEL NAME — `\"WorkflowRun\"`, NEVER\n * `\"WorkflowRunResource\"`. This is the single most likely thing in this module\n * to be built wrong, because both readings are plausible and exactly one\n * matches: the store strips a trailing `Resource` from every incoming `__type`\n * before keying (created payloads carry the suffix, deletes do not), so the\n * caller always writes the model name. The wrong one produces a store that\n * fills up and a screen that never moves, with no error anywhere — which is\n * why passing the suffixed name warns loudly rather than quietly working.\n *\n * @param name normalized model name, e.g. `\"WorkflowRun\"`\n * @param options `staleFields` — the fields this type's broadcast cannot carry\n */\nexport function defineRecordType<T>(name: string, options: RecordTypeOptions = {}): RecordTypeToken<T> {\n const type = normalizeTypeName(name);\n\n if (type !== name) {\n devWarn(\n \"defineRecordType\",\n `\"${name}\" carries a Resource suffix — register the model name (\"${type}\"). ` +\n \"The store normalizes it either way, but a caller writing the suffixed name \" +\n \"usually also expects reads to key on it, and they do not.\",\n );\n }\n\n const staleFields = options.staleFields ?? [];\n const existing = registry.get(type);\n\n if (existing) {\n /* Re-registration is normal — module reload, a second import of the same\n declaration file. Re-registration with DIFFERENT stale fields is not:\n whichever call ran last would silently decide what a broadcast is\n allowed to be trusted for. */\n if (!sameStaleFields(existing.staleFields, staleFields)) {\n devWarn(\n \"defineRecordType\",\n `\"${type}\" is registered twice with different staleFields — the first registration wins.`,\n );\n }\n return existing as RecordTypeToken<T>;\n }\n\n const token: RecordTypeToken<T> = { type, staleFields };\n registry.set(type, token as RecordTypeToken<unknown>);\n return token;\n}\n\nfunction sameStaleFields(a: readonly string[] | \"*\", b: readonly string[] | \"*\"): boolean {\n if (a === \"*\" || b === \"*\") return a === b;\n return a.length === b.length && a.every((field) => b.includes(field));\n}\n\n/**\n * What a type declared, for the store's own use.\n *\n * An UNREGISTERED type is not an error: a nested child of a type nobody\n * declared is still a record with an identity, and refusing it would lose data\n * the parent legitimately carries. It simply has no stale fields, which is the\n * correct default — a type that never declared a gap in its broadcast is\n * treated as having none.\n */\nexport function staleFieldsFor(type: string): readonly string[] | \"*\" {\n return registry.get(type)?.staleFields ?? [];\n}\n\n/** Test seam. Nothing in the library calls this. */\nexport function resetRecordTypes(): void {\n registry.clear();\n}\n"],"names":["registry","defineRecordType","name","options","type","normalizeTypeName","devWarn","staleFields","existing","sameStaleFields","token","a","b","field","staleFieldsFor","resetRecordTypes"],"mappings":";;AAuCA,MAAMA,wBAAe,IAAA;AAiBd,SAASC,EAAoBC,GAAcC,IAA6B,IAAwB;AACrG,QAAMC,IAAOC,EAAkBH,CAAI;AAEnC,EAAIE,MAASF,KACXI;AAAA,IACE;AAAA,IACA,IAAIJ,CAAI,2DAA2DE,CAAI;AAAA,EAAA;AAM3E,QAAMG,IAAcJ,EAAQ,eAAe,CAAA,GACrCK,IAAWR,EAAS,IAAII,CAAI;AAElC,MAAII;AAKF,WAAKC,EAAgBD,EAAS,aAAaD,CAAW,KACpDD;AAAA,MACE;AAAA,MACA,IAAIF,CAAI;AAAA,IAAA,GAGLI;AAGT,QAAME,IAA4B,EAAE,MAAAN,GAAM,aAAAG,EAAA;AAC1C,SAAAP,EAAS,IAAII,GAAMM,CAAiC,GAC7CA;AACT;AAEA,SAASD,EAAgBE,GAA4BC,GAAqC;AACxF,SAAID,MAAM,OAAOC,MAAM,MAAYD,MAAMC,IAClCD,EAAE,WAAWC,EAAE,UAAUD,EAAE,MAAM,CAACE,MAAUD,EAAE,SAASC,CAAK,CAAC;AACtE;AAWO,SAASC,EAAeV,GAAuC;AACpE,SAAOJ,EAAS,IAAII,CAAI,GAAG,eAAe,CAAA;AAC5C;AAGO,SAASW,IAAyB;AACvC,EAAAf,EAAS,MAAA;AACX;"}