refactor: Standardize module loader functions. Do not expose module lists.

This commit is contained in:
Hayden Young 2023-06-18 03:02:40 +01:00
parent 8b93553d0e
commit 4c3a338205
7 changed files with 26 additions and 50 deletions

View File

@ -73,7 +73,6 @@ const removeAccessController = type => {
} }
export { export {
accessControllers,
getAccessController, getAccessController,
addAccessController, addAccessController,
removeAccessController removeAccessController

View File

@ -5,7 +5,7 @@
* details and providers. * details and providers.
*/ */
import Identity, { isIdentity, isEqual, decodeIdentity } from './identity.js' import Identity, { isIdentity, isEqual, decodeIdentity } from './identity.js'
import { getProviderFor } from './providers/index.js' import { getIdentityProvider } from './providers/index.js'
// import DIDIdentityProvider from './identity-providers/did.js' // import DIDIdentityProvider from './identity-providers/did.js'
// import EthIdentityProvider from './identity-providers/ethereum.js' // import EthIdentityProvider from './identity-providers/ethereum.js'
import KeyStore, { signMessage, verifyMessage } from '../key-store.js' import KeyStore, { signMessage, verifyMessage } from '../key-store.js'
@ -75,7 +75,7 @@ const Identities = async ({ keystore, path, storage, ipfs } = {}) => {
options.keystore = keystore options.keystore = keystore
const type = options.type || DefaultProviderType const type = options.type || DefaultProviderType
const Provider = getProviderFor(type).default const Provider = getIdentityProvider(type).default
const identityProvider = Provider(options) const identityProvider = Provider(options)
const id = await identityProvider.getId(options) const id = await identityProvider.getId(options)
const privateKey = await keystore.getKey(id) || await keystore.createKey(id) const privateKey = await keystore.getKey(id) || await keystore.createKey(id)
@ -117,7 +117,7 @@ const Identities = async ({ keystore, path, storage, ipfs } = {}) => {
return isEqual(identity, verifiedIdentity) return isEqual(identity, verifiedIdentity)
} }
const Provider = getProviderFor(identity.type) const Provider = getIdentityProvider(identity.type)
const identityVerified = await Provider.verifyIdentity(identity) const identityVerified = await Provider.verifyIdentity(identity)
if (identityVerified) { if (identityVerified) {

View File

@ -7,7 +7,6 @@ export {
} from './identity.js' } from './identity.js'
export { export {
PublicKeyIdentityProvider,
addIdentityProvider, addIdentityProvider,
identityProviders getIdentityProvider
} from './providers/index.js' } from './providers/index.js'

View File

@ -74,7 +74,7 @@ const isProviderSupported = (type) => {
* not supported. * not supported.
* @static * @static
*/ */
const getProviderFor = (type) => { const getIdentityProvider = (type) => {
if (!isProviderSupported(type)) { if (!isProviderSupported(type)) {
throw new Error(`IdentityProvider type '${type}' is not supported`) throw new Error(`IdentityProvider type '${type}' is not supported`)
} }
@ -108,6 +108,4 @@ const addIdentityProvider = (IdentityProvider) => {
identityProviders[IdentityProvider.type] = IdentityProvider identityProviders[IdentityProvider.type] = IdentityProvider
} }
// export { default as DIDIdentityProvider } from './did.js' export { addIdentityProvider, getIdentityProvider, PublicKeyIdentityProvider }
// export { default as EthIdentityProvider } from './ethereum.js'
export { identityProviders, addIdentityProvider, getProviderFor, PublicKeyIdentityProvider }

View File

@ -22,15 +22,14 @@ export { default as KeyStore } from './key-store.js'
export { export {
addAccessController, addAccessController,
removeAccessController, removeAccessController,
getAccessController, getAccessController
accessControllers
} from './access-controllers/index.js' } from './access-controllers/index.js'
export { export {
Identities, Identities,
isIdentity, isIdentity,
identityProviders, addIdentityProvider,
addIdentityProvider getIdentityProvider
} from './identities/index.js' } from './identities/index.js'
export { export {

View File

@ -3,11 +3,11 @@ import rmrf from 'rimraf'
import { copy } from 'fs-extra' import { copy } from 'fs-extra'
import { toString as uint8ArrayToString } from 'uint8arrays/to-string' import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
import KeyStore, { signMessage, verifyMessage } from '../../src/key-store.js' import KeyStore, { signMessage, verifyMessage } from '../../src/key-store.js'
import { Identities, identityProviders, addIdentityProvider, Identity, PublicKeyIdentityProvider } from '../../src/identities/index.js' import { Identities, addIdentityProvider, getIdentityProvider, Identity } from '../../src/identities/index.js'
import testKeysPath from '../fixtures/test-keys-path.js' import testKeysPath from '../fixtures/test-keys-path.js'
import { CustomIdentityProvider, FakeIdentityProvider } from '../fixtures/providers.js' import { CustomIdentityProvider, FakeIdentityProvider } from '../fixtures/providers.js'
const type = PublicKeyIdentityProvider.type const type = 'publickey'
const keysPath = './testkeys' const keysPath = './testkeys'
describe('Identities', function () { describe('Identities', function () {
@ -15,15 +15,6 @@ describe('Identities', function () {
await copy(testKeysPath, keysPath) await copy(testKeysPath, keysPath)
}) })
afterEach(async () => {
// reset the identityProviders.
for (const [key] of Object.entries(identityProviders)) {
if (key !== 'publickey') {
delete identityProviders[key]
}
}
})
after(async () => { after(async () => {
await rmrf(keysPath) await rmrf(keysPath)
}) })
@ -335,14 +326,10 @@ describe('Identities', function () {
}) })
describe('manage identity providers', () => { describe('manage identity providers', () => {
it('has default identity providers', () => {
assert.deepStrictEqual(identityProviders, { publickey: PublicKeyIdentityProvider })
})
it('can add an identity provider', () => { it('can add an identity provider', () => {
addIdentityProvider(CustomIdentityProvider) addIdentityProvider(CustomIdentityProvider)
assert.deepStrictEqual(identityProviders, { publickey: PublicKeyIdentityProvider, custom: CustomIdentityProvider }) assert.deepStrictEqual(getIdentityProvider('custom'), CustomIdentityProvider)
}) })
}) })
}) })

View File

@ -2,7 +2,9 @@ import { strictEqual, deepStrictEqual, notStrictEqual } from 'assert'
import rmrf from 'rimraf' import rmrf from 'rimraf'
import * as IPFS from 'ipfs-core' import * as IPFS from 'ipfs-core'
import OrbitDB from '../src/orbitdb.js' import OrbitDB from '../src/orbitdb.js'
import { accessControllers, addAccessController, removeAccessController } from '../src/access-controllers/index.js' import { getAccessController, addAccessController, removeAccessController } from '../src/access-controllers/index.js'
import IPFSAccessController from '../src/access-controllers/ipfs.js'
import OrbitDBAccessController from '../src/access-controllers/orbitdb.js'
import config from './config.js' import config from './config.js'
import pathJoin from '../src/utils/path-join.js' import pathJoin from '../src/utils/path-join.js'
@ -47,12 +49,8 @@ describe('Add a custom access controller', function () {
describe('Default supported access controllers', function () { describe('Default supported access controllers', function () {
it('returns default supported access controllers', async () => { it('returns default supported access controllers', async () => {
const expected = [ deepStrictEqual(getAccessController('ipfs'), IPFSAccessController)
'ipfs', deepStrictEqual(getAccessController('orbitdb'), OrbitDBAccessController)
'orbitdb'
]
deepStrictEqual(Object.keys(accessControllers), expected)
}) })
it('throws and error if custom access controller hasn\'t been added', async () => { it('throws and error if custom access controller hasn\'t been added', async () => {
@ -93,24 +91,20 @@ describe('Add a custom access controller', function () {
}) })
it('returns custom access controller after adding it', async () => { it('returns custom access controller after adding it', async () => {
const expected = [ deepStrictEqual(getAccessController(type), CustomAccessController)
'ipfs',
'orbitdb',
type
]
deepStrictEqual(Object.keys(accessControllers), expected)
}) })
it('can be removed from supported access controllers', async () => { it('can be removed from supported access controllers', async () => {
const expected = [ let err
'ipfs',
'orbitdb'
]
removeAccessController(type) removeAccessController(type)
deepStrictEqual(Object.keys(accessControllers), expected) try {
getAccessController(type)
} catch (e) {
err = e.toString()
}
deepStrictEqual(err, 'Error: AccessController type \'custom!\' is not supported')
}) })
}) })
}) })