@brass-build/client 0.4.0 → 0.5.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 (327) hide show
  1. package/AGENTS.md +142 -41
  2. package/CHANGELOG.md +93 -4
  3. package/README.md +666 -179
  4. package/dist/acting-organization.d.ts.map +1 -1
  5. package/dist/acting-organization.js +6 -11
  6. package/dist/acting-organization.js.map +1 -1
  7. package/dist/api-fetch.d.ts +8 -0
  8. package/dist/api-fetch.d.ts.map +1 -1
  9. package/dist/api-fetch.js +35 -8
  10. package/dist/api-fetch.js.map +1 -1
  11. package/dist/batched-get.d.ts +11 -0
  12. package/dist/batched-get.d.ts.map +1 -0
  13. package/dist/batched-get.js +92 -0
  14. package/dist/batched-get.js.map +1 -0
  15. package/dist/call-service.d.ts +4 -0
  16. package/dist/call-service.d.ts.map +1 -1
  17. package/dist/call-service.js +66 -3
  18. package/dist/call-service.js.map +1 -1
  19. package/dist/client.d.ts +51 -2
  20. package/dist/client.d.ts.map +1 -1
  21. package/dist/client.js +982 -124
  22. package/dist/client.js.map +1 -1
  23. package/dist/document-checkpoints.d.ts +25 -2
  24. package/dist/document-checkpoints.d.ts.map +1 -1
  25. package/dist/document-checkpoints.js +258 -61
  26. package/dist/document-checkpoints.js.map +1 -1
  27. package/dist/document-commands.d.ts.map +1 -1
  28. package/dist/document-commands.js +5 -3
  29. package/dist/document-commands.js.map +1 -1
  30. package/dist/document-contents.d.ts +10 -0
  31. package/dist/document-contents.d.ts.map +1 -1
  32. package/dist/document-contents.js +23 -1
  33. package/dist/document-contents.js.map +1 -1
  34. package/dist/document-set-subscription.d.ts +56 -0
  35. package/dist/document-set-subscription.d.ts.map +1 -0
  36. package/dist/document-set-subscription.js +240 -0
  37. package/dist/document-set-subscription.js.map +1 -0
  38. package/dist/document-signals.d.ts +6 -0
  39. package/dist/document-signals.d.ts.map +1 -1
  40. package/dist/document-signals.js +31 -1
  41. package/dist/document-signals.js.map +1 -1
  42. package/dist/document-streams.d.ts +36 -2
  43. package/dist/document-streams.d.ts.map +1 -1
  44. package/dist/document-streams.js +69 -18
  45. package/dist/document-streams.js.map +1 -1
  46. package/dist/document-thumbnail-capture.d.ts +12 -2
  47. package/dist/document-thumbnail-capture.d.ts.map +1 -1
  48. package/dist/document-thumbnail-capture.js +103 -27
  49. package/dist/document-thumbnail-capture.js.map +1 -1
  50. package/dist/documents-namespace.d.ts +92 -10
  51. package/dist/documents-namespace.d.ts.map +1 -1
  52. package/dist/documents-namespace.js +285 -39
  53. package/dist/documents-namespace.js.map +1 -1
  54. package/dist/documents.d.ts +173 -8
  55. package/dist/documents.d.ts.map +1 -1
  56. package/dist/documents.js +1778 -310
  57. package/dist/documents.js.map +1 -1
  58. package/dist/errors.d.ts +3 -3
  59. package/dist/errors.d.ts.map +1 -1
  60. package/dist/errors.js.map +1 -1
  61. package/dist/fetch-retry.d.ts +1 -0
  62. package/dist/fetch-retry.d.ts.map +1 -1
  63. package/dist/fetch-retry.js +2 -0
  64. package/dist/fetch-retry.js.map +1 -1
  65. package/dist/file-choice.d.ts +2 -0
  66. package/dist/file-choice.d.ts.map +1 -0
  67. package/dist/file-choice.js +27 -0
  68. package/dist/file-choice.js.map +1 -0
  69. package/dist/guest-link.d.ts +18 -1
  70. package/dist/guest-link.d.ts.map +1 -1
  71. package/dist/guest-link.js +329 -1
  72. package/dist/guest-link.js.map +1 -1
  73. package/dist/handle-types.d.ts +67 -5
  74. package/dist/handle-types.d.ts.map +1 -1
  75. package/dist/handles.d.ts +15 -19
  76. package/dist/handles.d.ts.map +1 -1
  77. package/dist/handles.js +231 -76
  78. package/dist/handles.js.map +1 -1
  79. package/dist/hosted-ui.d.ts +61 -0
  80. package/dist/hosted-ui.d.ts.map +1 -1
  81. package/dist/hosted-ui.js +94 -42
  82. package/dist/hosted-ui.js.map +1 -1
  83. package/dist/import-contract.d.ts +74 -0
  84. package/dist/import-contract.d.ts.map +1 -0
  85. package/dist/import-contract.js +163 -0
  86. package/dist/import-contract.js.map +1 -0
  87. package/dist/import-guest.d.ts +9 -0
  88. package/dist/import-guest.d.ts.map +1 -0
  89. package/dist/import-guest.js +155 -0
  90. package/dist/import-guest.js.map +1 -0
  91. package/dist/import-report.d.ts +17 -0
  92. package/dist/import-report.d.ts.map +1 -0
  93. package/dist/import-report.js +7 -0
  94. package/dist/import-report.js.map +1 -0
  95. package/dist/importer-wait.d.ts +2 -0
  96. package/dist/importer-wait.d.ts.map +1 -0
  97. package/dist/importer-wait.js +5 -0
  98. package/dist/importer-wait.js.map +1 -0
  99. package/dist/importer.d.ts +18 -4
  100. package/dist/importer.d.ts.map +1 -1
  101. package/dist/importer.js +322 -105
  102. package/dist/importer.js.map +1 -1
  103. package/dist/in-development.d.ts +2 -0
  104. package/dist/in-development.d.ts.map +1 -0
  105. package/dist/in-development.js +10 -0
  106. package/dist/in-development.js.map +1 -0
  107. package/dist/index.d.ts +16 -8
  108. package/dist/index.d.ts.map +1 -1
  109. package/dist/index.js +24 -8
  110. package/dist/index.js.map +1 -1
  111. package/dist/init-keys.d.ts +1 -1
  112. package/dist/init-keys.d.ts.map +1 -1
  113. package/dist/init-keys.js +6 -1
  114. package/dist/init-keys.js.map +1 -1
  115. package/dist/input-documents.d.ts +67 -0
  116. package/dist/input-documents.d.ts.map +1 -0
  117. package/dist/input-documents.js +693 -0
  118. package/dist/input-documents.js.map +1 -0
  119. package/dist/inputs-status.d.ts +80 -0
  120. package/dist/inputs-status.d.ts.map +1 -0
  121. package/dist/inputs-status.js +460 -0
  122. package/dist/inputs-status.js.map +1 -0
  123. package/dist/inputs.d.ts +2 -0
  124. package/dist/inputs.d.ts.map +1 -0
  125. package/dist/inputs.js +793 -0
  126. package/dist/inputs.js.map +1 -0
  127. package/dist/internal.d.ts +6 -1
  128. package/dist/internal.d.ts.map +1 -1
  129. package/dist/internal.js +4 -1
  130. package/dist/internal.js.map +1 -1
  131. package/dist/join-content.d.ts +33 -0
  132. package/dist/join-content.d.ts.map +1 -0
  133. package/dist/join-content.js +114 -0
  134. package/dist/join-content.js.map +1 -0
  135. package/dist/join-stamp.d.ts +3 -0
  136. package/dist/join-stamp.d.ts.map +1 -0
  137. package/dist/join-stamp.js +12 -0
  138. package/dist/join-stamp.js.map +1 -0
  139. package/dist/manifest-drift.d.ts +9 -0
  140. package/dist/manifest-drift.d.ts.map +1 -0
  141. package/dist/manifest-drift.js +46 -0
  142. package/dist/manifest-drift.js.map +1 -0
  143. package/dist/open-document.d.ts +109 -2
  144. package/dist/open-document.d.ts.map +1 -1
  145. package/dist/open-document.js +1822 -811
  146. package/dist/open-document.js.map +1 -1
  147. package/dist/page-restore.d.ts +12 -0
  148. package/dist/page-restore.d.ts.map +1 -0
  149. package/dist/page-restore.js +23 -0
  150. package/dist/page-restore.js.map +1 -0
  151. package/dist/placement.d.ts +13 -0
  152. package/dist/placement.d.ts.map +1 -0
  153. package/dist/placement.js +34 -0
  154. package/dist/placement.js.map +1 -0
  155. package/dist/presence.d.ts +1 -0
  156. package/dist/presence.d.ts.map +1 -1
  157. package/dist/presence.js +16 -4
  158. package/dist/presence.js.map +1 -1
  159. package/dist/read-only-document.d.ts +87 -0
  160. package/dist/read-only-document.d.ts.map +1 -0
  161. package/dist/read-only-document.js +4 -0
  162. package/dist/read-only-document.js.map +1 -0
  163. package/dist/record-paging.d.ts +63 -6
  164. package/dist/record-paging.d.ts.map +1 -1
  165. package/dist/record-paging.js +122 -29
  166. package/dist/record-paging.js.map +1 -1
  167. package/dist/references.d.ts +40 -0
  168. package/dist/references.d.ts.map +1 -0
  169. package/dist/references.js +135 -0
  170. package/dist/references.js.map +1 -0
  171. package/dist/request-lane.d.ts +5 -0
  172. package/dist/request-lane.d.ts.map +1 -0
  173. package/dist/request-lane.js +48 -0
  174. package/dist/request-lane.js.map +1 -0
  175. package/dist/sealed-arrow.d.ts +170 -0
  176. package/dist/sealed-arrow.d.ts.map +1 -0
  177. package/dist/sealed-arrow.js +769 -0
  178. package/dist/sealed-arrow.js.map +1 -0
  179. package/dist/sealed-cache.d.ts +21 -0
  180. package/dist/sealed-cache.d.ts.map +1 -0
  181. package/dist/sealed-cache.js +247 -0
  182. package/dist/sealed-cache.js.map +1 -0
  183. package/dist/sealed-encode.d.ts +87 -0
  184. package/dist/sealed-encode.d.ts.map +1 -0
  185. package/dist/sealed-encode.js +876 -0
  186. package/dist/sealed-encode.js.map +1 -0
  187. package/dist/sealed-handles.d.ts +45 -0
  188. package/dist/sealed-handles.d.ts.map +1 -0
  189. package/dist/sealed-handles.js +408 -0
  190. package/dist/sealed-handles.js.map +1 -0
  191. package/dist/sealed-store.d.ts +242 -0
  192. package/dist/sealed-store.d.ts.map +1 -0
  193. package/dist/sealed-store.js +1155 -0
  194. package/dist/sealed-store.js.map +1 -0
  195. package/dist/serializer.d.ts +6 -15
  196. package/dist/serializer.d.ts.map +1 -1
  197. package/dist/session-toolbar.d.ts +20 -5
  198. package/dist/session-toolbar.d.ts.map +1 -1
  199. package/dist/session-toolbar.js +419 -67
  200. package/dist/session-toolbar.js.map +1 -1
  201. package/dist/session.d.ts +38 -1
  202. package/dist/session.d.ts.map +1 -1
  203. package/dist/session.js +562 -79
  204. package/dist/session.js.map +1 -1
  205. package/dist/sha256.d.ts +3 -0
  206. package/dist/sha256.d.ts.map +1 -0
  207. package/dist/sha256.js +74 -0
  208. package/dist/sha256.js.map +1 -0
  209. package/dist/stable-handles.d.ts +19 -0
  210. package/dist/stable-handles.d.ts.map +1 -0
  211. package/dist/stable-handles.js +193 -0
  212. package/dist/stable-handles.js.map +1 -0
  213. package/dist/staged-seal.d.ts +2 -0
  214. package/dist/staged-seal.d.ts.map +1 -0
  215. package/dist/staged-seal.js +76 -0
  216. package/dist/staged-seal.js.map +1 -0
  217. package/dist/subscriber-delivery.d.ts +8 -0
  218. package/dist/subscriber-delivery.d.ts.map +1 -0
  219. package/dist/subscriber-delivery.js +31 -0
  220. package/dist/subscriber-delivery.js.map +1 -0
  221. package/dist/tail-op-import.d.ts +10 -0
  222. package/dist/tail-op-import.d.ts.map +1 -0
  223. package/dist/tail-op-import.js +33 -0
  224. package/dist/tail-op-import.js.map +1 -0
  225. package/dist/topic-lifecycle.d.ts +6 -0
  226. package/dist/topic-lifecycle.d.ts.map +1 -1
  227. package/dist/topic-lifecycle.js +32 -2
  228. package/dist/topic-lifecycle.js.map +1 -1
  229. package/dist/trial-replace-dialog.d.ts +10 -0
  230. package/dist/trial-replace-dialog.d.ts.map +1 -0
  231. package/dist/trial-replace-dialog.js +153 -0
  232. package/dist/trial-replace-dialog.js.map +1 -0
  233. package/dist/types.d.ts +8 -1
  234. package/dist/types.d.ts.map +1 -1
  235. package/dist/undo.d.ts +60 -5
  236. package/dist/undo.d.ts.map +1 -1
  237. package/dist/undo.js +344 -75
  238. package/dist/undo.js.map +1 -1
  239. package/dist/version-bar.d.ts +1 -0
  240. package/dist/version-bar.d.ts.map +1 -1
  241. package/dist/version-bar.js +2 -1
  242. package/dist/version-bar.js.map +1 -1
  243. package/dist/version.d.ts +2 -2
  244. package/dist/version.js +1 -1
  245. package/dist/ws-client.d.ts +21 -0
  246. package/dist/ws-client.d.ts.map +1 -1
  247. package/dist/ws-client.js +192 -8
  248. package/dist/ws-client.js.map +1 -1
  249. package/dist/ws-frame-limit.d.ts +1 -0
  250. package/dist/ws-frame-limit.d.ts.map +1 -1
  251. package/dist/ws-frame-limit.js.map +1 -1
  252. package/docs/app-manifest.md +121 -17
  253. package/docs/custom-chrome.md +24 -16
  254. package/docs/hosted-ui-advanced.md +38 -6
  255. package/docs/imported-documents.md +104 -51
  256. package/docs/presence.md +16 -4
  257. package/docs/schemas.md +8 -5
  258. package/docs/services.md +6 -6
  259. package/docs/streams.md +139 -150
  260. package/docs/text-fields.md +26 -19
  261. package/package.json +5 -2
  262. package/src/acting-organization.ts +6 -12
  263. package/src/api-fetch.ts +53 -3
  264. package/src/auth-flow.ts +1 -1
  265. package/src/batched-get.ts +117 -0
  266. package/src/call-service.ts +78 -3
  267. package/src/client.ts +1092 -121
  268. package/src/document-checkpoints.ts +307 -65
  269. package/src/document-commands.ts +5 -5
  270. package/src/document-contents.ts +27 -1
  271. package/src/document-set-subscription.ts +274 -0
  272. package/src/document-signals.ts +47 -5
  273. package/src/document-streams.ts +85 -16
  274. package/src/document-thumbnail-capture.ts +118 -32
  275. package/src/documents-namespace.ts +539 -84
  276. package/src/documents.ts +2017 -348
  277. package/src/errors.ts +17 -6
  278. package/src/fetch-retry.ts +5 -0
  279. package/src/file-choice.ts +26 -0
  280. package/src/guest-link.ts +362 -1
  281. package/src/handle-types.ts +73 -47
  282. package/src/handles.ts +253 -83
  283. package/src/hosted-ui.ts +211 -50
  284. package/src/import-contract.ts +227 -0
  285. package/src/import-guest.ts +193 -0
  286. package/src/import-report.ts +24 -0
  287. package/src/importer-wait.ts +4 -0
  288. package/src/importer.ts +386 -131
  289. package/src/in-development.ts +10 -0
  290. package/src/index.ts +76 -16
  291. package/src/init-keys.ts +6 -1
  292. package/src/input-documents.ts +819 -0
  293. package/src/inputs-status.ts +598 -0
  294. package/src/inputs.ts +1090 -0
  295. package/src/internal.ts +7 -0
  296. package/src/join-content.ts +135 -0
  297. package/src/join-stamp.ts +12 -0
  298. package/src/manifest-drift.ts +54 -0
  299. package/src/open-document.ts +2346 -930
  300. package/src/page-restore.ts +38 -0
  301. package/src/placement.ts +54 -0
  302. package/src/presence.ts +21 -5
  303. package/src/read-only-document.ts +133 -0
  304. package/src/record-paging.ts +147 -25
  305. package/src/references.ts +207 -0
  306. package/src/request-lane.ts +59 -0
  307. package/src/sealed-arrow.ts +843 -0
  308. package/src/sealed-cache.ts +267 -0
  309. package/src/sealed-encode.ts +1015 -0
  310. package/src/sealed-handles.ts +486 -0
  311. package/src/sealed-store.ts +1330 -0
  312. package/src/serializer.ts +8 -20
  313. package/src/session-toolbar.ts +463 -72
  314. package/src/session.ts +740 -99
  315. package/src/sha256.ts +65 -0
  316. package/src/stable-handles.ts +235 -0
  317. package/src/staged-seal.ts +90 -0
  318. package/src/subscriber-delivery.ts +37 -0
  319. package/src/tail-op-import.ts +30 -0
  320. package/src/topic-lifecycle.ts +38 -2
  321. package/src/trial-replace-dialog.ts +163 -0
  322. package/src/types.ts +6 -6
  323. package/src/undo.ts +386 -73
  324. package/src/version-bar.ts +5 -1
  325. package/src/version.ts +1 -1
  326. package/src/ws-client.ts +208 -16
  327. package/src/ws-frame-limit.ts +1 -0
@@ -3,8 +3,69 @@
3
3
  // `Document` runtime class via `Brass.openDocumentById` /
4
4
  // `Brass.createDocument`. Access-granting is hosted-only (the share
5
5
  // dialog), not a programmatic method here.
6
+ import { awaitSeal } from './staged-seal.js';
6
7
  import { createApiFetch } from './api-fetch.js';
8
+ import { DEFAULT_IMPORT_STREAM, encodeImportStreams, encodeStreamBundle, } from './import-contract.js';
7
9
  import { BrassError } from './errors.js';
10
+ import { createRequestLane } from './request-lane.js';
11
+ import { createBatchedGet } from './batched-get.js';
12
+ import { parseProvisionalInputsAnswer } from './inputs.js';
13
+ import { createDocumentList, } from './document-set-subscription.js';
14
+ function listingFromWire(byToken) {
15
+ return ({ refs, schema_type, ...row }) => ({
16
+ ...row,
17
+ ...(schema_type !== undefined ? { family: schema_type } : {}),
18
+ ...(refs !== undefined ? { from: refs.flatMap((token) => byToken.get(token) ?? []) } : {}),
19
+ });
20
+ }
21
+ // A chosen reference as the `refs` query names it, and as a listing row names
22
+ // the reference it came from.
23
+ function refToken(ref) {
24
+ return ref.extent === 'organization'
25
+ ? `organization:${ref.organization_id}`
26
+ : ref.extent === 'project'
27
+ ? `project:${ref.project_id}`
28
+ : `document:${ref.doc_id}`;
29
+ }
30
+ // How long a provisional inputs post waits before trying again, or null to
31
+ // give up. A 409 names an op that has not landed on its line yet, which it
32
+ // does within moments; a 429 asks for fewer requests; a 5xx is a write that
33
+ // applied nothing (other writers held the line), jittered so a commit's posts
34
+ // do not meet again. Anything else is final.
35
+ const PROVISIONAL_NOT_LANDED_DELAYS_MS = [500, 1000, 2000, 4000];
36
+ const PROVISIONAL_RATE_LIMITED_DELAYS_MS = [5000, 15000];
37
+ const PROVISIONAL_UNAVAILABLE_DELAYS_MS = [1000, 3000, 9000];
38
+ export function provisionalRetryDelayMs(status, attempt, random = Math.random) {
39
+ if (status !== undefined && status >= 500 && status <= 504) {
40
+ const base = PROVISIONAL_UNAVAILABLE_DELAYS_MS[attempt];
41
+ return base === undefined ? null : Math.round(base * (0.5 + random()));
42
+ }
43
+ const delays = status === 409
44
+ ? PROVISIONAL_NOT_LANDED_DELAYS_MS
45
+ : status === 429
46
+ ? PROVISIONAL_RATE_LIMITED_DELAYS_MS
47
+ : [];
48
+ return delays[attempt] ?? null;
49
+ }
50
+ let inputsRouteMissingNoted = false;
51
+ // A platform without the provisional inputs route still records a key from
52
+ // the document when it compacts, so the post's absence delays the status
53
+ // rather than losing anything. Said once per page.
54
+ function noteInputsRouteMissing() {
55
+ if (inputsRouteMissingNoted)
56
+ return;
57
+ inputsRouteMissingNoted = true;
58
+ console.info('Brass: this platform does not take provisional input posts yet, so input status updates after the document compacts.');
59
+ }
60
+ /** How many single `documents.get` requests one client has in flight at once. */
61
+ const GET_CONCURRENCY = 6;
62
+ /** How many batched `documents.get` requests (20 ids each) one client has in
63
+ * flight at once. */
64
+ const BATCH_CONCURRENCY = 5;
65
+ /** Attempts a queued `get` makes against a throttled API (about 9 s of
66
+ * backoff). The API's request budget is shared by every caller, so a get
67
+ * queued behind a burst can meet a refusal that clears within seconds. */
68
+ const GET_ATTEMPTS = 6;
8
69
  export function createDocumentsNamespace(opts) {
9
70
  const apiFetch = createApiFetch(opts);
10
71
  // Identifies THIS client to the import claim, so two tabs of one app
@@ -12,10 +73,87 @@ export function createDocumentsNamespace(opts) {
12
73
  // Minted once per namespace, so re-claiming from this client refreshes
13
74
  // its own claim rather than taking a second one.
14
75
  const importClientId = randomToken();
15
- return {
76
+ // An app that shows something about each of several hundred documents
77
+ // calls `get` once per document, usually all at once. Sent one request each,
78
+ // those calls spend the API's request budget for this app's other calls
79
+ // (its opens) and every other caller's, so they are batched, and reads sent
80
+ // on their own queue.
81
+ const getLane = createRequestLane(GET_CONCURRENCY);
82
+ const singleGet = (docId) => getLane.run(docId, () => apiFetch({
83
+ path: `/documents/${encodeURIComponent(docId)}`,
84
+ maxAttempts: GET_ATTEMPTS,
85
+ }));
86
+ const batchedGet = createBatchedGet({
87
+ apiFetch,
88
+ lane: createRequestLane(BATCH_CONCURRENCY),
89
+ single: singleGet,
90
+ maxAttempts: GET_ATTEMPTS,
91
+ });
92
+ const readSeal = (docId) => (sealId) => apiFetch({
93
+ path: `/documents/${encodeURIComponent(docId)}/seals/${encodeURIComponent(sealId)}`,
94
+ });
95
+ const putThumbnail = async (doc, input, version) => {
96
+ const docId = doc.id;
97
+ if (docId === null) {
98
+ throw new BrassError('setThumbnail requires a Document opened from the server', { status: 400 });
99
+ }
100
+ if (version === null) {
101
+ throw new BrassError('setThumbnail: the document has no resolved version yet', { status: 400 });
102
+ }
103
+ const branchId = doc.branchId;
104
+ const { data, contentType } = await encodeThumbnailImage(input);
105
+ const body = { content_type: contentType, data, version };
106
+ if (branchId !== null)
107
+ body.branch_id = branchId;
108
+ if (input.width !== undefined)
109
+ body.width = input.width;
110
+ if (input.height !== undefined)
111
+ body.height = input.height;
112
+ const res = await apiFetch({
113
+ method: 'POST',
114
+ path: `/documents/${encodeURIComponent(docId)}/thumbnail`,
115
+ body,
116
+ });
117
+ return res.thumbnail;
118
+ };
119
+ const namespace = {
16
120
  get(docId) {
17
- return apiFetch({
18
- path: `/documents/${encodeURIComponent(docId)}`,
121
+ return batchedGet(docId).then(({ schema_type, ...record }) => ({
122
+ ...record,
123
+ ...(schema_type !== undefined ? { family: schema_type } : {}),
124
+ }));
125
+ },
126
+ async list(query) {
127
+ const params = new URLSearchParams();
128
+ if (query?.from?.length) {
129
+ params.set('refs', JSON.stringify(query.from.map((ref) => ({
130
+ ref: refToken(ref),
131
+ ...(ref.accept !== undefined ? { accept: ref.accept } : {}),
132
+ }))));
133
+ }
134
+ if (query?.types?.length)
135
+ params.set('type', query.types.join(','));
136
+ if (query?.projectIds?.length)
137
+ params.set('project_id', query.projectIds.join(','));
138
+ if (query?.name)
139
+ params.set('name', query.name);
140
+ if (query?.updatedAfter)
141
+ params.set('updated_after', query.updatedAfter);
142
+ if (query?.updatedBefore)
143
+ params.set('updated_before', query.updatedBefore);
144
+ if (query?.limit !== undefined)
145
+ params.set('limit', String(query.limit));
146
+ const search = params.toString();
147
+ const result = await apiFetch({
148
+ path: search ? `/documents?${search}` : '/documents',
149
+ });
150
+ const byToken = new Map((query?.from ?? []).map((ref) => [refToken(ref), ref]));
151
+ const documents = result.documents.map(listingFromWire(byToken));
152
+ return createDocumentList({
153
+ documents,
154
+ query: query ?? {},
155
+ list: async (q) => (await namespace.list(q)).documents,
156
+ socket: opts.getSocket?.(),
19
157
  });
20
158
  },
21
159
  listBranches(docId) {
@@ -28,6 +166,66 @@ export function createDocumentsNamespace(opts) {
28
166
  path: `/documents/${encodeURIComponent(docId)}/streams?branch=${encodeURIComponent(branchId)}`,
29
167
  });
30
168
  },
169
+ async setRecords(docId, input) {
170
+ // Encoded on the client, by the encoder an importer's result goes
171
+ // through, and staged as one bundle, so the platform seals it exactly
172
+ // as it seals an import. What reaches the network is the stored form's
173
+ // tables rather than a JSON rendering of them, which is several times
174
+ // larger.
175
+ const { encodeSealedRecordsUpload } = await import('./sealed-encode.js');
176
+ const streams = 'streams' in input
177
+ ? await encodeImportStreams({ streams: input.streams })
178
+ : [
179
+ {
180
+ name: DEFAULT_IMPORT_STREAM,
181
+ bytes: await encodeSealedRecordsUpload({
182
+ schemaVersion: input.schemaVersion,
183
+ header: (input.header ?? []).map((entry) => ({
184
+ tag: entry.type,
185
+ body: entry.params,
186
+ })),
187
+ records: input.records.map((record) => [
188
+ record.key,
189
+ record.type,
190
+ record.params,
191
+ ]),
192
+ }),
193
+ },
194
+ ];
195
+ if (streams.length === 0) {
196
+ throw new BrassError('There is nothing to set: every stream is empty', {
197
+ status: 400,
198
+ });
199
+ }
200
+ const bytes = encodeStreamBundle(streams);
201
+ const staged = await apiFetch({
202
+ method: 'POST',
203
+ path: `/documents/${encodeURIComponent(docId)}/records/upload`,
204
+ body: { byte_size: bytes.byteLength },
205
+ });
206
+ // A presigned PUT carries no Brass headers: the signature is the
207
+ // credential, and a stray header breaks it.
208
+ // The view's own buffer rather than the view: a `Uint8Array` over a
209
+ // larger buffer would send the whole of it, and `fetch` takes the
210
+ // buffer type directly.
211
+ const put = await fetch(staged.url, {
212
+ method: 'PUT',
213
+ body: bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength),
214
+ });
215
+ if (!put.ok) {
216
+ throw new BrassError('Uploading the record set failed', {
217
+ status: put.status,
218
+ });
219
+ }
220
+ // The platform answers once the set is queued; the call resolves when
221
+ // it is stored, and rejects with the platform's refusal if it is not.
222
+ const accepted = await apiFetch({
223
+ method: 'POST',
224
+ path: `/documents/${encodeURIComponent(docId)}/records`,
225
+ body: { upload_key: staged.upload_key },
226
+ });
227
+ await awaitSeal(accepted, readSeal(docId));
228
+ },
31
229
  createStream(docId, branchId, name) {
32
230
  return apiFetch({
33
231
  method: 'POST',
@@ -55,45 +253,24 @@ export function createDocumentsNamespace(opts) {
55
253
  });
56
254
  },
57
255
  async setThumbnail(doc, input) {
58
- const docId = doc.id;
59
- if (docId === null) {
60
- throw new BrassError('setThumbnail requires a Document opened from the server', { status: 400 });
61
- }
62
256
  // Capture the depicted version synchronously, before the async
63
257
  // encode, so a concurrent editor's op landing mid-upload cannot
64
258
  // shift the anchor away from the state the app rendered.
65
- const version = doc.currentSeq;
66
- if (version === null) {
67
- throw new BrassError('setThumbnail: the document has no resolved version yet', { status: 400 });
68
- }
69
- const branchId = doc.branchId;
70
- const { data, contentType } = await encodeThumbnailImage(input);
71
- const body = { content_type: contentType, data, version };
72
- if (branchId !== null)
73
- body.branch_id = branchId;
74
- if (input.width !== undefined)
75
- body.width = input.width;
76
- if (input.height !== undefined)
77
- body.height = input.height;
78
- const res = await apiFetch({
79
- method: 'POST',
80
- path: `/documents/${encodeURIComponent(docId)}/thumbnail`,
81
- body,
82
- });
83
- return res.thumbnail;
259
+ return putThumbnail(doc, input, doc.currentSeq);
260
+ },
261
+ async setThumbnailAt(doc, input, version) {
262
+ return putThumbnail(doc, input, version);
84
263
  },
85
- async createCheckpoint(doc) {
264
+ async createCheckpoint(doc, anchor) {
86
265
  const docId = doc.id;
87
266
  if (docId === null) {
88
267
  throw new BrassError('createCheckpoint requires a Document opened from the server', { status: 400 });
89
268
  }
90
- // Capture the depicted version synchronously, so a concurrent
91
- // editor's op landing mid-call cannot shift the anchor away
92
- // from the state the user is on. Mirrors the setThumbnail
93
- // version-capture pattern. This is the anchor the server pins
94
- // the checkpoint to; it is not an app-facing "seal a past
95
- // version" control.
96
- const version = doc.currentSeq;
269
+ // The scheduler passes the seq it read once every local op was acked,
270
+ // so the marker holds the state of the calls it covers. Without one,
271
+ // the depicted version is read here, synchronously, so an op landing
272
+ // mid-call cannot shift the anchor.
273
+ const version = anchor?.version ?? doc.currentSeq;
97
274
  if (version === null) {
98
275
  throw new BrassError('createCheckpoint: the document has no resolved version yet', { status: 400 });
99
276
  }
@@ -135,18 +312,76 @@ export function createDocumentsNamespace(opts) {
135
312
  path: `/documents/${encodeURIComponent(docId)}/source-blob`,
136
313
  });
137
314
  },
315
+ async postProvisionalInputs(docId, { key, body }, opts = {}) {
316
+ const path = `/documents/${encodeURIComponent(docId)}/inputs/${encodeURIComponent(key)}`;
317
+ for (let attempt = 0;; attempt += 1) {
318
+ let status;
319
+ try {
320
+ return parseProvisionalInputsAnswer(await apiFetch({ method: 'POST', path, body }));
321
+ }
322
+ catch (err) {
323
+ status = err instanceof BrassError ? err.status : undefined;
324
+ }
325
+ if (status === 404) {
326
+ noteInputsRouteMissing();
327
+ return null;
328
+ }
329
+ const delay = provisionalRetryDelayMs(status, attempt);
330
+ if (delay === null || opts.superseded?.() === true)
331
+ return null;
332
+ await new Promise((resolve) => setTimeout(resolve, delay));
333
+ if (opts.superseded?.() === true)
334
+ return null;
335
+ }
336
+ },
337
+ readInputKeyStatus(docId, key, query) {
338
+ const search = new URLSearchParams(query).toString();
339
+ const path = `/documents/${encodeURIComponent(docId)}/inputs/${encodeURIComponent(key)}`;
340
+ return orNullOn404(apiFetch({ path: search ? `${path}?${search}` : path }));
341
+ },
138
342
  claimImport(docId) {
139
343
  return apiFetch({
140
344
  method: 'POST',
141
345
  path: `/documents/${encodeURIComponent(docId)}/import-claim`,
142
- body: { client_id: importClientId },
346
+ body: { client_id: importClientId, stages: true },
143
347
  });
144
348
  },
145
- completeImport(docId) {
146
- return apiFetch({
349
+ async stageImport(docId, bundle) {
350
+ const staged = await apiFetch({
351
+ method: 'POST',
352
+ path: `/documents/${encodeURIComponent(docId)}/import-complete/upload`,
353
+ body: { byte_size: bundle.byteLength },
354
+ });
355
+ // A presigned PUT carries no Brass headers: the signature is the
356
+ // credential, and a stray header breaks it.
357
+ const put = await fetch(staged.url, {
358
+ method: 'PUT',
359
+ body: bundle.buffer.slice(bundle.byteOffset, bundle.byteOffset + bundle.byteLength),
360
+ });
361
+ if (!put.ok) {
362
+ throw new BrassError('Uploading the import failed', {
363
+ status: put.status,
364
+ });
365
+ }
366
+ return staged.upload_key;
367
+ },
368
+ async completeImport(docId, report, uploadKey) {
369
+ const accepted = await apiFetch({
147
370
  method: 'POST',
148
371
  path: `/documents/${encodeURIComponent(docId)}/import-complete`,
149
- body: { client_id: importClientId },
372
+ body: {
373
+ client_id: importClientId,
374
+ ...(report !== undefined ? { report } : {}),
375
+ upload_key: uploadKey,
376
+ },
377
+ });
378
+ return awaitSeal(accepted, readSeal(docId));
379
+ },
380
+ failImport(docId, message) {
381
+ return apiFetch({
382
+ method: 'POST',
383
+ path: `/documents/${encodeURIComponent(docId)}/import-failed`,
384
+ body: { client_id: importClientId, message },
150
385
  });
151
386
  },
152
387
  async getThumbnail(docId, options) {
@@ -163,8 +398,9 @@ export function createDocumentsNamespace(opts) {
163
398
  return res.thumbnail;
164
399
  },
165
400
  };
401
+ return namespace;
166
402
  }
167
- function randomToken() {
403
+ export function randomToken() {
168
404
  const g = globalThis;
169
405
  if (g.crypto?.randomUUID)
170
406
  return g.crypto.randomUUID();
@@ -206,4 +442,14 @@ function bytesToBase64(bytes) {
206
442
  }
207
443
  return btoa(binary);
208
444
  }
445
+ async function orNullOn404(request) {
446
+ try {
447
+ return await request;
448
+ }
449
+ catch (err) {
450
+ if (err instanceof BrassError && err.status === 404)
451
+ return null;
452
+ throw err;
453
+ }
454
+ }
209
455
  //# sourceMappingURL=documents-namespace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"documents-namespace.js","sourceRoot":"","sources":["../src/documents-namespace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"documents-namespace.js","sourceRoot":"","sources":["../src/documents-namespace.ts"],"names":[],"mappings":"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"}