2
>
* Copyright (c) Microsoft Corporation. All rights reserved.
3
>
* Licensed under the MIT License. See License.txt in the project root for license information.
4
>
*--------------------------------------------------------------------------------------------*/
5
>
6
>
import { Emitter } from '../../../../base/common/event.js';
7
>
import { TernarySearchTree } from '../../../../base/common/ternarySearchTree.js';
8
>
import { URI } from '../../../../base/common/uri.js';
9
>
import { getConfigurationValue, IConfigurationChangeEvent, IConfigurationOverrides, IConfigurationService, IConfigurationValue, isConfigurationOverrides } from '../../common/configuration.js';
10
>
import { Extensions, IConfigurationRegistry } from '../../common/configurationRegistry.js';
11
>
import { Registry } from '../../../registry/common/platform.js';
12
>
13
>
export class TestConfigurationService implements IConfigurationService {
14
>
public _serviceBrand: undefined;
15
>
16
>
private configuration: Record<string, unknown>;
17
>
readonly onDidChangeConfigurationEmitter = new Emitter<IConfigurationChangeEvent>();
18
>
readonly onDidChangeConfiguration = this.onDidChangeConfigurationEmitter.event;
19
>
20
>
constructor(configuration?: Record<string, unknown>) {
21
this.configuration = configuration || Object.create(null);
22
}
24
>
private configurationByRoot: TernarySearchTree<string, Record<string, unknown>> = TernarySearchTree.forPaths<Record<string, unknown>>();
25
>
26
>
public reloadConfiguration<T>(): Promise<T> {
27
return Promise.resolve(this.getValue() as T);
28
}
30
>
public getValue<T>(arg1?: string | IConfigurationOverrides, arg2?: IConfigurationOverrides): T | undefined {
31
let configuration;
32
const overrides = isConfigurationOverrides(arg1) ? arg1 : isConfigurationOverrides(arg2) ? arg2 : undefined;