diff options
author | Toby Vincent <tobyv13@gmail.com> | 2022-03-23 14:04:55 -0500 |
---|---|---|
committer | Toby Vincent <tobyv13@gmail.com> | 2022-03-23 14:15:18 -0500 |
commit | 8e36499326e969c7c34ecc537e589bd5ef5598a0 (patch) | |
tree | 7943cda837324847875d472d2ad68922c5019a50 /node_modules/xterm/src/common/services/InstantiationService.ts | |
parent | 337fa04fe3686e0f0d236eef5df89179ee68f673 (diff) |
chore: removed node_modules from git
Diffstat (limited to 'node_modules/xterm/src/common/services/InstantiationService.ts')
-rw-r--r-- | node_modules/xterm/src/common/services/InstantiationService.ts | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/node_modules/xterm/src/common/services/InstantiationService.ts b/node_modules/xterm/src/common/services/InstantiationService.ts deleted file mode 100644 index 8280948..0000000 --- a/node_modules/xterm/src/common/services/InstantiationService.ts +++ /dev/null @@ -1,83 +0,0 @@ -/** - * Copyright (c) 2019 The xterm.js authors. All rights reserved. - * @license MIT - * - * This was heavily inspired from microsoft/vscode's dependency injection system (MIT). - */ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { IInstantiationService, IServiceIdentifier } from 'common/services/Services'; -import { getServiceDependencies } from 'common/services/ServiceRegistry'; - -export class ServiceCollection { - - private _entries = new Map<IServiceIdentifier<any>, any>(); - - constructor(...entries: [IServiceIdentifier<any>, any][]) { - for (const [id, service] of entries) { - this.set(id, service); - } - } - - public set<T>(id: IServiceIdentifier<T>, instance: T): T { - const result = this._entries.get(id); - this._entries.set(id, instance); - return result; - } - - public forEach(callback: (id: IServiceIdentifier<any>, instance: any) => any): void { - this._entries.forEach((value, key) => callback(key, value)); - } - - public has(id: IServiceIdentifier<any>): boolean { - return this._entries.has(id); - } - - public get<T>(id: IServiceIdentifier<T>): T | undefined { - return this._entries.get(id); - } -} - -export class InstantiationService implements IInstantiationService { - public serviceBrand: undefined; - - private readonly _services: ServiceCollection = new ServiceCollection(); - - constructor() { - this._services.set(IInstantiationService, this); - } - - public setService<T>(id: IServiceIdentifier<T>, instance: T): void { - this._services.set(id, instance); - } - - public getService<T>(id: IServiceIdentifier<T>): T | undefined { - return this._services.get(id); - } - - public createInstance<T>(ctor: any, ...args: any[]): T { - const serviceDependencies = getServiceDependencies(ctor).sort((a, b) => a.index - b.index); - - const serviceArgs: any[] = []; - for (const dependency of serviceDependencies) { - const service = this._services.get(dependency.id); - if (!service) { - throw new Error(`[createInstance] ${ctor.name} depends on UNKNOWN service ${dependency.id}.`); - } - serviceArgs.push(service); - } - - const firstServiceArgPos = serviceDependencies.length > 0 ? serviceDependencies[0].index : args.length; - - // check for argument mismatches, adjust static args if needed - if (args.length !== firstServiceArgPos) { - throw new Error(`[createInstance] First service dependency of ${ctor.name} at position ${firstServiceArgPos + 1} conflicts with ${args.length} static arguments`); - } - - // now create the instance - return new ctor(...[...args, ...serviceArgs]); - } -} |