@interop/was-client 0.78.0 → 0.80.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 +23 -11
- package/dist/Resource.d.ts +9 -0
- package/dist/Resource.d.ts.map +1 -1
- package/dist/Resource.js +10 -2
- package/dist/Resource.js.map +1 -1
- package/dist/codec.d.ts +8 -6
- package/dist/codec.d.ts.map +1 -1
- package/dist/codec.js.map +1 -1
- package/dist/edv/EdvCodec.d.ts +55 -4
- package/dist/edv/EdvCodec.d.ts.map +1 -1
- package/dist/edv/EdvCodec.js +255 -55
- package/dist/edv/EdvCodec.js.map +1 -1
- package/dist/edv/WasTransport.d.ts +11 -1
- package/dist/edv/WasTransport.d.ts.map +1 -1
- package/dist/edv/WasTransport.js +18 -3
- package/dist/edv/WasTransport.js.map +1 -1
- package/dist/edv/cipher.d.ts +6 -1
- package/dist/edv/cipher.d.ts.map +1 -1
- package/dist/edv/cipher.js +5 -0
- package/dist/edv/cipher.js.map +1 -1
- package/dist/edv/core.d.ts +2 -2
- package/dist/edv/core.d.ts.map +1 -1
- package/dist/edv/core.js +1 -1
- package/dist/edv/core.js.map +1 -1
- package/dist/edv/docCipher.d.ts +56 -7
- package/dist/edv/docCipher.d.ts.map +1 -1
- package/dist/edv/docCipher.js +17 -10
- package/dist/edv/docCipher.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/refreshingDocCipher.d.ts +6 -5
- package/dist/edv/refreshingDocCipher.d.ts.map +1 -1
- package/dist/edv/refreshingDocCipher.js +72 -51
- package/dist/edv/refreshingDocCipher.js.map +1 -1
- package/dist/internal/conditional.d.ts +25 -2
- package/dist/internal/conditional.d.ts.map +1 -1
- package/dist/internal/conditional.js +33 -2
- package/dist/internal/conditional.js.map +1 -1
- package/dist/internal/write.d.ts +14 -4
- package/dist/internal/write.d.ts.map +1 -1
- package/dist/internal/write.js +82 -19
- package/dist/internal/write.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 +8 -1
- package/dist/sync/port.d.ts.map +1 -1
- package/dist/sync/port.js +31 -13
- package/dist/sync/port.js.map +1 -1
- package/dist/sync/types.d.ts +41 -16
- package/dist/sync/types.d.ts.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -930,12 +930,18 @@ scope for now):
|
|
|
930
930
|
`add()` to the chunked-stream path: one document plus its chunk resources,
|
|
931
931
|
read back transparently by `get()`. Serving the chunk endpoints is a
|
|
932
932
|
conformance requirement of a server that offers encrypted collections, so
|
|
933
|
-
there is no client-side gate -- one that does not answers `501`.
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
933
|
+
there is no client-side gate -- one that does not answers `501`.
|
|
934
|
+
`put(id, bigBlob)` takes the same route where no document is stored at `id`
|
|
935
|
+
yet, so a large binary can be created at an id of your choosing (pass
|
|
936
|
+
`ifNoneMatch: true` to get a `412` when the id is taken). Two limits apply.
|
|
937
|
+
`put()` over an existing document is refused, since replacing its chunks is
|
|
938
|
+
not automated. And a content-addressed collection (`idDerivation: 'content'`)
|
|
939
|
+
is refused too: a chunked write stores the document twice, so no single
|
|
940
|
+
ciphertext derives its id. A chunked write that fails partway deletes what it
|
|
941
|
+
wrote, and a `507` surfaces as `QuotaExceededError`. One that could not clean
|
|
942
|
+
up leaves a pending stub, which every read refuses; the EDV doc cipher's
|
|
943
|
+
`isPendingStub` recognizes it, and `delete()` removes it with its chunks. Tune
|
|
944
|
+
the threshold and the chunk size with
|
|
939
945
|
`createEdvEncryption({ maxBlobBytes, chunkSize })`.
|
|
940
946
|
- **Raw reads.** `get()` decrypts; the `getText()` / `getBytes()` escape hatches
|
|
941
947
|
do not (they return the stored representation).
|
|
@@ -948,7 +954,12 @@ same codec, doc ciphers, key epochs, recipient operations, blinding keys,
|
|
|
948
954
|
transport module left out of the import graph. `collectionDescriptorStore` stays
|
|
949
955
|
on `./edv`, since it reads through a live `Collection` handle. The example below
|
|
950
956
|
leaves `spaceId` unset. A cipher told which Space its collection lives in loads
|
|
951
|
-
the transport factory for the chunked paths.
|
|
957
|
+
the transport factory for the chunked paths. A cipher with no Space still reads
|
|
958
|
+
a chunked envelope when `decrypt` is given a `chunkSource`, a function that
|
|
959
|
+
serves each chunk (`{ docId, chunkIndex }` to the parsed chunk, or `undefined`)
|
|
960
|
+
from bytes you already hold. A missing chunk throws `NotFoundError`, and
|
|
961
|
+
`blobBytes` (also on this entry) reads the resulting `Blob` on every platform,
|
|
962
|
+
React Native included.
|
|
952
963
|
|
|
953
964
|
```ts
|
|
954
965
|
import { createEdvDocCipher } from '@interop/was-client/edv/core'
|
|
@@ -1089,10 +1100,11 @@ plugs into:
|
|
|
1089
1100
|
encrypting one, built from the collection's key-epoch descriptor (every
|
|
1090
1101
|
encrypted collection carries one from birth; install epoch[0] at provision
|
|
1091
1102
|
time with `ensureFirstEpoch`). Build it with the collection's `spaceId` to let
|
|
1092
|
-
`decrypt` fetch a chunked blob's chunks
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1103
|
+
`decrypt` fetch a chunked blob's chunks, or pass `decrypt` a `chunkSource` to
|
|
1104
|
+
serve them from bytes you hold. On a searchable collection, also hand it the
|
|
1105
|
+
stored Collection `/meta` value (the `meta` input, or `applyMeta` when the
|
|
1106
|
+
replica's copy changes) so pushed documents carry blinded index entries and
|
|
1107
|
+
stay visible to `find()`. `createEdvEncryptOnlyDocCipher(...)` is the
|
|
1096
1108
|
write-only counterpart, built from the descriptor alone with no key-agreement
|
|
1097
1109
|
secret (writes seal to the current epoch's public key, reconstructed from the
|
|
1098
1110
|
epoch id); `decrypt` on it refuses with the typed `EncryptOnlyCipherError`.
|
package/dist/Resource.d.ts
CHANGED
|
@@ -121,6 +121,15 @@ export declare class Resource {
|
|
|
121
121
|
* contradicts fails locally with the same `PreconditionFailedError` the
|
|
122
122
|
* server would return. Returns the new `etag`.
|
|
123
123
|
*
|
|
124
|
+
* On an encrypted collection, a binary payload over the codec's
|
|
125
|
+
* `maxBlobBytes` is stored as a document plus chunk resources, as `add()`
|
|
126
|
+
* stores it, but only where no document is stored at this id yet: it
|
|
127
|
+
* creates the resource, and over an existing document it throws
|
|
128
|
+
* `ValidationError`. A 412 surfaces as for any other create, and a 507 as
|
|
129
|
+
* `QuotaExceededError`. A write that fails partway deletes what it wrote;
|
|
130
|
+
* one that could not leaves a pending stub, which the EDV doc cipher's
|
|
131
|
+
* `isPendingStub` recognizes and `delete()` removes with its chunks.
|
|
132
|
+
*
|
|
124
133
|
* @param data {ResourceData}
|
|
125
134
|
* @param options {object}
|
|
126
135
|
* @param [options.contentType] {string} content-type for binary data
|
package/dist/Resource.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Resource.d.ts","sourceRoot":"","sources":["../src/Resource.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAe1D,OAAO,KAAK,EAAuB,aAAa,EAAE,MAAM,YAAY,CAAA;AACpE,OAAO,KAAK,EACV,kBAAkB,EAClB,KAAK,EACL,IAAI,EACJ,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,YAAY,CAAA;AAkBnB,qBAAa,QAAQ;;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IAwBnB;;;;;;;;;;;;;;OAcG;gBACS,EACV,OAAO,EACP,OAAO,EACP,YAAY,EACZ,UAAU,EACV,UAAU,EACV,KAAK,EACL,UAAU,EACX,EAAE;QACD,OAAO,EAAE,aAAa,CAAA;QACtB,OAAO,EAAE,MAAM,CAAA;QACf,YAAY,EAAE,MAAM,CAAA;QACpB,UAAU,EAAE,MAAM,CAAA;QAClB,UAAU,CAAC,EAAE,KAAK,CAAA;QAClB,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAA;QACpC,UAAU,CAAC,EAAE,kBAAkB,CAAA;KAChC;IA0DD;;;;;;OAMG;IACG,GAAG,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAIxC;;;;;;;;;;;;;;;;;;;OAmBG;IACG,WAAW,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACnE,WAAW,CAAC,OAAO,EAAE;QACzB,EAAE,EAAE,MAAM,CAAA;KACX,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAcnD;;;;;;;;;;;;;OAaG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IASvC;;;;;;;;;;;;;OAaG;IACG,QAAQ,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAW5C
|
|
1
|
+
{"version":3,"file":"Resource.d.ts","sourceRoot":"","sources":["../src/Resource.ts"],"names":[],"mappings":"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"}
|
package/dist/Resource.js
CHANGED
|
@@ -207,6 +207,15 @@ export class Resource {
|
|
|
207
207
|
* contradicts fails locally with the same `PreconditionFailedError` the
|
|
208
208
|
* server would return. Returns the new `etag`.
|
|
209
209
|
*
|
|
210
|
+
* On an encrypted collection, a binary payload over the codec's
|
|
211
|
+
* `maxBlobBytes` is stored as a document plus chunk resources, as `add()`
|
|
212
|
+
* stores it, but only where no document is stored at this id yet: it
|
|
213
|
+
* creates the resource, and over an existing document it throws
|
|
214
|
+
* `ValidationError`. A 412 surfaces as for any other create, and a 507 as
|
|
215
|
+
* `QuotaExceededError`. A write that fails partway deletes what it wrote;
|
|
216
|
+
* one that could not leaves a pending stub, which the EDV doc cipher's
|
|
217
|
+
* `isPendingStub` recognizes and `delete()` removes with its chunks.
|
|
218
|
+
*
|
|
210
219
|
* @param data {ResourceData}
|
|
211
220
|
* @param options {object}
|
|
212
221
|
* @param [options.contentType] {string} content-type for binary data
|
|
@@ -216,7 +225,7 @@ export class Resource {
|
|
|
216
225
|
*/
|
|
217
226
|
async put(data, options = {}) {
|
|
218
227
|
const codec = await this.#codec();
|
|
219
|
-
|
|
228
|
+
return await upsertResource(this.#context, {
|
|
220
229
|
path: this.#path,
|
|
221
230
|
codec,
|
|
222
231
|
id: this.id,
|
|
@@ -228,7 +237,6 @@ export class Resource {
|
|
|
228
237
|
ifNoneMatch: options.ifNoneMatch
|
|
229
238
|
}
|
|
230
239
|
});
|
|
231
|
-
return { etag: readEtag(response) };
|
|
232
240
|
}
|
|
233
241
|
/**
|
|
234
242
|
* Deletes the resource. Idempotent. Pass `ifMatch` to delete only if the
|
package/dist/Resource.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Resource.js","sourceRoot":"","sources":["../src/Resource.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Resource.js","sourceRoot":"","sources":["../src/Resource.ts"],"names":[],"mappings":"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"}
|
package/dist/codec.d.ts
CHANGED
|
@@ -130,8 +130,10 @@ export interface CodecRequestContext {
|
|
|
130
130
|
* `chunked` is the discriminant, and `id` is the resource id the plan will
|
|
131
131
|
* write to (known before `execute` runs, so a caller can report it without
|
|
132
132
|
* waiting). `execute` performs the whole write over the supplied context and
|
|
133
|
-
* resolves what the caller needs to shape its result.
|
|
134
|
-
* (`Collection.add`) drives a plan
|
|
133
|
+
* resolves what the caller needs to shape its result. The insert path
|
|
134
|
+
* (`Collection.add`) drives a plan. The write-by-id path (`Resource.put`)
|
|
135
|
+
* drives one only to create a resource at an id that holds no document, and
|
|
136
|
+
* refuses it over an existing document.
|
|
135
137
|
*/
|
|
136
138
|
export interface ChunkedWrite {
|
|
137
139
|
chunked: true;
|
|
@@ -143,8 +145,8 @@ export interface ChunkedWrite {
|
|
|
143
145
|
resourceContentType?: string;
|
|
144
146
|
/**
|
|
145
147
|
* Scheme-specific guidance the core write path appends to the generic error
|
|
146
|
-
* it throws when it refuses the plan (a write by id
|
|
147
|
-
*
|
|
148
|
+
* it throws when it refuses the plan (a write by id over an existing
|
|
149
|
+
* document, which a plan cannot replace). Only the codec knows why its payload needs several requests and
|
|
148
150
|
* which low-level API drives that write directly, so the wording is supplied
|
|
149
151
|
* here rather than hardcoded in the scheme-agnostic core.
|
|
150
152
|
*/
|
|
@@ -322,8 +324,8 @@ export interface ResourceCodec {
|
|
|
322
324
|
* collection whose codec computes its own preconditions.
|
|
323
325
|
* @returns {Promise<CodecWrite>} the single-request encoding, or -- for a
|
|
324
326
|
* payload the codec cannot store in one request -- a {@link ChunkedWrite}
|
|
325
|
-
* plan
|
|
326
|
-
*
|
|
327
|
+
* plan. `add()` drives a plan; a write by id drives one only where no
|
|
328
|
+
* document is stored yet.
|
|
327
329
|
*/
|
|
328
330
|
encode(input: {
|
|
329
331
|
id?: string;
|
package/dist/codec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,KAAK,EACV,oBAAoB,EACpB,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,sBAAsB,EACtB,2BAA2B,EAC5B,MAAM,YAAY,CAAA;AAEnB;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IACxB,OAAO,EAAE;QAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CAC9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;CACpD;AAED
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"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"}
|
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":"AAmLA;;;;;;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,5 +1,5 @@
|
|
|
1
1
|
import { EdvClientCore } from '@interop/edv-client/core';
|
|
2
|
-
import type { IKeyAgreementKey, IKeyResolver } from '@interop/data-integrity-core';
|
|
2
|
+
import type { IEDVChunk, IKeyAgreementKey, IKeyResolver } from '@interop/data-integrity-core';
|
|
3
3
|
import type { CodecIndexing, CodecRequestContext, CodecWrite, MetaReadSlot, MetaWriteSlot, ResourceCodec, ResponseLike } from '../codec.js';
|
|
4
4
|
import type { WritePrecondition } from '../internal/conditional.js';
|
|
5
5
|
import type { WasTransport } from './WasTransport.js';
|
|
@@ -22,7 +22,8 @@ export declare const DEFAULT_MAX_BLOB_BYTES: number;
|
|
|
22
22
|
* Builds the `WasTransport` a codec's chunked-stream paths drive, over the
|
|
23
23
|
* signed requester core of one request. Injected into {@link EdvCodec} by the
|
|
24
24
|
* build that knows where the Collection lives (a Space on a server); a codec
|
|
25
|
-
* built without one has no server behind it
|
|
25
|
+
* built without one has no server behind it. It refuses the chunked write, and
|
|
26
|
+
* reads a chunked document only from a caller's {@link ChunkSource}.
|
|
26
27
|
*
|
|
27
28
|
* @param options {object}
|
|
28
29
|
* @param options.context {CodecRequestContext} the signed-request context
|
|
@@ -34,6 +35,24 @@ export type CodecTransportFactory = (options: {
|
|
|
34
35
|
context: CodecRequestContext;
|
|
35
36
|
documentHeaders?: Record<string, string>;
|
|
36
37
|
}) => WasTransport;
|
|
38
|
+
/**
|
|
39
|
+
* Serves the chunks of a chunked encrypted document from bytes the caller
|
|
40
|
+
* already holds, in place of a request context: an archive's chunk files, say.
|
|
41
|
+
* The reader asks for each chunk by the document's AEAD-bound resource id and
|
|
42
|
+
* its 0-based index, and the source resolves the parsed chunk or `undefined`
|
|
43
|
+
* when it holds none at that index (the read then fails with
|
|
44
|
+
* `NotFoundError`). Every check the network read applies still applies: the
|
|
45
|
+
* sealed chunk count, the bound id, and each chunk's `was` binding.
|
|
46
|
+
*
|
|
47
|
+
* @param options {object}
|
|
48
|
+
* @param options.docId {string} the document's AEAD-bound resource id
|
|
49
|
+
* @param options.chunkIndex {number} the chunk's 0-based index
|
|
50
|
+
* @returns {Promise<IEDVChunk | undefined>}
|
|
51
|
+
*/
|
|
52
|
+
export type ChunkSource = (options: {
|
|
53
|
+
docId: string;
|
|
54
|
+
chunkIndex: number;
|
|
55
|
+
}) => Promise<IEDVChunk | undefined>;
|
|
37
56
|
/**
|
|
38
57
|
* A {@link ResourceCodec} that encrypts on write and decrypts on read using an
|
|
39
58
|
* `EdvClientCore`'s public `documentCipher`. One instance is bound per encrypted
|
|
@@ -70,7 +89,8 @@ export declare class EdvCodec implements ResourceCodec {
|
|
|
70
89
|
* into each envelope's `was.v` (defaults to {@link EDV_SCHEME_VERSION})
|
|
71
90
|
* @param [options.transportFactory] {CodecTransportFactory} builds the
|
|
72
91
|
* transport the chunked-stream path drives; omitted by a build with no
|
|
73
|
-
* server behind it, which then refuses
|
|
92
|
+
* server behind it, which then refuses the chunked write and reads a
|
|
93
|
+
* chunked document only from a `chunkSource`
|
|
74
94
|
* @param options.collectionId {string} the Collection this codec reads and
|
|
75
95
|
* writes: bound into the Collection metadata envelope's `was.collection`
|
|
76
96
|
* (and checked on read), and it labels decrypt-routing errors
|
|
@@ -117,8 +137,39 @@ export declare class EdvCodec implements ResourceCodec {
|
|
|
117
137
|
}): Promise<CodecWrite>;
|
|
118
138
|
/**
|
|
119
139
|
* @inheritdoc
|
|
140
|
+
*
|
|
141
|
+
* A chunked document's chunks are read either through `context` (from the
|
|
142
|
+
* server) or from `chunkSource` (from bytes the caller holds). Passing both
|
|
143
|
+
* is ambiguous and refused with {@link ValidationError} before anything is
|
|
144
|
+
* decrypted.
|
|
145
|
+
*
|
|
146
|
+
* @param response {ResponseLike} the stored envelope
|
|
147
|
+
* @param [expectedId] {string} the resource id the read targeted
|
|
148
|
+
* @param [context] {CodecRequestContext} the signed-request context a
|
|
149
|
+
* chunked document's chunks are fetched through
|
|
150
|
+
* @param [chunkSource] {ChunkSource} serves a chunked document's chunks in
|
|
151
|
+
* place of `context`
|
|
152
|
+
* @returns {Promise<Json | Blob>}
|
|
153
|
+
*/
|
|
154
|
+
decode(response: ResponseLike, expectedId?: string, context?: CodecRequestContext, chunkSource?: ChunkSource): Promise<Json | Blob>;
|
|
155
|
+
/**
|
|
156
|
+
* Whether a stored envelope is a pending stub: the document a chunked write
|
|
157
|
+
* leaves behind when it stops between its first document write and its final
|
|
158
|
+
* update (the process died, or the cleanup delete failed). Its sealed
|
|
159
|
+
* `meta.encoding` names the chunked encoding, and its sealed stream state is
|
|
160
|
+
* still `{ pending: true }` with no chunk count, so no read can open it.
|
|
161
|
+
*
|
|
162
|
+
* The answer rests only on AEAD-authenticated state: the envelope is opened
|
|
163
|
+
* and its binding verified against `expectedId` exactly as {@link decode}
|
|
164
|
+
* does, and a failure there propagates. A caller that finds a pending stub
|
|
165
|
+
* may delete the resource (which deletes any chunks stored under it) and
|
|
166
|
+
* write it again.
|
|
167
|
+
*
|
|
168
|
+
* @param response {ResponseLike} the stored envelope
|
|
169
|
+
* @param expectedId {string} the resource id the envelope was read under
|
|
170
|
+
* @returns {Promise<boolean>}
|
|
120
171
|
*/
|
|
121
|
-
|
|
172
|
+
isPendingStub(response: ResponseLike, expectedId: string): Promise<boolean>;
|
|
122
173
|
/**
|
|
123
174
|
* @inheritdoc
|
|
124
175
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EdvCodec.d.ts","sourceRoot":"","sources":["../../src/edv/EdvCodec.ts"],"names":[],"mappings":"AAqEA,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"EdvCodec.d.ts","sourceRoot":"","sources":["../../src/edv/EdvCodec.ts"],"names":[],"mappings":"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"}
|