@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.
- package/AGENTS.md +72 -63
- package/CHANGELOG.md +97 -0
- package/README.md +325 -235
- package/dist/auth-flow.d.ts +10 -1
- package/dist/auth-flow.d.ts.map +1 -1
- package/dist/auth-flow.js +64 -20
- package/dist/auth-flow.js.map +1 -1
- package/dist/client.d.ts +4 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +245 -76
- package/dist/client.js.map +1 -1
- package/dist/document-checkpoints.d.ts +1 -0
- package/dist/document-checkpoints.d.ts.map +1 -1
- package/dist/document-checkpoints.js +27 -0
- package/dist/document-checkpoints.js.map +1 -1
- package/dist/document-engine.d.ts +4 -0
- package/dist/document-engine.d.ts.map +1 -0
- package/dist/document-engine.js +9 -0
- package/dist/document-engine.js.map +1 -0
- package/dist/document-signals.d.ts +31 -1
- package/dist/document-signals.d.ts.map +1 -1
- package/dist/document-signals.js +59 -0
- package/dist/document-signals.js.map +1 -1
- package/dist/document-streams.d.ts +8 -1
- package/dist/document-streams.d.ts.map +1 -1
- package/dist/document-streams.js +79 -8
- package/dist/document-streams.js.map +1 -1
- package/dist/document-thumbnail-capture.d.ts +20 -0
- package/dist/document-thumbnail-capture.d.ts.map +1 -1
- package/dist/document-thumbnail-capture.js +247 -9
- package/dist/document-thumbnail-capture.js.map +1 -1
- package/dist/documents-namespace.d.ts.map +1 -1
- package/dist/documents-namespace.js +22 -3
- package/dist/documents-namespace.js.map +1 -1
- package/dist/documents.d.ts +49 -16
- package/dist/documents.d.ts.map +1 -1
- package/dist/documents.js +981 -237
- package/dist/documents.js.map +1 -1
- package/dist/embed-protocol.d.ts +3 -0
- package/dist/embed-protocol.d.ts.map +1 -0
- package/dist/embed-protocol.js +26 -0
- package/dist/embed-protocol.js.map +1 -0
- package/dist/emitter.d.ts.map +1 -1
- package/dist/emitter.js +8 -1
- package/dist/emitter.js.map +1 -1
- package/dist/export-guest.d.ts.map +1 -1
- package/dist/export-guest.js +14 -6
- package/dist/export-guest.js.map +1 -1
- package/dist/fetch-deadline.d.ts +22 -0
- package/dist/fetch-deadline.d.ts.map +1 -0
- package/dist/fetch-deadline.js +96 -0
- package/dist/fetch-deadline.js.map +1 -0
- package/dist/fetch-retry.d.ts +1 -0
- package/dist/fetch-retry.d.ts.map +1 -1
- package/dist/fetch-retry.js +12 -5
- package/dist/fetch-retry.js.map +1 -1
- package/dist/handle-types.d.ts +150 -0
- package/dist/handle-types.d.ts.map +1 -0
- package/dist/handle-types.js +8 -0
- package/dist/handle-types.js.map +1 -0
- package/dist/handles.d.ts +48 -48
- package/dist/handles.d.ts.map +1 -1
- package/dist/handles.js +3122 -501
- package/dist/handles.js.map +1 -1
- package/dist/hosted-runtime.d.ts.map +1 -1
- package/dist/hosted-runtime.js +8 -12
- package/dist/hosted-runtime.js.map +1 -1
- package/dist/hosted-ui.d.ts +0 -1
- package/dist/hosted-ui.d.ts.map +1 -1
- package/dist/hosted-ui.js +29 -24
- package/dist/hosted-ui.js.map +1 -1
- package/dist/importer.d.ts.map +1 -1
- package/dist/importer.js +204 -8
- package/dist/importer.js.map +1 -1
- package/dist/index.d.ts +10 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -2
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +2 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +1 -0
- package/dist/internal.js.map +1 -1
- package/dist/join-coverage.d.ts +12 -0
- package/dist/join-coverage.d.ts.map +1 -0
- package/dist/join-coverage.js +37 -0
- package/dist/join-coverage.js.map +1 -0
- package/dist/jwt.d.ts.map +1 -1
- package/dist/jwt.js +5 -1
- package/dist/jwt.js.map +1 -1
- package/dist/launch-context.js +2 -2
- package/dist/launch-context.js.map +1 -1
- package/dist/mutate-batching.d.ts +25 -2
- package/dist/mutate-batching.d.ts.map +1 -1
- package/dist/mutate-batching.js +57 -10
- package/dist/mutate-batching.js.map +1 -1
- package/dist/open-document.d.ts +30 -1
- package/dist/open-document.d.ts.map +1 -1
- package/dist/open-document.js +1905 -322
- package/dist/open-document.js.map +1 -1
- package/dist/presence.d.ts +28 -0
- package/dist/presence.d.ts.map +1 -1
- package/dist/presence.js +149 -7
- package/dist/presence.js.map +1 -1
- package/dist/record-paging.d.ts +335 -71
- package/dist/record-paging.d.ts.map +1 -1
- package/dist/record-paging.js +590 -127
- package/dist/record-paging.js.map +1 -1
- package/dist/selection-persistence.d.ts.map +1 -1
- package/dist/selection-persistence.js +11 -1
- package/dist/selection-persistence.js.map +1 -1
- package/dist/serializer.d.ts +30 -1
- package/dist/serializer.d.ts.map +1 -1
- package/dist/session-persistence.d.ts.map +1 -1
- package/dist/session-persistence.js +9 -8
- package/dist/session-persistence.js.map +1 -1
- package/dist/session-toolbar.d.ts +0 -1
- package/dist/session-toolbar.d.ts.map +1 -1
- package/dist/session-toolbar.js +356 -83
- package/dist/session-toolbar.js.map +1 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +87 -18
- package/dist/session.js.map +1 -1
- package/dist/tail-ops.d.ts +14 -4
- package/dist/tail-ops.d.ts.map +1 -1
- package/dist/tail-ops.js +75 -15
- package/dist/tail-ops.js.map +1 -1
- package/dist/topic-lifecycle.d.ts +4 -0
- package/dist/topic-lifecycle.d.ts.map +1 -1
- package/dist/topic-lifecycle.js +25 -1
- package/dist/topic-lifecycle.js.map +1 -1
- package/dist/types.d.ts +47 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/undo.d.ts +2 -3
- package/dist/undo.d.ts.map +1 -1
- package/dist/undo.js +11 -0
- package/dist/undo.js.map +1 -1
- package/dist/unload-guard.d.ts +5 -0
- package/dist/unload-guard.d.ts.map +1 -0
- package/dist/unload-guard.js +88 -0
- package/dist/unload-guard.js.map +1 -0
- package/dist/version-bar.d.ts +4 -3
- package/dist/version-bar.d.ts.map +1 -1
- package/dist/version-bar.js +162 -20
- package/dist/version-bar.js.map +1 -1
- package/dist/version.d.ts +2 -2
- package/dist/version.js +1 -1
- package/dist/vite.d.ts +18 -2
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +133 -8
- package/dist/vite.js.map +1 -1
- package/dist/when-saved.d.ts +2 -0
- package/dist/when-saved.d.ts.map +1 -0
- package/dist/when-saved.js +70 -0
- package/dist/when-saved.js.map +1 -0
- package/dist/ws-client.d.ts +27 -3
- package/dist/ws-client.d.ts.map +1 -1
- package/dist/ws-client.js +408 -89
- package/dist/ws-client.js.map +1 -1
- package/dist/ws-frame-limit.d.ts.map +1 -1
- package/dist/ws-frame-limit.js +23 -17
- package/dist/ws-frame-limit.js.map +1 -1
- package/docs/app-manifest.md +7 -8
- package/docs/custom-chrome.md +21 -22
- package/docs/hosted-ui-advanced.md +14 -17
- package/docs/imported-documents.md +53 -197
- package/docs/presence.md +45 -21
- package/docs/schemas.md +12 -17
- package/docs/streams.md +55 -57
- package/package.json +4 -3
- package/src/auth-flow.ts +90 -23
- package/src/client.ts +262 -80
- package/src/document-checkpoints.ts +30 -0
- package/src/document-engine.ts +15 -0
- package/src/document-signals.ts +120 -8
- package/src/document-streams.ts +95 -9
- package/src/document-thumbnail-capture.ts +253 -9
- package/src/documents-namespace.ts +38 -13
- package/src/documents.ts +1103 -290
- package/src/embed-protocol.ts +25 -0
- package/src/emitter.ts +8 -1
- package/src/export-guest.ts +15 -9
- package/src/fetch-deadline.ts +119 -0
- package/src/fetch-retry.ts +14 -5
- package/src/handle-types.ts +303 -0
- package/src/handles.ts +3407 -683
- package/src/hosted-runtime.ts +8 -12
- package/src/hosted-ui.ts +28 -32
- package/src/importer.ts +216 -8
- package/src/index.ts +29 -18
- package/src/internal.ts +7 -0
- package/src/join-coverage.ts +42 -0
- package/src/jwt.ts +8 -1
- package/src/launch-context.ts +2 -2
- package/src/mutate-batching.ts +60 -11
- package/src/open-document.ts +2441 -502
- package/src/presence.ts +210 -11
- package/src/record-paging.ts +686 -137
- package/src/selection-persistence.ts +10 -1
- package/src/serializer.ts +33 -1
- package/src/session-persistence.ts +9 -8
- package/src/session-toolbar.ts +387 -89
- package/src/session.ts +91 -17
- package/src/tail-ops.ts +76 -10
- package/src/topic-lifecycle.ts +31 -1
- package/src/types.ts +56 -4
- package/src/undo.ts +13 -5
- package/src/unload-guard.ts +91 -0
- package/src/version-bar.ts +183 -26
- package/src/version.ts +1 -1
- package/src/vite.ts +175 -10
- package/src/when-saved.ts +66 -0
- package/src/ws-client.ts +461 -92
- 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
|
|
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
|
-
|
|
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
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
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.
|
package/dist/presence.js.map
CHANGED
|
@@ -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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"}
|