@j0hanz/fs-context-mcp 2.0.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/README.md +45 -60
  2. package/dist/config.d.ts +117 -0
  3. package/dist/config.d.ts.map +1 -0
  4. package/dist/config.js +31 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/index.js +2 -2
  7. package/dist/index.js.map +1 -1
  8. package/dist/instructions.md +32 -35
  9. package/dist/lib/constants.d.ts +3 -3
  10. package/dist/lib/constants.d.ts.map +1 -1
  11. package/dist/lib/constants.js +130 -4
  12. package/dist/lib/constants.js.map +1 -1
  13. package/dist/lib/errors.d.ts +1 -1
  14. package/dist/lib/errors.d.ts.map +1 -1
  15. package/dist/lib/errors.js +9 -9
  16. package/dist/lib/errors.js.map +1 -1
  17. package/dist/lib/file-operations/file-info.d.ts +7 -1
  18. package/dist/lib/file-operations/file-info.d.ts.map +1 -1
  19. package/dist/lib/file-operations/file-info.js +84 -8
  20. package/dist/lib/file-operations/file-info.js.map +1 -1
  21. package/dist/lib/file-operations/get-multiple-file-info.d.ts.map +1 -1
  22. package/dist/lib/file-operations/get-multiple-file-info.js +8 -4
  23. package/dist/lib/file-operations/get-multiple-file-info.js.map +1 -1
  24. package/dist/lib/file-operations/glob-engine.d.ts.map +1 -1
  25. package/dist/lib/file-operations/glob-engine.js +190 -26
  26. package/dist/lib/file-operations/glob-engine.js.map +1 -1
  27. package/dist/lib/file-operations/list-directory-entry.d.ts.map +1 -1
  28. package/dist/lib/file-operations/list-directory-entry.js +5 -3
  29. package/dist/lib/file-operations/list-directory-entry.js.map +1 -1
  30. package/dist/lib/file-operations/list-directory-helpers.d.ts.map +1 -1
  31. package/dist/lib/file-operations/list-directory-helpers.js +11 -4
  32. package/dist/lib/file-operations/list-directory-helpers.js.map +1 -1
  33. package/dist/lib/file-operations/list-directory.d.ts +12 -2
  34. package/dist/lib/file-operations/list-directory.d.ts.map +1 -1
  35. package/dist/lib/file-operations/list-directory.js +175 -3
  36. package/dist/lib/file-operations/list-directory.js.map +1 -1
  37. package/dist/lib/file-operations/read-multiple-files-helpers.d.ts.map +1 -1
  38. package/dist/lib/file-operations/read-multiple-files-helpers.js +40 -19
  39. package/dist/lib/file-operations/read-multiple-files-helpers.js.map +1 -1
  40. package/dist/lib/file-operations/read-multiple-files.d.ts +18 -1
  41. package/dist/lib/file-operations/read-multiple-files.d.ts.map +1 -1
  42. package/dist/lib/file-operations/read-multiple-files.js +107 -2
  43. package/dist/lib/file-operations/read-multiple-files.js.map +1 -1
  44. package/dist/lib/file-operations/search/engine.d.ts.map +1 -1
  45. package/dist/lib/file-operations/search/engine.js +7 -2
  46. package/dist/lib/file-operations/search/engine.js.map +1 -1
  47. package/dist/lib/file-operations/search/scan-file.d.ts.map +1 -1
  48. package/dist/lib/file-operations/search/scan-file.js +6 -3
  49. package/dist/lib/file-operations/search/scan-file.js.map +1 -1
  50. package/dist/lib/file-operations/search/scan-runner.d.ts.map +1 -1
  51. package/dist/lib/file-operations/search/scan-runner.js +21 -16
  52. package/dist/lib/file-operations/search/scan-runner.js.map +1 -1
  53. package/dist/lib/file-operations/search-content.d.ts +41 -17
  54. package/dist/lib/file-operations/search-content.d.ts.map +1 -1
  55. package/dist/lib/file-operations/search-content.js +855 -3
  56. package/dist/lib/file-operations/search-content.js.map +1 -1
  57. package/dist/lib/file-operations/search-files-collector.d.ts +2 -2
  58. package/dist/lib/file-operations/search-files-collector.d.ts.map +1 -1
  59. package/dist/lib/file-operations/search-files-collector.js +23 -11
  60. package/dist/lib/file-operations/search-files-collector.js.map +1 -1
  61. package/dist/lib/file-operations/search-files-helpers.d.ts.map +1 -1
  62. package/dist/lib/file-operations/search-files-helpers.js +5 -2
  63. package/dist/lib/file-operations/search-files-helpers.js.map +1 -1
  64. package/dist/lib/file-operations/search-files.d.ts +20 -2
  65. package/dist/lib/file-operations/search-files.d.ts.map +1 -1
  66. package/dist/lib/file-operations/search-files.js +192 -5
  67. package/dist/lib/file-operations/search-files.js.map +1 -1
  68. package/dist/lib/file-operations/search-worker.d.ts +30 -0
  69. package/dist/lib/file-operations/search-worker.d.ts.map +1 -0
  70. package/dist/lib/file-operations/search-worker.js +98 -0
  71. package/dist/lib/file-operations/search-worker.js.map +1 -0
  72. package/dist/lib/fs-helpers/readers/read-modes.d.ts.map +1 -1
  73. package/dist/lib/fs-helpers/readers/read-modes.js +6 -4
  74. package/dist/lib/fs-helpers/readers/read-modes.js.map +1 -1
  75. package/dist/lib/fs-helpers/readers/read-options.d.ts.map +1 -1
  76. package/dist/lib/fs-helpers/readers/read-options.js +8 -3
  77. package/dist/lib/fs-helpers/readers/read-options.js.map +1 -1
  78. package/dist/lib/fs-helpers.d.ts +42 -5
  79. package/dist/lib/fs-helpers.d.ts.map +1 -1
  80. package/dist/lib/fs-helpers.js +479 -5
  81. package/dist/lib/fs-helpers.js.map +1 -1
  82. package/dist/lib/observability/diagnostics-helpers.d.ts +3 -0
  83. package/dist/lib/observability/diagnostics-helpers.d.ts.map +1 -0
  84. package/dist/lib/observability/diagnostics-helpers.js +50 -0
  85. package/dist/lib/observability/diagnostics-helpers.js.map +1 -0
  86. package/dist/lib/observability/diagnostics.d.ts.map +1 -1
  87. package/dist/lib/observability/diagnostics.js +24 -59
  88. package/dist/lib/observability/diagnostics.js.map +1 -1
  89. package/dist/lib/observability.d.ts +15 -0
  90. package/dist/lib/observability.d.ts.map +1 -0
  91. package/dist/lib/observability.js +196 -0
  92. package/dist/lib/observability.js.map +1 -0
  93. package/dist/lib/path-validation/validate-existing.js +1 -1
  94. package/dist/lib/path-validation/validate-existing.js.map +1 -1
  95. package/dist/lib/path-validation.d.ts +18 -5
  96. package/dist/lib/path-validation.d.ts.map +1 -1
  97. package/dist/lib/path-validation.js +340 -5
  98. package/dist/lib/path-validation.js.map +1 -1
  99. package/dist/schemas/inputs/directory.d.ts +1 -1
  100. package/dist/schemas/inputs/directory.d.ts.map +1 -1
  101. package/dist/schemas/inputs/directory.js +1 -12
  102. package/dist/schemas/inputs/directory.js.map +1 -1
  103. package/dist/schemas/inputs/helpers.d.ts +2 -0
  104. package/dist/schemas/inputs/helpers.d.ts.map +1 -0
  105. package/dist/schemas/inputs/helpers.js +13 -0
  106. package/dist/schemas/inputs/helpers.js.map +1 -0
  107. package/dist/schemas/inputs/safe-glob.d.ts +2 -0
  108. package/dist/schemas/inputs/safe-glob.d.ts.map +1 -0
  109. package/dist/schemas/inputs/safe-glob.js +13 -0
  110. package/dist/schemas/inputs/safe-glob.js.map +1 -0
  111. package/dist/schemas/inputs/search.d.ts.map +1 -1
  112. package/dist/schemas/inputs/search.js +2 -13
  113. package/dist/schemas/inputs/search.js.map +1 -1
  114. package/dist/schemas/output-helpers.d.ts +6 -1
  115. package/dist/schemas/output-helpers.d.ts.map +1 -1
  116. package/dist/schemas/output-helpers.js +5 -0
  117. package/dist/schemas/output-helpers.js.map +1 -1
  118. package/dist/schemas/outputs/file-info.d.ts +2 -2
  119. package/dist/schemas/outputs/file-info.d.ts.map +1 -1
  120. package/dist/schemas/outputs/file-info.js +2 -8
  121. package/dist/schemas/outputs/file-info.js.map +1 -1
  122. package/dist/schemas/outputs/read.d.ts.map +1 -1
  123. package/dist/schemas/outputs/read.js +2 -7
  124. package/dist/schemas/outputs/read.js.map +1 -1
  125. package/dist/schemas.d.ts +195 -0
  126. package/dist/schemas.d.ts.map +1 -0
  127. package/dist/schemas.js +234 -0
  128. package/dist/schemas.js.map +1 -0
  129. package/dist/server/roots.d.ts.map +1 -1
  130. package/dist/server/roots.js +19 -15
  131. package/dist/server/roots.js.map +1 -1
  132. package/dist/server.d.ts +10 -2
  133. package/dist/server.d.ts.map +1 -1
  134. package/dist/server.js +208 -10
  135. package/dist/server.js.map +1 -1
  136. package/dist/tools/get-file-info.d.ts.map +1 -1
  137. package/dist/tools/get-file-info.js +5 -1
  138. package/dist/tools/get-file-info.js.map +1 -1
  139. package/dist/tools/get-multiple-file-info.d.ts.map +1 -1
  140. package/dist/tools/get-multiple-file-info.js +6 -3
  141. package/dist/tools/get-multiple-file-info.js.map +1 -1
  142. package/dist/tools/list-directory-formatting.d.ts.map +1 -1
  143. package/dist/tools/list-directory-formatting.js +7 -1
  144. package/dist/tools/list-directory-formatting.js.map +1 -1
  145. package/dist/tools/list-directory.d.ts.map +1 -1
  146. package/dist/tools/list-directory.js +5 -4
  147. package/dist/tools/list-directory.js.map +1 -1
  148. package/dist/tools/read-file.d.ts.map +1 -1
  149. package/dist/tools/read-file.js +9 -4
  150. package/dist/tools/read-file.js.map +1 -1
  151. package/dist/tools/read-multiple-files.d.ts.map +1 -1
  152. package/dist/tools/read-multiple-files.js +9 -4
  153. package/dist/tools/read-multiple-files.js.map +1 -1
  154. package/dist/tools/search-content.d.ts.map +1 -1
  155. package/dist/tools/search-content.js +19 -17
  156. package/dist/tools/search-content.js.map +1 -1
  157. package/dist/tools/search-files.d.ts.map +1 -1
  158. package/dist/tools/search-files.js +15 -12
  159. package/dist/tools/search-files.js.map +1 -1
  160. package/dist/tools/shared/file-info.d.ts +4 -2
  161. package/dist/tools/shared/file-info.d.ts.map +1 -1
  162. package/dist/tools/shared/file-info.js +4 -2
  163. package/dist/tools/shared/file-info.js.map +1 -1
  164. package/dist/tools/shared/resolve-path.d.ts +2 -0
  165. package/dist/tools/shared/resolve-path.d.ts.map +1 -0
  166. package/dist/tools/shared/resolve-path.js +11 -0
  167. package/dist/tools/shared/resolve-path.js.map +1 -0
  168. package/dist/tools/shared/search-formatting.d.ts.map +1 -1
  169. package/dist/tools/shared/search-formatting.js +58 -38
  170. package/dist/tools/shared/search-formatting.js.map +1 -1
  171. package/dist/tools/tool-response.d.ts.map +1 -1
  172. package/dist/tools/tool-response.js +11 -6
  173. package/dist/tools/tool-response.js.map +1 -1
  174. package/dist/tools.d.ts +34 -0
  175. package/dist/tools.d.ts.map +1 -0
  176. package/dist/tools.js +550 -0
  177. package/dist/tools.js.map +1 -0
  178. package/package.json +11 -6
@@ -12,7 +12,6 @@ function buildHeadResult(validPath, content, truncated, head, linesRead, hasMore
12
12
  path: validPath,
13
13
  content,
14
14
  truncated,
15
- totalLines: undefined,
16
15
  readMode: 'head',
17
16
  head,
18
17
  linesRead,
@@ -37,11 +36,14 @@ function assertSizeWithinLimit(size, maxSize, filePath) {
37
36
  }
38
37
  async function readHeadResult(handle, validPath, filePath, normalized) {
39
38
  const head = requireHead(normalized, filePath);
40
- const { content, truncated, linesRead, hasMoreLines } = await readHeadContent(handle, head, {
39
+ const readOptions = {
41
40
  encoding: normalized.encoding,
42
41
  maxSize: normalized.maxSize,
43
- signal: normalized.signal,
44
- });
42
+ };
43
+ if (normalized.signal) {
44
+ readOptions.signal = normalized.signal;
45
+ }
46
+ const { content, truncated, linesRead, hasMoreLines } = await readHeadContent(handle, head, readOptions);
45
47
  return buildHeadResult(validPath, content, truncated, head, linesRead, hasMoreLines);
46
48
  }
47
49
  async function readFullResult(handle, validPath, filePath, stats, normalized) {
@@ -1 +1 @@
1
- {"version":3,"file":"read-modes.js","sourceRoot":"","sources":["../../../../src/lib/fs-helpers/readers/read-modes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read-modes.js","sourceRoot":"","sources":["../../../../src/lib/fs-helpers/readers/read-modes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"read-options.d.ts","sourceRoot":"","sources":["../../../../src/lib/fs-helpers/readers/read-options.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,iBAAiB,CAW5E;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,QAAQ,CAGpE"}
1
+ {"version":3,"file":"read-options.d.ts","sourceRoot":"","sources":["../../../../src/lib/fs-helpers/readers/read-options.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,iBAAiB,CAgB5E;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,QAAQ,CAGpE"}
@@ -1,12 +1,17 @@
1
1
  import { MAX_TEXT_FILE_SIZE } from '../../constants.js';
2
2
  export function normalizeOptions(options) {
3
- return {
3
+ const normalized = {
4
4
  encoding: options.encoding ?? 'utf-8',
5
5
  maxSize: Math.min(options.maxSize ?? MAX_TEXT_FILE_SIZE, MAX_TEXT_FILE_SIZE),
6
- head: options.head,
7
6
  skipBinary: options.skipBinary ?? false,
8
- signal: options.signal,
9
7
  };
8
+ if (options.head !== undefined) {
9
+ normalized.head = options.head;
10
+ }
11
+ if (options.signal) {
12
+ normalized.signal = options.signal;
13
+ }
14
+ return normalized;
10
15
  }
11
16
  export function resolveReadMode(options) {
12
17
  if (options.head !== undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"read-options.js","sourceRoot":"","sources":["../../../../src/lib/fs-helpers/readers/read-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AA+BxD,MAAM,UAAU,gBAAgB,CAAC,OAAwB;IACvD,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO;QACrC,OAAO,EAAE,IAAI,CAAC,GAAG,CACf,OAAO,CAAC,OAAO,IAAI,kBAAkB,EACrC,kBAAkB,CACnB;QACD,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK;QACvC,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAA0B;IACxD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"read-options.js","sourceRoot":"","sources":["../../../../src/lib/fs-helpers/readers/read-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AA+BxD,MAAM,UAAU,gBAAgB,CAAC,OAAwB;IACvD,MAAM,UAAU,GAAsB;QACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO;QACrC,OAAO,EAAE,IAAI,CAAC,GAAG,CACf,OAAO,CAAC,OAAO,IAAI,kBAAkB,EACrC,kBAAkB,CACnB;QACD,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK;KACxC,CAAC;IACF,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IACjC,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACrC,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAA0B;IACxD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,6 +1,43 @@
1
- export { isProbablyBinary } from './fs-helpers/binary-detect.js';
2
- export { processInParallel } from './fs-helpers/concurrency.js';
3
- export { getFileType, isHidden } from './fs-helpers/fs-utils.js';
4
- export { readFile, readFileWithStats } from './fs-helpers/readers/read-file.js';
5
- export { createTimedAbortSignal } from './fs-helpers/abort.js';
1
+ import * as fsp from 'node:fs/promises';
2
+ import type { Stats } from 'node:fs';
3
+ import type { FileType } from '../config.js';
4
+ export declare function assertNotAborted(signal?: AbortSignal, message?: string): void;
5
+ export declare function withAbort<T>(promise: Promise<T>, signal?: AbortSignal): Promise<T>;
6
+ export declare function createTimedAbortSignal(baseSignal: AbortSignal | undefined, timeoutMs?: number): {
7
+ signal: AbortSignal;
8
+ cleanup: () => void;
9
+ };
10
+ interface ParallelResult<R> {
11
+ results: R[];
12
+ errors: {
13
+ index: number;
14
+ error: Error;
15
+ }[];
16
+ }
17
+ export declare function processInParallel<T, R>(items: T[], processor: (item: T) => Promise<R>, concurrency?: number, signal?: AbortSignal): Promise<ParallelResult<R>>;
18
+ export declare function getFileType(stats: Stats): FileType;
19
+ export declare function isHidden(name: string): boolean;
20
+ export declare function isProbablyBinary(filePath: string, existingHandle?: fsp.FileHandle, signal?: AbortSignal): Promise<boolean>;
21
+ type ReadMode = 'head' | 'full';
22
+ export interface ReadFileOptions {
23
+ encoding?: BufferEncoding;
24
+ maxSize?: number;
25
+ head?: number;
26
+ skipBinary?: boolean;
27
+ signal?: AbortSignal;
28
+ }
29
+ export interface ReadFileResult {
30
+ path: string;
31
+ content: string;
32
+ truncated: boolean;
33
+ totalLines?: number;
34
+ readMode: ReadMode;
35
+ head?: number;
36
+ linesRead?: number;
37
+ hasMoreLines?: boolean;
38
+ }
39
+ declare function headFile(handle: fsp.FileHandle, numLines: number, encoding?: BufferEncoding, maxBytesRead?: number, signal?: AbortSignal): Promise<string>;
40
+ export declare function readFileWithStats(filePath: string, validPath: string, stats: Stats, options?: ReadFileOptions): Promise<ReadFileResult>;
41
+ export declare function readFile(filePath: string, options?: ReadFileOptions): Promise<ReadFileResult>;
42
+ export { headFile };
6
43
  //# sourceMappingURL=fs-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fs-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/fs-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"fs-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/fs-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AAExC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAKrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAgB7C,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAO7E;AAUD,wBAAgB,SAAS,CAAC,CAAC,EACzB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,CAAC,CAAC,CAuBZ;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,WAAW,GAAG,SAAS,EACnC,SAAS,CAAC,EAAE,MAAM,GACjB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAc9C;AA4ED,UAAU,cAAc,CAAC,CAAC;IACxB,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,EAAE,CAAC;CAC3C;AA4HD,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAC1C,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAClC,WAAW,GAAE,MAA6B,EAC1C,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAqB5B;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAKlD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9C;AA8DD,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,cAAc,CAAC,EAAE,GAAG,CAAC,UAAU,EAC/B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CAclB;AAQD,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAUD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AA8FD,iBAAe,QAAQ,CACrB,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,cAAwB,EAClC,YAAY,CAAC,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CAkBjB;AAoOD,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CASzB;AAED,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAazB;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -1,6 +1,480 @@
1
- export { isProbablyBinary } from './fs-helpers/binary-detect.js';
2
- export { processInParallel } from './fs-helpers/concurrency.js';
3
- export { getFileType, isHidden } from './fs-helpers/fs-utils.js';
4
- export { readFile, readFileWithStats } from './fs-helpers/readers/read-file.js';
5
- export { createTimedAbortSignal } from './fs-helpers/abort.js';
1
+ import * as fsp from 'node:fs/promises';
2
+ import * as path from 'node:path';
3
+ import { Writable } from 'node:stream';
4
+ import { pipeline } from 'node:stream/promises';
5
+ import { BINARY_CHECK_BUFFER_SIZE, KNOWN_BINARY_EXTENSIONS, MAX_TEXT_FILE_SIZE, PARALLEL_CONCURRENCY, } from './constants.js';
6
+ import { ErrorCode, McpError } from './errors.js';
7
+ import { validateExistingPath } from './path-validation.js';
8
+ function createAbortError(message = 'Operation aborted') {
9
+ const error = new Error(message);
10
+ error.name = 'AbortError';
11
+ return error;
12
+ }
13
+ export function assertNotAborted(signal, message) {
14
+ if (!signal?.aborted)
15
+ return;
16
+ const { reason } = signal;
17
+ if (reason instanceof Error) {
18
+ throw reason;
19
+ }
20
+ throw createAbortError(message);
21
+ }
22
+ function getAbortError(signal, message) {
23
+ const { reason } = signal;
24
+ if (reason instanceof Error) {
25
+ return reason;
26
+ }
27
+ return createAbortError(message);
28
+ }
29
+ export function withAbort(promise, signal) {
30
+ if (!signal)
31
+ return promise;
32
+ if (signal.aborted) {
33
+ throw getAbortError(signal);
34
+ }
35
+ return new Promise((resolve, reject) => {
36
+ const onAbort = () => {
37
+ reject(getAbortError(signal));
38
+ };
39
+ signal.addEventListener('abort', onAbort, { once: true });
40
+ promise
41
+ .then((value) => {
42
+ signal.removeEventListener('abort', onAbort);
43
+ resolve(value);
44
+ })
45
+ .catch((error) => {
46
+ signal.removeEventListener('abort', onAbort);
47
+ reject(error instanceof Error ? error : new Error(String(error)));
48
+ });
49
+ });
50
+ }
51
+ export function createTimedAbortSignal(baseSignal, timeoutMs) {
52
+ if (!baseSignal && !timeoutMs) {
53
+ return createNoopSignal();
54
+ }
55
+ if (!timeoutMs && baseSignal) {
56
+ return createForwardedSignal(baseSignal);
57
+ }
58
+ if (typeof timeoutMs === 'number' && shouldUseAbortAny(baseSignal)) {
59
+ return createAnySignal(baseSignal, timeoutMs);
60
+ }
61
+ return createManualSignal(baseSignal, timeoutMs);
62
+ }
63
+ function createNoopSignal() {
64
+ const controller = new AbortController();
65
+ return { signal: controller.signal, cleanup: () => { } };
66
+ }
67
+ function createForwardedSignal(baseSignal) {
68
+ return { signal: baseSignal, cleanup: () => { } };
69
+ }
70
+ function shouldUseAbortAny(baseSignal) {
71
+ return typeof AbortSignal.any === 'function' && baseSignal !== undefined;
72
+ }
73
+ function createAnySignal(baseSignal, timeoutMs) {
74
+ const timeoutSignal = AbortSignal.timeout(timeoutMs);
75
+ const combined = AbortSignal.any([baseSignal, timeoutSignal]);
76
+ return { signal: combined, cleanup: () => { } };
77
+ }
78
+ function createManualSignal(baseSignal, timeoutMs) {
79
+ const controller = new AbortController();
80
+ const forwardAbort = () => {
81
+ const reason = baseSignal?.reason instanceof Error ? baseSignal.reason : undefined;
82
+ controller.abort(reason);
83
+ };
84
+ if (baseSignal) {
85
+ if (baseSignal.aborted) {
86
+ forwardAbort();
87
+ }
88
+ else {
89
+ baseSignal.addEventListener('abort', forwardAbort, { once: true });
90
+ }
91
+ }
92
+ const timeoutId = createTimeout(controller, timeoutMs);
93
+ const cleanup = () => {
94
+ if (baseSignal) {
95
+ baseSignal.removeEventListener('abort', forwardAbort);
96
+ }
97
+ if (timeoutId) {
98
+ clearTimeout(timeoutId);
99
+ }
100
+ };
101
+ return { signal: controller.signal, cleanup };
102
+ }
103
+ function createTimeout(controller, timeoutMs) {
104
+ if (typeof timeoutMs !== 'number' || !Number.isFinite(timeoutMs)) {
105
+ return undefined;
106
+ }
107
+ return setTimeout(() => {
108
+ controller.abort(createAbortError('Operation timed out'));
109
+ }, timeoutMs);
110
+ }
111
+ function createParallelAbortError() {
112
+ const error = new Error('Operation aborted');
113
+ error.name = 'AbortError';
114
+ return error;
115
+ }
116
+ function createState(items, processor, concurrency, signal) {
117
+ return {
118
+ items,
119
+ processor,
120
+ concurrency,
121
+ results: [],
122
+ errors: [],
123
+ nextIndex: 0,
124
+ aborted: Boolean(signal?.aborted),
125
+ inFlight: new Set(),
126
+ };
127
+ }
128
+ function attachAbortListener(state, signal) {
129
+ if (!signal || signal.aborted)
130
+ return () => { };
131
+ const onAbort = () => {
132
+ state.aborted = true;
133
+ };
134
+ signal.addEventListener('abort', onAbort, { once: true });
135
+ return () => {
136
+ signal.removeEventListener('abort', onAbort);
137
+ };
138
+ }
139
+ function createAbortPromise(signal) {
140
+ if (!signal)
141
+ return undefined;
142
+ if (signal.aborted)
143
+ return Promise.resolve();
144
+ return new Promise((resolve) => {
145
+ const onAbort = () => {
146
+ resolve();
147
+ };
148
+ signal.addEventListener('abort', onAbort, { once: true });
149
+ });
150
+ }
151
+ function canStartNext(state) {
152
+ return (!state.aborted &&
153
+ state.inFlight.size < state.concurrency &&
154
+ state.nextIndex < state.items.length);
155
+ }
156
+ function createTask(item, index, state) {
157
+ return (async () => {
158
+ try {
159
+ const result = await state.processor(item);
160
+ state.results.push(result);
161
+ }
162
+ catch (reason) {
163
+ const error = reason instanceof Error ? reason : new Error(String(reason));
164
+ state.errors.push({ index, error });
165
+ }
166
+ })();
167
+ }
168
+ function queueNextTask(state) {
169
+ const index = state.nextIndex;
170
+ state.nextIndex += 1;
171
+ const item = state.items[index];
172
+ if (item === undefined)
173
+ return;
174
+ const task = createTask(item, index, state);
175
+ state.inFlight.add(task);
176
+ void task.finally(() => {
177
+ state.inFlight.delete(task);
178
+ });
179
+ }
180
+ function startNextTasks(state) {
181
+ while (canStartNext(state)) {
182
+ queueNextTask(state);
183
+ }
184
+ }
185
+ async function drainTasks(state, abortPromise) {
186
+ startNextTasks(state);
187
+ while (state.inFlight.size > 0) {
188
+ if (state.aborted)
189
+ return;
190
+ const raceTargets = abortPromise
191
+ ? [...state.inFlight, abortPromise]
192
+ : [...state.inFlight];
193
+ await Promise.race(raceTargets);
194
+ startNextTasks(state);
195
+ }
196
+ }
197
+ export async function processInParallel(items, processor, concurrency = PARALLEL_CONCURRENCY, signal) {
198
+ const state = createState(items, processor, concurrency, signal);
199
+ const abortPromise = createAbortPromise(signal);
200
+ if (items.length === 0) {
201
+ return { results: state.results, errors: state.errors };
202
+ }
203
+ const detachAbort = attachAbortListener(state, signal);
204
+ try {
205
+ await drainTasks(state, abortPromise);
206
+ }
207
+ finally {
208
+ detachAbort();
209
+ }
210
+ if (state.aborted) {
211
+ throw createParallelAbortError();
212
+ }
213
+ return { results: state.results, errors: state.errors };
214
+ }
215
+ export function getFileType(stats) {
216
+ if (stats.isFile())
217
+ return 'file';
218
+ if (stats.isDirectory())
219
+ return 'directory';
220
+ if (stats.isSymbolicLink())
221
+ return 'symlink';
222
+ return 'other';
223
+ }
224
+ export function isHidden(name) {
225
+ return name.startsWith('.');
226
+ }
227
+ function hasKnownBinaryExtension(filePath) {
228
+ const ext = path.extname(filePath).toLowerCase();
229
+ return KNOWN_BINARY_EXTENSIONS.has(ext);
230
+ }
231
+ async function withFileHandle(filePath, fn, existingHandle, signal) {
232
+ if (existingHandle) {
233
+ return fn(existingHandle);
234
+ }
235
+ const effectivePath = await validateExistingPath(filePath, signal);
236
+ const handle = await withAbort(fsp.open(effectivePath, 'r'), signal);
237
+ try {
238
+ return await fn(handle);
239
+ }
240
+ finally {
241
+ await handle.close().catch((error) => {
242
+ console.error('Failed to close file handle:', error);
243
+ });
244
+ }
245
+ }
246
+ async function readProbe(handle, signal) {
247
+ const buffer = Buffer.allocUnsafe(BINARY_CHECK_BUFFER_SIZE);
248
+ const { bytesRead } = await withAbort(handle.read(buffer, 0, BINARY_CHECK_BUFFER_SIZE, 0), signal);
249
+ if (bytesRead === 0) {
250
+ return Buffer.alloc(0);
251
+ }
252
+ return buffer.subarray(0, bytesRead);
253
+ }
254
+ function hasUtf8Bom(slice) {
255
+ return (slice.length >= 3 &&
256
+ slice[0] === 0xef &&
257
+ slice[1] === 0xbb &&
258
+ slice[2] === 0xbf);
259
+ }
260
+ function hasUtf16Bom(slice) {
261
+ return (slice.length >= 2 &&
262
+ ((slice[0] === 0xff && slice[1] === 0xfe) ||
263
+ (slice[0] === 0xfe && slice[1] === 0xff)));
264
+ }
265
+ export async function isProbablyBinary(filePath, existingHandle, signal) {
266
+ if (hasKnownBinaryExtension(filePath)) {
267
+ return true;
268
+ }
269
+ return withFileHandle(filePath, async (handle) => {
270
+ const slice = await readProbe(handle, signal);
271
+ return isBinarySlice(slice);
272
+ }, existingHandle, signal);
273
+ }
274
+ function isBinarySlice(slice) {
275
+ if (slice.length === 0)
276
+ return false;
277
+ if (hasUtf8Bom(slice) || hasUtf16Bom(slice))
278
+ return false;
279
+ return slice.includes(0);
280
+ }
281
+ function normalizeOptions(options) {
282
+ const normalized = {
283
+ encoding: options.encoding ?? 'utf-8',
284
+ maxSize: Math.min(options.maxSize ?? MAX_TEXT_FILE_SIZE, MAX_TEXT_FILE_SIZE),
285
+ skipBinary: options.skipBinary ?? false,
286
+ };
287
+ if (options.head !== undefined) {
288
+ normalized.head = options.head;
289
+ }
290
+ if (options.signal) {
291
+ normalized.signal = options.signal;
292
+ }
293
+ return normalized;
294
+ }
295
+ function resolveReadMode(options) {
296
+ if (options.head !== undefined)
297
+ return 'head';
298
+ return 'full';
299
+ }
300
+ const STREAM_CHUNK_SIZE = 64 * 1024;
301
+ function createTooLargeError(bytesRead, maxSize, requestedPath) {
302
+ return new McpError(ErrorCode.E_TOO_LARGE, `File exceeds maximum size (${bytesRead} > ${maxSize}): ${requestedPath}`, requestedPath, { size: bytesRead, maxSize });
303
+ }
304
+ class BufferCollector extends Writable {
305
+ #chunks = [];
306
+ #totalSize = 0;
307
+ #maxSize;
308
+ #requestedPath;
309
+ constructor(maxSize, requestedPath) {
310
+ super({ autoDestroy: true });
311
+ this.#maxSize = maxSize;
312
+ this.#requestedPath = requestedPath;
313
+ }
314
+ _write(chunk, _encoding, callback) {
315
+ const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
316
+ this.#totalSize += buffer.length;
317
+ if (this.#totalSize > this.#maxSize) {
318
+ callback(createTooLargeError(this.#totalSize, this.#maxSize, this.#requestedPath));
319
+ return;
320
+ }
321
+ this.#chunks.push(buffer);
322
+ callback();
323
+ }
324
+ getResult() {
325
+ return Buffer.concat(this.#chunks, this.#totalSize);
326
+ }
327
+ }
328
+ async function readFileBufferWithLimit(handle, maxSize, requestedPath, signal) {
329
+ const stream = handle.createReadStream({
330
+ start: 0,
331
+ highWaterMark: STREAM_CHUNK_SIZE,
332
+ autoClose: false,
333
+ emitClose: false,
334
+ });
335
+ const collector = new BufferCollector(maxSize, requestedPath);
336
+ await pipeline(stream, collector, { signal });
337
+ return collector.getResult();
338
+ }
339
+ async function headFile(handle, numLines, encoding = 'utf-8', maxBytesRead, signal) {
340
+ assertNotAborted(signal);
341
+ const lines = [];
342
+ let estimatedBytes = 0;
343
+ const hasMaxBytes = maxBytesRead !== undefined;
344
+ for await (const line of handle.readLines({ encoding, signal })) {
345
+ lines.push(line);
346
+ if (lines.length >= numLines)
347
+ break;
348
+ if (!hasMaxBytes)
349
+ continue;
350
+ estimatedBytes += Buffer.byteLength(line, encoding) + 1;
351
+ if (estimatedBytes >= maxBytesRead)
352
+ break;
353
+ }
354
+ return lines.join('\n');
355
+ }
356
+ function countLines(content) {
357
+ if (content.length === 0)
358
+ return 0;
359
+ let count = 1;
360
+ for (let i = 0; i < content.length; i++) {
361
+ if (content.charCodeAt(i) === 10)
362
+ count++;
363
+ }
364
+ return count;
365
+ }
366
+ async function readHeadContent(handle, head, options) {
367
+ const content = await headFile(handle, head, options.encoding, options.maxSize, options.signal);
368
+ const linesRead = countLines(content);
369
+ const hasMoreLines = linesRead >= head;
370
+ return {
371
+ content,
372
+ truncated: hasMoreLines,
373
+ linesRead,
374
+ hasMoreLines,
375
+ };
376
+ }
377
+ async function readFullContent(handle, encoding, maxSize, requestedPath, signal) {
378
+ const buffer = await readFileBufferWithLimit(handle, maxSize, requestedPath, signal);
379
+ const content = buffer.toString(encoding);
380
+ return { content, totalLines: countLines(content) };
381
+ }
382
+ async function assertNotBinary(validPath, filePath, normalized) {
383
+ assertNotAborted(normalized.signal);
384
+ const isBinary = await isProbablyBinary(validPath, undefined, normalized.signal);
385
+ if (!isBinary)
386
+ return;
387
+ throw new McpError(ErrorCode.E_INVALID_INPUT, `Binary file detected: ${filePath}. Refusing to read as text.`, filePath);
388
+ }
389
+ function requireHead(normalized, filePath) {
390
+ if (normalized.head === undefined) {
391
+ throw new McpError(ErrorCode.E_INVALID_INPUT, 'Missing head option', filePath);
392
+ }
393
+ return normalized.head;
394
+ }
395
+ function buildHeadResult(validPath, content, truncated, head, linesRead, hasMoreLines) {
396
+ return {
397
+ path: validPath,
398
+ content,
399
+ truncated,
400
+ readMode: 'head',
401
+ head,
402
+ linesRead,
403
+ hasMoreLines,
404
+ };
405
+ }
406
+ function buildFullResult(validPath, content, totalLines) {
407
+ return {
408
+ path: validPath,
409
+ content,
410
+ truncated: false,
411
+ totalLines,
412
+ readMode: 'full',
413
+ linesRead: totalLines,
414
+ hasMoreLines: false,
415
+ };
416
+ }
417
+ function assertSizeWithinLimit(size, maxSize, filePath) {
418
+ if (size <= maxSize)
419
+ return;
420
+ throw new McpError(ErrorCode.E_TOO_LARGE, `File too large: ${size} bytes (max: ${maxSize} bytes). Use head parameter to preview the first N lines.`, filePath, { size, maxSize });
421
+ }
422
+ async function readHeadResult(handle, validPath, filePath, normalized) {
423
+ const head = requireHead(normalized, filePath);
424
+ const readOptions = {
425
+ encoding: normalized.encoding,
426
+ maxSize: normalized.maxSize,
427
+ };
428
+ if (normalized.signal) {
429
+ readOptions.signal = normalized.signal;
430
+ }
431
+ const { content, truncated, linesRead, hasMoreLines } = await readHeadContent(handle, head, readOptions);
432
+ return buildHeadResult(validPath, content, truncated, head, linesRead, hasMoreLines);
433
+ }
434
+ async function readFullResult(handle, validPath, filePath, stats, normalized) {
435
+ assertSizeWithinLimit(stats.size, normalized.maxSize, filePath);
436
+ const { content, totalLines } = await readFullContent(handle, normalized.encoding, normalized.maxSize, filePath, normalized.signal);
437
+ return buildFullResult(validPath, content, totalLines);
438
+ }
439
+ async function readByMode(handle, validPath, filePath, stats, normalized) {
440
+ const mode = resolveReadMode(normalized);
441
+ if (mode === 'head') {
442
+ return await readHeadResult(handle, validPath, filePath, normalized);
443
+ }
444
+ return await readFullResult(handle, validPath, filePath, stats, normalized);
445
+ }
446
+ function assertFileStats(filePath, stats) {
447
+ if (!stats.isFile()) {
448
+ throw new McpError(ErrorCode.E_NOT_FILE, `Not a file: ${filePath}`, filePath);
449
+ }
450
+ }
451
+ async function readFileWithStatsInternal(filePath, validPath, stats, normalized) {
452
+ assertNotAborted(normalized.signal);
453
+ assertFileStats(filePath, stats);
454
+ if (normalized.skipBinary) {
455
+ await assertNotBinary(validPath, filePath, normalized);
456
+ }
457
+ assertNotAborted(normalized.signal);
458
+ const handle = await withAbort(fsp.open(validPath, 'r'), normalized.signal);
459
+ try {
460
+ return await readByMode(handle, validPath, filePath, stats, normalized);
461
+ }
462
+ finally {
463
+ await handle.close();
464
+ }
465
+ }
466
+ export async function readFileWithStats(filePath, validPath, stats, options = {}) {
467
+ const normalized = normalizeOptions(options);
468
+ assertNotAborted(normalized.signal);
469
+ return await readFileWithStatsInternal(filePath, validPath, stats, normalized);
470
+ }
471
+ export async function readFile(filePath, options = {}) {
472
+ const normalized = normalizeOptions(options);
473
+ assertNotAborted(normalized.signal);
474
+ const validPath = await validateExistingPath(filePath, normalized.signal);
475
+ assertNotAborted(normalized.signal);
476
+ const stats = await withAbort(fsp.stat(validPath), normalized.signal);
477
+ return await readFileWithStatsInternal(filePath, validPath, stats, normalized);
478
+ }
479
+ export { headFile };
6
480
  //# sourceMappingURL=fs-helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fs-helpers.js","sourceRoot":"","sources":["../../src/lib/fs-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"fs-helpers.js","sourceRoot":"","sources":["../../src/lib/fs-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function resolveDiagnosticsOk(result: unknown): boolean | undefined;
2
+ export declare function resolveDiagnosticsErrorMessage(error?: unknown): string | undefined;
3
+ //# sourceMappingURL=diagnostics-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics-helpers.d.ts","sourceRoot":"","sources":["../../../src/lib/observability/diagnostics-helpers.ts"],"names":[],"mappings":"AAQA,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CASzE;AA0BD,wBAAgB,8BAA8B,CAC5C,KAAK,CAAC,EAAE,OAAO,GACd,MAAM,GAAG,SAAS,CAMpB"}