|
|
@@ -1,107 +1,2 @@
|
|
|
-// This entry is the "full-build" that includes both the runtime
|
|
|
-// and the compiler, and supports on-the-fly compilation of the template option.
|
|
|
-import { initDev } from './dev'
|
|
|
-import {
|
|
|
- type CompilerError,
|
|
|
- type CompilerOptions,
|
|
|
- compile,
|
|
|
-} from '@vue/compiler-dom'
|
|
|
-import {
|
|
|
- type RenderFunction,
|
|
|
- registerRuntimeCompiler,
|
|
|
- warn,
|
|
|
-} from '@vue/runtime-dom'
|
|
|
-import * as runtimeDom from '@vue/runtime-dom'
|
|
|
-import {
|
|
|
- NOOP,
|
|
|
- extend,
|
|
|
- genCacheKey,
|
|
|
- generateCodeFrame,
|
|
|
- isString,
|
|
|
-} from '@vue/shared'
|
|
|
-import type { InternalRenderFunction } from 'packages/runtime-core/src/component'
|
|
|
-
|
|
|
-if (__DEV__) {
|
|
|
- initDev()
|
|
|
-}
|
|
|
-
|
|
|
-const compileCache: Record<string, RenderFunction> = Object.create(null)
|
|
|
-
|
|
|
-function compileToFunction(
|
|
|
- template: string | HTMLElement,
|
|
|
- options?: CompilerOptions,
|
|
|
-): RenderFunction {
|
|
|
- if (!isString(template)) {
|
|
|
- if (template.nodeType) {
|
|
|
- template = template.innerHTML
|
|
|
- } else {
|
|
|
- __DEV__ && 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 (__DEV__ && !el) {
|
|
|
- warn(`Template element not found or is empty: ${template}`)
|
|
|
- }
|
|
|
- // __UNSAFE__
|
|
|
- // Reason: potential execution of JS expressions in in-DOM template.
|
|
|
- // The user must make sure the in-DOM template is trusted. If it's rendered
|
|
|
- // by the server, the template should not contain any user data.
|
|
|
- template = el ? el.innerHTML : ``
|
|
|
- }
|
|
|
-
|
|
|
- const opts = extend(
|
|
|
- {
|
|
|
- hoistStatic: true,
|
|
|
- onError: __DEV__ ? onError : undefined,
|
|
|
- onWarn: __DEV__ ? e => onError(e, true) : NOOP,
|
|
|
- } as CompilerOptions,
|
|
|
- options,
|
|
|
- )
|
|
|
-
|
|
|
- if (!opts.isCustomElement && typeof customElements !== 'undefined') {
|
|
|
- opts.isCustomElement = tag => !!customElements.get(tag)
|
|
|
- }
|
|
|
-
|
|
|
- const { code } = compile(template, opts)
|
|
|
-
|
|
|
- function onError(err: CompilerError, asWarning = false) {
|
|
|
- const message = asWarning
|
|
|
- ? err.message
|
|
|
- : `Template compilation error: ${err.message}`
|
|
|
- const codeFrame =
|
|
|
- err.loc &&
|
|
|
- generateCodeFrame(
|
|
|
- template as string,
|
|
|
- err.loc.start.offset,
|
|
|
- err.loc.end.offset,
|
|
|
- )
|
|
|
- warn(codeFrame ? `${message}\n${codeFrame}` : message)
|
|
|
- }
|
|
|
-
|
|
|
- // The wildcard import results in a huge object with every export
|
|
|
- // with keys that cannot be mangled, and can be quite heavy size-wise.
|
|
|
- // In the global build we know `Vue` is available globally so we can avoid
|
|
|
- // the wildcard object.
|
|
|
- const render = (
|
|
|
- __GLOBAL__ ? new Function(code)() : new Function('Vue', code)(runtimeDom)
|
|
|
- ) as RenderFunction
|
|
|
-
|
|
|
- // mark the function as runtime compiled
|
|
|
- ;(render as InternalRenderFunction)._rc = true
|
|
|
-
|
|
|
- return (compileCache[key] = render)
|
|
|
-}
|
|
|
-
|
|
|
-registerRuntimeCompiler(compileToFunction)
|
|
|
-
|
|
|
-export { compileToFunction as compile }
|
|
|
-export * from '@vue/runtime-dom'
|
|
|
+export * from './indexBase'
|
|
|
+export * from './vaporAliases'
|