UNPKG

@theia/core

Version:

Theia is a cloud & desktop IDE framework implemented in TypeScript.

106 lines 5.42 kB
import { interfaces } from 'inversify'; import { ContributionProvider, Emitter, Event, Disposable } from '../../common'; import { PreferenceScope } from './preference-scope'; import { PreferenceProvider, PreferenceProviderDataChange } from './preference-provider'; import { PreferenceSchema, PreferenceSchemaProperties, PreferenceDataSchema, PreferenceItem, PreferenceSchemaProperty, PreferenceDataProperty } from '../../common/preferences/preference-schema'; import { FrontendApplicationConfig } from '@theia/application-package/lib/application-props'; import { PreferenceConfigurations } from './preference-configurations'; export { PreferenceSchema, PreferenceSchemaProperties, PreferenceDataSchema, PreferenceItem, PreferenceSchemaProperty, PreferenceDataProperty }; import { JSONValue } from '@phosphor/coreutils'; export declare const PreferenceContribution: unique symbol; /** * A {@link PreferenceContribution} allows adding additional custom preferences. * For this, the {@link PreferenceContribution} has to provide a valid JSON Schema specifying which preferences * are available including their types and description. * * ### Example usage * ```typescript * const MyPreferencesSchema: PreferenceSchema = { * 'type': 'object', * 'properties': { * 'myext.decorations.enabled': { * 'type': 'boolean', * 'description': 'Show file status', * 'default': true * }, * // [...] * } * } * @injectable() * export class MyPreferenceContribution implements PreferenceContribution{ * schema= MyPreferencesSchema; * } * ``` */ export interface PreferenceContribution { readonly schema: PreferenceSchema; } export declare function bindPreferenceSchemaProvider(bind: interfaces.Bind): void; /** * Specialized {@link FrontendApplicationConfig} to configure default * preference values for the {@link PreferenceSchemaProvider}. */ export interface FrontendApplicationPreferenceConfig extends FrontendApplicationConfig { preferences: { [preferenceName: string]: any; }; } export declare namespace FrontendApplicationPreferenceConfig { function is(config: FrontendApplicationConfig): config is FrontendApplicationPreferenceConfig; } /** * The {@link PreferenceSchemaProvider} collects all {@link PreferenceContribution}s and combines * the preference schema provided by these contributions into one collective schema. The preferences which * are provided by this {@link PreferenceProvider} are derived from this combined schema. */ export declare class PreferenceSchemaProvider extends PreferenceProvider { protected readonly preferences: { [name: string]: any; }; protected readonly combinedSchema: PreferenceDataSchema; protected readonly workspaceSchema: PreferenceDataSchema; protected readonly folderSchema: PreferenceDataSchema; protected readonly preferenceContributions: ContributionProvider<PreferenceContribution>; protected readonly configurations: PreferenceConfigurations; protected readonly onDidPreferenceSchemaChangedEmitter: Emitter<void>; readonly onDidPreferenceSchemaChanged: Event<void>; protected fireDidPreferenceSchemaChanged(): void; protected init(): void; /** * Register a new overrideIdentifier. Existing identifiers are not replaced. * * Allows overriding existing values while keeping both values in store. * For example to store different editor settings, e.g. "[markdown].editor.autoIndent", * "[json].editor.autoIndent" and "editor.autoIndent" * @param overrideIdentifier the new overrideIdentifier */ registerOverrideIdentifier(overrideIdentifier: string): void; protected readonly overridePatternProperties: Required<Pick<PreferenceDataProperty, 'properties' | 'additionalProperties'>> & PreferenceDataProperty; protected overridePatternPropertiesKey: string | undefined; protected updateOverridePatternPropertiesKey(): void; protected doUnsetSchema(changes: PreferenceProviderDataChange[]): PreferenceProviderDataChange[]; protected validateSchema(schema: PreferenceSchema): void; protected doSetSchema(schema: PreferenceSchema): PreferenceProviderDataChange[]; protected doSetPreferenceValue(preferenceName: string, newValue: any, { scope, domain }: { scope: PreferenceScope; domain?: string[]; }): PreferenceProviderDataChange; getDefaultValue(property: PreferenceItem): JSONValue; protected getConfiguredDefault(preferenceName: string): any; getCombinedSchema(): PreferenceDataSchema; getSchema(scope: PreferenceScope): PreferenceDataSchema; setSchema(schema: PreferenceSchema): Disposable; getPreferences(): { [name: string]: any; }; setPreference(): Promise<boolean>; isValidInScope(preferenceName: string, scope: PreferenceScope): boolean; getPreferenceNames(): IterableIterator<string>; getOverridePreferenceNames(preferenceName: string): IterableIterator<string>; getSchemaProperty(key: string): PreferenceDataProperty | undefined; updateSchemaProperty(key: string, property: PreferenceDataProperty): void; protected updateSchemaProps(key: string, property: PreferenceDataProperty): void; protected removePropFromSchemas(key: string): void; protected readConfiguredPreferences(): void; } //# sourceMappingURL=preference-contribution.d.ts.map