@locker/ast-lib-maker
Version:
Lightning Web Security AST library maker utilities
64 lines • 2.56 kB
TypeScript
/// <reference types="estree" />
import * as ESTree from 'estree';
interface MaybeParentExtension {
parent?: Node;
}
declare namespace AST {
type IdentifierOrThisExpression = ESTree.Identifier | ESTree.ThisExpression;
type MaybeNode = Node | undefined;
type Node = ESTree.Node & MaybeParentExtension;
}
declare namespace CreateLib {
interface Overrides {
expandPatterns?: (patterns: Lib.SearchPattern) => 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: Lib.SearchPattern[] | Lib.SearchPattern) => Lib.MatchData | undefined;
}
}
declare namespace Lib {
interface MatchData {
// With a pattern of 'window.top' the matched `identifer` represents
// 'window' with the matched `node` representing 'window.top'.
identifier: AST.IdentifierOrThisExpression;
node: AST.Node;
pattern: string;
}
type SearchPattern = string[];
}
declare const baseLib: {
/**
* String patterns are converted to arrays and expanded for document and
* window aliases. For example:
* ```js
* ['window.top']
* ```
* expands to:
* ```js
* [
* ['window', 'top'],
* ['top'],
* ['document', 'defaultView', 'top'],
* ['frames', 'top'],
* ['globalThis', 'top'],
* ['self', 'top']
* ]
* ```
*/
expandPatterns(dehydratedPatterns: Lib.SearchPattern): 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: Lib.SearchPattern[]): Lib.MatchData | undefined;
matchAll(identifiers: AST.IdentifierOrThisExpression[], patterns: Lib.SearchPattern[]): Lib.MatchData[];
};
declare function createLib(overrides?: CreateLib.Overrides): typeof baseLib;
export { createLib, AST, CreateLib, Lib };
//# sourceMappingURL=index.mjs.d.ts.map