You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
454 lines
12 KiB
454 lines
12 KiB
import { LazyResult } from 'postcss';
|
|
import { ParserPlugin } from '@babel/parser';
|
|
|
|
declare interface AssetURLOptions {
|
|
[name: string]: string | string[];
|
|
}
|
|
|
|
declare type ASTAttr = {
|
|
name: string;
|
|
value: any;
|
|
dynamic?: boolean;
|
|
start?: number;
|
|
end?: number;
|
|
};
|
|
|
|
declare type ASTDirective = {
|
|
name: string;
|
|
rawName: string;
|
|
value: string;
|
|
arg: string | null;
|
|
isDynamicArg: boolean;
|
|
modifiers: ASTModifiers | null;
|
|
start?: number;
|
|
end?: number;
|
|
};
|
|
|
|
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;
|
|
ssrOptimizability?: 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 ASTExpression = {
|
|
type: 2;
|
|
expression: string;
|
|
text: string;
|
|
tokens: Array<string | Object>;
|
|
static?: boolean;
|
|
ssrOptimizability?: number;
|
|
start?: number;
|
|
end?: number;
|
|
};
|
|
|
|
declare type ASTIfCondition = {
|
|
exp: string | null;
|
|
block: ASTElement;
|
|
};
|
|
|
|
declare type ASTIfConditions = Array<ASTIfCondition>;
|
|
|
|
declare type ASTModifiers = {
|
|
[key: string]: boolean;
|
|
};
|
|
|
|
declare type ASTNode = ASTElement | ASTText | ASTExpression;
|
|
|
|
declare type ASTText = {
|
|
type: 3;
|
|
text: string;
|
|
static?: boolean;
|
|
isComment?: boolean;
|
|
ssrOptimizability?: number;
|
|
start?: number;
|
|
end?: number;
|
|
};
|
|
|
|
declare type BindingMetadata = {
|
|
[key: string]: BindingTypes | undefined;
|
|
} & {
|
|
__isScriptSetup?: boolean;
|
|
};
|
|
|
|
declare const enum BindingTypes {
|
|
/**
|
|
* returned from data()
|
|
*/
|
|
DATA = "data",
|
|
/**
|
|
* declared as a prop
|
|
*/
|
|
PROPS = "props",
|
|
/**
|
|
* a local alias of a `<script setup>` destructured prop.
|
|
* the original is stored in __propsAliases of the bindingMetadata object.
|
|
*/
|
|
PROPS_ALIASED = "props-aliased",
|
|
/**
|
|
* a let binding (may or may not be a ref)
|
|
*/
|
|
SETUP_LET = "setup-let",
|
|
/**
|
|
* a const binding that can never be a ref.
|
|
* these bindings don't need `unref()` calls when processed in inlined
|
|
* template expressions.
|
|
*/
|
|
SETUP_CONST = "setup-const",
|
|
/**
|
|
* a const binding that does not need `unref()`, but may be mutated.
|
|
*/
|
|
SETUP_REACTIVE_CONST = "setup-reactive-const",
|
|
/**
|
|
* a const binding that may be a ref.
|
|
*/
|
|
SETUP_MAYBE_REF = "setup-maybe-ref",
|
|
/**
|
|
* bindings that are guaranteed to be refs
|
|
*/
|
|
SETUP_REF = "setup-ref",
|
|
/**
|
|
* declared by other options, e.g. computed, inject
|
|
*/
|
|
OPTIONS = "options"
|
|
}
|
|
|
|
declare type CompiledResult = {
|
|
ast: ASTElement | null;
|
|
render: string;
|
|
staticRenderFns: Array<string>;
|
|
stringRenderFns?: Array<string>;
|
|
errors?: Array<string | WarningMessage>;
|
|
tips?: Array<string | WarningMessage>;
|
|
};
|
|
|
|
export declare type CompilerOptions = {
|
|
warn?: Function;
|
|
modules?: Array<ModuleOptions>;
|
|
directives?: {
|
|
[key: string]: Function;
|
|
};
|
|
staticKeys?: string;
|
|
isUnaryTag?: (tag: string) => boolean | undefined;
|
|
canBeLeftOpenTag?: (tag: string) => boolean | undefined;
|
|
isReservedTag?: (tag: string) => boolean | undefined;
|
|
preserveWhitespace?: boolean;
|
|
whitespace?: 'preserve' | 'condense';
|
|
optimize?: boolean;
|
|
mustUseProp?: (tag: string, type: string | null, name: string) => boolean;
|
|
isPreTag?: (attr: string) => boolean | null;
|
|
getTagNamespace?: (tag: string) => string | undefined;
|
|
expectHTML?: boolean;
|
|
isFromDOM?: boolean;
|
|
shouldDecodeTags?: boolean;
|
|
shouldDecodeNewlines?: boolean;
|
|
shouldDecodeNewlinesForHref?: boolean;
|
|
outputSourceRange?: boolean;
|
|
shouldKeepComment?: boolean;
|
|
delimiters?: [string, string];
|
|
comments?: boolean;
|
|
scopeId?: string;
|
|
bindings?: BindingMetadata;
|
|
};
|
|
|
|
/**
|
|
* Compile `<script setup>`
|
|
* It requires the whole SFC descriptor because we need to handle and merge
|
|
* normal `<script>` + `<script setup>` if both are present.
|
|
*/
|
|
export declare function compileScript(sfc: SFCDescriptor, options?: SFCScriptCompileOptions): SFCScriptBlock;
|
|
|
|
export declare function compileStyle(options: SFCStyleCompileOptions): SFCStyleCompileResults;
|
|
|
|
export declare function compileStyleAsync(options: SFCStyleCompileOptions): Promise<SFCStyleCompileResults>;
|
|
|
|
export declare function compileTemplate(options: SFCTemplateCompileOptions): SFCTemplateCompileResults;
|
|
|
|
export declare function generateCodeFrame(source: string, start?: number, end?: number): string;
|
|
|
|
declare interface ImportBinding {
|
|
isType: boolean;
|
|
imported: string;
|
|
source: string;
|
|
isFromSetup: boolean;
|
|
isUsedInTemplate: boolean;
|
|
}
|
|
|
|
declare type ModuleOptions = {
|
|
preTransformNode?: (el: ASTElement) => ASTElement | null | void;
|
|
transformNode?: (el: ASTElement) => ASTElement | null | void;
|
|
postTransformNode?: (el: ASTElement) => void;
|
|
genData?: (el: ASTElement) => string;
|
|
transformCode?: (el: ASTElement, code: string) => string;
|
|
staticKeys?: Array<string>;
|
|
};
|
|
|
|
export declare function parse(options: SFCParseOptions): SFCDescriptor;
|
|
|
|
/**
|
|
* Parse a single-file component (*.vue) file into an SFC Descriptor Object.
|
|
*/
|
|
export declare function parseComponent(source: string, options?: VueTemplateCompilerParseOptions): SFCDescriptor;
|
|
|
|
declare interface RawSourceMap extends StartOfSourceMap {
|
|
version: string;
|
|
sources: string[];
|
|
names: string[];
|
|
sourcesContent?: string[];
|
|
mappings: string;
|
|
}
|
|
|
|
/**
|
|
* Utility for rewriting `export default` in a script block into a variable
|
|
* declaration so that we can inject things into it
|
|
*/
|
|
export declare function rewriteDefault(input: string, as: string, parserPlugins?: ParserPlugin[]): string;
|
|
|
|
export declare interface SFCBlock extends SFCCustomBlock {
|
|
lang?: string;
|
|
scoped?: boolean;
|
|
module?: string | boolean;
|
|
}
|
|
|
|
export declare interface SFCCustomBlock {
|
|
type: string;
|
|
content: string;
|
|
attrs: {
|
|
[key: string]: string | true;
|
|
};
|
|
start: number;
|
|
end: number;
|
|
src?: string;
|
|
map?: RawSourceMap;
|
|
}
|
|
|
|
export declare interface SFCDescriptor {
|
|
source: string;
|
|
filename: string;
|
|
template: SFCBlock | null;
|
|
script: SFCScriptBlock | null;
|
|
scriptSetup: SFCScriptBlock | null;
|
|
styles: SFCBlock[];
|
|
customBlocks: SFCCustomBlock[];
|
|
cssVars: string[];
|
|
errors: (string | WarningMessage)[];
|
|
/**
|
|
* compare with an existing descriptor to determine whether HMR should perform
|
|
* a reload vs. re-render.
|
|
*
|
|
* Note: this comparison assumes the prev/next script are already identical,
|
|
* and only checks the special case where `<script setup lang="ts">` unused
|
|
* import pruning result changes due to template changes.
|
|
*/
|
|
shouldForceReload: (prevImports: Record<string, ImportBinding>) => boolean;
|
|
}
|
|
|
|
export declare interface SFCParseOptions {
|
|
source: string;
|
|
filename?: string;
|
|
compiler?: TemplateCompiler;
|
|
compilerParseOptions?: VueTemplateCompilerParseOptions;
|
|
sourceRoot?: string;
|
|
sourceMap?: boolean;
|
|
/**
|
|
* @deprecated use `sourceMap` instead.
|
|
*/
|
|
needMap?: boolean;
|
|
}
|
|
|
|
export declare interface SFCScriptBlock extends SFCBlock {
|
|
type: 'script';
|
|
setup?: string | boolean;
|
|
bindings?: BindingMetadata;
|
|
imports?: Record<string, ImportBinding>;
|
|
/**
|
|
* import('\@babel/types').Statement
|
|
*/
|
|
scriptAst?: any[];
|
|
/**
|
|
* import('\@babel/types').Statement
|
|
*/
|
|
scriptSetupAst?: any[];
|
|
}
|
|
|
|
export declare interface SFCScriptCompileOptions {
|
|
/**
|
|
* Scope ID for prefixing injected CSS variables.
|
|
* This must be consistent with the `id` passed to `compileStyle`.
|
|
*/
|
|
id: string;
|
|
/**
|
|
* Production mode. Used to determine whether to generate hashed CSS variables
|
|
*/
|
|
isProd?: boolean;
|
|
/**
|
|
* Enable/disable source map. Defaults to true.
|
|
*/
|
|
sourceMap?: boolean;
|
|
/**
|
|
* https://babeljs.io/docs/en/babel-parser#plugins
|
|
*/
|
|
babelParserPlugins?: ParserPlugin[];
|
|
}
|
|
|
|
export declare interface SFCStyleCompileOptions {
|
|
source: string;
|
|
filename: string;
|
|
id: string;
|
|
map?: any;
|
|
scoped?: boolean;
|
|
trim?: boolean;
|
|
preprocessLang?: string;
|
|
preprocessOptions?: any;
|
|
postcssOptions?: any;
|
|
postcssPlugins?: any[];
|
|
isProd?: boolean;
|
|
}
|
|
|
|
export declare interface SFCStyleCompileResults {
|
|
code: string;
|
|
map: any | void;
|
|
rawResult: LazyResult | void;
|
|
errors: string[];
|
|
}
|
|
|
|
export declare interface SFCTemplateCompileOptions {
|
|
source: string;
|
|
filename: string;
|
|
compiler?: TemplateCompiler;
|
|
compilerOptions?: CompilerOptions;
|
|
transformAssetUrls?: AssetURLOptions | boolean;
|
|
transformAssetUrlsOptions?: TransformAssetUrlsOptions;
|
|
preprocessLang?: string;
|
|
preprocessOptions?: any;
|
|
transpileOptions?: any;
|
|
isProduction?: boolean;
|
|
isFunctional?: boolean;
|
|
optimizeSSR?: boolean;
|
|
prettify?: boolean;
|
|
isTS?: boolean;
|
|
bindings?: BindingMetadata;
|
|
}
|
|
|
|
export declare interface SFCTemplateCompileResults {
|
|
ast: Object | undefined;
|
|
code: string;
|
|
source: string;
|
|
tips: (string | WarningMessage)[];
|
|
errors: (string | WarningMessage)[];
|
|
}
|
|
|
|
declare interface StartOfSourceMap {
|
|
file?: string;
|
|
sourceRoot?: string;
|
|
}
|
|
|
|
export declare interface TemplateCompiler {
|
|
parseComponent(source: string, options?: any): SFCDescriptor;
|
|
compile(template: string, options: CompilerOptions): CompiledResult;
|
|
ssrCompile(template: string, options: CompilerOptions): CompiledResult;
|
|
}
|
|
|
|
declare interface TransformAssetUrlsOptions {
|
|
/**
|
|
* If base is provided, instead of transforming relative asset urls into
|
|
* imports, they will be directly rewritten to absolute urls.
|
|
*/
|
|
base?: string;
|
|
/**
|
|
* If true, also processes absolute urls.
|
|
*/
|
|
includeAbsolute?: boolean;
|
|
}
|
|
|
|
declare interface VueTemplateCompilerParseOptions {
|
|
pad?: 'line' | 'space' | boolean;
|
|
deindent?: boolean;
|
|
outputSourceRange?: boolean;
|
|
}
|
|
|
|
export declare type WarningMessage = {
|
|
msg: string;
|
|
start?: number;
|
|
end?: number;
|
|
};
|
|
|
|
export { }
|
|
|