import { ANode } from 'san'; export interface TransformComponentInfo { templateAst?: ANode; } export type TransformOptions = { /** 是否移除未使用方法 */ minifyMethods?: boolean; } & ({ /** * typescript 组件源码类型,class A extends san.Component {} */ sourceType: 'class'; componentInfos: Record; } | { /** * javascript 组件源码类型, 单个 defineComponent({}) 定义 */ sourceType: 'defineComponent'; componentInfo: TransformComponentInfo; } | { /** * javascript 组件源码类型, 混合 class A extends san.Component {} 和 defineComponent({}) * 如果 defineComponent({}) 是匿名定义(module.exports = defineComponent({})),会被移除。 */ sourceType: 'mixed'; componentInfos: Record; }); /** * 转换 san ssr 组件中的数据访问代码 this.data, this.d * - this.d.xxx -> this.data.raw.xxx * - this.d.computed -> this.data.get('computed') * - this.data.get('xxx) -> this.data.raw.xxx * - this.data.set('xxx', value) -> this.data.raw.xxx = value * * __部分符合条件的组件会做代码精简,移除无用的函数和属性。__ * @param code * @returns */ export declare function transformDataProxy(code: string, options: TransformOptions): { transformed?: number; code: string; };