@appthreat/atom-parsetools 1.1.5 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/astgen.js +842 -71
- package/package.json +6 -7
- package/plugins/bin/ruby_ast_gen +1 -1
- package/plugins/composer/installed.php +6 -6
- package/plugins/rubyastgen/Gemfile +3 -3
- package/plugins/rubyastgen/Gemfile.lock +7 -7
- package/plugins/rubyastgen/bundle/bundler/setup.rb +4 -4
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-e58f82cd4b36 → ruby_ast_gen-cc312ebf06b4}/exe/ruby_ast_gen +4 -1
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-e58f82cd4b36 → ruby_ast_gen-cc312ebf06b4}/lib/ruby_ast_gen/node_handling.rb +24 -8
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-e58f82cd4b36 → ruby_ast_gen-cc312ebf06b4}/lib/ruby_ast_gen/version.rb +1 -1
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-e58f82cd4b36 → ruby_ast_gen-cc312ebf06b4}/lib/ruby_ast_gen.rb +63 -14
- package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/{prism-1.7.0 → prism-1.9.0}/gem_make.out +12 -12
- package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/{prism-1.7.0 → prism-1.9.0}/mkmf.log +6 -6
- package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/prism-1.9.0/prism/prism.so +0 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/racc-1.8.1/gem_make.out +5 -5
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/current.rb +2 -2
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/meta.rb +1 -1
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/version.rb +1 -1
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/Makefile +7 -1
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/ext/prism/Makefile +1 -1
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/ext/prism/extension.h +1 -1
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/ast.h +4 -4
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/version.h +2 -2
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/compiler.rb +152 -152
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/lex_compat.rb +133 -150
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/node.rb +1131 -20
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/parse_result.rb +9 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/prism.so +0 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/serialize.rb +1 -1
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/translation/parser_current.rb +1 -1
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/parser_versions.rb +36 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ripper/filter.rb +53 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ripper/lexer.rb +135 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/translation/ripper.rb +84 -38
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/translation/ruby_parser.rb +1 -1
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/translation.rb +5 -5
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/visitor.rb +152 -152
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism.rb +1 -14
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/rbi/prism/node.rbi +3 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/translation/parser_versions.rbi +23 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/rbi/prism.rbi +0 -3
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/sig/prism/node.rbs +4 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/sig/prism/parse_result.rbs +1 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/sig/prism.rbs +54 -40
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/prism.c +48 -27
- package/plugins/rubyastgen/setup.ps1 +13 -2
- package/plugins/rubyastgen/setup.sh +11 -0
- package/plugins/nikic/php-parser/README.md +0 -233
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-e58f82cd4b36/Gemfile +0 -11
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-e58f82cd4b36/LICENSE.txt +0 -213
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-e58f82cd4b36/README.md +0 -49
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-e58f82cd4b36/Rakefile +0 -8
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-e58f82cd4b36/ruby_ast_gen.gemspec +0 -25
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-e58f82cd4b36/spec/ruby_ast_gen_spec.rb +0 -440
- package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-e58f82cd4b36/spec/spec_helper.rb +0 -15
- package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/prism-1.7.0/prism/prism.so +0 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/ast-2.4.3/README.YARD.md +0 -12
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/bundler-2.6.7/CHANGELOG.md +0 -5239
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/bundler-2.6.7/LICENSE.md +0 -22
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/bundler-2.6.7/README.md +0 -58
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/bundler-2.6.7/bundler.gemspec +0 -46
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/bundler-2.6.7/lib/bundler/man/index.txt +0 -33
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/bundler-2.6.7/lib/bundler/templates/Gemfile +0 -5
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/Gemfile.tt +0 -24
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +0 -11
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +0 -15
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +0 -6
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/test/minitest/test_newgem.rb.tt +0 -13
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +0 -15
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +0 -6
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/LICENSE.txt +0 -21
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/LICENSE.md +0 -20
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/bundler-2.6.7/lib/bundler/vendor/tsort/LICENSE.txt +0 -22
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/ostruct-0.6.3/Gemfile +0 -10
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/ostruct-0.6.3/README.md +0 -69
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/ostruct-0.6.3/Rakefile +0 -18
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/ostruct-0.6.3/ostruct.gemspec +0 -26
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/parser-3.3.10.0/LICENSE.txt +0 -26
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/parser-3.3.10.0/parser.gemspec +0 -43
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/CHANGELOG.md +0 -756
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/CODE_OF_CONDUCT.md +0 -76
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/CONTRIBUTING.md +0 -58
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/LICENSE.md +0 -7
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/README.md +0 -143
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/config.yml +0 -4739
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/docs/build_system.md +0 -119
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/docs/configuration.md +0 -68
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/docs/cruby_compilation.md +0 -27
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/docs/design.md +0 -53
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/docs/encoding.md +0 -121
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/docs/fuzzing.md +0 -88
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/docs/heredocs.md +0 -36
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/docs/javascript.md +0 -118
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/docs/local_variable_depth.md +0 -229
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/docs/mapping.md +0 -117
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/docs/parser_translation.md +0 -24
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/docs/parsing_rules.md +0 -22
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/docs/releasing.md +0 -77
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/docs/relocation.md +0 -34
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/docs/ripper_translation.md +0 -72
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/docs/ruby_api.md +0 -44
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/docs/ruby_parser_translation.md +0 -19
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/docs/serialization.md +0 -233
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/docs/testing.md +0 -55
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/lib/prism/prism.so +0 -0
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/lib/prism/translation/parser33.rb +0 -13
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/lib/prism/translation/parser34.rb +0 -13
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/lib/prism/translation/parser35.rb +0 -8
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/lib/prism/translation/parser40.rb +0 -13
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/lib/prism/translation/parser41.rb +0 -13
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/prism.gemspec +0 -178
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/rbi/prism/translation/parser33.rbi +0 -6
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/rbi/prism/translation/parser34.rbi +0 -6
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/rbi/prism/translation/parser35.rbi +0 -4
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/rbi/prism/translation/parser40.rbi +0 -6
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.7.0/rbi/prism/translation/parser41.rbi +0 -6
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/doc/en/grammar.en.rdoc +0 -218
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/doc/en/grammar2.en.rdoc +0 -219
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/doc/ja/command.ja.html +0 -99
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/doc/ja/debug.ja.rdoc +0 -36
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/doc/ja/grammar.ja.rdoc +0 -348
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/doc/ja/index.ja.html +0 -10
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/doc/ja/parser.ja.rdoc +0 -125
- package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/doc/ja/usage.ja.html +0 -414
- package/plugins/rubyastgen/bundle/ruby/4.0.0/specifications/ast-2.4.3.gemspec +0 -29
- package/plugins/rubyastgen/bundle/ruby/4.0.0/specifications/bundler-2.6.7.gemspec +0 -25
- package/plugins/rubyastgen/bundle/ruby/4.0.0/specifications/ostruct-0.6.3.gemspec +0 -22
- package/plugins/rubyastgen/bundle/ruby/4.0.0/specifications/parser-3.3.10.0.gemspec +0 -37
- package/plugins/rubyastgen/bundle/ruby/4.0.0/specifications/prism-1.7.0.gemspec +0 -24
- package/plugins/rubyastgen/bundle/ruby/4.0.0/specifications/racc-1.8.1.gemspec +0 -28
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-e58f82cd4b36 → ruby_ast_gen-cc312ebf06b4}/.rspec +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-e58f82cd4b36 → ruby_ast_gen-cc312ebf06b4}/bin/console +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-e58f82cd4b36 → ruby_ast_gen-cc312ebf06b4}/bin/setup +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-e58f82cd4b36 → ruby_ast_gen-cc312ebf06b4}/update_version.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/{prism-1.7.0 → prism-1.9.0}/gem.build_complete +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/bin/ruby-parse +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/bin/ruby-rewrite +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/gauntlet_parser.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/all.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/ast/node.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/ast/processor.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/base.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/builders/default.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/clobbering_error.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/color.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/context.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/current_arg_stack.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/deprecation.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/diagnostic/engine.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/diagnostic.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/lexer/dedenter.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/lexer/explanation.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/lexer/literal.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/lexer/stack_state.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/lexer-F0.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/lexer-F1.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/lexer-strings.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/macruby.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/max_numparam_stack.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/messages.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/rewriter.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/ruby18.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/ruby19.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/ruby20.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/ruby21.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/ruby22.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/ruby23.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/ruby24.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/ruby25.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/ruby26.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/ruby27.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/ruby30.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/ruby31.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/ruby32.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/ruby33.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/ruby34.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/rubymotion.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/runner/ruby_parse.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/runner/ruby_rewrite.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/runner.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/buffer.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/comment/associator.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/comment.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/map/collection.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/map/condition.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/map/constant.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/map/definition.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/map/for.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/map/heredoc.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/map/index.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/map/keyword.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/map/method_definition.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/map/objc_kwarg.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/map/operator.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/map/rescue_body.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/map/send.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/map/ternary.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/map/variable.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/map.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/range.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/rewriter/action.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/rewriter.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/tree_rewriter/action.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/source/tree_rewriter.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/static_environment.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/syntax_error.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/tree_rewriter.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/unknown_encoding_in_magic_comment_error.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser/variables_stack.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.10.0 → parser-3.3.11.1}/lib/parser.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/BSDmakefile +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/ext/prism/api_node.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/ext/prism/api_pack.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/ext/prism/extconf.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/ext/prism/extension.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/defines.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/diagnostic.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/encoding.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/node.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/options.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/pack.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/parser.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/prettyprint.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/regexp.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/static_literals.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/util/pm_buffer.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/util/pm_char.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/util/pm_constant_pool.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/util/pm_integer.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/util/pm_list.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/util/pm_memchr.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/util/pm_newline_list.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/util/pm_string.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/util/pm_strncasecmp.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism/util/pm_strpbrk.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/include/prism.h +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/desugar_compiler.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/dispatcher.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/dot_visitor.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/dsl.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/ffi.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/inspect_visitor.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/mutation_compiler.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/node_ext.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/pack.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/parse_result/comments.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/parse_result/errors.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/parse_result/newlines.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/pattern.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/polyfill/append_as_bytes.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/polyfill/byteindex.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/polyfill/scan_byte.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/polyfill/unpack1.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/polyfill/warn.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/reflection.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/relocation.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/string_query.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/translation/parser/builder.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/translation/parser/compiler.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/translation/parser/lexer.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/translation/parser.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/translation/ripper/sexp.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/lib/prism/translation/ripper/shim.rb +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/rbi/prism/compiler.rbi +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/rbi/prism/dsl.rbi +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/rbi/prism/inspect_visitor.rbi +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/rbi/prism/node_ext.rbi +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/rbi/prism/parse_result.rbi +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/rbi/prism/reflection.rbi +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/rbi/prism/string_query.rbi +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/rbi/prism/translation/parser.rbi +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/rbi/prism/translation/ripper.rbi +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/rbi/prism/visitor.rbi +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/sig/prism/compiler.rbs +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/sig/prism/dispatcher.rbs +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/sig/prism/dot_visitor.rbs +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/sig/prism/dsl.rbs +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/sig/prism/inspect_visitor.rbs +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/sig/prism/lex_compat.rbs +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/sig/prism/mutation_compiler.rbs +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/sig/prism/node_ext.rbs +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/sig/prism/pack.rbs +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/sig/prism/parse_result/comments.rbs +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/sig/prism/pattern.rbs +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/sig/prism/reflection.rbs +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/sig/prism/relocation.rbs +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/sig/prism/serialize.rbs +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/sig/prism/string_query.rbs +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/sig/prism/visitor.rbs +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/diagnostic.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/encoding.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/node.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/options.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/pack.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/prettyprint.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/regexp.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/serialize.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/static_literals.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/token_type.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/util/pm_buffer.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/util/pm_char.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/util/pm_constant_pool.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/util/pm_integer.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/util/pm_list.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/util/pm_memchr.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/util/pm_newline_list.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/util/pm_string.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/util/pm_strncasecmp.c +0 -0
- /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{prism-1.7.0 → prism-1.9.0}/src/util/pm_strpbrk.c +0 -0
package/astgen.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
import { join, dirname } from "path";
|
|
3
|
+
import { join, dirname, relative, resolve } from "path";
|
|
4
|
+
import { fileURLToPath } from "url";
|
|
4
5
|
import { parse } from "@babel/parser";
|
|
5
6
|
import { parse as parseHermes } from "hermes-parser";
|
|
6
7
|
import tsc from "typescript";
|
|
@@ -235,6 +236,65 @@ const parseCliArgs = (argvs) => {
|
|
|
235
236
|
return args;
|
|
236
237
|
};
|
|
237
238
|
|
|
239
|
+
const babelSyntaxPlugins = [
|
|
240
|
+
"optionalChaining",
|
|
241
|
+
"classProperties",
|
|
242
|
+
"classPrivateProperties",
|
|
243
|
+
"classPrivateMethods",
|
|
244
|
+
"decorators-legacy",
|
|
245
|
+
"exportDefaultFrom",
|
|
246
|
+
"doExpressions",
|
|
247
|
+
"numericSeparator",
|
|
248
|
+
"dynamicImport",
|
|
249
|
+
"importAttributes",
|
|
250
|
+
"explicitResourceManagement",
|
|
251
|
+
"topLevelAwait",
|
|
252
|
+
"jsx"
|
|
253
|
+
];
|
|
254
|
+
|
|
255
|
+
const makeTypescriptPlugin = (file) => [
|
|
256
|
+
"typescript",
|
|
257
|
+
{
|
|
258
|
+
dts:
|
|
259
|
+
file.endsWith(".d.ts") ||
|
|
260
|
+
file.endsWith(".d.mts") ||
|
|
261
|
+
file.endsWith(".d.cts"),
|
|
262
|
+
disallowAmbiguousJSXLike: false
|
|
263
|
+
}
|
|
264
|
+
];
|
|
265
|
+
|
|
266
|
+
const getBabelPluginName = (plugin) =>
|
|
267
|
+
Array.isArray(plugin) ? plugin[0] : plugin;
|
|
268
|
+
|
|
269
|
+
const mergeBabelPlugins = (...pluginGroups) => {
|
|
270
|
+
const merged = [];
|
|
271
|
+
const seen = new Set();
|
|
272
|
+
for (const plugins of pluginGroups) {
|
|
273
|
+
for (const plugin of plugins || []) {
|
|
274
|
+
const pluginName = getBabelPluginName(plugin);
|
|
275
|
+
if (!seen.has(pluginName)) {
|
|
276
|
+
seen.add(pluginName);
|
|
277
|
+
merged.push(plugin);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
return merged;
|
|
282
|
+
};
|
|
283
|
+
|
|
284
|
+
const makeBabelOptions = (baseOptions, file, extraPlugins = []) => ({
|
|
285
|
+
...baseOptions,
|
|
286
|
+
plugins: mergeBabelPlugins(
|
|
287
|
+
baseOptions.plugins,
|
|
288
|
+
extraPlugins,
|
|
289
|
+
babelSyntaxPlugins,
|
|
290
|
+
(baseOptions.plugins || []).some(
|
|
291
|
+
(plugin) => getBabelPluginName(plugin) === "flow"
|
|
292
|
+
)
|
|
293
|
+
? []
|
|
294
|
+
: [makeTypescriptPlugin(file)]
|
|
295
|
+
)
|
|
296
|
+
});
|
|
297
|
+
|
|
238
298
|
const babelParserOptions = {
|
|
239
299
|
sourceType: "unambiguous",
|
|
240
300
|
allowImportExportEverywhere: true,
|
|
@@ -243,18 +303,7 @@ const babelParserOptions = {
|
|
|
243
303
|
allowReturnOutsideFunction: true,
|
|
244
304
|
allowSuperOutsideMethod: true,
|
|
245
305
|
allowUndeclaredExports: true,
|
|
246
|
-
errorRecovery: true
|
|
247
|
-
plugins: [
|
|
248
|
-
"optionalChaining",
|
|
249
|
-
"classProperties",
|
|
250
|
-
"decorators-legacy",
|
|
251
|
-
"exportDefaultFrom",
|
|
252
|
-
"doExpressions",
|
|
253
|
-
"numericSeparator",
|
|
254
|
-
"dynamicImport",
|
|
255
|
-
"jsx",
|
|
256
|
-
"typescript"
|
|
257
|
-
]
|
|
306
|
+
errorRecovery: true
|
|
258
307
|
};
|
|
259
308
|
|
|
260
309
|
const babelFlowParserOptions = {
|
|
@@ -284,17 +333,7 @@ const babelSafeParserOptions = {
|
|
|
284
333
|
allowImportExportEverywhere: true,
|
|
285
334
|
allowAwaitOutsideFunction: true,
|
|
286
335
|
allowReturnOutsideFunction: true,
|
|
287
|
-
errorRecovery: true
|
|
288
|
-
plugins: [
|
|
289
|
-
"optionalChaining",
|
|
290
|
-
"classProperties",
|
|
291
|
-
"decorators-legacy",
|
|
292
|
-
"exportDefaultFrom",
|
|
293
|
-
"doExpressions",
|
|
294
|
-
"numericSeparator",
|
|
295
|
-
"dynamicImport",
|
|
296
|
-
"typescript"
|
|
297
|
-
]
|
|
336
|
+
errorRecovery: true
|
|
298
337
|
};
|
|
299
338
|
|
|
300
339
|
const babelSafeFlowParserOptions = {
|
|
@@ -328,7 +367,8 @@ const shouldIncludeNodeModulesBundles =
|
|
|
328
367
|
* 2. ASTGEN_IGNORE_DIRS is non-empty and doesn't include "node_modules"
|
|
329
368
|
*/
|
|
330
369
|
const getAllSrcJSAndTSFiles = (src) => {
|
|
331
|
-
const filePattern =
|
|
370
|
+
const filePattern =
|
|
371
|
+
"\\.(js|jsx|cjs|mjs|ts|tsx|mts|cts|vue|svelte|xsjs|xsjslib|ejs)$";
|
|
332
372
|
const bundledNodeModulesPattern =
|
|
333
373
|
"node_modules[\\\\/].*[\\\\/](?:.*\\.)?(bundle|dist|index|min|app)\\.(js|cjs|mjs)$";
|
|
334
374
|
|
|
@@ -358,7 +398,8 @@ const getAllSrcJSAndTSFiles = (src) => {
|
|
|
358
398
|
}
|
|
359
399
|
// Step 2: Combine both lists
|
|
360
400
|
return Promise.all([allFilesPromise, bundledFilesPromise]).then(
|
|
361
|
-
([allFiles, bundledFiles]) =>
|
|
401
|
+
([allFiles, bundledFiles]) =>
|
|
402
|
+
[...new Set([...allFiles, ...bundledFiles])].sort()
|
|
362
403
|
);
|
|
363
404
|
};
|
|
364
405
|
|
|
@@ -402,14 +443,17 @@ const codeToJsAst = (file, code, projectType) => {
|
|
|
402
443
|
primaryBabelOptions = babelFlowParserOptions;
|
|
403
444
|
secondaryBabelOptions = babelParserOptions;
|
|
404
445
|
}
|
|
446
|
+
const primaryOptions = makeBabelOptions(primaryBabelOptions, file);
|
|
447
|
+
const secondaryOptions = makeBabelOptions(secondaryBabelOptions, file);
|
|
448
|
+
const safeOptions = makeBabelOptions(babelSafeParserOptions, file);
|
|
405
449
|
try {
|
|
406
|
-
return parse(code,
|
|
450
|
+
return parse(code, primaryOptions);
|
|
407
451
|
} catch (errPrimary) {
|
|
408
452
|
try {
|
|
409
|
-
return parse(code,
|
|
453
|
+
return parse(code, secondaryOptions);
|
|
410
454
|
} catch (errSecondary) {
|
|
411
455
|
try {
|
|
412
|
-
return parse(code,
|
|
456
|
+
return parse(code, safeOptions);
|
|
413
457
|
} catch (errSafe) {
|
|
414
458
|
try {
|
|
415
459
|
return parse(code, babelSafeFlowParserOptions);
|
|
@@ -597,36 +641,202 @@ const toEjsAst = (file) => {
|
|
|
597
641
|
return codeToJsAst(file, out.join(""), "ts");
|
|
598
642
|
};
|
|
599
643
|
|
|
600
|
-
|
|
644
|
+
const DEFAULT_TSC_OPTIONS = {
|
|
645
|
+
target: tsc.ScriptTarget.ES2022,
|
|
646
|
+
module: tsc.ModuleKind.CommonJS,
|
|
647
|
+
moduleResolution: tsc.ModuleResolutionKind.Node10,
|
|
648
|
+
allowImportingTsExtensions: false,
|
|
649
|
+
allowArbitraryExtensions: false,
|
|
650
|
+
allowSyntheticDefaultImports: true,
|
|
651
|
+
allowUmdGlobalAccess: true,
|
|
652
|
+
allowJs: true,
|
|
653
|
+
checkJs: true,
|
|
654
|
+
allowUnreachableCode: true,
|
|
655
|
+
allowUnusedLabels: true,
|
|
656
|
+
alwaysStrict: false,
|
|
657
|
+
emitDecoratorMetadata: true,
|
|
658
|
+
exactOptionalPropertyTypes: true,
|
|
659
|
+
experimentalDecorators: true,
|
|
660
|
+
ignoreDeprecations: "6.0",
|
|
661
|
+
noStrictGenericChecks: true,
|
|
662
|
+
noUncheckedIndexedAccess: false,
|
|
663
|
+
noPropertyAccessFromIndexSignature: false,
|
|
664
|
+
noEmit: true,
|
|
665
|
+
skipLibCheck: true,
|
|
666
|
+
resolveJsonModule: true,
|
|
667
|
+
jsx: tsc.JsxEmit.Preserve,
|
|
668
|
+
lib: ["lib.es2022.d.ts", "lib.dom.d.ts", "lib.dom.iterable.d.ts"]
|
|
669
|
+
};
|
|
670
|
+
|
|
671
|
+
const readJsonFileIfExists = (file) => {
|
|
601
672
|
try {
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
673
|
+
if (!existsSync(file)) {
|
|
674
|
+
return undefined;
|
|
675
|
+
}
|
|
676
|
+
return JSON.parse(readFileSync(file, "utf8"));
|
|
677
|
+
} catch {
|
|
678
|
+
return undefined;
|
|
679
|
+
}
|
|
680
|
+
};
|
|
681
|
+
|
|
682
|
+
const findNearestPackageJson = (src) => {
|
|
683
|
+
let currentDir = resolve(src);
|
|
684
|
+
while (true) {
|
|
685
|
+
const packageJsonPath = join(currentDir, "package.json");
|
|
686
|
+
if (existsSync(packageJsonPath)) {
|
|
687
|
+
return packageJsonPath;
|
|
688
|
+
}
|
|
689
|
+
const parentDir = dirname(currentDir);
|
|
690
|
+
if (parentDir === currentDir) {
|
|
691
|
+
return undefined;
|
|
692
|
+
}
|
|
693
|
+
currentDir = parentDir;
|
|
694
|
+
}
|
|
695
|
+
};
|
|
696
|
+
|
|
697
|
+
const detectDefaultTscOptions = (srcFiles, src) => {
|
|
698
|
+
const packageJson = readJsonFileIfExists(findNearestPackageJson(src));
|
|
699
|
+
const usesNodeNextModuleResolution =
|
|
700
|
+
packageJson?.type === "module" ||
|
|
701
|
+
Boolean(packageJson?.exports) ||
|
|
702
|
+
Boolean(packageJson?.imports) ||
|
|
703
|
+
srcFiles.some((file) => /\.(?:mts|cts)$/.test(file));
|
|
704
|
+
|
|
705
|
+
if (!usesNodeNextModuleResolution) {
|
|
706
|
+
return DEFAULT_TSC_OPTIONS;
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
return {
|
|
710
|
+
...DEFAULT_TSC_OPTIONS,
|
|
711
|
+
module: tsc.ModuleKind.NodeNext,
|
|
712
|
+
moduleResolution: tsc.ModuleResolutionKind.NodeNext,
|
|
713
|
+
resolvePackageJsonExports: true,
|
|
714
|
+
resolvePackageJsonImports: true,
|
|
715
|
+
allowImportingTsExtensions: true,
|
|
716
|
+
verbatimModuleSyntax: true
|
|
717
|
+
};
|
|
718
|
+
};
|
|
719
|
+
|
|
720
|
+
const hasExplicitTsCompilerOption = (config, optionName) =>
|
|
721
|
+
Object.prototype.hasOwnProperty.call(
|
|
722
|
+
config?.compilerOptions ?? {},
|
|
723
|
+
optionName
|
|
724
|
+
);
|
|
725
|
+
|
|
726
|
+
const normalizeImportedTypeSpecifier = (specifier, currentFileName) => {
|
|
727
|
+
let normalizedSpecifier = String(specifier).replaceAll("\\", "/");
|
|
728
|
+
const normalizedCurrentFileName = currentFileName?.replaceAll("\\", "/");
|
|
729
|
+
|
|
730
|
+
if (normalizedSpecifier.startsWith("file://")) {
|
|
731
|
+
try {
|
|
732
|
+
normalizedSpecifier = fileURLToPath(normalizedSpecifier).replaceAll(
|
|
733
|
+
"\\",
|
|
734
|
+
"/"
|
|
735
|
+
);
|
|
736
|
+
} catch {
|
|
737
|
+
// ignore malformed file URLs and leave the original specifier intact
|
|
738
|
+
}
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
if (normalizedCurrentFileName && normalizedSpecifier.startsWith("/")) {
|
|
742
|
+
const relativeSpecifier = relative(
|
|
743
|
+
dirname(normalizedCurrentFileName),
|
|
744
|
+
normalizedSpecifier
|
|
745
|
+
).replaceAll("\\", "/");
|
|
746
|
+
normalizedSpecifier = relativeSpecifier.startsWith(".")
|
|
747
|
+
? relativeSpecifier
|
|
748
|
+
: `./${relativeSpecifier}`;
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
return normalizedSpecifier.replace(
|
|
752
|
+
/(\.d)?\.(tsx?|jsx?|mts|cts|mjs|cjs)$/,
|
|
753
|
+
""
|
|
754
|
+
);
|
|
755
|
+
};
|
|
756
|
+
|
|
757
|
+
const normalizeTypeString = (typeStr, context) => {
|
|
758
|
+
if (!typeStr || typeof typeStr !== "string") {
|
|
759
|
+
return typeStr;
|
|
760
|
+
}
|
|
761
|
+
const currentFileName = context?.getSourceFile?.()?.fileName;
|
|
762
|
+
return typeStr.replace(
|
|
763
|
+
/import\("([^"]+)"(?:,\s*{\s*with:\s*{\s*"resolution-mode":\s*"import"\s*}\s*})?\)/g,
|
|
764
|
+
(_, specifier) =>
|
|
765
|
+
`import("${normalizeImportedTypeSpecifier(specifier, currentFileName)}")`
|
|
766
|
+
);
|
|
767
|
+
};
|
|
768
|
+
|
|
769
|
+
const findTsConfig = (src) => {
|
|
770
|
+
const searchRoot = resolve(src);
|
|
771
|
+
return (
|
|
772
|
+
tsc.findConfigFile(searchRoot, tsc.sys.fileExists, "tsconfig.json") ||
|
|
773
|
+
tsc.findConfigFile(searchRoot, tsc.sys.fileExists, "jsconfig.json")
|
|
774
|
+
);
|
|
775
|
+
};
|
|
776
|
+
|
|
777
|
+
const createTscProgramConfig = (srcFiles, src) => {
|
|
778
|
+
const detectedDefaultOptions = detectDefaultTscOptions(srcFiles, src);
|
|
779
|
+
const configPath = findTsConfig(src);
|
|
780
|
+
if (!configPath) {
|
|
781
|
+
return {
|
|
782
|
+
rootNames: srcFiles,
|
|
783
|
+
options: detectedDefaultOptions
|
|
784
|
+
};
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
const configFile = tsc.readConfigFile(configPath, tsc.sys.readFile);
|
|
788
|
+
if (configFile.error) {
|
|
789
|
+
return {
|
|
790
|
+
rootNames: srcFiles,
|
|
791
|
+
options: detectedDefaultOptions
|
|
792
|
+
};
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
const shouldRespectExplicitModuleSettings =
|
|
796
|
+
hasExplicitTsCompilerOption(configFile.config, "module") ||
|
|
797
|
+
hasExplicitTsCompilerOption(configFile.config, "moduleResolution");
|
|
798
|
+
const configParseDefaults = shouldRespectExplicitModuleSettings
|
|
799
|
+
? DEFAULT_TSC_OPTIONS
|
|
800
|
+
: detectedDefaultOptions;
|
|
801
|
+
|
|
802
|
+
const parsedConfig = tsc.parseJsonConfigFileContent(
|
|
803
|
+
configFile.config,
|
|
804
|
+
tsc.sys,
|
|
805
|
+
dirname(configPath),
|
|
806
|
+
configParseDefaults,
|
|
807
|
+
configPath
|
|
808
|
+
);
|
|
809
|
+
const rootNames = [
|
|
810
|
+
...new Set([...srcFiles, ...parsedConfig.fileNames])
|
|
811
|
+
].sort();
|
|
812
|
+
return {
|
|
813
|
+
rootNames,
|
|
814
|
+
options: {
|
|
815
|
+
...DEFAULT_TSC_OPTIONS,
|
|
816
|
+
...(shouldRespectExplicitModuleSettings ? {} : detectedDefaultOptions),
|
|
817
|
+
...parsedConfig.options,
|
|
610
818
|
allowJs: true,
|
|
611
819
|
checkJs: true,
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
});
|
|
820
|
+
noEmit: true,
|
|
821
|
+
skipLibCheck: true,
|
|
822
|
+
resolveJsonModule: true
|
|
823
|
+
}
|
|
824
|
+
};
|
|
825
|
+
};
|
|
826
|
+
|
|
827
|
+
function createTsc(srcFiles, src) {
|
|
828
|
+
try {
|
|
829
|
+
const tscConfig = createTscProgramConfig(srcFiles, src);
|
|
830
|
+
const program = tsc.createProgram(tscConfig.rootNames, tscConfig.options);
|
|
624
831
|
const typeChecker = program.getTypeChecker();
|
|
625
832
|
const seenTypes = new Map();
|
|
626
833
|
|
|
627
|
-
const safeTypeToString = (
|
|
834
|
+
const safeTypeToString = (type, context) => {
|
|
628
835
|
try {
|
|
629
|
-
return
|
|
836
|
+
return normalizeTypeString(
|
|
837
|
+
typeChecker.typeToString(type, context, TSC_FLAGS),
|
|
838
|
+
context
|
|
839
|
+
);
|
|
630
840
|
} catch (err) {
|
|
631
841
|
return "any";
|
|
632
842
|
}
|
|
@@ -634,13 +844,256 @@ function createTsc(srcFiles) {
|
|
|
634
844
|
|
|
635
845
|
const safeTypeWithContextToString = (node, context) => {
|
|
636
846
|
try {
|
|
637
|
-
return
|
|
847
|
+
return normalizeTypeString(
|
|
848
|
+
typeChecker.typeToString(node, context, TSC_FLAGS),
|
|
849
|
+
context
|
|
850
|
+
);
|
|
638
851
|
} catch (err) {
|
|
639
852
|
return "any";
|
|
640
853
|
}
|
|
641
854
|
};
|
|
642
855
|
|
|
643
|
-
const
|
|
856
|
+
const addTypeAtPosition = (currentSeenTypes, position, typeStr) => {
|
|
857
|
+
const scoreTypeString = (value) => {
|
|
858
|
+
if (!value || isUnresolvedTypeString(value)) {
|
|
859
|
+
return 0;
|
|
860
|
+
}
|
|
861
|
+
if (value.includes("=>")) {
|
|
862
|
+
return 3;
|
|
863
|
+
}
|
|
864
|
+
if (
|
|
865
|
+
value.includes("import(") ||
|
|
866
|
+
value.includes("{") ||
|
|
867
|
+
value.includes("|")
|
|
868
|
+
) {
|
|
869
|
+
return 2;
|
|
870
|
+
}
|
|
871
|
+
return 1;
|
|
872
|
+
};
|
|
873
|
+
if (
|
|
874
|
+
Number.isInteger(position) &&
|
|
875
|
+
position >= 0 &&
|
|
876
|
+
typeStr &&
|
|
877
|
+
![
|
|
878
|
+
"any",
|
|
879
|
+
"unknown",
|
|
880
|
+
"any[]",
|
|
881
|
+
"unknown[]",
|
|
882
|
+
"error",
|
|
883
|
+
"/*unresolved*/ any"
|
|
884
|
+
].includes(typeStr)
|
|
885
|
+
) {
|
|
886
|
+
const existingType = currentSeenTypes.get(position);
|
|
887
|
+
if (!existingType) {
|
|
888
|
+
currentSeenTypes.set(position, typeStr);
|
|
889
|
+
return;
|
|
890
|
+
}
|
|
891
|
+
const existingScore = scoreTypeString(existingType);
|
|
892
|
+
const nextScore = scoreTypeString(typeStr);
|
|
893
|
+
if (
|
|
894
|
+
nextScore > existingScore ||
|
|
895
|
+
(nextScore === existingScore && typeStr.length >= existingType.length)
|
|
896
|
+
) {
|
|
897
|
+
currentSeenTypes.set(position, typeStr);
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
};
|
|
901
|
+
|
|
902
|
+
const isUnresolvedTypeString = (typeStr) =>
|
|
903
|
+
[
|
|
904
|
+
"any",
|
|
905
|
+
"unknown",
|
|
906
|
+
"any[]",
|
|
907
|
+
"unknown[]",
|
|
908
|
+
"error",
|
|
909
|
+
"/*unresolved*/ any",
|
|
910
|
+
"Promise<any>",
|
|
911
|
+
"Promise<unknown>"
|
|
912
|
+
].includes(typeStr);
|
|
913
|
+
|
|
914
|
+
const collectReturnExpressionTypes = (node, collectedTypes = new Set()) => {
|
|
915
|
+
if (!node || !node.kind) {
|
|
916
|
+
return collectedTypes;
|
|
917
|
+
}
|
|
918
|
+
if (tsc.isReturnStatement(node) && node.expression) {
|
|
919
|
+
const returnType = safeTypeWithContextToString(
|
|
920
|
+
typeChecker.getTypeAtLocation(node.expression),
|
|
921
|
+
node.expression
|
|
922
|
+
);
|
|
923
|
+
if (returnType && !isUnresolvedTypeString(returnType)) {
|
|
924
|
+
collectedTypes.add(returnType);
|
|
925
|
+
} else {
|
|
926
|
+
const inferredSyntaxType = inferExpressionTypeFromSyntax(
|
|
927
|
+
node.expression
|
|
928
|
+
);
|
|
929
|
+
if (
|
|
930
|
+
inferredSyntaxType &&
|
|
931
|
+
!isUnresolvedTypeString(inferredSyntaxType)
|
|
932
|
+
) {
|
|
933
|
+
collectedTypes.add(inferredSyntaxType);
|
|
934
|
+
}
|
|
935
|
+
}
|
|
936
|
+
return collectedTypes;
|
|
937
|
+
}
|
|
938
|
+
if (
|
|
939
|
+
node !== undefined &&
|
|
940
|
+
!tsc.isFunctionDeclaration(node) &&
|
|
941
|
+
!tsc.isFunctionExpression(node) &&
|
|
942
|
+
!tsc.isArrowFunction(node) &&
|
|
943
|
+
!tsc.isMethodDeclaration(node)
|
|
944
|
+
) {
|
|
945
|
+
tsc.forEachChild(node, (child) =>
|
|
946
|
+
collectReturnExpressionTypes(child, collectedTypes)
|
|
947
|
+
);
|
|
948
|
+
}
|
|
949
|
+
return collectedTypes;
|
|
950
|
+
};
|
|
951
|
+
|
|
952
|
+
const inferAsyncReturnTypeFromBody = (node) => {
|
|
953
|
+
if (!node.body) {
|
|
954
|
+
return undefined;
|
|
955
|
+
}
|
|
956
|
+
if (!tsc.isBlock(node.body)) {
|
|
957
|
+
const bodyType = safeTypeWithContextToString(
|
|
958
|
+
typeChecker.getTypeAtLocation(node.body),
|
|
959
|
+
node.body
|
|
960
|
+
);
|
|
961
|
+
return bodyType && !bodyType.startsWith("Promise<")
|
|
962
|
+
? `Promise<${bodyType}>`
|
|
963
|
+
: bodyType;
|
|
964
|
+
}
|
|
965
|
+
const collectedTypes = collectReturnExpressionTypes(node.body);
|
|
966
|
+
if (collectedTypes.size === 0) {
|
|
967
|
+
return undefined;
|
|
968
|
+
}
|
|
969
|
+
const unionType = [...collectedTypes].sort().join(" | ");
|
|
970
|
+
return unionType.startsWith("Promise<")
|
|
971
|
+
? unionType
|
|
972
|
+
: `Promise<${unionType}>`;
|
|
973
|
+
};
|
|
974
|
+
|
|
975
|
+
const buildFunctionSignatureType = (node, returnTypeStr) => {
|
|
976
|
+
if (!node.parameters) {
|
|
977
|
+
return undefined;
|
|
978
|
+
}
|
|
979
|
+
const parameters = node.parameters.map((param) => {
|
|
980
|
+
const parameterName = param.name?.getText?.() || "arg";
|
|
981
|
+
const parameterType = safeTypeWithContextToString(
|
|
982
|
+
typeChecker.getTypeAtLocation(param.name || param),
|
|
983
|
+
param.name || param
|
|
984
|
+
);
|
|
985
|
+
return `${parameterName}: ${parameterType}`;
|
|
986
|
+
});
|
|
987
|
+
return `(${parameters.join(", ")}) => ${returnTypeStr}`;
|
|
988
|
+
};
|
|
989
|
+
|
|
990
|
+
const inferExpressionTypeFromSyntax = (expression) => {
|
|
991
|
+
if (!expression) {
|
|
992
|
+
return undefined;
|
|
993
|
+
}
|
|
994
|
+
if (
|
|
995
|
+
tsc.isCallExpression(expression) &&
|
|
996
|
+
expression.expression.kind === tsc.SyntaxKind.ImportKeyword &&
|
|
997
|
+
expression.arguments.length > 0 &&
|
|
998
|
+
tsc.isStringLiteralLike(expression.arguments[0])
|
|
999
|
+
) {
|
|
1000
|
+
return `Promise<typeof import("${normalizeImportedTypeSpecifier(
|
|
1001
|
+
expression.arguments[0].text,
|
|
1002
|
+
expression.getSourceFile().fileName
|
|
1003
|
+
)}")>`;
|
|
1004
|
+
}
|
|
1005
|
+
if (tsc.isAwaitExpression(expression)) {
|
|
1006
|
+
const awaitedType = inferExpressionTypeFromSyntax(
|
|
1007
|
+
expression.expression
|
|
1008
|
+
);
|
|
1009
|
+
return awaitedType?.startsWith("Promise<")
|
|
1010
|
+
? awaitedType.slice(8, -1)
|
|
1011
|
+
: awaitedType;
|
|
1012
|
+
}
|
|
1013
|
+
if (tsc.isIdentifier(expression)) {
|
|
1014
|
+
const symbol = typeChecker.getSymbolAtLocation(expression);
|
|
1015
|
+
const declaration = symbol?.valueDeclaration;
|
|
1016
|
+
if (tsc.isVariableDeclaration(declaration) && declaration.initializer) {
|
|
1017
|
+
return inferExpressionTypeFromSyntax(declaration.initializer);
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
if (tsc.isPropertyAccessExpression(expression)) {
|
|
1021
|
+
const baseType = inferExpressionTypeFromSyntax(expression.expression);
|
|
1022
|
+
if (baseType) {
|
|
1023
|
+
return `${baseType}.${expression.name.getText()}`;
|
|
1024
|
+
}
|
|
1025
|
+
}
|
|
1026
|
+
return undefined;
|
|
1027
|
+
};
|
|
1028
|
+
|
|
1029
|
+
const inferFunctionDeclarationReturnType = (declaration) => {
|
|
1030
|
+
const signature = typeChecker.getSignatureFromDeclaration(declaration);
|
|
1031
|
+
if (!signature) {
|
|
1032
|
+
return undefined;
|
|
1033
|
+
}
|
|
1034
|
+
let inferredType = safeTypeToString(
|
|
1035
|
+
typeChecker.getReturnTypeOfSignature(signature),
|
|
1036
|
+
declaration.name || declaration
|
|
1037
|
+
);
|
|
1038
|
+
if (
|
|
1039
|
+
isUnresolvedTypeString(inferredType) &&
|
|
1040
|
+
(tsc.getCombinedModifierFlags(declaration) &
|
|
1041
|
+
tsc.ModifierFlags.Async) !==
|
|
1042
|
+
0
|
|
1043
|
+
) {
|
|
1044
|
+
inferredType =
|
|
1045
|
+
inferAsyncReturnTypeFromSyntaxBody(declaration) ||
|
|
1046
|
+
inferAsyncReturnTypeFromBody(declaration) ||
|
|
1047
|
+
inferredType;
|
|
1048
|
+
}
|
|
1049
|
+
return inferredType;
|
|
1050
|
+
};
|
|
1051
|
+
|
|
1052
|
+
const inferAsyncReturnTypeFromSyntaxBody = (node) => {
|
|
1053
|
+
if (!node?.body) {
|
|
1054
|
+
return undefined;
|
|
1055
|
+
}
|
|
1056
|
+
const collectedTypes = new Set();
|
|
1057
|
+
const visit = (currentNode) => {
|
|
1058
|
+
if (!currentNode || !currentNode.kind) {
|
|
1059
|
+
return;
|
|
1060
|
+
}
|
|
1061
|
+
if (tsc.isReturnStatement(currentNode) && currentNode.expression) {
|
|
1062
|
+
const inferredType = inferExpressionTypeFromSyntax(
|
|
1063
|
+
currentNode.expression
|
|
1064
|
+
);
|
|
1065
|
+
if (inferredType) {
|
|
1066
|
+
collectedTypes.add(inferredType);
|
|
1067
|
+
}
|
|
1068
|
+
return;
|
|
1069
|
+
}
|
|
1070
|
+
if (
|
|
1071
|
+
!tsc.isFunctionDeclaration(currentNode) &&
|
|
1072
|
+
!tsc.isFunctionExpression(currentNode) &&
|
|
1073
|
+
!tsc.isArrowFunction(currentNode) &&
|
|
1074
|
+
!tsc.isMethodDeclaration(currentNode)
|
|
1075
|
+
) {
|
|
1076
|
+
tsc.forEachChild(currentNode, visit);
|
|
1077
|
+
}
|
|
1078
|
+
};
|
|
1079
|
+
if (tsc.isBlock(node.body)) {
|
|
1080
|
+
visit(node.body);
|
|
1081
|
+
} else {
|
|
1082
|
+
const inferredType = inferExpressionTypeFromSyntax(node.body);
|
|
1083
|
+
if (inferredType) {
|
|
1084
|
+
collectedTypes.add(inferredType);
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
if (collectedTypes.size === 0) {
|
|
1088
|
+
return undefined;
|
|
1089
|
+
}
|
|
1090
|
+
const unionType = [...collectedTypes].sort().join(" | ");
|
|
1091
|
+
return unionType.startsWith("Promise<")
|
|
1092
|
+
? unionType
|
|
1093
|
+
: `Promise<${unionType}>`;
|
|
1094
|
+
};
|
|
1095
|
+
|
|
1096
|
+
const addType = (node, currentSeenTypes = seenTypes) => {
|
|
644
1097
|
// STRUCTURAL/CONTAINER NODES
|
|
645
1098
|
if (
|
|
646
1099
|
node.kind === tsc.SyntaxKind.SourceFile ||
|
|
@@ -655,11 +1108,15 @@ function createTsc(srcFiles) {
|
|
|
655
1108
|
node.kind === tsc.SyntaxKind.InterfaceDeclaration ||
|
|
656
1109
|
node.kind === tsc.SyntaxKind.ModuleDeclaration
|
|
657
1110
|
) {
|
|
658
|
-
tsc.forEachChild(node, addType);
|
|
1111
|
+
tsc.forEachChild(node, (child) => addType(child, currentSeenTypes));
|
|
659
1112
|
return;
|
|
660
1113
|
}
|
|
661
1114
|
|
|
662
1115
|
let typeStr;
|
|
1116
|
+
const isDirectCalleeIdentifier =
|
|
1117
|
+
tsc.isIdentifier(node) &&
|
|
1118
|
+
tsc.isCallExpression(node.parent) &&
|
|
1119
|
+
node.parent.expression === node;
|
|
663
1120
|
|
|
664
1121
|
try {
|
|
665
1122
|
// WRAPPER NODES
|
|
@@ -667,14 +1124,15 @@ function createTsc(srcFiles) {
|
|
|
667
1124
|
(tsc.SyntaxKind.SatisfiesExpression &&
|
|
668
1125
|
node.kind === tsc.SyntaxKind.SatisfiesExpression) ||
|
|
669
1126
|
node.kind === tsc.SyntaxKind.AsExpression ||
|
|
670
|
-
node.kind === tsc.SyntaxKind.TypeAssertionExpression
|
|
1127
|
+
node.kind === tsc.SyntaxKind.TypeAssertionExpression ||
|
|
1128
|
+
node.kind === tsc.SyntaxKind.NonNullExpression
|
|
671
1129
|
) {
|
|
672
1130
|
typeStr = safeTypeWithContextToString(
|
|
673
1131
|
typeChecker.getTypeAtLocation(node.expression),
|
|
674
1132
|
node.expression
|
|
675
1133
|
);
|
|
676
1134
|
}
|
|
677
|
-
// FUNCTION/METHOD SIGNATURES
|
|
1135
|
+
// FUNCTION/METHOD SIGNATURES - extract return type AND parameter types
|
|
678
1136
|
else if (
|
|
679
1137
|
tsc.isFunctionLike(node) ||
|
|
680
1138
|
tsc.isMethodDeclaration(node) ||
|
|
@@ -686,7 +1144,41 @@ function createTsc(srcFiles) {
|
|
|
686
1144
|
const signature = typeChecker.getSignatureFromDeclaration(node);
|
|
687
1145
|
if (signature) {
|
|
688
1146
|
const returnType = typeChecker.getReturnTypeOfSignature(signature);
|
|
689
|
-
typeStr = safeTypeToString(returnType);
|
|
1147
|
+
typeStr = safeTypeToString(returnType, node.name || node);
|
|
1148
|
+
if (
|
|
1149
|
+
isUnresolvedTypeString(typeStr) &&
|
|
1150
|
+
(tsc.getCombinedModifierFlags(node) & tsc.ModifierFlags.Async) !==
|
|
1151
|
+
0
|
|
1152
|
+
) {
|
|
1153
|
+
typeStr =
|
|
1154
|
+
inferAsyncReturnTypeFromSyntaxBody(node) ||
|
|
1155
|
+
inferAsyncReturnTypeFromBody(node) ||
|
|
1156
|
+
typeStr;
|
|
1157
|
+
}
|
|
1158
|
+
// Also extract parameter types
|
|
1159
|
+
if (node.parameters) {
|
|
1160
|
+
for (const param of node.parameters) {
|
|
1161
|
+
try {
|
|
1162
|
+
const paramType = typeChecker.getTypeAtLocation(param);
|
|
1163
|
+
const paramTypeStr = safeTypeToString(
|
|
1164
|
+
paramType,
|
|
1165
|
+
param.name || param
|
|
1166
|
+
);
|
|
1167
|
+
if (paramTypeStr && paramTypeStr !== "any") {
|
|
1168
|
+
currentSeenTypes.set(param.getStart(), paramTypeStr);
|
|
1169
|
+
}
|
|
1170
|
+
} catch {
|
|
1171
|
+
// ignore parameter type errors
|
|
1172
|
+
}
|
|
1173
|
+
}
|
|
1174
|
+
}
|
|
1175
|
+
if (node.name) {
|
|
1176
|
+
addTypeAtPosition(
|
|
1177
|
+
currentSeenTypes,
|
|
1178
|
+
node.name.getStart(),
|
|
1179
|
+
buildFunctionSignatureType(node, typeStr)
|
|
1180
|
+
);
|
|
1181
|
+
}
|
|
690
1182
|
} else {
|
|
691
1183
|
const funcType = typeChecker.getTypeAtLocation(node);
|
|
692
1184
|
const callSignatures = typeChecker.getSignaturesOfType(
|
|
@@ -694,10 +1186,251 @@ function createTsc(srcFiles) {
|
|
|
694
1186
|
tsc.SignatureKind.Call
|
|
695
1187
|
);
|
|
696
1188
|
if (callSignatures.length > 0) {
|
|
697
|
-
typeStr = safeTypeToString(
|
|
1189
|
+
typeStr = safeTypeToString(
|
|
1190
|
+
callSignatures[0].getReturnType(),
|
|
1191
|
+
node.name || node
|
|
1192
|
+
);
|
|
1193
|
+
}
|
|
1194
|
+
}
|
|
1195
|
+
}
|
|
1196
|
+
// CLASS PROPERTIES - extract types for property declarations
|
|
1197
|
+
else if (node.kind === tsc.SyntaxKind.PropertyDeclaration) {
|
|
1198
|
+
if (node.type) {
|
|
1199
|
+
const propType = typeChecker.getTypeFromTypeNode(node.type);
|
|
1200
|
+
typeStr = safeTypeToString(propType, node.type);
|
|
1201
|
+
} else if (node.initializer) {
|
|
1202
|
+
const initType = typeChecker.getTypeAtLocation(node.initializer);
|
|
1203
|
+
typeStr = safeTypeWithContextToString(initType, node.initializer);
|
|
1204
|
+
}
|
|
1205
|
+
}
|
|
1206
|
+
// VARIABLE DECLARATIONS - extract types for loop variables and destructuring
|
|
1207
|
+
else if (
|
|
1208
|
+
node.kind === tsc.SyntaxKind.VariableDeclaration &&
|
|
1209
|
+
node.name
|
|
1210
|
+
) {
|
|
1211
|
+
const varType = typeChecker.getTypeAtLocation(node.name);
|
|
1212
|
+
typeStr = safeTypeWithContextToString(varType, node.name);
|
|
1213
|
+
if (node.initializer) {
|
|
1214
|
+
const initializerTarget = tsc.isPropertyAccessExpression(
|
|
1215
|
+
node.initializer
|
|
1216
|
+
)
|
|
1217
|
+
? node.initializer.name
|
|
1218
|
+
: tsc.isElementAccessExpression(node.initializer) &&
|
|
1219
|
+
node.initializer.argumentExpression
|
|
1220
|
+
? node.initializer.argumentExpression
|
|
1221
|
+
: node.initializer;
|
|
1222
|
+
const initializerType = safeTypeWithContextToString(
|
|
1223
|
+
typeChecker.getTypeAtLocation(initializerTarget),
|
|
1224
|
+
initializerTarget
|
|
1225
|
+
);
|
|
1226
|
+
if (
|
|
1227
|
+
!isUnresolvedTypeString(initializerType) &&
|
|
1228
|
+
(isUnresolvedTypeString(typeStr) ||
|
|
1229
|
+
initializerType.length > typeStr.length)
|
|
1230
|
+
) {
|
|
1231
|
+
typeStr = initializerType;
|
|
1232
|
+
}
|
|
1233
|
+
if (
|
|
1234
|
+
isUnresolvedTypeString(typeStr) &&
|
|
1235
|
+
tsc.isCallExpression(node.initializer) &&
|
|
1236
|
+
tsc.isIdentifier(node.initializer.expression)
|
|
1237
|
+
) {
|
|
1238
|
+
const symbol = typeChecker.getSymbolAtLocation(
|
|
1239
|
+
node.initializer.expression
|
|
1240
|
+
);
|
|
1241
|
+
const declaration = symbol?.declarations?.find(
|
|
1242
|
+
(candidate) =>
|
|
1243
|
+
tsc.isFunctionDeclaration(candidate) ||
|
|
1244
|
+
tsc.isMethodDeclaration(candidate) ||
|
|
1245
|
+
tsc.isFunctionExpression(candidate) ||
|
|
1246
|
+
tsc.isArrowFunction(candidate)
|
|
1247
|
+
);
|
|
1248
|
+
if (declaration) {
|
|
1249
|
+
typeStr =
|
|
1250
|
+
inferFunctionDeclarationReturnType(declaration) || typeStr;
|
|
1251
|
+
}
|
|
1252
|
+
}
|
|
1253
|
+
}
|
|
1254
|
+
addTypeAtPosition(currentSeenTypes, node.name.getStart(), typeStr);
|
|
1255
|
+
}
|
|
1256
|
+
// BINDING ELEMENTS - capture destructured member types precisely
|
|
1257
|
+
else if (node.kind === tsc.SyntaxKind.BindingElement && node.name) {
|
|
1258
|
+
const bindingType = typeChecker.getTypeAtLocation(node.name);
|
|
1259
|
+
typeStr = safeTypeWithContextToString(bindingType, node.name);
|
|
1260
|
+
}
|
|
1261
|
+
// PARAMETERS - capture parameter types even when not covered by signature extraction
|
|
1262
|
+
else if (node.kind === tsc.SyntaxKind.Parameter && node.name) {
|
|
1263
|
+
const parameterType = typeChecker.getTypeAtLocation(node.name);
|
|
1264
|
+
typeStr = safeTypeWithContextToString(parameterType, node.name);
|
|
1265
|
+
}
|
|
1266
|
+
// OBJECT LITERAL PROPERTIES - extract property value types
|
|
1267
|
+
else if (
|
|
1268
|
+
node.kind === tsc.SyntaxKind.PropertyAssignment &&
|
|
1269
|
+
node.initializer
|
|
1270
|
+
) {
|
|
1271
|
+
const propType = typeChecker.getTypeAtLocation(node.initializer);
|
|
1272
|
+
typeStr = safeTypeWithContextToString(propType, node.initializer);
|
|
1273
|
+
}
|
|
1274
|
+
// SHORTHAND OBJECT PROPERTIES - preserve referenced symbol type
|
|
1275
|
+
else if (node.kind === tsc.SyntaxKind.ShorthandPropertyAssignment) {
|
|
1276
|
+
const shorthandType = typeChecker.getTypeAtLocation(node.name);
|
|
1277
|
+
typeStr = safeTypeWithContextToString(shorthandType, node.name);
|
|
1278
|
+
}
|
|
1279
|
+
// IMPORT CALLS - preserve module namespace typing for dynamic import()
|
|
1280
|
+
else if (
|
|
1281
|
+
node.kind === tsc.SyntaxKind.CallExpression &&
|
|
1282
|
+
node.expression?.kind === tsc.SyntaxKind.ImportKeyword
|
|
1283
|
+
) {
|
|
1284
|
+
const importType = typeChecker.getTypeAtLocation(node);
|
|
1285
|
+
typeStr = safeTypeWithContextToString(importType, node);
|
|
1286
|
+
}
|
|
1287
|
+
// CALL EXPRESSIONS - extract return types
|
|
1288
|
+
else if (node.kind === tsc.SyntaxKind.CallExpression) {
|
|
1289
|
+
const callSig = typeChecker.getResolvedSignature(node);
|
|
1290
|
+
if (callSig) {
|
|
1291
|
+
const retType = callSig.getReturnType();
|
|
1292
|
+
typeStr = safeTypeToString(retType, node);
|
|
1293
|
+
if (
|
|
1294
|
+
isUnresolvedTypeString(typeStr) &&
|
|
1295
|
+
tsc.isIdentifier(node.expression)
|
|
1296
|
+
) {
|
|
1297
|
+
const symbol = typeChecker.getSymbolAtLocation(node.expression);
|
|
1298
|
+
const declaration = symbol?.declarations?.find(
|
|
1299
|
+
(candidate) =>
|
|
1300
|
+
tsc.isFunctionDeclaration(candidate) ||
|
|
1301
|
+
tsc.isMethodDeclaration(candidate) ||
|
|
1302
|
+
tsc.isFunctionExpression(candidate) ||
|
|
1303
|
+
tsc.isArrowFunction(candidate)
|
|
1304
|
+
);
|
|
1305
|
+
if (declaration) {
|
|
1306
|
+
typeStr =
|
|
1307
|
+
inferFunctionDeclarationReturnType(declaration) || typeStr;
|
|
1308
|
+
}
|
|
1309
|
+
}
|
|
1310
|
+
}
|
|
1311
|
+
}
|
|
1312
|
+
// NEW EXPRESSIONS - extract constructor return types
|
|
1313
|
+
else if (node.kind === tsc.SyntaxKind.NewExpression) {
|
|
1314
|
+
const newSig = typeChecker.getResolvedSignature(node);
|
|
1315
|
+
if (newSig) {
|
|
1316
|
+
const retType = newSig.getReturnType();
|
|
1317
|
+
typeStr = safeTypeToString(retType, node);
|
|
1318
|
+
}
|
|
1319
|
+
}
|
|
1320
|
+
// PROPERTY ACCESS - extract property types
|
|
1321
|
+
else if (
|
|
1322
|
+
node.kind === tsc.SyntaxKind.PropertyAccessExpression ||
|
|
1323
|
+
node.kind === tsc.SyntaxKind.ElementAccessExpression
|
|
1324
|
+
) {
|
|
1325
|
+
const propType = typeChecker.getTypeAtLocation(node);
|
|
1326
|
+
typeStr = safeTypeWithContextToString(propType, node);
|
|
1327
|
+
if (node.kind === tsc.SyntaxKind.PropertyAccessExpression) {
|
|
1328
|
+
addTypeAtPosition(currentSeenTypes, node.name.getStart(), typeStr);
|
|
1329
|
+
} else if (node.argumentExpression) {
|
|
1330
|
+
addTypeAtPosition(
|
|
1331
|
+
currentSeenTypes,
|
|
1332
|
+
node.argumentExpression.getStart(),
|
|
1333
|
+
typeStr
|
|
1334
|
+
);
|
|
1335
|
+
}
|
|
1336
|
+
}
|
|
1337
|
+
// BINARY EXPRESSIONS - extract result types
|
|
1338
|
+
else if (node.kind === tsc.SyntaxKind.BinaryExpression) {
|
|
1339
|
+
const binType = typeChecker.getTypeAtLocation(node);
|
|
1340
|
+
typeStr = safeTypeWithContextToString(binType, node);
|
|
1341
|
+
}
|
|
1342
|
+
// CONDITIONAL EXPRESSIONS - extract union types
|
|
1343
|
+
else if (node.kind === tsc.SyntaxKind.ConditionalExpression) {
|
|
1344
|
+
const condType = typeChecker.getTypeAtLocation(node);
|
|
1345
|
+
typeStr = safeTypeWithContextToString(condType, node);
|
|
1346
|
+
}
|
|
1347
|
+
// LOGICAL EXPRESSIONS - extract result types
|
|
1348
|
+
else if (node.kind === tsc.SyntaxKind.LogicalExpression) {
|
|
1349
|
+
const logType = typeChecker.getTypeAtLocation(node);
|
|
1350
|
+
typeStr = safeTypeWithContextToString(logType, node);
|
|
1351
|
+
}
|
|
1352
|
+
// ARROW FUNCTION EXPRESSIONS - extract return types
|
|
1353
|
+
else if (node.kind === tsc.SyntaxKind.ArrowFunction) {
|
|
1354
|
+
const arrowSig = typeChecker.getSignatureFromDeclaration(node);
|
|
1355
|
+
if (arrowSig) {
|
|
1356
|
+
const retType = arrowSig.getReturnType();
|
|
1357
|
+
typeStr = safeTypeToString(retType, node);
|
|
1358
|
+
// Also extract parameter types for arrow functions
|
|
1359
|
+
if (node.parameters) {
|
|
1360
|
+
for (const param of node.parameters) {
|
|
1361
|
+
try {
|
|
1362
|
+
const paramType = typeChecker.getTypeAtLocation(param);
|
|
1363
|
+
const paramTypeStr = safeTypeToString(
|
|
1364
|
+
paramType,
|
|
1365
|
+
param.name || param
|
|
1366
|
+
);
|
|
1367
|
+
if (paramTypeStr && paramTypeStr !== "any") {
|
|
1368
|
+
currentSeenTypes.set(param.getStart(), paramTypeStr);
|
|
1369
|
+
}
|
|
1370
|
+
} catch {
|
|
1371
|
+
// ignore
|
|
1372
|
+
}
|
|
1373
|
+
}
|
|
698
1374
|
}
|
|
699
1375
|
}
|
|
700
1376
|
}
|
|
1377
|
+
// CLASS DECLARATIONS - extract class instance types
|
|
1378
|
+
else if (
|
|
1379
|
+
node.kind === tsc.SyntaxKind.ClassDeclaration ||
|
|
1380
|
+
node.kind === tsc.SyntaxKind.ClassExpression
|
|
1381
|
+
) {
|
|
1382
|
+
const classType = typeChecker.getTypeAtLocation(node);
|
|
1383
|
+
const constructSigs = typeChecker.getSignaturesOfType(
|
|
1384
|
+
classType,
|
|
1385
|
+
tsc.SignatureKind.Construct
|
|
1386
|
+
);
|
|
1387
|
+
if (constructSigs.length > 0) {
|
|
1388
|
+
typeStr = safeTypeToString(constructSigs[0].getReturnType(), node);
|
|
1389
|
+
}
|
|
1390
|
+
}
|
|
1391
|
+
// ENUM MEMBERS - preserve literal enum member types for TypeScript projects
|
|
1392
|
+
else if (node.kind === tsc.SyntaxKind.EnumMember) {
|
|
1393
|
+
const enumMemberType = typeChecker.getTypeAtLocation(node);
|
|
1394
|
+
typeStr = safeTypeWithContextToString(enumMemberType, node);
|
|
1395
|
+
}
|
|
1396
|
+
// TEMPLATE EXPRESSIONS - extract string types
|
|
1397
|
+
else if (
|
|
1398
|
+
node.kind === tsc.SyntaxKind.TemplateExpression ||
|
|
1399
|
+
node.kind === tsc.SyntaxKind.NoSubstitutionTemplateLiteral
|
|
1400
|
+
) {
|
|
1401
|
+
const tmplType = typeChecker.getTypeAtLocation(node);
|
|
1402
|
+
typeStr = safeTypeWithContextToString(tmplType, node);
|
|
1403
|
+
}
|
|
1404
|
+
// TAGGED TEMPLATE EXPRESSIONS - extract tagged template types
|
|
1405
|
+
else if (node.kind === tsc.SyntaxKind.TaggedTemplateExpression) {
|
|
1406
|
+
const tagType = typeChecker.getTypeAtLocation(node);
|
|
1407
|
+
typeStr = safeTypeWithContextToString(tagType, node);
|
|
1408
|
+
}
|
|
1409
|
+
// YIELD EXPRESSIONS - extract yielded types
|
|
1410
|
+
else if (node.kind === tsc.SyntaxKind.YieldExpression) {
|
|
1411
|
+
const yieldType = typeChecker.getTypeAtLocation(node);
|
|
1412
|
+
typeStr = safeTypeWithContextToString(yieldType, node);
|
|
1413
|
+
}
|
|
1414
|
+
// SPREAD ELEMENTS - extract spread element types
|
|
1415
|
+
else if (node.kind === tsc.SyntaxKind.SpreadElement) {
|
|
1416
|
+
const spreadType = typeChecker.getTypeAtLocation(node.expression);
|
|
1417
|
+
typeStr = safeTypeWithContextToString(spreadType, node.expression);
|
|
1418
|
+
}
|
|
1419
|
+
// DELETE EXPRESSIONS - extract result types
|
|
1420
|
+
else if (node.kind === tsc.SyntaxKind.DeleteExpression) {
|
|
1421
|
+
const delType = typeChecker.getTypeAtLocation(node);
|
|
1422
|
+
typeStr = safeTypeWithContextToString(delType, node);
|
|
1423
|
+
}
|
|
1424
|
+
// TYPEOF EXPRESSIONS - extract result types
|
|
1425
|
+
else if (node.kind === tsc.SyntaxKind.TypeOfExpression) {
|
|
1426
|
+
const typeofType = typeChecker.getTypeAtLocation(node);
|
|
1427
|
+
typeStr = safeTypeWithContextToString(typeofType, node);
|
|
1428
|
+
}
|
|
1429
|
+
// VOID EXPRESSIONS - extract result types
|
|
1430
|
+
else if (node.kind === tsc.SyntaxKind.VoidExpression) {
|
|
1431
|
+
const voidType = typeChecker.getTypeAtLocation(node);
|
|
1432
|
+
typeStr = safeTypeWithContextToString(voidType, node);
|
|
1433
|
+
}
|
|
701
1434
|
// STANDARD EXPRESSIONS & IDENTIFIERS
|
|
702
1435
|
else {
|
|
703
1436
|
let typeObj = typeChecker.getTypeAtLocation(node);
|
|
@@ -714,6 +1447,7 @@ function createTsc(srcFiles) {
|
|
|
714
1447
|
typeStr = safeTypeWithContextToString(typeObj, node);
|
|
715
1448
|
}
|
|
716
1449
|
if (
|
|
1450
|
+
!isDirectCalleeIdentifier &&
|
|
717
1451
|
typeStr &&
|
|
718
1452
|
![
|
|
719
1453
|
"any",
|
|
@@ -724,18 +1458,26 @@ function createTsc(srcFiles) {
|
|
|
724
1458
|
"/*unresolved*/ any"
|
|
725
1459
|
].includes(typeStr)
|
|
726
1460
|
) {
|
|
727
|
-
|
|
1461
|
+
addTypeAtPosition(currentSeenTypes, node.getStart(), typeStr);
|
|
728
1462
|
}
|
|
729
1463
|
} catch (err) {
|
|
730
1464
|
// Silently fail on type resolution errors
|
|
731
1465
|
}
|
|
732
|
-
tsc.forEachChild(node, addType);
|
|
1466
|
+
tsc.forEachChild(node, (child) => addType(child, currentSeenTypes));
|
|
1467
|
+
};
|
|
1468
|
+
|
|
1469
|
+
const collectTypes = (sourceFile) => {
|
|
1470
|
+
const fileSeenTypes = new Map();
|
|
1471
|
+
tsc.forEachChild(sourceFile, (node) => addType(node, fileSeenTypes));
|
|
1472
|
+
return fileSeenTypes;
|
|
733
1473
|
};
|
|
734
1474
|
|
|
735
1475
|
return {
|
|
736
1476
|
program: program,
|
|
737
1477
|
typeChecker: typeChecker,
|
|
1478
|
+
rootNames: tscConfig.rootNames,
|
|
738
1479
|
addType: addType,
|
|
1480
|
+
collectTypes: collectTypes,
|
|
739
1481
|
seenTypes: seenTypes
|
|
740
1482
|
};
|
|
741
1483
|
} catch (err) {
|
|
@@ -749,18 +1491,41 @@ function createTsc(srcFiles) {
|
|
|
749
1491
|
const createJSAst = async (options) => {
|
|
750
1492
|
try {
|
|
751
1493
|
const promiseMap = await getAllSrcJSAndTSFiles(options.src);
|
|
752
|
-
|
|
753
|
-
const CONCURRENCY_LIMIT = 10;
|
|
754
|
-
const chunks = [];
|
|
755
|
-
for (let i = 0; i < srcFiles.length; i += CONCURRENCY_LIMIT) {
|
|
756
|
-
chunks.push(srcFiles.slice(i, i + CONCURRENCY_LIMIT));
|
|
757
|
-
}
|
|
1494
|
+
let srcFiles = promiseMap.flatMap((d) => d).sort();
|
|
758
1495
|
let ts;
|
|
759
1496
|
if (options.tsTypes) {
|
|
760
1497
|
const projectFiles = !shouldIncludeNodeModulesBundles
|
|
761
1498
|
? srcFiles.filter((file) => !file.includes("node_modules"))
|
|
762
1499
|
: srcFiles;
|
|
763
|
-
ts = createTsc(projectFiles);
|
|
1500
|
+
ts = createTsc(projectFiles, options.src);
|
|
1501
|
+
if (ts?.rootNames) {
|
|
1502
|
+
const srcRoot = resolve(options.src);
|
|
1503
|
+
const srcFileByResolvedPath = new Map(
|
|
1504
|
+
srcFiles.map((file) => [resolve(file), file])
|
|
1505
|
+
);
|
|
1506
|
+
for (const file of ts.rootNames) {
|
|
1507
|
+
const resolvedFile = resolve(file);
|
|
1508
|
+
if (
|
|
1509
|
+
resolvedFile.startsWith(srcRoot) &&
|
|
1510
|
+
/\.(?:js|jsx|cjs|mjs|ts|tsx|mts|cts)$/.test(file) &&
|
|
1511
|
+
!srcFileByResolvedPath.has(resolvedFile)
|
|
1512
|
+
) {
|
|
1513
|
+
srcFileByResolvedPath.set(
|
|
1514
|
+
resolvedFile,
|
|
1515
|
+
join(options.src, relative(srcRoot, resolvedFile))
|
|
1516
|
+
);
|
|
1517
|
+
}
|
|
1518
|
+
}
|
|
1519
|
+
srcFiles = [...srcFileByResolvedPath.values()].sort();
|
|
1520
|
+
}
|
|
1521
|
+
}
|
|
1522
|
+
const CONCURRENCY_LIMIT = Math.max(
|
|
1523
|
+
1,
|
|
1524
|
+
Number.parseInt(process.env.ASTGEN_CONCURRENCY || "10", 10) || 10
|
|
1525
|
+
);
|
|
1526
|
+
const chunks = [];
|
|
1527
|
+
for (let i = 0; i < srcFiles.length; i += CONCURRENCY_LIMIT) {
|
|
1528
|
+
chunks.push(srcFiles.slice(i, i + CONCURRENCY_LIMIT));
|
|
764
1529
|
}
|
|
765
1530
|
for (const chunk of chunks) {
|
|
766
1531
|
await Promise.all(chunk.map((file) => processFile(file, options, ts)));
|
|
@@ -791,9 +1556,15 @@ const processFile = (file, options, ts) => {
|
|
|
791
1556
|
try {
|
|
792
1557
|
const tsAst = ts.program.getSourceFile(file);
|
|
793
1558
|
if (tsAst) {
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
1559
|
+
const seenTypes = ts.collectTypes
|
|
1560
|
+
? ts.collectTypes(tsAst)
|
|
1561
|
+
: (() => {
|
|
1562
|
+
tsc.forEachChild(tsAst, ts.addType);
|
|
1563
|
+
const collectedTypes = new Map(ts.seenTypes);
|
|
1564
|
+
ts.seenTypes.clear();
|
|
1565
|
+
return collectedTypes;
|
|
1566
|
+
})();
|
|
1567
|
+
writeTypesFile(file, seenTypes, options);
|
|
797
1568
|
}
|
|
798
1569
|
} catch (err) {
|
|
799
1570
|
console.warn("Process file", file, ":", err.message);
|