@interop/was-client 0.18.0 → 0.20.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.
Files changed (83) hide show
  1. package/README.md +88 -0
  2. package/dist/Collection.d.ts +1 -46
  3. package/dist/Collection.d.ts.map +1 -1
  4. package/dist/Collection.js +77 -79
  5. package/dist/Collection.js.map +1 -1
  6. package/dist/Resource.d.ts +1 -51
  7. package/dist/Resource.d.ts.map +1 -1
  8. package/dist/Resource.js +55 -55
  9. package/dist/Resource.js.map +1 -1
  10. package/dist/Space.d.ts +1 -27
  11. package/dist/Space.d.ts.map +1 -1
  12. package/dist/Space.js +65 -65
  13. package/dist/Space.js.map +1 -1
  14. package/dist/WasClient.d.ts +1 -12
  15. package/dist/WasClient.d.ts.map +1 -1
  16. package/dist/WasClient.js +15 -15
  17. package/dist/WasClient.js.map +1 -1
  18. package/dist/edv/EdvCodec.d.ts +1 -139
  19. package/dist/edv/EdvCodec.d.ts.map +1 -1
  20. package/dist/edv/EdvCodec.js +57 -58
  21. package/dist/edv/EdvCodec.js.map +1 -1
  22. package/dist/edv/WasTransport.d.ts +1 -53
  23. package/dist/edv/WasTransport.d.ts.map +1 -1
  24. package/dist/edv/WasTransport.js +29 -29
  25. package/dist/edv/WasTransport.js.map +1 -1
  26. package/dist/edv/docCipher.d.ts +111 -0
  27. package/dist/edv/docCipher.d.ts.map +1 -0
  28. package/dist/edv/docCipher.js +236 -0
  29. package/dist/edv/docCipher.js.map +1 -0
  30. package/dist/edv/epochKeys.js +2 -2
  31. package/dist/edv/epochKeys.js.map +1 -1
  32. package/dist/edv/index.d.ts +2 -0
  33. package/dist/edv/index.d.ts.map +1 -1
  34. package/dist/edv/index.js +1 -0
  35. package/dist/edv/index.js.map +1 -1
  36. package/dist/errors.d.ts +22 -0
  37. package/dist/errors.d.ts.map +1 -1
  38. package/dist/errors.js +28 -0
  39. package/dist/errors.js.map +1 -1
  40. package/dist/index.d.ts +1 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +1 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/internal/codec.d.ts +1 -2
  45. package/dist/internal/codec.d.ts.map +1 -1
  46. package/dist/internal/codec.js +10 -10
  47. package/dist/internal/codec.js.map +1 -1
  48. package/dist/internal/features.d.ts +1 -12
  49. package/dist/internal/features.d.ts.map +1 -1
  50. package/dist/internal/features.js +8 -8
  51. package/dist/internal/features.js.map +1 -1
  52. package/dist/internal/pagination.d.ts +1 -1
  53. package/dist/internal/pagination.js +1 -1
  54. package/dist/sync/cid.d.ts +31 -0
  55. package/dist/sync/cid.d.ts.map +1 -0
  56. package/dist/sync/cid.js +55 -0
  57. package/dist/sync/cid.js.map +1 -0
  58. package/dist/sync/envelope.d.ts +20 -0
  59. package/dist/sync/envelope.d.ts.map +1 -0
  60. package/dist/sync/envelope.js +17 -0
  61. package/dist/sync/envelope.js.map +1 -0
  62. package/dist/sync/index.d.ts +29 -0
  63. package/dist/sync/index.d.ts.map +1 -0
  64. package/dist/sync/index.js +28 -0
  65. package/dist/sync/index.js.map +1 -0
  66. package/dist/sync/plaintextCipher.d.ts +16 -0
  67. package/dist/sync/plaintextCipher.d.ts.map +1 -0
  68. package/dist/sync/plaintextCipher.js +36 -0
  69. package/dist/sync/plaintextCipher.js.map +1 -0
  70. package/dist/sync/port.d.ts +78 -0
  71. package/dist/sync/port.d.ts.map +1 -0
  72. package/dist/sync/port.js +204 -0
  73. package/dist/sync/port.js.map +1 -0
  74. package/dist/sync/provisioning.d.ts +44 -0
  75. package/dist/sync/provisioning.d.ts.map +1 -0
  76. package/dist/sync/provisioning.js +46 -0
  77. package/dist/sync/provisioning.js.map +1 -0
  78. package/dist/sync/types.d.ts +166 -0
  79. package/dist/sync/types.d.ts.map +1 -0
  80. package/dist/sync/types.js +2 -0
  81. package/dist/sync/types.js.map +1 -0
  82. package/dist/types.d.ts +1 -1
  83. package/package.json +10 -2
package/README.md CHANGED
@@ -24,6 +24,7 @@
24
24
  - [Storage introspection: backends and quotas](#storage-introspection-backends-and-quotas)
25
25
  - [Registering a Bring-Your-Own-Storage backend](#registering-a-bring-your-own-storage-backend)
26
26
  - [Encrypted collections (EDV-over-WAS): pass-through encryption via the WAS client (recommended)](#encrypted-collections-edv-over-was-pass-through-encryption-via-the-was-client-recommended)
27
+ - [Cross-replica sync](#cross-replica-sync)
27
28
  - [Export and import](#export-and-import)
28
29
  - [The manual-request escape hatch](#the-manual-request-escape-hatch)
29
30
  - [Errors and the 404/null caveat](#errors-and-the-404null-caveat)
@@ -53,6 +54,11 @@ no query-by-filter yet).
53
54
  | `collection.find().toArray()` | `collection.list()` |
54
55
  | `collection.deleteOne({ _id })` | `collection.resource(resourceId).delete()` |
55
56
 
57
+ See also:
58
+
59
+ - [CONTRIBUTING.md](CONTRIBUTING.md) -- editor setup and code style conventions
60
+ - [AGENTS.md](AGENTS.md) -- toolchain, tests, and conventions for coding agents
61
+
56
62
  ## Install
57
63
 
58
64
  - Node.js 24+ is recommended.
@@ -654,6 +660,88 @@ scope for now):
654
660
  - **Raw reads.** `get()` decrypts; the `getText()` / `getBytes()` escape hatches
655
661
  do not (they return the stored representation).
656
662
 
663
+ ### Cross-replica sync
664
+
665
+ The opt-in `@interop/was-client/sync` subpath supplies everything a wallet needs
666
+ to replicate one Space + Collection across devices, with WAS as the primary
667
+ copy. It is not a sync engine itself -- it provides the seams a change engine
668
+ plugs into:
669
+
670
+ - **`createWasSyncPort({ was, spaceId, collectionId })`** builds a
671
+ `WasSyncPort`: paged pulls over the collection's `changes` feed (resumable via
672
+ an opaque server-side checkpoint) and conditional pushes
673
+ (`putContent`/`deleteContent`/`putMeta`) guarded by the server's content
674
+ `ETag`. The port moves stored bodies **verbatim** -- for an encrypted
675
+ collection that means the opaque EDV envelope, never plaintext, and the port
676
+ itself never touches keys. A rejected precondition throws
677
+ `WasSyncConflictError` (412); a delete of an already-gone resource throws
678
+ `WasSyncNotFoundError` (404) -- both catchable subtypes of the core
679
+ `PreconditionFailedError` / `NotFoundError`.
680
+ - **`DocCipher`** is the per-collection encrypt/decrypt seam sitting above the
681
+ port: it turns a JSON document into its stored body (minting the resource id)
682
+ and back. `createPlaintextDocCipher(...)` is the crypto-free identity
683
+ implementation for a plaintext content-addressed collection;
684
+ `createEdvDocCipher(...)` (from `@interop/was-client/edv`) is the encrypting
685
+ one, covering single-recipient and multi-recipient (key-epoch) collections.
686
+ - **`contentCid(doc)`** and **`deriveSpaceId(controllerDid)`** derive
687
+ content-addressed ids -- `base64url(SHA-256(utf8(JCS-canonicalized JSON)))`,
688
+ unpadded -- so the same logical document (and the same controller) lands on
689
+ the same id on every replica, with no coordination or mapping table.
690
+ - **`ensureSpaceAndCollection(...)`** is idempotent provisioning: upsert the
691
+ Space, configure the collection (`edv` or `plaintext`, optionally
692
+ world-readable). Safe to re-run on every connect.
693
+
694
+ ```ts
695
+ import {
696
+ createWasSyncPort,
697
+ createPlaintextDocCipher,
698
+ deriveSpaceId,
699
+ ensureSpaceAndCollection,
700
+ WasSyncConflictError
701
+ } from '@interop/was-client/sync'
702
+
703
+ const spaceId = deriveSpaceId(controllerDid) // same Space on every device
704
+ await ensureSpaceAndCollection({
705
+ was,
706
+ spaceId,
707
+ controllerDid,
708
+ collectionId: 'notes',
709
+ encryption: 'plaintext'
710
+ })
711
+
712
+ const port = createWasSyncPort({ was, spaceId, collectionId: 'notes' })
713
+ const cipher = createPlaintextDocCipher({ collectionId: 'notes' })
714
+
715
+ // Push: encrypt (mints the id), then write the stored body verbatim.
716
+ const { id, envelope } = await cipher.encrypt({ data: { note: 'hello' } })
717
+ try {
718
+ await port.putContent({ id, data: envelope, ifNoneMatch: true })
719
+ } catch (err) {
720
+ if (!(err instanceof WasSyncConflictError)) {
721
+ throw err
722
+ }
723
+ // 412 on a content-addressed insert: another replica already wrote this
724
+ // exact document (same content id) -- a settled outcome, nothing to merge.
725
+ }
726
+
727
+ // Pull: page through the change feed, resuming from the last checkpoint.
728
+ let checkpoint
729
+ do {
730
+ const page = await port.query({ checkpoint, limit: 100 })
731
+ for (const doc of page.documents) {
732
+ if (doc._deleted) continue // tombstone
733
+ const data = await cipher.decrypt({ envelope: doc.data })
734
+ // apply to the local replica, recording doc.version for later pushes
735
+ }
736
+ checkpoint = page.checkpoint // null when the page was empty (caught up)
737
+ } while (checkpoint)
738
+ ```
739
+
740
+ The subpath is crypto-free: importing it never pulls the `./edv` dependency
741
+ graph. To sync an encrypted collection, keep the same port and swap in
742
+ `createEdvDocCipher` -- the change feed and the port ship the envelope bytes
743
+ unchanged either way, so the server never sees plaintext.
744
+
657
745
  ### Export and import
658
746
 
659
747
  ```ts
@@ -3,18 +3,9 @@ import { Resource } from './Resource.js';
3
3
  import type { ChangesCheckpoint, ChangesPage } from '@interop/storage-core';
4
4
  import type { AddResult, BackendDescriptor, BackendUsage, CollectionDescription, CollectionWritableFields, EncryptionOverride, GrantOptions, HandleOptions, IDelegatedZcap, IZcap, Json, ResourceData, LinkSet, PolicyDocument, CollectionResourcesList, ResourceSummary } from './types.js';
5
5
  export declare class Collection {
6
+ #private;
6
7
  readonly spaceId: string;
7
8
  readonly id: string;
8
- private readonly _context;
9
- private readonly _capability?;
10
- private readonly _encryptionOverride?;
11
- private readonly _codecHolder;
12
- /**
13
- * The shared backend-feature probe for this collection (memoized on a
14
- * definitive answer), consulted by the conditional-codec write path and
15
- * shared with child resource handles the way the codec is.
16
- */
17
- private readonly _features;
18
9
  /**
19
10
  * @param options {object}
20
11
  * @param options.context {ClientContext} - Shared context (serverUrl, ezcap
@@ -33,34 +24,6 @@ export declare class Collection {
33
24
  capability?: IZcap;
34
25
  encryption?: EncryptionOverride;
35
26
  });
36
- private get _path();
37
- private get _itemsPath();
38
- private get _policyPath();
39
- /**
40
- * The writable Collection Description fields, present only when set. The one
41
- * inclusion rule (`!== undefined`) shared by the `configure` /
42
- * `replaceDescription` request bodies and their echoed return descriptions, so
43
- * the two paths cannot drift and a new writable field is added in one place.
44
- *
45
- * @param fields {CollectionWritableFields}
46
- * @returns {CollectionWritableFields}
47
- */
48
- private _writableFields;
49
- /**
50
- * Resolves (once, then caches) the codec for this collection's reads and
51
- * writes: the identity codec for a plaintext collection, or the encrypting
52
- * codec when this collection is declared encrypted -- by a per-handle override
53
- * or its `encryption` marker -- and the client's keystore supplies its keys.
54
- * An encrypted collection the client cannot key for fails closed (throws), and
55
- * a successful marker read happens at most once per handle (memoized here) -- a
56
- * fresh handle to the same collection re-reads it, so retain the handle to
57
- * reuse it. A failed resolution (e.g. a transient 500/network error during
58
- * marker discovery) is not memoized: the cache is cleared so the next call
59
- * retries rather than re-throwing the stale error forever.
60
- *
61
- * @returns {Promise<ResourceCodec>}
62
- */
63
- private _codec;
64
27
  /**
65
28
  * Reads the Collection Description. Returns `null` if the collection is
66
29
  * missing or not visible to you (WAS returns 404 for both not-found and
@@ -194,14 +157,6 @@ export declare class Collection {
194
157
  }): Promise<{
195
158
  etag?: string;
196
159
  }>;
197
- /**
198
- * Reads the first page of the listing and packages the means to follow its
199
- * `next` links (each page fetched with the same authorization). Returns `null`
200
- * if the collection is missing or not visible to you (404 conflation caveat).
201
- *
202
- * @returns {Promise<PageWalk | null>}
203
- */
204
- private _listWalk;
205
160
  /**
206
161
  * Lists the items in the collection. Transparently follows the server's `next`
207
162
  * pagination links, buffering every page into a single list (the returned
@@ -1 +1 @@
1
- {"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../src/Collection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../src/Collection.ts"],"names":[],"mappings":"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"}
@@ -22,16 +22,15 @@ import { Resource } from './Resource.js';
22
22
  export class Collection {
23
23
  spaceId;
24
24
  id;
25
- _context;
26
- _capability;
27
- _encryptionOverride;
28
- _codecHolder;
25
+ #context;
26
+ #capability;
27
+ #codecHolder;
29
28
  /**
30
29
  * The shared backend-feature probe for this collection (memoized on a
31
30
  * definitive answer), consulted by the conditional-codec write path and
32
31
  * shared with child resource handles the way the codec is.
33
32
  */
34
- _features;
33
+ #features;
35
34
  /**
36
35
  * @param options {object}
37
36
  * @param options.context {ClientContext} - Shared context (serverUrl, ezcap
@@ -54,30 +53,29 @@ export class Collection {
54
53
  // constructor covers every operation (describe, delete, list, grant, ...),
55
54
  // not just writes.
56
55
  assertNotReserved({ id: collectionId, kind: 'collection' });
57
- this._context = context;
56
+ this.#context = context;
58
57
  this.spaceId = spaceId;
59
58
  this.id = collectionId;
60
- this._capability = capability;
61
- this._encryptionOverride = encryption;
62
- this._codecHolder = collectionCodecHolder(context, {
59
+ this.#capability = capability;
60
+ this.#codecHolder = collectionCodecHolder(context, {
63
61
  spaceId,
64
62
  collectionId,
65
63
  override: encryption,
66
64
  capability
67
65
  });
68
- this._features = collectionBackendFeatures(context, {
66
+ this.#features = collectionBackendFeatures(context, {
69
67
  spaceId,
70
68
  collectionId,
71
69
  capability
72
70
  });
73
71
  }
74
- get _path() {
72
+ get #path() {
75
73
  return collectionPath(this.spaceId, this.id);
76
74
  }
77
- get _itemsPath() {
75
+ get #itemsPath() {
78
76
  return collectionItems(this.spaceId, this.id);
79
77
  }
80
- get _policyPath() {
78
+ get #policyPath() {
81
79
  return collectionPolicy(this.spaceId, this.id);
82
80
  }
83
81
  /**
@@ -89,7 +87,7 @@ export class Collection {
89
87
  * @param fields {CollectionWritableFields}
90
88
  * @returns {CollectionWritableFields}
91
89
  */
92
- _writableFields(fields) {
90
+ #writableFields(fields) {
93
91
  return {
94
92
  ...(fields.name !== undefined ? { name: fields.name } : {}),
95
93
  ...(fields.backend !== undefined ? { backend: fields.backend } : {}),
@@ -112,8 +110,8 @@ export class Collection {
112
110
  *
113
111
  * @returns {Promise<ResourceCodec>}
114
112
  */
115
- _codec() {
116
- return this._codecHolder.get();
113
+ #codec() {
114
+ return this.#codecHolder.get();
117
115
  }
118
116
  /**
119
117
  * Reads the Collection Description. Returns `null` if the collection is
@@ -123,10 +121,10 @@ export class Collection {
123
121
  * @returns {Promise<CollectionDescription | null>}
124
122
  */
125
123
  async describe() {
126
- return describeCollection(this._context, {
124
+ return describeCollection(this.#context, {
127
125
  spaceId: this.spaceId,
128
126
  collectionId: this.id,
129
- capability: this._capability
127
+ capability: this.#capability
130
128
  });
131
129
  }
132
130
  /**
@@ -174,11 +172,11 @@ export class Collection {
174
172
  const name = desc.name ?? current?.name;
175
173
  const backend = desc.backend ?? current?.backend;
176
174
  const encryption = desc.encryption ?? current?.encryption;
177
- const fields = this._writableFields({ name, backend, encryption });
178
- await send(this._context, {
179
- path: this._path,
175
+ const fields = this.#writableFields({ name, backend, encryption });
176
+ await send(this.#context, {
177
+ path: this.#path,
180
178
  method: 'PUT',
181
- capability: this._capability,
179
+ capability: this.#capability,
182
180
  json: { id: this.id, ...fields }
183
181
  });
184
182
  // Adding the encryption marker flips this collection from plaintext to
@@ -188,7 +186,7 @@ export class Collection {
188
186
  // the now-encrypted collection. Child resource handles share this codec via
189
187
  // their thunk, so resetting here propagates to them too.
190
188
  if (desc.encryption) {
191
- this._codecHolder.reset();
189
+ this.#codecHolder.reset();
192
190
  }
193
191
  return {
194
192
  id: this.id,
@@ -209,10 +207,10 @@ export class Collection {
209
207
  async describeWithEtag() {
210
208
  // The same GET as `describe()` (via the shared request shape), keeping the
211
209
  // raw response so the ETag header can be read alongside the body.
212
- const response = await describeCollectionResponse(this._context, {
210
+ const response = await describeCollectionResponse(this.#context, {
213
211
  spaceId: this.spaceId,
214
212
  collectionId: this.id,
215
- capability: this._capability
213
+ capability: this.#capability
216
214
  });
217
215
  const description = dataOrNull(response);
218
216
  if (response === null || description === null) {
@@ -242,11 +240,11 @@ export class Collection {
242
240
  * @returns {Promise<{ description: CollectionDescription; etag?: string }>}
243
241
  */
244
242
  async replaceDescription(description, options = {}) {
245
- const fields = this._writableFields(description);
246
- const response = await send(this._context, {
247
- path: this._path,
243
+ const fields = this.#writableFields(description);
244
+ const response = await send(this.#context, {
245
+ path: this.#path,
248
246
  method: 'PUT',
249
- capability: this._capability,
247
+ capability: this.#capability,
250
248
  json: { id: this.id, ...fields },
251
249
  headers: writeHeaders({ precondition: { ifMatch: options.ifMatch } })
252
250
  });
@@ -259,7 +257,7 @@ export class Collection {
259
257
  // resource handles share this codec via their thunk, so resetting here
260
258
  // propagates to them too.
261
259
  if (description.encryption !== undefined) {
262
- this._codecHolder.reset();
260
+ this.#codecHolder.reset();
263
261
  }
264
262
  return {
265
263
  description: {
@@ -277,10 +275,10 @@ export class Collection {
277
275
  * @returns {Promise<void>}
278
276
  */
279
277
  async delete() {
280
- await send(this._context, {
281
- path: this._path,
278
+ await send(this.#context, {
279
+ path: this.#path,
282
280
  method: 'DELETE',
283
- capability: this._capability,
281
+ capability: this.#capability,
284
282
  idempotent: true
285
283
  });
286
284
  }
@@ -297,14 +295,14 @@ export class Collection {
297
295
  */
298
296
  resource(resourceId, options = {}) {
299
297
  return new Resource({
300
- context: this._context,
298
+ context: this.#context,
301
299
  spaceId: this.spaceId,
302
300
  collectionId: this.id,
303
301
  resourceId,
304
- capability: options.capability ?? this._capability,
302
+ capability: options.capability ?? this.#capability,
305
303
  // Share this collection's memoized feature probe so per-resource handles
306
304
  // do not each repeat the backend-descriptor round-trip.
307
- features: () => this._features.get(),
305
+ features: () => this.#features.get(),
308
306
  // A per-resource encryption override resolves its own codec (honoring the
309
307
  // override); without one, share this collection's resolved codec so the
310
308
  // resource handle does not repeat the marker-discovery round-trip. The two
@@ -312,7 +310,7 @@ export class Collection {
312
310
  // is supplied.
313
311
  ...(options.encryption !== undefined
314
312
  ? { encryption: options.encryption }
315
- : { codec: () => this._codec() })
313
+ : { codec: () => this.#codec() })
316
314
  });
317
315
  }
318
316
  /**
@@ -326,7 +324,7 @@ export class Collection {
326
324
  * @returns {Promise<AddResult>}
327
325
  */
328
326
  async add(data, options = {}) {
329
- const codec = await this._codec();
327
+ const codec = await this.#codec();
330
328
  const encoded = await codec.encode({
331
329
  data,
332
330
  contentType: options.contentType
@@ -340,16 +338,16 @@ export class Collection {
340
338
  // via `POST`.
341
339
  if (encoded.id !== undefined) {
342
340
  const path = resourcePath(this.spaceId, this.id, encoded.id);
343
- const response = await sendEncodedWrite(this._context, {
341
+ const response = await sendEncodedWrite(this.#context, {
344
342
  path,
345
343
  method: 'PUT',
346
- capability: this._capability,
344
+ capability: this.#capability,
347
345
  encoded,
348
346
  precondition
349
347
  });
350
348
  return {
351
349
  id: encoded.id,
352
- url: toUrl({ serverUrl: this._context.serverUrl, path }),
350
+ url: toUrl({ serverUrl: this.#context.serverUrl, path }),
353
351
  // Report the plaintext resource type when the codec resolved one (the
354
352
  // EDV codec's `resourceContentType`); otherwise the wire `contentType`,
355
353
  // which for the identity codec already is the resource type.
@@ -357,10 +355,10 @@ export class Collection {
357
355
  etag: readEtag(response)
358
356
  };
359
357
  }
360
- const response = await sendEncodedWrite(this._context, {
361
- path: this._itemsPath,
358
+ const response = await sendEncodedWrite(this.#context, {
359
+ path: this.#itemsPath,
362
360
  method: 'POST',
363
- capability: this._capability,
361
+ capability: this.#capability,
364
362
  encoded,
365
363
  precondition
366
364
  });
@@ -375,9 +373,9 @@ export class Collection {
375
373
  // URL so `AddResult.url` is always absolute (consumers like
376
374
  // `was.publicRead({ resourceUrl })` require an absolute URL).
377
375
  url: location
378
- ? new URL(location, toUrl({ serverUrl: this._context.serverUrl, path: this._itemsPath })).toString()
376
+ ? new URL(location, toUrl({ serverUrl: this.#context.serverUrl, path: this.#itemsPath })).toString()
379
377
  : toUrl({
380
- serverUrl: this._context.serverUrl,
378
+ serverUrl: this.#context.serverUrl,
381
379
  path: resourcePath(this.spaceId, this.id, id)
382
380
  }),
383
381
  contentType: responseBody?.['content-type'] ??
@@ -422,17 +420,17 @@ export class Collection {
422
420
  *
423
421
  * @returns {Promise<PageWalk | null>}
424
422
  */
425
- async _listWalk() {
423
+ async #listWalk() {
426
424
  return buildPageWalk({
427
425
  firstUrl: toUrl({
428
- serverUrl: this._context.serverUrl,
429
- path: this._itemsPath
426
+ serverUrl: this.#context.serverUrl,
427
+ path: this.#itemsPath
430
428
  }),
431
429
  fetchPage: async (url) => {
432
- const pageResponse = await send(this._context, {
430
+ const pageResponse = await send(this.#context, {
433
431
  url,
434
432
  method: 'GET',
435
- capability: this._capability,
433
+ capability: this.#capability,
436
434
  read: true
437
435
  });
438
436
  return dataOrNull(pageResponse);
@@ -450,7 +448,7 @@ export class Collection {
450
448
  * @returns {Promise<CollectionResourcesList | null>}
451
449
  */
452
450
  async list() {
453
- return collectWalk(await this._listWalk());
451
+ return collectWalk(await this.#listWalk());
454
452
  }
455
453
  /**
456
454
  * Lazily yields the listing one page at a time, following the server's `next`
@@ -463,7 +461,7 @@ export class Collection {
463
461
  * @returns {AsyncGenerator<CollectionResourcesList>}
464
462
  */
465
463
  async *listPages() {
466
- yield* walkPagesOrEmpty(await this._listWalk());
464
+ yield* walkPagesOrEmpty(await this.#listWalk());
467
465
  }
468
466
  /**
469
467
  * Lazily yields each item across every page, flattening `listPages()`. Yields
@@ -500,10 +498,10 @@ export class Collection {
500
498
  */
501
499
  async changes(options = {}) {
502
500
  const { checkpoint, limit } = options;
503
- const response = await send(this._context, {
501
+ const response = await send(this.#context, {
504
502
  path: collectionQuery(this.spaceId, this.id),
505
503
  method: 'POST',
506
- capability: this._capability,
504
+ capability: this.#capability,
507
505
  json: {
508
506
  profile: 'changes',
509
507
  ...(checkpoint !== undefined && { checkpoint }),
@@ -524,10 +522,10 @@ export class Collection {
524
522
  * @returns {Promise<IDelegatedZcap>}
525
523
  */
526
524
  async grant(options) {
527
- return delegateGrantAt(this._context, {
528
- path: this._path,
525
+ return delegateGrantAt(this.#context, {
526
+ path: this.#path,
529
527
  options,
530
- capability: this._capability
528
+ capability: this.#capability
531
529
  });
532
530
  }
533
531
  /**
@@ -539,9 +537,9 @@ export class Collection {
539
537
  * @returns {Promise<PolicyDocument | null>}
540
538
  */
541
539
  async getPolicy() {
542
- return readPolicy(this._context, {
543
- policyPath: this._policyPath,
544
- capability: this._capability
540
+ return readPolicy(this.#context, {
541
+ policyPath: this.#policyPath,
542
+ capability: this.#capability
545
543
  });
546
544
  }
547
545
  /**
@@ -551,10 +549,10 @@ export class Collection {
551
549
  * @returns {Promise<void>}
552
550
  */
553
551
  async setPolicy(policy) {
554
- return writePolicy(this._context, {
555
- policyPath: this._policyPath,
552
+ return writePolicy(this.#context, {
553
+ policyPath: this.#policyPath,
556
554
  policy,
557
- capability: this._capability
555
+ capability: this.#capability
558
556
  });
559
557
  }
560
558
  /**
@@ -563,9 +561,9 @@ export class Collection {
563
561
  * @returns {Promise<boolean>}
564
562
  */
565
563
  async isPublic() {
566
- return isPublicPolicy(this._context, {
567
- policyPath: this._policyPath,
568
- capability: this._capability
564
+ return isPublicPolicy(this.#context, {
565
+ policyPath: this.#policyPath,
566
+ capability: this.#capability
569
567
  });
570
568
  }
571
569
  /**
@@ -576,9 +574,9 @@ export class Collection {
576
574
  * @returns {Promise<void>}
577
575
  */
578
576
  async setPublic() {
579
- return setPublicPolicy(this._context, {
580
- policyPath: this._policyPath,
581
- capability: this._capability
577
+ return setPublicPolicy(this.#context, {
578
+ policyPath: this.#policyPath,
579
+ capability: this.#capability
582
580
  });
583
581
  }
584
582
  /**
@@ -588,9 +586,9 @@ export class Collection {
588
586
  * @returns {Promise<void>}
589
587
  */
590
588
  async clearPolicy() {
591
- return deletePolicy(this._context, {
592
- policyPath: this._policyPath,
593
- capability: this._capability
589
+ return deletePolicy(this.#context, {
590
+ policyPath: this.#policyPath,
591
+ capability: this.#capability
594
592
  });
595
593
  }
596
594
  /**
@@ -600,9 +598,9 @@ export class Collection {
600
598
  * @returns {Promise<LinkSet | null>}
601
599
  */
602
600
  async linkset() {
603
- return readData(this._context, {
601
+ return readData(this.#context, {
604
602
  path: collectionLinkset(this.spaceId, this.id),
605
- capability: this._capability
603
+ capability: this.#capability
606
604
  });
607
605
  }
608
606
  /**
@@ -621,9 +619,9 @@ export class Collection {
621
619
  * @returns {Promise<BackendDescriptor | null>}
622
620
  */
623
621
  async backend() {
624
- return readData(this._context, {
622
+ return readData(this.#context, {
625
623
  path: collectionBackend(this.spaceId, this.id),
626
- capability: this._capability
624
+ capability: this.#capability
627
625
  });
628
626
  }
629
627
  /**
@@ -635,9 +633,9 @@ export class Collection {
635
633
  * @returns {Promise<BackendUsage | null>}
636
634
  */
637
635
  async quota() {
638
- return readData(this._context, {
636
+ return readData(this.#context, {
639
637
  path: collectionQuota(this.spaceId, this.id),
640
- capability: this._capability
638
+ capability: this.#capability
641
639
  });
642
640
  }
643
641
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Collection.js","sourceRoot":"","sources":["../src/Collection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Collection.js","sourceRoot":"","sources":["../src/Collection.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;GAIG;AACH,OAAO,EACL,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,KAAK,EACN,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAElE,OAAO,EACL,aAAa,EACb,WAAW,EACX,SAAS,EACT,gBAAgB,EACjB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,mBAAmB,EACnB,QAAQ,EACR,YAAY,EACb,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EACL,UAAU,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACd,eAAe,EAChB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAqBxC,MAAM,OAAO,UAAU;IACZ,OAAO,CAAQ;IACf,EAAE,CAAQ;IAEV,QAAQ,CAAe;IACvB,WAAW,CAAQ;IACnB,YAAY,CAAa;IAClC;;;;OAIG;IACM,SAAS,CAAiB;IAEnC;;;;;;;;;;OAUG;IACH,YAAY,EACV,OAAO,EACP,OAAO,EACP,YAAY,EACZ,UAAU,EACV,UAAU,EAOX;QACC,mEAAmE;QACnE,uEAAuE;QACvE,6DAA6D;QAC7D,4EAA4E;QAC5E,0EAA0E;QAC1E,4EAA4E;QAC5E,wEAAwE;QACxE,2EAA2E;QAC3E,mBAAmB;QACnB,iBAAiB,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAA;QAC3D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,EAAE,GAAG,YAAY,CAAA;QACtB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAA;QAC7B,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,OAAO,EAAE;YACjD,OAAO;YACP,YAAY;YACZ,QAAQ,EAAE,UAAU;YACpB,UAAU;SACX,CAAC,CAAA;QACF,IAAI,CAAC,SAAS,GAAG,yBAAyB,CAAC,OAAO,EAAE;YAClD,OAAO;YACP,YAAY;YACZ,UAAU;SACX,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,KAAK;QACP,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;IAC9C,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/C,CAAC;IAED,IAAI,WAAW;QACb,OAAO,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;IAChD,CAAC;IAED;;;;;;;;OAQG;IACH,eAAe,CAAC,MAAgC;QAC9C,OAAO;YACL,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;gBACjC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;gBACnC,CAAC,CAAC,EAAE,CAAC;SACR,CAAA;IACH,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAA;IAChC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ;QACZ,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE;YACvC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,EAAE;YACrB,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,KAAK,CAAC,SAAS,CACb,IAAoD;QAEpD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QACrC,IACE,OAAO,KAAK,IAAI;YAChB,IAAI,CAAC,OAAO,KAAK,SAAS;YAC1B,IAAI,CAAC,UAAU,KAAK,SAAS;YAC7B,CAAC,IAAI,CAAC,KAAK,EACX,CAAC;YACD,MAAM,0BAA0B,CAAC;gBAC/B,SAAS,EAAE,yBAAyB,IAAI,CAAC,EAAE,GAAG;gBAC9C,WAAW,EACT,+DAA+D;oBAC/D,8BAA8B;gBAChC,MAAM,EACJ,+DAA+D;oBAC/D,8DAA8D;oBAC9D,aAAa;aAChB,CAAC,CAAA;QACJ,CAAC;QACD,kEAAkE;QAClE,wEAAwE;QACxE,sEAAsE;QACtE,mEAAmE;QACnE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE,IAAI,CAAA;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,EAAE,OAAO,CAAA;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,OAAO,EAAE,UAAU,CAAA;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAA;QAClE,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACxB,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE;SACjC,CAAC,CAAA;QACF,uEAAuE;QACvE,4EAA4E;QAC5E,0EAA0E;QAC1E,0EAA0E;QAC1E,4EAA4E;QAC5E,yDAAyD;QACzD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;QAC3B,CAAC;QACD,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;YACrC,GAAG,MAAM;SACV,CAAA;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,gBAAgB;QAIpB,2EAA2E;QAC3E,kEAAkE;QAClE,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC/D,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,EAAE;YACrB,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAC,CAAA;QACF,MAAM,WAAW,GAAG,UAAU,CAAwB,QAAQ,CAAC,CAAA;QAC/D,IAAI,QAAQ,KAAK,IAAI,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO;YACL,WAAW;YACX,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC;SACzB,CAAA;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,kBAAkB,CACtB,WAAqC,EACrC,UAAgC,EAAE;QAElC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;QAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACzC,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE;YAChC,OAAO,EAAE,YAAY,CAAC,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACtE,CAAC,CAAA;QACF,0EAA0E;QAC1E,sEAAsE;QACtE,2EAA2E;QAC3E,0EAA0E;QAC1E,6EAA6E;QAC7E,4EAA4E;QAC5E,uEAAuE;QACvE,0BAA0B;QAC1B,IAAI,WAAW,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;QAC3B,CAAC;QACD,OAAO;YACL,WAAW,EAAE;gBACX,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,CAAC,YAAY,CAAC;gBACpB,GAAG,MAAM;aACV;YACD,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC;SACzB,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACxB,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,UAAkB,EAAE,UAAyB,EAAE;QACtD,OAAO,IAAI,QAAQ,CAAC;YAClB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,EAAE;YACrB,UAAU;YACV,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW;YAClD,yEAAyE;YACzE,wDAAwD;YACxD,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;YACpC,0EAA0E;YAC1E,wEAAwE;YACxE,2EAA2E;YAC3E,yEAAyE;YACzE,eAAe;YACf,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS;gBAClC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE;gBACpC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;SACpC,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,GAAG,CACP,IAAkB,EAClB,UAAoC,EAAE;QAEtC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;QACjC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;YACjC,IAAI;YACJ,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAA;QACF,4EAA4E;QAC5E,0EAA0E;QAC1E,gBAAgB;QAChB,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;QAEjD,4EAA4E;QAC5E,0EAA0E;QAC1E,cAAc;QACd,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;YAC5D,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACrD,IAAI;gBACJ,MAAM,EAAE,KAAK;gBACb,UAAU,EAAE,IAAI,CAAC,WAAW;gBAC5B,OAAO;gBACP,YAAY;aACb,CAAC,CAAA;YACF,OAAO;gBACL,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,GAAG,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;gBACxD,sEAAsE;gBACtE,wEAAwE;gBACxE,6DAA6D;gBAC7D,WAAW,EAAE,OAAO,CAAC,mBAAmB,IAAI,OAAO,CAAC,WAAW;gBAC/D,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC;aACzB,CAAA;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE;YACrD,IAAI,EAAE,IAAI,CAAC,UAAU;YACrB,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,OAAO;YACP,YAAY;SACb,CAAC,CAAA;QACF,0EAA0E;QAC1E,uEAAuE;QACvE,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;QAC9B,MAAM,YAAY,GAChB,QACD,EAAE,IAAI,CAAA;QACP,MAAM,QAAQ,GACX,QAAiC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,SAAS,CAAA;QACzE,OAAO;YACL,EAAE;YACF,yEAAyE;YACzE,4DAA4D;YAC5D,8DAA8D;YAC9D,GAAG,EAAE,QAAQ;gBACX,CAAC,CAAC,IAAI,GAAG,CACL,QAAQ,EACR,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CACrE,CAAC,QAAQ,EAAE;gBACd,CAAC,CAAC,KAAK,CAAC;oBACJ,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;oBAClC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;iBAC9C,CAAC;YACN,WAAW,EACT,YAAY,EAAE,CAAC,cAAc,CAAC;gBAC9B,OAAO,CAAC,mBAAmB;gBAC3B,OAAO,CAAC,WAAW;YACrB,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC;SACzB,CAAA;IACH,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,GAAG,CAAC,UAAkB;QAC1B,4EAA4E;QAC5E,yEAAyE;QACzE,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAA;IACxC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,GAAG,CACP,UAAkB,EAClB,IAAkB,EAClB,UAII,EAAE;QAEN,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACrD,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,aAAa,CAAC;YACnB,QAAQ,EAAE,KAAK,CAAC;gBACd,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;gBAClC,IAAI,EAAE,IAAI,CAAC,UAAU;aACtB,CAAC;YACF,SAAS,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;gBACrB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;oBAC7C,GAAG;oBACH,MAAM,EAAE,KAAK;oBACb,UAAU,EAAE,IAAI,CAAC,WAAW;oBAC5B,IAAI,EAAE,IAAI;iBACX,CAAC,CAAA;gBACF,OAAO,UAAU,CAA0B,YAAY,CAAC,CAAA;YAC1D,CAAC;SACF,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,IAAI;QACR,OAAO,WAAW,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;IAC5C,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,CAAC,SAAS;QACd,KAAK,CAAC,CAAC,gBAAgB,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;IACjD,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,CAAC,SAAS;QACd,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;IACpC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,KAAK,CAAC,OAAO,CACX,UAA8D,EAAE;QAEhE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;QACrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACzC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YAC5C,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,IAAI,EAAE;gBACJ,OAAO,EAAE,SAAS;gBAClB,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,CAAC;gBAC/C,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC;aACtC;SACF,CAAC,CAAA;QACF,0EAA0E;QAC1E,0EAA0E;QAC1E,oCAAoC;QACpC,MAAM,IAAI,GAAG,UAAU,CAAc,QAAQ,CAAC,CAAA;QAC9C,OAAO,IAAI,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;IACpD,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CAAC,OAAqB;QAC/B,OAAO,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE;YACpC,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,OAAO;YACP,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC/B,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAC,CAAA;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAS,CAAC,MAAsB;QACpC,OAAO,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChC,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,MAAM;YACN,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAC,CAAA;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ;QACZ,OAAO,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE;YACnC,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE;YACpC,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAC,CAAA;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW;QACf,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE;YACjC,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAC,CAAA;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO;QACX,OAAO,QAAQ,CAAU,IAAI,CAAC,QAAQ,EAAE;YACtC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YAC9C,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,OAAO;QACX,OAAO,QAAQ,CAAoB,IAAI,CAAC,QAAQ,EAAE;YAChD,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YAC9C,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK;QACT,OAAO,QAAQ,CAAe,IAAI,CAAC,QAAQ,EAAE;YAC3C,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YAC5C,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAC,CAAA;IACJ,CAAC;CACF"}