From 33735b90fe61341f1831fdc6f9922a251069d73b Mon Sep 17 00:00:00 2001 From: Lauren Tan Date: Fri, 14 Oct 2022 17:36:19 -0400 Subject: [PATCH] Add a ts:analyze-trace command MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I think all of us have noticed TS slowing to a crawl in the past couple of weeks and I was curious what exactly was causing it. This adds a yarn command to generate a TS trace and then runs a script on it to identify any hot spots during compilation. Example trace and hot spot analysis: ``` yarn run v1.22.19 $ scripts/ts-analyze-trace.sh Hot Spots ├─ Check file [35m/users/laurentan/code/react-forget/forget/src/ir/[36mbabel-utils.ts[39m[35m[39m (2326ms) │ └─ Check expression from (line 141, char 5) to (line 141, char 19) (1760ms) │ └─ Check expression from (line 141, char 14) to (line 141, char 18) (1760ms) │ └─ Compare types 658 and 607 (1759ms) │ ├─ {"id":658,"kind":"GenericInstantiation","name":"NodePath","instantiatedType":350,"typeArguments":[657],"location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@types/babel__traverse[39m[35m/index.d.ts[39m","line":237,"char":1}} │ │ ├─ {"id":350,"kind":"GenericType","name":"NodePath","typeArguments":[351],"location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@types/babel__traverse[39m[35m/index.d.ts[39m","line":237,"char":1}} │ │ │ └─ {"id":351,"kind":"TypeParameter","name":"T","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@types/babel__traverse[39m[35m/index.d.ts[39m","line":237,"char":23}} │ │ └─ {"id":657,"kind":"Union","count":2,"types":[430,452]} │ │ ├─ {"id":430,"kind":"Object","name":"Identifier","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":156,"char":1}} │ │ └─ {"id":452,"kind":"Object","name":"JSXIdentifier","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":982,"char":1}} │ └─ {"id":607,"kind":"GenericInstantiation","name":"NodePath","instantiatedType":350,"typeArguments":[606],"location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@types/babel__traverse[39m[35m/index.d.ts[39m","line":237,"char":1}} │ ├─ {"id":350,"kind":"GenericType","name":"NodePath","typeArguments":[351],"location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@types/babel__traverse[39m[35m/index.d.ts[39m","line":237,"char":1}} │ │ └─ {"id":351,"kind":"TypeParameter","name":"T","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@types/babel__traverse[39m[35m/index.d.ts[39m","line":237,"char":23}} │ └─ {"id":606,"kind":"AliasedUnion","name":"Node","count":252,"types":[353,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605],"location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":38,"char":1}} │ ├─ {"id":353,"kind":"Object","name":"AnyTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":625,"char":1}} │ ├─ {"id":355,"kind":"Object","name":"ArgumentPlaceholder","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1035,"char":1}} │ ├─ {"id":356,"kind":"Object","name":"ArrayExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":39,"char":1}} │ ├─ {"id":357,"kind":"Object","name":"ArrayPattern","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":356,"char":1}} │ ├─ {"id":358,"kind":"Object","name":"ArrayTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":628,"char":1}} │ ├─ {"id":359,"kind":"Object","name":"ArrowFunctionExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":363,"char":1}} │ ├─ {"id":360,"kind":"Object","name":"AssignmentExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":43,"char":1}} │ ├─ {"id":361,"kind":"Object","name":"AssignmentPattern","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":349,"char":1}} │ ├─ {"id":362,"kind":"Object","name":"AwaitExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":523,"char":1}} │ ├─ {"id":363,"kind":"Object","name":"BigIntLiteral","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":530,"char":1}} │ ├─ {"id":364,"kind":"Object","name":"BinaryExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":49,"char":1}} │ ├─ {"id":365,"kind":"Object","name":"BindExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1038,"char":1}} │ ├─ {"id":366,"kind":"Object","name":"BlockStatement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":67,"char":1}} │ ├─ {"id":367,"kind":"Object","name":"BooleanLiteral","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":192,"char":1}} │ ├─ {"id":368,"kind":"Object","name":"BooleanLiteralTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":635,"char":1}} │ ├─ {"id":369,"kind":"Object","name":"BooleanTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":632,"char":1}} │ ├─ {"id":370,"kind":"Object","name":"BreakStatement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":72,"char":1}} │ ├─ {"id":371,"kind":"Object","name":"CallExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":76,"char":1}} │ ├─ {"id":372,"kind":"Object","name":"CatchClause","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":84,"char":1}} │ ├─ {"id":373,"kind":"Object","name":"ClassAccessorProperty","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":570,"char":1}} │ ├─ {"id":374,"kind":"Object","name":"ClassBody","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":374,"char":1}} │ ├─ {"id":375,"kind":"Object","name":"ClassDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":389,"char":1}} │ ├─ {"id":376,"kind":"Object","name":"ClassExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":378,"char":1}} │ ├─ {"id":377,"kind":"Object","name":"ClassImplements","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":642,"char":1}} │ ├─ {"id":378,"kind":"Object","name":"ClassMethod","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":460,"char":1}} │ ├─ {"id":379,"kind":"Object","name":"ClassPrivateMethod","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":598,"char":1}} │ ├─ {"id":380,"kind":"Object","name":"ClassPrivateProperty","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":587,"char":1}} │ ├─ {"id":381,"kind":"Object","name":"ClassProperty","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":553,"char":1}} │ ├─ {"id":382,"kind":"Object","name":"ConditionalExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":89,"char":1}} │ ├─ {"id":383,"kind":"Object","name":"ContinueStatement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":95,"char":1}} │ ├─ {"id":384,"kind":"Object","name":"DebuggerStatement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":99,"char":1}} │ ├─ {"id":385,"kind":"Object","name":"DecimalLiteral","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1069,"char":1}} │ ├─ {"id":386,"kind":"Object","name":"DeclareClass","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":647,"char":1}} │ ├─ {"id":387,"kind":"Object","name":"DeclareExportAllDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":704,"char":1}} │ ├─ {"id":388,"kind":"Object","name":"DeclareExportDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":697,"char":1}} │ ├─ {"id":389,"kind":"Object","name":"DeclareFunction","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":656,"char":1}} │ ├─ {"id":390,"kind":"Object","name":"DeclareInterface","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":661,"char":1}} │ ├─ {"id":391,"kind":"Object","name":"DeclareModule","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":670,"char":1}} │ ├─ {"id":392,"kind":"Object","name":"DeclareModuleExports","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":676,"char":1}} │ ├─ {"id":393,"kind":"Object","name":"DeclareOpaqueType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":686,"char":1}} │ ├─ {"id":394,"kind":"Object","name":"DeclareTypeAlias","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":680,"char":1}} │ ├─ {"id":395,"kind":"Object","name":"DeclareVariable","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":693,"char":1}} │ ├─ {"id":396,"kind":"Object","name":"DeclaredPredicate","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":709,"char":1}} │ ├─ {"id":397,"kind":"Object","name":"Decorator","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1048,"char":1}} │ ├─ {"id":398,"kind":"Object","name":"Directive","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":59,"char":1}} │ ├─ {"id":399,"kind":"Object","name":"DirectiveLiteral","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":63,"char":1}} │ ├─ {"id":400,"kind":"Object","name":"DoExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1052,"char":1}} │ ├─ {"id":401,"kind":"Object","name":"DoWhileStatement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":102,"char":1}} │ ├─ {"id":402,"kind":"Object","name":"EmptyStatement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":107,"char":1}} │ ├─ {"id":403,"kind":"Object","name":"EmptyTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":764,"char":1}} │ ├─ {"id":404,"kind":"Object","name":"EnumBooleanBody","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":902,"char":1}} │ ├─ {"id":405,"kind":"Object","name":"EnumBooleanMember","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":925,"char":1}} │ ├─ {"id":406,"kind":"Object","name":"EnumDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":897,"char":1}} │ ├─ {"id":407,"kind":"Object","name":"EnumDefaultedMember","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":940,"char":1}} │ ├─ {"id":408,"kind":"Object","name":"EnumNumberBody","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":908,"char":1}} │ ├─ {"id":409,"kind":"Object","name":"EnumNumberMember","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":930,"char":1}} │ ├─ {"id":410,"kind":"Object","name":"EnumStringBody","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":914,"char":1}} │ ├─ {"id":411,"kind":"Object","name":"EnumStringMember","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":935,"char":1}} │ ├─ {"id":412,"kind":"Object","name":"EnumSymbolBody","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":920,"char":1}} │ ├─ {"id":413,"kind":"Object","name":"ExistsTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":713,"char":1}} │ ├─ {"id":414,"kind":"Object","name":"ExportAllDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":402,"char":1}} │ ├─ {"id":415,"kind":"Object","name":"ExportDefaultDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":408,"char":1}} │ ├─ {"id":416,"kind":"Object","name":"ExportDefaultSpecifier","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1057,"char":1}} │ ├─ {"id":417,"kind":"Object","name":"ExportNamedDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":413,"char":1}} │ ├─ {"id":418,"kind":"Object","name":"ExportNamespaceSpecifier","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":534,"char":1}} │ ├─ {"id":419,"kind":"Object","name":"ExportSpecifier","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":421,"char":1}} │ ├─ {"id":420,"kind":"Object","name":"ExpressionStatement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":110,"char":1}} │ ├─ {"id":421,"kind":"Object","name":"File","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":114,"char":1}} │ ├─ {"id":422,"kind":"Object","name":"ForInStatement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":120,"char":1}} │ ├─ {"id":423,"kind":"Object","name":"ForOfStatement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":427,"char":1}} │ ├─ {"id":424,"kind":"Object","name":"ForStatement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":126,"char":1}} │ ├─ {"id":425,"kind":"Object","name":"FunctionDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":133,"char":1}} │ ├─ {"id":426,"kind":"Object","name":"FunctionExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":145,"char":1}} │ ├─ {"id":427,"kind":"Object","name":"FunctionTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":716,"char":1}} │ ├─ {"id":428,"kind":"Object","name":"FunctionTypeParam","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":724,"char":1}} │ ├─ {"id":429,"kind":"Object","name":"GenericTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":730,"char":1}} │ ├─ {"id":430,"kind":"Object","name":"Identifier","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":156,"char":1}} │ ├─ {"id":431,"kind":"Object","name":"IfStatement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":163,"char":1}} │ ├─ {"id":432,"kind":"Object","name":"Import","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":527,"char":1}} │ ├─ {"id":433,"kind":"Object","name":"ImportAttribute","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1043,"char":1}} │ ├─ {"id":434,"kind":"Object","name":"ImportDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":434,"char":1}} │ ├─ {"id":435,"kind":"Object","name":"ImportDefaultSpecifier","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":441,"char":1}} │ ├─ {"id":436,"kind":"Object","name":"ImportNamespaceSpecifier","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":445,"char":1}} │ ├─ {"id":437,"kind":"Object","name":"ImportSpecifier","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":449,"char":1}} │ ├─ {"id":438,"kind":"Object","name":"IndexedAccessType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":944,"char":1}} │ ├─ {"id":439,"kind":"Object","name":"InferredPredicate","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":735,"char":1}} │ ├─ {"id":440,"kind":"Object","name":"InterfaceDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":743,"char":1}} │ ├─ {"id":441,"kind":"Object","name":"InterfaceExtends","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":738,"char":1}} │ ├─ {"id":442,"kind":"Object","name":"InterfaceTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":752,"char":1}} │ ├─ {"id":443,"kind":"Object","name":"InterpreterDirective","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":55,"char":1}} │ ├─ {"id":444,"kind":"Object","name":"IntersectionTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":757,"char":1}} │ ├─ {"id":445,"kind":"Object","name":"JSXAttribute","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":955,"char":1}} │ ├─ {"id":446,"kind":"Object","name":"JSXClosingElement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":960,"char":1}} │ ├─ {"id":447,"kind":"Object","name":"JSXClosingFragment","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1020,"char":1}} │ ├─ {"id":448,"kind":"Object","name":"JSXElement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":964,"char":1}} │ ├─ {"id":449,"kind":"Object","name":"JSXEmptyExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":971,"char":1}} │ ├─ {"id":450,"kind":"Object","name":"JSXExpressionContainer","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":974,"char":1}} │ ├─ {"id":451,"kind":"Object","name":"JSXFragment","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1011,"char":1}} │ ├─ {"id":452,"kind":"Object","name":"JSXIdentifier","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":982,"char":1}} │ ├─ {"id":453,"kind":"Object","name":"JSXMemberExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":986,"char":1}} │ ├─ {"id":454,"kind":"Object","name":"JSXNamespacedName","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":991,"char":1}} │ ├─ {"id":455,"kind":"Object","name":"JSXOpeningElement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":996,"char":1}} │ ├─ {"id":456,"kind":"Object","name":"JSXOpeningFragment","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1017,"char":1}} │ ├─ {"id":457,"kind":"Object","name":"JSXSpreadAttribute","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1003,"char":1}} │ ├─ {"id":458,"kind":"Object","name":"JSXSpreadChild","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":978,"char":1}} │ ├─ {"id":459,"kind":"Object","name":"JSXText","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1007,"char":1}} │ ├─ {"id":460,"kind":"Object","name":"LabeledStatement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":169,"char":1}} │ ├─ {"id":461,"kind":"Object","name":"LogicalExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":209,"char":1}} │ ├─ {"id":462,"kind":"Object","name":"MemberExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":215,"char":1}} │ ├─ {"id":463,"kind":"Object","name":"MetaProperty","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":455,"char":1}} │ ├─ {"id":464,"kind":"Object","name":"MixedTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":761,"char":1}} │ ├─ {"id":465,"kind":"Object","name":"ModuleExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1073,"char":1}} │ ├─ {"id":466,"kind":"Object","name":"NewExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":222,"char":1}} │ ├─ {"id":467,"kind":"Object","name":"Noop","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1023,"char":1}} │ ├─ {"id":468,"kind":"Object","name":"NullLiteral","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":189,"char":1}} │ ├─ {"id":469,"kind":"Object","name":"NullLiteralTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":639,"char":1}} │ ├─ {"id":470,"kind":"Object","name":"NullableTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":767,"char":1}} │ ├─ {"id":471,"kind":"Object","name":"NumberLiteral$1","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":185,"char":1}} │ ├─ {"id":472,"kind":"Object","name":"NumberLiteralTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":771,"char":1}} │ ├─ {"id":473,"kind":"Object","name":"NumberTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":775,"char":1}} │ ├─ {"id":474,"kind":"Object","name":"NumericLiteral","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":178,"char":1}} │ ├─ {"id":475,"kind":"Object","name":"ObjectExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":238,"char":1}} │ ├─ {"id":476,"kind":"Object","name":"ObjectMethod","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":242,"char":1}} │ ├─ {"id":477,"kind":"Object","name":"ObjectPattern","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":479,"char":1}} │ ├─ {"id":478,"kind":"Object","name":"ObjectProperty","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":255,"char":1}} │ ├─ {"id":479,"kind":"Object","name":"ObjectTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":778,"char":1}} │ ├─ {"id":480,"kind":"Object","name":"ObjectTypeCallProperty","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":795,"char":1}} │ ├─ {"id":481,"kind":"Object","name":"ObjectTypeIndexer","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":800,"char":1}} │ ├─ {"id":482,"kind":"Object","name":"ObjectTypeInternalSlot","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":787,"char":1}} │ ├─ {"id":483,"kind":"Object","name":"ObjectTypeProperty","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":808,"char":1}} │ ├─ {"id":484,"kind":"Object","name":"ObjectTypeSpreadProperty","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":819,"char":1}} │ ├─ {"id":485,"kind":"Object","name":"OpaqueType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":823,"char":1}} │ ├─ {"id":486,"kind":"Object","name":"OptionalCallExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":545,"char":1}} │ ├─ {"id":487,"kind":"Object","name":"OptionalIndexedAccessType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":949,"char":1}} │ ├─ {"id":488,"kind":"Object","name":"OptionalMemberExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":538,"char":1}} │ ├─ {"id":489,"kind":"Object","name":"ParenthesizedExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":288,"char":1}} │ ├─ {"id":490,"kind":"Object","name":"PipelineBareFunction","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1084,"char":1}} │ ├─ {"id":491,"kind":"Object","name":"PipelinePrimaryTopicReference","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1088,"char":1}} │ ├─ {"id":492,"kind":"Object","name":"PipelineTopicExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1080,"char":1}} │ ├─ {"id":493,"kind":"Object","name":"Placeholder","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1026,"char":1}} │ ├─ {"id":494,"kind":"Object","name":"PrivateName","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":617,"char":1}} │ ├─ {"id":495,"kind":"Object","name":"Program","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":230,"char":1}} │ ├─ {"id":496,"kind":"Object","name":"QualifiedTypeIdentifier","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":830,"char":1}} │ ├─ {"id":497,"kind":"Object","name":"RecordExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1061,"char":1}} │ ├─ {"id":498,"kind":"Object","name":"RegExpLiteral","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":196,"char":1}} │ ├─ {"id":499,"kind":"Object","name":"RegexLiteral$1","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":204,"char":1}} │ ├─ {"id":500,"kind":"Object","name":"RestElement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":263,"char":1}} │ ├─ {"id":501,"kind":"Object","name":"RestProperty$1","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":273,"char":1}} │ ├─ {"id":502,"kind":"Object","name":"ReturnStatement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":280,"char":1}} │ ├─ {"id":503,"kind":"Object","name":"SequenceExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":284,"char":1}} │ ├─ {"id":504,"kind":"Object","name":"SpreadElement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":485,"char":1}} │ ├─ {"id":505,"kind":"Object","name":"SpreadProperty$1","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":492,"char":1}} │ ├─ {"id":506,"kind":"Object","name":"StaticBlock","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":621,"char":1}} │ ├─ {"id":507,"kind":"Object","name":"StringLiteral","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":174,"char":1}} │ ├─ {"id":508,"kind":"Object","name":"StringLiteralTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":835,"char":1}} │ ├─ {"id":509,"kind":"Object","name":"StringTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":839,"char":1}} │ ├─ {"id":510,"kind":"Object","name":"Super","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":496,"char":1}} │ ├─ {"id":511,"kind":"Object","name":"SwitchCase","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":292,"char":1}} │ ├─ {"id":512,"kind":"Object","name":"SwitchStatement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":297,"char":1}} │ ├─ {"id":513,"kind":"Object","name":"SymbolTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":842,"char":1}} │ ├─ {"id":514,"kind":"Object","name":"TSAnyKeyword","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1171,"char":1}} │ ├─ {"id":515,"kind":"Object","name":"TSArrayType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1246,"char":1}} │ ├─ {"id":516,"kind":"Object","name":"TSAsExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1342,"char":1}} │ ├─ {"id":517,"kind":"Object","name":"TSBigIntKeyword","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1177,"char":1}} │ ├─ {"id":518,"kind":"Object","name":"TSBooleanKeyword","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1174,"char":1}} │ ├─ {"id":519,"kind":"Object","name":"TSCallSignatureDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1132,"char":1}} │ ├─ {"id":520,"kind":"Object","name":"TSConditionalType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1276,"char":1}} │ ├─ {"id":521,"kind":"Object","name":"TSConstructSignatureDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1138,"char":1}} │ ├─ {"id":522,"kind":"Object","name":"TSConstructorType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1219,"char":1}} │ ├─ {"id":523,"kind":"Object","name":"TSDeclareFunction","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1099,"char":1}} │ ├─ {"id":524,"kind":"Object","name":"TSDeclareMethod","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1109,"char":1}} │ ├─ {"id":525,"kind":"Object","name":"TSEnumDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1352,"char":1}} │ ├─ {"id":526,"kind":"Object","name":"TSEnumMember","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1360,"char":1}} │ ├─ {"id":527,"kind":"Object","name":"TSExportAssignment","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1397,"char":1}} │ ├─ {"id":528,"kind":"Object","name":"TSExpressionWithTypeArguments","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1313,"char":1}} │ ├─ {"id":529,"kind":"Object","name":"TSExternalModuleReference","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1389,"char":1}} │ ├─ {"id":530,"kind":"Object","name":"TSFunctionType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1213,"char":1}} │ ├─ {"id":531,"kind":"Object","name":"TSImportEqualsDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1382,"char":1}} │ ├─ {"id":532,"kind":"Object","name":"TSImportType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1376,"char":1}} │ ├─ {"id":533,"kind":"Object","name":"TSIndexSignature","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1164,"char":1}} │ ├─ {"id":534,"kind":"Object","name":"TSIndexedAccessType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1296,"char":1}} │ ├─ {"id":535,"kind":"Object","name":"TSInferType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1283,"char":1}} │ ├─ {"id":536,"kind":"Object","name":"TSInstantiationExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1337,"char":1}} │ ├─ {"id":537,"kind":"Object","name":"TSInterfaceBody","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1326,"char":1}} │ ├─ {"id":538,"kind":"Object","name":"TSInterfaceDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1318,"char":1}} │ ├─ {"id":539,"kind":"Object","name":"TSIntersectionType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1272,"char":1}} │ ├─ {"id":540,"kind":"Object","name":"TSIntrinsicKeyword","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1180,"char":1}} │ ├─ {"id":541,"kind":"Object","name":"TSLiteralType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1309,"char":1}} │ ├─ {"id":542,"kind":"Object","name":"TSMappedType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1301,"char":1}} │ ├─ {"id":543,"kind":"Object","name":"TSMethodSignature","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1154,"char":1}} │ ├─ {"id":544,"kind":"Object","name":"TSModuleBlock","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1372,"char":1}} │ ├─ {"id":545,"kind":"Object","name":"TSModuleDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1365,"char":1}} │ ├─ {"id":546,"kind":"Object","name":"TSNamedTupleMember","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1262,"char":1}} │ ├─ {"id":547,"kind":"Object","name":"TSNamespaceExportDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1401,"char":1}} │ ├─ {"id":548,"kind":"Object","name":"TSNeverKeyword","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1183,"char":1}} │ ├─ {"id":549,"kind":"Object","name":"TSNonNullExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1393,"char":1}} │ ├─ {"id":550,"kind":"Object","name":"TSNullKeyword","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1186,"char":1}} │ ├─ {"id":551,"kind":"Object","name":"TSNumberKeyword","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1189,"char":1}} │ ├─ {"id":552,"kind":"Object","name":"TSObjectKeyword","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1192,"char":1}} │ ├─ {"id":553,"kind":"Object","name":"TSOptionalType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1254,"char":1}} │ ├─ {"id":554,"kind":"Object","name":"TSParameterProperty","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1091,"char":1}} │ ├─ {"id":555,"kind":"Object","name":"TSParenthesizedType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1287,"char":1}} │ ├─ {"id":556,"kind":"Object","name":"TSPropertySignature","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1144,"char":1}} │ ├─ {"id":557,"kind":"Object","name":"TSQualifiedName","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1127,"char":1}} │ ├─ {"id":558,"kind":"Object","name":"TSRestType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1258,"char":1}} │ ├─ {"id":559,"kind":"Object","name":"TSStringKeyword","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1195,"char":1}} │ ├─ {"id":560,"kind":"Object","name":"TSSymbolKeyword","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1198,"char":1}} │ ├─ {"id":561,"kind":"Object","name":"TSThisType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1210,"char":1}} │ ├─ {"id":562,"kind":"Object","name":"TSTupleType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1250,"char":1}} │ ├─ {"id":563,"kind":"Object","name":"TSTypeAliasDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1330,"char":1}} │ ├─ {"id":564,"kind":"Object","name":"TSTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1405,"char":1}} │ ├─ {"id":565,"kind":"Object","name":"TSTypeAssertion","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1347,"char":1}} │ ├─ {"id":566,"kind":"Object","name":"TSTypeLiteral","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1242,"char":1}} │ ├─ {"id":567,"kind":"Object","name":"TSTypeOperator","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1291,"char":1}} │ ├─ {"id":568,"kind":"Object","name":"TSTypeParameter","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1417,"char":1}} │ ├─ {"id":569,"kind":"Object","name":"TSTypeParameterDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1413,"char":1}} │ ├─ {"id":570,"kind":"Object","name":"TSTypeParameterInstantiation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1409,"char":1}} │ ├─ {"id":571,"kind":"Object","name":"TSTypePredicate","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1231,"char":1}} │ ├─ {"id":572,"kind":"Object","name":"TSTypeQuery","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1237,"char":1}} │ ├─ {"id":573,"kind":"Object","name":"TSTypeReference","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1226,"char":1}} │ ├─ {"id":574,"kind":"Object","name":"TSUndefinedKeyword","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1201,"char":1}} │ ├─ {"id":575,"kind":"Object","name":"TSUnionType","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1268,"char":1}} │ ├─ {"id":576,"kind":"Object","name":"TSUnknownKeyword","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1204,"char":1}} │ ├─ {"id":577,"kind":"Object","name":"TSVoidKeyword","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1207,"char":1}} │ ├─ {"id":578,"kind":"Object","name":"TaggedTemplateExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":499,"char":1}} │ ├─ {"id":579,"kind":"Object","name":"TemplateElement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":505,"char":1}} │ ├─ {"id":580,"kind":"Object","name":"TemplateLiteral","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":513,"char":1}} │ ├─ {"id":581,"kind":"Object","name":"ThisExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":302,"char":1}} │ ├─ {"id":582,"kind":"Object","name":"ThisTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":845,"char":1}} │ ├─ {"id":583,"kind":"Object","name":"ThrowStatement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":305,"char":1}} │ ├─ {"id":584,"kind":"Object","name":"TopicReference","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1077,"char":1}} │ ├─ {"id":585,"kind":"Object","name":"TryStatement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":309,"char":1}} │ ├─ {"id":586,"kind":"Object","name":"TupleExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1065,"char":1}} │ ├─ {"id":587,"kind":"Object","name":"TupleTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":848,"char":1}} │ ├─ {"id":588,"kind":"Object","name":"TypeAlias","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":856,"char":1}} │ ├─ {"id":589,"kind":"Object","name":"TypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":862,"char":1}} │ ├─ {"id":590,"kind":"Object","name":"TypeCastExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":866,"char":1}} │ ├─ {"id":591,"kind":"Object","name":"TypeParameter","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":871,"char":1}} │ ├─ {"id":592,"kind":"Object","name":"TypeParameterDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":878,"char":1}} │ ├─ {"id":593,"kind":"Object","name":"TypeParameterInstantiation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":882,"char":1}} │ ├─ {"id":594,"kind":"Object","name":"TypeofTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":852,"char":1}} │ ├─ {"id":595,"kind":"Object","name":"UnaryExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":315,"char":1}} │ ├─ {"id":596,"kind":"Object","name":"UnionTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":886,"char":1}} │ ├─ {"id":597,"kind":"Object","name":"UpdateExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":321,"char":1}} │ ├─ {"id":598,"kind":"Object","name":"V8IntrinsicIdentifier","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":1031,"char":1}} │ ├─ {"id":599,"kind":"Object","name":"VariableDeclaration","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":327,"char":1}} │ ├─ {"id":600,"kind":"Object","name":"VariableDeclarator","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":333,"char":1}} │ ├─ {"id":601,"kind":"Object","name":"Variance","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":890,"char":1}} │ ├─ {"id":602,"kind":"Object","name":"VoidTypeAnnotation","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":894,"char":1}} │ ├─ {"id":603,"kind":"Object","name":"WhileStatement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":339,"char":1}} │ ├─ {"id":604,"kind":"Object","name":"WithStatement","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":344,"char":1}} │ └─ {"id":605,"kind":"Object","name":"YieldExpression","location":{"path":"[35m/users/laurentan/code/react-forget/forget/node_modules/[36m@babel/types[39m[35m/lib/index.d.ts[39m","line":518,"char":1}} └─ Check file [35m/users/laurentan/code/react-forget/forget/src/[36mdiagnostic.ts[39m[35m[39m (809ms) └─ Check expression from (line 222, char 14) to (line 228, char 8) (698ms) └─ Check expression from (line 227, char 21) to (line 227, char 74) (697ms) └─ Check expression from (line 227, char 29) to (line 227, char 61) (697ms) └─ Check expression from (line 227, char 39) to (line 227, char 60) (697ms) No duplicate packages found Done in 16.27s. ``` --- compiler/forget/package.json | 3 ++- compiler/forget/scripts/ts-analyze-trace.sh | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100755 compiler/forget/scripts/ts-analyze-trace.sh diff --git a/compiler/forget/package.json b/compiler/forget/package.json index c2982f58e1..c4abdc0a94 100644 --- a/compiler/forget/package.json +++ b/compiler/forget/package.json @@ -12,7 +12,8 @@ "bundle:meta": "scripts/bundle-meta.sh", "dev": "concurrently \"yarn:build --watch\" \"yarn:playground\"", "playground": "cd packages/playground && yarn && yarn dev", - "test": "yarn build && jest" + "test": "yarn build && jest", + "ts:analyze-trace": "scripts/ts-analyze-trace.sh" }, "repository": { "type": "git", diff --git a/compiler/forget/scripts/ts-analyze-trace.sh b/compiler/forget/scripts/ts-analyze-trace.sh new file mode 100755 index 0000000000..7351272888 --- /dev/null +++ b/compiler/forget/scripts/ts-analyze-trace.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# Generates a TypeScript performance trace in a tmp folder, then runs the analyze-trace npm module +# to identify any hotspots that might cause slow compilation +# See https://github.com/microsoft/typescript-analyze-trace for CLI args + +set -eo pipefail + +tmp_dir=$(mktemp -d -t forget-XXXXXXXXXX) +tsc -p ./tsconfig.json --generateTrace $tmp_dir --incremental false && npx @typescript/analyze-trace $tmp_dir "$@"