diff --git a/vscode_config_registry.ts b/vscode_config_registry.ts index d2ba316..1834518 100644 --- a/vscode_config_registry.ts +++ b/vscode_config_registry.ts @@ -23,68 +23,68 @@ export const Extensions = { Configuration: 'base.contributions.configuration' }; -export interface IConfigurationDelta { - removedDefaults?: IConfigurationDefaults[]; - removedConfigurations?: IConfigurationNode[]; - addedDefaults?: IConfigurationDefaults[]; - addedConfigurations?: IConfigurationNode[]; +export interface PConfigurationDelta { + removedDefaults?: PConfigurationDefaults[]; + removedConfigurations?: PConfigurationNode[]; + addedDefaults?: PConfigurationDefaults[]; + addedConfigurations?: PConfigurationNode[]; } -export interface IConfigurationRegistry { +export interface PConfigurationRegistry { /** * Register a configuration to the registry. */ - registerConfiguration(configuration: IConfigurationNode): void; + registerConfiguration(configuration: PConfigurationNode): void; /** * Register multiple configurations to the registry. */ - registerConfigurations(configurations: IConfigurationNode[], validate?: boolean): void; + registerConfigurations(configurations: PConfigurationNode[], validate?: boolean): void; /** * Deregister multiple configurations from the registry. */ - deregisterConfigurations(configurations: IConfigurationNode[]): void; + deregisterConfigurations(configurations: PConfigurationNode[]): void; /** * update the configuration registry by * - registering the configurations to add * - dereigstering the configurations to remove */ - updateConfigurations(configurations: { add: IConfigurationNode[]; remove: IConfigurationNode[] }): void; + updateConfigurations(configurations: { add: PConfigurationNode[]; remove: PConfigurationNode[] }): void; /** * Register multiple default configurations to the registry. */ - registerDefaultConfigurations(defaultConfigurations: IConfigurationDefaults[]): void; + registerDefaultConfigurations(defaultConfigurations: PConfigurationDefaults[]): void; /** * Deregister multiple default configurations from the registry. */ - deregisterDefaultConfigurations(defaultConfigurations: IConfigurationDefaults[]): void; + deregisterDefaultConfigurations(defaultConfigurations: PConfigurationDefaults[]): void; /** * Bulk update of the configuration registry (default and configurations, remove and add) * @param delta */ - deltaConfiguration(delta: IConfigurationDelta): void; + deltaConfiguration(delta: PConfigurationDelta): void; /** * Return the registered default configurations */ - getRegisteredDefaultConfigurations(): IConfigurationDefaults[]; + getRegisteredDefaultConfigurations(): PConfigurationDefaults[]; /** * Return the registered configuration defaults overrides */ - getConfigurationDefaultsOverrides(): Map; + getConfigurationDefaultsOverrides(): Map; /** * Signal that the schema of a configuration setting has changes. It is currently only supported to change enumeration values. * Property or default value changes are not allowed. */ - notifyConfigurationSchemaUpdated(...configurations: IConfigurationNode[]): void; + notifyConfigurationSchemaUpdated(...configurations: PConfigurationNode[]): void; /** * Event that fires whenever a configuration has been @@ -101,12 +101,12 @@ export interface IConfigurationRegistry { /** * Returns all configuration nodes contributed to this registry. */ - getConfigurations(): IConfigurationNode[]; + getConfigurations(): PConfigurationNode[]; /** * Returns all configurations settings of all configuration nodes contributed to this registry. */ - getConfigurationProperties(): IStringDictionary; + getConfigurationProperties(): IStringDictionary; /** * Return all configurations by policy name @@ -116,7 +116,7 @@ export interface IConfigurationRegistry { /** * Returns all excluded configurations settings of all configuration nodes contributed to this registry. */ - getExcludedConfigurationProperties(): IStringDictionary; + getExcludedConfigurationProperties(): IStringDictionary; /** * Register the identifiers for editor configurations @@ -168,7 +168,7 @@ export interface IPolicy { readonly minimumVersion: `${number}.${number}`; } -export interface IConfigurationPropertySchema extends IJSONSchema { +export interface PConfigurationPropertySchema extends IJSONSchema { scope?: ConfigurationScope; @@ -235,14 +235,14 @@ export interface IExtensionInfo { displayName?: string; } -export interface IConfigurationNode { +export interface PConfigurationNode { id?: string; order?: number; type?: string | string[]; title?: string; description?: string; - properties?: IStringDictionary; - allOf?: IConfigurationNode[]; + properties?: IStringDictionary; + allOf?: PConfigurationNode[]; scope?: ConfigurationScope; extensionInfo?: IExtensionInfo; restrictedProperties?: string[]; @@ -250,49 +250,49 @@ export interface IConfigurationNode { export type ConfigurationDefaultValueSource = IExtensionInfo | Map; -export interface IConfigurationDefaults { +export interface PConfigurationDefaults { overrides: IStringDictionary; source?: IExtensionInfo; } -export type IRegisteredConfigurationPropertySchema = IConfigurationPropertySchema & { +export type PRegisteredConfigurationPropertySchema = PConfigurationPropertySchema & { defaultDefaultValue?: any; source?: IExtensionInfo; // Source of the Property defaultValueSource?: ConfigurationDefaultValueSource; // Source of the Default Value }; -export interface IConfigurationDefaultOverride { +export interface PConfigurationDefaultOverride { readonly value: any; readonly source?: IExtensionInfo; // Source of the default override } -export interface IConfigurationDefaultOverrideValue { +export interface PConfigurationDefaultOverrideValue { readonly value: any; readonly source?: ConfigurationDefaultValueSource; } -export const allSettings: { properties: IStringDictionary; patternProperties: IStringDictionary } = { properties: {}, patternProperties: {} }; -export const applicationSettings: { properties: IStringDictionary; patternProperties: IStringDictionary } = { properties: {}, patternProperties: {} }; -export const applicationMachineSettings: { properties: IStringDictionary; patternProperties: IStringDictionary } = { properties: {}, patternProperties: {} }; -export const machineSettings: { properties: IStringDictionary; patternProperties: IStringDictionary } = { properties: {}, patternProperties: {} }; -export const machineOverridableSettings: { properties: IStringDictionary; patternProperties: IStringDictionary } = { properties: {}, patternProperties: {} }; -export const windowSettings: { properties: IStringDictionary; patternProperties: IStringDictionary } = { properties: {}, patternProperties: {} }; -export const resourceSettings: { properties: IStringDictionary; patternProperties: IStringDictionary } = { properties: {}, patternProperties: {} }; +export const allSettings: { properties: IStringDictionary; patternProperties: IStringDictionary } = { properties: {}, patternProperties: {} }; +export const applicationSettings: { properties: IStringDictionary; patternProperties: IStringDictionary } = { properties: {}, patternProperties: {} }; +export const applicationMachineSettings: { properties: IStringDictionary; patternProperties: IStringDictionary } = { properties: {}, patternProperties: {} }; +export const machineSettings: { properties: IStringDictionary; patternProperties: IStringDictionary } = { properties: {}, patternProperties: {} }; +export const machineOverridableSettings: { properties: IStringDictionary; patternProperties: IStringDictionary } = { properties: {}, patternProperties: {} }; +export const windowSettings: { properties: IStringDictionary; patternProperties: IStringDictionary } = { properties: {}, patternProperties: {} }; +export const resourceSettings: { properties: IStringDictionary; patternProperties: IStringDictionary } = { properties: {}, patternProperties: {} }; export const resourceLanguageSettingsSchemaId = 'vscode://schemas/settings/resourceLanguage'; export const configurationDefaultsSchemaId = 'vscode://schemas/settings/configurationDefaults'; const contributionRegistry = Registry.as(JSONExtensions.JSONContribution); -class ConfigurationRegistry implements IConfigurationRegistry { +class ConfigurationRegistry implements PConfigurationRegistry { - private readonly registeredConfigurationDefaults: IConfigurationDefaults[] = []; - private readonly configurationDefaultsOverrides: Map; - private readonly defaultLanguageConfigurationOverridesNode: IConfigurationNode; - private readonly configurationContributors: IConfigurationNode[]; - private readonly configurationProperties: IStringDictionary; + private readonly registeredConfigurationDefaults: PConfigurationDefaults[] = []; + private readonly configurationDefaultsOverrides: Map; + private readonly defaultLanguageConfigurationOverridesNode: PConfigurationNode; + private readonly configurationContributors: PConfigurationNode[]; + private readonly configurationProperties: IStringDictionary; private readonly policyConfigurations: Map; - private readonly excludedConfigurationProperties: IStringDictionary; + private readonly excludedConfigurationProperties: IStringDictionary; private readonly resourceLanguageSettingsSchema: IJSONSchema; private readonly overrideIdentifiers = new Set(); @@ -325,11 +325,11 @@ class ConfigurationRegistry implements IConfigurationRegistry { this.registerOverridePropertyPatternKey(); } - public registerConfiguration(configuration: IConfigurationNode, validate: boolean = true): void { + public registerConfiguration(configuration: PConfigurationNode, validate: boolean = true): void { this.registerConfigurations([configuration], validate); } - public registerConfigurations(configurations: IConfigurationNode[], validate: boolean = true): void { + public registerConfigurations(configurations: PConfigurationNode[], validate: boolean = true): void { const properties = new Set(); this.doRegisterConfigurations(configurations, validate, properties); @@ -338,7 +338,7 @@ class ConfigurationRegistry implements IConfigurationRegistry { this._onDidUpdateConfiguration.fire({ properties }); } - public deregisterConfigurations(configurations: IConfigurationNode[]): void { + public deregisterConfigurations(configurations: PConfigurationNode[]): void { const properties = new Set(); this.doDeregisterConfigurations(configurations, properties); @@ -347,7 +347,7 @@ class ConfigurationRegistry implements IConfigurationRegistry { this._onDidUpdateConfiguration.fire({ properties }); } - public updateConfigurations({ add, remove }: { add: IConfigurationNode[]; remove: IConfigurationNode[] }): void { + public updateConfigurations({ add, remove }: { add: PConfigurationNode[]; remove: PConfigurationNode[] }): void { const properties = new Set(); this.doDeregisterConfigurations(remove, properties); this.doRegisterConfigurations(add, false, properties); @@ -357,14 +357,14 @@ class ConfigurationRegistry implements IConfigurationRegistry { this._onDidUpdateConfiguration.fire({ properties }); } - public registerDefaultConfigurations(configurationDefaults: IConfigurationDefaults[]): void { + public registerDefaultConfigurations(configurationDefaults: PConfigurationDefaults[]): void { const properties = new Set(); this.doRegisterDefaultConfigurations(configurationDefaults, properties); this._onDidSchemaChange.fire(); this._onDidUpdateConfiguration.fire({ properties, defaultsOverrides: true }); } - private doRegisterDefaultConfigurations(configurationDefaults: IConfigurationDefaults[], bucket: Set) { + private doRegisterDefaultConfigurations(configurationDefaults: PConfigurationDefaults[], bucket: Set) { this.registeredConfigurationDefaults.push(...configurationDefaults); @@ -413,14 +413,14 @@ class ConfigurationRegistry implements IConfigurationRegistry { this.doRegisterOverrideIdentifiers(overrideIdentifiers); } - public deregisterDefaultConfigurations(defaultConfigurations: IConfigurationDefaults[]): void { + public deregisterDefaultConfigurations(defaultConfigurations: PConfigurationDefaults[]): void { const properties = new Set(); this.doDeregisterDefaultConfigurations(defaultConfigurations, properties); this._onDidSchemaChange.fire(); this._onDidUpdateConfiguration.fire({ properties, defaultsOverrides: true }); } - private doDeregisterDefaultConfigurations(defaultConfigurations: IConfigurationDefaults[], bucket: Set): void { + private doDeregisterDefaultConfigurations(defaultConfigurations: PConfigurationDefaults[], bucket: Set): void { for (const defaultConfiguration of defaultConfigurations) { const index = this.registeredConfigurationDefaults.indexOf(defaultConfiguration); if (index !== -1) { @@ -447,7 +447,7 @@ class ConfigurationRegistry implements IConfigurationRegistry { } if (OVERRIDE_PROPERTY_REGEX.test(key)) { - let configurationDefaultOverrideValue: IConfigurationDefaultOverrideValue | undefined; + let configurationDefaultOverrideValue: PConfigurationDefaultOverrideValue | undefined; for (const configurationDefaultOverride of configurationDefaultOverridesForKey.configurationDefaultOverrides) { configurationDefaultOverrideValue = this.mergeDefaultConfigurationsForOverrideIdentifier(key, configurationDefaultOverride.value, configurationDefaultOverride.source, configurationDefaultOverrideValue); } @@ -460,7 +460,7 @@ class ConfigurationRegistry implements IConfigurationRegistry { delete this.defaultLanguageConfigurationOverridesNode.properties![key]; } } else { - let configurationDefaultOverrideValue: IConfigurationDefaultOverrideValue | undefined; + let configurationDefaultOverrideValue: PConfigurationDefaultOverrideValue | undefined; for (const configurationDefaultOverride of configurationDefaultOverridesForKey.configurationDefaultOverrides) { configurationDefaultOverrideValue = this.mergeDefaultConfigurationsForConfigurationProperty(key, configurationDefaultOverride.value, configurationDefaultOverride.source, configurationDefaultOverrideValue); } @@ -477,8 +477,8 @@ class ConfigurationRegistry implements IConfigurationRegistry { this.updateOverridePropertyPatternKey(); } - private updateDefaultOverrideProperty(key: string, newDefaultOverride: IConfigurationDefaultOverrideValue, source: IExtensionInfo | undefined): void { - const property: IRegisteredConfigurationPropertySchema = { + private updateDefaultOverrideProperty(key: string, newDefaultOverride: PConfigurationDefaultOverrideValue, source: IExtensionInfo | undefined): void { + const property: PRegisteredConfigurationPropertySchema = { type: 'object', default: newDefaultOverride.value, description: nls.localize('defaultLanguageConfiguration.description', "Configure settings to be overridden for the {0} language.", getLanguageTagSettingPlainKey(key)), @@ -491,7 +491,7 @@ class ConfigurationRegistry implements IConfigurationRegistry { this.defaultLanguageConfigurationOverridesNode.properties![key] = property; } - private mergeDefaultConfigurationsForOverrideIdentifier(overrideIdentifier: string, configurationValueObject: IStringDictionary, valueSource: IExtensionInfo | undefined, existingDefaultOverride: IConfigurationDefaultOverrideValue | undefined): IConfigurationDefaultOverrideValue | undefined { + private mergeDefaultConfigurationsForOverrideIdentifier(overrideIdentifier: string, configurationValueObject: IStringDictionary, valueSource: IExtensionInfo | undefined, existingDefaultOverride: PConfigurationDefaultOverrideValue | undefined): PConfigurationDefaultOverrideValue | undefined { const defaultValue = existingDefaultOverride?.value || {}; const source = existingDefaultOverride?.source ?? new Map(); @@ -532,7 +532,7 @@ class ConfigurationRegistry implements IConfigurationRegistry { return { value: defaultValue, source }; } - private mergeDefaultConfigurationsForConfigurationProperty(propertyKey: string, value: any, valuesSource: IExtensionInfo | undefined, existingDefaultOverride: IConfigurationDefaultOverrideValue | undefined): IConfigurationDefaultOverrideValue | undefined { + private mergeDefaultConfigurationsForConfigurationProperty(propertyKey: string, value: any, valuesSource: IExtensionInfo | undefined, existingDefaultOverride: PConfigurationDefaultOverrideValue | undefined): PConfigurationDefaultOverrideValue | undefined { const property = this.configurationProperties[propertyKey]; const existingDefaultValue = existingDefaultOverride?.value ?? property?.defaultDefaultValue; let source: ConfigurationDefaultValueSource | undefined = valuesSource; @@ -564,7 +564,7 @@ class ConfigurationRegistry implements IConfigurationRegistry { return { value, source }; } - public deltaConfiguration(delta: IConfigurationDelta): void { + public deltaConfiguration(delta: PConfigurationDelta): void { // defaults: remove let defaultsOverrides = false; const properties = new Set(); @@ -589,7 +589,7 @@ class ConfigurationRegistry implements IConfigurationRegistry { this._onDidUpdateConfiguration.fire({ properties, defaultsOverrides }); } - public notifyConfigurationSchemaUpdated(...configurations: IConfigurationNode[]) { + public notifyConfigurationSchemaUpdated(...configurations: PConfigurationNode[]) { this._onDidSchemaChange.fire(); } @@ -605,7 +605,7 @@ class ConfigurationRegistry implements IConfigurationRegistry { this.updateOverridePropertyPatternKey(); } - private doRegisterConfigurations(configurations: IConfigurationNode[], validate: boolean, bucket: Set): void { + private doRegisterConfigurations(configurations: PConfigurationNode[], validate: boolean, bucket: Set): void { configurations.forEach(configuration => { @@ -616,9 +616,9 @@ class ConfigurationRegistry implements IConfigurationRegistry { }); } - private doDeregisterConfigurations(configurations: IConfigurationNode[], bucket: Set): void { + private doDeregisterConfigurations(configurations: PConfigurationNode[], bucket: Set): void { - const deregisterConfiguration = (configuration: IConfigurationNode) => { + const deregisterConfiguration = (configuration: PConfigurationNode) => { if (configuration.properties) { for (const key in configuration.properties) { bucket.add(key); @@ -641,12 +641,12 @@ class ConfigurationRegistry implements IConfigurationRegistry { } } - private validateAndRegisterProperties(configuration: IConfigurationNode, validate: boolean = true, extensionInfo: IExtensionInfo | undefined, restrictedProperties: string[] | undefined, scope: ConfigurationScope = ConfigurationScope.WINDOW, bucket: Set): void { + private validateAndRegisterProperties(configuration: PConfigurationNode, validate: boolean = true, extensionInfo: IExtensionInfo | undefined, restrictedProperties: string[] | undefined, scope: ConfigurationScope = ConfigurationScope.WINDOW, bucket: Set): void { scope = types.isUndefinedOrNull(configuration.scope) ? scope : configuration.scope; const properties = configuration.properties; if (properties) { for (const key in properties) { - const property: IRegisteredConfigurationPropertySchema = properties[key]; + const property: PRegisteredConfigurationPropertySchema = properties[key]; if (validate && validateProperty(key, property)) { delete properties[key]; continue; @@ -696,7 +696,7 @@ class ConfigurationRegistry implements IConfigurationRegistry { } // TODO: @sandy081 - Remove this method and include required info in getConfigurationProperties - getConfigurations(): IConfigurationNode[] { + getConfigurations(): PConfigurationNode[] { return this.configurationContributors; } @@ -712,12 +712,12 @@ class ConfigurationRegistry implements IConfigurationRegistry { return this.excludedConfigurationProperties; } - getRegisteredDefaultConfigurations(): IConfigurationDefaults[] { + getRegisteredDefaultConfigurations(): PConfigurationDefaults[] { return [...this.registeredConfigurationDefaults]; } - getConfigurationDefaultsOverrides(): Map { - const configurationDefaultsOverrides = new Map(); + getConfigurationDefaultsOverrides(): Map { + const configurationDefaultsOverrides = new Map(); for (const [key, value] of this.configurationDefaultsOverrides) { if (value.configurationDefaultOverrideValue) { configurationDefaultsOverrides.set(key, value.configurationDefaultOverrideValue); @@ -726,8 +726,8 @@ class ConfigurationRegistry implements IConfigurationRegistry { return configurationDefaultsOverrides; } - private registerJSONConfiguration(configuration: IConfigurationNode) { - const register = (configuration: IConfigurationNode) => { + private registerJSONConfiguration(configuration: PConfigurationNode) { + const register = (configuration: PConfigurationNode) => { const properties = configuration.properties; if (properties) { for (const key in properties) { @@ -740,7 +740,7 @@ class ConfigurationRegistry implements IConfigurationRegistry { register(configuration); } - private updateSchema(key: string, property: IConfigurationPropertySchema): void { + private updateSchema(key: string, property: PConfigurationPropertySchema): void { allSettings.properties[key] = property; switch (property.scope) { case ConfigurationScope.APPLICATION: @@ -768,7 +768,7 @@ class ConfigurationRegistry implements IConfigurationRegistry { } } - private removeFromSchema(key: string, property: IConfigurationPropertySchema): void { + private removeFromSchema(key: string, property: PConfigurationPropertySchema): void { delete allSettings.properties[key]; switch (property.scope) { case ConfigurationScope.APPLICATION: @@ -831,7 +831,7 @@ class ConfigurationRegistry implements IConfigurationRegistry { this._onDidSchemaChange.fire(); } - private updatePropertyDefaultValue(key: string, property: IRegisteredConfigurationPropertySchema): void { + private updatePropertyDefaultValue(key: string, property: PRegisteredConfigurationPropertySchema): void { const configurationdefaultOverride = this.configurationDefaultsOverrides.get(key)?.configurationDefaultOverrideValue; let defaultValue = undefined; let defaultSource = undefined; @@ -899,7 +899,7 @@ export function getDefaultValue(type: string | string[] | undefined) { const configurationRegistry = new ConfigurationRegistry(); Registry.add(Extensions.Configuration, configurationRegistry); -export function validateProperty(property: string, schema: IRegisteredConfigurationPropertySchema): string | null { +export function validateProperty(property: string, schema: PRegisteredConfigurationPropertySchema): string | null { if (!property.trim()) { return nls.localize('config.property.empty', "Cannot register an empty property"); } @@ -926,8 +926,8 @@ export function getScopes(): [string, ConfigurationScope | undefined][] { return scopes; } -export function getAllConfigurationProperties(configurationNode: IConfigurationNode[]): IStringDictionary { - const result: IStringDictionary = {}; +export function getAllConfigurationProperties(configurationNode: PConfigurationNode[]): IStringDictionary { + const result: IStringDictionary = {}; for (const configuration of configurationNode) { const properties = configuration.properties; if (types.isObject(properties)) {