UNPKG

@sussudio/platform

Version:

Internal APIs for VS Code's service injection the base services.

421 lines (419 loc) 16.2 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { Event } from '@sussudio/base/common/event.mjs'; export declare const enum ContextKeyExprType { False = 0, True = 1, Defined = 2, Not = 3, Equals = 4, NotEquals = 5, And = 6, Regex = 7, NotRegex = 8, Or = 9, In = 10, NotIn = 11, Greater = 12, GreaterEquals = 13, Smaller = 14, SmallerEquals = 15, } export interface IContextKeyExprMapper { mapDefined(key: string): ContextKeyExpression; mapNot(key: string): ContextKeyExpression; mapEquals(key: string, value: any): ContextKeyExpression; mapNotEquals(key: string, value: any): ContextKeyExpression; mapGreater(key: string, value: any): ContextKeyExpression; mapGreaterEquals(key: string, value: any): ContextKeyExpression; mapSmaller(key: string, value: any): ContextKeyExpression; mapSmallerEquals(key: string, value: any): ContextKeyExpression; mapRegex(key: string, regexp: RegExp | null): ContextKeyRegexExpr; mapIn(key: string, valueKey: string): ContextKeyInExpr; mapNotIn(key: string, valueKey: string): ContextKeyNotInExpr; } export interface IContextKeyExpression { cmp(other: ContextKeyExpression): number; equals(other: ContextKeyExpression): boolean; substituteConstants(): ContextKeyExpression | undefined; evaluate(context: IContext): boolean; serialize(): string; keys(): string[]; map(mapFnc: IContextKeyExprMapper): ContextKeyExpression; negate(): ContextKeyExpression; } export type ContextKeyExpression = | ContextKeyFalseExpr | ContextKeyTrueExpr | ContextKeyDefinedExpr | ContextKeyNotExpr | ContextKeyEqualsExpr | ContextKeyNotEqualsExpr | ContextKeyRegexExpr | ContextKeyNotRegexExpr | ContextKeyAndExpr | ContextKeyOrExpr | ContextKeyInExpr | ContextKeyNotInExpr | ContextKeyGreaterExpr | ContextKeyGreaterEqualsExpr | ContextKeySmallerExpr | ContextKeySmallerEqualsExpr; export declare abstract class ContextKeyExpr { static false(): ContextKeyExpression; static true(): ContextKeyExpression; static has(key: string): ContextKeyExpression; static equals(key: string, value: any): ContextKeyExpression; static notEquals(key: string, value: any): ContextKeyExpression; static regex(key: string, value: RegExp): ContextKeyExpression; static in(key: string, value: string): ContextKeyExpression; static notIn(key: string, value: string): ContextKeyExpression; static not(key: string): ContextKeyExpression; static and(...expr: Array<ContextKeyExpression | undefined | null>): ContextKeyExpression | undefined; static or(...expr: Array<ContextKeyExpression | undefined | null>): ContextKeyExpression | undefined; static greater(key: string, value: number): ContextKeyExpression; static greaterEquals(key: string, value: number): ContextKeyExpression; static smaller(key: string, value: number): ContextKeyExpression; static smallerEquals(key: string, value: number): ContextKeyExpression; static deserialize(serialized: string | null | undefined, strict?: boolean): ContextKeyExpression | undefined; private static _deserializeOrExpression; private static _deserializeAndExpression; private static _deserializeOne; private static _deserializeValue; private static _deserializeRegexValue; } export declare function expressionsAreEqualWithConstantSubstitution( a: ContextKeyExpression | null | undefined, b: ContextKeyExpression | null | undefined, ): boolean; export declare class ContextKeyFalseExpr implements IContextKeyExpression { static INSTANCE: ContextKeyFalseExpr; readonly type = ContextKeyExprType.False; protected constructor(); cmp(other: ContextKeyExpression): number; equals(other: ContextKeyExpression): boolean; substituteConstants(): ContextKeyExpression | undefined; evaluate(context: IContext): boolean; serialize(): string; keys(): string[]; map(mapFnc: IContextKeyExprMapper): ContextKeyExpression; negate(): ContextKeyExpression; } export declare class ContextKeyTrueExpr implements IContextKeyExpression { static INSTANCE: ContextKeyTrueExpr; readonly type = ContextKeyExprType.True; protected constructor(); cmp(other: ContextKeyExpression): number; equals(other: ContextKeyExpression): boolean; substituteConstants(): ContextKeyExpression | undefined; evaluate(context: IContext): boolean; serialize(): string; keys(): string[]; map(mapFnc: IContextKeyExprMapper): ContextKeyExpression; negate(): ContextKeyExpression; } export declare class ContextKeyDefinedExpr implements IContextKeyExpression { readonly key: string; private negated; static create(key: string, negated?: ContextKeyExpression | null): ContextKeyExpression; readonly type = ContextKeyExprType.Defined; protected constructor(key: string, negated: ContextKeyExpression | null); cmp(other: ContextKeyExpression): number; equals(other: ContextKeyExpression): boolean; substituteConstants(): ContextKeyExpression | undefined; evaluate(context: IContext): boolean; serialize(): string; keys(): string[]; map(mapFnc: IContextKeyExprMapper): ContextKeyExpression; negate(): ContextKeyExpression; } export declare class ContextKeyEqualsExpr implements IContextKeyExpression { private readonly key; private readonly value; private negated; static create(key: string, value: any, negated?: ContextKeyExpression | null): ContextKeyExpression; readonly type = ContextKeyExprType.Equals; private constructor(); cmp(other: ContextKeyExpression): number; equals(other: ContextKeyExpression): boolean; substituteConstants(): ContextKeyExpression | undefined; evaluate(context: IContext): boolean; serialize(): string; keys(): string[]; map(mapFnc: IContextKeyExprMapper): ContextKeyExpression; negate(): ContextKeyExpression; } export declare class ContextKeyInExpr implements IContextKeyExpression { private readonly key; private readonly valueKey; static create(key: string, valueKey: string): ContextKeyInExpr; readonly type = ContextKeyExprType.In; private negated; private constructor(); cmp(other: ContextKeyExpression): number; equals(other: ContextKeyExpression): boolean; substituteConstants(): ContextKeyExpression | undefined; evaluate(context: IContext): boolean; serialize(): string; keys(): string[]; map(mapFnc: IContextKeyExprMapper): ContextKeyInExpr; negate(): ContextKeyExpression; } export declare class ContextKeyNotInExpr implements IContextKeyExpression { private readonly key; private readonly valueKey; static create(key: string, valueKey: string): ContextKeyNotInExpr; readonly type = ContextKeyExprType.NotIn; private readonly _negated; private constructor(); cmp(other: ContextKeyExpression): number; equals(other: ContextKeyExpression): boolean; substituteConstants(): ContextKeyExpression | undefined; evaluate(context: IContext): boolean; serialize(): string; keys(): string[]; map(mapFnc: IContextKeyExprMapper): ContextKeyExpression; negate(): ContextKeyExpression; } export declare class ContextKeyNotEqualsExpr implements IContextKeyExpression { private readonly key; private readonly value; private negated; static create(key: string, value: any, negated?: ContextKeyExpression | null): ContextKeyExpression; readonly type = ContextKeyExprType.NotEquals; private constructor(); cmp(other: ContextKeyExpression): number; equals(other: ContextKeyExpression): boolean; substituteConstants(): ContextKeyExpression | undefined; evaluate(context: IContext): boolean; serialize(): string; keys(): string[]; map(mapFnc: IContextKeyExprMapper): ContextKeyExpression; negate(): ContextKeyExpression; } export declare class ContextKeyNotExpr implements IContextKeyExpression { private readonly key; private negated; static create(key: string, negated?: ContextKeyExpression | null): ContextKeyExpression; readonly type = ContextKeyExprType.Not; private constructor(); cmp(other: ContextKeyExpression): number; equals(other: ContextKeyExpression): boolean; substituteConstants(): ContextKeyExpression | undefined; evaluate(context: IContext): boolean; serialize(): string; keys(): string[]; map(mapFnc: IContextKeyExprMapper): ContextKeyExpression; negate(): ContextKeyExpression; } export declare class ContextKeyGreaterExpr implements IContextKeyExpression { private readonly key; private readonly value; private negated; static create(key: string, _value: any, negated?: ContextKeyExpression | null): ContextKeyExpression; readonly type = ContextKeyExprType.Greater; private constructor(); cmp(other: ContextKeyExpression): number; equals(other: ContextKeyExpression): boolean; substituteConstants(): ContextKeyExpression | undefined; evaluate(context: IContext): boolean; serialize(): string; keys(): string[]; map(mapFnc: IContextKeyExprMapper): ContextKeyExpression; negate(): ContextKeyExpression; } export declare class ContextKeyGreaterEqualsExpr implements IContextKeyExpression { private readonly key; private readonly value; private negated; static create(key: string, _value: any, negated?: ContextKeyExpression | null): ContextKeyExpression; readonly type = ContextKeyExprType.GreaterEquals; private constructor(); cmp(other: ContextKeyExpression): number; equals(other: ContextKeyExpression): boolean; substituteConstants(): ContextKeyExpression | undefined; evaluate(context: IContext): boolean; serialize(): string; keys(): string[]; map(mapFnc: IContextKeyExprMapper): ContextKeyExpression; negate(): ContextKeyExpression; } export declare class ContextKeySmallerExpr implements IContextKeyExpression { private readonly key; private readonly value; private negated; static create(key: string, _value: any, negated?: ContextKeyExpression | null): ContextKeyExpression; readonly type = ContextKeyExprType.Smaller; private constructor(); cmp(other: ContextKeyExpression): number; equals(other: ContextKeyExpression): boolean; substituteConstants(): ContextKeyExpression | undefined; evaluate(context: IContext): boolean; serialize(): string; keys(): string[]; map(mapFnc: IContextKeyExprMapper): ContextKeyExpression; negate(): ContextKeyExpression; } export declare class ContextKeySmallerEqualsExpr implements IContextKeyExpression { private readonly key; private readonly value; private negated; static create(key: string, _value: any, negated?: ContextKeyExpression | null): ContextKeyExpression; readonly type = ContextKeyExprType.SmallerEquals; private constructor(); cmp(other: ContextKeyExpression): number; equals(other: ContextKeyExpression): boolean; substituteConstants(): ContextKeyExpression | undefined; evaluate(context: IContext): boolean; serialize(): string; keys(): string[]; map(mapFnc: IContextKeyExprMapper): ContextKeyExpression; negate(): ContextKeyExpression; } export declare class ContextKeyRegexExpr implements IContextKeyExpression { private readonly key; private readonly regexp; static create(key: string, regexp: RegExp | null): ContextKeyRegexExpr; readonly type = ContextKeyExprType.Regex; private negated; private constructor(); cmp(other: ContextKeyExpression): number; equals(other: ContextKeyExpression): boolean; substituteConstants(): ContextKeyExpression | undefined; evaluate(context: IContext): boolean; serialize(): string; keys(): string[]; map(mapFnc: IContextKeyExprMapper): ContextKeyRegexExpr; negate(): ContextKeyExpression; } export declare class ContextKeyNotRegexExpr implements IContextKeyExpression { private readonly _actual; static create(actual: ContextKeyRegexExpr): ContextKeyExpression; readonly type = ContextKeyExprType.NotRegex; private constructor(); cmp(other: ContextKeyExpression): number; equals(other: ContextKeyExpression): boolean; substituteConstants(): ContextKeyExpression | undefined; evaluate(context: IContext): boolean; serialize(): string; keys(): string[]; map(mapFnc: IContextKeyExprMapper): ContextKeyExpression; negate(): ContextKeyExpression; } declare class ContextKeyAndExpr implements IContextKeyExpression { readonly expr: ContextKeyExpression[]; private negated; static create( _expr: ReadonlyArray<ContextKeyExpression | null | undefined>, negated: ContextKeyExpression | null, extraRedundantCheck: boolean, ): ContextKeyExpression | undefined; readonly type = ContextKeyExprType.And; private constructor(); cmp(other: ContextKeyExpression): number; equals(other: ContextKeyExpression): boolean; substituteConstants(): ContextKeyExpression | undefined; evaluate(context: IContext): boolean; private static _normalizeArr; serialize(): string; keys(): string[]; map(mapFnc: IContextKeyExprMapper): ContextKeyExpression; negate(): ContextKeyExpression; } declare class ContextKeyOrExpr implements IContextKeyExpression { readonly expr: ContextKeyExpression[]; private negated; static create( _expr: ReadonlyArray<ContextKeyExpression | null | undefined>, negated: ContextKeyExpression | null, extraRedundantCheck: boolean, ): ContextKeyExpression | undefined; readonly type = ContextKeyExprType.Or; private constructor(); cmp(other: ContextKeyExpression): number; equals(other: ContextKeyExpression): boolean; substituteConstants(): ContextKeyExpression | undefined; evaluate(context: IContext): boolean; private static _normalizeArr; serialize(): string; keys(): string[]; map(mapFnc: IContextKeyExprMapper): ContextKeyExpression; negate(): ContextKeyExpression; } export interface ContextKeyInfo { readonly key: string; readonly type?: string; readonly description?: string; } export declare class RawContextKey<T extends ContextKeyValue> extends ContextKeyDefinedExpr { private static _info; static all(): IterableIterator<ContextKeyInfo>; private readonly _defaultValue; constructor( key: string, defaultValue: T | undefined, metaOrHide?: | string | true | { type: string; description: string; }, ); bindTo(target: IContextKeyService): IContextKey<T>; getValue(target: IContextKeyService): T | undefined; toNegated(): ContextKeyExpression; isEqualTo(value: any): ContextKeyExpression; notEqualsTo(value: any): ContextKeyExpression; } export type ContextKeyValue = | null | undefined | boolean | number | string | Array<null | undefined | boolean | number | string> | Record<string, null | undefined | boolean | number | string>; export interface IContext { getValue<T extends ContextKeyValue = ContextKeyValue>(key: string): T | undefined; } export interface IContextKey<T extends ContextKeyValue = ContextKeyValue> { set(value: T): void; reset(): void; get(): T | undefined; } export interface IContextKeyServiceTarget { parentElement: IContextKeyServiceTarget | null; setAttribute(attr: string, value: string): void; removeAttribute(attr: string): void; hasAttribute(attr: string): boolean; getAttribute(attr: string): string | null; } export declare const IContextKeyService: import('../../instantiation/common/instantiation.mjs').ServiceIdentifier<IContextKeyService>; export interface IReadableSet<T> { has(value: T): boolean; } export interface IContextKeyChangeEvent { affectsSome(keys: IReadableSet<string>): boolean; allKeysContainedIn(keys: IReadableSet<string>): boolean; } export interface IContextKeyService { readonly _serviceBrand: undefined; dispose(): void; onDidChangeContext: Event<IContextKeyChangeEvent>; bufferChangeEvents(callback: Function): void; createKey<T extends ContextKeyValue>(key: string, defaultValue: T | undefined): IContextKey<T>; contextMatchesRules(rules: ContextKeyExpression | undefined): boolean; getContextKeyValue<T>(key: string): T | undefined; createScoped(target: IContextKeyServiceTarget): IContextKeyService; createOverlay(overlay: Iterable<[string, any]>): IContextKeyService; getContext(target: IContextKeyServiceTarget | null): IContext; updateParent(parentContextKeyService: IContextKeyService): void; } /** * Returns true if it is provable `p` implies `q`. */ export declare function implies(p: ContextKeyExpression, q: ContextKeyExpression): boolean; export {};