feature: implement a ts uniast parser based on ts-node. #72
+27,413
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What type of PR is this?
Check the PR title.
(Optional) Translate the PR title into Chinese.
使用 ts-node 实现了简单的 TypeScript UniAST Parser
(Optional) More detailed description for this PR(en: English/zh: Chinese).
en:
Introduces a TypeScript AST parser that extracts method calls, variable references, and dependencies from TypeScript codebases, generating UNIAST JSON output. The parser requires proper configuration including specifying the correct
tsconfig.json
location and project dependencies setup, and may need Node.js memory adjustment for large repositories. Current limitations include handling of circular dependencies (choosing one randomly as main), dynamic imports, TypeScript decorators, and external symbols without.d.ts
declaration files.zh(optional):
引入了一个 TypeScript AST 解析器,该解析器能够从 TypeScript 代码库中提取方法调用、变量引用和依赖关系,并生成 UNIAST JSON 输出。该解析器需要正确配置,包括指定正确的
tsconfig.json
文件路径和项目依赖设置,对于大型代码库可能还需要调整 Node.js 内存限制。目前的局限性包括:难以处理循环依赖(会随机选择一个作为主依赖)、动态导入、TypeScript 装饰器、缺少.d.ts
声明文件的外部符号。(Optional) Which issue(s) this PR fixes:
(optional) The PR that updates user documentation:
See
ts-parser/README.md