import * as SFCCompiler from '@vue/compiler-sfc' const COMP_IDENTIFIER = `__sfc__` export function compileFile(filename, code, compiled) { if (!code.trim()) { compiled.errors = [] return } if (!filename.endsWith('.vue')) { compiled.js = compiled.ssr = code compiled.errors = [] return } const id = hashId(filename) const { errors, descriptor } = SFCCompiler.parse(code, { filename, sourceMap: true }) // console.log(descriptor) if (errors.length) { compiled.errors = errors return } if ( (descriptor.script && descriptor.script.lang) || (descriptor.scriptSetup && descriptor.scriptSetup.lang) || descriptor.styles.some((s) => s.lang) || (descriptor.template && descriptor.template.lang) ) { compiled.errors = [ 'lang="x" pre-processors are not supported in the in-browser playground.' ] return } const hasScoped = descriptor.styles.some((s) => s.scoped) let clientCode = '' let ssrCode = '' const appendSharedCode = (code) => { clientCode += code ssrCode += code } const clientScriptResult = doCompileScript(descriptor, id, false) if (!clientScriptResult) { return } const [clientScript, bindings] = clientScriptResult clientCode += clientScript // script ssr only needs to be performed if using