@locker/eslint-rule-maker
Version:
Lightning Web Security ESLint rule maker utilities
65 lines • 3.15 kB
TypeScript
/// <reference types="eslint" />
/// <reference types="estree" />
import { AST, Lib } from '@locker/ast-lib-maker';
import * as ESLint from 'eslint';
import * as ESTree from 'estree';
type RuleCreate = (context: ESLint.Rule.RuleContext) => ESLint.Rule.NodeListener | ESLint.Rule.RuleListener | (ESLint.Rule.NodeListener & ESLint.Rule.RuleListener);
type RuleFix = ((fixer: ESLint.Rule.RuleFixer, matchData?: Rule.MatchData) => null | ESLint.Rule.Fix | IterableIterator<ESLint.Rule.Fix> | ESLint.Rule.Fix[]) | null | string;
interface RuleMatchData extends Lib.MatchData {
context: ESLint.Rule.RuleContext;
}
type RuleMessage = ((data: Rule.MatchData) => string) | string;
type RuleOnMatch = (data: Rule.MatchData) => Rule.MatchOverride | boolean;
declare namespace CreateRule {
interface Config {
create?: RuleCreate;
meta?: ESLint.Rule.RuleMetaData;
rule?: {
fix?: RuleFix;
// If 'message' is not provided ESLint will throw its own error.
message?: RuleMessage;
onMatch?: RuleOnMatch;
search: Lib.SearchPattern;
};
}
interface ConfigStrict {
create?: RuleCreate;
meta: ESLint.Rule.RuleMetaData;
rule: {
fix?: RuleFix;
message?: RuleMessage;
onMatch?: RuleOnMatch;
search: Lib.SearchPattern;
};
}
}
declare namespace Rule {
type MatchData = RuleMatchData & Lib.MatchData;
interface MatchOverride {
fix?: RuleFix;
message?: RuleMessage;
}
type SearchPattern = Lib.SearchPattern;
}
declare const astLib: {
expandPatterns(dehydratedPatterns: import("@locker/ast-lib-maker").Lib.SearchPattern): import("@locker/ast-lib-maker").Lib.SearchPattern[];
getIdentifierName(node: ESTree.Identifier): string;
getParent(node: AST.Node): AST.MaybeNode;
getType(node: AST.Node): string;
isMatchableNode(node: AST.MaybeNode): boolean;
isNodeByAsteriskOrName(node: AST.MaybeNode, name: string): boolean;
isNonComputedMemberExpressionNode(node: AST.MaybeNode): boolean;
match(identifier: AST.IdentifierOrThisExpression, patterns: import("@locker/ast-lib-maker").Lib.SearchPattern[]): import("@locker/ast-lib-maker").Lib.MatchData | undefined;
matchAll(identifiers: AST.IdentifierOrThisExpression[], patterns: import("@locker/ast-lib-maker").Lib.SearchPattern[]): import("@locker/ast-lib-maker").Lib.MatchData[];
};
declare function matchAsNonReadableNonWritable({ node }: Rule.MatchData): Rule.MatchOverride | boolean;
declare function matchAsNonWritable({ node }: Rule.MatchData): Rule.MatchOverride | boolean;
declare function matchAsNullishAndNonWritable(data: Rule.MatchData): Rule.MatchOverride | boolean;
declare const matchers: {
matchAsNonReadableNonWritable: typeof matchAsNonReadableNonWritable;
matchAsNonWritable: typeof matchAsNonWritable;
matchAsNullishAndNonWritable: typeof matchAsNullishAndNonWritable;
};
declare function createRule(config: CreateRule.Config): ESLint.Rule.RuleModule;
export { astLib, matchers, createRule, CreateRule, Rule };
//# sourceMappingURL=index.mjs.d.ts.map