jolocom / jolocom-lib

Library for interacting with the identity solution provided by Jolocom.
MIT License
24 stars 18 forks source link

Export an explicitly public interface directly from 'jolocom-lib' #343

Open mnzaki opened 5 years ago

mnzaki commented 5 years ago

Description

Library consumers need to import certain interfaces and classes, they should not be using the direct paths or else we might break things if we make internal changes.

A definite "public" interface should be declared, specifying which interfaces are expected to be used publicly. Whether everything should be exported from ts/index.ts is still an open question. Perhaps some categorization?

Here are the imports from inside jolocom/smartwallet-app except for tests:

import { IdentityWallet } from 'jolocom-lib/js/identityWallet/identityWallet'
import {
  createJolocomRegistry,
  JolocomRegistry,
} from 'jolocom-lib/js/registries/jolocomRegistry'
import { jolocomContractsAdapter } from 'jolocom-lib/js/contracts/contractsAdapter'
import { jolocomEthereumResolver } from 'jolocom-lib/js/ethereum/ethereum'
import { jolocomContractsGateway } from 'jolocom-lib/js/contracts/contractsGateway'
import { publicKeyToDID } from 'jolocom-lib/js/utils/crypto'
import { Identity } from 'jolocom-lib/js/identity/identity'
import { IIpfsConnector } from 'jolocom-lib/js/ipfs/types'
import { IDidDocumentAttrs } from 'jolocom-lib/js/identity/didDocument/types'
import {
  ILinkedDataSignature,
  ILinkedDataSignatureAttrs,
} from 'jolocom-lib/js/linkedDataSignature/types'
import { ISignedCredentialAttrs } from 'jolocom-lib/js/credentials/signedCredential/types'
import { IClaimSection } from 'jolocom-lib/js/credentials/credential/types'

import { InteractionType } from 'jolocom-lib/js/interactionTokens/types'
import { DidDocument } from 'jolocom-lib/js/identity/didDocument/didDocument'
import {
  CredentialOfferMetadata,
  CredentialOfferRenderInfo,
} from 'jolocom-lib/js/interactionTokens/interactionTokens.types'
import { SoftwareKeyProvider } from 'jolocom-lib/js/vaultedKeyProvider/softwareProvider'
import { Authentication } from 'jolocom-lib/js/interactionTokens/authentication'
import { CredentialRequest } from 'jolocom-lib/js/interactionTokens/credentialRequest'
import { PaymentRequest } from 'jolocom-lib/js/interactionTokens/paymentRequest'
import { SignedCredential } from 'jolocom-lib/js/credentials/signedCredential/signedCredential'
import { JSONWebToken } from 'jolocom-lib/js/interactionTokens/JSONWebToken'
import { CredentialOfferRequest } from 'jolocom-lib/js/interactionTokens/credentialOfferRequest'
import { JolocomLib } from 'jolocom-lib'
import { CredentialsReceive } from 'jolocom-lib/js/interactionTokens/credentialsReceive'
import { keyIdToDid } from 'jolocom-lib/js/utils/helper'

And here are imports from tests:

import { IRegistry } from 'jolocom-lib/js/registries/types'
import { SignedCredential } from 'jolocom-lib/js/credentials/signedCredential/signedCredential'
import { JSONWebToken } from 'jolocom-lib/js/interactionTokens/JSONWebToken'
import { InteractionType } from 'jolocom-lib/js/interactionTokens/types'
import { JolocomLib } from 'jolocom-lib'
import { ISignedCredentialAttrs } from 'jolocom-lib/js/credentials/signedCredential/types'

Part of #355

TODO

mnzaki commented 5 years ago

Instead of having to do things like:

import { Identity } from 'jolocom-lib/js/identity/identity'
import { SoftwareKeyProvider } from 'jolocom-lib/js/vaultedKeyProvider/softwareProvider'

One option is exporting everything from index so users can do:

import { Identity, SoftwareKeyProvider } from 'jolocom-lib'

Another option is to consider the JolocomLib export our "public API" and just add whatever is missing to it. But types/interfaces will need to be exported, can't be added to the JolocomLib object