import { Alllibs } from "../types"; function varClone(val) { if (val && typeof val === 'object') { try { return JSON.parse(JSON.stringify(val)) } catch (ex) { return val } } return val } export default function injectCom(allLibs: Alllibs) { allLibs['mybricks.core-comlib.fn@1.0.0'] = { namespace: 'mybricks.core-comlib.fn', runtime: () => { }, version: '1.0.0', } allLibs['mybricks.core-comlib.var@1.0.0'] = { namespace: 'mybricks.core-comlib.var', runtime: ({ data, outputs, inputs }) => { inputs['get']((val, relOutpus) => { relOutpus['return'](varClone(data.val)); }); inputs['set']((val) => { data.val = val; outputs['changed'](varClone(val)); }); }, version: '1.0.0', } allLibs['mybricks.core-comlib.module@1.0.0'] = { namespace: 'mybricks.core-comlib.module', runtime: ({ slots }) => { const names = Object.keys(slots); const slotName = names[0]; return slots[slotName].render(null, slotName); }, version: '1.0.0', } allLibs['mybricks.core-comlib.frame-output@1.0.0'] = { namespace: 'mybricks.core-comlib.frame-output', runtime: () => { }, version: '1.0.0', } allLibs['mybricks.core-comlib.type-change@1.0.0'] = { namespace: 'mybricks.core-comlib.type-change', runtime: ({ data, outputs, inputs, onError }) => { inputs['from']((val, relOutpus) => { const script = data.exchange && data.exchange.script if (script) { let fn, returnVal, isOk try { eval(`fn = ${script}`) returnVal = fn(val) isOk = true } catch (ex) { onError(`数据转换错误:${ex.message}`) } if (isOk) { outputs['to'](returnVal) } } else { onError('未配置转换规则') } }) }, version: '1.0.0', } return allLibs; }