svg-eslint-parser 0.0.6 → 0.1.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/README.md CHANGED
@@ -85,10 +85,10 @@ import {
85
85
  } from 'svg-eslint-parser'
86
86
 
87
87
  const { ast } = parseForESLint(svgSource)
88
- const document = ast.body[0]
88
+ const document = ast.document
89
89
 
90
90
  // Find all tag nodes
91
- const tags = findNodeByType(document, NodeTypes.Tag)
91
+ const tags = findNodeByType(document, NodeTypes.Element)
92
92
  console.log(`Found ${tags.length} tags`)
93
93
 
94
94
  // Traverse with visitor pattern
@@ -145,22 +145,18 @@ Returns a Document node directly.
145
145
 
146
146
  ### Node Types
147
147
 
148
- The parser defines 34 node types:
148
+ The parser currently exposes 16 AST node types:
149
149
 
150
- **Document Structure**: `Program`, `Document`
150
+ **Program & Document**: `Program`, `Document`
151
151
 
152
- **Elements**: `Tag`, `OpenTagStart`, `OpenTagEnd`, `CloseTag`
152
+ **Element Tree**: `Element`, `Attribute`, `AttributeKey`, `AttributeValue`, `Text`, `Comment`
153
153
 
154
- **Attributes**: `Attribute`, `AttributeKey`, `AttributeValue`, `AttributeValueWrapperStart`, `AttributeValueWrapperEnd`
155
-
156
- **Text & Comments**: `Text`, `Comment`, `CommentOpen`, `CommentContent`, `CommentClose`
157
-
158
- **XML Declaration**: `XMLDeclaration`, `XMLDeclarationOpen`, `XMLDeclarationClose`, `XMLDeclarationAttribute`, `XMLDeclarationAttributeKey`, `XMLDeclarationAttributeValue`, `XMLDeclarationAttributeValueWrapperStart`, `XMLDeclarationAttributeValueWrapperEnd`
159
-
160
- **DOCTYPE**: `Doctype`, `DoctypeOpen`, `DoctypeClose`, `DoctypeAttribute`, `DoctypeAttributeValue`, `DoctypeAttributeWrapperStart`, `DoctypeAttributeWrapperEnd`
154
+ **Declarations**: `Doctype`, `DoctypeAttribute`, `DoctypeAttributeValue`, `XMLDeclaration`, `XMLDeclarationAttribute`, `XMLDeclarationAttributeKey`, `XMLDeclarationAttributeValue`
161
155
 
162
156
  **Error Handling**: `Error`
163
157
 
158
+ `NodeTypes.Tag` is still available as a deprecated alias of `NodeTypes.Element` for backward compatibility.
159
+
164
160
  ## Documentation
165
161
 
166
162
  Full documentation is available at [svg-eslint-parser.ntnyq.com](https://svg-eslint-parser.ntnyq.com):
@@ -190,10 +186,10 @@ const svgCode = `
190
186
  `
191
187
 
192
188
  const { ast } = parseForESLint(svgCode)
193
- const document = ast.body[0]
189
+ const document = ast.document
194
190
 
195
191
  // Find all tags and filter for circles
196
- const allTags = findNodeByType(document, NodeTypes.Tag)
192
+ const allTags = findNodeByType(document, NodeTypes.Element)
197
193
  const circles = allTags.filter(tag => tag.name === 'circle')
198
194
 
199
195
  console.log(`Found ${circles.length} circles`)
@@ -0,0 +1,13 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __defProp = Object.defineProperty;
3
+ var __exportAll = (all, no_symbols) => {
4
+ let target = {};
5
+ for (var name in all) __defProp(target, name, {
6
+ get: all[name],
7
+ enumerable: true
8
+ });
9
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
10
+ return target;
11
+ };
12
+ //#endregion
13
+ export { __exportAll as t };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import * as eslint0 from "eslint";
1
+ import * as _$eslint from "eslint";
2
2
  import { SourceCode } from "eslint";
3
3
 
4
4
  //#region src/meta.d.ts
@@ -66,9 +66,11 @@ declare enum NodeTypes {
66
66
  DoctypeAttribute = "DoctypeAttribute",
67
67
  DoctypeAttributeValue = "DoctypeAttributeValue",
68
68
  Document = "Document",
69
+ Element = "Element",
69
70
  Error = "Error",
70
71
  Program = "Program",
71
- Tag = "Tag",
72
+ /** @deprecated Use Element instead. */
73
+ Tag = "Element",
72
74
  Text = "Text",
73
75
  XMLDeclaration = "XMLDeclaration",
74
76
  XMLDeclarationAttribute = "XMLDeclarationAttribute",
@@ -258,6 +260,10 @@ interface SimpleNode<T extends NodeTypes> extends BaseNode {
258
260
  value: string;
259
261
  }
260
262
  type TextNode = SimpleNode<NodeTypes.Text>;
263
+ interface ESLintComment extends Locations {
264
+ type: 'Block' | 'Line';
265
+ value: string;
266
+ }
261
267
  /**
262
268
  * attribute nodes
263
269
  * @pg
@@ -267,7 +273,7 @@ type AttributeValueNode = SimpleNode<NodeTypes.AttributeValue>;
267
273
  interface AttributeNode extends BaseNode {
268
274
  key: AttributeKeyNode;
269
275
  type: NodeTypes.Attribute;
270
- value: AttributeValueNode;
276
+ value?: AttributeValueNode;
271
277
  quoteChar?: '"' | "'" | undefined;
272
278
  }
273
279
  /**
@@ -293,16 +299,18 @@ interface DoctypeNode extends BaseNode {
293
299
  type: NodeTypes.Doctype;
294
300
  }
295
301
  /**
296
- * tag nodes
302
+ * element nodes
297
303
  * @pg
298
304
  */
299
- interface TagNode extends BaseNode {
305
+ interface ElementNode extends BaseNode {
300
306
  attributes: AttributeNode[];
301
- children: NestableNode[];
307
+ children: ElementChildNode[];
302
308
  name: string;
303
309
  selfClosing: boolean;
304
- type: NodeTypes.Tag;
310
+ type: NodeTypes.Element;
305
311
  }
312
+ /** @deprecated Use ElementNode instead. */
313
+ type TagNode = ElementNode;
306
314
  /**
307
315
  * XML declaration nodes
308
316
  */
@@ -311,7 +319,7 @@ type XMLDeclarationAttributeValueNode = SimpleNode<NodeTypes.XMLDeclarationAttri
311
319
  interface XMLDeclarationAttributeNode extends BaseNode {
312
320
  key: XMLDeclarationAttributeKeyNode;
313
321
  type: NodeTypes.XMLDeclarationAttribute;
314
- value: XMLDeclarationAttributeValueNode;
322
+ value?: XMLDeclarationAttributeValueNode;
315
323
  quoteChar?: '"' | "'" | undefined;
316
324
  }
317
325
  interface XMLDeclarationNode extends BaseNode {
@@ -329,29 +337,31 @@ interface ErrorNode extends BaseNode {
329
337
  recoveredNode?: AnyNode;
330
338
  }
331
339
  /**
332
- * nestable node
340
+ * child node
333
341
  * @pg
334
342
  */
335
- type NestableNode = CommentNode | DoctypeNode | TagNode | TextNode | XMLDeclarationNode;
343
+ type DocumentChildNode = XMLDeclarationNode | DoctypeNode | ElementNode | CommentNode | TextNode;
344
+ type ElementChildNode = ElementNode | CommentNode | TextNode;
336
345
  /**
337
346
  * program
338
347
  * @pg
339
348
  */
340
349
  interface Program extends BaseNode {
341
- body: DocumentNode[];
342
- comments: string[];
350
+ body: [];
351
+ comments: ESLintComment[];
352
+ document: DocumentNode;
343
353
  tokens: AnyToken[];
344
354
  type: NodeTypes.Program;
345
355
  }
346
356
  interface DocumentNode extends BaseNode {
347
- children: NestableNode[];
357
+ children: DocumentChildNode[];
348
358
  type: NodeTypes.Document;
349
359
  }
350
360
  /**
351
361
  * any node
352
362
  * @pg
353
363
  */
354
- type AnyNode = AttributeKeyNode | AttributeNode | AttributeValueNode | CommentNode | DoctypeAttributeNode | DoctypeAttributeValueNode | DoctypeNode | DocumentNode | ErrorNode | Program | TagNode | TextNode | XMLDeclarationAttributeKeyNode | XMLDeclarationAttributeNode | XMLDeclarationAttributeValueNode | XMLDeclarationNode;
364
+ type AnyNode = AttributeKeyNode | AttributeNode | AttributeValueNode | CommentNode | DoctypeAttributeNode | DoctypeAttributeValueNode | DoctypeNode | DocumentNode | ElementNode | ErrorNode | Program | TextNode | XMLDeclarationAttributeKeyNode | XMLDeclarationAttributeNode | XMLDeclarationAttributeValueNode | XMLDeclarationNode;
355
365
  //#endregion
356
366
  //#region src/types/parse.d.ts
357
367
  interface Options {
@@ -386,7 +396,7 @@ interface ParseResult {
386
396
  }
387
397
  //#endregion
388
398
  //#region src/types/contextualNode.d.ts
389
- type AnyContextualNode = ContextualAttributeNode | ContextualCommentNode | ContextualDoctypeAttributeNode | ContextualDoctypeNode | ContextualDocumentNode | ContextualTagNode | ContextualXMLDeclarationAttributeNode | ContextualXMLDeclarationNode;
399
+ type AnyContextualNode = ContextualAttributeNode | ContextualCommentNode | ContextualDoctypeAttributeNode | ContextualDoctypeNode | ContextualDocumentNode | ContextualElementNode | ContextualXMLDeclarationAttributeNode | ContextualXMLDeclarationNode;
390
400
  type ContextualAttributeNode = ContextualNode<AttributeNode, 'key' | 'value'>;
391
401
  type ContextualCommentNode = ContextualNode<CommentNode, 'content'>;
392
402
  type ContextualDoctypeAttributeNode = ContextualNode<DoctypeAttributeNode, 'type' | 'value'>;
@@ -394,15 +404,17 @@ type ContextualDoctypeNode = ContextualNode<DoctypeNode, 'attributes'> & {
394
404
  attributes: ContextualDoctypeAttributeNode[];
395
405
  };
396
406
  type ContextualDocumentNode = Omit<ContextualNode<DocumentNode, never>, 'children'> & {
397
- children: Array<DocumentNode['children'][number] | Exclude<AnyContextualNode, ContextualDoctypeNode>>;
407
+ children: Array<DocumentNode['children'][number] | ContextualCommentNode | ContextualDoctypeNode | ContextualElementNode | ContextualXMLDeclarationNode>;
398
408
  };
399
409
  type ContextualNode<T extends AnyNode, K extends keyof T> = PartialBy<T, K> & {
400
410
  parentRef?: any;
401
411
  };
402
- type ContextualTagNode = ContextualNode<TagNode, 'attributes' | 'children' | 'name' | 'selfClosing'> & {
412
+ type ContextualElementNode = ContextualNode<ElementNode, 'attributes' | 'children' | 'name' | 'selfClosing'> & {
403
413
  attributes: ContextualAttributeNode[];
404
- children: Array<ContextualCommentNode | ContextualDoctypeNode | ContextualTagNode | TagNode['children'][number]>;
414
+ children: Array<ContextualCommentNode | ContextualElementNode | ElementNode['children'][number]>;
405
415
  };
416
+ /** @deprecated Use ContextualElementNode instead. */
417
+ type ContextualTagNode = ContextualElementNode;
406
418
  type ContextualXMLDeclarationAttributeNode = ContextualNode<XMLDeclarationAttributeNode, 'key' | 'value'>;
407
419
  type ContextualXMLDeclarationNode = ContextualNode<XMLDeclarationNode, 'attributes'> & {
408
420
  attributes: ContextualXMLDeclarationAttributeNode[];
@@ -479,9 +491,9 @@ type ContextParams = {
479
491
  };
480
492
  //#endregion
481
493
  //#region src/types/constructTreeState.d.ts
482
- type ConstructTreeState<N extends AnyContextualNode> = {
494
+ type ConstructTreeState<Node extends AnyContextualNode> = {
483
495
  caretPosition: number;
484
- currentNode: N;
496
+ currentNode: Node;
485
497
  rootNode: DocumentNode;
486
498
  currentContext: {
487
499
  type: ConstructTreeContextTypes;
@@ -501,7 +513,7 @@ interface TokenizeHandler {
501
513
  handleContentEnd?: (state: TokenizerState) => void;
502
514
  }
503
515
  declare namespace index_d_exports {
504
- export { AnyContextualNode, AnyNode, AnyToken, AttributeKeyNode, AttributeNode, AttributeValueNode, BaseNode, CommentNode, ConstructTreeHandler, ConstructTreeState, ContextualAttributeNode, ContextualCommentNode, ContextualDoctypeAttributeNode, ContextualDoctypeNode, ContextualDocumentNode, ContextualNode, ContextualTagNode, ContextualXMLDeclarationAttributeNode, ContextualXMLDeclarationNode, DoctypeAttributeNode, DoctypeAttributeValueNode, DoctypeNode, DocumentNode, ErrorNode, Locations, NestableNode, Options, ParseForESLintResult, ParseResult, PartialBy, Position, Program, Range, SimpleNode, SourceLocation, TagNode, TextNode, Token, TokenizeHandler, TokenizerState, XMLDeclarationAttributeKeyNode, XMLDeclarationAttributeNode, XMLDeclarationAttributeValueNode, XMLDeclarationNode };
516
+ export { AnyContextualNode, AnyNode, AnyToken, AttributeKeyNode, AttributeNode, AttributeValueNode, BaseNode, CommentNode, ConstructTreeHandler, ConstructTreeState, ContextualAttributeNode, ContextualCommentNode, ContextualDoctypeAttributeNode, ContextualDoctypeNode, ContextualDocumentNode, ContextualElementNode, ContextualNode, ContextualTagNode, ContextualXMLDeclarationAttributeNode, ContextualXMLDeclarationNode, DoctypeAttributeNode, DoctypeAttributeValueNode, DoctypeNode, DocumentChildNode, DocumentNode, ESLintComment, ElementChildNode, ElementNode, ErrorNode, Locations, Options, ParseForESLintResult, ParseResult, PartialBy, Position, Program, Range, SimpleNode, SourceLocation, TagNode, TextNode, Token, TokenizeHandler, TokenizerState, XMLDeclarationAttributeKeyNode, XMLDeclarationAttributeNode, XMLDeclarationAttributeValueNode, XMLDeclarationNode };
505
517
  }
506
518
  //#endregion
507
519
  //#region src/parser/parseForESLint.d.ts
@@ -618,7 +630,7 @@ declare function findFirstNodeByType<T extends NodeTypes>(node: AnyNode, type: T
618
630
  //#endregion
619
631
  //#region src/index.d.ts
620
632
  declare const name: string;
621
- declare const VisitorKeys: eslint0.SourceCode.VisitorKeys;
622
- declare function parse(code: string, options?: Options): Program;
633
+ declare const VisitorKeys: _$eslint.SourceCode.VisitorKeys;
634
+ declare function parse(code: string, options?: Options): DocumentNode;
623
635
  //#endregion
624
- export { type index_d_exports as AST, type ASTVisitor, AnyContextualNode, AnyNode, AnyToken, AttributeKeyNode, AttributeNode, AttributeValueNode, BaseNode, COMMENT_END, COMMENT_START, CommentNode, ConstructTreeContextTypes, ConstructTreeHandler, ConstructTreeState, ContextualAttributeNode, ContextualCommentNode, ContextualDoctypeAttributeNode, ContextualDoctypeNode, ContextualDocumentNode, ContextualNode, ContextualTagNode, ContextualXMLDeclarationAttributeNode, ContextualXMLDeclarationNode, DEPRECATED_SVG_ELEMENTS, DoctypeAttributeNode, DoctypeAttributeValueNode, DoctypeNode, DocumentNode, ErrorNode, Locations, NestableNode, NodeTypes, Options, ParseError, ParseForESLintResult, ParseResult, PartialBy, Position, Program, RE_CLOSE_TAG_NAME, RE_INCOMPLETE_CLOSING_TAG, RE_OPEN_TAG_NAME, RE_OPEN_TAG_START, Range, SELF_CLOSING_ELEMENTS, SPECIAL_CHAR, SVG_ELEMENTS, SimpleNode, SourceLocation, TagNode, TextNode, Token, TokenTypes, TokenizeHandler, TokenizerContextTypes, TokenizerState, VisitorKeys, XMLDeclarationAttributeKeyNode, XMLDeclarationAttributeNode, XMLDeclarationAttributeValueNode, XMLDeclarationNode, XML_DECLARATION_END, XML_DECLARATION_START, cloneNode, cloneNodeWithParent, countNodes, filterNodes, findFirstNodeByType, findNodeByType, getNodeDepth, getParentChain, isNodeType, mapNodes, meta, name, parse, parseForESLint, traverseAST, validateNode, walkAST };
636
+ export { type index_d_exports as AST, type ASTVisitor, AnyContextualNode, AnyNode, AnyToken, AttributeKeyNode, AttributeNode, AttributeValueNode, BaseNode, COMMENT_END, COMMENT_START, CommentNode, ConstructTreeContextTypes, ConstructTreeHandler, ConstructTreeState, ContextualAttributeNode, ContextualCommentNode, ContextualDoctypeAttributeNode, ContextualDoctypeNode, ContextualDocumentNode, ContextualElementNode, ContextualNode, ContextualTagNode, ContextualXMLDeclarationAttributeNode, ContextualXMLDeclarationNode, DEPRECATED_SVG_ELEMENTS, DoctypeAttributeNode, DoctypeAttributeValueNode, DoctypeNode, DocumentChildNode, DocumentNode, ESLintComment, ElementChildNode, ElementNode, ErrorNode, Locations, NodeTypes, Options, ParseError, ParseForESLintResult, ParseResult, PartialBy, Position, Program, RE_CLOSE_TAG_NAME, RE_INCOMPLETE_CLOSING_TAG, RE_OPEN_TAG_NAME, RE_OPEN_TAG_START, Range, SELF_CLOSING_ELEMENTS, SPECIAL_CHAR, SVG_ELEMENTS, SimpleNode, SourceLocation, TagNode, TextNode, Token, TokenTypes, TokenizeHandler, TokenizerContextTypes, TokenizerState, VisitorKeys, XMLDeclarationAttributeKeyNode, XMLDeclarationAttributeNode, XMLDeclarationAttributeValueNode, XMLDeclarationNode, XML_DECLARATION_END, XML_DECLARATION_START, cloneNode, cloneNodeWithParent, countNodes, filterNodes, findFirstNodeByType, findNodeByType, getNodeDepth, getParentChain, isNodeType, mapNodes, meta, name, parse, parseForESLint, traverseAST, validateNode, walkAST };