@interop/was-react 0.1.5 → 0.1.7
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/auth/loginRequest.d.ts +4 -9
- package/dist/auth/loginRequest.d.ts.map +1 -1
- package/dist/auth/loginRequest.js +2 -13
- package/dist/auth/loginRequest.js.map +1 -1
- package/dist/auth/walletRequestTypes.d.ts +3 -2
- package/dist/auth/walletRequestTypes.d.ts.map +1 -1
- package/dist/config.d.ts +22 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -0
- package/dist/config.js.map +1 -1
- package/dist/grants.d.ts +10 -8
- package/dist/grants.d.ts.map +1 -1
- package/dist/grants.js +12 -9
- package/dist/grants.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/mui/AdoptDialog.d.ts +12 -0
- package/dist/mui/AdoptDialog.d.ts.map +1 -0
- package/dist/mui/AdoptDialog.js +31 -0
- package/dist/mui/AdoptDialog.js.map +1 -0
- package/dist/mui/ClearDataDialog.d.ts +12 -0
- package/dist/mui/ClearDataDialog.d.ts.map +1 -0
- package/dist/mui/ClearDataDialog.js +30 -0
- package/dist/mui/ClearDataDialog.js.map +1 -0
- package/dist/mui/LogoutDialog.d.ts +12 -0
- package/dist/mui/LogoutDialog.d.ts.map +1 -0
- package/dist/mui/LogoutDialog.js +30 -0
- package/dist/mui/LogoutDialog.js.map +1 -0
- package/dist/mui/ProtectedRoute.d.ts +2 -2
- package/dist/mui/ProtectedRoute.d.ts.map +1 -1
- package/dist/mui/ProtectedRoute.js +30 -23
- package/dist/mui/ProtectedRoute.js.map +1 -1
- package/dist/mui/index.d.ts +3 -0
- package/dist/mui/index.d.ts.map +1 -1
- package/dist/mui/index.js +3 -0
- package/dist/mui/index.js.map +1 -1
- package/dist/react/WasSessionProvider.d.ts.map +1 -1
- package/dist/react/WasSessionProvider.js +8 -4
- package/dist/react/WasSessionProvider.js.map +1 -1
- package/dist/react/hooks.d.ts +33 -5
- package/dist/react/hooks.d.ts.map +1 -1
- package/dist/react/hooks.js +36 -6
- package/dist/react/hooks.js.map +1 -1
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/index.js.map +1 -1
- package/dist/session/authStore.d.ts +111 -22
- package/dist/session/authStore.d.ts.map +1 -1
- package/dist/session/authStore.js +337 -81
- package/dist/session/authStore.js.map +1 -1
- package/dist/session/index.d.ts +3 -4
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +2 -3
- package/dist/session/index.js.map +1 -1
- package/dist/storage/adopt.d.ts +20 -0
- package/dist/storage/adopt.d.ts.map +1 -0
- package/dist/storage/adopt.js +78 -0
- package/dist/storage/adopt.js.map +1 -0
- package/dist/storage/entityStore.d.ts.map +1 -1
- package/dist/storage/entityStore.js +1 -15
- package/dist/storage/entityStore.js.map +1 -1
- package/dist/storage/localStore.d.ts +33 -3
- package/dist/storage/localStore.d.ts.map +1 -1
- package/dist/storage/localStore.js +35 -1
- package/dist/storage/localStore.js.map +1 -1
- package/dist/sync/index.d.ts +1 -1
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +1 -1
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/lww.d.ts +12 -0
- package/dist/sync/lww.d.ts.map +1 -1
- package/dist/sync/lww.js +14 -0
- package/dist/sync/lww.js.map +1 -1
- package/package.json +1 -1
- package/dist/session/appReadyStore.d.ts +0 -10
- package/dist/session/appReadyStore.d.ts.map +0 -1
- package/dist/session/appReadyStore.js +0 -22
- package/dist/session/appReadyStore.js.map +0 -1
|
@@ -9,9 +9,8 @@
|
|
|
9
9
|
* master seed on a new device.
|
|
10
10
|
* 2. The grants request: DIDAuthentication + AuthorizationCapabilityQuery with
|
|
11
11
|
* one capabilityQuery per collection (descriptor-object targets, which the
|
|
12
|
-
* wallet resolves against the user's one Space and auto-provisions)
|
|
13
|
-
*
|
|
14
|
-
* GET/HEAD, so read-only is all that is ever requested there.
|
|
12
|
+
* wallet resolves against the user's one Space and auto-provisions). Only
|
|
13
|
+
* collection-scoped capabilities are requested -- no whole-space grant.
|
|
15
14
|
*
|
|
16
15
|
* `domain` must host-match the CHAPI requesting origin or the wallet refuses
|
|
17
16
|
* to sign; `challenge` must be fresh per request (echoed into the DIDAuth
|
|
@@ -22,10 +21,6 @@ import type { IVPRDetails } from './walletRequestTypes.js';
|
|
|
22
21
|
* Default read/write actions requested on each app collection.
|
|
23
22
|
*/
|
|
24
23
|
export declare const RW_ACTIONS: string[];
|
|
25
|
-
/**
|
|
26
|
-
* The referenceId of the read-only whole-space grant.
|
|
27
|
-
*/
|
|
28
|
-
export declare const SPACE_READ_REFERENCE_ID = "space-read";
|
|
29
24
|
/**
|
|
30
25
|
* A fresh nonce for a VPR challenge.
|
|
31
26
|
*/
|
|
@@ -48,8 +43,8 @@ export declare function buildSeedProbeVpr({ challenge, domain, credentialType, a
|
|
|
48
43
|
}): IVPRDetails;
|
|
49
44
|
/**
|
|
50
45
|
* VPR #2: DIDAuthentication + AuthorizationCapabilityQuery -- one read/write
|
|
51
|
-
* capabilityQuery per app collection (delegated to `controllerDid`)
|
|
52
|
-
*
|
|
46
|
+
* capabilityQuery per app collection (delegated to `controllerDid`). Only
|
|
47
|
+
* collection-scoped capabilities are requested.
|
|
53
48
|
*
|
|
54
49
|
* @param options {object}
|
|
55
50
|
* @param options.challenge {string}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loginRequest.d.ts","sourceRoot":"","sources":["../../src/auth/loginRequest.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH
|
|
1
|
+
{"version":3,"file":"loginRequest.d.ts","sourceRoot":"","sources":["../../src/auth/loginRequest.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAEV,WAAW,EACZ,MAAM,yBAAyB,CAAA;AAEhC;;GAEG;AACH,eAAO,MAAM,UAAU,UAA2C,CAAA;AAElE;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,MAAM,EACN,cAAc,EACd,OAAO,EACR,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;CAChB,GAAG,WAAW,CAkBd;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,MAAM,EACN,aAAa,EACb,WAAW,EACX,OAAO,EACP,OAAoB,EACrB,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB,GAAG,WAAW,CAsBd"}
|
|
@@ -2,10 +2,6 @@
|
|
|
2
2
|
* Default read/write actions requested on each app collection.
|
|
3
3
|
*/
|
|
4
4
|
export const RW_ACTIONS = ['GET', 'HEAD', 'PUT', 'POST', 'DELETE'];
|
|
5
|
-
/**
|
|
6
|
-
* The referenceId of the read-only whole-space grant.
|
|
7
|
-
*/
|
|
8
|
-
export const SPACE_READ_REFERENCE_ID = 'space-read';
|
|
9
5
|
/**
|
|
10
6
|
* A fresh nonce for a VPR challenge.
|
|
11
7
|
*/
|
|
@@ -43,8 +39,8 @@ export function buildSeedProbeVpr({ challenge, domain, credentialType, appName }
|
|
|
43
39
|
}
|
|
44
40
|
/**
|
|
45
41
|
* VPR #2: DIDAuthentication + AuthorizationCapabilityQuery -- one read/write
|
|
46
|
-
* capabilityQuery per app collection (delegated to `controllerDid`)
|
|
47
|
-
*
|
|
42
|
+
* capabilityQuery per app collection (delegated to `controllerDid`). Only
|
|
43
|
+
* collection-scoped capabilities are requested.
|
|
48
44
|
*
|
|
49
45
|
* @param options {object}
|
|
50
46
|
* @param options.challenge {string}
|
|
@@ -64,13 +60,6 @@ export function buildGrantsVpr({ challenge, domain, controllerDid, collections,
|
|
|
64
60
|
allowedAction: actions,
|
|
65
61
|
invocationTarget: { type: 'urn:was:collection', name: id }
|
|
66
62
|
}));
|
|
67
|
-
capabilityQuery.push({
|
|
68
|
-
referenceId: SPACE_READ_REFERENCE_ID,
|
|
69
|
-
reason: 'Read your storage space description.',
|
|
70
|
-
controller: controllerDid,
|
|
71
|
-
allowedAction: ['GET', 'HEAD'],
|
|
72
|
-
invocationTarget: { type: 'urn:was:space' }
|
|
73
|
-
});
|
|
74
63
|
return {
|
|
75
64
|
query: [
|
|
76
65
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loginRequest.js","sourceRoot":"","sources":["../../src/auth/loginRequest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loginRequest.js","sourceRoot":"","sources":["../../src/auth/loginRequest.ts"],"names":[],"mappings":"AAuBA;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;AAElE;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,MAAM,CAAC,UAAU,EAAE,CAAA;AAC5B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAChC,SAAS,EACT,MAAM,EACN,cAAc,EACd,OAAO,EAMR;IACC,OAAO;QACL,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,mBAAmB;gBACzB,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;aACrC;YACD;gBACE,IAAI,EAAE,gBAAgB;gBACtB,eAAe,EAAE;oBACf,MAAM,EAAE,eAAe,OAAO,iCAAiC;oBAC/D,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;iBAClC;aACF;SACF;QACD,SAAS;QACT,MAAM;KACP,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,SAAS,EACT,MAAM,EACN,aAAa,EACb,WAAW,EACX,OAAO,EACP,OAAO,GAAG,UAAU,EAQrB;IACC,MAAM,eAAe,GAA6B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACvE,WAAW,EAAE,EAAE;QACf,MAAM,EAAE,cAAc,OAAO,iBAAiB,EAAE,eAAe;QAC/D,UAAU,EAAE,aAAa;QACzB,aAAa,EAAE,OAAO;QACtB,gBAAgB,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,EAAE;KAC3D,CAAC,CAAC,CAAA;IACH,OAAO;QACL,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,mBAAmB;gBACzB,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;aACrC;YACD;gBACE,IAAI,EAAE,8BAA8B;gBACpC,eAAe;aAChB;SACF;QACD,SAAS;QACT,MAAM;KACP,CAAA;AACH,CAAC"}
|
|
@@ -105,8 +105,9 @@ export type IZcapQuery = {
|
|
|
105
105
|
* (`controller`) wants on which storage target (`invocationTarget`), with an
|
|
106
106
|
* optional human-readable `reason` and RP-chosen `referenceId`. The
|
|
107
107
|
* `invocationTarget` is either a plain URL (satisfied only under the user's own
|
|
108
|
-
* Space) or a wallet-defined descriptor object (`urn:was:collection`
|
|
109
|
-
*
|
|
108
|
+
* Space) or a wallet-defined descriptor object (`urn:was:collection`), resolved
|
|
109
|
+
* by `resolveInvocationTarget`. Login requests only ever ask for
|
|
110
|
+
* collection-scoped capabilities.
|
|
110
111
|
*/
|
|
111
112
|
export type ICapabilityQueryDetail = {
|
|
112
113
|
referenceId?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletRequestTypes.d.ts","sourceRoot":"","sources":["../../src/auth/walletRequestTypes.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,EACN,MAAM,8BAA8B,CAAA;AAErC;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,QAAQ,CAAA;AAEpD;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,sBAAsB,EAAE,uBAAuB,CAAA;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,6BAA6B,EAAE,WAAW,CAAA;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,uBAAuB,GAAG,UAAU,CAAA;AAE9E;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,gBAAgB,CAAA;IACtB,oBAAoB,CAAC,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACrD,eAAe,EAAE;QACf,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,OAAO,EAAE;YACP,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;YACrD,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;YACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;YACjD,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;SACrB,CAAA;KACF,CAAA;CACF,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,mBAAmB,CAAA;IACzB,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3C,oBAAoB,CAAC,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACtD,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,8BAA8B,GAAG,WAAW,CAAA;IAClD,eAAe,EAAE,sBAAsB,GAAG,sBAAsB,EAAE,CAAA;IAClE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"walletRequestTypes.d.ts","sourceRoot":"","sources":["../../src/auth/walletRequestTypes.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -96,6 +96,23 @@ export interface WasAppConfig {
|
|
|
96
96
|
* The storage collections (logical key to WAS collection id).
|
|
97
97
|
*/
|
|
98
98
|
collections: WasCollectionConfig[];
|
|
99
|
+
/**
|
|
100
|
+
* How the router treats the pre-connection `local` state. `'local-first'`
|
|
101
|
+
* renders the app immediately over the anonymous replica (connecting a wallet
|
|
102
|
+
* is a bonus); `'login-gated'` redirects to the login path until a wallet is
|
|
103
|
+
* connected. Only affects `ProtectedRoute` rendering, never the store's
|
|
104
|
+
* transitions (boot always opens a replica). Defaults to
|
|
105
|
+
* {@link DEFAULT_ONBOARDING}.
|
|
106
|
+
*/
|
|
107
|
+
onboarding?: 'local-first' | 'login-gated';
|
|
108
|
+
/**
|
|
109
|
+
* Optional dev-fixtures hook, called once -- and only when a brand-new
|
|
110
|
+
* anonymous replica is first created (never on reload, since the anon seed
|
|
111
|
+
* persists). Fixtures write through the app's own entity stores, so apps gate
|
|
112
|
+
* this on dev themselves (e.g. `seedLocal: import.meta.env.DEV ? seed :
|
|
113
|
+
* undefined`) to keep fixtures out of production local-first apps.
|
|
114
|
+
*/
|
|
115
|
+
seedLocal?: () => Promise<void>;
|
|
99
116
|
/**
|
|
100
117
|
* The seed-credential type name + vocabulary namespace.
|
|
101
118
|
*/
|
|
@@ -156,6 +173,11 @@ export type StoreRegistry = Record<string, StoreRegistryEntry>;
|
|
|
156
173
|
* Default base name for the local RxDB database + session IndexedDB naming.
|
|
157
174
|
*/
|
|
158
175
|
export declare const DEFAULT_DB_NAME = "was-react";
|
|
176
|
+
/**
|
|
177
|
+
* Default onboarding mode: `'login-gated'`, preserving the historical
|
|
178
|
+
* gate-on-connected behavior for apps that do not opt into local-first.
|
|
179
|
+
*/
|
|
180
|
+
export declare const DEFAULT_ONBOARDING = "login-gated";
|
|
159
181
|
/**
|
|
160
182
|
* Default `localStorage` key prefix (e.g. `was-react:deviceId`).
|
|
161
183
|
*/
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAExE;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;CACX;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,WAAW,EAAE,mBAAmB,EAAE,CAAA;IAClC;;OAEG;IACH,UAAU,EAAE,oBAAoB,CAAA;IAChC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;OAEG;IACH,IAAI,CAAC,EAAE,aAAa,CAAA;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,eAAe,CAAA;CACzB;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B;;;OAGG;IACH,MAAM,EAAE,CAAC,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACrC;;OAEG;IACH,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5B;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;AAE9D;;GAEG;AACH,eAAO,MAAM,eAAe,cAAc,CAAA;AAE1C;;GAEG;AACH,eAAO,MAAM,0BAA0B,eAAe,CAAA;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,QAAQ,CAAA;AAEzC;;GAEG;AACH,eAAO,MAAM,yBAAyB,QAAiB,CAAA;AAEvD;;GAEG;AACH,eAAO,MAAM,uBAAuB,QAAY,CAAA;AAEhD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,WAAW,EACX,EAAE,EACH,EAAE;IACD,WAAW,EAAE,mBAAmB,EAAE,CAAA;IAClC,EAAE,EAAE,MAAM,CAAA;CACX,GAAG,MAAM,GAAG,SAAS,CAErB"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAExE;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;CACX;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,WAAW,EAAE,mBAAmB,EAAE,CAAA;IAClC;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,aAAa,GAAG,aAAa,CAAA;IAC1C;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B;;OAEG;IACH,UAAU,EAAE,oBAAoB,CAAA;IAChC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;OAEG;IACH,IAAI,CAAC,EAAE,aAAa,CAAA;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,eAAe,CAAA;CACzB;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B;;;OAGG;IACH,MAAM,EAAE,CAAC,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACrC;;OAEG;IACH,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5B;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;AAE9D;;GAEG;AACH,eAAO,MAAM,eAAe,cAAc,CAAA;AAE1C;;;GAGG;AACH,eAAO,MAAM,kBAAkB,gBAAgB,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,0BAA0B,eAAe,CAAA;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,QAAQ,CAAA;AAEzC;;GAEG;AACH,eAAO,MAAM,yBAAyB,QAAiB,CAAA;AAEvD;;GAEG;AACH,eAAO,MAAM,uBAAuB,QAAY,CAAA;AAEhD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,WAAW,EACX,EAAE,EACH,EAAE;IACD,WAAW,EAAE,mBAAmB,EAAE,CAAA;IAClC,EAAE,EAAE,MAAM,CAAA;CACX,GAAG,MAAM,GAAG,SAAS,CAErB"}
|
package/dist/config.js
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
* Default base name for the local RxDB database + session IndexedDB naming.
|
|
3
3
|
*/
|
|
4
4
|
export const DEFAULT_DB_NAME = 'was-react';
|
|
5
|
+
/**
|
|
6
|
+
* Default onboarding mode: `'login-gated'`, preserving the historical
|
|
7
|
+
* gate-on-connected behavior for apps that do not opt into local-first.
|
|
8
|
+
*/
|
|
9
|
+
export const DEFAULT_ONBOARDING = 'login-gated';
|
|
5
10
|
/**
|
|
6
11
|
* Default `localStorage` key prefix (e.g. `was-react:deviceId`).
|
|
7
12
|
*/
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAgLA;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAA;AAE1C;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAA;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,YAAY,CAAA;AAEtD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAA;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAEvD;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,GAAG,IAAI,CAAA;AAEhD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,WAAW,EACX,EAAE,EAIH;IACC,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAA;AACxD,CAAC"}
|
package/dist/grants.d.ts
CHANGED
|
@@ -13,21 +13,23 @@ export interface ParsedGrants {
|
|
|
13
13
|
byCollectionId: Record<string, IZcap>;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
|
-
* One grant's target, split into server origin + space + collection.
|
|
17
|
-
* collection-scoped
|
|
16
|
+
* One grant's target, split into server origin + space + collection. Every
|
|
17
|
+
* routed grant is collection-scoped, so `collectionId` is always present.
|
|
18
18
|
*/
|
|
19
19
|
interface ParsedTarget {
|
|
20
20
|
serverUrl: string;
|
|
21
21
|
spaceId: string;
|
|
22
|
-
collectionId
|
|
22
|
+
collectionId: string;
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
25
|
* Parses a single `invocationTarget` URL into its WAS components. `serverUrl` is
|
|
26
26
|
* the bare origin (`protocol//host`) with no trailing slash, matching the shape
|
|
27
27
|
* the reference server validates `SERVER_URL` into; the path grammar itself is
|
|
28
|
-
* owned by `@interop/was-client`'s `parseSpaceTarget`. A
|
|
29
|
-
*
|
|
30
|
-
* `/space/:id/policy`)
|
|
28
|
+
* owned by `@interop/was-client`'s `parseSpaceTarget`. A collection- or
|
|
29
|
+
* resource-depth target contributes its collection; a space-scoped or reserved
|
|
30
|
+
* sub-endpoint target (e.g. bare `/space/:id` or `/space/:id/policy`) carries no
|
|
31
|
+
* collection and is rejected -- login only ever requests collection-scoped
|
|
32
|
+
* capabilities.
|
|
31
33
|
*
|
|
32
34
|
* @param target {string} an absolute WAS URL
|
|
33
35
|
* @returns {ParsedTarget}
|
|
@@ -36,8 +38,8 @@ export declare function parseInvocationTarget(target: string): ParsedTarget;
|
|
|
36
38
|
/**
|
|
37
39
|
* Parses a delegated grant set into the sync topology. Asserts a single server
|
|
38
40
|
* origin and a single space across every grant, and routes each collection-scoped
|
|
39
|
-
* grant to its WAS collection id.
|
|
40
|
-
*
|
|
41
|
+
* grant to its WAS collection id. Every grant must be collection-scoped; a
|
|
42
|
+
* space-scoped grant (no collection segment) is rejected.
|
|
41
43
|
*
|
|
42
44
|
* @param zcaps {IZcap[]} the delegated capabilities
|
|
43
45
|
* @returns {ParsedGrants}
|
package/dist/grants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grants.d.ts","sourceRoot":"","sources":["../src/grants.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAA;AAEzD;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CACtC;AAED;;;GAGG;AACH,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,
|
|
1
|
+
{"version":3,"file":"grants.d.ts","sourceRoot":"","sources":["../src/grants.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAA;AAEzD;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CACtC;AAED;;;GAGG;AACH,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CA0BlE;AAiBD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,CAgCxD"}
|
package/dist/grants.js
CHANGED
|
@@ -20,9 +20,11 @@ import { parseSpaceTarget } from '@interop/was-client';
|
|
|
20
20
|
* Parses a single `invocationTarget` URL into its WAS components. `serverUrl` is
|
|
21
21
|
* the bare origin (`protocol//host`) with no trailing slash, matching the shape
|
|
22
22
|
* the reference server validates `SERVER_URL` into; the path grammar itself is
|
|
23
|
-
* owned by `@interop/was-client`'s `parseSpaceTarget`. A
|
|
24
|
-
*
|
|
25
|
-
* `/space/:id/policy`)
|
|
23
|
+
* owned by `@interop/was-client`'s `parseSpaceTarget`. A collection- or
|
|
24
|
+
* resource-depth target contributes its collection; a space-scoped or reserved
|
|
25
|
+
* sub-endpoint target (e.g. bare `/space/:id` or `/space/:id/policy`) carries no
|
|
26
|
+
* collection and is rejected -- login only ever requests collection-scoped
|
|
27
|
+
* capabilities.
|
|
26
28
|
*
|
|
27
29
|
* @param target {string} an absolute WAS URL
|
|
28
30
|
* @returns {ParsedTarget}
|
|
@@ -40,10 +42,13 @@ export function parseInvocationTarget(target) {
|
|
|
40
42
|
if (parsed === null) {
|
|
41
43
|
throw new Error(`Grant invocationTarget is not a WAS space URL: "${target}".`);
|
|
42
44
|
}
|
|
45
|
+
if (!('collectionId' in parsed)) {
|
|
46
|
+
throw new Error(`Grant invocationTarget is not collection-scoped: "${target}".`);
|
|
47
|
+
}
|
|
43
48
|
return {
|
|
44
49
|
serverUrl,
|
|
45
50
|
spaceId: parsed.spaceId,
|
|
46
|
-
|
|
51
|
+
collectionId: parsed.collectionId
|
|
47
52
|
};
|
|
48
53
|
}
|
|
49
54
|
/**
|
|
@@ -63,8 +68,8 @@ function invocationTargetOf(zcap) {
|
|
|
63
68
|
/**
|
|
64
69
|
* Parses a delegated grant set into the sync topology. Asserts a single server
|
|
65
70
|
* origin and a single space across every grant, and routes each collection-scoped
|
|
66
|
-
* grant to its WAS collection id.
|
|
67
|
-
*
|
|
71
|
+
* grant to its WAS collection id. Every grant must be collection-scoped; a
|
|
72
|
+
* space-scoped grant (no collection segment) is rejected.
|
|
68
73
|
*
|
|
69
74
|
* @param zcaps {IZcap[]} the delegated capabilities
|
|
70
75
|
* @returns {ParsedGrants}
|
|
@@ -90,9 +95,7 @@ export function parseGrants(zcaps) {
|
|
|
90
95
|
else if (spaceId !== parsed.spaceId) {
|
|
91
96
|
throw new Error(`Grants span two spaces: "${spaceId}" vs "${parsed.spaceId}".`);
|
|
92
97
|
}
|
|
93
|
-
|
|
94
|
-
byCollectionId[parsed.collectionId] = zcap;
|
|
95
|
-
}
|
|
98
|
+
byCollectionId[parsed.collectionId] = zcap;
|
|
96
99
|
}
|
|
97
100
|
return {
|
|
98
101
|
serverUrl: serverUrl,
|
package/dist/grants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grants.js","sourceRoot":"","sources":["../src/grants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AA2BtD
|
|
1
|
+
{"version":3,"file":"grants.js","sourceRoot":"","sources":["../src/grants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AA2BtD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,IAAI,GAAQ,CAAA;IACZ,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,mDAAmD,MAAM,IAAI,CAC9D,CAAA;IACH,CAAC;IACD,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI,EAAE,CAAA;IAChD,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAA;IACtD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,mDAAmD,MAAM,IAAI,CAC9D,CAAA;IACH,CAAC;IACD,IAAI,CAAC,CAAC,cAAc,IAAI,MAAM,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,qDAAqD,MAAM,IAAI,CAChE,CAAA;IACH,CAAC;IACD,OAAO;QACL,SAAS;QACT,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,IAAW;IACrC,MAAM,MAAM,GAAI,IAAuC,CAAC,gBAAgB,CAAA;IACxE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAChE,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACxC,CAAC;IACD,IAAI,SAA6B,CAAA;IACjC,IAAI,OAA2B,CAAA;IAC/B,MAAM,cAAc,GAA0B,EAAE,CAAA;IAEhD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9D,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;QAC9B,CAAC;aAAM,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,6BAA6B,SAAS,SAAS,MAAM,CAAC,SAAS,IAAI,CACpE,CAAA;QACH,CAAC;QACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;QAC1B,CAAC;aAAM,IAAI,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CACb,4BAA4B,OAAO,SAAS,MAAM,CAAC,OAAO,IAAI,CAC/D,CAAA;QACH,CAAC;QACD,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAA;IAC5C,CAAC;IAED,OAAO;QACL,SAAS,EAAE,SAAmB;QAC9B,OAAO,EAAE,OAAiB;QAC1B,cAAc;KACf,CAAA;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export { issueSeedCredential, parseSeedCredential, findSeedCredential, wrapCrede
|
|
|
19
19
|
export { initAppSession } from './identity/initAppSession.js';
|
|
20
20
|
export { persistAppSession, restoreAppSession, clearAppSession, isExpired, isNearExpiry, earliestExpiry, type AppSessionRecord, type RestoredAppSession } from './identity/appSession.js';
|
|
21
21
|
export { DEFAULT_MEDIATOR_BASE, loadChapi, chapiGet, chapiStore } from './auth/chapi.js';
|
|
22
|
-
export { RW_ACTIONS,
|
|
22
|
+
export { RW_ACTIONS, newChallenge, buildSeedProbeVpr, buildGrantsVpr } from './auth/loginRequest.js';
|
|
23
23
|
export { verifyLoginPresentation, grantsOf, checkGrants, type CheckedGrants } from './auth/verifyResponse.js';
|
|
24
24
|
export { loginWithWallet, requestGrants, LoginCancelledError, type LoginConfig, type LoginPhase, type LoginOutcome } from './auth/loginFlow.js';
|
|
25
25
|
export type { WalletAPIMessage, IVPOffer, IVPRequest, IVPRDetails, IVPRQuery, IQueryByExample, IDIDAuthenticationQuery, IZcapQuery, ICapabilityQueryDetail, WalletResponse, WalletRequestProfile, IVerifiableCredential, IVerifiablePresentation, IZcap } from './auth/walletRequestTypes.js';
|
|
@@ -32,6 +32,6 @@ export { useSyncStatusStore, deriveSyncRollup, type SyncStatus } from './storage
|
|
|
32
32
|
export { hydrateAll, clearAllEntityStores, patchFromChange, scheduleRehydrate, cancelScheduledRehydrates } from './storage/rehydrate.js';
|
|
33
33
|
export { isAuthError, SyncController, createSyncController } from './storage/syncController.js';
|
|
34
34
|
export { startWasSync } from './storage/wasSync.js';
|
|
35
|
-
export { createAuthStore,
|
|
36
|
-
export { WasSessionProvider, WasSessionContext, useAuthStore, useSession, useLogin, useLogout, useReconnect, useSyncStatus, type SyncRollup } from './react/index.js';
|
|
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';
|
|
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":"AAAA;;GAEG;AACH;;;;;;;;GAQG;AAGH,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,KAAK,YAAY,EAClB,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,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,EACd,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EACL,qBAAqB,EACrB,SAAS,EACT,QAAQ,EACR,UAAU,EACX,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,UAAU,EACV,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;GAQG;AAGH,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,KAAK,YAAY,EAClB,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,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,EACd,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAA;AAGjC,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,EACX,KAAK,aAAa,EACnB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,WAAW,EACX,SAAS,EACT,eAAe,EACf,uBAAuB,EACvB,UAAU,EACV,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,EACN,MAAM,8BAA8B,CAAA;AAGrC,cAAc,iBAAiB,CAAA;AAK/B,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,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC/E,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,UAAU,EAChB,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;AAGnD,OAAO,EACL,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,aAAa,EACb,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -23,7 +23,7 @@ export { initAppSession } from './identity/initAppSession.js';
|
|
|
23
23
|
export { persistAppSession, restoreAppSession, clearAppSession, isExpired, isNearExpiry, earliestExpiry } from './identity/appSession.js';
|
|
24
24
|
// Auth: CHAPI bridge, VPR construction, response verification, login flow.
|
|
25
25
|
export { DEFAULT_MEDIATOR_BASE, loadChapi, chapiGet, chapiStore } from './auth/chapi.js';
|
|
26
|
-
export { RW_ACTIONS,
|
|
26
|
+
export { RW_ACTIONS, newChallenge, buildSeedProbeVpr, buildGrantsVpr } from './auth/loginRequest.js';
|
|
27
27
|
export { verifyLoginPresentation, grantsOf, checkGrants } from './auth/verifyResponse.js';
|
|
28
28
|
export { loginWithWallet, requestGrants, LoginCancelledError } from './auth/loginFlow.js';
|
|
29
29
|
// The collection-agnostic RxDB-WAS replication core.
|
|
@@ -39,8 +39,8 @@ export { useSyncStatusStore, deriveSyncRollup } from './storage/syncStatusStore.
|
|
|
39
39
|
export { hydrateAll, clearAllEntityStores, patchFromChange, scheduleRehydrate, cancelScheduledRehydrates } from './storage/rehydrate.js';
|
|
40
40
|
export { isAuthError, SyncController, createSyncController } from './storage/syncController.js';
|
|
41
41
|
export { startWasSync } from './storage/wasSync.js';
|
|
42
|
-
// Session lifecycle: the
|
|
43
|
-
export { createAuthStore
|
|
42
|
+
// Session lifecycle: the session auth store factory (the four-state machine).
|
|
43
|
+
export { createAuthStore } from './session/index.js';
|
|
44
44
|
// React: the session provider + hooks.
|
|
45
|
-
export { WasSessionProvider, WasSessionContext, useAuthStore, useSession, useLogin, useLogout, useReconnect, useSyncStatus } from './react/index.js';
|
|
45
|
+
export { WasSessionProvider, WasSessionContext, useAuthStore, useSession, useLogin, useLogout, useClearData, useHasLocalData, useReconnect, useSyncStatus } 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,
|
|
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,EAEd,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param props {object}
|
|
3
|
+
* @param props.open {boolean} whether the dialog is shown
|
|
4
|
+
* @param props.onClose {() => void} called before a chosen login starts and
|
|
5
|
+
* on a dismiss/cancel (which runs no login)
|
|
6
|
+
* @returns {ReactNode}
|
|
7
|
+
*/
|
|
8
|
+
export declare function AdoptDialog({ open, onClose }: {
|
|
9
|
+
open: boolean;
|
|
10
|
+
onClose: () => void;
|
|
11
|
+
}): import("react").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=AdoptDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdoptDialog.d.ts","sourceRoot":"","sources":["../../src/mui/AdoptDialog.tsx"],"names":[],"mappings":"AAsBA;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,OAAO,EACR,EAAE;IACD,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,+BA+BA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/*!
|
|
3
|
+
* Copyright (c) 2026 Interop Alliance. All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The pre-login adoption choice dialog, shown by an app's login affordance when
|
|
7
|
+
* the anonymous `local` replica holds data (see `useHasLocalData`). "Bring my
|
|
8
|
+
* data" runs `login({ adopt: 'merge' })`: the local data is merged into the
|
|
9
|
+
* connected storage and the anonymous replica is then deleted. "Set it aside"
|
|
10
|
+
* runs `login({ adopt: 'leave' })`: the anonymous replica stays untouched on
|
|
11
|
+
* this device and returns after a logout. Dismissing the dialog (backdrop /
|
|
12
|
+
* escape / Cancel) runs no login at all.
|
|
13
|
+
*/
|
|
14
|
+
import { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from '@mui/material';
|
|
15
|
+
import { useLogin } from '../react/hooks.js';
|
|
16
|
+
/**
|
|
17
|
+
* @param props {object}
|
|
18
|
+
* @param props.open {boolean} whether the dialog is shown
|
|
19
|
+
* @param props.onClose {() => void} called before a chosen login starts and
|
|
20
|
+
* on a dismiss/cancel (which runs no login)
|
|
21
|
+
* @returns {ReactNode}
|
|
22
|
+
*/
|
|
23
|
+
export function AdoptDialog({ open, onClose }) {
|
|
24
|
+
const { login } = useLogin();
|
|
25
|
+
function handleLogin(adopt) {
|
|
26
|
+
onClose();
|
|
27
|
+
void login({ adopt });
|
|
28
|
+
}
|
|
29
|
+
return (_jsxs(Dialog, { open: open, onClose: onClose, "data-testid": "adopt-dialog", children: [_jsx(DialogTitle, { children: "Bring your data with you?" }), _jsx(DialogContent, { children: _jsx(DialogContentText, { children: "You created data on this device before logging in. Bring it into your own storage so it syncs everywhere you log in, or set it aside -- it then stays on this device only and comes back if you log out." }) }), _jsxs(DialogActions, { children: [_jsx(Button, { onClick: onClose, "data-testid": "adopt-cancel", children: "Cancel" }), _jsx(Button, { onClick: () => handleLogin('leave'), "data-testid": "adopt-leave", children: "Set it aside" }), _jsx(Button, { onClick: () => handleLogin('merge'), "data-testid": "adopt-merge", children: "Bring my data" })] })] }));
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=AdoptDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdoptDialog.js","sourceRoot":"","sources":["../../src/mui/AdoptDialog.tsx"],"names":[],"mappings":";AAAA;;GAEG;AACH;;;;;;;;GAQG;AACH,OAAO,EACL,MAAM,EACN,MAAM,EACN,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,WAAW,EACZ,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,IAAI,EACJ,OAAO,EAIR;IACC,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAA;IAE5B,SAAS,WAAW,CAAC,KAAwB;QAC3C,OAAO,EAAE,CAAA;QACT,KAAK,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IACvB,CAAC;IAED,OAAO,CACL,MAAC,MAAM,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,iBAAc,cAAc,aAC9D,KAAC,WAAW,4CAAwC,EACpD,KAAC,aAAa,cACZ,KAAC,iBAAiB,2NAIE,GACN,EAChB,MAAC,aAAa,eACZ,KAAC,MAAM,IAAC,OAAO,EAAE,OAAO,iBAAc,cAAc,uBAE3C,EACT,KAAC,MAAM,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,iBAAc,aAAa,6BAE7D,EACT,KAAC,MAAM,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,iBAAc,aAAa,8BAE7D,IACK,IACT,CACV,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param props {object}
|
|
3
|
+
* @param props.open {boolean} whether the dialog is shown
|
|
4
|
+
* @param props.onClose {() => void} called after the reset completes and on a
|
|
5
|
+
* dismiss/cancel (which clears nothing)
|
|
6
|
+
* @returns {ReactNode}
|
|
7
|
+
*/
|
|
8
|
+
export declare function ClearDataDialog({ open, onClose }: {
|
|
9
|
+
open: boolean;
|
|
10
|
+
onClose: () => void;
|
|
11
|
+
}): import("react").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=ClearDataDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClearDataDialog.d.ts","sourceRoot":"","sources":["../../src/mui/ClearDataDialog.tsx"],"names":[],"mappings":"AAqBA;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,OAAO,EACR,EAAE;IACD,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,+BAgCA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/*!
|
|
3
|
+
* Copyright (c) 2026 Interop Alliance. All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The clear-data confirmation dialog (local mode). A dumb presentational
|
|
7
|
+
* component over the store's `clearLocalData` action: it confirms the
|
|
8
|
+
* destructive reset -- deleting the local replica and minting a brand-new
|
|
9
|
+
* anonymous identity -- and nudges the user to export their data first, since a
|
|
10
|
+
* local-only, unsynced app has no server copy to recover from. Dismissing the
|
|
11
|
+
* dialog (backdrop / escape / Cancel) leaves the data untouched.
|
|
12
|
+
*/
|
|
13
|
+
import { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from '@mui/material';
|
|
14
|
+
import { useClearData } from '../react/hooks.js';
|
|
15
|
+
/**
|
|
16
|
+
* @param props {object}
|
|
17
|
+
* @param props.open {boolean} whether the dialog is shown
|
|
18
|
+
* @param props.onClose {() => void} called after the reset completes and on a
|
|
19
|
+
* dismiss/cancel (which clears nothing)
|
|
20
|
+
* @returns {ReactNode}
|
|
21
|
+
*/
|
|
22
|
+
export function ClearDataDialog({ open, onClose }) {
|
|
23
|
+
const clearData = useClearData();
|
|
24
|
+
async function handleClear() {
|
|
25
|
+
await clearData();
|
|
26
|
+
onClose();
|
|
27
|
+
}
|
|
28
|
+
return (_jsxs(Dialog, { open: open, onClose: onClose, "data-testid": "clear-data-dialog", children: [_jsx(DialogTitle, { children: "Clear data" }), _jsx(DialogContent, { children: _jsx(DialogContentText, { children: "This permanently erases everything stored on this device and starts you over fresh. Your data lives only on this device, so once cleared it cannot be recovered -- export a copy first if you want to keep it." }) }), _jsxs(DialogActions, { children: [_jsx(Button, { onClick: onClose, "data-testid": "clear-data-cancel", children: "Cancel" }), _jsx(Button, { color: "error", onClick: () => void handleClear(), "data-testid": "clear-data-confirm", children: "Clear data" })] })] }));
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=ClearDataDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClearDataDialog.js","sourceRoot":"","sources":["../../src/mui/ClearDataDialog.tsx"],"names":[],"mappings":";AAAA;;GAEG;AACH;;;;;;;GAOG;AACH,OAAO,EACL,MAAM,EACN,MAAM,EACN,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,WAAW,EACZ,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,IAAI,EACJ,OAAO,EAIR;IACC,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;IAEhC,KAAK,UAAU,WAAW;QACxB,MAAM,SAAS,EAAE,CAAA;QACjB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,OAAO,CACL,MAAC,MAAM,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,iBAAc,mBAAmB,aACnE,KAAC,WAAW,6BAAyB,EACrC,KAAC,aAAa,cACZ,KAAC,iBAAiB,iOAIE,GACN,EAChB,MAAC,aAAa,eACZ,KAAC,MAAM,IAAC,OAAO,EAAE,OAAO,iBAAc,mBAAmB,uBAEhD,EACT,KAAC,MAAM,IACL,KAAK,EAAC,OAAO,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,WAAW,EAAE,iBACrB,oBAAoB,2BAGzB,IACK,IACT,CACV,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param props {object}
|
|
3
|
+
* @param props.open {boolean} whether the dialog is shown
|
|
4
|
+
* @param props.onClose {() => void} called after an action completes and on a
|
|
5
|
+
* dismiss/cancel (which runs no logout)
|
|
6
|
+
* @returns {ReactNode}
|
|
7
|
+
*/
|
|
8
|
+
export declare function LogoutDialog({ open, onClose }: {
|
|
9
|
+
open: boolean;
|
|
10
|
+
onClose: () => void;
|
|
11
|
+
}): import("react").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=LogoutDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogoutDialog.d.ts","sourceRoot":"","sources":["../../src/mui/LogoutDialog.tsx"],"names":[],"mappings":"AAqBA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,OAAO,EACR,EAAE;IACD,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,+BAsCA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/*!
|
|
3
|
+
* Copyright (c) 2026 Interop Alliance. All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The logout confirmation dialog (connected mode). A dumb presentational
|
|
7
|
+
* component over the store's `logout` action: it makes the keep-vs-wipe choice
|
|
8
|
+
* explicit -- log out but leave the local replica on this device, or log out and
|
|
9
|
+
* erase it -- since a shared machine and a personal one want opposite defaults.
|
|
10
|
+
* Dismissing the dialog (backdrop / escape / Cancel) cancels logout entirely; no
|
|
11
|
+
* action runs and the session stays connected.
|
|
12
|
+
*/
|
|
13
|
+
import { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from '@mui/material';
|
|
14
|
+
import { useLogout } from '../react/hooks.js';
|
|
15
|
+
/**
|
|
16
|
+
* @param props {object}
|
|
17
|
+
* @param props.open {boolean} whether the dialog is shown
|
|
18
|
+
* @param props.onClose {() => void} called after an action completes and on a
|
|
19
|
+
* dismiss/cancel (which runs no logout)
|
|
20
|
+
* @returns {ReactNode}
|
|
21
|
+
*/
|
|
22
|
+
export function LogoutDialog({ open, onClose }) {
|
|
23
|
+
const logout = useLogout();
|
|
24
|
+
async function handleLogout(wipe) {
|
|
25
|
+
await logout({ wipe });
|
|
26
|
+
onClose();
|
|
27
|
+
}
|
|
28
|
+
return (_jsxs(Dialog, { open: open, onClose: onClose, "data-testid": "logout-dialog", children: [_jsx(DialogTitle, { children: "Log out" }), _jsx(DialogContent, { children: _jsx(DialogContentText, { children: "Keep your data on this device for next time, or erase it now. Erasing removes the local copy from this device only -- data already synced to your storage stays there and returns when you log back in." }) }), _jsxs(DialogActions, { children: [_jsx(Button, { onClick: onClose, "data-testid": "logout-cancel", children: "Cancel" }), _jsx(Button, { onClick: () => void handleLogout(false), "data-testid": "logout-keep", children: "Log out, keep data" }), _jsx(Button, { color: "error", onClick: () => void handleLogout(true), "data-testid": "logout-wipe", children: "Log out, erase data" })] })] }));
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=LogoutDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogoutDialog.js","sourceRoot":"","sources":["../../src/mui/LogoutDialog.tsx"],"names":[],"mappings":";AAAA;;GAEG;AACH;;;;;;;GAOG;AACH,OAAO,EACL,MAAM,EACN,MAAM,EACN,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,WAAW,EACZ,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE7C;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,IAAI,EACJ,OAAO,EAIR;IACC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,KAAK,UAAU,YAAY,CAAC,IAAa;QACvC,MAAM,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QACtB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,OAAO,CACL,MAAC,MAAM,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,iBAAc,eAAe,aAC/D,KAAC,WAAW,0BAAsB,EAClC,KAAC,aAAa,cACZ,KAAC,iBAAiB,0NAIE,GACN,EAChB,MAAC,aAAa,eACZ,KAAC,MAAM,IAAC,OAAO,EAAE,OAAO,iBAAc,eAAe,uBAE5C,EACT,KAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,YAAY,CAAC,KAAK,CAAC,iBAC3B,aAAa,mCAGlB,EACT,KAAC,MAAM,IACL,KAAK,EAAC,OAAO,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,iBAC1B,aAAa,oCAGlB,IACK,IACT,CACV,CAAA;AACH,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @param props {object}
|
|
3
|
-
* @param [props.loginPath] {string} where to send
|
|
4
|
-
* (defaults to `/login`)
|
|
3
|
+
* @param [props.loginPath] {string} where to send a not-yet-connected visitor
|
|
4
|
+
* in a login-gated app (defaults to `/login`)
|
|
5
5
|
* @returns {ReactNode}
|
|
6
6
|
*/
|
|
7
7
|
export declare function ProtectedRoute({ loginPath }?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProtectedRoute.d.ts","sourceRoot":"","sources":["../../src/mui/ProtectedRoute.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProtectedRoute.d.ts","sourceRoot":"","sources":["../../src/mui/ProtectedRoute.tsx"],"names":[],"mappings":"AA4CA;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAC7B,SAAoB,EACrB,GAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAA;CACd,+BA0BL"}
|