UNPKG

@exromany/lido-csm-sdk

Version:

[![GitHub license](https://img.shields.io/github/license/lidofinance/lido-csm-sdk?color=limegreen)](https://github.com/lidofinance/lido-csm-sdk/blob/main/LICENSE.txt) [![Version npm](https://img.shields.io/npm/v/@lidofinance/lido-csm-sdk?label=version)](h

41 lines 1.46 kB
import { ERROR_CODE, invariant } from '@lidofinance/lido-ethereum-sdk'; export class BusRegistry { constructor() { Object.defineProperty(this, "sdks", { enumerable: true, configurable: true, writable: true, value: {} }); // Return Proxy to enable direct property access to registered modules return new Proxy(this, { get(target, prop, receiver) { // First, check if property exists on BusRegistry instance (methods, etc) if (prop in target) { return Reflect.get(target, prop, receiver); } // Then try to resolve from registered modules const module = target.sdks[prop]; if (module !== undefined) { return module; } // Default behavior for undefined properties return Reflect.get(target, prop, receiver); }, }); } register(sdk, name) { if (this.sdks[name]) { throw new Error(`Module ${name.toString()} already registered`); } this.sdks[name] = sdk; } get(name) { return this.sdks[name]; } getOrThrow(name) { invariant(this.sdks[name], `Module ${name.toString()} not registered`, ERROR_CODE.UNKNOWN_ERROR); return this.sdks[name]; } } //# sourceMappingURL=bus-registry.js.map