iso-ucan 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.
@@ -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"}
@@ -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,17 +7,25 @@
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
@@ -47,6 +55,10 @@ export class Delegation {
47
55
  bytes: Uint8Array<ArrayBufferLike>;
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,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;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"}
@@ -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,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;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"}
@@ -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,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
  */
@@ -53,25 +53,21 @@ export interface DelegationOptions<Args = unknown> {
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;
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;
@@ -99,16 +95,38 @@ export interface InvocationOptions {
99
95
  cause?: CID;
100
96
  meta?: CborObject;
101
97
  }
102
- export interface InvocationFromOptions {
98
+ export interface InvocationFromOptions extends DelegationValidateOptions {
103
99
  bytes: Uint8Array;
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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"}
@@ -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,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,QAAQ"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "iso-ucan",
3
3
  "type": "module",
4
- "version": "0.2.0",
4
+ "version": "0.3.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
110
  "iso-web": "^1.1.1",
111
111
  "it-merge": "^3.0.12",
112
- "multiformats": "^13.3.7",
112
+ "multiformats": "^13.4.0",
113
+ "zod": "^3.25.0",
113
114
  "iso-base": "^4.1.0",
114
115
  "iso-signatures": "^0.4.0",
115
- "iso-did": "^2.0.0"
116
+ "iso-did": "^2.0.1"
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.2.1",
120
+ "delay": "^6.0.0",
121
+ "playwright-test": "^14.1.12",
122
+ "typescript": "5.8.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
 
@@ -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
@@ -61,7 +61,7 @@ export function decodeSignaturePayload(bytes) {
61
61
  `Invalid signature payload expected 2 keys got ${keys.length}`
62
62
  )
63
63
  }
64
- if (!keys[1].startsWith('ucan/dlg') || !keys[1].startsWith('ucan/inv')) {
64
+ if (!keys[1].startsWith('ucan/dlg') && !keys[1].startsWith('ucan/inv')) {
65
65
  throw new TypeError('Invalid signature payload missing payload')
66
66
  }
67
67
 
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,
@@ -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]
package/src/types.ts CHANGED
@@ -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
  */
@@ -65,23 +65,16 @@ export interface DelegationOptions<Args = unknown> {
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
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
@@ -118,18 +111,50 @@ export interface InvocationOptions {
118
111
  meta?: CborObject
119
112
  }
120
113
 
121
- export interface InvocationFromOptions {
114
+ export interface InvocationFromOptions extends DelegationValidateOptions {
122
115
  bytes: Uint8Array
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`
@@ -238,7 +238,7 @@ export function assertNonce(nonce) {
238
238
  }
239
239
  }
240
240
  /**
241
- * Assert that args is a JSON serializable object.
241
+ * Assert that args is a CBOR serializable object.
242
242
  *
243
243
  * @param {unknown} args
244
244
  */