@interop/was-react 0.8.2 → 0.9.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/README.md +55 -44
- package/dist/auth/chapi.d.ts.map +1 -1
- package/dist/auth/chapi.js +16 -5
- package/dist/auth/chapi.js.map +1 -1
- package/dist/auth/loginFlow.d.ts.map +1 -1
- package/dist/auth/loginFlow.js +55 -49
- package/dist/auth/loginFlow.js.map +1 -1
- package/dist/auth/verifyResponse.d.ts.map +1 -1
- package/dist/auth/verifyResponse.js +27 -10
- package/dist/auth/verifyResponse.js.map +1 -1
- package/dist/auth/walletRequestTypes.d.ts +9 -90
- package/dist/auth/walletRequestTypes.d.ts.map +1 -1
- package/dist/config.d.ts +9 -9
- package/dist/config.js +0 -0
- package/dist/dev/provisionDevGrants.d.ts.map +1 -1
- package/dist/dev/provisionDevGrants.js +18 -19
- package/dist/dev/provisionDevGrants.js.map +1 -1
- package/dist/grants.d.ts +19 -9
- package/dist/grants.d.ts.map +1 -1
- package/dist/grants.js +17 -2
- package/dist/grants.js.map +1 -1
- package/dist/identity/agents.d.ts +1 -1
- package/dist/identity/agents.d.ts.map +1 -1
- package/dist/identity/agents.js +10 -25
- package/dist/identity/agents.js.map +1 -1
- package/dist/identity/appSession.d.ts +27 -0
- package/dist/identity/appSession.d.ts.map +1 -1
- package/dist/identity/appSession.js +51 -13
- package/dist/identity/appSession.js.map +1 -1
- package/dist/identity/seedCredential.d.ts +7 -0
- package/dist/identity/seedCredential.d.ts.map +1 -1
- package/dist/identity/seedCredential.js +11 -14
- package/dist/identity/seedCredential.js.map +1 -1
- package/dist/identity/seedStore.d.ts +19 -0
- package/dist/identity/seedStore.d.ts.map +1 -1
- package/dist/identity/seedStore.js +40 -13
- package/dist/identity/seedStore.js.map +1 -1
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -4
- package/dist/index.js.map +1 -1
- package/dist/jsonLd.d.ts +19 -0
- package/dist/jsonLd.d.ts.map +1 -0
- package/dist/jsonLd.js +24 -0
- package/dist/jsonLd.js.map +1 -0
- package/dist/mui/AdoptDialog.d.ts.map +1 -1
- package/dist/mui/AdoptDialog.js +7 -3
- package/dist/mui/AdoptDialog.js.map +1 -1
- package/dist/mui/ClearDataDialog.d.ts.map +1 -1
- package/dist/mui/ClearDataDialog.js +12 -11
- package/dist/mui/ClearDataDialog.js.map +1 -1
- package/dist/mui/ConfirmDialog.d.ts +35 -0
- package/dist/mui/ConfirmDialog.d.ts.map +1 -0
- package/dist/mui/ConfirmDialog.js +18 -0
- package/dist/mui/ConfirmDialog.js.map +1 -0
- package/dist/mui/LogoutDialog.d.ts.map +1 -1
- package/dist/mui/LogoutDialog.js +7 -3
- package/dist/mui/LogoutDialog.js.map +1 -1
- package/dist/react/documentApp.d.ts +29 -0
- package/dist/react/documentApp.d.ts.map +1 -1
- package/dist/react/documentApp.js +9 -38
- package/dist/react/documentApp.js.map +1 -1
- package/dist/react/hooks.d.ts +13 -7
- package/dist/react/hooks.d.ts.map +1 -1
- package/dist/react/hooks.js +17 -11
- package/dist/react/hooks.js.map +1 -1
- package/dist/session/authStore.d.ts +9 -9
- package/dist/session/authStore.d.ts.map +1 -1
- package/dist/session/authStore.js +203 -112
- package/dist/session/authStore.js.map +1 -1
- package/dist/storage/adopt.d.ts +5 -1
- package/dist/storage/adopt.d.ts.map +1 -1
- package/dist/storage/adopt.js +8 -24
- package/dist/storage/adopt.js.map +1 -1
- package/dist/storage/entityStore.d.ts.map +1 -1
- package/dist/storage/entityStore.js +27 -20
- package/dist/storage/entityStore.js.map +1 -1
- package/dist/storage/localStore.d.ts +12 -6
- package/dist/storage/localStore.d.ts.map +1 -1
- package/dist/storage/localStore.js +146 -77
- package/dist/storage/localStore.js.map +1 -1
- package/dist/storage/rehydrate.d.ts.map +1 -1
- package/dist/storage/rehydrate.js +20 -4
- package/dist/storage/rehydrate.js.map +1 -1
- package/dist/storage/sharedCollectionReader.d.ts +1 -1
- package/dist/storage/sharedCollectionReader.d.ts.map +1 -1
- package/dist/storage/sharedCollectionReader.js +79 -64
- package/dist/storage/sharedCollectionReader.js.map +1 -1
- package/dist/storage/storageManager.d.ts +3 -1
- package/dist/storage/storageManager.d.ts.map +1 -1
- package/dist/storage/storageManager.js +20 -6
- package/dist/storage/storageManager.js.map +1 -1
- package/dist/storage/syncController.d.ts +1 -16
- package/dist/storage/syncController.d.ts.map +1 -1
- package/dist/storage/syncController.js +48 -37
- package/dist/storage/syncController.js.map +1 -1
- package/dist/storage/syncStatusStore.d.ts +8 -6
- package/dist/storage/syncStatusStore.d.ts.map +1 -1
- package/dist/storage/syncStatusStore.js +6 -6
- package/dist/storage/syncStatusStore.js.map +1 -1
- package/dist/storage/wasRemoteStore.d.ts +34 -2
- package/dist/storage/wasRemoteStore.d.ts.map +1 -1
- package/dist/storage/wasRemoteStore.js +45 -7
- package/dist/storage/wasRemoteStore.js.map +1 -1
- package/dist/storage/wasSync.d.ts.map +1 -1
- package/dist/storage/wasSync.js +47 -38
- package/dist/storage/wasSync.js.map +1 -1
- package/dist/sync/changesQuery.d.ts.map +1 -1
- package/dist/sync/changesQuery.js +2 -9
- package/dist/sync/changesQuery.js.map +1 -1
- package/dist/sync/docCipher.d.ts +23 -10
- package/dist/sync/docCipher.d.ts.map +1 -1
- package/dist/sync/docCipher.js +17 -11
- package/dist/sync/docCipher.js.map +1 -1
- package/dist/sync/feedMasterPort.d.ts +6 -0
- package/dist/sync/feedMasterPort.d.ts.map +1 -1
- package/dist/sync/feedMasterPort.js +82 -37
- package/dist/sync/feedMasterPort.js.map +1 -1
- package/dist/sync/index.d.ts +6 -5
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +6 -3
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/lww.d.ts +27 -18
- package/dist/sync/lww.d.ts.map +1 -1
- package/dist/sync/lww.js +35 -8
- package/dist/sync/lww.js.map +1 -1
- package/dist/sync/lwwConflictHandler.d.ts +15 -14
- package/dist/sync/lwwConflictHandler.d.ts.map +1 -1
- package/dist/sync/lwwConflictHandler.js +37 -26
- package/dist/sync/lwwConflictHandler.js.map +1 -1
- package/dist/sync/pushWrites.d.ts +9 -9
- package/dist/sync/pushWrites.d.ts.map +1 -1
- package/dist/sync/pushWrites.js +102 -68
- package/dist/sync/pushWrites.js.map +1 -1
- package/dist/sync/syncedDocSchema.d.ts.map +1 -1
- package/dist/sync/syncedDocSchema.js +3 -0
- package/dist/sync/syncedDocSchema.js.map +1 -1
- package/dist/sync/types.d.ts +115 -15
- package/dist/sync/types.d.ts.map +1 -1
- package/dist/sync/types.js +36 -18
- package/dist/sync/types.js.map +1 -1
- package/dist/sync/wasSyncPort.d.ts +0 -11
- package/dist/sync/wasSyncPort.d.ts.map +1 -1
- package/dist/sync/wasSyncPort.js +20 -36
- package/dist/sync/wasSyncPort.js.map +1 -1
- package/package.json +6 -6
- package/dist/identity/initAppSession.d.ts +0 -27
- package/dist/identity/initAppSession.d.ts.map +0 -1
- package/dist/identity/initAppSession.js +0 -30
- package/dist/identity/initAppSession.js.map +0 -1
|
@@ -1,3 +1,32 @@
|
|
|
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 `useAppDocument` 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, clientId, data }`) so app
|
|
16
|
+
* fields can never collide with the LWW fields the sync layer requires, and
|
|
17
|
+
* the facade stamps `updatedAt`/`clientId` 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
|
+
*/
|
|
1
30
|
import type { StoreRegistry, WasAppConfig, WasExpiryConfig, WasSyncConfig } from '../config.js';
|
|
2
31
|
import type { SeedCredentialConfig } from '../identity/seedCredential.js';
|
|
3
32
|
import type { SessionStatus } from '../session/authStore.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentApp.d.ts","sourceRoot":"","sources":["../../src/react/documentApp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"documentApp.d.ts","sourceRoot":"","sources":["../../src/react/documentApp.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,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,cAAc,EAAE,MAAM;QACpB;;;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;;;;;;;WAOG;QACH,OAAO,EAAE,MAAM,OAAO,CAAC;YAAE,QAAQ,EAAE,OAAO,CAAA;SAAE,GAAG,IAAI,CAAC,CAAA;QACpD;;;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;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,EAClD,OAAO,EACP,SAAS,EACT,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,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"}
|
|
@@ -1,36 +1,6 @@
|
|
|
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 `useAppDocument` 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, clientId, data }`) so app
|
|
16
|
-
* fields can never collide with the LWW fields the sync layer requires, and
|
|
17
|
-
* the facade stamps `updatedAt`/`clientId` 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
1
|
import { createEntityStore } from '../storage/entityStore.js';
|
|
32
2
|
import { getClientId, requireStore } from '../storage/storageManager.js';
|
|
33
|
-
import {
|
|
3
|
+
import { useLogin, useLogout, useSyncStatus } from './hooks.js';
|
|
34
4
|
/**
|
|
35
5
|
* The localStore / RxDB collection key the facade's one collection uses.
|
|
36
6
|
*/
|
|
@@ -64,6 +34,11 @@ export const DOCUMENT_EXPORT_FORMAT = 'was-document/v1';
|
|
|
64
34
|
export function defineDocumentApp({ appName, appOrigin, mediatorBase, document, credential, dbName, storageKeyPrefix, sync, expiry }) {
|
|
65
35
|
const { collectionId, initial } = document;
|
|
66
36
|
const docStore = createEntityStore(DOCUMENT_COLLECTION_KEY);
|
|
37
|
+
// Resolved once, under the same prefix the config hands the session layer,
|
|
38
|
+
// so the facade's stamps and the adoption repair share one identity.
|
|
39
|
+
const clientId = getClientId({
|
|
40
|
+
...(storageKeyPrefix !== undefined && { storageKeyPrefix })
|
|
41
|
+
});
|
|
67
42
|
const config = {
|
|
68
43
|
appName,
|
|
69
44
|
appOrigin,
|
|
@@ -103,9 +78,7 @@ export function defineDocumentApp({ appName, appOrigin, mediatorBase, document,
|
|
|
103
78
|
await docStore.getState().upsert({
|
|
104
79
|
id: DOCUMENT_ID,
|
|
105
80
|
updatedAt: new Date().toISOString(),
|
|
106
|
-
clientId
|
|
107
|
-
...(storageKeyPrefix !== undefined && { storageKeyPrefix })
|
|
108
|
-
}),
|
|
81
|
+
clientId,
|
|
109
82
|
data
|
|
110
83
|
});
|
|
111
84
|
}
|
|
@@ -154,11 +127,9 @@ export function defineDocumentApp({ appName, appOrigin, mediatorBase, document,
|
|
|
154
127
|
}
|
|
155
128
|
function useAppDocument() {
|
|
156
129
|
const held = docStore(state => state.byId.get(DOCUMENT_ID));
|
|
157
|
-
const {
|
|
130
|
+
const { login, authenticating, status, error } = useLogin();
|
|
158
131
|
const { state: syncState } = useSyncStatus();
|
|
159
|
-
const
|
|
160
|
-
const login = useStore(store, state => state.login);
|
|
161
|
-
const logout = useStore(store, state => state.logout);
|
|
132
|
+
const logout = useLogout();
|
|
162
133
|
// Hydration completes before the machine leaves `boot`, so "left boot" is
|
|
163
134
|
// exactly "the stored document (or its absence) is now known".
|
|
164
135
|
const doc = status === 'boot' ? undefined : (held?.data ?? initial);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentApp.js","sourceRoot":"","sources":["../../src/react/documentApp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"documentApp.js","sourceRoot":"","sources":["../../src/react/documentApp.ts"],"names":[],"mappings":"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"}
|
package/dist/react/hooks.d.ts
CHANGED
|
@@ -10,13 +10,16 @@ import { type SyncRollup } from '../storage/syncStatusStore.js';
|
|
|
10
10
|
export declare function useAuthStore(): WasAuthStore;
|
|
11
11
|
/**
|
|
12
12
|
* The current session state (status/phase/expiry/reconnect flags). Re-renders
|
|
13
|
-
* only when one of the selected fields changes.
|
|
13
|
+
* only when one of the selected fields changes. `authenticating` and
|
|
14
|
+
* `accessExpired` are conveniences DERIVED here (`phase !== null` and
|
|
15
|
+
* `status === 'reconnect'`); the store keeps only `phase` and `status`.
|
|
14
16
|
*
|
|
15
17
|
* @returns {object}
|
|
16
18
|
*/
|
|
17
19
|
export declare function useSession(): {
|
|
18
20
|
status: ReturnType<WasAuthStore['getState']>['status'];
|
|
19
21
|
onboarding: ReturnType<WasAuthStore['getState']>['onboarding'];
|
|
22
|
+
clientId: string;
|
|
20
23
|
authenticating: boolean;
|
|
21
24
|
phase: ReturnType<WasAuthStore['getState']>['phase'];
|
|
22
25
|
error: string | null;
|
|
@@ -27,8 +30,9 @@ export declare function useSession(): {
|
|
|
27
30
|
};
|
|
28
31
|
/**
|
|
29
32
|
* The login action plus the state the login page renders. `authenticating` is
|
|
30
|
-
* the in-flight flag (the `status` stays `local` during
|
|
31
|
-
* exposed so a login page can redirect once it reads
|
|
33
|
+
* the in-flight flag, derived from `phase` (the `status` stays `local` during
|
|
34
|
+
* login); `status` is exposed so a login page can redirect once it reads
|
|
35
|
+
* `connected`. `login`
|
|
32
36
|
* accepts `{ adopt }` -- `'merge'` (default) migrates data created in `local`
|
|
33
37
|
* into the connected replica, `'leave'` sets it aside untouched.
|
|
34
38
|
*
|
|
@@ -84,6 +88,8 @@ export declare function useHasLocalData(): () => Promise<boolean>;
|
|
|
84
88
|
export declare function useSharedCollection(key: string): SharedCollectionReader | undefined;
|
|
85
89
|
/**
|
|
86
90
|
* The expired-access reconnect: the banner flags plus the reconnect action.
|
|
91
|
+
* `accessExpired` is derived from the session status (`status === 'reconnect'`),
|
|
92
|
+
* which the store keeps as its single source of truth.
|
|
87
93
|
*
|
|
88
94
|
* @returns {object}
|
|
89
95
|
*/
|
|
@@ -98,10 +104,10 @@ export declare function useReconnect(): {
|
|
|
98
104
|
*/
|
|
99
105
|
export type { SyncRollup };
|
|
100
106
|
/**
|
|
101
|
-
* The aggregate sync status over the per-collection replication statuses
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
* {@link deriveSyncRollup}.
|
|
107
|
+
* The aggregate sync status over the per-collection replication statuses (the
|
|
108
|
+
* sync-status store keys them by the registry's logical collection key). A thin
|
|
109
|
+
* subscription over that store: it reads the collection statuses and defers the
|
|
110
|
+
* offline / error > syncing > synced precedence to {@link deriveSyncRollup}.
|
|
105
111
|
*
|
|
106
112
|
* @returns {{ state: SyncRollup, label: string, title: string }}
|
|
107
113
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAA;AAClF,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,+BAA+B,CAAA;AAEtC;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,YAAY,CAS3C;AAED
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAA;AAClF,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,+BAA+B,CAAA;AAEtC;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,YAAY,CAS3C;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,IAAI;IAC5B,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;IACtD,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;IAC9D,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,OAAO,CAAA;IACvB,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IACpD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,aAAa,EAAE,OAAO,CAAA;IACtB,YAAY,EAAE,OAAO,CAAA;CACtB,CAiBA;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,IAAI;IAC1B,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE;QAChB,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;KAC1B,KAAK,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;IAC3C,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;IACtD,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IACpD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAaA;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAG3E;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,CAGlD;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,IAAI,MAAM,OAAO,CAAC,OAAO,CAAC,CAGxD;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,GACV,sBAAsB,GAAG,SAAS,CAGpC;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI;IAC9B,aAAa,EAAE,OAAO,CAAA;IACtB,YAAY,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC/B,CAWA;AAED;;;GAGG;AACH,YAAY,EAAE,UAAU,EAAE,CAAA;AAE1B;;;;;;;GAOG;AACH,wBAAgB,aAAa,IAAI;IAC/B,KAAK,EAAE,UAAU,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,CAKA"}
|
package/dist/react/hooks.js
CHANGED
|
@@ -27,7 +27,9 @@ export function useAuthStore() {
|
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
29
|
* The current session state (status/phase/expiry/reconnect flags). Re-renders
|
|
30
|
-
* only when one of the selected fields changes.
|
|
30
|
+
* only when one of the selected fields changes. `authenticating` and
|
|
31
|
+
* `accessExpired` are conveniences DERIVED here (`phase !== null` and
|
|
32
|
+
* `status === 'reconnect'`); the store keeps only `phase` and `status`.
|
|
31
33
|
*
|
|
32
34
|
* @returns {object}
|
|
33
35
|
*/
|
|
@@ -36,19 +38,21 @@ export function useSession() {
|
|
|
36
38
|
return useStore(store, useShallow(state => ({
|
|
37
39
|
status: state.status,
|
|
38
40
|
onboarding: state.onboarding,
|
|
39
|
-
|
|
41
|
+
clientId: state.clientId,
|
|
42
|
+
authenticating: state.phase !== null,
|
|
40
43
|
phase: state.phase,
|
|
41
44
|
error: state.error,
|
|
42
45
|
controllerDid: state.controllerDid,
|
|
43
46
|
expires: state.expires,
|
|
44
|
-
accessExpired: state.
|
|
47
|
+
accessExpired: state.status === 'reconnect',
|
|
45
48
|
reconnecting: state.reconnecting
|
|
46
49
|
})));
|
|
47
50
|
}
|
|
48
51
|
/**
|
|
49
52
|
* The login action plus the state the login page renders. `authenticating` is
|
|
50
|
-
* the in-flight flag (the `status` stays `local` during
|
|
51
|
-
* exposed so a login page can redirect once it reads
|
|
53
|
+
* the in-flight flag, derived from `phase` (the `status` stays `local` during
|
|
54
|
+
* login); `status` is exposed so a login page can redirect once it reads
|
|
55
|
+
* `connected`. `login`
|
|
52
56
|
* accepts `{ adopt }` -- `'merge'` (default) migrates data created in `local`
|
|
53
57
|
* into the connected replica, `'leave'` sets it aside untouched.
|
|
54
58
|
*
|
|
@@ -58,7 +62,7 @@ export function useLogin() {
|
|
|
58
62
|
const store = useAuthStore();
|
|
59
63
|
const login = useStore(store, state => state.login);
|
|
60
64
|
const { authenticating, status, phase, error } = useStore(store, useShallow(state => ({
|
|
61
|
-
authenticating: state.
|
|
65
|
+
authenticating: state.phase !== null,
|
|
62
66
|
status: state.status,
|
|
63
67
|
phase: state.phase,
|
|
64
68
|
error: state.error
|
|
@@ -114,6 +118,8 @@ export function useSharedCollection(key) {
|
|
|
114
118
|
}
|
|
115
119
|
/**
|
|
116
120
|
* The expired-access reconnect: the banner flags plus the reconnect action.
|
|
121
|
+
* `accessExpired` is derived from the session status (`status === 'reconnect'`),
|
|
122
|
+
* which the store keeps as its single source of truth.
|
|
117
123
|
*
|
|
118
124
|
* @returns {object}
|
|
119
125
|
*/
|
|
@@ -121,16 +127,16 @@ export function useReconnect() {
|
|
|
121
127
|
const store = useAuthStore();
|
|
122
128
|
const reconnect = useStore(store, state => state.reconnect);
|
|
123
129
|
const { accessExpired, reconnecting } = useStore(store, useShallow(state => ({
|
|
124
|
-
accessExpired: state.
|
|
130
|
+
accessExpired: state.status === 'reconnect',
|
|
125
131
|
reconnecting: state.reconnecting
|
|
126
132
|
})));
|
|
127
133
|
return { accessExpired, reconnecting, reconnect };
|
|
128
134
|
}
|
|
129
135
|
/**
|
|
130
|
-
* The aggregate sync status over the per-collection replication statuses
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
* {@link deriveSyncRollup}.
|
|
136
|
+
* The aggregate sync status over the per-collection replication statuses (the
|
|
137
|
+
* sync-status store keys them by the registry's logical collection key). A thin
|
|
138
|
+
* subscription over that store: it reads the collection statuses and defers the
|
|
139
|
+
* offline / error > syncing > synced precedence to {@link deriveSyncRollup}.
|
|
134
140
|
*
|
|
135
141
|
* @returns {{ state: SyncRollup, label: string, title: string }}
|
|
136
142
|
*/
|
package/dist/react/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;GAIG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAG3D,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAEjB,MAAM,+BAA+B,CAAA;AAEtC;;;;;GAKG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAA;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,yEAAyE;YACvE,sDAAsD,CACzD,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,12 +59,17 @@ export interface AuthState {
|
|
|
59
59
|
*/
|
|
60
60
|
onboarding: 'local-first' | 'login-gated';
|
|
61
61
|
/**
|
|
62
|
-
*
|
|
63
|
-
*
|
|
62
|
+
* The per-install LWW attribution id, resolved once at store creation from
|
|
63
|
+
* `WasAppConfig.storageKeyPrefix`. Stamp it (with a fresh `updatedAt`) onto
|
|
64
|
+
* every entity insert and update; the adoption repair uses the same value,
|
|
65
|
+
* so one install writes under one identity.
|
|
64
66
|
*/
|
|
65
|
-
|
|
67
|
+
clientId: string;
|
|
66
68
|
/**
|
|
67
|
-
* The current login phase, for the login page's progress line
|
|
69
|
+
* The current login phase, for the login page's progress line, and the single
|
|
70
|
+
* source of truth for "a Login With Wallet flow is in flight" (non-`null`
|
|
71
|
+
* throughout the flow; the `status` stays `local` meanwhile). `useSession` /
|
|
72
|
+
* `useLogin` expose the boolean as `authenticating`, computed from this.
|
|
68
73
|
*/
|
|
69
74
|
phase: LoginPhase | null;
|
|
70
75
|
error: string | null;
|
|
@@ -74,11 +79,6 @@ export interface AuthState {
|
|
|
74
79
|
* `local` (no grants).
|
|
75
80
|
*/
|
|
76
81
|
expires: string | null;
|
|
77
|
-
/**
|
|
78
|
-
* A live 401/403 was seen mid-session (or a proactive near-expiry): show the
|
|
79
|
-
* reconnect banner. Always true iff `status === 'reconnect'`.
|
|
80
|
-
*/
|
|
81
|
-
accessExpired: boolean;
|
|
82
82
|
reconnecting: boolean;
|
|
83
83
|
/**
|
|
84
84
|
* The read-only readers over the wallet-owned collections the wallet shared
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authStore.d.ts","sourceRoot":"","sources":["../../src/session/authStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"authStore.d.ts","sourceRoot":"","sources":["../../src/session/authStore.ts"],"names":[],"mappings":"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"}
|