@interop/was-client 0.61.0 → 0.62.1

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 (56) hide show
  1. package/README.md +58 -3
  2. package/dist/WasClient.d.ts +51 -6
  3. package/dist/WasClient.d.ts.map +1 -1
  4. package/dist/WasClient.js +84 -14
  5. package/dist/WasClient.js.map +1 -1
  6. package/dist/edv/EdvCodec.d.ts +4 -5
  7. package/dist/edv/EdvCodec.d.ts.map +1 -1
  8. package/dist/edv/EdvCodec.js +14 -11
  9. package/dist/edv/EdvCodec.js.map +1 -1
  10. package/dist/edv/epochRoster.d.ts +7 -32
  11. package/dist/edv/epochRoster.d.ts.map +1 -1
  12. package/dist/edv/epochRoster.js +10 -35
  13. package/dist/edv/epochRoster.js.map +1 -1
  14. package/dist/edv/recipients.d.ts +5 -0
  15. package/dist/edv/recipients.d.ts.map +1 -1
  16. package/dist/edv/recipients.js +15 -2
  17. package/dist/edv/recipients.js.map +1 -1
  18. package/dist/errors.d.ts +13 -0
  19. package/dist/errors.d.ts.map +1 -1
  20. package/dist/errors.js +13 -0
  21. package/dist/errors.js.map +1 -1
  22. package/dist/index.d.ts +2 -2
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +1 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/internal/cas.d.ts +10 -7
  27. package/dist/internal/cas.d.ts.map +1 -1
  28. package/dist/internal/cas.js +18 -7
  29. package/dist/internal/cas.js.map +1 -1
  30. package/dist/internal/describe.d.ts +6 -0
  31. package/dist/internal/describe.d.ts.map +1 -1
  32. package/dist/internal/describe.js +27 -1
  33. package/dist/internal/describe.js.map +1 -1
  34. package/dist/internal/pagination.d.ts +24 -1
  35. package/dist/internal/pagination.d.ts.map +1 -1
  36. package/dist/internal/pagination.js +77 -9
  37. package/dist/internal/pagination.js.map +1 -1
  38. package/dist/internal/paths.d.ts +0 -4
  39. package/dist/internal/paths.d.ts.map +1 -1
  40. package/dist/internal/paths.js +4 -9
  41. package/dist/internal/paths.js.map +1 -1
  42. package/dist/internal/request.d.ts +22 -6
  43. package/dist/internal/request.d.ts.map +1 -1
  44. package/dist/internal/request.js +31 -13
  45. package/dist/internal/request.js.map +1 -1
  46. package/dist/internal/service.d.ts +61 -0
  47. package/dist/internal/service.d.ts.map +1 -0
  48. package/dist/internal/service.js +259 -0
  49. package/dist/internal/service.js.map +1 -0
  50. package/dist/paths.d.ts +5 -1
  51. package/dist/paths.d.ts.map +1 -1
  52. package/dist/paths.js +5 -1
  53. package/dist/paths.js.map +1 -1
  54. package/dist/types.d.ts +28 -2
  55. package/dist/types.d.ts.map +1 -1
  56. package/package.json +2 -2
@@ -0,0 +1,61 @@
1
+ import type { ServiceInfo } from '../types.js';
2
+ /**
3
+ * The WAS specification's identifier, the `specs` key its version entries sit
4
+ * under. Provisional until the spec's rename registers it.
5
+ */
6
+ export declare const PWS_SPEC_ID = "https://w3id.org/pws";
7
+ /**
8
+ * The WAS specification versions this client speaks, newest first. Selection
9
+ * takes the first one the server lists.
10
+ */
11
+ export declare const SUPPORTED_PWS_VERSIONS: string[];
12
+ /**
13
+ * Reads the target of the first `service` link in a `Link` header (RFC 8288),
14
+ * resolved against the URL of the response that carried it. Relation types
15
+ * compare case-insensitively, a `rel` may list several space-separated types,
16
+ * and only the first `rel` parameter of a link-value counts.
17
+ *
18
+ * @param options {object}
19
+ * @param options.header {string | null} the `Link` header value
20
+ * @param options.baseUrl {string} the URL the response came from
21
+ * @returns {string | undefined} the absolute service description URL
22
+ */
23
+ export declare function serviceLinkTarget({ header, baseUrl }: {
24
+ header: string | null;
25
+ baseUrl: string;
26
+ }): string | undefined;
27
+ /**
28
+ * Applies the spec's version-selection rules to a service description: a
29
+ * `specs` key other than the WAS identifier is ignored, a version entry
30
+ * without a string `version` is ignored, and the newest version this client
31
+ * speaks is chosen. The members the client acts on are checked before they are
32
+ * used: `spaces` must be an absolute URL and `features` an array of strings.
33
+ *
34
+ * @param description {unknown} the parsed service description
35
+ * @returns {ServiceInfo}
36
+ * @throws {IncompatibleServerError} when the document lacks `url` or `specs`,
37
+ * when no entry names a version this client speaks, or when the chosen
38
+ * entry's `spaces` or `features` is malformed
39
+ */
40
+ export declare function selectServiceVersion(description: unknown): ServiceInfo;
41
+ /**
42
+ * Discovers the service description from a URL the client holds and selects
43
+ * the version to speak: an unsigned `HEAD` of `url` for its `service` link
44
+ * (the response status does not matter), then an unsigned `GET` of the linked
45
+ * document.
46
+ *
47
+ * A network failure, and a rate limit or temporary outage (429, 502, 503,
48
+ * 504) that comes without the link, reject with the mapped transport error,
49
+ * since they say nothing about the protocol the server speaks.
50
+ *
51
+ * @param options {object}
52
+ * @param options.url {string} any WAS URL, typically the client's `serverUrl`
53
+ * @returns {Promise<ServiceInfo>}
54
+ * @throws {IncompatibleServerError} when the response carries no `service`
55
+ * link, the linked document cannot be read or parsed, or version selection
56
+ * refuses it (see {@link selectServiceVersion})
57
+ */
58
+ export declare function discoverService({ url }: {
59
+ url: string;
60
+ }): Promise<ServiceInfo>;
61
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/internal/service.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C;;;GAGG;AACH,eAAO,MAAM,WAAW,yBAAyB,CAAA;AAEjD;;;GAGG;AACH,eAAO,MAAM,sBAAsB,UAAU,CAAA;AA+C7C;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,OAAO,EACR,EAAE;IACD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;CAChB,GAAG,MAAM,GAAG,SAAS,CA2BrB;AA2BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,OAAO,GAAG,WAAW,CAiEtE;AAqCD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,eAAe,CAAC,EACpC,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,OAAO,CAAC,WAAW,CAAC,CAuCvB"}
@@ -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
@@ -17,7 +17,10 @@
17
17
  * `collectionMeta`) instead of at the container URL.
18
18
  *
19
19
  * `parseSpacePath` / `parseSpaceTarget` are the inverse grammar (a pathname or
20
- * an absolute URL back to the containment depth it addresses), and
20
+ * an absolute URL back to the containment depth it addresses),
21
+ * `isReservedCollectionId` / `isReservedResourceId` report whether a segment is
22
+ * in the Reserved Path Segment Registry (the builders throw on one, so a caller
23
+ * forming a path out of a value it did not choose asks first), and
21
24
  * `rootCapabilityId` / `rootCapability` mint the `urn:zcap:root:` capability a
22
25
  * target's own root invocation names -- the id form for parenting an unparented
23
26
  * grant, the object form for invoking it (`@interop/ezcap` accepts a bare root
@@ -28,6 +31,7 @@
28
31
  * function with no I/O and no client state.
29
32
  */
30
33
  export { spacePath, spaceMeta, collectionPath, collectionMeta, collectionLog, collectionQuery, resourcePath, resourceMeta, toUrl, parseSpacePath, parseSpaceTarget } from './internal/paths.js';
34
+ export { isReservedCollectionId, isReservedResourceId } from './internal/reserved.js';
31
35
  export type { ParsedSpacePath } from './internal/paths.js';
32
36
  export { rootCapabilityId, rootCapability } from './internal/revoke.js';
33
37
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;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,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE1D,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA"}
package/dist/paths.js CHANGED
@@ -17,7 +17,10 @@
17
17
  * `collectionMeta`) instead of at the container URL.
18
18
  *
19
19
  * `parseSpacePath` / `parseSpaceTarget` are the inverse grammar (a pathname or
20
- * an absolute URL back to the containment depth it addresses), and
20
+ * an absolute URL back to the containment depth it addresses),
21
+ * `isReservedCollectionId` / `isReservedResourceId` report whether a segment is
22
+ * in the Reserved Path Segment Registry (the builders throw on one, so a caller
23
+ * forming a path out of a value it did not choose asks first), and
21
24
  * `rootCapabilityId` / `rootCapability` mint the `urn:zcap:root:` capability a
22
25
  * target's own root invocation names -- the id form for parenting an unparented
23
26
  * grant, the object form for invoking it (`@interop/ezcap` accepts a bare root
@@ -28,5 +31,6 @@
28
31
  * function with no I/O and no client state.
29
32
  */
30
33
  export { spacePath, spaceMeta, collectionPath, collectionMeta, collectionLog, collectionQuery, resourcePath, resourceMeta, toUrl, parseSpacePath, parseSpaceTarget } from './internal/paths.js';
34
+ export { isReservedCollectionId, isReservedResourceId } from './internal/reserved.js';
31
35
  export { rootCapabilityId, rootCapability } from './internal/revoke.js';
32
36
  //# 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;;;;;;;;;;;;;;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;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,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA"}
package/dist/types.d.ts CHANGED
@@ -25,8 +25,8 @@ export type { IZcap, IDelegatedZcap, IRootZcap, IDID, ISigner };
25
25
  * `CollectionResourcesList` and the collections-in-a-space listing is
26
26
  * `CollectionsList`.
27
27
  */
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 } from '@interop/storage-core';
29
- 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';
30
30
  /**
31
31
  * The user-writable metadata `custom` value as a caller passes it in. The
32
32
  * second arm keeps `name` / `tags` checked at their stored types on an object
@@ -159,6 +159,32 @@ export interface FindPage {
159
159
  export type EncryptionOverride = (CollectionEncryption & {
160
160
  keys?: unknown;
161
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
+ }
162
188
  /**
163
189
  * Options accepted by every handle factory (`space()`, `collection()`,
164
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":"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"}
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.61.0",
4
+ "version": "0.62.1",
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.14.1",
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",