@sussudio/platform
Version:
Internal APIs for VS Code's service injection the base services.
52 lines (50 loc) • 2.26 kB
text/typescript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IStringDictionary } from '@sussudio/base/common/collections.mjs';
import { Emitter, Event } from '@sussudio/base/common/event.mjs';
import { Disposable } from '@sussudio/base/common/lifecycle.mjs';
export type PolicyName = string;
export type PolicyValue = string | number;
export type PolicyDefinition = {
type: 'string' | 'number';
};
export declare const IPolicyService: import('../../instantiation/common/instantiation.mjs').ServiceIdentifier<IPolicyService>;
export interface IPolicyService {
readonly _serviceBrand: undefined;
readonly onDidChange: Event<readonly PolicyName[]>;
updatePolicyDefinitions(
policyDefinitions: IStringDictionary<PolicyDefinition>,
): Promise<IStringDictionary<PolicyValue>>;
getPolicyValue(name: PolicyName): PolicyValue | undefined;
serialize():
| IStringDictionary<{
definition: PolicyDefinition;
value: PolicyValue;
}>
| undefined;
}
export declare abstract class AbstractPolicyService extends Disposable implements IPolicyService {
readonly _serviceBrand: undefined;
protected policyDefinitions: IStringDictionary<PolicyDefinition>;
protected policies: Map<string, PolicyValue>;
protected readonly _onDidChange: Emitter<readonly string[]>;
readonly onDidChange: Event<readonly string[]>;
updatePolicyDefinitions(
policyDefinitions: IStringDictionary<PolicyDefinition>,
): Promise<IStringDictionary<PolicyValue>>;
getPolicyValue(name: PolicyName): PolicyValue | undefined;
serialize(): IStringDictionary<{
definition: PolicyDefinition;
value: PolicyValue;
}>;
protected abstract _updatePolicyDefinitions(policyDefinitions: IStringDictionary<PolicyDefinition>): Promise<void>;
}
export declare class NullPolicyService implements IPolicyService {
readonly _serviceBrand: undefined;
readonly onDidChange: Event<any>;
updatePolicyDefinitions(): Promise<{}>;
getPolicyValue(): undefined;
serialize(): undefined;
}