@cstart/coldstart 2.0.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 (360) hide show
  1. package/README.md +236 -0
  2. package/dist/cache/disk-cache.d.ts +14 -0
  3. package/dist/cache/disk-cache.d.ts.map +1 -0
  4. package/dist/cache/disk-cache.js +371 -0
  5. package/dist/cache/disk-cache.js.map +1 -0
  6. package/dist/cli.d.ts +18 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +206 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/constants.d.ts +8 -0
  11. package/dist/constants.d.ts.map +1 -0
  12. package/dist/constants.js +111 -0
  13. package/dist/constants.js.map +1 -0
  14. package/dist/daemon-lock.d.ts +63 -0
  15. package/dist/daemon-lock.d.ts.map +1 -0
  16. package/dist/daemon-lock.js +218 -0
  17. package/dist/daemon-lock.js.map +1 -0
  18. package/dist/daemon-log.d.ts +26 -0
  19. package/dist/daemon-log.d.ts.map +1 -0
  20. package/dist/daemon-log.js +110 -0
  21. package/dist/daemon-log.js.map +1 -0
  22. package/dist/index-manager.d.ts +103 -0
  23. package/dist/index-manager.d.ts.map +1 -0
  24. package/dist/index-manager.js +361 -0
  25. package/dist/index-manager.js.map +1 -0
  26. package/dist/index.d.ts +4 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +724 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/indexer/content-tokens.d.ts +74 -0
  31. package/dist/indexer/content-tokens.d.ts.map +1 -0
  32. package/dist/indexer/content-tokens.js +406 -0
  33. package/dist/indexer/content-tokens.js.map +1 -0
  34. package/dist/indexer/cpp-include-roots.d.ts +7 -0
  35. package/dist/indexer/cpp-include-roots.d.ts.map +1 -0
  36. package/dist/indexer/cpp-include-roots.js +166 -0
  37. package/dist/indexer/cpp-include-roots.js.map +1 -0
  38. package/dist/indexer/csharp-synthetic.d.ts +9 -0
  39. package/dist/indexer/csharp-synthetic.d.ts.map +1 -0
  40. package/dist/indexer/csharp-synthetic.js +51 -0
  41. package/dist/indexer/csharp-synthetic.js.map +1 -0
  42. package/dist/indexer/django-synthetic.d.ts +12 -0
  43. package/dist/indexer/django-synthetic.d.ts.map +1 -0
  44. package/dist/indexer/django-synthetic.js +49 -0
  45. package/dist/indexer/django-synthetic.js.map +1 -0
  46. package/dist/indexer/extractors/angularjs.d.ts +16 -0
  47. package/dist/indexer/extractors/angularjs.d.ts.map +1 -0
  48. package/dist/indexer/extractors/angularjs.js +49 -0
  49. package/dist/indexer/extractors/angularjs.js.map +1 -0
  50. package/dist/indexer/extractors/cpp.d.ts +9 -0
  51. package/dist/indexer/extractors/cpp.d.ts.map +1 -0
  52. package/dist/indexer/extractors/cpp.js +254 -0
  53. package/dist/indexer/extractors/cpp.js.map +1 -0
  54. package/dist/indexer/extractors/csharp.d.ts +19 -0
  55. package/dist/indexer/extractors/csharp.d.ts.map +1 -0
  56. package/dist/indexer/extractors/csharp.js +327 -0
  57. package/dist/indexer/extractors/csharp.js.map +1 -0
  58. package/dist/indexer/extractors/env.d.ts +9 -0
  59. package/dist/indexer/extractors/env.d.ts.map +1 -0
  60. package/dist/indexer/extractors/env.js +43 -0
  61. package/dist/indexer/extractors/env.js.map +1 -0
  62. package/dist/indexer/extractors/go.d.ts +9 -0
  63. package/dist/indexer/extractors/go.d.ts.map +1 -0
  64. package/dist/indexer/extractors/go.js +227 -0
  65. package/dist/indexer/extractors/go.js.map +1 -0
  66. package/dist/indexer/extractors/graphql.d.ts +22 -0
  67. package/dist/indexer/extractors/graphql.d.ts.map +1 -0
  68. package/dist/indexer/extractors/graphql.js +88 -0
  69. package/dist/indexer/extractors/graphql.js.map +1 -0
  70. package/dist/indexer/extractors/groovy.d.ts +9 -0
  71. package/dist/indexer/extractors/groovy.d.ts.map +1 -0
  72. package/dist/indexer/extractors/groovy.js +356 -0
  73. package/dist/indexer/extractors/groovy.js.map +1 -0
  74. package/dist/indexer/extractors/java.d.ts +10 -0
  75. package/dist/indexer/extractors/java.d.ts.map +1 -0
  76. package/dist/indexer/extractors/java.js +586 -0
  77. package/dist/indexer/extractors/java.js.map +1 -0
  78. package/dist/indexer/extractors/kotlin.d.ts +10 -0
  79. package/dist/indexer/extractors/kotlin.d.ts.map +1 -0
  80. package/dist/indexer/extractors/kotlin.js +398 -0
  81. package/dist/indexer/extractors/kotlin.js.map +1 -0
  82. package/dist/indexer/extractors/node-helpers.d.ts +13 -0
  83. package/dist/indexer/extractors/node-helpers.d.ts.map +1 -0
  84. package/dist/indexer/extractors/node-helpers.js +17 -0
  85. package/dist/indexer/extractors/node-helpers.js.map +1 -0
  86. package/dist/indexer/extractors/parser-factory.d.ts +4 -0
  87. package/dist/indexer/extractors/parser-factory.d.ts.map +1 -0
  88. package/dist/indexer/extractors/parser-factory.js +28 -0
  89. package/dist/indexer/extractors/parser-factory.js.map +1 -0
  90. package/dist/indexer/extractors/php.d.ts +17 -0
  91. package/dist/indexer/extractors/php.d.ts.map +1 -0
  92. package/dist/indexer/extractors/php.js +363 -0
  93. package/dist/indexer/extractors/php.js.map +1 -0
  94. package/dist/indexer/extractors/python.d.ts +14 -0
  95. package/dist/indexer/extractors/python.d.ts.map +1 -0
  96. package/dist/indexer/extractors/python.js +449 -0
  97. package/dist/indexer/extractors/python.js.map +1 -0
  98. package/dist/indexer/extractors/ruby.d.ts +10 -0
  99. package/dist/indexer/extractors/ruby.d.ts.map +1 -0
  100. package/dist/indexer/extractors/ruby.js +996 -0
  101. package/dist/indexer/extractors/ruby.js.map +1 -0
  102. package/dist/indexer/extractors/rust.d.ts +9 -0
  103. package/dist/indexer/extractors/rust.d.ts.map +1 -0
  104. package/dist/indexer/extractors/rust.js +322 -0
  105. package/dist/indexer/extractors/rust.js.map +1 -0
  106. package/dist/indexer/extractors/toml.d.ts +9 -0
  107. package/dist/indexer/extractors/toml.d.ts.map +1 -0
  108. package/dist/indexer/extractors/toml.js +84 -0
  109. package/dist/indexer/extractors/toml.js.map +1 -0
  110. package/dist/indexer/extractors/xml.d.ts +9 -0
  111. package/dist/indexer/extractors/xml.d.ts.map +1 -0
  112. package/dist/indexer/extractors/xml.js +163 -0
  113. package/dist/indexer/extractors/xml.js.map +1 -0
  114. package/dist/indexer/extractors/yaml.d.ts +9 -0
  115. package/dist/indexer/extractors/yaml.d.ts.map +1 -0
  116. package/dist/indexer/extractors/yaml.js +117 -0
  117. package/dist/indexer/extractors/yaml.js.map +1 -0
  118. package/dist/indexer/git.d.ts +19 -0
  119. package/dist/indexer/git.d.ts.map +1 -0
  120. package/dist/indexer/git.js +55 -0
  121. package/dist/indexer/git.js.map +1 -0
  122. package/dist/indexer/graph.d.ts +7 -0
  123. package/dist/indexer/graph.d.ts.map +1 -0
  124. package/dist/indexer/graph.js +20 -0
  125. package/dist/indexer/graph.js.map +1 -0
  126. package/dist/indexer/indexed-file.d.ts +15 -0
  127. package/dist/indexer/indexed-file.d.ts.map +1 -0
  128. package/dist/indexer/indexed-file.js +50 -0
  129. package/dist/indexer/indexed-file.js.map +1 -0
  130. package/dist/indexer/invariants.d.ts +15 -0
  131. package/dist/indexer/invariants.d.ts.map +1 -0
  132. package/dist/indexer/invariants.js +96 -0
  133. package/dist/indexer/invariants.js.map +1 -0
  134. package/dist/indexer/laravel-synthetic.d.ts +10 -0
  135. package/dist/indexer/laravel-synthetic.d.ts.map +1 -0
  136. package/dist/indexer/laravel-synthetic.js +78 -0
  137. package/dist/indexer/laravel-synthetic.js.map +1 -0
  138. package/dist/indexer/parser.d.ts +4 -0
  139. package/dist/indexer/parser.d.ts.map +1 -0
  140. package/dist/indexer/parser.js +499 -0
  141. package/dist/indexer/parser.js.map +1 -0
  142. package/dist/indexer/patch.d.ts +3 -0
  143. package/dist/indexer/patch.d.ts.map +1 -0
  144. package/dist/indexer/patch.js +291 -0
  145. package/dist/indexer/patch.js.map +1 -0
  146. package/dist/indexer/rails-synthetic.d.ts +11 -0
  147. package/dist/indexer/rails-synthetic.d.ts.map +1 -0
  148. package/dist/indexer/rails-synthetic.js +80 -0
  149. package/dist/indexer/rails-synthetic.js.map +1 -0
  150. package/dist/indexer/reconcile.d.ts +9 -0
  151. package/dist/indexer/reconcile.d.ts.map +1 -0
  152. package/dist/indexer/reconcile.js +96 -0
  153. package/dist/indexer/reconcile.js.map +1 -0
  154. package/dist/indexer/resolvers/cpp.d.ts +15 -0
  155. package/dist/indexer/resolvers/cpp.d.ts.map +1 -0
  156. package/dist/indexer/resolvers/cpp.js +35 -0
  157. package/dist/indexer/resolvers/cpp.js.map +1 -0
  158. package/dist/indexer/resolvers/csharp.d.ts +2 -0
  159. package/dist/indexer/resolvers/csharp.d.ts.map +1 -0
  160. package/dist/indexer/resolvers/csharp.js +89 -0
  161. package/dist/indexer/resolvers/csharp.js.map +1 -0
  162. package/dist/indexer/resolvers/generic.d.ts +10 -0
  163. package/dist/indexer/resolvers/generic.d.ts.map +1 -0
  164. package/dist/indexer/resolvers/generic.js +35 -0
  165. package/dist/indexer/resolvers/generic.js.map +1 -0
  166. package/dist/indexer/resolvers/go.d.ts +2 -0
  167. package/dist/indexer/resolvers/go.d.ts.map +1 -0
  168. package/dist/indexer/resolvers/go.js +171 -0
  169. package/dist/indexer/resolvers/go.js.map +1 -0
  170. package/dist/indexer/resolvers/index.d.ts +26 -0
  171. package/dist/indexer/resolvers/index.d.ts.map +1 -0
  172. package/dist/indexer/resolvers/index.js +301 -0
  173. package/dist/indexer/resolvers/index.js.map +1 -0
  174. package/dist/indexer/resolvers/java.d.ts +17 -0
  175. package/dist/indexer/resolvers/java.d.ts.map +1 -0
  176. package/dist/indexer/resolvers/java.js +104 -0
  177. package/dist/indexer/resolvers/java.js.map +1 -0
  178. package/dist/indexer/resolvers/php.d.ts +2 -0
  179. package/dist/indexer/resolvers/php.d.ts.map +1 -0
  180. package/dist/indexer/resolvers/php.js +108 -0
  181. package/dist/indexer/resolvers/php.js.map +1 -0
  182. package/dist/indexer/resolvers/python.d.ts +17 -0
  183. package/dist/indexer/resolvers/python.d.ts.map +1 -0
  184. package/dist/indexer/resolvers/python.js +63 -0
  185. package/dist/indexer/resolvers/python.js.map +1 -0
  186. package/dist/indexer/resolvers/ruby.d.ts +13 -0
  187. package/dist/indexer/resolvers/ruby.d.ts.map +1 -0
  188. package/dist/indexer/resolvers/ruby.js +199 -0
  189. package/dist/indexer/resolvers/ruby.js.map +1 -0
  190. package/dist/indexer/resolvers/rust.d.ts +12 -0
  191. package/dist/indexer/resolvers/rust.d.ts.map +1 -0
  192. package/dist/indexer/resolvers/rust.js +61 -0
  193. package/dist/indexer/resolvers/rust.js.map +1 -0
  194. package/dist/indexer/resolvers/shared.d.ts +18 -0
  195. package/dist/indexer/resolvers/shared.d.ts.map +1 -0
  196. package/dist/indexer/resolvers/shared.js +71 -0
  197. package/dist/indexer/resolvers/shared.js.map +1 -0
  198. package/dist/indexer/rust-workspace.d.ts +25 -0
  199. package/dist/indexer/rust-workspace.d.ts.map +1 -0
  200. package/dist/indexer/rust-workspace.js +155 -0
  201. package/dist/indexer/rust-workspace.js.map +1 -0
  202. package/dist/indexer/symbol-edges.d.ts +19 -0
  203. package/dist/indexer/symbol-edges.d.ts.map +1 -0
  204. package/dist/indexer/symbol-edges.js +117 -0
  205. package/dist/indexer/symbol-edges.js.map +1 -0
  206. package/dist/indexer/tokenize.d.ts +26 -0
  207. package/dist/indexer/tokenize.d.ts.map +1 -0
  208. package/dist/indexer/tokenize.js +200 -0
  209. package/dist/indexer/tokenize.js.map +1 -0
  210. package/dist/indexer/ts-parser.d.ts +10 -0
  211. package/dist/indexer/ts-parser.d.ts.map +1 -0
  212. package/dist/indexer/ts-parser.js +605 -0
  213. package/dist/indexer/ts-parser.js.map +1 -0
  214. package/dist/indexer/walker.d.ts +9 -0
  215. package/dist/indexer/walker.d.ts.map +1 -0
  216. package/dist/indexer/walker.js +91 -0
  217. package/dist/indexer/walker.js.map +1 -0
  218. package/dist/init.d.ts +111 -0
  219. package/dist/init.d.ts.map +1 -0
  220. package/dist/init.js +787 -0
  221. package/dist/init.js.map +1 -0
  222. package/dist/kb/cli.d.ts +2 -0
  223. package/dist/kb/cli.d.ts.map +1 -0
  224. package/dist/kb/cli.js +377 -0
  225. package/dist/kb/cli.js.map +1 -0
  226. package/dist/kb/commit.d.ts +6 -0
  227. package/dist/kb/commit.d.ts.map +1 -0
  228. package/dist/kb/commit.js +84 -0
  229. package/dist/kb/commit.js.map +1 -0
  230. package/dist/kb/fold.d.ts +42 -0
  231. package/dist/kb/fold.d.ts.map +1 -0
  232. package/dist/kb/fold.js +285 -0
  233. package/dist/kb/fold.js.map +1 -0
  234. package/dist/kb/freshness.d.ts +9 -0
  235. package/dist/kb/freshness.d.ts.map +1 -0
  236. package/dist/kb/freshness.js +52 -0
  237. package/dist/kb/freshness.js.map +1 -0
  238. package/dist/kb/git.d.ts +4 -0
  239. package/dist/kb/git.d.ts.map +1 -0
  240. package/dist/kb/git.js +28 -0
  241. package/dist/kb/git.js.map +1 -0
  242. package/dist/kb/ids.d.ts +8 -0
  243. package/dist/kb/ids.d.ts.map +1 -0
  244. package/dist/kb/ids.js +42 -0
  245. package/dist/kb/ids.js.map +1 -0
  246. package/dist/kb/lint.d.ts +23 -0
  247. package/dist/kb/lint.d.ts.map +1 -0
  248. package/dist/kb/lint.js +102 -0
  249. package/dist/kb/lint.js.map +1 -0
  250. package/dist/kb/lookup.d.ts +55 -0
  251. package/dist/kb/lookup.d.ts.map +1 -0
  252. package/dist/kb/lookup.js +92 -0
  253. package/dist/kb/lookup.js.map +1 -0
  254. package/dist/kb/notes-index.d.ts +31 -0
  255. package/dist/kb/notes-index.d.ts.map +1 -0
  256. package/dist/kb/notes-index.js +0 -0
  257. package/dist/kb/notes-index.js.map +1 -0
  258. package/dist/kb/raw-log.d.ts +34 -0
  259. package/dist/kb/raw-log.d.ts.map +1 -0
  260. package/dist/kb/raw-log.js +106 -0
  261. package/dist/kb/raw-log.js.map +1 -0
  262. package/dist/kb/render.d.ts +17 -0
  263. package/dist/kb/render.d.ts.map +1 -0
  264. package/dist/kb/render.js +101 -0
  265. package/dist/kb/render.js.map +1 -0
  266. package/dist/kb/search.d.ts +110 -0
  267. package/dist/kb/search.d.ts.map +1 -0
  268. package/dist/kb/search.js +453 -0
  269. package/dist/kb/search.js.map +1 -0
  270. package/dist/kb/store.d.ts +35 -0
  271. package/dist/kb/store.d.ts.map +1 -0
  272. package/dist/kb/store.js +160 -0
  273. package/dist/kb/store.js.map +1 -0
  274. package/dist/kb/types.d.ts +142 -0
  275. package/dist/kb/types.d.ts.map +1 -0
  276. package/dist/kb/types.js +13 -0
  277. package/dist/kb/types.js.map +1 -0
  278. package/dist/kb/view-template.d.ts +8 -0
  279. package/dist/kb/view-template.d.ts.map +1 -0
  280. package/dist/kb/view-template.js +8 -0
  281. package/dist/kb/view-template.js.map +1 -0
  282. package/dist/kb/view.d.ts +42 -0
  283. package/dist/kb/view.d.ts.map +1 -0
  284. package/dist/kb/view.js +118 -0
  285. package/dist/kb/view.js.map +1 -0
  286. package/dist/kb/write.d.ts +72 -0
  287. package/dist/kb/write.d.ts.map +1 -0
  288. package/dist/kb/write.js +345 -0
  289. package/dist/kb/write.js.map +1 -0
  290. package/dist/keeper-state.d.ts +29 -0
  291. package/dist/keeper-state.d.ts.map +1 -0
  292. package/dist/keeper-state.js +89 -0
  293. package/dist/keeper-state.js.map +1 -0
  294. package/dist/keeper.d.ts +23 -0
  295. package/dist/keeper.d.ts.map +1 -0
  296. package/dist/keeper.js +105 -0
  297. package/dist/keeper.js.map +1 -0
  298. package/dist/migrate.d.ts +9 -0
  299. package/dist/migrate.d.ts.map +1 -0
  300. package/dist/migrate.js +102 -0
  301. package/dist/migrate.js.map +1 -0
  302. package/dist/restart.d.ts +15 -0
  303. package/dist/restart.d.ts.map +1 -0
  304. package/dist/restart.js +48 -0
  305. package/dist/restart.js.map +1 -0
  306. package/dist/server/find.d.ts +39 -0
  307. package/dist/server/find.d.ts.map +1 -0
  308. package/dist/server/find.js +979 -0
  309. package/dist/server/find.js.map +1 -0
  310. package/dist/server/mcp.d.ts +117 -0
  311. package/dist/server/mcp.d.ts.map +1 -0
  312. package/dist/server/mcp.js +301 -0
  313. package/dist/server/mcp.js.map +1 -0
  314. package/dist/server/searcher.d.ts +14 -0
  315. package/dist/server/searcher.d.ts.map +1 -0
  316. package/dist/server/searcher.js +146 -0
  317. package/dist/server/searcher.js.map +1 -0
  318. package/dist/server/tools.d.ts +17 -0
  319. package/dist/server/tools.d.ts.map +1 -0
  320. package/dist/server/tools.js +875 -0
  321. package/dist/server/tools.js.map +1 -0
  322. package/dist/status.d.ts +12 -0
  323. package/dist/status.d.ts.map +1 -0
  324. package/dist/status.js +157 -0
  325. package/dist/status.js.map +1 -0
  326. package/dist/types.d.ts +138 -0
  327. package/dist/types.d.ts.map +1 -0
  328. package/dist/types.js +3 -0
  329. package/dist/types.js.map +1 -0
  330. package/dist/watcher.d.ts +11 -0
  331. package/dist/watcher.d.ts.map +1 -0
  332. package/dist/watcher.js +67 -0
  333. package/dist/watcher.js.map +1 -0
  334. package/hooks/canonical-find-key.mjs +68 -0
  335. package/hooks/codex-find-nudge.mjs +15 -0
  336. package/hooks/codex-find-preguard.mjs +14 -0
  337. package/hooks/codex-kb-elicit.mjs +329 -0
  338. package/hooks/codex-kb-recall.mjs +151 -0
  339. package/hooks/codex-nudge-handler.mjs +370 -0
  340. package/hooks/codex-preguard-handler.mjs +75 -0
  341. package/hooks/codex-run-hook.mjs +132 -0
  342. package/hooks/coldstart-call.mjs +58 -0
  343. package/hooks/cursor-find-nudge.mjs +15 -0
  344. package/hooks/cursor-find-preguard.mjs +14 -0
  345. package/hooks/cursor-input.mjs +72 -0
  346. package/hooks/cursor-kb-elicit.mjs +335 -0
  347. package/hooks/cursor-kb-recall.mjs +138 -0
  348. package/hooks/cursor-nudge-handler.mjs +33 -0
  349. package/hooks/cursor-preguard-handler.mjs +39 -0
  350. package/hooks/cursor-run-hook.mjs +129 -0
  351. package/hooks/find-nudge.mjs +15 -0
  352. package/hooks/find-preguard.mjs +14 -0
  353. package/hooks/kb-elicit.mjs +334 -0
  354. package/hooks/kb-recall.mjs +151 -0
  355. package/hooks/nudge-handler.mjs +370 -0
  356. package/hooks/preguard-handler.mjs +75 -0
  357. package/hooks/run-hook.mjs +132 -0
  358. package/package.json +69 -0
  359. package/templates/coldstart.cli.md +60 -0
  360. package/templates/coldstart.mcp.md +59 -0
@@ -0,0 +1,254 @@
1
+ import { createRequire } from 'node:module';
2
+ import { firstChildOfType } from './node-helpers.js';
3
+ import { makeParser } from './parser-factory.js';
4
+ const require = createRequire(import.meta.url);
5
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
+ const cppGrammar = require('tree-sitter-cpp');
7
+ const getParser = makeParser(cppGrammar);
8
+ /** Recursively collect call_expression callee names + first-seen line in a subtree. */
9
+ function collectCalls(node, results) {
10
+ if (node.type === 'call_expression') {
11
+ const fn = node.namedChildren[0];
12
+ let calleeName = null;
13
+ if (fn) {
14
+ if (fn.type === 'identifier') {
15
+ // plain call: helper(x)
16
+ calleeName = fn.text;
17
+ }
18
+ else if (fn.type === 'field_expression') {
19
+ // member call: obj.method(args) — field_identifier is the method name
20
+ const fieldId = fn.namedChildren.find((c) => c.type === 'field_identifier');
21
+ if (fieldId)
22
+ calleeName = fieldId.text;
23
+ }
24
+ else if (fn.type === 'qualified_identifier') {
25
+ // namespace call: ns::func(args) — last child is the identifier
26
+ const last = fn.namedChildren.at(-1);
27
+ if (last?.type === 'identifier')
28
+ calleeName = last.text;
29
+ }
30
+ }
31
+ if (calleeName && !results.has(calleeName)) {
32
+ results.set(calleeName, node.startPosition.row + 1);
33
+ }
34
+ }
35
+ for (const child of node.namedChildren) {
36
+ collectCalls(child, results);
37
+ }
38
+ }
39
+ function callsFromMap(calls) {
40
+ const out = [];
41
+ for (const [name, line] of calls) {
42
+ out.push({ name, line });
43
+ }
44
+ return out;
45
+ }
46
+ const MAX_STRING = 32000;
47
+ const CHUNK_SIZE = 4096;
48
+ // Headers we know cannot resolve to project files — drop at parse time so they
49
+ // don't pollute the unresolved metric and don't waste resolver work.
50
+ const STDLIB_EXACT = new Set([
51
+ // C++ standard library
52
+ 'algorithm', 'array', 'atomic', 'bitset', 'cassert', 'cctype', 'cerrno',
53
+ 'cfloat', 'chrono', 'climits', 'cmath', 'codecvt', 'complex', 'condition_variable',
54
+ 'cstddef', 'cstdint', 'cstdio', 'cstdlib', 'cstring', 'ctime', 'cwchar', 'cwctype',
55
+ 'deque', 'exception', 'filesystem', 'forward_list', 'fstream', 'functional',
56
+ 'future', 'initializer_list', 'iomanip', 'ios', 'iosfwd', 'iostream', 'istream',
57
+ 'iterator', 'limits', 'list', 'locale', 'map', 'memory', 'mutex', 'new', 'numeric',
58
+ 'optional', 'ostream', 'queue', 'random', 'ratio', 'regex', 'set', 'shared_mutex',
59
+ 'sstream', 'stack', 'stdexcept', 'streambuf', 'string', 'string_view',
60
+ 'system_error', 'thread', 'tuple', 'type_traits', 'typeindex', 'typeinfo',
61
+ 'unordered_map', 'unordered_set', 'utility', 'valarray', 'variant', 'vector',
62
+ // C standard library
63
+ 'assert.h', 'ctype.h', 'errno.h', 'float.h', 'limits.h', 'math.h', 'setjmp.h',
64
+ 'signal.h', 'stdarg.h', 'stddef.h', 'stdint.h', 'stdio.h', 'stdlib.h', 'string.h',
65
+ 'time.h', 'wchar.h', 'wctype.h',
66
+ // POSIX
67
+ 'unistd.h', 'pthread.h', 'fcntl.h', 'dirent.h', 'sys/stat.h', 'sys/types.h',
68
+ 'sys/socket.h', 'sys/mman.h', 'sys/ioctl.h', 'sys/wait.h', 'sys/time.h',
69
+ 'sys/resource.h', 'sys/eventfd.h', 'sys/epoll.h', 'sys/inotify.h',
70
+ 'netinet/in.h', 'netinet/tcp.h', 'arpa/inet.h', 'netdb.h', 'poll.h', 'sched.h',
71
+ 'semaphore.h', 'syslog.h', 'termios.h',
72
+ // Windows
73
+ 'windows.h', 'winsock2.h', 'ws2tcpip.h',
74
+ ]);
75
+ const THIRD_PARTY_PREFIXES = [
76
+ 'boost/', 'gtest/', 'gmock/', 'benchmark/',
77
+ 'Qt5/', 'Qt6/', 'QtCore/', 'QtGui/', 'QtWidgets/', 'QtNetwork/',
78
+ 'fmt/', 'spdlog/', 'absl/', 'google/',
79
+ 'openssl/', 'zlib.h', 'png.h', 'jpeglib.h',
80
+ 'glib-2.0/', 'gio/', 'gtk/', 'cairo/', 'pango/',
81
+ 'eigen3/', 'Eigen/', 'opencv2/',
82
+ 'protobuf/', 'grpcpp/',
83
+ 'event2/', 'sodium/', 'secp256k1',
84
+ 'kj/', 'mp/', 'capnp/', 'univalue',
85
+ ];
86
+ function isStdlibOrThirdParty(spec) {
87
+ if (STDLIB_EXACT.has(spec))
88
+ return true;
89
+ for (const p of THIRD_PARTY_PREFIXES)
90
+ if (spec.startsWith(p))
91
+ return true;
92
+ // Heuristic: single-token no extension and no slash → almost certainly stdlib
93
+ if (!spec.includes('/') && !spec.includes('.'))
94
+ return true;
95
+ return false;
96
+ }
97
+ function parseContent(parser, content) {
98
+ if (content.length <= MAX_STRING)
99
+ return parser.parse(content);
100
+ return parser.parse((startIndex) => {
101
+ if (startIndex >= content.length)
102
+ return null;
103
+ return content.slice(startIndex, startIndex + CHUNK_SIZE);
104
+ });
105
+ }
106
+ function extractName(node) {
107
+ // Walk into pointer/reference declarators to find the actual identifier
108
+ if (node.type === 'identifier' || node.type === 'field_identifier')
109
+ return node.text;
110
+ if (node.type === 'qualified_identifier') {
111
+ // A::B → use just B for the symbol name
112
+ const id = node.namedChildren.at(-1);
113
+ return id ? extractName(id) : null;
114
+ }
115
+ if (node.type === 'pointer_declarator' || node.type === 'reference_declarator') {
116
+ return extractName(node.namedChildren[0]);
117
+ }
118
+ if (node.type === 'function_declarator') {
119
+ return extractName(firstChildOfType(node, 'identifier') ??
120
+ firstChildOfType(node, 'qualified_identifier') ??
121
+ node.namedChildren[0]);
122
+ }
123
+ return null;
124
+ }
125
+ export function parseCppContent(content, fileId) {
126
+ const parser = getParser();
127
+ let tree;
128
+ try {
129
+ tree = parseContent(parser, content);
130
+ }
131
+ catch (err) {
132
+ throw new Error(`Tree-sitter failed to parse C++ (${content.length} chars): ${err}`);
133
+ }
134
+ const root = tree.rootNode;
135
+ const imports = [];
136
+ const symbols = [];
137
+ const exports = [];
138
+ function visit(node, scope) {
139
+ // Skip ERROR subtrees — macro-expanded code often produces these
140
+ if (node.type === 'ERROR')
141
+ return;
142
+ const startLine = node.startPosition.row + 1;
143
+ const endLine = node.endPosition.row + 1;
144
+ // #include "foo.h" or #include <boost/asio.hpp>
145
+ if (node.type === 'preproc_include') {
146
+ // Quoted include: #include "path/to/file.h"
147
+ const quoted = firstChildOfType(node, 'string_literal');
148
+ if (quoted) {
149
+ const raw = quoted.text.replace(/^"|"$/g, '');
150
+ // Also filter third-party for quoted includes — they can't resolve locally
151
+ if (raw && !isStdlibOrThirdParty(raw))
152
+ imports.push(raw);
153
+ return;
154
+ }
155
+ // Angle-bracket include: #include <path/to/file.h>
156
+ const sys = firstChildOfType(node, 'system_lib_string');
157
+ if (sys) {
158
+ const raw = sys.text.replace(/^<|>$/g, '');
159
+ // Skip stdlib and third-party — let resolver handle only local includes
160
+ if (raw && !isStdlibOrThirdParty(raw))
161
+ imports.push(raw);
162
+ }
163
+ return;
164
+ }
165
+ // class Foo / struct Foo
166
+ if (node.type === 'class_specifier' || node.type === 'struct_specifier') {
167
+ const nameNode = firstChildOfType(node, 'type_identifier');
168
+ if (nameNode && node.type !== 'ERROR') {
169
+ const name = scope ? `${scope}::${nameNode.text}` : nameNode.text;
170
+ symbols.push({
171
+ id: `${fileId}#${name}`,
172
+ name,
173
+ kind: 'class',
174
+ startLine,
175
+ endLine,
176
+ isExported: true,
177
+ calls: [],
178
+ implementsNames: [],
179
+ });
180
+ exports.push(nameNode.text);
181
+ // Recurse into body for nested declarations
182
+ const body = firstChildOfType(node, 'field_declaration_list');
183
+ if (body) {
184
+ for (const child of body.namedChildren)
185
+ visit(child, nameNode.text);
186
+ }
187
+ }
188
+ return;
189
+ }
190
+ // Function / method definition: return_type declarator body
191
+ if (node.type === 'function_definition') {
192
+ const declarator = node.namedChildren.find((c) => c.type === 'function_declarator' ||
193
+ c.type === 'pointer_declarator' ||
194
+ c.type === 'reference_declarator');
195
+ if (declarator) {
196
+ const name = extractName(declarator);
197
+ if (name) {
198
+ const qualName = scope ? `${scope}::${name}` : name;
199
+ const callsMap = new Map();
200
+ const body = firstChildOfType(node, 'compound_statement');
201
+ if (body)
202
+ collectCalls(body, callsMap);
203
+ symbols.push({
204
+ id: `${fileId}#${qualName}`,
205
+ name: qualName,
206
+ kind: scope ? 'method' : 'function',
207
+ startLine,
208
+ endLine,
209
+ isExported: true,
210
+ calls: callsFromMap(callsMap),
211
+ implementsNames: [],
212
+ });
213
+ if (!scope)
214
+ exports.push(name);
215
+ }
216
+ }
217
+ return;
218
+ }
219
+ // namespace Foo { ... } — recurse with scope
220
+ if (node.type === 'namespace_definition') {
221
+ const nameNode = firstChildOfType(node, 'namespace_identifier') ?? firstChildOfType(node, 'identifier');
222
+ const body = firstChildOfType(node, 'declaration_list');
223
+ if (body) {
224
+ const nsName = nameNode?.text;
225
+ for (const child of body.namedChildren)
226
+ visit(child, nsName);
227
+ }
228
+ return;
229
+ }
230
+ // extern "C" { ... } or extern "C" single-decl — recurse without new scope
231
+ if (node.type === 'linkage_specification') {
232
+ const body = firstChildOfType(node, 'declaration_list');
233
+ if (body) {
234
+ for (const child of body.namedChildren)
235
+ visit(child, scope);
236
+ }
237
+ else {
238
+ // extern "C" fn(...) { ... } — single function_definition, no braces
239
+ for (const child of node.namedChildren)
240
+ visit(child, scope);
241
+ }
242
+ return;
243
+ }
244
+ }
245
+ for (const node of root.namedChildren)
246
+ visit(node);
247
+ return {
248
+ imports: [...new Set(imports)],
249
+ exports: [...new Set(exports)],
250
+ hasDefaultExport: false,
251
+ symbols,
252
+ };
253
+ }
254
+ //# sourceMappingURL=cpp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpp.js","sourceRoot":"","sources":["../../../src/indexer/extractors/cpp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { SymbolNode } from '../../types.js';
2
+ export interface PartialDeclaration {
3
+ kind: 'class' | 'struct' | 'interface' | 'record';
4
+ name: string;
5
+ namespace?: string;
6
+ }
7
+ export interface CSharpParseResult {
8
+ imports: string[];
9
+ exports: string[];
10
+ hasDefaultExport: false;
11
+ symbols: SymbolNode[];
12
+ partialDeclarations?: PartialDeclaration[];
13
+ /** The file's primary declared namespace (`namespace Foo.Bar`), if any. Used
14
+ * to resolve `using` directives by declared namespace rather than by guessing
15
+ * it from the directory layout. */
16
+ packageName?: string;
17
+ }
18
+ export declare function parseCSharpContent(content: string, fileId: string): CSharpParseResult;
19
+ //# sourceMappingURL=csharp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csharp.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/csharp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAY,MAAM,gBAAgB,CAAC;AA+D3D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,EAAE,KAAK,CAAC;IACxB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC3C;;wCAEoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAqND,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,iBAAiB,CA0FnB"}
@@ -0,0 +1,327 @@
1
+ import { createRequire } from 'node:module';
2
+ import { childrenOfType, firstChildOfType } from './node-helpers.js';
3
+ import { makeParser } from './parser-factory.js';
4
+ const require = createRequire(import.meta.url);
5
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
+ const csharpGrammar = require('tree-sitter-c-sharp');
7
+ const getParser = makeParser(csharpGrammar);
8
+ // ---------------------------------------------------------------------------
9
+ // Node helpers
10
+ // ---------------------------------------------------------------------------
11
+ /** Check if a node has a `public` modifier. */
12
+ function hasPublicModifier(node) {
13
+ // Modifiers appear as modifier nodes in the named children list
14
+ return node.namedChildren.some((c) => c.type === 'modifier' && c.text === 'public');
15
+ }
16
+ /** Recursively walk a node and collect invocation_expression callee names + first-seen line. */
17
+ function collectCalls(node, results) {
18
+ if (node.type === 'invocation_expression') {
19
+ // invocation_expression: field('function', identifier | member_access_expression) field('arguments', ...)
20
+ const funcNode = node.childForFieldName('function');
21
+ if (funcNode) {
22
+ let methodName;
23
+ if (funcNode.type === 'identifier') {
24
+ // Bare call: DoSomething()
25
+ methodName = funcNode.text;
26
+ }
27
+ else if (funcNode.type === 'member_access_expression') {
28
+ // Member call: obj.Method() — use field 'name' for the method name
29
+ const nameNode = funcNode.childForFieldName('name');
30
+ if (nameNode)
31
+ methodName = nameNode.text;
32
+ }
33
+ if (methodName && !results.has(methodName)) {
34
+ results.set(methodName, node.startPosition.row + 1);
35
+ }
36
+ }
37
+ }
38
+ for (const child of node.namedChildren) {
39
+ collectCalls(child, results);
40
+ }
41
+ }
42
+ function callsFromMap(calls, exclude) {
43
+ const out = [];
44
+ for (const [name, line] of calls) {
45
+ if (exclude && name === exclude)
46
+ continue;
47
+ out.push({ name, line });
48
+ }
49
+ return out;
50
+ }
51
+ // ---------------------------------------------------------------------------
52
+ // Public API
53
+ // ---------------------------------------------------------------------------
54
+ const MAX_STRING = 32000;
55
+ const CHUNK_SIZE = 4096;
56
+ function parseContent(parser, content) {
57
+ if (content.length <= MAX_STRING) {
58
+ return parser.parse(content);
59
+ }
60
+ return parser.parse((startIndex) => {
61
+ if (startIndex >= content.length)
62
+ return null;
63
+ return content.slice(startIndex, startIndex + CHUNK_SIZE);
64
+ });
65
+ }
66
+ function extractTypeSymbols(node, fileId, parentName) {
67
+ const startLine = node.startPosition.row + 1;
68
+ const endLine = node.endPosition.row + 1;
69
+ const pub = hasPublicModifier(node);
70
+ const nodeTypeToKind = {
71
+ class_declaration: 'class',
72
+ interface_declaration: 'interface',
73
+ struct_declaration: 'class',
74
+ enum_declaration: 'class',
75
+ record_declaration: 'class',
76
+ };
77
+ const kind = nodeTypeToKind[node.type];
78
+ if (!kind)
79
+ return null;
80
+ const nameNode = firstChildOfType(node, 'identifier');
81
+ if (!nameNode)
82
+ return null;
83
+ const name = parentName ? `${parentName}.${nameNode.text}` : nameNode.text;
84
+ // Base types: class Foo : Bar, IBaz
85
+ let extendsName;
86
+ const implementsNames = [];
87
+ const baseList = firstChildOfType(node, 'base_list');
88
+ if (baseList) {
89
+ const bases = baseList.namedChildren.filter((c) => c.type === 'identifier' || c.type === 'generic_name' || c.type === 'qualified_name');
90
+ for (let i = 0; i < bases.length; i++) {
91
+ const baseName = firstChildOfType(bases[i], 'identifier')?.text ?? bases[i].text;
92
+ if (i === 0 && node.type === 'class_declaration') {
93
+ // First base could be a class (extendsName) or interface
94
+ // Heuristic: if starts with 'I' followed by uppercase, treat as interface
95
+ if (/^I[A-Z]/.test(baseName)) {
96
+ implementsNames.push(baseName);
97
+ }
98
+ else {
99
+ extendsName = baseName;
100
+ }
101
+ }
102
+ else {
103
+ implementsNames.push(baseName);
104
+ }
105
+ }
106
+ }
107
+ const sym = {
108
+ id: `${fileId}#${name}`,
109
+ name,
110
+ kind,
111
+ startLine,
112
+ endLine,
113
+ isExported: pub,
114
+ calls: [],
115
+ extendsName,
116
+ implementsNames,
117
+ };
118
+ // Extract public methods from body
119
+ const members = [];
120
+ const declTypes = [
121
+ 'declaration_list', // class/struct body
122
+ 'enum_member_declaration_list',
123
+ ];
124
+ let body = null;
125
+ for (const dt of declTypes) {
126
+ body = firstChildOfType(node, dt);
127
+ if (body)
128
+ break;
129
+ }
130
+ if (!body) {
131
+ // Try interface_body
132
+ body = firstChildOfType(node, 'interface_body');
133
+ }
134
+ if (body) {
135
+ for (const child of body.namedChildren) {
136
+ if (child.type === 'method_declaration') {
137
+ const mPub = hasPublicModifier(child);
138
+ // method_declaration: [modifiers] [return_type_identifier] method_name parameter_list block
139
+ // The method name is the last identifier before parameter_list
140
+ const paramIdx = child.namedChildren.findIndex((c) => c.type === 'parameter_list');
141
+ const identsBefore = child.namedChildren
142
+ .slice(0, paramIdx < 0 ? undefined : paramIdx)
143
+ .filter((c) => c.type === 'identifier');
144
+ const mName = identsBefore[identsBefore.length - 1];
145
+ if (!mName)
146
+ continue;
147
+ const calls = new Map();
148
+ const methodBody = firstChildOfType(child, 'block');
149
+ if (methodBody)
150
+ collectCalls(methodBody, calls);
151
+ members.push({
152
+ id: `${fileId}#${name}.${mName.text}`,
153
+ name: `${name}.${mName.text}`,
154
+ kind: 'method',
155
+ startLine: child.startPosition.row + 1,
156
+ endLine: child.endPosition.row + 1,
157
+ isExported: mPub,
158
+ calls: callsFromMap(calls, mName.text),
159
+ implementsNames: [],
160
+ });
161
+ }
162
+ else if (child.type === 'constructor_declaration') {
163
+ const mPub = hasPublicModifier(child);
164
+ const mName = firstChildOfType(child, 'identifier');
165
+ if (!mName)
166
+ continue;
167
+ const calls = new Map();
168
+ const ctorBody = firstChildOfType(child, 'block');
169
+ if (ctorBody)
170
+ collectCalls(ctorBody, calls);
171
+ members.push({
172
+ id: `${fileId}#${name}.${mName.text}`,
173
+ name: `${name}.${mName.text}`,
174
+ kind: 'method',
175
+ startLine: child.startPosition.row + 1,
176
+ endLine: child.endPosition.row + 1,
177
+ isExported: mPub,
178
+ calls: callsFromMap(calls),
179
+ implementsNames: [],
180
+ });
181
+ }
182
+ }
183
+ }
184
+ return { sym, members };
185
+ }
186
+ /** Check if a type node has the 'partial' modifier */
187
+ function isPartialType(node) {
188
+ return node.namedChildren.some((c) => c.type === 'modifier' && c.text === 'partial');
189
+ }
190
+ /** Extract namespace name from a namespace_declaration node */
191
+ function getNamespaceFromParent(node) {
192
+ // Walk up parent chain in the provided context — we need to track during recursion
193
+ // For now, we'll pass this context through visitChildren
194
+ return undefined;
195
+ }
196
+ /** Collect all partial type declarations (class/struct/interface/record) */
197
+ function collectPartialDeclarations(root, currentNamespace) {
198
+ const out = [];
199
+ function visit(node, namespace) {
200
+ // Track namespace context as we descend
201
+ if (node.type === 'namespace_declaration' || node.type === 'file_scoped_namespace_declaration') {
202
+ const nameNode = firstChildOfType(node, 'identifier') ?? firstChildOfType(node, 'qualified_name');
203
+ const newNamespace = nameNode?.text;
204
+ const body = firstChildOfType(node, 'declaration_list') ?? node;
205
+ for (const child of body.namedChildren) {
206
+ visit(child, newNamespace);
207
+ }
208
+ return;
209
+ }
210
+ // Check for partial type declarations
211
+ const typeNodeTypes = [
212
+ 'class_declaration',
213
+ 'struct_declaration',
214
+ 'interface_declaration',
215
+ 'record_declaration',
216
+ ];
217
+ if (typeNodeTypes.includes(node.type) && isPartialType(node)) {
218
+ const nameNode = firstChildOfType(node, 'identifier');
219
+ if (nameNode) {
220
+ const kind = node.type === 'class_declaration'
221
+ ? 'class'
222
+ : node.type === 'struct_declaration'
223
+ ? 'struct'
224
+ : node.type === 'interface_declaration'
225
+ ? 'interface'
226
+ : 'record';
227
+ out.push({
228
+ kind,
229
+ name: nameNode.text,
230
+ namespace,
231
+ });
232
+ }
233
+ }
234
+ // Continue recursing into children
235
+ for (const child of node.namedChildren) {
236
+ visit(child, namespace);
237
+ }
238
+ }
239
+ visit(root, currentNamespace);
240
+ return out;
241
+ }
242
+ export function parseCSharpContent(content, fileId) {
243
+ const parser = getParser();
244
+ let tree;
245
+ try {
246
+ tree = parseContent(parser, content);
247
+ }
248
+ catch (err) {
249
+ throw new Error(`Tree-sitter failed to parse C# (${content.length} chars): ${err}`);
250
+ }
251
+ const root = tree.rootNode;
252
+ const imports = [];
253
+ const symbols = [];
254
+ const exports = [];
255
+ let packageName;
256
+ function visitChildren(nodes) {
257
+ for (const node of nodes) {
258
+ if (node.type === 'using_directive') {
259
+ // using System.Foo;
260
+ const nameNode = node.namedChildren.find((c) => c.type === 'identifier' || c.type === 'qualified_name' || c.type === 'member_access_expression');
261
+ if (nameNode)
262
+ imports.push(nameNode.text);
263
+ continue;
264
+ }
265
+ if (node.type === 'namespace_declaration' || node.type === 'file_scoped_namespace_declaration') {
266
+ // First declared namespace becomes the file's package identity. The name
267
+ // node (`qualified_name`) already carries the full dotted form, e.g.
268
+ // `Serilog.Core.Pipeline`.
269
+ if (packageName === undefined) {
270
+ const nameNode = firstChildOfType(node, 'qualified_name') ?? firstChildOfType(node, 'identifier');
271
+ if (nameNode)
272
+ packageName = nameNode.text;
273
+ }
274
+ const body = firstChildOfType(node, 'declaration_list') ??
275
+ node; // file-scoped: members are siblings
276
+ visitChildren(body.namedChildren);
277
+ continue;
278
+ }
279
+ const typeNodeTypes = [
280
+ 'class_declaration',
281
+ 'interface_declaration',
282
+ 'struct_declaration',
283
+ 'enum_declaration',
284
+ 'record_declaration',
285
+ ];
286
+ if (typeNodeTypes.includes(node.type)) {
287
+ const result = extractTypeSymbols(node, fileId);
288
+ if (!result)
289
+ continue;
290
+ symbols.push(result.sym, ...result.members);
291
+ if (result.sym.isExported)
292
+ exports.push(result.sym.name);
293
+ // Also capture public methods in exports
294
+ for (const m of result.members) {
295
+ if (m.isExported)
296
+ exports.push(m.name);
297
+ }
298
+ }
299
+ }
300
+ }
301
+ visitChildren(root.namedChildren);
302
+ // using directives inside namespaces also captured above
303
+ // Collect any top-level using directives not caught
304
+ for (const node of root.namedChildren) {
305
+ if (node.type === 'using_directive') {
306
+ const nameNode = node.namedChildren.find((c) => c.type === 'identifier' ||
307
+ c.type === 'qualified_name' ||
308
+ c.type === 'member_access_expression');
309
+ if (nameNode && !imports.includes(nameNode.text)) {
310
+ imports.push(nameNode.text);
311
+ }
312
+ }
313
+ }
314
+ // Collect partial type declarations
315
+ const partialDeclarations = collectPartialDeclarations(root);
316
+ return {
317
+ imports: [...new Set(imports)],
318
+ exports: [...new Set(exports)],
319
+ hasDefaultExport: false,
320
+ symbols,
321
+ partialDeclarations: partialDeclarations.length > 0 ? partialDeclarations : undefined,
322
+ packageName,
323
+ };
324
+ }
325
+ // Suppress unused-import lint for childrenOfType helper kept for potential future use
326
+ void childrenOfType;
327
+ //# sourceMappingURL=csharp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csharp.js","sourceRoot":"","sources":["../../../src/indexer/extractors/csharp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,8DAA8D;AAC9D,MAAM,aAAa,GAAG,OAAO,CAAC,qBAAqB,CAAY,CAAC;AAKhE,MAAM,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;AAE5C,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,+CAA+C;AAC/C,SAAS,iBAAiB,CAAC,IAAY;IACrC,gEAAgE;IAChE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAC5B,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAC5D,CAAC;AACJ,CAAC;AAED,gGAAgG;AAChG,SAAS,YAAY,CAAC,IAAY,EAAE,OAA4B;IAC9D,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;QAC1C,0GAA0G;QAC1G,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,UAA8B,CAAC;YACnC,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACnC,2BAA2B;gBAC3B,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC7B,CAAC;iBAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;gBACxD,mEAAmE;gBACnE,MAAM,QAAQ,GAAG,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBACpD,IAAI,QAAQ;oBAAE,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC3C,CAAC;YACD,IAAI,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;IACH,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAA0B,EAAE,OAAgB;IAChE,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,OAAO,IAAI,IAAI,KAAK,OAAO;YAAE,SAAS;QAC1C,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAwBD,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,MAAM,UAAU,GAAG,KAAK,CAAC;AACzB,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,SAAS,YAAY,CAAC,MAAc,EAAE,OAAe;IACnD,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,UAAkB,EAAE,EAAE;QACzC,IAAI,UAAU,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAC9C,OAAO,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC;AAID,SAAS,kBAAkB,CACzB,IAAY,EACZ,MAAc,EACd,UAAmB;IAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAEpC,MAAM,cAAc,GAA6B;QAC/C,iBAAiB,EAAE,OAAO;QAC1B,qBAAqB,EAAE,WAAW;QAClC,kBAAkB,EAAE,OAAO;QAC3B,gBAAgB,EAAE,OAAO;QACzB,kBAAkB,EAAE,OAAO;KAC5B,CAAC;IACF,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACtD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IAE3E,oCAAoC;IACpC,IAAI,WAA+B,CAAC;IACpC,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACrD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CACzC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,CACnG,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACjF,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBACjD,yDAAyD;gBACzD,0EAA0E;gBAC1E,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7B,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACN,WAAW,GAAG,QAAQ,CAAC;gBACzB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAe;QACtB,EAAE,EAAE,GAAG,MAAM,IAAI,IAAI,EAAE;QACvB,IAAI;QACJ,IAAI;QACJ,SAAS;QACT,OAAO;QACP,UAAU,EAAE,GAAG;QACf,KAAK,EAAE,EAAE;QACT,WAAW;QACX,eAAe;KAChB,CAAC;IAEF,mCAAmC;IACnC,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG;QAChB,kBAAkB,EAAK,oBAAoB;QAC3C,8BAA8B;KAC/B,CAAC;IACF,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,IAAI;YAAE,MAAM;IAClB,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,qBAAqB;QACrB,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBACxC,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBACtC,4FAA4F;gBAC5F,+DAA+D;gBAC/D,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAC5C,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAC3C,CAAC;gBACF,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa;qBACrC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;qBAC7C,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,KAAK;oBAAE,SAAS;gBACrB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;gBACxC,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACpD,IAAI,UAAU;oBAAE,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,GAAG,MAAM,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;oBACrC,IAAI,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;oBAC7B,IAAI,EAAE,QAAQ;oBACd,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;oBACtC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;oBAClC,UAAU,EAAE,IAAI;oBAChB,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC;oBACtC,eAAe,EAAE,EAAE;iBACpB,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;gBACpD,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBACtC,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;gBACpD,IAAI,CAAC,KAAK;oBAAE,SAAS;gBACrB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;gBACxC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAClD,IAAI,QAAQ;oBAAE,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAC5C,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,GAAG,MAAM,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;oBACrC,IAAI,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;oBAC7B,IAAI,EAAE,QAAQ;oBACd,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;oBACtC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;oBAClC,UAAU,EAAE,IAAI;oBAChB,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;oBAC1B,eAAe,EAAE,EAAE;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC1B,CAAC;AAED,sDAAsD;AACtD,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAC5B,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAC7D,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,SAAS,sBAAsB,CAAC,IAAY;IAC1C,mFAAmF;IACnF,yDAAyD;IACzD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,4EAA4E;AAC5E,SAAS,0BAA0B,CAAC,IAAY,EAAE,gBAAyB;IACzE,MAAM,GAAG,GAAyB,EAAE,CAAC;IAErC,SAAS,KAAK,CAAC,IAAY,EAAE,SAAkB;QAC7C,wCAAwC;QACxC,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAuB,IAAI,IAAI,CAAC,IAAI,KAAK,mCAAmC,EAAE,CAAC;YAC/F,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;YAClG,MAAM,YAAY,GAAG,QAAQ,EAAE,IAAI,CAAC;YACpC,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,IAAI,CAAC;YAChE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO;QACT,CAAC;QAED,sCAAsC;QACtC,MAAM,aAAa,GAAG;YACpB,mBAAmB;YACnB,oBAAoB;YACpB,uBAAuB;YACvB,oBAAoB;SACrB,CAAC;QAEF,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YACtD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,mBAAmB;oBAC5C,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,oBAAoB;wBACpC,CAAC,CAAC,QAAQ;wBACV,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,uBAAuB;4BACvC,CAAC,CAAC,WAAW;4BACb,CAAC,CAAC,QAAQ,CAAC;gBACb,GAAG,CAAC,IAAI,CAAC;oBACP,IAAI;oBACJ,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,SAAS;iBACV,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAC9B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,MAAc;IAEd,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,IAAI,GAAW,IAAI,CAAC,QAAQ,CAAC;IAEnC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,WAA+B,CAAC;IAEpC,SAAS,aAAa,CAAC,KAAe;QACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBACpC,oBAAoB;gBACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CACtC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,CAAC,IAAI,KAAK,0BAA0B,CAC/G,CAAC;gBACF,IAAI,QAAQ;oBAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC1C,SAAS;YACX,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAuB,IAAI,IAAI,CAAC,IAAI,KAAK,mCAAmC,EAAE,CAAC;gBAC/F,yEAAyE;gBACzE,qEAAqE;gBACrE,2BAA2B;gBAC3B,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;oBAC9B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;oBAClG,IAAI,QAAQ;wBAAE,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC5C,CAAC;gBACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,CAAC;oBACrD,IAAI,CAAC,CAAC,oCAAoC;gBAC5C,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAClC,SAAS;YACX,CAAC;YAED,MAAM,aAAa,GAAG;gBACpB,mBAAmB;gBACnB,uBAAuB;gBACvB,oBAAoB;gBACpB,kBAAkB;gBAClB,oBAAoB;aACrB,CAAC;YAEF,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAChD,IAAI,CAAC,MAAM;oBAAE,SAAS;gBACtB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC5C,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU;oBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACzD,yCAAyC;gBACzC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC/B,IAAI,CAAC,CAAC,UAAU;wBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAElC,yDAAyD;IACzD,oDAAoD;IACpD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CACtC,CAAC,CAAS,EAAE,EAAE,CACZ,CAAC,CAAC,IAAI,KAAK,YAAY;gBACvB,CAAC,CAAC,IAAI,KAAK,gBAAgB;gBAC3B,CAAC,CAAC,IAAI,KAAK,0BAA0B,CACxC,CAAC;YACF,IAAI,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,MAAM,mBAAmB,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAE7D,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9B,gBAAgB,EAAE,KAAK;QACvB,OAAO;QACP,mBAAmB,EAAE,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;QACrF,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,sFAAsF;AACtF,KAAK,cAAc,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { SymbolNode } from '../../types.js';
2
+ export interface EnvParseResult {
3
+ imports: string[];
4
+ exports: string[];
5
+ hasDefaultExport: false;
6
+ symbols: SymbolNode[];
7
+ }
8
+ export declare function parseEnvContent(content: string, fileId: string): EnvParseResult;
9
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,EAAE,KAAK,CAAC;IACxB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CA8C/E"}