@interop/was-client 0.41.0 → 0.43.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/dist/Collection.d.ts.map +1 -1
- package/dist/Collection.js +27 -83
- package/dist/Collection.js.map +1 -1
- package/dist/Resource.d.ts +10 -7
- package/dist/Resource.d.ts.map +1 -1
- package/dist/Resource.js +32 -99
- package/dist/Resource.js.map +1 -1
- package/dist/codec.d.ts +18 -4
- package/dist/codec.d.ts.map +1 -1
- package/dist/codec.js.map +1 -1
- package/dist/edv/EdvCodec.d.ts +77 -8
- package/dist/edv/EdvCodec.d.ts.map +1 -1
- package/dist/edv/EdvCodec.js +361 -224
- package/dist/edv/EdvCodec.js.map +1 -1
- package/dist/edv/WasTransport.js +2 -2
- package/dist/edv/WasTransport.js.map +1 -1
- package/dist/edv/constants.d.ts +0 -8
- package/dist/edv/constants.d.ts.map +1 -1
- package/dist/edv/constants.js +0 -8
- package/dist/edv/constants.js.map +1 -1
- package/dist/edv/descriptorStore.d.ts +10 -6
- package/dist/edv/descriptorStore.d.ts.map +1 -1
- package/dist/edv/descriptorStore.js +5 -3
- package/dist/edv/descriptorStore.js.map +1 -1
- package/dist/edv/didKeyRecipient.d.ts.map +1 -1
- package/dist/edv/didKeyRecipient.js +1 -1
- package/dist/edv/didKeyRecipient.js.map +1 -1
- package/dist/edv/docCipher.d.ts.map +1 -1
- package/dist/edv/docCipher.js +22 -38
- package/dist/edv/docCipher.js.map +1 -1
- package/dist/edv/epochCrypto.d.ts +7 -0
- package/dist/edv/epochCrypto.d.ts.map +1 -1
- package/dist/edv/epochCrypto.js +12 -5
- package/dist/edv/epochCrypto.js.map +1 -1
- package/dist/edv/epochKeys.d.ts.map +1 -1
- package/dist/edv/epochKeys.js +21 -37
- package/dist/edv/epochKeys.js.map +1 -1
- package/dist/edv/epochRoster.d.ts +24 -0
- package/dist/edv/epochRoster.d.ts.map +1 -1
- package/dist/edv/epochRoster.js +26 -0
- package/dist/edv/epochRoster.js.map +1 -1
- package/dist/edv/index.d.ts +2 -2
- package/dist/edv/index.d.ts.map +1 -1
- package/dist/edv/index.js +1 -1
- package/dist/edv/index.js.map +1 -1
- package/dist/edv/recipients.d.ts +2 -2
- package/dist/edv/recipients.d.ts.map +1 -1
- package/dist/edv/recipients.js +238 -202
- package/dist/edv/recipients.js.map +1 -1
- package/dist/internal/codec.d.ts.map +1 -1
- package/dist/internal/codec.js +5 -18
- package/dist/internal/codec.js.map +1 -1
- package/dist/internal/conditional.d.ts +33 -2
- package/dist/internal/conditional.d.ts.map +1 -1
- package/dist/internal/conditional.js +52 -0
- package/dist/internal/conditional.js.map +1 -1
- package/dist/internal/content.d.ts +7 -0
- package/dist/internal/content.d.ts.map +1 -1
- package/dist/internal/content.js +7 -0
- package/dist/internal/content.js.map +1 -1
- package/dist/internal/features.d.ts.map +1 -1
- package/dist/internal/features.js +9 -9
- package/dist/internal/features.js.map +1 -1
- package/dist/internal/indexSchema.d.ts +0 -10
- package/dist/internal/indexSchema.d.ts.map +1 -1
- package/dist/internal/indexSchema.js +1 -1
- package/dist/internal/indexSchema.js.map +1 -1
- package/dist/internal/memo.d.ts +39 -0
- package/dist/internal/memo.d.ts.map +1 -0
- package/dist/internal/memo.js +59 -0
- package/dist/internal/memo.js.map +1 -0
- package/dist/internal/meta.d.ts +92 -0
- package/dist/internal/meta.d.ts.map +1 -0
- package/dist/internal/meta.js +126 -0
- package/dist/internal/meta.js.map +1 -0
- package/dist/internal/pagination.js +1 -1
- package/dist/internal/pagination.js.map +1 -1
- package/dist/internal/withCodec.d.ts +26 -0
- package/dist/internal/withCodec.d.ts.map +1 -0
- package/dist/internal/withCodec.js +15 -0
- package/dist/internal/withCodec.js.map +1 -0
- package/dist/internal/write.d.ts +5 -8
- package/dist/internal/write.d.ts.map +1 -1
- package/dist/internal/write.js +25 -11
- package/dist/internal/write.js.map +1 -1
- package/dist/log/logStore.d.ts +6 -3
- package/dist/log/logStore.d.ts.map +1 -1
- package/dist/log/logStore.js +6 -3
- package/dist/log/logStore.js.map +1 -1
- package/dist/sync/cid.d.ts.map +1 -1
- package/dist/sync/cid.js +1 -6
- package/dist/sync/cid.js.map +1 -1
- package/dist/sync/index.d.ts +2 -1
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +5 -1
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/port.d.ts +0 -14
- package/dist/sync/port.d.ts.map +1 -1
- package/dist/sync/port.js +6 -19
- package/dist/sync/port.js.map +1 -1
- package/dist/sync/provisioning.d.ts.map +1 -1
- package/dist/sync/provisioning.js +23 -2
- package/dist/sync/provisioning.js.map +1 -1
- package/package.json +1 -1
package/dist/codec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAwLA;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,KAAiB;IAC9C,OAAQ,KAAsB,CAAC,OAAO,KAAK,IAAI,CAAA;AACjD,CAAC"}
|
package/dist/edv/EdvCodec.d.ts
CHANGED
|
@@ -1,8 +1,41 @@
|
|
|
1
1
|
import { EdvClientCore } from '@interop/edv-client';
|
|
2
2
|
import type { IKeyAgreementKey, IKeyResolver } from '@interop/data-integrity-core';
|
|
3
3
|
import type { CodecIndexing, CodecRequestContext, CodecWrite, EncryptionProvider, ResourceCodec, ResponseLike } from '../codec.js';
|
|
4
|
+
import type { WritePrecondition } from '../internal/conditional.js';
|
|
5
|
+
import { WasTransport } from './WasTransport.js';
|
|
4
6
|
import type { BlindingKey } from './hmacKey.js';
|
|
5
7
|
import type { CollectionEncryption, Json, ResourceData, ResourceMetadataCustom, ResourceMetadataCustomInput } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Builds the `WasTransport` a codec's chunked-stream paths drive, over the
|
|
10
|
+
* signed requester core of one request. Injected into {@link EdvCodec} by the
|
|
11
|
+
* build that knows where the Collection lives (a Space on a server); a codec
|
|
12
|
+
* built without one has no server behind it and refuses the chunked path.
|
|
13
|
+
*
|
|
14
|
+
* @param options {object}
|
|
15
|
+
* @param options.context {CodecRequestContext} the signed-request context
|
|
16
|
+
* @param [options.documentHeaders] {Record<string, string>} extra headers
|
|
17
|
+
* for document writes (the `Key-Epoch` stamp the codec seam applies)
|
|
18
|
+
* @returns {WasTransport}
|
|
19
|
+
*/
|
|
20
|
+
export type CodecTransportFactory = (options: {
|
|
21
|
+
context: CodecRequestContext;
|
|
22
|
+
documentHeaders?: Record<string, string>;
|
|
23
|
+
}) => WasTransport;
|
|
24
|
+
/**
|
|
25
|
+
* Builds the transport factory for a Collection reachable over WAS: the
|
|
26
|
+
* codec's route to its own document and chunk resources on the server.
|
|
27
|
+
*
|
|
28
|
+
* @param options {object}
|
|
29
|
+
* @param options.spaceId {string} the Space holding the Collection
|
|
30
|
+
* @param options.collectionId {string} the Collection
|
|
31
|
+
* @param options.contentType {string} stored envelope content type
|
|
32
|
+
* @returns {CodecTransportFactory}
|
|
33
|
+
*/
|
|
34
|
+
export declare function wasTransportFactory({ spaceId, collectionId, contentType }: {
|
|
35
|
+
spaceId: string;
|
|
36
|
+
collectionId: string;
|
|
37
|
+
contentType: string;
|
|
38
|
+
}): CodecTransportFactory;
|
|
6
39
|
/**
|
|
7
40
|
* A {@link ResourceCodec} that encrypts on write and decrypts on read using an
|
|
8
41
|
* `EdvClientCore`'s public `documentCipher`. One instance is bound per encrypted
|
|
@@ -37,8 +70,9 @@ export declare class EdvCodec implements ResourceCodec {
|
|
|
37
70
|
* JWE ciphertext, content-addressed)
|
|
38
71
|
* @param [options.version] {number} the EDV-over-WAS scheme version to bind
|
|
39
72
|
* into each envelope's `was.v` (defaults to {@link EDV_SCHEME_VERSION})
|
|
40
|
-
* @param options.
|
|
41
|
-
* chunked-stream path
|
|
73
|
+
* @param [options.transportFactory] {CodecTransportFactory} builds the
|
|
74
|
+
* transport the chunked-stream path drives; omitted by a build with no
|
|
75
|
+
* server behind it, which then refuses that path
|
|
42
76
|
* @param options.collectionId {string} the Collection this codec reads and
|
|
43
77
|
* writes: bound into the Collection metadata envelope's `was.collection`
|
|
44
78
|
* (and checked on read), and it labels decrypt-routing errors
|
|
@@ -48,7 +82,7 @@ export declare class EdvCodec implements ResourceCodec {
|
|
|
48
82
|
* @param [options.hmac] {BlindingKey} the collection's blinded-index key,
|
|
49
83
|
* where it declares one
|
|
50
84
|
*/
|
|
51
|
-
constructor({ edv, keyAgreementKey, readKeys, writeEpoch, contentType, maxBlobBytes, chunkSize, idDerivation, version,
|
|
85
|
+
constructor({ edv, keyAgreementKey, readKeys, writeEpoch, contentType, maxBlobBytes, chunkSize, idDerivation, version, transportFactory, collectionId, epochIds, hmac }: {
|
|
52
86
|
edv: EdvClientCore;
|
|
53
87
|
keyAgreementKey: IKeyAgreementKey;
|
|
54
88
|
readKeys: IKeyAgreementKey[];
|
|
@@ -58,7 +92,7 @@ export declare class EdvCodec implements ResourceCodec {
|
|
|
58
92
|
chunkSize?: number;
|
|
59
93
|
idDerivation: 'random' | 'content';
|
|
60
94
|
version?: number;
|
|
61
|
-
|
|
95
|
+
transportFactory?: CodecTransportFactory;
|
|
62
96
|
collectionId: string;
|
|
63
97
|
epochIds: string[];
|
|
64
98
|
hmac?: BlindingKey | null;
|
|
@@ -76,11 +110,12 @@ export declare class EdvCodec implements ResourceCodec {
|
|
|
76
110
|
/**
|
|
77
111
|
* @inheritdoc
|
|
78
112
|
*/
|
|
79
|
-
encode({ id, data, contentType, current }: {
|
|
113
|
+
encode({ id, data, contentType, current, precondition }: {
|
|
80
114
|
id?: string;
|
|
81
115
|
data: ResourceData;
|
|
82
116
|
contentType?: string;
|
|
83
117
|
current?: ResponseLike | null;
|
|
118
|
+
precondition?: WritePrecondition;
|
|
84
119
|
}): Promise<CodecWrite>;
|
|
85
120
|
/**
|
|
86
121
|
* @inheritdoc
|
|
@@ -190,6 +225,42 @@ export declare function createEdvEncryption({ resolveKeys, contentType, maxBlobB
|
|
|
190
225
|
chunkSize?: number;
|
|
191
226
|
idDerivation?: 'random' | 'content';
|
|
192
227
|
}): EncryptionProvider;
|
|
228
|
+
/**
|
|
229
|
+
* Builds the {@link EdvCodec} for one encrypted collection from a reader's
|
|
230
|
+
* keys and the collection's encryption descriptor. The whole of the codec
|
|
231
|
+
* build that follows key resolution: the fail-closed descriptor guard, the
|
|
232
|
+
* reader's per-epoch keys, the collection's blinding key, and the EDV core the
|
|
233
|
+
* codec drives. Shared by the keystore provider (`createEdvEncryption`'s
|
|
234
|
+
* `codecFor`, which resolves the keys first) and by the local-replica cipher,
|
|
235
|
+
* which holds its keys already.
|
|
236
|
+
*
|
|
237
|
+
* @param options {object}
|
|
238
|
+
* @param options.collectionId {string} the collection's WAS id
|
|
239
|
+
* @param [options.label] {string} how the collection is named in errors;
|
|
240
|
+
* defaults to its id alone, which is all a build with no Space knows
|
|
241
|
+
* @param [options.transportFactory] {CodecTransportFactory} builds the
|
|
242
|
+
* transport the chunked-stream path drives; omitted by the local-replica
|
|
243
|
+
* build, which has no server to address
|
|
244
|
+
* @param [options.encryption] {CollectionEncryption} the collection's
|
|
245
|
+
* encryption descriptor; must carry the key-epoch roster
|
|
246
|
+
* @param options.keys {EdvKeys} the reader's key material
|
|
247
|
+
* @param options.idDerivation {'random' | 'content'} how `add()` mints ids
|
|
248
|
+
* @param [options.contentType] {string} stored envelope content type
|
|
249
|
+
* @param [options.maxBlobBytes] {number} the single-document threshold
|
|
250
|
+
* @param [options.chunkSize] {number} the size of each encrypted chunk
|
|
251
|
+
* @returns {Promise<EdvCodec>}
|
|
252
|
+
*/
|
|
253
|
+
export declare function buildEdvCodec({ collectionId, label, transportFactory, encryption, keys, idDerivation, contentType, maxBlobBytes, chunkSize }: {
|
|
254
|
+
collectionId: string;
|
|
255
|
+
label?: string;
|
|
256
|
+
transportFactory?: CodecTransportFactory;
|
|
257
|
+
encryption?: CollectionEncryption;
|
|
258
|
+
keys: EdvKeys;
|
|
259
|
+
idDerivation: 'random' | 'content';
|
|
260
|
+
contentType?: string;
|
|
261
|
+
maxBlobBytes?: number;
|
|
262
|
+
chunkSize?: number;
|
|
263
|
+
}): Promise<EdvCodec>;
|
|
193
264
|
/**
|
|
194
265
|
* Builds a write-only {@link EdvCodec} for one encrypted collection from its
|
|
195
266
|
* descriptor alone -- no key-agreement secret anywhere. Encryption in this
|
|
@@ -215,13 +286,11 @@ export declare function createEdvEncryption({ resolveKeys, contentType, maxBlobB
|
|
|
215
286
|
* @param options.idDerivation {'content' | 'random'} how ids are minted
|
|
216
287
|
* @param options.encryption {CollectionEncryption} the collection's
|
|
217
288
|
* descriptor; must carry the key-epoch roster
|
|
218
|
-
* @param [options.contentType] {string} stored envelope content type
|
|
219
289
|
* @returns {Promise<EdvCodec>}
|
|
220
290
|
*/
|
|
221
|
-
export declare function encryptOnlyEdvCodec({ collectionId, idDerivation, encryption
|
|
291
|
+
export declare function encryptOnlyEdvCodec({ collectionId, idDerivation, encryption }: {
|
|
222
292
|
collectionId: string;
|
|
223
293
|
idDerivation: 'content' | 'random';
|
|
224
294
|
encryption: CollectionEncryption;
|
|
225
|
-
contentType?: string;
|
|
226
295
|
}): Promise<EdvCodec>;
|
|
227
296
|
//# sourceMappingURL=EdvCodec.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EdvCodec.d.ts","sourceRoot":"","sources":["../../src/edv/EdvCodec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EdvCodec.d.ts","sourceRoot":"","sources":["../../src/edv/EdvCodec.ts"],"names":[],"mappings":"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"}
|