@vue/compiler-vapor 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,406 @@
1
+ import { SimpleExpressionNode, RootNode, TemplateChildNode, DirectiveNode, CompoundExpressionNode, ElementNode, AllNode, CompilerCompatOptions, CommentNode, TransformOptions as TransformOptions$1, CodegenOptions as CodegenOptions$1, BaseCodegenResult, SourceLocation, CodegenSourceMapGenerator, TemplateNode, CompilerOptions as CompilerOptions$1, CompilerError } from '@vue/compiler-dom';
2
+ export { parse } from '@vue/compiler-dom';
3
+ import * as packages_runtime_vapor_src from 'packages/runtime-vapor/src';
4
+ import * as packages_runtime_dom_src from 'packages/runtime-dom/src';
5
+ import { Prettify } from '@vue/shared';
6
+
7
+ export interface IRProp extends Omit<DirectiveTransformResult, 'value'> {
8
+ values: SimpleExpressionNode[];
9
+ }
10
+ export declare enum IRDynamicPropsKind {
11
+ EXPRESSION = 0,// v-bind="value"
12
+ ATTRIBUTE = 1
13
+ }
14
+ export type IRPropsStatic = IRProp[];
15
+ export interface IRPropsDynamicExpression {
16
+ kind: IRDynamicPropsKind.EXPRESSION;
17
+ value: SimpleExpressionNode;
18
+ handler?: boolean;
19
+ }
20
+ export interface IRPropsDynamicAttribute extends IRProp {
21
+ kind: IRDynamicPropsKind.ATTRIBUTE;
22
+ }
23
+ export type IRProps = IRPropsStatic | IRPropsDynamicAttribute | IRPropsDynamicExpression;
24
+ export interface SlotBlockIRNode extends BlockIRNode {
25
+ props?: SimpleExpressionNode;
26
+ }
27
+ export declare enum IRSlotType {
28
+ STATIC = 0,
29
+ DYNAMIC = 1,
30
+ LOOP = 2,
31
+ CONDITIONAL = 3,
32
+ EXPRESSION = 4
33
+ }
34
+ export type IRSlotsStatic = {
35
+ slotType: IRSlotType.STATIC;
36
+ slots: Record<string, SlotBlockIRNode>;
37
+ };
38
+ export interface IRSlotDynamicBasic {
39
+ slotType: IRSlotType.DYNAMIC;
40
+ name: SimpleExpressionNode;
41
+ fn: SlotBlockIRNode;
42
+ }
43
+ export interface IRSlotDynamicLoop {
44
+ slotType: IRSlotType.LOOP;
45
+ name: SimpleExpressionNode;
46
+ fn: SlotBlockIRNode;
47
+ loop: IRFor;
48
+ }
49
+ export interface IRSlotDynamicConditional {
50
+ slotType: IRSlotType.CONDITIONAL;
51
+ condition: SimpleExpressionNode;
52
+ positive: IRSlotDynamicBasic;
53
+ negative?: IRSlotDynamicBasic | IRSlotDynamicConditional;
54
+ }
55
+ export interface IRSlotsExpression {
56
+ slotType: IRSlotType.EXPRESSION;
57
+ slots: SimpleExpressionNode;
58
+ }
59
+ export type IRSlotDynamic = IRSlotDynamicBasic | IRSlotDynamicLoop | IRSlotDynamicConditional;
60
+ export type IRSlots = IRSlotsStatic | IRSlotDynamic | IRSlotsExpression;
61
+
62
+ export declare enum IRNodeTypes {
63
+ ROOT = 0,
64
+ BLOCK = 1,
65
+ SET_PROP = 2,
66
+ SET_DYNAMIC_PROPS = 3,
67
+ SET_TEXT = 4,
68
+ SET_EVENT = 5,
69
+ SET_DYNAMIC_EVENTS = 6,
70
+ SET_HTML = 7,
71
+ SET_TEMPLATE_REF = 8,
72
+ INSERT_NODE = 9,
73
+ PREPEND_NODE = 10,
74
+ CREATE_TEXT_NODE = 11,
75
+ CREATE_COMPONENT_NODE = 12,
76
+ SLOT_OUTLET_NODE = 13,
77
+ DIRECTIVE = 14,
78
+ DECLARE_OLD_REF = 15,// consider make it more general
79
+ IF = 16,
80
+ FOR = 17
81
+ }
82
+ export interface BaseIRNode {
83
+ type: IRNodeTypes;
84
+ }
85
+ export type CoreHelper = keyof typeof packages_runtime_dom_src;
86
+ export type VaporHelper = keyof typeof packages_runtime_vapor_src;
87
+ export interface BlockIRNode extends BaseIRNode {
88
+ type: IRNodeTypes.BLOCK;
89
+ node: RootNode | TemplateChildNode;
90
+ dynamic: IRDynamicInfo;
91
+ effect: IREffect[];
92
+ operation: OperationNode[];
93
+ expressions: SimpleExpressionNode[];
94
+ returns: number[];
95
+ }
96
+ export interface RootIRNode {
97
+ type: IRNodeTypes.ROOT;
98
+ node: RootNode;
99
+ source: string;
100
+ template: string[];
101
+ rootTemplateIndex?: number;
102
+ component: Set<string>;
103
+ directive: Set<string>;
104
+ block: BlockIRNode;
105
+ hasTemplateRef: boolean;
106
+ }
107
+ export interface IfIRNode extends BaseIRNode {
108
+ type: IRNodeTypes.IF;
109
+ id: number;
110
+ condition: SimpleExpressionNode;
111
+ positive: BlockIRNode;
112
+ negative?: BlockIRNode | IfIRNode;
113
+ once?: boolean;
114
+ }
115
+ export interface IRFor {
116
+ source: SimpleExpressionNode;
117
+ value?: SimpleExpressionNode;
118
+ key?: SimpleExpressionNode;
119
+ index?: SimpleExpressionNode;
120
+ }
121
+ export interface ForIRNode extends BaseIRNode, IRFor {
122
+ type: IRNodeTypes.FOR;
123
+ id: number;
124
+ keyProp?: SimpleExpressionNode;
125
+ render: BlockIRNode;
126
+ once: boolean;
127
+ component: boolean;
128
+ }
129
+ export interface SetPropIRNode extends BaseIRNode {
130
+ type: IRNodeTypes.SET_PROP;
131
+ element: number;
132
+ prop: IRProp;
133
+ root: boolean;
134
+ tag: string;
135
+ }
136
+ export interface SetDynamicPropsIRNode extends BaseIRNode {
137
+ type: IRNodeTypes.SET_DYNAMIC_PROPS;
138
+ element: number;
139
+ props: IRProps[];
140
+ root: boolean;
141
+ }
142
+ export interface SetDynamicEventsIRNode extends BaseIRNode {
143
+ type: IRNodeTypes.SET_DYNAMIC_EVENTS;
144
+ element: number;
145
+ event: SimpleExpressionNode;
146
+ }
147
+ export interface SetTextIRNode extends BaseIRNode {
148
+ type: IRNodeTypes.SET_TEXT;
149
+ element: number;
150
+ values: SimpleExpressionNode[];
151
+ }
152
+ export type KeyOverride = [find: string, replacement: string];
153
+ export interface SetEventIRNode extends BaseIRNode {
154
+ type: IRNodeTypes.SET_EVENT;
155
+ element: number;
156
+ key: SimpleExpressionNode;
157
+ value?: SimpleExpressionNode;
158
+ modifiers: {
159
+ options: string[];
160
+ keys: string[];
161
+ nonKeys: string[];
162
+ };
163
+ keyOverride?: KeyOverride;
164
+ delegate: boolean;
165
+ /** Whether it's in effect */
166
+ effect: boolean;
167
+ }
168
+ export interface SetHtmlIRNode extends BaseIRNode {
169
+ type: IRNodeTypes.SET_HTML;
170
+ element: number;
171
+ value: SimpleExpressionNode;
172
+ }
173
+ export interface SetTemplateRefIRNode extends BaseIRNode {
174
+ type: IRNodeTypes.SET_TEMPLATE_REF;
175
+ element: number;
176
+ value: SimpleExpressionNode;
177
+ refFor: boolean;
178
+ effect: boolean;
179
+ }
180
+ export interface CreateTextNodeIRNode extends BaseIRNode {
181
+ type: IRNodeTypes.CREATE_TEXT_NODE;
182
+ id: number;
183
+ values: SimpleExpressionNode[];
184
+ effect: boolean;
185
+ }
186
+ export interface InsertNodeIRNode extends BaseIRNode {
187
+ type: IRNodeTypes.INSERT_NODE;
188
+ elements: number[];
189
+ parent: number;
190
+ anchor?: number;
191
+ }
192
+ export interface PrependNodeIRNode extends BaseIRNode {
193
+ type: IRNodeTypes.PREPEND_NODE;
194
+ elements: number[];
195
+ parent: number;
196
+ }
197
+ export interface DirectiveIRNode extends BaseIRNode {
198
+ type: IRNodeTypes.DIRECTIVE;
199
+ element: number;
200
+ dir: VaporDirectiveNode;
201
+ name: string;
202
+ builtin?: boolean;
203
+ asset?: boolean;
204
+ modelType?: 'text' | 'dynamic' | 'radio' | 'checkbox' | 'select';
205
+ }
206
+ export interface CreateComponentIRNode extends BaseIRNode {
207
+ type: IRNodeTypes.CREATE_COMPONENT_NODE;
208
+ id: number;
209
+ tag: string;
210
+ props: IRProps[];
211
+ slots: IRSlots[];
212
+ asset: boolean;
213
+ root: boolean;
214
+ once: boolean;
215
+ dynamic?: SimpleExpressionNode;
216
+ }
217
+ export interface DeclareOldRefIRNode extends BaseIRNode {
218
+ type: IRNodeTypes.DECLARE_OLD_REF;
219
+ id: number;
220
+ }
221
+ export interface SlotOutletIRNode extends BaseIRNode {
222
+ type: IRNodeTypes.SLOT_OUTLET_NODE;
223
+ id: number;
224
+ name: SimpleExpressionNode;
225
+ props: IRProps[];
226
+ fallback?: BlockIRNode;
227
+ }
228
+ export type IRNode = OperationNode | RootIRNode;
229
+ export type OperationNode = SetPropIRNode | SetDynamicPropsIRNode | SetTextIRNode | SetEventIRNode | SetDynamicEventsIRNode | SetHtmlIRNode | SetTemplateRefIRNode | CreateTextNodeIRNode | InsertNodeIRNode | PrependNodeIRNode | DirectiveIRNode | IfIRNode | ForIRNode | CreateComponentIRNode | DeclareOldRefIRNode | SlotOutletIRNode;
230
+ export declare enum DynamicFlag {
231
+ NONE = 0,
232
+ /**
233
+ * This node is referenced and needs to be saved as a variable.
234
+ */
235
+ REFERENCED = 1,
236
+ /**
237
+ * This node is not generated from template, but is generated dynamically.
238
+ */
239
+ NON_TEMPLATE = 2,
240
+ /**
241
+ * This node needs to be inserted back into the template.
242
+ */
243
+ INSERT = 4
244
+ }
245
+ export interface IRDynamicInfo {
246
+ id?: number;
247
+ flags: DynamicFlag;
248
+ anchor?: number;
249
+ children: IRDynamicInfo[];
250
+ template?: number;
251
+ }
252
+ export interface IREffect {
253
+ expressions: SimpleExpressionNode[];
254
+ operations: OperationNode[];
255
+ }
256
+ type Overwrite<T, U> = Pick<T, Exclude<keyof T, keyof U>> & Pick<U, Extract<keyof U, keyof T>>;
257
+ export type HackOptions<T> = Prettify<Overwrite<T, {
258
+ nodeTransforms?: NodeTransform[];
259
+ directiveTransforms?: Record<string, DirectiveTransform | undefined>;
260
+ }>>;
261
+ export type VaporDirectiveNode = Overwrite<DirectiveNode, {
262
+ exp: Exclude<DirectiveNode['exp'], CompoundExpressionNode>;
263
+ arg: Exclude<DirectiveNode['arg'], CompoundExpressionNode>;
264
+ }>;
265
+
266
+ export type NodeTransform = (node: RootNode | TemplateChildNode, context: TransformContext<RootNode | TemplateChildNode>) => void | (() => void) | (() => void)[];
267
+ export type DirectiveTransform = (dir: VaporDirectiveNode, node: ElementNode, context: TransformContext<ElementNode>) => DirectiveTransformResult | void;
268
+ interface DirectiveTransformResult {
269
+ key: SimpleExpressionNode;
270
+ value: SimpleExpressionNode;
271
+ modifier?: '.' | '^';
272
+ runtimeCamelize?: boolean;
273
+ handler?: boolean;
274
+ handlerModifiers?: string[];
275
+ model?: boolean;
276
+ modelModifiers?: string[];
277
+ }
278
+ export type StructuralDirectiveTransform = (node: ElementNode, dir: VaporDirectiveNode, context: TransformContext<ElementNode>) => void | (() => void);
279
+ type TransformOptions = HackOptions<TransformOptions$1>;
280
+ export declare class TransformContext<T extends AllNode = AllNode> {
281
+ ir: RootIRNode;
282
+ node: T;
283
+ parent: TransformContext<RootNode | ElementNode> | null;
284
+ root: TransformContext<RootNode>;
285
+ index: number;
286
+ block: BlockIRNode;
287
+ options: Required<Omit<TransformOptions, 'filename' | keyof CompilerCompatOptions>>;
288
+ template: string;
289
+ childrenTemplate: (string | null)[];
290
+ dynamic: IRDynamicInfo;
291
+ inVOnce: boolean;
292
+ inVFor: number;
293
+ comment: CommentNode[];
294
+ component: Set<string>;
295
+ directive: Set<string>;
296
+ slots: IRSlots[];
297
+ private globalId;
298
+ constructor(ir: RootIRNode, node: T, options?: TransformOptions);
299
+ enterBlock(ir: BlockIRNode, isVFor?: boolean): () => void;
300
+ increaseId: () => number;
301
+ reference(): number;
302
+ pushTemplate(content: string): number;
303
+ registerTemplate(): number;
304
+ registerEffect(expressions: SimpleExpressionNode[], ...operations: OperationNode[]): void;
305
+ registerOperation(...node: OperationNode[]): void;
306
+ create<T extends TemplateChildNode>(node: T, index: number): TransformContext<T>;
307
+ }
308
+ export declare function transform(node: RootNode, options?: TransformOptions): RootIRNode;
309
+ export declare function createStructuralDirectiveTransform(name: string | string[], fn: StructuralDirectiveTransform): NodeTransform;
310
+
311
+ export type CodegenOptions = Omit<CodegenOptions$1, 'optimizeImports'>;
312
+ export declare class CodegenContext {
313
+ ir: RootIRNode;
314
+ options: Required<CodegenOptions>;
315
+ helpers: Set<string>;
316
+ helper: (name: CoreHelper | VaporHelper) => string;
317
+ delegates: Set<string>;
318
+ identifiers: Record<string, (string | SimpleExpressionNode)[]>;
319
+ seenInlineHandlerNames: Record<string, number>;
320
+ block: BlockIRNode;
321
+ withId<T>(fn: () => T, map: Record<string, string | SimpleExpressionNode | null>): T;
322
+ enterBlock(block: BlockIRNode): () => BlockIRNode;
323
+ scopeLevel: number;
324
+ enterScope(): [level: number, exit: () => number];
325
+ constructor(ir: RootIRNode, options: CodegenOptions);
326
+ }
327
+ export interface VaporCodegenResult extends BaseCodegenResult {
328
+ ast: RootIRNode;
329
+ helpers: Set<string>;
330
+ }
331
+ export declare function generate(ir: RootIRNode, options?: CodegenOptions): VaporCodegenResult;
332
+
333
+ declare const NEWLINE: unique symbol;
334
+ /** increase offset but don't push actual code */
335
+ declare const LF: unique symbol;
336
+ declare const INDENT_START: unique symbol;
337
+ declare const INDENT_END: unique symbol;
338
+ type FalsyValue = false | null | undefined;
339
+ export type CodeFragment = typeof NEWLINE | typeof LF | typeof INDENT_START | typeof INDENT_END | string | [code: string, newlineIndex?: number, loc?: SourceLocation, name?: string] | FalsyValue;
340
+ type CodeFragments = Exclude<CodeFragment, any[]> | CodeFragment[];
341
+ export declare function buildCodeFragment(...frag: CodeFragment[]): [
342
+ CodeFragment[],
343
+ (...items: CodeFragment[]) => number,
344
+ (...items: CodeFragment[]) => number
345
+ ];
346
+ type CodeFragmentDelimiters = [
347
+ left: CodeFragments,
348
+ right: CodeFragments,
349
+ delimiter: CodeFragments,
350
+ placeholder?: CodeFragments
351
+ ];
352
+ export declare function genMulti([left, right, seg, placeholder]: CodeFragmentDelimiters, ...frags: CodeFragments[]): CodeFragment[];
353
+ export declare function genCall(name: string | [name: string, placeholder?: CodeFragments], ...frags: CodeFragments[]): CodeFragment[];
354
+ export declare function codeFragmentToString(code: CodeFragment[], context: CodegenContext): [code: string, map: CodegenSourceMapGenerator | undefined];
355
+
356
+ export declare function wrapTemplate(node: ElementNode, dirs: string[]): TemplateNode;
357
+
358
+ export declare function compile(source: string | RootNode, options?: CompilerOptions): VaporCodegenResult;
359
+ export type CompilerOptions = HackOptions<CompilerOptions$1>;
360
+ export type TransformPreset = [
361
+ NodeTransform[],
362
+ Record<string, DirectiveTransform>
363
+ ];
364
+
365
+ export interface VaporCompilerError extends CompilerError {
366
+ code: VaporErrorCodes;
367
+ }
368
+ export declare function createVaporCompilerError(code: VaporErrorCodes, loc?: SourceLocation): VaporCompilerError;
369
+ export declare enum VaporErrorCodes {
370
+ X_V_PLACEHOLDER = 100,
371
+ __EXTEND_POINT__ = 101
372
+ }
373
+ export declare const VaporErrorMessages: Record<VaporErrorCodes, string>;
374
+
375
+ export declare const transformElement: NodeTransform;
376
+
377
+ export declare const transformChildren: NodeTransform;
378
+
379
+ export declare const transformTemplateRef: NodeTransform;
380
+
381
+ export declare const transformText: NodeTransform;
382
+
383
+ export declare const transformVBind: DirectiveTransform;
384
+
385
+ export declare const transformVHtml: DirectiveTransform;
386
+
387
+ export declare const transformVOn: DirectiveTransform;
388
+
389
+ export declare const transformVOnce: NodeTransform;
390
+
391
+ export declare const transformVShow: DirectiveTransform;
392
+
393
+ export declare const transformVText: DirectiveTransform;
394
+
395
+ export declare const transformVIf: NodeTransform;
396
+
397
+ export declare const transformVFor: NodeTransform;
398
+
399
+ export declare const transformVModel: DirectiveTransform;
400
+
401
+ export declare const transformComment: NodeTransform;
402
+
403
+ export declare const transformSlotOutlet: NodeTransform;
404
+
405
+ export declare const transformVSlot: NodeTransform;
406
+