@herb-tools/core 0.8.10 → 0.9.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.
@@ -1,7 +1,7 @@
1
1
  import type { Node, NodeType, ERBNode } from "./nodes.js";
2
2
  import { Token } from "./token.js";
3
3
  import { ParseResult } from "./parse-result.js";
4
- import { DocumentNode, LiteralNode, HTMLOpenTagNode, HTMLCloseTagNode, HTMLElementNode, HTMLAttributeValueNode, HTMLAttributeNameNode, HTMLAttributeNode, HTMLTextNode, HTMLCommentNode, HTMLDoctypeNode, XMLDeclarationNode, CDATANode, WhitespaceNode, ERBContentNode, ERBEndNode, ERBElseNode, ERBIfNode, ERBBlockNode, ERBWhenNode, ERBCaseNode, ERBCaseMatchNode, ERBWhileNode, ERBUntilNode, ERBForNode, ERBRescueNode, ERBEnsureNode, ERBBeginNode, ERBUnlessNode, ERBYieldNode, ERBInNode } from "./nodes.js";
4
+ import { DocumentNode, LiteralNode, HTMLOpenTagNode, HTMLConditionalOpenTagNode, HTMLCloseTagNode, HTMLOmittedCloseTagNode, HTMLVirtualCloseTagNode, HTMLElementNode, HTMLConditionalElementNode, HTMLAttributeValueNode, HTMLAttributeNameNode, HTMLAttributeNode, RubyLiteralNode, RubyHTMLAttributesSplatNode, ERBOpenTagNode, HTMLTextNode, HTMLCommentNode, HTMLDoctypeNode, XMLDeclarationNode, CDATANode, WhitespaceNode, ERBContentNode, ERBEndNode, ERBElseNode, ERBIfNode, ERBBlockNode, ERBWhenNode, ERBCaseNode, ERBCaseMatchNode, ERBWhileNode, ERBUntilNode, ERBForNode, ERBRescueNode, ERBEnsureNode, ERBBeginNode, ERBUnlessNode, ERBYieldNode, ERBInNode } from "./nodes.js";
5
5
  /**
6
6
  * Type guard functions for AST nodes.
7
7
  * These functions provide type checking by combining both instanceof
@@ -11,127 +11,155 @@ import { DocumentNode, LiteralNode, HTMLOpenTagNode, HTMLCloseTagNode, HTMLEleme
11
11
  /**
12
12
  * Checks if a node is a DocumentNode
13
13
  */
14
- export declare function isDocumentNode(node: Node): node is DocumentNode;
14
+ export declare function isDocumentNode(node: Node | null | undefined): node is DocumentNode;
15
15
  /**
16
16
  * Checks if a node is a LiteralNode
17
17
  */
18
- export declare function isLiteralNode(node: Node): node is LiteralNode;
18
+ export declare function isLiteralNode(node: Node | null | undefined): node is LiteralNode;
19
19
  /**
20
20
  * Checks if a node is a HTMLOpenTagNode
21
21
  */
22
- export declare function isHTMLOpenTagNode(node: Node): node is HTMLOpenTagNode;
22
+ export declare function isHTMLOpenTagNode(node: Node | null | undefined): node is HTMLOpenTagNode;
23
+ /**
24
+ * Checks if a node is a HTMLConditionalOpenTagNode
25
+ */
26
+ export declare function isHTMLConditionalOpenTagNode(node: Node | null | undefined): node is HTMLConditionalOpenTagNode;
23
27
  /**
24
28
  * Checks if a node is a HTMLCloseTagNode
25
29
  */
26
- export declare function isHTMLCloseTagNode(node: Node): node is HTMLCloseTagNode;
30
+ export declare function isHTMLCloseTagNode(node: Node | null | undefined): node is HTMLCloseTagNode;
31
+ /**
32
+ * Checks if a node is a HTMLOmittedCloseTagNode
33
+ */
34
+ export declare function isHTMLOmittedCloseTagNode(node: Node | null | undefined): node is HTMLOmittedCloseTagNode;
35
+ /**
36
+ * Checks if a node is a HTMLVirtualCloseTagNode
37
+ */
38
+ export declare function isHTMLVirtualCloseTagNode(node: Node | null | undefined): node is HTMLVirtualCloseTagNode;
27
39
  /**
28
40
  * Checks if a node is a HTMLElementNode
29
41
  */
30
- export declare function isHTMLElementNode(node: Node): node is HTMLElementNode;
42
+ export declare function isHTMLElementNode(node: Node | null | undefined): node is HTMLElementNode;
43
+ /**
44
+ * Checks if a node is a HTMLConditionalElementNode
45
+ */
46
+ export declare function isHTMLConditionalElementNode(node: Node | null | undefined): node is HTMLConditionalElementNode;
31
47
  /**
32
48
  * Checks if a node is a HTMLAttributeValueNode
33
49
  */
34
- export declare function isHTMLAttributeValueNode(node: Node): node is HTMLAttributeValueNode;
50
+ export declare function isHTMLAttributeValueNode(node: Node | null | undefined): node is HTMLAttributeValueNode;
35
51
  /**
36
52
  * Checks if a node is a HTMLAttributeNameNode
37
53
  */
38
- export declare function isHTMLAttributeNameNode(node: Node): node is HTMLAttributeNameNode;
54
+ export declare function isHTMLAttributeNameNode(node: Node | null | undefined): node is HTMLAttributeNameNode;
39
55
  /**
40
56
  * Checks if a node is a HTMLAttributeNode
41
57
  */
42
- export declare function isHTMLAttributeNode(node: Node): node is HTMLAttributeNode;
58
+ export declare function isHTMLAttributeNode(node: Node | null | undefined): node is HTMLAttributeNode;
59
+ /**
60
+ * Checks if a node is a RubyLiteralNode
61
+ */
62
+ export declare function isRubyLiteralNode(node: Node | null | undefined): node is RubyLiteralNode;
63
+ /**
64
+ * Checks if a node is a RubyHTMLAttributesSplatNode
65
+ */
66
+ export declare function isRubyHTMLAttributesSplatNode(node: Node | null | undefined): node is RubyHTMLAttributesSplatNode;
67
+ /**
68
+ * Checks if a node is a ERBOpenTagNode
69
+ */
70
+ export declare function isERBOpenTagNode(node: Node | null | undefined): node is ERBOpenTagNode;
43
71
  /**
44
72
  * Checks if a node is a HTMLTextNode
45
73
  */
46
- export declare function isHTMLTextNode(node: Node): node is HTMLTextNode;
74
+ export declare function isHTMLTextNode(node: Node | null | undefined): node is HTMLTextNode;
47
75
  /**
48
76
  * Checks if a node is a HTMLCommentNode
49
77
  */
50
- export declare function isHTMLCommentNode(node: Node): node is HTMLCommentNode;
78
+ export declare function isHTMLCommentNode(node: Node | null | undefined): node is HTMLCommentNode;
51
79
  /**
52
80
  * Checks if a node is a HTMLDoctypeNode
53
81
  */
54
- export declare function isHTMLDoctypeNode(node: Node): node is HTMLDoctypeNode;
82
+ export declare function isHTMLDoctypeNode(node: Node | null | undefined): node is HTMLDoctypeNode;
55
83
  /**
56
84
  * Checks if a node is a XMLDeclarationNode
57
85
  */
58
- export declare function isXMLDeclarationNode(node: Node): node is XMLDeclarationNode;
86
+ export declare function isXMLDeclarationNode(node: Node | null | undefined): node is XMLDeclarationNode;
59
87
  /**
60
88
  * Checks if a node is a CDATANode
61
89
  */
62
- export declare function isCDATANode(node: Node): node is CDATANode;
90
+ export declare function isCDATANode(node: Node | null | undefined): node is CDATANode;
63
91
  /**
64
92
  * Checks if a node is a WhitespaceNode
65
93
  */
66
- export declare function isWhitespaceNode(node: Node): node is WhitespaceNode;
94
+ export declare function isWhitespaceNode(node: Node | null | undefined): node is WhitespaceNode;
67
95
  /**
68
96
  * Checks if a node is a ERBContentNode
69
97
  */
70
- export declare function isERBContentNode(node: Node): node is ERBContentNode;
98
+ export declare function isERBContentNode(node: Node | null | undefined): node is ERBContentNode;
71
99
  /**
72
100
  * Checks if a node is a ERBEndNode
73
101
  */
74
- export declare function isERBEndNode(node: Node): node is ERBEndNode;
102
+ export declare function isERBEndNode(node: Node | null | undefined): node is ERBEndNode;
75
103
  /**
76
104
  * Checks if a node is a ERBElseNode
77
105
  */
78
- export declare function isERBElseNode(node: Node): node is ERBElseNode;
106
+ export declare function isERBElseNode(node: Node | null | undefined): node is ERBElseNode;
79
107
  /**
80
108
  * Checks if a node is a ERBIfNode
81
109
  */
82
- export declare function isERBIfNode(node: Node): node is ERBIfNode;
110
+ export declare function isERBIfNode(node: Node | null | undefined): node is ERBIfNode;
83
111
  /**
84
112
  * Checks if a node is a ERBBlockNode
85
113
  */
86
- export declare function isERBBlockNode(node: Node): node is ERBBlockNode;
114
+ export declare function isERBBlockNode(node: Node | null | undefined): node is ERBBlockNode;
87
115
  /**
88
116
  * Checks if a node is a ERBWhenNode
89
117
  */
90
- export declare function isERBWhenNode(node: Node): node is ERBWhenNode;
118
+ export declare function isERBWhenNode(node: Node | null | undefined): node is ERBWhenNode;
91
119
  /**
92
120
  * Checks if a node is a ERBCaseNode
93
121
  */
94
- export declare function isERBCaseNode(node: Node): node is ERBCaseNode;
122
+ export declare function isERBCaseNode(node: Node | null | undefined): node is ERBCaseNode;
95
123
  /**
96
124
  * Checks if a node is a ERBCaseMatchNode
97
125
  */
98
- export declare function isERBCaseMatchNode(node: Node): node is ERBCaseMatchNode;
126
+ export declare function isERBCaseMatchNode(node: Node | null | undefined): node is ERBCaseMatchNode;
99
127
  /**
100
128
  * Checks if a node is a ERBWhileNode
101
129
  */
102
- export declare function isERBWhileNode(node: Node): node is ERBWhileNode;
130
+ export declare function isERBWhileNode(node: Node | null | undefined): node is ERBWhileNode;
103
131
  /**
104
132
  * Checks if a node is a ERBUntilNode
105
133
  */
106
- export declare function isERBUntilNode(node: Node): node is ERBUntilNode;
134
+ export declare function isERBUntilNode(node: Node | null | undefined): node is ERBUntilNode;
107
135
  /**
108
136
  * Checks if a node is a ERBForNode
109
137
  */
110
- export declare function isERBForNode(node: Node): node is ERBForNode;
138
+ export declare function isERBForNode(node: Node | null | undefined): node is ERBForNode;
111
139
  /**
112
140
  * Checks if a node is a ERBRescueNode
113
141
  */
114
- export declare function isERBRescueNode(node: Node): node is ERBRescueNode;
142
+ export declare function isERBRescueNode(node: Node | null | undefined): node is ERBRescueNode;
115
143
  /**
116
144
  * Checks if a node is a ERBEnsureNode
117
145
  */
118
- export declare function isERBEnsureNode(node: Node): node is ERBEnsureNode;
146
+ export declare function isERBEnsureNode(node: Node | null | undefined): node is ERBEnsureNode;
119
147
  /**
120
148
  * Checks if a node is a ERBBeginNode
121
149
  */
122
- export declare function isERBBeginNode(node: Node): node is ERBBeginNode;
150
+ export declare function isERBBeginNode(node: Node | null | undefined): node is ERBBeginNode;
123
151
  /**
124
152
  * Checks if a node is a ERBUnlessNode
125
153
  */
126
- export declare function isERBUnlessNode(node: Node): node is ERBUnlessNode;
154
+ export declare function isERBUnlessNode(node: Node | null | undefined): node is ERBUnlessNode;
127
155
  /**
128
156
  * Checks if a node is a ERBYieldNode
129
157
  */
130
- export declare function isERBYieldNode(node: Node): node is ERBYieldNode;
158
+ export declare function isERBYieldNode(node: Node | null | undefined): node is ERBYieldNode;
131
159
  /**
132
160
  * Checks if a node is a ERBInNode
133
161
  */
134
- export declare function isERBInNode(node: Node): node is ERBInNode;
162
+ export declare function isERBInNode(node: Node | null | undefined): node is ERBInNode;
135
163
  /**
136
164
  * Convenience type guards for common node categories
137
165
  */
@@ -169,11 +197,18 @@ type NodeTypeToClass = {
169
197
  "AST_DOCUMENT_NODE": DocumentNode;
170
198
  "AST_LITERAL_NODE": LiteralNode;
171
199
  "AST_HTML_OPEN_TAG_NODE": HTMLOpenTagNode;
200
+ "AST_HTML_CONDITIONAL_OPEN_TAG_NODE": HTMLConditionalOpenTagNode;
172
201
  "AST_HTML_CLOSE_TAG_NODE": HTMLCloseTagNode;
202
+ "AST_HTML_OMITTED_CLOSE_TAG_NODE": HTMLOmittedCloseTagNode;
203
+ "AST_HTML_VIRTUAL_CLOSE_TAG_NODE": HTMLVirtualCloseTagNode;
173
204
  "AST_HTML_ELEMENT_NODE": HTMLElementNode;
205
+ "AST_HTML_CONDITIONAL_ELEMENT_NODE": HTMLConditionalElementNode;
174
206
  "AST_HTML_ATTRIBUTE_VALUE_NODE": HTMLAttributeValueNode;
175
207
  "AST_HTML_ATTRIBUTE_NAME_NODE": HTMLAttributeNameNode;
176
208
  "AST_HTML_ATTRIBUTE_NODE": HTMLAttributeNode;
209
+ "AST_RUBY_LITERAL_NODE": RubyLiteralNode;
210
+ "AST_RUBY_HTML_ATTRIBUTES_SPLAT_NODE": RubyHTMLAttributesSplatNode;
211
+ "AST_ERB_OPEN_TAG_NODE": ERBOpenTagNode;
177
212
  "AST_HTML_TEXT_NODE": HTMLTextNode;
178
213
  "AST_HTML_COMMENT_NODE": HTMLCommentNode;
179
214
  "AST_HTML_DOCTYPE_NODE": HTMLDoctypeNode;
@@ -319,14 +354,30 @@ export declare function filterLiteralNodes(nodes: Node[]): LiteralNode[];
319
354
  * Filters an array of nodes to only include HTMLOpenTagNode nodes
320
355
  */
321
356
  export declare function filterHTMLOpenTagNodes(nodes: Node[]): HTMLOpenTagNode[];
357
+ /**
358
+ * Filters an array of nodes to only include HTMLConditionalOpenTagNode nodes
359
+ */
360
+ export declare function filterHTMLConditionalOpenTagNodes(nodes: Node[]): HTMLConditionalOpenTagNode[];
322
361
  /**
323
362
  * Filters an array of nodes to only include HTMLCloseTagNode nodes
324
363
  */
325
364
  export declare function filterHTMLCloseTagNodes(nodes: Node[]): HTMLCloseTagNode[];
365
+ /**
366
+ * Filters an array of nodes to only include HTMLOmittedCloseTagNode nodes
367
+ */
368
+ export declare function filterHTMLOmittedCloseTagNodes(nodes: Node[]): HTMLOmittedCloseTagNode[];
369
+ /**
370
+ * Filters an array of nodes to only include HTMLVirtualCloseTagNode nodes
371
+ */
372
+ export declare function filterHTMLVirtualCloseTagNodes(nodes: Node[]): HTMLVirtualCloseTagNode[];
326
373
  /**
327
374
  * Filters an array of nodes to only include HTMLElementNode nodes
328
375
  */
329
376
  export declare function filterHTMLElementNodes(nodes: Node[]): HTMLElementNode[];
377
+ /**
378
+ * Filters an array of nodes to only include HTMLConditionalElementNode nodes
379
+ */
380
+ export declare function filterHTMLConditionalElementNodes(nodes: Node[]): HTMLConditionalElementNode[];
330
381
  /**
331
382
  * Filters an array of nodes to only include HTMLAttributeValueNode nodes
332
383
  */
@@ -339,6 +390,18 @@ export declare function filterHTMLAttributeNameNodes(nodes: Node[]): HTMLAttribu
339
390
  * Filters an array of nodes to only include HTMLAttributeNode nodes
340
391
  */
341
392
  export declare function filterHTMLAttributeNodes(nodes: Node[]): HTMLAttributeNode[];
393
+ /**
394
+ * Filters an array of nodes to only include RubyLiteralNode nodes
395
+ */
396
+ export declare function filterRubyLiteralNodes(nodes: Node[]): RubyLiteralNode[];
397
+ /**
398
+ * Filters an array of nodes to only include RubyHTMLAttributesSplatNode nodes
399
+ */
400
+ export declare function filterRubyHTMLAttributesSplatNodes(nodes: Node[]): RubyHTMLAttributesSplatNode[];
401
+ /**
402
+ * Filters an array of nodes to only include ERBOpenTagNode nodes
403
+ */
404
+ export declare function filterERBOpenTagNodes(nodes: Node[]): ERBOpenTagNode[];
342
405
  /**
343
406
  * Filters an array of nodes to only include HTMLTextNode nodes
344
407
  */