@@ -8,7 +8,7 @@ description = "Language definitions and parsers for Thread"
88keywords = [" ast" , " pattern" , " codemod" , " search" , " rewrite" , " languages" ]
99license = " AGPL-3.0-or-later AND MIT"
1010readme = " README.md"
11- categories = [" ast" , " pattern" , " codemod" , " search" , " rewrite" , ]
11+ categories = [" ast" , " pattern" , " codemod" , " search" , " rewrite" ]
1212version = " 0.1.0"
1313authors = [
1414 " Herrington Darkholme <[email protected] >" ,
@@ -24,14 +24,17 @@ include.workspace = true
2424cc = " 1.2.30"
2525
2626[dependencies ]
27- thread-ast-engine = { workspace = true , features = [ " parsing " ] }
27+ thread-ast-engine = { workspace = true }
2828thread-utils = { workspace = true , default-features = false , features = [
2929 " hashers" ,
3030] }
31- aho-corasick.workspace = true
32- ignore.workspace = true
33- serde.workspace = true
34- tree-sitter.workspace = true
31+
32+ cfg-if = { workspace = true }
33+
34+ aho-corasick = { workspace = true }
35+ ignore = { workspace = true }
36+ serde = { workspace = true }
37+ tree-sitter = { workspace = true }
3538
3639tree-sitter-bash = { version = " 0.25.0" , optional = true }
3740tree-sitter-c = { version = " 0.24.1" , optional = true }
@@ -57,37 +60,41 @@ tree-sitter-typescript = { version = "0.23.2", optional = true }
5760tree-sitter-yaml = { version = " 0.7.1" , optional = true }
5861
5962[features ]
60- default = [" builtin-parser" ]
61- matching = [" thread-ast-engine/matching" ]
63+ default = [" all-parsers" , " tree-sitter-parsing" ]
64+ tree-sitter-parsing = [" thread-ast-engine/parsing" ]
65+ matching = [" thread-ast-engine/matching" , " tree-sitter-parsing" ]
66+
6267
6368# Individual language features
64- bash = [" tree-sitter-bash" ]
65- c = [" tree-sitter-c" ]
66- cpp = [" tree-sitter-cpp" ]
67- csharp = [" tree-sitter-c-sharp" ]
68- css = [" tree-sitter-css" ]
69- elixir = [" tree-sitter-elixir" ]
70- go = [" tree-sitter-go" ]
71- haskell = [" tree-sitter-haskell" ]
72- html = [" tree-sitter-html" ]
73- html-embedded = [" html" , " css" , " matching" , " typescript" , " tsx" , " javascript" ]
74- java = [" tree-sitter-java" ]
75- javascript = [" tree-sitter-javascript" ]
76- json = [" tree-sitter-json" ]
77- kotlin = [" tree-sitter-kotlin" ]
78- lua = [" tree-sitter-lua" ]
79- php = [" tree-sitter-php" ]
80- python = [" tree-sitter-python" ]
81- ruby = [" tree-sitter-ruby" ]
82- rust = [" tree-sitter-rust" ]
83- scala = [" tree-sitter-scala" ]
84- swift = [" tree-sitter-swift" ]
85- typescript = [" tree-sitter-typescript" ]
86- tsx = [" tree-sitter-typescript" ]
87- yaml = [" tree-sitter-yaml" ]
69+ bash = [" tree-sitter-bash" , " tree-sitter-parsing " ]
70+ c = [" tree-sitter-c" , " tree-sitter-parsing " ]
71+ cpp = [" tree-sitter-cpp" , " tree-sitter-parsing " ]
72+ csharp = [" tree-sitter-c-sharp" , " tree-sitter-parsing " ]
73+ css = [" tree-sitter-css" , " tree-sitter-parsing " ]
74+ elixir = [" tree-sitter-elixir" , " tree-sitter-parsing " ]
75+ go = [" tree-sitter-go" , " tree-sitter-parsing " ]
76+ haskell = [" tree-sitter-haskell" , " tree-sitter-parsing " ]
77+ html = [" tree-sitter-html" , " tree-sitter-parsing " ]
78+ html-embedded = [" html" , " css" , " matching" , " typescript" , " tsx" , " javascript" , " tree-sitter-parsing " ]
79+ java = [" tree-sitter-java" , " tree-sitter-parsing " ]
80+ javascript = [" tree-sitter-javascript" , " tree-sitter-parsing " ]
81+ json = [" tree-sitter-json" , " tree-sitter-parsing " ]
82+ kotlin = [" tree-sitter-kotlin" , " tree-sitter-parsing " ]
83+ lua = [" tree-sitter-lua" , " tree-sitter-parsing " ]
84+ php = [" tree-sitter-php" , " tree-sitter-parsing " ]
85+ python = [" tree-sitter-python" , " tree-sitter-parsing " ]
86+ ruby = [" tree-sitter-ruby" , " tree-sitter-parsing " ]
87+ rust = [" tree-sitter-rust" , " tree-sitter-parsing " ]
88+ scala = [" tree-sitter-scala" , " tree-sitter-parsing " ]
89+ swift = [" tree-sitter-swift" , " tree-sitter-parsing " ]
90+ typescript = [" tree-sitter-typescript" , " tree-sitter-parsing " ]
91+ tsx = [" tree-sitter-typescript" , " tree-sitter-parsing " ]
92+ yaml = [" tree-sitter-yaml" , " tree-sitter-parsing " ]
8893
94+ # ! Important: `all-parsers` feature enables all tree-sitter parsers
8995# Language groups
90- builtin-parser = [
96+ all-parsers = [
97+ " tree-sitter-parsing" ,
9198 " bash" ,
9299 " c" ,
93100 " cpp" ,
@@ -113,15 +120,31 @@ builtin-parser = [
113120 " tsx" ,
114121 " yaml" ,
115122]
116- napi-lang = [
117- " css" ,
118- " html" ,
119- " html-embedded" ,
120- " javascript" ,
121- " typescript" ,
122- " tsx" ,
123- ]
123+
124+ css-napi = [" tree-sitter-css" , " napi-environment" ]
125+ html-napi = [" tree-sitter-html" , " napi-environment" ]
126+ javascript-napi = [" tree-sitter-javascript" , " napi-environment" ]
127+ typescript-napi = [" tree-sitter-typescript" , " napi-environment" ]
128+ tsx-napi = [" tree-sitter-typescript" , " napi-environment" ]
129+
130+ napi-compatible = [
131+ " css-napi" ,
132+ " html-napi" ,
133+ " javascript-napi" ,
134+ " typescript-napi" ,
135+ " tsx-napi" ,
136+ ]
137+ # =============== Important NAPI Information ============
138+ # Thread does **not** currently support NAPI builds.
139+ # We've included this from our fork of `ast-grep-language`, in case someone wants to build from it.
140+ # We may eventually add the capability, but it's not currently planned.
141+ # Pull requests welcome.
142+ # ! Important: `napi-environment` feature disables the tree-sitter parser
143+ # ! Tree-sitter cannot build for NAPI-WASM
144+ # ! (that's Node API -- wasm for nodejs environments)
145+ napi-environment = []
124146profiling = []
147+ no-enabled-langs = []
125148
126149[dev-dependencies ]
127150criterion = { version = " 0.6" , features = [" html_reports" ] }
@@ -130,3 +153,7 @@ thread-ast-engine = { workspace = true, features = ["matching", "parsing"] }
130153[[bench ]]
131154name = " performance"
132155harness = false
156+
157+ [[bench ]]
158+ name = " extension_matching"
159+ harness = false
0 commit comments