@interop/was-react 0.1.9 → 0.1.10
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 +80 -0
- package/dist/auth/loginFlow.d.ts +4 -2
- package/dist/auth/loginFlow.d.ts.map +1 -1
- package/dist/auth/loginFlow.js +1 -1
- package/dist/auth/loginFlow.js.map +1 -1
- package/dist/auth/loginRequest.d.ts +29 -3
- package/dist/auth/loginRequest.d.ts.map +1 -1
- package/dist/auth/loginRequest.js +12 -4
- package/dist/auth/loginRequest.js.map +1 -1
- package/dist/config.d.ts +15 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +0 -0
- package/dist/config.js.map +1 -1
- package/dist/identity/documentLoader.d.ts +2 -8
- package/dist/identity/documentLoader.d.ts.map +1 -1
- package/dist/identity/documentLoader.js +7 -88
- package/dist/identity/documentLoader.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/session/authStore.d.ts.map +1 -1
- package/dist/session/authStore.js +20 -9
- package/dist/session/authStore.js.map +1 -1
- package/dist/storage/entityStore.d.ts +20 -0
- package/dist/storage/entityStore.d.ts.map +1 -1
- package/dist/storage/entityStore.js +24 -1
- package/dist/storage/entityStore.js.map +1 -1
- package/dist/storage/localStore.d.ts +10 -0
- package/dist/storage/localStore.d.ts.map +1 -1
- package/dist/storage/localStore.js +24 -2
- package/dist/storage/localStore.js.map +1 -1
- package/dist/storage/publicUrl.d.ts +20 -0
- package/dist/storage/publicUrl.d.ts.map +1 -0
- package/dist/storage/publicUrl.js +33 -0
- package/dist/storage/publicUrl.js.map +1 -0
- package/dist/storage/storageManager.d.ts +28 -0
- package/dist/storage/storageManager.d.ts.map +1 -1
- package/dist/storage/storageManager.js +42 -2
- package/dist/storage/storageManager.js.map +1 -1
- package/dist/storage/wasRemoteStore.d.ts +91 -2
- package/dist/storage/wasRemoteStore.d.ts.map +1 -1
- package/dist/storage/wasRemoteStore.js +159 -9
- package/dist/storage/wasRemoteStore.js.map +1 -1
- package/dist/storage/wasSync.d.ts +2 -1
- package/dist/storage/wasSync.d.ts.map +1 -1
- package/dist/storage/wasSync.js +13 -6
- package/dist/storage/wasSync.js.map +1 -1
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -116,6 +116,17 @@ recognize a stray encrypted envelope and refuses the row), and payloads should
|
|
|
116
116
|
carry the `updatedAt` / `deviceId` LWW fields like any other collection --
|
|
117
117
|
without them a concurrent multi-device edit falls back to server-wins.
|
|
118
118
|
|
|
119
|
+
At login, a public collection is requested from the wallet with the distinct
|
|
120
|
+
`urn:was:public-collection` descriptor type (private collections use
|
|
121
|
+
`urn:was:collection`): the wallet provisions it plaintext with a public-read
|
|
122
|
+
policy, shows a world-readable consent warning, and delegates the usual
|
|
123
|
+
read/write capability (public covers only unauthenticated reads; writes stay
|
|
124
|
+
capability-only). A wallet that predates the descriptor reports the request
|
|
125
|
+
unsatisfiable rather than silently provisioning a private collection, so the
|
|
126
|
+
feature fails closed with older wallets. Publicness is granted at consent time
|
|
127
|
+
by the wallet -- the app itself can never escalate an existing private
|
|
128
|
+
collection to public.
|
|
129
|
+
|
|
119
130
|
### 2. Entity stores and the registry
|
|
120
131
|
|
|
121
132
|
```ts
|
|
@@ -228,6 +239,75 @@ stamped on EVERY insert and update: they are the last-write-wins pair that
|
|
|
228
239
|
settles concurrent multi-device edits of the same entity. A payload without them
|
|
229
240
|
loses every sync conflict.
|
|
230
241
|
|
|
242
|
+
A public collection can additionally answer server-side equality queries.
|
|
243
|
+
Declare the queryable content attributes in the collection config:
|
|
244
|
+
|
|
245
|
+
```ts
|
|
246
|
+
{ key: 'posts', id: 'microblog-posts', visibility: 'public',
|
|
247
|
+
indexes: ['author', 'inReplyTo'] }
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
The sync bootstrap announces the declaration in the collection description (the
|
|
251
|
+
server rejects filters on undeclared attributes fail-closed), and the entity
|
|
252
|
+
store's `query` verb runs the query:
|
|
253
|
+
|
|
254
|
+
```ts
|
|
255
|
+
const page = await usePosts.getState().query({
|
|
256
|
+
equals: { author: 'did:key:z6Mk...' }
|
|
257
|
+
})
|
|
258
|
+
// page.docs: the matching payloads
|
|
259
|
+
// page.hasMore / page.cursor: pass cursor back in to fetch the next page
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
`query` is a read verb against the server (signed with the granted collection
|
|
263
|
+
capability, so it needs a wallet-connected session), not a sync path: it never
|
|
264
|
+
touches the in-memory Map. Multiple `equals` attributes AND together; values
|
|
265
|
+
are string equality only. On the wire it is the collection list endpoint's
|
|
266
|
+
cacheable `filter[attr]=value` GET form, with filter attributes emitted in
|
|
267
|
+
sorted order so identical queries produce identical URLs; on a public
|
|
268
|
+
collection the same URL also answers anonymously for non-app consumers.
|
|
269
|
+
Declaring `indexes` on a private collection is rejected at config validation --
|
|
270
|
+
the encrypted (blinded-index) query path is not yet supported.
|
|
271
|
+
|
|
272
|
+
### Share links (publish-copy)
|
|
273
|
+
|
|
274
|
+
A public collection also gives every document a stable, world-readable resource
|
|
275
|
+
URL, which is the basis for share links. The pattern is publish-copy: declare
|
|
276
|
+
one public collection for shared documents,
|
|
277
|
+
|
|
278
|
+
```ts
|
|
279
|
+
{ key: 'sharedNotes', id: 'shared-notes', visibility: 'public' }
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
to share a document, copy it into that store, and the share URL is that copy's
|
|
283
|
+
resource URL:
|
|
284
|
+
|
|
285
|
+
```ts
|
|
286
|
+
import { publicUrlFor } from '@interop/was-react'
|
|
287
|
+
import { useSharedNotes } from './stores.js'
|
|
288
|
+
|
|
289
|
+
// Share: copy the doc into the public collection.
|
|
290
|
+
await useSharedNotes.getState().insert(doc)
|
|
291
|
+
const url = publicUrlFor({ collectionKey: 'sharedNotes', id: doc.id })
|
|
292
|
+
|
|
293
|
+
// Unshare: remove the copy; replication pushes the delete and the URL stops
|
|
294
|
+
// resolving.
|
|
295
|
+
await useSharedNotes.getState().remove(doc.id)
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
The URL is stable across edits because a public collection stores the payload
|
|
299
|
+
under its own logical uuid. Whether a share is a copy (which survives later
|
|
300
|
+
unsharing edits of the original) or a move is an app product decision;
|
|
301
|
+
content-addressed ids (hashing immutable content so identical content shares
|
|
302
|
+
one URL) are likewise an app-level choice.
|
|
303
|
+
|
|
304
|
+
Anyone on the web can read the URL -- there is no auth. A consumer can fetch it
|
|
305
|
+
with `WasClient.publicRead` from `@interop/was-client` or a plain GET. The URL
|
|
306
|
+
resolves only after the document has synced to the server (a locally-inserted
|
|
307
|
+
doc shares after the next sync push). Expiring or time-boxed share links are
|
|
308
|
+
not supported: sharing IS public-collection membership, so a share lasts until
|
|
309
|
+
the copy is removed.
|
|
310
|
+
|
|
231
311
|
The MUI entry supplies a router gate and status UI on top of this; see
|
|
232
312
|
[Entry points](#entry-points).
|
|
233
313
|
|
package/dist/auth/loginFlow.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ import type { IZcap } from '@interop/data-integrity-core';
|
|
|
19
19
|
import type { DocumentLoader } from '../identity/documentLoader.js';
|
|
20
20
|
import { type SeedCredentialConfig } from '../identity/seedCredential.js';
|
|
21
21
|
import type { IdentityAgents } from '../identity/agents.js';
|
|
22
|
+
import { type GrantRequestCollection } from './loginRequest.js';
|
|
22
23
|
import { type CheckedGrants } from './verifyResponse.js';
|
|
23
24
|
import type { ParsedGrants } from '../grants.js';
|
|
24
25
|
/**
|
|
@@ -36,9 +37,10 @@ export interface LoginConfig {
|
|
|
36
37
|
*/
|
|
37
38
|
appName: string;
|
|
38
39
|
/**
|
|
39
|
-
* The
|
|
40
|
+
* The collections to request read/write grants for (WAS collection id +
|
|
41
|
+
* visibility; `'public'` selects the `urn:was:public-collection` descriptor).
|
|
40
42
|
*/
|
|
41
|
-
collections:
|
|
43
|
+
collections: GrantRequestCollection[];
|
|
42
44
|
/**
|
|
43
45
|
* The seed-credential type name + vocabulary namespace.
|
|
44
46
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loginFlow.d.ts","sourceRoot":"","sources":["../../src/auth/loginFlow.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAKL,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAA;AAEtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"loginFlow.d.ts","sourceRoot":"","sources":["../../src/auth/loginFlow.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAKL,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAA;AAEtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,WAAW,EAAE,sBAAsB,EAAE,CAAA;IACrC;;OAEG;IACH,UAAU,EAAE,oBAAoB,CAAA;IAChC;;OAEG;IACH,cAAc,EAAE,cAAc,CAAA;IAC9B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GACpB,SAAS,GAAG,aAAa,GAAG,mBAAmB,GAAG,WAAW,CAAA;AAE/D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,EAAE,cAAc,CAAA;IACxB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;IACpB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,IAAI,EAAE,MAAM;CAIzB;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,EAClC,QAAQ,EACR,MAAM,EACN,OAAO,EACR,EAAE;IACD,QAAQ,EAAE,cAAc,CAAA;IACxB,MAAM,EAAE,WAAW,CAAA;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;CACtC,GAAG,OAAO,CAAC,aAAa,CAAC,CAkCzB;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,EACpC,MAAM,EACN,OAAO,EACR,EAAE;IACD,MAAM,EAAE,WAAW,CAAA;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;CACtC,GAAG,OAAO,CAAC,YAAY,CAAC,CAiFxB"}
|
package/dist/auth/loginFlow.js
CHANGED
|
@@ -51,7 +51,7 @@ export async function requestGrants({ identity, config, onPhase }) {
|
|
|
51
51
|
return checkGrants({
|
|
52
52
|
grants: grantsOf(presentation),
|
|
53
53
|
controllerDid: identity.controllerDid,
|
|
54
|
-
collections: config.collections,
|
|
54
|
+
collections: config.collections.map(collection => collection.id),
|
|
55
55
|
...(config.wasServerUrl !== undefined && {
|
|
56
56
|
expectedServerUrl: config.wasServerUrl
|
|
57
57
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loginFlow.js","sourceRoot":"","sources":["../../src/auth/loginFlow.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EAEvB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAE9D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,YAAY,
|
|
1
|
+
{"version":3,"file":"loginFlow.js","sourceRoot":"","sources":["../../src/auth/loginFlow.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,13 @@
|
|
|
11
11
|
* one capabilityQuery per collection (descriptor-object targets, which the
|
|
12
12
|
* wallet resolves against the user's one Space and auto-provisions). Only
|
|
13
13
|
* collection-scoped capabilities are requested -- no whole-space grant.
|
|
14
|
+
* A `visibility: 'public'` collection is requested with the distinct
|
|
15
|
+
* descriptor type `urn:was:public-collection` (the wallet provisions it
|
|
16
|
+
* plaintext with a collection-level public-read policy and renders a
|
|
17
|
+
* world-readable consent warning); wallets that predate the type render it
|
|
18
|
+
* UNSATISFIABLE, which is the intended fail-closed behavior -- an older
|
|
19
|
+
* wallet must not silently provision a private collection the app believes
|
|
20
|
+
* is public.
|
|
14
21
|
*
|
|
15
22
|
* `domain` must host-match the CHAPI requesting origin or the wallet refuses
|
|
16
23
|
* to sign; `challenge` must be fresh per request (echoed into the DIDAuth
|
|
@@ -21,6 +28,22 @@ import type { IVPRDetails } from './walletRequestTypes.js';
|
|
|
21
28
|
* Default read/write actions requested on each app collection.
|
|
22
29
|
*/
|
|
23
30
|
export declare const RW_ACTIONS: string[];
|
|
31
|
+
/**
|
|
32
|
+
* One collection to request a grant for: the WAS collection id plus its
|
|
33
|
+
* declared visibility (`'private'`, the default, or `'public'`).
|
|
34
|
+
*/
|
|
35
|
+
export interface GrantRequestCollection {
|
|
36
|
+
/**
|
|
37
|
+
* WAS collection id (the unprefixed, cross-app generic name).
|
|
38
|
+
*/
|
|
39
|
+
id: string;
|
|
40
|
+
/**
|
|
41
|
+
* Who can read the collection; selects the descriptor type
|
|
42
|
+
* (`urn:was:collection` for `'private'`/unset, `urn:was:public-collection`
|
|
43
|
+
* for `'public'`).
|
|
44
|
+
*/
|
|
45
|
+
visibility?: 'private' | 'public';
|
|
46
|
+
}
|
|
24
47
|
/**
|
|
25
48
|
* A fresh nonce for a VPR challenge.
|
|
26
49
|
*/
|
|
@@ -44,13 +67,16 @@ export declare function buildSeedProbeVpr({ challenge, domain, credentialType, a
|
|
|
44
67
|
/**
|
|
45
68
|
* VPR #2: DIDAuthentication + AuthorizationCapabilityQuery -- one read/write
|
|
46
69
|
* capabilityQuery per app collection (delegated to `controllerDid`). Only
|
|
47
|
-
* collection-scoped capabilities are requested.
|
|
70
|
+
* collection-scoped capabilities are requested. A `visibility: 'public'`
|
|
71
|
+
* collection uses the `urn:was:public-collection` descriptor type; everything
|
|
72
|
+
* else uses `urn:was:collection`.
|
|
48
73
|
*
|
|
49
74
|
* @param options {object}
|
|
50
75
|
* @param options.challenge {string}
|
|
51
76
|
* @param options.domain {string}
|
|
52
77
|
* @param options.controllerDid {string}
|
|
53
|
-
* @param options.collections {
|
|
78
|
+
* @param options.collections {GrantRequestCollection[]} the collections to
|
|
79
|
+
* request (WAS collection id + visibility)
|
|
54
80
|
* @param options.appName {string} human-readable app name for the reason line
|
|
55
81
|
* @param [options.actions] {string[]} the RW action set (defaults to
|
|
56
82
|
* `RW_ACTIONS`)
|
|
@@ -60,7 +86,7 @@ export declare function buildGrantsVpr({ challenge, domain, controllerDid, colle
|
|
|
60
86
|
challenge: string;
|
|
61
87
|
domain: string;
|
|
62
88
|
controllerDid: string;
|
|
63
|
-
collections:
|
|
89
|
+
collections: GrantRequestCollection[];
|
|
64
90
|
appName: string;
|
|
65
91
|
actions?: string[];
|
|
66
92
|
}): IVPRDetails;
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAEV,WAAW,EACZ,MAAM,yBAAyB,CAAA;AAEhC;;GAEG;AACH,eAAO,MAAM,UAAU,UAA2C,CAAA;AAElE;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IACV;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;CAClC;AAED;;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;;;;;;;;;;;;;;;;;GAiBG;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,sBAAsB,EAAE,CAAA;IACrC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB,GAAG,WAAW,CA6Bd"}
|
|
@@ -40,25 +40,33 @@ export function buildSeedProbeVpr({ challenge, domain, credentialType, appName }
|
|
|
40
40
|
/**
|
|
41
41
|
* VPR #2: DIDAuthentication + AuthorizationCapabilityQuery -- one read/write
|
|
42
42
|
* capabilityQuery per app collection (delegated to `controllerDid`). Only
|
|
43
|
-
* collection-scoped capabilities are requested.
|
|
43
|
+
* collection-scoped capabilities are requested. A `visibility: 'public'`
|
|
44
|
+
* collection uses the `urn:was:public-collection` descriptor type; everything
|
|
45
|
+
* else uses `urn:was:collection`.
|
|
44
46
|
*
|
|
45
47
|
* @param options {object}
|
|
46
48
|
* @param options.challenge {string}
|
|
47
49
|
* @param options.domain {string}
|
|
48
50
|
* @param options.controllerDid {string}
|
|
49
|
-
* @param options.collections {
|
|
51
|
+
* @param options.collections {GrantRequestCollection[]} the collections to
|
|
52
|
+
* request (WAS collection id + visibility)
|
|
50
53
|
* @param options.appName {string} human-readable app name for the reason line
|
|
51
54
|
* @param [options.actions] {string[]} the RW action set (defaults to
|
|
52
55
|
* `RW_ACTIONS`)
|
|
53
56
|
* @returns {IVPRDetails}
|
|
54
57
|
*/
|
|
55
58
|
export function buildGrantsVpr({ challenge, domain, controllerDid, collections, appName, actions = RW_ACTIONS }) {
|
|
56
|
-
const capabilityQuery = collections.map(id => ({
|
|
59
|
+
const capabilityQuery = collections.map(({ id, visibility }) => ({
|
|
57
60
|
referenceId: id,
|
|
58
61
|
reason: `Store your ${appName} data in the "${id}" collection.`,
|
|
59
62
|
controller: controllerDid,
|
|
60
63
|
allowedAction: actions,
|
|
61
|
-
invocationTarget: {
|
|
64
|
+
invocationTarget: {
|
|
65
|
+
type: visibility === 'public'
|
|
66
|
+
? 'urn:was:public-collection'
|
|
67
|
+
: 'urn:was:collection',
|
|
68
|
+
name: id
|
|
69
|
+
}
|
|
62
70
|
}));
|
|
63
71
|
return {
|
|
64
72
|
query: [
|
|
@@ -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":"AA8BA;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;AAmBlE;;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;;;;;;;;;;;;;;;;;GAiBG;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,CAC/D,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QACvB,WAAW,EAAE,EAAE;QACf,MAAM,EAAE,cAAc,OAAO,iBAAiB,EAAE,eAAe;QAC/D,UAAU,EAAE,aAAa;QACzB,aAAa,EAAE,OAAO;QACtB,gBAAgB,EAAE;YAChB,IAAI,EAAE,UAAU,KAAK,QAAQ;gBAC3B,CAAC,CAAC,2BAA2B;gBAC7B,CAAC,CAAC,oBAAoB;YACxB,IAAI,EAAE,EAAE;SACT;KACF,CAAC,CACH,CAAA;IACD,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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -48,6 +48,15 @@ export interface WasCollectionConfig {
|
|
|
48
48
|
* their stored form and stop being readable by the other mode.
|
|
49
49
|
*/
|
|
50
50
|
visibility?: 'private' | 'public';
|
|
51
|
+
/**
|
|
52
|
+
* The content attributes the server indexes for equality queries
|
|
53
|
+
* (`store.query({ equals })`), e.g. `['author', 'inReplyTo']`. Declared here
|
|
54
|
+
* so the sync bootstrap can announce them in the collection description
|
|
55
|
+
* (undeclared attributes are rejected fail-closed by the server). Only valid
|
|
56
|
+
* on `visibility: 'public'` (plaintext) collections for now: the encrypted
|
|
57
|
+
* `blinded-index` query path is not yet supported.
|
|
58
|
+
*/
|
|
59
|
+
indexes?: string[];
|
|
51
60
|
}
|
|
52
61
|
/**
|
|
53
62
|
* Optional replication tuning; each field falls back to a documented default.
|
|
@@ -213,10 +222,14 @@ export declare const DEFAULT_EXPIRY_WATCH_MS: number;
|
|
|
213
222
|
/**
|
|
214
223
|
* Validates a collection registry, fail-closed. Rejects an unknown `visibility`
|
|
215
224
|
* value (a config written against a future library version must not silently
|
|
216
|
-
* fall back to either mode)
|
|
225
|
+
* fall back to either mode), the encrypted-but-public combination: the same
|
|
217
226
|
* WAS collection id registered under conflicting visibilities, which would
|
|
218
227
|
* treat one server-side collection as both encrypted (private) and plaintext
|
|
219
|
-
* (public)
|
|
228
|
+
* (public), and malformed `indexes` declarations (indexes on a private
|
|
229
|
+
* collection -- the encrypted query path is not yet supported -- plus empty or
|
|
230
|
+
* duplicate attribute names, and the same WAS collection id declared with
|
|
231
|
+
* diverging index sets). Called by the storage layer before any replica is
|
|
232
|
+
* opened.
|
|
220
233
|
*
|
|
221
234
|
* @param collections {WasCollectionConfig[]} the collection registry
|
|
222
235
|
* @returns {void}
|
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;IACV;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
Binary file
|
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":"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"}
|
|
@@ -8,15 +8,9 @@ export type DocumentLoader = (url: string) => Promise<{
|
|
|
8
8
|
}>;
|
|
9
9
|
/**
|
|
10
10
|
* Builds the JSON-LD document loader handed to `@interop/vc` issuance and
|
|
11
|
-
* verifier-core verification.
|
|
12
|
-
* did:web dev shim activates only when `wasServerUrl` is an http URL.
|
|
11
|
+
* verifier-core verification.
|
|
13
12
|
*
|
|
14
|
-
* @param [options] {object}
|
|
15
|
-
* @param [options.wasServerUrl] {string} the configured WAS server URL; when
|
|
16
|
-
* it is an http URL, did:web DIDs on that exact host are resolved over http
|
|
17
13
|
* @returns {DocumentLoader}
|
|
18
14
|
*/
|
|
19
|
-
export declare function createDocumentLoader(
|
|
20
|
-
wasServerUrl?: string;
|
|
21
|
-
}): DocumentLoader;
|
|
15
|
+
export declare function createDocumentLoader(): DocumentLoader;
|
|
22
16
|
//# sourceMappingURL=documentLoader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentLoader.d.ts","sourceRoot":"","sources":["../../src/identity/documentLoader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"documentLoader.d.ts","sourceRoot":"","sources":["../../src/identity/documentLoader.ts"],"names":[],"mappings":"AAYA;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACpD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,QAAQ,EAAE,OAAO,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAC,CAAA;AAIF;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAErD"}
|
|
@@ -3,101 +3,20 @@
|
|
|
3
3
|
*/
|
|
4
4
|
/**
|
|
5
5
|
* The app's one JSON-LD document loader: static security contexts plus did:key
|
|
6
|
-
* / did:web resolution (`@interop/security-document-loader`).
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* configured WAS server URL is http, DIDs on exactly that host are resolved over
|
|
11
|
-
* it; everything else falls through to the standard loader. In production
|
|
12
|
-
* (https server, or no server URL) the shim never engages.
|
|
6
|
+
* / did:web resolution (`@interop/security-document-loader`). did:web DIDs on
|
|
7
|
+
* loopback hosts (a local dev WAS server on `localhost` or `127.0.0.1`)
|
|
8
|
+
* resolve over plain http; the resolver handles that natively, so no dev shim
|
|
9
|
+
* is needed here.
|
|
13
10
|
*/
|
|
14
11
|
import { securityLoader } from '@interop/security-document-loader';
|
|
15
12
|
const baseLoader = securityLoader({ fetchRemoteContexts: true }).build();
|
|
16
|
-
/**
|
|
17
|
-
* Per-suite context for a dereferenced verification-method node.
|
|
18
|
-
*/
|
|
19
|
-
const CONTEXT_BY_KEY_TYPE = {
|
|
20
|
-
Ed25519VerificationKey2020: 'https://w3id.org/security/suites/ed25519-2020/v1',
|
|
21
|
-
X25519KeyAgreementKey2020: 'https://w3id.org/security/suites/x25519-2020/v1',
|
|
22
|
-
Multikey: 'https://w3id.org/security/multikey/v1'
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* Dereferences a `#fragment` subnode the way did-web-resolver's getNode does.
|
|
26
|
-
*/
|
|
27
|
-
function nodeOf(didDocument, id) {
|
|
28
|
-
const methods = (didDocument.verificationMethod ?? []);
|
|
29
|
-
let match = methods.find(vm => vm?.id === id);
|
|
30
|
-
if (!match) {
|
|
31
|
-
for (const [key, value] of Object.entries(didDocument)) {
|
|
32
|
-
if (key === '@context' || key === 'verificationMethod') {
|
|
33
|
-
continue;
|
|
34
|
-
}
|
|
35
|
-
if (Array.isArray(value)) {
|
|
36
|
-
match = value.find(entry => entry?.id === id);
|
|
37
|
-
}
|
|
38
|
-
else if (value?.id === id) {
|
|
39
|
-
match = value;
|
|
40
|
-
}
|
|
41
|
-
if (match) {
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
if (!match) {
|
|
47
|
-
throw new Error(`DID document entity with id "${id}" not found.`);
|
|
48
|
-
}
|
|
49
|
-
const context = (match.type && CONTEXT_BY_KEY_TYPE[match.type]) ?? didDocument['@context'];
|
|
50
|
-
return { '@context': context, ...match };
|
|
51
|
-
}
|
|
52
13
|
/**
|
|
53
14
|
* Builds the JSON-LD document loader handed to `@interop/vc` issuance and
|
|
54
|
-
* verifier-core verification.
|
|
55
|
-
* did:web dev shim activates only when `wasServerUrl` is an http URL.
|
|
15
|
+
* verifier-core verification.
|
|
56
16
|
*
|
|
57
|
-
* @param [options] {object}
|
|
58
|
-
* @param [options.wasServerUrl] {string} the configured WAS server URL; when
|
|
59
|
-
* it is an http URL, did:web DIDs on that exact host are resolved over http
|
|
60
17
|
* @returns {DocumentLoader}
|
|
61
18
|
*/
|
|
62
|
-
export function createDocumentLoader(
|
|
63
|
-
|
|
64
|
-
* Maps a did:web DID onto the local http WAS server's URL, or `null` when the
|
|
65
|
-
* DID does not live on that host (or the shim is not applicable).
|
|
66
|
-
*/
|
|
67
|
-
function insecureDidWebUrl(didAuthority) {
|
|
68
|
-
if (!wasServerUrl || !wasServerUrl.startsWith('http://')) {
|
|
69
|
-
return null;
|
|
70
|
-
}
|
|
71
|
-
const server = new URL(wasServerUrl);
|
|
72
|
-
const segments = didAuthority.split(':');
|
|
73
|
-
// ['did', 'web', '<encoded host>', ...path]
|
|
74
|
-
const host = segments[2] ? decodeURIComponent(segments[2]) : '';
|
|
75
|
-
if (host !== server.host) {
|
|
76
|
-
return null;
|
|
77
|
-
}
|
|
78
|
-
const path = segments.slice(3).map(decodeURIComponent).join('/');
|
|
79
|
-
return `http://${host}/${path ? `${path}/did.json` : '.well-known/did.json'}`;
|
|
80
|
-
}
|
|
81
|
-
return async function documentLoader(url) {
|
|
82
|
-
if (url.startsWith('did:web:')) {
|
|
83
|
-
const [didAuthority = ''] = url.split(/[#?]/);
|
|
84
|
-
const fetchUrl = insecureDidWebUrl(didAuthority);
|
|
85
|
-
if (fetchUrl) {
|
|
86
|
-
const response = await fetch(fetchUrl);
|
|
87
|
-
if (!response.ok) {
|
|
88
|
-
throw new Error(`Could not fetch the DID document at "${fetchUrl}" (status ${response.status}).`);
|
|
89
|
-
}
|
|
90
|
-
const didDocument = (await response.json());
|
|
91
|
-
if (didDocument.id !== didAuthority) {
|
|
92
|
-
throw new Error(`DID document for "${didAuthority}" not found.`);
|
|
93
|
-
}
|
|
94
|
-
const document = url.includes('#')
|
|
95
|
-
? nodeOf(didDocument, url)
|
|
96
|
-
: didDocument;
|
|
97
|
-
return { contextUrl: null, document, documentUrl: url };
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return (await baseLoader(url));
|
|
101
|
-
};
|
|
19
|
+
export function createDocumentLoader() {
|
|
20
|
+
return baseLoader;
|
|
102
21
|
}
|
|
103
22
|
//# sourceMappingURL=documentLoader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentLoader.js","sourceRoot":"","sources":["../../src/identity/documentLoader.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH
|
|
1
|
+
{"version":3,"file":"documentLoader.js","sourceRoot":"","sources":["../../src/identity/documentLoader.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;GAMG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAWlE,MAAM,UAAU,GAAG,cAAc,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;AAExE;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,UAA4B,CAAA;AACrC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,15 +19,16 @@ 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, newChallenge, buildSeedProbeVpr, buildGrantsVpr } from './auth/loginRequest.js';
|
|
22
|
+
export { RW_ACTIONS, newChallenge, buildSeedProbeVpr, buildGrantsVpr, type GrantRequestCollection } 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';
|
|
26
26
|
export * from './sync/index.js';
|
|
27
27
|
export { LocalStore } from './storage/localStore.js';
|
|
28
|
-
export { setLocalStore, requireStore, hasStore, clearLocalStore, getDeviceId } from './storage/storageManager.js';
|
|
28
|
+
export { setLocalStore, requireStore, hasStore, clearLocalStore, setRemoteStore, requireRemoteStore, hasRemoteStore, clearRemoteStore, getDeviceId } from './storage/storageManager.js';
|
|
29
29
|
export { createEntityStore, type EntityStore } from './storage/entityStore.js';
|
|
30
|
-
export { WasRemoteStore, type MarkerResult } from './storage/wasRemoteStore.js';
|
|
30
|
+
export { WasRemoteStore, type MarkerResult, type EqualityQueryPage } from './storage/wasRemoteStore.js';
|
|
31
|
+
export { publicUrlFor } from './storage/publicUrl.js';
|
|
31
32
|
export { useSyncStatusStore, deriveSyncRollup, type SyncStatus } from './storage/syncStatusStore.js';
|
|
32
33
|
export { hydrateAll, clearAllEntityStores, patchFromChange, scheduleRehydrate, cancelScheduledRehydrates } from './storage/rehydrate.js';
|
|
33
34
|
export { isAuthError, SyncController, createSyncController } from './storage/syncController.js';
|
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,mBAAmB,EACnB,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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -32,9 +32,10 @@ export * from './sync/index.js';
|
|
|
32
32
|
// stores, the delegated remote store, sync status, rehydrate mechanism, and the
|
|
33
33
|
// replication controller.
|
|
34
34
|
export { LocalStore } from './storage/localStore.js';
|
|
35
|
-
export { setLocalStore, requireStore, hasStore, clearLocalStore, getDeviceId } from './storage/storageManager.js';
|
|
35
|
+
export { setLocalStore, requireStore, hasStore, clearLocalStore, setRemoteStore, requireRemoteStore, hasRemoteStore, clearRemoteStore, getDeviceId } from './storage/storageManager.js';
|
|
36
36
|
export { createEntityStore } from './storage/entityStore.js';
|
|
37
37
|
export { WasRemoteStore } from './storage/wasRemoteStore.js';
|
|
38
|
+
export { publicUrlFor } from './storage/publicUrl.js';
|
|
38
39
|
export { useSyncStatusStore, deriveSyncRollup } from './storage/syncStatusStore.js';
|
|
39
40
|
export { hydrateAll, clearAllEntityStores, patchFromChange, scheduleRehydrate, cancelScheduledRehydrates } from './storage/rehydrate.js';
|
|
40
41
|
export { isAuthError, SyncController, createSyncController } from './storage/syncController.js';
|
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,EAClB,mBAAmB,EAOpB,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,
|
|
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,EAClB,mBAAmB,EAOpB,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,EAEf,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,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACZ,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAoB,MAAM,0BAA0B,CAAA;AAC9E,OAAO,EACL,cAAc,EAGf,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authStore.d.ts","sourceRoot":"","sources":["../../src/session/authStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;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;AACzD,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,cAAc,CAAA;AAIrB,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAQ1E,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"authStore.d.ts","sourceRoot":"","sources":["../../src/session/authStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;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;AACzD,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,cAAc,CAAA;AAIrB,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAQ1E,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,sBAAsB,CAAA;AA0B7B;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,CAAA;AAqBxE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,aAAa,CAAA;IACrB;;;;OAIG;IACH,UAAU,EAAE,aAAa,GAAG,aAAa,CAAA;IACzC;;;OAGG;IACH,cAAc,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,KAAK,EAAE,UAAU,GAAG,IAAI,CAAA;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B;;;OAGG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB;;;OAGG;IACH,aAAa,EAAE,OAAO,CAAA;IACtB,YAAY,EAAE,OAAO,CAAA;IACrB;;;;OAIG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB;;;;;;;;;;;;OAYG;IACH,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjE;;;;;;;;;;;OAWG;IACH,iBAAiB,EAAE,CAAC,OAAO,EAAE;QAC3B,IAAI,EAAE,UAAU,CAAA;QAChB,MAAM,EAAE,KAAK,EAAE,CAAA;QACf,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;KAC1B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnB;;OAEG;IACH,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B;;;;;;;OAOG;IACH,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACvD;;;;OAIG;IACH,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC;;;;OAIG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IACpC,mBAAmB,EAAE,MAAM,IAAI,CAAA;IAC/B;;;;;;OAMG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;AAQ9C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,QAAQ,EACR,SAAS,EACT,OAAO,EACR,EAAE;IACD,MAAM,EAAE,YAAY,CAAA;IACpB,QAAQ,EAAE,aAAa,CAAA;IACvB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;CACtC,GAAG,YAAY,CA0pBf"}
|