eslint-plugin-mocha
Version:
Eslint rules for mocha.
42 lines • 3.64 kB
TypeScript
import type { Rule, Scope, SourceCode } from 'eslint';
type MemberExpressionNode = Readonly<Parameters<Exclude<Rule.RuleListener['MemberExpression'], undefined>>[0]>;
type IdentifierNode = Readonly<Parameters<Exclude<Rule.RuleListener['Identifier'], undefined>>[0]>;
type ObjectExpressionNode = Readonly<Parameters<Exclude<Rule.RuleListener['ObjectExpression'], undefined>>[0]>;
type IdentifierLike = Readonly<Pick<IdentifierNode, 'name' | 'type'>>;
type MemberExpressionLike = Readonly<Pick<MemberExpressionNode, 'computed' | 'object' | 'property' | 'type'>>;
export type TrackedBinding = Readonly<Scope.Variable> | string;
export type TrackedReferenceState = {
readonly aliasBindings: ReadonlySet<TrackedBinding>;
readonly containerPropertiesByBinding: ReadonlyMap<TrackedBinding, ReadonlySet<string>>;
};
export type PendingPathState = {
readonly aliasBindings: ReadonlySet<TrackedBinding>;
readonly containerPropertiesByBinding: ReadonlyMap<TrackedBinding, ReadonlySet<string>>;
readonly hasUnhandledPath: boolean;
};
type BindingAndProperty = {
readonly binding: TrackedBinding;
readonly propertyName: string | undefined;
};
type ContainerPropertyAssignment = {
readonly propertyName: string | undefined;
readonly source: Readonly<Rule.Node> | null;
readonly target: TrackedBinding;
};
export declare function getTrackedBinding(sourceCode: Readonly<SourceCode>, node: IdentifierLike): TrackedBinding;
export declare function getMemberExpressionBindingAndProperty(sourceCode: Readonly<SourceCode>, node: MemberExpressionLike): Readonly<BindingAndProperty> | undefined;
export declare function createHandledPendingPathState(): PendingPathState;
export declare function createInitialPendingPathState(callbackBinding: TrackedBinding): PendingPathState;
export declare function cloneTrackedContainerProperties(containerPropertiesByBinding: ReadonlyMap<TrackedBinding, ReadonlySet<string>>): Map<TrackedBinding, Set<string>>;
export declare function clonePendingPathState(state: Readonly<PendingPathState>): PendingPathState;
export declare function haveSameTrackedBindings(left: ReadonlySet<TrackedBinding>, right: ReadonlySet<TrackedBinding>): boolean;
export declare function haveSameTrackedContainerProperties(left: ReadonlyMap<TrackedBinding, ReadonlySet<string>>, right: ReadonlyMap<TrackedBinding, ReadonlySet<string>>): boolean;
export declare function haveSamePendingPathStates(left: Readonly<PendingPathState>, right: Readonly<PendingPathState>): boolean;
export declare function mergeIncomingPendingPathStates(previousStates: readonly Readonly<PendingPathState>[]): PendingPathState;
export declare function isTrackedCallbackExpression(sourceCode: Readonly<SourceCode>, node: Readonly<Rule.Node>, state: Readonly<TrackedReferenceState>): boolean;
export declare function collectTrackedCallbackObjectProperties(sourceCode: Readonly<SourceCode>, node: Readonly<ObjectExpressionNode>, state: Readonly<TrackedReferenceState>): Set<string>;
export declare function getTrackedContainerPropertiesFromExpression(sourceCode: Readonly<SourceCode>, node: Readonly<Rule.Node>, state: Readonly<PendingPathState>): Set<string> | undefined;
export declare function applyBindingSourceValue(sourceCode: Readonly<SourceCode>, state: Readonly<PendingPathState>, source: Readonly<Rule.Node> | null, target: TrackedBinding): PendingPathState;
export declare function applyContainerPropertyAssignment(sourceCode: Readonly<SourceCode>, state: Readonly<PendingPathState>, assignment: Readonly<ContainerPropertyAssignment>): PendingPathState;
export {};
//# sourceMappingURL=tracked-callback-reference-state.d.ts.map