@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
package/dist/presence.js CHANGED
@@ -5,11 +5,53 @@
5
5
  // frames), publishes this client's presence via `set(...)` (shallow
6
6
  // local merge, throttled outbound), and notifies `on('change')`. The
7
7
  // server stores what it is sent verbatim, so the merge happens here.
8
+ import { createEmitter } from './emitter.js';
8
9
  // `set(...)` is debounced to at most one `presence` frame per interval
9
10
  // (leading edge fires immediately, trailing send carries merges from
10
11
  // the window). 100 ms = 10 Hz: low fanout cost, smooth interpolation.
11
12
  export const PRESENCE_PUBLISH_INTERVAL_MS = 100;
13
+ /**
14
+ * The largest a single presence layer (`state` or `ext`) may serialise to.
15
+ *
16
+ * The platform caps each layer at this and drops a frame whose layer is
17
+ * over, so a payload past it reaches no peer. Roughly 130 to 140 entity ids
18
+ * in `state.selection`, which an ordinary marquee select crosses, so measure
19
+ * against it whenever what you publish scales with what the user picked.
20
+ */
21
+ export const PRESENCE_LAYER_MAX_BYTES = 2048;
12
22
  const PRESENCE_TOPIC_PREFIX = 'presence:doc:';
23
+ const TEXT_ENCODER = new TextEncoder();
24
+ // Serialised UTF-8 byte length of one layer, measured the same way the
25
+ // platform measures it. A non-serialisable value (circular, a BigInt) reads
26
+ // as over the cap rather than throwing out of the publish path, since a
27
+ // frame carrying it could not be sent either way.
28
+ function presenceLayerBytes(layer) {
29
+ let json;
30
+ try {
31
+ json = JSON.stringify(layer);
32
+ }
33
+ catch {
34
+ return Number.POSITIVE_INFINITY;
35
+ }
36
+ return TEXT_ENCODER.encode(json).length;
37
+ }
38
+ // The outgoing payload as one comparable string, or null when it cannot be
39
+ // serialised. Null reads as "different" at the call site, so a comparison
40
+ // that cannot be answered sends the frame rather than skipping it.
41
+ function presencePayloadKey(presence) {
42
+ try {
43
+ return JSON.stringify(presence);
44
+ }
45
+ catch {
46
+ return null;
47
+ }
48
+ }
49
+ const PRESENCE_STATUS_OK = { oversize: false, withheld: [] };
50
+ function statusEqual(a, b) {
51
+ return (a.oversize === b.oversize &&
52
+ a.withheld.length === b.withheld.length &&
53
+ a.withheld.every((layer, i) => layer === b.withheld[i]));
54
+ }
13
55
  function isObject(value) {
14
56
  return typeof value === 'object' && value !== null && !Array.isArray(value);
15
57
  }
@@ -72,6 +114,34 @@ class PresenceController {
72
114
  _throttleTimer = null;
73
115
  _lastSentAt = 0;
74
116
  _closed = false;
117
+ // The last value of each layer that reached the wire, or null for a layer
118
+ // that has never been published. A withheld layer re-sends its entry: the
119
+ // server stores the payload verbatim, so omitting the layer would clear it
120
+ // from every peer's roster rather than leaving it at its last good value.
121
+ _sentState = null;
122
+ _sentExt = null;
123
+ // The payload of the last frame this connection published, so a tick that
124
+ // resolves to the same one can be skipped. Distinct from the two layers
125
+ // above, which are the last values that FIT and are what a withheld layer
126
+ // falls back to.
127
+ _sentPayloadKey = null;
128
+ // Set by the two paths that republish because the server's copy of this
129
+ // client's presence is gone (a re-subscribe rewrites the row empty, and a
130
+ // resumed open re-advertises after a park). The frame they need is exactly
131
+ // the one the comparison above would skip, so it takes precedence for one
132
+ // send.
133
+ _republishPending = false;
134
+ _statusEmitter = createEmitter({
135
+ fireOnAttach: true,
136
+ retain: 'latest',
137
+ // Publishing runs at 10 Hz, and an app that overflows a layer usually
138
+ // overflows it on every update, so the gate is what turns a per-update
139
+ // condition into the edge an app can act on.
140
+ equals: statusEqual,
141
+ onError: (err) => {
142
+ console.error('[Brass] presence onStatus listener threw:', err);
143
+ },
144
+ });
75
145
  // Set while the owning Document is parked (`_suspendListeners`). Gates the
76
146
  // outbound publish path so a parked doc advertises nothing, whether from a
77
147
  // late `set(...)` or from the reconnect-snapshot republish (the WS
@@ -86,11 +156,20 @@ class PresenceController {
86
156
  branchId) {
87
157
  this._wsClient = _wsClient;
88
158
  this._topic = `${PRESENCE_TOPIC_PREFIX}${docId}:${branchId}`;
159
+ // Seed the retained status so `status` reads and a fire-on-attach
160
+ // `onStatus` both answer before the first `set(...)`.
161
+ this._statusEmitter.emit(PRESENCE_STATUS_OK);
89
162
  this._unsub = this._wsClient.subscribe(this._topic, (frame) => this._onFrame(frame));
90
163
  }
91
164
  get roster() {
92
165
  return [...this._roster.values()];
93
166
  }
167
+ get status() {
168
+ return this._statusEmitter.retained ?? PRESENCE_STATUS_OK;
169
+ }
170
+ onStatus(listener) {
171
+ return this._statusEmitter.on(listener);
172
+ }
94
173
  get self() {
95
174
  return { state: this._selfState, ext: this._selfExt };
96
175
  }
@@ -156,6 +235,7 @@ class PresenceController {
156
235
  }
157
236
  this._roster.clear();
158
237
  this._listeners.clear();
238
+ this._statusEmitter.clear();
159
239
  }
160
240
  _suspendListeners() {
161
241
  // Drop the app-registered change listeners and gate the outbound publish
@@ -168,6 +248,7 @@ class PresenceController {
168
248
  // would otherwise send a fresh frame while parked.
169
249
  this._suspended = true;
170
250
  this._listeners.clear();
251
+ this._statusEmitter.clear();
171
252
  if (this._throttleTimer !== null) {
172
253
  clearTimeout(this._throttleTimer);
173
254
  this._throttleTimer = null;
@@ -181,6 +262,7 @@ class PresenceController {
181
262
  this._suspended = false;
182
263
  if (Object.keys(this._selfState).length > 0 ||
183
264
  Object.keys(this._selfExt).length > 0) {
265
+ this._republishPending = true;
184
266
  this._scheduleSend();
185
267
  }
186
268
  }
@@ -205,7 +287,7 @@ class PresenceController {
205
287
  return;
206
288
  case 'doc_gone':
207
289
  // The server also fans `doc_gone` on `presence:doc:` (paired
208
- // with the SUB# eviction in `fanoutDocGone`). `leave()` stops
290
+ // with the subscription eviction). `leave()` stops
209
291
  // publishing immediately so a trailing presence frame crossing
210
292
  // the eviction window can't be rejected `forbidden` and surface
211
293
  // to `onError` as a misleading "subscribe(...): forbidden", and
@@ -235,6 +317,7 @@ class PresenceController {
235
317
  // peers restore it without waiting for the next user input.
236
318
  if (Object.keys(this._selfState).length > 0 ||
237
319
  Object.keys(this._selfExt).length > 0) {
320
+ this._republishPending = true;
238
321
  this._scheduleSend();
239
322
  }
240
323
  }
@@ -276,7 +359,11 @@ class PresenceController {
276
359
  }
277
360
  _emitChange() {
278
361
  const roster = this.roster;
279
- for (const listener of this._listeners) {
362
+ // Copied before the walk: a listener that closes the document reaches
363
+ // `_suspendListeners`, which clears this set, and a `Set` never visits an
364
+ // entry removed before its turn. Iterating it live drops every listener
365
+ // after that one.
366
+ for (const listener of Array.from(this._listeners)) {
280
367
  try {
281
368
  listener(roster);
282
369
  }
@@ -308,20 +395,75 @@ class PresenceController {
308
395
  _sendNow() {
309
396
  if (this._closed || this._suspended)
310
397
  return;
398
+ // Stamped even when nothing goes out, so the throttle still paces the
399
+ // measurement rather than re-serialising on every `set(...)`.
311
400
  this._lastSentAt = Date.now();
401
+ const withheld = [];
312
402
  const presence = {};
313
- if (Object.keys(this._selfState).length > 0) {
314
- presence.state = this._selfState;
315
- }
316
- if (Object.keys(this._selfExt).length > 0) {
317
- presence.ext = this._selfExt;
403
+ const state = this._publishableLayer('state', this._selfState, this._sentState, withheld);
404
+ if (state)
405
+ presence.state = state;
406
+ const ext = this._publishableLayer('ext', this._selfExt, this._sentExt, withheld);
407
+ if (ext)
408
+ presence.ext = ext;
409
+ this._emitStatus(withheld);
410
+ // Every layer is either empty or oversized with nothing published behind
411
+ // it, so the frame would carry nothing peers do not already have.
412
+ if (presence.state === undefined && presence.ext === undefined)
413
+ return;
414
+ // A frame repeating what this connection already published costs the
415
+ // server a row write and every peer a roster fanout, and says nothing.
416
+ // A withheld layer makes that the steady state rather than an edge case:
417
+ // it resolves to its last good value on every tick, so an app publishing
418
+ // an oversized layer at its input rate would re-send that one value at up
419
+ // to 10 Hz for as long as the layer stays over.
420
+ const payloadKey = presencePayloadKey(presence);
421
+ if (!this._republishPending &&
422
+ payloadKey !== null &&
423
+ payloadKey === this._sentPayloadKey) {
424
+ return;
318
425
  }
426
+ this._republishPending = false;
427
+ this._sentPayloadKey = payloadKey;
428
+ this._sentState = presence.state ?? null;
429
+ this._sentExt = presence.ext ?? null;
319
430
  this._wsClient.send({
320
431
  type: 'presence',
321
432
  topic: this._topic,
322
433
  presence,
323
434
  });
324
435
  }
436
+ // Resolve what one layer contributes to the outbound frame: the current
437
+ // value when it fits, otherwise the last value that did (recorded in
438
+ // `withheld` either way). Measuring here is what keeps a presence frame
439
+ // orders of magnitude under the size that closes the socket, which matters
440
+ // because the socket carries the document's ops too and the reconnect
441
+ // republishes retained presence, so one oversized frame would otherwise
442
+ // wedge the document in a reconnect loop instead of dropping an update.
443
+ _publishableLayer(layer, current, lastSent, withheld) {
444
+ if (Object.keys(current).length === 0)
445
+ return undefined;
446
+ if (presenceLayerBytes(current) <= PRESENCE_LAYER_MAX_BYTES)
447
+ return current;
448
+ withheld.push(layer);
449
+ return lastSent ?? undefined;
450
+ }
451
+ _emitStatus(withheld) {
452
+ const next = withheld.length === 0
453
+ ? PRESENCE_STATUS_OK
454
+ : { oversize: true, withheld };
455
+ if (statusEqual(next, this.status))
456
+ return;
457
+ if (next.oversize) {
458
+ // The rising edge only, so a 10 Hz publisher gets one line rather than
459
+ // ten a second. Without it an app that never wired `onStatus` has no
460
+ // sign that its peers stopped seeing the layer.
461
+ console.warn(`[Brass] presence ${next.withheld.join(' and ')} exceeds ` +
462
+ `${PRESENCE_LAYER_MAX_BYTES} bytes and is not being published. ` +
463
+ `Publish less, or watch presence.onStatus to react.`);
464
+ }
465
+ this._statusEmitter.emit(next);
466
+ }
325
467
  }
326
468
  // Factory for the presence controller. Called from `open-document.ts`
327
469
  // when a WS client is wired onto a freshly materialised Document.
@@ -1 +1 @@
1
- {"version":3,"file":"presence.js","sourceRoot":"","sources":["../src/presence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"presence.js","sourceRoot":"","sources":["../src/presence.ts"],"names":[],"mappings":"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"}