{
  "version": 3,
  "sources": ["../src/capability.ts"],
  "sourcesContent": ["import type { StandardSchemaV1 } from '@standard-schema/spec'\nimport { SchemaError } from '@standard-schema/utils'\nimport { parse as didParse } from 'iso-did'\nimport { Delegation } from './delegation.js'\nimport { Invocation } from './invocation.js'\nimport type { CapabilityOptions, CapabilityDelegateOptions, CapabilityInvokeOptions, IsRevoked, DidResolver, VerifierResolver, CborObject } from './types.js'\n\nexport class Capability<\n  Schema extends StandardSchemaV1 = StandardSchemaV1,\n  Cmd extends string = string\n> {\n    schema:Schema\n    cmd:Cmd\n    isRevoked?:IsRevoked\n    didResolver?:DidResolver\n    verifierResolver:VerifierResolver\n\n    constructor (options:CapabilityOptions<Schema, Cmd>) {\n        this.schema = options.schema\n        this.cmd = options.cmd\n        this.isRevoked = options.isRevoked\n        this.didResolver = options.didResolver\n        this.verifierResolver = options.verifierResolver\n    }\n\n    static from<Schema extends StandardSchemaV1, Cmd extends string = string> (\n        options:CapabilityOptions<Schema, Cmd>\n    ):Capability<Schema, Cmd> {\n        return new Capability(options)\n    }\n\n    async validate (args:StandardSchemaV1.InferInput<Schema>) {\n        const result = await this.schema['~standard'].validate(args)\n        return result\n    }\n\n    /**\n     * Invoke this capability\n     */\n    async invoke (options:CapabilityInvokeOptions<Schema>):Promise<Invocation> {\n        const result = await this.schema['~standard'].validate(options.args)\n        if (result.issues) {\n            throw new SchemaError(result.issues)\n        }\n\n        let proofs:Delegation[] = []\n        const iss = didParse(options.iss.did)\n        if (iss.did !== options.sub) {\n            proofs = await options.store.chain({\n                cmd: this.cmd,\n                sub: options.sub,\n                aud: options.iss.did,\n                args: result.value as CborObject,\n            })\n        }\n        return await Invocation.create({\n            ...options,\n            args: result.value as CborObject,\n            cmd: this.cmd,\n            prf: proofs,\n            verifierResolver: this.verifierResolver,\n            didResolver: this.didResolver,\n            isRevoked: this.isRevoked,\n        })\n    }\n\n    /**\n     * Create a delegation for this capability\n     */\n    async delegate (options:CapabilityDelegateOptions<Schema>):Promise<Delegation> {\n        const dlg = await Delegation.create({ ...options, cmd: this.cmd })\n        await options.store.add([dlg])\n        return dlg\n    }\n}\n"],
  "mappings": "4dAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gBAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAA4B,kCAC5BC,EAAkC,mBAClCC,EAA2B,2BAC3BC,EAA2B,2BAGpB,MAAMC,CAGX,CAVF,MAUE,CAAAC,EAAA,mBACE,OACA,IACA,UACA,YACA,iBAEA,YAAaC,EAAwC,CACjD,KAAK,OAASA,EAAQ,OACtB,KAAK,IAAMA,EAAQ,IACnB,KAAK,UAAYA,EAAQ,UACzB,KAAK,YAAcA,EAAQ,YAC3B,KAAK,iBAAmBA,EAAQ,gBACpC,CAEA,OAAO,KACHA,EACsB,CACtB,OAAO,IAAIF,EAAWE,CAAO,CACjC,CAEA,MAAM,SAAUC,EAA0C,CAEtD,OADe,MAAM,KAAK,OAAO,WAAW,EAAE,SAASA,CAAI,CAE/D,CAKA,MAAM,OAAQD,EAA6D,CACvE,MAAME,EAAS,MAAM,KAAK,OAAO,WAAW,EAAE,SAASF,EAAQ,IAAI,EACnE,GAAIE,EAAO,OACP,MAAM,IAAI,cAAYA,EAAO,MAAM,EAGvC,IAAIC,EAAsB,CAAC,EAE3B,SADY,EAAAC,OAASJ,EAAQ,IAAI,GAAG,EAC5B,MAAQA,EAAQ,MACpBG,EAAS,MAAMH,EAAQ,MAAM,MAAM,CAC/B,IAAK,KAAK,IACV,IAAKA,EAAQ,IACb,IAAKA,EAAQ,IAAI,IACjB,KAAME,EAAO,KACjB,CAAC,GAEE,MAAM,aAAW,OAAO,CAC3B,GAAGF,EACH,KAAME,EAAO,MACb,IAAK,KAAK,IACV,IAAKC,EACL,iBAAkB,KAAK,iBACvB,YAAa,KAAK,YAClB,UAAW,KAAK,SACpB,CAAC,CACL,CAKA,MAAM,SAAUH,EAA+D,CAC3E,MAAMK,EAAM,MAAM,aAAW,OAAO,CAAE,GAAGL,EAAS,IAAK,KAAK,GAAI,CAAC,EACjE,aAAMA,EAAQ,MAAM,IAAI,CAACK,CAAG,CAAC,EACtBA,CACX,CACJ",
  "names": ["capability_exports", "__export", "Capability", "__toCommonJS", "import_utils", "import_iso_did", "import_delegation", "import_invocation", "Capability", "__name", "options", "args", "result", "proofs", "didParse", "dlg"]
}
