{"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import { createJWT, ES256KSigner, hexToBytes, JWTVerified, Signer as JWTSigner, verifyJWT } from 'did-jwt'\nimport { EthrDidController, interpretIdentifier, MetaSignature, REGISTRY } from 'ethr-did-resolver'\nimport { Resolvable } from 'did-resolver'\nimport {\n  toBeHex,\n  toQuantity,\n  Wallet,\n  computeAddress,\n  Signer as TxSigner,\n  decodeBase58,\n  Provider,\n  toUtf8Bytes,\n  isBytesLike,\n  hexlify,\n  Overrides,\n  decodeBase64,\n} from 'ethers'\n\nexport enum DelegateTypes {\n  veriKey = 'veriKey',\n  sigAuth = 'sigAuth',\n  enc = 'enc',\n}\n\ninterface IConfig {\n  identifier: string\n  chainNameOrId?: string | number | bigint\n\n  registry?: string\n\n  signer?: JWTSigner\n  alg?: 'ES256K' | 'ES256K-R'\n  txSigner?: TxSigner\n  privateKey?: string\n\n  rpcUrl?: string\n  provider?: Provider\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  web3?: any\n}\n\nexport type KeyPair = {\n  address: string\n  privateKey: string\n  publicKey: string\n  identifier: string\n}\n\ntype DelegateOptions = {\n  delegateType?: DelegateTypes\n  expiresIn?: number\n}\n\nexport class EthrDID {\n  public did: string\n  public address: string\n  public signer?: JWTSigner\n  public alg?: 'ES256K' | 'ES256K-R'\n  private owner?: string\n  private readonly controller?: EthrDidController\n\n  constructor(conf: IConfig) {\n    const { address, publicKey, network } = interpretIdentifier(conf.identifier)\n    const chainNameOrId =\n      typeof conf.chainNameOrId === 'bigint' || typeof conf.chainNameOrId === 'number'\n        ? toQuantity(conf.chainNameOrId)\n        : conf.chainNameOrId\n    if (conf.provider || conf.rpcUrl || conf.web3) {\n      let txSigner = conf.txSigner\n      if (conf.privateKey && typeof txSigner === 'undefined') {\n        txSigner = new Wallet(conf.privateKey, conf.provider || conf.web3?.currentProvider)\n      }\n      this.controller = new EthrDidController(\n        conf.identifier,\n        undefined,\n        txSigner,\n        chainNameOrId,\n        conf.provider || conf.web3?.currentProvider,\n        conf.rpcUrl,\n        conf.registry || REGISTRY\n      )\n      this.did = this.controller.did\n    } else {\n      const net = network || chainNameOrId\n      let networkString = net ? `${net}:` : ''\n      if (networkString in ['mainnet:', '0x1:']) {\n        networkString = ''\n      }\n      this.did =\n        typeof publicKey === 'string' ? `did:ethr:${networkString}${publicKey}` : `did:ethr:${networkString}${address}`\n    }\n    this.address = address\n    if (conf.signer) {\n      this.signer = conf.signer\n      this.alg = conf.alg\n      if (!this.alg) {\n        console.warn(\n          'A JWT signer was specified but no algorithm was set. Please set the `alg` parameter when calling `new EthrDID()`'\n        )\n      }\n    } else if (conf.privateKey) {\n      this.signer = ES256KSigner(hexToBytes(conf.privateKey), true)\n      this.alg = 'ES256K-R'\n    }\n  }\n\n  static createKeyPair(chainNameOrId?: string | number): KeyPair {\n    const wallet = Wallet.createRandom()\n    const privateKey = wallet.privateKey\n    const address = computeAddress(privateKey)\n    const publicKey = wallet.publicKey\n    const net = typeof chainNameOrId === 'number' ? toQuantity(chainNameOrId) : chainNameOrId\n    const identifier = net ? `did:ethr:${net}:${publicKey}` : publicKey\n    return { address, privateKey, publicKey, identifier }\n  }\n\n  async lookupOwner(cache = true): Promise<string> {\n    if (typeof this.controller === 'undefined') {\n      throw new Error('a web3 provider configuration is needed for network operations')\n    }\n    if (cache && this.owner) return this.owner\n    return this.controller?.getOwner(this.address)\n  }\n\n  async changeOwner(newOwner: string, txOptions?: Overrides): Promise<string> {\n    if (typeof this.controller === 'undefined') {\n      throw new Error('a web3 provider configuration is needed for network operations')\n    }\n    const owner = await this.lookupOwner()\n    const receipt = await this.controller.changeOwner(newOwner, {\n      ...txOptions,\n      from: owner,\n    })\n    this.owner = newOwner\n    return receipt.hash\n  }\n\n  async createChangeOwnerHash(newOwner: string): Promise<string> {\n    if (typeof this.controller === 'undefined') {\n      throw new Error('a web3 provider configuration is needed for network operations')\n    }\n    return this.controller.createChangeOwnerHash(newOwner)\n  }\n\n  async changeOwnerSigned(newOwner: string, signature: MetaSignature, txOptions?: Overrides): Promise<string> {\n    if (typeof this.controller === 'undefined') {\n      throw new Error('a web3 provider configuration is needed for network operations')\n    }\n    const receipt = await this.controller.changeOwnerSigned(newOwner, signature, txOptions)\n    this.owner = newOwner\n    return receipt.hash\n  }\n\n  async addDelegate(delegate: string, delegateOptions?: DelegateOptions, txOptions: Overrides = {}): Promise<string> {\n    if (typeof this.controller === 'undefined') {\n      throw new Error('a web3 provider configuration is needed for network operations')\n    }\n    const owner = await this.lookupOwner()\n    const receipt = await this.controller.addDelegate(\n      delegateOptions?.delegateType || DelegateTypes.veriKey,\n      delegate,\n      delegateOptions?.expiresIn || 86400,\n      { ...txOptions, from: owner }\n    )\n    return receipt.hash\n  }\n\n  async createAddDelegateHash(delegateType: string, delegateAddress: string, exp: number): Promise<string> {\n    if (typeof this.controller === 'undefined') {\n      throw new Error('a web3 provider configuration is needed for network operations')\n    }\n    return this.controller.createAddDelegateHash(delegateType, delegateAddress, exp)\n  }\n\n  async addDelegateSigned(\n    delegate: string,\n    signature: MetaSignature,\n    delegateOptions?: DelegateOptions,\n    txOptions: Overrides = {}\n  ): Promise<string> {\n    if (typeof this.controller === 'undefined') {\n      throw new Error('a web3 provider configuration is needed for network operations')\n    }\n    const receipt = await this.controller.addDelegateSigned(\n      delegateOptions?.delegateType || DelegateTypes.veriKey,\n      delegate,\n      delegateOptions?.expiresIn || 86400,\n      signature,\n      txOptions\n    )\n    return receipt.hash\n  }\n\n  async revokeDelegate(\n    delegate: string,\n    delegateType = DelegateTypes.veriKey,\n    txOptions: Overrides = {}\n  ): Promise<string> {\n    if (typeof this.controller === 'undefined') {\n      throw new Error('a web3 provider configuration is needed for network operations')\n    }\n    const owner = await this.lookupOwner()\n    const receipt = await this.controller.revokeDelegate(delegateType, delegate, { ...txOptions, from: owner })\n    return receipt.hash\n  }\n\n  async createRevokeDelegateHash(delegateType: string, delegateAddress: string): Promise<string> {\n    if (typeof this.controller === 'undefined') {\n      throw new Error('a web3 provider configuration is needed for network operations')\n    }\n    return this.controller.createRevokeDelegateHash(delegateType, delegateAddress)\n  }\n\n  async revokeDelegateSigned(\n    delegate: string,\n    delegateType = DelegateTypes.veriKey,\n    signature: MetaSignature,\n    txOptions: Overrides = {}\n  ): Promise<string> {\n    if (typeof this.controller === 'undefined') {\n      throw new Error('a web3 provider configuration is needed for network operations')\n    }\n    const receipt = await this.controller.revokeDelegateSigned(delegateType, delegate, signature, txOptions)\n    return receipt.hash\n  }\n\n  async setAttribute(\n    key: string,\n    value: string | Uint8Array,\n    expiresIn = 86400,\n    /** @deprecated please use `txOptions.gasLimit` */\n    gasLimit?: number,\n    txOptions: Overrides = {}\n  ): Promise<string> {\n    if (typeof this.controller === 'undefined') {\n      throw new Error('a web3 provider configuration is needed for network operations')\n    }\n    const owner = await this.lookupOwner()\n    const receipt = await this.controller.setAttribute(key, attributeToHex(key, value), expiresIn, {\n      gasLimit,\n      ...txOptions,\n      from: owner,\n    })\n    return receipt.hash\n  }\n\n  async createSetAttributeHash(attrName: string, attrValue: string, exp: number) {\n    if (typeof this.controller === 'undefined') {\n      throw new Error('a web3 provider configuration is needed for network operations')\n    }\n    return this.controller.createSetAttributeHash(attrName, attrValue, exp)\n  }\n\n  async setAttributeSigned(\n    key: string,\n    value: string | Uint8Array,\n    expiresIn = 86400,\n    signature: MetaSignature,\n    txOptions: Overrides = {}\n  ): Promise<string> {\n    if (typeof this.controller === 'undefined') {\n      throw new Error('a web3 provider configuration is needed for network operations')\n    }\n    const receipt = await this.controller.setAttributeSigned(\n      key,\n      attributeToHex(key, value),\n      expiresIn,\n      signature,\n      txOptions\n    )\n    return receipt.hash\n  }\n\n  async revokeAttribute(\n    key: string,\n    value: string | Uint8Array,\n    /** @deprecated please use `txOptions.gasLimit` */\n    gasLimit?: number,\n    txOptions: Overrides = {}\n  ): Promise<string> {\n    if (typeof this.controller === 'undefined') {\n      throw new Error('a web3 provider configuration is needed for network operations')\n    }\n    const owner = await this.lookupOwner()\n    const receipt = await this.controller.revokeAttribute(key, attributeToHex(key, value), {\n      gasLimit,\n      ...txOptions,\n      from: owner,\n    })\n    return receipt.hash\n  }\n\n  async createRevokeAttributeHash(attrName: string, attrValue: string) {\n    if (typeof this.controller === 'undefined') {\n      throw new Error('a web3 provider configuration is needed for network operations')\n    }\n    return this.controller.createRevokeAttributeHash(attrName, attrValue)\n  }\n\n  async revokeAttributeSigned(\n    key: string,\n    value: string | Uint8Array,\n    signature: MetaSignature,\n    txOptions: Overrides = {}\n  ): Promise<string> {\n    if (typeof this.controller === 'undefined') {\n      throw new Error('a web3 provider configuration is needed for network operations')\n    }\n    const receipt = await this.controller.revokeAttributeSigned(key, attributeToHex(key, value), signature, txOptions)\n    return receipt.hash\n  }\n\n  // Create a temporary signing delegate able to sign JWT on behalf of identity\n  async createSigningDelegate(\n    delegateType = DelegateTypes.veriKey,\n    expiresIn = 86400\n  ): Promise<{ kp: KeyPair; txHash: string }> {\n    const kp = EthrDID.createKeyPair()\n    this.signer = ES256KSigner(hexToBytes(kp.privateKey), true)\n    const txHash = await this.addDelegate(kp.address, {\n      delegateType,\n      expiresIn,\n    })\n    return { kp, txHash }\n  }\n\n  // eslint-disable-next-line\n  async signJWT(payload: any, expiresIn?: number): Promise<string> {\n    if (typeof this.signer !== 'function') {\n      throw new Error('No signer configured')\n    }\n    const options = {\n      signer: this.signer,\n      alg: 'ES256K-R',\n      issuer: this.did,\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    if (expiresIn) (<any>options)['expiresIn'] = expiresIn\n    return createJWT(payload, options)\n  }\n\n  async verifyJWT(jwt: string, resolver: Resolvable, audience = this.did): Promise<JWTVerified> {\n    return verifyJWT(jwt, { resolver, audience })\n  }\n}\n\nfunction attributeToHex(key: string, value: string | Uint8Array): string {\n  if (value instanceof Uint8Array || isBytesLike(value)) {\n    return hexlify(value)\n  }\n  const matchKeyWithEncoding = key.match(/^did\\/(pub|auth|svc)\\/(\\w+)(\\/(\\w+))?(\\/(\\w+))?$/)\n  const encoding = matchKeyWithEncoding?.[6]\n  const matchHexString = (<string>value).match(/^0x[0-9a-fA-F]*$/)\n  if (encoding && !matchHexString) {\n    if (encoding === 'base64') {\n      return hexlify(decodeBase64(value))\n    }\n    if (encoding === 'base58') {\n      return hexlify(toBeHex(decodeBase58(value)))\n    }\n  } else if (matchHexString) {\n    return <string>value\n  }\n\n  return hexlify(toUtf8Bytes(value))\n}\n"],"names":["DelegateTypes","EthrDID","constructor","conf","did","address","signer","alg","owner","controller","publicKey","network","interpretIdentifier","identifier","chainNameOrId","toQuantity","provider","rpcUrl","web3","txSigner","privateKey","Wallet","currentProvider","EthrDidController","undefined","registry","REGISTRY","net","networkString","console","warn","ES256KSigner","hexToBytes","createKeyPair","wallet","createRandom","computeAddress","lookupOwner","cache","_this","Error","Promise","resolve","getOwner","e","reject","changeOwner","newOwner","txOptions","_this2","then","from","receipt","hash","createChangeOwnerHash","_this3","changeOwnerSigned","signature","_this4","addDelegate","delegate","delegateOptions","_this5","delegateType","veriKey","expiresIn","createAddDelegateHash","delegateAddress","exp","_this6","addDelegateSigned","_this7","revokeDelegate","_this8","createRevokeDelegateHash","_this9","revokeDelegateSigned","_this10","setAttribute","key","value","gasLimit","_this11","attributeToHex","createSetAttributeHash","attrName","attrValue","_this12","setAttributeSigned","_this13","revokeAttribute","_this14","createRevokeAttributeHash","_this15","revokeAttributeSigned","_this16","createSigningDelegate","_this17","kp","txHash","signJWT","payload","_this18","options","issuer","createJWT","verifyJWT","jwt","resolver","audience","_this19","Uint8Array","isBytesLike","hexlify","matchKeyWithEncoding","match","encoding","matchHexString","decodeBase64","toBeHex","decodeBase58","toUtf8Bytes"],"mappings":"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"}