@practicaloptimism/uniplexer
Version:
A multiplexer for 3rd party service providers and application protocols
55 lines (43 loc) • 2.02 kB
text/typescript
import { Provider, ProviderCredential } from '../data-structures/provider'
import {
PROVIDER_TYPE_DATABASE,
PROVIDER_TYPE_ASYMMETRIC_CRYPTOGRAPHY,
PROVIDER_TYPE_HASH_FUNCTION
// PROVIDER_TYPE_DISTRIBUTED_LEDGER_TECHNOLOGY,
// PROVIDER_TYPE_PROCESS_RUNNER,
// PROVIDER_TYPE_FILE_SYSTEM
// PROVIDER_TYPE_TEXT_SEARCH
} from '../constants/provider'
import { AsymmetricCryptographyMultiplexer } from '../data-structures/asymmetric-cryptography'
import { DatabaseMultiplexer } from '../data-structures/database'
import { HashFunctionMultiplexer } from '../data-structures/hash-function'
import { getMultiplexer as getAsymmetricCryptographyMultiplexer } from '../algorithms/asymmetric-cryptography/get-multiplexer'
import { getMultiplexer as getDatabaseMultiplexer } from '../algorithms/database/get-multiplexer'
import { getMultiplexer as getHashFunctionMultiplexer } from '../algorithms/hash-function/get-multiplexer'
const providerTable: { [providerNameVersionId: string]: Provider } = {}
const providerTypeTable: {
[providerType: string]: {
table: { [providerNameVersionId: string]: boolean }
list: string[]
}
} = {}
const providerCredentialTable: { [credentialHashId: string]: ProviderCredential } = {}
const multiplexerTable: {
[PROVIDER_TYPE_ASYMMETRIC_CRYPTOGRAPHY]: AsymmetricCryptographyMultiplexer,
[PROVIDER_TYPE_DATABASE]: DatabaseMultiplexer,
// [PROVIDER_TYPE_COMPUTER_SERVICE]: ComputerServiceMultiplexer,
// [PROVIDER_TYPE_DISTRIBUTED_LEDGER_TECHNOLOGY]: DistributedLedgerTechnologyMultiplexer,
[PROVIDER_TYPE_HASH_FUNCTION]: HashFunctionMultiplexer
// [PROVIDER_TYPE_FILE_SYSTEM]: FileSystemMultiplexer,
// [PROVIDER_TYPE_TEXT_SEARCH]: TextSearchMultiplexer
} = {
[PROVIDER_TYPE_ASYMMETRIC_CRYPTOGRAPHY]: getAsymmetricCryptographyMultiplexer(),
[PROVIDER_TYPE_DATABASE]: getDatabaseMultiplexer(),
[PROVIDER_TYPE_HASH_FUNCTION]: getHashFunctionMultiplexer()
}
export {
providerTable,
providerTypeTable,
providerCredentialTable,
multiplexerTable
}