import doctrine from "@teppeis/doctrine"; import type { Comment, Program } from "estree-jsx"; export interface ParserOptions { provideRoots?: string[]; replaceMap?: Map; providedNamespace?: string[]; parserOptions?: any; ignoreProvides?: boolean; } export interface FixclosureInfo { provided: string[]; required: string[]; requireTyped: string[]; forwardDeclared: string[]; toProvide: string[]; toRequire: string[]; toRequireType: string[]; toForwardDeclare: string[]; ignoredProvide: string[]; ignoredRequire: string[]; ignoredRequireType: string[]; ignoredForwardDeclare: string[]; provideStart: number; provideEnd: number; } export declare class Parser { options: ParserOptions; private provideRoots_; private ignoreProvides_; private replaceMap_; private providedNamespaces_; private ignorePackages_; private minLine_; private maxLine_; constructor(opt_options?: ParserOptions); parse(src: string): FixclosureInfo; parseAst(program: Program, comments: Comment[]): FixclosureInfo; private extractToProvide_; /** * @return true if the node has JSDoc that includes @typedef and not @private * This method assume the JSDoc is at a line just before the node. * Use ESLint context like `context.getJSDocComment(node)` if possible. */ private hasTypedefAnnotation_; private getSuppressProvideComments_; private getSuppressRequireComments_; private extractToRequire_; private extractToRequireTypeFromJsDoc_; extractType(type: doctrine.Type | null): string[]; /** * Extract `goog.require('goog.foo') // fixclosure: ignore`. */ private extractIgnored_; private extractProvided_; private extractRequired_; private extractRequireTyped_; private extractForwardDeclared_; /** * @param parsed * @param method like 'goog.provide' or 'goog.require' */ private extractGoogDeclaration_; private traverseProgram_; /** * @return True if the item has a root namespace to extract. */ private provideRootFilter_; /** * @return Provided namespace */ private toProvideMapper_; /** * @return Required namespace */ private toRequireMapper_; private toRequireFilter_; /** * Filter toProvide and toRequire if it is suppressed. */ private suppressFilter_; private getRequiredPackageName_; private getProvidedPackageName_; private isIgnorePackage_; private isPrivateProp_; private replaceMethod_; private isProvidedNamespace_; private updateMinMaxLine_; }