iso-ucan 0.2.1 → 0.4.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.
@@ -1,12 +1,6 @@
1
1
  /**
2
2
  * @import {StandardSchemaV1} from '@standard-schema/spec'
3
- */
4
- /**
5
- * @template {StandardSchemaV1} Schema
6
- * @template {string} [Cmd=string]
7
- * @typedef {Object} CapabilityOptions
8
- * @prop {Schema} schema
9
- * @prop {Cmd} cmd
3
+ * @import {CapabilityOptions, CapabilityDelegateOptions} from './types.js'
10
4
  */
11
5
  /**
12
6
  * @template {StandardSchemaV1} Schema
@@ -25,6 +19,9 @@ export class Capability<Schema extends StandardSchemaV1, Cmd extends string = st
25
19
  constructor(options: CapabilityOptions<Schema, Cmd>);
26
20
  schema: Schema;
27
21
  cmd: Cmd;
22
+ isRevoked: import("./types.js").IsRevoked | undefined;
23
+ didResolver: import("did-resolver").Resolver | undefined;
24
+ verifierResolver: import("iso-signatures/verifiers/resolver.js").Resolver;
28
25
  /**
29
26
  * @param {StandardSchemaV1.InferInput<Schema>} args
30
27
  */
@@ -39,16 +36,14 @@ export class Capability<Schema extends StandardSchemaV1, Cmd extends string = st
39
36
  /**
40
37
  * Create a delegation for this capability
41
38
  *
42
- * @param {import("./types.js").CapabilityDelegateOptions} options
39
+ * @param {CapabilityDelegateOptions<Schema>} options
43
40
  * @returns {Promise<Delegation>}
44
41
  */
45
- delegate(options: import("./types.js").CapabilityDelegateOptions): Promise<Delegation>;
42
+ delegate(options: CapabilityDelegateOptions<Schema>): Promise<Delegation>;
46
43
  }
47
- export type CapabilityOptions<Schema extends StandardSchemaV1, Cmd extends string = string> = {
48
- schema: Schema;
49
- cmd: Cmd;
50
- };
51
44
  import type { StandardSchemaV1 } from '@standard-schema/spec';
52
45
  import { Invocation } from './invocation.js';
46
+ import type { CapabilityDelegateOptions } from './types.js';
53
47
  import { Delegation } from './delegation.js';
48
+ import type { CapabilityOptions } from './types.js';
54
49
  //# sourceMappingURL=capability.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../../src/capability.js"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;;;;;GAMG;AAEH;;;GAGG;AACH,wBAHgC,MAAM,SAAzB,gBAAkB,EACR,GAAG,SAAb,MAAQ;IAWnB;;;;OAIG;IACH,6BAJa,gBAAkB,gBAClB,MAAQ,oBACV,iBAAiB,CAAC,QAAM,EAAE,KAAG,CAAC,+BAIxC;IAfD;;OAEG;IACH,qBAFW,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,EAKxC;IAFC,eAA4B;IAC5B,SAAsB;IAYxB;;OAEG;IACH,eAFW,4BAA4B,MAAM,CAAC,yCAK7C;IAED;;;;;OAKG;IACH,gBAHW,OAAO,YAAY,EAAE,uBAAuB,CAAC,MAAM,CAAC,GAClD,OAAO,CAAC,UAAU,CAAC,CAoB/B;IAED;;;;;OAKG;IACH,kBAHW,OAAO,YAAY,EAAE,yBAAyB,GAC5C,OAAO,CAAC,UAAU,CAAC,CAI/B;CACF;8BAxE+B,MAAM,SAAzB,gBAAkB,EACR,GAAG,SAAb,MAAQ;YAEX,MAAM;SACN,GAAG;;sCARsB,uBAAuB;2BAH/B,iBAAiB;2BADjB,iBAAiB"}
1
+ {"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../../src/capability.js"],"names":[],"mappings":"AAKA;;;GAGG;AAEH;;;GAGG;AACH,wBAHgC,MAAM,SAAzB,gBAAkB,EACR,GAAG,SAAb,MAAQ;IAcnB;;;;OAIG;IACH,6BAJa,gBAAkB,gBAClB,MAAQ,oBACV,kBAAkB,QAAM,EAAE,KAAG,CAAC,+BAIxC;IAlBD;;OAEG;IACH,qBAFW,kBAAkB,MAAM,EAAE,GAAG,CAAC,EAQxC;IALC,eAA4B;IAC5B,SAAsB;IACtB,sDAAkC;IAClC,yDAAsC;IACtC,0EAAgD;IAYlD;;OAEG;IACH,eAFW,4BAA4B,MAAM,CAAC,yCAK7C;IAED;;;;;OAKG;IACH,gBAHW,OAAO,YAAY,EAAE,uBAAuB,CAAC,MAAM,CAAC,GAClD,OAAO,CAAC,UAAU,CAAC,CA4B/B;IAED;;;;;OAKG;IACH,kBAHW,0BAA0B,MAAM,CAAC,GAC/B,OAAO,CAAC,UAAU,CAAC,CAM/B;CACF;sCAlFkC,uBAAuB;2BAH/B,iBAAiB;+CAImB,YAAY;2BALhD,iBAAiB;uCAKmB,YAAY"}
@@ -38,10 +38,4 @@ import type { RouteOutput } from './types';
38
38
  import type { InferProtocol } from './types';
39
39
  import type { ClientOptions } from './types';
40
40
  import type { RouterClient } from './types';
41
- import type { StandardSchemaV1 as StandardSchemaV1_1 } from './types';
42
- import type { Capability as Capability_1 } from './capability';
43
- import type { RouteOutput as RouteOutput_1 } from './types';
44
- import type { InferProtocol as InferProtocol_1 } from './types';
45
- import type { ClientOptions as ClientOptions_1 } from './types';
46
- import type { RouterClient as RouterClient_1 } from './types';
47
41
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.js"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;GASG;AAEH;;;;GAIG;AACH,6BAJiG,CAAC,SAArF,cAAe,MAAM,CAAC,MAAM,EAAE,YAAY,WAAW,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAE,WACrF,aAAa,GACX,aAAa,CAAC,CAAC,CAgC3B;;;;sBA5C0D,CAAC,SAA/C;IAAG,GAAG,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;CAAG;SAEhD,MAAM;kBACN,WAAW,gBAAgB,EAAE,MAAM,CAAC,EAAE;YACtC,cAAc,MAAM,CAAC,MAAM,EAAE,YAAY,WAAW,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;aACjF,aAAa;kBACb,aAAa,CAAC,CAAC;;sCAZmE,SAAS;gCACxE,cAAc;iCADiD,SAAS;mCAAT,SAAS;mCAAT,SAAS;kCAAT,SAAS;4DAAT,SAAS;gDACxE,cAAc;kDADiD,SAAS;sDAAT,SAAS;sDAAT,SAAS;oDAAT,SAAS"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.js"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;GASG;AAEH;;;;GAIG;AACH,6BAJiG,CAAC,SAArF,cAAe,MAAM,CAAC,MAAM,EAAE,YAAY,WAAW,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAE,WACrF,aAAa,GACX,aAAa,CAAC,CAAC,CAgC3B;;;;sBA5C0D,CAAC,SAA/C;IAAG,GAAG,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;CAAG;SAEhD,MAAM;kBACN,WAAW,gBAAgB,EAAE,MAAM,CAAC,EAAE;YACtC,cAAc,MAAM,CAAC,MAAM,EAAE,YAAY,WAAW,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;aACjF,aAAa;kBACb,aAAa,CAAC,CAAC;;sCAZmE,SAAS;gCACxE,cAAc;iCADiD,SAAS;mCAAT,SAAS;mCAAT,SAAS;kCAAT,SAAS"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @import {DelegationValidateOptions, Policy, DelegationOptions, DelegationPayload, DID, DIDURL} from './types.js'
2
+ * @import {DelegationValidateOptions, Policy, DelegationOptions, DelegationPayload, DID, DIDURL, StandardSchemaV1} from './types.js'
3
3
  * @import {CID} from 'multiformats'
4
4
  */
5
5
  /**
@@ -7,24 +7,32 @@
7
7
  */
8
8
  export class Delegation {
9
9
  /**
10
+ * Create a delegation from bytes and validate it
11
+ *
12
+ * Does not validate "not before" time, call {@link Delegation.validate} to validate it
10
13
  *
11
14
  * @param {import("./types.js").DelegationFromOptions} options
12
15
  */
13
16
  static from(options: import("./types.js").DelegationFromOptions): Promise<Delegation>;
17
+ /**
18
+ * Create a delegation from a base64 encoded string
19
+ *
20
+ * @param {string} token
21
+ */
22
+ static fromString(token: string): Promise<Delegation>;
14
23
  /**
15
24
  *
16
- * @param {DelegationOptions & { cmd: string }} options
25
+ * @template {StandardSchemaV1} Schema
26
+ * @param {DelegationOptions<Schema>} options
17
27
  */
18
- static create(options: DelegationOptions & {
19
- cmd: string;
20
- }): Promise<Delegation>;
28
+ static create<Schema extends StandardSchemaV1>(options: DelegationOptions<Schema>): Promise<Delegation>;
21
29
  /**
22
30
  *
23
31
  * @param {import("./types.js").DecodedEnvelope<'dlg'>} envelope
24
- * @param {Uint8Array} bytes
32
+ * @param {Uint8Array<ArrayBuffer>} bytes
25
33
  * @param {CID} cid
26
34
  */
27
- constructor(envelope: import("./types.js").DecodedEnvelope<"dlg">, bytes: Uint8Array, cid: CID);
35
+ constructor(envelope: import("./types.js").DecodedEnvelope<"dlg">, bytes: Uint8Array<ArrayBuffer>, cid: CID);
28
36
  /** @type {DIDURL} */
29
37
  iss: DIDURL;
30
38
  /** @type {DID} */
@@ -37,16 +45,20 @@ export class Delegation {
37
45
  pol: Policy;
38
46
  /** @type {number | undefined} */
39
47
  nbf: number | undefined;
40
- /** @type {Uint8Array} */
41
- nonce: Uint8Array;
48
+ /** @type {Uint8Array<ArrayBuffer>} */
49
+ nonce: Uint8Array<ArrayBuffer>;
42
50
  /** @type {Record<string, unknown> | undefined} */
43
51
  meta: Record<string, unknown> | undefined;
44
52
  /** @type {number | null} */
45
53
  exp: number | null;
46
54
  envelope: import("./types.js").DecodedEnvelope<"dlg">;
47
- bytes: Uint8Array<ArrayBufferLike>;
55
+ bytes: Uint8Array<ArrayBuffer>;
48
56
  cid: CID<any, number, number, import("multiformats").Version>;
49
57
  /**
58
+ * Validate a delegation
59
+ *
60
+ * Checks the structure, "not before" time, signature, and revocation status
61
+ *
50
62
  * @param {DelegationValidateOptions} options
51
63
  */
52
64
  validate(options: DelegationValidateOptions): Promise<boolean>;
@@ -79,5 +91,6 @@ import type { DID } from './types.js';
79
91
  import type { Policy } from './types.js';
80
92
  import type { CID } from 'multiformats';
81
93
  import type { DelegationValidateOptions } from './types.js';
94
+ import type { StandardSchemaV1 } from './types.js';
82
95
  import type { DelegationOptions } from './types.js';
83
96
  //# sourceMappingURL=delegation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"delegation.d.ts","sourceRoot":"","sources":["../../src/delegation.js"],"names":[],"mappings":"AAgBA;;;GAGG;AAEH;;GAEG;AACH;IA0CE;;;OAGG;IACH,qBAFW,OAAO,YAAY,EAAE,qBAAqB,uBAuBpD;IAED;;;OAGG;IACH,uBAFW,iBAAiB,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,uBA6C7C;IAhGD;;;;;OAKG;IACH,sBAJW,OAAO,YAAY,EAAE,eAAe,CAAC,KAAK,CAAC,SAC3C,UAAU,OACV,GAAG,EAgBb;IAvCD,qBAAqB;IACrB,KADW,MAAM,CACd;IACH,kBAAkB;IAClB,KADW,GAAG,CACX;IACH,yBAAyB;IACzB,KADW,GAAG,GAAG,IAAI,CAClB;IACH,qBAAqB;IACrB,KADW,MAAM,CACd;IACH,qBAAqB;IACrB,KADW,MAAM,CACd;IACH,iCAAiC;IACjC,KADW,MAAM,GAAG,SAAS,CAC1B;IACH,yBAAyB;IACzB,OADW,UAAU,CAChB;IACL,kDAAkD;IAClD,MADW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAC1C;IACJ,4BAA4B;IAC5B,KADW,MAAM,GAAG,IAAI,CACrB;IASD,sDAAwB;IACxB,mCAAkB;IAClB,8DAAc;IAyFhB;;OAEG;IACH,kBAFW,yBAAyB,oBAanC;IAED,mBAEC;IACD;;;;;;;;;;;;;;;;;;;;;MAuBC;CACF;4BAxKsG,YAAY;yBAAZ,YAAY;4BAAZ,YAAY;yBAC7F,cAAc;+CADmE,YAAY;uCAAZ,YAAY"}
1
+ {"version":3,"file":"delegation.d.ts","sourceRoot":"","sources":["../../src/delegation.js"],"names":[],"mappings":"AAgBA;;;GAGG;AAEH;;GAEG;AACH;IA0CE;;;;;;OAMG;IACH,qBAFW,OAAO,YAAY,EAAE,qBAAqB,uBAuBpD;IAED;;;;OAIG;IACH,yBAFW,MAAM,uBAiBhB;IAED;;;;OAIG;IACH,cAHgC,MAAM,SAAzB,gBAAkB,WACpB,kBAAkB,MAAM,CAAC,uBA6CnC;IA1HD;;;;;OAKG;IACH,sBAJW,OAAO,YAAY,EAAE,eAAe,CAAC,KAAK,CAAC,SAC3C,UAAU,CAAC,WAAW,CAAC,OACvB,GAAG,EAgBb;IAvCD,qBAAqB;IACrB,KADW,MAAM,CACd;IACH,kBAAkB;IAClB,KADW,GAAG,CACX;IACH,yBAAyB;IACzB,KADW,GAAG,GAAG,IAAI,CAClB;IACH,qBAAqB;IACrB,KADW,MAAM,CACd;IACH,qBAAqB;IACrB,KADW,MAAM,CACd;IACH,iCAAiC;IACjC,KADW,MAAM,GAAG,SAAS,CAC1B;IACH,sCAAsC;IACtC,OADW,UAAU,CAAC,WAAW,CAAC,CAC7B;IACL,kDAAkD;IAClD,MADW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAC1C;IACJ,4BAA4B;IAC5B,KADW,MAAM,GAAG,IAAI,CACrB;IASD,sDAAwB;IACxB,+BAAkB;IAClB,8DAAc;IAmHhB;;;;;;OAMG;IACH,kBAFW,yBAAyB,oBAanC;IAED,mBAEC;IAED;;;;;;;;;;;;;;;;;;;;;MAuBC;CACF;4BAvMwH,YAAY;yBAAZ,YAAY;4BAAZ,YAAY;yBAC/G,cAAc;+CADqF,YAAY;sCAAZ,YAAY;uCAAZ,YAAY"}
@@ -42,7 +42,7 @@ export function isDelegationPayload(payload: Payload): payload is DelegationPayl
42
42
  * @param {EnvelopeSignOptions} options
43
43
  */
44
44
  export function sign(options: EnvelopeSignOptions): Promise<{
45
- signature: Uint8Array<ArrayBufferLike>;
45
+ signature: Uint8Array<ArrayBuffer>;
46
46
  signaturePayload: SignaturePayload;
47
47
  }>;
48
48
  /**
@@ -52,7 +52,7 @@ export function sign(options: EnvelopeSignOptions): Promise<{
52
52
  * @param {EnvelopeEncodeOptions} options
53
53
  *
54
54
  */
55
- export function encode(options: EnvelopeEncodeOptions): ByteView<(Uint8Array<ArrayBufferLike> | SignaturePayload<unknown>)[]>;
55
+ export function encode(options: EnvelopeEncodeOptions): Uint8Array<ArrayBuffer>;
56
56
  /**
57
57
  * Decode a UCAN envelope
58
58
  *
@@ -75,7 +75,6 @@ import type { InvocationPayload } from './types.js';
75
75
  import type { DelegationPayload } from './types.js';
76
76
  import type { EnvelopeSignOptions } from './types.js';
77
77
  import type { EnvelopeEncodeOptions } from './types.js';
78
- import type { ByteView } from 'multiformats';
79
78
  import type { EnvelopeDecodeOptions } from './types.js';
80
79
  import type { DecodedEnvelope } from './types.js';
81
80
  //# sourceMappingURL=envelope.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/envelope.js"],"names":[],"mappings":"AAYA;;;;;;;;GAQG;AACH,6CALG;IAA6B,IAAI,EAAzB,WAAW;IACM,OAAO,EAAxB,OAAO;IACU,OAAO;IAC8B,aAAa,EAAnE,OAAO,sBAAsB,EAAE,aAAa;CACtD,oBAgBA;AAED;;;;GAIG;AACH,8CAFW,UAAU;;;;EAkCpB;AAED;;;;;GAKG;AACH,6CAHW,OAAO,GACL,OAAO,IAAI,iBAAiB,CAIxC;AAED;;;;;GAKG;AACH,6CAHW,OAAO,GACL,OAAO,IAAI,iBAAiB,CAIxC;AAED;;;GAGG;AACH,8BAFW,mBAAmB;;;GAgB7B;AAED;;;;;;GAMG;AACH,gCAHW,qBAAqB,yEAS/B;AAED;;;;;;;GAOG;AACH,uBAL2B,IAAI,SAAlB,WAAa,WAEf,qBAAqB,GACnB,gBAAgB,IAAI,CAAC,CAgCjC;AAtKD;;;GAGG;AAEH,cAAc;AACd,sBAAuB,YAAY,CAAA;iCALuK,YAAY;6BAAZ,YAAY;sCAAZ,YAAY;uCAAZ,YAAY;uCAAZ,YAAY;yCAAZ,YAAY;2CAAZ,YAAY;8BACzL,cAAc;2CAD+J,YAAY;qCAAZ,YAAY"}
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/envelope.js"],"names":[],"mappings":"AAYA;;;;;;;;GAQG;AACH,6CALG;IAA6B,IAAI,EAAzB,WAAW;IACM,OAAO,EAAxB,OAAO;IACU,OAAO;IAC8B,aAAa,EAAnE,OAAO,sBAAsB,EAAE,aAAa;CACtD,oBAgBA;AAED;;;;GAIG;AACH,8CAFW,UAAU;;;;EAkCpB;AAED;;;;;GAKG;AACH,6CAHW,OAAO,GACL,OAAO,IAAI,iBAAiB,CAIxC;AAED;;;;;GAKG;AACH,6CAHW,OAAO,GACL,OAAO,IAAI,iBAAiB,CAIxC;AAED;;;GAGG;AACH,8BAFW,mBAAmB;;;GAkB7B;AAED;;;;;;GAMG;AACH,gCAHW,qBAAqB,GAQZ,UAAU,CAAC,WAAW,CAAC,CAC1C;AAED;;;;;;;GAOG;AACH,uBAL2B,IAAI,SAAlB,WAAa,WAEf,qBAAqB,GACnB,gBAAgB,IAAI,CAAC,CAgCjC;AAxKD;;;GAGG;AAEH,cAAc;AACd,sBAAuB,YAAY,CAAA;iCALuK,YAAY;6BAAZ,YAAY;sCAAZ,YAAY;uCAAZ,YAAY;uCAAZ,YAAY;yCAAZ,YAAY;2CAAZ,YAAY;2CAAZ,YAAY;qCAAZ,YAAY"}
@@ -24,11 +24,11 @@ export class Invocation {
24
24
  /**
25
25
  *
26
26
  * @param {import("./types.js").DecodedEnvelope<'inv'>} envelope
27
- * @param {Uint8Array} bytes
27
+ * @param {Uint8Array<ArrayBuffer>} bytes
28
28
  * @param {CID} cid
29
29
  * @param {Delegation[]} delegations
30
30
  */
31
- constructor(envelope: import("./types.js").DecodedEnvelope<"inv">, bytes: Uint8Array, cid: CID, delegations: Delegation[]);
31
+ constructor(envelope: import("./types.js").DecodedEnvelope<"inv">, bytes: Uint8Array<ArrayBuffer>, cid: CID, delegations: Delegation[]);
32
32
  /**
33
33
  * @type {Delegation[]}
34
34
  */
@@ -39,7 +39,7 @@ export class Invocation {
39
39
  cid: CID;
40
40
  envelope: import("./types.js").DecodedEnvelope<"inv">;
41
41
  payload: import("./types.js").InvocationPayload;
42
- bytes: Uint8Array<ArrayBufferLike>;
42
+ bytes: Uint8Array<ArrayBuffer>;
43
43
  }
44
44
  import type { Delegation } from './delegation.js';
45
45
  import type { CID } from 'multiformats';
@@ -1 +1 @@
1
- {"version":3,"file":"invocation.d.ts","sourceRoot":"","sources":["../../src/invocation.js"],"names":[],"mappings":"AA0KA;;;;GAIG;AACH,sCAHW,OAAO,YAAY,EAAE,iBAAiB,UACtC,UAAU,EAAE,WAqDtB;AApND;;;GAGG;AAEH;;GAEG;AACH;IA0BE;;;OAGG;IACH,qBAFW,OAAO,YAAY,EAAE,qBAAqB,uBA6CpD;IAED;;OAEG;IACH,uBAFW,OAAO,YAAY,EAAE,iBAAiB,uBAmDhD;IApHD;;;;;;OAMG;IACH,sBALW,OAAO,YAAY,EAAE,eAAe,CAAC,KAAK,CAAC,SAC3C,UAAU,OACV,GAAG,eACH,UAAU,EAAE,EAQtB;IAvBD;;OAEG;IACH,aAFU,UAAU,EAAE,CAEX;IAEX;;OAEG;IACH,KAFU,GAAG,CAEV;IAUD,sDAAwB;IACxB,gDAA+B;IAC/B,mCAAkB;CA2GrB;gCAvI4B,iBAAiB;yBACxB,cAAc"}
1
+ {"version":3,"file":"invocation.d.ts","sourceRoot":"","sources":["../../src/invocation.js"],"names":[],"mappings":"AAoLA;;;;GAIG;AACH,sCAHW,OAAO,YAAY,EAAE,iBAAiB,UACtC,UAAU,EAAE,WA2DtB;AAnOD;;;GAGG;AAEH;;GAEG;AACH;IA0BE;;;OAGG;IACH,qBAFW,OAAO,YAAY,EAAE,qBAAqB,uBA+CpD;IAED;;OAEG;IACH,uBAFW,OAAO,YAAY,EAAE,iBAAiB,uBA0DhD;IA7HD;;;;;;OAMG;IACH,sBALW,OAAO,YAAY,EAAE,eAAe,CAAC,KAAK,CAAC,SAC3C,UAAU,CAAC,WAAW,CAAC,OACvB,GAAG,eACH,UAAU,EAAE,EAQtB;IAvBD;;OAEG;IACH,aAFU,UAAU,EAAE,CAEX;IAEX;;OAEG;IACH,KAFU,GAAG,CAEV;IAUD,sDAAwB;IACxB,gDAA+B;IAC/B,+BAAkB;CAoHrB;gCAhJ4B,iBAAiB;yBACxB,cAAc"}
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Validates invocation arguments against a UCAN policy.
3
3
  *
4
- * @template {Record<string, unknown>} Args
4
+ * @template {unknown} Args
5
5
  * @param {Args} args The arguments of the eventual invocation.
6
6
  * @param {import("./types.js").Policy<Args>} policy An array of policy statements.
7
7
  * @returns {boolean} True if the args are valid according to the policy, false otherwise.
8
8
  */
9
- export function validate<Args extends Record<string, unknown>>(args: Args, policy: import("./types.js").Policy<Args>): boolean;
9
+ export function validate<Args extends unknown>(args: Args, policy: import("./types.js").Policy<Args>): boolean;
10
10
  //# sourceMappingURL=policy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/policy.js"],"names":[],"mappings":"AAoQA;;;;;;;GAOG;AACH,yBALuC,IAAI,SAA7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAE,QAC3B,IAAI,UACJ,OAAO,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,GAC/B,OAAO,CAKnB"}
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/policy.js"],"names":[],"mappings":"AAoQA;;;;;;;GAOG;AACH,yBALuB,IAAI,SAAd,OAAS,QACX,IAAI,UACJ,OAAO,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,GAC/B,OAAO,CAKnB"}
@@ -34,9 +34,5 @@ import type { StandardSchemaV1 } from './types';
34
34
  import type { Capability } from './capability';
35
35
  import type { RouteOptions } from './types';
36
36
  import type { RouteOutput } from './types';
37
- import type { StandardSchemaV1 as StandardSchemaV1_1 } from './types';
38
- import type { Capability as Capability_1 } from './capability';
39
- import type { RouteOutput as RouteOutput_1 } from './types';
40
- import type { RouteOptions as RouteOptions_1 } from './types';
41
37
  import type { RouteHandlerOptions } from './types';
42
38
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.js"],"names":[],"mappings":"AAIA;;;GAGG;AAEH;;;;;;;;;;GAUG;AAEH;;;;;GAKG;AACH,sBALa,MAAM,EACyB,GAAG,SAAlC,WAAY,gBAAgB,CAAE,WAChC,aAAa,GAAG,EAAE,MAAM,CAAC,GACvB,YAAY,GAAG,EAAE,MAAM,CAAC,CAqBpC;;;;sBAnCmD,CAAC,SAAxC,WAAY,gBAAgB,EAAE,MAAM,CAAE,EACtC,MAAM;SAET,MAAM;kBACN,WAAW,gBAAgB,EAAE,MAAM,CAAC,EAAE;YACtC,YAAY,CAAC,EAAE,MAAM,CAAC;aACtB,aAAa,CAAC,EAAE,MAAM,CAAC;kBACvB,mBAAmB;;sCAbuD,SAAS;gCAChE,cAAc;kCADyC,SAAS;iCAAT,SAAS;4DAAT,SAAS;gDAChE,cAAc;kDADyC,SAAS;oDAAT,SAAS;yCAAT,SAAS"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.js"],"names":[],"mappings":"AAIA;;;GAGG;AAEH;;;;;;;;;;GAUG;AAEH;;;;;GAKG;AACH,sBALa,MAAM,EACyB,GAAG,SAAlC,WAAY,gBAAgB,CAAE,WAChC,aAAa,GAAG,EAAE,MAAM,CAAC,GACvB,YAAY,GAAG,EAAE,MAAM,CAAC,CAqBpC;;;;sBAnCmD,CAAC,SAAxC,WAAY,gBAAgB,EAAE,MAAM,CAAE,EACtC,MAAM;SAET,MAAM;kBACN,WAAW,gBAAgB,EAAE,MAAM,CAAC,EAAE;YACtC,YAAY,CAAC,EAAE,MAAM,CAAC;aACtB,aAAa,CAAC,EAAE,MAAM,CAAC;kBACvB,mBAAmB;;sCAbuD,SAAS;gCAChE,cAAc;kCADyC,SAAS;iCAAT,SAAS;yCAAT,SAAS"}
@@ -29,9 +29,9 @@ export class Store {
29
29
  /**
30
30
  * List proofs by sub and aud
31
31
  *
32
- * @param {import('./types.js').StoreProofsOptions} options
32
+ * @param {Omit<import('./types.js').StoreProofsOptions, 'args'>} options
33
33
  */
34
- proofs(options: import("./types.js").StoreProofsOptions): AsyncGenerator<Delegation, void, unknown>;
34
+ proofs(options: Omit<import("./types.js").StoreProofsOptions, "args">): AsyncGenerator<Delegation, void, unknown>;
35
35
  /**
36
36
  * Resolve a single chain of proofs ending with a root (subject === issuer).
37
37
  * Returns the first such chain found (depth-first).
@@ -39,11 +39,11 @@ export class Store {
39
39
  * @param {import('./types.js').StoreProofsOptions} options
40
40
  * @returns {Promise<Delegation[]>}
41
41
  */
42
- chain({ aud, sub, cmd }: import("./types.js").StoreProofsOptions): Promise<Delegation[]>;
42
+ chain({ aud, sub, cmd, args }: import("./types.js").StoreProofsOptions): Promise<Delegation[]>;
43
43
  #private;
44
44
  }
45
45
  import type { Driver } from 'iso-kv';
46
46
  import { KV } from 'iso-kv';
47
- import type { Delegation } from './delegation.js';
47
+ import { Delegation } from './delegation.js';
48
48
  import type { CID } from 'multiformats';
49
49
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.js"],"names":[],"mappings":"AAYA;;GAEG;AACH;IAOE;;OAEG;IACH,oBAFW,MAAM,EAQhB;IAfD,qBAAqB;IACrB,QADW,MAAM,CACX;IAEN,iBAAiB;IACjB,IADW,EAAE,CACX;IAoCF;;OAEG;IACH,iBAFW,UAAU,EAAE,iBAMtB;IAED;;;;OAIG;IACH,SAFW,MAAM,mCAIhB;IAED;;;;OAIG;IACH,kBAFW,GAAG,uBAQb;IAED;;;;OAIG;IACH,gBAFW,OAAO,YAAY,EAAE,kBAAkB,6CA8BjD;IAED;;;;;;OAMG;IACH,yBAHW,OAAO,YAAY,EAAE,kBAAkB,GACrC,OAAO,CAAC,UAAU,EAAE,CAAC,CAmCjC;;CACF;4BA7JwB,QAAQ;mBALd,QAAQ;gCAIE,iBAAiB;yBAExB,cAAc"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.js"],"names":[],"mappings":"AAaA;;GAEG;AACH;IAOE;;OAEG;IACH,oBAFW,MAAM,EAQhB;IAfD,qBAAqB;IACrB,QADW,MAAM,CACX;IAEN,iBAAiB;IACjB,IADW,EAAE,CACX;IAoCF;;OAEG;IACH,iBAFW,UAAU,EAAE,iBAMtB;IAED;;;;OAIG;IACH,SAFW,MAAM,mCAUhB;IAED;;;;OAIG;IACH,kBAFW,GAAG,uBAQb;IAED;;;;OAIG;IACH,gBAFW,IAAI,CAAC,OAAO,YAAY,EAAE,kBAAkB,EAAE,MAAM,CAAC,6CA8B/D;IAED;;;;;;OAMG;IACH,+BAHW,OAAO,YAAY,EAAE,kBAAkB,GACrC,OAAO,CAAC,UAAU,EAAE,CAAC,CAqCjC;;CACF;4BArKwB,QAAQ;mBANd,QAAQ;2BAEA,iBAAiB;yBAKtB,cAAc"}
@@ -30,7 +30,7 @@ export interface PayloadBase {
30
30
  * The nonce of the UCAN
31
31
  * @see https://github.com/ucan-wg/spec#nonce
32
32
  */
33
- nonce: Uint8Array;
33
+ nonce: Uint8Array<ArrayBuffer>;
34
34
  /**
35
35
  * Meta (asserted, signed data) — is not delegated authority
36
36
  */
@@ -81,15 +81,18 @@ export interface DelegationPayload<Args = unknown> extends PayloadBase {
81
81
  }
82
82
  export type Payload<Args = unknown> = InvocationPayload | DelegationPayload<Args>;
83
83
  export type SignaturePayload<Args = unknown> = {
84
- h: Uint8Array;
84
+ h: Uint8Array<ArrayBuffer>;
85
85
  [payloadTag: PayloadTag]: Payload<Args>;
86
86
  };
87
- export type Envelope<Args = unknown> = [Uint8Array, SignaturePayload<Args>];
87
+ export type Envelope<Args = unknown> = [
88
+ Uint8Array<ArrayBuffer>,
89
+ SignaturePayload<Args>
90
+ ];
88
91
  /**
89
92
  * @see https://github.com/ucan-wg/spec#envelope
90
93
  */
91
94
  export type EnvelopeEncodeOptions = {
92
- signature: Uint8Array;
95
+ signature: Uint8Array<ArrayBuffer>;
93
96
  signaturePayload: SignaturePayload;
94
97
  };
95
98
  export interface EnvelopeSignOptions {
@@ -106,12 +109,12 @@ export interface EnvelopeSignOptions {
106
109
  signer: ISigner;
107
110
  }
108
111
  export interface EnvelopeDecodeOptions {
109
- envelope: Uint8Array;
112
+ envelope: Uint8Array<ArrayBuffer>;
110
113
  }
111
114
  export type DecodedEnvelope<Spec extends PayloadSpec> = {
112
115
  alg: VarsigAlgorithm;
113
116
  enc: VarsigEncoding;
114
- signature: Uint8Array;
117
+ signature: Uint8Array<ArrayBuffer>;
115
118
  payload: Spec extends 'dlg' ? DelegationPayload : InvocationPayload;
116
119
  spec: Spec;
117
120
  version: string;
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../../src/types/envelope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../../src/types/envelope.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ export type ResolveProof = (proof: CID) => Promise<Delegation>;
19
19
  export type IsRevoked = (cid: CID) => Promise<boolean>;
20
20
  export type VerifierResolver = Resolver;
21
21
  export type DidResolver = _DidResolver;
22
- export type CborPrimitive = string | number | boolean | null | bigint | Uint8Array | ArrayBuffer;
22
+ export type CborPrimitive = string | number | boolean | null | bigint | Uint8Array<ArrayBuffer> | ArrayBuffer;
23
23
  export type CborArray = CborValue[] | readonly CborValue[];
24
24
  export type CborObject = {
25
25
  [Key in string]: CborValue;
@@ -30,11 +30,11 @@ export type CborValue = CborPrimitive | CborArray | CborObject;
30
30
  /**
31
31
  * Delegation
32
32
  */
33
- export interface DelegationOptions<Args = unknown> {
33
+ export interface DelegationOptions<Schema extends StandardSchemaV1> {
34
34
  iss: ISigner;
35
35
  aud: DID;
36
36
  sub: DID | null;
37
- pol: Policy<Args>;
37
+ pol: Policy<StandardSchemaV1.InferOutput<Schema>>;
38
38
  /**
39
39
  * Expiration time in seconds or null for no expiration
40
40
  */
@@ -49,29 +49,25 @@ export interface DelegationOptions<Args = unknown> {
49
49
  * Delegation is not valid before this time
50
50
  */
51
51
  nbf?: number;
52
- nonce?: Uint8Array;
52
+ nonce?: Uint8Array<ArrayBuffer>;
53
53
  cmd: string;
54
54
  meta?: CborObject;
55
55
  }
56
- export interface DelegationFromOptions {
57
- bytes: Uint8Array;
58
- isRevoked?: IsRevoked;
59
- didResolver?: DidResolver;
60
- verifierResolver: VerifierResolver;
61
- }
62
56
  export interface DelegationValidateOptions {
63
57
  isRevoked?: IsRevoked;
64
58
  didResolver?: DidResolver;
65
59
  verifierResolver: VerifierResolver;
66
60
  }
67
- export type CapabilityDelegateOptions<Args = unknown> = Omit<DelegationOptions<Args>, 'cmd'>;
61
+ export interface DelegationFromOptions extends DelegationValidateOptions {
62
+ bytes: Uint8Array<ArrayBuffer>;
63
+ }
68
64
  /**
69
65
  * Invocation
70
66
  */
71
67
  /**
72
68
  * Invocation options
73
69
  */
74
- export interface InvocationOptions {
70
+ export interface InvocationOptions extends DelegationValidateOptions {
75
71
  iss: ISigner;
76
72
  aud?: DID;
77
73
  sub: DID;
@@ -95,20 +91,42 @@ export interface InvocationOptions {
95
91
  */
96
92
  iat?: number;
97
93
  nbf?: number;
98
- nonce?: Uint8Array;
94
+ nonce?: Uint8Array<ArrayBuffer>;
99
95
  cause?: CID;
100
96
  meta?: CborObject;
101
97
  }
102
- export interface InvocationFromOptions {
103
- bytes: Uint8Array;
98
+ export interface InvocationFromOptions extends DelegationValidateOptions {
99
+ bytes: Uint8Array<ArrayBuffer>;
104
100
  audience: VerifiableDID;
105
- didResolver?: DidResolver;
106
- verifierResolver: VerifierResolver;
107
- isRevoked?: IsRevoked;
108
101
  resolveProof: ResolveProof;
109
102
  }
110
- export interface CapabilityInvokeOptions<Schema extends StandardSchemaV1> extends Omit<InvocationOptions, 'cmd' | 'args' | 'prf'> {
103
+ /**
104
+ * Capability types
105
+ */
106
+ /**
107
+ * Capability options
108
+ */
109
+ export interface CapabilityOptions<Schema extends StandardSchemaV1, Cmd extends string = string> extends DelegationValidateOptions {
110
+ schema: Schema;
111
+ cmd: Cmd;
112
+ }
113
+ /**
114
+ * Delegate a capability
115
+ */
116
+ export interface CapabilityDelegateOptions<Schema extends StandardSchemaV1> extends Omit<DelegationOptions<Schema>, 'cmd'> {
117
+ /**
118
+ * Store to add the delegation to
119
+ */
120
+ store: Store;
121
+ }
122
+ /**
123
+ * Invoke a capability
124
+ */
125
+ export interface CapabilityInvokeOptions<Schema extends StandardSchemaV1> extends Omit<InvocationOptions, 'cmd' | 'args' | 'prf' | 'verifierResolver' | 'didResolver' | 'isRevoked'> {
111
126
  args: StandardSchemaV1.InferOutput<Schema>;
127
+ /**
128
+ * Store to resolve proofs from
129
+ */
112
130
  store: Store;
113
131
  }
114
132
  /**
@@ -121,6 +139,7 @@ export interface StoreProofsOptions {
121
139
  aud?: DID;
122
140
  sub: DID | null;
123
141
  cmd: string;
142
+ args: CborObject;
124
143
  }
125
144
  /**
126
145
  * Server types
@@ -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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"}
@@ -8,7 +8,7 @@
8
8
  * @returns
9
9
  */
10
10
  export function signaturePayload(envelope: import("./types.js").DecodedEnvelope<PayloadSpec>): {
11
- [x: string]: import("./types.js").InvocationPayload | import("./types.js").DelegationPayload<unknown> | Uint8Array<ArrayBuffer>;
11
+ [x: string]: Uint8Array<ArrayBuffer> | import("./types.js").InvocationPayload | import("./types.js").DelegationPayload<unknown>;
12
12
  h: Uint8Array<ArrayBuffer>;
13
13
  };
14
14
  export function nowInSeconds(): number;
@@ -82,7 +82,7 @@ export function assertIsValidCommand(command: string): void;
82
82
  */
83
83
  export function assertNonce(nonce: unknown): void;
84
84
  /**
85
- * Assert that args is a JSON serializable object.
85
+ * Assert that args is a CBOR serializable object.
86
86
  *
87
87
  * @param {unknown} args
88
88
  */
@@ -140,5 +140,5 @@ export type Selector = z.infer<typeof selector>;
140
140
  import type { PayloadSpec } from './types.js';
141
141
  import { CID } from 'multiformats/cid';
142
142
  import { DID } from 'iso-did';
143
- import { z } from 'zod';
143
+ import { z } from 'zod/v4';
144
144
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.js"],"names":[],"mappings":"AASA;;GAEG;AAEH;;;;;GAKG;AACH,2CAHW,OAAO,YAAY,EAAE,eAAe,CAAC,WAAW,CAAC;;;EAe3D;AAED,uCAEC;AAED;;;GAGG;AACH,8BAFW,OAAO,YAAY,EAAE,eAAe,CAAC,WAAW,CAAC,iCAW3D;AAED;;;;;GAKG;AACH,2CAHW,OAAO,eAAe,EAAE,aAAa,WACrC,OAAO,sBAAsB,EAAE,aAAa,WA+BtD;AAED;;;;GAIG;AACH,sCAFW,MAAM,GAAG,IAAI,QAgBvB;AAED;;;;GAIG;AACH,sCAFW,MAAM,QAMhB;AAED;;;;;GAKG;AACH,qDAHW,OAAO,YAAY,EAAE,eAAe,CAAC,WAAW,CAAC,gBACjD,OAAO,SAAS,EAAE,QAAQ,gBAWpC;AAED;;;;;;GAMG;AACH,0CAJW,OAAO,YAAY,EAAE,eAAe,CAAC,WAAW,CAAC,6BACjD,OAAO,sCAAsC,EAAE,QAAQ,gBACvD,OAAO,SAAS,EAAE,QAAQ,oBAoBpC;AAED;;;;;;;;;;;;;GAaG;AACH,8CAJW,MAAM,GAEJ,IAAI,CAuChB;AAED;;;;;;;;;;;;;GAaG;AACH,mCAXW,OAAO,GAEL,IAAI,CAehB;AACD;;;;GAIG;AACH,iCAFW,OAAO,QASjB;AAED;;;;;;GAMG;AACH,iCAJW,OAAO,GAEL,IAAI,CAWhB;AAED;;;;;GAKG;AACH,sCAHW,OAAO,kBAAkB,EAAE,GAAG,gBAC9B,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,iBAQxC;AAED;;;;;;GAMG;AACH,uCAHG;IAAgC,GAAG;IACV,GAAG;CAAC,iBAU/B;AAgED;;GAEG;AACH,qCAFW,OAAO,QASjB;AAED;;;;;;GAMG;AACH,gCAJW,OAAO,GACL,KAAK,IAAI,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAKjD;AAnFD,iJAeI;AACJ,4KAAyD;AAEzD,oGAGE;AAEF;;GAEG;AAEH;;GAEG;AACH,mKA4BI;AAEJ,kLAA8C;uBApCjC,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC;iCA5TP,YAAY;oBARtB,kBAAkB;oBADlB,SAAS;kBAGX,KAAK"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.js"],"names":[],"mappings":"AASA;;GAEG;AAEH;;;;;GAKG;AACH,2CAHW,OAAO,YAAY,EAAE,eAAe,CAAC,WAAW,CAAC;;;EAe3D;AAED,uCAEC;AAED;;;GAGG;AACH,8BAFW,OAAO,YAAY,EAAE,eAAe,CAAC,WAAW,CAAC,iCAW3D;AAED;;;;;GAKG;AACH,2CAHW,OAAO,eAAe,EAAE,aAAa,WACrC,OAAO,sBAAsB,EAAE,aAAa,WA+BtD;AAED;;;;GAIG;AACH,sCAFW,MAAM,GAAG,IAAI,QAevB;AAED;;;;GAIG;AACH,sCAFW,MAAM,QAMhB;AAED;;;;;GAKG;AACH,qDAHW,OAAO,YAAY,EAAE,eAAe,CAAC,WAAW,CAAC,gBACjD,OAAO,SAAS,EAAE,QAAQ,gBAYpC;AAED;;;;;;GAMG;AACH,0CAJW,OAAO,YAAY,EAAE,eAAe,CAAC,WAAW,CAAC,6BACjD,OAAO,sCAAsC,EAAE,QAAQ,gBACvD,OAAO,SAAS,EAAE,QAAQ,oBAsBpC;AAED;;;;;;;;;;;;;GAaG;AACH,8CAJW,MAAM,GAEJ,IAAI,CAuChB;AAED;;;;;;;;;;;;;GAaG;AACH,mCAXW,OAAO,GAEL,IAAI,CAehB;AACD;;;;GAIG;AACH,iCAFW,OAAO,QASjB;AAED;;;;;;GAMG;AACH,iCAJW,OAAO,GAEL,IAAI,CAWhB;AAED;;;;;GAKG;AACH,sCAHW,OAAO,kBAAkB,EAAE,GAAG,gBAC9B,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,iBAQxC;AAED;;;;;;GAMG;AACH,uCAHG;IAAgC,GAAG;IACV,GAAG;CAAC,iBAU/B;AAgED;;GAEG;AACH,qCAFW,OAAO,QASjB;AAED;;;;;;GAMG;AACH,gCAJW,OAAO,GACL,KAAK,IAAI,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAKjD;AAnFD,iJAeI;AACJ,4KAAyD;AAEzD,oGAGE;AAEF;;GAEG;AAEH;;GAEG;AACH,mKA4BI;AAEJ,kLAA8C;uBApCjC,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC;iCA9TP,YAAY;oBARtB,kBAAkB;oBADlB,SAAS;kBAGX,QAAQ"}
@@ -6,10 +6,10 @@ export function encode(options: import("./types.js").VarsigOptions): Uint8Array<
6
6
  /**
7
7
  * Decode varsig header
8
8
  *
9
- * @param {Uint8Array} buf
9
+ * @param {Uint8Array<ArrayBuffer>} buf
10
10
  * @returns {import('./types.js').DecodeOutput}
11
11
  */
12
- export function decode(buf: Uint8Array): import("./types.js").DecodeOutput;
12
+ export function decode(buf: Uint8Array<ArrayBuffer>): import("./types.js").DecodeOutput;
13
13
  export const VARSIG: 52;
14
14
  export const VERSION: 1;
15
15
  export const EIP191_ENCODING: 57745;
@@ -1 +1 @@
1
- {"version":3,"file":"varsig.d.ts","sourceRoot":"","sources":["../../src/varsig.js"],"names":[],"mappings":"AAuDA;;GAEG;AACH,gCAFW,OAAO,YAAY,EAAE,aAAa,2BAc5C;AA2BD;;;;;;GAMG;AACH,4BAHW,UAAU,GACR,OAAO,YAAY,EAAE,YAAY,CAsD7C;AAvJD,qBAAsB,EAAI,CAAA;AAC1B,sBAAuB,CAAI,CAAA;AAC3B,8BAA+B,KAAM,CAAA;AAErC;;GAEG;AACH,4BAFU,MAAM,CAAC,MAAM,EAAE,OAAO,YAAY,EAAE,cAAc,CAAC,CAK5D;AAED;;GAEG;AACH,yBAFU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAM9B"}
1
+ {"version":3,"file":"varsig.d.ts","sourceRoot":"","sources":["../../src/varsig.js"],"names":[],"mappings":"AAuDA;;GAEG;AACH,gCAFW,OAAO,YAAY,EAAE,aAAa,2BAc5C;AA2BD;;;;;;GAMG;AACH,4BAHW,UAAU,CAAC,WAAW,CAAC,GACrB,OAAO,YAAY,EAAE,YAAY,CAsD7C;AAvJD,qBAAsB,EAAI,CAAA;AAC1B,sBAAuB,CAAI,CAAA;AAC3B,8BAA+B,KAAM,CAAA;AAErC;;GAEG;AACH,4BAFU,MAAM,CAAC,MAAM,EAAE,OAAO,YAAY,EAAE,cAAc,CAAC,CAK5D;AAED;;GAEG;AACH,yBAFU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAM9B"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "iso-ucan",
3
3
  "type": "module",
4
- "version": "0.2.1",
4
+ "version": "0.4.0",
5
5
  "description": "Isomorphic UCAN",
6
6
  "author": "Hugo Dias <hugomrdias@gmail.com> (hugodias.me)",
7
7
  "license": "MIT",
@@ -105,20 +105,21 @@
105
105
  "@ipld/dag-cbor": "^9.2.4",
106
106
  "@standard-schema/spec": "^1.0.0",
107
107
  "@standard-schema/utils": "^0.3.0",
108
- "iobuffer": "^6.0.0",
108
+ "iobuffer": "^6.0.1",
109
109
  "iso-kv": "^3.0.3",
110
- "iso-web": "^1.1.1",
110
+ "iso-web": "^1.2.0",
111
111
  "it-merge": "^3.0.12",
112
- "multiformats": "^13.3.7",
113
- "iso-base": "^4.1.0",
114
- "iso-did": "^2.0.0",
115
- "iso-signatures": "^0.4.0"
112
+ "multiformats": "^13.4.0",
113
+ "zod": "^3.25.0",
114
+ "iso-base": "^4.2.0",
115
+ "iso-did": "^2.1.0",
116
+ "iso-signatures": "^0.5.0"
116
117
  },
117
118
  "devDependencies": {
118
- "@types/node": "^24.1.0",
119
- "playwright-test": "^14.1.11",
120
- "typescript": "5.8.3",
121
- "zod": "^4.0.5"
119
+ "@types/node": "^24.3.0",
120
+ "delay": "^6.0.0",
121
+ "playwright-test": "^14.1.12",
122
+ "typescript": "5.9.2"
122
123
  },
123
124
  "publishConfig": {
124
125
  "provenance": true
package/src/capability.js CHANGED
@@ -1,17 +1,11 @@
1
1
  import { SchemaError } from '@standard-schema/utils'
2
+ import { parse as didParse } from 'iso-did'
2
3
  import { Delegation } from './delegation.js'
3
4
  import { Invocation } from './invocation.js'
4
5
 
5
6
  /**
6
7
  * @import {StandardSchemaV1} from '@standard-schema/spec'
7
- */
8
-
9
- /**
10
- * @template {StandardSchemaV1} Schema
11
- * @template {string} [Cmd=string]
12
- * @typedef {Object} CapabilityOptions
13
- * @prop {Schema} schema
14
- * @prop {Cmd} cmd
8
+ * @import {CapabilityOptions, CapabilityDelegateOptions} from './types.js'
15
9
  */
16
10
 
17
11
  /**
@@ -25,6 +19,9 @@ export class Capability {
25
19
  constructor(options) {
26
20
  this.schema = options.schema
27
21
  this.cmd = options.cmd
22
+ this.isRevoked = options.isRevoked
23
+ this.didResolver = options.didResolver
24
+ this.verifierResolver = options.verifierResolver
28
25
  }
29
26
 
30
27
  /**
@@ -56,27 +53,37 @@ export class Capability {
56
53
  throw new SchemaError(result.issues)
57
54
  }
58
55
 
59
- const proofs = await options.store.chain({
60
- cmd: this.cmd,
61
- sub: options.sub,
62
- aud: options.iss.did,
63
- })
64
-
56
+ /** @type {Delegation[]} */
57
+ let proofs = []
58
+ const iss = didParse(options.iss.did)
59
+ if (iss.did !== options.sub) {
60
+ proofs = await options.store.chain({
61
+ cmd: this.cmd,
62
+ sub: options.sub,
63
+ aud: options.iss.did,
64
+ args: result.value,
65
+ })
66
+ }
65
67
  return await Invocation.create({
66
68
  ...options,
67
69
  args: result.value,
68
70
  cmd: this.cmd,
69
71
  prf: proofs,
72
+ verifierResolver: this.verifierResolver,
73
+ didResolver: this.didResolver,
74
+ isRevoked: this.isRevoked,
70
75
  })
71
76
  }
72
77
 
73
78
  /**
74
79
  * Create a delegation for this capability
75
80
  *
76
- * @param {import("./types.js").CapabilityDelegateOptions} options
81
+ * @param {CapabilityDelegateOptions<Schema>} options
77
82
  * @returns {Promise<Delegation>}
78
83
  */
79
- delegate(options) {
80
- return Delegation.create({ ...options, cmd: this.cmd })
84
+ async delegate(options) {
85
+ const dlg = await Delegation.create({ ...options, cmd: this.cmd })
86
+ await options.store.add([dlg])
87
+ return dlg
81
88
  }
82
89
  }
package/src/delegation.js CHANGED
@@ -15,7 +15,7 @@ import {
15
15
  } from './utils.js'
16
16
 
17
17
  /**
18
- * @import {DelegationValidateOptions, Policy, DelegationOptions, DelegationPayload, DID, DIDURL} from './types.js'
18
+ * @import {DelegationValidateOptions, Policy, DelegationOptions, DelegationPayload, DID, DIDURL, StandardSchemaV1} from './types.js'
19
19
  * @import {CID} from 'multiformats'
20
20
  */
21
21
 
@@ -35,7 +35,7 @@ export class Delegation {
35
35
  pol
36
36
  /** @type {number | undefined} */
37
37
  nbf
38
- /** @type {Uint8Array} */
38
+ /** @type {Uint8Array<ArrayBuffer>} */
39
39
  nonce
40
40
  /** @type {Record<string, unknown> | undefined} */
41
41
  meta
@@ -45,7 +45,7 @@ export class Delegation {
45
45
  /**
46
46
  *
47
47
  * @param {import("./types.js").DecodedEnvelope<'dlg'>} envelope
48
- * @param {Uint8Array} bytes
48
+ * @param {Uint8Array<ArrayBuffer>} bytes
49
49
  * @param {CID} cid
50
50
  */
51
51
  constructor(envelope, bytes, cid) {
@@ -65,6 +65,9 @@ export class Delegation {
65
65
  }
66
66
 
67
67
  /**
68
+ * Create a delegation from bytes and validate it
69
+ *
70
+ * Does not validate "not before" time, call {@link Delegation.validate} to validate it
68
71
  *
69
72
  * @param {import("./types.js").DelegationFromOptions} options
70
73
  */
@@ -91,14 +94,37 @@ export class Delegation {
91
94
  return new Delegation(envelope, bytes, _cid)
92
95
  }
93
96
 
97
+ /**
98
+ * Create a delegation from a base64 encoded string
99
+ *
100
+ * @param {string} token
101
+ */
102
+ static async fromString(token) {
103
+ const bytes = base64pad.decode(token)
104
+ const envelope = /** @type {typeof Envelope.decode<"dlg">} */ (
105
+ Envelope.decode
106
+ )({ envelope: bytes })
107
+
108
+ if (envelope.spec !== 'dlg') {
109
+ throw new Error(
110
+ `Invalid envelope type. Expected: Delegation but got: ${envelope.spec}`
111
+ )
112
+ }
113
+
114
+ assertStructure(envelope.payload)
115
+ const _cid = await cid(envelope)
116
+ return new Delegation(envelope, bytes, _cid)
117
+ }
118
+
94
119
  /**
95
120
  *
96
- * @param {DelegationOptions & { cmd: string }} options
121
+ * @template {StandardSchemaV1} Schema
122
+ * @param {DelegationOptions<Schema>} options
97
123
  */
98
124
  static async create(options) {
99
125
  const nonce = options.nonce || randomBytes(12)
100
126
 
101
- /** @type {DelegationPayload} */
127
+ /** @type {DelegationPayload<StandardSchemaV1.InferOutput<Schema>>} */
102
128
  const payload = {
103
129
  iss: options.iss.toString(),
104
130
  aud: options.aud,
@@ -141,6 +167,10 @@ export class Delegation {
141
167
  }
142
168
 
143
169
  /**
170
+ * Validate a delegation
171
+ *
172
+ * Checks the structure, "not before" time, signature, and revocation status
173
+ *
144
174
  * @param {DelegationValidateOptions} options
145
175
  */
146
176
  async validate(options) {
@@ -159,6 +189,7 @@ export class Delegation {
159
189
  toString() {
160
190
  return base64pad.encode(this.bytes)
161
191
  }
192
+
162
193
  toJSON() {
163
194
  return {
164
195
  token: this.toString(),
package/src/envelope.js CHANGED
@@ -108,7 +108,9 @@ export async function sign(options) {
108
108
  signatureType: signer.signatureType,
109
109
  payload,
110
110
  })
111
- const signature = await signer.sign(cbor.encode(signaturePayload))
111
+ const signature = await signer.sign(
112
+ /** @type {Uint8Array<ArrayBuffer>} */ (cbor.encode(signaturePayload))
113
+ )
112
114
  return {
113
115
  signature,
114
116
  signaturePayload,
@@ -127,7 +129,7 @@ export function encode(options) {
127
129
 
128
130
  const envelope = [signature, signaturePayload]
129
131
 
130
- return cbor.encode(envelope)
132
+ return /** @type {Uint8Array<ArrayBuffer>} */ (cbor.encode(envelope))
131
133
  }
132
134
 
133
135
  /**
package/src/invocation.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { parse as didParse } from 'iso-did'
2
2
  import { randomBytes } from 'iso-web/crypto'
3
3
  import * as Envelope from './envelope.js'
4
+ import { validate } from './policy.js'
4
5
  import {
5
6
  assertArgs,
6
7
  assertExpiration,
@@ -34,7 +35,7 @@ export class Invocation {
34
35
  /**
35
36
  *
36
37
  * @param {import("./types.js").DecodedEnvelope<'inv'>} envelope
37
- * @param {Uint8Array} bytes
38
+ * @param {Uint8Array<ArrayBuffer>} bytes
38
39
  * @param {CID} cid
39
40
  * @param {Delegation[]} delegations
40
41
  */
@@ -58,39 +59,41 @@ export class Invocation {
58
59
  )({ envelope: bytes })
59
60
 
60
61
  if (envelope.spec !== 'inv') {
61
- throw new Error(
62
- `Invalid envelope type. Expected: Invocation but got: ${envelope.spec}`
62
+ throw new TypeError(
63
+ `Invalid envelope type. Expected "inv" but got "${envelope.spec}"`
63
64
  )
64
65
  }
65
- assertStructure(envelope.payload)
66
- await verifySignature(
67
- envelope,
68
- options.verifierResolver,
69
- options.didResolver
70
- )
71
-
72
66
  // Audience or subject must match receiver
73
67
  if (
74
68
  envelope.payload.aud !== audience.did &&
75
69
  envelope.payload.sub !== audience.did
76
70
  ) {
77
- throw new Error(
71
+ throw new TypeError(
78
72
  `UCAN Invocation audience or subject does not match receiver. Expected: ${audience.did} but got: ${envelope.payload.aud ?? envelope.payload.sub ?? 'null'}`
79
73
  )
80
74
  }
81
75
 
82
- // Resolve and validate proofs
76
+ assertStructure(envelope.payload)
77
+ await verifySignature(
78
+ envelope,
79
+ options.verifierResolver,
80
+ options.didResolver
81
+ )
83
82
 
83
+ // Resolve and validate proofs
84
84
  /** @type {Delegation[]} */
85
85
  const proofs = []
86
- for (const proof of envelope.payload.prf) {
87
- const delegation = await options.resolveProof(proof)
88
- await delegation.validate(options)
89
- proofs.push(delegation)
86
+ const iss = didParse(envelope.payload.iss)
87
+ if (iss.did !== envelope.payload.sub) {
88
+ for (const proof of envelope.payload.prf) {
89
+ const delegation = await options.resolveProof(proof)
90
+ await delegation.validate(options)
91
+ proofs.push(delegation)
92
+ }
93
+
94
+ assertProofs(envelope.payload, proofs)
90
95
  }
91
96
 
92
- assertProofs(envelope.payload, proofs)
93
-
94
97
  const _cid = await cid(envelope)
95
98
  return new Invocation(envelope, bytes, _cid, proofs)
96
99
  }
@@ -126,7 +129,14 @@ export class Invocation {
126
129
  }
127
130
 
128
131
  assertStructure(payload)
129
- assertProofs(payload, options.prf)
132
+
133
+ if (options.iss.did !== options.sub) {
134
+ for (const proof of options.prf) {
135
+ await proof.validate(options)
136
+ }
137
+
138
+ assertProofs(payload, options.prf)
139
+ }
130
140
 
131
141
  const { signature, signaturePayload } = await Envelope.sign({
132
142
  spec: 'inv',
@@ -193,6 +203,12 @@ export function assertProofs(payload, proofs) {
193
203
  const currentAudience = didParse(current.aud)
194
204
  const currentSubject = didParse(current.sub ?? payload.sub)
195
205
 
206
+ if (!validate(payload.args, current.pol)) {
207
+ throw new Error(
208
+ `UCAN Invocation invalid arguments, expected ${JSON.stringify(payload.args)} to be valid for policy ${JSON.stringify(current.pol)} `
209
+ )
210
+ }
211
+
196
212
  const nextProof = proofs[index + 1]
197
213
  /** @type {import("./types.js").Payload} */
198
214
  let next
package/src/policy.js CHANGED
@@ -261,7 +261,7 @@ function evaluateStatement(args, statement) {
261
261
  /**
262
262
  * Validates invocation arguments against a UCAN policy.
263
263
  *
264
- * @template {Record<string, unknown>} Args
264
+ * @template {unknown} Args
265
265
  * @param {Args} args The arguments of the eventual invocation.
266
266
  * @param {import("./types.js").Policy<Args>} policy An array of policy statements.
267
267
  * @returns {boolean} True if the args are valid according to the policy, false otherwise.
package/src/store.js CHANGED
@@ -1,9 +1,10 @@
1
1
  import { parse as didParse } from 'iso-did'
2
2
  import { KV } from 'iso-kv'
3
3
  import merge from 'it-merge'
4
+ import { Delegation } from './delegation.js'
5
+ import { validate } from './policy.js'
4
6
 
5
7
  /**
6
- * @import {Delegation} from './delegation.js'
7
8
  * @import {Driver} from 'iso-kv'
8
9
  * @import {CID} from 'multiformats'
9
10
  */
@@ -43,7 +44,7 @@ export class Store {
43
44
  const cid = delegation.cid.toString()
44
45
 
45
46
  // Index by CID
46
- await this.kv.set([cid], delegation, options)
47
+ await this.kv.set([cid], delegation.toString(), options)
47
48
 
48
49
  // Index by subject and audience
49
50
  /** @type {string | null} */
@@ -68,8 +69,14 @@ export class Store {
68
69
  *
69
70
  * @param {string} cid
70
71
  */
71
- get(cid) {
72
- return /** @type {typeof this.kv.get<Delegation>} */ (this.kv.get)([cid])
72
+ async get(cid) {
73
+ const str = await /** @type {typeof this.kv.get<string>} */ (this.kv.get)([
74
+ cid,
75
+ ])
76
+ if (!str) {
77
+ return undefined
78
+ }
79
+ return await Delegation.fromString(str)
73
80
  }
74
81
 
75
82
  /**
@@ -88,7 +95,7 @@ export class Store {
88
95
  /**
89
96
  * List proofs by sub and aud
90
97
  *
91
- * @param {import('./types.js').StoreProofsOptions} options
98
+ * @param {Omit<import('./types.js').StoreProofsOptions, 'args'>} options
92
99
  */
93
100
  async *proofs(options) {
94
101
  /**@type {string | null} */
@@ -127,7 +134,7 @@ export class Store {
127
134
  * @param {import('./types.js').StoreProofsOptions} options
128
135
  * @returns {Promise<Delegation[]>}
129
136
  */
130
- async chain({ aud, sub, cmd }) {
137
+ async chain({ aud, sub, cmd, args }) {
131
138
  // console.log('🚀 ~ aud', aud, 'sub', sub, 'cmd', cmd)
132
139
  const parents = parentCmds(cmd)
133
140
 
@@ -138,6 +145,7 @@ export class Store {
138
145
 
139
146
  for await (const proof of sources) {
140
147
  if (!parents.includes(proof.cmd)) continue
148
+ if (!validate(args, proof.pol)) continue
141
149
 
142
150
  // If root, return this proof as the end of the path
143
151
  if (proof.sub === didParse(proof.iss).did) {
@@ -151,6 +159,7 @@ export class Store {
151
159
  aud: didParse(proof.iss).did,
152
160
  sub: proof.sub ? proof.sub : sub,
153
161
  cmd: proof.cmd,
162
+ args,
154
163
  })
155
164
  if (nextPath?.length) {
156
165
  return [proof, ...nextPath]
@@ -32,7 +32,7 @@ export interface PayloadBase {
32
32
  * The nonce of the UCAN
33
33
  * @see https://github.com/ucan-wg/spec#nonce
34
34
  */
35
- nonce: Uint8Array
35
+ nonce: Uint8Array<ArrayBuffer>
36
36
  /**
37
37
  * Meta (asserted, signed data) — is not delegated authority
38
38
  */
@@ -90,17 +90,20 @@ export type Payload<Args = unknown> =
90
90
  | DelegationPayload<Args>
91
91
 
92
92
  export type SignaturePayload<Args = unknown> = {
93
- h: Uint8Array
93
+ h: Uint8Array<ArrayBuffer>
94
94
  [payloadTag: PayloadTag]: Payload<Args>
95
95
  }
96
96
 
97
- export type Envelope<Args = unknown> = [Uint8Array, SignaturePayload<Args>]
97
+ export type Envelope<Args = unknown> = [
98
+ Uint8Array<ArrayBuffer>,
99
+ SignaturePayload<Args>,
100
+ ]
98
101
 
99
102
  /**
100
103
  * @see https://github.com/ucan-wg/spec#envelope
101
104
  */
102
105
  export type EnvelopeEncodeOptions = {
103
- signature: Uint8Array
106
+ signature: Uint8Array<ArrayBuffer>
104
107
  signaturePayload: SignaturePayload
105
108
  }
106
109
 
@@ -119,13 +122,13 @@ export interface EnvelopeSignOptions {
119
122
  }
120
123
 
121
124
  export interface EnvelopeDecodeOptions {
122
- envelope: Uint8Array
125
+ envelope: Uint8Array<ArrayBuffer>
123
126
  }
124
127
 
125
128
  export type DecodedEnvelope<Spec extends PayloadSpec> = {
126
129
  alg: VarsigAlgorithm
127
130
  enc: VarsigEncoding
128
- signature: Uint8Array
131
+ signature: Uint8Array<ArrayBuffer>
129
132
  payload: Spec extends 'dlg' ? DelegationPayload : InvocationPayload
130
133
  spec: Spec
131
134
  version: string
package/src/types.ts CHANGED
@@ -28,7 +28,7 @@ export type CborPrimitive =
28
28
  | boolean
29
29
  | null
30
30
  | bigint
31
- | Uint8Array
31
+ | Uint8Array<ArrayBuffer>
32
32
  | ArrayBuffer
33
33
  export type CborArray = CborValue[] | readonly CborValue[]
34
34
  export type CborObject =
@@ -41,11 +41,11 @@ export type CborValue = CborPrimitive | CborArray | CborObject
41
41
  * Delegation
42
42
  */
43
43
 
44
- export interface DelegationOptions<Args = unknown> {
44
+ export interface DelegationOptions<Schema extends StandardSchemaV1> {
45
45
  iss: ISigner
46
46
  aud: DID
47
47
  sub: DID | null
48
- pol: Policy<Args>
48
+ pol: Policy<StandardSchemaV1.InferOutput<Schema>>
49
49
  /**
50
50
  * Expiration time in seconds or null for no expiration
51
51
  */
@@ -60,28 +60,21 @@ export interface DelegationOptions<Args = unknown> {
60
60
  * Delegation is not valid before this time
61
61
  */
62
62
  nbf?: number
63
- nonce?: Uint8Array
63
+ nonce?: Uint8Array<ArrayBuffer>
64
64
  cmd: string
65
65
  meta?: CborObject
66
66
  }
67
67
 
68
- export interface DelegationFromOptions {
69
- bytes: Uint8Array
68
+ export interface DelegationValidateOptions {
70
69
  isRevoked?: IsRevoked
71
70
  didResolver?: DidResolver
72
71
  verifierResolver: VerifierResolver
73
72
  }
74
73
 
75
- export interface DelegationValidateOptions {
76
- isRevoked?: IsRevoked
77
- didResolver?: DidResolver
78
- verifierResolver: VerifierResolver
74
+ export interface DelegationFromOptions extends DelegationValidateOptions {
75
+ bytes: Uint8Array<ArrayBuffer>
79
76
  }
80
77
 
81
- export type CapabilityDelegateOptions<Args = unknown> = Omit<
82
- DelegationOptions<Args>,
83
- 'cmd'
84
- >
85
78
  /**
86
79
  * Invocation
87
80
  */
@@ -89,7 +82,7 @@ export type CapabilityDelegateOptions<Args = unknown> = Omit<
89
82
  /**
90
83
  * Invocation options
91
84
  */
92
- export interface InvocationOptions {
85
+ export interface InvocationOptions extends DelegationValidateOptions {
93
86
  iss: ISigner
94
87
  aud?: DID
95
88
  sub: DID
@@ -113,23 +106,55 @@ export interface InvocationOptions {
113
106
  */
114
107
  iat?: number
115
108
  nbf?: number
116
- nonce?: Uint8Array
109
+ nonce?: Uint8Array<ArrayBuffer>
117
110
  cause?: CID
118
111
  meta?: CborObject
119
112
  }
120
113
 
121
- export interface InvocationFromOptions {
122
- bytes: Uint8Array
114
+ export interface InvocationFromOptions extends DelegationValidateOptions {
115
+ bytes: Uint8Array<ArrayBuffer>
123
116
  audience: VerifiableDID
124
- didResolver?: DidResolver
125
- verifierResolver: VerifierResolver
126
- isRevoked?: IsRevoked
127
117
  resolveProof: ResolveProof
128
118
  }
129
119
 
120
+ /**
121
+ * Capability types
122
+ */
123
+
124
+ /**
125
+ * Capability options
126
+ */
127
+ export interface CapabilityOptions<
128
+ Schema extends StandardSchemaV1,
129
+ Cmd extends string = string,
130
+ > extends DelegationValidateOptions {
131
+ schema: Schema
132
+ cmd: Cmd
133
+ }
134
+
135
+ /**
136
+ * Delegate a capability
137
+ */
138
+ export interface CapabilityDelegateOptions<Schema extends StandardSchemaV1>
139
+ extends Omit<DelegationOptions<Schema>, 'cmd'> {
140
+ /**
141
+ * Store to add the delegation to
142
+ */
143
+ store: Store
144
+ }
145
+
146
+ /**
147
+ * Invoke a capability
148
+ */
130
149
  export interface CapabilityInvokeOptions<Schema extends StandardSchemaV1>
131
- extends Omit<InvocationOptions, 'cmd' | 'args' | 'prf'> {
150
+ extends Omit<
151
+ InvocationOptions,
152
+ 'cmd' | 'args' | 'prf' | 'verifierResolver' | 'didResolver' | 'isRevoked'
153
+ > {
132
154
  args: StandardSchemaV1.InferOutput<Schema>
155
+ /**
156
+ * Store to resolve proofs from
157
+ */
133
158
  store: Store
134
159
  }
135
160
 
@@ -144,6 +169,7 @@ export interface StoreProofsOptions {
144
169
  aud?: DID
145
170
  sub: DID | null
146
171
  cmd: string
172
+ args: CborObject
147
173
  }
148
174
 
149
175
  /**
package/src/utils.js CHANGED
@@ -2,7 +2,7 @@ import * as dagCbor from '@ipld/dag-cbor'
2
2
  import { DID } from 'iso-did'
3
3
  import { CID } from 'multiformats/cid'
4
4
  import { sha256 } from 'multiformats/hashes/sha2'
5
- import { z } from 'zod'
5
+ import { z } from 'zod/v4'
6
6
 
7
7
  import * as Envelope from './envelope.js'
8
8
  import * as varsig from './varsig.js'
@@ -94,7 +94,6 @@ export function isSigAndDidCompatible(did, sigType) {
94
94
  */
95
95
  export function assertExpiration(exp) {
96
96
  const now = nowInSeconds()
97
-
98
97
  if (exp !== null && !Number.isSafeInteger(exp)) {
99
98
  throw new TypeError(
100
99
  `UCAN expiration must be null or a safe integer. Received: ${exp}`
@@ -127,6 +126,7 @@ export function assertNotBefore(nbf) {
127
126
  */
128
127
  export async function validateIssuerAndSignature(envelope, didResolver) {
129
128
  const issuer = await DID.fromString(envelope.payload.iss, didResolver)
129
+
130
130
  if (!isSigAndDidCompatible(issuer, envelope.alg)) {
131
131
  throw new Error(
132
132
  `UCAN issuer type mismatch: DID ${issuer.verifiableDid.type} and Signature ${envelope.alg} are not compatible`
@@ -151,7 +151,9 @@ export async function verifySignature(
151
151
  const issuer = await validateIssuerAndSignature(envelope, didResolver)
152
152
  const isVerified = await signatureVerifierResolver.verify({
153
153
  signature: envelope.signature,
154
- message: dagCbor.encode(signaturePayload(envelope)),
154
+ message: /** @type {Uint8Array<ArrayBuffer>} */ (
155
+ dagCbor.encode(signaturePayload(envelope))
156
+ ),
155
157
  did: issuer,
156
158
  type: envelope.alg,
157
159
  })
@@ -238,7 +240,7 @@ export function assertNonce(nonce) {
238
240
  }
239
241
  }
240
242
  /**
241
- * Assert that args is a JSON serializable object.
243
+ * Assert that args is a CBOR serializable object.
242
244
  *
243
245
  * @param {unknown} args
244
246
  */
package/src/varsig.js CHANGED
@@ -71,7 +71,7 @@ export function encode(options) {
71
71
  }
72
72
 
73
73
  /**
74
- * @param {Uint8Array<ArrayBufferLike>} bytes
74
+ * @param {Uint8Array} bytes
75
75
  */
76
76
  function getEncoding(bytes) {
77
77
  const [code] = varint.decode(bytes)
@@ -83,7 +83,7 @@ function getEncoding(bytes) {
83
83
  }
84
84
 
85
85
  /**
86
- * @param {Uint8Array<ArrayBufferLike>} bytes
86
+ * @param {Uint8Array} bytes
87
87
  * @param {import('./types.js').VarsigAlgorithm[]} presets
88
88
  */
89
89
  function getPreset(bytes, presets) {
@@ -99,19 +99,19 @@ function getPreset(bytes, presets) {
99
99
  /**
100
100
  * Decode varsig header
101
101
  *
102
- * @param {Uint8Array} buf
102
+ * @param {Uint8Array<ArrayBuffer>} buf
103
103
  * @returns {import('./types.js').DecodeOutput}
104
104
  */
105
105
  export function decode(buf) {
106
106
  const bytes = new IOBuffer(buf)
107
- const varsig = bytes.readBytes(1)
107
+ const varsig = /** @type {Uint8Array<ArrayBuffer>} */ (bytes.readBytes(1))
108
108
  if (varsig[0] !== VARINT.VARSIG[0]) {
109
109
  throw new TypeError(
110
110
  `Invalid varsig sigil expected 0x${VARSIG.toString(16)} got 0x${hex.encode(varsig)}`
111
111
  )
112
112
  }
113
113
 
114
- const version = bytes.readBytes(1)
114
+ const version = /** @type {Uint8Array<ArrayBuffer>} */ (bytes.readBytes(1))
115
115
  if (version[0] !== VARINT.VERSION[0]) {
116
116
  throw new TypeError(
117
117
  `Invalid version sigil expected 0x${VERSION.toString(16)} got 0x${hex.encode(version)}`