@platformos/liquid-html-parser 0.0.2

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,477 @@
1
+ /**
2
+ * This is the first stage of the parser.
3
+ *
4
+ * Input:
5
+ * Source code: string
6
+ *
7
+ * Output:
8
+ * Concrete Syntax Tree (CST): LiquidHtmlCST
9
+ *
10
+ * We use OhmJS's toAST method to turn the OhmJS nodes into an "almost-AST." We
11
+ * call that a Concrete Syntax Tree because it considers Open and Close nodes as
12
+ * separate nodes.
13
+ *
14
+ * It is mostly "flat."
15
+ *
16
+ * e.g.
17
+ * {% if cond %}hi <em>there!</em>{% endif %}
18
+ *
19
+ * becomes
20
+ * - LiquidTagOpen/if
21
+ * condition: LiquidVariableExpression/cond
22
+ * - TextNode/"hi "
23
+ * - HtmlTagOpen/em
24
+ * - TextNode/"there!"
25
+ * - HtmlTagClose/em
26
+ * - LiquidTagClose/if
27
+ *
28
+ * In the Concrete Syntax Tree, all nodes are siblings instead of having a
29
+ * parent/children relationship.
30
+ *
31
+ */
32
+ import { Parser } from 'prettier';
33
+ import { Comparators, NamedTags } from './types';
34
+ export declare enum ConcreteNodeTypes {
35
+ HtmlDoctype = "HtmlDoctype",
36
+ HtmlComment = "HtmlComment",
37
+ HtmlRawTag = "HtmlRawTag",
38
+ HtmlVoidElement = "HtmlVoidElement",
39
+ HtmlSelfClosingElement = "HtmlSelfClosingElement",
40
+ HtmlTagOpen = "HtmlTagOpen",
41
+ HtmlTagClose = "HtmlTagClose",
42
+ AttrSingleQuoted = "AttrSingleQuoted",
43
+ AttrDoubleQuoted = "AttrDoubleQuoted",
44
+ AttrUnquoted = "AttrUnquoted",
45
+ AttrEmpty = "AttrEmpty",
46
+ LiquidVariableOutput = "LiquidVariableOutput",
47
+ LiquidRawTag = "LiquidRawTag",
48
+ LiquidTag = "LiquidTag",
49
+ LiquidTagOpen = "LiquidTagOpen",
50
+ LiquidTagClose = "LiquidTagClose",
51
+ TextNode = "TextNode",
52
+ YAMLFrontmatter = "YAMLFrontmatter",
53
+ LiquidVariable = "LiquidVariable",
54
+ LiquidFilter = "LiquidFilter",
55
+ NamedArgument = "NamedArgument",
56
+ LiquidLiteral = "LiquidLiteral",
57
+ VariableLookup = "VariableLookup",
58
+ BooleanExpression = "BooleanExpression",
59
+ String = "String",
60
+ Number = "Number",
61
+ Range = "Range",
62
+ Comparison = "Comparison",
63
+ Condition = "Condition",
64
+ AssignMarkup = "AssignMarkup",
65
+ HashAssignMarkup = "HashAssignMarkup",
66
+ ContentForMarkup = "ContentForMarkup",
67
+ CycleMarkup = "CycleMarkup",
68
+ ForMarkup = "ForMarkup",
69
+ RenderMarkup = "RenderMarkup",
70
+ FunctionMarkup = "FunctionMarkup",
71
+ GraphQLMarkup = "GraphQLMarkup",
72
+ GraphQLInlineMarkup = "GraphQLInlineMarkup",
73
+ PaginateMarkup = "PaginateMarkup",
74
+ RenderVariableExpression = "RenderVariableExpression",
75
+ RenderAliasExpression = "RenderAliasExpression",
76
+ ContentForNamedArgument = "ContentForNamedArgument",
77
+ LiquidDocParamNode = "LiquidDocParamNode",
78
+ LiquidDocParamNameNode = "LiquidDocParamNameNode",
79
+ LiquidDocDescriptionNode = "LiquidDocDescriptionNode",
80
+ LiquidDocExampleNode = "LiquidDocExampleNode",
81
+ LiquidDocPromptNode = "LiquidDocPromptNode",
82
+ BackgroundMarkup = "BackgroundMarkup",
83
+ BackgroundInlineMarkup = "BackgroundInlineMarkup",
84
+ CacheMarkup = "CacheMarkup",
85
+ LogMarkup = "LogMarkup",
86
+ SessionMarkup = "SessionMarkup",
87
+ ExportMarkup = "ExportMarkup",
88
+ RedirectToMarkup = "RedirectToMarkup",
89
+ IncludeFormMarkup = "IncludeFormMarkup",
90
+ SpamProtectionMarkup = "SpamProtectionMarkup"
91
+ }
92
+ export declare const LiquidLiteralValues: {
93
+ nil: null;
94
+ null: null;
95
+ true: true;
96
+ false: false;
97
+ blank: "";
98
+ empty: "";
99
+ };
100
+ export interface Parsers {
101
+ [astFormat: string]: Parser;
102
+ }
103
+ export interface ConcreteBasicNode<T> {
104
+ type: T;
105
+ source: string;
106
+ locStart: number;
107
+ locEnd: number;
108
+ }
109
+ export interface ConcreteLiquidDocParamNode extends ConcreteBasicNode<ConcreteNodeTypes.LiquidDocParamNode> {
110
+ name: 'param';
111
+ paramName: ConcreteLiquidDocParamNameNode;
112
+ paramDescription: ConcreteTextNode | null;
113
+ paramType: ConcreteTextNode | null;
114
+ }
115
+ export interface ConcreteLiquidDocParamNameNode extends ConcreteBasicNode<ConcreteNodeTypes.LiquidDocParamNameNode> {
116
+ name: 'paramName';
117
+ content: ConcreteTextNode;
118
+ required: boolean;
119
+ }
120
+ export interface ConcreteLiquidDocDescriptionNode extends ConcreteBasicNode<ConcreteNodeTypes.LiquidDocDescriptionNode> {
121
+ name: 'description';
122
+ content: ConcreteTextNode;
123
+ isImplicit: boolean;
124
+ isInline: boolean;
125
+ }
126
+ export interface ConcreteLiquidDocExampleNode extends ConcreteBasicNode<ConcreteNodeTypes.LiquidDocExampleNode> {
127
+ name: 'example';
128
+ content: ConcreteTextNode;
129
+ isInline: boolean;
130
+ }
131
+ export interface ConcreteLiquidDocPromptNode extends ConcreteBasicNode<ConcreteNodeTypes.LiquidDocPromptNode> {
132
+ name: 'prompt';
133
+ content: ConcreteTextNode;
134
+ }
135
+ export interface ConcreteHtmlNodeBase<T> extends ConcreteBasicNode<T> {
136
+ attrList?: ConcreteAttributeNode[];
137
+ }
138
+ export interface ConcreteHtmlDoctype extends ConcreteBasicNode<ConcreteNodeTypes.HtmlDoctype> {
139
+ legacyDoctypeString: string | null;
140
+ }
141
+ export interface ConcreteHtmlComment extends ConcreteBasicNode<ConcreteNodeTypes.HtmlComment> {
142
+ body: string;
143
+ }
144
+ export interface ConcreteHtmlRawTag extends ConcreteHtmlNodeBase<ConcreteNodeTypes.HtmlRawTag> {
145
+ name: string;
146
+ body: string;
147
+ children: (ConcreteTextNode | ConcreteLiquidNode)[];
148
+ blockStartLocStart: number;
149
+ blockStartLocEnd: number;
150
+ blockEndLocStart: number;
151
+ blockEndLocEnd: number;
152
+ }
153
+ export interface ConcreteHtmlVoidElement extends ConcreteHtmlNodeBase<ConcreteNodeTypes.HtmlVoidElement> {
154
+ name: string;
155
+ }
156
+ export interface ConcreteHtmlSelfClosingElement extends ConcreteHtmlNodeBase<ConcreteNodeTypes.HtmlSelfClosingElement> {
157
+ name: (ConcreteTextNode | ConcreteLiquidVariableOutput)[];
158
+ }
159
+ export interface ConcreteHtmlTagOpen extends ConcreteHtmlNodeBase<ConcreteNodeTypes.HtmlTagOpen> {
160
+ name: (ConcreteTextNode | ConcreteLiquidVariableOutput)[];
161
+ }
162
+ export interface ConcreteHtmlTagClose extends ConcreteHtmlNodeBase<ConcreteNodeTypes.HtmlTagClose> {
163
+ name: (ConcreteTextNode | ConcreteLiquidVariableOutput)[];
164
+ }
165
+ export interface ConcreteAttributeNodeBase<T> extends ConcreteBasicNode<T> {
166
+ name: (ConcreteLiquidVariableOutput | ConcreteTextNode)[];
167
+ value: (ConcreteLiquidNode | ConcreteTextNode)[];
168
+ }
169
+ export type ConcreteAttributeNode = ConcreteLiquidNode | ConcreteAttrSingleQuoted | ConcreteAttrDoubleQuoted | ConcreteAttrUnquoted | ConcreteAttrEmpty;
170
+ export interface ConcreteAttrSingleQuoted extends ConcreteAttributeNodeBase<ConcreteNodeTypes.AttrSingleQuoted> {
171
+ }
172
+ export interface ConcreteAttrDoubleQuoted extends ConcreteAttributeNodeBase<ConcreteNodeTypes.AttrDoubleQuoted> {
173
+ }
174
+ export interface ConcreteAttrUnquoted extends ConcreteAttributeNodeBase<ConcreteNodeTypes.AttrUnquoted> {
175
+ }
176
+ export interface ConcreteAttrEmpty extends ConcreteBasicNode<ConcreteNodeTypes.AttrEmpty> {
177
+ name: (ConcreteLiquidVariableOutput | ConcreteTextNode)[];
178
+ }
179
+ export type ConcreteLiquidNode = ConcreteLiquidRawTag | ConcreteLiquidTagOpen | ConcreteLiquidTagClose | ConcreteLiquidTag | ConcreteLiquidVariableOutput;
180
+ interface ConcreteBasicLiquidNode<T> extends ConcreteBasicNode<T> {
181
+ whitespaceStart: null | '-';
182
+ whitespaceEnd: null | '-';
183
+ }
184
+ export interface ConcreteLiquidRawTag extends ConcreteBasicLiquidNode<ConcreteNodeTypes.LiquidRawTag> {
185
+ name: string;
186
+ body: string;
187
+ children: (ConcreteTextNode | ConcreteLiquidNode)[];
188
+ markup: string;
189
+ delimiterWhitespaceStart: null | '-';
190
+ delimiterWhitespaceEnd: null | '-';
191
+ blockStartLocStart: number;
192
+ blockStartLocEnd: number;
193
+ blockEndLocStart: number;
194
+ blockEndLocEnd: number;
195
+ }
196
+ export type ConcreteLiquidTagOpen = ConcreteLiquidTagOpenBaseCase | ConcreteLiquidTagOpenNamed;
197
+ export type ConcreteLiquidTagOpenNamed = ConcreteLiquidTagOpenCase | ConcreteLiquidTagOpenCapture | ConcreteLiquidTagOpenGraphQL | ConcreteLiquidTagOpenIf | ConcreteLiquidTagOpenUnless | ConcreteLiquidTagOpenForm | ConcreteLiquidTagOpenFor | ConcreteLiquidTagOpenPaginate | ConcreteLiquidTagOpenTablerow | ConcreteLiquidTagOpenBackground | ConcreteLiquidTagOpenCache | ConcreteLiquidTagOpenParseJson | ConcreteLiquidTagOpenTransaction | ConcreteLiquidTagOpenTry;
198
+ export interface ConcreteLiquidTagOpenNode<Name, Markup> extends ConcreteBasicLiquidNode<ConcreteNodeTypes.LiquidTagOpen> {
199
+ name: Name;
200
+ markup: Markup;
201
+ }
202
+ export interface ConcreteLiquidTagOpenBaseCase extends ConcreteLiquidTagOpenNode<string, string> {
203
+ }
204
+ export interface ConcreteLiquidTagOpenCapture extends ConcreteLiquidTagOpenNode<NamedTags.capture, ConcreteLiquidVariableLookup> {
205
+ }
206
+ export interface ConcreteLiquidTagOpenCase extends ConcreteLiquidTagOpenNode<NamedTags.case, ConcreteLiquidExpression> {
207
+ }
208
+ export interface ConcreteLiquidTagOpenGraphQL extends ConcreteLiquidTagOpenNode<NamedTags.graphql, ConcreteLiquidTagGraphQLInlineMarkup> {
209
+ }
210
+ export interface ConcreteLiquidTagWhen extends ConcreteLiquidTagNode<NamedTags.when, ConcreteLiquidExpression[]> {
211
+ }
212
+ export interface ConcreteLiquidTagOpenIf extends ConcreteLiquidTagOpenNode<NamedTags.if, ConcreteLiquidCondition[]> {
213
+ }
214
+ export interface ConcreteLiquidTagOpenUnless extends ConcreteLiquidTagOpenNode<NamedTags.unless, ConcreteLiquidCondition[]> {
215
+ }
216
+ export interface ConcreteLiquidTagElsif extends ConcreteLiquidTagNode<NamedTags.elsif, ConcreteLiquidCondition[]> {
217
+ }
218
+ export interface ConcreteLiquidCondition extends ConcreteBasicNode<ConcreteNodeTypes.Condition> {
219
+ relation: 'and' | 'or' | null;
220
+ expression: ConcreteLiquidComparison | ConcreteLiquidExpression;
221
+ }
222
+ export interface ConcreteLiquidComparison extends ConcreteBasicNode<ConcreteNodeTypes.Comparison> {
223
+ comparator: Comparators;
224
+ left: ConcreteLiquidExpression;
225
+ right: ConcreteLiquidExpression;
226
+ }
227
+ export interface ConcreteLiquidTagOpenForm extends ConcreteLiquidTagOpenNode<NamedTags.form, ConcreteLiquidArgument[]> {
228
+ }
229
+ export interface ConcreteLiquidTagOpenFor extends ConcreteLiquidTagOpenNode<NamedTags.for, ConcreteLiquidTagForMarkup> {
230
+ }
231
+ export interface ConcreteLiquidTagForMarkup extends ConcreteBasicNode<ConcreteNodeTypes.ForMarkup> {
232
+ variableName: string;
233
+ collection: ConcreteLiquidExpression;
234
+ reversed: 'reversed' | null;
235
+ args: ConcreteLiquidNamedArgument[];
236
+ }
237
+ export interface ConcreteLiquidTagOpenTablerow extends ConcreteLiquidTagOpenNode<NamedTags.tablerow, ConcreteLiquidTagForMarkup> {
238
+ }
239
+ export interface ConcreteLiquidTagOpenPaginate extends ConcreteLiquidTagOpenNode<NamedTags.paginate, ConcretePaginateMarkup> {
240
+ }
241
+ export interface ConcretePaginateMarkup extends ConcreteBasicNode<ConcreteNodeTypes.PaginateMarkup> {
242
+ collection: ConcreteLiquidExpression;
243
+ pageSize: ConcreteLiquidExpression;
244
+ args: ConcreteLiquidNamedArgument[] | null;
245
+ }
246
+ export interface ConcreteLiquidTagClose extends ConcreteBasicLiquidNode<ConcreteNodeTypes.LiquidTagClose> {
247
+ name: string;
248
+ }
249
+ export type ConcreteLiquidTag = ConcreteLiquidTagNamed | ConcreteLiquidTagBaseCase;
250
+ export type ConcreteLiquidTagNamed = ConcreteLiquidTagAssign | ConcreteLiquidTagHashAssign | ConcreteLiquidTagCycle | ConcreteLiquidTagContentFor | ConcreteLiquidTagEcho | ConcreteLiquidTagIncrement | ConcreteLiquidTagDecrement | ConcreteLiquidTagElsif | ConcreteLiquidTagInclude | ConcreteLiquidTagLayout | ConcreteLiquidTagLiquid | ConcreteLiquidTagRender | ConcreteLiquidTagFunction | ConcreteLiquidTagGraphQL | ConcreteLiquidTagSection | ConcreteLiquidTagSections | ConcreteLiquidTagWhen | ConcreteLiquidTagBackground | ConcreteLiquidTagCatch | ConcreteLiquidTagContext | ConcreteLiquidTagExport | ConcreteLiquidTagIncludeForm | ConcreteLiquidTagLog | ConcreteLiquidTagPrint | ConcreteLiquidTagRedirectTo | ConcreteLiquidTagResponseHeaders | ConcreteLiquidTagResponseStatus | ConcreteLiquidTagReturn | ConcreteLiquidTagRollback | ConcreteLiquidTagSession | ConcreteLiquidTagSignIn | ConcreteLiquidTagSpamProtection | ConcreteLiquidTagThemeRenderRc | ConcreteLiquidTagYield;
251
+ export interface ConcreteLiquidTagNode<Name, Markup> extends ConcreteBasicLiquidNode<ConcreteNodeTypes.LiquidTag> {
252
+ markup: Markup;
253
+ name: Name;
254
+ }
255
+ export interface ConcreteLiquidTagBaseCase extends ConcreteLiquidTagNode<string, string> {
256
+ }
257
+ export interface ConcreteLiquidTagEcho extends ConcreteLiquidTagNode<NamedTags.echo, ConcreteLiquidVariable> {
258
+ }
259
+ export interface ConcreteLiquidTagIncrement extends ConcreteLiquidTagNode<NamedTags.increment, ConcreteLiquidVariableLookup> {
260
+ }
261
+ export interface ConcreteLiquidTagDecrement extends ConcreteLiquidTagNode<NamedTags.decrement, ConcreteLiquidVariableLookup> {
262
+ }
263
+ export interface ConcreteLiquidTagSection extends ConcreteLiquidTagNode<NamedTags.section, ConcreteStringLiteral> {
264
+ }
265
+ export interface ConcreteLiquidTagSections extends ConcreteLiquidTagNode<NamedTags.sections, ConcreteStringLiteral> {
266
+ }
267
+ export interface ConcreteLiquidTagLayout extends ConcreteLiquidTagNode<NamedTags.layout, ConcreteLiquidExpression> {
268
+ }
269
+ export interface ConcreteLiquidTagLiquid extends ConcreteLiquidTagNode<NamedTags.liquid, ConcreteLiquidLiquidTagNode[]> {
270
+ }
271
+ export type ConcreteLiquidLiquidTagNode = ConcreteLiquidTagOpen | ConcreteLiquidTagClose | ConcreteLiquidTag | ConcreteLiquidRawTag;
272
+ export interface ConcreteLiquidTagAssign extends ConcreteLiquidTagNode<NamedTags.assign, ConcreteLiquidTagAssignMarkup> {
273
+ }
274
+ export interface ConcreteLiquidTagAssignMarkup extends ConcreteBasicNode<ConcreteNodeTypes.AssignMarkup> {
275
+ name: string;
276
+ value: ConcreteLiquidVariable;
277
+ }
278
+ export interface ConcreteLiquidTagHashAssign extends ConcreteLiquidTagNode<NamedTags.hash_assign, ConcreteLiquidTagHashAssignMarkup> {
279
+ }
280
+ export interface ConcreteLiquidTagHashAssignMarkup extends ConcreteBasicNode<ConcreteNodeTypes.HashAssignMarkup> {
281
+ target: ConcreteLiquidVariableLookup;
282
+ value: ConcreteLiquidVariable;
283
+ }
284
+ export interface ConcreteLiquidTagCycle extends ConcreteLiquidTagNode<NamedTags.cycle, ConcreteLiquidTagCycleMarkup> {
285
+ }
286
+ export interface ConcreteLiquidTagCycleMarkup extends ConcreteBasicNode<ConcreteNodeTypes.CycleMarkup> {
287
+ groupName: ConcreteLiquidExpression | null;
288
+ args: ConcreteLiquidExpression[];
289
+ }
290
+ export interface ConcreteLiquidTagContentFor extends ConcreteLiquidTagNode<NamedTags.content_for, ConcreteLiquidTagContentForMarkup> {
291
+ }
292
+ export interface ConcreteLiquidTagRender extends ConcreteLiquidTagNode<NamedTags.render, ConcreteLiquidTagRenderMarkup> {
293
+ }
294
+ export interface ConcreteLiquidTagInclude extends ConcreteLiquidTagNode<NamedTags.include, ConcreteLiquidTagRenderMarkup> {
295
+ }
296
+ export interface ConcreteLiquidTagFunction extends ConcreteLiquidTagNode<NamedTags.function, ConcreteLiquidTagFunctionMarkup> {
297
+ }
298
+ export interface ConcreteLiquidTagGraphQL extends ConcreteLiquidTagNode<NamedTags.graphql, ConcreteLiquidTagGraphQLMarkup> {
299
+ }
300
+ export interface ConcreteLiquidTagBackground extends ConcreteLiquidTagNode<NamedTags.background, ConcreteLiquidTagBackgroundMarkup> {
301
+ }
302
+ export interface ConcreteLiquidTagCatch extends ConcreteLiquidTagNode<NamedTags.catch, ConcreteLiquidVariableLookup> {
303
+ }
304
+ export interface ConcreteLiquidTagContext extends ConcreteLiquidTagNode<NamedTags.context, ConcreteLiquidNamedArgument[]> {
305
+ }
306
+ export interface ConcreteLiquidTagExport extends ConcreteLiquidTagNode<NamedTags.export, ConcreteLiquidTagExportMarkup> {
307
+ }
308
+ export interface ConcreteLiquidTagIncludeForm extends ConcreteLiquidTagNode<NamedTags.include_form, ConcreteLiquidTagIncludeFormMarkup> {
309
+ }
310
+ export interface ConcreteLiquidTagLog extends ConcreteLiquidTagNode<NamedTags.log, ConcreteLiquidTagLogMarkup> {
311
+ }
312
+ export interface ConcreteLiquidTagPrint extends ConcreteLiquidTagNode<NamedTags.print, ConcreteLiquidVariable> {
313
+ }
314
+ export interface ConcreteLiquidTagRedirectTo extends ConcreteLiquidTagNode<NamedTags.redirect_to, ConcreteLiquidTagRedirectToMarkup> {
315
+ }
316
+ export interface ConcreteLiquidTagResponseHeaders extends ConcreteLiquidTagNode<NamedTags.response_headers, ConcreteLiquidExpression> {
317
+ }
318
+ export interface ConcreteLiquidTagResponseStatus extends ConcreteLiquidTagNode<NamedTags.response_status, ConcreteNumberLiteral> {
319
+ }
320
+ export interface ConcreteLiquidTagReturn extends ConcreteLiquidTagNode<NamedTags.return, ConcreteLiquidVariable> {
321
+ }
322
+ export interface ConcreteLiquidTagRollback extends ConcreteLiquidTagNode<NamedTags.rollback, string> {
323
+ }
324
+ export interface ConcreteLiquidTagSession extends ConcreteLiquidTagNode<NamedTags.session, ConcreteLiquidTagSessionMarkup> {
325
+ }
326
+ export interface ConcreteLiquidTagSignIn extends ConcreteLiquidTagNode<NamedTags.sign_in, ConcreteLiquidNamedArgument[]> {
327
+ }
328
+ export interface ConcreteLiquidTagSpamProtection extends ConcreteLiquidTagNode<NamedTags.spam_protection, ConcreteLiquidTagSpamProtectionMarkup> {
329
+ }
330
+ export interface ConcreteLiquidTagThemeRenderRc extends ConcreteLiquidTagNode<NamedTags.theme_render_rc, ConcreteLiquidTagRenderMarkup> {
331
+ }
332
+ export interface ConcreteLiquidTagYield extends ConcreteLiquidTagNode<NamedTags.yield, ConcreteLiquidExpression> {
333
+ }
334
+ export interface ConcreteLiquidTagOpenBackground extends ConcreteLiquidTagOpenNode<NamedTags.background, ConcreteLiquidTagBackgroundInlineMarkup> {
335
+ }
336
+ export interface ConcreteLiquidTagOpenCache extends ConcreteLiquidTagOpenNode<NamedTags.cache, ConcreteLiquidTagCacheMarkup> {
337
+ }
338
+ export interface ConcreteLiquidTagOpenParseJson extends ConcreteLiquidTagOpenNode<NamedTags.parse_json, ConcreteLiquidVariableLookup> {
339
+ }
340
+ export interface ConcreteLiquidTagOpenTransaction extends ConcreteLiquidTagOpenNode<NamedTags.transaction, ConcreteLiquidNamedArgument[]> {
341
+ }
342
+ export interface ConcreteLiquidTagOpenTry extends ConcreteLiquidTagOpenNode<NamedTags.try, string> {
343
+ }
344
+ export interface ConcreteLiquidTagContentForMarkup extends ConcreteBasicNode<ConcreteNodeTypes.ContentForMarkup> {
345
+ contentForType: ConcreteStringLiteral;
346
+ args: ConcreteLiquidNamedArgument[];
347
+ }
348
+ export interface ConcreteLiquidTagRenderMarkup extends ConcreteBasicNode<ConcreteNodeTypes.RenderMarkup> {
349
+ snippet: ConcreteStringLiteral | ConcreteLiquidVariableLookup;
350
+ variable: ConcreteRenderVariableExpression | null;
351
+ alias: ConcreteRenderAliasExpression | null;
352
+ renderArguments: ConcreteLiquidNamedArgument[];
353
+ }
354
+ export interface ConcreteLiquidTagFunctionMarkup extends ConcreteBasicNode<ConcreteNodeTypes.FunctionMarkup> {
355
+ name: string;
356
+ partial: ConcreteStringLiteral | ConcreteLiquidVariableLookup;
357
+ functionArguments: ConcreteLiquidNamedArgument[];
358
+ }
359
+ export interface ConcreteLiquidTagGraphQLMarkup extends ConcreteBasicNode<ConcreteNodeTypes.GraphQLMarkup> {
360
+ name: string;
361
+ graphql: ConcreteStringLiteral | ConcreteLiquidVariableLookup;
362
+ functionArguments: ConcreteLiquidNamedArgument[];
363
+ }
364
+ export interface ConcreteLiquidTagGraphQLInlineMarkup extends ConcreteBasicNode<ConcreteNodeTypes.GraphQLInlineMarkup> {
365
+ name: string;
366
+ args: ConcreteLiquidNamedArgument[];
367
+ }
368
+ export interface ConcreteLiquidTagBackgroundMarkup extends ConcreteBasicNode<ConcreteNodeTypes.BackgroundMarkup> {
369
+ jobId: string;
370
+ partial: ConcreteStringLiteral | ConcreteLiquidVariableLookup;
371
+ args: ConcreteLiquidNamedArgument[];
372
+ }
373
+ export interface ConcreteLiquidTagBackgroundInlineMarkup extends ConcreteBasicNode<ConcreteNodeTypes.BackgroundInlineMarkup> {
374
+ jobId: ConcreteLiquidVariableLookup;
375
+ args: ConcreteLiquidNamedArgument[];
376
+ }
377
+ export interface ConcreteLiquidTagCacheMarkup extends ConcreteBasicNode<ConcreteNodeTypes.CacheMarkup> {
378
+ key: ConcreteLiquidExpression;
379
+ args: ConcreteLiquidNamedArgument[];
380
+ }
381
+ export interface ConcreteLiquidTagLogMarkup extends ConcreteBasicNode<ConcreteNodeTypes.LogMarkup> {
382
+ value: ConcreteLiquidExpression;
383
+ args: ConcreteLiquidNamedArgument[];
384
+ }
385
+ export interface ConcreteLiquidTagSessionMarkup extends ConcreteBasicNode<ConcreteNodeTypes.SessionMarkup> {
386
+ name: string;
387
+ value: ConcreteLiquidExpression;
388
+ }
389
+ export interface ConcreteLiquidTagExportMarkup extends ConcreteBasicNode<ConcreteNodeTypes.ExportMarkup> {
390
+ variables: ConcreteLiquidVariableLookup[];
391
+ namespace: ConcreteLiquidNamedArgument;
392
+ }
393
+ export interface ConcreteLiquidTagRedirectToMarkup extends ConcreteBasicNode<ConcreteNodeTypes.RedirectToMarkup> {
394
+ url: ConcreteLiquidExpression;
395
+ args: ConcreteLiquidNamedArgument[];
396
+ }
397
+ export interface ConcreteLiquidTagIncludeFormMarkup extends ConcreteBasicNode<ConcreteNodeTypes.IncludeFormMarkup> {
398
+ form: ConcreteStringLiteral | ConcreteLiquidVariableLookup;
399
+ args: ConcreteLiquidNamedArgument[];
400
+ }
401
+ export interface ConcreteLiquidTagSpamProtectionMarkup extends ConcreteBasicNode<ConcreteNodeTypes.SpamProtectionMarkup> {
402
+ version: ConcreteLiquidExpression;
403
+ args: ConcreteLiquidNamedArgument[];
404
+ }
405
+ export interface ConcreteRenderVariableExpression extends ConcreteBasicNode<ConcreteNodeTypes.RenderVariableExpression> {
406
+ kind: 'for' | 'with';
407
+ name: ConcreteLiquidExpression;
408
+ }
409
+ export interface ConcreteRenderAliasExpression extends ConcreteBasicNode<ConcreteNodeTypes.RenderAliasExpression> {
410
+ value: string;
411
+ }
412
+ export interface ConcreteLiquidVariableOutput extends ConcreteBasicLiquidNode<ConcreteNodeTypes.LiquidVariableOutput> {
413
+ markup: ConcreteLiquidVariable | string;
414
+ }
415
+ export interface ConcreteLiquidVariable extends ConcreteBasicNode<ConcreteNodeTypes.LiquidVariable> {
416
+ expression: ConcreteLiquidExpression;
417
+ filters: ConcreteLiquidFilter[];
418
+ rawSource: string;
419
+ }
420
+ export interface ConcreteLiquidFilter extends ConcreteBasicNode<ConcreteNodeTypes.LiquidFilter> {
421
+ name: string;
422
+ args: ConcreteLiquidArgument[];
423
+ }
424
+ export type ConcreteLiquidArgument = ConcreteLiquidExpression | ConcreteLiquidNamedArgument;
425
+ export interface ConcreteLiquidNamedArgument extends ConcreteBasicNode<ConcreteNodeTypes.NamedArgument> {
426
+ name: string;
427
+ value: ConcreteLiquidExpression;
428
+ }
429
+ export type ConcreteLiquidExpression = ConcreteStringLiteral | ConcreteNumberLiteral | ConcreteLiquidLiteral | ConcreteLiquidRange | ConcreteLiquidVariableLookup;
430
+ export type ConcreteComplexLiquidExpression = ConcreteLiquidBooleanExpression | ConcreteLiquidExpression;
431
+ export interface ConcreteLiquidBooleanExpression extends ConcreteBasicNode<ConcreteNodeTypes.BooleanExpression> {
432
+ conditions: ConcreteLiquidCondition[];
433
+ }
434
+ export interface ConcreteStringLiteral extends ConcreteBasicNode<ConcreteNodeTypes.String> {
435
+ value: string;
436
+ single: boolean;
437
+ }
438
+ export interface ConcreteNumberLiteral extends ConcreteBasicNode<ConcreteNodeTypes.Number> {
439
+ value: string;
440
+ }
441
+ export interface ConcreteLiquidLiteral extends ConcreteBasicNode<ConcreteNodeTypes.LiquidLiteral> {
442
+ keyword: keyof typeof LiquidLiteralValues;
443
+ value: (typeof LiquidLiteralValues)[keyof typeof LiquidLiteralValues];
444
+ }
445
+ export interface ConcreteLiquidRange extends ConcreteBasicNode<ConcreteNodeTypes.Range> {
446
+ start: ConcreteLiquidExpression;
447
+ end: ConcreteLiquidExpression;
448
+ }
449
+ export interface ConcreteLiquidVariableLookup extends ConcreteBasicNode<ConcreteNodeTypes.VariableLookup> {
450
+ name: string | null;
451
+ lookups: ConcreteLiquidExpression[];
452
+ }
453
+ export type ConcreteHtmlNode = ConcreteHtmlDoctype | ConcreteHtmlComment | ConcreteHtmlRawTag | ConcreteHtmlVoidElement | ConcreteHtmlSelfClosingElement | ConcreteHtmlTagOpen | ConcreteHtmlTagClose;
454
+ export interface ConcreteTextNode extends ConcreteBasicNode<ConcreteNodeTypes.TextNode> {
455
+ value: string;
456
+ }
457
+ export interface ConcreteYamlFrontmatterNode extends ConcreteBasicNode<ConcreteNodeTypes.YAMLFrontmatter> {
458
+ body: string;
459
+ }
460
+ export type LiquidHtmlConcreteNode = ConcreteHtmlNode | ConcreteYamlFrontmatterNode | LiquidConcreteNode;
461
+ export type LiquidConcreteNode = ConcreteLiquidNode | ConcreteTextNode | ConcreteYamlFrontmatterNode | LiquidDocConcreteNode;
462
+ export type LiquidHtmlCST = LiquidHtmlConcreteNode[];
463
+ export type LiquidCST = LiquidConcreteNode[];
464
+ export type LiquidDocConcreteNode = ConcreteLiquidDocParamNode | ConcreteLiquidDocExampleNode | ConcreteLiquidDocDescriptionNode | ConcreteLiquidDocPromptNode;
465
+ export interface CSTBuildOptions {
466
+ /**
467
+ * 'strict' will disable the Liquid parsing base cases. Which means that we will
468
+ * throw an error if we can't parse the node `markup` properly.
469
+ *
470
+ * 'tolerant' is the default case so that prettier can pretty print nodes
471
+ * that it doesn't understand.
472
+ */
473
+ mode: 'strict' | 'tolerant' | 'completion';
474
+ }
475
+ export declare function toLiquidHtmlCST(source: string, options?: CSTBuildOptions): LiquidHtmlCST;
476
+ export declare function toLiquidCST(source: string, options?: CSTBuildOptions): LiquidCST;
477
+ export {};