@exromany/lido-csm-sdk
Version:
[](https://github.com/lidofinance/lido-csm-sdk/blob/main/LICENSE.txt) [](h
41 lines • 1.46 kB
JavaScript
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