import { ThreadInMemory } from '@wovin/core/thread' import { Logger } from 'besonders-logger' import { TypeMap } from './TypeMap' import { getBaseVMtoExtend, getUseFx } from './WovinVMfactory' const { WARN, LOG, DEBUG, VERBOSE, ERROR } = Logger.setup(Logger.INFO, { prefix: '[VMap]' }) // eslint-disable-line unused-imports/no-unused-vars export const EntityVMs = { BlockVM: class BlockVM extends getBaseVMtoExtend('Block', TypeMap.Block, ['content']) {}, ProviderVM: class ProviderVM extends getBaseVMtoExtend('Provider', TypeMap.Provider) {}, } export const UseFXs = { useBlock: getUseFx('Block', EntityVMs.BlockVM), useProvider: getUseFx('Provider', EntityVMs.ProviderVM), } // optional shortcuts export const PVM = EntityVMs.ProviderVM export const usePro = UseFXs.useProvider function testVM() { const pb = PVM.buildNew({ url: 'http', type: 'ucan' }) // TODO ts const thread = ThreadInMemory.empty() const { en, logs } = pb.commit(thread) const pvm = usePro(en, thread) const tbErrors = pvm.typeErrors const urlProp = pvm.url DEBUG({ TypeMap, EntityVMs, PVM, logs, pvm, tbErrors }) } // testVM()