{"version":3,"file":"index.cjs","sources":["../src/utils.ts","../src/api.ts","../src/resolver.ts","../src/index.ts"],"sourcesContent":["import { PublicKey, KeyType, PrivateKey, NameType } from '@wharfkit/antelope';\nimport { secp256k1 } from '@noble/curves/secp256k1'\nimport { p256 } from '@noble/curves/p256'\nimport { ProjPointType } from '@noble/curves/abstract/weierstrass';\nimport { bytesToBase64url, bytesToHex, ES256KSigner, ES256Signer, hexToBytes, Signer } from 'did-jwt';\nimport { Issuer } from 'did-jwt-vc';\n\n/**\n * Create a Antelope DID string\n * \n * @param account {NameType} the account name e.g. \"myaccount\"\n * @param chain {string} the chain name or chain id\n * @returns {string} the Antelope DID string\n * \n * @example createDid(\"myaccount\", \"telos\") // returns \"did:antelope:telos:myaccount\"\n * @example createDid(\"myaccount\", \"eos:testnet:jungle\") // returns \"did:antelope:eos:testnet:jungle:myaccount\"\n * @example createDid(\"myaccount\", \"2a02a0053e5a8cf73a56ba0fda11e4d92e0238a4a2aa74fccf46d5a910746840\") // returns \"did:antelope:2a02a0053e5a8cf73a56ba0fda11e4d92e0238a4a2aa74fccf46d5a910746840:myaccount\"\n */\nexport function createDid(account: NameType, chain: string): string {\n  return `did:antelope:${chain}:${account.toString()}`;\n}\n\nexport function createSigner(privateKey: PrivateKey): Signer {\n  if (privateKey.type === KeyType.K1) {\n    return ES256KSigner(privateKey.data.array);\n  }\n\n  if (privateKey.type === KeyType.R1 || privateKey.type === KeyType.WA) {\n    return ES256Signer(privateKey.data.array);\n  }\n\n  throw new Error('Unsupported key type');\n}\n\nexport function createIssuer(did: string, privateKey: PrivateKey): Issuer {\n  return {\n    did,\n    signer: createSigner(privateKey),\n    alg: privateKey.type === KeyType.K1 ? 'ES256K' : 'ES256',\n  }\n}\n\nexport function toPublicKeyHex(publicKey: PublicKey): string {\n  return bytesToHex(publicKey.data.array);\n}\n\n// Cannot import the following, so copying here\n// import { bigintToBytes } from '../node_modules/did-jwt/src/util';\nfunction bigintToBytes(n: bigint, minLength?: number): Uint8Array {\n  return hexToBytes(n.toString(16), minLength)\n}\n\nexport interface JWK {\n  crv: string;\n  kty: string;\n  x: string;\n  y: string;\n  kid: string;\n}\n\nexport function createJWK(publicKey: PublicKey): JWK {\n  const { jwkCurve } = getCurveNamesFromType(publicKey);\n  // copied from:\n  // secp256k1 - https://github.com/decentralized-identity/did-jwt/pull/280/files#diff-c94d78b633b2fe38397047def271342090b3c8d81adf022a3a745af6d7b1c845R197\n  // P-256 - https://github.com/decentralized-identity/did-jwt/pull/280/files#diff-c94d78b633b2fe38397047def271342090b3c8d81adf022a3a745af6d7b1c845R57\n  const publicKeyPoint = toNobel(publicKey);\n  return {\n    crv: jwkCurve,\n    kty: 'EC',\n    x: bytesToBase64url(bigintToBytes(publicKeyPoint.x)),\n    y: bytesToBase64url(bigintToBytes(publicKeyPoint.y)),\n    kid: publicKey.toString(),\n  }\n}\n\nexport function getCurveNamesFromType(key: PublicKey): {\n  jwkCurve: \"secp256k1\" | \"P-256\";\n  verificationMethodType: \"EcdsaSecp256k1VerificationKey2019\" | \"JsonWebKey2020\"\n} {\n  const type = key.type;\n\n  switch (type) {\n    case KeyType.K1:\n      return {\n        jwkCurve: 'secp256k1',\n        verificationMethodType: 'EcdsaSecp256k1VerificationKey2019',\n      };\n    case KeyType.R1:\n      return { jwkCurve: 'P-256', verificationMethodType: 'JsonWebKey2020' };\n    case KeyType.WA:\n      return { jwkCurve: 'P-256', verificationMethodType: 'JsonWebKey2020' };\n    default:\n      throw new Error(`Unsupported key type: ${type}`);\n  }\n}\n\nexport function toNobel(publicKey: PublicKey): ProjPointType<bigint> {\n  const { jwkCurve } = getCurveNamesFromType(publicKey);\n  switch (jwkCurve) {\n    case 'secp256k1':\n      return secp256k1.ProjectivePoint.fromHex(publicKey.data.array);\n    case 'P-256':\n      return p256.ProjectivePoint.fromHex(publicKey.data.array);\n    default:\n      throw new Error(`Unsupported curve: ${jwkCurve}`);\n  }\n}","import { APIClient, FetchProvider } from '@wharfkit/antelope';\nimport { FetchType } from './types';\n\nexport interface GetApiOptions {\n    url: string;\n    fetch?: FetchType;\n}\nexport function getApi(options: GetApiOptions): APIClient {\n    const provider = options.fetch ? new FetchProvider(options.url, { fetch: options.fetch }) : new FetchProvider(options.url);\n    return new APIClient({\n        url: options.url,\n        provider,\n    });\n}\n","import { ParsedDID, DIDResolutionResult, DIDDocument, ServiceEndpoint, Resolvable } from 'did-resolver';\nimport { APIError, PublicKey } from '@wharfkit/antelope';\nimport { AccountObject } from '@wharfkit/antelope/src/api/v1/types';\nimport { PermissionLevelWeight } from '@wharfkit/antelope/src/chain/authority';\nimport { Entry, Registry, MethodId, VerificationMethod, AntelopeDIDResolutionOptions } from './types';\nimport { createJWK, getCurveNamesFromType } from './utils';\nimport antelopeChainRegistry from './antelope-did-chain-registry.json';\nimport { GetApiOptions, getApi } from './api';\n\nconst PATTERN_ACCOUNT_NAME = `([a-z1-5.]{0,12}[a-z1-5])`;\nconst PATTERN_CHAIN_ID = `([A-Fa-f0-9]{64})`;\nconst PATTERN_CHAIN_NAME = `(([a-z1-5.]{0,12}[a-z1-5])((:[a-z1-5.]{0,12}[a-z1-5])+)?)`;\n\nfunction toRegExp(pattern: string): RegExp {\n  return new RegExp(`^${pattern}$`);\n}\n\nconst REGEX_ACCOUNT_NAME = toRegExp(PATTERN_ACCOUNT_NAME);\nconst REGEX_CHAIN_ID = toRegExp(PATTERN_CHAIN_ID);\nconst REGEX_CHAIN_NAME = toRegExp(PATTERN_CHAIN_NAME);\nconst REGEX_ID_AND_SUBJECT = toRegExp(`${PATTERN_CHAIN_ID}:${PATTERN_ACCOUNT_NAME}`);\nconst REGEX_NAME_AND_SUBJECT = toRegExp(`${PATTERN_CHAIN_NAME}:${PATTERN_ACCOUNT_NAME}`);\n\nconst CONDITIONAL_PROOF_2022 = 'ConditionalProof2022';\n\nexport { antelopeChainRegistry, REGEX_ACCOUNT_NAME, REGEX_CHAIN_ID, REGEX_CHAIN_NAME, CONDITIONAL_PROOF_2022 };\n\nfunction getResolutionError(error: string): DIDResolutionResult {\n  return {\n    didResolutionMetadata: { error },\n    didDocument: null,\n    didDocumentMetadata: {},\n  };\n}\n\nexport function checkDID(parsed: ParsedDID, registry: Registry): MethodId | undefined {\n  // findChainByName\n  const partsName = parsed.id.match(REGEX_NAME_AND_SUBJECT);\n\n  if (partsName) {\n    const entry = registry[partsName[1]];\n\n    if (entry)\n      return {\n        chain: entry,\n        subject: partsName[partsName.length - 1],\n      };\n    return undefined;\n  }\n\n  // findChainById\n  const partsID = parsed.id.match(REGEX_ID_AND_SUBJECT);\n\n  if (partsID) {\n    for (const key of Object.keys(registry)) {\n      const entry: Entry = registry[key];\n\n      if (entry.chainId === partsID[1])\n        return {\n          chain: entry,\n          subject: partsID[partsID.length - 1],\n        };\n    }\n  }\n\n  return undefined;\n}\n\nexport async function fetchAccount(\n  methodId: MethodId,\n  _did: string,\n  _parsed: ParsedDID,\n  options: AntelopeDIDResolutionOptions\n): Promise<AccountObject | null> {\n  const serviceType = 'LinkedDomains';\n\n  if (options.antelopeChainUrl) {\n    return await createRpcFetchAccount(methodId, {\n      url: options.antelopeChainUrl,\n      fetch: options.fetch,\n    });\n  }\n\n  const services = findServices(methodId.chain.service, serviceType);\n\n  for (const service of services as any) {\n    return await createRpcFetchAccount(methodId, {\n      url: service.serviceEndpoint,\n      fetch: options.fetch\n    });\n  }\n\n  return null;\n}\n\n\nasync function createRpcFetchAccount(methodId: MethodId, options: GetApiOptions): Promise<AccountObject | null> {\n  try {\n    // @ts-expect-error AccountObject is not assignable to @wharfkit/antelope AccountObject\n    return await getApi(options).v1.chain.get_account(methodId.subject);\n  } catch (e) {\n    if (e instanceof APIError && e.message.startsWith('Account Query Exception at /v1/chain/get_account')) {\n      return null;\n    } else {\n      throw e;\n    }\n  }\n}\n\nfunction findServices(service: Array<ServiceEndpoint>, type: string): Array<ServiceEndpoint> {\n  return service.filter((s: any) => (Array.isArray(s.type) ? s.type.includes(type) : s.type === type));\n}\n\nfunction createKeyMethod(baseId: string, i: number, did: string, pubKey: PublicKey): VerificationMethod {\n  const { verificationMethodType } = getCurveNamesFromType(pubKey);\n\n  return {\n    id: baseId + '-' + i,\n    controller: did,\n    type: verificationMethodType,\n    // NOTE: could also use `util.publicKeyHex(pubKey)` instead, but it is handy to have the kid property of the JWK for debugging\n    publicKeyJwk: createJWK(pubKey),\n  };\n}\n\nfunction createAccountMethod(\n  baseId: string,\n  methodId: MethodId,\n  i: number,\n  did: string,\n  account: PermissionLevelWeight\n): VerificationMethod {\n  const delegatedChain = baseId.slice(0, baseId.lastIndexOf(methodId.subject) - 1);\n  const accountMethod = {\n    id: baseId + '-' + i,\n    controller: did,\n    type: CONDITIONAL_PROOF_2022,\n    conditionDelegated: delegatedChain + ':' + account.permission.actor + '#' + account.permission.permission,\n  };\n\n  return accountMethod;\n}\n\nexport function createDIDDocument(methodId: MethodId, did: string, antelopeAccount: AccountObject): DIDDocument {\n  const verificationMethod: VerificationMethod[] = [];\n\n  for (const permission of antelopeAccount.permissions) {\n    const baseId = did + '#' + permission.perm_name;\n\n    permission.required_auth.accounts = permission.required_auth.accounts.filter(\n      (account) => account.permission.permission.toString() !== 'eosio.code'\n    );\n\n    let method: VerificationMethod;\n\n    if (permission.required_auth.keys.length === 1 && permission.required_auth.accounts.length === 0) {\n      // @ts-expect-error PublicKey is not assignable to @wharfkit/antelope PublicKey\n      method = createKeyMethod(baseId, 0, did, permission.required_auth.keys[0].key);\n      method.id = baseId;\n    } else {\n      method = {\n        id: baseId,\n        controller: did,\n        type: CONDITIONAL_PROOF_2022,\n        threshold: permission.required_auth.threshold.toNumber(),\n        conditionWeightedThreshold: [],\n      };\n\n      if (permission.parent.toString() !== '') {\n        method.relationshipParent = [did + '#' + permission.parent.toString()];\n      }\n\n      let i = 0;\n\n      for (const key of permission.required_auth.keys) {\n        method.conditionWeightedThreshold.push({\n          // @ts-expect-error PublicKey is not assignable to @wharfkit/antelope PublicKey\n          condition: createKeyMethod(baseId, i, did, key.key),\n          weight: key.weight.toNumber(),\n        });\n        i++;\n      }\n\n      for (const account of permission.required_auth.accounts) {\n        method.conditionWeightedThreshold.push({\n          condition: createAccountMethod(baseId, methodId, i, did, account),\n          weight: account.weight.toNumber(),\n        });\n        i++;\n      }\n    }\n\n    verificationMethod.push(method);\n  }\n\n  const doc = {\n    '@context': [\n      'https://www.w3.org/ns/did/v1',\n      'https://w3c-ccg.github.io/verifiable-conditions/contexts/verifiable-conditions-2021-v1.json',\n    ],\n    id: did,\n    verificationMethod,\n    service: methodId.chain.service,\n  };\n\n  return doc as any;\n}\n\nexport async function resolve(\n  did: string,\n  parsed: ParsedDID,\n  // @ts-ignore(TS6133 declared but never used)\n  resolver: Resolvable,\n  options: AntelopeDIDResolutionOptions\n): Promise<DIDResolutionResult> {\n  const registry: Registry = {\n    ...antelopeChainRegistry,\n    ...options.antelopeChainRegistry,\n  };\n\n  let methodId = checkDID(parsed, registry);\n\n  if (options.antelopeChainUrl) {\n    const [chainId, subject] = parsed.id.split(':');\n\n    methodId = {\n      chain: {\n        chainId,\n        service: [],\n      },\n      subject,\n    };\n  }\n\n  if (!methodId) {\n    // invalid method-specific-id OR no matching chain in the registry\n    return getResolutionError('invalidDid');\n  }\n\n  const antelopeAccount = await fetchAccount(methodId, did, parsed, options);\n\n  if (!antelopeAccount) {\n    return getResolutionError('notFound');\n  }\n\n  const didDoc = createDIDDocument(methodId, parsed.did, antelopeAccount);\n\n  return {\n    didResolutionMetadata: { contentType: 'application/did+ld+json' },\n    didDocument: didDoc,\n    didDocumentMetadata: {},\n  };\n}\n\nexport function createResolver(options: AntelopeDIDResolutionOptions = {}): any {\n  return function (\n    did: string,\n    parsed: ParsedDID,\n    // @ts-ignore(TS6133 declared but never used)\n    resolver: Resolvable,\n    antelopeOptions: AntelopeDIDResolutionOptions\n  ) {\n    return resolve(did, parsed, resolver, { ...antelopeOptions, ...options });\n  };\n}\n","import { ResolverRegistry } from 'did-resolver';\nimport {\n  createResolver,\n} from './resolver';\nimport { AntelopeDIDResolutionOptions } from './types';\nexport {\n  antelopeChainRegistry,\n  checkDID,\n  fetchAccount,\n  REGEX_ACCOUNT_NAME,\n  REGEX_CHAIN_ID,\n  REGEX_CHAIN_NAME,\n  CONDITIONAL_PROOF_2022,\n  createDIDDocument,\n} from './resolver';\n\nexport * from './utils';\n\nexport function getResolver(options?: AntelopeDIDResolutionOptions): ResolverRegistry {\n  return { eosio: createResolver(options), antelope: createResolver(options) } as any;\n}\n"],"names":["createDid","account","chain","toString","createSigner","privateKey","type","KeyType","K1","ES256KSigner","data","array","R1","WA","ES256Signer","Error","createIssuer","did","signer","alg","toPublicKeyHex","publicKey","bytesToHex","bigintToBytes","n","minLength","hexToBytes","createJWK","jwkCurve","getCurveNamesFromType","publicKeyPoint","toNobel","crv","kty","x","bytesToBase64url","y","kid","key","verificationMethodType","secp256k1","ProjectivePoint","fromHex","p256","getApi","options","provider","fetch","FetchProvider","url","APIClient","_iteratorSymbol","Symbol","iterator","pact","state","value","s","_Pact","v","o","bind","then","_settle","observer","prototype","onFulfilled","onRejected","result","callback","e","_this","_isSettledPact","thenable","body","check","reject","_cycle","i","length","target","step","next","done","return","_fixup","resolve","parsed","resolver","registry","antelopeChainRegistry","methodId","checkDID","antelopeChainUrl","chainId","subject","id","split","service","Promise","getResolutionError","fetchAccount","antelopeAccount","didDoc","createDIDDocument","didResolutionMetadata","contentType","didDocument","didDocumentMetadata","createRpcFetchAccount","_catch","v1","get_account","APIError","message","startsWith","_did","_parsed","_exit","_temp3","_result","_exit2","services","findServices","serviceType","_temp","_forOf","serviceEndpoint","_await$createRpcFetch2","_result2","_temp2","_await$createRpcFetch","PATTERN_ACCOUNT_NAME","PATTERN_CHAIN_ID","PATTERN_CHAIN_NAME","toRegExp","pattern","RegExp","REGEX_ACCOUNT_NAME","REGEX_CHAIN_ID","REGEX_CHAIN_NAME","REGEX_ID_AND_SUBJECT","REGEX_NAME_AND_SUBJECT","CONDITIONAL_PROOF_2022","error","partsName","match","entry","undefined","partsID","Object","keys","filter","Array","isArray","includes","createKeyMethod","baseId","pubKey","controller","publicKeyJwk","createAccountMethod","delegatedChain","slice","lastIndexOf","accountMethod","conditionDelegated","permission","actor","verificationMethod","permissions","perm_name","required_auth","accounts","method","threshold","toNumber","conditionWeightedThreshold","parent","relationshipParent","push","condition","weight","doc","createResolver","antelopeOptions","getResolver","eosio","antelope"],"mappings":"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"}