@sussudio/platform
Version:
Internal APIs for VS Code's service injection the base services.
421 lines (419 loc) • 16.2 kB
text/typescript
/*---------------------------------------------------------------------------------------------
* 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 {};