import { EntryBuilderHelpers, FileParserOptions, Plugin, Runner, TSCustomVisitor, typescript as ts } from '@morjs/utils'; import { GlobalObjectTransformTypes } from '../constants'; declare type TransformTypes = keyof typeof GlobalObjectTransformTypes; /** * 多端编译的 js/ts 解析和转换 * - 处理 插件或分包 morGlobal.initApp 的注入 * - 全局对象的替换, 如 wx => my 或 wx => mor * - 提供对 App,Page,Component 的自动注入替换 */ export declare class ScriptParserPlugin implements Plugin { name: string; apply(runner: Runner): void; /** * 检查 @morjs/api 和 @morjs/core 是否存在 */ checkApiOrCoreRuntimeDepExistance(runner: Runner): { api: false | string; core: false | string; }; /** * 自动为 createPage 或 createComponent 注入 sourceType 标记 */ injectSourceTypeIntoPageAndComponent(transformers: ts.CustomTransformers, options: FileParserOptions): ts.CustomTransformers; /** * 编译类型 为 plugin 或 subpackage 的情况下 * 为 aApp 或 wApp 或 createApp 调用 注入 模拟的 globalApp */ injectGlobalAppInvokerForPluginOrSubpackage(entryBuilder: EntryBuilderHelpers, transformers: ts.CustomTransformers, options: FileParserOptions): ts.CustomTransformers; /** * 自动注入 mor 的运行时 * * - 自动替换 App 为 __MOR_APP__ * - 自动替换 Page 为 __MOR_PAGE__ * - 自动替换 Component 为 __MOR_COMPONENT__ * - 替换完成后, 在后置的检查中, 基于 __MOR_*__ 是否存在,自动注入引用代码 */ autoInjectCoreLib(transformers: ts.CustomTransformers, options: FileParserOptions): ts.CustomTransformers; /** * 获取 globalObject 替换插件, 支持 3 种策略 * 1. `enhanced` 增强方式: wx => mor 并追加 mor import, mor 中包含 api 的抹平 * 2. `lite` 轻量级的方式: wx => my, 替换所有 globalObject * 3. `minimal` 最小替换: wx.abc() => my.abc(), 仅替换函数调用 */ getGlobalObjectTransformVisitor(transformType: TransformTypes, sourceGlobalObject: string, targetGlobalObject: string): TSCustomVisitor; /** * component 模式下修改 require 或 import 的引用路径 */ alterImportOrRequirePath(transformers: ts.CustomTransformers, entryBuilder: EntryBuilderHelpers, filePath: string): void; } export {};