index.ts 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import {
  2. type CodegenResult,
  3. type CompilerOptions,
  4. type DirectiveTransform,
  5. type NodeTransform,
  6. type ParserOptions,
  7. type RootNode,
  8. baseCompile,
  9. baseParse,
  10. noopDirectiveTransform,
  11. } from '@vue/compiler-core'
  12. import { parserOptions } from './parserOptions'
  13. import { transformStyle } from './transforms/transformStyle'
  14. import { transformVHtml } from './transforms/vHtml'
  15. import { transformVText } from './transforms/vText'
  16. import { transformModel } from './transforms/vModel'
  17. import { transformOn } from './transforms/vOn'
  18. import { transformShow } from './transforms/vShow'
  19. import { transformTransition } from './transforms/Transition'
  20. import { stringifyStatic } from './transforms/stringifyStatic'
  21. import { ignoreSideEffectTags } from './transforms/ignoreSideEffectTags'
  22. import { validateHtmlNesting } from './transforms/validateHtmlNesting'
  23. import { extend } from '@vue/shared'
  24. export { parserOptions }
  25. export const DOMNodeTransforms: NodeTransform[] = [
  26. transformStyle,
  27. ...(__DEV__ ? [transformTransition, validateHtmlNesting] : []),
  28. ]
  29. export const DOMDirectiveTransforms: Record<string, DirectiveTransform> = {
  30. cloak: noopDirectiveTransform,
  31. html: transformVHtml,
  32. text: transformVText,
  33. model: transformModel, // override compiler-core
  34. on: transformOn, // override compiler-core
  35. show: transformShow,
  36. }
  37. export function compile(
  38. src: string | RootNode,
  39. options: CompilerOptions = {},
  40. ): CodegenResult {
  41. return baseCompile(
  42. src,
  43. extend({}, parserOptions, options, {
  44. nodeTransforms: [
  45. // ignore <script> and <tag>
  46. // this is not put inside DOMNodeTransforms because that list is used
  47. // by compiler-ssr to generate vnode fallback branches
  48. ignoreSideEffectTags,
  49. ...DOMNodeTransforms,
  50. ...(options.nodeTransforms || []),
  51. ],
  52. directiveTransforms: extend(
  53. {},
  54. DOMDirectiveTransforms,
  55. options.directiveTransforms || {},
  56. ),
  57. transformHoist: __BROWSER__ ? null : stringifyStatic,
  58. }),
  59. )
  60. }
  61. export function parse(template: string, options: ParserOptions = {}): RootNode {
  62. return baseParse(template, extend({}, parserOptions, options))
  63. }
  64. export * from './runtimeHelpers'
  65. export { transformStyle } from './transforms/transformStyle'
  66. export {
  67. createDOMCompilerError,
  68. DOMErrorCodes,
  69. DOMErrorMessages,
  70. } from './errors'
  71. export * from '@vue/compiler-core'