import Vue, { VNode } from 'vue' import { compile, compileToFunctions, ssrCompile, ssrCompileToFunctions, parseComponent, generateCodeFrame } from '.' // check compile options const compiled = compile('
hi
', { outputSourceRange: true, preserveWhitespace: false, whitespace: 'condense', modules: [ { preTransformNode: el => el, transformNode: el => el, postTransformNode: el => { el.tag = 'p' }, genData: el => el.tag, transformCode: (el, code) => code, staticKeys: ['test'] } ], directives: { test: (node, directiveMeta) => { node.tag directiveMeta.value } } }) // can be passed to function constructor new Function(compiled.render) compiled.staticRenderFns.map(fn => new Function(fn)) // with outputSourceRange: true // errors should be objects with range compiled.errors.forEach(e => { console.log(e.msg) }) // without option or without outputSourceRange: true, should be strings const { errors } = compile(`foo`) errors.forEach(e => { console.log(e.length) }) const { errors: errors2 } = compile(`foo`, {}) errors2.forEach(e => { console.log(e.length) }) const { errors: errors3 } = compile(`foo`, { outputSourceRange: false }) errors3.forEach(e => { console.log(e.length) }) const compiledFns = compileToFunctions('
hi
') // can be passed to component render / staticRenderFns options const vm = new Vue({ data() { return { test: 'Test' } }, render: compiledFns.render, staticRenderFns: compiledFns.staticRenderFns }) // can be called with component instance const vnode: VNode = compiledFns.render.call(vm) // check SFC parser const desc = parseComponent('', { pad: 'space', deindent: false }) const templateContent: string = desc.template!.content const scriptContent: string = desc.script!.content const styleContent: string = desc.styles.map(s => s.content).join('\n') const codeframe: string = generateCodeFrame(`foobar`, 0, 4)