@tsrx/eslint-parser 0.3.72 → 0.3.76
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 +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +73 -21
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +54 -21
package/README.md
CHANGED
|
@@ -73,10 +73,11 @@ The parser:
|
|
|
73
73
|
The parser supports TSRX syntax including:
|
|
74
74
|
|
|
75
75
|
- Native TSRX elements and fragments as JavaScript expressions
|
|
76
|
-
-
|
|
76
|
+
- JSX statement containers with `@{ ... }` for setup plus one rendered output
|
|
77
|
+
- Template directives like `@if`, `@for`, `@switch`, and `@try`
|
|
77
78
|
- Function components that return TSRX, TSX, or standard JavaScript values
|
|
78
79
|
- `track()` reactive values (imported from `ripple`)
|
|
79
|
-
-
|
|
80
|
+
- `&{}` and `&[]` lazy destructuring
|
|
80
81
|
- Reactive collections
|
|
81
82
|
- All standard JavaScript/TypeScript syntax
|
|
82
83
|
|
|
@@ -87,13 +88,13 @@ Given a `.tsrx` file:
|
|
|
87
88
|
```tsrx
|
|
88
89
|
import { track } from 'ripple';
|
|
89
90
|
|
|
90
|
-
export function Counter() {
|
|
91
|
+
export function Counter() @{
|
|
91
92
|
let &[count] = track(0);
|
|
92
93
|
|
|
93
|
-
|
|
94
|
-
|
|
94
|
+
<button onClick={() => count++}>
|
|
95
|
+
Increment
|
|
95
96
|
<span>{count}</span>
|
|
96
|
-
</button
|
|
97
|
+
</button>
|
|
97
98
|
}
|
|
98
99
|
```
|
|
99
100
|
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":["BaseNodeWithoutComments","SourceLocation","type","loc","range","BaseNode","Comment","leadingComments","trailingComments","NodeMap","AssignmentProperty","CatchClause","Class","ClassBody","Expression","Function","Identifier","Literal","MethodDefinition","ModuleDeclaration","ModuleSpecifier","Pattern","PrivateIdentifier","Program","Property","PropertyDefinition","SpreadElement","Statement","Super","SwitchCase","TemplateElement","VariableDeclarator","Node","value","Position","source","start","end","line","column","Directive","Array","sourceType","body","comments","expression","directive","BaseFunction","BlockStatement","params","generator","async","FunctionDeclaration","FunctionExpression","ArrowFunctionExpression","ExpressionStatement","StaticBlock","EmptyStatement","DebuggerStatement","WithStatement","ReturnStatement","LabeledStatement","BreakStatement","ContinueStatement","IfStatement","SwitchStatement","ThrowStatement","TryStatement","WhileStatement","DoWhileStatement","ForStatement","ForInStatement","ForOfStatement","Declaration","BaseStatement","innerComments","Omit","test","consequent","alternate","label","object","discriminant","cases","argument","block","handler","finalizer","VariableDeclaration","init","update","BaseForXStatement","left","right","ClassDeclaration","BaseDeclaration","MaybeNamedFunctionDeclaration","id","declarations","kind","ExpressionMap","ArrayExpression","AssignmentExpression","AwaitExpression","BinaryExpression","CallExpression","ChainExpression","ClassExpression","ConditionalExpression","ImportExpression","LogicalExpression","MemberExpression","MetaProperty","NewExpression","ObjectExpression","SequenceExpression","TaggedTemplateExpression","TemplateLiteral","ThisExpression","UnaryExpression","UpdateExpression","YieldExpression","BaseExpression","ChainElement","SimpleCallExpression","elements","properties","name","key","method","shorthand","computed","static","expressions","UnaryOperator","operator","prefix","BinaryOperator","AssignmentOperator","UpdateOperator","LogicalOperator","BaseCallExpression","callee","arguments","optional","BasePattern","property","ObjectPattern","ArrayPattern","RestElement","AssignmentPattern","param","SimpleLiteral","RegExpLiteral","BigIntLiteral","raw","RegExp","regex","pattern","flags","bigint","await","delegate","quasis","tag","quasi","tail","cooked","BaseClass","superClass","MaybeNamedClassDeclaration","meta","ImportDeclaration","ExportNamedDeclaration","ExportDefaultDeclaration","ExportAllDeclaration","BaseModuleDeclaration","ImportSpecifier","ImportDefaultSpecifier","ImportNamespaceSpecifier","ExportSpecifier","BaseModuleSpecifier","local","ImportAttribute","specifiers","attributes","imported","options","declaration","exported"],"sources":["../../../node_modules/.pnpm/@types+estree@1.0.8/node_modules/@types/estree/index.d.ts","../src/index.ts"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;;;;;;;UAkBiBA,uBAAAA;EAAAA;EAAAA;EAAAA;EAIbE,IAAAA;EACAC,GAAAA,GAAMF,cAAAA;EACNG,KAAAA;AAAAA;AAAAA,UAGaC,QAAAA,SAAiBL,uBAAAA;EAC9BO,eAAAA,GAAkBD,OAAAA;EAClBE,gBAAAA,GAAmBF,OAAAA;AAAAA;AAAAA,UA8BNA,OAAAA,SAAgBN,uBAAAA;EAC7BE,IAAAA;EACA+B,KAAAA;AAAAA;AAAAA,UAGahC,cAAAA;EACbkC,MAAAA;EACAC,KAAAA,EAAOF,QAAAA;EACPG,GAAAA,EAAKH,QAAAA;AAAAA;AAAAA,UAGQA,QAAAA;EAUuBf;EARpCmB,IAAAA;EASWhC;EAPXiC,MAAAA;AAAAA;AAAAA,UAGahB,OAAAA,SAAgBlB,QAAAA;EAC7BH,IAAAA;EACAwC,UAAAA;EACAC,IAAAA,EAAMF,KAAAA,CAAMD,SAAAA,GAAYb,SAAAA,GAAYR,iBAAAA;EACpCyB,QAAAA,GAAWtC,OAAAA;AAAAA;AAAAA,UAGEkC,SAAAA,SAAkBnC,QAAAA;EAC/BH,IAAAA;EACA2C,UAAAA,EAAY5B,OAAAA;EACZ6B,SAAAA;AAAAA;AAAAA,UAGaC,YAAAA,SAAqB1C,QAAAA;EAClC4C,MAAAA,EAAQ5B,OAAAA;EACR6B,SAAAA;EACAC,KAAAA;EAAAA;EAAAA;EAIAR,IAAAA,EAAMK,cAAAA,GAAiBlC,UAAAA;AAAAA;AAAAA,KAKfa,SAAAA,GACN4B,mBAAAA,GACAP,cAAAA,GACAQ,WAAAA,GACAC,cAAAA,GACAC,iBAAAA,GACAC,aAAAA,GACAC,eAAAA,GACAC,gBAAAA,GACAC,cAAAA,GACAC,iBAAAA,GACAC,WAAAA,GACAC,eAAAA,GACAC,cAAAA,GACAC,YAAAA,GACAC,cAAAA,GACAC,gBAAAA,GACAC,YAAAA,GACAC,cAAAA,GACAC,cAAAA,GACAC,WAAAA;AAAAA,UAEWC,aAAAA,SAAsBrE,QAAAA;AAAAA,UAEtBoD,cAAAA,SAAuBiB,aAAAA;EACpCxE,IAAAA;AAAAA;AAAAA,UAGa8C,cAAAA,SAAuB0B,aAAAA;EACpCxE,IAAAA;EACAyC,IAAAA,EAAMhB,SAAAA;EACNgD,aAAAA,GAAgBrE,OAAAA;AAAAA;AAAAA,UAGHkD,WAAAA,SAAoBoB,IAAAA,CAAK5B,cAAAA;EACtC9C,IAAAA;AAAAA;AAAAA,UAGaqD,mBAAAA,SAA4BmB,aAAAA;EACzCxE,IAAAA;EACA2C,UAAAA,EAAY/B,UAAAA;AAAAA;AAAAA,UAGCkD,WAAAA,SAAoBU,aAAAA;EACjCxE,IAAAA;EACA2E,IAAAA,EAAM/D,UAAAA;EACNgE,UAAAA,EAAYnD,SAAAA;EACZoD,SAAAA,GAAYpD,SAAAA;AAAAA;AAAAA,UAGCkC,gBAAAA,SAAyBa,aAAAA;EACtCxE,IAAAA;EACA8E,KAAAA,EAAOhE,UAAAA;EACP2B,IAAAA,EAAMhB,SAAAA;AAAAA;AAAAA,UAGOmC,cAAAA,SAAuBY,aAAAA;EACpCxE,IAAAA;EACA8E,KAAAA,GAAQhE,UAAAA;AAAAA;AAAAA,UAGK+C,iBAAAA,SAA0BW,aAAAA;EACvCxE,IAAAA;EACA8E,KAAAA,GAAQhE,UAAAA;AAAAA;AAAAA,UAGK2C,aAAAA,SAAsBe,aAAAA;EACnCxE,IAAAA;EACA+E,MAAAA,EAAQnE,UAAAA;EACR6B,IAAAA,EAAMhB,SAAAA;AAAAA;AAAAA,UAGOsC,eAAAA,SAAwBS,aAAAA;EACrCxE,IAAAA;EACAgF,YAAAA,EAAcpE,UAAAA;EACdqE,KAAAA,EAAOtD,UAAAA;AAAAA;AAAAA,UAGM+B,eAAAA,SAAwBc,aAAAA;EACrCxE,IAAAA;EACAkF,QAAAA,GAAWtE,UAAAA;AAAAA;AAAAA,UAGEoD,cAAAA,SAAuBQ,aAAAA;EACpCxE,IAAAA;EACAkF,QAAAA,EAAUtE,UAAAA;AAAAA;AAAAA,UAGGqD,YAAAA,SAAqBO,aAAAA;EAClCxE,IAAAA;EACAmF,KAAAA,EAAOrC,cAAAA;EACPsC,OAAAA,GAAU3E,WAAAA;EACV4E,SAAAA,GAAYvC,cAAAA;AAAAA;AAAAA,UAGCoB,cAAAA,SAAuBM,aAAAA;EACpCxE,IAAAA;EACA2E,IAAAA,EAAM/D,UAAAA;EACN6B,IAAAA,EAAMhB,SAAAA;AAAAA;AAAAA,UAGO0C,gBAAAA,SAAyBK,aAAAA;EACtCxE,IAAAA;EACAyC,IAAAA,EAAMhB,SAAAA;EACNkD,IAAAA,EAAM/D,UAAAA;AAAAA;AAAAA,UAGOwD,YAAAA,SAAqBI,aAAAA;EAClCxE,IAAAA;EACAuF,IAAAA,GAAOD,mBAAAA,GAAsB1E,UAAAA;EAC7B+D,IAAAA,GAAO/D,UAAAA;EACP4E,MAAAA,GAAS5E,UAAAA;EACT6B,IAAAA,EAAMhB,SAAAA;AAAAA;AAAAA,UAGOgE,iBAAAA,SAA0BjB,aAAAA;EACvCkB,IAAAA,EAAMJ,mBAAAA,GAAsBnE,OAAAA;EAC5BwE,KAAAA,EAAO/E,UAAAA;EACP6B,IAAAA,EAAMhB,SAAAA;AAAAA;AAAAA,UAGO4C,cAAAA,SAAuBoB,iBAAAA;EACpCzF,IAAAA;AAAAA;AAAAA,UAGawD,iBAAAA,SAA0BgB,aAAAA;EACvCxE,IAAAA;AAAAA;AAAAA,KAGQuE,WAAAA,GAAcrB,mBAAAA,GAAsBoC,mBAAAA,GAAsBM,gBAAAA;AAAAA,UAErDC,eAAAA,SAAwBrB,aAAAA;AAAAA,UAExBsB,6BAAAA,SAAsCjD,YAAAA,EAAcgD,eAAAA;EACjE7F,IAAAA;EA9EoCwE;EAgFpCuB,EAAAA,EAAIjF,UAAAA;EACJ2B,IAAAA,EAAMK,cAAAA;AAAAA;AAAAA,UAGOI,mBAAAA,SAA4B4C,6BAAAA;EACzCC,EAAAA,EAAIjF,UAAAA;AAAAA;AAAAA,UAGSwE,mBAAAA,SAA4BO,eAAAA;EACzC7F,IAAAA;EACAgG,YAAAA,EAAcnE,kBAAAA;EACdoE,IAAAA;AAAAA;AAAAA,UAGapE,kBAAAA,SAA2B1B,QAAAA;EACxCH,IAAAA;EACA+F,EAAAA,EAAI5E,OAAAA;EACJoE,IAAAA,GAAO3E,UAAAA;AAAAA;AAAAA,UAGMsF,aAAAA;EACbC,eAAAA,EAAiBA,eAAAA;EACjB/C,uBAAAA,EAAyBA,uBAAAA;EACzBgD,oBAAAA,EAAsBA,oBAAAA;EACtBC,eAAAA,EAAiBA,eAAAA;EACjBC,gBAAAA,EAAkBA,gBAAAA;EAClBC,cAAAA,EAAgBA,cAAAA;EAChBC,eAAAA,EAAiBA,eAAAA;EACjBC,eAAAA,EAAiBA,eAAAA;EACjBC,qBAAAA,EAAuBA,qBAAAA;EACvBvD,kBAAAA,EAAoBA,kBAAAA;EACpBrC,UAAAA,EAAYA,UAAAA;EACZ6F,gBAAAA,EAAkBA,gBAAAA;EAClB5F,OAAAA,EAASA,OAAAA;EACT6F,iBAAAA,EAAmBA,iBAAAA;EACnBC,gBAAAA,EAAkBA,gBAAAA;EAClBC,YAAAA,EAAcA,YAAAA;EACdC,aAAAA,EAAeA,aAAAA;EACfC,gBAAAA,EAAkBA,gBAAAA;EAClBC,kBAAAA,EAAoBA,kBAAAA;EACpBC,wBAAAA,EAA0BA,wBAAAA;EAC1BC,eAAAA,EAAiBA,eAAAA;EACjBC,cAAAA,EAAgBA,cAAAA;EAChBC,eAAAA,EAAiBA,eAAAA;EACjBC,gBAAAA,EAAkBA,gBAAAA;EAClBC,eAAAA,EAAiBA,eAAAA;AAAAA;AAAAA,KAGT3G,UAAAA,GAAasF,aAAAA,OAAoBA,aAAAA;AAAAA,UAE5BsB,cAAAA,SAAuBrH,QAAAA;AAAAA,KAE5BsH,YAAAA,GAAeC,oBAAAA,GAAuBb,gBAAAA;AAAAA,UAEjCL,eAAAA,SAAwBgB,cAAAA;EACrCxH,IAAAA;EACA2C,UAAAA,EAAY8E,YAAAA;AAAAA;AAAAA,UAGCL,cAAAA,SAAuBI,cAAAA;EACpCxH,IAAAA;AAAAA;AAAAA,UAGamG,eAAAA,SAAwBqB,cAAAA;EACrCxH,IAAAA;EACA2H,QAAAA,EAAUpF,KAAAA,CAAM3B,UAAAA,GAAaY,aAAAA;AAAAA;AAAAA,UAGhBwF,gBAAAA,SAAyBQ,cAAAA;EACtCxH,IAAAA;EACA4H,UAAAA,EAAYrF,KAAAA,CAAMjB,QAAAA,GAAWE,aAAAA;AAAAA;AAAAA,UAGhBJ,iBAAAA,SAA0BjB,QAAAA;EACvCH,IAAAA;EACA6H,IAAAA;AAAAA;AAAAA,UAGavG,QAAAA,SAAiBnB,QAAAA;EAC9BH,IAAAA;EACA8H,GAAAA,EAAKlH,UAAAA,GAAaQ,iBAAAA;EAClBW,KAAAA,EAAOnB,UAAAA,GAAaO,OAAAA;EACpB8E,IAAAA;EACA8B,MAAAA;EACAC,SAAAA;EACAC,QAAAA;AAAAA;AAAAA,UAGa1G,kBAAAA,SAA2BpB,QAAAA;EACxCH,IAAAA;EACA8H,GAAAA,EAAKlH,UAAAA,GAAaQ,iBAAAA;EAClBW,KAAAA,GAAQnB,UAAAA;EACRqH,QAAAA;EACAC,MAAAA;AAAAA;AAAAA,UAGa/E,kBAAAA,SAA2BN,YAAAA,EAAc2E,cAAAA;EACtDzB,EAAAA,GAAKjF,UAAAA;EACLd,IAAAA;EACAyC,IAAAA,EAAMK,cAAAA;AAAAA;AAAAA,UAGOmE,kBAAAA,SAA2BO,cAAAA;EACxCxH,IAAAA;EACAmI,WAAAA,EAAavH,UAAAA;AAAAA;AAAAA,UAGAyG,eAAAA,SAAwBG,cAAAA;EACrCxH,IAAAA;EACAqI,QAAAA,EAAUD,aAAAA;EACVE,MAAAA;EACApD,QAAAA,EAAUtE,UAAAA;AAAAA;AAAAA,UAGG0F,gBAAAA,SAAyBkB,cAAAA;EACtCxH,IAAAA;EACAqI,QAAAA,EAAUE,cAAAA;EACV7C,IAAAA,EAAM9E,UAAAA,GAAaQ,iBAAAA;EACnBuE,KAAAA,EAAO/E,UAAAA;AAAAA;AAAAA,UAGMwF,oBAAAA,SAA6BoB,cAAAA;EAC1CxH,IAAAA;EACAqI,QAAAA,EAAUG,kBAAAA;EACV9C,IAAAA,EAAMvE,OAAAA,GAAU0F,gBAAAA;EAChBlB,KAAAA,EAAO/E,UAAAA;AAAAA;AAAAA,UAGM0G,gBAAAA,SAAyBE,cAAAA;EACtCxH,IAAAA;EACAqI,QAAAA,EAAUI,cAAAA;EACVvD,QAAAA,EAAUtE,UAAAA;EACV0H,MAAAA;AAAAA;AAAAA,UAGa1B,iBAAAA,SAA0BY,cAAAA;EACvCxH,IAAAA;EACAqI,QAAAA,EAAUK,eAAAA;EACVhD,IAAAA,EAAM9E,UAAAA;EACN+E,KAAAA,EAAO/E,UAAAA;AAAAA;AAAAA,UAGM8F,qBAAAA,SAA8Bc,cAAAA;EAC3CxH,IAAAA;EACA2E,IAAAA,EAAM/D,UAAAA;EACNiE,SAAAA,EAAWjE,UAAAA;EACXgE,UAAAA,EAAYhE,UAAAA;AAAAA;AAAAA,UAGC+H,kBAAAA,SAA2BnB,cAAAA;EACxCoB,MAAAA,EAAQhI,UAAAA,GAAac,KAAAA;EACrBmH,SAAAA,EAAWtG,KAAAA,CAAM3B,UAAAA,GAAaY,aAAAA;AAAAA;AAAAA,KAEtB+E,cAAAA,GAAiBmB,oBAAAA,GAAuBX,aAAAA;AAAAA,UAEnCW,oBAAAA,SAA6BiB,kBAAAA;EAC1C3I,IAAAA;EACA8I,QAAAA;AAAAA;AAAAA,UAGa/B,aAAAA,SAAsB4B,kBAAAA;EACnC3I,IAAAA;AAAAA;AAAAA,UAGa6G,gBAAAA,SAAyBW,cAAAA,EAAgBuB,WAAAA;EACtD/I,IAAAA;EACA+E,MAAAA,EAAQnE,UAAAA,GAAac,KAAAA;EACrBsH,QAAAA,EAAUpI,UAAAA,GAAaQ,iBAAAA;EACvB6G,QAAAA;EACAa,QAAAA;AAAAA;AAAAA,KAGQ3H,OAAAA,GAAUL,UAAAA,GAAamI,aAAAA,GAAgBC,YAAAA,GAAeC,WAAAA,GAAcC,iBAAAA,GAAoBvC,gBAAAA;AAAAA,UAEnFkC,WAAAA,SAAoB5I,QAAAA;AAAAA,UAEpBwB,UAAAA,SAAmBxB,QAAAA;EAChCH,IAAAA;EACA2E,IAAAA,GAAO/D,UAAAA;EACPgE,UAAAA,EAAYnD,SAAAA;AAAAA;AAAAA,UAGChB,WAAAA,SAAoBN,QAAAA;EACjCH,IAAAA;EACAqJ,KAAAA,EAAOlI,OAAAA;EACPsB,IAAAA,EAAMK,cAAAA;AAAAA;AAAAA,UAGOhC,UAAAA,SAAmBX,QAAAA,EAAUqH,cAAAA,EAAgBuB,WAAAA;EAC1D/I,IAAAA;EACA6H,IAAAA;AAAAA;AAAAA,KAGQ9G,OAAAA,GAAUuI,aAAAA,GAAgBC,aAAAA,GAAgBC,aAAAA;AAAAA,UAErCF,aAAAA,SAAsBnJ,QAAAA,EAAUqH,cAAAA;EAC7CxH,IAAAA;EACA+B,KAAAA;EACA0H,GAAAA;AAAAA;AAAAA,UAGaF,aAAAA,SAAsBpJ,QAAAA,EAAUqH,cAAAA;EAC7CxH,IAAAA;EACA+B,KAAAA,GAAQ2H,MAAAA;EACRC,KAAAA;IACIC,OAAAA;IACAC,KAAAA;EAAAA;EAEJJ,GAAAA;AAAAA;AAAAA,UAGaD,aAAAA,SAAsBrJ,QAAAA,EAAUqH,cAAAA;EAC7CxH,IAAAA;EACA+B,KAAAA;EACA+H,MAAAA;EACAL,GAAAA;AAAAA;AAAAA,KAGQrB,aAAAA;AAAAA,KAEAG,cAAAA;AAAAA,KAwBAG,eAAAA;AAAAA,KAEAF,kBAAAA;AAAAA,KAkBAC,cAAAA;AAAAA,UAEKnE,cAAAA,SAAuBmB,iBAAAA;EACpCzF,IAAAA;EACA+J,KAAAA;AAAAA;AAAAA,UAGarI,KAAAA,SAAcvB,QAAAA;EAC3BH,IAAAA;AAAAA;AAAAA,UAGawB,aAAAA,SAAsBrB,QAAAA;EACnCH,IAAAA;EACAkF,QAAAA,EAAUtE,UAAAA;AAAAA;AAAAA,UAGGwC,uBAAAA,SAAgCoE,cAAAA,EAAgB3E,YAAAA;EAC7D7C,IAAAA;EACA2C,UAAAA;EACAF,IAAAA,EAAMK,cAAAA,GAAiBlC,UAAAA;AAAAA;AAAAA,UAGV2G,eAAAA,SAAwBC,cAAAA;EACrCxH,IAAAA;EACAkF,QAAAA,GAAWtE,UAAAA;EACXoJ,QAAAA;AAAAA;AAAAA,UAGa7C,eAAAA,SAAwBK,cAAAA;EACrCxH,IAAAA;EACAiK,MAAAA,EAAQrI,eAAAA;EACRuG,WAAAA,EAAavH,UAAAA;AAAAA;AAAAA,UAGAsG,wBAAAA,SAAiCM,cAAAA;EAC9CxH,IAAAA;EACAkK,GAAAA,EAAKtJ,UAAAA;EACLuJ,KAAAA,EAAOhD,eAAAA;AAAAA;AAAAA,UAGMvF,eAAAA,SAAwBzB,QAAAA;EACrCH,IAAAA;EACAoK,IAAAA;EACArI,KAAAA;IA7QAiF,0HA+QIqD,MAAAA;IACAZ,GAAAA;EAAAA;AAAAA;AAAAA,UAISjJ,kBAAAA,SAA2Bc,QAAAA;EACxCS,KAAAA,EAAOZ,OAAAA;EACP8E,IAAAA;EACA8B,MAAAA;AAAAA;AAAAA,UAGakB,aAAAA,SAAsBF,WAAAA;EACnC/I,IAAAA;EACA4H,UAAAA,EAAYrF,KAAAA,CAAM/B,kBAAAA,GAAqB2I,WAAAA;AAAAA;AAAAA,UAG1BD,YAAAA,SAAqBH,WAAAA;EAClC/I,IAAAA;EACA2H,QAAAA,EAAUpF,KAAAA,CAAMpB,OAAAA;AAAAA;AAAAA,UAGHgI,WAAAA,SAAoBJ,WAAAA;EACjC/I,IAAAA;EACAkF,QAAAA,EAAU/D,OAAAA;AAAAA;AAAAA,UAGGiI,iBAAAA,SAA0BL,WAAAA;EACvC/I,IAAAA;EACA0F,IAAAA,EAAMvE,OAAAA;EACNwE,KAAAA,EAAO/E,UAAAA;AAAAA;AAAAA,UAIM0J,SAAAA,SAAkBnK,QAAAA;EAC/BoK,UAAAA,GAAa3J,UAAAA;EACb6B,IAAAA,EAAM9B,SAAAA;AAAAA;AAAAA,UAGOA,SAAAA,SAAkBR,QAAAA;EAC/BH,IAAAA;EACAyC,IAAAA,EAAMF,KAAAA,CAAMvB,gBAAAA,GAAmBO,kBAAAA,GAAqB+B,WAAAA;AAAAA;AAAAA,UAGvCtC,gBAAAA,SAAyBb,QAAAA;EACtCH,IAAAA;EACA8H,GAAAA,EAAKlH,UAAAA,GAAaQ,iBAAAA;EAClBW,KAAAA,EAAOoB,kBAAAA;EACP8C,IAAAA;EACAgC,QAAAA;EACAC,MAAAA;AAAAA;AAAAA,UAGasC,0BAAAA,SAAmCF,SAAAA,EAAWzE,eAAAA;EAC3D7F,IAAAA;EA3SmD;EA6SnD+F,EAAAA,EAAIjF,UAAAA;AAAAA;AAAAA,UAGS8E,gBAAAA,SAAyB4E,0BAAAA;EACtCzE,EAAAA,EAAIjF,UAAAA;AAAAA;AAAAA,UAGS2F,eAAAA,SAAwB6D,SAAAA,EAAW9C,cAAAA;EAChDxH,IAAAA;EACA+F,EAAAA,GAAKjF,UAAAA;AAAAA;AAAAA,UAGQgG,YAAAA,SAAqBU,cAAAA;EAClCxH,IAAAA;EACAyK,IAAAA,EAAM3J,UAAAA;EACNkI,QAAAA,EAAUlI,UAAAA;AAAAA;AAAAA,KAGFG,iBAAAA,GACNyJ,iBAAAA,GACAC,sBAAAA,GACAC,wBAAAA,GACAC,oBAAAA;AAAAA,UACWC,qBAAAA,SAA8B3K,QAAAA;AAAAA,UAG9BgL,mBAAAA,SAA4BhL,QAAAA;EACzCiL,KAAAA,EAAOtK,UAAAA;AAAAA;AAAAA,UAGM4J,iBAAAA,SAA0BI,qBAAAA;EACvC9K,IAAAA;EACAsL,UAAAA,EAAY/I,KAAAA,CAAMwI,eAAAA,GAAkBC,sBAAAA,GAAyBC,wBAAAA;EAC7DM,UAAAA,EAAYF,eAAAA;EACZpJ,MAAAA,EAAQlB,OAAAA;AAAAA;AAAAA,UAGKgK,eAAAA,SAAwBI,mBAAAA;EACrCnL,IAAAA;EACAwL,QAAAA,EAAU1K,UAAAA,GAAaC,OAAAA;AAAAA;AAAAA,UAGVsK,eAAAA,SAAwBlL,QAAAA;EACrCH,IAAAA;EACA8H,GAAAA,EAAKhH,UAAAA,GAAaC,OAAAA;EAClBgB,KAAAA,EAAOhB,OAAAA;AAAAA;AAAAA,UAGM4F,gBAAAA,SAAyBa,cAAAA;EACtCxH,IAAAA;EACAiC,MAAAA,EAAQrB,UAAAA;EACR6K,OAAAA,GAAU7K,UAAAA;AAAAA;AAAAA,UAGGoK,sBAAAA,SAA+BG,mBAAAA;EAC5CnL,IAAAA;AAAAA;AAAAA,UAGaiL,wBAAAA,SAAiCE,mBAAAA;EAC9CnL,IAAAA;AAAAA;AAAAA,UAGa2K,sBAAAA,SAA+BG,qBAAAA;EAC5C9K,IAAAA;EACA0L,WAAAA,GAAcnH,WAAAA;EACd+G,UAAAA,EAAYJ,eAAAA;EACZK,UAAAA,EAAYF,eAAAA;EACZpJ,MAAAA,GAASlB,OAAAA;AAAAA;AAAAA,UAGImK,eAAAA,SAAwBxG,IAAAA,CAAKyG,mBAAAA;EAC1CnL,IAAAA;EACAoL,KAAAA,EAAOtK,UAAAA,GAAaC,OAAAA;EACpB4K,QAAAA,EAAU7K,UAAAA,GAAaC,OAAAA;AAAAA;AAAAA,UAGV6J,wBAAAA,SAAiCE,qBAAAA;EAC9C9K,IAAAA;EACA0L,WAAAA,EAAa5F,6BAAAA,GAAgC0E,0BAAAA,GAA6B5J,UAAAA;AAAAA;AAAAA,UAG7DiK,oBAAAA,SAA6BC,qBAAAA;EAC1C9K,IAAAA;EACA2L,QAAAA,EAAU7K,UAAAA,GAAaC,OAAAA;EACvBwK,UAAAA,EAAYF,eAAAA;EACZpJ,MAAAA,EAAQlB,OAAAA;AAAAA;AAAAA,UAGKsF,eAAAA,SAAwBmB,cAAAA;EACrCxH,IAAAA;EACAkF,QAAAA,EAAUtE,UAAAA;AAAAA;;;UChrBJ,WAAA;EACT,GAAA,EAAK,OAAA;EACL,QAAA,GAAW,MAAA;EACX,YAAA;EACA,WAAA,GAAc,MAAA;AAAA;;;;;;ADmBf;iBCqGgB,cAAA,CAAe,IAAA,UAAc,OAAA,GAAU,MAAA,CAAO,aAAA,GAAgB,WAAA;;;;iBA0C9D,KAAA,CAAM,IAAA,UAAc,OAAA,GAAU,MAAA,CAAO,aAAA,GAAgB,OAAA;AAAA,cAGpE,QAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["BaseNodeWithoutComments","SourceLocation","type","loc","range","BaseNode","Comment","leadingComments","trailingComments","NodeMap","AssignmentProperty","CatchClause","Class","ClassBody","Expression","Function","Identifier","Literal","MethodDefinition","ModuleDeclaration","ModuleSpecifier","Pattern","PrivateIdentifier","Program","Property","PropertyDefinition","SpreadElement","Statement","Super","SwitchCase","TemplateElement","VariableDeclarator","Node","value","Position","source","start","end","line","column","Directive","Array","sourceType","body","comments","expression","directive","BaseFunction","BlockStatement","params","generator","async","FunctionDeclaration","FunctionExpression","ArrowFunctionExpression","ExpressionStatement","StaticBlock","EmptyStatement","DebuggerStatement","WithStatement","ReturnStatement","LabeledStatement","BreakStatement","ContinueStatement","IfStatement","SwitchStatement","ThrowStatement","TryStatement","WhileStatement","DoWhileStatement","ForStatement","ForInStatement","ForOfStatement","Declaration","BaseStatement","innerComments","Omit","test","consequent","alternate","label","object","discriminant","cases","argument","block","handler","finalizer","VariableDeclaration","init","update","BaseForXStatement","left","right","ClassDeclaration","BaseDeclaration","MaybeNamedFunctionDeclaration","id","declarations","kind","ExpressionMap","ArrayExpression","AssignmentExpression","AwaitExpression","BinaryExpression","CallExpression","ChainExpression","ClassExpression","ConditionalExpression","ImportExpression","LogicalExpression","MemberExpression","MetaProperty","NewExpression","ObjectExpression","SequenceExpression","TaggedTemplateExpression","TemplateLiteral","ThisExpression","UnaryExpression","UpdateExpression","YieldExpression","BaseExpression","ChainElement","SimpleCallExpression","elements","properties","name","key","method","shorthand","computed","static","expressions","UnaryOperator","operator","prefix","BinaryOperator","AssignmentOperator","UpdateOperator","LogicalOperator","BaseCallExpression","callee","arguments","optional","BasePattern","property","ObjectPattern","ArrayPattern","RestElement","AssignmentPattern","param","SimpleLiteral","RegExpLiteral","BigIntLiteral","raw","RegExp","regex","pattern","flags","bigint","await","delegate","quasis","tag","quasi","tail","cooked","BaseClass","superClass","MaybeNamedClassDeclaration","meta","ImportDeclaration","ExportNamedDeclaration","ExportDefaultDeclaration","ExportAllDeclaration","BaseModuleDeclaration","ImportSpecifier","ImportDefaultSpecifier","ImportNamespaceSpecifier","ExportSpecifier","BaseModuleSpecifier","local","ImportAttribute","specifiers","attributes","imported","options","declaration","exported"],"sources":["../../../node_modules/.pnpm/@types+estree@1.0.8/node_modules/@types/estree/index.d.ts","../src/index.ts"],"x_google_ignoreList":[0],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,17 +1,57 @@
|
|
|
1
|
-
import { parseModule } from "@tsrx/core";
|
|
1
|
+
import { DIAGNOSTIC_CODES, parseModule } from "@tsrx/core";
|
|
2
2
|
//#region src/index.ts
|
|
3
3
|
const visitorKeys = {
|
|
4
4
|
Program: ["body"],
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
"
|
|
9
|
-
"attributes",
|
|
10
|
-
"children"
|
|
5
|
+
JSXElement: [
|
|
6
|
+
"openingElement",
|
|
7
|
+
"children",
|
|
8
|
+
"closingElement"
|
|
11
9
|
],
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
JSXOpeningElement: ["name", "attributes"],
|
|
11
|
+
JSXClosingElement: ["name"],
|
|
12
|
+
JSXFragment: [
|
|
13
|
+
"openingFragment",
|
|
14
|
+
"children",
|
|
15
|
+
"closingFragment"
|
|
16
|
+
],
|
|
17
|
+
JSXOpeningFragment: [],
|
|
18
|
+
JSXClosingFragment: [],
|
|
19
|
+
JSXExpressionContainer: ["expression"],
|
|
20
|
+
JSXAttribute: ["name", "value"],
|
|
21
|
+
JSXSpreadAttribute: ["argument"],
|
|
22
|
+
JSXIdentifier: [],
|
|
23
|
+
JSXMemberExpression: ["object", "property"],
|
|
24
|
+
JSXNamespacedName: ["namespace", "name"],
|
|
25
|
+
JSXText: [],
|
|
26
|
+
JSXStyleElement: [
|
|
27
|
+
"openingElement",
|
|
28
|
+
"children",
|
|
29
|
+
"closingElement"
|
|
30
|
+
],
|
|
31
|
+
JSXIfExpression: [
|
|
32
|
+
"test",
|
|
33
|
+
"consequent",
|
|
34
|
+
"alternate"
|
|
35
|
+
],
|
|
36
|
+
JSXForExpression: [
|
|
37
|
+
"init",
|
|
38
|
+
"test",
|
|
39
|
+
"update",
|
|
40
|
+
"left",
|
|
41
|
+
"right",
|
|
42
|
+
"body",
|
|
43
|
+
"index",
|
|
44
|
+
"key",
|
|
45
|
+
"empty"
|
|
46
|
+
],
|
|
47
|
+
JSXSwitchExpression: ["discriminant", "cases"],
|
|
48
|
+
JSXTryExpression: [
|
|
49
|
+
"block",
|
|
50
|
+
"handler",
|
|
51
|
+
"finalizer",
|
|
52
|
+
"pending"
|
|
53
|
+
],
|
|
54
|
+
JSXCodeBlock: ["body", "render"],
|
|
15
55
|
StyleSheet: [],
|
|
16
56
|
ForOfStatement: [
|
|
17
57
|
"left",
|
|
@@ -20,11 +60,7 @@ const visitorKeys = {
|
|
|
20
60
|
]
|
|
21
61
|
};
|
|
22
62
|
/**
|
|
23
|
-
*
|
|
24
|
-
* and `Element.openingElement.attributes`) that are useful for formatters/source-maps.
|
|
25
|
-
* ESLint's traverser will visit both paths and can trigger duplicate rule reports.
|
|
26
|
-
*
|
|
27
|
-
* For ESLint, we prune JSX wrapper nodes to keep a single traversal path.
|
|
63
|
+
* Keep this hook for small ESLint-only AST normalizations.
|
|
28
64
|
*/
|
|
29
65
|
function normalize_tsrx_ast_for_eslint(ast) {
|
|
30
66
|
const seen = /* @__PURE__ */ new Set();
|
|
@@ -32,10 +68,6 @@ function normalize_tsrx_ast_for_eslint(ast) {
|
|
|
32
68
|
if (!node || typeof node !== "object") return;
|
|
33
69
|
if (seen.has(node)) return;
|
|
34
70
|
seen.add(node);
|
|
35
|
-
if (node.type === "Element") {
|
|
36
|
-
delete node.openingElement;
|
|
37
|
-
delete node.closingElement;
|
|
38
|
-
}
|
|
39
71
|
for (const key of Object.keys(node)) {
|
|
40
72
|
if (key === "parent" || key === "loc" || key === "range") continue;
|
|
41
73
|
const value = node[key];
|
|
@@ -96,6 +128,19 @@ function ensure_node_properties(node, code) {
|
|
|
96
128
|
else if (value && typeof value === "object" && value.type) ensure_node_properties(value, code);
|
|
97
129
|
}
|
|
98
130
|
}
|
|
131
|
+
function is_fatal_parser_diagnostic(error) {
|
|
132
|
+
return error?.code === DIAGNOSTIC_CODES.UNCLOSED_TAG || error?.code === DIAGNOSTIC_CODES.MISMATCHED_CLOSING_TAG;
|
|
133
|
+
}
|
|
134
|
+
function to_eslint_parse_error(error) {
|
|
135
|
+
const parse_error = new SyntaxError(error?.message || String(error));
|
|
136
|
+
const loc = error?.loc?.start;
|
|
137
|
+
if (loc) {
|
|
138
|
+
parse_error.lineNumber = loc.line;
|
|
139
|
+
parse_error.column = loc.column + 1;
|
|
140
|
+
}
|
|
141
|
+
if (typeof error?.start === "number") parse_error.index = error.start;
|
|
142
|
+
return parse_error;
|
|
143
|
+
}
|
|
99
144
|
/**
|
|
100
145
|
* ESLint parser for TSRX (.tsrx) files
|
|
101
146
|
*
|
|
@@ -104,8 +149,14 @@ function ensure_node_properties(node, code) {
|
|
|
104
149
|
*/
|
|
105
150
|
function parseForESLint(code, options) {
|
|
106
151
|
try {
|
|
107
|
-
const
|
|
152
|
+
const errors = [];
|
|
153
|
+
const ast = parseModule(code, options?.filePath, {
|
|
154
|
+
collect: true,
|
|
155
|
+
errors
|
|
156
|
+
});
|
|
108
157
|
if (!ast) throw new Error("Parser returned null or undefined AST");
|
|
158
|
+
const fatal_error = errors.find(is_fatal_parser_diagnostic);
|
|
159
|
+
if (fatal_error) throw to_eslint_parse_error(fatal_error);
|
|
109
160
|
normalize_tsrx_ast_for_eslint(ast);
|
|
110
161
|
ensure_node_properties(ast, code);
|
|
111
162
|
return {
|
|
@@ -129,10 +180,11 @@ function parseForESLint(code, options) {
|
|
|
129
180
|
comments: ast.comments || [],
|
|
130
181
|
tokens: ast.tokens || []
|
|
131
182
|
},
|
|
132
|
-
services: {},
|
|
183
|
+
services: { tsrxDiagnostics: errors },
|
|
133
184
|
visitorKeys
|
|
134
185
|
};
|
|
135
186
|
} catch (error) {
|
|
187
|
+
if (error instanceof SyntaxError && error.lineNumber != null) throw error;
|
|
136
188
|
throw new SyntaxError(`Failed to parse TSRX file: ${error.message || error}`);
|
|
137
189
|
}
|
|
138
190
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["parse_module"],"sources":["../src/index.ts"],"sourcesContent":["import type { Program } from 'estree';\nimport type { Linter } from 'eslint';\nimport { parseModule as parse_module } from '@tsrx/core';\n\ninterface ParseResult {\n\tast: Program;\n\tservices?: Record<string, any>;\n\tscopeManager?: any;\n\tvisitorKeys?: Record<string, string[]>;\n}\n\nconst visitorKeys: Record<string, string[]> = {\n\tProgram: ['body'],\n\tTsrxFragment: ['children'],\n\tTsxCompat: ['children'],\n\tElement: ['id', 'attributes', 'children'],\n\tAttribute: ['name', 'value'],\n\tText: ['expression'],\n\tTSRXExpression: ['expression'],\n\tStyleSheet: [],\n\tForOfStatement: ['left', 'right', 'body'],\n};\n\n/**\n * The TSRX parser's AST contains some redundant references (e.g. `Element.attributes`\n * and `Element.openingElement.attributes`) that are useful for formatters/source-maps.\n * ESLint's traverser will visit both paths and can trigger duplicate rule reports.\n *\n * For ESLint, we prune JSX wrapper nodes to keep a single traversal path.\n */\nfunction normalize_tsrx_ast_for_eslint(ast: any): void {\n\tconst seen = new Set<any>();\n\tconst visit = (node: any) => {\n\t\tif (!node || typeof node !== 'object') return;\n\t\tif (seen.has(node)) return;\n\t\tseen.add(node);\n\n\t\tif (node.type === 'Element') {\n\t\t\t// Avoid duplicate traversal of attributes/children through openingElement/closingElement.\n\t\t\t// The Element node itself carries the data ESLint rules care about.\n\t\t\tdelete node.openingElement;\n\t\t\tdelete node.closingElement;\n\t\t}\n\n\t\tfor (const key of Object.keys(node)) {\n\t\t\tif (key === 'parent' || key === 'loc' || key === 'range') continue;\n\t\t\tconst value = node[key];\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tfor (const child of value) visit(child);\n\t\t\t} else if (value && typeof value === 'object') {\n\t\t\t\tvisit(value);\n\t\t\t}\n\t\t}\n\t};\n\n\tvisit(ast);\n}\n\n/**\n * Recursively walks the AST and ensures all nodes have range and loc properties\n * ESLint's scope analyzer requires these properties on ALL nodes\n */\nfunction ensure_node_properties(node: any, code: string): void {\n\tif (!node || typeof node !== 'object') {\n\t\treturn;\n\t}\n\n\t// Ensure range property exists\n\tif (node.start !== undefined && node.end !== undefined && !node.range) {\n\t\tnode.range = [node.start, node.end];\n\t}\n\n\t// Ensure loc property exists\n\tif (!node.loc && node.start !== undefined && node.end !== undefined) {\n\t\tconst lines = code.split('\\n');\n\t\tlet current_pos = 0;\n\t\tlet start_line = 1;\n\t\tlet start_column = 0;\n\t\tlet end_line = 1;\n\t\tlet end_column = 0;\n\n\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\tconst line_length = lines[i].length + 1;\n\t\t\tif (current_pos + line_length > node.start) {\n\t\t\t\tstart_line = i + 1;\n\t\t\t\tstart_column = node.start - current_pos;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcurrent_pos += line_length;\n\t\t}\n\n\t\tcurrent_pos = 0;\n\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\tconst line_length = lines[i].length + 1;\n\t\t\tif (current_pos + line_length > node.end) {\n\t\t\t\tend_line = i + 1;\n\t\t\t\tend_column = node.end - current_pos;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcurrent_pos += line_length;\n\t\t}\n\n\t\tnode.loc = {\n\t\t\tstart: { line: start_line, column: start_column },\n\t\t\tend: { line: end_line, column: end_column },\n\t\t};\n\t}\n\n\tfor (const key in node) {\n\t\tif (key === 'parent' || key === 'loc' || key === 'range') {\n\t\t\tcontinue; // Skip these to avoid infinite loops\n\t\t}\n\n\t\tconst value = node[key];\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach((child) => ensure_node_properties(child, code));\n\t\t} else if (value && typeof value === 'object' && value.type) {\n\t\t\tensure_node_properties(value, code);\n\t\t}\n\t}\n}\n\n/**\n * ESLint parser for TSRX (.tsrx) files\n *\n * This parser uses the shared TSRX parser to parse .tsrx files\n * and returns an ESTree-compatible AST for ESLint to analyze.\n */\nexport function parseForESLint(code: string, options?: Linter.ParserOptions): ParseResult {\n\ttry {\n\t\t// Parse the TSRX source code using the shared TSRX parser\n\t\tconst ast = parse_module(code, options?.filePath) as any;\n\t\tif (!ast) throw new Error('Parser returned null or undefined AST');\n\n\t\t// Normalize for ESLint traversal (avoid duplicate node visits)\n\t\tnormalize_tsrx_ast_for_eslint(ast);\n\n\t\t// Recursively ensure all nodes have range and loc properties\n\t\tensure_node_properties(ast, code);\n\n\t\t// Create a properly structured AST object ensuring all required properties exist\n\t\tconst result: any = {\n\t\t\ttype: ast.type || 'Program',\n\t\t\tstart: ast.start !== undefined ? ast.start : 0,\n\t\t\tend: ast.end !== undefined ? ast.end : code.length,\n\t\t\tloc: ast.loc || {\n\t\t\t\tstart: { line: 1, column: 0 },\n\t\t\t\tend: { line: code.split('\\n').length, column: 0 },\n\t\t\t},\n\t\t\trange: ast.range || [0, code.length],\n\t\t\tbody: ast.body || [],\n\t\t\tsourceType: ast.sourceType || 'module',\n\t\t\tcomments: ast.comments || [],\n\t\t\ttokens: ast.tokens || [],\n\t\t};\n\n\t\treturn {\n\t\t\tast: result,\n\t\t\tservices: {},\n\t\t\tvisitorKeys,\n\t\t};\n\t} catch (error: any) {\n\t\t// Transform TSRX parse errors to ESLint-compatible format\n\t\tthrow new SyntaxError(`Failed to parse TSRX file: ${error.message || error}`);\n\t}\n}\n\n/**\n * Legacy parse function for older ESLint versions\n */\nexport function parse(code: string, options?: Linter.ParserOptions): Program {\n\tconst result = parseForESLint(code, options);\n\treturn result.ast;\n}\n\nexport default {\n\tparseForESLint,\n\tparse,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["parse_module"],"sources":["../src/index.ts"],"sourcesContent":["import type { Program } from 'estree';\nimport type { Linter } from 'eslint';\nimport { DIAGNOSTIC_CODES, parseModule as parse_module } from '@tsrx/core';\n\ninterface ParseResult {\n\tast: Program;\n\tservices?: Record<string, any>;\n\tscopeManager?: any;\n\tvisitorKeys?: Record<string, string[]>;\n}\n\nconst visitorKeys: Record<string, string[]> = {\n\tProgram: ['body'],\n\tJSXElement: ['openingElement', 'children', 'closingElement'],\n\tJSXOpeningElement: ['name', 'attributes'],\n\tJSXClosingElement: ['name'],\n\tJSXFragment: ['openingFragment', 'children', 'closingFragment'],\n\tJSXOpeningFragment: [],\n\tJSXClosingFragment: [],\n\tJSXExpressionContainer: ['expression'],\n\tJSXAttribute: ['name', 'value'],\n\tJSXSpreadAttribute: ['argument'],\n\tJSXIdentifier: [],\n\tJSXMemberExpression: ['object', 'property'],\n\tJSXNamespacedName: ['namespace', 'name'],\n\tJSXText: [],\n\tJSXStyleElement: ['openingElement', 'children', 'closingElement'],\n\tJSXIfExpression: ['test', 'consequent', 'alternate'],\n\tJSXForExpression: ['init', 'test', 'update', 'left', 'right', 'body', 'index', 'key', 'empty'],\n\tJSXSwitchExpression: ['discriminant', 'cases'],\n\tJSXTryExpression: ['block', 'handler', 'finalizer', 'pending'],\n\tJSXCodeBlock: ['body', 'render'],\n\tStyleSheet: [],\n\tForOfStatement: ['left', 'right', 'body'],\n};\n\n/**\n * Keep this hook for small ESLint-only AST normalizations.\n */\nfunction normalize_tsrx_ast_for_eslint(ast: any): void {\n\tconst seen = new Set<any>();\n\tconst visit = (node: any) => {\n\t\tif (!node || typeof node !== 'object') return;\n\t\tif (seen.has(node)) return;\n\t\tseen.add(node);\n\n\t\tfor (const key of Object.keys(node)) {\n\t\t\tif (key === 'parent' || key === 'loc' || key === 'range') continue;\n\t\t\tconst value = node[key];\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tfor (const child of value) visit(child);\n\t\t\t} else if (value && typeof value === 'object') {\n\t\t\t\tvisit(value);\n\t\t\t}\n\t\t}\n\t};\n\n\tvisit(ast);\n}\n\n/**\n * Recursively walks the AST and ensures all nodes have range and loc properties\n * ESLint's scope analyzer requires these properties on ALL nodes\n */\nfunction ensure_node_properties(node: any, code: string): void {\n\tif (!node || typeof node !== 'object') {\n\t\treturn;\n\t}\n\n\t// Ensure range property exists\n\tif (node.start !== undefined && node.end !== undefined && !node.range) {\n\t\tnode.range = [node.start, node.end];\n\t}\n\n\t// Ensure loc property exists\n\tif (!node.loc && node.start !== undefined && node.end !== undefined) {\n\t\tconst lines = code.split('\\n');\n\t\tlet current_pos = 0;\n\t\tlet start_line = 1;\n\t\tlet start_column = 0;\n\t\tlet end_line = 1;\n\t\tlet end_column = 0;\n\n\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\tconst line_length = lines[i].length + 1;\n\t\t\tif (current_pos + line_length > node.start) {\n\t\t\t\tstart_line = i + 1;\n\t\t\t\tstart_column = node.start - current_pos;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcurrent_pos += line_length;\n\t\t}\n\n\t\tcurrent_pos = 0;\n\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\tconst line_length = lines[i].length + 1;\n\t\t\tif (current_pos + line_length > node.end) {\n\t\t\t\tend_line = i + 1;\n\t\t\t\tend_column = node.end - current_pos;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcurrent_pos += line_length;\n\t\t}\n\n\t\tnode.loc = {\n\t\t\tstart: { line: start_line, column: start_column },\n\t\t\tend: { line: end_line, column: end_column },\n\t\t};\n\t}\n\n\tfor (const key in node) {\n\t\tif (key === 'parent' || key === 'loc' || key === 'range') {\n\t\t\tcontinue; // Skip these to avoid infinite loops\n\t\t}\n\n\t\tconst value = node[key];\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach((child) => ensure_node_properties(child, code));\n\t\t} else if (value && typeof value === 'object' && value.type) {\n\t\t\tensure_node_properties(value, code);\n\t\t}\n\t}\n}\n\nfunction is_fatal_parser_diagnostic(error: any): boolean {\n\treturn (\n\t\terror?.code === DIAGNOSTIC_CODES.UNCLOSED_TAG ||\n\t\terror?.code === DIAGNOSTIC_CODES.MISMATCHED_CLOSING_TAG\n\t);\n}\n\nfunction to_eslint_parse_error(error: any): SyntaxError {\n\tconst parse_error: any = new SyntaxError(error?.message || String(error));\n\tconst loc = error?.loc?.start;\n\tif (loc) {\n\t\tparse_error.lineNumber = loc.line;\n\t\tparse_error.column = loc.column + 1;\n\t}\n\tif (typeof error?.start === 'number') {\n\t\tparse_error.index = error.start;\n\t}\n\treturn parse_error;\n}\n\n/**\n * ESLint parser for TSRX (.tsrx) files\n *\n * This parser uses the shared TSRX parser to parse .tsrx files\n * and returns an ESTree-compatible AST for ESLint to analyze.\n */\nexport function parseForESLint(code: string, options?: Linter.ParserOptions): ParseResult {\n\ttry {\n\t\tconst errors: any[] = [];\n\t\t// Parse the TSRX source code using the shared TSRX parser\n\t\tconst ast = parse_module(code, options?.filePath, { collect: true, errors }) as any;\n\t\tif (!ast) throw new Error('Parser returned null or undefined AST');\n\n\t\tconst fatal_error = errors.find(is_fatal_parser_diagnostic);\n\t\tif (fatal_error) {\n\t\t\tthrow to_eslint_parse_error(fatal_error);\n\t\t}\n\n\t\t// Normalize for ESLint traversal (avoid duplicate node visits)\n\t\tnormalize_tsrx_ast_for_eslint(ast);\n\n\t\t// Recursively ensure all nodes have range and loc properties\n\t\tensure_node_properties(ast, code);\n\n\t\t// Create a properly structured AST object ensuring all required properties exist\n\t\tconst result: any = {\n\t\t\ttype: ast.type || 'Program',\n\t\t\tstart: ast.start !== undefined ? ast.start : 0,\n\t\t\tend: ast.end !== undefined ? ast.end : code.length,\n\t\t\tloc: ast.loc || {\n\t\t\t\tstart: { line: 1, column: 0 },\n\t\t\t\tend: { line: code.split('\\n').length, column: 0 },\n\t\t\t},\n\t\t\trange: ast.range || [0, code.length],\n\t\t\tbody: ast.body || [],\n\t\t\tsourceType: ast.sourceType || 'module',\n\t\t\tcomments: ast.comments || [],\n\t\t\ttokens: ast.tokens || [],\n\t\t};\n\n\t\treturn {\n\t\t\tast: result,\n\t\t\tservices: {\n\t\t\t\ttsrxDiagnostics: errors,\n\t\t\t},\n\t\t\tvisitorKeys,\n\t\t};\n\t} catch (error: any) {\n\t\tif (error instanceof SyntaxError && (error as any).lineNumber != null) {\n\t\t\tthrow error;\n\t\t}\n\t\t// Transform TSRX parse errors to ESLint-compatible format\n\t\tthrow new SyntaxError(`Failed to parse TSRX file: ${error.message || error}`);\n\t}\n}\n\n/**\n * Legacy parse function for older ESLint versions\n */\nexport function parse(code: string, options?: Linter.ParserOptions): Program {\n\tconst result = parseForESLint(code, options);\n\treturn result.ast;\n}\n\nexport default {\n\tparseForESLint,\n\tparse,\n};\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tsrx/eslint-parser",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.76",
|
|
4
4
|
"description": "ESLint parser for Ripple (.tsrx files)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.ts",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"eslint": ">=9.0.0"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@tsrx/core": "0.1.
|
|
36
|
+
"@tsrx/core": "0.1.24"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/eslint": "^9.6.1",
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Program } from 'estree';
|
|
2
2
|
import type { Linter } from 'eslint';
|
|
3
|
-
import { parseModule as parse_module } from '@tsrx/core';
|
|
3
|
+
import { DIAGNOSTIC_CODES, parseModule as parse_module } from '@tsrx/core';
|
|
4
4
|
|
|
5
5
|
interface ParseResult {
|
|
6
6
|
ast: Program;
|
|
@@ -11,22 +11,31 @@ interface ParseResult {
|
|
|
11
11
|
|
|
12
12
|
const visitorKeys: Record<string, string[]> = {
|
|
13
13
|
Program: ['body'],
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
JSXElement: ['openingElement', 'children', 'closingElement'],
|
|
15
|
+
JSXOpeningElement: ['name', 'attributes'],
|
|
16
|
+
JSXClosingElement: ['name'],
|
|
17
|
+
JSXFragment: ['openingFragment', 'children', 'closingFragment'],
|
|
18
|
+
JSXOpeningFragment: [],
|
|
19
|
+
JSXClosingFragment: [],
|
|
20
|
+
JSXExpressionContainer: ['expression'],
|
|
21
|
+
JSXAttribute: ['name', 'value'],
|
|
22
|
+
JSXSpreadAttribute: ['argument'],
|
|
23
|
+
JSXIdentifier: [],
|
|
24
|
+
JSXMemberExpression: ['object', 'property'],
|
|
25
|
+
JSXNamespacedName: ['namespace', 'name'],
|
|
26
|
+
JSXText: [],
|
|
27
|
+
JSXStyleElement: ['openingElement', 'children', 'closingElement'],
|
|
28
|
+
JSXIfExpression: ['test', 'consequent', 'alternate'],
|
|
29
|
+
JSXForExpression: ['init', 'test', 'update', 'left', 'right', 'body', 'index', 'key', 'empty'],
|
|
30
|
+
JSXSwitchExpression: ['discriminant', 'cases'],
|
|
31
|
+
JSXTryExpression: ['block', 'handler', 'finalizer', 'pending'],
|
|
32
|
+
JSXCodeBlock: ['body', 'render'],
|
|
20
33
|
StyleSheet: [],
|
|
21
34
|
ForOfStatement: ['left', 'right', 'body'],
|
|
22
35
|
};
|
|
23
36
|
|
|
24
37
|
/**
|
|
25
|
-
*
|
|
26
|
-
* and `Element.openingElement.attributes`) that are useful for formatters/source-maps.
|
|
27
|
-
* ESLint's traverser will visit both paths and can trigger duplicate rule reports.
|
|
28
|
-
*
|
|
29
|
-
* For ESLint, we prune JSX wrapper nodes to keep a single traversal path.
|
|
38
|
+
* Keep this hook for small ESLint-only AST normalizations.
|
|
30
39
|
*/
|
|
31
40
|
function normalize_tsrx_ast_for_eslint(ast: any): void {
|
|
32
41
|
const seen = new Set<any>();
|
|
@@ -35,13 +44,6 @@ function normalize_tsrx_ast_for_eslint(ast: any): void {
|
|
|
35
44
|
if (seen.has(node)) return;
|
|
36
45
|
seen.add(node);
|
|
37
46
|
|
|
38
|
-
if (node.type === 'Element') {
|
|
39
|
-
// Avoid duplicate traversal of attributes/children through openingElement/closingElement.
|
|
40
|
-
// The Element node itself carries the data ESLint rules care about.
|
|
41
|
-
delete node.openingElement;
|
|
42
|
-
delete node.closingElement;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
47
|
for (const key of Object.keys(node)) {
|
|
46
48
|
if (key === 'parent' || key === 'loc' || key === 'range') continue;
|
|
47
49
|
const value = node[key];
|
|
@@ -120,6 +122,26 @@ function ensure_node_properties(node: any, code: string): void {
|
|
|
120
122
|
}
|
|
121
123
|
}
|
|
122
124
|
|
|
125
|
+
function is_fatal_parser_diagnostic(error: any): boolean {
|
|
126
|
+
return (
|
|
127
|
+
error?.code === DIAGNOSTIC_CODES.UNCLOSED_TAG ||
|
|
128
|
+
error?.code === DIAGNOSTIC_CODES.MISMATCHED_CLOSING_TAG
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function to_eslint_parse_error(error: any): SyntaxError {
|
|
133
|
+
const parse_error: any = new SyntaxError(error?.message || String(error));
|
|
134
|
+
const loc = error?.loc?.start;
|
|
135
|
+
if (loc) {
|
|
136
|
+
parse_error.lineNumber = loc.line;
|
|
137
|
+
parse_error.column = loc.column + 1;
|
|
138
|
+
}
|
|
139
|
+
if (typeof error?.start === 'number') {
|
|
140
|
+
parse_error.index = error.start;
|
|
141
|
+
}
|
|
142
|
+
return parse_error;
|
|
143
|
+
}
|
|
144
|
+
|
|
123
145
|
/**
|
|
124
146
|
* ESLint parser for TSRX (.tsrx) files
|
|
125
147
|
*
|
|
@@ -128,10 +150,16 @@ function ensure_node_properties(node: any, code: string): void {
|
|
|
128
150
|
*/
|
|
129
151
|
export function parseForESLint(code: string, options?: Linter.ParserOptions): ParseResult {
|
|
130
152
|
try {
|
|
153
|
+
const errors: any[] = [];
|
|
131
154
|
// Parse the TSRX source code using the shared TSRX parser
|
|
132
|
-
const ast = parse_module(code, options?.filePath) as any;
|
|
155
|
+
const ast = parse_module(code, options?.filePath, { collect: true, errors }) as any;
|
|
133
156
|
if (!ast) throw new Error('Parser returned null or undefined AST');
|
|
134
157
|
|
|
158
|
+
const fatal_error = errors.find(is_fatal_parser_diagnostic);
|
|
159
|
+
if (fatal_error) {
|
|
160
|
+
throw to_eslint_parse_error(fatal_error);
|
|
161
|
+
}
|
|
162
|
+
|
|
135
163
|
// Normalize for ESLint traversal (avoid duplicate node visits)
|
|
136
164
|
normalize_tsrx_ast_for_eslint(ast);
|
|
137
165
|
|
|
@@ -156,10 +184,15 @@ export function parseForESLint(code: string, options?: Linter.ParserOptions): Pa
|
|
|
156
184
|
|
|
157
185
|
return {
|
|
158
186
|
ast: result,
|
|
159
|
-
services: {
|
|
187
|
+
services: {
|
|
188
|
+
tsrxDiagnostics: errors,
|
|
189
|
+
},
|
|
160
190
|
visitorKeys,
|
|
161
191
|
};
|
|
162
192
|
} catch (error: any) {
|
|
193
|
+
if (error instanceof SyntaxError && (error as any).lineNumber != null) {
|
|
194
|
+
throw error;
|
|
195
|
+
}
|
|
163
196
|
// Transform TSRX parse errors to ESLint-compatible format
|
|
164
197
|
throw new SyntaxError(`Failed to parse TSRX file: ${error.message || error}`);
|
|
165
198
|
}
|