@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.
- package/README.md +251 -504
- package/dist/__tests__/lib/file-operations/search-content-edge-cases.test.js +1 -1
- package/dist/__tests__/lib/file-operations/search-content-edge-cases.test.js.map +1 -1
- package/dist/__tests__/lib/file-operations/search-definitions-helpers.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/search-definitions-helpers.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/search-definitions-helpers.test.js +43 -0
- package/dist/__tests__/lib/file-operations/search-definitions-helpers.test.js.map +1 -0
- package/dist/__tests__/lib/file-operations/search-definitions.fixtures.d.ts +7 -0
- package/dist/__tests__/lib/file-operations/search-definitions.fixtures.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/search-definitions.fixtures.js +113 -0
- package/dist/__tests__/lib/file-operations/search-definitions.fixtures.js.map +1 -0
- package/dist/__tests__/lib/file-operations/search-definitions.test.js +1 -112
- package/dist/__tests__/lib/file-operations/search-definitions.test.js.map +1 -1
- package/dist/__tests__/lib/file-operations/sorting.test.js +15 -40
- package/dist/__tests__/lib/file-operations/sorting.test.js.map +1 -1
- package/dist/__tests__/lib/path-validation-errors.test.js +1 -1
- package/dist/__tests__/lib/path-validation-errors.test.js.map +1 -1
- package/dist/__tests__/lib/path-validation.test.js +17 -0
- package/dist/__tests__/lib/path-validation.test.js.map +1 -1
- package/dist/config/formatting.d.ts +14 -0
- package/dist/config/formatting.d.ts.map +1 -0
- package/dist/config/formatting.js +34 -0
- package/dist/config/formatting.js.map +1 -0
- package/dist/config/types.d.ts +3 -97
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/index.js +32 -2
- package/dist/index.js.map +1 -1
- package/dist/instructions.md +151 -170
- package/dist/lib/constants.d.ts +1 -5
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +19 -15
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/errors.d.ts +0 -2
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +2 -30
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/file-operations/analyze-directory.d.ts.map +1 -1
- package/dist/lib/file-operations/analyze-directory.js +8 -1
- package/dist/lib/file-operations/analyze-directory.js.map +1 -1
- package/dist/lib/file-operations/batch-results.d.ts +2 -1
- package/dist/lib/file-operations/batch-results.d.ts.map +1 -1
- package/dist/lib/file-operations/compute-checksums.d.ts +1 -0
- package/dist/lib/file-operations/compute-checksums.d.ts.map +1 -1
- package/dist/lib/file-operations/compute-checksums.js +58 -45
- package/dist/lib/file-operations/compute-checksums.js.map +1 -1
- package/dist/lib/file-operations/directory-tree-builders.d.ts +7 -0
- package/dist/lib/file-operations/directory-tree-builders.d.ts.map +1 -0
- package/dist/lib/file-operations/directory-tree-builders.js +58 -0
- package/dist/lib/file-operations/directory-tree-builders.js.map +1 -0
- package/dist/lib/file-operations/directory-tree-helpers.d.ts +0 -5
- package/dist/lib/file-operations/directory-tree-helpers.d.ts.map +1 -1
- package/dist/lib/file-operations/directory-tree-helpers.js +21 -71
- package/dist/lib/file-operations/directory-tree-helpers.js.map +1 -1
- package/dist/lib/file-operations/directory-tree.d.ts.map +1 -1
- package/dist/lib/file-operations/directory-tree.js +2 -1
- package/dist/lib/file-operations/directory-tree.js.map +1 -1
- package/dist/lib/file-operations/file-info.d.ts +3 -1
- package/dist/lib/file-operations/file-info.d.ts.map +1 -1
- package/dist/lib/file-operations/file-info.js +16 -5
- package/dist/lib/file-operations/file-info.js.map +1 -1
- package/dist/lib/file-operations/get-multiple-file-info.d.ts +1 -1
- package/dist/lib/file-operations/get-multiple-file-info.d.ts.map +1 -1
- package/dist/lib/file-operations/get-multiple-file-info.js +6 -8
- package/dist/lib/file-operations/get-multiple-file-info.js.map +1 -1
- package/dist/lib/file-operations/list-directory-entry.d.ts.map +1 -1
- package/dist/lib/file-operations/list-directory-entry.js +5 -2
- package/dist/lib/file-operations/list-directory-entry.js.map +1 -1
- package/dist/lib/file-operations/list-directory-helpers.d.ts +10 -1
- package/dist/lib/file-operations/list-directory-helpers.d.ts.map +1 -1
- package/dist/lib/file-operations/list-directory-helpers.js +51 -31
- package/dist/lib/file-operations/list-directory-helpers.js.map +1 -1
- package/dist/lib/file-operations/list-directory.d.ts +1 -0
- package/dist/lib/file-operations/list-directory.d.ts.map +1 -1
- package/dist/lib/file-operations/list-directory.js +13 -4
- package/dist/lib/file-operations/list-directory.js.map +1 -1
- package/dist/lib/file-operations/read-media-file.d.ts.map +1 -1
- package/dist/lib/file-operations/read-media-file.js +5 -1
- package/dist/lib/file-operations/read-media-file.js.map +1 -1
- package/dist/lib/file-operations/read-multiple-files.d.ts +8 -0
- package/dist/lib/file-operations/read-multiple-files.d.ts.map +1 -1
- package/dist/lib/file-operations/read-multiple-files.js +47 -18
- package/dist/lib/file-operations/read-multiple-files.js.map +1 -1
- package/dist/lib/file-operations/search/context-manager.d.ts +2 -0
- package/dist/lib/file-operations/search/context-manager.d.ts.map +1 -1
- package/dist/lib/file-operations/search/context-manager.js +22 -8
- package/dist/lib/file-operations/search/context-manager.js.map +1 -1
- package/dist/lib/file-operations/search/engine-stream.d.ts +1 -1
- package/dist/lib/file-operations/search/engine-stream.d.ts.map +1 -1
- package/dist/lib/file-operations/search/engine-stream.js +102 -9
- package/dist/lib/file-operations/search/engine-stream.js.map +1 -1
- package/dist/lib/file-operations/search/engine.d.ts.map +1 -1
- package/dist/lib/file-operations/search/engine.js +42 -5
- package/dist/lib/file-operations/search/engine.js.map +1 -1
- package/dist/lib/file-operations/search/file-processor.d.ts.map +1 -1
- package/dist/lib/file-operations/search/file-processor.js +102 -55
- package/dist/lib/file-operations/search/file-processor.js.map +1 -1
- package/dist/lib/file-operations/search/match-strategy.d.ts.map +1 -1
- package/dist/lib/file-operations/search/match-strategy.js +2 -1
- package/dist/lib/file-operations/search/match-strategy.js.map +1 -1
- package/dist/lib/file-operations/search/types.d.ts +3 -0
- package/dist/lib/file-operations/search/types.d.ts.map +1 -1
- package/dist/lib/file-operations/search-definitions/matchers.d.ts +12 -0
- package/dist/lib/file-operations/search-definitions/matchers.d.ts.map +1 -0
- package/dist/lib/file-operations/search-definitions/matchers.js +122 -0
- package/dist/lib/file-operations/search-definitions/matchers.js.map +1 -0
- package/dist/lib/file-operations/search-definitions/patterns.d.ts +14 -0
- package/dist/lib/file-operations/search-definitions/patterns.d.ts.map +1 -0
- package/dist/lib/file-operations/search-definitions/patterns.js +83 -0
- package/dist/lib/file-operations/search-definitions/patterns.js.map +1 -0
- package/dist/lib/file-operations/search-definitions.d.ts.map +1 -1
- package/dist/lib/file-operations/search-definitions.js +3 -208
- package/dist/lib/file-operations/search-definitions.js.map +1 -1
- package/dist/lib/file-operations/search-files-helpers.d.ts +2 -2
- package/dist/lib/file-operations/search-files-helpers.d.ts.map +1 -1
- package/dist/lib/file-operations/search-files-helpers.js +102 -14
- package/dist/lib/file-operations/search-files-helpers.js.map +1 -1
- package/dist/lib/file-operations/search-files-options.d.ts +4 -2
- package/dist/lib/file-operations/search-files-options.d.ts.map +1 -1
- package/dist/lib/file-operations/search-files-options.js.map +1 -1
- package/dist/lib/file-operations/search-files.d.ts.map +1 -1
- package/dist/lib/file-operations/search-files.js +7 -2
- package/dist/lib/file-operations/search-files.js.map +1 -1
- package/dist/lib/file-operations/sorting.d.ts.map +1 -1
- package/dist/lib/file-operations/sorting.js +39 -14
- package/dist/lib/file-operations/sorting.js.map +1 -1
- package/dist/lib/file-operations.d.ts +0 -5
- package/dist/lib/file-operations.d.ts.map +1 -1
- package/dist/lib/file-operations.js +0 -5
- package/dist/lib/file-operations.js.map +1 -1
- package/dist/lib/fs-helpers/abort.d.ts +3 -0
- package/dist/lib/fs-helpers/abort.d.ts.map +1 -0
- package/dist/lib/fs-helpers/abort.js +15 -0
- package/dist/lib/fs-helpers/abort.js.map +1 -0
- package/dist/lib/fs-helpers/concurrency.d.ts +1 -1
- package/dist/lib/fs-helpers/concurrency.d.ts.map +1 -1
- package/dist/lib/fs-helpers/concurrency.js +54 -6
- package/dist/lib/fs-helpers/concurrency.js.map +1 -1
- package/dist/lib/fs-helpers/readers/head-file.d.ts +1 -1
- package/dist/lib/fs-helpers/readers/head-file.d.ts.map +1 -1
- package/dist/lib/fs-helpers/readers/head-file.js +7 -4
- package/dist/lib/fs-helpers/readers/head-file.js.map +1 -1
- package/dist/lib/fs-helpers/readers/line-range.d.ts +1 -1
- package/dist/lib/fs-helpers/readers/line-range.d.ts.map +1 -1
- package/dist/lib/fs-helpers/readers/line-range.js +17 -3
- package/dist/lib/fs-helpers/readers/line-range.js.map +1 -1
- package/dist/lib/fs-helpers/readers/read-buffer.d.ts +2 -0
- package/dist/lib/fs-helpers/readers/read-buffer.d.ts.map +1 -0
- package/dist/lib/fs-helpers/readers/read-buffer.js +64 -0
- package/dist/lib/fs-helpers/readers/read-buffer.js.map +1 -0
- package/dist/lib/fs-helpers/readers/read-file-content.d.ts +11 -1
- package/dist/lib/fs-helpers/readers/read-file-content.d.ts.map +1 -1
- package/dist/lib/fs-helpers/readers/read-file-content.js +33 -9
- package/dist/lib/fs-helpers/readers/read-file-content.js.map +1 -1
- package/dist/lib/fs-helpers/readers/read-file.d.ts +11 -0
- package/dist/lib/fs-helpers/readers/read-file.d.ts.map +1 -1
- package/dist/lib/fs-helpers/readers/read-file.js +52 -15
- package/dist/lib/fs-helpers/readers/read-file.js.map +1 -1
- package/dist/lib/fs-helpers/readers/tail-file.d.ts +1 -1
- package/dist/lib/fs-helpers/readers/tail-file.d.ts.map +1 -1
- package/dist/lib/fs-helpers/readers/tail-file.js +7 -4
- package/dist/lib/fs-helpers/readers/tail-file.js.map +1 -1
- package/dist/lib/fs-helpers/readers.d.ts +1 -1
- package/dist/lib/fs-helpers/readers.d.ts.map +1 -1
- package/dist/lib/fs-helpers/readers.js +1 -1
- package/dist/lib/fs-helpers/readers.js.map +1 -1
- package/dist/lib/fs-helpers.d.ts +1 -1
- package/dist/lib/fs-helpers.d.ts.map +1 -1
- package/dist/lib/fs-helpers.js +1 -1
- package/dist/lib/fs-helpers.js.map +1 -1
- package/dist/lib/path-utils.d.ts +1 -0
- package/dist/lib/path-utils.d.ts.map +1 -1
- package/dist/lib/path-utils.js +12 -0
- package/dist/lib/path-utils.js.map +1 -1
- package/dist/lib/path-validation/allowed-directories.d.ts.map +1 -1
- package/dist/lib/path-validation/allowed-directories.js +2 -9
- package/dist/lib/path-validation/allowed-directories.js.map +1 -1
- package/dist/lib/path-validation/errors.js +2 -2
- package/dist/lib/path-validation/errors.js.map +1 -1
- package/dist/lib/path-validation/validators.d.ts.map +1 -1
- package/dist/lib/path-validation/validators.js +3 -1
- package/dist/lib/path-validation/validators.js.map +1 -1
- package/dist/schemas/common.d.ts +0 -18
- package/dist/schemas/common.d.ts.map +1 -1
- package/dist/schemas/common.js +0 -10
- package/dist/schemas/common.js.map +1 -1
- 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/input-helpers.d.ts +1 -4
- package/dist/schemas/input-helpers.d.ts.map +1 -1
- package/dist/schemas/input-helpers.js +9 -33
- package/dist/schemas/input-helpers.js.map +1 -1
- package/dist/schemas/inputs/checksums.d.ts +0 -2
- package/dist/schemas/inputs/checksums.d.ts.map +1 -1
- package/dist/schemas/inputs/checksums.js +2 -7
- package/dist/schemas/inputs/checksums.js.map +1 -1
- package/dist/schemas/inputs/directory.d.ts +0 -16
- package/dist/schemas/inputs/directory.d.ts.map +1 -1
- package/dist/schemas/inputs/directory.js +2 -44
- package/dist/schemas/inputs/directory.js.map +1 -1
- package/dist/schemas/inputs/read.d.ts +0 -4
- package/dist/schemas/inputs/read.d.ts.map +1 -1
- package/dist/schemas/inputs/read.js +0 -15
- package/dist/schemas/inputs/read.js.map +1 -1
- package/dist/schemas/inputs/search.d.ts +1 -12
- package/dist/schemas/inputs/search.d.ts.map +1 -1
- package/dist/schemas/inputs/search.js +4 -30
- package/dist/schemas/inputs/search.js.map +1 -1
- package/dist/schemas/inputs.d.ts +3 -4
- package/dist/schemas/inputs.d.ts.map +1 -1
- package/dist/schemas/inputs.js +3 -4
- package/dist/schemas/inputs.js.map +1 -1
- package/dist/schemas/output-helpers.d.ts +59 -0
- package/dist/schemas/output-helpers.d.ts.map +1 -1
- package/dist/schemas/output-helpers.js +31 -0
- package/dist/schemas/output-helpers.js.map +1 -1
- package/dist/schemas/outputs/checksums.d.ts +4 -4
- package/dist/schemas/outputs/checksums.d.ts.map +1 -1
- package/dist/schemas/outputs/checksums.js +2 -7
- package/dist/schemas/outputs/checksums.js.map +1 -1
- package/dist/schemas/outputs/directory.d.ts +68 -230
- package/dist/schemas/outputs/directory.d.ts.map +1 -1
- package/dist/schemas/outputs/directory.js +14 -32
- package/dist/schemas/outputs/directory.js.map +1 -1
- package/dist/schemas/outputs/file-info.d.ts +14 -14
- package/dist/schemas/outputs/file-info.d.ts.map +1 -1
- package/dist/schemas/outputs/file-info.js +4 -31
- package/dist/schemas/outputs/file-info.js.map +1 -1
- package/dist/schemas/outputs/read.d.ts +141 -46
- package/dist/schemas/outputs/read.d.ts.map +1 -1
- package/dist/schemas/outputs/read.js +35 -12
- package/dist/schemas/outputs/read.js.map +1 -1
- package/dist/schemas/outputs/search.d.ts +134 -124
- package/dist/schemas/outputs/search.d.ts.map +1 -1
- package/dist/schemas/outputs/search.js +33 -35
- package/dist/schemas/outputs/search.js.map +1 -1
- package/dist/schemas/outputs.d.ts +3 -4
- package/dist/schemas/outputs.d.ts.map +1 -1
- package/dist/schemas/outputs.js +3 -4
- package/dist/schemas/outputs.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +4 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/analyze-directory.d.ts.map +1 -1
- package/dist/tools/analyze-directory.js +26 -28
- package/dist/tools/analyze-directory.js.map +1 -1
- package/dist/tools/compute-checksums.d.ts.map +1 -1
- package/dist/tools/compute-checksums.js +13 -21
- package/dist/tools/compute-checksums.js.map +1 -1
- package/dist/tools/directory-tree.d.ts.map +1 -1
- package/dist/tools/directory-tree.js +11 -9
- package/dist/tools/directory-tree.js.map +1 -1
- package/dist/tools/get-file-info.d.ts.map +1 -1
- package/dist/tools/get-file-info.js +8 -44
- package/dist/tools/get-file-info.js.map +1 -1
- package/dist/tools/get-multiple-file-info.d.ts.map +1 -1
- package/dist/tools/get-multiple-file-info.js +13 -55
- package/dist/tools/get-multiple-file-info.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +0 -10
- 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 +37 -31
- 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 +83 -83
- 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 +66 -43
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/read-media-file.d.ts.map +1 -1
- package/dist/tools/read-media-file.js +8 -6
- package/dist/tools/read-media-file.js.map +1 -1
- package/dist/tools/read-multiple-files.d.ts.map +1 -1
- package/dist/tools/read-multiple-files.js +64 -25
- package/dist/tools/read-multiple-files.js.map +1 -1
- package/dist/tools/search-content.d.ts.map +1 -1
- package/dist/tools/search-content.js +14 -16
- package/dist/tools/search-content.js.map +1 -1
- package/dist/tools/search-definitions.d.ts.map +1 -1
- package/dist/tools/search-definitions.js +11 -8
- package/dist/tools/search-definitions.js.map +1 -1
- package/dist/tools/search-files.d.ts.map +1 -1
- package/dist/tools/search-files.js +61 -45
- package/dist/tools/search-files.js.map +1 -1
- package/dist/tools/shared/abort.d.ts +5 -0
- package/dist/tools/shared/abort.d.ts.map +1 -0
- package/dist/tools/shared/abort.js +41 -0
- package/dist/tools/shared/abort.js.map +1 -0
- package/dist/tools/shared/file-info.d.ts +17 -0
- package/dist/tools/shared/file-info.d.ts.map +1 -0
- package/dist/tools/shared/file-info.js +40 -0
- package/dist/tools/shared/file-info.js.map +1 -0
- package/dist/tools/shared/formatting.d.ts +5 -0
- package/dist/tools/shared/formatting.d.ts.map +1 -1
- package/dist/tools/shared/formatting.js +21 -1
- package/dist/tools/shared/formatting.js.map +1 -1
- package/dist/tools/shared/read-range.d.ts +7 -0
- package/dist/tools/shared/read-range.d.ts.map +1 -0
- package/dist/tools/shared/read-range.js +22 -0
- package/dist/tools/shared/read-range.js.map +1 -0
- package/dist/tools/shared/search-formatting.d.ts.map +1 -1
- package/dist/tools/shared/search-formatting.js +53 -28
- package/dist/tools/shared/search-formatting.js.map +1 -1
- package/dist/tools/tool-response.d.ts +22 -0
- package/dist/tools/tool-response.d.ts.map +1 -1
- package/dist/tools/tool-response.js +30 -0
- package/dist/tools/tool-response.js.map +1 -1
- package/package.json +2 -1
|
@@ -2,7 +2,7 @@ import { DEFAULT_LIST_MAX_ENTRIES, DEFAULT_MAX_DEPTH, DIR_TRAVERSAL_CONCURRENCY,
|
|
|
2
2
|
import { runWorkQueue } from '../fs-helpers.js';
|
|
3
3
|
import { mergeDefined } from '../merge-defined.js';
|
|
4
4
|
import { validateExistingDirectory } from '../path-validation.js';
|
|
5
|
-
import { createStopChecker, handleDirectory, initListState, } from './list-directory-helpers.js';
|
|
5
|
+
import { buildExcludeMatchers, buildPatternMatcher, createStopChecker, handleDirectory, initListState, } from './list-directory-helpers.js';
|
|
6
6
|
import { sortByField } from './sorting.js';
|
|
7
7
|
function normalizeListDirectoryOptions(options) {
|
|
8
8
|
const defaults = {
|
|
@@ -24,26 +24,35 @@ function buildSummary(state) {
|
|
|
24
24
|
totalDirectories: state.totalDirectories,
|
|
25
25
|
maxDepthReached: state.maxDepthReached,
|
|
26
26
|
truncated: state.truncated,
|
|
27
|
+
stoppedReason: state.stoppedReason,
|
|
27
28
|
skippedInaccessible: state.skippedInaccessible,
|
|
28
29
|
symlinksNotFollowed: state.symlinksNotFollowed,
|
|
30
|
+
entriesScanned: state.entriesScanned,
|
|
31
|
+
entriesVisible: state.entriesVisible,
|
|
29
32
|
};
|
|
30
33
|
}
|
|
31
34
|
export async function listDirectory(dirPath, options = {}) {
|
|
32
|
-
const
|
|
35
|
+
const { signal, ...rest } = options;
|
|
36
|
+
const normalized = normalizeListDirectoryOptions(rest);
|
|
33
37
|
const basePath = await validateExistingDirectory(dirPath);
|
|
34
38
|
const state = initListState();
|
|
35
|
-
const shouldStop = createStopChecker(normalized.maxEntries, state);
|
|
39
|
+
const shouldStop = createStopChecker(normalized.maxEntries, state, signal);
|
|
40
|
+
const excludeMatchers = buildExcludeMatchers(normalized.excludePatterns);
|
|
41
|
+
const patternMatcher = buildPatternMatcher(normalized.pattern);
|
|
36
42
|
const config = {
|
|
37
43
|
basePath,
|
|
38
44
|
recursive: normalized.recursive,
|
|
39
45
|
includeHidden: normalized.includeHidden,
|
|
40
46
|
excludePatterns: normalized.excludePatterns,
|
|
47
|
+
excludeMatchers,
|
|
41
48
|
maxDepth: normalized.maxDepth,
|
|
42
49
|
maxEntries: normalized.maxEntries,
|
|
43
50
|
includeSymlinkTargets: normalized.includeSymlinkTargets,
|
|
44
51
|
pattern: normalized.pattern,
|
|
52
|
+
patternMatcher,
|
|
53
|
+
signal,
|
|
45
54
|
};
|
|
46
|
-
await runWorkQueue([{ currentPath: basePath, depth: 0 }], async (params, enqueue) => handleDirectory(params, enqueue, config, state, shouldStop), DIR_TRAVERSAL_CONCURRENCY);
|
|
55
|
+
await runWorkQueue([{ currentPath: basePath, depth: 0 }], async (params, enqueue) => handleDirectory(params, enqueue, config, state, shouldStop), DIR_TRAVERSAL_CONCURRENCY, signal);
|
|
47
56
|
sortByField(state.entries, normalized.sortBy);
|
|
48
57
|
return {
|
|
49
58
|
path: basePath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-directory.js","sourceRoot":"","sources":["../../../src/lib/file-operations/list-directory.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,aAAa,GAEd,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"list-directory.js","sourceRoot":"","sources":["../../../src/lib/file-operations/list-directory.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,aAAa,GAEd,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAkB3C,SAAS,6BAA6B,CACpC,OAA6C;IAE7C,MAAM,QAAQ,GAAmC;QAC/C,SAAS,EAAE,KAAK;QAChB,aAAa,EAAE,KAAK;QACpB,eAAe,EAAE,EAAE;QACnB,QAAQ,EAAE,iBAAiB;QAC3B,UAAU,EAAE,wBAAwB;QACpC,MAAM,EAAE,MAAM;QACd,qBAAqB,EAAE,KAAK;QAC5B,OAAO,EAAE,EAAE;KACZ,CAAC;IACF,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,YAAY,CACnB,KAAuC;IAEvC,OAAO;QACL,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;QAClC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAC9C,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAC9C,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,cAAc,EAAE,KAAK,CAAC,cAAc;KACrC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAe,EACf,UAAgC,EAAE;IAElC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IACpC,MAAM,UAAU,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;IAEvD,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3E,MAAM,eAAe,GAAG,oBAAoB,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,mBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAwB;QAClC,QAAQ;QACR,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,aAAa,EAAE,UAAU,CAAC,aAAa;QACvC,eAAe,EAAE,UAAU,CAAC,eAAe;QAC3C,eAAe;QACf,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,qBAAqB,EAAE,UAAU,CAAC,qBAAqB;QACvD,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,cAAc;QACd,MAAM;KACP,CAAC;IAEF,MAAM,YAAY,CAChB,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EACrC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CACxB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,EAC7D,yBAAyB,EACzB,MAAM,CACP,CAAC;IAEF,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAE9C,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC;KAC7B,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-media-file.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/read-media-file.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"read-media-file.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/read-media-file.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAyB7D,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,EAAE,OAA6B,EAAE,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3D,OAAO,CAAC,eAAe,CAAC,CAyB1B"}
|
|
@@ -2,6 +2,7 @@ import * as fs from 'node:fs/promises';
|
|
|
2
2
|
import * as path from 'node:path';
|
|
3
3
|
import { getMimeType, MAX_MEDIA_FILE_SIZE } from '../constants.js';
|
|
4
4
|
import { ErrorCode, McpError } from '../errors.js';
|
|
5
|
+
import { readFileBufferWithLimit } from '../fs-helpers/readers/read-buffer.js';
|
|
5
6
|
import { validateExistingPath } from '../path-validation.js';
|
|
6
7
|
function assertFile(stats, filePath) {
|
|
7
8
|
if (stats.isFile())
|
|
@@ -14,13 +15,16 @@ function assertSizeWithinLimit(size, maxSize, filePath) {
|
|
|
14
15
|
throw new McpError(ErrorCode.E_TOO_LARGE, `File too large: ${size} bytes (max: ${maxSize} bytes)`, filePath, { size, maxSize });
|
|
15
16
|
}
|
|
16
17
|
export async function readMediaFile(filePath, { maxSize = MAX_MEDIA_FILE_SIZE } = {}) {
|
|
18
|
+
if (maxSize > MAX_MEDIA_FILE_SIZE) {
|
|
19
|
+
throw new McpError(ErrorCode.E_INVALID_INPUT, `maxSize cannot exceed ${MAX_MEDIA_FILE_SIZE} bytes`, filePath, { maxSize, maxAllowed: MAX_MEDIA_FILE_SIZE });
|
|
20
|
+
}
|
|
17
21
|
const validPath = await validateExistingPath(filePath);
|
|
18
22
|
const stats = await fs.stat(validPath);
|
|
19
23
|
assertFile(stats, filePath);
|
|
20
24
|
assertSizeWithinLimit(stats.size, maxSize, filePath);
|
|
21
25
|
const ext = path.extname(validPath).toLowerCase();
|
|
22
26
|
const mimeType = getMimeType(ext);
|
|
23
|
-
const buffer = await
|
|
27
|
+
const buffer = await readFileBufferWithLimit(validPath, maxSize, filePath);
|
|
24
28
|
return {
|
|
25
29
|
path: validPath,
|
|
26
30
|
mimeType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-media-file.js","sourceRoot":"","sources":["../../../src/lib/file-operations/read-media-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,SAAS,UAAU,CAAC,KAAY,EAAE,QAAgB;IAChD,IAAI,KAAK,CAAC,MAAM,EAAE;QAAE,OAAO;IAC3B,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,eAAe,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAY,EACZ,OAAe,EACf,QAAgB;IAEhB,IAAI,IAAI,IAAI,OAAO;QAAE,OAAO;IAC5B,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,WAAW,EACrB,mBAAmB,IAAI,gBAAgB,OAAO,SAAS,EACvD,QAAQ,EACR,EAAE,IAAI,EAAE,OAAO,EAAE,CAClB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,EAAE,OAAO,GAAG,mBAAmB,KAA2B,EAAE;IAE5D,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEvC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC5B,qBAAqB,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAErD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAClD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"read-media-file.js","sourceRoot":"","sources":["../../../src/lib/file-operations/read-media-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,SAAS,UAAU,CAAC,KAAY,EAAE,QAAgB;IAChD,IAAI,KAAK,CAAC,MAAM,EAAE;QAAE,OAAO;IAC3B,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,eAAe,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAY,EACZ,OAAe,EACf,QAAgB;IAEhB,IAAI,IAAI,IAAI,OAAO;QAAE,OAAO;IAC5B,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,WAAW,EACrB,mBAAmB,IAAI,gBAAgB,OAAO,SAAS,EACvD,QAAQ,EACR,EAAE,IAAI,EAAE,OAAO,EAAE,CAClB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,EAAE,OAAO,GAAG,mBAAmB,KAA2B,EAAE;IAE5D,IAAI,OAAO,GAAG,mBAAmB,EAAE,CAAC;QAClC,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,eAAe,EACzB,yBAAyB,mBAAmB,QAAQ,EACpD,QAAQ,EACR,EAAE,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAC7C,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEvC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC5B,qBAAqB,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAErD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAClD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAE3E,OAAO;QACL,IAAI,EAAE,SAAS;QACf,QAAQ;QACR,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;KAChC,CAAC;AACJ,CAAC"}
|
|
@@ -3,6 +3,13 @@ interface ReadMultipleResult {
|
|
|
3
3
|
content?: string;
|
|
4
4
|
truncated?: boolean;
|
|
5
5
|
totalLines?: number;
|
|
6
|
+
readMode?: 'full' | 'head' | 'tail' | 'lineRange';
|
|
7
|
+
lineStart?: number;
|
|
8
|
+
lineEnd?: number;
|
|
9
|
+
head?: number;
|
|
10
|
+
tail?: number;
|
|
11
|
+
linesRead?: number;
|
|
12
|
+
hasMoreLines?: boolean;
|
|
6
13
|
error?: string;
|
|
7
14
|
}
|
|
8
15
|
interface ReadMultipleOptions {
|
|
@@ -13,6 +20,7 @@ interface ReadMultipleOptions {
|
|
|
13
20
|
tail?: number;
|
|
14
21
|
lineStart?: number;
|
|
15
22
|
lineEnd?: number;
|
|
23
|
+
signal?: AbortSignal;
|
|
16
24
|
}
|
|
17
25
|
export declare function readMultipleFiles(filePaths: string[], options?: ReadMultipleOptions): Promise<ReadMultipleResult[]>;
|
|
18
26
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-multiple-files.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/read-multiple-files.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"read-multiple-files.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/read-multiple-files.ts"],"names":[],"mappings":"AAYA,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAkBD,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAmQD,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA2C/B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as fs from 'node:fs/promises';
|
|
2
2
|
import { MAX_TEXT_FILE_SIZE, PARALLEL_CONCURRENCY } from '../constants.js';
|
|
3
3
|
import { ErrorCode, McpError } from '../errors.js';
|
|
4
|
-
import { processInParallel, readFile } from '../fs-helpers.js';
|
|
4
|
+
import { processInParallel, readFile, readFileWithStats, } from '../fs-helpers.js';
|
|
5
5
|
import { validateExistingPath } from '../path-validation.js';
|
|
6
6
|
function assertLineRangeComplete(lineStart, lineEnd) {
|
|
7
7
|
const hasLineStart = lineStart !== undefined;
|
|
@@ -55,32 +55,49 @@ function isPartialRead(options) {
|
|
|
55
55
|
options.head !== undefined ||
|
|
56
56
|
options.tail !== undefined);
|
|
57
57
|
}
|
|
58
|
-
async function collectFileBudget(filePaths, isPartialRead, maxTotalSize, maxSize) {
|
|
58
|
+
async function collectFileBudget(filePaths, isPartialRead, maxTotalSize, maxSize, signal) {
|
|
59
59
|
const skippedBudget = new Set();
|
|
60
|
+
const validated = new Map();
|
|
60
61
|
// Gather file sizes
|
|
61
62
|
const { results } = await processInParallel(filePaths.map((filePath, index) => ({ filePath, index })), async ({ filePath, index }) => {
|
|
62
63
|
const validPath = await validateExistingPath(filePath);
|
|
63
64
|
const stats = await fs.stat(validPath);
|
|
64
|
-
return { filePath, index,
|
|
65
|
-
}, PARALLEL_CONCURRENCY);
|
|
65
|
+
return { filePath, index, validPath, stats };
|
|
66
|
+
}, PARALLEL_CONCURRENCY, signal);
|
|
66
67
|
// Determine which files to skip based on budget
|
|
67
68
|
let totalSize = 0;
|
|
68
69
|
const orderedResults = [...results].sort((a, b) => a.index - b.index);
|
|
69
70
|
for (const result of orderedResults) {
|
|
71
|
+
validated.set(result.index, {
|
|
72
|
+
index: result.index,
|
|
73
|
+
filePath: result.filePath,
|
|
74
|
+
validPath: result.validPath,
|
|
75
|
+
stats: result.stats,
|
|
76
|
+
});
|
|
70
77
|
const estimatedSize = isPartialRead
|
|
71
|
-
? Math.min(result.size, maxSize)
|
|
72
|
-
: result.size;
|
|
78
|
+
? Math.min(result.stats.size, maxSize)
|
|
79
|
+
: result.stats.size;
|
|
73
80
|
if (totalSize + estimatedSize > maxTotalSize) {
|
|
74
81
|
skippedBudget.add(result.index);
|
|
75
82
|
continue;
|
|
76
83
|
}
|
|
77
84
|
totalSize += estimatedSize;
|
|
78
85
|
}
|
|
79
|
-
return { skippedBudget };
|
|
86
|
+
return { skippedBudget, validated };
|
|
80
87
|
}
|
|
81
|
-
function buildProcessTargets(filePaths, skippedBudget) {
|
|
88
|
+
function buildProcessTargets(filePaths, skippedBudget, validated) {
|
|
82
89
|
return filePaths
|
|
83
|
-
.map((filePath, index) =>
|
|
90
|
+
.map((filePath, index) => {
|
|
91
|
+
const cached = validated.get(index);
|
|
92
|
+
return cached
|
|
93
|
+
? {
|
|
94
|
+
filePath,
|
|
95
|
+
index,
|
|
96
|
+
validPath: cached.validPath,
|
|
97
|
+
stats: cached.stats,
|
|
98
|
+
}
|
|
99
|
+
: { filePath, index };
|
|
100
|
+
})
|
|
84
101
|
.filter(({ index }) => !skippedBudget.has(index));
|
|
85
102
|
}
|
|
86
103
|
function applyParallelResults(output, results, errors, filePaths) {
|
|
@@ -115,15 +132,19 @@ function mapParallelErrors(errors, filesToProcess) {
|
|
|
115
132
|
};
|
|
116
133
|
});
|
|
117
134
|
}
|
|
118
|
-
async function readFilesInParallel(filesToProcess, options) {
|
|
119
|
-
return await processInParallel(filesToProcess, async ({ filePath, index }) => {
|
|
120
|
-
const
|
|
135
|
+
async function readFilesInParallel(filesToProcess, options, signal) {
|
|
136
|
+
return await processInParallel(filesToProcess, async ({ filePath, index, validPath, stats }) => {
|
|
137
|
+
const readOptions = {
|
|
121
138
|
encoding: options.encoding,
|
|
122
139
|
maxSize: options.maxSize,
|
|
123
140
|
head: options.head,
|
|
124
141
|
tail: options.tail,
|
|
125
142
|
lineRange: options.lineRange,
|
|
126
|
-
|
|
143
|
+
signal,
|
|
144
|
+
};
|
|
145
|
+
const result = validPath && stats
|
|
146
|
+
? await readFileWithStats(filePath, validPath, stats, readOptions)
|
|
147
|
+
: await readFile(filePath, readOptions);
|
|
127
148
|
return {
|
|
128
149
|
index,
|
|
129
150
|
value: {
|
|
@@ -131,20 +152,28 @@ async function readFilesInParallel(filesToProcess, options) {
|
|
|
131
152
|
content: result.content,
|
|
132
153
|
truncated: result.truncated,
|
|
133
154
|
totalLines: result.totalLines,
|
|
155
|
+
readMode: result.readMode,
|
|
156
|
+
lineStart: result.lineStart,
|
|
157
|
+
lineEnd: result.lineEnd,
|
|
158
|
+
head: result.head,
|
|
159
|
+
tail: result.tail,
|
|
160
|
+
linesRead: result.linesRead,
|
|
161
|
+
hasMoreLines: result.hasMoreLines,
|
|
134
162
|
},
|
|
135
163
|
};
|
|
136
|
-
}, PARALLEL_CONCURRENCY);
|
|
164
|
+
}, PARALLEL_CONCURRENCY, signal);
|
|
137
165
|
}
|
|
138
166
|
export async function readMultipleFiles(filePaths, options = {}) {
|
|
139
167
|
if (filePaths.length === 0)
|
|
140
168
|
return [];
|
|
141
|
-
const
|
|
169
|
+
const { signal, ...rest } = options;
|
|
170
|
+
const normalized = normalizeReadMultipleOptions(rest);
|
|
142
171
|
assertExclusiveReadOptions(normalized.lineRange, normalized.head, normalized.tail);
|
|
143
172
|
const output = createOutputSkeleton(filePaths);
|
|
144
173
|
const partialRead = isPartialRead(normalized);
|
|
145
|
-
const { skippedBudget } = await collectFileBudget(filePaths, partialRead, normalized.maxTotalSize, normalized.maxSize);
|
|
146
|
-
const filesToProcess = buildProcessTargets(filePaths, skippedBudget);
|
|
147
|
-
const { results, errors } = await readFilesInParallel(filesToProcess, normalized);
|
|
174
|
+
const { skippedBudget, validated } = await collectFileBudget(filePaths, partialRead, normalized.maxTotalSize, normalized.maxSize, signal);
|
|
175
|
+
const filesToProcess = buildProcessTargets(filePaths, skippedBudget, validated);
|
|
176
|
+
const { results, errors } = await readFilesInParallel(filesToProcess, normalized, signal);
|
|
148
177
|
const mappedErrors = mapParallelErrors(errors, filesToProcess);
|
|
149
178
|
applyParallelResults(output, results, mappedErrors, filePaths);
|
|
150
179
|
applySkippedBudgetErrors(output, skippedBudget, filePaths, normalized.maxTotalSize);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-multiple-files.js","sourceRoot":"","sources":["../../../src/lib/file-operations/read-multiple-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"read-multiple-files.js","sourceRoot":"","sources":["../../../src/lib/file-operations/read-multiple-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,9 @@ import type { ContentMatch } from '../../../config/types.js';
|
|
|
2
2
|
export declare class ContextManager {
|
|
3
3
|
private readonly contextLines;
|
|
4
4
|
private readonly buffer;
|
|
5
|
+
private bufferStart;
|
|
5
6
|
private readonly pendingMatches;
|
|
7
|
+
private pendingStart;
|
|
6
8
|
constructor(contextLines: number);
|
|
7
9
|
pushLine(line: string): void;
|
|
8
10
|
createMatch(filePath: string, line: number, content: string, matchCount: number): ContentMatch;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-manager.d.ts","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/context-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAO7D,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsB;
|
|
1
|
+
{"version":3,"file":"context-manager.d.ts","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/context-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAO7D,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsB;IACrD,OAAO,CAAC,YAAY,CAAK;gBAEb,YAAY,EAAE,MAAM;IAIhC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO5B,WAAW,CACT,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,YAAY;IAmBf,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,WAAW;CAUpB"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export class ContextManager {
|
|
2
2
|
contextLines;
|
|
3
3
|
buffer = [];
|
|
4
|
+
bufferStart = 0;
|
|
4
5
|
pendingMatches = [];
|
|
6
|
+
pendingStart = 0;
|
|
5
7
|
constructor(contextLines) {
|
|
6
8
|
this.contextLines = contextLines;
|
|
7
9
|
}
|
|
@@ -18,8 +20,8 @@ export class ContextManager {
|
|
|
18
20
|
content,
|
|
19
21
|
matchCount,
|
|
20
22
|
};
|
|
21
|
-
if (this.buffer.length >
|
|
22
|
-
match.contextBefore =
|
|
23
|
+
if (this.buffer.length > this.bufferStart) {
|
|
24
|
+
match.contextBefore = this.buffer.slice(this.bufferStart);
|
|
23
25
|
}
|
|
24
26
|
if (this.contextLines > 0) {
|
|
25
27
|
this.pendingMatches.push({ match, afterNeeded: this.contextLines });
|
|
@@ -31,7 +33,10 @@ export class ContextManager {
|
|
|
31
33
|
this.pruneCompletedMatches();
|
|
32
34
|
}
|
|
33
35
|
appendPendingContext(line) {
|
|
34
|
-
for (
|
|
36
|
+
for (let i = this.pendingStart; i < this.pendingMatches.length; i++) {
|
|
37
|
+
const pending = this.pendingMatches[i];
|
|
38
|
+
if (!pending)
|
|
39
|
+
continue;
|
|
35
40
|
if (pending.afterNeeded <= 0)
|
|
36
41
|
continue;
|
|
37
42
|
pending.match.contextAfter ??= [];
|
|
@@ -40,15 +45,24 @@ export class ContextManager {
|
|
|
40
45
|
}
|
|
41
46
|
}
|
|
42
47
|
pruneCompletedMatches() {
|
|
43
|
-
while (this.pendingMatches.length
|
|
44
|
-
this.pendingMatches[
|
|
45
|
-
this.
|
|
48
|
+
while (this.pendingStart < this.pendingMatches.length &&
|
|
49
|
+
this.pendingMatches[this.pendingStart]?.afterNeeded === 0) {
|
|
50
|
+
this.pendingStart++;
|
|
51
|
+
}
|
|
52
|
+
if (this.pendingStart > 1024 &&
|
|
53
|
+
this.pendingStart * 2 > this.pendingMatches.length) {
|
|
54
|
+
this.pendingMatches.splice(0, this.pendingStart);
|
|
55
|
+
this.pendingStart = 0;
|
|
46
56
|
}
|
|
47
57
|
}
|
|
48
58
|
addToBuffer(line) {
|
|
49
59
|
this.buffer.push(line);
|
|
50
|
-
if (this.buffer.length > this.contextLines) {
|
|
51
|
-
this.
|
|
60
|
+
if (this.buffer.length - this.bufferStart > this.contextLines) {
|
|
61
|
+
this.bufferStart++;
|
|
62
|
+
}
|
|
63
|
+
if (this.bufferStart > 1024 && this.bufferStart * 2 > this.buffer.length) {
|
|
64
|
+
this.buffer.splice(0, this.bufferStart);
|
|
65
|
+
this.bufferStart = 0;
|
|
52
66
|
}
|
|
53
67
|
}
|
|
54
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/context-manager.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,cAAc;IACR,YAAY,CAAS;IACrB,MAAM,GAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/context-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,5 @@ import type { SearchOptions } from './engine-options.js';
|
|
|
2
2
|
import type { Matcher } from './match-strategy.js';
|
|
3
3
|
import type { SearchState } from './types.js';
|
|
4
4
|
export declare function createStream(basePath: string, options: SearchOptions): AsyncIterable<string | Buffer>;
|
|
5
|
-
export declare function processStream(stream: AsyncIterable<string | Buffer>, searchState: SearchState, matcher: Matcher, options: SearchOptions, deadlineMs: number | undefined, searchPattern: string): Promise<void>;
|
|
5
|
+
export declare function processStream(stream: AsyncIterable<string | Buffer>, searchState: SearchState, matcher: Matcher, options: SearchOptions, deadlineMs: number | undefined, searchPattern: string, signal?: AbortSignal): Promise<void>;
|
|
6
6
|
//# sourceMappingURL=engine-stream.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-stream.d.ts","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/engine-stream.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"engine-stream.d.ts","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/engine-stream.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAc,WAAW,EAAE,MAAM,YAAY,CAAC;AAgF1D,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,aAAa,GACrB,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,CAYhC;AAuKD,wBAAsB,aAAa,CACjC,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,EACtC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAyCf"}
|
|
@@ -1,6 +1,58 @@
|
|
|
1
1
|
import fg from 'fast-glob';
|
|
2
2
|
import { PARALLEL_CONCURRENCY } from '../../constants.js';
|
|
3
|
+
import { safeDestroy } from '../../fs-helpers.js';
|
|
3
4
|
import { processFile } from './file-processor.js';
|
|
5
|
+
function attachStreamGuards(stream, searchState, deadlineMs, signal) {
|
|
6
|
+
let stopReason = null;
|
|
7
|
+
let timeoutId;
|
|
8
|
+
const destroyStream = () => {
|
|
9
|
+
safeDestroy(stream);
|
|
10
|
+
};
|
|
11
|
+
const onAbort = () => {
|
|
12
|
+
if (stopReason === null) {
|
|
13
|
+
const isTimeout = deadlineMs !== undefined && Date.now() >= deadlineMs;
|
|
14
|
+
if (isTimeout) {
|
|
15
|
+
stopReason = 'timeout';
|
|
16
|
+
searchState.truncated = true;
|
|
17
|
+
searchState.stoppedReason = 'timeout';
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
stopReason = 'abort';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
if (timeoutId) {
|
|
24
|
+
clearTimeout(timeoutId);
|
|
25
|
+
timeoutId = undefined;
|
|
26
|
+
}
|
|
27
|
+
destroyStream();
|
|
28
|
+
};
|
|
29
|
+
if (signal?.aborted) {
|
|
30
|
+
onAbort();
|
|
31
|
+
}
|
|
32
|
+
else if (signal) {
|
|
33
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
34
|
+
}
|
|
35
|
+
if (deadlineMs !== undefined) {
|
|
36
|
+
const delay = Math.max(0, deadlineMs - Date.now());
|
|
37
|
+
timeoutId = setTimeout(() => {
|
|
38
|
+
if (stopReason === 'abort')
|
|
39
|
+
return;
|
|
40
|
+
stopReason = 'timeout';
|
|
41
|
+
searchState.truncated = true;
|
|
42
|
+
searchState.stoppedReason = 'timeout';
|
|
43
|
+
destroyStream();
|
|
44
|
+
}, delay);
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
getStopReason: () => stopReason,
|
|
48
|
+
cleanup: () => {
|
|
49
|
+
if (signal)
|
|
50
|
+
signal.removeEventListener('abort', onAbort);
|
|
51
|
+
if (timeoutId)
|
|
52
|
+
clearTimeout(timeoutId);
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
4
56
|
export function createStream(basePath, options) {
|
|
5
57
|
return fg.stream(options.filePattern, {
|
|
6
58
|
cwd: basePath,
|
|
@@ -47,6 +99,10 @@ function updateState(state, result) {
|
|
|
47
99
|
state.filesMatched++;
|
|
48
100
|
}
|
|
49
101
|
state.linesSkippedDueToRegexTimeout += result.linesSkippedDueToRegexTimeout;
|
|
102
|
+
if (result.hitMaxResults && !state.truncated) {
|
|
103
|
+
state.truncated = true;
|
|
104
|
+
state.stoppedReason = 'maxResults';
|
|
105
|
+
}
|
|
50
106
|
}
|
|
51
107
|
function buildProcessorBaseOptions(options, deadlineMs, searchPattern) {
|
|
52
108
|
return {
|
|
@@ -83,7 +139,9 @@ function createProcessingState(options, deadlineMs, searchPattern) {
|
|
|
83
139
|
processorBaseOptions: buildProcessorBaseOptions(options, deadlineMs, searchPattern),
|
|
84
140
|
};
|
|
85
141
|
}
|
|
86
|
-
async function handleStreamEntry(entry, searchState, processing, matcher, options, deadlineMs) {
|
|
142
|
+
async function handleStreamEntry(entry, searchState, processing, matcher, options, deadlineMs, signal) {
|
|
143
|
+
if (signal?.aborted)
|
|
144
|
+
return 'stop';
|
|
87
145
|
if (shouldStop(searchState, options, deadlineMs))
|
|
88
146
|
return 'stop';
|
|
89
147
|
const maxFilesAction = await enforceMaxFilesScanned(searchState, options, processing.inFlight, processing.active);
|
|
@@ -93,7 +151,7 @@ async function handleStreamEntry(entry, searchState, processing, matcher, option
|
|
|
93
151
|
return 'continue';
|
|
94
152
|
await waitForConcurrency(processing.active);
|
|
95
153
|
const rawPath = String(entry);
|
|
96
|
-
const task = createProcessingTask(rawPath, searchState, matcher, processing.processorBaseOptions, options, deadlineMs);
|
|
154
|
+
const task = createProcessingTask(rawPath, searchState, matcher, processing.processorBaseOptions, options, deadlineMs, signal);
|
|
97
155
|
processing.inFlight++;
|
|
98
156
|
processing.active.add(task);
|
|
99
157
|
void task.finally(() => {
|
|
@@ -102,14 +160,18 @@ async function handleStreamEntry(entry, searchState, processing, matcher, option
|
|
|
102
160
|
});
|
|
103
161
|
return 'continue';
|
|
104
162
|
}
|
|
105
|
-
function createProcessingTask(rawPath, state, matcher, processorBaseOptions, options, deadlineMs) {
|
|
163
|
+
function createProcessingTask(rawPath, state, matcher, processorBaseOptions, options, deadlineMs, signal) {
|
|
106
164
|
return (async () => {
|
|
107
165
|
try {
|
|
166
|
+
if (signal?.aborted)
|
|
167
|
+
return;
|
|
108
168
|
if (shouldStop(state, options, deadlineMs))
|
|
109
169
|
return;
|
|
110
170
|
const result = await processFile(rawPath, matcher, {
|
|
111
171
|
...processorBaseOptions,
|
|
112
172
|
currentMatchCount: state.matches.length,
|
|
173
|
+
getCurrentMatchCount: () => state.matches.length,
|
|
174
|
+
signal,
|
|
113
175
|
});
|
|
114
176
|
updateState(state, result);
|
|
115
177
|
}
|
|
@@ -118,13 +180,44 @@ function createProcessingTask(rawPath, state, matcher, processorBaseOptions, opt
|
|
|
118
180
|
}
|
|
119
181
|
})();
|
|
120
182
|
}
|
|
121
|
-
export async function processStream(stream, searchState, matcher, options, deadlineMs, searchPattern) {
|
|
183
|
+
export async function processStream(stream, searchState, matcher, options, deadlineMs, searchPattern, signal) {
|
|
122
184
|
const processing = createProcessingState(options, deadlineMs, searchPattern);
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
185
|
+
const guard = attachStreamGuards(stream, searchState, deadlineMs, signal);
|
|
186
|
+
try {
|
|
187
|
+
for await (const entry of stream) {
|
|
188
|
+
if (signal?.aborted)
|
|
189
|
+
break;
|
|
190
|
+
const action = await handleStreamEntry(entry, searchState, processing, matcher, options, deadlineMs, signal);
|
|
191
|
+
if (action === 'stop')
|
|
192
|
+
break;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
const reason = guard.getStopReason();
|
|
197
|
+
if (reason === 'timeout') {
|
|
198
|
+
// fall through to finalize below
|
|
199
|
+
}
|
|
200
|
+
else if (reason === 'abort') {
|
|
201
|
+
const abortError = new Error('Search aborted');
|
|
202
|
+
abortError.name = 'AbortError';
|
|
203
|
+
throw abortError;
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
throw error;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
finally {
|
|
210
|
+
guard.cleanup();
|
|
211
|
+
await Promise.all(processing.active);
|
|
212
|
+
}
|
|
213
|
+
if (deadlineMs && Date.now() > deadlineMs && !searchState.truncated) {
|
|
214
|
+
searchState.truncated = true;
|
|
215
|
+
searchState.stoppedReason = 'timeout';
|
|
216
|
+
}
|
|
217
|
+
if (signal?.aborted) {
|
|
218
|
+
if (deadlineMs && Date.now() >= deadlineMs)
|
|
219
|
+
return;
|
|
220
|
+
throw new Error('Search aborted');
|
|
127
221
|
}
|
|
128
|
-
await Promise.all(processing.active);
|
|
129
222
|
}
|
|
130
223
|
//# sourceMappingURL=engine-stream.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-stream.js","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/engine-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,WAAW,CAAC;AAE3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"engine-stream.js","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/engine-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,WAAW,CAAC;AAE3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAyBlD,SAAS,kBAAkB,CACzB,MAAsC,EACtC,WAAwB,EACxB,UAA8B,EAC9B,MAAoB;IAEpB,IAAI,UAAU,GAAqB,IAAI,CAAC;IACxC,IAAI,SAAoD,CAAC;IAEzD,MAAM,aAAa,GAAG,GAAS,EAAE;QAC/B,WAAW,CAAC,MAAiB,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,UAAU,CAAC;YACvE,IAAI,SAAS,EAAE,CAAC;gBACd,UAAU,GAAG,SAAS,CAAC;gBACvB,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;gBAC7B,WAAW,CAAC,aAAa,GAAG,SAAS,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,UAAU,GAAG,OAAO,CAAC;YACvB,CAAC;QACH,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,SAAS,GAAG,SAAS,CAAC;QACxB,CAAC;QACD,aAAa,EAAE,CAAC;IAClB,CAAC,CAAC;IAEF,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAClB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACnD,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC1B,IAAI,UAAU,KAAK,OAAO;gBAAE,OAAO;YACnC,UAAU,GAAG,SAAS,CAAC;YACvB,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;YAC7B,WAAW,CAAC,aAAa,GAAG,SAAS,CAAC;YACtC,aAAa,EAAE,CAAC;QAClB,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC;IAED,OAAO;QACL,aAAa,EAAE,GAAG,EAAE,CAAC,UAAU;QAC/B,OAAO,EAAE,GAAG,EAAE;YACZ,IAAI,MAAM;gBAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACzD,IAAI,SAAS;gBAAE,YAAY,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,QAAgB,EAChB,OAAsB;IAEtB,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;QACpC,GAAG,EAAE,QAAQ;QACb,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,IAAI;QACf,GAAG,EAAE,OAAO,CAAC,aAAa;QAC1B,MAAM,EAAE,OAAO,CAAC,eAAe;QAC/B,cAAc,EAAE,IAAI;QACpB,mBAAmB,EAAE,KAAK;QAC1B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,kBAAkB,EAAE,OAAO,CAAC,sBAAsB;KACnD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CACjB,KAAkB,EAClB,OAAsB,EACtB,UAAmB;IAEnB,IAAI,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC;QAC1C,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,CAAC,YAAY,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAClD,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,KAAK,CAAC,aAAa,GAAG,UAAU,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QAC/C,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,KAAkB,EAAE,MAAkB;IACzD,KAAK,CAAC,YAAY,EAAE,CAAC;IACrB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,eAAe;QAAE,KAAK,CAAC,eAAe,EAAE,CAAC;IACpD,IAAI,MAAM,CAAC,aAAa;QAAE,KAAK,CAAC,aAAa,EAAE,CAAC;IAEhD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QACtC,KAAK,CAAC,YAAY,EAAE,CAAC;IACvB,CAAC;IACD,KAAK,CAAC,6BAA6B,IAAI,MAAM,CAAC,6BAA6B,CAAC;IAC5E,IAAI,MAAM,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAC7C,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC;IACrC,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAChC,OAAsB,EACtB,UAA8B,EAC9B,aAAqB;IAErB,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,UAAU;QACV,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,aAAa;KACd,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,KAAkB,EAClB,OAAsB,EACtB,QAAgB,EAChB,MAA0B;IAE1B,IAAI,KAAK,CAAC,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,MAA0B;IAC1D,OAAO,MAAM,CAAC,IAAI,IAAI,oBAAoB,EAAE,CAAC;QAC3C,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAAsB,EACtB,UAA8B,EAC9B,aAAqB;IAErB,OAAO;QACL,MAAM,EAAE,IAAI,GAAG,EAAiB;QAChC,QAAQ,EAAE,CAAC;QACX,oBAAoB,EAAE,yBAAyB,CAC7C,OAAO,EACP,UAAU,EACV,aAAa,CACd;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,KAAsB,EACtB,WAAwB,EACxB,UAAiC,EACjC,OAAgB,EAChB,OAAsB,EACtB,UAA8B,EAC9B,MAAoB;IAEpB,IAAI,MAAM,EAAE,OAAO;QAAE,OAAO,MAAM,CAAC;IACnC,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC;QAAE,OAAO,MAAM,CAAC;IAChE,MAAM,cAAc,GAAG,MAAM,sBAAsB,CACjD,WAAW,EACX,OAAO,EACP,UAAU,CAAC,QAAQ,EACnB,UAAU,CAAC,MAAM,CAClB,CAAC;IACF,IAAI,cAAc,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAC7C,IAAI,cAAc,KAAK,MAAM;QAAE,OAAO,UAAU,CAAC;IACjD,MAAM,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,oBAAoB,CAC/B,OAAO,EACP,WAAW,EACX,OAAO,EACP,UAAU,CAAC,oBAAoB,EAC/B,OAAO,EACP,UAAU,EACV,MAAM,CACP,CAAC;IACF,UAAU,CAAC,QAAQ,EAAE,CAAC;IACtB,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;QACrB,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,UAAU,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAAe,EACf,KAAkB,EAClB,OAAgB,EAChB,oBAA0C,EAC1C,OAAsB,EACtB,UAA8B,EAC9B,MAAoB;IAEpB,OAAO,CAAC,KAAK,IAAmB,EAAE;QAChC,IAAI,CAAC;YACH,IAAI,MAAM,EAAE,OAAO;gBAAE,OAAO;YAC5B,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC;gBAAE,OAAO;YACnD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;gBACjD,GAAG,oBAAoB;gBACvB,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;gBACvC,oBAAoB,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;gBAChD,MAAM;aACP,CAAC,CAAC;YACH,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAsC,EACtC,WAAwB,EACxB,OAAgB,EAChB,OAAsB,EACtB,UAA8B,EAC9B,aAAqB,EACrB,MAAoB;IAEpB,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAE1E,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,IAAI,MAAM,EAAE,OAAO;gBAAE,MAAM;YAC3B,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC,KAAK,EACL,WAAW,EACX,UAAU,EACV,OAAO,EACP,OAAO,EACP,UAAU,EACV,MAAM,CACP,CAAC;YACF,IAAI,MAAM,KAAK,MAAM;gBAAE,MAAM;QAC/B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QACrC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,iCAAiC;QACnC,CAAC;aAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC/C,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC;YAC/B,MAAM,UAAU,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QACpE,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;QAC7B,WAAW,CAAC,aAAa,GAAG,SAAS,CAAC;IACxC,CAAC;IACD,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,IAAI,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,UAAU;YAAE,OAAO;QACnD,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAKpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../src/lib/file-operations/search/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAKpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AA8FzD,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,OAAO,CAAC,aAAa,CAAC,EACtC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,mBAAmB,CAAC,CAwC9B"}
|