@brass-build/client 0.1.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 +255 -0
- package/CHANGELOG.md +15 -0
- package/LICENSE +21 -0
- package/README.md +836 -0
- package/dist/api-fetch.d.ts +16 -0
- package/dist/api-fetch.d.ts.map +1 -0
- package/dist/api-fetch.js +97 -0
- package/dist/api-fetch.js.map +1 -0
- package/dist/api-headers.d.ts +3 -0
- package/dist/api-headers.d.ts.map +1 -0
- package/dist/api-headers.js +25 -0
- package/dist/api-headers.js.map +1 -0
- package/dist/auth-flow.d.ts +23 -0
- package/dist/auth-flow.d.ts.map +1 -0
- package/dist/auth-flow.js +76 -0
- package/dist/auth-flow.js.map +1 -0
- package/dist/client.d.ts +106 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +1278 -0
- package/dist/client.js.map +1 -0
- package/dist/doc-url-sync.d.ts +19 -0
- package/dist/doc-url-sync.d.ts.map +1 -0
- package/dist/doc-url-sync.js +181 -0
- package/dist/doc-url-sync.js.map +1 -0
- package/dist/document-branches.d.ts +32 -0
- package/dist/document-branches.d.ts.map +1 -0
- package/dist/document-branches.js +89 -0
- package/dist/document-branches.js.map +1 -0
- package/dist/document-checkpoints.d.ts +24 -0
- package/dist/document-checkpoints.d.ts.map +1 -0
- package/dist/document-checkpoints.js +115 -0
- package/dist/document-checkpoints.js.map +1 -0
- package/dist/document-commands.d.ts +93 -0
- package/dist/document-commands.d.ts.map +1 -0
- package/dist/document-commands.js +423 -0
- package/dist/document-commands.js.map +1 -0
- package/dist/document-signals.d.ts +53 -0
- package/dist/document-signals.d.ts.map +1 -0
- package/dist/document-signals.js +114 -0
- package/dist/document-signals.js.map +1 -0
- package/dist/document-streams.d.ts +22 -0
- package/dist/document-streams.d.ts.map +1 -0
- package/dist/document-streams.js +98 -0
- package/dist/document-streams.js.map +1 -0
- package/dist/document-thumbnail-capture.d.ts +27 -0
- package/dist/document-thumbnail-capture.d.ts.map +1 -0
- package/dist/document-thumbnail-capture.js +160 -0
- package/dist/document-thumbnail-capture.js.map +1 -0
- package/dist/documents-namespace.d.ts +134 -0
- package/dist/documents-namespace.d.ts.map +1 -0
- package/dist/documents-namespace.js +190 -0
- package/dist/documents-namespace.js.map +1 -0
- package/dist/documents.d.ts +146 -0
- package/dist/documents.d.ts.map +1 -0
- package/dist/documents.js +2045 -0
- package/dist/documents.js.map +1 -0
- package/dist/emitter.d.ts +15 -0
- package/dist/emitter.d.ts.map +1 -0
- package/dist/emitter.js +90 -0
- package/dist/emitter.js.map +1 -0
- package/dist/errors.d.ts +18 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +22 -0
- package/dist/errors.js.map +1 -0
- package/dist/export-guest.d.ts +9 -0
- package/dist/export-guest.d.ts.map +1 -0
- package/dist/export-guest.js +225 -0
- package/dist/export-guest.js.map +1 -0
- package/dist/fetch-retry.d.ts +16 -0
- package/dist/fetch-retry.d.ts.map +1 -0
- package/dist/fetch-retry.js +90 -0
- package/dist/fetch-retry.js.map +1 -0
- package/dist/guest-link.d.ts +3 -0
- package/dist/guest-link.d.ts.map +1 -0
- package/dist/guest-link.js +13 -0
- package/dist/guest-link.js.map +1 -0
- package/dist/handles.d.ts +57 -0
- package/dist/handles.d.ts.map +1 -0
- package/dist/handles.js +1375 -0
- package/dist/handles.js.map +1 -0
- package/dist/hosted-runtime.d.ts +33 -0
- package/dist/hosted-runtime.d.ts.map +1 -0
- package/dist/hosted-runtime.js +99 -0
- package/dist/hosted-runtime.js.map +1 -0
- package/dist/hosted-ui.d.ts +84 -0
- package/dist/hosted-ui.d.ts.map +1 -0
- package/dist/hosted-ui.js +673 -0
- package/dist/hosted-ui.js.map +1 -0
- package/dist/importer.d.ts +22 -0
- package/dist/importer.d.ts.map +1 -0
- package/dist/importer.js +54 -0
- package/dist/importer.js.map +1 -0
- package/dist/index.d.ts +54 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +132 -0
- package/dist/index.js.map +1 -0
- package/dist/init-keys.d.ts +3 -0
- package/dist/init-keys.d.ts.map +1 -0
- package/dist/init-keys.js +13 -0
- package/dist/init-keys.js.map +1 -0
- package/dist/internal.d.ts +6 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +17 -0
- package/dist/internal.js.map +1 -0
- package/dist/jwt.d.ts +3 -0
- package/dist/jwt.d.ts.map +1 -0
- package/dist/jwt.js +22 -0
- package/dist/jwt.js.map +1 -0
- package/dist/launch-context.d.ts +4 -0
- package/dist/launch-context.d.ts.map +1 -0
- package/dist/launch-context.js +44 -0
- package/dist/launch-context.js.map +1 -0
- package/dist/login-hint.d.ts +4 -0
- package/dist/login-hint.d.ts.map +1 -0
- package/dist/login-hint.js +63 -0
- package/dist/login-hint.js.map +1 -0
- package/dist/mutate-batching.d.ts +14 -0
- package/dist/mutate-batching.d.ts.map +1 -0
- package/dist/mutate-batching.js +65 -0
- package/dist/mutate-batching.js.map +1 -0
- package/dist/open-document.d.ts +127 -0
- package/dist/open-document.d.ts.map +1 -0
- package/dist/open-document.js +2121 -0
- package/dist/open-document.js.map +1 -0
- package/dist/page-title.d.ts +3 -0
- package/dist/page-title.d.ts.map +1 -0
- package/dist/page-title.js +32 -0
- package/dist/page-title.js.map +1 -0
- package/dist/perf.d.ts +9 -0
- package/dist/perf.d.ts.map +1 -0
- package/dist/perf.js +39 -0
- package/dist/perf.js.map +1 -0
- package/dist/presence.d.ts +62 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +331 -0
- package/dist/presence.js.map +1 -0
- package/dist/record-paging.d.ts +99 -0
- package/dist/record-paging.d.ts.map +1 -0
- package/dist/record-paging.js +220 -0
- package/dist/record-paging.js.map +1 -0
- package/dist/schema-conflict-dialog.d.ts +10 -0
- package/dist/schema-conflict-dialog.d.ts.map +1 -0
- package/dist/schema-conflict-dialog.js +164 -0
- package/dist/schema-conflict-dialog.js.map +1 -0
- package/dist/selection-persistence.d.ts +5 -0
- package/dist/selection-persistence.d.ts.map +1 -0
- package/dist/selection-persistence.js +90 -0
- package/dist/selection-persistence.js.map +1 -0
- package/dist/serializer.d.ts +3 -0
- package/dist/serializer.d.ts.map +1 -0
- package/dist/serializer.js +2 -0
- package/dist/serializer.js.map +1 -0
- package/dist/session-persistence.d.ts +4 -0
- package/dist/session-persistence.d.ts.map +1 -0
- package/dist/session-persistence.js +68 -0
- package/dist/session-persistence.js.map +1 -0
- package/dist/session-toolbar.d.ts +62 -0
- package/dist/session-toolbar.d.ts.map +1 -0
- package/dist/session-toolbar.js +1205 -0
- package/dist/session-toolbar.js.map +1 -0
- package/dist/session.d.ts +69 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +926 -0
- package/dist/session.js.map +1 -0
- package/dist/tail-ops.d.ts +28 -0
- package/dist/tail-ops.d.ts.map +1 -0
- package/dist/tail-ops.js +46 -0
- package/dist/tail-ops.js.map +1 -0
- package/dist/topic-lifecycle.d.ts +41 -0
- package/dist/topic-lifecycle.d.ts.map +1 -0
- package/dist/topic-lifecycle.js +169 -0
- package/dist/topic-lifecycle.js.map +1 -0
- package/dist/types.d.ts +22 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/undo.d.ts +18 -0
- package/dist/undo.d.ts.map +1 -0
- package/dist/undo.js +110 -0
- package/dist/undo.js.map +1 -0
- package/dist/version-bar.d.ts +22 -0
- package/dist/version-bar.d.ts.map +1 -0
- package/dist/version-bar.js +169 -0
- package/dist/version-bar.js.map +1 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +8 -0
- package/dist/version.js.map +1 -0
- package/dist/vite.d.ts +15 -0
- package/dist/vite.d.ts.map +1 -0
- package/dist/vite.js +36 -0
- package/dist/vite.js.map +1 -0
- package/dist/ws-client.d.ts +53 -0
- package/dist/ws-client.d.ts.map +1 -0
- package/dist/ws-client.js +604 -0
- package/dist/ws-client.js.map +1 -0
- package/dist/ws-frame-limit.d.ts +21 -0
- package/dist/ws-frame-limit.d.ts.map +1 -0
- package/dist/ws-frame-limit.js +40 -0
- package/dist/ws-frame-limit.js.map +1 -0
- package/docs/app-manifest.md +65 -0
- package/docs/custom-chrome.md +147 -0
- package/docs/hosted-ui-advanced.md +77 -0
- package/docs/imported-documents.md +261 -0
- package/docs/presence.md +129 -0
- package/docs/schemas.md +135 -0
- package/docs/streams.md +248 -0
- package/package.json +60 -0
- package/scripts/prepare.mjs +50 -0
- package/src/api-fetch.ts +127 -0
- package/src/api-headers.ts +28 -0
- package/src/auth-flow.ts +125 -0
- package/src/client.ts +1457 -0
- package/src/doc-url-sync.ts +183 -0
- package/src/document-branches.ts +124 -0
- package/src/document-checkpoints.ts +135 -0
- package/src/document-commands.ts +651 -0
- package/src/document-signals.ts +234 -0
- package/src/document-streams.ts +132 -0
- package/src/document-thumbnail-capture.ts +191 -0
- package/src/documents-namespace.ts +516 -0
- package/src/documents.ts +2426 -0
- package/src/emitter.ts +129 -0
- package/src/errors.ts +45 -0
- package/src/export-guest.ts +282 -0
- package/src/fetch-retry.ts +119 -0
- package/src/guest-link.ts +14 -0
- package/src/handles.ts +1731 -0
- package/src/hosted-runtime.ts +109 -0
- package/src/hosted-ui.ts +1020 -0
- package/src/importer.ts +89 -0
- package/src/index.ts +267 -0
- package/src/init-keys.ts +15 -0
- package/src/internal.ts +23 -0
- package/src/jwt.ts +18 -0
- package/src/launch-context.ts +43 -0
- package/src/login-hint.ts +60 -0
- package/src/mutate-batching.ts +63 -0
- package/src/open-document.ts +2869 -0
- package/src/page-title.ts +33 -0
- package/src/perf.ts +46 -0
- package/src/presence.ts +471 -0
- package/src/record-paging.ts +270 -0
- package/src/schema-conflict-dialog.ts +176 -0
- package/src/selection-persistence.ts +98 -0
- package/src/serializer.ts +15 -0
- package/src/session-persistence.ts +69 -0
- package/src/session-toolbar.ts +1457 -0
- package/src/session.ts +1262 -0
- package/src/tail-ops.ts +63 -0
- package/src/topic-lifecycle.ts +217 -0
- package/src/types.ts +75 -0
- package/src/undo.ts +125 -0
- package/src/version-bar.ts +221 -0
- package/src/version.ts +8 -0
- package/src/vite.ts +49 -0
- package/src/ws-client.ts +678 -0
- package/src/ws-frame-limit.ts +52 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-ui.js","sourceRoot":"","sources":["../src/hosted-ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Document } from './documents.js';
|
|
2
|
+
import type { DocumentSourceBlob } from './documents-namespace.js';
|
|
3
|
+
export type DocumentImporter = (source: DocumentSourceBlob, doc: Document) => void | Promise<void>;
|
|
4
|
+
export interface ImportClaimResponse {
|
|
5
|
+
claimed?: boolean;
|
|
6
|
+
already_imported?: boolean;
|
|
7
|
+
schema_ref?: {
|
|
8
|
+
app_id: string;
|
|
9
|
+
schema_hash: string;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export interface ImportRunnerDeps {
|
|
13
|
+
claimImport(docId: string): Promise<ImportClaimResponse>;
|
|
14
|
+
completeImport(docId: string): Promise<unknown>;
|
|
15
|
+
reportError(error: Error): void;
|
|
16
|
+
}
|
|
17
|
+
export interface ImportRunner {
|
|
18
|
+
setImporter(importer: DocumentImporter): void;
|
|
19
|
+
attempt(doc: Document): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
export declare function createImportRunner(deps: ImportRunnerDeps): ImportRunner;
|
|
22
|
+
//# sourceMappingURL=importer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../src/importer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAanE,MAAM,MAAM,gBAAgB,GAAG,CAC7B,MAAM,EAAE,kBAAkB,EAC1B,GAAG,EAAE,QAAQ,KACV,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAM1B,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;CACtD;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACzD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC9C,OAAO,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAKD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,YAAY,CAyCvE"}
|
package/dist/importer.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { BrassError } from './errors.js';
|
|
2
|
+
// Runs the import protocol for one opened document: claim, and on the
|
|
3
|
+
// win fetch + parse + complete. Separated from the client so the
|
|
4
|
+
// protocol is testable against mocked HTTP deps.
|
|
5
|
+
export function createImportRunner(deps) {
|
|
6
|
+
let importer = null;
|
|
7
|
+
// One attempt per Document instance; a reopen mints a new instance,
|
|
8
|
+
// whose claim resolves `already_imported` as a no-op.
|
|
9
|
+
const attempted = new WeakSet();
|
|
10
|
+
return {
|
|
11
|
+
setImporter(fn) {
|
|
12
|
+
importer = fn;
|
|
13
|
+
},
|
|
14
|
+
async attempt(doc) {
|
|
15
|
+
if (importer === null || doc.id === null || attempted.has(doc))
|
|
16
|
+
return;
|
|
17
|
+
attempted.add(doc);
|
|
18
|
+
const run = importer;
|
|
19
|
+
const docId = doc.id;
|
|
20
|
+
let claim;
|
|
21
|
+
try {
|
|
22
|
+
claim = await deps.claimImport(docId);
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
// The common no-op outcomes arrive as 4xx: not a stored source
|
|
26
|
+
// file, read-only access, another client's claim in flight. Only
|
|
27
|
+
// a server fault surfaces.
|
|
28
|
+
if (err instanceof BrassError && err.status !== undefined && err.status < 500) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
deps.reportError(asError(err));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (claim.claimed !== true)
|
|
35
|
+
return;
|
|
36
|
+
// This client won the claim: run the importer, then report
|
|
37
|
+
// completion so the platform stamps the document with the app's
|
|
38
|
+
// schema. A throw leaves the claim to expire, so another client
|
|
39
|
+
// can retry rather than the document staying half-claimed.
|
|
40
|
+
try {
|
|
41
|
+
const source = await doc.sourceBlob();
|
|
42
|
+
await run(source, doc);
|
|
43
|
+
await deps.completeImport(docId);
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
deps.reportError(asError(err));
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function asError(err) {
|
|
52
|
+
return err instanceof Error ? err : new Error(String(err));
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=importer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"importer.js","sourceRoot":"","sources":["../src/importer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAsCzC,sEAAsE;AACtE,iEAAiE;AACjE,iDAAiD;AACjD,MAAM,UAAU,kBAAkB,CAAC,IAAsB;IACvD,IAAI,QAAQ,GAA4B,IAAI,CAAC;IAC7C,oEAAoE;IACpE,sDAAsD;IACtD,MAAM,SAAS,GAAG,IAAI,OAAO,EAAY,CAAC;IAC1C,OAAO;QACL,WAAW,CAAC,EAAoB;YAC9B,QAAQ,GAAG,EAAE,CAAC;QAChB,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,GAAa;YACzB,IAAI,QAAQ,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO;YACvE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,MAAM,GAAG,GAAG,QAAQ,CAAC;YACrB,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,KAA0B,CAAC;YAC/B,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,+DAA+D;gBAC/D,iEAAiE;gBACjE,2BAA2B;gBAC3B,IAAI,GAAG,YAAY,UAAU,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBAC9E,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/B,OAAO;YACT,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI;gBAAE,OAAO;YACnC,2DAA2D;YAC3D,gEAAgE;YAChE,gEAAgE;YAChE,2DAA2D;YAC3D,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;gBACtC,MAAM,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACvB,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,GAAY;IAC3B,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7D,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { CreateDocumentOptions, OpenDocumentByIdOptions, OpenedDocument } from './open-document.js';
|
|
2
|
+
import type { SelectDocumentResult } from './hosted-ui.js';
|
|
3
|
+
import type { DocumentsNamespace } from './documents-namespace.js';
|
|
4
|
+
import type { DocumentImporter } from './importer.js';
|
|
5
|
+
import type { DocumentSerializer } from './serializer.js';
|
|
6
|
+
import type { DocumentSession } from './session.js';
|
|
7
|
+
import type { AuthStatus, ErrorListener, BrassInitOptions, BrassUser, UserChangeListener } from './types.js';
|
|
8
|
+
export type { AuthStatus, ErrorListener, BrassInitOptions, BrassUser, UserChangeListener, };
|
|
9
|
+
export { BrassError, type BrassErrorCode } from './errors.js';
|
|
10
|
+
export { type AcquireOrganizationResult, type HostedUiLauncher, type HostedUiLauncherOptions, type HostedUiTheme, type SelectDocumentResult, } from './hosted-ui.js';
|
|
11
|
+
export { type DocumentMember, type DocumentRecord, type DocumentRole, type DocumentCheckpoint, type DocumentSourceBlob, type DocumentSourceStream, type DocumentStreamInfo, type DocumentSummary, type DocumentThumbnail, type DocumentsNamespace, type GetThumbnailOptions, type SetThumbnailInput, } from './documents-namespace.js';
|
|
12
|
+
export { type CanvasSource, type Command, type CommandGroup, type CommandSurface, type DocumentSession, type DocumentSessionDeps, type SessionOpenOptions, type SessionStatus, } from './session.js';
|
|
13
|
+
export type { SessionToolbarHandle, SessionHeaderHandle, SessionToolbarOptions, MountedPiece, } from './session-toolbar.js';
|
|
14
|
+
import type { SessionToolbarHandle, SessionHeaderHandle, SessionToolbarOptions, MountedPiece } from './session-toolbar.js';
|
|
15
|
+
export { Document, type DocumentMutator, type DocumentOptions, type DocumentSubscriber, type SyntheticSubscribeEvent, type DocumentUnsubscribe, type DocumentGoneListener, type DocumentGoneReason, type DocumentGoneUnsubscribe, type DocumentWorkStatus, type DocumentStatusListener, type DocumentStatusUnsubscribe, type DocumentDriveStatus, type DocumentDriveStatusListener, type DocumentDriveStatusUnsubscribe, type DocumentDriveTrackingState, type DriveMirrorDirection, type EntityProxy, type UndoState, type UndoStateSubscriber, } from './documents.js';
|
|
16
|
+
export type { Change, ChangeOrigin, ChangeSource, HandleUnsubscribe, ListHandle, ListSubscriber, MapHandle, MapSubscriber, OrderedMapHandle, } from './handles.js';
|
|
17
|
+
export type { UndoControllerOptions } from './undo.js';
|
|
18
|
+
export type { DocumentSerializer } from './serializer.js';
|
|
19
|
+
export type { DocumentImporter } from './importer.js';
|
|
20
|
+
export { DocumentStream, type StreamRuntime } from './document-streams.js';
|
|
21
|
+
export { type CreateDocumentFn, type CreateDocumentOptions, type DocumentAtVersionResponse, type DocumentDriveSummaryWire, type DocumentFactory, type DocumentSnapshotResponse, type OpenDocumentFactoryOptions, type OpenDocumentByIdFn, type OpenDocumentByIdOptions, type OpenDocumentWsClient, type OpenedDocument, } from './open-document.js';
|
|
22
|
+
export type { PresenceChangeListener, PresenceClient, PresenceParticipant, PresenceSetInput, PresenceState, } from './presence.js';
|
|
23
|
+
declare function init(options?: BrassInitOptions): Promise<void>;
|
|
24
|
+
declare function init(appId: string, options?: BrassInitOptions): Promise<void>;
|
|
25
|
+
export declare const Brass: {
|
|
26
|
+
init: typeof init;
|
|
27
|
+
signIn(): void;
|
|
28
|
+
signOut(): void;
|
|
29
|
+
readonly user: BrassUser | null;
|
|
30
|
+
readonly authStatus: AuthStatus;
|
|
31
|
+
onUserChange(listener: UserChangeListener): () => void;
|
|
32
|
+
onError(listener: ErrorListener): () => void;
|
|
33
|
+
getAccessToken(): Promise<string | null>;
|
|
34
|
+
readonly documents: DocumentsNamespace;
|
|
35
|
+
readonly session: DocumentSession;
|
|
36
|
+
mountToolbar(container: HTMLElement, options?: SessionToolbarOptions): SessionToolbarHandle;
|
|
37
|
+
mountHeader(container: HTMLElement): SessionHeaderHandle;
|
|
38
|
+
mountFileMenu(container: HTMLElement): MountedPiece;
|
|
39
|
+
mountDocumentTitle(container: HTMLElement): MountedPiece;
|
|
40
|
+
mountUndoRedo(container: HTMLElement): MountedPiece;
|
|
41
|
+
mountPresenceRoster(container: HTMLElement): MountedPiece;
|
|
42
|
+
mountDriveSync(container: HTMLElement): MountedPiece;
|
|
43
|
+
mountAccountMenu(container: HTMLElement): MountedPiece;
|
|
44
|
+
mountVersionPreview(container: HTMLElement): MountedPiece;
|
|
45
|
+
selectDocument(): Promise<SelectDocumentResult | null>;
|
|
46
|
+
shareDocument(docId: string): Promise<void>;
|
|
47
|
+
openDocumentById(docId: string, options?: OpenDocumentByIdOptions): Promise<OpenedDocument>;
|
|
48
|
+
readonly isGuest: boolean;
|
|
49
|
+
createDocument(options?: CreateDocumentOptions): Promise<OpenedDocument>;
|
|
50
|
+
registerSerializer(serializer: DocumentSerializer): void;
|
|
51
|
+
registerImporter(importer: DocumentImporter): void;
|
|
52
|
+
};
|
|
53
|
+
export default Brass;
|
|
54
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { BrassClient } from './client.js';
|
|
2
|
+
export { BrassError } from './errors.js';
|
|
3
|
+
export {} from './hosted-ui.js';
|
|
4
|
+
export {} from './documents-namespace.js';
|
|
5
|
+
export {} from './session.js';
|
|
6
|
+
export { Document, } from './documents.js';
|
|
7
|
+
export { DocumentStream } from './document-streams.js';
|
|
8
|
+
export {} from './open-document.js';
|
|
9
|
+
const client = new BrassClient();
|
|
10
|
+
function init(appIdOrOptions, options) {
|
|
11
|
+
if (typeof appIdOrOptions === 'string')
|
|
12
|
+
return client.init(appIdOrOptions, options);
|
|
13
|
+
return client.init(undefined, appIdOrOptions);
|
|
14
|
+
}
|
|
15
|
+
export const Brass = {
|
|
16
|
+
init,
|
|
17
|
+
signIn() {
|
|
18
|
+
client.signIn();
|
|
19
|
+
},
|
|
20
|
+
signOut() {
|
|
21
|
+
client.signOut();
|
|
22
|
+
},
|
|
23
|
+
get user() {
|
|
24
|
+
return client.currentUser;
|
|
25
|
+
},
|
|
26
|
+
// Tri-state auth lifecycle: `'unknown'` until `Brass.init` settles,
|
|
27
|
+
// then `'signed-in'` / `'signed-out'`. Gate the sign-in CTA on this,
|
|
28
|
+
// not on `!Brass.user`: a falsy `user` during `'unknown'` is "not
|
|
29
|
+
// checked yet", so gating on `!user` flashes the CTA at signed-in
|
|
30
|
+
// users on reload. Render the CTA only on `'signed-out'`.
|
|
31
|
+
get authStatus() {
|
|
32
|
+
return client.authStatus;
|
|
33
|
+
},
|
|
34
|
+
onUserChange(listener) {
|
|
35
|
+
return client.onUserChange(listener);
|
|
36
|
+
},
|
|
37
|
+
onError(listener) {
|
|
38
|
+
return client.onError(listener);
|
|
39
|
+
},
|
|
40
|
+
getAccessToken() {
|
|
41
|
+
return client.getAccessToken();
|
|
42
|
+
},
|
|
43
|
+
// Metadata read for a known id (`get`) plus thumbnails / branches /
|
|
44
|
+
// pushToDrive. Create / move / list / grant access are hosted-only.
|
|
45
|
+
get documents() {
|
|
46
|
+
return client.documents;
|
|
47
|
+
},
|
|
48
|
+
// The document session: owns the active-document lifecycle and exposes
|
|
49
|
+
// a flat command list to render. Accessible before `Brass.init` so a
|
|
50
|
+
// boot flow can subscribe first.
|
|
51
|
+
get session() {
|
|
52
|
+
return client.session;
|
|
53
|
+
},
|
|
54
|
+
// SDK-rendered document toolbar: file menu, title, location, account
|
|
55
|
+
// menu, presence roster into `container`. The app fills the returned
|
|
56
|
+
// `tools` slot with its own buttons.
|
|
57
|
+
mountToolbar(container, options) {
|
|
58
|
+
return client.mountToolbar(container, options);
|
|
59
|
+
},
|
|
60
|
+
// The bare header shell, for an app that wants the SDK's responsive
|
|
61
|
+
// layout but fills the clusters itself. Mount pieces into the returned
|
|
62
|
+
// `start` / `tools` / `end` slots; the account avatar in `end` stays
|
|
63
|
+
// pinned top-right on mobile, never wrapping when the tools wrap.
|
|
64
|
+
mountHeader(container) {
|
|
65
|
+
return client.mountHeader(container);
|
|
66
|
+
},
|
|
67
|
+
// Composable header pieces, for an app that builds its own shell and
|
|
68
|
+
// wants the standard clusters (account menu / presence / title / file
|
|
69
|
+
// menu / undo-redo) without the whole `mountToolbar` bar. Each renders
|
|
70
|
+
// one cluster and returns `{ destroy(): void }`.
|
|
71
|
+
mountFileMenu(container) {
|
|
72
|
+
return client.mountFileMenu(container);
|
|
73
|
+
},
|
|
74
|
+
mountDocumentTitle(container) {
|
|
75
|
+
return client.mountDocumentTitle(container);
|
|
76
|
+
},
|
|
77
|
+
mountUndoRedo(container) {
|
|
78
|
+
return client.mountUndoRedo(container);
|
|
79
|
+
},
|
|
80
|
+
mountPresenceRoster(container) {
|
|
81
|
+
return client.mountPresenceRoster(container);
|
|
82
|
+
},
|
|
83
|
+
mountDriveSync(container) {
|
|
84
|
+
return client.mountDriveSync(container);
|
|
85
|
+
},
|
|
86
|
+
mountAccountMenu(container) {
|
|
87
|
+
return client.mountAccountMenu(container);
|
|
88
|
+
},
|
|
89
|
+
// The historical-version preview banner (return-to-live during a hosted
|
|
90
|
+
// `history` preview). `mountToolbar` / `mountHeader` already include it, so
|
|
91
|
+
// this is only for an app that builds fully custom chrome.
|
|
92
|
+
mountVersionPreview(container) {
|
|
93
|
+
return client.mountVersionPreview(container);
|
|
94
|
+
},
|
|
95
|
+
selectDocument() {
|
|
96
|
+
return client.selectDocument();
|
|
97
|
+
},
|
|
98
|
+
// Opens the hosted multi-tier share dialog (document / project /
|
|
99
|
+
// organization in one UI) focused on the given document.
|
|
100
|
+
shareDocument(docId) {
|
|
101
|
+
return client.shareDocument(docId);
|
|
102
|
+
},
|
|
103
|
+
openDocumentById(docId, options) {
|
|
104
|
+
return client.openDocumentById(docId, options);
|
|
105
|
+
},
|
|
106
|
+
// `true` when the page was opened as an anonymous link guest
|
|
107
|
+
// (`?brass_link=`): no signed-in user, a read-only document. Apps render
|
|
108
|
+
// their working surface for a guest as they do for a signed-in user (the
|
|
109
|
+
// document is read-only) and show their sign-in CTA only when neither.
|
|
110
|
+
get isGuest() {
|
|
111
|
+
return client.isGuest;
|
|
112
|
+
},
|
|
113
|
+
createDocument(options) {
|
|
114
|
+
return client.createDocument(options);
|
|
115
|
+
},
|
|
116
|
+
// Register the app's export backend: serialises a blob document back
|
|
117
|
+
// to its source file's bytes. The platform calls it when a user
|
|
118
|
+
// downloads from a hosted surface (the app never initiates export).
|
|
119
|
+
// Call once at boot; an app with no serializer cannot export blobs.
|
|
120
|
+
registerSerializer(serializer) {
|
|
121
|
+
client.registerSerializer(serializer);
|
|
122
|
+
},
|
|
123
|
+
// Register the app's import backend: parses a stored source file into
|
|
124
|
+
// the document's records. Brass runs it when a document's file needs
|
|
125
|
+
// importing; the records reach every open client live. Call once at
|
|
126
|
+
// boot beside `registerSerializer`.
|
|
127
|
+
registerImporter(importer) {
|
|
128
|
+
client.registerImporter(importer);
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
export default Brass;
|
|
132
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-keys.d.ts","sourceRoot":"","sources":["../src/init-keys.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,mBAAmB,qEAKtB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Single source of truth for the set of keys an integration needs to
|
|
2
|
+
// plug into `Brass.init`. When you add a new field to `Brass.init`,
|
|
3
|
+
// add the key here first.
|
|
4
|
+
// Keys used in the prompt block the dashboard renders. The `app_id`
|
|
5
|
+
// line carries the app-specific id; the URL lines carry the env's
|
|
6
|
+
// auth / data / WS origins.
|
|
7
|
+
export const BRASS_INIT_ARG_KEYS = [
|
|
8
|
+
'app_id',
|
|
9
|
+
'auth_base_url',
|
|
10
|
+
'api_base_url',
|
|
11
|
+
'ws_base_url',
|
|
12
|
+
];
|
|
13
|
+
//# sourceMappingURL=init-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-keys.js","sourceRoot":"","sources":["../src/init-keys.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,oEAAoE;AACpE,0BAA0B;AAE1B,oEAAoE;AACpE,kEAAkE;AAClE,4BAA4B;AAC5B,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,QAAQ;IACR,eAAe;IACf,cAAc;IACd,aAAa;CACL,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { BrassClient } from './client.js';
|
|
2
|
+
export { BrassWsClient } from './ws-client.js';
|
|
3
|
+
export { buildSignInUrl, refreshTokens, type RefreshCredential, type RefreshResult, type TokenSet, } from './auth-flow.js';
|
|
4
|
+
export { decodeIdToken } from './jwt.js';
|
|
5
|
+
export { BRASS_INIT_ARG_KEYS, type BrassInitArgKey } from './init-keys.js';
|
|
6
|
+
//# sourceMappingURL=internal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,cAAc,EACd,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,QAAQ,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/internal.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// The entry point Brass's own surfaces import
|
|
2
|
+
// (`@brass-build/client/internal`).
|
|
3
|
+
//
|
|
4
|
+
// The dashboard, the operator console, and this package's tests consume
|
|
5
|
+
// the SDK as their client library and reach for primitives that sit
|
|
6
|
+
// below the `Brass` namespace: the client class that namespace wraps,
|
|
7
|
+
// the WS transport, the auth-flow helpers, and the init-key vocabulary
|
|
8
|
+
// the dashboard quickstart renders. They live on their own subpath so
|
|
9
|
+
// the default import (`@brass-build/client`) offers apps the `Brass`
|
|
10
|
+
// surface the README documents, and an assistant scaffolding from that
|
|
11
|
+
// README stays on it.
|
|
12
|
+
export { BrassClient } from './client.js';
|
|
13
|
+
export { BrassWsClient } from './ws-client.js';
|
|
14
|
+
export { buildSignInUrl, refreshTokens, } from './auth-flow.js';
|
|
15
|
+
export { decodeIdToken } from './jwt.js';
|
|
16
|
+
export { BRASS_INIT_ARG_KEYS } from './init-keys.js';
|
|
17
|
+
//# sourceMappingURL=internal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,oCAAoC;AACpC,EAAE;AACF,wEAAwE;AACxE,oEAAoE;AACpE,sEAAsE;AACtE,uEAAuE;AACvE,sEAAsE;AACtE,qEAAqE;AACrE,uEAAuE;AACvE,sBAAsB;AAEtB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,cAAc,EACd,aAAa,GAId,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAwB,MAAM,gBAAgB,CAAC"}
|
package/dist/jwt.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../src/jwt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAe/D"}
|
package/dist/jwt.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export function decodeIdToken(idToken) {
|
|
2
|
+
const parts = idToken.split('.');
|
|
3
|
+
if (parts.length !== 3)
|
|
4
|
+
return null;
|
|
5
|
+
const payloadPart = parts[1];
|
|
6
|
+
if (!payloadPart)
|
|
7
|
+
return null;
|
|
8
|
+
try {
|
|
9
|
+
const json = atob(payloadPart.replace(/-/g, '+').replace(/_/g, '/'));
|
|
10
|
+
const claims = JSON.parse(json);
|
|
11
|
+
if (typeof claims.sub !== 'string')
|
|
12
|
+
return null;
|
|
13
|
+
const user = { sub: claims.sub };
|
|
14
|
+
if (typeof claims.email === 'string')
|
|
15
|
+
user.email = claims.email;
|
|
16
|
+
return user;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=jwt.js.map
|
package/dist/jwt.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.js","sourceRoot":"","sources":["../src/jwt.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAuC,CAAC;QACtE,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAChD,MAAM,IAAI,GAAc,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;QAC5C,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;YAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch-context.d.ts","sourceRoot":"","sources":["../src/launch-context.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,yBAAyB,cAAc,CAAC;AAIrD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAItE;AAMD,wBAAgB,2BAA2B,IAAI,MAAM,GAAG,IAAI,CAY3D"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// The organization a launch came from. Brass appends
|
|
2
|
+
// `?brass_org=<organization_id>` to the app URL it opens from an
|
|
3
|
+
// organization's dashboard, so the first document an app creates lands in
|
|
4
|
+
// the organization the person was standing in when they clicked Open. A
|
|
5
|
+
// member of several organizations has already answered "which one" with
|
|
6
|
+
// that click; without the parameter the create reaches the server with no
|
|
7
|
+
// destination and comes back asking again.
|
|
8
|
+
//
|
|
9
|
+
// `brass_` prefixed like the platform's other boot parameters so it cannot
|
|
10
|
+
// collide with an app's own query string, and stripped from the address bar
|
|
11
|
+
// on read so it does not linger in history or a referrer.
|
|
12
|
+
//
|
|
13
|
+
// The dashboard writes this parameter in `src/lib/open-app-url.ts`; the
|
|
14
|
+
// published SDK cannot import the workspace, so the name is spelled in both
|
|
15
|
+
// places.
|
|
16
|
+
export const LAUNCH_ORGANIZATION_PARAM = 'brass_org';
|
|
17
|
+
// Pure + search-string-in so it stays testable, mirroring
|
|
18
|
+
// `readGuestLinkToken(search)`.
|
|
19
|
+
export function readLaunchOrganizationId(search) {
|
|
20
|
+
const value = new URLSearchParams(search).get(LAUNCH_ORGANIZATION_PARAM);
|
|
21
|
+
const trimmed = value?.trim() ?? '';
|
|
22
|
+
return trimmed === '' ? null : trimmed;
|
|
23
|
+
}
|
|
24
|
+
// Reads the parameter and strips it from the visible URL in the same tick.
|
|
25
|
+
// Best-effort on the strip: an exotic URL or an unavailable history API
|
|
26
|
+
// leaves the parameter in the address bar, which costs nothing, the value
|
|
27
|
+
// is already in hand.
|
|
28
|
+
export function consumeLaunchOrganizationId() {
|
|
29
|
+
if (typeof window === 'undefined')
|
|
30
|
+
return null;
|
|
31
|
+
const organizationId = readLaunchOrganizationId(window.location.search);
|
|
32
|
+
if (!organizationId)
|
|
33
|
+
return null;
|
|
34
|
+
try {
|
|
35
|
+
const url = new URL(window.location.href);
|
|
36
|
+
url.searchParams.delete(LAUNCH_ORGANIZATION_PARAM);
|
|
37
|
+
window.history.replaceState(window.history.state, '', url.toString());
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
/* address-bar tidiness only */
|
|
41
|
+
}
|
|
42
|
+
return organizationId;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=launch-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch-context.js","sourceRoot":"","sources":["../src/launch-context.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,iEAAiE;AACjE,0EAA0E;AAC1E,wEAAwE;AACxE,wEAAwE;AACxE,0EAA0E;AAC1E,2CAA2C;AAC3C,EAAE;AACF,2EAA2E;AAC3E,4EAA4E;AAC5E,0DAA0D;AAC1D,EAAE;AACF,wEAAwE;AACxE,4EAA4E;AAC5E,UAAU;AAEV,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAW,CAAC;AAErD,0DAA0D;AAC1D,gCAAgC;AAChC,MAAM,UAAU,wBAAwB,CAAC,MAAc;IACrD,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACpC,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACzC,CAAC;AAED,2EAA2E;AAC3E,wEAAwE;AACxE,0EAA0E;AAC1E,sBAAsB;AACtB,MAAM,UAAU,2BAA2B;IACzC,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,cAAc,GAAG,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxE,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1C,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login-hint.d.ts","sourceRoot":"","sources":["../src/login-hint.ts"],"names":[],"mappings":"AA8BA,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CASlD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQpD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAQlD"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// Per-app "a Brass session probably exists for this app" hint.
|
|
2
|
+
//
|
|
3
|
+
// The platform session lives in an httpOnly cross-site cookie the app's
|
|
4
|
+
// origin can't read, so on a cold load the SDK would POST `/refresh`
|
|
5
|
+
// blindly; for a signed-out visitor that 401s, which the browser logs to
|
|
6
|
+
// the console even though the SDK handles it cleanly. The hint lets the SDK
|
|
7
|
+
// skip the probe when it has no reason to believe a session exists.
|
|
8
|
+
//
|
|
9
|
+
// Set after any successful refresh, cleared on sign-out or an empty
|
|
10
|
+
// refresh. localStorage (not sessionStorage) so a returning, already-
|
|
11
|
+
// approved user gets a silent restore in a brand-new tab. The value is a
|
|
12
|
+
// non-secret boolean flag (the real session is the server-side row gated by
|
|
13
|
+
// `approved_apps`, useless without the cookie), so readable storage leaks
|
|
14
|
+
// nothing. Keyed per app id.
|
|
15
|
+
const KEY_PREFIX = '__brass_login_hint_';
|
|
16
|
+
function getStorage() {
|
|
17
|
+
if (typeof localStorage === 'undefined')
|
|
18
|
+
return null;
|
|
19
|
+
try {
|
|
20
|
+
return localStorage;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function key(appId) {
|
|
27
|
+
return `${KEY_PREFIX}${appId}`;
|
|
28
|
+
}
|
|
29
|
+
export function storeLoginHint(appId) {
|
|
30
|
+
const storage = getStorage();
|
|
31
|
+
if (!storage)
|
|
32
|
+
return;
|
|
33
|
+
try {
|
|
34
|
+
storage.setItem(key(appId), '1');
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// Quota / disabled storage. The hint is a best-effort optimisation;
|
|
38
|
+
// without it the SDK probes /refresh unconditionally.
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export function readLoginHint(appId) {
|
|
42
|
+
const storage = getStorage();
|
|
43
|
+
if (!storage)
|
|
44
|
+
return false;
|
|
45
|
+
try {
|
|
46
|
+
return storage.getItem(key(appId)) === '1';
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export function clearLoginHint(appId) {
|
|
53
|
+
const storage = getStorage();
|
|
54
|
+
if (!storage)
|
|
55
|
+
return;
|
|
56
|
+
try {
|
|
57
|
+
storage.removeItem(key(appId));
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
// See storeLoginHint.
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=login-hint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login-hint.js","sourceRoot":"","sources":["../src/login-hint.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,wEAAwE;AACxE,qEAAqE;AACrE,yEAAyE;AACzE,4EAA4E;AAC5E,oEAAoE;AACpE,EAAE;AACF,oEAAoE;AACpE,sEAAsE;AACtE,yEAAyE;AACzE,4EAA4E;AAC5E,0EAA0E;AAC1E,6BAA6B;AAE7B,MAAM,UAAU,GAAG,qBAAqB,CAAC;AAEzC,SAAS,UAAU;IACjB,IAAI,OAAO,YAAY,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACrD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,GAAG,CAAC,KAAa;IACxB,OAAO,GAAG,UAAU,GAAG,KAAK,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,IAAI,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,oEAAoE;QACpE,sDAAsD;IACxD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,IAAI,CAAC;QACH,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const MUTATE_BATCH_JSON_BUDGET_CHARS: number;
|
|
2
|
+
/**
|
|
3
|
+
* Decides when a mutation should commit. The caller supplies what a commit
|
|
4
|
+
* means, since an ordered map reconciles its order list first.
|
|
5
|
+
*/
|
|
6
|
+
export declare class MutateBatcher {
|
|
7
|
+
private readonly _flush;
|
|
8
|
+
private _chars;
|
|
9
|
+
constructor(_flush: () => void);
|
|
10
|
+
/** Account for one assignment, from the proxy's set trap. */
|
|
11
|
+
record(value: unknown): void;
|
|
12
|
+
recordDelete(): void;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=mutate-batching.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutate-batching.d.ts","sourceRoot":"","sources":["../src/mutate-batching.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,8BAA8B,QAAY,CAAC;AAkBxD;;;GAGG;AACH,qBAAa,aAAa;IAGZ,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,MAAM,CAAK;gBAEU,MAAM,EAAE,MAAM,IAAI;IAE/C,6DAA6D;IAC7D,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAY5B,YAAY,IAAI,IAAI;CAGrB"}
|