@brass-build/client 0.4.1 → 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.
- package/AGENTS.md +124 -45
- package/CHANGELOG.md +80 -4
- package/README.md +666 -179
- package/dist/api-fetch.d.ts +8 -0
- package/dist/api-fetch.d.ts.map +1 -1
- package/dist/api-fetch.js +35 -8
- package/dist/api-fetch.js.map +1 -1
- package/dist/batched-get.d.ts +11 -0
- package/dist/batched-get.d.ts.map +1 -0
- package/dist/batched-get.js +92 -0
- package/dist/batched-get.js.map +1 -0
- package/dist/call-service.d.ts +4 -0
- package/dist/call-service.d.ts.map +1 -1
- package/dist/call-service.js +66 -3
- package/dist/call-service.js.map +1 -1
- package/dist/client.d.ts +48 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +918 -115
- package/dist/client.js.map +1 -1
- package/dist/document-checkpoints.d.ts +25 -2
- package/dist/document-checkpoints.d.ts.map +1 -1
- package/dist/document-checkpoints.js +258 -61
- package/dist/document-checkpoints.js.map +1 -1
- package/dist/document-commands.d.ts.map +1 -1
- package/dist/document-commands.js +5 -3
- package/dist/document-commands.js.map +1 -1
- package/dist/document-contents.d.ts +10 -0
- package/dist/document-contents.d.ts.map +1 -1
- package/dist/document-contents.js +23 -1
- package/dist/document-contents.js.map +1 -1
- package/dist/document-set-subscription.d.ts +56 -0
- package/dist/document-set-subscription.d.ts.map +1 -0
- package/dist/document-set-subscription.js +240 -0
- package/dist/document-set-subscription.js.map +1 -0
- package/dist/document-signals.d.ts +6 -0
- package/dist/document-signals.d.ts.map +1 -1
- package/dist/document-signals.js +31 -1
- package/dist/document-signals.js.map +1 -1
- package/dist/document-streams.d.ts +36 -2
- package/dist/document-streams.d.ts.map +1 -1
- package/dist/document-streams.js +69 -18
- package/dist/document-streams.js.map +1 -1
- package/dist/document-thumbnail-capture.d.ts +12 -2
- package/dist/document-thumbnail-capture.d.ts.map +1 -1
- package/dist/document-thumbnail-capture.js +103 -27
- package/dist/document-thumbnail-capture.js.map +1 -1
- package/dist/documents-namespace.d.ts +92 -10
- package/dist/documents-namespace.d.ts.map +1 -1
- package/dist/documents-namespace.js +285 -39
- package/dist/documents-namespace.js.map +1 -1
- package/dist/documents.d.ts +173 -8
- package/dist/documents.d.ts.map +1 -1
- package/dist/documents.js +1778 -310
- package/dist/documents.js.map +1 -1
- package/dist/errors.d.ts +3 -3
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/fetch-retry.d.ts +1 -0
- package/dist/fetch-retry.d.ts.map +1 -1
- package/dist/fetch-retry.js +2 -0
- package/dist/fetch-retry.js.map +1 -1
- package/dist/file-choice.d.ts +2 -0
- package/dist/file-choice.d.ts.map +1 -0
- package/dist/file-choice.js +27 -0
- package/dist/file-choice.js.map +1 -0
- package/dist/guest-link.d.ts +18 -1
- package/dist/guest-link.d.ts.map +1 -1
- package/dist/guest-link.js +329 -1
- package/dist/guest-link.js.map +1 -1
- package/dist/handle-types.d.ts +67 -5
- package/dist/handle-types.d.ts.map +1 -1
- package/dist/handles.d.ts +15 -19
- package/dist/handles.d.ts.map +1 -1
- package/dist/handles.js +231 -76
- package/dist/handles.js.map +1 -1
- package/dist/hosted-ui.d.ts +61 -0
- package/dist/hosted-ui.d.ts.map +1 -1
- package/dist/hosted-ui.js +94 -42
- package/dist/hosted-ui.js.map +1 -1
- package/dist/import-contract.d.ts +74 -0
- package/dist/import-contract.d.ts.map +1 -0
- package/dist/import-contract.js +163 -0
- package/dist/import-contract.js.map +1 -0
- package/dist/import-guest.d.ts +9 -0
- package/dist/import-guest.d.ts.map +1 -0
- package/dist/import-guest.js +155 -0
- package/dist/import-guest.js.map +1 -0
- package/dist/import-report.d.ts +17 -0
- package/dist/import-report.d.ts.map +1 -0
- package/dist/import-report.js +7 -0
- package/dist/import-report.js.map +1 -0
- package/dist/importer-wait.d.ts +2 -0
- package/dist/importer-wait.d.ts.map +1 -0
- package/dist/importer-wait.js +5 -0
- package/dist/importer-wait.js.map +1 -0
- package/dist/importer.d.ts +18 -4
- package/dist/importer.d.ts.map +1 -1
- package/dist/importer.js +322 -105
- package/dist/importer.js.map +1 -1
- package/dist/in-development.d.ts +2 -0
- package/dist/in-development.d.ts.map +1 -0
- package/dist/in-development.js +10 -0
- package/dist/in-development.js.map +1 -0
- package/dist/index.d.ts +16 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -8
- package/dist/index.js.map +1 -1
- package/dist/init-keys.d.ts +1 -1
- package/dist/init-keys.d.ts.map +1 -1
- package/dist/init-keys.js +6 -1
- package/dist/init-keys.js.map +1 -1
- package/dist/input-documents.d.ts +67 -0
- package/dist/input-documents.d.ts.map +1 -0
- package/dist/input-documents.js +693 -0
- package/dist/input-documents.js.map +1 -0
- package/dist/inputs-status.d.ts +80 -0
- package/dist/inputs-status.d.ts.map +1 -0
- package/dist/inputs-status.js +460 -0
- package/dist/inputs-status.js.map +1 -0
- package/dist/inputs.d.ts +2 -0
- package/dist/inputs.d.ts.map +1 -0
- package/dist/inputs.js +793 -0
- package/dist/inputs.js.map +1 -0
- package/dist/internal.d.ts +6 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +4 -1
- package/dist/internal.js.map +1 -1
- package/dist/join-content.d.ts +33 -0
- package/dist/join-content.d.ts.map +1 -0
- package/dist/join-content.js +114 -0
- package/dist/join-content.js.map +1 -0
- package/dist/join-stamp.d.ts +3 -0
- package/dist/join-stamp.d.ts.map +1 -0
- package/dist/join-stamp.js +12 -0
- package/dist/join-stamp.js.map +1 -0
- package/dist/manifest-drift.d.ts +9 -0
- package/dist/manifest-drift.d.ts.map +1 -0
- package/dist/manifest-drift.js +46 -0
- package/dist/manifest-drift.js.map +1 -0
- package/dist/open-document.d.ts +109 -2
- package/dist/open-document.d.ts.map +1 -1
- package/dist/open-document.js +1822 -811
- package/dist/open-document.js.map +1 -1
- package/dist/page-restore.d.ts +12 -0
- package/dist/page-restore.d.ts.map +1 -0
- package/dist/page-restore.js +23 -0
- package/dist/page-restore.js.map +1 -0
- package/dist/placement.d.ts +13 -0
- package/dist/placement.d.ts.map +1 -0
- package/dist/placement.js +34 -0
- package/dist/placement.js.map +1 -0
- package/dist/presence.d.ts +1 -0
- package/dist/presence.d.ts.map +1 -1
- package/dist/presence.js +16 -4
- package/dist/presence.js.map +1 -1
- package/dist/read-only-document.d.ts +87 -0
- package/dist/read-only-document.d.ts.map +1 -0
- package/dist/read-only-document.js +4 -0
- package/dist/read-only-document.js.map +1 -0
- package/dist/record-paging.d.ts +63 -6
- package/dist/record-paging.d.ts.map +1 -1
- package/dist/record-paging.js +122 -29
- package/dist/record-paging.js.map +1 -1
- package/dist/references.d.ts +40 -0
- package/dist/references.d.ts.map +1 -0
- package/dist/references.js +135 -0
- package/dist/references.js.map +1 -0
- package/dist/request-lane.d.ts +5 -0
- package/dist/request-lane.d.ts.map +1 -0
- package/dist/request-lane.js +48 -0
- package/dist/request-lane.js.map +1 -0
- package/dist/sealed-arrow.d.ts +170 -0
- package/dist/sealed-arrow.d.ts.map +1 -0
- package/dist/sealed-arrow.js +769 -0
- package/dist/sealed-arrow.js.map +1 -0
- package/dist/sealed-cache.d.ts +21 -0
- package/dist/sealed-cache.d.ts.map +1 -0
- package/dist/sealed-cache.js +247 -0
- package/dist/sealed-cache.js.map +1 -0
- package/dist/sealed-encode.d.ts +87 -0
- package/dist/sealed-encode.d.ts.map +1 -0
- package/dist/sealed-encode.js +876 -0
- package/dist/sealed-encode.js.map +1 -0
- package/dist/sealed-handles.d.ts +45 -0
- package/dist/sealed-handles.d.ts.map +1 -0
- package/dist/sealed-handles.js +408 -0
- package/dist/sealed-handles.js.map +1 -0
- package/dist/sealed-store.d.ts +242 -0
- package/dist/sealed-store.d.ts.map +1 -0
- package/dist/sealed-store.js +1155 -0
- package/dist/sealed-store.js.map +1 -0
- package/dist/serializer.d.ts +6 -15
- package/dist/serializer.d.ts.map +1 -1
- package/dist/session-toolbar.d.ts +20 -5
- package/dist/session-toolbar.d.ts.map +1 -1
- package/dist/session-toolbar.js +419 -67
- package/dist/session-toolbar.js.map +1 -1
- package/dist/session.d.ts +38 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +562 -79
- package/dist/session.js.map +1 -1
- package/dist/sha256.d.ts +3 -0
- package/dist/sha256.d.ts.map +1 -0
- package/dist/sha256.js +74 -0
- package/dist/sha256.js.map +1 -0
- package/dist/stable-handles.d.ts +19 -0
- package/dist/stable-handles.d.ts.map +1 -0
- package/dist/stable-handles.js +193 -0
- package/dist/stable-handles.js.map +1 -0
- package/dist/staged-seal.d.ts +2 -0
- package/dist/staged-seal.d.ts.map +1 -0
- package/dist/staged-seal.js +76 -0
- package/dist/staged-seal.js.map +1 -0
- package/dist/subscriber-delivery.d.ts +8 -0
- package/dist/subscriber-delivery.d.ts.map +1 -0
- package/dist/subscriber-delivery.js +31 -0
- package/dist/subscriber-delivery.js.map +1 -0
- package/dist/tail-op-import.d.ts +10 -0
- package/dist/tail-op-import.d.ts.map +1 -0
- package/dist/tail-op-import.js +33 -0
- package/dist/tail-op-import.js.map +1 -0
- package/dist/topic-lifecycle.d.ts +6 -0
- package/dist/topic-lifecycle.d.ts.map +1 -1
- package/dist/topic-lifecycle.js +32 -2
- package/dist/topic-lifecycle.js.map +1 -1
- package/dist/trial-replace-dialog.d.ts +10 -0
- package/dist/trial-replace-dialog.d.ts.map +1 -0
- package/dist/trial-replace-dialog.js +153 -0
- package/dist/trial-replace-dialog.js.map +1 -0
- package/dist/types.d.ts +8 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/undo.d.ts +60 -5
- package/dist/undo.d.ts.map +1 -1
- package/dist/undo.js +344 -75
- package/dist/undo.js.map +1 -1
- package/dist/version-bar.d.ts +1 -0
- package/dist/version-bar.d.ts.map +1 -1
- package/dist/version-bar.js +2 -1
- package/dist/version-bar.js.map +1 -1
- package/dist/version.d.ts +2 -2
- package/dist/version.js +1 -1
- package/dist/ws-client.d.ts +21 -0
- package/dist/ws-client.d.ts.map +1 -1
- package/dist/ws-client.js +192 -8
- package/dist/ws-client.js.map +1 -1
- package/dist/ws-frame-limit.d.ts +1 -0
- package/dist/ws-frame-limit.d.ts.map +1 -1
- package/dist/ws-frame-limit.js.map +1 -1
- package/docs/app-manifest.md +121 -17
- package/docs/custom-chrome.md +24 -16
- package/docs/hosted-ui-advanced.md +38 -6
- package/docs/imported-documents.md +104 -51
- package/docs/presence.md +16 -4
- package/docs/schemas.md +8 -5
- package/docs/services.md +6 -6
- package/docs/streams.md +139 -150
- package/docs/text-fields.md +26 -19
- package/package.json +5 -2
- package/src/api-fetch.ts +53 -3
- package/src/auth-flow.ts +1 -1
- package/src/batched-get.ts +117 -0
- package/src/call-service.ts +78 -3
- package/src/client.ts +1022 -112
- package/src/document-checkpoints.ts +307 -65
- package/src/document-commands.ts +5 -5
- package/src/document-contents.ts +27 -1
- package/src/document-set-subscription.ts +274 -0
- package/src/document-signals.ts +47 -5
- package/src/document-streams.ts +85 -16
- package/src/document-thumbnail-capture.ts +118 -32
- package/src/documents-namespace.ts +539 -84
- package/src/documents.ts +2017 -348
- package/src/errors.ts +17 -6
- package/src/fetch-retry.ts +5 -0
- package/src/file-choice.ts +26 -0
- package/src/guest-link.ts +362 -1
- package/src/handle-types.ts +73 -47
- package/src/handles.ts +253 -83
- package/src/hosted-ui.ts +211 -50
- package/src/import-contract.ts +227 -0
- package/src/import-guest.ts +193 -0
- package/src/import-report.ts +24 -0
- package/src/importer-wait.ts +4 -0
- package/src/importer.ts +386 -131
- package/src/in-development.ts +10 -0
- package/src/index.ts +76 -16
- package/src/init-keys.ts +6 -1
- package/src/input-documents.ts +819 -0
- package/src/inputs-status.ts +598 -0
- package/src/inputs.ts +1090 -0
- package/src/internal.ts +7 -0
- package/src/join-content.ts +135 -0
- package/src/join-stamp.ts +12 -0
- package/src/manifest-drift.ts +54 -0
- package/src/open-document.ts +2346 -930
- package/src/page-restore.ts +38 -0
- package/src/placement.ts +54 -0
- package/src/presence.ts +21 -5
- package/src/read-only-document.ts +133 -0
- package/src/record-paging.ts +147 -25
- package/src/references.ts +207 -0
- package/src/request-lane.ts +59 -0
- package/src/sealed-arrow.ts +843 -0
- package/src/sealed-cache.ts +267 -0
- package/src/sealed-encode.ts +1015 -0
- package/src/sealed-handles.ts +486 -0
- package/src/sealed-store.ts +1330 -0
- package/src/serializer.ts +8 -20
- package/src/session-toolbar.ts +463 -72
- package/src/session.ts +740 -99
- package/src/sha256.ts +65 -0
- package/src/stable-handles.ts +235 -0
- package/src/staged-seal.ts +90 -0
- package/src/subscriber-delivery.ts +37 -0
- package/src/tail-op-import.ts +30 -0
- package/src/topic-lifecycle.ts +38 -2
- package/src/trial-replace-dialog.ts +163 -0
- package/src/types.ts +6 -6
- package/src/undo.ts +386 -73
- package/src/version-bar.ts +5 -1
- package/src/version.ts +1 -1
- package/src/ws-client.ts +208 -16
- package/src/ws-frame-limit.ts +1 -0
package/dist/api-fetch.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export interface ApiRequest {
|
|
|
3
3
|
method?: 'GET' | 'POST' | 'PATCH' | 'DELETE';
|
|
4
4
|
path: string;
|
|
5
5
|
body?: unknown;
|
|
6
|
+
maxAttempts?: number;
|
|
7
|
+
idempotent?: boolean;
|
|
6
8
|
}
|
|
7
9
|
interface ApiFetchOptions {
|
|
8
10
|
apiBaseUrl: string;
|
|
@@ -11,6 +13,12 @@ interface ApiFetchOptions {
|
|
|
11
13
|
}
|
|
12
14
|
export type ApiFetch = <T>(req: ApiRequest) => Promise<T>;
|
|
13
15
|
export declare function createApiFetch(opts: ApiFetchOptions): ApiFetch;
|
|
16
|
+
export interface ClaimHolder {
|
|
17
|
+
refreshedMsAgo: number;
|
|
18
|
+
expiresInMs: number;
|
|
19
|
+
sealing: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function claimHolderOf(err: unknown): ClaimHolder | null;
|
|
14
22
|
export declare function brassErrorFromBody(status: number, parsed: unknown): BrassError;
|
|
15
23
|
export {};
|
|
16
24
|
//# sourceMappingURL=api-fetch.d.ts.map
|
package/dist/api-fetch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-fetch.d.ts","sourceRoot":"","sources":["../src/api-fetch.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,WAAW,UAAU;IAEzB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC7C,IAAI,EAAE,MAAM,CAAC;IAEb,IAAI,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"api-fetch.d.ts","sourceRoot":"","sources":["../src/api-fetch.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,WAAW,UAAU;IAEzB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC7C,IAAI,EAAE,MAAM,CAAC;IAEb,IAAI,CAAC,EAAE,OAAO,CAAC;IAGf,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,eAAe;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAChD;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAE1D,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,QAAQ,CA+C9D;AAiBD,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAID,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAE9D;AAYD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,UAAU,CAK9E"}
|
package/dist/api-fetch.js
CHANGED
|
@@ -27,8 +27,8 @@ export function createApiFetch(opts) {
|
|
|
27
27
|
// (e.g. a 503 while the API scales into a concurrent read burst)
|
|
28
28
|
// rather than surfacing it as a hard failure; a write is never
|
|
29
29
|
// replayed here.
|
|
30
|
-
const response = method === 'GET'
|
|
31
|
-
? await fetchWithRetry(() => fetch(url, init))
|
|
30
|
+
const response = method === 'GET' || req.idempotent === true
|
|
31
|
+
? await fetchWithRetry(() => fetch(url, init), req.maxAttempts !== undefined ? { maxAttempts: req.maxAttempts } : {})
|
|
32
32
|
: await fetch(url, init);
|
|
33
33
|
if (response.status === 204)
|
|
34
34
|
return undefined;
|
|
@@ -54,12 +54,30 @@ function isErrorBody(body) {
|
|
|
54
54
|
body !== null &&
|
|
55
55
|
typeof body.error === 'string');
|
|
56
56
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
57
|
+
const claimHolders = new WeakMap();
|
|
58
|
+
export function claimHolderOf(err) {
|
|
59
|
+
return err instanceof BrassError ? (claimHolders.get(err) ?? null) : null;
|
|
60
|
+
}
|
|
61
|
+
function readClaimHolder(body) {
|
|
62
|
+
if (typeof body !== 'object' || body === null)
|
|
63
|
+
return null;
|
|
64
|
+
const b = body;
|
|
65
|
+
const ago = b['refreshed_ms_ago'];
|
|
66
|
+
const lapses = b['expires_in_ms'];
|
|
67
|
+
if (b['pending'] !== true || typeof ago !== 'number' || !Number.isFinite(ago))
|
|
68
|
+
return null;
|
|
69
|
+
if (typeof lapses !== 'number' || !Number.isFinite(lapses))
|
|
70
|
+
return null;
|
|
71
|
+
return { refreshedMsAgo: ago, expiresInMs: lapses, sealing: b['sealing'] === true };
|
|
72
|
+
}
|
|
62
73
|
export function brassErrorFromBody(status, parsed) {
|
|
74
|
+
const err = brassErrorOf(status, parsed);
|
|
75
|
+
const holder = status === 409 ? readClaimHolder(parsed) : null;
|
|
76
|
+
if (holder !== null)
|
|
77
|
+
claimHolders.set(err, holder);
|
|
78
|
+
return err;
|
|
79
|
+
}
|
|
80
|
+
function brassErrorOf(status, parsed) {
|
|
63
81
|
const message = isErrorBody(parsed) ? parsed.error : 'Request failed';
|
|
64
82
|
if (isNotInstalledBody(parsed)) {
|
|
65
83
|
return new BrassError(message, {
|
|
@@ -76,7 +94,16 @@ export function brassErrorFromBody(status, parsed) {
|
|
|
76
94
|
...(typeof title === 'string' ? { title } : {}),
|
|
77
95
|
});
|
|
78
96
|
}
|
|
79
|
-
|
|
97
|
+
const code = serverCode(parsed);
|
|
98
|
+
return new BrassError(message, { status, ...(code !== null ? { code } : {}) });
|
|
99
|
+
}
|
|
100
|
+
// The code a refusal body carries, when it is one: a short snake_case token.
|
|
101
|
+
const SERVER_CODE = /^[a-z][a-z0-9_]{0,63}$/;
|
|
102
|
+
function serverCode(value) {
|
|
103
|
+
if (typeof value !== 'object' || value === null)
|
|
104
|
+
return null;
|
|
105
|
+
const code = value.code;
|
|
106
|
+
return typeof code === 'string' && SERVER_CODE.test(code) ? code : null;
|
|
80
107
|
}
|
|
81
108
|
// The platform refuses to join a document this app's declared schema cannot
|
|
82
109
|
// read, so a bookmark or a reload does not silently open one. The message is
|
package/dist/api-fetch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-fetch.js","sourceRoot":"","sources":["../src/api-fetch.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,sEAAsE;AACtE,uEAAuE;AACvE,2DAA2D;AAE3D,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"api-fetch.js","sourceRoot":"","sources":["../src/api-fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ApiFetch } from './api-fetch.js';
|
|
2
|
+
import type { RequestLane } from './request-lane.js';
|
|
3
|
+
export declare const BATCH_SIZE = 20;
|
|
4
|
+
export interface BatchedGetOptions {
|
|
5
|
+
apiFetch: ApiFetch;
|
|
6
|
+
lane: RequestLane;
|
|
7
|
+
single: (docId: string) => Promise<unknown>;
|
|
8
|
+
maxAttempts: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function createBatchedGet<T>(opts: BatchedGetOptions): (docId: string) => Promise<T>;
|
|
11
|
+
//# sourceMappingURL=batched-get.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batched-get.d.ts","sourceRoot":"","sources":["../src/batched-get.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAO,MAAM,UAAU,KAAK,CAAC;AAc7B,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,WAAW,CAAC;IAElB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CA4E1F"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// Answers `documents.get` calls made in the same turn with one request per
|
|
2
|
+
// `BATCH_SIZE` ids. An app reading the record of each of several hundred
|
|
3
|
+
// documents calls `get` for each, usually all at once, and one request per
|
|
4
|
+
// document spends the API's request budget for the app's other calls and
|
|
5
|
+
// every other caller's. The server reads a batch's documents on one
|
|
6
|
+
// invocation, so a smaller batch spreads that work across invocations.
|
|
7
|
+
//
|
|
8
|
+
// A lone call is sent as its own read. Each id in a batch resolves or rejects
|
|
9
|
+
// exactly as its own read would, from the status and body the server answered
|
|
10
|
+
// for it. A platform that does not serve the batch route answers 404 for the
|
|
11
|
+
// whole request, and its ids are then read one at a time.
|
|
12
|
+
import { brassErrorFromBody } from './api-fetch.js';
|
|
13
|
+
import { BrassError } from './errors.js';
|
|
14
|
+
export const BATCH_SIZE = 20;
|
|
15
|
+
export function createBatchedGet(opts) {
|
|
16
|
+
let waiting = new Map();
|
|
17
|
+
let scheduled = false;
|
|
18
|
+
const settle = (entry, run) => {
|
|
19
|
+
run().then((value) => entry.resolve(value), entry.reject);
|
|
20
|
+
};
|
|
21
|
+
const sendBatch = async (ids, entries) => {
|
|
22
|
+
let results;
|
|
23
|
+
try {
|
|
24
|
+
const answer = await opts.lane.run(`batch:${ids.join(',')}`, () => opts.apiFetch({
|
|
25
|
+
method: 'POST',
|
|
26
|
+
path: '/documents/details',
|
|
27
|
+
body: { doc_ids: ids },
|
|
28
|
+
idempotent: true,
|
|
29
|
+
maxAttempts: opts.maxAttempts,
|
|
30
|
+
}));
|
|
31
|
+
results = answer.results;
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
if (err instanceof BrassError && err.status === 404) {
|
|
35
|
+
for (const id of ids)
|
|
36
|
+
settle(entries.get(id), () => opts.single(id));
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
for (const id of ids)
|
|
40
|
+
entries.get(id).reject(err);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const byId = new Map(results.map((r) => [r.doc_id, r]));
|
|
44
|
+
for (const id of ids) {
|
|
45
|
+
const entry = entries.get(id);
|
|
46
|
+
const result = byId.get(id);
|
|
47
|
+
if (result === undefined) {
|
|
48
|
+
entry.reject(new BrassError('Request failed', { status: 500 }));
|
|
49
|
+
}
|
|
50
|
+
else if (result.status >= 200 && result.status < 300) {
|
|
51
|
+
entry.resolve(result.body);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
entry.reject(brassErrorFromBody(result.status, result.body));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const flush = () => {
|
|
59
|
+
scheduled = false;
|
|
60
|
+
const entries = waiting;
|
|
61
|
+
waiting = new Map();
|
|
62
|
+
const ids = [...entries.keys()];
|
|
63
|
+
if (ids.length === 1) {
|
|
64
|
+
settle(entries.get(ids[0]), () => opts.single(ids[0]));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
for (let i = 0; i < ids.length; i += BATCH_SIZE) {
|
|
68
|
+
void sendBatch(ids.slice(i, i + BATCH_SIZE), entries);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
return (docId) => {
|
|
72
|
+
const pending = waiting.get(docId);
|
|
73
|
+
if (pending !== undefined)
|
|
74
|
+
return pending.promise;
|
|
75
|
+
let resolve;
|
|
76
|
+
let reject;
|
|
77
|
+
const promise = new Promise((res, rej) => {
|
|
78
|
+
resolve = res;
|
|
79
|
+
reject = rej;
|
|
80
|
+
});
|
|
81
|
+
waiting.set(docId, { promise, resolve, reject });
|
|
82
|
+
if (!scheduled) {
|
|
83
|
+
scheduled = true;
|
|
84
|
+
// A task rather than a microtask, so a call made from a promise callback
|
|
85
|
+
// before the next task (a handler per input, a loop after an await)
|
|
86
|
+
// joins the same batch.
|
|
87
|
+
setTimeout(flush, 0);
|
|
88
|
+
}
|
|
89
|
+
return promise;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=batched-get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batched-get.js","sourceRoot":"","sources":["../src/batched-get.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,yEAAyE;AACzE,2EAA2E;AAC3E,yEAAyE;AACzE,oEAAoE;AACpE,uEAAuE;AACvE,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,6EAA6E;AAC7E,0DAA0D;AAG1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AAuB7B,MAAM,UAAU,gBAAgB,CAAI,IAAuB;IACzD,IAAI,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC5C,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,MAAM,GAAG,CAAC,KAAiB,EAAE,GAA2B,EAAQ,EAAE;QACtE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,EAAE,GAAa,EAAE,OAAgC,EAAiB,EAAE;QACzF,IAAI,OAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAChE,IAAI,CAAC,QAAQ,CAA6B;gBACxC,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;gBACtB,UAAU,EAAE,IAAI;gBAChB,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B,CAAC,CACH,CAAC;YACF,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,UAAU,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACpD,KAAK,MAAM,EAAE,IAAI,GAAG;oBAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtE,OAAO;YACT,CAAC;YACD,KAAK,MAAM,EAAE,IAAI,GAAG;gBAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,KAAK,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAClE,CAAC;iBAAM,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBACvD,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAS,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,SAAS,GAAG,KAAK,CAAC;QAClB,MAAM,OAAO,GAAG,OAAO,CAAC;QACxB,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAChC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,CAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;YAChD,KAAK,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CAAC,KAAa,EAAc,EAAE;QACnC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC;QAClD,IAAI,OAA4B,CAAC;QACjC,IAAI,MAA+B,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC1C,OAAO,GAAG,GAAG,CAAC;YACd,MAAM,GAAG,GAAG,CAAC;QACf,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,GAAG,IAAI,CAAC;YACjB,yEAAyE;YACzE,oEAAoE;YACpE,wBAAwB;YACxB,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/call-service.d.ts
CHANGED
|
@@ -42,6 +42,10 @@ export interface CallServiceDeps {
|
|
|
42
42
|
*/
|
|
43
43
|
offerServiceCredential: (organizationId: string, host: string) => Promise<boolean>;
|
|
44
44
|
fetchImpl?: typeof fetch;
|
|
45
|
+
/** Injected for tests; defaults to the real timer. */
|
|
46
|
+
sleep?: (ms: number) => Promise<void>;
|
|
47
|
+
/** Injected for tests; defaults to `Date.now`. */
|
|
48
|
+
now?: () => number;
|
|
45
49
|
}
|
|
46
50
|
export declare function callService(deps: CallServiceDeps, host: string, path: string, options?: CallServiceOptions): Promise<Response>;
|
|
47
51
|
export interface AppServiceState {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-service.d.ts","sourceRoot":"","sources":["../src/call-service.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,eAAe,CAAC;AAEzE,MAAM,WAAW,kBAAkB;IACjC,4BAA4B;IAC5B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB;;;;;;;;;OASG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAaD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAE5E;AAeD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,CAKR;AAYD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAwBxD;AAgBD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,eAAe,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC9C;;;;OAIG;IACH,mBAAmB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC9D,qEAAqE;IACrE,mBAAmB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD;;;OAGG;IACH,sBAAsB,EAAE,CACtB,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"call-service.d.ts","sourceRoot":"","sources":["../src/call-service.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,eAAe,CAAC;AAEzE,MAAM,WAAW,kBAAkB;IACjC,4BAA4B;IAC5B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB;;;;;;;;;OASG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAaD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAE5E;AAeD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,CAKR;AAYD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAwBxD;AAgBD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,eAAe,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC9C;;;;OAIG;IACH,mBAAmB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC9D,qEAAqE;IACrE,mBAAmB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD;;;OAGG;IACH,sBAAsB,EAAE,CACtB,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,sDAAsD;IACtD,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,QAAQ,CAAC,CAkDnB;AAiID,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAMD,wBAAsB,eAAe,CACnC,IAAI,EAAE,IAAI,CACR,eAAe,EACf,YAAY,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,WAAW,CAClE,EACD,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,eAAe,EAAE,CAAC,CAkD5B"}
|
package/dist/call-service.js
CHANGED
|
@@ -124,7 +124,7 @@ export async function callService(deps, host, path, options = {}) {
|
|
|
124
124
|
...(options.body !== undefined ? { body: options.body } : {}),
|
|
125
125
|
});
|
|
126
126
|
};
|
|
127
|
-
const response = await send
|
|
127
|
+
const response = await sendThroughFrontDoor(send, deps);
|
|
128
128
|
// The service's own status is the answer, so nothing here throws on one.
|
|
129
129
|
// The exceptions are the refusals that are a question for the person rather
|
|
130
130
|
// than a result for the app: offer the hosted surface that asks it, and send
|
|
@@ -136,7 +136,7 @@ export async function callService(deps, host, path, options = {}) {
|
|
|
136
136
|
const ask = response.headers.get(BRASS_ASK_HEADER);
|
|
137
137
|
if (ask === 'credential') {
|
|
138
138
|
return (await deps.offerServiceCredential(organizationId, host))
|
|
139
|
-
? send
|
|
139
|
+
? sendThroughFrontDoor(send, deps)
|
|
140
140
|
: response;
|
|
141
141
|
}
|
|
142
142
|
if (ask !== 'install')
|
|
@@ -144,7 +144,70 @@ export async function callService(deps, host, path, options = {}) {
|
|
|
144
144
|
const denial = await notInstalledDenial(response);
|
|
145
145
|
if (!denial)
|
|
146
146
|
return response;
|
|
147
|
-
return (await deps.offerInstallConsent(denial))
|
|
147
|
+
return (await deps.offerInstallConsent(denial))
|
|
148
|
+
? sendThroughFrontDoor(send, deps)
|
|
149
|
+
: response;
|
|
150
|
+
}
|
|
151
|
+
// Every answer from Brass carries this header, and the broker drops any header
|
|
152
|
+
// under that prefix a service sends. Without it, in the gateway's own body, the
|
|
153
|
+
// answer came from the gateway in front of Brass: a `429` from its rate limit,
|
|
154
|
+
// or a quick `503` from a call it could not start because the brokered call's
|
|
155
|
+
// concurrency was all in use. Nothing behind the gateway ran for either, so
|
|
156
|
+
// sending it again is safe whatever the method. The gateway's `503` for a call
|
|
157
|
+
// that ran past its 30s limit has the same body, and that call may have reached
|
|
158
|
+
// the service, so a `503` counts only when it came back well inside that limit.
|
|
159
|
+
const ANSWERED_BY_BRASS_HEADER = 'x-brass-answered';
|
|
160
|
+
// A quick 503 lasts until a call already running ends, which is within the
|
|
161
|
+
// gateway's 30s limit, so the resend lasts that long. The backoff stays short
|
|
162
|
+
// so the call starts soon after room frees.
|
|
163
|
+
const FRONT_DOOR_WINDOW_MS = 30_000;
|
|
164
|
+
const FRONT_DOOR_BASE_DELAY_MS = 300;
|
|
165
|
+
const FRONT_DOOR_MAX_DELAY_MS = 2_000;
|
|
166
|
+
const FRONT_DOOR_MESSAGES = {
|
|
167
|
+
429: 'Too Many Requests',
|
|
168
|
+
503: 'Service Unavailable',
|
|
169
|
+
};
|
|
170
|
+
const FRONT_DOOR_503_WITHIN_MS = 10_000;
|
|
171
|
+
async function shedByFrontDoor(response, elapsedMs) {
|
|
172
|
+
const message = FRONT_DOOR_MESSAGES[response.status];
|
|
173
|
+
if (message === undefined || response.headers.has(ANSWERED_BY_BRASS_HEADER))
|
|
174
|
+
return false;
|
|
175
|
+
if (response.status === 503 && elapsedMs >= FRONT_DOOR_503_WITHIN_MS)
|
|
176
|
+
return false;
|
|
177
|
+
try {
|
|
178
|
+
const body = (await response.clone().json());
|
|
179
|
+
return (typeof body === 'object' &&
|
|
180
|
+
body !== null &&
|
|
181
|
+
Object.keys(body).length === 1 &&
|
|
182
|
+
body.message === message);
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
async function sendThroughFrontDoor(send, deps) {
|
|
189
|
+
const now = deps.now ?? Date.now;
|
|
190
|
+
const sleep = deps.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
191
|
+
const firstSentAt = now();
|
|
192
|
+
let response;
|
|
193
|
+
for (let attempt = 0;; attempt += 1) {
|
|
194
|
+
const startedAt = now();
|
|
195
|
+
response = await send();
|
|
196
|
+
if (!(await shedByFrontDoor(response, now() - startedAt)))
|
|
197
|
+
return response;
|
|
198
|
+
const delay = Math.min(FRONT_DOOR_BASE_DELAY_MS * 2 ** attempt, FRONT_DOOR_MAX_DELAY_MS) +
|
|
199
|
+
Math.random() * FRONT_DOOR_BASE_DELAY_MS;
|
|
200
|
+
if (now() + delay - firstSentAt > FRONT_DOOR_WINDOW_MS)
|
|
201
|
+
break;
|
|
202
|
+
await sleep(delay);
|
|
203
|
+
}
|
|
204
|
+
// Still shed after the window: answered with the code of Brass's own
|
|
205
|
+
// limit, so an app branches on one `code` for both, and with an `error`
|
|
206
|
+
// naming the gateway's status, so a report says which one turned it away.
|
|
207
|
+
return new Response(JSON.stringify({
|
|
208
|
+
error: `The gateway in front of Brass turned the call away (${response.status})`,
|
|
209
|
+
code: 'rate_limited',
|
|
210
|
+
}), { status: 429, headers: { 'content-type': 'application/json' } });
|
|
148
211
|
}
|
|
149
212
|
// No organization resolved, for a caller that did not ask for the chooser.
|
|
150
213
|
//
|
package/dist/call-service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-service.js","sourceRoot":"","sources":["../src/call-service.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,8DAA8D;AAE9D,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA6BzC,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,2EAA2E;AAC3E,6EAA6E;AAC7E,2EAA2E;AAC3E,4EAA4E;AAC5E,+EAA+E;AAC/E,EAAE;AACF,6EAA6E;AAC7E,6DAA6D;AAC7D,MAAM,UAAU,oBAAoB,CAAC,OAA+B;IAClE,OAAO,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,4EAA4E;AAC5E,8EAA8E;AAC9E,wEAAwE;AACxE,2DAA2D;AAC3D,EAAE;AACF,yEAAyE;AACzE,8EAA8E;AAC9E,4EAA4E;AAC5E,iCAAiC;AACjC,2EAA2E;AAC3E,6EAA6E;AAC7E,0EAA0E;AAC1E,qDAAqD;AACrD,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,UAAkB,EAClB,cAAsB,EACtB,IAAY,EACZ,IAAY;IAEZ,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,GAAG,IAAI,kBAAkB,kBAAkB,CAAC,cAAc,CAAC,SAAS,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC5G,OAAO,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;AACpF,CAAC;AAED,4EAA4E;AAC5E,uEAAuE;AACvE,2EAA2E;AAC3E,yEAAyE;AACzE,iEAAiE;AACjE,6EAA6E;AAC7E,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,gEAAgE;AAChE,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrC,0EAA0E;IAC1E,uEAAuE;IACvE,0EAA0E;IAC1E,8CAA8C;IAC9C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,0EAA0E;IAC1E,wEAAwE;IACxE,wCAAwC;IACxC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,2EAA2E;IAC3E,IAAI,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5D,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;IACvD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4EAA4E;AAC5E,yEAAyE;AACzE,4EAA4E;AAC5E,iEAAiE;AACjE,SAAS,kBAAkB;IACzB,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;QACb,KAAK,EAAE,8CAA8C;QACrD,IAAI,EAAE,cAAc;KACrB,CAAC,EACF,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CACjE,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"call-service.js","sourceRoot":"","sources":["../src/call-service.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type CreateDocumentOptions, type OpenDocumentByIdOptions, type OpenedDocument } from './open-document.js';
|
|
2
|
-
import { type DocumentHistoryResult, type SelectDocumentResult } from './hosted-ui.js';
|
|
2
|
+
import { type DocumentHistoryResult, type ChooseInputOptions, type ChooseInputsOptions, type DocumentFamilies, type InputReference, type SelectDocumentResult } from './hosted-ui.js';
|
|
3
3
|
import type { DocumentSerializer } from './serializer.js';
|
|
4
4
|
import { type DocumentImporter } from './importer.js';
|
|
5
5
|
import { type AppServiceState, type CallServiceOptions } from './call-service.js';
|
|
@@ -17,13 +17,14 @@ export interface ResolvedBaseUrls {
|
|
|
17
17
|
export declare function resolveBaseUrls(options: BrassInitOptions): ResolvedBaseUrls;
|
|
18
18
|
export declare class BrassClient {
|
|
19
19
|
private appId;
|
|
20
|
+
private initFailure;
|
|
20
21
|
private authBaseUrl;
|
|
21
22
|
private apiBaseUrl;
|
|
22
23
|
private apiBaseUrlConfigured;
|
|
23
24
|
private wsBaseUrl;
|
|
24
25
|
private _dashboardBaseUrl;
|
|
25
26
|
private hostedUiTheme;
|
|
26
|
-
private
|
|
27
|
+
private openReadOnly;
|
|
27
28
|
private syncDocToUrl;
|
|
28
29
|
private docUrlParam;
|
|
29
30
|
private branchUrlParam;
|
|
@@ -33,6 +34,7 @@ export declare class BrassClient {
|
|
|
33
34
|
private user;
|
|
34
35
|
private bootstrapped;
|
|
35
36
|
private listeners;
|
|
37
|
+
private readonly sessionUserListeners;
|
|
36
38
|
private readonly errorListeners;
|
|
37
39
|
private inflightRefresh;
|
|
38
40
|
private authEpoch;
|
|
@@ -44,7 +46,9 @@ export declare class BrassClient {
|
|
|
44
46
|
private hostedUiLauncher;
|
|
45
47
|
private documentFactory;
|
|
46
48
|
private guestLinkTokenValue;
|
|
49
|
+
private watchingPageRestore;
|
|
47
50
|
private launchOrganizationId;
|
|
51
|
+
private readonly installConsentByOrganization;
|
|
48
52
|
private actingOrganization;
|
|
49
53
|
private documentWatchForActingOrganization;
|
|
50
54
|
private chromeDocumentOrganization;
|
|
@@ -55,9 +59,16 @@ export declare class BrassClient {
|
|
|
55
59
|
private documentOrganizationIds;
|
|
56
60
|
private serializer;
|
|
57
61
|
private exportGuest;
|
|
62
|
+
private importGuest;
|
|
63
|
+
private importer;
|
|
64
|
+
private readonly importerWaiters;
|
|
65
|
+
private importerWaitExpired;
|
|
58
66
|
private openDocuments;
|
|
59
67
|
private readonly importRunner;
|
|
68
|
+
private guestImports;
|
|
69
|
+
private importsInto;
|
|
60
70
|
private docWsClient;
|
|
71
|
+
private readonly linkWsClients;
|
|
61
72
|
init(appId?: string, options?: BrassInitOptions): Promise<void>;
|
|
62
73
|
signIn(): void;
|
|
63
74
|
signOut(): void;
|
|
@@ -83,6 +94,8 @@ export declare class BrassClient {
|
|
|
83
94
|
private toolbarDeps;
|
|
84
95
|
selectDocument(): Promise<SelectDocumentResult | null>;
|
|
85
96
|
private selectDocumentInternal;
|
|
97
|
+
chooseInputs(families: DocumentFamilies, options?: ChooseInputsOptions): Promise<InputReference[] | null>;
|
|
98
|
+
chooseInput(families: DocumentFamilies, options?: ChooseInputOptions): Promise<InputReference | null>;
|
|
86
99
|
private lastSelectedDocument;
|
|
87
100
|
shareDocument(docId: string): Promise<void>;
|
|
88
101
|
documentHistory(docId: string, options?: {
|
|
@@ -90,16 +103,48 @@ export declare class BrassClient {
|
|
|
90
103
|
}): Promise<DocumentHistoryResult | null>;
|
|
91
104
|
private getHostedUiLauncher;
|
|
92
105
|
openDocumentById(docId: string, options?: OpenDocumentByIdOptions): Promise<OpenedDocument>;
|
|
106
|
+
private reopensBeside;
|
|
93
107
|
private openByLinkInternal;
|
|
108
|
+
private joinByLink;
|
|
109
|
+
private importedByLink;
|
|
94
110
|
private openDocumentInternal;
|
|
111
|
+
private importBeforeResolving;
|
|
112
|
+
private waitForImporter;
|
|
113
|
+
private joinDocument;
|
|
95
114
|
createDocument(options?: CreateDocumentOptions): Promise<OpenedDocument>;
|
|
96
115
|
private createDocumentInternal;
|
|
97
116
|
private createDocumentIdWithConsent;
|
|
117
|
+
private claimAnonymousDocumentWithConsent;
|
|
118
|
+
private anonymousUploadTypes;
|
|
119
|
+
private anonymousUploadTypesRead;
|
|
120
|
+
private appOffersNew;
|
|
121
|
+
private anonymousUploadAccept;
|
|
122
|
+
private signedOutUseRefusal;
|
|
123
|
+
private chooseAnonymousFile;
|
|
124
|
+
private enterGuestMode;
|
|
125
|
+
private emitGuestModeChange;
|
|
126
|
+
private leaveGuestMode;
|
|
127
|
+
private followClaimedLink;
|
|
128
|
+
private readLiveUnsavedWork;
|
|
129
|
+
private forgetUnsavedWorkFor;
|
|
130
|
+
private leaveClaimedLink;
|
|
131
|
+
private readClaimedLink;
|
|
132
|
+
private reloadIfRestoredStale;
|
|
133
|
+
private linkStillOpen;
|
|
134
|
+
private canKeepTemporaryWork;
|
|
135
|
+
private keepTemporaryWork;
|
|
136
|
+
private leaveLinkForOwnAccess;
|
|
137
|
+
private asOwnAccess;
|
|
138
|
+
private currentLinkCredential;
|
|
139
|
+
private probeAnonymousLink;
|
|
140
|
+
private claimAnonymousLink;
|
|
98
141
|
private offerInstallConsent;
|
|
142
|
+
private raiseInstallConsent;
|
|
99
143
|
private retireActingOrganizationState;
|
|
100
144
|
private forgetActingOrganization;
|
|
101
145
|
registerSerializer(serializer: DocumentSerializer): void;
|
|
102
146
|
registerImporter(importer: DocumentImporter): void;
|
|
147
|
+
private isHeadlessGuest;
|
|
103
148
|
private trackOpenDocument;
|
|
104
149
|
private liveOpenDocuments;
|
|
105
150
|
private liveOpenDocument;
|
|
@@ -109,6 +154,7 @@ export declare class BrassClient {
|
|
|
109
154
|
private applyPageTitle;
|
|
110
155
|
private getDocumentFactory;
|
|
111
156
|
private getDocWsClient;
|
|
157
|
+
private getLinkWsClient;
|
|
112
158
|
getAccessToken(): Promise<string | null>;
|
|
113
159
|
private resolveActingOrganizationId;
|
|
114
160
|
private runActingOrganizationResolve;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|