mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-23 01:58:53 +01:00
move extHostCustomers.ts #70319
This commit is contained in:
62
src/vs/workbench/api/common/extHostCustomers.ts
Normal file
62
src/vs/workbench/api/common/extHostCustomers.ts
Normal file
@@ -0,0 +1,62 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { IConstructorSignature1 } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol';
|
||||
import { ProxyIdentifier } from 'vs/workbench/services/extensions/common/proxyIdentifier';
|
||||
|
||||
export type IExtHostNamedCustomer<T extends IDisposable> = [ProxyIdentifier<T>, IExtHostCustomerCtor<T>];
|
||||
|
||||
export type IExtHostCustomerCtor<T extends IDisposable> = IConstructorSignature1<IExtHostContext, T>;
|
||||
|
||||
export function extHostNamedCustomer<T extends IDisposable>(id: ProxyIdentifier<T>) {
|
||||
return function (ctor: IExtHostCustomerCtor<T>): void {
|
||||
ExtHostCustomersRegistryImpl.INSTANCE.registerNamedCustomer(id, ctor);
|
||||
};
|
||||
}
|
||||
|
||||
export function extHostCustomer<T extends IDisposable>(ctor: IExtHostCustomerCtor<T>): void {
|
||||
ExtHostCustomersRegistryImpl.INSTANCE.registerCustomer(ctor);
|
||||
}
|
||||
|
||||
export namespace ExtHostCustomersRegistry {
|
||||
|
||||
export function getNamedCustomers(): IExtHostNamedCustomer<IDisposable>[] {
|
||||
return ExtHostCustomersRegistryImpl.INSTANCE.getNamedCustomers();
|
||||
}
|
||||
|
||||
export function getCustomers(): IExtHostCustomerCtor<IDisposable>[] {
|
||||
return ExtHostCustomersRegistryImpl.INSTANCE.getCustomers();
|
||||
}
|
||||
}
|
||||
|
||||
class ExtHostCustomersRegistryImpl {
|
||||
|
||||
public static readonly INSTANCE = new ExtHostCustomersRegistryImpl();
|
||||
|
||||
private _namedCustomers: IExtHostNamedCustomer<any>[];
|
||||
private _customers: IExtHostCustomerCtor<any>[];
|
||||
|
||||
constructor() {
|
||||
this._namedCustomers = [];
|
||||
this._customers = [];
|
||||
}
|
||||
|
||||
public registerNamedCustomer<T extends IDisposable>(id: ProxyIdentifier<T>, ctor: IExtHostCustomerCtor<T>): void {
|
||||
const entry: IExtHostNamedCustomer<T> = [id, ctor];
|
||||
this._namedCustomers.push(entry);
|
||||
}
|
||||
public getNamedCustomers(): IExtHostNamedCustomer<any>[] {
|
||||
return this._namedCustomers;
|
||||
}
|
||||
|
||||
public registerCustomer<T extends IDisposable>(ctor: IExtHostCustomerCtor<T>): void {
|
||||
this._customers.push(ctor);
|
||||
}
|
||||
public getCustomers(): IExtHostCustomerCtor<any>[] {
|
||||
return this._customers;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user