UNPKG

5.42 kBTypeScriptView Raw
1import { interfaces } from 'inversify';
2import { ContributionProvider, Emitter, Event, Disposable } from '../../common';
3import { PreferenceScope } from './preference-scope';
4import { PreferenceProvider, PreferenceProviderDataChange } from './preference-provider';
5import { PreferenceSchema, PreferenceSchemaProperties, PreferenceDataSchema, PreferenceItem, PreferenceSchemaProperty, PreferenceDataProperty } from '../../common/preferences/preference-schema';
6import { FrontendApplicationConfig } from '@theia/application-package/lib/application-props';
7import { PreferenceConfigurations } from './preference-configurations';
8export { PreferenceSchema, PreferenceSchemaProperties, PreferenceDataSchema, PreferenceItem, PreferenceSchemaProperty, PreferenceDataProperty };
9import { JSONValue } from '@phosphor/coreutils';
10export declare const PreferenceContribution: unique symbol;
11/**
12 * A {@link PreferenceContribution} allows adding additional custom preferences.
13 * For this, the {@link PreferenceContribution} has to provide a valid JSON Schema specifying which preferences
14 * are available including their types and description.
15 *
16 * ### Example usage
17 * ```typescript
18 * const MyPreferencesSchema: PreferenceSchema = {
19 * 'type': 'object',
20 * 'properties': {
21 * 'myext.decorations.enabled': {
22 * 'type': 'boolean',
23 * 'description': 'Show file status',
24 * 'default': true
25 * },
26 * // [...]
27 * }
28 * }
29 * @injectable()
30 * export class MyPreferenceContribution implements PreferenceContribution{
31 * schema= MyPreferencesSchema;
32 * }
33 * ```
34 */
35export interface PreferenceContribution {
36 readonly schema: PreferenceSchema;
37}
38export declare function bindPreferenceSchemaProvider(bind: interfaces.Bind): void;
39/**
40 * Specialized {@link FrontendApplicationConfig} to configure default
41 * preference values for the {@link PreferenceSchemaProvider}.
42 */
43export interface FrontendApplicationPreferenceConfig extends FrontendApplicationConfig {
44 preferences: {
45 [preferenceName: string]: any;
46 };
47}
48export declare namespace FrontendApplicationPreferenceConfig {
49 function is(config: FrontendApplicationConfig): config is FrontendApplicationPreferenceConfig;
50}
51/**
52 * The {@link PreferenceSchemaProvider} collects all {@link PreferenceContribution}s and combines
53 * the preference schema provided by these contributions into one collective schema. The preferences which
54 * are provided by this {@link PreferenceProvider} are derived from this combined schema.
55 */
56export declare class PreferenceSchemaProvider extends PreferenceProvider {
57 protected readonly preferences: {
58 [name: string]: any;
59 };
60 protected readonly combinedSchema: PreferenceDataSchema;
61 protected readonly workspaceSchema: PreferenceDataSchema;
62 protected readonly folderSchema: PreferenceDataSchema;
63 protected readonly preferenceContributions: ContributionProvider<PreferenceContribution>;
64 protected readonly configurations: PreferenceConfigurations;
65 protected readonly onDidPreferenceSchemaChangedEmitter: Emitter<void>;
66 readonly onDidPreferenceSchemaChanged: Event<void>;
67 protected fireDidPreferenceSchemaChanged(): void;
68 protected init(): void;
69 /**
70 * Register a new overrideIdentifier. Existing identifiers are not replaced.
71 *
72 * Allows overriding existing values while keeping both values in store.
73 * For example to store different editor settings, e.g. "[markdown].editor.autoIndent",
74 * "[json].editor.autoIndent" and "editor.autoIndent"
75 * @param overrideIdentifier the new overrideIdentifier
76 */
77 registerOverrideIdentifier(overrideIdentifier: string): void;
78 protected readonly overridePatternProperties: Required<Pick<PreferenceDataProperty, 'properties' | 'additionalProperties'>> & PreferenceDataProperty;
79 protected overridePatternPropertiesKey: string | undefined;
80 protected updateOverridePatternPropertiesKey(): void;
81 protected doUnsetSchema(changes: PreferenceProviderDataChange[]): PreferenceProviderDataChange[];
82 protected validateSchema(schema: PreferenceSchema): void;
83 protected doSetSchema(schema: PreferenceSchema): PreferenceProviderDataChange[];
84 protected doSetPreferenceValue(preferenceName: string, newValue: any, { scope, domain }: {
85 scope: PreferenceScope;
86 domain?: string[];
87 }): PreferenceProviderDataChange;
88 getDefaultValue(property: PreferenceItem): JSONValue;
89 protected getConfiguredDefault(preferenceName: string): any;
90 getCombinedSchema(): PreferenceDataSchema;
91 getSchema(scope: PreferenceScope): PreferenceDataSchema;
92 setSchema(schema: PreferenceSchema): Disposable;
93 getPreferences(): {
94 [name: string]: any;
95 };
96 setPreference(): Promise<boolean>;
97 isValidInScope(preferenceName: string, scope: PreferenceScope): boolean;
98 getPreferenceNames(): IterableIterator<string>;
99 getOverridePreferenceNames(preferenceName: string): IterableIterator<string>;
100 getSchemaProperty(key: string): PreferenceDataProperty | undefined;
101 updateSchemaProperty(key: string, property: PreferenceDataProperty): void;
102 protected updateSchemaProps(key: string, property: PreferenceDataProperty): void;
103 protected removePropFromSchemas(key: string): void;
104 protected readConfiguredPreferences(): void;
105}
106//# sourceMappingURL=preference-contribution.d.ts.map
\No newline at end of file