{
  "version": 3,
  "sources": ["../src/envelope.ts"],
  "sourcesContent": ["import type { Envelope, PayloadTag, EnvelopeDecodeOptions, EnvelopeEncodeOptions, EnvelopeSignOptions, SignaturePayload, PayloadSpec, DecodedEnvelope, DelegationPayload, InvocationPayload, Payload } from './types.js'\nimport type { ByteView } from 'multiformats'\nimport type { SignatureType } from 'iso-signatures/types'\nimport * as cbor from '@ipld/dag-cbor'\nimport { isObject } from './util.js'\nimport * as varsig from './index.js'\n\n/** Version */\nexport const VERSION = '1.0.0-rc.1'\n\n/**\n * Get the signature payload for a given payload\n */\nexport function getSignaturePayload (options:{\n  spec:PayloadSpec\n  payload:Payload\n  version?:string\n  signatureType:SignatureType\n}):SignaturePayload {\n    const { spec, version, signatureType, payload } = options\n\n    const payloadTag:PayloadTag = `ucan/${spec}@${version ?? VERSION}` as PayloadTag\n\n    const h = varsig.encode({ enc: 'DAG-CBOR', alg: signatureType })\n\n    const signaturePayload = {\n        h,\n        [payloadTag]: payload,\n    } as SignaturePayload\n\n    return signaturePayload\n}\n\n/**\n * Decode a signature payload\n */\nexport function decodeSignaturePayload (bytes:Uint8Array) {\n    const decoded = cbor.decode(bytes) as unknown\n\n    if (!isObject(decoded)) {\n        throw new TypeError(\n      `Invalid signature payload expected object got ${typeof decoded}`\n        )\n    }\n    if (!('h' in decoded)) {\n        throw new TypeError('Invalid signature payload missing h')\n    }\n    const keys = Object.keys(decoded)\n    if (keys.length !== 2) {\n        throw new TypeError(\n      `Invalid signature payload expected 2 keys got ${keys.length}`\n        )\n    }\n    if (!keys[1].startsWith('ucan/dlg') && !keys[1].startsWith('ucan/inv')) {\n        throw new TypeError('Invalid signature payload missing payload')\n    }\n\n    const payloadTag:PayloadTag = keys[1] as PayloadTag\n    const { alg, enc } = varsig.decode((decoded as SignaturePayload).h)\n    const payload = (decoded as SignaturePayload)[payloadTag]\n    return {\n        alg,\n        enc,\n        payload,\n    }\n}\n\n/**\n * Check if a payload is an invocation payload\n */\nexport function isInvocationPayload (payload:Payload):payload is InvocationPayload {\n    return 'args' in payload\n}\n\n/**\n * Check if a payload is a delegation payload\n */\nexport function isDelegationPayload (payload:Payload):payload is DelegationPayload {\n    return 'pol' in payload\n}\n\nexport async function sign (options:EnvelopeSignOptions) {\n    const { spec, version, signer, payload } = options\n\n    const signaturePayload = getSignaturePayload({\n        spec,\n        version,\n        signatureType: signer.signatureType,\n        payload,\n    })\n    const signature = await signer.sign(cbor.encode(signaturePayload))\n    return {\n        signature,\n        signaturePayload,\n    }\n}\n\n/**\n * Encode a UCAN envelope\n *\n * @see https://github.com/ucan-wg/spec#envelope\n */\nexport function encode (options:EnvelopeEncodeOptions):Uint8Array {\n    const { signature, signaturePayload } = options\n\n    const envelope = [signature, signaturePayload]\n\n    return cbor.encode(envelope)\n}\n\n/**\n * Decode a UCAN envelope\n *\n * @see https://github.com/ucan-wg/spec#envelope\n */\nexport function decode<Spec extends PayloadSpec> (options:EnvelopeDecodeOptions):DecodedEnvelope<Spec> {\n    const { envelope } = options\n\n    const decoded = cbor.decode(envelope as ByteView<Envelope>) as Envelope\n\n    const [signature, sigPayload] = decoded\n    const [_h, payloadTag] = Object.keys(sigPayload)\n    const header = sigPayload.h\n    const payload:DelegationPayload | InvocationPayload = sigPayload[payloadTag as PayloadTag]\n\n    const [_ucan, specVersion] = payloadTag.split('/')\n    const [spec, version] = specVersion.split('@')\n\n    const { alg, enc } = varsig.decode(header)\n\n    return {\n        alg,\n        enc,\n        signature,\n        // Narrow payload type based on Spec\n        payload,\n        spec,\n        version,\n    } as DecodedEnvelope<Spec>\n}\n"],
  "mappings": "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",
  "names": ["envelope_exports", "__export", "VERSION", "decode", "decodeSignaturePayload", "encode", "getSignaturePayload", "isDelegationPayload", "isInvocationPayload", "sign", "__toCommonJS", "cbor", "import_util", "varsig", "VERSION", "getSignaturePayload", "options", "spec", "version", "signatureType", "payload", "payloadTag", "__name", "decodeSignaturePayload", "bytes", "decoded", "keys", "alg", "enc", "isInvocationPayload", "isDelegationPayload", "sign", "signer", "signaturePayload", "encode", "signature", "envelope", "decode", "sigPayload", "_h", "header", "_ucan", "specVersion"]
}
