@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
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
// Import-guest: the app side of a platform-run import. Brass loads the app's
|
|
2
|
+
// own bundle with the import-mode URL flag in a headless browser it hosts,
|
|
3
|
+
// hands it the file over the `__brass_embed` envelope, and takes back what
|
|
4
|
+
// the registered importer produced, already encoded in the frozen form the
|
|
5
|
+
// platform seals. The mirror of `export-guest.ts`: Brass is the framer, the
|
|
6
|
+
// app's SDK is the guest, and the guest never authenticates or calls the API.
|
|
7
|
+
import { encodeImportStreams, encodeStreamBundle, readImportResult, } from './import-contract.js';
|
|
8
|
+
import { EMBED_ENVELOPE, EMBED_PROTOCOL_VERSION } from './embed-protocol.js';
|
|
9
|
+
import { SDK_VERSION } from './version.js';
|
|
10
|
+
export const IMPORT_MODE_PARAM = '__brass_import';
|
|
11
|
+
// How long to wait for a late `registerImporter` before answering
|
|
12
|
+
// `no_importer`.
|
|
13
|
+
const IMPORTER_WAIT_MS = 10_000;
|
|
14
|
+
export function isImportMode(search) {
|
|
15
|
+
return new URLSearchParams(search).has(IMPORT_MODE_PARAM);
|
|
16
|
+
}
|
|
17
|
+
function toImportFile(file) {
|
|
18
|
+
return {
|
|
19
|
+
name: file.name,
|
|
20
|
+
content_type: file.content_type,
|
|
21
|
+
byte_size: file.bytes.byteLength,
|
|
22
|
+
bytes: () => Promise.resolve(file.bytes),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
// Start listening as an import guest. Called from `Brass.init` only when
|
|
26
|
+
// `isImportMode(location.search)` is true.
|
|
27
|
+
export function startImportGuest() {
|
|
28
|
+
let importer = null;
|
|
29
|
+
let pending = null;
|
|
30
|
+
let done = false;
|
|
31
|
+
let waitTimer;
|
|
32
|
+
function reply(hostOrigin, requestId, outcome) {
|
|
33
|
+
const send = (answer) => window.parent.postMessage({ [EMBED_ENVELOPE]: EMBED_PROTOCOL_VERSION, type: 'import-result', requestId, ...answer }, hostOrigin);
|
|
34
|
+
try {
|
|
35
|
+
send(outcome);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// A report the browser cannot clone (one holding a function, say) is
|
|
39
|
+
// left behind, so the framer still receives the content.
|
|
40
|
+
if (outcome.ok && outcome.report !== undefined) {
|
|
41
|
+
const { report: _unsent, ...content } = outcome;
|
|
42
|
+
try {
|
|
43
|
+
send(content);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Answered as a failure below.
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
send({ ok: false, code: 'importer_failed', message: 'The import result could not be sent.' });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async function run() {
|
|
54
|
+
if (done || !pending || !importer)
|
|
55
|
+
return;
|
|
56
|
+
done = true;
|
|
57
|
+
if (waitTimer !== undefined)
|
|
58
|
+
clearTimeout(waitTimer);
|
|
59
|
+
const { hostOrigin, requestId, file } = pending;
|
|
60
|
+
let outcome;
|
|
61
|
+
try {
|
|
62
|
+
const result = readImportResult(await importer(toImportFile(file)));
|
|
63
|
+
const streams = result === null ? [] : await encodeImportStreams(result);
|
|
64
|
+
if (result === null || streams.length === 0) {
|
|
65
|
+
outcome = { ok: false, code: 'empty', message: 'The importer returned no content.' };
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
outcome = {
|
|
69
|
+
ok: true,
|
|
70
|
+
bundle: encodeStreamBundle(streams),
|
|
71
|
+
entries: streams.reduce((sum, s) => sum + s.entries, 0),
|
|
72
|
+
...(result.report !== undefined ? { report: result.report } : {}),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
outcome = {
|
|
78
|
+
ok: false,
|
|
79
|
+
code: 'importer_failed',
|
|
80
|
+
message: err instanceof Error ? err.message : 'The importer failed.',
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
reply(hostOrigin, requestId, outcome);
|
|
84
|
+
}
|
|
85
|
+
function onMessage(event) {
|
|
86
|
+
if (event.source !== window.parent)
|
|
87
|
+
return;
|
|
88
|
+
const data = event.data;
|
|
89
|
+
if (!data || typeof data !== 'object' || !(EMBED_ENVELOPE in data))
|
|
90
|
+
return;
|
|
91
|
+
if (pending !== null)
|
|
92
|
+
return;
|
|
93
|
+
const requestId = typeof data['requestId'] === 'string' ? data['requestId'] : '';
|
|
94
|
+
// Anything the framer sends that this guest cannot serve is answered at
|
|
95
|
+
// once, so the framer never waits out its own timeout on it.
|
|
96
|
+
const unsupported = () => reply(event.origin, requestId, {
|
|
97
|
+
ok: false,
|
|
98
|
+
code: 'unsupported_request',
|
|
99
|
+
message: 'This app cannot serve that import request.',
|
|
100
|
+
});
|
|
101
|
+
if (data[EMBED_ENVELOPE] !== EMBED_PROTOCOL_VERSION || data['type'] !== 'import-request') {
|
|
102
|
+
unsupported();
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const files = data['files'];
|
|
106
|
+
// The request carries a list, and an importer reads one file.
|
|
107
|
+
if (requestId === '' || !Array.isArray(files) || files.length !== 1) {
|
|
108
|
+
unsupported();
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const file = files[0];
|
|
112
|
+
if (typeof file?.['name'] !== 'string' ||
|
|
113
|
+
typeof file['content_type'] !== 'string' ||
|
|
114
|
+
!(file['bytes'] instanceof Uint8Array)) {
|
|
115
|
+
unsupported();
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
pending = {
|
|
119
|
+
requestId,
|
|
120
|
+
file: { name: file['name'], content_type: file['content_type'], bytes: file['bytes'] },
|
|
121
|
+
hostOrigin: event.origin,
|
|
122
|
+
};
|
|
123
|
+
if (importer) {
|
|
124
|
+
void run();
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
waitTimer = setTimeout(() => {
|
|
128
|
+
if (done || !pending)
|
|
129
|
+
return;
|
|
130
|
+
done = true;
|
|
131
|
+
reply(pending.hostOrigin, pending.requestId, {
|
|
132
|
+
ok: false,
|
|
133
|
+
code: 'no_importer',
|
|
134
|
+
message: 'No importer registered.',
|
|
135
|
+
});
|
|
136
|
+
}, IMPORTER_WAIT_MS);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
window.addEventListener('message', onMessage);
|
|
140
|
+
// `accepts` names the forms a request may hand the file in.
|
|
141
|
+
window.parent.postMessage({ [EMBED_ENVELOPE]: EMBED_PROTOCOL_VERSION, type: 'ready', sdk: SDK_VERSION, accepts: ['bytes'] }, '*');
|
|
142
|
+
return {
|
|
143
|
+
setImporter(next) {
|
|
144
|
+
importer = next;
|
|
145
|
+
if (pending)
|
|
146
|
+
void run();
|
|
147
|
+
},
|
|
148
|
+
dispose() {
|
|
149
|
+
window.removeEventListener('message', onMessage);
|
|
150
|
+
if (waitTimer !== undefined)
|
|
151
|
+
clearTimeout(waitTimer);
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=import-guest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-guest.js","sourceRoot":"","sources":["../src/import-guest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** `skipped`: content the file holds that the import did not read.
|
|
2
|
+
* `assumed`: a value the file did not give, which the import supplied.
|
|
3
|
+
* `missing`: something the file names that the import did not receive. */
|
|
4
|
+
export type ImportFindingKind = 'skipped' | 'assumed' | 'missing';
|
|
5
|
+
/** One thing an import skipped, assumed or did not receive. */
|
|
6
|
+
export interface ImportFinding {
|
|
7
|
+
kind: ImportFindingKind;
|
|
8
|
+
/** One complete sentence, shown to the reader verbatim. */
|
|
9
|
+
message: string;
|
|
10
|
+
}
|
|
11
|
+
/** What an importer made of a file. A clean import returns none. */
|
|
12
|
+
export interface ImportReport {
|
|
13
|
+
/** One sentence stating what was read, shown above the findings. */
|
|
14
|
+
summary?: string;
|
|
15
|
+
findings: ImportFinding[];
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=import-report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-report.d.ts","sourceRoot":"","sources":["../src/import-report.ts"],"names":[],"mappings":"AAMA;;2EAE2E;AAC3E,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAElE,+DAA+D;AAC/D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,iBAAiB,CAAC;IACxB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,oEAAoE;AACpE,MAAM,WAAW,YAAY;IAC3B,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// What an importer made of a file. `Brass.registerImporter`'s importer may
|
|
2
|
+
// return one, and the platform's own importers write the same shape; it
|
|
3
|
+
// reaches readers as `doc.importReport` on the document it describes.
|
|
4
|
+
//
|
|
5
|
+
// A clean import returns nothing: a report with no findings is not stored.
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=import-report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-report.js","sourceRoot":"","sources":["../src/import-report.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,wEAAwE;AACxE,sEAAsE;AACtE,EAAE;AACF,2EAA2E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"importer-wait.d.ts","sourceRoot":"","sources":["../src/importer-wait.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,sBAAsB,iBAAwB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// The rejections of opens that stopped waiting for this app's
|
|
2
|
+
// `registerImporter`. A follower keeps an input refused this way for the
|
|
3
|
+
// registration, where an input another app imports waits for its import.
|
|
4
|
+
export const importerWaitRejections = new WeakSet();
|
|
5
|
+
//# sourceMappingURL=importer-wait.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"importer-wait.js","sourceRoot":"","sources":["../src/importer-wait.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,yEAAyE;AACzE,yEAAyE;AACzE,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,OAAO,EAAU,CAAC"}
|
package/dist/importer.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Document } from './documents.js';
|
|
2
|
-
import type {
|
|
3
|
-
|
|
2
|
+
import type { ImportReport } from './import-report.js';
|
|
3
|
+
import { ImportResultError, type DocumentImporter, type ImportFile, type ImportResult } from './import-contract.js';
|
|
4
|
+
export type { DocumentImporter, ImportFile, ImportResult };
|
|
4
5
|
export interface ImportClaimResponse {
|
|
5
6
|
claimed?: boolean;
|
|
6
7
|
already_imported?: boolean;
|
|
@@ -8,15 +9,28 @@ export interface ImportClaimResponse {
|
|
|
8
9
|
app_id: string;
|
|
9
10
|
schema_hash: string;
|
|
10
11
|
};
|
|
12
|
+
import_failed?: boolean;
|
|
13
|
+
message?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ImportFailedResponse {
|
|
16
|
+
import_failed: true;
|
|
17
|
+
message: string;
|
|
11
18
|
}
|
|
12
19
|
export interface ImportRunnerDeps {
|
|
13
20
|
claimImport(docId: string): Promise<ImportClaimResponse>;
|
|
14
|
-
|
|
21
|
+
stageImport(docId: string, bundle: Uint8Array): Promise<string>;
|
|
22
|
+
completeImport(docId: string, report: ImportReport | undefined, uploadKey: string): Promise<unknown>;
|
|
23
|
+
failImport(docId: string, message: string): Promise<ImportFailedResponse>;
|
|
15
24
|
reportError(error: Error): void;
|
|
16
25
|
}
|
|
17
26
|
export interface ImportRunner {
|
|
18
27
|
setImporter(importer: DocumentImporter): void;
|
|
19
|
-
attempt(doc: Document
|
|
28
|
+
attempt(doc: Document, options?: {
|
|
29
|
+
reloadInPlace?: boolean;
|
|
30
|
+
}): Promise<void>;
|
|
20
31
|
}
|
|
32
|
+
export declare const STALLED_HOLDER_MS: number;
|
|
33
|
+
export declare const IMPORTER_RUN_CEILING_MS: number;
|
|
21
34
|
export declare function createImportRunner(deps: ImportRunnerDeps): ImportRunner;
|
|
35
|
+
export { ImportResultError };
|
|
22
36
|
//# sourceMappingURL=importer.d.ts.map
|
package/dist/importer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../src/importer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../src/importer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,iBAAiB,EAIjB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAC;AAa9B,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AAO3D,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAGzD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE,cAAc,CACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,YAAY,GAAG,SAAS,EAChC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC1E,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAG9C,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9E;AA4BD,eAAO,MAAM,iBAAiB,QAAa,CAAC;AAc5C,eAAO,MAAM,uBAAuB,QAAc,CAAC;AAUnD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,YAAY,CA6XvE;AA8DD,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|