@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
|
@@ -8,6 +8,7 @@ export declare function fitWithinMaxEdge(width: number, height: number, maxEdge:
|
|
|
8
8
|
export interface ThumbnailCaptureHost {
|
|
9
9
|
isCaptureAllowed(): boolean;
|
|
10
10
|
isAttached(): boolean;
|
|
11
|
+
onCaptured?(): void;
|
|
11
12
|
}
|
|
12
13
|
export declare class ThumbnailCapture {
|
|
13
14
|
private readonly host;
|
|
@@ -15,11 +16,30 @@ export declare class ThumbnailCapture {
|
|
|
15
16
|
private _timer;
|
|
16
17
|
private _warnedFor;
|
|
17
18
|
private _uploader;
|
|
19
|
+
private _seedTimer;
|
|
20
|
+
private _seedHeld;
|
|
21
|
+
private _seedLast;
|
|
22
|
+
private _seedRepeats;
|
|
23
|
+
private _seedSamplesLeft;
|
|
24
|
+
private _seedCaptures;
|
|
25
|
+
private _seedOwed;
|
|
26
|
+
private _uploaded;
|
|
27
|
+
private _warnedCaptureFailure;
|
|
28
|
+
private _detachLifecycle;
|
|
18
29
|
constructor(host: ThumbnailCaptureHost);
|
|
19
30
|
useCanvas(source: CanvasSource): () => void;
|
|
20
31
|
setUploader(uploader: ThumbnailUploader | null): void;
|
|
21
32
|
schedule(): void;
|
|
33
|
+
armSeed(): void;
|
|
34
|
+
private _attachLifecycle;
|
|
35
|
+
private _flushPending;
|
|
22
36
|
cancel(): void;
|
|
37
|
+
destroy(): void;
|
|
38
|
+
private _stopSeed;
|
|
39
|
+
private _sampleSeed;
|
|
40
|
+
private _takeSeed;
|
|
41
|
+
private _fingerprint;
|
|
42
|
+
private _resolveCanvas;
|
|
23
43
|
private _capture;
|
|
24
44
|
private _downscale;
|
|
25
45
|
private _warnIfWebglContextWillProduceBlankCapture;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-thumbnail-capture.d.ts","sourceRoot":"","sources":["../src/document-thumbnail-capture.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"document-thumbnail-capture.d.ts","sourceRoot":"","sources":["../src/document-thumbnail-capture.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,YAAY,GACpB,iBAAiB,GACjB,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,CAAC;AAErC,MAAM,MAAM,iBAAiB,GAAG,CAC9B,KAAK,EAAE,IAAI,EACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,IAAI,CAAC,CAAC;AAoCnB,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAWpD;AAED,MAAM,WAAW,oBAAoB;IAInC,gBAAgB,IAAI,OAAO,CAAC;IAG5B,UAAU,IAAI,OAAO,CAAC;IAGtB,UAAU,CAAC,IAAI,IAAI,CAAC;CACrB;AAED,qBAAa,gBAAgB;IAgCf,OAAO,CAAC,QAAQ,CAAC,IAAI;IA9BjC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,MAAM,CAA8C;IAG5D,OAAO,CAAC,UAAU,CAAkC;IAIpD,OAAO,CAAC,SAAS,CAAkC;IAInD,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,aAAa,CAAK;IAG1B,OAAO,CAAC,SAAS,CAAS;IAG1B,OAAO,CAAC,SAAS,CAAS;IAG1B,OAAO,CAAC,qBAAqB,CAAS;IAEtC,OAAO,CAAC,gBAAgB,CAA6B;gBAExB,IAAI,EAAE,oBAAoB;IAKvD,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,IAAI;IAmB3C,WAAW,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI;IAMrD,QAAQ,IAAI,IAAI;IAuBhB,OAAO,IAAI,IAAI;IAkBf,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,aAAa;IAmBrB,MAAM,IAAI,IAAI;IAad,OAAO,IAAI,IAAI;IAQf,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,WAAW;IA0CnB,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,YAAY;IA2BpB,OAAO,CAAC,cAAc;YAKR,QAAQ;IA4CtB,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,0CAA0C;CAyBnD"}
|
|
@@ -1,9 +1,31 @@
|
|
|
1
|
-
// Document thumbnail auto-capture: screenshots a registered canvas
|
|
2
|
-
//
|
|
3
|
-
//
|
|
1
|
+
// Document thumbnail auto-capture: screenshots a registered canvas and uploads
|
|
2
|
+
// it as the thumbnail.
|
|
3
|
+
//
|
|
4
|
+
// The edit trigger debounces a capture after each local commit, so a
|
|
5
|
+
// continuous drag uploads once when it settles. The seed trigger covers a
|
|
6
|
+
// document whose picture is older than its content: an import writes no local
|
|
7
|
+
// commit on the reader's client, and a document nobody has edited yet has none
|
|
8
|
+
// at all. It samples the canvas and uploads the frame it settles on, because
|
|
9
|
+
// the drawn-but-wrong empty editor is on screen from the first frame (measured
|
|
10
|
+
// on the deployed DXF editor: grid at ~0.4s, drawing 0.8s to 4.2s after the
|
|
11
|
+
// records land), so neither blankness nor a fixed delay separates the two.
|
|
4
12
|
// Debounce window: a screenshot is taken this long after the last local edit,
|
|
5
13
|
// so a continuous drag uploads once when it settles, not once per frame.
|
|
6
14
|
const THUMBNAIL_CAPTURE_DEBOUNCE_MS = 1500;
|
|
15
|
+
// Seed watch: sample interval, equal samples that count as settled, give-up
|
|
16
|
+
// bound, and captures per watch. The window is a bound rather than a wait,
|
|
17
|
+
// since the watch ends as soon as it has what it needs; what it sizes is how
|
|
18
|
+
// long a document nothing has drawn yet stays worth sampling. A cold
|
|
19
|
+
// environment (first load of the bundle, first parse, a slow machine) has been
|
|
20
|
+
// measured taking over twenty seconds to draw a 150 KB DXF.
|
|
21
|
+
const SEED_SAMPLE_MS = 500;
|
|
22
|
+
const SEED_WINDOW_MS = 120_000;
|
|
23
|
+
const SEED_SETTLED_SAMPLES = 2;
|
|
24
|
+
const SEED_MAX_CAPTURES = 2;
|
|
25
|
+
// Edge of the square the fingerprint downsamples to. Small enough that a
|
|
26
|
+
// sample costs nothing on the render thread, large enough that a drawing does
|
|
27
|
+
// not average away into the background it sits on.
|
|
28
|
+
const FINGERPRINT_EDGE = 64;
|
|
7
29
|
// Longest-edge cap (device pixels) for an uploaded thumbnail: a generous
|
|
8
30
|
// product ceiling, an upper bound on the size any Brass surface sensibly
|
|
9
31
|
// paints a thumbnail at with retina headroom. The largest surface (the
|
|
@@ -41,6 +63,26 @@ export class ThumbnailCapture {
|
|
|
41
63
|
// offline / test path, where the canvas is tracked but never captured, so
|
|
42
64
|
// apps can register one early without hitting the server in tests.
|
|
43
65
|
_uploader = null;
|
|
66
|
+
// Seed-watch state: the interval, the fingerprint the watch will not upload,
|
|
67
|
+
// the last sample and how many times it has repeated, the sample budget, and
|
|
68
|
+
// how many frames the watch has captured.
|
|
69
|
+
_seedTimer = null;
|
|
70
|
+
_seedHeld = null;
|
|
71
|
+
_seedLast = null;
|
|
72
|
+
_seedRepeats = 0;
|
|
73
|
+
_seedSamplesLeft = 0;
|
|
74
|
+
_seedCaptures = 0;
|
|
75
|
+
// A seed was owed while no canvas was registered, so an app that builds its
|
|
76
|
+
// renderer after it has the content still gets one.
|
|
77
|
+
_seedOwed = false;
|
|
78
|
+
// Whether this instance has landed an upload. Decides whether an edit may
|
|
79
|
+
// supersede a seed watch, and nothing else.
|
|
80
|
+
_uploaded = false;
|
|
81
|
+
// A failed upload has been reported, so a document the server keeps
|
|
82
|
+
// refusing warns once rather than once per edit.
|
|
83
|
+
_warnedCaptureFailure = false;
|
|
84
|
+
// Detaches the page-lifecycle listeners while a canvas is registered.
|
|
85
|
+
_detachLifecycle = null;
|
|
44
86
|
constructor(host) {
|
|
45
87
|
this.host = host;
|
|
46
88
|
}
|
|
@@ -51,9 +93,16 @@ export class ThumbnailCapture {
|
|
|
51
93
|
this._canvas = source;
|
|
52
94
|
// A re-register gets one more chance to surface the missing-buffer warn.
|
|
53
95
|
this._warnedFor = null;
|
|
96
|
+
this._attachLifecycle();
|
|
97
|
+
if (this._seedOwed) {
|
|
98
|
+
this._seedOwed = false;
|
|
99
|
+
this.armSeed();
|
|
100
|
+
}
|
|
54
101
|
return () => {
|
|
55
102
|
if (this._canvas === source) {
|
|
56
103
|
this._canvas = null;
|
|
104
|
+
this._detachLifecycle?.();
|
|
105
|
+
this._detachLifecycle = null;
|
|
57
106
|
this.cancel();
|
|
58
107
|
}
|
|
59
108
|
};
|
|
@@ -66,6 +115,16 @@ export class ThumbnailCapture {
|
|
|
66
115
|
schedule() {
|
|
67
116
|
if (this._canvas === null)
|
|
68
117
|
return;
|
|
118
|
+
// An edit supersedes a seed watch once the document HAS a picture: the
|
|
119
|
+
// person is drawing, so the debounce owns it from here and a second upload
|
|
120
|
+
// of the same moment costs a second snapshot seal. Until then the watch
|
|
121
|
+
// runs on, because an edit is often the reader's last act before they
|
|
122
|
+
// leave, and cancelling on it hands the document's only chance at a
|
|
123
|
+
// picture to a debounce that has to outlive the tab.
|
|
124
|
+
if (this._uploaded) {
|
|
125
|
+
this._stopSeed();
|
|
126
|
+
this._seedOwed = false;
|
|
127
|
+
}
|
|
69
128
|
if (this._timer !== null)
|
|
70
129
|
clearTimeout(this._timer);
|
|
71
130
|
this._timer = setTimeout(() => {
|
|
@@ -73,21 +132,190 @@ export class ThumbnailCapture {
|
|
|
73
132
|
void this._capture();
|
|
74
133
|
}, THUMBNAIL_CAPTURE_DEBOUNCE_MS);
|
|
75
134
|
}
|
|
135
|
+
// Called when the document's picture is older than its content: at open, and
|
|
136
|
+
// again whenever content arrives with no local commit behind it. Arming a
|
|
137
|
+
// running watch refreshes its budget, so a burst of arriving ops is one
|
|
138
|
+
// watch that outlives the burst.
|
|
139
|
+
armSeed() {
|
|
140
|
+
const el = this._resolveCanvas();
|
|
141
|
+
if (el === null) {
|
|
142
|
+
this._seedOwed = true;
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
this._seedSamplesLeft = Math.ceil(SEED_WINDOW_MS / SEED_SAMPLE_MS);
|
|
146
|
+
if (this._seedTimer !== null)
|
|
147
|
+
return;
|
|
148
|
+
this._seedHeld = null;
|
|
149
|
+
this._seedLast = null;
|
|
150
|
+
this._seedRepeats = 0;
|
|
151
|
+
this._seedCaptures = 0;
|
|
152
|
+
this._seedTimer = setInterval(() => this._sampleSeed(), SEED_SAMPLE_MS);
|
|
153
|
+
}
|
|
154
|
+
// A page going away is a deadline: take the frame now rather than waiting
|
|
155
|
+
// out a debounce the tab will not survive. `visibilitychange` covers the
|
|
156
|
+
// tab switch as well, which is the case with room for the upload to finish.
|
|
157
|
+
_attachLifecycle() {
|
|
158
|
+
if (this._detachLifecycle !== null)
|
|
159
|
+
return;
|
|
160
|
+
if (typeof document === 'undefined' || typeof window === 'undefined') {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const onHidden = () => {
|
|
164
|
+
if (document.visibilityState === 'visible')
|
|
165
|
+
return;
|
|
166
|
+
this._flushPending();
|
|
167
|
+
};
|
|
168
|
+
const onPageHide = () => this._flushPending();
|
|
169
|
+
document.addEventListener('visibilitychange', onHidden);
|
|
170
|
+
window.addEventListener('pagehide', onPageHide);
|
|
171
|
+
this._detachLifecycle = () => {
|
|
172
|
+
document.removeEventListener('visibilitychange', onHidden);
|
|
173
|
+
window.removeEventListener('pagehide', onPageHide);
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
_flushPending() {
|
|
177
|
+
if (this._timer !== null) {
|
|
178
|
+
clearTimeout(this._timer);
|
|
179
|
+
this._timer = null;
|
|
180
|
+
void this._capture();
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
// A watch holding a frame it has not uploaded takes it, for the same
|
|
184
|
+
// reason its own deadline does: this frame beats no frame.
|
|
185
|
+
if (this._seedTimer !== null &&
|
|
186
|
+
this._seedLast !== null &&
|
|
187
|
+
this._seedLast !== this._seedHeld) {
|
|
188
|
+
this._takeSeed(this._seedLast);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
76
191
|
// Cancel a pending capture (canvas unregistered / suspend / close).
|
|
77
192
|
cancel() {
|
|
78
193
|
if (this._timer !== null) {
|
|
79
194
|
clearTimeout(this._timer);
|
|
80
195
|
this._timer = null;
|
|
81
196
|
}
|
|
197
|
+
this._stopSeed();
|
|
82
198
|
}
|
|
83
|
-
|
|
84
|
-
|
|
199
|
+
// Release for good. The page-lifecycle listeners are held on `document` and
|
|
200
|
+
// `window` rather than on anything the Document owns, so cancelling the
|
|
201
|
+
// timers does not reach them: without this they outlive every closed
|
|
202
|
+
// document, each retaining its uploader closure and firing on every tab
|
|
203
|
+
// switch for the life of the page.
|
|
204
|
+
destroy() {
|
|
205
|
+
this.cancel();
|
|
206
|
+
this._detachLifecycle?.();
|
|
207
|
+
this._detachLifecycle = null;
|
|
208
|
+
this._canvas = null;
|
|
209
|
+
this._seedOwed = false;
|
|
210
|
+
}
|
|
211
|
+
_stopSeed() {
|
|
212
|
+
if (this._seedTimer !== null) {
|
|
213
|
+
clearInterval(this._seedTimer);
|
|
214
|
+
this._seedTimer = null;
|
|
215
|
+
}
|
|
216
|
+
this._seedHeld = null;
|
|
217
|
+
this._seedLast = null;
|
|
218
|
+
this._seedRepeats = 0;
|
|
219
|
+
}
|
|
220
|
+
_sampleSeed() {
|
|
221
|
+
if (!this.host.isCaptureAllowed()) {
|
|
222
|
+
this._stopSeed();
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
const el = this._resolveCanvas();
|
|
226
|
+
if (el === null) {
|
|
227
|
+
this._stopSeed();
|
|
228
|
+
this._seedOwed = true;
|
|
85
229
|
return;
|
|
230
|
+
}
|
|
231
|
+
const now = this._fingerprint(el);
|
|
232
|
+
this._seedSamplesLeft -= 1;
|
|
233
|
+
// A canvas with no layout yet is not a frame, so it neither settles nor
|
|
234
|
+
// counts against the budget's meaning; the watch just waits for one.
|
|
235
|
+
if (now === null) {
|
|
236
|
+
if (this._seedSamplesLeft <= 0)
|
|
237
|
+
this._stopSeed();
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
if (now !== this._seedHeld) {
|
|
241
|
+
if (now === this._seedLast)
|
|
242
|
+
this._seedRepeats += 1;
|
|
243
|
+
else
|
|
244
|
+
this._seedRepeats = 0;
|
|
245
|
+
this._seedLast = now;
|
|
246
|
+
if (this._seedRepeats >= SEED_SETTLED_SAMPLES - 1) {
|
|
247
|
+
this._takeSeed(now);
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
if (this._seedSamplesLeft <= 0) {
|
|
252
|
+
// Still redrawing at the deadline: the latest frame is a truer picture
|
|
253
|
+
// of the document than no picture, and a further wait has no end.
|
|
254
|
+
const moved = this._seedLast !== null && this._seedLast !== this._seedHeld;
|
|
255
|
+
if (moved)
|
|
256
|
+
this._takeSeed(this._seedLast);
|
|
257
|
+
else
|
|
258
|
+
this._stopSeed();
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
// Upload a settled frame. The first one is a picture of the document, or of
|
|
262
|
+
// the editor about to draw it: an app that mounts its canvas before it has
|
|
263
|
+
// drawn holds an empty grid for as long as the drawing takes. So the watch
|
|
264
|
+
// stays on for a second settle, which lands at the same version and
|
|
265
|
+
// overwrites the first. A third is an app redrawing on its own.
|
|
266
|
+
_takeSeed(frame) {
|
|
267
|
+
this._seedHeld = frame;
|
|
268
|
+
this._seedRepeats = 0;
|
|
269
|
+
this._seedCaptures += 1;
|
|
270
|
+
if (this._seedCaptures >= SEED_MAX_CAPTURES || this._seedSamplesLeft <= 0) {
|
|
271
|
+
this._stopSeed();
|
|
272
|
+
}
|
|
273
|
+
void this._capture();
|
|
274
|
+
}
|
|
275
|
+
// A cheap perceptual fingerprint: the canvas downsampled into a small square
|
|
276
|
+
// and folded into a string. It reads through the same front buffer `toBlob`
|
|
277
|
+
// does, so a canvas the capture would read blank fingerprints blank too and
|
|
278
|
+
// the watch expires instead of uploading it.
|
|
279
|
+
_fingerprint(el) {
|
|
280
|
+
// A canvas the page has not laid out yet (the browser's 1x1 default until
|
|
281
|
+
// the app sizes it) carries no frame to compare.
|
|
282
|
+
if (el.width <= 1 || el.height <= 1)
|
|
283
|
+
return null;
|
|
284
|
+
try {
|
|
285
|
+
const off = document.createElement('canvas');
|
|
286
|
+
off.width = FINGERPRINT_EDGE;
|
|
287
|
+
off.height = FINGERPRINT_EDGE;
|
|
288
|
+
const ctx = off.getContext('2d', { willReadFrequently: true });
|
|
289
|
+
if (!ctx)
|
|
290
|
+
return 'unreadable';
|
|
291
|
+
ctx.drawImage(el, 0, 0, FINGERPRINT_EDGE, FINGERPRINT_EDGE);
|
|
292
|
+
const { data } = ctx.getImageData(0, 0, FINGERPRINT_EDGE, FINGERPRINT_EDGE);
|
|
293
|
+
let h1 = 0x811c9dc5;
|
|
294
|
+
let h2 = 0x01000193;
|
|
295
|
+
for (let i = 0; i < data.length; i += 4) {
|
|
296
|
+
const px = (data[i] << 24) | (data[i + 1] << 16) | (data[i + 2] << 8) | data[i + 3];
|
|
297
|
+
h1 = Math.imul(h1 ^ px, 0x01000193);
|
|
298
|
+
h2 = Math.imul(h2 + px, 0x85ebca6b) ^ (h2 >>> 13);
|
|
299
|
+
}
|
|
300
|
+
return `${h1 >>> 0}:${h2 >>> 0}`;
|
|
301
|
+
}
|
|
302
|
+
catch {
|
|
303
|
+
// A tainted canvas throws here exactly as it would in the capture, so
|
|
304
|
+
// treating every read as the same value expires the watch.
|
|
305
|
+
return 'unreadable';
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
_resolveCanvas() {
|
|
86
309
|
if (this._canvas === null)
|
|
310
|
+
return null;
|
|
311
|
+
return typeof this._canvas === 'function' ? this._canvas() : this._canvas;
|
|
312
|
+
}
|
|
313
|
+
async _capture() {
|
|
314
|
+
if (!this.host.isCaptureAllowed())
|
|
87
315
|
return;
|
|
88
316
|
if (this._uploader === null)
|
|
89
317
|
return;
|
|
90
|
-
const el =
|
|
318
|
+
const el = this._resolveCanvas();
|
|
91
319
|
if (!el)
|
|
92
320
|
return;
|
|
93
321
|
this._warnIfWebglContextWillProduceBlankCapture(el);
|
|
@@ -105,10 +333,20 @@ export class ThumbnailCapture {
|
|
|
105
333
|
if (!this.host.isAttached())
|
|
106
334
|
return;
|
|
107
335
|
await this._uploader(image, target.width, target.height);
|
|
336
|
+
this._uploaded = true;
|
|
337
|
+
this.host.onCaptured?.();
|
|
108
338
|
}
|
|
109
|
-
catch {
|
|
110
|
-
// Best-effort: rate-limit rejection, lack of write access, or a
|
|
111
|
-
// transient failure
|
|
339
|
+
catch (err) {
|
|
340
|
+
// Best-effort: a rate-limit rejection, a lack of write access, or a
|
|
341
|
+
// transient failure leaves the document on its last picture, and the
|
|
342
|
+
// next edit or arrival reschedules. Reported once, because the refusals
|
|
343
|
+
// that persist (no write access, an oversized image) are otherwise
|
|
344
|
+
// indistinguishable from a capture that never ran.
|
|
345
|
+
if (!this._warnedCaptureFailure) {
|
|
346
|
+
this._warnedCaptureFailure = true;
|
|
347
|
+
console.warn('@brass-build/client: uploading the document thumbnail failed: ' +
|
|
348
|
+
(err instanceof Error ? err.message : String(err)));
|
|
349
|
+
}
|
|
112
350
|
}
|
|
113
351
|
}
|
|
114
352
|
// Redraw an oversized canvas into an offscreen 2D canvas at the capped
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-thumbnail-capture.js","sourceRoot":"","sources":["../src/document-thumbnail-capture.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"document-thumbnail-capture.js","sourceRoot":"","sources":["../src/document-thumbnail-capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documents-namespace.d.ts","sourceRoot":"","sources":["../src/documents-namespace.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAIzD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAOD,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAQD,MAAM,WAAW,oBAAoB;IAGnC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAWD,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,cAAe,SAAQ,eAAe;IAGrD,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAMvC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"documents-namespace.d.ts","sourceRoot":"","sources":["../src/documents-namespace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
// SDK surface: `Brass.documents.*`. The metadata surface: get /
|
|
2
|
-
// thumbnails
|
|
3
|
-
//
|
|
4
|
-
//
|
|
2
|
+
// thumbnails. The editable surface (snapshot + ops + mutate) is the
|
|
3
|
+
// `Document` runtime class via `Brass.openDocumentById` /
|
|
4
|
+
// `Brass.createDocument`. Access-granting is hosted-only (the share
|
|
5
5
|
// dialog), not a programmatic method here.
|
|
6
6
|
import { createApiFetch } from './api-fetch.js';
|
|
7
7
|
import { BrassError } from './errors.js';
|
|
8
8
|
export function createDocumentsNamespace(opts) {
|
|
9
9
|
const apiFetch = createApiFetch(opts);
|
|
10
|
+
// Identifies THIS client to the import claim, so two tabs of one app
|
|
11
|
+
// signed in as one user are two claimants and only one of them imports.
|
|
12
|
+
// Minted once per namespace, so re-claiming from this client refreshes
|
|
13
|
+
// its own claim rather than taking a second one.
|
|
14
|
+
const importClientId = randomToken();
|
|
10
15
|
return {
|
|
11
16
|
get(docId) {
|
|
12
17
|
return apiFetch({
|
|
@@ -111,6 +116,9 @@ export function createDocumentsNamespace(opts) {
|
|
|
111
116
|
const body = {};
|
|
112
117
|
if (input?.message !== undefined)
|
|
113
118
|
body.message = input.message;
|
|
119
|
+
if (input?.bytes !== undefined) {
|
|
120
|
+
body.content_base64 = bytesToBase64(input.bytes);
|
|
121
|
+
}
|
|
114
122
|
const res = await apiFetch({
|
|
115
123
|
method: 'POST',
|
|
116
124
|
path: `/documents/${encodeURIComponent(docId)}/drive-sync/push`,
|
|
@@ -131,12 +139,14 @@ export function createDocumentsNamespace(opts) {
|
|
|
131
139
|
return apiFetch({
|
|
132
140
|
method: 'POST',
|
|
133
141
|
path: `/documents/${encodeURIComponent(docId)}/import-claim`,
|
|
142
|
+
body: { client_id: importClientId },
|
|
134
143
|
});
|
|
135
144
|
},
|
|
136
145
|
completeImport(docId) {
|
|
137
146
|
return apiFetch({
|
|
138
147
|
method: 'POST',
|
|
139
148
|
path: `/documents/${encodeURIComponent(docId)}/import-complete`,
|
|
149
|
+
body: { client_id: importClientId },
|
|
140
150
|
});
|
|
141
151
|
},
|
|
142
152
|
async getThumbnail(docId, options) {
|
|
@@ -154,6 +164,15 @@ export function createDocumentsNamespace(opts) {
|
|
|
154
164
|
},
|
|
155
165
|
};
|
|
156
166
|
}
|
|
167
|
+
function randomToken() {
|
|
168
|
+
const g = globalThis;
|
|
169
|
+
if (g.crypto?.randomUUID)
|
|
170
|
+
return g.crypto.randomUUID();
|
|
171
|
+
let s = '';
|
|
172
|
+
for (let i = 0; i < 32; i++)
|
|
173
|
+
s += Math.floor(Math.random() * 16).toString(16);
|
|
174
|
+
return s;
|
|
175
|
+
}
|
|
157
176
|
// Reads `SetThumbnailInput.image` into base64 plus a resolved MIME
|
|
158
177
|
// type. A `Blob` carries its own `type` (canvas `toBlob` sets it);
|
|
159
178
|
// raw `ArrayBuffer` / `Uint8Array` bytes need an explicit
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documents-namespace.js","sourceRoot":"","sources":["../src/documents-namespace.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,
|
|
1
|
+
{"version":3,"file":"documents-namespace.js","sourceRoot":"","sources":["../src/documents-namespace.ts"],"names":[],"mappings":"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"}
|