UNPKG

@locker/ast-lib-maker

Version:

Lightning Web Security AST library maker utilities

64 lines 2.56 kB
/// <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