fixclosure
Version:
JavaScript dependency checker/fixer for Closure Library based on ECMAScript AST
89 lines (88 loc) • 2.68 kB
TypeScript
import doctrine from "@teppeis/doctrine";
import type { Comment, Program } from "estree-jsx";
export interface ParserOptions {
provideRoots?: string[];
replaceMap?: Map<string, string>;
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_;
}