import { NodePath, Scope } from '@babel/traverse'; import { DetectOptions } from '../index'; import { ObjectMethod, ObjectExpression, ObjectProperty, SpreadElement, ArrayExpression, StringLiteral, FunctionExpression, MemberExpression, ThisExpression } from '@babel/types'; export interface NodeDescription { name: string; start: number; end: number; loc: { start: { line: number; column: number; }; end: { line: number; column: number; }; }; } export declare function parseData(ast: ObjectMethod): Array; export declare function parseProps(ast: ObjectExpression): Array; export declare function parseMethods(ast: ObjectExpression): Array; export declare function parseWatch(ast: ObjectExpression): Array; /** * 传入一个vue文件,或者一个js文件,返回默认导出的ObjectExpression ,如果发生错误或者没有默认导出返回null * * @export * @param {string} script * @returns {(ObjectExpression | null)} */ export declare function preProcess(script: string): [ObjectExpression | null, number, number]; export declare class ScriptProcessor { private unusedNodeMap; private usedNodeMap; private unFoundNodeMap; private usedTokenSet; private offset; private line; constructor(usedTokens: string[], sourceCode: string, options?: DetectOptions); getUnusedNodeMap(): Map; getUnusedNodeDesc(): NodeDescription[]; /** * * * @export * @param {string[]} usedToken s 在template中使用的token列表 */ process(ast: ObjectExpression, nuxt: boolean): void; processWatch(property: ObjectProperty): void; processEffectMethod(property: ObjectMethod | FunctionExpression): void; processMethods(ast: ObjectProperty): void; markObjectMethodIdentifier(ast: ObjectProperty | ObjectMethod, used: boolean): void; /** * marked MemberExpression 当object 是this * * @param {MemberExpression} parent * @param {boolean} used * @param {string} name * * @memberOf ScriptProcessor */ markMemberExpression(parent: NodePath, used: boolean, name: string): void; markScope(scope: Scope, used: boolean, key: string, ignoreCondition?: boolean): void; /** * * * @param {string} name 代表MemberExpression 中的property是 StringLiteral 或者Identifier 时的值 * @param {boolean} used * @param {string} key 代表指向该 变量 的ObjectExpression 或者ObjectMethod 的key.name * @param {MemberExpression} parent ThisExpression 的parent 也就是 MemberExpression * @memberOf ScriptProcessor */ markThisExpression(name: string, used: boolean, key: string, parent: NodePath): void; processProps(ast: ObjectProperty): void; processData(ast: ObjectMethod): void; markArrayExpression(array: ArrayExpression): void; markIdentifiers(properties: (ObjectMethod | ObjectProperty)[], needTraverse?: boolean): void; markDestructThisExpression(path: NodePath, effect?: boolean, used?: boolean, name?: string): void; }