anon-identity
Version:
Decentralized identity framework with DIDs, Verifiable Credentials, and privacy-preserving selective disclosure
57 lines • 2.42 kB
JavaScript
;
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