Path: blob/main/src/vs/platform/instantiation/common/serviceCollection.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { ServiceIdentifier } from './instantiation.js';6import { SyncDescriptor } from './descriptors.js';78export class ServiceCollection {910private _entries = new Map<ServiceIdentifier<any>, any>();1112constructor(...entries: [ServiceIdentifier<any>, any][]) {13for (const [id, service] of entries) {14this.set(id, service);15}16}1718set<T>(id: ServiceIdentifier<T>, instanceOrDescriptor: T | SyncDescriptor<T>): T | SyncDescriptor<T> {19const result = this._entries.get(id);20this._entries.set(id, instanceOrDescriptor);21return result;22}2324has(id: ServiceIdentifier<any>): boolean {25return this._entries.has(id);26}2728get<T>(id: ServiceIdentifier<T>): T | SyncDescriptor<T> {29return this._entries.get(id);30}31}323334