@j0hanz/filesystem-context-mcp 1.3.0 → 1.3.2

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 (311) hide show
  1. package/README.md +251 -504
  2. package/dist/__tests__/lib/file-operations/search-content-edge-cases.test.js +1 -1
  3. package/dist/__tests__/lib/file-operations/search-content-edge-cases.test.js.map +1 -1
  4. package/dist/__tests__/lib/file-operations/search-definitions-helpers.test.d.ts +2 -0
  5. package/dist/__tests__/lib/file-operations/search-definitions-helpers.test.d.ts.map +1 -0
  6. package/dist/__tests__/lib/file-operations/search-definitions-helpers.test.js +43 -0
  7. package/dist/__tests__/lib/file-operations/search-definitions-helpers.test.js.map +1 -0
  8. package/dist/__tests__/lib/file-operations/search-definitions.fixtures.d.ts +7 -0
  9. package/dist/__tests__/lib/file-operations/search-definitions.fixtures.d.ts.map +1 -0
  10. package/dist/__tests__/lib/file-operations/search-definitions.fixtures.js +113 -0
  11. package/dist/__tests__/lib/file-operations/search-definitions.fixtures.js.map +1 -0
  12. package/dist/__tests__/lib/file-operations/search-definitions.test.js +1 -112
  13. package/dist/__tests__/lib/file-operations/search-definitions.test.js.map +1 -1
  14. package/dist/__tests__/lib/file-operations/sorting.test.js +15 -40
  15. package/dist/__tests__/lib/file-operations/sorting.test.js.map +1 -1
  16. package/dist/__tests__/lib/path-validation-errors.test.js +1 -1
  17. package/dist/__tests__/lib/path-validation-errors.test.js.map +1 -1
  18. package/dist/__tests__/lib/path-validation.test.js +17 -0
  19. package/dist/__tests__/lib/path-validation.test.js.map +1 -1
  20. package/dist/config/formatting.d.ts +14 -0
  21. package/dist/config/formatting.d.ts.map +1 -0
  22. package/dist/config/formatting.js +34 -0
  23. package/dist/config/formatting.js.map +1 -0
  24. package/dist/config/types.d.ts +3 -97
  25. package/dist/config/types.d.ts.map +1 -1
  26. package/dist/config/types.js.map +1 -1
  27. package/dist/index.js +32 -2
  28. package/dist/index.js.map +1 -1
  29. package/dist/instructions.md +151 -170
  30. package/dist/lib/constants.d.ts +1 -5
  31. package/dist/lib/constants.d.ts.map +1 -1
  32. package/dist/lib/constants.js +19 -15
  33. package/dist/lib/constants.js.map +1 -1
  34. package/dist/lib/errors.d.ts +0 -2
  35. package/dist/lib/errors.d.ts.map +1 -1
  36. package/dist/lib/errors.js +2 -30
  37. package/dist/lib/errors.js.map +1 -1
  38. package/dist/lib/file-operations/analyze-directory.d.ts.map +1 -1
  39. package/dist/lib/file-operations/analyze-directory.js +8 -1
  40. package/dist/lib/file-operations/analyze-directory.js.map +1 -1
  41. package/dist/lib/file-operations/batch-results.d.ts +2 -1
  42. package/dist/lib/file-operations/batch-results.d.ts.map +1 -1
  43. package/dist/lib/file-operations/compute-checksums.d.ts +1 -0
  44. package/dist/lib/file-operations/compute-checksums.d.ts.map +1 -1
  45. package/dist/lib/file-operations/compute-checksums.js +58 -45
  46. package/dist/lib/file-operations/compute-checksums.js.map +1 -1
  47. package/dist/lib/file-operations/directory-tree-builders.d.ts +7 -0
  48. package/dist/lib/file-operations/directory-tree-builders.d.ts.map +1 -0
  49. package/dist/lib/file-operations/directory-tree-builders.js +58 -0
  50. package/dist/lib/file-operations/directory-tree-builders.js.map +1 -0
  51. package/dist/lib/file-operations/directory-tree-helpers.d.ts +0 -5
  52. package/dist/lib/file-operations/directory-tree-helpers.d.ts.map +1 -1
  53. package/dist/lib/file-operations/directory-tree-helpers.js +21 -71
  54. package/dist/lib/file-operations/directory-tree-helpers.js.map +1 -1
  55. package/dist/lib/file-operations/directory-tree.d.ts.map +1 -1
  56. package/dist/lib/file-operations/directory-tree.js +2 -1
  57. package/dist/lib/file-operations/directory-tree.js.map +1 -1
  58. package/dist/lib/file-operations/file-info.d.ts +3 -1
  59. package/dist/lib/file-operations/file-info.d.ts.map +1 -1
  60. package/dist/lib/file-operations/file-info.js +16 -5
  61. package/dist/lib/file-operations/file-info.js.map +1 -1
  62. package/dist/lib/file-operations/get-multiple-file-info.d.ts +1 -1
  63. package/dist/lib/file-operations/get-multiple-file-info.d.ts.map +1 -1
  64. package/dist/lib/file-operations/get-multiple-file-info.js +6 -8
  65. package/dist/lib/file-operations/get-multiple-file-info.js.map +1 -1
  66. package/dist/lib/file-operations/list-directory-entry.d.ts.map +1 -1
  67. package/dist/lib/file-operations/list-directory-entry.js +5 -2
  68. package/dist/lib/file-operations/list-directory-entry.js.map +1 -1
  69. package/dist/lib/file-operations/list-directory-helpers.d.ts +10 -1
  70. package/dist/lib/file-operations/list-directory-helpers.d.ts.map +1 -1
  71. package/dist/lib/file-operations/list-directory-helpers.js +51 -31
  72. package/dist/lib/file-operations/list-directory-helpers.js.map +1 -1
  73. package/dist/lib/file-operations/list-directory.d.ts +1 -0
  74. package/dist/lib/file-operations/list-directory.d.ts.map +1 -1
  75. package/dist/lib/file-operations/list-directory.js +13 -4
  76. package/dist/lib/file-operations/list-directory.js.map +1 -1
  77. package/dist/lib/file-operations/read-media-file.d.ts.map +1 -1
  78. package/dist/lib/file-operations/read-media-file.js +5 -1
  79. package/dist/lib/file-operations/read-media-file.js.map +1 -1
  80. package/dist/lib/file-operations/read-multiple-files.d.ts +8 -0
  81. package/dist/lib/file-operations/read-multiple-files.d.ts.map +1 -1
  82. package/dist/lib/file-operations/read-multiple-files.js +47 -18
  83. package/dist/lib/file-operations/read-multiple-files.js.map +1 -1
  84. package/dist/lib/file-operations/search/context-manager.d.ts +2 -0
  85. package/dist/lib/file-operations/search/context-manager.d.ts.map +1 -1
  86. package/dist/lib/file-operations/search/context-manager.js +22 -8
  87. package/dist/lib/file-operations/search/context-manager.js.map +1 -1
  88. package/dist/lib/file-operations/search/engine-stream.d.ts +1 -1
  89. package/dist/lib/file-operations/search/engine-stream.d.ts.map +1 -1
  90. package/dist/lib/file-operations/search/engine-stream.js +102 -9
  91. package/dist/lib/file-operations/search/engine-stream.js.map +1 -1
  92. package/dist/lib/file-operations/search/engine.d.ts.map +1 -1
  93. package/dist/lib/file-operations/search/engine.js +42 -5
  94. package/dist/lib/file-operations/search/engine.js.map +1 -1
  95. package/dist/lib/file-operations/search/file-processor.d.ts.map +1 -1
  96. package/dist/lib/file-operations/search/file-processor.js +102 -55
  97. package/dist/lib/file-operations/search/file-processor.js.map +1 -1
  98. package/dist/lib/file-operations/search/match-strategy.d.ts.map +1 -1
  99. package/dist/lib/file-operations/search/match-strategy.js +2 -1
  100. package/dist/lib/file-operations/search/match-strategy.js.map +1 -1
  101. package/dist/lib/file-operations/search/types.d.ts +3 -0
  102. package/dist/lib/file-operations/search/types.d.ts.map +1 -1
  103. package/dist/lib/file-operations/search-definitions/matchers.d.ts +12 -0
  104. package/dist/lib/file-operations/search-definitions/matchers.d.ts.map +1 -0
  105. package/dist/lib/file-operations/search-definitions/matchers.js +122 -0
  106. package/dist/lib/file-operations/search-definitions/matchers.js.map +1 -0
  107. package/dist/lib/file-operations/search-definitions/patterns.d.ts +14 -0
  108. package/dist/lib/file-operations/search-definitions/patterns.d.ts.map +1 -0
  109. package/dist/lib/file-operations/search-definitions/patterns.js +83 -0
  110. package/dist/lib/file-operations/search-definitions/patterns.js.map +1 -0
  111. package/dist/lib/file-operations/search-definitions.d.ts.map +1 -1
  112. package/dist/lib/file-operations/search-definitions.js +3 -208
  113. package/dist/lib/file-operations/search-definitions.js.map +1 -1
  114. package/dist/lib/file-operations/search-files-helpers.d.ts +2 -2
  115. package/dist/lib/file-operations/search-files-helpers.d.ts.map +1 -1
  116. package/dist/lib/file-operations/search-files-helpers.js +102 -14
  117. package/dist/lib/file-operations/search-files-helpers.js.map +1 -1
  118. package/dist/lib/file-operations/search-files-options.d.ts +4 -2
  119. package/dist/lib/file-operations/search-files-options.d.ts.map +1 -1
  120. package/dist/lib/file-operations/search-files-options.js.map +1 -1
  121. package/dist/lib/file-operations/search-files.d.ts.map +1 -1
  122. package/dist/lib/file-operations/search-files.js +7 -2
  123. package/dist/lib/file-operations/search-files.js.map +1 -1
  124. package/dist/lib/file-operations/sorting.d.ts.map +1 -1
  125. package/dist/lib/file-operations/sorting.js +39 -14
  126. package/dist/lib/file-operations/sorting.js.map +1 -1
  127. package/dist/lib/file-operations.d.ts +0 -5
  128. package/dist/lib/file-operations.d.ts.map +1 -1
  129. package/dist/lib/file-operations.js +0 -5
  130. package/dist/lib/file-operations.js.map +1 -1
  131. package/dist/lib/fs-helpers/abort.d.ts +3 -0
  132. package/dist/lib/fs-helpers/abort.d.ts.map +1 -0
  133. package/dist/lib/fs-helpers/abort.js +15 -0
  134. package/dist/lib/fs-helpers/abort.js.map +1 -0
  135. package/dist/lib/fs-helpers/concurrency.d.ts +1 -1
  136. package/dist/lib/fs-helpers/concurrency.d.ts.map +1 -1
  137. package/dist/lib/fs-helpers/concurrency.js +54 -6
  138. package/dist/lib/fs-helpers/concurrency.js.map +1 -1
  139. package/dist/lib/fs-helpers/readers/head-file.d.ts +1 -1
  140. package/dist/lib/fs-helpers/readers/head-file.d.ts.map +1 -1
  141. package/dist/lib/fs-helpers/readers/head-file.js +7 -4
  142. package/dist/lib/fs-helpers/readers/head-file.js.map +1 -1
  143. package/dist/lib/fs-helpers/readers/line-range.d.ts +1 -1
  144. package/dist/lib/fs-helpers/readers/line-range.d.ts.map +1 -1
  145. package/dist/lib/fs-helpers/readers/line-range.js +17 -3
  146. package/dist/lib/fs-helpers/readers/line-range.js.map +1 -1
  147. package/dist/lib/fs-helpers/readers/read-buffer.d.ts +2 -0
  148. package/dist/lib/fs-helpers/readers/read-buffer.d.ts.map +1 -0
  149. package/dist/lib/fs-helpers/readers/read-buffer.js +64 -0
  150. package/dist/lib/fs-helpers/readers/read-buffer.js.map +1 -0
  151. package/dist/lib/fs-helpers/readers/read-file-content.d.ts +11 -1
  152. package/dist/lib/fs-helpers/readers/read-file-content.d.ts.map +1 -1
  153. package/dist/lib/fs-helpers/readers/read-file-content.js +33 -9
  154. package/dist/lib/fs-helpers/readers/read-file-content.js.map +1 -1
  155. package/dist/lib/fs-helpers/readers/read-file.d.ts +11 -0
  156. package/dist/lib/fs-helpers/readers/read-file.d.ts.map +1 -1
  157. package/dist/lib/fs-helpers/readers/read-file.js +52 -15
  158. package/dist/lib/fs-helpers/readers/read-file.js.map +1 -1
  159. package/dist/lib/fs-helpers/readers/tail-file.d.ts +1 -1
  160. package/dist/lib/fs-helpers/readers/tail-file.d.ts.map +1 -1
  161. package/dist/lib/fs-helpers/readers/tail-file.js +7 -4
  162. package/dist/lib/fs-helpers/readers/tail-file.js.map +1 -1
  163. package/dist/lib/fs-helpers/readers.d.ts +1 -1
  164. package/dist/lib/fs-helpers/readers.d.ts.map +1 -1
  165. package/dist/lib/fs-helpers/readers.js +1 -1
  166. package/dist/lib/fs-helpers/readers.js.map +1 -1
  167. package/dist/lib/fs-helpers.d.ts +1 -1
  168. package/dist/lib/fs-helpers.d.ts.map +1 -1
  169. package/dist/lib/fs-helpers.js +1 -1
  170. package/dist/lib/fs-helpers.js.map +1 -1
  171. package/dist/lib/path-utils.d.ts +1 -0
  172. package/dist/lib/path-utils.d.ts.map +1 -1
  173. package/dist/lib/path-utils.js +12 -0
  174. package/dist/lib/path-utils.js.map +1 -1
  175. package/dist/lib/path-validation/allowed-directories.d.ts.map +1 -1
  176. package/dist/lib/path-validation/allowed-directories.js +2 -9
  177. package/dist/lib/path-validation/allowed-directories.js.map +1 -1
  178. package/dist/lib/path-validation/errors.js +2 -2
  179. package/dist/lib/path-validation/errors.js.map +1 -1
  180. package/dist/lib/path-validation/validators.d.ts.map +1 -1
  181. package/dist/lib/path-validation/validators.js +3 -1
  182. package/dist/lib/path-validation/validators.js.map +1 -1
  183. package/dist/schemas/common.d.ts +0 -18
  184. package/dist/schemas/common.d.ts.map +1 -1
  185. package/dist/schemas/common.js +0 -10
  186. package/dist/schemas/common.js.map +1 -1
  187. package/dist/schemas/index.d.ts +2 -2
  188. package/dist/schemas/index.d.ts.map +1 -1
  189. package/dist/schemas/index.js +2 -2
  190. package/dist/schemas/index.js.map +1 -1
  191. package/dist/schemas/input-helpers.d.ts +1 -4
  192. package/dist/schemas/input-helpers.d.ts.map +1 -1
  193. package/dist/schemas/input-helpers.js +9 -33
  194. package/dist/schemas/input-helpers.js.map +1 -1
  195. package/dist/schemas/inputs/checksums.d.ts +0 -2
  196. package/dist/schemas/inputs/checksums.d.ts.map +1 -1
  197. package/dist/schemas/inputs/checksums.js +2 -7
  198. package/dist/schemas/inputs/checksums.js.map +1 -1
  199. package/dist/schemas/inputs/directory.d.ts +0 -16
  200. package/dist/schemas/inputs/directory.d.ts.map +1 -1
  201. package/dist/schemas/inputs/directory.js +2 -44
  202. package/dist/schemas/inputs/directory.js.map +1 -1
  203. package/dist/schemas/inputs/read.d.ts +0 -4
  204. package/dist/schemas/inputs/read.d.ts.map +1 -1
  205. package/dist/schemas/inputs/read.js +0 -15
  206. package/dist/schemas/inputs/read.js.map +1 -1
  207. package/dist/schemas/inputs/search.d.ts +1 -12
  208. package/dist/schemas/inputs/search.d.ts.map +1 -1
  209. package/dist/schemas/inputs/search.js +4 -30
  210. package/dist/schemas/inputs/search.js.map +1 -1
  211. package/dist/schemas/inputs.d.ts +3 -4
  212. package/dist/schemas/inputs.d.ts.map +1 -1
  213. package/dist/schemas/inputs.js +3 -4
  214. package/dist/schemas/inputs.js.map +1 -1
  215. package/dist/schemas/output-helpers.d.ts +59 -0
  216. package/dist/schemas/output-helpers.d.ts.map +1 -1
  217. package/dist/schemas/output-helpers.js +31 -0
  218. package/dist/schemas/output-helpers.js.map +1 -1
  219. package/dist/schemas/outputs/checksums.d.ts +4 -4
  220. package/dist/schemas/outputs/checksums.d.ts.map +1 -1
  221. package/dist/schemas/outputs/checksums.js +2 -7
  222. package/dist/schemas/outputs/checksums.js.map +1 -1
  223. package/dist/schemas/outputs/directory.d.ts +68 -230
  224. package/dist/schemas/outputs/directory.d.ts.map +1 -1
  225. package/dist/schemas/outputs/directory.js +14 -32
  226. package/dist/schemas/outputs/directory.js.map +1 -1
  227. package/dist/schemas/outputs/file-info.d.ts +14 -14
  228. package/dist/schemas/outputs/file-info.d.ts.map +1 -1
  229. package/dist/schemas/outputs/file-info.js +4 -31
  230. package/dist/schemas/outputs/file-info.js.map +1 -1
  231. package/dist/schemas/outputs/read.d.ts +141 -46
  232. package/dist/schemas/outputs/read.d.ts.map +1 -1
  233. package/dist/schemas/outputs/read.js +35 -12
  234. package/dist/schemas/outputs/read.js.map +1 -1
  235. package/dist/schemas/outputs/search.d.ts +134 -124
  236. package/dist/schemas/outputs/search.d.ts.map +1 -1
  237. package/dist/schemas/outputs/search.js +33 -35
  238. package/dist/schemas/outputs/search.js.map +1 -1
  239. package/dist/schemas/outputs.d.ts +3 -4
  240. package/dist/schemas/outputs.d.ts.map +1 -1
  241. package/dist/schemas/outputs.js +3 -4
  242. package/dist/schemas/outputs.js.map +1 -1
  243. package/dist/server.d.ts.map +1 -1
  244. package/dist/server.js +4 -1
  245. package/dist/server.js.map +1 -1
  246. package/dist/tools/analyze-directory.d.ts.map +1 -1
  247. package/dist/tools/analyze-directory.js +26 -28
  248. package/dist/tools/analyze-directory.js.map +1 -1
  249. package/dist/tools/compute-checksums.d.ts.map +1 -1
  250. package/dist/tools/compute-checksums.js +13 -21
  251. package/dist/tools/compute-checksums.js.map +1 -1
  252. package/dist/tools/directory-tree.d.ts.map +1 -1
  253. package/dist/tools/directory-tree.js +11 -9
  254. package/dist/tools/directory-tree.js.map +1 -1
  255. package/dist/tools/get-file-info.d.ts.map +1 -1
  256. package/dist/tools/get-file-info.js +8 -44
  257. package/dist/tools/get-file-info.js.map +1 -1
  258. package/dist/tools/get-multiple-file-info.d.ts.map +1 -1
  259. package/dist/tools/get-multiple-file-info.js +13 -55
  260. package/dist/tools/get-multiple-file-info.js.map +1 -1
  261. package/dist/tools/index.d.ts.map +1 -1
  262. package/dist/tools/index.js +0 -10
  263. package/dist/tools/index.js.map +1 -1
  264. package/dist/tools/list-allowed-dirs.d.ts.map +1 -1
  265. package/dist/tools/list-allowed-dirs.js +37 -31
  266. package/dist/tools/list-allowed-dirs.js.map +1 -1
  267. package/dist/tools/list-directory.d.ts.map +1 -1
  268. package/dist/tools/list-directory.js +83 -83
  269. package/dist/tools/list-directory.js.map +1 -1
  270. package/dist/tools/read-file.d.ts.map +1 -1
  271. package/dist/tools/read-file.js +66 -43
  272. package/dist/tools/read-file.js.map +1 -1
  273. package/dist/tools/read-media-file.d.ts.map +1 -1
  274. package/dist/tools/read-media-file.js +8 -6
  275. package/dist/tools/read-media-file.js.map +1 -1
  276. package/dist/tools/read-multiple-files.d.ts.map +1 -1
  277. package/dist/tools/read-multiple-files.js +64 -25
  278. package/dist/tools/read-multiple-files.js.map +1 -1
  279. package/dist/tools/search-content.d.ts.map +1 -1
  280. package/dist/tools/search-content.js +14 -16
  281. package/dist/tools/search-content.js.map +1 -1
  282. package/dist/tools/search-definitions.d.ts.map +1 -1
  283. package/dist/tools/search-definitions.js +11 -8
  284. package/dist/tools/search-definitions.js.map +1 -1
  285. package/dist/tools/search-files.d.ts.map +1 -1
  286. package/dist/tools/search-files.js +61 -45
  287. package/dist/tools/search-files.js.map +1 -1
  288. package/dist/tools/shared/abort.d.ts +5 -0
  289. package/dist/tools/shared/abort.d.ts.map +1 -0
  290. package/dist/tools/shared/abort.js +41 -0
  291. package/dist/tools/shared/abort.js.map +1 -0
  292. package/dist/tools/shared/file-info.d.ts +17 -0
  293. package/dist/tools/shared/file-info.d.ts.map +1 -0
  294. package/dist/tools/shared/file-info.js +40 -0
  295. package/dist/tools/shared/file-info.js.map +1 -0
  296. package/dist/tools/shared/formatting.d.ts +5 -0
  297. package/dist/tools/shared/formatting.d.ts.map +1 -1
  298. package/dist/tools/shared/formatting.js +21 -1
  299. package/dist/tools/shared/formatting.js.map +1 -1
  300. package/dist/tools/shared/read-range.d.ts +7 -0
  301. package/dist/tools/shared/read-range.d.ts.map +1 -0
  302. package/dist/tools/shared/read-range.js +22 -0
  303. package/dist/tools/shared/read-range.js.map +1 -0
  304. package/dist/tools/shared/search-formatting.d.ts.map +1 -1
  305. package/dist/tools/shared/search-formatting.js +53 -28
  306. package/dist/tools/shared/search-formatting.js.map +1 -1
  307. package/dist/tools/tool-response.d.ts +22 -0
  308. package/dist/tools/tool-response.d.ts.map +1 -1
  309. package/dist/tools/tool-response.js +30 -0
  310. package/dist/tools/tool-response.js.map +1 -1
  311. package/package.json +2 -1
@@ -42,8 +42,47 @@ function buildResult(basePath, pattern, state, options) {
42
42
  },
43
43
  };
44
44
  }
45
+ function assertNotAborted(signal) {
46
+ if (signal?.aborted) {
47
+ throw new Error('Search aborted');
48
+ }
49
+ }
50
+ function createSearchSignal(signal, deadlineMs) {
51
+ if (!signal && !deadlineMs) {
52
+ return { signal: undefined, cleanup: () => { } };
53
+ }
54
+ const controller = new AbortController();
55
+ let timeoutId;
56
+ const onAbort = () => {
57
+ controller.abort();
58
+ };
59
+ if (signal?.aborted) {
60
+ controller.abort();
61
+ }
62
+ else if (signal) {
63
+ signal.addEventListener('abort', onAbort, { once: true });
64
+ }
65
+ if (deadlineMs) {
66
+ const delay = Math.max(0, deadlineMs - Date.now());
67
+ timeoutId = setTimeout(() => {
68
+ controller.abort();
69
+ }, delay);
70
+ }
71
+ return {
72
+ signal: controller.signal,
73
+ cleanup: () => {
74
+ if (timeoutId)
75
+ clearTimeout(timeoutId);
76
+ if (signal)
77
+ signal.removeEventListener('abort', onAbort);
78
+ },
79
+ };
80
+ }
45
81
  export async function executeSearch(basePath, searchPattern, partialOptions, signal) {
46
82
  const options = buildSearchOptions(partialOptions);
83
+ const deadlineMs = getDeadlineMs(options);
84
+ const { signal: combinedSignal, cleanup } = createSearchSignal(signal, deadlineMs);
85
+ assertNotAborted(combinedSignal);
47
86
  const validPath = await validateExistingDirectory(basePath);
48
87
  validateGlobPatternOrThrow(options.filePattern, validPath);
49
88
  const matcher = createMatcher(searchPattern, {
@@ -53,15 +92,13 @@ export async function executeSearch(basePath, searchPattern, partialOptions, sig
53
92
  basePath: validPath,
54
93
  });
55
94
  const state = createInitialState();
56
- const deadlineMs = getDeadlineMs(options);
57
95
  const stream = createStream(validPath, options);
58
96
  try {
59
- if (signal?.aborted) {
60
- throw new Error('Search aborted');
61
- }
62
- await processStream(stream, state, matcher, options, deadlineMs, searchPattern);
97
+ assertNotAborted(combinedSignal);
98
+ await processStream(stream, state, matcher, options, deadlineMs, searchPattern, combinedSignal);
63
99
  }
64
100
  finally {
101
+ cleanup();
65
102
  safeDestroy(stream);
66
103
  }
67
104
  return buildResult(validPath, searchPattern, state, options);
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/engine.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-processor.d.ts","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/file-processor.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAwJ5D,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,UAAU,CAAC,CAkBrB"}
1
+ {"version":3,"file":"file-processor.d.ts","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/file-processor.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA0M5D,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,UAAU,CAAC,CA2BrB"}
@@ -1,6 +1,5 @@
1
1
  import * as fsPromises from 'node:fs/promises';
2
- import * as readline from 'node:readline';
3
- import { MAX_LINE_CONTENT_LENGTH } from '../../constants.js';
2
+ import { MAX_LINE_CONTENT_LENGTH, MAX_SEARCH_LINE_LENGTH, } from '../../constants.js';
4
3
  import { isProbablyBinary } from '../../fs-helpers.js';
5
4
  import { validateExistingPathDetailed } from '../../path-validation.js';
6
5
  import { ContextManager } from './context-manager.js';
@@ -12,63 +11,92 @@ function createEmptyResult(overrides) {
12
11
  skippedTooLarge: false,
13
12
  skippedBinary: false,
14
13
  scanned: false,
14
+ hitMaxResults: false,
15
15
  ...overrides,
16
16
  };
17
17
  }
18
- async function resolvePath(rawPath) {
19
- try {
20
- const validated = await validateExistingPathDetailed(rawPath);
21
- return {
22
- openPath: validated.resolvedPath,
23
- displayPath: validated.requestedPath,
24
- };
18
+ function attachAbortHandler(stream, signal) {
19
+ if (!signal)
20
+ return () => { };
21
+ const onAbort = () => {
22
+ stream.destroy();
23
+ };
24
+ if (signal.aborted) {
25
+ onAbort();
25
26
  }
26
- catch {
27
- return null;
27
+ else {
28
+ signal.addEventListener('abort', onAbort, { once: true });
28
29
  }
29
- }
30
- function createReadInterface(handle) {
31
- const stream = handle.createReadStream({
32
- encoding: 'utf-8',
33
- autoClose: false,
34
- });
35
- const rl = readline.createInterface({
36
- input: stream,
37
- crlfDelay: Infinity,
38
- });
39
- return { rl, stream };
40
- }
41
- function trimLine(line) {
42
- return line.trimEnd().substring(0, MAX_LINE_CONTENT_LENGTH);
43
- }
44
- function createScanResult(matches, linesSkipped) {
45
- return {
46
- matches,
47
- linesSkippedDueToRegexTimeout: linesSkipped,
48
- fileHadMatches: matches.length > 0,
49
- skippedTooLarge: false,
50
- skippedBinary: false,
51
- scanned: true,
30
+ return () => {
31
+ signal.removeEventListener('abort', onAbort);
52
32
  };
53
33
  }
54
- function shouldStop(currentFileMatches, options) {
55
- if (options.deadlineMs && Date.now() > options.deadlineMs) {
56
- return true;
34
+ function* processChunk(text, state, maxLineLength) {
35
+ let cursor = 0;
36
+ while (cursor < text.length) {
37
+ const newlineIndex = text.indexOf('\n', cursor);
38
+ const segmentEnd = newlineIndex === -1 ? text.length : newlineIndex;
39
+ const segment = text.slice(cursor, segmentEnd);
40
+ if (!state.overflow) {
41
+ if (state.buffer.length + segment.length > maxLineLength) {
42
+ const remaining = Math.max(0, maxLineLength - state.buffer.length);
43
+ if (remaining > 0) {
44
+ state.buffer += segment.slice(0, remaining);
45
+ }
46
+ state.overflow = true;
47
+ }
48
+ else {
49
+ state.buffer += segment;
50
+ }
51
+ }
52
+ if (newlineIndex !== -1) {
53
+ yield state.buffer.replace(/\r$/, '');
54
+ state.buffer = '';
55
+ state.overflow = false;
56
+ cursor = newlineIndex + 1;
57
+ }
58
+ else {
59
+ cursor = segmentEnd;
60
+ }
61
+ }
62
+ }
63
+ async function* iterateLines(stream, maxLineLength, signal) {
64
+ const state = { buffer: '', overflow: false };
65
+ const detachAbort = attachAbortHandler(stream, signal);
66
+ const iterableStream = stream;
67
+ try {
68
+ for await (const chunk of iterableStream) {
69
+ if (signal?.aborted)
70
+ break;
71
+ const text = typeof chunk === 'string' ? chunk : chunk.toString('utf-8');
72
+ yield* processChunk(text, state, maxLineLength);
73
+ }
74
+ if (!signal?.aborted && state.buffer.length > 0) {
75
+ yield state.buffer.replace(/\r$/, '');
76
+ }
57
77
  }
58
- if (options.currentMatchCount + currentFileMatches >= options.maxResults) {
59
- return true;
78
+ finally {
79
+ detachAbort();
60
80
  }
61
- return false;
62
81
  }
63
- async function scanLines(rl, displayPath, matcher, options, contextManager) {
82
+ async function scanLines(stream, displayPath, matcher, options, contextManager) {
64
83
  const matches = [];
65
84
  let linesSkipped = 0;
66
85
  let lineNumber = 0;
67
- for await (const line of rl) {
86
+ const getCurrentMatchCount = options.getCurrentMatchCount ?? (() => options.currentMatchCount);
87
+ let hitMaxResults = false;
88
+ for await (const line of iterateLines(stream, MAX_SEARCH_LINE_LENGTH, options.signal)) {
89
+ if (options.signal?.aborted)
90
+ break;
68
91
  lineNumber++;
69
- if (shouldStop(matches.length, options))
92
+ if (options.deadlineMs && Date.now() > options.deadlineMs) {
93
+ break;
94
+ }
95
+ if (getCurrentMatchCount() + matches.length >= options.maxResults) {
96
+ hitMaxResults = true;
70
97
  break;
71
- const trimmed = trimLine(line);
98
+ }
99
+ const trimmed = line.trimEnd().substring(0, MAX_LINE_CONTENT_LENGTH);
72
100
  contextManager.pushLine(trimmed);
73
101
  const matchCount = matcher(line);
74
102
  if (matchCount < 0) {
@@ -80,17 +108,27 @@ async function scanLines(rl, displayPath, matcher, options, contextManager) {
80
108
  }
81
109
  matches.push(contextManager.createMatch(displayPath, lineNumber, trimmed, matchCount));
82
110
  }
83
- return { matches, linesSkipped };
111
+ return { matches, linesSkipped, hitMaxResults };
84
112
  }
85
113
  async function scanContent(handle, displayPath, matcher, options) {
86
114
  const contextManager = new ContextManager(options.contextLines);
87
- const { rl, stream } = createReadInterface(handle);
115
+ const stream = handle.createReadStream({
116
+ encoding: 'utf-8',
117
+ autoClose: false,
118
+ });
88
119
  try {
89
- const { matches, linesSkipped } = await scanLines(rl, displayPath, matcher, options, contextManager);
90
- return createScanResult(matches, linesSkipped);
120
+ const { matches, linesSkipped, hitMaxResults } = await scanLines(stream, displayPath, matcher, options, contextManager);
121
+ return {
122
+ matches,
123
+ linesSkippedDueToRegexTimeout: linesSkipped,
124
+ fileHadMatches: matches.length > 0,
125
+ skippedTooLarge: false,
126
+ skippedBinary: false,
127
+ scanned: true,
128
+ hitMaxResults,
129
+ };
91
130
  }
92
131
  finally {
93
- rl.close();
94
132
  stream.destroy();
95
133
  }
96
134
  }
@@ -105,16 +143,25 @@ async function scanWithHandle(handle, openPath, displayPath, matcher, options) {
105
143
  return await scanContent(handle, displayPath, matcher, options);
106
144
  }
107
145
  export async function processFile(rawPath, matcher, options) {
108
- const resolved = await resolvePath(rawPath);
109
- if (!resolved) {
110
- return createEmptyResult({ scanned: false }); // Inaccessible
146
+ if (options.signal?.aborted) {
147
+ return createEmptyResult({ scanned: true });
148
+ }
149
+ let openPath;
150
+ let displayPath;
151
+ try {
152
+ const validated = await validateExistingPathDetailed(rawPath);
153
+ openPath = validated.resolvedPath;
154
+ displayPath = validated.requestedPath;
155
+ }
156
+ catch {
157
+ return createEmptyResult({ scanned: false });
111
158
  }
112
- const handle = await fsPromises.open(resolved.openPath, 'r');
159
+ const handle = await fsPromises.open(openPath, 'r');
113
160
  try {
114
- return await scanWithHandle(handle, resolved.openPath, resolved.displayPath, matcher, options);
161
+ return await scanWithHandle(handle, openPath, displayPath, matcher, options);
115
162
  }
116
163
  finally {
117
- await handle.close().catch(() => { });
164
+ await handle.close();
118
165
  }
119
166
  }
120
167
  //# sourceMappingURL=file-processor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-processor.js","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/file-processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-processor.js","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/file-processor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"match-strategy.d.ts","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/match-strategy.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAE/C,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IACP,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAcT"}
1
+ {"version":3,"file":"match-strategy.d.ts","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/match-strategy.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAM/C,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IACP,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAcT"}
@@ -1,3 +1,4 @@
1
+ import RE2 from 're2';
1
2
  import safeRegex from 'safe-regex2';
2
3
  import { REGEX_MATCH_TIMEOUT_MS } from '../../constants.js';
3
4
  import { ErrorCode, McpError } from '../../errors.js';
@@ -99,7 +100,7 @@ function ensureSafePattern(finalPattern, originalPattern, basePath) {
99
100
  }
100
101
  function compileRegex(pattern, caseSensitive, basePath) {
101
102
  try {
102
- return new RegExp(pattern, caseSensitive ? 'g' : 'gi');
103
+ return new RE2(pattern, caseSensitive ? 'g' : 'gi');
103
104
  }
104
105
  catch (error) {
105
106
  const message = error instanceof Error ? error.message : String(error);
@@ -1 +1 @@
1
- {"version":3,"file":"match-strategy.js","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/match-strategy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"match-strategy.js","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/match-strategy.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,9 @@ export interface SearchOptions {
3
3
  maxResults: number;
4
4
  contextLines: number;
5
5
  deadlineMs?: number;
6
+ signal?: AbortSignal;
6
7
  currentMatchCount: number;
8
+ getCurrentMatchCount?: () => number;
7
9
  isLiteral?: boolean;
8
10
  searchString?: string;
9
11
  caseSensitive?: boolean;
@@ -19,6 +21,7 @@ export interface ScanResult {
19
21
  skippedTooLarge: boolean;
20
22
  skippedBinary: boolean;
21
23
  scanned: boolean;
24
+ hitMaxResults: boolean;
22
25
  }
23
26
  export interface SearchState {
24
27
  matches: ContentMatch[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,6BAA6B,EAAE,MAAM,CAAC;IACtC,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,6BAA6B,EAAE,MAAM,CAAC;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC;CAChE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,MAAM,CAAC;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,6BAA6B,EAAE,MAAM,CAAC;IACtC,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,6BAA6B,EAAE,MAAM,CAAC;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC;CAChE"}
@@ -0,0 +1,12 @@
1
+ import type { DefinitionMatch, DefinitionType } from '../../../config/types.js';
2
+ /**
3
+ * Filter and classify matches into definition results
4
+ */
5
+ export declare function processMatches(matches: {
6
+ file: string;
7
+ line: number;
8
+ content: string;
9
+ contextBefore?: string[];
10
+ contextAfter?: string[];
11
+ }[], basePath: string, searchName?: string, searchType?: DefinitionType, caseSensitive?: boolean): DefinitionMatch[];
12
+ //# sourceMappingURL=matchers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchers.d.ts","sourceRoot":"","sources":["../../../../src/lib/file-operations/search-definitions/matchers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAuJhF;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE;IACP,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,EAAE,EACH,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,cAAc,EAC3B,aAAa,CAAC,EAAE,OAAO,GACtB,eAAe,EAAE,CAenB"}
@@ -0,0 +1,122 @@
1
+ import * as pathModule from 'node:path';
2
+ const ARROW_FUNCTION_REGEX = /=\s*(?:async\s+)?(?:\([^)]*\)|[^=])\s*=>/u;
3
+ const LINE_TYPE_PATTERNS = [
4
+ [/\bclass\s+/u, 'class'],
5
+ [/\binterface\s+/u, 'interface'],
6
+ [/\btype\s+\w+\s*=/u, 'type'],
7
+ [/\benum\s+/u, 'enum'],
8
+ [/\bfunction\s+/u, 'function'],
9
+ [ARROW_FUNCTION_REGEX, 'function'],
10
+ ];
11
+ const NAME_EXTRACTORS = [
12
+ [/\bclass\s+([A-Za-z_$][A-Za-z0-9_$]*)/u, ['class']],
13
+ [/\binterface\s+([A-Za-z_$][A-Za-z0-9_$]*)/u, ['interface']],
14
+ [/\btype\s+([A-Za-z_$][A-Za-z0-9_$]*)\s*=/u, ['type']],
15
+ [/\benum\s+([A-Za-z_$][A-Za-z0-9_$]*)/u, ['enum']],
16
+ [/\bfunction\s+([A-Za-z_$][A-Za-z0-9_$]*)/u, ['function']],
17
+ [
18
+ /\b(?:const|let|var)\s+([A-Za-z_$][A-Za-z0-9_$]*)/u,
19
+ ['variable', 'function'],
20
+ ],
21
+ ];
22
+ function isArrowFunction(content) {
23
+ return ARROW_FUNCTION_REGEX.test(content);
24
+ }
25
+ function resolveEffectiveType(detectedType, searchType, content) {
26
+ if (searchType !== 'function')
27
+ return detectedType;
28
+ if (detectedType !== 'variable')
29
+ return detectedType;
30
+ return isArrowFunction(content) ? 'function' : detectedType;
31
+ }
32
+ function isNameMatch(name, searchName, caseSensitive) {
33
+ if (!searchName)
34
+ return true;
35
+ return caseSensitive
36
+ ? name === searchName
37
+ : name.toLowerCase() === searchName.toLowerCase();
38
+ }
39
+ function isTypeMatch(searchType, effectiveType) {
40
+ if (!searchType)
41
+ return true;
42
+ return effectiveType === searchType;
43
+ }
44
+ /**
45
+ * Classify a line of code to determine the definition type
46
+ */
47
+ function classifyLine(content) {
48
+ const trimmed = content.trim();
49
+ for (const [pattern, type] of LINE_TYPE_PATTERNS) {
50
+ if (pattern.test(trimmed))
51
+ return type;
52
+ }
53
+ return 'variable';
54
+ }
55
+ function getExtractorCandidates(searchType) {
56
+ if (!searchType)
57
+ return NAME_EXTRACTORS;
58
+ return NAME_EXTRACTORS.filter(([, types]) => types.includes(searchType));
59
+ }
60
+ /**
61
+ * Extract the definition name from a line of code
62
+ */
63
+ function extractName(content, searchType) {
64
+ const trimmed = content.trim();
65
+ const candidates = getExtractorCandidates(searchType);
66
+ for (const [pattern] of candidates) {
67
+ const match = pattern.exec(trimmed);
68
+ if (match?.[1])
69
+ return match[1];
70
+ }
71
+ return 'unknown';
72
+ }
73
+ /**
74
+ * Check if a definition is exported
75
+ */
76
+ function isExported(content) {
77
+ return /\bexport\b/u.test(content);
78
+ }
79
+ function resolveDefinitionMeta(content, searchName, searchType, caseSensitive = true) {
80
+ const detectedType = classifyLine(content);
81
+ const name = extractName(content, searchType);
82
+ if (name === 'unknown')
83
+ return null;
84
+ const effectiveType = resolveEffectiveType(detectedType, searchType, content);
85
+ if (!isTypeMatch(searchType, effectiveType))
86
+ return null;
87
+ if (!isNameMatch(name, searchName, caseSensitive))
88
+ return null;
89
+ return {
90
+ name,
91
+ effectiveType,
92
+ exported: isExported(content),
93
+ };
94
+ }
95
+ function buildDefinitionMatch(match, basePath, searchName, searchType, caseSensitive = true) {
96
+ const meta = resolveDefinitionMeta(match.content, searchName, searchType, caseSensitive);
97
+ if (!meta)
98
+ return null;
99
+ return {
100
+ file: pathModule.relative(basePath, match.file),
101
+ line: match.line,
102
+ definitionType: searchType ?? meta.effectiveType,
103
+ name: meta.name,
104
+ content: match.content,
105
+ contextBefore: match.contextBefore,
106
+ contextAfter: match.contextAfter,
107
+ exported: meta.exported,
108
+ };
109
+ }
110
+ /**
111
+ * Filter and classify matches into definition results
112
+ */
113
+ export function processMatches(matches, basePath, searchName, searchType, caseSensitive) {
114
+ const results = [];
115
+ for (const match of matches) {
116
+ const result = buildDefinitionMatch(match, basePath, searchName, searchType, caseSensitive ?? true);
117
+ if (result)
118
+ results.push(result);
119
+ }
120
+ return results;
121
+ }
122
+ //# sourceMappingURL=matchers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchers.js","sourceRoot":"","sources":["../../../../src/lib/file-operations/search-definitions/matchers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { SearchDefinitionsOptions } from '../../../config/types.js';
2
+ export declare function getMaxResults(options: SearchDefinitionsOptions): number;
3
+ export declare function buildCombinedPattern(options: SearchDefinitionsOptions): string;
4
+ export declare function buildSearchOptions(options: SearchDefinitionsOptions, maxResults: number): {
5
+ filePattern: string;
6
+ caseSensitive: boolean;
7
+ maxResults: number;
8
+ excludePatterns?: string[];
9
+ contextLines: number;
10
+ includeHidden: boolean;
11
+ isLiteral: false;
12
+ wholeWord: false;
13
+ };
14
+ //# sourceMappingURL=patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../../src/lib/file-operations/search-definitions/patterns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAmElC,wBAAgB,aAAa,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAEvE;AAOD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,wBAAwB,GAChC,MAAM,CAKR;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,wBAAwB,EACjC,UAAU,EAAE,MAAM,GACjB;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,KAAK,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;CAClB,CAWA"}