diff --git a/packages/access-client/src/capabilities/store.js b/packages/access-client/src/capabilities/store.js index 934cbf666..08d00550f 100644 --- a/packages/access-client/src/capabilities/store.js +++ b/packages/access-client/src/capabilities/store.js @@ -140,6 +140,17 @@ export const list = base.derive({ * be stored. */ with: URI.match({ protocol: 'did:' }), + nb: { + /** + * A pointer that can be moved back and forth on the list. + * It can be used to paginate a list for instance. + */ + cursor: Schema.string().optional(), + /** + * Maximum number of items per page. + */ + size: Schema.integer().optional(), + }, derives: (claimed, delegated) => { if (claimed.with !== delegated.with) { return new Failure( diff --git a/packages/access-client/src/capabilities/upload.js b/packages/access-client/src/capabilities/upload.js index eb1f25250..840ba2634 100644 --- a/packages/access-client/src/capabilities/upload.js +++ b/packages/access-client/src/capabilities/upload.js @@ -8,7 +8,7 @@ * * @module */ -import { capability, Link, URI } from '@ucanto/validator' +import { capability, Link, URI, Schema } from '@ucanto/validator' import { codec as CAR } from '@ucanto/transport/car' import { equalWith, fail, equal } from './utils.js' import { top } from './top.js' @@ -140,6 +140,17 @@ export const list = base.derive({ to: capability({ can: 'upload/list', with: URI.match({ protocol: 'did:' }), + nb: { + /** + * A pointer that can be moved back and forth on the list. + * It can be used to paginate a list for instance. + */ + cursor: Schema.string().optional(), + /** + * Maximum number of items per page. + */ + size: Schema.integer().optional(), + }, }), /** * `upload/list` can be derived from the `upload/*` & `*` capability @@ -150,4 +161,4 @@ export const list = base.derive({ // ⚠️ We export imports here so they are not omited in generated typedefs // @see https://github.com/microsoft/TypeScript/issues/51548 -export { Link } +export { Link, Schema } diff --git a/packages/access-client/test/capabilities/upload.test.js b/packages/access-client/test/capabilities/upload.test.js index 31422a8a1..0fb3fdc1d 100644 --- a/packages/access-client/test/capabilities/upload.test.js +++ b/packages/access-client/test/capabilities/upload.test.js @@ -328,6 +328,7 @@ describe('upload capabilities', function () { audience: w3, with: account.did(), proofs: [await any], + nb: {}, }) const result = await access(await list.delegate(), { @@ -357,6 +358,7 @@ describe('upload capabilities', function () { issuer: bob, with: account.did(), proofs: [await upload.delegate()], + nb: {}, }) const result = await access(await list.delegate(), { @@ -379,6 +381,7 @@ describe('upload capabilities', function () { audience: bob, with: account.did(), proofs: [await any], + nb: {}, }) const list = Upload.list.invoke({ @@ -386,6 +389,7 @@ describe('upload capabilities', function () { issuer: bob, with: account.did(), proofs: [await delegation.delegate()], + nb: {}, }) const result = await access(await list.delegate(), {