@j0hanz/filesystem-context-mcp 1.2.8 → 1.3.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.
- package/README.md +125 -19
- package/dist/__tests__/lib/file-operations/compute-checksums.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/compute-checksums.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/compute-checksums.test.js +59 -0
- package/dist/__tests__/lib/file-operations/compute-checksums.test.js.map +1 -0
- package/dist/__tests__/lib/file-operations/get-multiple-file-info.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/get-multiple-file-info.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/get-multiple-file-info.test.js +46 -0
- package/dist/__tests__/lib/file-operations/get-multiple-file-info.test.js.map +1 -0
- package/dist/__tests__/lib/file-operations/read-multiple-files-edge-cases.test.js +21 -0
- package/dist/__tests__/lib/file-operations/read-multiple-files-edge-cases.test.js.map +1 -1
- package/dist/__tests__/lib/file-operations/read-multiple-files.test.js +18 -0
- package/dist/__tests__/lib/file-operations/read-multiple-files.test.js.map +1 -1
- package/dist/__tests__/lib/file-operations/search-definitions.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/search-definitions.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/search-definitions.test.js +274 -0
- package/dist/__tests__/lib/file-operations/search-definitions.test.js.map +1 -0
- package/dist/__tests__/lib/file-operations/sorting.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/sorting.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/sorting.test.js +47 -0
- package/dist/__tests__/lib/file-operations/sorting.test.js.map +1 -0
- package/dist/__tests__/lib/fs-helpers/utf8.test.d.ts +2 -0
- package/dist/__tests__/lib/fs-helpers/utf8.test.d.ts.map +1 -0
- package/dist/__tests__/lib/fs-helpers/utf8.test.js +43 -0
- package/dist/__tests__/lib/fs-helpers/utf8.test.js.map +1 -0
- package/dist/__tests__/lib/path-validation-errors.test.d.ts +2 -0
- package/dist/__tests__/lib/path-validation-errors.test.d.ts.map +1 -0
- package/dist/__tests__/lib/path-validation-errors.test.js +35 -0
- package/dist/__tests__/lib/path-validation-errors.test.js.map +1 -0
- package/dist/__tests__/lib/path-validation-roots.test.d.ts +2 -0
- package/dist/__tests__/lib/path-validation-roots.test.d.ts.map +1 -0
- package/dist/__tests__/lib/path-validation-roots.test.js +42 -0
- package/dist/__tests__/lib/path-validation-roots.test.js.map +1 -0
- package/dist/__tests__/lib/path-validation.test.js +5 -0
- package/dist/__tests__/lib/path-validation.test.js.map +1 -1
- package/dist/__tests__/security/filesystem-boundary.test.js +20 -12
- package/dist/__tests__/security/filesystem-boundary.test.js.map +1 -1
- package/dist/config/types.d.ts +64 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/instructions.md +93 -28
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +17 -1
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/file-operations/analyze-directory-helpers.d.ts +24 -0
- package/dist/lib/file-operations/analyze-directory-helpers.d.ts.map +1 -0
- package/dist/lib/file-operations/analyze-directory-helpers.js +50 -0
- package/dist/lib/file-operations/analyze-directory-helpers.js.map +1 -0
- package/dist/lib/file-operations/analyze-directory.d.ts +1 -0
- package/dist/lib/file-operations/analyze-directory.d.ts.map +1 -1
- package/dist/lib/file-operations/analyze-directory.js +3 -58
- package/dist/lib/file-operations/analyze-directory.js.map +1 -1
- package/dist/lib/file-operations/batch-results.d.ts +12 -0
- package/dist/lib/file-operations/batch-results.d.ts.map +1 -0
- package/dist/lib/file-operations/batch-results.js +23 -0
- package/dist/lib/file-operations/batch-results.js.map +1 -0
- package/dist/lib/file-operations/compute-checksums.d.ts +9 -0
- package/dist/lib/file-operations/compute-checksums.d.ts.map +1 -0
- package/dist/lib/file-operations/compute-checksums.js +121 -0
- package/dist/lib/file-operations/compute-checksums.js.map +1 -0
- package/dist/lib/file-operations/directory-helpers.d.ts.map +1 -1
- package/dist/lib/file-operations/directory-helpers.js +18 -10
- package/dist/lib/file-operations/directory-helpers.js.map +1 -1
- package/dist/lib/file-operations/directory-tree-helpers.d.ts.map +1 -1
- package/dist/lib/file-operations/directory-tree-helpers.js +8 -1
- package/dist/lib/file-operations/directory-tree-helpers.js.map +1 -1
- package/dist/lib/file-operations/directory-tree.d.ts +1 -0
- package/dist/lib/file-operations/directory-tree.d.ts.map +1 -1
- package/dist/lib/file-operations/directory-tree.js +3 -9
- package/dist/lib/file-operations/directory-tree.js.map +1 -1
- package/dist/lib/file-operations/get-multiple-file-info.d.ts +7 -0
- package/dist/lib/file-operations/get-multiple-file-info.d.ts.map +1 -0
- package/dist/lib/file-operations/get-multiple-file-info.js +59 -0
- package/dist/lib/file-operations/get-multiple-file-info.js.map +1 -0
- package/dist/lib/file-operations/list-directory-entry.d.ts +18 -0
- package/dist/lib/file-operations/list-directory-entry.d.ts.map +1 -0
- package/dist/lib/file-operations/list-directory-entry.js +90 -0
- package/dist/lib/file-operations/list-directory-entry.js.map +1 -0
- package/dist/lib/file-operations/list-directory-helpers.d.ts +2 -0
- package/dist/lib/file-operations/list-directory-helpers.d.ts.map +1 -1
- package/dist/lib/file-operations/list-directory-helpers.js +84 -103
- package/dist/lib/file-operations/list-directory-helpers.js.map +1 -1
- package/dist/lib/file-operations/list-directory.d.ts +2 -0
- package/dist/lib/file-operations/list-directory.d.ts.map +1 -1
- package/dist/lib/file-operations/list-directory.js +5 -8
- package/dist/lib/file-operations/list-directory.js.map +1 -1
- package/dist/lib/file-operations/read-multiple-files.d.ts +2 -0
- package/dist/lib/file-operations/read-multiple-files.d.ts.map +1 -1
- package/dist/lib/file-operations/read-multiple-files.js +44 -11
- package/dist/lib/file-operations/read-multiple-files.js.map +1 -1
- package/dist/lib/file-operations/search/engine-options.d.ts.map +1 -1
- package/dist/lib/file-operations/search/engine-options.js +1 -8
- package/dist/lib/file-operations/search/engine-options.js.map +1 -1
- package/dist/lib/file-operations/search/engine.d.ts +1 -1
- package/dist/lib/file-operations/search/engine.d.ts.map +1 -1
- package/dist/lib/file-operations/search/engine.js +4 -1
- package/dist/lib/file-operations/search/engine.js.map +1 -1
- package/dist/lib/file-operations/search-content.d.ts +1 -0
- package/dist/lib/file-operations/search-content.d.ts.map +1 -1
- package/dist/lib/file-operations/search-content.js +1 -1
- package/dist/lib/file-operations/search-content.js.map +1 -1
- package/dist/lib/file-operations/search-definitions.d.ts +6 -0
- package/dist/lib/file-operations/search-definitions.d.ts.map +1 -0
- package/dist/lib/file-operations/search-definitions.js +247 -0
- package/dist/lib/file-operations/search-definitions.js.map +1 -0
- package/dist/lib/file-operations/search-files-helpers.d.ts +2 -24
- package/dist/lib/file-operations/search-files-helpers.d.ts.map +1 -1
- package/dist/lib/file-operations/search-files-helpers.js +3 -39
- package/dist/lib/file-operations/search-files-helpers.js.map +1 -1
- package/dist/lib/file-operations/search-files-options.d.ts +31 -0
- package/dist/lib/file-operations/search-files-options.d.ts.map +1 -0
- package/dist/lib/file-operations/search-files-options.js +33 -0
- package/dist/lib/file-operations/search-files-options.js.map +1 -0
- package/dist/lib/file-operations/search-files.d.ts +1 -1
- package/dist/lib/file-operations/search-files.d.ts.map +1 -1
- package/dist/lib/file-operations/search-files.js +3 -2
- package/dist/lib/file-operations/search-files.js.map +1 -1
- package/dist/lib/file-operations.d.ts +3 -0
- package/dist/lib/file-operations.d.ts.map +1 -1
- package/dist/lib/file-operations.js +3 -0
- package/dist/lib/file-operations.js.map +1 -1
- package/dist/lib/fs-helpers/binary-detect.d.ts.map +1 -1
- package/dist/lib/fs-helpers/binary-detect.js +13 -16
- package/dist/lib/fs-helpers/binary-detect.js.map +1 -1
- package/dist/lib/fs-helpers/readers/read-file-content.d.ts +29 -0
- package/dist/lib/fs-helpers/readers/read-file-content.d.ts.map +1 -0
- package/dist/lib/fs-helpers/readers/read-file-content.js +25 -0
- package/dist/lib/fs-helpers/readers/read-file-content.js.map +1 -0
- package/dist/lib/fs-helpers/readers/read-file.d.ts +1 -0
- package/dist/lib/fs-helpers/readers/read-file.d.ts.map +1 -1
- package/dist/lib/fs-helpers/readers/read-file.js +29 -29
- package/dist/lib/fs-helpers/readers/read-file.js.map +1 -1
- package/dist/lib/merge-defined.d.ts +2 -0
- package/dist/lib/merge-defined.d.ts.map +1 -0
- package/dist/lib/merge-defined.js +8 -0
- package/dist/lib/merge-defined.js.map +1 -0
- package/dist/lib/path-validation/validators.d.ts.map +1 -1
- package/dist/lib/path-validation/validators.js +8 -0
- package/dist/lib/path-validation/validators.js.map +1 -1
- package/dist/schemas/common.d.ts +2 -2
- package/dist/schemas/index.d.ts +2 -2
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +2 -2
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/inputs/checksums.d.ts +10 -0
- package/dist/schemas/inputs/checksums.d.ts.map +1 -0
- package/dist/schemas/inputs/checksums.js +30 -0
- package/dist/schemas/inputs/checksums.js.map +1 -0
- package/dist/schemas/inputs/directory.d.ts +29 -0
- package/dist/schemas/inputs/directory.d.ts.map +1 -0
- package/dist/schemas/inputs/directory.js +75 -0
- package/dist/schemas/inputs/directory.js.map +1 -0
- package/dist/schemas/inputs/file-info.d.ts +9 -0
- package/dist/schemas/inputs/file-info.d.ts.map +1 -0
- package/dist/schemas/inputs/file-info.js +20 -0
- package/dist/schemas/inputs/file-info.js.map +1 -0
- package/dist/schemas/inputs/read.d.ts +26 -0
- package/dist/schemas/inputs/read.d.ts.map +1 -0
- package/dist/schemas/inputs/read.js +54 -0
- package/dist/schemas/inputs/read.js.map +1 -0
- package/dist/schemas/inputs/search.d.ts +44 -0
- package/dist/schemas/inputs/search.d.ts.map +1 -0
- package/dist/schemas/inputs/search.js +115 -0
- package/dist/schemas/inputs/search.js.map +1 -0
- package/dist/schemas/inputs.d.ts +5 -80
- package/dist/schemas/inputs.d.ts.map +1 -1
- package/dist/schemas/inputs.js +5 -195
- package/dist/schemas/inputs.js.map +1 -1
- package/dist/schemas/outputs/checksums.d.ts +93 -0
- package/dist/schemas/outputs/checksums.d.ts.map +1 -0
- package/dist/schemas/outputs/checksums.js +23 -0
- package/dist/schemas/outputs/checksums.js.map +1 -0
- package/dist/schemas/outputs/directory.d.ts +419 -0
- package/dist/schemas/outputs/directory.d.ts.map +1 -0
- package/dist/schemas/outputs/directory.js +81 -0
- package/dist/schemas/outputs/directory.js.map +1 -0
- package/dist/schemas/outputs/file-info.d.ts +270 -0
- package/dist/schemas/outputs/file-info.d.ts.map +1 -0
- package/dist/schemas/outputs/file-info.js +57 -0
- package/dist/schemas/outputs/file-info.js.map +1 -0
- package/dist/schemas/outputs/read.d.ts +187 -0
- package/dist/schemas/outputs/read.d.ts.map +1 -0
- package/dist/schemas/outputs/read.js +39 -0
- package/dist/schemas/outputs/read.js.map +1 -0
- package/dist/schemas/outputs/search.d.ts +360 -0
- package/dist/schemas/outputs/search.d.ts.map +1 -0
- package/dist/schemas/outputs/search.js +98 -0
- package/dist/schemas/outputs/search.js.map +1 -0
- package/dist/schemas/outputs.d.ts +5 -933
- package/dist/schemas/outputs.d.ts.map +1 -1
- package/dist/schemas/outputs.js +5 -190
- package/dist/schemas/outputs.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +24 -14
- package/dist/server.js.map +1 -1
- package/dist/tools/analyze-directory.d.ts.map +1 -1
- package/dist/tools/analyze-directory.js +2 -2
- package/dist/tools/analyze-directory.js.map +1 -1
- package/dist/tools/compute-checksums.d.ts +3 -0
- package/dist/tools/compute-checksums.d.ts.map +1 -0
- package/dist/tools/compute-checksums.js +77 -0
- package/dist/tools/compute-checksums.js.map +1 -0
- package/dist/tools/directory-tree.d.ts.map +1 -1
- package/dist/tools/directory-tree.js +6 -2
- package/dist/tools/directory-tree.js.map +1 -1
- package/dist/tools/get-multiple-file-info.d.ts +3 -0
- package/dist/tools/get-multiple-file-info.d.ts.map +1 -0
- package/dist/tools/get-multiple-file-info.js +95 -0
- package/dist/tools/get-multiple-file-info.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +6 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list-allowed-dirs.d.ts.map +1 -1
- package/dist/tools/list-allowed-dirs.js +14 -3
- package/dist/tools/list-allowed-dirs.js.map +1 -1
- package/dist/tools/list-directory.d.ts.map +1 -1
- package/dist/tools/list-directory.js +12 -4
- package/dist/tools/list-directory.js.map +1 -1
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +8 -0
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/read-multiple-files.d.ts.map +1 -1
- package/dist/tools/read-multiple-files.js +10 -2
- package/dist/tools/read-multiple-files.js.map +1 -1
- package/dist/tools/search-definitions.d.ts +3 -0
- package/dist/tools/search-definitions.d.ts.map +1 -0
- package/dist/tools/search-definitions.js +130 -0
- package/dist/tools/search-definitions.js.map +1 -0
- package/dist/tools/search-files.d.ts.map +1 -1
- package/dist/tools/search-files.js +9 -4
- package/dist/tools/search-files.js.map +1 -1
- package/dist/tools/shared/search-formatting.d.ts.map +1 -1
- package/dist/tools/shared/search-formatting.js +4 -1
- package/dist/tools/shared/search-formatting.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -37,11 +37,14 @@ A secure, read-only MCP server for filesystem scanning, searching, and analysis
|
|
|
37
37
|
| Explore project structure | `list_directory` |
|
|
38
38
|
| Find specific file types | `search_files` |
|
|
39
39
|
| Search for code patterns/text | `search_content` |
|
|
40
|
+
| Find code definitions | `search_definitions` |
|
|
40
41
|
| Understand codebase statistics | `analyze_directory` |
|
|
41
42
|
| Get AI-friendly project overview | `directory_tree` |
|
|
42
43
|
| Read source code | `read_file` |
|
|
43
44
|
| Batch read multiple files | `read_multiple_files` |
|
|
44
45
|
| Get file metadata (size, dates) | `get_file_info` |
|
|
46
|
+
| Batch get file metadata | `get_multiple_file_info` |
|
|
47
|
+
| Compute file checksums/hashes | `compute_checksums` |
|
|
45
48
|
| Read images or binary files | `read_media_file` |
|
|
46
49
|
| Check available directories | `list_allowed_directories` |
|
|
47
50
|
|
|
@@ -193,15 +196,17 @@ List all directories that this server is allowed to access.
|
|
|
193
196
|
|
|
194
197
|
List contents of a directory with optional recursive listing.
|
|
195
198
|
|
|
196
|
-
| Parameter | Type
|
|
197
|
-
| ----------------------- |
|
|
198
|
-
| `path` | string
|
|
199
|
-
| `recursive` | boolean
|
|
200
|
-
| `includeHidden` | boolean
|
|
201
|
-
| `
|
|
202
|
-
| `
|
|
203
|
-
| `
|
|
204
|
-
| `
|
|
199
|
+
| Parameter | Type | Required | Default | Description |
|
|
200
|
+
| ----------------------- | -------- | -------- | ------- | ------------------------------------------- |
|
|
201
|
+
| `path` | string | ? | - | Directory path to list |
|
|
202
|
+
| `recursive` | boolean | ? | `false` | List recursively |
|
|
203
|
+
| `includeHidden` | boolean | ? | `false` | Include hidden files |
|
|
204
|
+
| `excludePatterns` | string[] | ? | `[]` | Patterns to exclude |
|
|
205
|
+
| `pattern` | string | ? | - | Glob pattern to include |
|
|
206
|
+
| `maxDepth` | number | ? | `10` | Maximum depth for recursive listing (0-100) |
|
|
207
|
+
| `maxEntries` | number | ? | `10000` | Maximum entries to return (1-100,000) |
|
|
208
|
+
| `sortBy` | string | ? | `name` | Sort by: `name`, `size`, `modified`, `type` |
|
|
209
|
+
| `includeSymlinkTargets` | boolean | ? | `false` | Include symlink target paths |
|
|
205
210
|
|
|
206
211
|
**Returns:** List of entries with name, type, size, and modified date.
|
|
207
212
|
|
|
@@ -209,7 +214,7 @@ List contents of a directory with optional recursive listing.
|
|
|
209
214
|
|
|
210
215
|
### `search_files`
|
|
211
216
|
|
|
212
|
-
Search for files using glob patterns.
|
|
217
|
+
Search for files (not directories) using glob patterns.
|
|
213
218
|
|
|
214
219
|
| Parameter | Type | Required | Default | Description |
|
|
215
220
|
| ----------------- | -------- | -------- | ------- | --------------------------------------------- |
|
|
@@ -240,15 +245,16 @@ Search for files using glob patterns.
|
|
|
240
245
|
|
|
241
246
|
Read the contents of a text file.
|
|
242
247
|
|
|
243
|
-
| Parameter
|
|
244
|
-
|
|
|
245
|
-
| `path`
|
|
246
|
-
| `encoding`
|
|
247
|
-
| `maxSize`
|
|
248
|
-
| `
|
|
249
|
-
| `
|
|
250
|
-
| `
|
|
251
|
-
| `
|
|
248
|
+
| Parameter | Type | Required | Default | Description |
|
|
249
|
+
| ------------ | ------- | -------- | ------- | ---------------------------------------------------------- |
|
|
250
|
+
| `path` | string | ? | - | File path to read |
|
|
251
|
+
| `encoding` | string | ? | `utf-8` | File encoding (`utf-8`, `ascii`, `base64`, etc.) |
|
|
252
|
+
| `maxSize` | number | ? | 10MB | Maximum file size in bytes |
|
|
253
|
+
| `skipBinary` | boolean | ? | `false` | Reject binary files (use `read_media_file` instead) |
|
|
254
|
+
| `lineStart` | number | ? | - | Start line (1-indexed, min 1) for reading a range |
|
|
255
|
+
| `lineEnd` | number | ? | - | End line (1-indexed, inclusive, min 1) for reading a range |
|
|
256
|
+
| `head` | number | ? | - | Read only first N lines |
|
|
257
|
+
| `tail` | number | ? | - | Read only last N lines |
|
|
252
258
|
|
|
253
259
|
> **Note:** Cannot specify both `head` and `tail` simultaneously. Use `lineStart`/`lineEnd` for range reading.
|
|
254
260
|
|
|
@@ -260,6 +266,55 @@ Read the contents of a text file.
|
|
|
260
266
|
|
|
261
267
|
Read multiple files in parallel for efficient batch operations.
|
|
262
268
|
|
|
269
|
+
| Parameter | Type | Required | Default | Description |
|
|
270
|
+
| -------------- | -------- | -------- | ------- | ------------------------------------------ |
|
|
271
|
+
| `paths` | string[] | ✅ | - | Array of file paths to read (max 100) |
|
|
272
|
+
| `encoding` | string | ❌ | `utf-8` | File encoding |
|
|
273
|
+
| `maxSize` | number | ❌ | 10MB | Maximum size per file in bytes |
|
|
274
|
+
| `maxTotalSize` | number | ❌ | 100MB | Maximum total size for all files combined |
|
|
275
|
+
| `head` | number | ❌ | - | Read only first N lines of each file |
|
|
276
|
+
| `tail` | number | ❌ | - | Read only last N lines of each file |
|
|
277
|
+
| `lineStart` | number | ❌ | - | Start line (1-indexed) for reading a range |
|
|
278
|
+
| `lineEnd` | number | ❌ | - | End line (inclusive) for reading a range |
|
|
279
|
+
|
|
280
|
+
**Returns:** Array of file contents with individual success/error status.
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
### `get_multiple_file_info`
|
|
285
|
+
|
|
286
|
+
Get metadata for multiple files/directories in parallel.
|
|
287
|
+
|
|
288
|
+
| Parameter | Type | Required | Default | Description |
|
|
289
|
+
| ----------------- | -------- | -------- | ------- | --------------------------------- |
|
|
290
|
+
| `paths` | string[] | ✅ | - | Array of paths to query (max 100) |
|
|
291
|
+
| `includeMimeType` | boolean | ❌ | `true` | Include MIME type detection |
|
|
292
|
+
|
|
293
|
+
**Returns:** Array of file info (name, path, type, size, timestamps, permissions, mimeType) with individual success/error status, plus summary.
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
### `compute_checksums`
|
|
298
|
+
|
|
299
|
+
Compute cryptographic checksums for files using memory-efficient streaming.
|
|
300
|
+
|
|
301
|
+
| Parameter | Type | Required | Default | Description |
|
|
302
|
+
| ------------- | -------- | -------- | -------- | ------------------------------------------------- |
|
|
303
|
+
| `paths` | string[] | ✅ | - | Array of file paths (max 50) |
|
|
304
|
+
| `algorithm` | string | ❌ | `sha256` | Hash algorithm: `md5`, `sha1`, `sha256`, `sha512` |
|
|
305
|
+
| `encoding` | string | ❌ | `hex` | Output encoding: `hex` or `base64` |
|
|
306
|
+
| `maxFileSize` | number | ❌ | 100MB | Skip files larger than this |
|
|
307
|
+
|
|
308
|
+
**Returns:** Array of checksums with file sizes, plus summary (total, succeeded, failed).
|
|
309
|
+
|
|
310
|
+
**Use cases:**
|
|
311
|
+
|
|
312
|
+
- Verify file integrity after transfers
|
|
313
|
+
- Detect duplicate files by comparing hashes
|
|
314
|
+
- Generate checksums for release artifacts
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
263
318
|
| Parameter | Type | Required | Default | Description |
|
|
264
319
|
| -------------- | -------- | -------- | ------- | ----------------------------------------- |
|
|
265
320
|
| `paths` | string[] | ✅ | - | Array of file paths (max 100) |
|
|
@@ -323,6 +378,55 @@ Search for text content within files using regular expressions.
|
|
|
323
378
|
|
|
324
379
|
---
|
|
325
380
|
|
|
381
|
+
### `search_definitions`
|
|
382
|
+
|
|
383
|
+
Find code definitions (classes, functions, interfaces, types, enums, variables) in TypeScript/JavaScript files without manual regex construction.
|
|
384
|
+
|
|
385
|
+
| Parameter | Type | Required | Default | Description |
|
|
386
|
+
| ----------------- | -------- | -------- | ------- | ------------------------------------------------------------------------------------- |
|
|
387
|
+
| `path` | string | ❌ | - | Base directory to search in |
|
|
388
|
+
| `name` | string | ❌ | - | Definition name to search for |
|
|
389
|
+
| `type` | string | ❌ | - | Definition type to find: `class`, `function`, `interface`, `type`, `enum`, `variable` |
|
|
390
|
+
| `caseSensitive` | boolean | ❌ | `true` | Case-sensitive name matching |
|
|
391
|
+
| `maxResults` | number | ❌ | `100` | Maximum number of results (1-10,000) |
|
|
392
|
+
| `excludePatterns` | string[] | ❌ | `[]` | Glob patterns to exclude |
|
|
393
|
+
| `includeHidden` | boolean | ❌ | `false` | Include hidden files and directories |
|
|
394
|
+
| `contextLines` | number | ❌ | `0` | Lines of context before/after match (0-10) |
|
|
395
|
+
|
|
396
|
+
**Returns:** List of definitions with name, type (class/function/interface/type/enum/variable), file path, line number, exported status, and code preview.
|
|
397
|
+
|
|
398
|
+
**Use cases:**
|
|
399
|
+
|
|
400
|
+
- **Find by name:** Search for a specific definition like `UserService`
|
|
401
|
+
- **Discovery mode:** Find all definitions of a type (e.g., all interfaces)
|
|
402
|
+
- **Combined:** Find definitions matching a name pattern and type
|
|
403
|
+
|
|
404
|
+
**Examples:**
|
|
405
|
+
|
|
406
|
+
```json
|
|
407
|
+
{
|
|
408
|
+
"path": "/project/src",
|
|
409
|
+
"name": "UserService"
|
|
410
|
+
}
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
```json
|
|
414
|
+
{
|
|
415
|
+
"path": "/project/src",
|
|
416
|
+
"type": "interface"
|
|
417
|
+
}
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
```json
|
|
421
|
+
{
|
|
422
|
+
"path": "/project/src",
|
|
423
|
+
"name": "Handler",
|
|
424
|
+
"type": "class"
|
|
425
|
+
}
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
---
|
|
429
|
+
|
|
326
430
|
### `analyze_directory`
|
|
327
431
|
|
|
328
432
|
Analyze a directory structure and return statistics.
|
|
@@ -580,6 +684,7 @@ src/
|
|
|
580
684
|
│ │ ├── read-media-file.ts
|
|
581
685
|
│ │ ├── read-multiple-files.ts
|
|
582
686
|
│ │ ├── search-content.ts
|
|
687
|
+
│ │ ├── search-definitions.ts
|
|
583
688
|
│ │ ├── search-files.ts
|
|
584
689
|
│ │ └── sorting.ts
|
|
585
690
|
│ ├── fs-helpers/ # Low-level filesystem helpers
|
|
@@ -615,6 +720,7 @@ src/
|
|
|
615
720
|
│ ├── read-media-file.ts
|
|
616
721
|
│ ├── read-multiple-files.ts
|
|
617
722
|
│ ├── search-content.ts
|
|
723
|
+
│ ├── search-definitions.ts
|
|
618
724
|
│ ├── search-files.ts
|
|
619
725
|
│ ├── tool-response.ts # Tool response formatting
|
|
620
726
|
│ └── index.ts # Tool registration
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compute-checksums.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/lib/file-operations/compute-checksums.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import * as fs from 'node:fs/promises';
|
|
2
|
+
import * as os from 'node:os';
|
|
3
|
+
import * as path from 'node:path';
|
|
4
|
+
import { afterAll, beforeAll, expect, it } from 'vitest';
|
|
5
|
+
import { computeChecksums } from '../../../lib/file-operations.js';
|
|
6
|
+
import { setAllowedDirectoriesResolved } from '../../../lib/path-validation.js';
|
|
7
|
+
let tempDir;
|
|
8
|
+
let testFile1;
|
|
9
|
+
let testFile2;
|
|
10
|
+
beforeAll(async () => {
|
|
11
|
+
tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'checksum-test-'));
|
|
12
|
+
testFile1 = path.join(tempDir, 'file1.txt');
|
|
13
|
+
testFile2 = path.join(tempDir, 'file2.txt');
|
|
14
|
+
await fs.writeFile(testFile1, 'Hello World');
|
|
15
|
+
await fs.writeFile(testFile2, 'Hello World'); // Same content
|
|
16
|
+
await setAllowedDirectoriesResolved([tempDir]);
|
|
17
|
+
});
|
|
18
|
+
afterAll(async () => {
|
|
19
|
+
await fs.rm(tempDir, { recursive: true, force: true });
|
|
20
|
+
});
|
|
21
|
+
it('should compute SHA-256 checksums by default', async () => {
|
|
22
|
+
const result = await computeChecksums([testFile1]);
|
|
23
|
+
expect(result.summary.total).toBe(1);
|
|
24
|
+
expect(result.summary.succeeded).toBe(1);
|
|
25
|
+
expect(result.results[0]?.checksum).toBeDefined();
|
|
26
|
+
expect(result.results[0]?.algorithm).toBe('sha256');
|
|
27
|
+
expect(result.results[0]?.checksum).toHaveLength(64); // SHA-256 hex is 64 chars
|
|
28
|
+
});
|
|
29
|
+
it('should detect identical content with same checksum', async () => {
|
|
30
|
+
const result = await computeChecksums([testFile1, testFile2]);
|
|
31
|
+
expect(result.summary.succeeded).toBe(2);
|
|
32
|
+
expect(result.results[0]?.checksum).toBe(result.results[1]?.checksum);
|
|
33
|
+
});
|
|
34
|
+
it('should support different algorithms', async () => {
|
|
35
|
+
const md5Result = await computeChecksums([testFile1], { algorithm: 'md5' });
|
|
36
|
+
const sha512Result = await computeChecksums([testFile1], {
|
|
37
|
+
algorithm: 'sha512',
|
|
38
|
+
});
|
|
39
|
+
expect(md5Result.results[0]?.checksum).toHaveLength(32); // MD5 hex
|
|
40
|
+
expect(sha512Result.results[0]?.checksum).toHaveLength(128); // SHA-512 hex
|
|
41
|
+
});
|
|
42
|
+
it('should support base64 encoding', async () => {
|
|
43
|
+
const result = await computeChecksums([testFile1], { encoding: 'base64' });
|
|
44
|
+
expect(result.results[0]?.checksum).toMatch(/^[A-Za-z0-9+/=]+$/);
|
|
45
|
+
});
|
|
46
|
+
it('should handle non-existent files gracefully', async () => {
|
|
47
|
+
const nonExistent = path.join(tempDir, 'nonexistent.txt');
|
|
48
|
+
const result = await computeChecksums([testFile1, nonExistent]);
|
|
49
|
+
expect(result.summary.succeeded).toBe(1);
|
|
50
|
+
expect(result.summary.failed).toBe(1);
|
|
51
|
+
const errorResult = result.results.find((r) => r.path === nonExistent);
|
|
52
|
+
expect(errorResult?.error).toBeDefined();
|
|
53
|
+
});
|
|
54
|
+
it('should return empty result for empty array', async () => {
|
|
55
|
+
const result = await computeChecksums([]);
|
|
56
|
+
expect(result.summary.total).toBe(0);
|
|
57
|
+
expect(result.results).toHaveLength(0);
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=compute-checksums.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compute-checksums.test.js","sourceRoot":"","sources":["../../../../src/__tests__/lib/file-operations/compute-checksums.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-multiple-file-info.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/lib/file-operations/get-multiple-file-info.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as fs from 'node:fs/promises';
|
|
2
|
+
import * as os from 'node:os';
|
|
3
|
+
import * as path from 'node:path';
|
|
4
|
+
import { afterAll, beforeAll, expect, it } from 'vitest';
|
|
5
|
+
import { getMultipleFileInfo } from '../../../lib/file-operations.js';
|
|
6
|
+
import { setAllowedDirectoriesResolved } from '../../../lib/path-validation.js';
|
|
7
|
+
let tempDir;
|
|
8
|
+
let testFile1;
|
|
9
|
+
let testFile2;
|
|
10
|
+
beforeAll(async () => {
|
|
11
|
+
tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'mfi-test-'));
|
|
12
|
+
testFile1 = path.join(tempDir, 'file1.txt');
|
|
13
|
+
testFile2 = path.join(tempDir, 'file2.json');
|
|
14
|
+
await fs.writeFile(testFile1, 'Hello World');
|
|
15
|
+
await fs.writeFile(testFile2, '{"key": "value"}');
|
|
16
|
+
await setAllowedDirectoriesResolved([tempDir]);
|
|
17
|
+
});
|
|
18
|
+
afterAll(async () => {
|
|
19
|
+
await fs.rm(tempDir, { recursive: true, force: true });
|
|
20
|
+
});
|
|
21
|
+
it('should return info for multiple files', async () => {
|
|
22
|
+
const result = await getMultipleFileInfo([testFile1, testFile2]);
|
|
23
|
+
expect(result.summary.total).toBe(2);
|
|
24
|
+
expect(result.summary.succeeded).toBe(2);
|
|
25
|
+
expect(result.summary.failed).toBe(0);
|
|
26
|
+
expect(result.results).toHaveLength(2);
|
|
27
|
+
const info1 = result.results.find((r) => r.path === testFile1)?.info;
|
|
28
|
+
expect(info1).toBeDefined();
|
|
29
|
+
expect(info1?.name).toBe('file1.txt');
|
|
30
|
+
expect(info1?.type).toBe('file');
|
|
31
|
+
});
|
|
32
|
+
it('should handle non-existent files gracefully', async () => {
|
|
33
|
+
const nonExistent = path.join(tempDir, 'nonexistent.txt');
|
|
34
|
+
const result = await getMultipleFileInfo([testFile1, nonExistent]);
|
|
35
|
+
expect(result.summary.total).toBe(2);
|
|
36
|
+
expect(result.summary.succeeded).toBe(1);
|
|
37
|
+
expect(result.summary.failed).toBe(1);
|
|
38
|
+
const errorResult = result.results.find((r) => r.path === nonExistent);
|
|
39
|
+
expect(errorResult?.error).toBeDefined();
|
|
40
|
+
});
|
|
41
|
+
it('should return empty result for empty array', async () => {
|
|
42
|
+
const result = await getMultipleFileInfo([]);
|
|
43
|
+
expect(result.summary.total).toBe(0);
|
|
44
|
+
expect(result.results).toHaveLength(0);
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=get-multiple-file-info.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-multiple-file-info.test.js","sourceRoot":"","sources":["../../../../src/__tests__/lib/file-operations/get-multiple-file-info.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as fs from 'node:fs/promises';
|
|
1
2
|
import * as path from 'node:path';
|
|
2
3
|
import { expect, it } from 'vitest';
|
|
3
4
|
import { readMultipleFiles } from '../../../lib/file-operations.js';
|
|
@@ -16,4 +17,24 @@ it('readMultipleFiles handles all files failing', async () => {
|
|
|
16
17
|
expect(results.length).toBe(2);
|
|
17
18
|
expect(results.every((r) => r.error !== undefined)).toBe(true);
|
|
18
19
|
});
|
|
20
|
+
it('readMultipleFiles rejects line range with head/tail', async () => {
|
|
21
|
+
const filePath = path.join(getTestDir(), 'multiline.txt');
|
|
22
|
+
await expect(readMultipleFiles([filePath], {
|
|
23
|
+
lineStart: 1,
|
|
24
|
+
lineEnd: 2,
|
|
25
|
+
head: 1,
|
|
26
|
+
})).rejects.toThrow('Cannot specify multiple');
|
|
27
|
+
});
|
|
28
|
+
it('readMultipleFiles applies maxTotalSize per entry even with duplicates', async () => {
|
|
29
|
+
const filePath = path.join(getTestDir(), 'big-duplicate.log');
|
|
30
|
+
const largeContent = 'A'.repeat(50_000);
|
|
31
|
+
await fs.writeFile(filePath, largeContent);
|
|
32
|
+
const results = await readMultipleFiles([filePath, filePath], {
|
|
33
|
+
head: 1,
|
|
34
|
+
maxTotalSize: 10,
|
|
35
|
+
});
|
|
36
|
+
expect(results.length).toBe(2);
|
|
37
|
+
expect(results.every((r) => r.error !== undefined)).toBe(true);
|
|
38
|
+
await fs.rm(filePath).catch(() => { });
|
|
39
|
+
});
|
|
19
40
|
//# sourceMappingURL=read-multiple-files-edge-cases.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-multiple-files-edge-cases.test.js","sourceRoot":"","sources":["../../../../src/__tests__/lib/file-operations/read-multiple-files-edge-cases.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;AAEvC,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;IACrD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC5C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;IAC3D,MAAM,KAAK,GAAG;QACZ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,kBAAkB,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,kBAAkB,CAAC;KAC5C,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"read-multiple-files-edge-cases.test.js","sourceRoot":"","sources":["../../../../src/__tests__/lib/file-operations/read-multiple-files-edge-cases.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;AAEvC,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;IACrD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC5C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;IAC3D,MAAM,KAAK,GAAG;QACZ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,kBAAkB,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,kBAAkB,CAAC;KAC5C,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,eAAe,CAAC,CAAC;IAC1D,MAAM,MAAM,CACV,iBAAiB,CAAC,CAAC,QAAQ,CAAC,EAAE;QAC5B,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,CAAC;KACR,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;IACrF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,mBAAmB,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAE3C,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;QAC5D,IAAI,EAAE,CAAC;QACP,YAAY,EAAE,EAAE;KACjB,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC"}
|
|
@@ -23,6 +23,13 @@ it('readMultipleFiles handles individual file errors gracefully', async () => {
|
|
|
23
23
|
expect(results[0]?.content).toBeDefined();
|
|
24
24
|
expect(results[1]?.error).toBeDefined();
|
|
25
25
|
});
|
|
26
|
+
it('readMultipleFiles preserves requested paths for duplicates', async () => {
|
|
27
|
+
const filePath = path.join(getTestDir(), 'README.md');
|
|
28
|
+
const results = await readMultipleFiles([filePath, filePath]);
|
|
29
|
+
expect(results.length).toBe(2);
|
|
30
|
+
expect(results[0]?.path).toBe(filePath);
|
|
31
|
+
expect(results[1]?.path).toBe(filePath);
|
|
32
|
+
});
|
|
26
33
|
it('readMultipleFiles enforces total size cap for head/tail reads', async () => {
|
|
27
34
|
const big1 = path.join(getTestDir(), 'big1.log');
|
|
28
35
|
const big2 = path.join(getTestDir(), 'big2.log');
|
|
@@ -36,4 +43,15 @@ it('readMultipleFiles enforces total size cap for head/tail reads', async () =>
|
|
|
36
43
|
expect(results.every((r) => r.error !== undefined)).toBe(true);
|
|
37
44
|
await Promise.all([fs.rm(big1), fs.rm(big2)]).catch(() => { });
|
|
38
45
|
});
|
|
46
|
+
it('readMultipleFiles supports line range reads', async () => {
|
|
47
|
+
const filePath = path.join(getTestDir(), 'multiline.txt');
|
|
48
|
+
const results = await readMultipleFiles([filePath], {
|
|
49
|
+
lineStart: 2,
|
|
50
|
+
lineEnd: 4,
|
|
51
|
+
});
|
|
52
|
+
const content = results[0]?.content ?? '';
|
|
53
|
+
expect(content.split('\n')[0]).toBe('Line 2');
|
|
54
|
+
expect(content.split('\n')[2]).toBe('Line 4');
|
|
55
|
+
expect(results[0]?.truncated).toBe(true);
|
|
56
|
+
});
|
|
39
57
|
//# sourceMappingURL=read-multiple-files.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-multiple-files.test.js","sourceRoot":"","sources":["../../../../src/__tests__/lib/file-operations/read-multiple-files.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;AAEvC,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;IAClE,MAAM,KAAK,GAAG;QACZ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,WAAW,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC;KAC3C,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;IAC3E,MAAM,KAAK,GAAG;QACZ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,WAAW,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,kBAAkB,CAAC;KAC5C,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;IAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,UAAU,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,UAAU,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAEvC,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;QACpD,IAAI,EAAE,CAAC;QACP,YAAY,EAAE,EAAE;KACjB,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"read-multiple-files.test.js","sourceRoot":"","sources":["../../../../src/__tests__/lib/file-operations/read-multiple-files.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-definitions.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/lib/file-operations/search-definitions.test.ts"],"names":[],"mappings":""}
|