UNPKG

@orbitdb/core

Version:

Distributed p2p database on IPFS

42 lines (32 loc) 1.3 kB
import PublicKeyIdentityProvider from './publickey.js' const identityProviders = {} const isProviderSupported = (type) => { return Object.keys(identityProviders).includes(type) } const getIdentityProvider = (type) => { if (!isProviderSupported(type)) { throw new Error(`IdentityProvider type '${type}' is not supported`) } return identityProviders[type] } /** * Adds an identity provider. * @param {IdentityProvider} identityProvider The identity provider to add. * @throws Given IdentityProvider doesn\'t have a field \'type\'. * @throws Given IdentityProvider doesn\'t have a function \'verifyIdentity\'. * @throws IdentityProvider ${IdentityProvider.type} already added. * @static * @memberof module:Identities */ const useIdentityProvider = (identityProvider) => { if (!identityProvider.type || typeof identityProvider.type !== 'string') { throw new Error('Given IdentityProvider doesn\'t have a field \'type\'.') } if (!identityProvider.verifyIdentity) { throw new Error('Given IdentityProvider doesn\'t have a function \'verifyIdentity\'.') } identityProviders[identityProvider.type] = identityProvider } useIdentityProvider(PublicKeyIdentityProvider) export { useIdentityProvider, getIdentityProvider, PublicKeyIdentityProvider }