@interop/was-react 0.1.7 → 0.1.8
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/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react/documentApp.d.ts +116 -0
- package/dist/react/documentApp.d.ts.map +1 -0
- package/dist/react/documentApp.js +182 -0
- package/dist/react/documentApp.js.map +1 -0
- package/dist/react/index.d.ts +1 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +1 -0
- package/dist/react/index.js.map +1 -1
- package/dist/storage/entityStore.d.ts +7 -0
- package/dist/storage/entityStore.d.ts.map +1 -1
- package/dist/storage/entityStore.js +8 -0
- package/dist/storage/entityStore.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -33,5 +33,5 @@ export { hydrateAll, clearAllEntityStores, patchFromChange, scheduleRehydrate, c
|
|
|
33
33
|
export { isAuthError, SyncController, createSyncController } from './storage/syncController.js';
|
|
34
34
|
export { startWasSync } from './storage/wasSync.js';
|
|
35
35
|
export { createAuthStore, type SessionStatus, type AuthState, type WasAuthStore } from './session/index.js';
|
|
36
|
-
export { WasSessionProvider, WasSessionContext, useAuthStore, useSession, useLogin, useLogout, useClearData, useHasLocalData, useReconnect, useSyncStatus, type SyncRollup } from './react/index.js';
|
|
36
|
+
export { WasSessionProvider, WasSessionContext, useAuthStore, useSession, useLogin, useLogout, useClearData, useHasLocalData, useReconnect, useSyncStatus, type SyncRollup, defineDocumentApp, DOCUMENT_COLLECTION_KEY, DOCUMENT_EXPORT_FORMAT, type DocumentApp } from './react/index.js';
|
|
37
37
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -42,5 +42,5 @@ export { startWasSync } from './storage/wasSync.js';
|
|
|
42
42
|
// Session lifecycle: the session auth store factory (the four-state machine).
|
|
43
43
|
export { createAuthStore } from './session/index.js';
|
|
44
44
|
// React: the session provider + hooks.
|
|
45
|
-
export { WasSessionProvider, WasSessionContext, useAuthStore, useSession, useLogin, useLogout, useClearData, useHasLocalData, useReconnect, useSyncStatus } from './react/index.js';
|
|
45
|
+
export { WasSessionProvider, WasSessionContext, useAuthStore, useSession, useLogin, useLogout, useClearData, useHasLocalData, useReconnect, useSyncStatus, defineDocumentApp, DOCUMENT_COLLECTION_KEY, DOCUMENT_EXPORT_FORMAT } from './react/index.js';
|
|
46
46
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;GAQG;AAEH,0BAA0B;AAC1B,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,kBAAkB,EAOnB,MAAM,aAAa,CAAA;AAEpB,oCAAoC;AACpC,OAAO,EACL,qBAAqB,EACrB,WAAW,EAEZ,MAAM,aAAa,CAAA;AAEpB,6DAA6D;AAC7D,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAGnB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,oBAAoB,EAErB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,eAAe,EAAkB,MAAM,yBAAyB,CAAA;AACzE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAGjB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,YAAY,EACZ,cAAc,EAGf,MAAM,0BAA0B,CAAA;AAEjC,2EAA2E;AAC3E,OAAO,EACL,qBAAqB,EACrB,SAAS,EACT,QAAQ,EACR,UAAU,EACX,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACf,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,WAAW,EAEZ,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,eAAe,EACf,aAAa,EACb,mBAAmB,EAIpB,MAAM,qBAAqB,CAAA;AAkB5B,qDAAqD;AACrD,cAAc,iBAAiB,CAAA;AAE/B,0EAA0E;AAC1E,gFAAgF;AAChF,0BAA0B;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,WAAW,EACZ,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAoB,MAAM,0BAA0B,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAqB,MAAM,6BAA6B,CAAA;AAC/E,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAEjB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,UAAU,EACV,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,WAAW,EACX,cAAc,EACd,oBAAoB,EACrB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,8EAA8E;AAC9E,OAAO,EACL,eAAe,EAIhB,MAAM,oBAAoB,CAAA;AAE3B,uCAAuC;AACvC,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,aAAa,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;GAQG;AAEH,0BAA0B;AAC1B,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,kBAAkB,EAOnB,MAAM,aAAa,CAAA;AAEpB,oCAAoC;AACpC,OAAO,EACL,qBAAqB,EACrB,WAAW,EAEZ,MAAM,aAAa,CAAA;AAEpB,6DAA6D;AAC7D,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAGnB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,oBAAoB,EAErB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,eAAe,EAAkB,MAAM,yBAAyB,CAAA;AACzE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAGjB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,YAAY,EACZ,cAAc,EAGf,MAAM,0BAA0B,CAAA;AAEjC,2EAA2E;AAC3E,OAAO,EACL,qBAAqB,EACrB,SAAS,EACT,QAAQ,EACR,UAAU,EACX,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACf,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,WAAW,EAEZ,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,eAAe,EACf,aAAa,EACb,mBAAmB,EAIpB,MAAM,qBAAqB,CAAA;AAkB5B,qDAAqD;AACrD,cAAc,iBAAiB,CAAA;AAE/B,0EAA0E;AAC1E,gFAAgF;AAChF,0BAA0B;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,WAAW,EACZ,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAoB,MAAM,0BAA0B,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAqB,MAAM,6BAA6B,CAAA;AAC/E,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAEjB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,UAAU,EACV,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,WAAW,EACX,cAAc,EACd,oBAAoB,EACrB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,8EAA8E;AAC9E,OAAO,EACL,eAAe,EAIhB,MAAM,oBAAoB,CAAA;AAE3B,uCAAuC;AACvC,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,aAAa,EAEb,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EAEvB,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import type { StoreRegistry, WasAppConfig, WasExpiryConfig, WasSyncConfig } from '../config.js';
|
|
2
|
+
import type { SeedCredentialConfig } from '../identity/seedCredential.js';
|
|
3
|
+
import type { SessionStatus } from '../session/authStore.js';
|
|
4
|
+
import type { SyncRollup } from '../storage/syncStatusStore.js';
|
|
5
|
+
/**
|
|
6
|
+
* The localStore / RxDB collection key the facade's one collection uses.
|
|
7
|
+
*/
|
|
8
|
+
export declare const DOCUMENT_COLLECTION_KEY = "document";
|
|
9
|
+
/**
|
|
10
|
+
* The `format` tag stamped into (and required of) export files.
|
|
11
|
+
*/
|
|
12
|
+
export declare const DOCUMENT_EXPORT_FORMAT = "was-document/v1";
|
|
13
|
+
/**
|
|
14
|
+
* Everything `defineDocumentApp` hands back: the config + registry to spread
|
|
15
|
+
* into `WasSessionProvider`, and the typed document hook for components.
|
|
16
|
+
*/
|
|
17
|
+
export interface DocumentApp<T extends object> {
|
|
18
|
+
/**
|
|
19
|
+
* The app-wide was-react configuration (one sandbox collection,
|
|
20
|
+
* local-first onboarding). Pass to `WasSessionProvider`.
|
|
21
|
+
*/
|
|
22
|
+
config: WasAppConfig;
|
|
23
|
+
/**
|
|
24
|
+
* The singleton-document store registry. Pass to `WasSessionProvider`.
|
|
25
|
+
*/
|
|
26
|
+
registry: StoreRegistry;
|
|
27
|
+
/**
|
|
28
|
+
* The tier-1 document hook. Usable in any component below the provider.
|
|
29
|
+
*/
|
|
30
|
+
useDocument: () => {
|
|
31
|
+
/**
|
|
32
|
+
* The document: `undefined` during boot, then the stored value or the
|
|
33
|
+
* configured `initial` when nothing has been written yet.
|
|
34
|
+
*/
|
|
35
|
+
doc: T | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Merge a partial patch (or apply an updater function) onto the current
|
|
38
|
+
* document and persist it, stamping the LWW fields. The write lands in the
|
|
39
|
+
* encrypted local replica first and replicates in the background when
|
|
40
|
+
* connected.
|
|
41
|
+
*/
|
|
42
|
+
update: (patch: Partial<T> | ((prev: T) => T)) => Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* The session state: `'local'` (no wallet, fully usable) is home for a
|
|
45
|
+
* tier-1 app; `'connected'`/`'reconnect'` mirror the session machine.
|
|
46
|
+
*/
|
|
47
|
+
status: SessionStatus;
|
|
48
|
+
/**
|
|
49
|
+
* The aggregate replication rollup (`'offline'` until connected).
|
|
50
|
+
*/
|
|
51
|
+
sync: SyncRollup;
|
|
52
|
+
/**
|
|
53
|
+
* Serialize the current document to a downloadable JSON blob.
|
|
54
|
+
*/
|
|
55
|
+
exportFile: () => Promise<Blob>;
|
|
56
|
+
/**
|
|
57
|
+
* Replace the document with one previously exported via `exportFile`.
|
|
58
|
+
* Rejects when the file is not a `was-document/v1` export.
|
|
59
|
+
*/
|
|
60
|
+
importFile: (file: File) => Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* "Save to Web Spaces": run the CHAPI wallet login, requesting a grant for
|
|
63
|
+
* exactly this app's one sandbox collection, then adopt (merge) the local
|
|
64
|
+
* document into it and start background sync.
|
|
65
|
+
*/
|
|
66
|
+
connect: () => Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Detach the wallet session (data already synced stays on the server and
|
|
69
|
+
* in the kept device replica) and land back in a fresh `local` state.
|
|
70
|
+
*/
|
|
71
|
+
disconnect: () => Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* True while the CHAPI login is in flight.
|
|
74
|
+
*/
|
|
75
|
+
connecting: boolean;
|
|
76
|
+
/**
|
|
77
|
+
* The last session error (a failed login or boot), or `null`.
|
|
78
|
+
*/
|
|
79
|
+
error: string | null;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Builds the complete wiring for a one-document app: a `WasAppConfig` with a
|
|
84
|
+
* single sandbox collection and local-first onboarding, the singleton-document
|
|
85
|
+
* store registry, and the typed `useDocument` hook bound to both.
|
|
86
|
+
*
|
|
87
|
+
* @param options {object}
|
|
88
|
+
* @param options.appName {string} human-readable name (consent reason lines)
|
|
89
|
+
* @param options.appOrigin {string} this app's own web origin
|
|
90
|
+
* @param [options.wasServerUrl] {string} expected WAS server URL
|
|
91
|
+
* @param [options.mediatorBase] {string} CHAPI mediator base URL
|
|
92
|
+
* @param options.document {object} `collectionId` (the WAS sandbox
|
|
93
|
+
* collection id) and `initial` (the document value before the first write)
|
|
94
|
+
* @param options.credential {SeedCredentialConfig} seed-credential naming
|
|
95
|
+
* @param [options.dbName] {string} local database base name
|
|
96
|
+
* @param [options.storageKeyPrefix] {string} localStorage key prefix
|
|
97
|
+
* @param [options.sync] {WasSyncConfig} replication tuning
|
|
98
|
+
* @param [options.expiry] {WasExpiryConfig} near-expiry warning tuning
|
|
99
|
+
* @returns {DocumentApp<T>}
|
|
100
|
+
*/
|
|
101
|
+
export declare function defineDocumentApp<T extends object>({ appName, appOrigin, wasServerUrl, mediatorBase, document, credential, dbName, storageKeyPrefix, sync, expiry }: {
|
|
102
|
+
appName: string;
|
|
103
|
+
appOrigin: string;
|
|
104
|
+
wasServerUrl?: string;
|
|
105
|
+
mediatorBase?: string;
|
|
106
|
+
document: {
|
|
107
|
+
collectionId: string;
|
|
108
|
+
initial: T;
|
|
109
|
+
};
|
|
110
|
+
credential: SeedCredentialConfig;
|
|
111
|
+
dbName?: string;
|
|
112
|
+
storageKeyPrefix?: string;
|
|
113
|
+
sync?: WasSyncConfig;
|
|
114
|
+
expiry?: WasExpiryConfig;
|
|
115
|
+
}): DocumentApp<T>;
|
|
116
|
+
//# sourceMappingURL=documentApp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentApp.d.ts","sourceRoot":"","sources":["../../src/react/documentApp.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,eAAe,EACf,aAAa,EACd,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAG5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAG/D;;GAEG;AACH,eAAO,MAAM,uBAAuB,aAAa,CAAA;AAOjD;;GAEG;AACH,eAAO,MAAM,sBAAsB,oBAAoB,CAAA;AAavD;;;GAGG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM;IAC3C;;;OAGG;IACH,MAAM,EAAE,YAAY,CAAA;IACpB;;OAEG;IACH,QAAQ,EAAE,aAAa,CAAA;IACvB;;OAEG;IACH,WAAW,EAAE,MAAM;QACjB;;;WAGG;QACH,GAAG,EAAE,CAAC,GAAG,SAAS,CAAA;QAClB;;;;;WAKG;QACH,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QAC/D;;;WAGG;QACH,MAAM,EAAE,aAAa,CAAA;QACrB;;WAEG;QACH,IAAI,EAAE,UAAU,CAAA;QAChB;;WAEG;QACH,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;QAC/B;;;WAGG;QACH,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QACzC;;;;WAIG;QACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;QAC5B;;;WAGG;QACH,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;QAC/B;;WAEG;QACH,UAAU,EAAE,OAAO,CAAA;QACnB;;WAEG;QACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KACrB,CAAA;CACF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,EAClD,OAAO,EACP,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,IAAI,EACJ,MAAM,EACP,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC,CAAA;KAAE,CAAA;IAC9C,UAAU,EAAE,oBAAoB,CAAA;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,IAAI,CAAC,EAAE,aAAa,CAAA;IACpB,MAAM,CAAC,EAAE,eAAe,CAAA;CACzB,GAAG,WAAW,CAAC,CAAC,CAAC,CAiIjB"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2026 Interop Alliance. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* The tier-1 "one sandbox document" facade: `defineDocumentApp` builds the
|
|
6
|
+
* whole was-react wiring (config, store registry, entity store) for an app
|
|
7
|
+
* whose entire model is a single key-value document -- an Excalidraw-style
|
|
8
|
+
* editor, a browser-game save file -- and returns a typed `useDocument` hook
|
|
9
|
+
* over it. The app never sees `createEntityStore`, grants parsing, or sync
|
|
10
|
+
* internals: it renders `doc`, calls `update`, and optionally offers file
|
|
11
|
+
* export/import and a "Save to Web Spaces" connect button.
|
|
12
|
+
*
|
|
13
|
+
* The facade is a degenerate entity store: one collection (the app-named
|
|
14
|
+
* sandbox collection) holding one logical document under a fixed id. The
|
|
15
|
+
* stored row wraps the app's data (`{ id, updatedAt, deviceId, data }`) so app
|
|
16
|
+
* fields can never collide with the LWW fields the sync layer requires, and
|
|
17
|
+
* the facade stamps `updatedAt`/`deviceId` on every write itself. Hydration
|
|
18
|
+
* goes through `LocalStore.hydrateSingleton`, which LWW-reconciles the
|
|
19
|
+
* duplicate envelope rows two devices can mint for the same logical document.
|
|
20
|
+
*
|
|
21
|
+
* `connect()` is plain `login()`: the config registers exactly one collection,
|
|
22
|
+
* so the wallet consent screen shows a single legible request, and the default
|
|
23
|
+
* adopt-on-login merge carries the local document into the granted collection.
|
|
24
|
+
*
|
|
25
|
+
* Multi-document ("slot") variants are deliberately not supported yet:
|
|
26
|
+
* `hydrateSingleton` reconciles ALL rows of the collection down to one winner,
|
|
27
|
+
* so named slots need a grouped per-id reconciler first. An app that has
|
|
28
|
+
* outgrown one document should move to `createEntityStore`.
|
|
29
|
+
*/
|
|
30
|
+
import { useStore } from 'zustand';
|
|
31
|
+
import { createEntityStore } from '../storage/entityStore.js';
|
|
32
|
+
import { getDeviceId, requireStore } from '../storage/storageManager.js';
|
|
33
|
+
import { useAuthStore, useSession, useSyncStatus } from './hooks.js';
|
|
34
|
+
/**
|
|
35
|
+
* The localStore / RxDB collection key the facade's one collection uses.
|
|
36
|
+
*/
|
|
37
|
+
export const DOCUMENT_COLLECTION_KEY = 'document';
|
|
38
|
+
/**
|
|
39
|
+
* The fixed logical id of the singleton document row.
|
|
40
|
+
*/
|
|
41
|
+
const DOCUMENT_ID = 'main';
|
|
42
|
+
/**
|
|
43
|
+
* The `format` tag stamped into (and required of) export files.
|
|
44
|
+
*/
|
|
45
|
+
export const DOCUMENT_EXPORT_FORMAT = 'was-document/v1';
|
|
46
|
+
/**
|
|
47
|
+
* Builds the complete wiring for a one-document app: a `WasAppConfig` with a
|
|
48
|
+
* single sandbox collection and local-first onboarding, the singleton-document
|
|
49
|
+
* store registry, and the typed `useDocument` hook bound to both.
|
|
50
|
+
*
|
|
51
|
+
* @param options {object}
|
|
52
|
+
* @param options.appName {string} human-readable name (consent reason lines)
|
|
53
|
+
* @param options.appOrigin {string} this app's own web origin
|
|
54
|
+
* @param [options.wasServerUrl] {string} expected WAS server URL
|
|
55
|
+
* @param [options.mediatorBase] {string} CHAPI mediator base URL
|
|
56
|
+
* @param options.document {object} `collectionId` (the WAS sandbox
|
|
57
|
+
* collection id) and `initial` (the document value before the first write)
|
|
58
|
+
* @param options.credential {SeedCredentialConfig} seed-credential naming
|
|
59
|
+
* @param [options.dbName] {string} local database base name
|
|
60
|
+
* @param [options.storageKeyPrefix] {string} localStorage key prefix
|
|
61
|
+
* @param [options.sync] {WasSyncConfig} replication tuning
|
|
62
|
+
* @param [options.expiry] {WasExpiryConfig} near-expiry warning tuning
|
|
63
|
+
* @returns {DocumentApp<T>}
|
|
64
|
+
*/
|
|
65
|
+
export function defineDocumentApp({ appName, appOrigin, wasServerUrl, mediatorBase, document, credential, dbName, storageKeyPrefix, sync, expiry }) {
|
|
66
|
+
const { collectionId, initial } = document;
|
|
67
|
+
const docStore = createEntityStore(DOCUMENT_COLLECTION_KEY);
|
|
68
|
+
const config = {
|
|
69
|
+
appName,
|
|
70
|
+
appOrigin,
|
|
71
|
+
...(wasServerUrl !== undefined && { wasServerUrl }),
|
|
72
|
+
...(mediatorBase !== undefined && { mediatorBase }),
|
|
73
|
+
collections: [{ key: DOCUMENT_COLLECTION_KEY, id: collectionId }],
|
|
74
|
+
onboarding: 'local-first',
|
|
75
|
+
credential,
|
|
76
|
+
...(dbName !== undefined && { dbName }),
|
|
77
|
+
...(storageKeyPrefix !== undefined && { storageKeyPrefix }),
|
|
78
|
+
...(sync !== undefined && { sync }),
|
|
79
|
+
...(expiry !== undefined && { expiry })
|
|
80
|
+
};
|
|
81
|
+
const registry = {
|
|
82
|
+
[DOCUMENT_COLLECTION_KEY]: {
|
|
83
|
+
// Whole-collection hydrate doubles as the duplicate-singleton
|
|
84
|
+
// reconciler: keep the LWW winner, tombstone the losers.
|
|
85
|
+
hydrate: async () => {
|
|
86
|
+
const winner = await requireStore().hydrateSingleton(DOCUMENT_COLLECTION_KEY);
|
|
87
|
+
docStore.getState().replaceAll(winner ? [winner] : []);
|
|
88
|
+
},
|
|
89
|
+
upsert: doc => docStore.getState().patch(doc),
|
|
90
|
+
drop: uuid => docStore.getState().drop(uuid),
|
|
91
|
+
clear: () => docStore.getState().replaceAll([])
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Merges the patch (or applies the updater) and persists the result under
|
|
96
|
+
* the fixed document id with fresh LWW stamps.
|
|
97
|
+
*
|
|
98
|
+
* @param patch {Partial<T> | ((prev: T) => T)}
|
|
99
|
+
* @returns {Promise<void>}
|
|
100
|
+
*/
|
|
101
|
+
async function update(patch) {
|
|
102
|
+
const held = docStore.getState().byId.get(DOCUMENT_ID);
|
|
103
|
+
const prev = held?.data ?? initial;
|
|
104
|
+
const data = typeof patch === 'function' ? patch(prev) : { ...prev, ...patch };
|
|
105
|
+
await docStore.getState().upsert({
|
|
106
|
+
id: DOCUMENT_ID,
|
|
107
|
+
updatedAt: new Date().toISOString(),
|
|
108
|
+
deviceId: getDeviceId({
|
|
109
|
+
...(storageKeyPrefix !== undefined && { storageKeyPrefix })
|
|
110
|
+
}),
|
|
111
|
+
data
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Serializes the current document (or `initial` before any write) into a
|
|
116
|
+
* tagged, versioned JSON blob.
|
|
117
|
+
*
|
|
118
|
+
* @returns {Promise<Blob>}
|
|
119
|
+
*/
|
|
120
|
+
async function exportFile() {
|
|
121
|
+
const held = docStore.getState().byId.get(DOCUMENT_ID);
|
|
122
|
+
const body = {
|
|
123
|
+
format: DOCUMENT_EXPORT_FORMAT,
|
|
124
|
+
app: appName,
|
|
125
|
+
exportedAt: new Date().toISOString(),
|
|
126
|
+
document: held?.data ?? initial
|
|
127
|
+
};
|
|
128
|
+
return new Blob([JSON.stringify(body, null, 2)], {
|
|
129
|
+
type: 'application/json'
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Parses an export file and replaces the document with its contents (a
|
|
134
|
+
* persisted write with fresh LWW stamps).
|
|
135
|
+
*
|
|
136
|
+
* @param file {File}
|
|
137
|
+
* @returns {Promise<void>}
|
|
138
|
+
*/
|
|
139
|
+
async function importFile(file) {
|
|
140
|
+
let parsed;
|
|
141
|
+
try {
|
|
142
|
+
parsed = JSON.parse(await file.text());
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
throw new Error('Not a valid export file (unreadable JSON).');
|
|
146
|
+
}
|
|
147
|
+
const record = parsed;
|
|
148
|
+
if (record === null ||
|
|
149
|
+
record.format !== DOCUMENT_EXPORT_FORMAT ||
|
|
150
|
+
typeof record.document !== 'object' ||
|
|
151
|
+
record.document === null) {
|
|
152
|
+
throw new Error(`Not a "${DOCUMENT_EXPORT_FORMAT}" export file; nothing imported.`);
|
|
153
|
+
}
|
|
154
|
+
const imported = record.document;
|
|
155
|
+
await update(() => imported);
|
|
156
|
+
}
|
|
157
|
+
function useDocument() {
|
|
158
|
+
const held = docStore(state => state.byId.get(DOCUMENT_ID));
|
|
159
|
+
const { status, authenticating, error } = useSession();
|
|
160
|
+
const { state: syncState } = useSyncStatus();
|
|
161
|
+
const store = useAuthStore();
|
|
162
|
+
const login = useStore(store, state => state.login);
|
|
163
|
+
const logout = useStore(store, state => state.logout);
|
|
164
|
+
// Hydration completes before the machine leaves `boot`, so "left boot" is
|
|
165
|
+
// exactly "the stored document (or its absence) is now known".
|
|
166
|
+
const doc = status === 'boot' ? undefined : (held?.data ?? initial);
|
|
167
|
+
return {
|
|
168
|
+
doc,
|
|
169
|
+
update,
|
|
170
|
+
status,
|
|
171
|
+
sync: syncState,
|
|
172
|
+
exportFile,
|
|
173
|
+
importFile,
|
|
174
|
+
connect: () => login(),
|
|
175
|
+
disconnect: () => logout(),
|
|
176
|
+
connecting: authenticating,
|
|
177
|
+
error
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
return { config, registry, useDocument };
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=documentApp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentApp.js","sourceRoot":"","sources":["../../src/react/documentApp.ts"],"names":[],"mappings":"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"}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -8,4 +8,5 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export { WasSessionProvider, WasSessionContext } from './WasSessionProvider.js';
|
|
10
10
|
export { useAuthStore, useSession, useLogin, useLogout, useClearData, useHasLocalData, useReconnect, useSyncStatus, type SyncRollup } from './hooks.js';
|
|
11
|
+
export { defineDocumentApp, DOCUMENT_COLLECTION_KEY, DOCUMENT_EXPORT_FORMAT, type DocumentApp } from './documentApp.js';
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;GAIG;AACH,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC/E,OAAO,EACL,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,aAAa,EACb,KAAK,UAAU,EAChB,MAAM,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;GAIG;AACH,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC/E,OAAO,EACL,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,aAAa,EACb,KAAK,UAAU,EAChB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAA"}
|
package/dist/react/index.js
CHANGED
|
@@ -8,4 +8,5 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export { WasSessionProvider, WasSessionContext } from './WasSessionProvider.js';
|
|
10
10
|
export { useAuthStore, useSession, useLogin, useLogout, useClearData, useHasLocalData, useReconnect, useSyncStatus } from './hooks.js';
|
|
11
|
+
export { defineDocumentApp, DOCUMENT_COLLECTION_KEY, DOCUMENT_EXPORT_FORMAT } from './documentApp.js';
|
|
11
12
|
//# sourceMappingURL=index.js.map
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;GAIG;AACH,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC/E,OAAO,EACL,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,aAAa,EAEd,MAAM,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;GAIG;AACH,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC/E,OAAO,EACL,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,aAAa,EAEd,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EAEvB,MAAM,kBAAkB,CAAA"}
|
|
@@ -37,6 +37,13 @@ export interface EntityStore<T extends {
|
|
|
37
37
|
* Re-encrypt a doc in place (sequence+1), then replace it in the Map.
|
|
38
38
|
*/
|
|
39
39
|
update: (doc: T) => Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Encrypt+insert the doc when its uuid is new, otherwise re-encrypt it in
|
|
42
|
+
* place (insert-or-update routed by the hydration index), then set it in the
|
|
43
|
+
* Map. The verb for callers that do not track an insert-vs-update flag of
|
|
44
|
+
* their own (e.g. a singleton document).
|
|
45
|
+
*/
|
|
46
|
+
upsert: (doc: T) => Promise<void>;
|
|
40
47
|
/**
|
|
41
48
|
* Tombstone a doc, then drop it from the Map.
|
|
42
49
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entityStore.d.ts","sourceRoot":"","sources":["../../src/storage/entityStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAU,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAA;AAInE,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;IACnD;;OAEG;IACH,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACpB;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B;;OAEG;IACH,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC;;OAEG;IACH,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC;;OAEG;IACH,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC;;;;;OAKG;IACH,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAA;IAC/B;;;;;;;OAOG;IACH,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;IACvB;;;OAGG;IACH,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EACxD,aAAa,EAAE,MAAM,GACpB,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"entityStore.d.ts","sourceRoot":"","sources":["../../src/storage/entityStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAU,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAA;AAInE,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;IACnD;;OAEG;IACH,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACpB;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B;;OAEG;IACH,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC;;OAEG;IACH,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC;;;;;OAKG;IACH,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC;;OAEG;IACH,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC;;;;;OAKG;IACH,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAA;IAC/B;;;;;;;OAOG;IACH,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;IACvB;;;OAGG;IACH,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EACxD,aAAa,EAAE,MAAM,GACpB,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CA+GzC"}
|
|
@@ -103,6 +103,14 @@ export function createEntityStore(collectionKey) {
|
|
|
103
103
|
return { byId };
|
|
104
104
|
});
|
|
105
105
|
},
|
|
106
|
+
upsert: async (doc) => {
|
|
107
|
+
await requireStore().upsertEntity(collectionKey, doc);
|
|
108
|
+
set(state => {
|
|
109
|
+
const byId = new Map(state.byId);
|
|
110
|
+
byId.set(doc.id, doc);
|
|
111
|
+
return { byId };
|
|
112
|
+
});
|
|
113
|
+
},
|
|
106
114
|
remove: async (uuid) => {
|
|
107
115
|
await requireStore().deleteEntity(collectionKey, uuid);
|
|
108
116
|
set(state => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entityStore.js","sourceRoot":"","sources":["../../src/storage/entityStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,MAAM,EAAqC,MAAM,SAAS,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"entityStore.js","sourceRoot":"","sources":["../../src/storage/entityStore.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@interop/was-react",
|
|
3
3
|
"description": "React library for building 'Bring Your Own Everything' (BYOE) apps on Wallet Attached Storage: DID Auth login via CHAPI wallet, local-first encrypted storage, and background sync to a WAS server.",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.8",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "pnpm run clear && tsc",
|