@interop/was-client 0.60.0 → 0.62.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/README.md +124 -48
  2. package/dist/Collection.d.ts +135 -94
  3. package/dist/Collection.d.ts.map +1 -1
  4. package/dist/Collection.js +612 -194
  5. package/dist/Collection.js.map +1 -1
  6. package/dist/Resource.d.ts +1 -1
  7. package/dist/Resource.d.ts.map +1 -1
  8. package/dist/Resource.js +0 -3
  9. package/dist/Resource.js.map +1 -1
  10. package/dist/Space.d.ts +17 -16
  11. package/dist/Space.d.ts.map +1 -1
  12. package/dist/Space.js +41 -24
  13. package/dist/Space.js.map +1 -1
  14. package/dist/WasClient.d.ts +51 -6
  15. package/dist/WasClient.d.ts.map +1 -1
  16. package/dist/WasClient.js +84 -14
  17. package/dist/WasClient.js.map +1 -1
  18. package/dist/codec.d.ts +3 -3
  19. package/dist/edv/EdvCodec.js +1 -1
  20. package/dist/edv/descriptorStore.d.ts +16 -14
  21. package/dist/edv/descriptorStore.d.ts.map +1 -1
  22. package/dist/edv/descriptorStore.js +17 -14
  23. package/dist/edv/descriptorStore.js.map +1 -1
  24. package/dist/edv/index.d.ts +1 -1
  25. package/dist/edv/index.js +1 -1
  26. package/dist/edv/logGovernedDescriptorStore.d.ts +2 -2
  27. package/dist/edv/logGovernedDescriptorStore.d.ts.map +1 -1
  28. package/dist/edv/logGovernedDescriptorStore.js +10 -9
  29. package/dist/edv/logGovernedDescriptorStore.js.map +1 -1
  30. package/dist/edv/recipients.d.ts +1 -1
  31. package/dist/edv/recipients.js +2 -2
  32. package/dist/edv/recipients.js.map +1 -1
  33. package/dist/edv/refresh.d.ts +1 -1
  34. package/dist/edv/refresh.js +1 -1
  35. package/dist/errors.d.ts +14 -1
  36. package/dist/errors.d.ts.map +1 -1
  37. package/dist/errors.js +16 -3
  38. package/dist/errors.js.map +1 -1
  39. package/dist/index.d.ts +2 -2
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +1 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/internal/codec.d.ts +22 -1
  44. package/dist/internal/codec.d.ts.map +1 -1
  45. package/dist/internal/codec.js +117 -46
  46. package/dist/internal/codec.js.map +1 -1
  47. package/dist/internal/describe.d.ts +98 -24
  48. package/dist/internal/describe.d.ts.map +1 -1
  49. package/dist/internal/describe.js +125 -18
  50. package/dist/internal/describe.js.map +1 -1
  51. package/dist/internal/meta.d.ts +32 -17
  52. package/dist/internal/meta.d.ts.map +1 -1
  53. package/dist/internal/meta.js +64 -35
  54. package/dist/internal/meta.js.map +1 -1
  55. package/dist/internal/paths.d.ts +33 -21
  56. package/dist/internal/paths.d.ts.map +1 -1
  57. package/dist/internal/paths.js +93 -46
  58. package/dist/internal/paths.js.map +1 -1
  59. package/dist/internal/request.d.ts +22 -6
  60. package/dist/internal/request.d.ts.map +1 -1
  61. package/dist/internal/request.js +31 -13
  62. package/dist/internal/request.js.map +1 -1
  63. package/dist/internal/reserved.d.ts +14 -0
  64. package/dist/internal/reserved.d.ts.map +1 -1
  65. package/dist/internal/reserved.js +23 -4
  66. package/dist/internal/reserved.js.map +1 -1
  67. package/dist/internal/service.d.ts +61 -0
  68. package/dist/internal/service.d.ts.map +1 -0
  69. package/dist/internal/service.js +259 -0
  70. package/dist/internal/service.js.map +1 -0
  71. package/dist/paths.d.ts +8 -5
  72. package/dist/paths.d.ts.map +1 -1
  73. package/dist/paths.js +8 -5
  74. package/dist/paths.js.map +1 -1
  75. package/dist/sync/provisioning.d.ts +5 -5
  76. package/dist/sync/provisioning.d.ts.map +1 -1
  77. package/dist/sync/provisioning.js +2 -2
  78. package/dist/sync/provisioning.js.map +1 -1
  79. package/dist/types.d.ts +43 -10
  80. package/dist/types.d.ts.map +1 -1
  81. package/package.json +2 -2
@@ -0,0 +1,259 @@
1
+ import { IncompatibleServerError, mapError } from '../errors.js';
2
+ import { fetchMapped } from './request.js';
3
+ /**
4
+ * The WAS specification's identifier, the `specs` key its version entries sit
5
+ * under. Provisional until the spec's rename registers it.
6
+ */
7
+ export const PWS_SPEC_ID = 'https://w3id.org/pws';
8
+ /**
9
+ * The WAS specification versions this client speaks, newest first. Selection
10
+ * takes the first one the server lists.
11
+ */
12
+ export const SUPPORTED_PWS_VERSIONS = ['0.5'];
13
+ /**
14
+ * The link relation that names the service description.
15
+ */
16
+ const SERVICE_RELATION = 'service';
17
+ /**
18
+ * Splits a `Link` header value into its link-values: on commas outside a
19
+ * `<...>` target and outside a quoted parameter value.
20
+ *
21
+ * @param header {string}
22
+ * @returns {string[]}
23
+ */
24
+ function splitLinkValues(header) {
25
+ const values = [];
26
+ let current = '';
27
+ let inTarget = false;
28
+ let inQuotes = false;
29
+ for (let index = 0; index < header.length; index++) {
30
+ const char = header[index];
31
+ if (inQuotes) {
32
+ current += char;
33
+ if (char === '\\' && index + 1 < header.length) {
34
+ current += header[++index];
35
+ }
36
+ else if (char === '"') {
37
+ inQuotes = false;
38
+ }
39
+ continue;
40
+ }
41
+ if (char === '<') {
42
+ inTarget = true;
43
+ }
44
+ else if (char === '>') {
45
+ inTarget = false;
46
+ }
47
+ else if (char === '"' && !inTarget) {
48
+ inQuotes = true;
49
+ }
50
+ else if (char === ',' && !inTarget) {
51
+ values.push(current);
52
+ current = '';
53
+ continue;
54
+ }
55
+ current += char;
56
+ }
57
+ values.push(current);
58
+ return values;
59
+ }
60
+ /**
61
+ * Reads the target of the first `service` link in a `Link` header (RFC 8288),
62
+ * resolved against the URL of the response that carried it. Relation types
63
+ * compare case-insensitively, a `rel` may list several space-separated types,
64
+ * and only the first `rel` parameter of a link-value counts.
65
+ *
66
+ * @param options {object}
67
+ * @param options.header {string | null} the `Link` header value
68
+ * @param options.baseUrl {string} the URL the response came from
69
+ * @returns {string | undefined} the absolute service description URL
70
+ */
71
+ export function serviceLinkTarget({ header, baseUrl }) {
72
+ if (header === null) {
73
+ return undefined;
74
+ }
75
+ for (const linkValue of splitLinkValues(header)) {
76
+ const match = /^\s*<([^>]*)>(.*)$/s.exec(linkValue);
77
+ if (match === null) {
78
+ continue;
79
+ }
80
+ const [, target, rest] = match;
81
+ const relParam = rest
82
+ .split(';')
83
+ .map(param => /^\s*rel\s*=\s*(?:"((?:[^"\\]|\\.)*)"|([^\s;]*))/i.exec(param))
84
+ .find(paramMatch => paramMatch !== null);
85
+ const relValue = relParam?.[1] ?? relParam?.[2] ?? '';
86
+ const relations = relValue.toLowerCase().split(/\s+/);
87
+ if (relations.includes(SERVICE_RELATION)) {
88
+ try {
89
+ return new URL(target, baseUrl).toString();
90
+ }
91
+ catch {
92
+ continue;
93
+ }
94
+ }
95
+ }
96
+ return undefined;
97
+ }
98
+ /**
99
+ * Whether a value is a JSON object (not `null`, not an array).
100
+ *
101
+ * @param value {unknown}
102
+ * @returns {boolean}
103
+ */
104
+ function isObject(value) {
105
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
106
+ }
107
+ /**
108
+ * Whether a value parses as an absolute URL.
109
+ *
110
+ * @param value {string}
111
+ * @returns {boolean}
112
+ */
113
+ function isAbsoluteUrl(value) {
114
+ try {
115
+ new URL(value);
116
+ return true;
117
+ }
118
+ catch {
119
+ return false;
120
+ }
121
+ }
122
+ /**
123
+ * Applies the spec's version-selection rules to a service description: a
124
+ * `specs` key other than the WAS identifier is ignored, a version entry
125
+ * without a string `version` is ignored, and the newest version this client
126
+ * speaks is chosen. The members the client acts on are checked before they are
127
+ * used: `spaces` must be an absolute URL and `features` an array of strings.
128
+ *
129
+ * @param description {unknown} the parsed service description
130
+ * @returns {ServiceInfo}
131
+ * @throws {IncompatibleServerError} when the document lacks `url` or `specs`,
132
+ * when no entry names a version this client speaks, or when the chosen
133
+ * entry's `spaces` or `features` is malformed
134
+ */
135
+ export function selectServiceVersion(description) {
136
+ if (!isObject(description) ||
137
+ typeof description.url !== 'string' ||
138
+ !isObject(description.specs)) {
139
+ throw new IncompatibleServerError('The service description is not a JSON object with `url` and `specs`.');
140
+ }
141
+ const candidates = description.specs[PWS_SPEC_ID];
142
+ const entries = (Array.isArray(candidates) ? candidates : []).filter((entry) => isObject(entry) && typeof entry.version === 'string');
143
+ let chosen;
144
+ for (const version of SUPPORTED_PWS_VERSIONS) {
145
+ chosen = entries.find(entry => entry.version === version);
146
+ if (chosen !== undefined) {
147
+ break;
148
+ }
149
+ }
150
+ if (chosen === undefined) {
151
+ const offered = entries.map(entry => entry.version);
152
+ throw new IncompatibleServerError(`The server at "${description.url}" lists no version of ` +
153
+ `${PWS_SPEC_ID} this client speaks (offered: ` +
154
+ `${offered.length === 0 ? 'none' : offered.join(', ')}; supported: ` +
155
+ `${SUPPORTED_PWS_VERSIONS.join(', ')}).`);
156
+ }
157
+ const { spaces, features } = chosen;
158
+ if (spaces !== undefined &&
159
+ (typeof spaces !== 'string' || !isAbsoluteUrl(spaces))) {
160
+ throw new IncompatibleServerError(`The ${PWS_SPEC_ID} ${chosen.version} entry's \`spaces\` is not an ` +
161
+ 'absolute URL.');
162
+ }
163
+ if (features !== undefined &&
164
+ (!Array.isArray(features) ||
165
+ !features.every(token => typeof token === 'string'))) {
166
+ throw new IncompatibleServerError(`The ${PWS_SPEC_ID} ${chosen.version} entry's \`features\` is not an ` +
167
+ 'array of strings.');
168
+ }
169
+ const tokens = [...(features ?? [])];
170
+ return {
171
+ description: description,
172
+ version: chosen.version,
173
+ entry: chosen,
174
+ ...(spaces !== undefined && { spacesUrl: spaces }),
175
+ features: tokens,
176
+ hasFeature(token) {
177
+ return tokens.includes(token);
178
+ }
179
+ };
180
+ }
181
+ /**
182
+ * The statuses that signal a transient failure (rate limiting, or a gateway
183
+ * or server that is temporarily unavailable) rather than an answer about the
184
+ * server's protocol. A lasting refusal such as 501, 505, or 507 is not in
185
+ * this set.
186
+ */
187
+ const TRANSIENT_STATUSES = new Set([429, 502, 503, 504]);
188
+ /**
189
+ * Rejects a discovery step that answered `status` without what discovery
190
+ * needs: with the mapped transport error when the status is transient, since
191
+ * it says nothing about the protocol the server speaks, and with an
192
+ * `IncompatibleServerError` carrying `message` otherwise.
193
+ *
194
+ * @param options {object}
195
+ * @param options.status {number}
196
+ * @param options.requestUrl {string}
197
+ * @param options.message {string}
198
+ * @returns {never}
199
+ */
200
+ function refuse({ status, requestUrl, message }) {
201
+ if (TRANSIENT_STATUSES.has(status)) {
202
+ throw mapError({ status, requestUrl });
203
+ }
204
+ throw new IncompatibleServerError(message, { requestUrl });
205
+ }
206
+ /**
207
+ * Discovers the service description from a URL the client holds and selects
208
+ * the version to speak: an unsigned `HEAD` of `url` for its `service` link
209
+ * (the response status does not matter), then an unsigned `GET` of the linked
210
+ * document.
211
+ *
212
+ * A network failure, and a rate limit or temporary outage (429, 502, 503,
213
+ * 504) that comes without the link, reject with the mapped transport error,
214
+ * since they say nothing about the protocol the server speaks.
215
+ *
216
+ * @param options {object}
217
+ * @param options.url {string} any WAS URL, typically the client's `serverUrl`
218
+ * @returns {Promise<ServiceInfo>}
219
+ * @throws {IncompatibleServerError} when the response carries no `service`
220
+ * link, the linked document cannot be read or parsed, or version selection
221
+ * refuses it (see {@link selectServiceVersion})
222
+ */
223
+ export async function discoverService({ url }) {
224
+ const probe = await fetchMapped(url, { method: 'HEAD' });
225
+ const serviceUrl = serviceLinkTarget({
226
+ header: probe.headers.get('link'),
227
+ baseUrl: probe.url || url
228
+ });
229
+ if (serviceUrl === undefined) {
230
+ refuse({
231
+ status: probe.status,
232
+ requestUrl: url,
233
+ message: `The response from "${url}" (${probe.status}) carries no ` +
234
+ 'rel="service" link, so the server predates WAS v0.5, which this ' +
235
+ 'client requires.'
236
+ });
237
+ }
238
+ const response = await fetchMapped(serviceUrl, {
239
+ method: 'GET',
240
+ headers: { accept: 'application/json' }
241
+ });
242
+ if (!response.ok) {
243
+ refuse({
244
+ status: response.status,
245
+ requestUrl: serviceUrl,
246
+ message: `The service description at "${serviceUrl}" answered ` +
247
+ `${response.status}.`
248
+ });
249
+ }
250
+ let description;
251
+ try {
252
+ description = await response.json();
253
+ }
254
+ catch (err) {
255
+ throw new IncompatibleServerError(`The service description at "${serviceUrl}" is not valid JSON.`, { requestUrl: serviceUrl, cause: err });
256
+ }
257
+ return selectServiceVersion(description);
258
+ }
259
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/internal/service.ts"],"names":[],"mappings":"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"}
package/dist/paths.d.ts CHANGED
@@ -6,12 +6,15 @@
6
6
  * standalone functions, for a consumer that has to form a WAS path or a zcap
7
7
  * `invocationTarget` without going through a navigational handle.
8
8
  *
9
- * The path builders own the trailing-slash canonicalization (item-create and
10
- * listing endpoints carry a trailing slash; get/put/delete-by-id endpoints do
11
- * not) and the per-segment percent-encoding, and the zcap `invocationTarget` is
9
+ * The path builders own the trailing-slash canonicalization (a trailing slash
10
+ * marks a container in canonical form -- `/space/{s}/`, `/space/{s}/{c}/` --
11
+ * everything else has none, and no two paths differ only by a trailing slash)
12
+ * and the per-segment percent-encoding, and the zcap `invocationTarget` is
12
13
  * derived from the request URL -- so a caller that hand-assembles a path is
13
14
  * re-deriving rules that must match the server's `allowedTarget` byte for byte.
14
- * Exporting the builders instead is what keeps that from happening.
15
+ * Exporting the builders instead is what keeps that from happening. A
16
+ * container's description lives at its `meta` segment (`spaceMeta`,
17
+ * `collectionMeta`) instead of at the container URL.
15
18
  *
16
19
  * `parseSpacePath` / `parseSpaceTarget` are the inverse grammar (a pathname or
17
20
  * an absolute URL back to the containment depth it addresses), and
@@ -24,7 +27,7 @@
24
27
  * Kept off the core entry so a consumer opts in; every export here is a pure
25
28
  * function with no I/O and no client state.
26
29
  */
27
- export { spacePath, spaceItems, collectionPath, collectionItems, collectionMeta, collectionLog, collectionQuery, resourcePath, resourceMeta, toUrl, parseSpacePath, parseSpaceTarget } from './internal/paths.js';
30
+ export { spacePath, spaceMeta, collectionPath, collectionMeta, collectionLog, collectionQuery, resourcePath, resourceMeta, toUrl, parseSpacePath, parseSpaceTarget } from './internal/paths.js';
28
31
  export type { ParsedSpacePath } from './internal/paths.js';
29
32
  export { rootCapabilityId, rootCapability } from './internal/revoke.js';
30
33
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EACL,SAAS,EACT,UAAU,EACV,cAAc,EACd,eAAe,EACf,cAAc,EACd,aAAa,EACb,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,cAAc,EACd,gBAAgB,EACjB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE1D,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EACL,SAAS,EACT,SAAS,EACT,cAAc,EACd,cAAc,EACd,aAAa,EACb,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,cAAc,EACd,gBAAgB,EACjB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE1D,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA"}
package/dist/paths.js CHANGED
@@ -6,12 +6,15 @@
6
6
  * standalone functions, for a consumer that has to form a WAS path or a zcap
7
7
  * `invocationTarget` without going through a navigational handle.
8
8
  *
9
- * The path builders own the trailing-slash canonicalization (item-create and
10
- * listing endpoints carry a trailing slash; get/put/delete-by-id endpoints do
11
- * not) and the per-segment percent-encoding, and the zcap `invocationTarget` is
9
+ * The path builders own the trailing-slash canonicalization (a trailing slash
10
+ * marks a container in canonical form -- `/space/{s}/`, `/space/{s}/{c}/` --
11
+ * everything else has none, and no two paths differ only by a trailing slash)
12
+ * and the per-segment percent-encoding, and the zcap `invocationTarget` is
12
13
  * derived from the request URL -- so a caller that hand-assembles a path is
13
14
  * re-deriving rules that must match the server's `allowedTarget` byte for byte.
14
- * Exporting the builders instead is what keeps that from happening.
15
+ * Exporting the builders instead is what keeps that from happening. A
16
+ * container's description lives at its `meta` segment (`spaceMeta`,
17
+ * `collectionMeta`) instead of at the container URL.
15
18
  *
16
19
  * `parseSpacePath` / `parseSpaceTarget` are the inverse grammar (a pathname or
17
20
  * an absolute URL back to the containment depth it addresses), and
@@ -24,6 +27,6 @@
24
27
  * Kept off the core entry so a consumer opts in; every export here is a pure
25
28
  * function with no I/O and no client state.
26
29
  */
27
- export { spacePath, spaceItems, collectionPath, collectionItems, collectionMeta, collectionLog, collectionQuery, resourcePath, resourceMeta, toUrl, parseSpacePath, parseSpaceTarget } from './internal/paths.js';
30
+ export { spacePath, spaceMeta, collectionPath, collectionMeta, collectionLog, collectionQuery, resourcePath, resourceMeta, toUrl, parseSpacePath, parseSpaceTarget } from './internal/paths.js';
28
31
  export { rootCapabilityId, rootCapability } from './internal/revoke.js';
29
32
  //# sourceMappingURL=paths.js.map
package/dist/paths.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EACL,SAAS,EACT,UAAU,EACV,cAAc,EACd,eAAe,EACf,cAAc,EACd,aAAa,EACb,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,cAAc,EACd,gBAAgB,EACjB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EACL,SAAS,EACT,SAAS,EACT,cAAc,EACd,cAAc,EACd,aAAa,EACb,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,cAAc,EACd,gBAAgB,EACjB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA"}
@@ -22,7 +22,7 @@
22
22
  * collection is created descriptor-less here and declared governed afterwards,
23
23
  * by the caller's guarded create of the log.
24
24
  */
25
- import type { IDID, IZcap, SpaceDescription } from '../types.js';
25
+ import type { IDID, IZcap, SpaceMetadata } from '../types.js';
26
26
  import type { WasClient } from '../WasClient.js';
27
27
  /**
28
28
  * Ensures the controller's Space exists and one synced collection is
@@ -78,7 +78,7 @@ import type { WasClient } from '../WasClient.js';
78
78
  * Space creation; defaults to `'WAS Space'`
79
79
  * @param [options.collectionName] {string} the collection display name,
80
80
  * applied only at collection creation; defaults to the collection id
81
- * @param [options.spaceDescription] {SpaceDescription} the Space's
81
+ * @param [options.spaceDescription] {SpaceMetadata} the Space's
82
82
  * description, when the caller has already ensured the Space (with
83
83
  * {@link ensureSpace}). Supplying it skips the Space half entirely, which is
84
84
  * what keeps a caller provisioning N collections from ensuring one Space N
@@ -111,7 +111,7 @@ export declare function ensureSpaceAndCollection({ was, spaceId, controllerDid,
111
111
  isPublic?: boolean;
112
112
  spaceName?: string;
113
113
  collectionName?: string;
114
- spaceDescription?: SpaceDescription;
114
+ spaceDescription?: SpaceMetadata;
115
115
  capability?: IZcap;
116
116
  generator?: IDID;
117
117
  generatorOrigin?: string;
@@ -138,7 +138,7 @@ export declare function ensureSpaceAndCollection({ was, spaceId, controllerDid,
138
138
  * Space creation; defaults to `'WAS Space'`
139
139
  * @param [options.capability] {IZcap} an invocation capability both
140
140
  * requests ride; the root capability is invoked otherwise
141
- * @returns {Promise<SpaceDescription>} the Space's description, existing or
141
+ * @returns {Promise<SpaceMetadata>} the Space's description, existing or
142
142
  * just written -- pass it to {@link ensureSpaceAndCollection} as
143
143
  * `spaceDescription` so each collection skips the Space ensure
144
144
  */
@@ -148,5 +148,5 @@ export declare function ensureSpace({ was, spaceId, controllerDid, spaceName, ca
148
148
  controllerDid: string;
149
149
  spaceName?: string;
150
150
  capability?: IZcap;
151
- }): Promise<SpaceDescription>;
151
+ }): Promise<SpaceMetadata>;
152
152
  //# sourceMappingURL=provisioning.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provisioning.d.ts","sourceRoot":"","sources":["../../src/sync/provisioning.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAEV,IAAI,EACJ,KAAK,EACL,gBAAgB,EACjB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AA+GhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AACH,wBAAsB,wBAAwB,CAAC,EAC7C,GAAG,EACH,OAAO,EACP,aAAa,EACb,YAAY,EACZ,UAAkB,EAClB,QAAgB,EAChB,SAA8B,EAC9B,cAA6B,EAC7B,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,eAAe,EAChB,EAAE;IACD,GAAG,EAAE,SAAS,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,KAAK,GAAG,WAAW,GAAG,UAAU,CAAA;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsHhB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,WAAW,CAAC,EAChC,GAAG,EACH,OAAO,EACP,aAAa,EACb,SAA8B,EAC9B,UAAU,EACX,EAAE;IACD,GAAG,EAAE,SAAS,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,KAAK,CAAA;CACnB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAqB5B"}
1
+ {"version":3,"file":"provisioning.d.ts","sourceRoot":"","sources":["../../src/sync/provisioning.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAEV,IAAI,EACJ,KAAK,EACL,aAAa,EACd,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AA+GhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AACH,wBAAsB,wBAAwB,CAAC,EAC7C,GAAG,EACH,OAAO,EACP,aAAa,EACb,YAAY,EACZ,UAAkB,EAClB,QAAgB,EAChB,SAA8B,EAC9B,cAA6B,EAC7B,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,eAAe,EAChB,EAAE;IACD,GAAG,EAAE,SAAS,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,KAAK,GAAG,WAAW,GAAG,UAAU,CAAA;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,gBAAgB,CAAC,EAAE,aAAa,CAAA;IAChC,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsHhB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,WAAW,CAAC,EAChC,GAAG,EACH,OAAO,EACP,aAAa,EACb,SAA8B,EAC9B,UAAU,EACX,EAAE;IACD,GAAG,EAAE,SAAS,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,KAAK,CAAA;CACnB,GAAG,OAAO,CAAC,aAAa,CAAC,CAqBzB"}
@@ -151,7 +151,7 @@ async function readOrCreate({ read, create, unreadable }) {
151
151
  * Space creation; defaults to `'WAS Space'`
152
152
  * @param [options.collectionName] {string} the collection display name,
153
153
  * applied only at collection creation; defaults to the collection id
154
- * @param [options.spaceDescription] {SpaceDescription} the Space's
154
+ * @param [options.spaceDescription] {SpaceMetadata} the Space's
155
155
  * description, when the caller has already ensured the Space (with
156
156
  * {@link ensureSpace}). Supplying it skips the Space half entirely, which is
157
157
  * what keeps a caller provisioning N collections from ensuring one Space N
@@ -297,7 +297,7 @@ export async function ensureSpaceAndCollection({ was, spaceId, controllerDid, co
297
297
  * Space creation; defaults to `'WAS Space'`
298
298
  * @param [options.capability] {IZcap} an invocation capability both
299
299
  * requests ride; the root capability is invoked otherwise
300
- * @returns {Promise<SpaceDescription>} the Space's description, existing or
300
+ * @returns {Promise<SpaceMetadata>} the Space's description, existing or
301
301
  * just written -- pass it to {@link ensureSpaceAndCollection} as
302
302
  * `spaceDescription` so each collection skips the Space ensure
303
303
  */
@@ -1 +1 @@
1
- {"version":3,"file":"provisioning.js","sourceRoot":"","sources":["../../src/sync/provisioning.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provisioning.js","sourceRoot":"","sources":["../../src/sync/provisioning.ts"],"names":[],"mappings":"AA+BA,6EAA6E;AAC7E,iEAAiE;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAE9D;;GAEG;AACH,MAAM,kBAAkB,GAAG,WAAW,CAAA;AAEtC;;;GAGG;AACH,MAAM,cAAc,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAW,CAAA;AAE9E;;;;;;;;;;;;;GAaG;AACH,SAAS,0BAA0B,CAAC,GAAY,EAAE,OAAe;IAC/D,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,MAAM,GAAG,CAAA;IACX,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;AAC1C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,KAAK,UAAU,YAAY,CAAI,EAC7B,IAAI,EACJ,MAAM,EACN,UAAU,EAKX;IACC,MAAM,OAAO,GAAG,MAAM,IAAI,EAAE,CAAA;IAC5B,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC3C,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,OAAgB,CAAA;IACpB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,MAAM,EAAE,CAAA;QAC5B,OAAO,GAAG,IAAI,CAAA;QACd,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;QAC3B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,GAAG,GAAG,CAAA;IACf,CAAC;IACD,IAAI,MAAgB,CAAA;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,IAAI,EAAE,CAAA;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,yEAAyE;QACzE,qEAAqE;QACrE,wEAAwE;QACxE,sEAAsE;QACtE,aAAa;QACb,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,OAAO,CAAA;QACf,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;IACD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IACnC,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,eAAe,CAAC,UAAU,CAAC,CAAA;IACvC,CAAC;IACD,MAAM,OAAO,CAAA;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,EAC7C,GAAG,EACH,OAAO,EACP,aAAa,EACb,YAAY,EACZ,UAAU,GAAG,KAAK,EAClB,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,kBAAkB,EAC9B,cAAc,GAAG,YAAY,EAC7B,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,eAAe,EAchB;IACC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;IAEhD,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,WAAW,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAA;IAC3E,CAAC;SAAM,IAAI,gBAAgB,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;QAC3C,qEAAqE;QACrE,oEAAoE;QACpE,uEAAuE;QACvE,oEAAoE;QACpE,gCAAgC;QAChC,MAAM,IAAI,eAAe,CACvB,yBAAyB,gBAAgB,CAAC,EAAE,4BAA4B;YACtE,uBAAuB,OAAO,KAAK,CACtC,CAAA;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;QACjD,0EAA0E;QAC1E,0EAA0E;QAC1E,wEAAwE;QACxE,wEAAwE;QACxE,sEAAsE;QACtE,gCAAgC;QAChC,MAAM,WAAW,GACf,SAAS,KAAK,SAAS;YACrB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,SAAS;gBACT,GAAG,CAAC,eAAe,KAAK,SAAS,IAAI,EAAE,eAAe,EAAE,CAAC;aAC1D,CAAA;QACP,uEAAuE;QACvE,oEAAoE;QACpE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,YAAY,CAAC;YAClD,IAAI,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,gBAAgB,EAAE;YACzC,MAAM,EAAE,GAAG,EAAE,CACX,UAAU,CAAC,kBAAkB,CAC3B,UAAU,KAAK,KAAK;gBAClB,CAAC,CAAC;oBACE,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE,cAAc;oBAC1B,GAAG,WAAW;iBACf;gBACH,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,EAC5C,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB;YACH,UAAU,EACR,eAAe,YAAY,eAAe,OAAO,QAAQ;gBACzD,kCAAkC;SACrC,CAAC,CAAA;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAA;QAChC,IACE,UAAU,KAAK,UAAU;YACzB,OAAO,CAAC,UAAU,KAAK,SAAS;YAChC,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,EACzC,CAAC;YACD,MAAM,IAAI,eAAe,CACvB,eAAe,YAAY,eAAe,OAAO,cAAc;gBAC7D,oEAAoE;gBACpE,kEAAkE,CACrE,CAAA;QACH,CAAC;QACD,IAAI,CAAC,OAAO,IAAI,UAAU,KAAK,KAAK,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACzE,qEAAqE;YACrE,qEAAqE;YACrE,qEAAqE;YACrE,oEAAoE;YACpE,oEAAoE;YACpE,qEAAqE;YACrE,6DAA6D;YAC7D,IAAI,QAAQ,GAAuB,IAAI,CAAA;YACvC,MAAM,cAAc,CAAqB;gBACvC,KAAK,EAAE;oBACL,IAAI,EAAE,KAAK,IAAI,EAAE;wBACf,MAAM,MAAM,GACV,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,gBAAgB,EAAE,CAAA;wBACpE,QAAQ,GAAG,IAAI,CAAA;wBACf,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;4BACpB,MAAM,IAAI,eAAe,CACvB,eAAe,YAAY,eAAe,OAAO,aAAa;gCAC5D,0CAA0C,CAC7C,CAAA;wBACH,CAAC;wBACD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;oBACzD,CAAC;oBACD,8DAA8D;oBAC9D,kEAAkE;oBAClE,mEAAmE;oBACnE,gEAAgE;oBAChE,iEAAiE;oBACjE,aAAa;oBACb,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;wBACnC,MAAM,UAAU,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;oBACxD,CAAC;iBACF;gBACD,SAAS,EAAE,wBAAwB;gBACnC,MAAM,EAAE,MAAM,CAAC,EAAE,CACf,MAAM,CAAC,UAAU,KAAK,SAAS;oBAC7B,CAAC,CAAC;wBACE,GAAG,MAAM;wBACT,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,cAAc;wBACnC,UAAU,EAAE,cAAc;qBAC3B;oBACH,CAAC,CAAC,IAAI;aACX,CAAC,CAAA;QACJ,CAAC;QACD,yEAAyE;QACzE,iDAAiD;QACjD,IAAI,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;YAC5D,MAAM,UAAU,CAAC,SAAS,EAAE,CAAA;QAC9B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,0BAA0B,CACxB,GAAG,EACH,mCAAmC,YAAY,eAAe,OAAO,IAAI,CAC1E,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAChC,GAAG,EACH,OAAO,EACP,aAAa,EACb,SAAS,GAAG,kBAAkB,EAC9B,UAAU,EAOX;IACC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;IAChD,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,YAAY,CAAC;YACnC,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC5B,MAAM,EAAE,KAAK,IAAI,EAAE,CACjB,CACE,MAAM,KAAK,CAAC,kBAAkB,CAC5B,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,EAC9C,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB,CACF,CAAC,WAAW;YACf,UAAU,EAAE,UAAU,OAAO,wCAAwC;SACtE,CAAC,CAAA;QACF,OAAO,KAAK,CAAA;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,0BAA0B,CACxB,GAAG,EACH,kCAAkC,OAAO,UAAU,aAAa,IAAI,CACrE,CAAA;IACH,CAAC;AACH,CAAC"}
package/dist/types.d.ts CHANGED
@@ -17,13 +17,16 @@ import type { IDID, ISigner } from '@interop/data-integrity-core';
17
17
  import type { ActionInput } from '@interop/storage-core';
18
18
  export type { IZcap, IDelegatedZcap, IRootZcap, IDID, ISigner };
19
19
  /**
20
- * Re-export the shared WAS wire model from `@interop/storage-core`. The
21
- * resources-in-a-collection listing is `CollectionResourcesList` (formerly
22
- * `ResourceListing`) and the collections-in-a-space listing is `CollectionsList`
23
- * (formerly `CollectionListing`).
20
+ * Re-export the shared WAS wire model from `@interop/storage-core`. A
21
+ * container's description is its Metadata object: `SpaceMetadata` for a Space
22
+ * and `CollectionMetadata` for a Collection, the latter carrying the
23
+ * configuration members beside `custom` and the timestamps under one
24
+ * validator. The resources-in-a-collection listing is
25
+ * `CollectionResourcesList` and the collections-in-a-space listing is
26
+ * `CollectionsList`.
24
27
  */
25
- export type { Action, ActionInput, ChangeDocument, ChangesCheckpoint, ChangesPage, SpaceDescription, CollectionDescription, CollectionEncryption, CollectionEncryptionEpoch, CollectionEncryptionRecipient, PolicyDocument, LinkSet, LinkSetEntry, CollectionSummary, CollectionsList, SpaceSummary, SpaceListing, ResourceSummary, CollectionResourcesList, ResourceMetadata, ResourceMetadataCustom, CollectionMetadata, ImportStats, BackendReference, BackendDescriptor, BackendRegistration, BackendConnectionInput, BackendConnectionPublic, StorageLimit, CollectionUsage, BackendUsage, SpaceQuotaReport } from '@interop/storage-core';
26
- import type { BackendReference, CollectionEncryption, ResourceMetadataCustom } from '@interop/storage-core';
28
+ export type { Action, ActionInput, ChangeDocument, ChangesCheckpoint, ChangesPage, SpaceMetadata, CollectionEncryption, CollectionEncryptionEpoch, CollectionEncryptionRecipient, PolicyDocument, LinkSet, LinkSetEntry, CollectionSummary, CollectionsList, SpaceSummary, SpaceListing, ResourceSummary, CollectionResourcesList, ResourceMetadata, ResourceMetadataCustom, CollectionMetadata, ImportStats, BackendReference, BackendDescriptor, BackendRegistration, BackendConnectionInput, BackendConnectionPublic, StorageLimit, CollectionUsage, BackendUsage, SpaceQuotaReport, ServiceDescription, ServiceDescriptionVersionEntry, PwsVersionEntry } from '@interop/storage-core';
29
+ import type { BackendReference, CollectionEncryption, PwsVersionEntry, ResourceMetadataCustom, ServiceDescription } from '@interop/storage-core';
27
30
  /**
28
31
  * The user-writable metadata `custom` value as a caller passes it in. The
29
32
  * second arm keeps `name` / `tags` checked at their stored types on an object
@@ -65,10 +68,14 @@ export type CollectionEncryptionHmac = NonNullable<CollectionEncryption['hmac']>
65
68
  */
66
69
  export type EncryptionWithHmac = CollectionEncryption;
67
70
  /**
68
- * The client-writable fields of a Collection Description -- the shape shared
69
- * by `Collection.configure` and `Collection.replaceDescription` and the single
70
- * place a new writable field is declared (the body/echo inclusion rule lives
71
- * in `Collection.#writableFields`).
71
+ * The client-writable configuration members of a Collection Metadata object --
72
+ * the shape shared by `Collection.configure` and
73
+ * `Collection.replaceDescription` and the single place a new writable member is
74
+ * declared (the inclusion rule lives in `collectionWritableFields`).
75
+ *
76
+ * The object's other writable members are not configuration and are not listed
77
+ * here: `custom` (and its `epoch` stamp) is written through `setMeta`, which
78
+ * preserves these, exactly as a configuration write preserves `custom`.
72
79
  */
73
80
  export interface CollectionWritableFields {
74
81
  name?: string;
@@ -152,6 +159,32 @@ export interface FindPage {
152
159
  export type EncryptionOverride = (CollectionEncryption & {
153
160
  keys?: unknown;
154
161
  }) | 'plaintext';
162
+ /**
163
+ * What service discovery learned about the server (`was.service()`): the
164
+ * service description as read, and the WAS version entry this client chose
165
+ * from it.
166
+ *
167
+ * - `description` -- the whole document, including `specs` entries for other
168
+ * specifications and the optional `instance` disclosure. The client gates no
169
+ * behavior on `instance`.
170
+ * - `version` -- the chosen WAS specification version, such as `"0.5"`.
171
+ * - `entry` -- the chosen version entry.
172
+ * - `spacesUrl` -- the absolute Spaces Repository URL from the entry's
173
+ * `spaces` member. Absent when the server does not implement the Spaces
174
+ * Repository.
175
+ * - `features` -- the entry's `features` tokens. The vocabulary is open: a
176
+ * token this client does not know is carried here and otherwise ignored.
177
+ * - `hasFeature(token)` -- whether the entry advertises `token`. An absent
178
+ * token (or an absent array) reads as unsupported.
179
+ */
180
+ export interface ServiceInfo {
181
+ description: ServiceDescription;
182
+ version: string;
183
+ entry: PwsVersionEntry;
184
+ spacesUrl?: string;
185
+ features: string[];
186
+ hasFeature(token: string): boolean;
187
+ }
155
188
  /**
156
189
  * Options accepted by every handle factory (`space()`, `collection()`,
157
190
  * `resource()`). A bound `capability` is attached to every request the handle
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EACV,KAAK,EACL,cAAc,EACd,SAAS,EACV,MAAM,mCAAmC,CAAA;AAC1C,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAExD,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAE/D;;;;;GAKG;AACH,YAAY,EACV,MAAM,EACN,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,6BAA6B,EAC7B,cAAc,EACd,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,gBAAgB,EACjB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,uBAAuB,CAAA;AAE9B;;;;;;;;;;GAUG;AACH,MAAM,MAAM,2BAA2B,GACnC,sBAAsB,GACtB;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAEL;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,wBAAwB,GAAG,WAAW,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAA;AAEhF;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;AAErD;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,gBAAgB,CAAA;IAC1B,UAAU,CAAC,EAAE,oBAAoB,CAAA;IACjC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;AAC5D,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CACpB;AACD,MAAM,MAAM,SAAS,GAAG,IAAI,EAAE,CAAA;AAC9B,MAAM,MAAM,IAAI,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,CAAA;AAEzD;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,GAAG,UAAU,CAAA;AAErE;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;KAAE,CAAC,CAAA;IAC/C,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,kBAAkB,GAC5B,CAAC,oBAAoB,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,WAAW,CAAA;AAE3D;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,kBAAkB,CAAA;CAChC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,KAAK,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,IAAI,GAAG,UAAU,CAAA;IACxB,UAAU,CAAC,EAAE,KAAK,CAAA;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@interop/was-client",
3
3
  "description": "A developer-friendly client for Wallet Attached Storage (WAS) servers.",
4
- "version": "0.60.0",
4
+ "version": "0.62.0",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "build": "pnpm run clear && tsc",
@@ -74,7 +74,7 @@
74
74
  "@interop/ezcap": "^7.4.8",
75
75
  "@interop/http-client": "^1.0.5",
76
76
  "@interop/minimal-cipher": "^7.10.2",
77
- "@interop/storage-core": "^0.13.0",
77
+ "@interop/storage-core": "^0.15.0",
78
78
  "@interop/vh-resource-log": "^0.5.1",
79
79
  "@interop/x25519-key-agreement-key": "^5.4.0",
80
80
  "@noble/hashes": "^2.3.0",