clast-ai 0.1.2 → 0.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.
Files changed (290) hide show
  1. package/.claude-plugin/marketplace.json +14 -0
  2. package/.claude-plugin/plugin.json +11 -9
  3. package/README.md +447 -401
  4. package/bench/ab/onair-concept.json +22 -0
  5. package/bench/ab/onair-deadcode.json +7 -0
  6. package/bench/ab/onair-hard.json +32 -0
  7. package/bench/ab/onair-impact.json +17 -0
  8. package/bench/ab/onair-refactors.json +18 -0
  9. package/bench/ab/onair-survey.json +17 -0
  10. package/bench/ab/onair-tasks.json +20 -0
  11. package/bench/ab/onair.json +52 -0
  12. package/bench/ab/vscode-concept.json +22 -0
  13. package/bench/ab/vscode-hard.json +32 -0
  14. package/bench/ab/vscode-impact.json +17 -0
  15. package/bench/ab/vscode-refactors.json +18 -0
  16. package/bench/ab/vscode-tasks.json +20 -0
  17. package/bench/ab/vscode.json +52 -0
  18. package/bench/ab.mjs +213 -0
  19. package/bench/bench.mjs +98 -0
  20. package/bench/resolution.mjs +75 -0
  21. package/dist/cli.d.ts +2 -0
  22. package/dist/cli.js +257 -0
  23. package/dist/cli.js.map +1 -0
  24. package/dist/config/defaults.d.ts +12 -2
  25. package/dist/config/defaults.js +38 -31
  26. package/dist/config/defaults.js.map +1 -1
  27. package/dist/config/index.d.ts +1 -1
  28. package/dist/config/index.js +26 -14
  29. package/dist/config/index.js.map +1 -1
  30. package/dist/db/index.d.ts +73 -13
  31. package/dist/db/index.js +481 -39
  32. package/dist/db/index.js.map +1 -1
  33. package/dist/engine.d.ts +15 -0
  34. package/dist/engine.js +28 -0
  35. package/dist/engine.js.map +1 -0
  36. package/dist/indexer/imports.d.ts +6 -0
  37. package/dist/indexer/imports.js +254 -0
  38. package/dist/indexer/imports.js.map +1 -0
  39. package/dist/indexer/index.d.ts +63 -0
  40. package/dist/indexer/index.js +360 -0
  41. package/dist/indexer/index.js.map +1 -0
  42. package/dist/indexer/process.d.ts +22 -0
  43. package/dist/indexer/process.js +42 -0
  44. package/dist/indexer/process.js.map +1 -0
  45. package/dist/indexer/scan.d.ts +43 -0
  46. package/dist/indexer/scan.js +223 -0
  47. package/dist/indexer/scan.js.map +1 -0
  48. package/dist/indexer/worker.d.ts +1 -0
  49. package/dist/indexer/worker.js +23 -0
  50. package/dist/indexer/worker.js.map +1 -0
  51. package/dist/llm/comment-generator.d.ts +17 -19
  52. package/dist/llm/comment-generator.js +46 -80
  53. package/dist/llm/comment-generator.js.map +1 -1
  54. package/dist/llm/index.d.ts +0 -1
  55. package/dist/llm/index.js.map +1 -1
  56. package/dist/llm/prompts.d.ts +0 -1
  57. package/dist/llm/prompts.js +16 -16
  58. package/dist/parser/extractor.d.ts +21 -16
  59. package/dist/parser/extractor.js +700 -228
  60. package/dist/parser/extractor.js.map +1 -1
  61. package/dist/parser/index.d.ts +17 -21
  62. package/dist/parser/index.js +115 -171
  63. package/dist/parser/index.js.map +1 -1
  64. package/dist/parser/langs/c.d.ts +3 -0
  65. package/dist/parser/langs/c.js +879 -0
  66. package/dist/parser/langs/c.js.map +1 -0
  67. package/dist/parser/langs/csharp.d.ts +2 -0
  68. package/dist/parser/langs/csharp.js +548 -0
  69. package/dist/parser/langs/csharp.js.map +1 -0
  70. package/dist/parser/langs/dart.d.ts +2 -0
  71. package/dist/parser/langs/dart.js +893 -0
  72. package/dist/parser/langs/dart.js.map +1 -0
  73. package/dist/parser/langs/go.d.ts +2 -0
  74. package/dist/parser/langs/go.js +455 -0
  75. package/dist/parser/langs/go.js.map +1 -0
  76. package/dist/parser/langs/java.d.ts +2 -0
  77. package/dist/parser/langs/java.js +390 -0
  78. package/dist/parser/langs/java.js.map +1 -0
  79. package/dist/parser/langs/php.d.ts +2 -0
  80. package/dist/parser/langs/php.js +486 -0
  81. package/dist/parser/langs/php.js.map +1 -0
  82. package/dist/parser/langs/python.d.ts +2 -0
  83. package/dist/parser/langs/python.js +216 -0
  84. package/dist/parser/langs/python.js.map +1 -0
  85. package/dist/parser/langs/ruby.d.ts +2 -0
  86. package/dist/parser/langs/ruby.js +602 -0
  87. package/dist/parser/langs/ruby.js.map +1 -0
  88. package/dist/parser/langs/rust.d.ts +2 -0
  89. package/dist/parser/langs/rust.js +931 -0
  90. package/dist/parser/langs/rust.js.map +1 -0
  91. package/dist/parser/langs/swift.d.ts +2 -0
  92. package/dist/parser/langs/swift.js +616 -0
  93. package/dist/parser/langs/swift.js.map +1 -0
  94. package/dist/parser/langs/typescript.d.ts +4 -0
  95. package/dist/parser/langs/typescript.js +535 -0
  96. package/dist/parser/langs/typescript.js.map +1 -0
  97. package/dist/parser/registry.d.ts +16 -0
  98. package/dist/parser/registry.js +87 -0
  99. package/dist/parser/registry.js.map +1 -0
  100. package/dist/parser/returns.d.ts +9 -0
  101. package/dist/parser/returns.js +152 -0
  102. package/dist/parser/returns.js.map +1 -0
  103. package/dist/parser/spec.d.ts +165 -0
  104. package/dist/parser/spec.js +188 -0
  105. package/dist/parser/spec.js.map +1 -0
  106. package/dist/query/arity.d.ts +27 -0
  107. package/dist/query/arity.js +187 -0
  108. package/dist/query/arity.js.map +1 -0
  109. package/dist/query/callgraph.d.ts +113 -0
  110. package/dist/query/callgraph.js +332 -0
  111. package/dist/query/callgraph.js.map +1 -0
  112. package/dist/query/format.d.ts +36 -0
  113. package/dist/query/format.js +136 -0
  114. package/dist/query/format.js.map +1 -0
  115. package/dist/query/hierarchy.d.ts +44 -0
  116. package/dist/query/hierarchy.js +441 -0
  117. package/dist/query/hierarchy.js.map +1 -0
  118. package/dist/query/resolve.d.ts +265 -0
  119. package/dist/query/resolve.js +1957 -0
  120. package/dist/query/resolve.js.map +1 -0
  121. package/dist/query/search.d.ts +35 -0
  122. package/dist/query/search.js +379 -0
  123. package/dist/query/search.js.map +1 -0
  124. package/dist/query/words.d.ts +30 -0
  125. package/dist/query/words.js +201 -0
  126. package/dist/query/words.js.map +1 -0
  127. package/dist/server/index.d.ts +1 -3
  128. package/dist/server/index.js +313 -73
  129. package/dist/server/index.js.map +1 -1
  130. package/dist/tools/context.d.ts +35 -0
  131. package/dist/tools/context.js +79 -0
  132. package/dist/tools/context.js.map +1 -0
  133. package/dist/tools/explore.d.ts +51 -0
  134. package/dist/tools/explore.js +779 -0
  135. package/dist/tools/explore.js.map +1 -0
  136. package/dist/tools/impact.d.ts +21 -0
  137. package/dist/tools/impact.js +743 -0
  138. package/dist/tools/impact.js.map +1 -0
  139. package/dist/tools/search.d.ts +59 -0
  140. package/dist/tools/search.js +843 -0
  141. package/dist/tools/search.js.map +1 -0
  142. package/dist/tools/stats.d.ts +26 -0
  143. package/dist/tools/stats.js +604 -0
  144. package/dist/tools/stats.js.map +1 -0
  145. package/dist/types.d.ts +95 -40
  146. package/dist/types.js +9 -1
  147. package/dist/types.js.map +1 -1
  148. package/dist/version.d.ts +2 -0
  149. package/dist/version.js +3 -0
  150. package/dist/version.js.map +1 -0
  151. package/dist/watcher/index.d.ts +18 -16
  152. package/dist/watcher/index.js +94 -77
  153. package/dist/watcher/index.js.map +1 -1
  154. package/package.json +21 -24
  155. package/plugin/server.mjs +50 -0
  156. package/skills/audit/SKILL.md +37 -0
  157. package/skills/deadcode/SKILL.md +33 -0
  158. package/skills/explore/SKILL.md +54 -0
  159. package/skills/impact/SKILL.md +24 -0
  160. package/skills/status/SKILL.md +11 -0
  161. package/src/cli.ts +256 -0
  162. package/src/config/defaults.ts +50 -32
  163. package/src/config/index.ts +23 -14
  164. package/src/db/index.ts +540 -43
  165. package/src/engine.ts +30 -0
  166. package/src/indexer/imports.ts +241 -0
  167. package/src/indexer/index.ts +369 -0
  168. package/src/indexer/process.ts +63 -0
  169. package/src/indexer/scan.ts +226 -0
  170. package/src/indexer/worker.ts +24 -0
  171. package/src/llm/comment-generator.ts +52 -103
  172. package/src/llm/index.ts +80 -80
  173. package/src/llm/prompts.ts +95 -95
  174. package/src/parser/extractor.ts +643 -256
  175. package/src/parser/index.ts +105 -205
  176. package/src/parser/langs/c.ts +860 -0
  177. package/src/parser/langs/csharp.ts +519 -0
  178. package/src/parser/langs/dart.ts +820 -0
  179. package/src/parser/langs/go.ts +437 -0
  180. package/src/parser/langs/java.ts +361 -0
  181. package/src/parser/langs/php.ts +450 -0
  182. package/src/parser/langs/python.ts +206 -0
  183. package/src/parser/langs/ruby.ts +554 -0
  184. package/src/parser/langs/rust.ts +904 -0
  185. package/src/parser/langs/swift.ts +590 -0
  186. package/src/parser/langs/typescript.ts +499 -0
  187. package/src/parser/registry.ts +88 -0
  188. package/src/parser/returns.ts +137 -0
  189. package/src/parser/spec.ts +309 -0
  190. package/src/query/arity.ts +173 -0
  191. package/src/query/callgraph.ts +473 -0
  192. package/src/query/format.ts +136 -0
  193. package/src/query/hierarchy.ts +447 -0
  194. package/src/query/resolve.ts +1972 -0
  195. package/src/query/search.ts +430 -0
  196. package/src/query/words.ts +183 -0
  197. package/src/server/index.ts +390 -79
  198. package/src/tools/context.ts +82 -0
  199. package/src/tools/explore.ts +860 -0
  200. package/src/tools/impact.ts +748 -0
  201. package/src/tools/search.ts +886 -0
  202. package/src/tools/stats.ts +633 -0
  203. package/src/types.ts +113 -45
  204. package/src/version.ts +2 -0
  205. package/src/watcher/index.ts +82 -88
  206. package/tsconfig.json +7 -4
  207. package/.mcp.json +0 -8
  208. package/commands/clast-status.md +0 -9
  209. package/dist/config/defaults.d.ts.map +0 -1
  210. package/dist/config/index.d.ts.map +0 -1
  211. package/dist/db/index.d.ts.map +0 -1
  212. package/dist/db/queries.d.ts +0 -44
  213. package/dist/db/queries.d.ts.map +0 -1
  214. package/dist/db/queries.js +0 -251
  215. package/dist/db/queries.js.map +0 -1
  216. package/dist/db/schema.d.ts +0 -3
  217. package/dist/db/schema.d.ts.map +0 -1
  218. package/dist/db/schema.js +0 -94
  219. package/dist/db/schema.js.map +0 -1
  220. package/dist/db/types.d.ts +0 -44
  221. package/dist/db/types.d.ts.map +0 -1
  222. package/dist/db/types.js +0 -2
  223. package/dist/db/types.js.map +0 -1
  224. package/dist/llm/comment-generator.d.ts.map +0 -1
  225. package/dist/llm/index.d.ts.map +0 -1
  226. package/dist/llm/prompts.d.ts.map +0 -1
  227. package/dist/parser/call-resolver.d.ts +0 -15
  228. package/dist/parser/call-resolver.d.ts.map +0 -1
  229. package/dist/parser/call-resolver.js +0 -16
  230. package/dist/parser/call-resolver.js.map +0 -1
  231. package/dist/parser/extractor.d.ts.map +0 -1
  232. package/dist/parser/index.d.ts.map +0 -1
  233. package/dist/parser/languages.d.ts +0 -11
  234. package/dist/parser/languages.d.ts.map +0 -1
  235. package/dist/parser/languages.js +0 -74
  236. package/dist/parser/languages.js.map +0 -1
  237. package/dist/server/index.d.ts.map +0 -1
  238. package/dist/server/register-tools.d.ts +0 -7
  239. package/dist/server/register-tools.d.ts.map +0 -1
  240. package/dist/server/register-tools.js +0 -17
  241. package/dist/server/register-tools.js.map +0 -1
  242. package/dist/server/tools/clast-call-graph.d.ts +0 -4
  243. package/dist/server/tools/clast-call-graph.d.ts.map +0 -1
  244. package/dist/server/tools/clast-call-graph.js +0 -70
  245. package/dist/server/tools/clast-call-graph.js.map +0 -1
  246. package/dist/server/tools/clast-comment.d.ts +0 -5
  247. package/dist/server/tools/clast-comment.d.ts.map +0 -1
  248. package/dist/server/tools/clast-comment.js +0 -64
  249. package/dist/server/tools/clast-comment.js.map +0 -1
  250. package/dist/server/tools/clast-file-summary.d.ts +0 -4
  251. package/dist/server/tools/clast-file-summary.d.ts.map +0 -1
  252. package/dist/server/tools/clast-file-summary.js +0 -42
  253. package/dist/server/tools/clast-file-summary.js.map +0 -1
  254. package/dist/server/tools/clast-get-context.d.ts +0 -4
  255. package/dist/server/tools/clast-get-context.d.ts.map +0 -1
  256. package/dist/server/tools/clast-get-context.js +0 -80
  257. package/dist/server/tools/clast-get-context.js.map +0 -1
  258. package/dist/server/tools/clast-reindex.d.ts +0 -5
  259. package/dist/server/tools/clast-reindex.d.ts.map +0 -1
  260. package/dist/server/tools/clast-reindex.js +0 -36
  261. package/dist/server/tools/clast-reindex.js.map +0 -1
  262. package/dist/server/tools/clast-search.d.ts +0 -4
  263. package/dist/server/tools/clast-search.d.ts.map +0 -1
  264. package/dist/server/tools/clast-search.js +0 -29
  265. package/dist/server/tools/clast-search.js.map +0 -1
  266. package/dist/server/tools/clast-status.d.ts +0 -5
  267. package/dist/server/tools/clast-status.d.ts.map +0 -1
  268. package/dist/server/tools/clast-status.js +0 -23
  269. package/dist/server/tools/clast-status.js.map +0 -1
  270. package/dist/types.d.ts.map +0 -1
  271. package/dist/watcher/gitignore.d.ts +0 -9
  272. package/dist/watcher/gitignore.d.ts.map +0 -1
  273. package/dist/watcher/gitignore.js +0 -38
  274. package/dist/watcher/gitignore.js.map +0 -1
  275. package/dist/watcher/index.d.ts.map +0 -1
  276. package/skills/clast-explore/SKILL.md +0 -41
  277. package/src/db/queries.ts +0 -332
  278. package/src/db/schema.ts +0 -106
  279. package/src/db/types.ts +0 -47
  280. package/src/parser/call-resolver.ts +0 -17
  281. package/src/parser/languages.ts +0 -86
  282. package/src/server/register-tools.ts +0 -30
  283. package/src/server/tools/clast-call-graph.ts +0 -82
  284. package/src/server/tools/clast-comment.ts +0 -76
  285. package/src/server/tools/clast-file-summary.ts +0 -59
  286. package/src/server/tools/clast-get-context.ts +0 -97
  287. package/src/server/tools/clast-reindex.ts +0 -52
  288. package/src/server/tools/clast-search.ts +0 -38
  289. package/src/server/tools/clast-status.ts +0 -37
  290. package/src/watcher/gitignore.ts +0 -42
@@ -0,0 +1,216 @@
1
+ import { field, isConstName, lastSegment, simpleReceiver } from '../spec.js';
2
+ function docstring(node) {
3
+ const body = field(node, 'body');
4
+ const first = body?.namedChildren[0];
5
+ if (!first || first.type !== 'expression_statement')
6
+ return null;
7
+ const str = first.namedChildren[0];
8
+ if (!str || str.type !== 'string')
9
+ return null;
10
+ const raw = str.text.replace(/^[a-zA-Z]*("""|'''|"|')/, '').replace(/("""|'''|"|')$/, '');
11
+ const lines = raw.split(/\r?\n/);
12
+ const indent = Math.min(...lines.slice(1).filter(l => l.trim()).map(l => l.length - l.trimStart().length), Infinity);
13
+ return lines
14
+ .map((l, i) => (i === 0 ? l.trim() : l.slice(Number.isFinite(indent) ? indent : 0).trimEnd()))
15
+ .join('\n')
16
+ .trim();
17
+ }
18
+ /** Signature: decorators + header up to and including the colon (no trailing comments). */
19
+ function header(node, ctx) {
20
+ const start = outer(node).startIndex;
21
+ const body = field(node, 'body');
22
+ if (!body)
23
+ return undefined;
24
+ let end = body.startIndex;
25
+ for (let i = node.childCount - 1; i >= 0; i--) {
26
+ const c = node.child(i);
27
+ if (c && c.type === ':' && c.endIndex <= body.startIndex) {
28
+ end = c.endIndex;
29
+ break;
30
+ }
31
+ }
32
+ return ctx.src.slice(start, end);
33
+ }
34
+ function outer(node) {
35
+ return node.parent && node.parent.type === 'decorated_definition' ? node.parent : node;
36
+ }
37
+ const functionDef = (node, ctx) => {
38
+ const name = field(node, 'name');
39
+ if (!name)
40
+ return;
41
+ const pk = ctx.parentKind();
42
+ ctx.def(node, {
43
+ name: name.text,
44
+ kind: pk === 'class' ? 'method' : 'function',
45
+ range: outer(node),
46
+ sig: header(node, ctx),
47
+ doc: docstring(node),
48
+ exported: !name.text.startsWith('_') && ctx.depth() <= 1,
49
+ });
50
+ };
51
+ const classDef = (node, ctx) => {
52
+ const name = field(node, 'name');
53
+ if (!name)
54
+ return;
55
+ const sym = ctx.def(node, {
56
+ name: name.text,
57
+ kind: 'class',
58
+ range: outer(node),
59
+ sig: header(node, ctx),
60
+ doc: docstring(node),
61
+ exported: !name.text.startsWith('_') && ctx.depth() === 0,
62
+ });
63
+ const supers = field(node, 'superclasses');
64
+ if (supers) {
65
+ for (const s of supers.namedChildren) {
66
+ if (!s || s.type === 'keyword_argument')
67
+ continue;
68
+ if (s.type === 'call') {
69
+ // Dynamic base built from a class: `class Manager(BaseManager.from_queryset(QuerySet))`.
70
+ const fn = field(s, 'function');
71
+ if (fn && fn.type === 'attribute')
72
+ ctx.inherit(sym, field(fn, 'object')?.text, 'extends');
73
+ continue;
74
+ }
75
+ // Keep the module qualifier (`forms.CharField`): it tells same-named classes apart.
76
+ ctx.inherit(sym, s.text.replace(/\[.*$/s, ''), 'extends');
77
+ }
78
+ }
79
+ };
80
+ /** Type of an assignment: its annotation, or the class being instantiated (`x = Foo(...)`). */
81
+ function assignedType(node) {
82
+ const annotation = field(node, 'type');
83
+ if (annotation)
84
+ return annotation.text;
85
+ const right = field(node, 'right');
86
+ if (right && right.type === 'call') {
87
+ const fn = field(right, 'function');
88
+ const callee = fn?.type === 'attribute' ? field(fn, 'attribute') : fn;
89
+ if (callee && callee.type === 'identifier' && /^[A-Z]/.test(callee.text))
90
+ return callee.text;
91
+ }
92
+ return null;
93
+ }
94
+ /** Module-level and class-level assignments become variables / fields. */
95
+ const assignment = (node, ctx) => {
96
+ const left = field(node, 'left');
97
+ if (!left)
98
+ return;
99
+ const stmt = node.parent;
100
+ // self.attr = ... inside a method: an instance attribute of the enclosing class.
101
+ if (left.type === 'attribute') {
102
+ const obj = field(left, 'object');
103
+ const attr = field(left, 'attribute');
104
+ if (!obj || !attr || obj.text !== 'self' || !ctx.inCallable())
105
+ return;
106
+ // self.repo = Repo(...) or self.repo = repo (a typed parameter)
107
+ const right = field(node, 'right');
108
+ ctx.typeHint(attr.text, assignedType(node) ?? (right?.type === 'identifier' ? ctx.typeOf(right.text) : null), true);
109
+ if (stmt && stmt.type === 'expression_statement') {
110
+ ctx.def(node, {
111
+ name: attr.text, kind: 'field', range: stmt, body: null, scope: false, inContainer: true,
112
+ exported: !attr.text.startsWith('_'),
113
+ });
114
+ }
115
+ return;
116
+ }
117
+ if (left.type !== 'identifier')
118
+ return;
119
+ ctx.typeHint(left.text, assignedType(node));
120
+ if (ctx.inCallable())
121
+ return;
122
+ if (!stmt || stmt.type !== 'expression_statement')
123
+ return;
124
+ const name = left.text;
125
+ const pk = ctx.parentKind();
126
+ if (pk !== null && pk !== 'class')
127
+ return;
128
+ ctx.def(node, {
129
+ name,
130
+ kind: pk === 'class' ? 'field' : isConstName(name) ? 'constant' : 'variable',
131
+ range: stmt,
132
+ body: null,
133
+ exported: pk === null && !name.startsWith('_'),
134
+ });
135
+ };
136
+ const call = (node, ctx) => {
137
+ const fn = field(node, 'function');
138
+ if (!fn)
139
+ return;
140
+ if (fn.type === 'identifier')
141
+ ctx.call(fn.text, node);
142
+ else if (fn.type === 'attribute') {
143
+ const obj = field(fn, 'object');
144
+ // super().method() is a call on the parent class, not on an unknown expression.
145
+ const isSuper = obj?.type === 'call' && field(obj, 'function')?.text === 'super';
146
+ ctx.call(field(fn, 'attribute')?.text, node, isSuper ? 'super' : simpleReceiver(obj));
147
+ }
148
+ };
149
+ /** `def f(x: Foo, y: Bar = ...)` */
150
+ const typedParameter = (node, ctx) => {
151
+ const type = field(node, 'type');
152
+ const name = field(node, 'name') ?? node.namedChildren[0];
153
+ if (type && name && name.type === 'identifier')
154
+ ctx.typeHint(name.text, type.text);
155
+ };
156
+ /** Applying a decorator calls it: `@register.filter` / `@cached_property`. (`@foo(...)` is a call already.) */
157
+ const decorator = (node, ctx) => {
158
+ const expr = node.namedChildren[0];
159
+ if (!expr)
160
+ return;
161
+ if (expr.type === 'identifier')
162
+ ctx.call(expr.text, node);
163
+ else if (expr.type === 'attribute') {
164
+ ctx.call(field(expr, 'attribute')?.text, node, simpleReceiver(field(expr, 'object')));
165
+ }
166
+ };
167
+ const importStatement = (node, ctx) => {
168
+ for (const c of node.namedChildren) {
169
+ if (!c)
170
+ continue;
171
+ if (c.type === 'dotted_name')
172
+ ctx.imp(c.text, node, [lastSegment(c.text)]);
173
+ else if (c.type === 'aliased_import') {
174
+ const name = field(c, 'name');
175
+ if (name)
176
+ ctx.imp(name.text, node, [field(c, 'alias')?.text ?? lastSegment(name.text)]);
177
+ }
178
+ }
179
+ };
180
+ const importFrom = (node, ctx) => {
181
+ const mod = field(node, 'module_name');
182
+ if (!mod)
183
+ return;
184
+ const names = [];
185
+ for (const c of node.childrenForFieldName('name')) {
186
+ if (!c)
187
+ continue;
188
+ // The name bound in this module is the alias when there is one.
189
+ if (c.type === 'aliased_import') {
190
+ const original = field(c, 'name')?.text ?? c.text;
191
+ const alias = field(c, 'alias')?.text;
192
+ names.push(alias && alias !== original ? `${alias}=${original}` : original);
193
+ }
194
+ else
195
+ names.push(c.text);
196
+ }
197
+ ctx.imp(mod.text, node, names);
198
+ };
199
+ export const python = {
200
+ id: 'python',
201
+ grammar: 'python',
202
+ extensions: ['.py', '.pyi', '.pyw'],
203
+ identifiers: ['identifier'],
204
+ visit: {
205
+ function_definition: functionDef,
206
+ class_definition: classDef,
207
+ assignment,
208
+ typed_parameter: typedParameter,
209
+ typed_default_parameter: typedParameter,
210
+ decorator,
211
+ call,
212
+ import_statement: importStatement,
213
+ import_from_statement: importFrom,
214
+ },
215
+ };
216
+ //# sourceMappingURL=python.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/parser/langs/python.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { LangSpec } from '../spec.js';
2
+ export declare const ruby: LangSpec;