@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.
- package/dist/herb-core.browser.js +21991 -130
- package/dist/herb-core.browser.js.map +1 -1
- package/dist/herb-core.cjs +22065 -131
- package/dist/herb-core.cjs.map +1 -1
- package/dist/herb-core.esm.js +21991 -130
- package/dist/herb-core.esm.js.map +1 -1
- package/dist/herb-core.umd.js +22065 -131
- package/dist/herb-core.umd.js.map +1 -1
- package/dist/types/ast-utils.d.ts +185 -3
- package/dist/types/backend.d.ts +6 -6
- package/dist/types/errors.d.ts +250 -25
- package/dist/types/extract-ruby-options.d.ts +6 -0
- package/dist/types/herb-backend.d.ts +15 -7
- package/dist/types/index.d.ts +2 -0
- package/dist/types/node-type-guards.d.ts +95 -32
- package/dist/types/nodes.d.ts +354 -49
- package/dist/types/parse-result.d.ts +7 -1
- package/dist/types/parser-options.d.ts +30 -2
- package/dist/types/prism/index.d.ts +28 -0
- package/dist/types/prism/inspect.d.ts +3 -0
- package/dist/types/util.d.ts +0 -1
- package/dist/types/visitor.d.ts +15 -1
- package/package.json +4 -1
- package/src/ast-utils.ts +564 -7
- package/src/backend.ts +7 -7
- package/src/errors.ts +773 -76
- package/src/extract-ruby-options.ts +11 -0
- package/src/herb-backend.ts +30 -15
- package/src/index.ts +2 -0
- package/src/node-type-guards.ts +240 -33
- package/src/nodes.ts +1081 -192
- package/src/parse-result.ts +11 -0
- package/src/parser-options.ts +56 -2
- package/src/prism/index.ts +44 -0
- package/src/prism/inspect.ts +118 -0
- package/src/util.ts +0 -12
- package/src/visitor.ts +51 -1
|
@@ -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
|
*/
|