@brass-build/client 0.1.0 → 0.3.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 (213) hide show
  1. package/AGENTS.md +72 -63
  2. package/CHANGELOG.md +97 -0
  3. package/README.md +325 -235
  4. package/dist/auth-flow.d.ts +10 -1
  5. package/dist/auth-flow.d.ts.map +1 -1
  6. package/dist/auth-flow.js +64 -20
  7. package/dist/auth-flow.js.map +1 -1
  8. package/dist/client.d.ts +4 -0
  9. package/dist/client.d.ts.map +1 -1
  10. package/dist/client.js +245 -76
  11. package/dist/client.js.map +1 -1
  12. package/dist/document-checkpoints.d.ts +1 -0
  13. package/dist/document-checkpoints.d.ts.map +1 -1
  14. package/dist/document-checkpoints.js +27 -0
  15. package/dist/document-checkpoints.js.map +1 -1
  16. package/dist/document-engine.d.ts +4 -0
  17. package/dist/document-engine.d.ts.map +1 -0
  18. package/dist/document-engine.js +9 -0
  19. package/dist/document-engine.js.map +1 -0
  20. package/dist/document-signals.d.ts +31 -1
  21. package/dist/document-signals.d.ts.map +1 -1
  22. package/dist/document-signals.js +59 -0
  23. package/dist/document-signals.js.map +1 -1
  24. package/dist/document-streams.d.ts +8 -1
  25. package/dist/document-streams.d.ts.map +1 -1
  26. package/dist/document-streams.js +79 -8
  27. package/dist/document-streams.js.map +1 -1
  28. package/dist/document-thumbnail-capture.d.ts +20 -0
  29. package/dist/document-thumbnail-capture.d.ts.map +1 -1
  30. package/dist/document-thumbnail-capture.js +247 -9
  31. package/dist/document-thumbnail-capture.js.map +1 -1
  32. package/dist/documents-namespace.d.ts.map +1 -1
  33. package/dist/documents-namespace.js +22 -3
  34. package/dist/documents-namespace.js.map +1 -1
  35. package/dist/documents.d.ts +49 -16
  36. package/dist/documents.d.ts.map +1 -1
  37. package/dist/documents.js +981 -237
  38. package/dist/documents.js.map +1 -1
  39. package/dist/embed-protocol.d.ts +3 -0
  40. package/dist/embed-protocol.d.ts.map +1 -0
  41. package/dist/embed-protocol.js +26 -0
  42. package/dist/embed-protocol.js.map +1 -0
  43. package/dist/emitter.d.ts.map +1 -1
  44. package/dist/emitter.js +8 -1
  45. package/dist/emitter.js.map +1 -1
  46. package/dist/export-guest.d.ts.map +1 -1
  47. package/dist/export-guest.js +14 -6
  48. package/dist/export-guest.js.map +1 -1
  49. package/dist/fetch-deadline.d.ts +22 -0
  50. package/dist/fetch-deadline.d.ts.map +1 -0
  51. package/dist/fetch-deadline.js +96 -0
  52. package/dist/fetch-deadline.js.map +1 -0
  53. package/dist/fetch-retry.d.ts +1 -0
  54. package/dist/fetch-retry.d.ts.map +1 -1
  55. package/dist/fetch-retry.js +12 -5
  56. package/dist/fetch-retry.js.map +1 -1
  57. package/dist/handle-types.d.ts +150 -0
  58. package/dist/handle-types.d.ts.map +1 -0
  59. package/dist/handle-types.js +8 -0
  60. package/dist/handle-types.js.map +1 -0
  61. package/dist/handles.d.ts +48 -48
  62. package/dist/handles.d.ts.map +1 -1
  63. package/dist/handles.js +3122 -501
  64. package/dist/handles.js.map +1 -1
  65. package/dist/hosted-runtime.d.ts.map +1 -1
  66. package/dist/hosted-runtime.js +8 -12
  67. package/dist/hosted-runtime.js.map +1 -1
  68. package/dist/hosted-ui.d.ts +0 -1
  69. package/dist/hosted-ui.d.ts.map +1 -1
  70. package/dist/hosted-ui.js +29 -24
  71. package/dist/hosted-ui.js.map +1 -1
  72. package/dist/importer.d.ts.map +1 -1
  73. package/dist/importer.js +204 -8
  74. package/dist/importer.js.map +1 -1
  75. package/dist/index.d.ts +10 -10
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +11 -2
  78. package/dist/index.js.map +1 -1
  79. package/dist/internal.d.ts +2 -1
  80. package/dist/internal.d.ts.map +1 -1
  81. package/dist/internal.js +1 -0
  82. package/dist/internal.js.map +1 -1
  83. package/dist/join-coverage.d.ts +12 -0
  84. package/dist/join-coverage.d.ts.map +1 -0
  85. package/dist/join-coverage.js +37 -0
  86. package/dist/join-coverage.js.map +1 -0
  87. package/dist/jwt.d.ts.map +1 -1
  88. package/dist/jwt.js +5 -1
  89. package/dist/jwt.js.map +1 -1
  90. package/dist/launch-context.js +2 -2
  91. package/dist/launch-context.js.map +1 -1
  92. package/dist/mutate-batching.d.ts +25 -2
  93. package/dist/mutate-batching.d.ts.map +1 -1
  94. package/dist/mutate-batching.js +57 -10
  95. package/dist/mutate-batching.js.map +1 -1
  96. package/dist/open-document.d.ts +30 -1
  97. package/dist/open-document.d.ts.map +1 -1
  98. package/dist/open-document.js +1905 -322
  99. package/dist/open-document.js.map +1 -1
  100. package/dist/presence.d.ts +28 -0
  101. package/dist/presence.d.ts.map +1 -1
  102. package/dist/presence.js +149 -7
  103. package/dist/presence.js.map +1 -1
  104. package/dist/record-paging.d.ts +335 -71
  105. package/dist/record-paging.d.ts.map +1 -1
  106. package/dist/record-paging.js +590 -127
  107. package/dist/record-paging.js.map +1 -1
  108. package/dist/selection-persistence.d.ts.map +1 -1
  109. package/dist/selection-persistence.js +11 -1
  110. package/dist/selection-persistence.js.map +1 -1
  111. package/dist/serializer.d.ts +30 -1
  112. package/dist/serializer.d.ts.map +1 -1
  113. package/dist/session-persistence.d.ts.map +1 -1
  114. package/dist/session-persistence.js +9 -8
  115. package/dist/session-persistence.js.map +1 -1
  116. package/dist/session-toolbar.d.ts +0 -1
  117. package/dist/session-toolbar.d.ts.map +1 -1
  118. package/dist/session-toolbar.js +356 -83
  119. package/dist/session-toolbar.js.map +1 -1
  120. package/dist/session.d.ts.map +1 -1
  121. package/dist/session.js +87 -18
  122. package/dist/session.js.map +1 -1
  123. package/dist/tail-ops.d.ts +14 -4
  124. package/dist/tail-ops.d.ts.map +1 -1
  125. package/dist/tail-ops.js +75 -15
  126. package/dist/tail-ops.js.map +1 -1
  127. package/dist/topic-lifecycle.d.ts +4 -0
  128. package/dist/topic-lifecycle.d.ts.map +1 -1
  129. package/dist/topic-lifecycle.js +25 -1
  130. package/dist/topic-lifecycle.js.map +1 -1
  131. package/dist/types.d.ts +47 -1
  132. package/dist/types.d.ts.map +1 -1
  133. package/dist/undo.d.ts +2 -3
  134. package/dist/undo.d.ts.map +1 -1
  135. package/dist/undo.js +11 -0
  136. package/dist/undo.js.map +1 -1
  137. package/dist/unload-guard.d.ts +5 -0
  138. package/dist/unload-guard.d.ts.map +1 -0
  139. package/dist/unload-guard.js +88 -0
  140. package/dist/unload-guard.js.map +1 -0
  141. package/dist/version-bar.d.ts +4 -3
  142. package/dist/version-bar.d.ts.map +1 -1
  143. package/dist/version-bar.js +162 -20
  144. package/dist/version-bar.js.map +1 -1
  145. package/dist/version.d.ts +2 -2
  146. package/dist/version.js +1 -1
  147. package/dist/vite.d.ts +18 -2
  148. package/dist/vite.d.ts.map +1 -1
  149. package/dist/vite.js +133 -8
  150. package/dist/vite.js.map +1 -1
  151. package/dist/when-saved.d.ts +2 -0
  152. package/dist/when-saved.d.ts.map +1 -0
  153. package/dist/when-saved.js +70 -0
  154. package/dist/when-saved.js.map +1 -0
  155. package/dist/ws-client.d.ts +27 -3
  156. package/dist/ws-client.d.ts.map +1 -1
  157. package/dist/ws-client.js +408 -89
  158. package/dist/ws-client.js.map +1 -1
  159. package/dist/ws-frame-limit.d.ts.map +1 -1
  160. package/dist/ws-frame-limit.js +23 -17
  161. package/dist/ws-frame-limit.js.map +1 -1
  162. package/docs/app-manifest.md +7 -8
  163. package/docs/custom-chrome.md +21 -22
  164. package/docs/hosted-ui-advanced.md +14 -17
  165. package/docs/imported-documents.md +53 -197
  166. package/docs/presence.md +45 -21
  167. package/docs/schemas.md +12 -17
  168. package/docs/streams.md +55 -57
  169. package/package.json +4 -3
  170. package/src/auth-flow.ts +90 -23
  171. package/src/client.ts +262 -80
  172. package/src/document-checkpoints.ts +30 -0
  173. package/src/document-engine.ts +15 -0
  174. package/src/document-signals.ts +120 -8
  175. package/src/document-streams.ts +95 -9
  176. package/src/document-thumbnail-capture.ts +253 -9
  177. package/src/documents-namespace.ts +38 -13
  178. package/src/documents.ts +1103 -290
  179. package/src/embed-protocol.ts +25 -0
  180. package/src/emitter.ts +8 -1
  181. package/src/export-guest.ts +15 -9
  182. package/src/fetch-deadline.ts +119 -0
  183. package/src/fetch-retry.ts +14 -5
  184. package/src/handle-types.ts +303 -0
  185. package/src/handles.ts +3407 -683
  186. package/src/hosted-runtime.ts +8 -12
  187. package/src/hosted-ui.ts +28 -32
  188. package/src/importer.ts +216 -8
  189. package/src/index.ts +29 -18
  190. package/src/internal.ts +7 -0
  191. package/src/join-coverage.ts +42 -0
  192. package/src/jwt.ts +8 -1
  193. package/src/launch-context.ts +2 -2
  194. package/src/mutate-batching.ts +60 -11
  195. package/src/open-document.ts +2441 -502
  196. package/src/presence.ts +210 -11
  197. package/src/record-paging.ts +686 -137
  198. package/src/selection-persistence.ts +10 -1
  199. package/src/serializer.ts +33 -1
  200. package/src/session-persistence.ts +9 -8
  201. package/src/session-toolbar.ts +387 -89
  202. package/src/session.ts +91 -17
  203. package/src/tail-ops.ts +76 -10
  204. package/src/topic-lifecycle.ts +31 -1
  205. package/src/types.ts +56 -4
  206. package/src/undo.ts +13 -5
  207. package/src/unload-guard.ts +91 -0
  208. package/src/version-bar.ts +183 -26
  209. package/src/version.ts +1 -1
  210. package/src/vite.ts +175 -10
  211. package/src/when-saved.ts +66 -0
  212. package/src/ws-client.ts +461 -92
  213. package/src/ws-frame-limit.ts +23 -17
@@ -8,6 +8,15 @@ interface WsClientOptions {
8
8
  fireError: (error: Error) => void;
9
9
  }
10
10
  export type WsTopicCallback = (frame: unknown) => void;
11
+ export interface SubscribeOptions {
12
+ onSubscribed?: (info: {
13
+ resubscribed: boolean;
14
+ }) => void;
15
+ onEnded?: (info: {
16
+ reason: string;
17
+ }) => void;
18
+ ownsFrameRetry?: boolean;
19
+ }
11
20
  export declare class BrassWsClient {
12
21
  private readonly opts;
13
22
  private ws;
@@ -17,17 +26,22 @@ export declare class BrassWsClient {
17
26
  private listeners;
18
27
  private outboundQueue;
19
28
  private pendingTopicSends;
29
+ private ownFrameRetryTopics;
20
30
  private heldOverflowReported;
21
- private reconnectAttempt;
22
- private reconnectStartedAt;
31
+ private failedAttempts;
32
+ private reportedFailing;
33
+ private creditsThisSocket;
34
+ private lastInboundAt;
35
+ private silenceLimitMs;
23
36
  private reconnectTimer;
37
+ private socketsOpened;
24
38
  private outboundOverflowReported;
25
39
  private heartbeatTimer;
26
40
  private closedByUser;
27
41
  private visibilityListener;
28
42
  private onlineListener;
29
43
  constructor(opts: WsClientOptions);
30
- subscribe(topic: string, callback: WsTopicCallback): () => void;
44
+ subscribe(topic: string, callback: WsTopicCallback, options?: SubscribeOptions): () => void;
31
45
  private dispatch;
32
46
  private runEffect;
33
47
  send(frame: unknown): void;
@@ -38,13 +52,23 @@ export declare class BrassWsClient {
38
52
  private onOpen;
39
53
  private flushOutbound;
40
54
  private onMessage;
55
+ private fanOut;
41
56
  private onClose;
57
+ private reportFailing;
42
58
  private scheduleReconnect;
43
59
  private resume;
60
+ /** Reconnects this client has made: every socket after the first. */
61
+ get reconnectCount(): number;
62
+ /** Whether the page is hidden right now. */
63
+ get pageHidden(): boolean;
64
+ /** Whether a socket is open right now. */
65
+ get connected(): boolean;
44
66
  private isHidden;
45
67
  private ensureLifecycleListeners;
46
68
  private removeLifecycleListeners;
47
69
  private startHeartbeat;
70
+ private socketHasGoneSilent;
71
+ private dropSilentSocket;
48
72
  private stopHeartbeat;
49
73
  private sendIfOpen;
50
74
  private sendFrame;
@@ -1 +1 @@
1
- {"version":3,"file":"ws-client.d.ts","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"AAmCA,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAQ7C,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAO/C,iBAAiB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAGxC,aAAa,CAAC,EAAE,OAAO,SAAS,CAAC;IAGjC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AAevD,qBAAa,aAAa;IA+CZ,OAAO,CAAC,QAAQ,CAAC,IAAI;IA9CjC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,UAAU,CAAS;IAO3B,OAAO,CAAC,YAAY,CAAK;IAOzB,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,SAAS,CAAgC;IAIjD,OAAO,CAAC,aAAa,CAAiB;IAQtC,OAAO,CAAC,iBAAiB,CAAgC;IAGzD,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,cAAc,CAA8C;IAIpE,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,YAAY,CAAS;IAG7B,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,cAAc,CAA6B;gBAEtB,IAAI,EAAE,eAAe;IAKlD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI;IAsC/D,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,SAAS;IAsCjB,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAgE1B,KAAK,IAAI,IAAI;YAgCC,eAAe;IA6E7B,OAAO,CAAC,QAAQ;IAgBhB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM;IAgBd,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,SAAS;IA8DjB,OAAO,CAAC,OAAO;IAcf,OAAO,CAAC,iBAAiB;IAoCzB,OAAO,CAAC,MAAM;IAad,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,wBAAwB;IAwBhC,OAAO,CAAC,wBAAwB;IAyBhC,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,SAAS;CASlB"}
1
+ {"version":3,"file":"ws-client.d.ts","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"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"}