| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- declare type CompilerOptions = {
- warn?: Function // allow customizing warning in different environments; e.g. node
- modules?: Array<ModuleOptions> // platform specific modules; e.g. style; class
- directives?: { [key: string]: Function } // platform specific directives
- staticKeys?: string // a list of AST properties to be considered static; for optimization
- isUnaryTag?: (tag: string) => boolean | undefined // check if a tag is unary for the platform
- canBeLeftOpenTag?: (tag: string) => boolean | undefined // check if a tag can be left opened
- isReservedTag?: (tag: string) => boolean | undefined // check if a tag is a native for the platform
- preserveWhitespace?: boolean // preserve whitespace between elements? (Deprecated)
- whitespace?: 'preserve' | 'condense' // whitespace handling strategy
- optimize?: boolean // optimize static content?
- // web specific
- mustUseProp?: (tag: string, type: string | null, name: string) => boolean // check if an attribute should be bound as a property
- isPreTag?: (attr: string) => boolean | null // check if a tag needs to preserve whitespace
- getTagNamespace?: (tag: string) => string | undefined // check the namespace for a tag
- expectHTML?: boolean // only false for non-web builds
- isFromDOM?: boolean
- shouldDecodeTags?: boolean
- shouldDecodeNewlines?: boolean
- shouldDecodeNewlinesForHref?: boolean
- outputSourceRange?: boolean
- // runtime user-configurable
- delimiters?: [string, string] // template delimiters
- comments?: boolean // preserve comments in template
- // for ssr optimization compiler
- scopeId?: string
- }
- declare type WarningMessage = {
- msg: string
- start?: number
- end?: number
- }
- declare type CompiledResult = {
- ast: ASTElement | null
- render: string
- staticRenderFns: Array<string>
- stringRenderFns?: Array<string>
- errors?: Array<string | WarningMessage>
- tips?: Array<string | WarningMessage>
- }
- declare type ModuleOptions = {
- // transform an AST node before any attributes are processed
- // returning an ASTElement from pre/transforms replaces the element
- preTransformNode: (el: ASTElement) => ASTElement | null
- // transform an AST node after built-ins like v-if, v-for are processed
- transformNode: (el: ASTElement) => ASTElement | null
- // transform an AST node after its children have been processed
- // cannot return replacement in postTransform because tree is already finalized
- postTransformNode: (el: ASTElement) => void
- genData: (el: ASTElement) => string // generate extra data string for an element
- transformCode?: (el: ASTElement, code: string) => string // further transform generated code for an element
- staticKeys?: Array<string> // AST properties to be considered static
- }
- declare type ASTModifiers = { [key: string]: boolean }
- declare type ASTIfCondition = { exp: string | null; block: ASTElement }
- declare type ASTIfConditions = Array<ASTIfCondition>
- declare type ASTAttr = {
- name: string
- value: any
- dynamic?: boolean
- start?: number
- end?: number
- }
- declare type ASTElementHandler = {
- value: string
- params?: Array<any>
- modifiers: ASTModifiers | null
- dynamic?: boolean
- start?: number
- end?: number
- }
- declare type ASTElementHandlers = {
- [key: string]: ASTElementHandler | Array<ASTElementHandler>
- }
- declare type ASTDirective = {
- name: string
- rawName: string
- value: string
- arg: string | null
- isDynamicArg: boolean
- modifiers: ASTModifiers | null
- start?: number
- end?: number
- }
- declare type ASTNode = ASTElement | ASTText | ASTExpression
- declare type ASTElement = {
- type: 1
- tag: string
- attrsList: Array<ASTAttr>
- attrsMap: { [key: string]: any }
- rawAttrsMap: { [key: string]: ASTAttr }
- parent: ASTElement | void
- children: Array<ASTNode>
- start?: number
- end?: number
- processed?: true
- static?: boolean
- staticRoot?: boolean
- staticInFor?: boolean
- staticProcessed?: boolean
- hasBindings?: boolean
- text?: string
- attrs?: Array<ASTAttr>
- dynamicAttrs?: Array<ASTAttr>
- props?: Array<ASTAttr>
- plain?: boolean
- pre?: true
- ns?: string
- component?: string
- inlineTemplate?: true
- transitionMode?: string | null
- slotName?: string | null
- slotTarget?: string | null
- slotTargetDynamic?: boolean
- slotScope?: string | null
- scopedSlots?: { [name: string]: ASTElement }
- ref?: string
- refInFor?: boolean
- if?: string
- ifProcessed?: boolean
- elseif?: string
- else?: true
- ifConditions?: ASTIfConditions
- for?: string
- forProcessed?: boolean
- key?: string
- alias?: string
- iterator1?: string
- iterator2?: string
- staticClass?: string
- classBinding?: string
- staticStyle?: string
- styleBinding?: string
- events?: ASTElementHandlers
- nativeEvents?: ASTElementHandlers
- transition?: string | true
- transitionOnAppear?: boolean
- model?: {
- value: string
- callback: string
- expression: string
- }
- directives?: Array<ASTDirective>
- forbidden?: true
- once?: true
- onceProcessed?: boolean
- wrapData?: (code: string) => string
- wrapListeners?: (code: string) => string
- // 2.4 ssr optimization
- ssrOptimizability?: number
- }
- declare type ASTExpression = {
- type: 2
- expression: string
- text: string
- tokens: Array<string | Object>
- static?: boolean
- // 2.4 ssr optimization
- ssrOptimizability?: number
- start?: number
- end?: number
- }
- declare type ASTText = {
- type: 3
- text: string
- static?: boolean
- isComment?: boolean
- // 2.4 ssr optimization
- ssrOptimizability?: number
- start?: number
- end?: number
- }
- // SFC-parser related declarations
- // an object format describing a single-file component
- declare type SFCDescriptor = {
- template: SFCBlock | null
- script: SFCBlock | null
- styles: Array<SFCBlock>
- customBlocks: Array<SFCBlock>
- errors: Array<string | WarningMessage>
- }
- declare type SFCBlock = {
- type: string
- content: string
- attrs: { [attribute: string]: string }
- start?: number
- end?: number
- lang?: string
- src?: string
- scoped?: boolean
- module?: string | boolean
- }
|