// // Copyright 2022 DXOS.org // import { type ServiceBundle } from '@dxos/rpc'; /** * Registry of operational services. */ export class ServiceRegistry { // prettier-ignore constructor ( private readonly _serviceBundle: ServiceBundle, private _handlers: Partial = {} ) {} get descriptors() { return this._serviceBundle; } get services() { return this._handlers; } setServices(services: Partial): void { this._handlers = services; } addService(name: keyof Services, service: Services[keyof Services]): void { this._handlers[name] = service; } removeService(name: keyof Services): void { delete this._handlers[name]; } }