All files / src/domain/did/useCases resolve.ts

100% Statements 5/5
100% Branches 1/1
100% Functions 0/0
100% Lines 5/5

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29                                          19x 19x   37x 37x 37x    
import type { IDidDocument } from '../../../models/DidDocument';
import { request } from '@blockcerts/explorer-lookup';
import DidResolver from '../valueObjects/didResolver';
import { isDidKey } from '../../verifier/useCases/getIssuerProfile';
import resolveDidKeyDocument from './resolveDidKeyDocument';
 
interface IUniversalResolverResponse {
  didResolutionMetadata?: any;
  didDocument: IDidDocument;
  didDocumentMetadata?: {
    method?: {
      published: boolean;
      recoveryMethod: string;
      updateCommitment: string;
    };
    canonicalId: string;
  };
}
 
export default async function resolve (didUri: string, didResolverUrl = DidResolver.url): Promise<IDidDocument> {
  if (isDidKey(didUri)) {
    const didDocument = await resolveDidKeyDocument(didUri);
    return didDocument;
  }
  const universalResolverResponse: string = await request({ url: `${didResolverUrl}/${didUri}` });
  const parsedUniversalResolverResponse: IUniversalResolverResponse = JSON.parse(universalResolverResponse);
  return parsedUniversalResolverResponse.didDocument;
}