@interop/was-client 0.52.0 → 0.54.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -12
- package/dist/Collection.d.ts +11 -7
- package/dist/Collection.d.ts.map +1 -1
- package/dist/Collection.js +21 -23
- package/dist/Collection.js.map +1 -1
- package/dist/Resource.d.ts +15 -0
- package/dist/Resource.d.ts.map +1 -1
- package/dist/Resource.js +4 -15
- package/dist/Resource.js.map +1 -1
- package/dist/Space.d.ts +54 -0
- package/dist/Space.d.ts.map +1 -1
- package/dist/Space.js +89 -7
- package/dist/Space.js.map +1 -1
- package/dist/edv/acquire.d.ts +98 -0
- package/dist/edv/acquire.d.ts.map +1 -0
- package/dist/edv/acquire.js +130 -0
- package/dist/edv/acquire.js.map +1 -0
- package/dist/edv/index.d.ts +35 -2
- package/dist/edv/index.d.ts.map +1 -1
- package/dist/edv/index.js +34 -2
- package/dist/edv/index.js.map +1 -1
- package/dist/edv/logGovernedDescriptorStore.d.ts.map +1 -1
- package/dist/edv/logGovernedDescriptorStore.js +4 -3
- package/dist/edv/logGovernedDescriptorStore.js.map +1 -1
- package/dist/edv/refresh.d.ts +62 -0
- package/dist/edv/refresh.d.ts.map +1 -0
- package/dist/edv/refresh.js +69 -0
- package/dist/edv/refresh.js.map +1 -0
- package/dist/edv/refreshingDocCipher.d.ts +70 -0
- package/dist/edv/refreshingDocCipher.d.ts.map +1 -0
- package/dist/edv/refreshingDocCipher.js +110 -0
- package/dist/edv/refreshingDocCipher.js.map +1 -0
- package/dist/errors.d.ts +4 -3
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +4 -3
- package/dist/errors.js.map +1 -1
- package/dist/internal/content.d.ts +13 -0
- package/dist/internal/content.d.ts.map +1 -1
- package/dist/internal/content.js +16 -0
- package/dist/internal/content.js.map +1 -1
- package/dist/internal/describe.d.ts +16 -21
- package/dist/internal/describe.d.ts.map +1 -1
- package/dist/internal/describe.js +17 -25
- package/dist/internal/describe.js.map +1 -1
- package/dist/internal/request.d.ts +19 -0
- package/dist/internal/request.d.ts.map +1 -1
- package/dist/internal/request.js +26 -0
- package/dist/internal/request.js.map +1 -1
- package/dist/log/logStore.d.ts.map +1 -1
- package/dist/log/logStore.js +8 -20
- package/dist/log/logStore.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/port.d.ts +5 -1
- package/dist/sync/port.d.ts.map +1 -1
- package/dist/sync/port.js +27 -11
- package/dist/sync/port.js.map +1 -1
- package/dist/sync/predicates.d.ts +21 -4
- package/dist/sync/predicates.d.ts.map +1 -1
- package/dist/sync/predicates.js +23 -4
- package/dist/sync/predicates.js.map +1 -1
- package/dist/sync/provisioning.d.ts +54 -18
- package/dist/sync/provisioning.d.ts.map +1 -1
- package/dist/sync/provisioning.js +123 -43
- package/dist/sync/provisioning.js.map +1 -1
- package/dist/sync/types.d.ts +23 -14
- package/dist/sync/types.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/Space.js
CHANGED
|
@@ -3,12 +3,34 @@ import { assertNotReserved } from './internal/reserved.js';
|
|
|
3
3
|
import { collectionWritableFields, unreadableDescriptionError } from './internal/describe.js';
|
|
4
4
|
import { delegateGrantAt } from './internal/grant.js';
|
|
5
5
|
import { submitRevocation } from './internal/revoke.js';
|
|
6
|
-
import { send, readData } from './internal/request.js';
|
|
6
|
+
import { send, readData, readDataWithEtag } from './internal/request.js';
|
|
7
|
+
import { readEtag, writeHeaders } from './internal/conditional.js';
|
|
7
8
|
import { collectWalk, signedPageWalk, walkPagesOrEmpty } from './internal/pagination.js';
|
|
8
9
|
import { NotFoundError, WasServerError } from './errors.js';
|
|
9
10
|
import { createdId, dataOrNull, toPlainBytes } from './internal/content.js';
|
|
10
11
|
import { readPolicy, writePolicy, deletePolicy, isPublicPolicy, setPublicPolicy } from './internal/policy.js';
|
|
11
12
|
import { Collection } from './Collection.js';
|
|
13
|
+
/**
|
|
14
|
+
* The Space Description PUT body: the one inclusion rule for its writable
|
|
15
|
+
* fields, shared by `configure` and `replaceDescription`. `name` and `type`
|
|
16
|
+
* are sent only when set, since the server keeps the stored value for an
|
|
17
|
+
* omitted member; `controller` is always sent.
|
|
18
|
+
*
|
|
19
|
+
* @param fields {object}
|
|
20
|
+
* @param fields.id {string}
|
|
21
|
+
* @param [fields.name] {string}
|
|
22
|
+
* @param fields.controller {string}
|
|
23
|
+
* @param [fields.type] {string[]}
|
|
24
|
+
* @returns {{ id: string; name?: string; controller: string; type?: string[] }}
|
|
25
|
+
*/
|
|
26
|
+
function spaceDescriptionBody({ id, name, controller, type }) {
|
|
27
|
+
return {
|
|
28
|
+
id,
|
|
29
|
+
...(name !== undefined && { name }),
|
|
30
|
+
controller,
|
|
31
|
+
...(type !== undefined && { type })
|
|
32
|
+
};
|
|
33
|
+
}
|
|
12
34
|
export class Space {
|
|
13
35
|
id;
|
|
14
36
|
#context;
|
|
@@ -42,6 +64,71 @@ export class Space {
|
|
|
42
64
|
capability: this.#capability
|
|
43
65
|
});
|
|
44
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Reads the Space Description together with its `ETag` validator (the
|
|
69
|
+
* server's `conditional-writes` support). The `ETag` is the opaque validator
|
|
70
|
+
* to pass to {@link replaceDescription}'s `ifMatch` for a lost-update-safe
|
|
71
|
+
* (compare-and-swap) description write. Returns `null` if the space is
|
|
72
|
+
* missing or not visible to you (404 conflation caveat); `etag` is absent
|
|
73
|
+
* against a server that does not version the Space Description.
|
|
74
|
+
*
|
|
75
|
+
* @returns {Promise<{ description: SpaceDescription; etag?: string } | null>}
|
|
76
|
+
*/
|
|
77
|
+
async describeWithEtag() {
|
|
78
|
+
const read = await readDataWithEtag(this.#context, {
|
|
79
|
+
path: this.#path,
|
|
80
|
+
capability: this.#capability
|
|
81
|
+
});
|
|
82
|
+
return read === null ? null : { description: read.data, etag: read.etag };
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Writes the Space Description under an optional precondition: `ifMatch`
|
|
86
|
+
* (the `ETag` from {@link describeWithEtag}) makes it a compare-and-swap so
|
|
87
|
+
* a concurrent writer cannot be silently clobbered, and `ifNoneMatch: true`
|
|
88
|
+
* makes it a guarded create that proceeds only while no Space exists under
|
|
89
|
+
* this id. A failed precondition surfaces as `PreconditionFailedError`
|
|
90
|
+
* (412). Unlike {@link configure}, nothing is read or merged on the client:
|
|
91
|
+
* the body is sent as given, so `controller` is required (a default to the
|
|
92
|
+
* signer's DID would let a delegated writer reassign ownership by omission).
|
|
93
|
+
* The server applies the body over the stored description: an omitted
|
|
94
|
+
* `name` keeps the stored name, and `type` is accepted at creation only and
|
|
95
|
+
* immutable afterwards.
|
|
96
|
+
*
|
|
97
|
+
* Returns the new `ETag`, and on a create the description the server
|
|
98
|
+
* answered with; an update answers with no body, so `description` is absent
|
|
99
|
+
* there and the caller re-reads if it needs the merged result.
|
|
100
|
+
*
|
|
101
|
+
* @param description {object}
|
|
102
|
+
* @param [description.name] {string}
|
|
103
|
+
* @param description.controller {string}
|
|
104
|
+
* @param [description.type] {string[]} accepted by the server at creation
|
|
105
|
+
* only
|
|
106
|
+
* @param options {object}
|
|
107
|
+
* @param [options.ifMatch] {string} the prior `ETag`; the write applies only
|
|
108
|
+
* if the description is unchanged
|
|
109
|
+
* @param [options.ifNoneMatch] {boolean} write only if the Space does not
|
|
110
|
+
* exist yet
|
|
111
|
+
* @returns {Promise<{ description?: SpaceDescription; etag?: string }>}
|
|
112
|
+
*/
|
|
113
|
+
async replaceDescription(description, options = {}) {
|
|
114
|
+
const response = await send(this.#context, {
|
|
115
|
+
path: this.#path,
|
|
116
|
+
method: 'PUT',
|
|
117
|
+
capability: this.#capability,
|
|
118
|
+
json: spaceDescriptionBody({ id: this.id, ...description }),
|
|
119
|
+
headers: writeHeaders({
|
|
120
|
+
precondition: {
|
|
121
|
+
ifMatch: options.ifMatch,
|
|
122
|
+
ifNoneMatch: options.ifNoneMatch
|
|
123
|
+
}
|
|
124
|
+
})
|
|
125
|
+
});
|
|
126
|
+
const created = dataOrNull(response);
|
|
127
|
+
return {
|
|
128
|
+
...(created !== null && { description: created }),
|
|
129
|
+
etag: readEtag(response)
|
|
130
|
+
};
|
|
131
|
+
}
|
|
45
132
|
/**
|
|
46
133
|
* Creates or updates the space by id (upsert). Merges the given fields over
|
|
47
134
|
* the current description; `controller` defaults to the wrapped signer's DID.
|
|
@@ -97,12 +184,7 @@ export class Space {
|
|
|
97
184
|
path: this.#path,
|
|
98
185
|
method: 'PUT',
|
|
99
186
|
capability: this.#capability,
|
|
100
|
-
json: {
|
|
101
|
-
id: this.id,
|
|
102
|
-
name,
|
|
103
|
-
controller,
|
|
104
|
-
...(type !== undefined ? { type } : {})
|
|
105
|
-
}
|
|
187
|
+
json: spaceDescriptionBody({ id: this.id, name, controller, type })
|
|
106
188
|
});
|
|
107
189
|
return {
|
|
108
190
|
id: this.id,
|
package/dist/Space.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Space.js","sourceRoot":"","sources":["../src/Space.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Space.js","sourceRoot":"","sources":["../src/Space.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import type { CollectionEncryption } from '../types.js';
|
|
2
|
+
import type { WasClient } from '../WasClient.js';
|
|
3
|
+
/**
|
|
4
|
+
* Where descriptors come from: one signed read of the collection's
|
|
5
|
+
* Description. Resolves `undefined` when the description carries no encryption
|
|
6
|
+
* member -- which a WAS host also serves for a read this client is not
|
|
7
|
+
* authorized to make, so the absence is ambiguous and callers fall back to a
|
|
8
|
+
* cached copy just as they do for a thrown fetch. Network errors throw through
|
|
9
|
+
* (callers treat the fetch as best-effort).
|
|
10
|
+
*/
|
|
11
|
+
export interface EncryptionDescriptorSource {
|
|
12
|
+
collectionEncryption(options: {
|
|
13
|
+
collectionId: string;
|
|
14
|
+
}): Promise<CollectionEncryption | undefined>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Where fetched descriptors survive offline: a client-local get/put
|
|
18
|
+
* pre-scoped by the host to one Space. `readDescriptor` resolves `undefined`
|
|
19
|
+
* when nothing is cached (never throws for absence).
|
|
20
|
+
*/
|
|
21
|
+
export interface EncryptionDescriptorCache {
|
|
22
|
+
readDescriptor(options: {
|
|
23
|
+
collectionId: string;
|
|
24
|
+
}): Promise<CollectionEncryption | undefined>;
|
|
25
|
+
writeDescriptor(options: {
|
|
26
|
+
collectionId: string;
|
|
27
|
+
descriptor: CollectionEncryption;
|
|
28
|
+
}): Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The {@link EncryptionDescriptorSource} over a was-client handle: reads the
|
|
32
|
+
* collection's Description in the given Space and returns its `encryption`
|
|
33
|
+
* descriptor.
|
|
34
|
+
*
|
|
35
|
+
* @param options {object}
|
|
36
|
+
* @param options.was {WasClient} a client whose signer can read the Space
|
|
37
|
+
* @param options.spaceId {string}
|
|
38
|
+
* @returns {EncryptionDescriptorSource}
|
|
39
|
+
*/
|
|
40
|
+
export declare function wasDescriptorSource({ was, spaceId }: {
|
|
41
|
+
was: WasClient;
|
|
42
|
+
spaceId: string;
|
|
43
|
+
}): EncryptionDescriptorSource;
|
|
44
|
+
/**
|
|
45
|
+
* Acquires one collection's descriptor: fetches it from the source, caching a
|
|
46
|
+
* success; falls back to the cached copy whenever the fetch yields no
|
|
47
|
+
* descriptor (it threw, or it came back empty -- a masked 404 for an
|
|
48
|
+
* unauthorized read looks exactly like an unencrypted collection); and with no
|
|
49
|
+
* source at all (a purely local code path) reads the cache alone. Any cached
|
|
50
|
+
* copy is deliberately left in place, never cleared by an empty fetch.
|
|
51
|
+
* `undefined` means no descriptor exists anywhere for this collection.
|
|
52
|
+
*
|
|
53
|
+
* @param options {object}
|
|
54
|
+
* @param [options.source] {EncryptionDescriptorSource} omit for cache-only
|
|
55
|
+
* acquisition
|
|
56
|
+
* @param options.cache {EncryptionDescriptorCache}
|
|
57
|
+
* @param options.collectionId {string}
|
|
58
|
+
* @param [options.onFetchError] {function} observes a swallowed fetch
|
|
59
|
+
* failure (the thrown-fetch branch only; an empty description is not an
|
|
60
|
+
* error). Errors from the cache itself throw through, as do a log-governed
|
|
61
|
+
* source's refusal classes (a fabricated or discontinuous log is a security
|
|
62
|
+
* signal, not an outage the cache should paper over) -- except a continuity
|
|
63
|
+
* `rollback`, which falls back to the cache like any transport hiccup
|
|
64
|
+
* @returns {Promise<CollectionEncryption | undefined>}
|
|
65
|
+
*/
|
|
66
|
+
export declare function acquireDescriptor({ source, cache, collectionId, onFetchError }: {
|
|
67
|
+
source?: EncryptionDescriptorSource;
|
|
68
|
+
cache: EncryptionDescriptorCache;
|
|
69
|
+
collectionId: string;
|
|
70
|
+
onFetchError?: (err: unknown, info: {
|
|
71
|
+
collectionId: string;
|
|
72
|
+
}) => void;
|
|
73
|
+
}): Promise<CollectionEncryption | undefined>;
|
|
74
|
+
/**
|
|
75
|
+
* Acquires descriptors for a set of collections concurrently (each fetch is an
|
|
76
|
+
* independent signed round trip, so a session start is not gated on a serial
|
|
77
|
+
* chain of describes). Collections that resolve no descriptor are simply
|
|
78
|
+
* absent from the result.
|
|
79
|
+
*
|
|
80
|
+
* @param options {object}
|
|
81
|
+
* @param [options.source] {EncryptionDescriptorSource} omit for cache-only
|
|
82
|
+
* acquisition
|
|
83
|
+
* @param options.cache {EncryptionDescriptorCache}
|
|
84
|
+
* @param options.collectionIds {string[]}
|
|
85
|
+
* @param [options.onFetchError] {function} observes each swallowed fetch
|
|
86
|
+
* failure
|
|
87
|
+
* @returns {Promise<Record<string, CollectionEncryption>>} keyed by
|
|
88
|
+
* collection id
|
|
89
|
+
*/
|
|
90
|
+
export declare function acquireDescriptors({ source, cache, collectionIds, onFetchError }: {
|
|
91
|
+
source?: EncryptionDescriptorSource;
|
|
92
|
+
cache: EncryptionDescriptorCache;
|
|
93
|
+
collectionIds: string[];
|
|
94
|
+
onFetchError?: (err: unknown, info: {
|
|
95
|
+
collectionId: string;
|
|
96
|
+
}) => void;
|
|
97
|
+
}): Promise<Record<string, CollectionEncryption>>;
|
|
98
|
+
//# sourceMappingURL=acquire.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acquire.d.ts","sourceRoot":"","sources":["../../src/edv/acquire.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD;;;;;;;GAOG;AACH,MAAM,WAAW,0BAA0B;IACzC,oBAAoB,CAAC,OAAO,EAAE;QAC5B,YAAY,EAAE,MAAM,CAAA;KACrB,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAA;CAC9C;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,cAAc,CAAC,OAAO,EAAE;QACtB,YAAY,EAAE,MAAM,CAAA;KACrB,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAA;IAC7C,eAAe,CAAC,OAAO,EAAE;QACvB,YAAY,EAAE,MAAM,CAAA;QACpB,UAAU,EAAE,oBAAoB,CAAA;KACjC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,GAAG,EACH,OAAO,EACR,EAAE;IACD,GAAG,EAAE,SAAS,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB,GAAG,0BAA0B,CAU7B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,MAAM,EACN,KAAK,EACL,YAAY,EACZ,YAAY,EACb,EAAE;IACD,MAAM,CAAC,EAAE,0BAA0B,CAAA;IACnC,KAAK,EAAE,yBAAyB,CAAA;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;CACtE,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAwB5C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,MAAM,EACN,KAAK,EACL,aAAa,EACb,YAAY,EACb,EAAE;IACD,MAAM,CAAC,EAAE,0BAA0B,CAAA;IACnC,KAAK,EAAE,yBAAyB,CAAA;IAChC,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;CACtE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAiBhD"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2026 Interop Alliance. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Collection encryption-descriptor acquisition: reading a collection's
|
|
6
|
+
* `CollectionEncryption` descriptor (its key-epoch roster) from the Collection
|
|
7
|
+
* Description, caching each success, and falling back to the cached copy
|
|
8
|
+
* whenever the description yields no descriptor -- whether it could not be
|
|
9
|
+
* fetched at all (offline, a collection must keep encrypting under its current
|
|
10
|
+
* epoch) or came back empty (WAS masks an unauthorized read as an absent one,
|
|
11
|
+
* so an empty description is ambiguous, never an authoritative "no
|
|
12
|
+
* encryption"). `undefined` therefore means only this: nothing, fetched or
|
|
13
|
+
* cached, describes this collection's encryption -- a plaintext collection, or
|
|
14
|
+
* an encrypted one whose epoch[0] install has not landed. A caller that has
|
|
15
|
+
* declared the collection encrypted must refuse fail-closed rather than
|
|
16
|
+
* encrypt without a roster.
|
|
17
|
+
*
|
|
18
|
+
* The two seams are deliberately narrow, so a consumer's own classes satisfy
|
|
19
|
+
* them structurally -- no adapter needed. An {@link EncryptionDescriptorSource}
|
|
20
|
+
* is one signed describe; an {@link EncryptionDescriptorCache} is a
|
|
21
|
+
* client-local get/put the host has already scoped to one Space (a web app: a
|
|
22
|
+
* localStorage pair keyed by Space id; a mobile app: a per-(profile,
|
|
23
|
+
* collection) table column), so no scope key appears in the interface.
|
|
24
|
+
*
|
|
25
|
+
* A source over a log-governed descriptor throws the resource-log refusal
|
|
26
|
+
* classes, and those are security signals rather than outages: the read path
|
|
27
|
+
* rethrows them past a warm cache, matched by `@interop/vh-resource-log`'s
|
|
28
|
+
* `isResourceLogRefusal` (a continuity `rollback` is the one carve-out, and
|
|
29
|
+
* falls back to the cache like a transport failure).
|
|
30
|
+
*/
|
|
31
|
+
import { isResourceLogRefusal } from '@interop/vh-resource-log';
|
|
32
|
+
/**
|
|
33
|
+
* The {@link EncryptionDescriptorSource} over a was-client handle: reads the
|
|
34
|
+
* collection's Description in the given Space and returns its `encryption`
|
|
35
|
+
* descriptor.
|
|
36
|
+
*
|
|
37
|
+
* @param options {object}
|
|
38
|
+
* @param options.was {WasClient} a client whose signer can read the Space
|
|
39
|
+
* @param options.spaceId {string}
|
|
40
|
+
* @returns {EncryptionDescriptorSource}
|
|
41
|
+
*/
|
|
42
|
+
export function wasDescriptorSource({ was, spaceId }) {
|
|
43
|
+
return {
|
|
44
|
+
async collectionEncryption({ collectionId }) {
|
|
45
|
+
const description = await was
|
|
46
|
+
.space(spaceId)
|
|
47
|
+
.collection(collectionId)
|
|
48
|
+
.describe();
|
|
49
|
+
return description?.encryption ?? undefined;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Acquires one collection's descriptor: fetches it from the source, caching a
|
|
55
|
+
* success; falls back to the cached copy whenever the fetch yields no
|
|
56
|
+
* descriptor (it threw, or it came back empty -- a masked 404 for an
|
|
57
|
+
* unauthorized read looks exactly like an unencrypted collection); and with no
|
|
58
|
+
* source at all (a purely local code path) reads the cache alone. Any cached
|
|
59
|
+
* copy is deliberately left in place, never cleared by an empty fetch.
|
|
60
|
+
* `undefined` means no descriptor exists anywhere for this collection.
|
|
61
|
+
*
|
|
62
|
+
* @param options {object}
|
|
63
|
+
* @param [options.source] {EncryptionDescriptorSource} omit for cache-only
|
|
64
|
+
* acquisition
|
|
65
|
+
* @param options.cache {EncryptionDescriptorCache}
|
|
66
|
+
* @param options.collectionId {string}
|
|
67
|
+
* @param [options.onFetchError] {function} observes a swallowed fetch
|
|
68
|
+
* failure (the thrown-fetch branch only; an empty description is not an
|
|
69
|
+
* error). Errors from the cache itself throw through, as do a log-governed
|
|
70
|
+
* source's refusal classes (a fabricated or discontinuous log is a security
|
|
71
|
+
* signal, not an outage the cache should paper over) -- except a continuity
|
|
72
|
+
* `rollback`, which falls back to the cache like any transport hiccup
|
|
73
|
+
* @returns {Promise<CollectionEncryption | undefined>}
|
|
74
|
+
*/
|
|
75
|
+
export async function acquireDescriptor({ source, cache, collectionId, onFetchError }) {
|
|
76
|
+
if (!source) {
|
|
77
|
+
return cache.readDescriptor({ collectionId });
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
const fetched = await source.collectionEncryption({ collectionId });
|
|
81
|
+
if (fetched) {
|
|
82
|
+
await cache.writeDescriptor({ collectionId, descriptor: fetched });
|
|
83
|
+
return fetched;
|
|
84
|
+
}
|
|
85
|
+
// Empty description: not authoritative (an unauthorized read is masked as
|
|
86
|
+
// an absent one), so a warm cache still serves the collection.
|
|
87
|
+
return cache.readDescriptor({ collectionId });
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
// A resource-log refusal the cache must not paper over -- a fabricated
|
|
91
|
+
// log, or one that is not the continuation of the pinned history. A
|
|
92
|
+
// rollback is not one of them and falls through to the cache, as any
|
|
93
|
+
// transport failure does.
|
|
94
|
+
if (isResourceLogRefusal(err)) {
|
|
95
|
+
throw err;
|
|
96
|
+
}
|
|
97
|
+
onFetchError?.(err, { collectionId });
|
|
98
|
+
return cache.readDescriptor({ collectionId });
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Acquires descriptors for a set of collections concurrently (each fetch is an
|
|
103
|
+
* independent signed round trip, so a session start is not gated on a serial
|
|
104
|
+
* chain of describes). Collections that resolve no descriptor are simply
|
|
105
|
+
* absent from the result.
|
|
106
|
+
*
|
|
107
|
+
* @param options {object}
|
|
108
|
+
* @param [options.source] {EncryptionDescriptorSource} omit for cache-only
|
|
109
|
+
* acquisition
|
|
110
|
+
* @param options.cache {EncryptionDescriptorCache}
|
|
111
|
+
* @param options.collectionIds {string[]}
|
|
112
|
+
* @param [options.onFetchError] {function} observes each swallowed fetch
|
|
113
|
+
* failure
|
|
114
|
+
* @returns {Promise<Record<string, CollectionEncryption>>} keyed by
|
|
115
|
+
* collection id
|
|
116
|
+
*/
|
|
117
|
+
export async function acquireDescriptors({ source, cache, collectionIds, onFetchError }) {
|
|
118
|
+
const resolved = await Promise.all(collectionIds.map(async (collectionId) => [
|
|
119
|
+
collectionId,
|
|
120
|
+
await acquireDescriptor({ source, cache, collectionId, onFetchError })
|
|
121
|
+
]));
|
|
122
|
+
const descriptors = {};
|
|
123
|
+
for (const [collectionId, descriptor] of resolved) {
|
|
124
|
+
if (descriptor) {
|
|
125
|
+
descriptors[collectionId] = descriptor;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return descriptors;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=acquire.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acquire.js","sourceRoot":"","sources":["../../src/edv/acquire.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAiC/D;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,GAAG,EACH,OAAO,EAIR;IACC,OAAO;QACL,KAAK,CAAC,oBAAoB,CAAC,EAAE,YAAY,EAAE;YACzC,MAAM,WAAW,GAAG,MAAM,GAAG;iBAC1B,KAAK,CAAC,OAAO,CAAC;iBACd,UAAU,CAAC,YAAY,CAAC;iBACxB,QAAQ,EAAE,CAAA;YACb,OAAO,WAAW,EAAE,UAAU,IAAI,SAAS,CAAA;QAC7C,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EACtC,MAAM,EACN,KAAK,EACL,YAAY,EACZ,YAAY,EAMb;IACC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC,CAAA;IAC/C,CAAC;IACD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAA;QACnE,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,KAAK,CAAC,eAAe,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAA;YAClE,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,0EAA0E;QAC1E,+DAA+D;QAC/D,OAAO,KAAK,CAAC,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC,CAAA;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,uEAAuE;QACvE,oEAAoE;QACpE,qEAAqE;QACrE,0BAA0B;QAC1B,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,GAAG,CAAA;QACX,CAAC;QACD,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,CAAC,CAAA;QACrC,OAAO,KAAK,CAAC,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC,CAAA;IAC/C,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EACvC,MAAM,EACN,KAAK,EACL,aAAa,EACb,YAAY,EAMb;IACC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,aAAa,CAAC,GAAG,CACf,KAAK,EAAC,YAAY,EAAC,EAAE,CACnB;QACE,YAAY;QACZ,MAAM,iBAAiB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;KAC9D,CACb,CACF,CAAA;IACD,MAAM,WAAW,GAAyC,EAAE,CAAA;IAC5D,KAAK,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,QAAQ,EAAE,CAAC;QAClD,IAAI,UAAU,EAAE,CAAC;YACf,WAAW,CAAC,YAAY,CAAC,GAAG,UAAU,CAAA;QACxC,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC"}
|
package/dist/edv/index.d.ts
CHANGED
|
@@ -50,8 +50,36 @@
|
|
|
50
50
|
* cannot help). Both ship from this subpath beside the cipher that raises
|
|
51
51
|
* them, so a consumer classifying what a cipher threw need not reach for the
|
|
52
52
|
* package root. Both assign their `name` explicitly, and a consumer whose
|
|
53
|
-
* cipher arrives through an injected seam
|
|
54
|
-
*
|
|
53
|
+
* cipher arrives through an injected seam matches on that name rather than
|
|
54
|
+
* `instanceof`, since the seam may resolve to a second copy of this package:
|
|
55
|
+
* `isKeyUnwrapError` here, and `isUnknownEpochError` on `./sync`, are those
|
|
56
|
+
* matchers.
|
|
57
|
+
*
|
|
58
|
+
* Which epoch a collection encrypts under, and when to ask again, is the
|
|
59
|
+
* descriptor acquisition and refresh policy every consumer running an
|
|
60
|
+
* encrypted collection must share (a drift between two replicas does not fail
|
|
61
|
+
* loudly; it fails as a resource one of them cannot decrypt):
|
|
62
|
+
*
|
|
63
|
+
* - `EncryptionDescriptorSource` / `EncryptionDescriptorCache` -- the narrow
|
|
64
|
+
* seams a host implements: one signed Collection Description read, and a
|
|
65
|
+
* client-local get/put pre-scoped to one Space. `wasDescriptorSource` is the
|
|
66
|
+
* source over a `WasClient` handle.
|
|
67
|
+
* - `acquireDescriptor` / `acquireDescriptors` -- fetch + cache with the
|
|
68
|
+
* cached fallback whenever the fetch yields no descriptor, thrown or empty
|
|
69
|
+
* (offline, a collection keeps encrypting under its current epoch; an empty
|
|
70
|
+
* description is ambiguous, since WAS masks an unauthorized read as an
|
|
71
|
+
* absent one). No descriptor anywhere means a plaintext collection, or an
|
|
72
|
+
* encrypted one whose epoch[0] install has not landed -- which a caller that
|
|
73
|
+
* has declared the collection encrypted must refuse fail-closed. A
|
|
74
|
+
* log-governed source's refusal classes rethrow instead of falling back
|
|
75
|
+
* (except a continuity rollback, which is reconcilable divergence).
|
|
76
|
+
* - `DescriptorRefreshPolicy` -- the once-per-collection-per-session
|
|
77
|
+
* unknown-epoch refresh guard, plus the refresh-and-re-read-once wrapper
|
|
78
|
+
* for hosts whose reads scan rows and count unknown-epoch skips.
|
|
79
|
+
* - `createRefreshingEdvDocCipher` -- `createEdvDocCipher` bound to both: a
|
|
80
|
+
* cipher that acquires its own descriptor and, on an unknown-epoch decrypt,
|
|
81
|
+
* re-reads the description, swaps itself, and retries exactly once per
|
|
82
|
+
* instance.
|
|
55
83
|
*/
|
|
56
84
|
export { createEdvEncryption, EdvCodec, wasTransportFactory } from './EdvCodec.js';
|
|
57
85
|
export type { CodecTransportFactory, EdvKeys } from './EdvCodec.js';
|
|
@@ -72,4 +100,9 @@ export { HMAC_KEY_TYPE, mintHmacKey, hmacKeyFromSecret, resolveHmacKey } from '.
|
|
|
72
100
|
export type { BlindingKey } from './hmacKey.js';
|
|
73
101
|
export { createEdvDocCipher, createEdvEncryptOnlyDocCipher, ownerRecipient, EncryptOnlyCipherError, KeyUnwrapError, UnknownEpochError, isEncryptedEnvelope } from './docCipher.js';
|
|
74
102
|
export type { DocCipher, EdvDocCipher } from './docCipher.js';
|
|
103
|
+
export { acquireDescriptor, acquireDescriptors, wasDescriptorSource } from './acquire.js';
|
|
104
|
+
export type { EncryptionDescriptorCache, EncryptionDescriptorSource } from './acquire.js';
|
|
105
|
+
export { DescriptorRefreshPolicy } from './refresh.js';
|
|
106
|
+
export { createRefreshingEdvDocCipher } from './refreshingDocCipher.js';
|
|
107
|
+
export { isKeyUnwrapError } from '../sync/predicates.js';
|
|
75
108
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/edv/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/edv/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/edv/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AACH,OAAO,EACL,mBAAmB,EACnB,QAAQ,EACR,mBAAmB,EACpB,MAAM,eAAe,CAAA;AACtB,YAAY,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACtE,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,gBAAgB,EACjB,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EACL,eAAe,EACf,yBAAyB,EAC1B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,EACL,8BAA8B,EAC9B,oCAAoC,EACpC,0BAA0B,EAC1B,8BAA8B,EAC9B,yBAAyB,EAC1B,MAAM,iCAAiC,CAAA;AACxC,YAAY,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AACjF,OAAO,EACL,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,eAAe,EAChB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EACL,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,cAAc,EACf,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,cAAc,EACd,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,gBAAgB,CAAA;AACvB,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,cAAc,CAAA;AACrB,YAAY,EACV,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
|
package/dist/edv/index.js
CHANGED
|
@@ -50,8 +50,36 @@
|
|
|
50
50
|
* cannot help). Both ship from this subpath beside the cipher that raises
|
|
51
51
|
* them, so a consumer classifying what a cipher threw need not reach for the
|
|
52
52
|
* package root. Both assign their `name` explicitly, and a consumer whose
|
|
53
|
-
* cipher arrives through an injected seam
|
|
54
|
-
*
|
|
53
|
+
* cipher arrives through an injected seam matches on that name rather than
|
|
54
|
+
* `instanceof`, since the seam may resolve to a second copy of this package:
|
|
55
|
+
* `isKeyUnwrapError` here, and `isUnknownEpochError` on `./sync`, are those
|
|
56
|
+
* matchers.
|
|
57
|
+
*
|
|
58
|
+
* Which epoch a collection encrypts under, and when to ask again, is the
|
|
59
|
+
* descriptor acquisition and refresh policy every consumer running an
|
|
60
|
+
* encrypted collection must share (a drift between two replicas does not fail
|
|
61
|
+
* loudly; it fails as a resource one of them cannot decrypt):
|
|
62
|
+
*
|
|
63
|
+
* - `EncryptionDescriptorSource` / `EncryptionDescriptorCache` -- the narrow
|
|
64
|
+
* seams a host implements: one signed Collection Description read, and a
|
|
65
|
+
* client-local get/put pre-scoped to one Space. `wasDescriptorSource` is the
|
|
66
|
+
* source over a `WasClient` handle.
|
|
67
|
+
* - `acquireDescriptor` / `acquireDescriptors` -- fetch + cache with the
|
|
68
|
+
* cached fallback whenever the fetch yields no descriptor, thrown or empty
|
|
69
|
+
* (offline, a collection keeps encrypting under its current epoch; an empty
|
|
70
|
+
* description is ambiguous, since WAS masks an unauthorized read as an
|
|
71
|
+
* absent one). No descriptor anywhere means a plaintext collection, or an
|
|
72
|
+
* encrypted one whose epoch[0] install has not landed -- which a caller that
|
|
73
|
+
* has declared the collection encrypted must refuse fail-closed. A
|
|
74
|
+
* log-governed source's refusal classes rethrow instead of falling back
|
|
75
|
+
* (except a continuity rollback, which is reconcilable divergence).
|
|
76
|
+
* - `DescriptorRefreshPolicy` -- the once-per-collection-per-session
|
|
77
|
+
* unknown-epoch refresh guard, plus the refresh-and-re-read-once wrapper
|
|
78
|
+
* for hosts whose reads scan rows and count unknown-epoch skips.
|
|
79
|
+
* - `createRefreshingEdvDocCipher` -- `createEdvDocCipher` bound to both: a
|
|
80
|
+
* cipher that acquires its own descriptor and, on an unknown-epoch decrypt,
|
|
81
|
+
* re-reads the description, swaps itself, and retries exactly once per
|
|
82
|
+
* instance.
|
|
55
83
|
*/
|
|
56
84
|
export { createEdvEncryption, EdvCodec, wasTransportFactory } from './EdvCodec.js';
|
|
57
85
|
export { WasTransport } from './WasTransport.js';
|
|
@@ -65,4 +93,8 @@ export { hasKeyEpochs, epochRostersEqual } from './epochRoster.js';
|
|
|
65
93
|
export { resolveEpochKeys } from './epochKeys.js';
|
|
66
94
|
export { HMAC_KEY_TYPE, mintHmacKey, hmacKeyFromSecret, resolveHmacKey } from './hmacKey.js';
|
|
67
95
|
export { createEdvDocCipher, createEdvEncryptOnlyDocCipher, ownerRecipient, EncryptOnlyCipherError, KeyUnwrapError, UnknownEpochError, isEncryptedEnvelope } from './docCipher.js';
|
|
96
|
+
export { acquireDescriptor, acquireDescriptors, wasDescriptorSource } from './acquire.js';
|
|
97
|
+
export { DescriptorRefreshPolicy } from './refresh.js';
|
|
98
|
+
export { createRefreshingEdvDocCipher } from './refreshingDocCipher.js';
|
|
99
|
+
export { isKeyUnwrapError } from '../sync/predicates.js';
|
|
68
100
|
//# sourceMappingURL=index.js.map
|
package/dist/edv/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/edv/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/edv/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AACH,OAAO,EACL,mBAAmB,EACnB,QAAQ,EACR,mBAAmB,EACpB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACtE,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,gBAAgB,EACjB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,eAAe,EACf,yBAAyB,EAC1B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EACL,8BAA8B,EAC9B,oCAAoC,EACpC,0BAA0B,EAC1B,8BAA8B,EAC9B,yBAAyB,EAC1B,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,eAAe,EAChB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,EACL,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,cAAc,EACf,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,cAAc,EACd,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,cAAc,CAAA;AAKrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logGovernedDescriptorStore.d.ts","sourceRoot":"","sources":["../../src/edv/logGovernedDescriptorStore.ts"],"names":[],"mappings":"AA+BA,OAAO,EAWL,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"logGovernedDescriptorStore.d.ts","sourceRoot":"","sources":["../../src/edv/logGovernedDescriptorStore.ts"],"names":[],"mappings":"AA+BA,OAAO,EAWL,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAOlD,OAAO,KAAK,EAAyB,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAC9E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAErE;;;GAGG;AACH,eAAO,MAAM,8BAA8B,0BAA0B,CAAA;AAErE;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,oBAAoB,GAC/B,oBAAoB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAGzC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,8BAA8B,CAAC,EACnD,KAAK,EACL,iBAAiB,EACjB,QAAQ,EACR,KAAK,EACN,EAAE;IACD,KAAK,EAAE,gBAAgB,CAAA;IACvB,iBAAiB,EAAE,MAAM,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACvD,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,KAAK,EAAE,MAAM,CAAA;CACd,GAAG,OAAO,CAAC;IACV,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,UAAU,EAAE,oBAAoB,CAAA;IAChC,UAAU,EAAE,qBAAqB,CAAA;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,GAAG,IAAI,CAAC,CAyBR;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,0BAA2B,SAAQ,yBAAyB;IAC3E;;;;;;OAMG;IACH,IAAI,IAAI,OAAO,CAAC;QACd,UAAU,EAAE,oBAAoB,CAAA;QAChC,QAAQ,CAAC,EAAE,mBAAmB,CAAA;QAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,GAAG,IAAI,CAAC,CAAA;IACT,IAAI,IAAI,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAA;CACnC;AAuBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,0BAA0B,CAAC,EACzC,GAAG,EACH,iBAAiB,EACjB,QAAQ,EACR,KAAK,EACL,MAAM,EACP,EAAE;IACD,GAAG,EAAE,gBAAgB,CAAA;IACrB,iBAAiB,EAAE,MAAM,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACvD,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B,GAAG,0BAA0B,CA8L7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,oCAAoC,CAAC,EACnD,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,KAAK,EACL,MAAM,EACP,EAAE;IACD,UAAU,EAAE,UAAU,CAAA;IACtB,iBAAiB,EAAE,MAAM,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACvD,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B,GAAG,0BAA0B,CAsI7B"}
|
|
@@ -31,7 +31,7 @@ import { canonicalize } from 'json-canonicalize';
|
|
|
31
31
|
import { RESOURCE_LOG_METHOD } from '@interop/storage-core';
|
|
32
32
|
import { buildResourceLogEntry, confirmAppend, createResourceLog, isResourceLogConflictError, readResourceLog, ResourceLogClosedError, ResourceLogIntegrityError, sealResourceLog, verifyResourceLog, verifyResourceLogAppend } from '@interop/vh-resource-log';
|
|
33
33
|
import { PreconditionFailedError, ValidationError } from '../errors.js';
|
|
34
|
-
import { unreadableDescriptionError } from '../internal/describe.js';
|
|
34
|
+
import { isGovernedDescriptor, unreadableDescriptionError } from '../internal/describe.js';
|
|
35
35
|
import { resourceLogStore } from '../log/logStore.js';
|
|
36
36
|
/**
|
|
37
37
|
* The state-document schema identifier an encryption descriptor carries in a
|
|
@@ -425,7 +425,7 @@ export function logGovernedCollectionDescriptorStore({ collection, resolveContro
|
|
|
425
425
|
throw new ValidationError('Cannot manage recipients: this collection is not declared ' +
|
|
426
426
|
"encrypted with the 'edv' scheme.");
|
|
427
427
|
}
|
|
428
|
-
if (descriptor
|
|
428
|
+
if (!isGovernedDescriptor(descriptor)) {
|
|
429
429
|
return { descriptor, etag: current.etag };
|
|
430
430
|
}
|
|
431
431
|
return readGoverned(descriptor);
|
|
@@ -434,7 +434,8 @@ export function logGovernedCollectionDescriptorStore({ collection, resolveContro
|
|
|
434
434
|
if (described === undefined) {
|
|
435
435
|
await store.read();
|
|
436
436
|
}
|
|
437
|
-
if (described?.encryption
|
|
437
|
+
if (described?.encryption !== undefined &&
|
|
438
|
+
isGovernedDescriptor(described.encryption)) {
|
|
438
439
|
await governed.replace(descriptor, { ifMatch });
|
|
439
440
|
return;
|
|
440
441
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logGovernedDescriptorStore.js","sourceRoot":"","sources":["../../src/edv/logGovernedDescriptorStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,EACf,sBAAsB,EACtB,yBAAyB,EACzB,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EAMxB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,
|
|
1
|
+
{"version":3,"file":"logGovernedDescriptorStore.js","sourceRoot":"","sources":["../../src/edv/logGovernedDescriptorStore.ts"],"names":[],"mappings":"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"}
|