包详细信息

@ast-grep/napi

ast-grep1.5mMIT0.37.0

Search and Rewrite code at large scale using precise AST pattern

ast, pattern, codemod, search

自述文件

@ast-grep/napi

ast-grep

ast-grep(sg)

ast-grep(sg) is a CLI tool for code structural search, lint, and rewriting.

This npm package is for programmatic usage of ast-grep. Please see the API usage guide and API reference.

Other resources include ast-grep's official site and repository.

Support matrix

Operating Systems

node14 node16 node18
Windows x64
macOS x64
macOS arm64
Linux x64 gnu
Windows x32
Windows arm64

更新日志

Changelog

All notable changes to this project will be documented in this file. Dates are displayed in UTC.

Generated by auto-changelog.

0.37.0

  • fix: use docker image instead #1930
  • chore(deps): update dependency @ast-grep/napi to v0.36.3 3dca58c
  • fix: update crate a88a073
  • perf: more efficient node ancestor calculation a1ed329

0.36.3

13 April 2025

  • fix: transformation indent #1405
  • feat: YAML schema validation for node and field types e0a5a47
  • chore(deps): update dependency @ast-grep/napi to v0.36.2 f291ef3
  • fix(deps): update rust crate crossterm to 0.29.0 4c62fe5

0.36.2

19 March 2025

  • fix: report-style short should not print out diff #1884
  • fix: fix do not push empty unused suppressions #1882
  • chore: Remove tree-sitter wasm facade 47b14fe
  • Revert "chore: Remove tree-sitter wasm facade" a449617
  • fix: remove optimize 7365a68

0.36.1

11 March 2025

  • fix: fix globs not working with lang #1861
  • perf: use smallvec for filterfile{pattern, rule} #1858
  • fix(deps): update dependency @swc/core to v1.11.8 a0d9e10
  • perf: save pattern clone and doc clone in multi-lang-doc 1113384
  • perf: remove duplicate pattern match 6eba6d9

0.36.0

9 March 2025

  • perf: remove preScan struct #1837
  • refactor: change Worker trait signature #1849
  • fix: fix inconsistent matching in relaxed mode #1848
  • feat: allow richer metadata format #1854
  • fix: do not display color for error when not in tty #1850
  • fix: make scan respect --globs flag #1842
  • feat: move processing to worker thread #143
  • feat: move matching to worker #143
  • refactor: remove Matches/Diffs macro in cli #1819
  • Breaking change: fix: bump min msrv 846be66
  • refactor: split colored printer 083a5f9
  • refactor: moved interactive printer b9bedf4

0.35.0

15 February 2025

  • fix: ensure SerializableStopBy serialization matches deserialization #1802
  • fix: ensure SerializableStopBy serialization matches deserialization (#1802) #1802
  • feat: allow ERROR node in pattern to match everything #1791
  • Breaking change: feat: use php-only-language for php #900
  • Breaking change: refactor: better apis d91b5c5
  • chore(deps): update dependency @ast-grep/napi to v0.34.4 a7ca599
  • fix(deps): update dependency @babel/core to v7.26.8 bf5b3a4

0.34.4

2 February 2025

  • fix: fix bininstall #1744
  • fix(deps): update dependency @swc/core to v1.10.12 3eea108
  • chore(deps): update rust crate tempfile to v3.16.0 6939cca
  • chore(deps): update dependency @types/node to v22.12.0 ea05951

0.34.3

27 January 2025

  • fix: fix binary command again 2c9034c

0.34.2

27 January 2025

  • fix: fix binary name for npm #1773
  • fix: do not publich napi 553f5e5

0.34.1

26 January 2025

0.34.0

26 January 2025

  • feat: support cargo binstall #1744
  • feat: add tracing of resolved configuration file path #1755
  • fix: report error in run with wrong yaml #1768
  • Breaking change: feat: reduce napi binary size #1759
  • feat: compile sg as an alias of ast-grep #1757
  • doc: update readme #574
  • fix: remove sequel #1743
  • Breaking change: feat: remove nonsupported language e5a0a55
  • feat: use macro to simplify code d762257
  • fix(deps): update dependency @babel/core to v7.26.7 5944dbf

0.33.1

12 January 2025

  • feat: Support passing rule config to SgNode match methods (matches, has, inside, follows, precedes) #1730
  • chore(deps): update dependency @ast-grep/napi to v0.33.0 61f7177
  • fix(deps): update dependency typescript to v5.7.3 85a7204
  • fix(deps): update dependency tree-sitter to v0.22.4 ec70763

0.33.0

5 January 2025

  • Breaking change: refactor: move pyo3 registration to CustomLang 4ddb08f
  • feat: introduce napi_lang for dynamic loading 1a8d782
  • chore(deps): update dependency @ast-grep/napi to v0.32.3 713244f

0.32.3

30 December 2024

  • feat: print fixed rules count #1708
  • fix: move unused suppressions to config crate #1624
  • fix: allow malformed pattern to be dumped as tree #804
  • fix: fix files not recognize in lsp #1691
  • fix: fix crash when internal node has no child #1688
  • feat: use mutable self in Printer trait 5e3835a
  • feat: reduce binary size by remove Printer polymorphism 8b735cf
  • feat: resolve rule id for ScanResult 9a7f3cc

0.32.2

17 December 2024

  • fix: linting 10f3e74
  • feat: distinguish manual type annotation 4558c48
  • feat: add ChildTypes helper 0d477e9

0.32.1

17 December 2024

  • fix(deps): update rust crate clap_complete to v4.5.39 6ad3c7b
  • fix: add npmignore to suppress gitignore 11bb8e4

0.32.0

17 December 2024

  • feat: Add fieldChildren method to napi's SgNode and pyo3's PyNode #1655
  • Breaking change: fix: rename range rule's row to line #1663
  • fix: add biome formatting 5a41f13
  • feat(napi): Typed SgNode and SgRoot 55e65f3
  • fix: Use ts-node and versioned node-types URLs instead of heads dcb7916

0.31.1

8 December 2024

  • feat: update tree-sitter dependency to 0.24.4 91a2b46
  • fix(deps): update dependency @swc/core to v1.10.0 526648b
  • fix: fix new clippy error ebfcbcd

0.31.0

2 December 2024

  • feat: only scan rule senstive files #1635
  • feat: better error handling for dynamic lib loading #1631
  • Breaking change: feat: support character based column number #1594
  • Breaking change: refactor: expose new struct Position for abstracting column b87dad7
  • refactor: Use the utf-corrected row and column methods for the range matcher 2b30f56
  • feat: Add support for range matcher 4fb2c52

0.30.1

26 November 2024

  • fix: fix --config=config.yml arg parse #1617
  • fix: update python version #1614
  • fix(deps): update dependency @swc/core to v1.9.3 63c1c8d
  • chore: revert pyo3 2022f38
  • feat: add rule entity inspection c569ec7

0.30.0

11 November 2024

  • Breaking change: feat: semi-structured tracing output #1574
  • fix: error=unused-suppression should change exit code #1585
  • refactor: move stdErr into inspect mod #1575
  • infra: switch to llvm-cov #1570
  • Breaking change: refactor: rename --tracing to --inspect 105945e
  • Breaking change: refactor: remove --json format for tracing ed05be4
  • Breaking change: fix: remove builtin dart support cd25a62
  • Breaking change: fix: report unused suppression always 893df63
  • fix(deps): update babel monorepo b8803ce

0.29.0

30 October 2024

  • feat: support override severity of unused-suppression #1556
  • feat: unify configuration reading #1557
  • feat: unify configuration #1557
  • refactor: improve file config handling #1553
  • refactor: revamp configuration file discovering and custom language registration #1553
  • feat(scan): support context, before/after flags #1549
  • feat: add RuleOverwrite to override rule severity from CLI #1061
  • Breaking change: feat: support --config in sg new cfe472f
  • feat: add rule overwrite impl fb4ac07
  • fix(deps): update dependency @swc/core to v1.7.36 c11fd89

0.28.1

20 October 2024

  • feat: report unused suppression #1346
  • feat: make number of threads configurable #1498
  • doc: add bug report yaml #1462
  • refactor: rename tracing f83dbe9
  • fix: fix bug report bug agains 61921f7
  • fix(deps): update dependency @babel/core to v7.25.8 cf06185

0.28.0

6 October 2024

  • feat: TypeScript types for Rules in NAPI #1038
  • feat:support glob path match in CLI #1062
  • refactor: move input/output args to standalone file 3d937cb
  • refactor: move worker outside of utils 84ea621
  • fix(deps): update babel monorepo to v7.25.7 b989f05

0.27.3

22 September 2024

  • feat: add prettified pattern debug 70d33b5
  • fix(deps): update rust crate pyo3 to v0.22.3 683e398
  • test: add test for CST a79f13f

0.27.2

14 September 2024

  • feat: add follow symbolic links option to CLI #1461
  • fix(deps): update dependency @swc/core to v1.7.26 e0b437d
  • fix(deps): update dependency @swc/core to v1.7.24 657bc4e
  • chore(deps): update dependency typescript to v5.6.2 c55a404

0.27.1

8 September 2024

  • fix: create .gitkeep file in new dirs #1273
  • fix: fix unwrap error for unfound dir #1456
  • fix(deps): update dependency @swc/core to v1.7.23 5fd4101
  • chore(deps): update dependency @types/node to v20.16.5 294e402
  • fix: improve error message d46df6a

0.27.0

7 September 2024

  • feat: support YAML language #1436
  • fix(deps): update dependency @swc/core to v1.7.22 c577761
  • fix(deps): update dependency @swc/core to v1.7.21 4b0e594
  • feat: add rule config potential kind test def5b21

0.26.3

25 August 2024

  • fix: fix wrong transformation indentation #1405
  • fix: compare only kind for unnamed nodes #1419
  • fix(deps): update dependency @swc/core to v1.7.18 9ecb02c
  • fix(deps): update dependency @swc/core to v1.7.14 459d20a
  • test: add test for transformation indentation e0bfaf2

0.26.2

18 August 2024

  • fix: readopt matched metavar in napi #1380
  • chore: update napi definition 07e084a
  • fix(deps): update dependency @swc/core to v1.7.11 835b06f
  • fix(deps): update dependency @swc/core to v1.7.10 d7a3820

0.26.1

9 August 2024

  • feat: support dynamic language in pyo3 #1143
  • test: add test for load dynamic lang in python 236f4ab
  • feat: add py_lang registration function 43e74e7
  • feat: add pytype for register language 8b660cf

0.26.0

7 August 2024

  • feat: Additional impls for language types #1379
  • feat: append note to error message if available #1384
  • fix: LSP should skip files outside the workspace root #1382
  • fix(deps): update dependency @babel/core to v7.25.2 3b0be88
  • refactor: split two macros b760eb8
  • refactor: simplify visitor 5ae03ae

0.25.7

5 August 2024

  • feat: add charCount to split lines #1381
  • chore(deps): update dependency @types/node to v20.14.14 bca7e7b
  • fix(deps): update rust crate clap to v4.5.13 c143464
  • fix(deps): update rust crate toml_edit to v0.22.20 170da4c

0.25.6

4 August 2024

  • feat: add --selector in sg run #1378
  • fix: fix clippy new complaints a4cc793
  • fix(deps): update dependency @swc/core to v1.7.5 d3ee100
  • chore(deps): update rust crate tree-sitter to v0.22.2 93d684a

0.25.5

1 August 2024

  • feat: support using transform in rule message #1366
  • test: add test for skipping multiple ellipsis #1365
  • feat: Support ast-grep-ignore comment on same line as violation #1347
  • Revert "feat: add wasm engine support" 78b1633
  • feat: add wasm engine support ff77914
  • refactor: remove old find/scan 58a3646

0.25.4

25 July 2024

  • feat: support sql experimentally #1300
  • feat: consistent file path for search by removing ./ prefix #1343
  • feat: allow multiple tests in a single YAML file #1344
  • refactor: use HarnessBuilder c41ffa8
  • refactor: move out some files dfa38f2
  • test: add test for deserde tests 76796e4

0.25.3

22 July 2024

  • feat: support custom language injection #1309
  • feat: register embedded language 416e28e
  • fix(deps): update dependency @babel/core to v7.24.9 8c5dd00
  • fix(deps): update dependency @swc/core to v1.7.0 61f6a14

0.25.2

18 July 2024

  • fix: only present code action when there are truly fixable diagnostic #1327
  • refactor: move some function out of lsp 1e6b477
  • fix: use fix in data for fix all command d358d45
  • fix: update fix all lsp b760b9b

0.25.1

14 July 2024

  • fix: make config file work outside of workspace root #1326
  • fix: fix napi musl bde7f34
  • fix: debug napi 2d87fc5

0.25.0

13 July 2024

  • Fix Python 3.10 macOS ast-grep-py build #1315
  • feat: support multiple doc in scan #1310
  • fix: fix testing #1305
  • feat: support searching injected code in specified lang #1307
  • feat: improve HTML language extraction for ts/scss #1301
  • fix: use relative path in lsp #1272
  • fix: use match info in lsp message #1271
  • feat: support arm64 musl #1227
  • fix(deps): update dependency @babel/core to v7.24.8 624aa70
  • feat: support multiple regions in run 07ef11f
  • refactor: move Html out 4a0c177

0.24.1

26 June 2024

  • fix: skip missing node in pattern #1256
  • doc: add cli help text for debug format 1754382

0.24.0

23 June 2024

  • feat: add debug ast and cst #1218
  • feat: add strictness in PyO3 #1246
  • feat: add strictness flag in cli #1243
  • test: add test for different strictness #1241
  • feat: add strictness to YAML #1239
  • Breaking change: fix: update API for fix 4971ac2
  • Breaking change: fix: change deletedLength to endPos in napi c0e9a65
  • feat: add colorized output 22f279c

0.23.1

22 June 2024

  • fix: all should not pollute env #1225
  • Breaking change: feat: use new pattern struct f219b43
  • refactor: move match_node impl out 27c918a
  • refactor: factor out match_ellipsis logic 407d2a8

0.23.0

11 June 2024

  • feat: add typings for pyo3 #676
  • refactor: remove unused old code 3ffd1d9
  • fix(deps): update babel monorepo to v7.24.7 b4aebaf
  • refactor: add new abstraction for match_tree 079bc7d

0.22.6

4 June 2024

  • fix: add Edit to export list #1186
  • feat: add modify edit range feature in pyo3 1e31253
  • test: add test for modifying edit 7044811
  • fix: addClass Edit in pyo3 d81c6c3

0.22.5

2 June 2024

  • feat: support all languages in napi #1170
  • Breaking change: refactor: rename Frontend Language to Lang c582c16
  • refactor: move find files operations to standalone files 8ebb888
  • feat: support more languages in napi 19e3baa

0.22.4

26 May 2024

  • feat: use var defined in utils in transform/fix #1155
  • fix: fix pattern polluting env #1164
  • test: add python fix test #1161
  • feat: add fix related feature to pyo3 #1159
  • test: add test for napi test #1160
  • feat: add commit_fix and fix to napi #1158
  • fix(deps): update babel monorepo to v7.24.6 0898b55
  • fix(deps): update dependency @swc/core to v1.5.7 9beda6e
  • feat: add edit/fix sketch 6817854

0.22.3

12 May 2024

0.22.2

12 May 2024

0.22.1

12 May 2024

  • feat(language): Add support for Haskell via tree-sitter-haskell #1128
  • fix: add ast-grep to release #1130
  • fix(deps): update dependency @swc/core to v1.5.5 31428dd
  • fix(deps): update dependency tree-sitter-typescript to v0.21.1 188525d
  • chore(deps): update dependency @types/node to v20.12.11 3fe7780

0.22.0

8 May 2024

  • test: add string test case back in Rust #1060
  • chore: bump tree-sitter version 5b45bd7
  • fix: update wasm crate ce9acba
  • fix: update ts deps 3a67b6b

0.21.4

6 May 2024

  • fix: build from source #1125
  • doc: update how to install via cargo #1118
  • feat: report undefined util rules #1106
  • Breaking change: feat: separate RuleCoreError and RuleConfigError d96efa9
  • refactor: move Transformation into a standalone module b51cc95
  • fix(deps): update dependency @babel/core to v7.24.5 77ea8bd

0.21.3

2 May 2024

  • feat: make pattern more permissive #1087
  • refactor: further simplify test case 8188473
  • refactor: make rewrite test simplier 5a754ef
  • test: add test for contextual pattern defined var 2d6bae8

0.21.2

1 May 2024

  • feat: Allow to use meta variable captured outside of rewrite rule inside the rewriter #1072
  • refactor: move rule_core test out of rule_core 1e8af4c
  • feat: move check variable usage out to a standalone file f086d10
  • refactor: move check var around cfe3529

0.21.1

24 April 2024

  • feat: find defined vars in utils cbc6534
  • fix: add referent rule stack overflow test case f7f24e1
  • feat: add utils defined vars 59001eb

0.21.0

24 April 2024

  • feat: report unused rewriters #1064
  • feat: report undefined error in fix #1070
  • feat: define the resolution order of meta variables #1068
  • feat: export used meta-var in transform #1069
  • feat: export meta variables defined in transform #1066
  • feat: export meta variables defined in constraints/rules #1067
  • test: add test for Pattern::defined_vars method #1065
  • feat: analyze meta variables defined in pattern #1065
  • feat: add field id Error for relational rule #1059
  • feat: support rewrtier check in sub-rule eb4c47c
  • test: add undefined rewriter test d56ad74
  • feat: add used_vars in TemplateFix 641d3b4

0.20.5

10 April 2024

0.20.4

8 April 2024

  • fix: fix new deprecation note of Rust 2024 a70565e
  • fix: fix quickfix fef3dfc
  • fix: better fix message e0b5875

0.20.3

7 April 2024

  • feat(lsp): run "source.fixAll.ast-grep" onsave #1021
  • test: move the integration-test to test folder f2ff77a
  • chore: cargo update 83394e9
  • refactor: move logging and io out of on_apply_all_fix cd79cda

0.20.2

27 March 2024

  • feat: make test --update-all not report error #771
  • fix: fix update cases f8132a4
  • refactor: less indentation for interactive reporter 203bd35
  • feat: improve accept 441a548

0.20.1

24 March 2024

  • feat: respect suppression in lsp #1019

0.20.0

24 March 2024

  • test: add test for error suppression in scan #1007
  • refactor: merge CombinedScan::scan and CombinedScan::diff #1011
  • feat: report error count instead of file count #1009
  • feat: suppress specific rule #1005
  • fix: skip suppressed error #1006
  • feat: support error/warning suppression #446
  • fix(deps): update babel monorepo da9a938
  • fix(deps): update dependency @swc/core to v1.4.8 d81365a
  • feat: add more states for rule suppression 41a058c

0.19.4

10 March 2024

  • LSP default message for diagnostics #970
  • feat: Add error messaging for rule file parsing failures #968
  • feat: add html testing and tweak html #977
  • fix(deps): update dependency @babel/core to v7.24.0 a14741d
  • fix(deps): update dependency @swc/core to v1.4.6 4a397f4
  • fix(deps): update rust crate pyo3 to 0.20.3 23653c2

0.19.3

24 February 2024

  • fix(deps): update dependency @swc/core to v1.4.2 67450cb
  • refactor: move rewriters to SerializableRuleConfig d98c062
  • fix(deps): update rust crate inquire to 0.7.0 86ec845

0.19.2

22 February 2024

  • fix: improve expando char replacement #883
  • feat(napi): add support for napi linux x64 musl c4d7902
  • fix: fix wrong spacing matching 0e8b4f0
  • Update README.md 9636a1a

0.19.1

19 February 2024

  • fix: avoid input stream when --update-all #943
  • fix: update cargo lock 8a893e7
  • fix(deps): update dependency @swc/core to v1.4.1 d18fd70
  • chore(deps): update dependency @types/node to v20.11.19 40d3fa0

0.19.0

14 February 2024

  • Breaking change: refactor: remove unused type generic 9b13d41
  • Breaking change: fix: update pyo3 test ff10e81
  • fix: fix parallel thread output be230ca

0.18.1

31 January 2024

  • Breaking change: refactor: use more concise name 6a4a17c

0.18.0

30 January 2024

  • Breaking change: refactor: remove IndentSensitive trait #868
  • feat: add support for rewriters #855
  • Breaking change: refactor: rename RuleWithConstraints to RuleCore #862
  • feat: move fix to SerializableRuleCore #859
  • Breaking change: refactor: remove MetaVarMatchers beb6f50
  • Breaking change: feat: move fixer to RuleCore 8a43a26
  • Breaking change: refactor: move language out of SerializableRuleCore c5e0dc8
  • Breaking change: refactor: remove Content generic from Fixer 87bbf93
  • Breaking change: feat: improve get_fixer signature e629e0f
  • Breaking change: refactor: make TemplateFix non-generic 0f462a5
  • feat: migrate constraints to Rule 230ee9c
  • refactor: move SerializableRuleCore to rule_core mod 3a303c1

0.17.1

12 January 2024

  • feat: respect user's language extension option #848

0.17.0

11 January 2024

  • Breaking change: feat: change get_fixer to return Fixer 07c5363
  • feat: add modify_range for tweaking fix range selection eeb2f98
  • feat: rename modify_range -> get_replace_range 54837df

0.16.1

5 January 2024

  • feat: add support for bash and php #639
  • Breaking change: fix: more strict meta var parsing 13ad32b
  • Breaking change: refactor: remove thrift language 26ecdf6
  • fix(deps): update dependency @swc/core to v1.3.102 9ca9711

0.16.0

29 December 2023

  • feat: add language globs to findInFiles in napi #780
  • Breaking change: fix: rename MetaVar for better naming #805
  • refactor: reorgnanize napi file structure 93f8577
  • refactor: move file type related function out of lib 64e33a3
  • feat: handle FileOption in LangOption::infer 7bc3efe

0.15.1

17 December 2023

  • feat: support mutliple rules in -r and --inline-rules #786
  • refactor: unify run_worker and run_std_in #785
  • Breaking change: feat: --stdin now always awaits user input #791
  • feat: support --inline-rules option for sg scan #396
  • refactor: separate PathWorker and StdInWorker and Worker ef3d8ad
  • test: add test cases for sg scan ed35c71
  • fix: revert github action a2f22d8

0.15.0

15 December 2023

  • Breaking change: feat: reduce metavar_env string allocation e1ab015
  • Breaking change: fix: remove pattern as replacer f6e4293
  • Breaking change: feat: better metavar detection e1ab18a

0.14.4

11 December 2023

  • fix: use tempfile to remove vuln #765
  • chore(deps): update dependency typescript to v5.3.3 dbac17d
  • chore(deps): update dependency @napi-rs/cli to v2.17.0 f2d32be
  • chore(deps): update dependency prettier to v3.1.1 990f09b

0.14.3

10 December 2023

  • feat: add getTransformed in napi #551
  • fix: load custom languages in new command #751
  • chore(deps): update dependency ava to v6 496eb9d
  • feat: add support for Elixir 57edde1
  • feat: rename fixer to TemplateFix 5b53ce0

0.14.2

2 December 2023

  • fix: update line number color #739
  • test: add test case for running sg without arg #748
  • fix(deps): update dependency @babel/core to v7.23.5 21e404c
  • fix(deps): update dependency @swc/core to v1.3.100 941bffe
  • test: add tes for lang_globs a16001c

0.14.1

30 November 2023

0.14.0

30 November 2023

  • feat: add languageGlobs #601
  • doc: import config reference link in error message #736
  • fix: report error for wrong config file #736
  • feat: support register alias language for extension override #601
  • chore(deps): update dependency typescript to v5.3.2 55a43bd
  • fix: remove alias languages 1f26f62
  • feat: support language globs fafd27c

0.13.2

20 November 2023

  • chore: add cargo fmt/clippy to CI pipeline #698
  • refactor: better reusability code for benchmark 775cee4
  • feat: add async call 11cf0dd
  • feat: support napi's parseAsync ac78bc0

0.13.1

15 November 2023

  • Breaking change: fix: use ansi by default on windows #680
  • fix: guard against wrong tree-sitter traversal #713
  • docs(binding/py): basic readme 2d39b9b
  • fix(deps): update dependency @oxidation-compiler/napi to ^0.2.0 d64c09b
  • feat: rename ast-grep-py 3e891c0

0.13.0

5 November 2023

  • feat: support pyo3 TypedDict #389
  • chore(deps): update yarn to v4 818bcc2
  • refactor: move node outside 40028b0
  • chore: formatting 254e0de

0.12.5

15 October 2023

  • fix: rewrite out of bound panic #668
  • chore: bump windows action version #620
  • fix: correct stopBy json schema #666
  • feat: cargo xtask schema for rule's JSON schema #665
  • feat: add json schema 73d6299
  • feat: initialize pyo3 810c454
  • feat: update rules field doc c9d611d

0.12.4

3 October 2023

  • fix: fix word split after delimiter appear b1bcd61

0.12.3

3 October 2023

  • fix: correct indent for multiple MV in same line #647
  • Breaking change: feat: change string case interface 4b60f82
  • feat: add string split fe52289
  • feat:change string case name and implement conversion f073ee3

0.12.2

29 September 2023

  • Add identifier convention conversions #638
  • Breaking change: feat: change API name toCase fa50666
  • fix: make code compiles 8f29f4f
  • fix: remove unused func temporarily 710f76e

0.12.1

13 September 2023

  • Implement string conversions described in #436 as a stand-alone chainable convert transform dc1e435
  • Move structs around in transform.rs for better readability 95a9ab8
  • fix(deps): update rust crate serde_json to 1.0.106 b41cfc0

0.12.0

9 September 2023

  • chore(deps): update dependency windows to v2022 #623
  • Breaking change: feat: interactive print one item a time #444
  • refactor: mvoe combined scan to config crate #626
  • test: add test for test case #553
  • Breaking change: feat: revamp diff printing schema 2b30111
  • Breaking change: feat: accept multiple scanning 4860aa4
  • refactor: move reporter out of verify.rs 58fb152

0.11.1

17 August 2023

  • feat: support context lines in JSON mode #585
  • fix(cli): update typos and usage instructions 9fcf34f
  • fix: lock maturin version 83608ac
  • fix: allow newer maturin 3704f63

0.11.0

13 August 2023

  • feat: Rename scan --rule-id → scan --filter #596
  • feat: improve completions command #595
  • Breaking change: feat: test -f now accepts regex 6465200
  • Breaking change: fix: remove -f -F short form argument d6d2c23
  • feat: add option scan --rule-id <rule_id>… a424121

0.10.1

4 August 2023

  • [feat] Make CLI reports a soft warning if query is invalid #575
  • feat: improve swift support #573
  • doc: add descriptions and links in npm page 3be3764
  • feat: implement soft error reporting c581c34
  • fix: show at least three lines of context in diffing ff61688

0.10.0

30 July 2023

  • feat: support multiple JSON printing style #561
  • refactor: move output related arguments out #539
  • feat: improve readability of argument value #546
  • feat: use checked_ilog10 to reduce string allocation #550
  • feat: nicer line number printing color #547
  • refactor: move common input args out a9bd29a
  • refactor: reorganize utils files and add comments 19dacf8
  • feat(test): add test case filter for sg test 52f51e9

0.9.3

27 July 2023

  • feat: add before/after context #464
  • test: move test out and fix heading never 67037aa
  • test: add json print test 374db3b
  • fix: fix display context 08a52d1

0.9.2

22 July 2023

  • feat(language): add initial support for JSON #522
  • test: add lua language test #519
  • feat: Support meta-variable in ERROR #526
  • infra: add napi benckmark #442
  • feat: support GitHub format #499
  • fix: tweak style 6ec490b
  • chore(deps): update yarn to v3.6.1 23a2684
  • fix(deps): update dependency @oxidation-compiler/napi to ^0.1.0 492d5c8

0.9.1

16 July 2023

  • fix: fix wrong text #517
  • feat: support ruby language #518
  • refactor: use macro to unify language impl #516
  • fix: fix kotlin grammar e7faadb
  • test: add test for diff printing 5330149
  • fix(deps): update rust crate dashmap to 5.5.0 05282aa

0.9.0

15 July 2023

  • Breaking change: feat: unify --accept-all and --update-snapshots to --update-all #513
  • Breaking change: infra: add breaking change in changelog #514
  • Breaking change: feat: change line separator to colon : in CLI output #512
  • fix: tsx should only discover .tsx, ts discover only .ts #502
  • refactor: refactor path to parallelwalk d697aad
  • fix(deps): update rust crate globset to 0.4.11 3da277f
  • test: add test for sg test command arg parsing 2735057

0.8.0

10 July 2023

  • feat: add changelog to tag release #498
  • feat: add changelog to release #498
  • napi: add napi declaration e897d93
  • feat: change --no-stdin to --stdin 1e26573
  • fix: update napi typing doc 59dfcb7

0.7.2

9 July 2023

  • feat: add getRoot for SgNode #497
  • feat: add option to disable a rule #489
  • feat: add pattern fixed string optimizer #349
  • feat: add support for --no-stdin #490
  • feat: change language implementations 7525927
  • test: add test for sg scan with off-rule 0eeb99d
  • fix: change returning type 10e676b

0.7.1

29 June 2023

  • feat: add supported languages in help string #482
  • feat: add Scala support 84492b9
  • feat: improve language's crate's organization 429aa35
  • feat: Use existing language FromStr impl when Deserializing ad0e9a6

0.7.0

25 June 2023

  • feat: support scan from stdin #397
  • feat: support search code from stdin #397
  • doc: add pip install option #465
  • feat: support stdin as input 2e8f0ef
  • fix(deps): update rust crate toml_edit to 0.19.11 f0facff
  • fix: remove redundant line number highlighting aaae3a3

0.6.7

23 June 2023

0.6.6

19 June 2023

  • chore: update changelog 962246b
  • fix: add cpp to non-builtin parser 0a473c9

0.6.5

19 June 2023

  • feat: support check multivar pattern equality #460
  • feat(language): add initial support for C++ 9315571
  • doc: add docs string for all core modules e0214f7
  • test: add test for transform 100f081

0.6.4

17 June 2023

0.6.3

11 June 2023

  • chore: move test cases location 3c0276e
  • feat: add support for transform 47feee1
  • refactor: move get text to meta_var 5692c26

0.6.2

6 June 2023

0.6.1

6 June 2023

  • fix: reindent back into src code a522875
  • perf: remove all possible allocations 45558a5
  • fix: use Cow to otpimize allocation b4c85b3

0.6.0

5 June 2023

  • feat: add indentation sensitive replacement #394
  • fix: use ubuntu20.04 instead of latest #416
  • refactor: refine replacer modules 79dc46b
  • test: add root replacer test back 99aa031
  • feat: add design notes for indentation sensitive fixer 9c8cc05

0.5.7

29 May 2023

  • wildcard and spread rust tests #415
  • fix: fix multi variate capturing hangs #411
  • feat: smarter matching algorithm #374
  • chore(deps): update dependency ava to v5.3.0 67e8ec1
  • test: add test for match end 3e61667
  • chore(deps): update rust crate criterion to 0.5 3579862

0.5.6

25 May 2023

  • fix: bump tree-sitter-facade version and support next_all on web a48ba62
  • fix: update tree-sitter-facade version 8e44f6a
  • chore: update changelog 78f751a

0.5.5

24 May 2023

0.5.4

24 May 2023

  • fix: implement generic Doc replacer for pattern #405
  • fix: use get_range instead as_slice to handle byte_offset and underlying arry size #400
  • chore: bump version 998691d
  • feat: support generic new Pattern/Root from str 36d91e7
  • chore: use workspace package info 960fa8d

0.5.3

18 May 2023

  • perf: optimize relational rule's stopBy: neighbor #358
  • perf: optimize node's next_all by tree-cursor #358
  • test: add test for node operators ac38cb8
  • refactor: add comments for ansi link d9ebbe5
  • test: add test for precedes/follows serialization 1d7d8ff

0.5.2

13 May 2023

  • docs: fix readme typo #366
  • chore: add cargo build before git tag #367
  • 0.5.2 bump version 54ba0a7
  • feat: add go setting a1d579b
  • fix: fix fmt and clippy efab639

0.5.1

12 May 2023

0.5.0

12 May 2023

  • feat: provide additional binary name ast-grep #361
  • fix: support custom lang for sg run #357
  • feat: support dynamic lib loading #347
  • feat: replace SupportLanguage with SgLang f6014f9
  • Used result in test code to remove unwrap 07bcf7e
  • feat: improve implementation of dynamic lang 3757887

0.4.1

23 April 2023

0.4.0

23 April 2023

  • feat: reduce MetaVarEnv cloning in any #217
  • fix: support correct row/col offset for napi! #336
  • refactor: break down napi modules 67062a6
  • feat: migrate node 5e15d8d
  • feat: change ts_parser to source a3bef23

0.3.3

6 April 2023

  • infra: add criterion benchmark #141
  • feat: Add edit option for rules without fix #297
  • feat: optimize readability of test output #293
  • test: add integration test for run #292
  • refactor: move out lib and main a95c19e
  • fix(deps): update rust crate clap to 4.2.1 b3fb9c9
  • feat: add base_dir for new command 2a75a0a

0.3.2

11 March 2023

  • fix: find_rule should also find contingent rule #286
  • feat: create new project/util/rule command #266
  • feat: add write sgconfig 750df87
  • feat: rename find_config to find_rules 8e5a181
  • 0.3.2 bump version 4f41f46

0.3.1

28 February 2023

  • fix: fix panic when matching root node #275
  • 0.3.1 bump version 703467e
  • fix: fix napi error 3d305a6
  • chore: bump version a25bef1

0.3.0

28 February 2023

  • fix: add is_named_leaf #276
  • fix: report indirect cyclic dependencies #272
  • fix: register global rules by dependent order #269
  • [feature] register util rules by their topological sort order #270
  • feat: change stopBy default value to neighbor #265
  • feat: add global utils #250
  • feat: add thrift support #255
  • fix: avoid strong reference in ReferentRule #253
  • refactor: factor out deserialize rule a6207ae
  • refactor: move stop_by to separate file 398c53d
  • refactor: reorganize rule and serialization 37a303f

0.2.6

8 February 2023

  • feat: add maybe to differentiate null/missing/value #241
  • feat: add error exit code #238
  • refactor: disable color by default if output is not tty #239
  • feat: unify immediate and until to stopBy ff69866
  • 0.2.6 bump version 136a75f
  • feat: support field in Inside c503f0f

0.2.5

4 February 2023

  • feat: improve napi error message #227
  • feat: add reference 303ec8c
  • feat: add find_in_files 07735df
  • feat: add napi findInFiles 3f4e847

0.2.4

29 January 2023

  • perf: use potential_kinds for more scenarios #221
  • refactor: remove var_matchers from MetaVarEnv #218
  • refactor: remove get meta_var_matchers in Matcher #218
  • refactor: split scan and run bf1e7e2
  • Revert "perf: use potential_kinds for more scenarios" c264e32
  • refactor: remove duplicate MatchUnit/filter_file ab2222e

0.2.3

27 January 2023

  • feat: make inside util inclusive #205
  • feat: support search multiple paths #207
  • fix: use return number for napi #205
  • 0.2.3 bump version 753e972
  • refactor: use stop_by for all relational rule 279edeb
  • refactor: cleaner StopBy matching 974a307

0.2.2

25 January 2023

0.2.1

24 January 2023

0.2.0

24 January 2023

  • feat: support multi node pattern #199
  • [refactor] Extract a match node iterator function in matcher_tree #199
  • feat: print out serialized rule message #200
  • fix: fix nested leaf match crash in non-entrant traversal #197
  • feat: add Dart support #172
  • fix: fix wrong line number in diff #192
  • feat: support inclusive until #191
  • feat: allow shorthands to combine all rule kinds 51f72db
  • refactor: refactor deser for better error message f28f964
  • 0.2.0 bump version e580932

0.1.18

16 January 2023

  • fix: revert write env for unmatched pattern #190
  • fix: fix Has relation #188
  • feat: add rule info to config fixer #122
  • refactor: deduplicate json printer code #185
  • feat: add regex matcher 0a40ed2
  • 0.1.18 bump version bfdde22
  • feat: add debugging assert 5b17e8b

0.1.17

15 January 2023

  • feat: add error handling for parsing RuleConfig #182
  • feat: better error handling in constraints config #181
  • feat: improve error handling in config #181
  • 0.1.17 bump version 0a638f1
  • feat: add try_new for pattern creation a9510d2
  • refactor: cleanup public API 875ef1e

0.1.16

14 January 2023

  • fix(deps): update rust crate ignore to 0.4.19 #165
  • fix(deps): update rust crate globset to 0.4.10 #164
  • feat: support --no-ignore for scan/test #162
  • fix: fix two adjacent sticking but not overlapping matches #171
  • feat: add source 1a23b6a
  • 0.1.16 bump version 8cc6765
  • feat: add adopt method to safely create Node 6ea01ae

0.1.15

8 January 2023

  • feat: make tree-sitter-* parsers optional dependencies #160
  • 0.1.15 bump version fa56cf1
  • refactor: use macro to abstract away repetitive lang method impl fb58b15
  • feat: edit cargo toml 1611af5

0.1.14

4 January 2023

  • chore(deps): update dependency @napi-rs/cli to v2.14.0 #149
  • fix(deps): update rust crate num_cpus to 1.15.0 #147
  • fix(deps): update rust crate clap to 4.0.32 #145
  • chore(deps): update robinraju/release-downloader action to v1.7 #146
  • fix(deps): update rust crate serde_json to 1.0.91 #136
  • fix(deps): update rust crate serde_yaml to 0.9.16 #137
  • fix(deps): update rust crate serde_yaml to 0.9.15 #116
  • feat: merge adjacent matches in match printing #134
  • feat: refactor printers to accept output destination #153
  • feat: add traversal mod for sg-core #152
  • [refactor] simplify Matcher trait #151
  • feat: move interactive printer #135
  • feat: implement better heading show #150
  • test: add test for command arg parsing #128
  • feat: support run only one rule for scanning #139
  • feat: support color control on run/scan output #131
  • fix: fix stackoverflow in find_node_impl #148
  • feat: add labels and env info to json output #121
  • refactor: abstract out scan as worker #138
  • refactor: use mpsc for non-interactive output #125
  • feature: extract out a language crate #126
  • refactor: remove some inner call #3
  • refactor: extract out two printers 9328cd7
  • feat: fix interactive print rule 17fbaf0
  • feat: migrate run with specific lang ea46263

0.1.13

18 December 2022

  • fix(deps): update rust crate serde_json to 1.0.90 #115
  • Update dependency @napi-rs/cli to v2.13.3 #114
  • feat: implement proper json output 0c031c1
  • chore: add changelog d6fc114
  • feat: add json output support f33e39f

0.1.12

15 December 2022

  • Update dependency @napi-rs/cli to v2.13.2 #103
  • Update dependency typescript to v4.9.4 #104
  • Update Rust crate tree-sitter-java to 0.20.0 #105
  • Update dependency chalk to v5.2.0 #106
  • feat: use better color output for readability #111
  • feat: support version and help argument #110
  • fix: skip extremely large file #109
  • 0.1.12 bump version 5ea05eb
  • fix: use get_matcher instead of get_rule in verify 4b4ea8e
  • fix: better large file detection 293a5c8

0.1.11

11 December 2022

  • 0.1.11 bump version 1ba3c13
  • feat: add get all keys in meta var env 8203945

0.1.10

7 December 2022

  • Update Rust crate clap to 4.0.29 #102
  • Update Rust crate serde_json to 1.0.89 #101
  • Update Rust crate clap to 4.0.28 #100
  • Update dependency @napi-rs/cli to v2.13.0 #99
  • Update dependency ava to v5.1.0 #97
  • Update dependency typescript to v4.9.3 #98
  • Update Rust crate similar to 2.2.1 #95
  • Update dependency @napi-rs/cli to v2.12.1 #92
  • Update Rust crate clap to 4.0.23 #91
  • chore: break down matcher to smaller files and add potential kind 74e5e7d
  • feat: improve contingent rule handling 9c500af
  • feat: add augmented rules c7dc0fe

0.1.9

5 November 2022

  • Update Rust crate regex to 1.7.0 #88
  • feat: add contingent rules with tests #82
  • Update Rust crate clap to 4.0.19 #83
  • Update Rust crate tree-sitter-lua to 0.0.14 #84
  • Update Rust crate num_cpus to 1.14.0 #86
  • Update Rust crate tree-sitter-rust to 0.20.3 #85
  • 0.1.9 bump version 0ddb562

0.1.8

31 October 2022

  • Update robinraju/release-downloader action to v1.6 #81
  • refactor: move relational rule outside 4c5321d
  • test: add test for inside/has 428dd62
  • fix: fix precedes/follows operator 020bb3c

0.1.7

27 October 2022

  • Update dependency ava to v5 #77
  • Update Rust crate serde_yaml to 0.9.14 #76
  • Update Rust crate clap to 4.0.18 #74
  • Update Rust crate serde_json to 1.0.87 #75
  • Update dependency chalk to v5.1.2 #73
  • Update dependency @napi-rs/cli to v2.12.0 #66
  • Update Rust crate serde_json to 1.0.86 #70
  • Update Rust crate tree-sitter-swift to 0.3.4 #69
  • Update dependency chalk to v5.1.0 #67
  • Revert "Update dependency @swc-node/register to v1.5.2 (#62)" #64
  • 0.1.6 fix napi d2501ed
  • [feat] refine test command 3802816
  • [feat] add test command e45039e

0.1.6

3 October 2022

  • Update dependency typescript to v4.8.4 #63
  • Update dependency @swc-node/register to v1.5.2 #62
  • fix(52): normalize file path output in command line #55
  • [docs] add interactive argument explanation #59
  • [chore] migrate github pages cc38e5a
  • [feat] better error reporting 8e94d1e
  • [feat] add lsp fixing 9f3754b

0.1.5

21 September 2022

  • [feat] more thorough napi support 6b2bfe0
  • 0.1.4 remove optional dep 84b0e59
  • [feat] add support for rule matching in napi 78dbe99

0.1.4

19 September 2022

  • [chore] remove unsupported packages dba569b
  • 0.1.4 fix napi package 233be67

0.1.3

19 September 2022

  • Update dependency vite to v3.1.2 #46
  • Update dependency @algolia/client-search to v4.14.2 #47
  • Update Rust crate tree-sitter-lua to 0.0.13 #44
  • Update Rust crate tree-sitter-swift to 0.3.3 #45
  • Update Rust crate clap to 3.2.22 #42
  • Pin dependencies #41
  • Update Rust crate serde_yaml to 0.9.13 #43
  • [fix] reimplement language Python to override expando_char #40
  • Update dependency vue to v3.2.39 #34
  • Update dependency vue-tsc to v0.40.13 #35
  • Update dependency @vitejs/plugin-vue to v3.1.0 #36
  • Update dependency vite to v3.1.0 #37
  • Update dependency detect-libc to v2 #39
  • Update actions/checkout action to v3 #38
  • Update dependency typescript to v4.8.3 #33
  • Pin dependency detect-libc to v1.0.3 #32
  • [feat] use vitepress to host docs ad09d42
  • [feat] add YAML config to playground e54b244
  • [feat] improve styling e8d4f0d

0.1.2

6 September 2022

  • Update dependency vue-tsc to v0.40.6 #29
  • Update dependency web-tree-sitter to v0.20.7 #28
  • Update Rust crate clap to 3.2.20 #27
  • Update Rust crate serde_yaml to 0.9.11 #18
  • Update dependency vue-tsc to v0.40.5 #26
  • Update Rust crate clap to 3.2.19 #24
  • Update Rust crate dashmap to 5.4.0 #25
  • Pin dependencies #20
  • Update dependency vue to v3.2.38 #23
  • Update Rust crate tree-sitter-swift to 0.3.2 #16
  • Update Rust crate similar to 2.2.0 #19
  • Update Rust crate tree-sitter-lua to 0.0.12 #14
  • Update Rust crate tree-sitter-swift to 0.3.1 #15
  • Update Rust crate clap to 3.2.17 #10
  • Update Rust crate tree-sitter-c to 0.20.2 #13
  • Update Rust crate console_error_panic_hook to 0.1.7 #12
  • Pin dependencies #9
  • Configure Renovate #1
  • [fix] Add Rust exmaple test, fix #6 #6
  • [feat] add napi support 532f055
  • [feat]: add csharp 9a14a4b
  • [fix] update napi ae6d5f1

0.1.1

23 August 2022

v0.1.0

5 September 2022

  • Update dependency vue-tsc to v0.40.6 #29
  • Update dependency web-tree-sitter to v0.20.7 #28
  • Update Rust crate clap to 3.2.20 #27
  • Update Rust crate serde_yaml to 0.9.11 #18
  • Update dependency vue-tsc to v0.40.5 #26
  • Update Rust crate clap to 3.2.19 #24
  • Update Rust crate dashmap to 5.4.0 #25
  • Pin dependencies #20
  • Update dependency vue to v3.2.38 #23
  • Update Rust crate tree-sitter-swift to 0.3.2 #16
  • Update Rust crate similar to 2.2.0 #19
  • Update Rust crate tree-sitter-lua to 0.0.12 #14
  • Update Rust crate tree-sitter-swift to 0.3.1 #15
  • Update Rust crate clap to 3.2.17 #10
  • Update Rust crate tree-sitter-c to 0.20.2 #13
  • Update Rust crate console_error_panic_hook to 0.1.7 #12
  • Pin dependencies #9
  • Configure Renovate #1
  • fix(playground): color in dark mode #2
  • [fix] Add Rust exmaple test, fix #6 #6
  • [feat] add napi support 532f055
  • initial commit 94db982
  • [feat] initial wasm research 041cc64