first commit
This commit is contained in:
+55
@@ -0,0 +1,55 @@
|
||||
/**
|
||||
* vue v3.6.0-rc.10
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**/
|
||||
import * as runtimeDom from "@vue/runtime-dom";
|
||||
import { initCustomFormatter, registerRuntimeCompiler, warn } from "@vue/runtime-dom";
|
||||
import { compile } from "@vue/compiler-dom";
|
||||
import { NOOP, extend, genCacheKey, generateCodeFrame, isString } from "@vue/shared";
|
||||
import { defineVaporAsyncComponent } from "@vue/runtime-vapor";
|
||||
export * from "@vue/runtime-dom";
|
||||
export * from "@vue/runtime-vapor";
|
||||
//#region packages/vue/src/dev.ts
|
||||
function initDev() {
|
||||
initCustomFormatter();
|
||||
}
|
||||
//#endregion
|
||||
//#region packages/vue/src/index.ts
|
||||
if (!!(process.env.NODE_ENV !== "production")) initDev();
|
||||
const compileCache = Object.create(null);
|
||||
function compileToFunction(template, options) {
|
||||
if (!isString(template)) {
|
||||
if (template.nodeType) template = template.innerHTML;
|
||||
else {
|
||||
process.env.NODE_ENV !== "production" && warn(`invalid template option: `, template);
|
||||
return NOOP;
|
||||
}
|
||||
}
|
||||
const key = genCacheKey(template, options);
|
||||
const cached = compileCache[key];
|
||||
if (cached) return cached;
|
||||
if (template[0] === "#") {
|
||||
const el = document.querySelector(template);
|
||||
if (!!(process.env.NODE_ENV !== "production") && !el) warn(`Template element not found or is empty: ${template}`);
|
||||
template = el ? el.innerHTML : ``;
|
||||
}
|
||||
const opts = extend({
|
||||
hoistStatic: true,
|
||||
onError: !!(process.env.NODE_ENV !== "production") ? onError : void 0,
|
||||
onWarn: !!(process.env.NODE_ENV !== "production") ? (e) => onError(e, true) : NOOP
|
||||
}, options);
|
||||
if (!opts.isCustomElement && typeof customElements !== "undefined") opts.isCustomElement = (tag) => !!customElements.get(tag);
|
||||
const { code } = compile(template, opts);
|
||||
function onError(err, asWarning = false) {
|
||||
const message = asWarning ? err.message : `Template compilation error: ${err.message}`;
|
||||
const codeFrame = err.loc && generateCodeFrame(template, err.loc.start.offset, err.loc.end.offset);
|
||||
warn(codeFrame ? `${message}\n${codeFrame}` : message);
|
||||
}
|
||||
const render = new Function("Vue", code)(runtimeDom);
|
||||
render._rc = true;
|
||||
return compileCache[key] = render;
|
||||
}
|
||||
registerRuntimeCompiler(compileToFunction);
|
||||
//#endregion
|
||||
export { compileToFunction as compile, defineVaporAsyncComponent };
|
||||
Reference in New Issue
Block a user