@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
@@ -6,9 +6,32 @@ export declare const MUTATE_BATCH_JSON_BUDGET_CHARS: number;
6
6
  export declare class MutateBatcher {
7
7
  private readonly _flush;
8
8
  private _chars;
9
- constructor(_flush: () => void);
9
+ private _keys;
10
+ private _before;
11
+ constructor(_flush: (keys: readonly string[]) => void);
12
+ /** Register work to run immediately before every commit this batcher
13
+ * takes, including the caller's final one via `flushNow`. */
14
+ onFlush(before: () => void): void;
15
+ /** Name the record keys a write that has just landed covers. Called AFTER
16
+ * the write, so a key is never named to a commit that precedes it. */
17
+ noteKeys(keys: Iterable<string>): void;
10
18
  /** Account for one assignment, from the proxy's set trap. */
11
19
  record(value: unknown): void;
12
- recordDelete(): void;
20
+ /** Account for a write whose caller already knows its size in the same
21
+ * unit `record` charges, the UNCOMPRESSED JSON the write carries.
22
+ *
23
+ * A page is stored gzipped, so charging the bytes it occupies would price
24
+ * the same records about five times cheaper than the map path prices them,
25
+ * and the same write would produce ops an order of magnitude apart
26
+ * depending on whether the store was already paged when it arrived. The
27
+ * budget answers for the records a commit carries, so a page charges what
28
+ * it packs. */
29
+ recordChars(chars: number): void;
30
+ /** Account for one deletion. What a delete puts in the op is its KEY, so
31
+ * that is what it costs: charging a flat nominal instead prices a bulk
32
+ * delete at a fraction of the bytes it writes, and a store big enough to
33
+ * page is big enough for the difference to carry the whole delete into one
34
+ * op. */
35
+ recordDelete(key: string): void;
13
36
  }
14
37
  //# sourceMappingURL=mutate-batching.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mutate-batching.d.ts","sourceRoot":"","sources":["../src/mutate-batching.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,8BAA8B,QAAY,CAAC;AAkBxD;;;GAGG;AACH,qBAAa,aAAa;IAGZ,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,MAAM,CAAK;gBAEU,MAAM,EAAE,MAAM,IAAI;IAE/C,6DAA6D;IAC7D,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAY5B,YAAY,IAAI,IAAI;CAGrB"}
1
+ {"version":3,"file":"mutate-batching.d.ts","sourceRoot":"","sources":["../src/mutate-batching.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,8BAA8B,QAAa,CAAC;AAkBzD;;;GAGG;AACH,qBAAa,aAAa;IAeZ,OAAO,CAAC,QAAQ,CAAC,MAAM;IAdnC,OAAO,CAAC,MAAM,CAAK;IAQnB,OAAO,CAAC,KAAK,CAAgB;IAI7B,OAAO,CAAC,OAAO,CAA6B;gBAEf,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI;IAEtE;kEAC8D;IAC9D,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,IAAI;IAIjC;2EACuE;IACvE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI;IAItC,6DAA6D;IAC7D,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAI5B;;;;;;;;oBAQgB;IAChB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAchC;;;;cAIU;IACV,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAGhC"}
@@ -11,12 +11,17 @@
11
11
  // as several updates instead of one, so they can see it part-applied. It
12
12
  // converges normally and stays one undo step.
13
13
  // A batch closes once the values assigned since the last commit reach
14
- // roughly this much JSON, which keeps each op in the tens of KB: an
15
- // encoded op runs close to the JSON length of its values, and base64 adds
16
- // a third. Budgeting on size rather than on a record count is what keeps
17
- // that true for narrow and wide records alike, so where it splits depends
18
- // on width (measured: ~800 spreadsheet cells, ~200 wider rows).
19
- export const MUTATE_BATCH_JSON_BUDGET_CHARS = 48 * 1024;
14
+ // roughly this much JSON, so op size tracks the budget rather than the
15
+ // mutation, for narrow and wide records alike.
16
+ //
17
+ // The budget answers to STORAGE, not to the socket: an op past the frame cap
18
+ // takes the HTTP write, which carries about 190x a frame. What storage meters
19
+ // is op COUNT (a seq allocation and HEAD update on the document's one
20
+ // partition, plus an entry in the join's tail budget). Measured on a
21
+ // 500,000-element write, 48 KB produces 526 ops and 512 KB produces 158, past
22
+ // which the budget stops binding for that shape, while encode time stays flat
23
+ // throughout: a smaller budget spends op count and buys nothing.
24
+ export const MUTATE_BATCH_JSON_BUDGET_CHARS = 512 * 1024;
20
25
  /** Rough size of one assigned value. Runs on every assignment, so it only
21
26
  * has to be proportional; an unserializable value counts as nominal
22
27
  * rather than throwing, since the assignment itself is where that error
@@ -43,23 +48,65 @@ function approximateChars(value) {
43
48
  export class MutateBatcher {
44
49
  _flush;
45
50
  _chars = 0;
51
+ // The record keys whose writes have landed since the last commit, handed to
52
+ // the flush so a caller with something to land BESIDE those records (an
53
+ // ordered map's order entries) can name exactly the ones this commit
54
+ // carries. A paged write assembles its whole overlay before it writes any of
55
+ // it, so the mutation's added keys are all known by the time the first
56
+ // commit comes round; without this the order list would be appended whole at
57
+ // that first commit, which is the oversized op the split exists to avoid.
58
+ _keys = [];
59
+ // Run just before each commit. A paged write registers one here to seal
60
+ // the pages it has accumulated, so they ride the same commit rather than
61
+ // arriving after it.
62
+ _before = null;
46
63
  constructor(_flush) {
47
64
  this._flush = _flush;
48
65
  }
66
+ /** Register work to run immediately before every commit this batcher
67
+ * takes, including the caller's final one via `flushNow`. */
68
+ onFlush(before) {
69
+ this._before = before;
70
+ }
71
+ /** Name the record keys a write that has just landed covers. Called AFTER
72
+ * the write, so a key is never named to a commit that precedes it. */
73
+ noteKeys(keys) {
74
+ for (const key of keys)
75
+ this._keys.push(key);
76
+ }
49
77
  /** Account for one assignment, from the proxy's set trap. */
50
78
  record(value) {
51
- const chars = approximateChars(value);
79
+ this.recordChars(approximateChars(value));
80
+ }
81
+ /** Account for a write whose caller already knows its size in the same
82
+ * unit `record` charges, the UNCOMPRESSED JSON the write carries.
83
+ *
84
+ * A page is stored gzipped, so charging the bytes it occupies would price
85
+ * the same records about five times cheaper than the map path prices them,
86
+ * and the same write would produce ops an order of magnitude apart
87
+ * depending on whether the store was already paged when it arrived. The
88
+ * budget answers for the records a commit carries, so a page charges what
89
+ * it packs. */
90
+ recordChars(chars) {
52
91
  // Commit BEFORE adding, so one assignment larger than the whole budget
53
92
  // lands in a batch of its own instead of dragging its neighbours over
54
93
  // the line with it.
55
94
  if (this._chars > 0 && this._chars + chars > MUTATE_BATCH_JSON_BUDGET_CHARS) {
56
- this._flush();
95
+ this._before?.();
96
+ const keys = this._keys;
97
+ this._keys = [];
98
+ this._flush(keys);
57
99
  this._chars = 0;
58
100
  }
59
101
  this._chars += chars;
60
102
  }
61
- recordDelete() {
62
- this.record(null);
103
+ /** Account for one deletion. What a delete puts in the op is its KEY, so
104
+ * that is what it costs: charging a flat nominal instead prices a bulk
105
+ * delete at a fraction of the bytes it writes, and a store big enough to
106
+ * page is big enough for the difference to carry the whole delete into one
107
+ * op. */
108
+ recordDelete(key) {
109
+ this.record(key);
63
110
  }
64
111
  }
65
112
  //# sourceMappingURL=mutate-batching.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mutate-batching.js","sourceRoot":"","sources":["../src/mutate-batching.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,qEAAqE;AACrE,EAAE;AACF,0EAA0E;AAC1E,wEAAwE;AACxE,yEAAyE;AACzE,sEAAsE;AACtE,yBAAyB;AACzB,EAAE;AACF,0EAA0E;AAC1E,yEAAyE;AACzE,8CAA8C;AAE9C,sEAAsE;AACtE,oEAAoE;AACpE,0EAA0E;AAC1E,yEAAyE;AACzE,0EAA0E;AAC1E,gEAAgE;AAChE,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,GAAG,IAAI,CAAC;AAExD;;;eAGe;AACf,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IACpD,MAAM,CAAC,GAAG,OAAO,KAAK,CAAC;IACvB,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAQ,KAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;IACxD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,aAAa;IAGK;IAFrB,MAAM,GAAG,CAAC,CAAC;IAEnB,YAA6B,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;IAAG,CAAC;IAEnD,6DAA6D;IAC7D,MAAM,CAAC,KAAc;QACnB,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACtC,uEAAuE;QACvE,sEAAsE;QACtE,oBAAoB;QACpB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,8BAA8B,EAAE,CAAC;YAC5E,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;IACvB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;CACF"}
1
+ {"version":3,"file":"mutate-batching.js","sourceRoot":"","sources":["../src/mutate-batching.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,qEAAqE;AACrE,EAAE;AACF,0EAA0E;AAC1E,wEAAwE;AACxE,yEAAyE;AACzE,sEAAsE;AACtE,yBAAyB;AACzB,EAAE;AACF,0EAA0E;AAC1E,yEAAyE;AACzE,8CAA8C;AAE9C,sEAAsE;AACtE,uEAAuE;AACvE,+CAA+C;AAC/C,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,sEAAsE;AACtE,qEAAqE;AACrE,8EAA8E;AAC9E,8EAA8E;AAC9E,iEAAiE;AACjE,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,GAAG,IAAI,CAAC;AAEzD;;;eAGe;AACf,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IACpD,MAAM,CAAC,GAAG,OAAO,KAAK,CAAC;IACvB,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAQ,KAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;IACxD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,aAAa;IAeK;IAdrB,MAAM,GAAG,CAAC,CAAC;IACnB,4EAA4E;IAC5E,wEAAwE;IACxE,qEAAqE;IACrE,6EAA6E;IAC7E,uEAAuE;IACvE,6EAA6E;IAC7E,0EAA0E;IAClE,KAAK,GAAa,EAAE,CAAC;IAC7B,wEAAwE;IACxE,yEAAyE;IACzE,qBAAqB;IACb,OAAO,GAAwB,IAAI,CAAC;IAE5C,YAA6B,MAAyC;QAAzC,WAAM,GAAN,MAAM,CAAmC;IAAG,CAAC;IAE1E;kEAC8D;IAC9D,OAAO,CAAC,MAAkB;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED;2EACuE;IACvE,QAAQ,CAAC,IAAsB;QAC7B,KAAK,MAAM,GAAG,IAAI,IAAI;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,6DAA6D;IAC7D,MAAM,CAAC,KAAc;QACnB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;;;oBAQgB;IAChB,WAAW,CAAC,KAAa;QACvB,uEAAuE;QACvE,sEAAsE;QACtE,oBAAoB;QACpB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,8BAA8B,EAAE,CAAC;YAC5E,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;IACvB,CAAC;IAED;;;;cAIU;IACV,YAAY,CAAC,GAAW;QACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;CACF"}
@@ -46,9 +46,25 @@ export interface DocumentSnapshotResponse {
46
46
  op_blob_b64: string;
47
47
  }>;
48
48
  current_seq?: number;
49
+ snapshot_seq?: number;
49
50
  snapshot_version_vector?: string;
51
+ can_edit?: boolean;
50
52
  status?: DocumentWorkStatus;
51
53
  drive?: DocumentDriveSummaryWire;
54
+ calling_app_exports?: boolean;
55
+ thumbnail?: {
56
+ version?: number;
57
+ } | null;
58
+ drive_publish_target?: DrivePublishTargetWire;
59
+ }
60
+ export interface DrivePublishTargetWire {
61
+ drive_type?: unknown;
62
+ drive_name?: unknown;
63
+ container_name?: unknown;
64
+ detail?: unknown;
65
+ source_unreadable?: unknown;
66
+ publishing?: unknown;
67
+ publish_failed?: unknown;
52
68
  }
53
69
  export interface DocumentDriveSummaryWire {
54
70
  drive_type: string;
@@ -64,6 +80,7 @@ export interface DocumentDriveSummaryWire {
64
80
  push_replaces_remote: boolean;
65
81
  mirror_direction: DriveMirrorDirection;
66
82
  publishing?: boolean;
83
+ source_unreadable?: string;
67
84
  }
68
85
  export interface DocumentAtVersionResponse {
69
86
  effective_version: number;
@@ -83,8 +100,16 @@ export interface DocumentAtVersionResponse {
83
100
  current_seq: number;
84
101
  }
85
102
  export interface OpenDocumentWsClient {
86
- subscribe(topic: string, callback: WsTopicCallback): () => void;
103
+ subscribe(topic: string, callback: WsTopicCallback, options?: {
104
+ ownsFrameRetry?: boolean;
105
+ onEnded?: (info: {
106
+ reason: string;
107
+ }) => void;
108
+ }): () => void;
87
109
  send(frame: unknown): void;
110
+ readonly reconnectCount?: number;
111
+ readonly pageHidden?: boolean;
112
+ readonly connected?: boolean;
88
113
  }
89
114
  export interface OpenDocumentFactoryOptions {
90
115
  appId: string;
@@ -106,6 +131,7 @@ export interface OpenDocumentFactoryOptions {
106
131
  };
107
132
  hostedUiProvider?: HostedUiProvider;
108
133
  launchOrganizationId?: () => string | null;
134
+ identity?: () => string | null;
109
135
  reportError?: (err: Error) => void;
110
136
  }
111
137
  export type OpenedDocument = Document & {
@@ -124,4 +150,7 @@ export declare function createOpenDocument(opts: OpenDocumentFactoryOptions): Do
124
150
  export declare function _resetParkCacheForTesting(): void;
125
151
  export declare const PERIODIC_REVERIFY_INTERVAL_MS: number;
126
152
  export declare const MISSED_OP_RESYNC_DELAY_MS = 2000;
153
+ export declare const RESEND_BASE_DELAY_MS = 1500;
154
+ export declare const RESEND_MAX_DELAY_MS = 30000;
155
+ export declare const RESEND_FORCE_CEILING_MS = 60000;
127
156
  //# sourceMappingURL=open-document.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"open-document.d.ts","sourceRoot":"","sources":["../src/open-document.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"open-document.d.ts","sourceRoot":"","sources":["../src/open-document.ts"],"names":[],"mappings":"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"}