UNPKG

anon-identity

Version:

Decentralized identity framework with DIDs, Verifiable Credentials, and privacy-preserving selective disclosure

57 lines 2.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.StorageFactory = void 0; const memory_storage_provider_1 = require("./providers/memory-storage-provider"); const file_storage_provider_1 = require("./providers/file-storage-provider"); const blockchain_storage_provider_1 = require("./providers/blockchain-storage-provider"); const ipfs_storage_provider_1 = require("./providers/ipfs-storage-provider"); const hybrid_storage_provider_1 = require("./providers/hybrid-storage-provider"); class StorageFactory { static createProvider(config) { const key = JSON.stringify(config); // Return existing instance if available if (this.instances.has(key)) { return this.instances.get(key); } let provider; switch (config.provider) { case 'memory': provider = new memory_storage_provider_1.MemoryStorageProvider(); break; case 'file': if (!config.file) { throw new Error('File storage configuration required'); } provider = new file_storage_provider_1.FileStorageProvider(config.file.path, config.file.encryption); break; case 'ipfs': if (!config.ipfs) { throw new Error('IPFS storage configuration required'); } provider = new ipfs_storage_provider_1.IPFSStorageProvider(config); break; case 'blockchain': if (!config.blockchain) { throw new Error('Blockchain storage configuration required'); } provider = new blockchain_storage_provider_1.BlockchainStorageProvider(config); break; case 'hybrid': provider = new hybrid_storage_provider_1.HybridStorageProvider(config); break; default: throw new Error(`Unknown storage provider: ${config.provider}`); } this.instances.set(key, provider); return provider; } static getDefaultProvider() { return this.createProvider({ provider: 'memory' }); } static clearInstances() { this.instances.clear(); } } exports.StorageFactory = StorageFactory; StorageFactory.instances = new Map(); //# sourceMappingURL=storage-factory.js.map