/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { ServiceIdentifier } from '../../../../vs/platform/instantiation/common/instantiation'; import { SyncDescriptor } from './descriptors'; export class ServiceCollection { private _entries = new Map, any>(); constructor(...entries: [ServiceIdentifier, any][]) { for (let [id, service] of entries) { this.set(id, service); } } set( id: ServiceIdentifier, instanceOrDescriptor: T | SyncDescriptor ): T | SyncDescriptor { const result = this._entries.get(id); this._entries.set(id, instanceOrDescriptor); return result; } has(id: ServiceIdentifier): boolean { return this._entries.has(id); } get(id: ServiceIdentifier): T | SyncDescriptor { return this._entries.get(id); } }