@interop/was-conformance-suite 0.2.0 → 0.3.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 (69) hide show
  1. package/dist/suites/authz-ordering-api.d.ts +9 -0
  2. package/dist/suites/authz-ordering-api.d.ts.map +1 -0
  3. package/dist/suites/authz-ordering-api.js +286 -0
  4. package/dist/suites/authz-ordering-api.js.map +1 -0
  5. package/dist/suites/blinded-index-api.d.ts +11 -0
  6. package/dist/suites/blinded-index-api.d.ts.map +1 -0
  7. package/dist/suites/blinded-index-api.js +468 -0
  8. package/dist/suites/blinded-index-api.js.map +1 -0
  9. package/dist/suites/changes-query-api.d.ts.map +1 -1
  10. package/dist/suites/changes-query-api.js +61 -0
  11. package/dist/suites/changes-query-api.js.map +1 -1
  12. package/dist/suites/chunks-api.d.ts +27 -0
  13. package/dist/suites/chunks-api.d.ts.map +1 -0
  14. package/dist/suites/chunks-api.js +613 -0
  15. package/dist/suites/chunks-api.js.map +1 -0
  16. package/dist/suites/client-backends.d.ts.map +1 -1
  17. package/dist/suites/client-backends.js +23 -0
  18. package/dist/suites/client-backends.js.map +1 -1
  19. package/dist/suites/client-delegation.d.ts.map +1 -1
  20. package/dist/suites/client-delegation.js +12 -0
  21. package/dist/suites/client-delegation.js.map +1 -1
  22. package/dist/suites/client-export-import.d.ts.map +1 -1
  23. package/dist/suites/client-export-import.js +1 -0
  24. package/dist/suites/client-export-import.js.map +1 -1
  25. package/dist/suites/client-resources.d.ts.map +1 -1
  26. package/dist/suites/client-resources.js +30 -0
  27. package/dist/suites/client-resources.js.map +1 -1
  28. package/dist/suites/client-spaces.d.ts.map +1 -1
  29. package/dist/suites/client-spaces.js +27 -0
  30. package/dist/suites/client-spaces.js.map +1 -1
  31. package/dist/suites/collection-api.d.ts.map +1 -1
  32. package/dist/suites/collection-api.js +151 -0
  33. package/dist/suites/collection-api.js.map +1 -1
  34. package/dist/suites/conditional-requests-api.d.ts +11 -0
  35. package/dist/suites/conditional-requests-api.d.ts.map +1 -0
  36. package/dist/suites/conditional-requests-api.js +444 -0
  37. package/dist/suites/conditional-requests-api.js.map +1 -0
  38. package/dist/suites/digest-api.d.ts +7 -0
  39. package/dist/suites/digest-api.d.ts.map +1 -0
  40. package/dist/suites/digest-api.js +157 -0
  41. package/dist/suites/digest-api.js.map +1 -0
  42. package/dist/suites/encryption-marker-api.d.ts.map +1 -1
  43. package/dist/suites/encryption-marker-api.js +132 -8
  44. package/dist/suites/encryption-marker-api.js.map +1 -1
  45. package/dist/suites/index.d.ts +8 -1
  46. package/dist/suites/index.d.ts.map +1 -1
  47. package/dist/suites/index.js +16 -2
  48. package/dist/suites/index.js.map +1 -1
  49. package/dist/suites/invocation-target-api.d.ts +12 -0
  50. package/dist/suites/invocation-target-api.d.ts.map +1 -0
  51. package/dist/suites/invocation-target-api.js +252 -0
  52. package/dist/suites/invocation-target-api.js.map +1 -0
  53. package/dist/suites/policy-api.d.ts.map +1 -1
  54. package/dist/suites/policy-api.js +23 -0
  55. package/dist/suites/policy-api.js.map +1 -1
  56. package/dist/suites/resource-api.d.ts.map +1 -1
  57. package/dist/suites/resource-api.js +269 -0
  58. package/dist/suites/resource-api.js.map +1 -1
  59. package/dist/suites/server.d.ts.map +1 -1
  60. package/dist/suites/server.js +1 -0
  61. package/dist/suites/server.js.map +1 -1
  62. package/dist/suites/spaces-api.d.ts.map +1 -1
  63. package/dist/suites/spaces-api.js +565 -0
  64. package/dist/suites/spaces-api.js.map +1 -1
  65. package/dist/suites/write-validation-api.d.ts +7 -0
  66. package/dist/suites/write-validation-api.d.ts.map +1 -0
  67. package/dist/suites/write-validation-api.js +186 -0
  68. package/dist/suites/write-validation-api.js.map +1 -0
  69. package/package.json +5 -3
@@ -0,0 +1,468 @@
1
+ /*!
2
+ * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
+ */
4
+ /**
5
+ * WAS conformance tests -- the `blinded-index` query profile (matching over
6
+ * client-computed blinded / HMAC'd attributes, served at
7
+ * `POST /space/:s/:c/query`; spec "Query Profile Registry", the
8
+ * `blinded-index-query` backend feature).
9
+ *
10
+ * The profile is an OPTIONAL spec feature: a server opts in by advertising the
11
+ * `blinded-index-query` feature on a backend it hosts. This suite is therefore
12
+ * NOT suite-level optional -- once a server advertises the feature, the
13
+ * profile's MUSTs are required-tier. `setup()` detects the feature via the
14
+ * Space's `GET .../backends` descriptor list; when it is absent, every test
15
+ * calls `ctx.skip(...)`.
16
+ *
17
+ * The stored documents are EDV encrypted-document envelopes whose `indexed`
18
+ * attributes stand in for the client's HMAC-blinded base64url tokens -- the
19
+ * server matches them opaquely, so no real crypto is exercised here. Signed
20
+ * queries and writes use the raw `ZcapClient.request()` escape hatch, like the
21
+ * sibling `changes` profile suite.
22
+ */
23
+ import assert from '../harness/assert.js';
24
+ /** The (opaque) HMAC key id every seeded envelope indexes under. */
25
+ const HMAC_ID = 'did:key:zHmacBlindedIndexKeyA';
26
+ /**
27
+ * Builds a stored EDV encrypted-document envelope carrying one blinded
28
+ * `indexed` entry (structurally what `@interop/edv-client` produces). Each
29
+ * attribute's `name` / `value` is an opaque blinded token; `unique` marks a
30
+ * uniqueness claim.
31
+ *
32
+ * @param options {object}
33
+ * @param options.id {string} the document (Resource) id
34
+ * @param options.attributes {Array<{ name: string, value: string, unique?: boolean }>}
35
+ * @returns {object} the envelope document
36
+ */
37
+ function envelope({ id, attributes }) {
38
+ return {
39
+ id,
40
+ sequence: 0,
41
+ indexed: [
42
+ {
43
+ hmac: { id: HMAC_ID, type: 'Sha256HmacKey2019' },
44
+ sequence: 0,
45
+ attributes
46
+ }
47
+ ],
48
+ jwe: {
49
+ protected: 'eyJlbmMiOiJYQzIwUCJ9',
50
+ iv: 'aXY',
51
+ ciphertext: 'Y2lwaGVydGV4dA',
52
+ tag: 'dGFn'
53
+ }
54
+ };
55
+ }
56
+ export const blindedIndexApi = {
57
+ id: 'blinded-index-api',
58
+ name: 'Blinded-index query profile',
59
+ specRefs: [
60
+ 'https://wallet.storage/spec#query-profile-blinded-index',
61
+ 'https://wallet.storage/spec#query-profile-registry'
62
+ ],
63
+ setup: async (ctx) => {
64
+ // Shallow-clone the shared actors so per-suite scratch fields do not leak.
65
+ const alice = { ...ctx.actors.alice };
66
+ const bob = { ...ctx.actors.bob };
67
+ alice.space1 = { id: ctx.generateId() };
68
+ /** Absolute URL for a Collection's reserved `/query` endpoint. */
69
+ function queryUrl(collectionId) {
70
+ return new URL(`/space/${alice.space1.id}/${collectionId}/query`, ctx.serverUrl).toString();
71
+ }
72
+ /** Absolute URL for a Resource within a Collection. */
73
+ function resourceUrl(collectionId, resourceId) {
74
+ return new URL(`/space/${alice.space1.id}/${collectionId}/${resourceId}`, ctx.serverUrl).toString();
75
+ }
76
+ await ctx.createSpace({
77
+ spaceDescription: {
78
+ id: alice.space1.id,
79
+ name: "Alice's Blinded-Index Space",
80
+ controller: alice.did
81
+ },
82
+ rootClient: alice.rootClient
83
+ });
84
+ // Detect the OPTIONAL feature from the Space's backend descriptor list. The
85
+ // list is a bare array of descriptors, each carrying a `features` array.
86
+ const backendsResponse = await alice.rootClient.request({
87
+ url: new URL(`/space/${alice.space1.id}/backends`, ctx.serverUrl).toString(),
88
+ method: 'GET'
89
+ });
90
+ const advertised = Array.isArray(backendsResponse.data)
91
+ ? backendsResponse.data.some((backend) => (backend?.features ?? []).includes('blinded-index-query'))
92
+ : false;
93
+ // Seed fixtures only when the feature is supported; otherwise every test
94
+ // skips and nothing needs to be provisioned.
95
+ if (advertised) {
96
+ // Creates a Collection and PUTs each envelope at its id.
97
+ async function seedCollection(collectionId, documents) {
98
+ await alice.rootClient.request({
99
+ url: new URL(`/space/${alice.space1.id}/`, ctx.serverUrl).toString(),
100
+ method: 'POST',
101
+ action: 'POST',
102
+ json: { id: collectionId, name: collectionId }
103
+ });
104
+ for (const document of documents) {
105
+ await alice.rootClient.request({
106
+ url: resourceUrl(collectionId, document.id),
107
+ method: 'PUT',
108
+ action: 'PUT',
109
+ json: document
110
+ });
111
+ }
112
+ }
113
+ // The main fixture: `alpha` and `beta` share the `n1:v1` term; only
114
+ // `alpha` also carries `n2:v2`; `gamma` differs on value.
115
+ await seedCollection('vault', [
116
+ envelope({
117
+ id: 'alpha',
118
+ attributes: [
119
+ { name: 'n1', value: 'v1' },
120
+ { name: 'n2', value: 'v2' }
121
+ ]
122
+ }),
123
+ envelope({ id: 'beta', attributes: [{ name: 'n1', value: 'v1' }] }),
124
+ envelope({ id: 'gamma', attributes: [{ name: 'n1', value: 'vX' }] })
125
+ ]);
126
+ // A uniqueness-claim fixture: `holder` claims the `un1:uv1` triple.
127
+ await seedCollection('vault-unique', [
128
+ envelope({
129
+ id: 'holder',
130
+ attributes: [{ name: 'un1', value: 'uv1', unique: true }]
131
+ })
132
+ ]);
133
+ }
134
+ return { alice, bob, advertised, queryUrl, resourceUrl };
135
+ },
136
+ teardown: async (ctx, state) => {
137
+ const { alice } = state;
138
+ try {
139
+ await alice.rootClient.request({
140
+ url: new URL(`/space/${alice.space1.id}`, ctx.serverUrl).toString(),
141
+ method: 'DELETE'
142
+ });
143
+ }
144
+ catch {
145
+ /* best-effort cleanup */
146
+ }
147
+ },
148
+ tests: [
149
+ {
150
+ id: 'blinded.equals-match-ascending',
151
+ name: '[root] equals matches documents by blinded term, ascending by id',
152
+ specRefs: ['https://wallet.storage/spec#query-profile-blinded-index'],
153
+ run: async (ctx, state) => {
154
+ const { alice, advertised, queryUrl } = state;
155
+ if (!advertised) {
156
+ ctx.skip('backend does not advertise blinded-index-query');
157
+ }
158
+ const response = await alice.rootClient.request({
159
+ url: queryUrl('vault'),
160
+ method: 'POST',
161
+ action: 'POST',
162
+ json: {
163
+ profile: 'blinded-index',
164
+ index: HMAC_ID,
165
+ equals: [{ n1: 'v1' }]
166
+ }
167
+ });
168
+ assert.equal(response.status, 200);
169
+ assert.match(response.headers.get('content-type'), /application\/json/);
170
+ // `alpha` and `beta` carry `n1:v1`; `gamma` does not. Order is the
171
+ // spec-mandated ascending Resource id.
172
+ assert.deepEqual(response.data.documents.map((doc) => doc.id), ['alpha', 'beta']);
173
+ assert.equal(response.data.hasMore, false);
174
+ // `cursor` is present if and only if `hasMore` is true.
175
+ assert.equal(response.data.cursor, undefined);
176
+ // The stored envelope round-trips verbatim.
177
+ assert.deepEqual(response.data.documents[1], envelope({ id: 'beta', attributes: [{ name: 'n1', value: 'v1' }] }));
178
+ }
179
+ },
180
+ {
181
+ id: 'blinded.has-match',
182
+ name: '[root] has matches documents carrying every named blinded attribute',
183
+ specRefs: ['https://wallet.storage/spec#query-profile-blinded-index'],
184
+ run: async (ctx, state) => {
185
+ const { alice, advertised, queryUrl } = state;
186
+ if (!advertised) {
187
+ ctx.skip('backend does not advertise blinded-index-query');
188
+ }
189
+ // Only `alpha` carries both `n1` and `n2`.
190
+ const response = await alice.rootClient.request({
191
+ url: queryUrl('vault'),
192
+ method: 'POST',
193
+ action: 'POST',
194
+ json: {
195
+ profile: 'blinded-index',
196
+ index: HMAC_ID,
197
+ has: ['n1', 'n2']
198
+ }
199
+ });
200
+ assert.equal(response.status, 200);
201
+ assert.deepEqual(response.data.documents.map((doc) => doc.id), ['alpha']);
202
+ }
203
+ },
204
+ {
205
+ id: 'blinded.count-shape',
206
+ name: '[root] count:true returns exactly a { count } shape',
207
+ specRefs: ['https://wallet.storage/spec#query-profile-blinded-index'],
208
+ run: async (ctx, state) => {
209
+ const { alice, advertised, queryUrl } = state;
210
+ if (!advertised) {
211
+ ctx.skip('backend does not advertise blinded-index-query');
212
+ }
213
+ // `n1:v1` (alpha, beta) OR `n1:vX` (gamma) matches all three.
214
+ const response = await alice.rootClient.request({
215
+ url: queryUrl('vault'),
216
+ method: 'POST',
217
+ action: 'POST',
218
+ json: {
219
+ profile: 'blinded-index',
220
+ index: HMAC_ID,
221
+ equals: [{ n1: 'v1' }, { n1: 'vX' }],
222
+ count: true
223
+ }
224
+ });
225
+ assert.equal(response.status, 200);
226
+ assert.deepEqual(response.data, { count: 3 });
227
+ }
228
+ },
229
+ {
230
+ id: 'blinded.pagination-cursor',
231
+ name: '[root] a limited page pairs hasMore with an opaque continuation cursor',
232
+ optional: true,
233
+ specRefs: [
234
+ 'https://wallet.storage/spec#query-profile-blinded-index',
235
+ 'https://wallet.storage/spec#pagination'
236
+ ],
237
+ run: async (ctx, state) => {
238
+ const { alice, advertised, queryUrl } = state;
239
+ if (!advertised) {
240
+ ctx.skip('backend does not advertise blinded-index-query');
241
+ }
242
+ const firstPage = await alice.rootClient.request({
243
+ url: queryUrl('vault'),
244
+ method: 'POST',
245
+ action: 'POST',
246
+ json: {
247
+ profile: 'blinded-index',
248
+ index: HMAC_ID,
249
+ equals: [{ n1: 'v1' }],
250
+ limit: 1
251
+ }
252
+ });
253
+ assert.equal(firstPage.status, 200);
254
+ // `cursor` is present if and only if `hasMore` is true, whether or not
255
+ // the server honored the small `limit` (clamping down is permitted).
256
+ if (firstPage.data.hasMore === true) {
257
+ assert.ok(firstPage.data.cursor, 'a non-final page must carry a continuation cursor');
258
+ assert.deepEqual(firstPage.data.documents.map((doc) => doc.id), ['alpha']);
259
+ const secondPage = await alice.rootClient.request({
260
+ url: queryUrl('vault'),
261
+ method: 'POST',
262
+ action: 'POST',
263
+ json: {
264
+ profile: 'blinded-index',
265
+ index: HMAC_ID,
266
+ equals: [{ n1: 'v1' }],
267
+ limit: 1,
268
+ cursor: firstPage.data.cursor
269
+ }
270
+ });
271
+ assert.deepEqual(secondPage.data.documents.map((doc) => doc.id), ['beta']);
272
+ assert.equal(secondPage.data.hasMore, false);
273
+ assert.equal(secondPage.data.cursor, undefined);
274
+ }
275
+ else {
276
+ // Lenient `limit`: the whole result was returned in one page.
277
+ assert.equal(firstPage.data.cursor, undefined);
278
+ assert.deepEqual(firstPage.data.documents.map((doc) => doc.id), ['alpha', 'beta']);
279
+ }
280
+ }
281
+ },
282
+ {
283
+ id: 'blinded.invalid-query-body-400',
284
+ name: '[root] a body with neither, or both, of equals/has is invalid-request-body (400)',
285
+ specRefs: [
286
+ 'https://wallet.storage/spec#query-profile-blinded-index',
287
+ 'https://wallet.storage/spec#invalid-request-body'
288
+ ],
289
+ run: async (ctx, state) => {
290
+ const { alice, advertised, queryUrl } = state;
291
+ if (!advertised) {
292
+ ctx.skip('backend does not advertise blinded-index-query');
293
+ }
294
+ // Neither `equals` nor `has`.
295
+ let neitherError;
296
+ try {
297
+ await alice.rootClient.request({
298
+ url: queryUrl('vault'),
299
+ method: 'POST',
300
+ action: 'POST',
301
+ json: { profile: 'blinded-index', index: HMAC_ID }
302
+ });
303
+ }
304
+ catch (err) {
305
+ neitherError = err;
306
+ }
307
+ assert.ok(neitherError, 'expected a body with neither clause to fail');
308
+ assert.equal(neitherError.response.status, 400);
309
+ assert.match(neitherError.response.headers.get('content-type'), /application\/problem\+json/);
310
+ assert.equal(neitherError.data.type, 'https://wallet.storage/spec#invalid-request-body');
311
+ // Both `equals` and `has`.
312
+ let bothError;
313
+ try {
314
+ await alice.rootClient.request({
315
+ url: queryUrl('vault'),
316
+ method: 'POST',
317
+ action: 'POST',
318
+ json: {
319
+ profile: 'blinded-index',
320
+ index: HMAC_ID,
321
+ equals: [{ n1: 'v1' }],
322
+ has: ['n1']
323
+ }
324
+ });
325
+ }
326
+ catch (err) {
327
+ bothError = err;
328
+ }
329
+ assert.ok(bothError, 'expected a body with both clauses to fail');
330
+ assert.equal(bothError.response.status, 400);
331
+ assert.equal(bothError.data.type, 'https://wallet.storage/spec#invalid-request-body');
332
+ // Missing the REQUIRED `index`.
333
+ let missingIndexError;
334
+ try {
335
+ await alice.rootClient.request({
336
+ url: queryUrl('vault'),
337
+ method: 'POST',
338
+ action: 'POST',
339
+ json: { profile: 'blinded-index', has: ['n1'] }
340
+ });
341
+ }
342
+ catch (err) {
343
+ missingIndexError = err;
344
+ }
345
+ assert.ok(missingIndexError, 'expected a body missing index to fail');
346
+ assert.equal(missingIndexError.response.status, 400);
347
+ assert.equal(missingIndexError.data.type, 'https://wallet.storage/spec#invalid-request-body');
348
+ }
349
+ },
350
+ {
351
+ id: 'blinded.invalid-cursor-400',
352
+ name: '[root] a malformed continuation cursor is invalid-cursor (400)',
353
+ specRefs: [
354
+ 'https://wallet.storage/spec#query-profile-blinded-index',
355
+ 'https://wallet.storage/spec#invalid-cursor'
356
+ ],
357
+ run: async (ctx, state) => {
358
+ const { alice, advertised, queryUrl } = state;
359
+ if (!advertised) {
360
+ ctx.skip('backend does not advertise blinded-index-query');
361
+ }
362
+ let cursorError;
363
+ try {
364
+ await alice.rootClient.request({
365
+ url: queryUrl('vault'),
366
+ method: 'POST',
367
+ action: 'POST',
368
+ json: {
369
+ profile: 'blinded-index',
370
+ index: HMAC_ID,
371
+ has: ['n1'],
372
+ cursor: 'not!!a-valid-cursor'
373
+ }
374
+ });
375
+ }
376
+ catch (err) {
377
+ cursorError = err;
378
+ }
379
+ assert.ok(cursorError, 'expected a malformed cursor to be rejected');
380
+ assert.equal(cursorError.response.status, 400);
381
+ assert.equal(cursorError.data.type, 'https://wallet.storage/spec#invalid-cursor');
382
+ }
383
+ },
384
+ {
385
+ id: 'blinded.unique-conflict-409',
386
+ name: '[root] a write claiming a held unique blinded triple is id-conflict (409)',
387
+ specRefs: [
388
+ 'https://wallet.storage/spec#unique-blinded-attributes',
389
+ 'https://wallet.storage/spec#id-conflict'
390
+ ],
391
+ run: async (ctx, state) => {
392
+ const { alice, advertised, resourceUrl } = state;
393
+ if (!advertised) {
394
+ ctx.skip('backend does not advertise blinded-index-query');
395
+ }
396
+ // `holder` already claims `un1:uv1` with unique:true; a different
397
+ // Resource claiming the same triple must be rejected.
398
+ let conflictError;
399
+ try {
400
+ await alice.rootClient.request({
401
+ url: resourceUrl('vault-unique', 'claimant'),
402
+ method: 'PUT',
403
+ action: 'PUT',
404
+ json: envelope({
405
+ id: 'claimant',
406
+ attributes: [{ name: 'un1', value: 'uv1', unique: true }]
407
+ })
408
+ });
409
+ }
410
+ catch (err) {
411
+ conflictError = err;
412
+ }
413
+ assert.ok(conflictError, 'expected the conflicting claim to be rejected');
414
+ assert.equal(conflictError.response.status, 409);
415
+ assert.equal(conflictError.data.type, 'https://wallet.storage/spec#id-conflict');
416
+ // The same pair carried WITHOUT `unique` coexists freely (both-sides
417
+ // rule): this write succeeds.
418
+ const coexisting = await alice.rootClient.request({
419
+ url: resourceUrl('vault-unique', 'bystander'),
420
+ method: 'PUT',
421
+ action: 'PUT',
422
+ json: envelope({
423
+ id: 'bystander',
424
+ attributes: [{ name: 'un1', value: 'uv1' }]
425
+ })
426
+ });
427
+ assert.ok([200, 201, 204].includes(coexisting.status));
428
+ }
429
+ },
430
+ {
431
+ id: 'blinded.authz-before-uniqueness-404',
432
+ name: "[root] Bob's write of a held unique triple into Alice's collection is 404, not 409",
433
+ specRefs: [
434
+ 'https://wallet.storage/spec#unique-blinded-attributes',
435
+ 'https://wallet.storage/spec#error-type-registry',
436
+ 'https://wallet.storage/spec#not-found'
437
+ ],
438
+ run: async (ctx, state) => {
439
+ const { bob, advertised, resourceUrl } = state;
440
+ if (!advertised) {
441
+ ctx.skip('backend does not advertise blinded-index-query');
442
+ }
443
+ // Authorization MUST be verified before the uniqueness check: a 409
444
+ // here would let Bob probe Alice's Collection for held unique triples.
445
+ let maskedError;
446
+ try {
447
+ await bob.rootClient.request({
448
+ url: resourceUrl('vault-unique', 'intruder'),
449
+ method: 'PUT',
450
+ action: 'PUT',
451
+ json: envelope({
452
+ id: 'intruder',
453
+ attributes: [{ name: 'un1', value: 'uv1', unique: true }]
454
+ })
455
+ });
456
+ }
457
+ catch (err) {
458
+ maskedError = err;
459
+ }
460
+ assert.ok(maskedError, "expected Bob's write to be rejected");
461
+ assert.equal(maskedError.response.status, 404);
462
+ assert.match(maskedError.response.headers.get('content-type'), /application\/problem\+json/);
463
+ assert.equal(maskedError.data.type, 'https://wallet.storage/spec#not-found');
464
+ }
465
+ }
466
+ ]
467
+ };
468
+ //# sourceMappingURL=blinded-index-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blinded-index-api.js","sourceRoot":"","sources":["../../src/suites/blinded-index-api.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"changes-query-api.d.ts","sourceRoot":"","sources":["../../src/suites/changes-query-api.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEhD,UAAU,KAAK;IACb,KAAK,EAAE,GAAG,CAAA;IACV,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,MAAM,CAAA;CACvB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,KAAK,CA8HxC,CAAA"}
1
+ {"version":3,"file":"changes-query-api.d.ts","sourceRoot":"","sources":["../../src/suites/changes-query-api.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEhD,UAAU,KAAK;IACb,KAAK,EAAE,GAAG,CAAA;IACV,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,MAAM,CAAA;CACvB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,KAAK,CAmMxC,CAAA"}
@@ -63,6 +63,7 @@ export const changesQueryApi = {
63
63
  {
64
64
  id: 'changes.live-docs-tombstone-checkpoint',
65
65
  name: '[root] returns live documents and a tombstone, with a checkpoint',
66
+ specRefs: ['https://wallet.storage/spec#query-profile-changes'],
66
67
  run: async (ctx, state) => {
67
68
  const { alice, queryUrl } = state;
68
69
  const response = await alice.rootClient.request({
@@ -91,6 +92,7 @@ export const changesQueryApi = {
91
92
  {
92
93
  id: 'changes.unknown-profile-501',
93
94
  name: '[root] rejects an unknown query profile with 501',
95
+ specRefs: ['https://wallet.storage/spec#query-profile-registry'],
94
96
  run: async (ctx, state) => {
95
97
  const { alice, queryUrl } = state;
96
98
  let thrown;
@@ -109,6 +111,65 @@ export const changesQueryApi = {
109
111
  assert.equal(thrown.response.status, 501);
110
112
  assert.match(thrown.response.headers.get('content-type'), /application\/problem\+json/);
111
113
  }
114
+ },
115
+ {
116
+ id: 'changes.missing-profile-400',
117
+ name: '[root] rejects a query body with no `profile` with 400',
118
+ specRefs: [
119
+ 'https://wallet.storage/spec#query-profile-registry',
120
+ 'https://wallet.storage/spec#invalid-request-body'
121
+ ],
122
+ run: async (ctx, state) => {
123
+ const { alice, queryUrl } = state;
124
+ // The Query Profile Registry marks `profile` REQUIRED: a body that
125
+ // omits it is malformed (`invalid-request-body`, 400), distinct from
126
+ // naming a profile the server does not serve (501).
127
+ let expectedError;
128
+ try {
129
+ await alice.rootClient.request({
130
+ url: queryUrl(),
131
+ method: 'POST',
132
+ action: 'POST',
133
+ json: { limit: 10 }
134
+ });
135
+ }
136
+ catch (err) {
137
+ expectedError = err;
138
+ }
139
+ assert.ok(expectedError, 'expected the missing profile to be rejected');
140
+ assert.equal(expectedError.response.status, 400);
141
+ assert.equal(expectedError.data.type, 'https://wallet.storage/spec#invalid-request-body');
142
+ }
143
+ },
144
+ {
145
+ id: 'changes.malformed-checkpoint-400',
146
+ name: '[root] a `changes` query with a malformed `checkpoint` is rejected ' +
147
+ 'with 400',
148
+ specRefs: [
149
+ 'https://wallet.storage/spec#query-profile-changes',
150
+ 'https://wallet.storage/spec#invalid-request-body'
151
+ ],
152
+ run: async (ctx, state) => {
153
+ const { alice, queryUrl } = state;
154
+ // When present, `checkpoint` MUST be an object with a string `id` and a
155
+ // string `updatedAt`; a string checkpoint is malformed and rejected
156
+ // with `invalid-request-body` (400).
157
+ let expectedError;
158
+ try {
159
+ await alice.rootClient.request({
160
+ url: queryUrl(),
161
+ method: 'POST',
162
+ action: 'POST',
163
+ json: { profile: 'changes', checkpoint: 'not-an-object' }
164
+ });
165
+ }
166
+ catch (err) {
167
+ expectedError = err;
168
+ }
169
+ assert.ok(expectedError, 'expected the malformed checkpoint to be rejected');
170
+ assert.equal(expectedError.response.status, 400);
171
+ assert.equal(expectedError.data.type, 'https://wallet.storage/spec#invalid-request-body');
172
+ }
112
173
  }
113
174
  ]
114
175
  };
@@ -1 +1 @@
1
- {"version":3,"file":"changes-query-api.js","sourceRoot":"","sources":["../../src/suites/changes-query-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;GAIG;AACH,OAAO,MAAM,MAAM,sBAAsB,CAAA;AASzC,MAAM,CAAC,MAAM,eAAe,GAAiB;IAC3C,EAAE,EAAE,mBAAmB;IACvB,IAAI,EAAE,kCAAkC;IAExC,KAAK,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;QACjB,MAAM,KAAK,GAAQ,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QAC1C,MAAM,YAAY,GAAG,MAAM,CAAA;QAE3B,sEAAsE;QACtE,SAAS,QAAQ;YACf,OAAO,IAAI,GAAG,CACZ,UAAU,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,QAAQ,EACjD,GAAG,CAAC,SAAS,CACd,CAAC,QAAQ,EAAE,CAAA;QACd,CAAC;QAED,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,CAAA;QACvC,MAAM,GAAG,CAAC,WAAW,CAAC;YACpB,gBAAgB,EAAE;gBAChB,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;gBACnB,IAAI,EAAE,kBAAkB;gBACxB,UAAU,EAAE,KAAK,CAAC,GAAG;aACtB;YACD,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAA;QACF,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;YAC7B,GAAG,EAAE,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;YACpE,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE;SACzC,CAAC,CAAA;QACF,mEAAmE;QACnE,KAAK,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC7B,GAAG,EAAE,IAAI,GAAG,CACV,UAAU,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,IAAI,EAAE,EAAE,EACjD,GAAG,CAAC,SAAS,CACd,CAAC,QAAQ,EAAE;gBACZ,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,EAAE,EAAE,EAAE;aACb,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;YAC7B,GAAG,EAAE,IAAI,GAAG,CACV,UAAU,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,KAAK,EAC9C,GAAG,CAAC,SAAS,CACd,CAAC,QAAQ,EAAE;YACZ,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAA;QAEF,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAA;IAC1C,CAAC;IAED,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;QACvB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC7B,GAAG,EAAE,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;gBACnE,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAA;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IAED,KAAK,EAAE;QACL;YACE,EAAE,EAAE,wCAAwC;YAC5C,IAAI,EAAE,kEAAkE;YACxE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;gBACxB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;gBACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;oBAC9C,GAAG,EAAE,QAAQ,EAAE;oBACf,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;iBACzC,CAAC,CAAA;gBACF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBAClC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC,CAAA;gBAEvE,MAAM,IAAI,GAAG,IAAI,GAAG,CAClB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CACzD,CAAA;gBACD,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;gBAE7D,sEAAsE;gBACtE,MAAM,CAAC,KAAK,CAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;gBACrD,MAAM,CAAC,SAAS,CAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;gBAE5D,oEAAoE;gBACpE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAQ,CAAA;gBACvC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;gBACtC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;gBAEvC,kEAAkE;gBAClE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBACnC,MAAM,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;gBAC1D,MAAM,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YACnE,CAAC;SACF;QACD;YACE,EAAE,EAAE,6BAA6B;YACjC,IAAI,EAAE,kDAAkD;YACxD,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;gBACxB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;gBACjC,IAAI,MAAW,CAAA;gBACf,IAAI,CAAC;oBACH,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;wBAC7B,GAAG,EAAE,QAAQ,EAAE;wBACf,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,MAAM;wBACd,IAAI,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE;qBACrC,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,GAAG,GAAG,CAAA;gBACd,CAAC;gBACD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,4CAA4C,CAAC,CAAA;gBAC/D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBACzC,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAC3C,4BAA4B,CAC7B,CAAA;YACH,CAAC;SACF;KACF;CACF,CAAA"}
1
+ {"version":3,"file":"changes-query-api.js","sourceRoot":"","sources":["../../src/suites/changes-query-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;GAIG;AACH,OAAO,MAAM,MAAM,sBAAsB,CAAA;AASzC,MAAM,CAAC,MAAM,eAAe,GAAiB;IAC3C,EAAE,EAAE,mBAAmB;IACvB,IAAI,EAAE,kCAAkC;IAExC,KAAK,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;QACjB,MAAM,KAAK,GAAQ,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QAC1C,MAAM,YAAY,GAAG,MAAM,CAAA;QAE3B,sEAAsE;QACtE,SAAS,QAAQ;YACf,OAAO,IAAI,GAAG,CACZ,UAAU,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,QAAQ,EACjD,GAAG,CAAC,SAAS,CACd,CAAC,QAAQ,EAAE,CAAA;QACd,CAAC;QAED,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,CAAA;QACvC,MAAM,GAAG,CAAC,WAAW,CAAC;YACpB,gBAAgB,EAAE;gBAChB,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;gBACnB,IAAI,EAAE,kBAAkB;gBACxB,UAAU,EAAE,KAAK,CAAC,GAAG;aACtB;YACD,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAA;QACF,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;YAC7B,GAAG,EAAE,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;YACpE,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE;SACzC,CAAC,CAAA;QACF,mEAAmE;QACnE,KAAK,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC7B,GAAG,EAAE,IAAI,GAAG,CACV,UAAU,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,IAAI,EAAE,EAAE,EACjD,GAAG,CAAC,SAAS,CACd,CAAC,QAAQ,EAAE;gBACZ,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,EAAE,EAAE,EAAE;aACb,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;YAC7B,GAAG,EAAE,IAAI,GAAG,CACV,UAAU,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,KAAK,EAC9C,GAAG,CAAC,SAAS,CACd,CAAC,QAAQ,EAAE;YACZ,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAA;QAEF,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAA;IAC1C,CAAC;IAED,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;QACvB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC7B,GAAG,EAAE,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;gBACnE,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAA;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IAED,KAAK,EAAE;QACL;YACE,EAAE,EAAE,wCAAwC;YAC5C,IAAI,EAAE,kEAAkE;YACxE,QAAQ,EAAE,CAAC,mDAAmD,CAAC;YAC/D,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;gBACxB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;gBACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;oBAC9C,GAAG,EAAE,QAAQ,EAAE;oBACf,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;iBACzC,CAAC,CAAA;gBACF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBAClC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC,CAAA;gBAEvE,MAAM,IAAI,GAAG,IAAI,GAAG,CAClB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CACzD,CAAA;gBACD,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;gBAE7D,sEAAsE;gBACtE,MAAM,CAAC,KAAK,CAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;gBACrD,MAAM,CAAC,SAAS,CAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;gBAE5D,oEAAoE;gBACpE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAQ,CAAA;gBACvC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;gBACtC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;gBAEvC,kEAAkE;gBAClE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBACnC,MAAM,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;gBAC1D,MAAM,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YACnE,CAAC;SACF;QACD;YACE,EAAE,EAAE,6BAA6B;YACjC,IAAI,EAAE,kDAAkD;YACxD,QAAQ,EAAE,CAAC,oDAAoD,CAAC;YAChE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;gBACxB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;gBACjC,IAAI,MAAW,CAAA;gBACf,IAAI,CAAC;oBACH,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;wBAC7B,GAAG,EAAE,QAAQ,EAAE;wBACf,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,MAAM;wBACd,IAAI,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE;qBACrC,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,GAAG,GAAG,CAAA;gBACd,CAAC;gBACD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,4CAA4C,CAAC,CAAA;gBAC/D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBACzC,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAC3C,4BAA4B,CAC7B,CAAA;YACH,CAAC;SACF;QACD;YACE,EAAE,EAAE,6BAA6B;YACjC,IAAI,EAAE,wDAAwD;YAC9D,QAAQ,EAAE;gBACR,oDAAoD;gBACpD,kDAAkD;aACnD;YACD,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;gBACxB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;gBACjC,mEAAmE;gBACnE,qEAAqE;gBACrE,oDAAoD;gBACpD,IAAI,aAAkB,CAAA;gBACtB,IAAI,CAAC;oBACH,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;wBAC7B,GAAG,EAAE,QAAQ,EAAE;wBACf,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,MAAM;wBACd,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;qBACpB,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,aAAa,GAAG,GAAG,CAAA;gBACrB,CAAC;gBACD,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,6CAA6C,CAAC,CAAA;gBACvE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBAChD,MAAM,CAAC,KAAK,CACV,aAAa,CAAC,IAAI,CAAC,IAAI,EACvB,kDAAkD,CACnD,CAAA;YACH,CAAC;SACF;QACD;YACE,EAAE,EAAE,kCAAkC;YACtC,IAAI,EACF,qEAAqE;gBACrE,UAAU;YACZ,QAAQ,EAAE;gBACR,mDAAmD;gBACnD,kDAAkD;aACnD;YACD,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;gBACxB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;gBACjC,wEAAwE;gBACxE,oEAAoE;gBACpE,qCAAqC;gBACrC,IAAI,aAAkB,CAAA;gBACtB,IAAI,CAAC;oBACH,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;wBAC7B,GAAG,EAAE,QAAQ,EAAE;wBACf,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,MAAM;wBACd,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE;qBAC1D,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,aAAa,GAAG,GAAG,CAAA;gBACrB,CAAC;gBACD,MAAM,CAAC,EAAE,CACP,aAAa,EACb,kDAAkD,CACnD,CAAA;gBACD,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBAChD,MAAM,CAAC,KAAK,CACV,aAAa,CAAC,IAAI,CAAC,IAAI,EACvB,kDAAkD,CACnD,CAAA;YACH,CAAC;SACF;KACF;CACF,CAAA"}
@@ -0,0 +1,27 @@
1
+ import type { Suite } from '../harness/types.js';
2
+ interface State {
3
+ alice: any;
4
+ bob: any;
5
+ chunkedSupported: boolean;
6
+ /** Absolute URL of a chunk member (no trailing slash). */
7
+ chunkUrl: (options: {
8
+ collectionId: string;
9
+ resourceId: string;
10
+ index: number | string;
11
+ }) => string;
12
+ /** Absolute URL of a chunk container (trailing slash). */
13
+ chunksListUrl: (options: {
14
+ collectionId: string;
15
+ resourceId: string;
16
+ }) => string;
17
+ /** Absolute URL of a Resource member. */
18
+ resourceUrl: (options: {
19
+ collectionId: string;
20
+ resourceId: string;
21
+ }) => string;
22
+ /** Creates a parent Resource under the plaintext `data` Collection. */
23
+ createParent: (resourceId: string) => Promise<void>;
24
+ }
25
+ export declare const chunksApi: Suite<State>;
26
+ export {};
27
+ //# sourceMappingURL=chunks-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks-api.d.ts","sourceRoot":"","sources":["../../src/suites/chunks-api.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEhD,UAAU,KAAK;IACb,KAAK,EAAE,GAAG,CAAA;IACV,GAAG,EAAE,GAAG,CAAA;IACR,gBAAgB,EAAE,OAAO,CAAA;IACzB,0DAA0D;IAC1D,QAAQ,EAAE,CAAC,OAAO,EAAE;QAClB,YAAY,EAAE,MAAM,CAAA;QACpB,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KACvB,KAAK,MAAM,CAAA;IACZ,0DAA0D;IAC1D,aAAa,EAAE,CAAC,OAAO,EAAE;QACvB,YAAY,EAAE,MAAM,CAAA;QACpB,UAAU,EAAE,MAAM,CAAA;KACnB,KAAK,MAAM,CAAA;IACZ,yCAAyC;IACzC,WAAW,EAAE,CAAC,OAAO,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAA;IAC9E,uEAAuE;IACvE,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpD;AAgFD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,KAAK,CAysBlC,CAAA"}