@interop/was-client 0.14.5 → 0.16.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 +17 -26
- package/dist/Collection.d.ts.map +1 -1
- package/dist/Collection.js +60 -59
- package/dist/Collection.js.map +1 -1
- package/dist/Resource.d.ts +27 -3
- package/dist/Resource.d.ts.map +1 -1
- package/dist/Resource.js +60 -22
- package/dist/Resource.js.map +1 -1
- package/dist/Space.d.ts.map +1 -1
- package/dist/Space.js +19 -11
- package/dist/Space.js.map +1 -1
- package/dist/WasClient.d.ts.map +1 -1
- package/dist/WasClient.js +4 -13
- package/dist/WasClient.js.map +1 -1
- package/dist/edv/EdvCodec.d.ts +11 -2
- package/dist/edv/EdvCodec.d.ts.map +1 -1
- package/dist/edv/EdvCodec.js +85 -70
- package/dist/edv/EdvCodec.js.map +1 -1
- package/dist/edv/WasTransport.d.ts +61 -53
- package/dist/edv/WasTransport.d.ts.map +1 -1
- package/dist/edv/WasTransport.js +189 -157
- package/dist/edv/WasTransport.js.map +1 -1
- package/dist/edv/constants.d.ts +0 -14
- package/dist/edv/constants.d.ts.map +1 -1
- package/dist/edv/constants.js +4 -8
- package/dist/edv/constants.js.map +1 -1
- package/dist/edv/epochCrypto.d.ts +1 -1
- package/dist/edv/epochCrypto.d.ts.map +1 -1
- package/dist/edv/epochCrypto.js +33 -4
- package/dist/edv/epochCrypto.js.map +1 -1
- package/dist/edv/epochKeys.js +11 -1
- package/dist/edv/epochKeys.js.map +1 -1
- package/dist/edv/recipients.d.ts +5 -1
- package/dist/edv/recipients.d.ts.map +1 -1
- package/dist/edv/recipients.js +38 -16
- package/dist/edv/recipients.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/internal/codec.d.ts +19 -0
- package/dist/internal/codec.d.ts.map +1 -1
- package/dist/internal/codec.js +26 -8
- package/dist/internal/codec.js.map +1 -1
- package/dist/internal/conditional.d.ts +11 -0
- package/dist/internal/conditional.d.ts.map +1 -1
- package/dist/internal/conditional.js +12 -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 +5 -3
- package/dist/internal/content.js.map +1 -1
- package/dist/internal/describe.d.ts +49 -1
- package/dist/internal/describe.d.ts.map +1 -1
- package/dist/internal/describe.js +47 -6
- package/dist/internal/describe.js.map +1 -1
- package/dist/internal/features.d.ts +73 -0
- package/dist/internal/features.d.ts.map +1 -0
- package/dist/internal/features.js +129 -0
- package/dist/internal/features.js.map +1 -0
- package/dist/internal/grant.d.ts.map +1 -1
- package/dist/internal/grant.js +2 -1
- package/dist/internal/grant.js.map +1 -1
- package/dist/internal/pagination.d.ts +30 -1
- package/dist/internal/pagination.d.ts.map +1 -1
- package/dist/internal/pagination.js +44 -1
- package/dist/internal/pagination.js.map +1 -1
- package/dist/internal/paths.d.ts +25 -0
- package/dist/internal/paths.d.ts.map +1 -1
- package/dist/internal/paths.js +67 -10
- package/dist/internal/paths.js.map +1 -1
- package/dist/internal/policy.d.ts +28 -0
- package/dist/internal/policy.d.ts.map +1 -1
- package/dist/internal/policy.js +31 -0
- package/dist/internal/policy.js.map +1 -1
- package/dist/internal/revoke.d.ts +11 -0
- package/dist/internal/revoke.d.ts.map +1 -1
- package/dist/internal/revoke.js +14 -1
- package/dist/internal/revoke.js.map +1 -1
- package/dist/internal/write.d.ts +10 -1
- package/dist/internal/write.d.ts.map +1 -1
- package/dist/internal/write.js +29 -4
- package/dist/internal/write.js.map +1 -1
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +9 -9
package/dist/Collection.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ClientContext } from './internal/request.js';
|
|
2
2
|
import { Resource } from './Resource.js';
|
|
3
3
|
import type { ChangesCheckpoint, ChangesPage } from '@interop/storage-core';
|
|
4
|
-
import type { AddResult, BackendDescriptor,
|
|
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
6
|
readonly spaceId: string;
|
|
7
7
|
readonly id: string;
|
|
@@ -9,6 +9,12 @@ export declare class Collection {
|
|
|
9
9
|
private readonly _capability?;
|
|
10
10
|
private readonly _encryptionOverride?;
|
|
11
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;
|
|
12
18
|
/**
|
|
13
19
|
* @param options {object}
|
|
14
20
|
* @param options.context {ClientContext} - Shared context (serverUrl, ezcap
|
|
@@ -36,11 +42,8 @@ export declare class Collection {
|
|
|
36
42
|
* `replaceDescription` request bodies and their echoed return descriptions, so
|
|
37
43
|
* the two paths cannot drift and a new writable field is added in one place.
|
|
38
44
|
*
|
|
39
|
-
* @param fields {
|
|
40
|
-
* @
|
|
41
|
-
* @param [fields.backend] {BackendReference}
|
|
42
|
-
* @param [fields.encryption] {CollectionEncryption}
|
|
43
|
-
* @returns {object}
|
|
45
|
+
* @param fields {CollectionWritableFields}
|
|
46
|
+
* @returns {CollectionWritableFields}
|
|
44
47
|
*/
|
|
45
48
|
private _writableFields;
|
|
46
49
|
/**
|
|
@@ -80,21 +83,16 @@ export declare class Collection {
|
|
|
80
83
|
* -- e.g. when creating a new collection through a handle (or use
|
|
81
84
|
* `space.createCollection()`, which does not merge).
|
|
82
85
|
*
|
|
83
|
-
* @param desc {
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
* encryption
|
|
88
|
-
* that lacks one, but changing/clearing an existing marker is rejected
|
|
89
|
-
* (`ConflictError`, `encryption-immutable`).
|
|
86
|
+
* @param desc {CollectionWritableFields} the fields to merge; `encryption`
|
|
87
|
+
* declares the client-side encryption marker, which is set-once on the
|
|
88
|
+
* server (it may be added to a Collection that lacks one, but
|
|
89
|
+
* changing/clearing an existing marker is rejected -- `ConflictError`,
|
|
90
|
+
* `encryption-immutable`)
|
|
90
91
|
* @param [desc.force] {boolean} proceed even when the current description
|
|
91
92
|
* is unreadable and `backend`/`encryption` are omitted (see above)
|
|
92
93
|
* @returns {Promise<CollectionDescription>}
|
|
93
94
|
*/
|
|
94
|
-
configure(desc: {
|
|
95
|
-
name?: string;
|
|
96
|
-
backend?: BackendReference;
|
|
97
|
-
encryption?: CollectionEncryption;
|
|
95
|
+
configure(desc: CollectionWritableFields & {
|
|
98
96
|
force?: boolean;
|
|
99
97
|
}): Promise<CollectionDescription>;
|
|
100
98
|
/**
|
|
@@ -123,20 +121,13 @@ export declare class Collection {
|
|
|
123
121
|
* operations build on (add/remove a reader is a CAS of the `encryption`
|
|
124
122
|
* marker); it is not epoch-specific.
|
|
125
123
|
*
|
|
126
|
-
* @param description {
|
|
127
|
-
* @param [description.name] {string}
|
|
128
|
-
* @param [description.backend] {BackendReference}
|
|
129
|
-
* @param [description.encryption] {CollectionEncryption}
|
|
124
|
+
* @param description {CollectionWritableFields}
|
|
130
125
|
* @param options {object}
|
|
131
126
|
* @param [options.ifMatch] {string} the prior `ETag`; the write applies only
|
|
132
127
|
* if the description is unchanged
|
|
133
128
|
* @returns {Promise<{ description: CollectionDescription; etag?: string }>}
|
|
134
129
|
*/
|
|
135
|
-
replaceDescription(description: {
|
|
136
|
-
name?: string;
|
|
137
|
-
backend?: BackendReference;
|
|
138
|
-
encryption?: CollectionEncryption;
|
|
139
|
-
}, options?: {
|
|
130
|
+
replaceDescription(description: CollectionWritableFields, options?: {
|
|
140
131
|
ifMatch?: string;
|
|
141
132
|
}): Promise<{
|
|
142
133
|
description: CollectionDescription;
|
package/dist/Collection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../src/Collection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../src/Collection.ts"],"names":[],"mappings":"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"}
|
package/dist/Collection.js
CHANGED
|
@@ -8,15 +8,15 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { collectionPath, collectionItems, collectionPolicy, collectionLinkset, collectionBackend, collectionQuota, collectionQuery, resourcePath, toUrl } from './internal/paths.js';
|
|
10
10
|
import { assertNotReserved } from './internal/reserved.js';
|
|
11
|
-
import { ValidationError } from './errors.js';
|
|
12
11
|
import { delegateGrantAt } from './internal/grant.js';
|
|
13
12
|
import { send, readData } from './internal/request.js';
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
13
|
+
import { collectionCodecHolder } from './internal/codec.js';
|
|
14
|
+
import { collectionBackendFeatures } from './internal/features.js';
|
|
15
|
+
import { buildPageWalk, collectWalk, walkItems, walkPagesOrEmpty } from './internal/pagination.js';
|
|
16
|
+
import { describeCollection, describeCollectionResponse, unreadableDescriptionError } from './internal/describe.js';
|
|
17
|
+
import { encodedPrecondition, readEtag, writeHeaders } from './internal/conditional.js';
|
|
18
18
|
import { sendEncodedWrite } from './internal/write.js';
|
|
19
|
-
import { readPolicy, writePolicy, deletePolicy } from './internal/policy.js';
|
|
19
|
+
import { readPolicy, writePolicy, deletePolicy, isPublicPolicy, setPublicPolicy } from './internal/policy.js';
|
|
20
20
|
import { createdId, dataOrNull } from './internal/content.js';
|
|
21
21
|
import { Resource } from './Resource.js';
|
|
22
22
|
export class Collection {
|
|
@@ -26,6 +26,12 @@ export class Collection {
|
|
|
26
26
|
_capability;
|
|
27
27
|
_encryptionOverride;
|
|
28
28
|
_codecHolder;
|
|
29
|
+
/**
|
|
30
|
+
* The shared backend-feature probe for this collection (memoized on a
|
|
31
|
+
* definitive answer), consulted by the conditional-codec write path and
|
|
32
|
+
* shared with child resource handles the way the codec is.
|
|
33
|
+
*/
|
|
34
|
+
_features;
|
|
29
35
|
/**
|
|
30
36
|
* @param options {object}
|
|
31
37
|
* @param options.context {ClientContext} - Shared context (serverUrl, ezcap
|
|
@@ -53,12 +59,17 @@ export class Collection {
|
|
|
53
59
|
this.id = collectionId;
|
|
54
60
|
this._capability = capability;
|
|
55
61
|
this._encryptionOverride = encryption;
|
|
56
|
-
this._codecHolder =
|
|
57
|
-
spaceId
|
|
58
|
-
collectionId
|
|
59
|
-
override:
|
|
60
|
-
capability
|
|
61
|
-
})
|
|
62
|
+
this._codecHolder = collectionCodecHolder(context, {
|
|
63
|
+
spaceId,
|
|
64
|
+
collectionId,
|
|
65
|
+
override: encryption,
|
|
66
|
+
capability
|
|
67
|
+
});
|
|
68
|
+
this._features = collectionBackendFeatures(context, {
|
|
69
|
+
spaceId,
|
|
70
|
+
collectionId,
|
|
71
|
+
capability
|
|
72
|
+
});
|
|
62
73
|
}
|
|
63
74
|
get _path() {
|
|
64
75
|
return collectionPath(this.spaceId, this.id);
|
|
@@ -75,11 +86,8 @@ export class Collection {
|
|
|
75
86
|
* `replaceDescription` request bodies and their echoed return descriptions, so
|
|
76
87
|
* the two paths cannot drift and a new writable field is added in one place.
|
|
77
88
|
*
|
|
78
|
-
* @param fields {
|
|
79
|
-
* @
|
|
80
|
-
* @param [fields.backend] {BackendReference}
|
|
81
|
-
* @param [fields.encryption] {CollectionEncryption}
|
|
82
|
-
* @returns {object}
|
|
89
|
+
* @param fields {CollectionWritableFields}
|
|
90
|
+
* @returns {CollectionWritableFields}
|
|
83
91
|
*/
|
|
84
92
|
_writableFields(fields) {
|
|
85
93
|
return {
|
|
@@ -135,13 +143,11 @@ export class Collection {
|
|
|
135
143
|
* -- e.g. when creating a new collection through a handle (or use
|
|
136
144
|
* `space.createCollection()`, which does not merge).
|
|
137
145
|
*
|
|
138
|
-
* @param desc {
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
* encryption
|
|
143
|
-
* that lacks one, but changing/clearing an existing marker is rejected
|
|
144
|
-
* (`ConflictError`, `encryption-immutable`).
|
|
146
|
+
* @param desc {CollectionWritableFields} the fields to merge; `encryption`
|
|
147
|
+
* declares the client-side encryption marker, which is set-once on the
|
|
148
|
+
* server (it may be added to a Collection that lacks one, but
|
|
149
|
+
* changing/clearing an existing marker is rejected -- `ConflictError`,
|
|
150
|
+
* `encryption-immutable`)
|
|
145
151
|
* @param [desc.force] {boolean} proceed even when the current description
|
|
146
152
|
* is unreadable and `backend`/`encryption` are omitted (see above)
|
|
147
153
|
* @returns {Promise<CollectionDescription>}
|
|
@@ -152,13 +158,14 @@ export class Collection {
|
|
|
152
158
|
desc.backend === undefined &&
|
|
153
159
|
desc.encryption === undefined &&
|
|
154
160
|
!desc.force) {
|
|
155
|
-
throw
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
'Supply `backend`/`encryption` explicitly, use a read-capable ' +
|
|
160
|
-
|
|
161
|
-
|
|
161
|
+
throw unreadableDescriptionError({
|
|
162
|
+
operation: `configure collection "${this.id}"`,
|
|
163
|
+
consequence: "merging forward could silently drop an existing collection's " +
|
|
164
|
+
'backend or encryption marker',
|
|
165
|
+
advice: 'Supply `backend`/`encryption` explicitly, use a read-capable ' +
|
|
166
|
+
'capability, or pass `force: true` if you are creating a new ' +
|
|
167
|
+
'collection.'
|
|
168
|
+
});
|
|
162
169
|
}
|
|
163
170
|
// Merge every current field forward (mirror `Space.configure`): a
|
|
164
171
|
// replace-semantics server drops anything omitted from the PUT body, so
|
|
@@ -200,14 +207,13 @@ export class Collection {
|
|
|
200
207
|
* @returns {Promise<{ description: CollectionDescription; etag?: string } | null>}
|
|
201
208
|
*/
|
|
202
209
|
async describeWithEtag() {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
210
|
+
// The same GET as `describe()` (via the shared request shape), keeping the
|
|
211
|
+
// raw response so the ETag header can be read alongside the body.
|
|
212
|
+
const response = await describeCollectionResponse(this._context, {
|
|
213
|
+
spaceId: this.spaceId,
|
|
214
|
+
collectionId: this.id,
|
|
215
|
+
capability: this._capability
|
|
208
216
|
});
|
|
209
|
-
// `send({ read: true })` returns null on a masked 404; otherwise the body is
|
|
210
|
-
// the description and the response carries the ETag header.
|
|
211
217
|
const description = dataOrNull(response);
|
|
212
218
|
if (response === null || description === null) {
|
|
213
219
|
return null;
|
|
@@ -229,10 +235,7 @@ export class Collection {
|
|
|
229
235
|
* operations build on (add/remove a reader is a CAS of the `encryption`
|
|
230
236
|
* marker); it is not epoch-specific.
|
|
231
237
|
*
|
|
232
|
-
* @param description {
|
|
233
|
-
* @param [description.name] {string}
|
|
234
|
-
* @param [description.backend] {BackendReference}
|
|
235
|
-
* @param [description.encryption] {CollectionEncryption}
|
|
238
|
+
* @param description {CollectionWritableFields}
|
|
236
239
|
* @param options {object}
|
|
237
240
|
* @param [options.ifMatch] {string} the prior `ETag`; the write applies only
|
|
238
241
|
* if the description is unchanged
|
|
@@ -299,6 +302,9 @@ export class Collection {
|
|
|
299
302
|
collectionId: this.id,
|
|
300
303
|
resourceId,
|
|
301
304
|
capability: options.capability ?? this._capability,
|
|
305
|
+
// Share this collection's memoized feature probe so per-resource handles
|
|
306
|
+
// do not each repeat the backend-descriptor round-trip.
|
|
307
|
+
features: () => this._features.get(),
|
|
302
308
|
// A per-resource encryption override resolves its own codec (honoring the
|
|
303
309
|
// override); without one, share this collection's resolved codec so the
|
|
304
310
|
// resource handle does not repeat the marker-discovery round-trip. The two
|
|
@@ -328,10 +334,7 @@ export class Collection {
|
|
|
328
334
|
// A codec may attach a create-if-absent precondition for its minted id (the
|
|
329
335
|
// EDV codec guards a fresh insert with `If-None-Match: *`); plaintext add
|
|
330
336
|
// carries none.
|
|
331
|
-
const precondition =
|
|
332
|
-
ifMatch: encoded.ifMatch,
|
|
333
|
-
ifNoneMatch: encoded.ifNoneMatch
|
|
334
|
-
};
|
|
337
|
+
const precondition = encodedPrecondition(encoded);
|
|
335
338
|
// A codec that mints its own id (e.g. the encrypting codec's EDV id) writes
|
|
336
339
|
// by `PUT`; the identity codec returns no id and lets the server mint one
|
|
337
340
|
// via `POST`.
|
|
@@ -447,8 +450,7 @@ export class Collection {
|
|
|
447
450
|
* @returns {Promise<CollectionResourcesList | null>}
|
|
448
451
|
*/
|
|
449
452
|
async list() {
|
|
450
|
-
|
|
451
|
-
return walk === null ? null : collectPages(walk);
|
|
453
|
+
return collectWalk(await this._listWalk());
|
|
452
454
|
}
|
|
453
455
|
/**
|
|
454
456
|
* Lazily yields the listing one page at a time, following the server's `next`
|
|
@@ -461,11 +463,7 @@ export class Collection {
|
|
|
461
463
|
* @returns {AsyncGenerator<CollectionResourcesList>}
|
|
462
464
|
*/
|
|
463
465
|
async *listPages() {
|
|
464
|
-
|
|
465
|
-
if (walk === null) {
|
|
466
|
-
return;
|
|
467
|
-
}
|
|
468
|
-
yield* walkPages(walk);
|
|
466
|
+
yield* walkPagesOrEmpty(await this._listWalk());
|
|
469
467
|
}
|
|
470
468
|
/**
|
|
471
469
|
* Lazily yields each item across every page, flattening `listPages()`. Yields
|
|
@@ -476,9 +474,7 @@ export class Collection {
|
|
|
476
474
|
* @returns {AsyncGenerator<ResourceSummary>}
|
|
477
475
|
*/
|
|
478
476
|
async *listItems() {
|
|
479
|
-
|
|
480
|
-
yield* page.items;
|
|
481
|
-
}
|
|
477
|
+
yield* walkItems(this.listPages());
|
|
482
478
|
}
|
|
483
479
|
/**
|
|
484
480
|
* Reads one page of the collection's replication change feed (the `changes`
|
|
@@ -567,8 +563,10 @@ export class Collection {
|
|
|
567
563
|
* @returns {Promise<boolean>}
|
|
568
564
|
*/
|
|
569
565
|
async isPublic() {
|
|
570
|
-
|
|
571
|
-
|
|
566
|
+
return isPublicPolicy(this._context, {
|
|
567
|
+
policyPath: this._policyPath,
|
|
568
|
+
capability: this._capability
|
|
569
|
+
});
|
|
572
570
|
}
|
|
573
571
|
/**
|
|
574
572
|
* Makes the collection world-readable: every resource in it becomes readable
|
|
@@ -578,7 +576,10 @@ export class Collection {
|
|
|
578
576
|
* @returns {Promise<void>}
|
|
579
577
|
*/
|
|
580
578
|
async setPublic() {
|
|
581
|
-
|
|
579
|
+
return setPublicPolicy(this._context, {
|
|
580
|
+
policyPath: this._policyPath,
|
|
581
|
+
capability: this._capability
|
|
582
|
+
});
|
|
582
583
|
}
|
|
583
584
|
/**
|
|
584
585
|
* Removes the collection's access-control policy, reverting it to
|
package/dist/Collection.js.map
CHANGED
|
@@ -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":"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"}
|
package/dist/Resource.d.ts
CHANGED
|
@@ -25,6 +25,13 @@ export declare class Resource {
|
|
|
25
25
|
* reset (e.g. after `configure()` adds the encryption marker) propagate here.
|
|
26
26
|
*/
|
|
27
27
|
private readonly _codec;
|
|
28
|
+
/**
|
|
29
|
+
* Resolves the backend's advertised feature tokens: the parent collection's
|
|
30
|
+
* shared probe when this handle came from `collection.resource(id)`,
|
|
31
|
+
* otherwise one built (and memoized) for this handle. Consulted by the
|
|
32
|
+
* conditional-codec write path (see `upsertResource`).
|
|
33
|
+
*/
|
|
34
|
+
private readonly _features;
|
|
28
35
|
/**
|
|
29
36
|
* @param options {object}
|
|
30
37
|
* @param options.context {ClientContext}
|
|
@@ -36,17 +43,20 @@ export declare class Resource {
|
|
|
36
43
|
* codec, so a resource handle obtained via `collection.resource(id)` does
|
|
37
44
|
* not repeat the backend() round-trip. A standalone resource resolves its
|
|
38
45
|
* own.
|
|
46
|
+
* @param [options.features] {function} resolver sharing the parent
|
|
47
|
+
* collection's backend-feature probe. A standalone resource probes its own.
|
|
39
48
|
* @param [options.encryption] {EncryptionOverride} per-handle encryption
|
|
40
49
|
* override for a standalone resource (ignored when `codec` is supplied --
|
|
41
50
|
* the shared parent codec wins)
|
|
42
51
|
*/
|
|
43
|
-
constructor({ context, spaceId, collectionId, resourceId, capability, codec, encryption }: {
|
|
52
|
+
constructor({ context, spaceId, collectionId, resourceId, capability, codec, features, encryption }: {
|
|
44
53
|
context: ClientContext;
|
|
45
54
|
spaceId: string;
|
|
46
55
|
collectionId: string;
|
|
47
56
|
resourceId: string;
|
|
48
57
|
capability?: IZcap;
|
|
49
58
|
codec?: () => Promise<ResourceCodec>;
|
|
59
|
+
features?: () => Promise<string[]>;
|
|
50
60
|
encryption?: EncryptionOverride;
|
|
51
61
|
});
|
|
52
62
|
private get _path();
|
|
@@ -114,8 +124,9 @@ export declare class Resource {
|
|
|
114
124
|
* automatically by the codec (the EDV `sequence` becomes the enforced ETag), so
|
|
115
125
|
* the explicit options are for plaintext collections -- and because the codec
|
|
116
126
|
* pre-reads the current document to compute them, updating an existing
|
|
117
|
-
* encrypted document needs read access (a PUT-only capability can only
|
|
118
|
-
*
|
|
127
|
+
* encrypted document needs read access (a PUT-only capability can only
|
|
128
|
+
* create, and only against a backend advertising `conditional-writes`; see
|
|
129
|
+
* `upsertResource`). Returns the new `etag`.
|
|
119
130
|
*
|
|
120
131
|
* @param data {ResourceData}
|
|
121
132
|
* @param options {object}
|
|
@@ -198,6 +209,19 @@ export declare class Resource {
|
|
|
198
209
|
}): Promise<{
|
|
199
210
|
etag?: string;
|
|
200
211
|
}>;
|
|
212
|
+
/**
|
|
213
|
+
* The shared read-then-CAS body of {@link setName} / {@link setTags}: reads
|
|
214
|
+
* the current metadata, merges `patch` over its `custom`, and writes it back
|
|
215
|
+
* pinned to the read's `etag` (when the backend supports
|
|
216
|
+
* `conditional-writes`), so a concurrent metadata write surfaces as
|
|
217
|
+
* `PreconditionFailedError` instead of being silently erased by the
|
|
218
|
+
* full-replacement write.
|
|
219
|
+
*
|
|
220
|
+
* @param patch {ResourceMetadataCustom} the properties to merge over the
|
|
221
|
+
* current `custom`
|
|
222
|
+
* @returns {Promise<void>}
|
|
223
|
+
*/
|
|
224
|
+
private _patchCustom;
|
|
201
225
|
/**
|
|
202
226
|
* Sets the resource's human-readable `name` (the value surfaced in collection
|
|
203
227
|
* listings), preserving any existing `tags`. Convenience over `setMeta()`.
|
package/dist/Resource.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Resource.d.ts","sourceRoot":"","sources":["../src/Resource.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"Resource.d.ts","sourceRoot":"","sources":["../src/Resource.ts"],"names":[],"mappings":"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"}
|
package/dist/Resource.js
CHANGED
|
@@ -2,15 +2,12 @@ import { resourcePath, resourcePolicy, resourceMeta } from './internal/paths.js'
|
|
|
2
2
|
import { assertNotReserved } from './internal/reserved.js';
|
|
3
3
|
import { WasServerError } from './errors.js';
|
|
4
4
|
import { send } from './internal/request.js';
|
|
5
|
-
import {
|
|
5
|
+
import { collectionCodecHolder } from './internal/codec.js';
|
|
6
|
+
import { collectionBackendFeatures } from './internal/features.js';
|
|
6
7
|
import { writeHeaders, readEtag } from './internal/conditional.js';
|
|
8
|
+
import { ENCODER } from './internal/content.js';
|
|
7
9
|
import { upsertResource } from './internal/write.js';
|
|
8
|
-
import { readPolicy, writePolicy, deletePolicy } from './internal/policy.js';
|
|
9
|
-
/**
|
|
10
|
-
* A shared `TextEncoder` for re-serializing a pre-parsed JSON body to bytes in
|
|
11
|
-
* `getBytes()` (stateless, so one instance is reused).
|
|
12
|
-
*/
|
|
13
|
-
const ENCODER = new TextEncoder();
|
|
10
|
+
import { readPolicy, writePolicy, deletePolicy, isPublicPolicy, setPublicPolicy } from './internal/policy.js';
|
|
14
11
|
/**
|
|
15
12
|
* Re-serializes a read response's pre-parsed JSON body to a string, or returns
|
|
16
13
|
* `undefined` when the body was not pre-parsed (a non-JSON content-type, whose
|
|
@@ -50,6 +47,13 @@ export class Resource {
|
|
|
50
47
|
* reset (e.g. after `configure()` adds the encryption marker) propagate here.
|
|
51
48
|
*/
|
|
52
49
|
_codec;
|
|
50
|
+
/**
|
|
51
|
+
* Resolves the backend's advertised feature tokens: the parent collection's
|
|
52
|
+
* shared probe when this handle came from `collection.resource(id)`,
|
|
53
|
+
* otherwise one built (and memoized) for this handle. Consulted by the
|
|
54
|
+
* conditional-codec write path (see `upsertResource`).
|
|
55
|
+
*/
|
|
56
|
+
_features;
|
|
53
57
|
/**
|
|
54
58
|
* @param options {object}
|
|
55
59
|
* @param options.context {ClientContext}
|
|
@@ -61,11 +65,13 @@ export class Resource {
|
|
|
61
65
|
* codec, so a resource handle obtained via `collection.resource(id)` does
|
|
62
66
|
* not repeat the backend() round-trip. A standalone resource resolves its
|
|
63
67
|
* own.
|
|
68
|
+
* @param [options.features] {function} resolver sharing the parent
|
|
69
|
+
* collection's backend-feature probe. A standalone resource probes its own.
|
|
64
70
|
* @param [options.encryption] {EncryptionOverride} per-handle encryption
|
|
65
71
|
* override for a standalone resource (ignored when `codec` is supplied --
|
|
66
72
|
* the shared parent codec wins)
|
|
67
73
|
*/
|
|
68
|
-
constructor({ context, spaceId, collectionId, resourceId, capability, codec, encryption }) {
|
|
74
|
+
constructor({ context, spaceId, collectionId, resourceId, capability, codec, features, encryption }) {
|
|
69
75
|
// Guard the id against the Reserved Path Segment Registry up front, so a
|
|
70
76
|
// reserved id from caller input can never be mis-targeted at a
|
|
71
77
|
// collection-level endpoint. `resourcePath(s, c, 'policy')` is byte-identical
|
|
@@ -84,14 +90,25 @@ export class Resource {
|
|
|
84
90
|
this._codec = codec;
|
|
85
91
|
}
|
|
86
92
|
else {
|
|
87
|
-
const holder =
|
|
88
|
-
spaceId
|
|
89
|
-
collectionId
|
|
93
|
+
const holder = collectionCodecHolder(context, {
|
|
94
|
+
spaceId,
|
|
95
|
+
collectionId,
|
|
90
96
|
override: encryption,
|
|
91
|
-
capability
|
|
92
|
-
})
|
|
97
|
+
capability
|
|
98
|
+
});
|
|
93
99
|
this._codec = () => holder.get();
|
|
94
100
|
}
|
|
101
|
+
if (features) {
|
|
102
|
+
this._features = features;
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
const probe = collectionBackendFeatures(context, {
|
|
106
|
+
spaceId,
|
|
107
|
+
collectionId,
|
|
108
|
+
capability
|
|
109
|
+
});
|
|
110
|
+
this._features = () => probe.get();
|
|
111
|
+
}
|
|
95
112
|
}
|
|
96
113
|
get _path() {
|
|
97
114
|
return resourcePath(this.spaceId, this.collectionId, this.id);
|
|
@@ -187,8 +204,9 @@ export class Resource {
|
|
|
187
204
|
* automatically by the codec (the EDV `sequence` becomes the enforced ETag), so
|
|
188
205
|
* the explicit options are for plaintext collections -- and because the codec
|
|
189
206
|
* pre-reads the current document to compute them, updating an existing
|
|
190
|
-
* encrypted document needs read access (a PUT-only capability can only
|
|
191
|
-
*
|
|
207
|
+
* encrypted document needs read access (a PUT-only capability can only
|
|
208
|
+
* create, and only against a backend advertising `conditional-writes`; see
|
|
209
|
+
* `upsertResource`). Returns the new `etag`.
|
|
192
210
|
*
|
|
193
211
|
* @param data {ResourceData}
|
|
194
212
|
* @param options {object}
|
|
@@ -204,6 +222,7 @@ export class Resource {
|
|
|
204
222
|
codec,
|
|
205
223
|
id: this.id,
|
|
206
224
|
data,
|
|
225
|
+
features: this._features,
|
|
207
226
|
contentType: options.contentType,
|
|
208
227
|
capability: this._capability,
|
|
209
228
|
precondition: {
|
|
@@ -327,6 +346,22 @@ export class Resource {
|
|
|
327
346
|
});
|
|
328
347
|
return { etag: readEtag(response) };
|
|
329
348
|
}
|
|
349
|
+
/**
|
|
350
|
+
* The shared read-then-CAS body of {@link setName} / {@link setTags}: reads
|
|
351
|
+
* the current metadata, merges `patch` over its `custom`, and writes it back
|
|
352
|
+
* pinned to the read's `etag` (when the backend supports
|
|
353
|
+
* `conditional-writes`), so a concurrent metadata write surfaces as
|
|
354
|
+
* `PreconditionFailedError` instead of being silently erased by the
|
|
355
|
+
* full-replacement write.
|
|
356
|
+
*
|
|
357
|
+
* @param patch {ResourceMetadataCustom} the properties to merge over the
|
|
358
|
+
* current `custom`
|
|
359
|
+
* @returns {Promise<void>}
|
|
360
|
+
*/
|
|
361
|
+
async _patchCustom(patch) {
|
|
362
|
+
const current = await this.meta();
|
|
363
|
+
await this.setMeta({ custom: { ...current?.custom, ...patch } }, { ifMatch: current?.etag });
|
|
364
|
+
}
|
|
330
365
|
/**
|
|
331
366
|
* Sets the resource's human-readable `name` (the value surfaced in collection
|
|
332
367
|
* listings), preserving any existing `tags`. Convenience over `setMeta()`.
|
|
@@ -339,8 +374,7 @@ export class Resource {
|
|
|
339
374
|
* @returns {Promise<void>}
|
|
340
375
|
*/
|
|
341
376
|
async setName(name) {
|
|
342
|
-
|
|
343
|
-
await this.setMeta({ custom: { ...current?.custom, name } }, { ifMatch: current?.etag });
|
|
377
|
+
return this._patchCustom({ name });
|
|
344
378
|
}
|
|
345
379
|
/**
|
|
346
380
|
* Sets the resource's `tags`, preserving any existing `name`. Convenience over
|
|
@@ -350,8 +384,7 @@ export class Resource {
|
|
|
350
384
|
* @returns {Promise<void>}
|
|
351
385
|
*/
|
|
352
386
|
async setTags(tags) {
|
|
353
|
-
|
|
354
|
-
await this.setMeta({ custom: { ...current?.custom, tags } }, { ifMatch: current?.etag });
|
|
387
|
+
return this._patchCustom({ tags });
|
|
355
388
|
}
|
|
356
389
|
get _policyPath() {
|
|
357
390
|
return resourcePolicy(this.spaceId, this.collectionId, this.id);
|
|
@@ -389,7 +422,10 @@ export class Resource {
|
|
|
389
422
|
* @returns {Promise<void>}
|
|
390
423
|
*/
|
|
391
424
|
async setPublic() {
|
|
392
|
-
|
|
425
|
+
return setPublicPolicy(this._context, {
|
|
426
|
+
policyPath: this._policyPath,
|
|
427
|
+
capability: this._capability
|
|
428
|
+
});
|
|
393
429
|
}
|
|
394
430
|
/**
|
|
395
431
|
* Returns `true` when this resource policy is `PublicCanRead`.
|
|
@@ -397,8 +433,10 @@ export class Resource {
|
|
|
397
433
|
* @returns {Promise<boolean>}
|
|
398
434
|
*/
|
|
399
435
|
async isPublic() {
|
|
400
|
-
|
|
401
|
-
|
|
436
|
+
return isPublicPolicy(this._context, {
|
|
437
|
+
policyPath: this._policyPath,
|
|
438
|
+
capability: this._capability
|
|
439
|
+
});
|
|
402
440
|
}
|
|
403
441
|
/**
|
|
404
442
|
* Removes the resource's access-control policy, reverting it to
|