import {BasicSyncProviderInterface, ProviderGlobalOptions, ProviderSourceConfig} from '../Controller'; import {ContainerProps, getRuntimeContext} from '../../Container/types'; import {compileExpressionString, filterExpressionData} from '../../../util/vm'; import {cloneDeep, isEmpty} from 'lodash'; import {notification} from '@native-ads/antd'; export class InitDataProvider implements BasicSyncProviderInterface { configCheck(provider: ProviderSourceConfig) { // 初始化跳过检查 return true; } parse(provider: ProviderSourceConfig, props: ContainerProps, context: any) { let data = provider.config; let runtime = getRuntimeContext(props, context); runtime.$data = filterExpressionData(cloneDeep(data)); provider.config = compileExpressionString(data, runtime); // 初始化只初始化纯字面量 return provider; } retCheck(ret: Object, provider: ProviderSourceConfig) { return !isEmpty(ret); } retParse(ret: Object, provider: ProviderSourceConfig, props: ContainerProps, context: any) { return ret; } run (provider: ProviderSourceConfig, options?: ProviderGlobalOptions) { let data = provider.config; return filterExpressionData(data); } onError(errmsg: string) { notification.error({ message: '引擎数据初始化失败', description: errmsg }); } }