@xrkseek/harness 0.5.12 → 0.5.13

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 (69) hide show
  1. package/node_modules/@vscode/ripgrep/LICENSE +13 -0
  2. package/node_modules/@vscode/ripgrep/README.md +33 -0
  3. package/node_modules/@vscode/ripgrep/lib/index.d.ts +1 -0
  4. package/node_modules/@vscode/ripgrep/lib/index.js +19 -0
  5. package/node_modules/@vscode/ripgrep/package.json +39 -0
  6. package/node_modules/@vscode/ripgrep-win32-x64/LICENSE +13 -0
  7. package/node_modules/@vscode/ripgrep-win32-x64/README.md +5 -0
  8. package/node_modules/@vscode/ripgrep-win32-x64/bin/rg.exe +0 -0
  9. package/node_modules/@vscode/ripgrep-win32-x64/package.json +19 -0
  10. package/node_modules/@xrkseek/exec-fs/dist/index.d.ts +7 -9
  11. package/node_modules/@xrkseek/exec-fs/dist/index.d.ts.map +1 -1
  12. package/node_modules/@xrkseek/exec-fs/dist/index.js +60 -19
  13. package/node_modules/@xrkseek/exec-fs/dist/index.js.map +1 -1
  14. package/node_modules/@xrkseek/exec-fs/dist/ripgrep.d.ts +63 -0
  15. package/node_modules/@xrkseek/exec-fs/dist/ripgrep.d.ts.map +1 -0
  16. package/node_modules/@xrkseek/exec-fs/dist/ripgrep.js +363 -0
  17. package/node_modules/@xrkseek/exec-fs/dist/ripgrep.js.map +1 -0
  18. package/node_modules/@xrkseek/exec-fs/dist/search.d.ts +32 -3
  19. package/node_modules/@xrkseek/exec-fs/dist/search.d.ts.map +1 -1
  20. package/node_modules/@xrkseek/exec-fs/dist/search.js +189 -72
  21. package/node_modules/@xrkseek/exec-fs/dist/search.js.map +1 -1
  22. package/node_modules/@xrkseek/exec-fs/package.json +2 -0
  23. package/node_modules/@xrkseek/exec-shell/dist/index.d.ts +14 -1
  24. package/node_modules/@xrkseek/exec-shell/dist/index.d.ts.map +1 -1
  25. package/node_modules/@xrkseek/exec-shell/dist/index.js +37 -5
  26. package/node_modules/@xrkseek/exec-shell/dist/index.js.map +1 -1
  27. package/node_modules/@xrkseek/exec-subprocess/dist/capture.d.ts +73 -0
  28. package/node_modules/@xrkseek/exec-subprocess/dist/capture.d.ts.map +1 -0
  29. package/node_modules/@xrkseek/exec-subprocess/dist/capture.js +240 -0
  30. package/node_modules/@xrkseek/exec-subprocess/dist/capture.js.map +1 -0
  31. package/node_modules/@xrkseek/exec-subprocess/dist/index.d.ts +19 -0
  32. package/node_modules/@xrkseek/exec-subprocess/dist/index.d.ts.map +1 -1
  33. package/node_modules/@xrkseek/exec-subprocess/dist/index.js +58 -21
  34. package/node_modules/@xrkseek/exec-subprocess/dist/index.js.map +1 -1
  35. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts +6 -7
  36. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts.map +1 -1
  37. package/node_modules/@xrkseek/preset-harness/dist/preset.js +14 -11
  38. package/node_modules/@xrkseek/preset-harness/dist/preset.js.map +1 -1
  39. package/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
  40. package/node_modules/@xrkseek/preset-harness/package.json +1 -0
  41. package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
  42. package/node_modules/@xrkseek/preset-server/dist/tsconfig.tsbuildinfo +1 -1
  43. package/node_modules/@xrkseek/server-config/dist/home.d.ts +1 -2
  44. package/node_modules/@xrkseek/server-config/dist/home.d.ts.map +1 -1
  45. package/node_modules/@xrkseek/server-config/dist/home.js +1 -2
  46. package/node_modules/@xrkseek/server-config/dist/home.js.map +1 -1
  47. package/node_modules/@xrkseek/server-face/dist/face-schema.d.ts.map +1 -1
  48. package/node_modules/@xrkseek/server-face/dist/face-schema.js +12 -2
  49. package/node_modules/@xrkseek/server-face/dist/face-schema.js.map +1 -1
  50. package/node_modules/@xrkseek/server-face/dist/session-status.d.ts +11 -0
  51. package/node_modules/@xrkseek/server-face/dist/session-status.d.ts.map +1 -1
  52. package/node_modules/@xrkseek/server-face/dist/session-status.js +32 -7
  53. package/node_modules/@xrkseek/server-face/dist/session-status.js.map +1 -1
  54. package/node_modules/@xrkseek/server-face/dist/settings-schemas.d.ts.map +1 -1
  55. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js +9 -1
  56. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js.map +1 -1
  57. package/node_modules/@xrkseek/server-face/dist/ws-send-queue.d.ts +10 -0
  58. package/node_modules/@xrkseek/server-face/dist/ws-send-queue.d.ts.map +1 -1
  59. package/node_modules/@xrkseek/server-face/dist/ws-send-queue.js +68 -3
  60. package/node_modules/@xrkseek/server-face/dist/ws-send-queue.js.map +1 -1
  61. package/node_modules/@xrkseek/server-host/dist/index.d.ts +7 -8
  62. package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
  63. package/node_modules/@xrkseek/server-host/dist/index.js +22 -27
  64. package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
  65. package/node_modules/@xrkseek/xrk-file-reference-local/dist/search.d.ts +1 -1
  66. package/node_modules/@xrkseek/xrk-file-reference-local/dist/search.d.ts.map +1 -1
  67. package/node_modules/@xrkseek/xrk-file-reference-local/dist/search.js +23 -1
  68. package/node_modules/@xrkseek/xrk-file-reference-local/dist/search.js.map +1 -1
  69. package/package.json +5 -1
@@ -0,0 +1,363 @@
1
+ /**
2
+ * Packaged ripgrep backend for `glob` / `grep`.
3
+ *
4
+ * Provenance (adapted, not Cordis-coupled):
5
+ * - DSH `@deepseek-ai/dsh-tool-fs-search` `search-core` / `glob` / `grep`
6
+ * (resolveRgPath, `--no-config`, `--files` / `--json`, VCS excludes, error codes)
7
+ * - pi `@mariozechner/pi-coding-agent` grep (stream `--json`, kill at match limit)
8
+ * - Codex bundled `rg` (packaged binary, no system install)
9
+ *
10
+ * Better than a pure JS walk on monorepos: native ignore rules, mmap search,
11
+ * early kill at `maxResults`. Falls back only when the binary is missing.
12
+ */
13
+ import { spawn } from "node:child_process";
14
+ import { existsSync } from "node:fs";
15
+ import { createInterface } from "node:readline";
16
+ import path from "node:path";
17
+ import { createLocalSubprocess } from "@xrkseek/exec-subprocess";
18
+ import { resolveWithinRoot } from "./paths.js";
19
+ /** Cooperative search budget (ms) — DSH / Claude Code default. */
20
+ export const FS_SEARCH_TIMEOUT_MS = 30_000;
21
+ /** Cap on raw `rg --files` stdout we parse — DSH `RAW_OUTPUT_MAX_BYTES`. */
22
+ export const FS_SEARCH_RAW_OUTPUT_MAX_BYTES = 20_000_000;
23
+ /** DSH `GLOB_VCS_EXCLUDES` — prune VCS stores under `--hidden`. */
24
+ export const FS_GLOB_VCS_EXCLUDES = [
25
+ ".git",
26
+ ".svn",
27
+ ".hg",
28
+ ".bzr",
29
+ ".jj",
30
+ ".sl",
31
+ ];
32
+ /**
33
+ * Extra prune set beyond DSH (DSH glob uses `--no-ignore` and would scrape
34
+ * `node_modules`). We keep gitignore (pi) AND hard-exclude these basenames.
35
+ */
36
+ export const FS_GLOB_HEAVY_EXCLUDES = [
37
+ "node_modules",
38
+ "dist",
39
+ "build",
40
+ "out",
41
+ "coverage",
42
+ ".next",
43
+ ".nuxt",
44
+ ".turbo",
45
+ ".cache",
46
+ ".parcel-cache",
47
+ ".vite",
48
+ "__pycache__",
49
+ ".venv",
50
+ "venv",
51
+ "target",
52
+ ".idea",
53
+ ".gradle",
54
+ ".codegraph",
55
+ ".scratch-opus",
56
+ "Pods",
57
+ ];
58
+ export class RipgrepUnavailableError extends Error {
59
+ constructor(message, options) {
60
+ super(message, options);
61
+ this.name = "RipgrepUnavailableError";
62
+ }
63
+ }
64
+ /** Reject reasons must be Errors; a `catch` binding is typed `unknown`. */
65
+ function errorText(err) {
66
+ return err instanceof Error ? err.message : String(err);
67
+ }
68
+ let rgPathMemo;
69
+ /** DSH `resolveRgPath` — packaged `@vscode/ripgrep`, Electron asar unpack. */
70
+ export function resolveRgPath() {
71
+ rgPathMemo ??= (async () => {
72
+ try {
73
+ const mod = await import("@vscode/ripgrep");
74
+ const p = mod.rgPath;
75
+ if (typeof p !== "string" || !p || !existsSync(p)) {
76
+ throw new RipgrepUnavailableError("packaged ripgrep path missing on disk");
77
+ }
78
+ return process.versions.electron === undefined
79
+ ? p
80
+ : p.replace(/\.asar(?=[\\/])/u, ".asar.unpacked");
81
+ }
82
+ catch (err) {
83
+ if (err instanceof RipgrepUnavailableError)
84
+ throw err;
85
+ throw new RipgrepUnavailableError("packaged ripgrep (@vscode/ripgrep) unavailable", { cause: err });
86
+ }
87
+ })();
88
+ return rgPathMemo;
89
+ }
90
+ /** Test hook. */
91
+ export function clearRgPathCache() {
92
+ rgPathMemo = undefined;
93
+ }
94
+ function excludeGlobs(names) {
95
+ // DSH: bare form prunes during traversal; /** form covers root-at-dir.
96
+ return names.flatMap((name) => [
97
+ `--glob=!**/${name}`,
98
+ `--glob=!**/${name}/**`,
99
+ ]);
100
+ }
101
+ /**
102
+ * DSH `buildGlobCommand` + heavy excludes.
103
+ * Unlike DSH we omit `--no-ignore` (pi: respect `.gitignore`) and still prune
104
+ * generated trees when ignore files are missing.
105
+ */
106
+ export function buildGlobCommand(input) {
107
+ const parts = [
108
+ "--no-config",
109
+ "--files",
110
+ `--glob=${input.pattern}`,
111
+ "--sort=modified",
112
+ "--hidden",
113
+ ...excludeGlobs(FS_GLOB_VCS_EXCLUDES),
114
+ ...excludeGlobs(FS_GLOB_HEAVY_EXCLUDES),
115
+ ];
116
+ if (input.path !== undefined)
117
+ parts.push("--", input.path);
118
+ return parts;
119
+ }
120
+ /**
121
+ * DSH `buildGrepCommand` (+ heavy excludes, optional `-i`).
122
+ * Pattern / include as `--flag=value`; scope behind `--`.
123
+ */
124
+ export function buildGrepCommand(input) {
125
+ const parts = [
126
+ "--no-config",
127
+ "--json",
128
+ `--regexp=${input.pattern}`,
129
+ "--hidden",
130
+ ];
131
+ if (input.caseInsensitive)
132
+ parts.push("--ignore-case");
133
+ if (input.glob !== undefined)
134
+ parts.push(`--glob=${input.glob}`);
135
+ parts.push(...excludeGlobs(FS_GLOB_VCS_EXCLUDES), ...excludeGlobs(FS_GLOB_HEAVY_EXCLUDES));
136
+ if (input.path !== undefined)
137
+ parts.push("--", input.path);
138
+ return parts;
139
+ }
140
+ function malformedRecord(detail, cause) {
141
+ return new Error(`grep received malformed ripgrep --json output (${detail})`, { cause });
142
+ }
143
+ /** DSH `parseRecord` → our `FsGrepHit`. */
144
+ export function parseGrepJsonRecord(line) {
145
+ let parsed;
146
+ try {
147
+ parsed = JSON.parse(line);
148
+ }
149
+ catch (error) {
150
+ throw malformedRecord("a line is not JSON", error);
151
+ }
152
+ if (typeof parsed !== "object" || parsed === null) {
153
+ throw malformedRecord("a record is not an object");
154
+ }
155
+ const record = parsed;
156
+ if (record.type !== "match")
157
+ return undefined;
158
+ if (typeof record.data !== "object" || record.data === null) {
159
+ throw malformedRecord("a match record has no data");
160
+ }
161
+ const data = record.data;
162
+ const pathText = typeof data.path === "object" && data.path !== null
163
+ ? data.path.text
164
+ : undefined;
165
+ if (typeof pathText !== "string") {
166
+ throw malformedRecord("a match record has no path text");
167
+ }
168
+ if (typeof data.line_number !== "number") {
169
+ throw malformedRecord("a match record has no line number");
170
+ }
171
+ if (typeof data.lines !== "object" || data.lines === null) {
172
+ throw malformedRecord("a match record has no line content");
173
+ }
174
+ const lines = data.lines;
175
+ let text;
176
+ if (typeof lines.text === "string") {
177
+ text = lines.text.replace(/\r?\n$/, "");
178
+ }
179
+ else if (typeof lines.bytes === "string") {
180
+ text = "(line is not valid UTF-8)";
181
+ }
182
+ else {
183
+ throw malformedRecord("a match record has neither line text nor bytes");
184
+ }
185
+ return {
186
+ path: pathText.replace(/\\/g, "/"),
187
+ line: data.line_number,
188
+ text: text.length > 400 ? `${text.slice(0, 400)}…` : text,
189
+ };
190
+ }
191
+ export function parseGrepMatches(stdout) {
192
+ const hits = [];
193
+ for (const line of stdout.split("\n")) {
194
+ if (line.length === 0)
195
+ continue;
196
+ const hit = parseGrepJsonRecord(line);
197
+ if (hit !== undefined)
198
+ hits.push(hit);
199
+ }
200
+ return hits;
201
+ }
202
+ function classifyRgFailure(tool, exitCode, stderr) {
203
+ const excerpt = stderr.trim().slice(0, 400);
204
+ if (/regex parse error|error parsing glob/i.test(excerpt)) {
205
+ return new Error(`${tool} pattern rejected by ripgrep${excerpt ? `: ${excerpt}` : ""}`);
206
+ }
207
+ return new Error(`${tool} ripgrep failed (exit ${exitCode})${excerpt ? `: ${excerpt}` : ""}`);
208
+ }
209
+ function toDisplayPath(p, rootAbs) {
210
+ const norm = p.replace(/\\/g, "/");
211
+ if (!path.isAbsolute(p))
212
+ return norm.replace(/^\.\//, "");
213
+ const rel = path.relative(rootAbs, p).replace(/\\/g, "/");
214
+ if (rel === "" || rel === ".")
215
+ return ".";
216
+ if (rel.startsWith(".."))
217
+ return norm;
218
+ return rel;
219
+ }
220
+ /** Glob via packaged rg `--files` (DSH). */
221
+ export async function globWithRipgrep(root, pattern, options) {
222
+ const rootAbs = path.resolve(root);
223
+ const maxResults = options?.maxResults ?? 200;
224
+ const bin = await resolveRgPath();
225
+ const subprocess = createLocalSubprocess();
226
+ const result = await subprocess.spawn([bin, ...buildGlobCommand({ pattern })], {
227
+ cwd: rootAbs,
228
+ timeoutMs: FS_SEARCH_TIMEOUT_MS,
229
+ // Search never needs disk spill; keep the Host loop free of writeSync.
230
+ spill: false,
231
+ });
232
+ if (result.exitCode !== 0 && result.exitCode !== 1) {
233
+ throw classifyRgFailure("glob", result.exitCode ?? -1, result.stderr);
234
+ }
235
+ if (Buffer.byteLength(result.stdout, "utf8") > FS_SEARCH_RAW_OUTPUT_MAX_BYTES) {
236
+ throw new Error(`glob produced more than ${FS_SEARCH_RAW_OUTPUT_MAX_BYTES} bytes of raw output; narrow pattern`);
237
+ }
238
+ const out = [];
239
+ for (const line of result.stdout.split(/\r?\n/)) {
240
+ if (!line)
241
+ continue;
242
+ out.push(toDisplayPath(line, rootAbs));
243
+ if (out.length >= maxResults)
244
+ break;
245
+ }
246
+ return out;
247
+ }
248
+ /**
249
+ * Grep via packaged rg `--json`, streaming + early kill at `maxResults`
250
+ * (pi coding-agent). Avoids buffering multi-MB stdout on hot repos.
251
+ */
252
+ export async function grepWithRipgrep(root, pattern, options) {
253
+ const rootAbs = path.resolve(root);
254
+ const maxResults = options?.maxResults ?? 100;
255
+ const scope = options?.path;
256
+ let scopedPath;
257
+ if (scope !== undefined && scope !== "." && scope !== "") {
258
+ resolveWithinRoot(rootAbs, scope);
259
+ scopedPath = scope;
260
+ }
261
+ const bin = await resolveRgPath();
262
+ const argv = buildGrepCommand({
263
+ pattern,
264
+ ...(scopedPath !== undefined ? { path: scopedPath } : {}),
265
+ ...(options?.glob !== undefined ? { glob: options.glob } : {}),
266
+ ...(options?.caseInsensitive ? { caseInsensitive: true } : {}),
267
+ });
268
+ return await new Promise((resolve, reject) => {
269
+ const child = spawn(bin, argv, {
270
+ cwd: rootAbs,
271
+ stdio: ["ignore", "pipe", "pipe"],
272
+ windowsHide: true,
273
+ });
274
+ const hits = [];
275
+ let stderr = "";
276
+ let settled = false;
277
+ let killedForLimit = false;
278
+ const timer = setTimeout(() => {
279
+ killedForLimit = false;
280
+ try {
281
+ child.kill();
282
+ }
283
+ catch {
284
+ /* ignore */
285
+ }
286
+ }, FS_SEARCH_TIMEOUT_MS);
287
+ const finish = (fn) => {
288
+ if (settled)
289
+ return;
290
+ settled = true;
291
+ clearTimeout(timer);
292
+ fn();
293
+ };
294
+ child.stderr?.setEncoding("utf8");
295
+ child.stderr?.on("data", (chunk) => {
296
+ if (stderr.length < 8_192)
297
+ stderr += chunk;
298
+ });
299
+ const rl = createInterface({ input: child.stdout });
300
+ rl.on("line", (line) => {
301
+ if (settled || hits.length >= maxResults)
302
+ return;
303
+ if (!line.trim())
304
+ return;
305
+ let hit;
306
+ try {
307
+ hit = parseGrepJsonRecord(line);
308
+ }
309
+ catch (err) {
310
+ finish(() => reject(new Error(`ripgrep --json parse failed: ${errorText(err)}`, {
311
+ cause: err,
312
+ })));
313
+ try {
314
+ child.kill();
315
+ }
316
+ catch {
317
+ /* ignore */
318
+ }
319
+ return;
320
+ }
321
+ if (hit === undefined)
322
+ return;
323
+ hits.push({
324
+ ...hit,
325
+ path: toDisplayPath(hit.path, rootAbs),
326
+ });
327
+ if (hits.length >= maxResults) {
328
+ killedForLimit = true;
329
+ try {
330
+ child.kill();
331
+ }
332
+ catch {
333
+ /* ignore */
334
+ }
335
+ }
336
+ });
337
+ child.on("error", (err) => {
338
+ finish(() => reject(new RipgrepUnavailableError(`Failed to run ripgrep: ${err.message}`, {
339
+ cause: err,
340
+ })));
341
+ });
342
+ child.on("close", (code) => {
343
+ rl.close();
344
+ finish(() => {
345
+ if (killedForLimit) {
346
+ resolve(hits);
347
+ return;
348
+ }
349
+ if (code !== 0 && code !== 1 && code !== null) {
350
+ reject(classifyRgFailure("grep", code, stderr));
351
+ return;
352
+ }
353
+ resolve(hits);
354
+ });
355
+ });
356
+ });
357
+ }
358
+ /** True when callers should skip ripgrep (`XRK_FS_SEARCH=js`). */
359
+ export function preferJsSearch() {
360
+ const raw = process.env.XRK_FS_SEARCH?.trim().toLowerCase();
361
+ return raw === "js" || raw === "walk" || raw === "javascript";
362
+ }
363
+ //# sourceMappingURL=ripgrep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ripgrep.js","sourceRoot":"","sources":["../src/ripgrep.ts"],"names":[],"mappings":"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"}
@@ -14,17 +14,46 @@ export interface FsGrepOptions {
14
14
  readonly maxResults?: number;
15
15
  readonly caseInsensitive?: boolean;
16
16
  }
17
+ /** Skip heavy / generated trees so grep/glob stay interactive on monorepos. */
18
+ export declare const FS_SEARCH_SKIP_DIR_NAMES: Set<string>;
19
+ /** Soft walk ceiling (still high enough for late-sorted paths). */
20
+ export declare const FS_SEARCH_WALK_CAP = 100000;
21
+ /** Skip individual files larger than this for content grep. */
22
+ export declare const FS_GREP_MAX_FILE_BYTES = 1000000;
17
23
  /** Convert a posix-ish glob to a RegExp. Supports * and ** segments. */
18
24
  export declare function globToRegExp(pattern: string): RegExp;
19
25
  export declare function matchGlob(relPosix: string, pattern: string): boolean;
26
+ type WalkVisitor = (relPosix: string) => boolean | void | Promise<boolean | void>;
27
+ /**
28
+ * Depth-first walk under `absDir`. Skips junk dir basenames. Invokes `visit`
29
+ * for each file (posix path relative to `rootAbs`). Stop when visit returns
30
+ * false or `cap` files have been visited. Yields periodically so Host LLM /
31
+ * mux work can interleave.
32
+ */
33
+ export declare function walkFilesUnder(absDir: string, rootAbs: string, visit: WalkVisitor, cap?: number): Promise<void>;
34
+ /**
35
+ * In-process glob walk (fallback when packaged ripgrep is unavailable).
36
+ * Matches during the walk and stops at `maxResults`.
37
+ */
38
+ export declare function globWalkUnderRoot(root: string, pattern: string, options?: FsGlobOptions): Promise<readonly string[]>;
20
39
  /**
21
40
  * Collect files under `root` matching `pattern` (posix paths relative to root).
22
- * Walks with a generous traversal cap so later-sorted paths aren't missed;
23
- * only the returned list is cut at `maxResults`.
41
+ * Prefers packaged ripgrep (`@vscode/ripgrep`, Codex / pi / DSH); falls back
42
+ * to {@link globWalkUnderRoot} when the binary is missing. Set `XRK_FS_SEARCH=js`
43
+ * to force the walk.
24
44
  */
25
45
  export declare function globUnderRoot(root: string, pattern: string, options?: FsGlobOptions): Promise<readonly string[]>;
46
+ /** Line scan without allocating a full `split` array (hot for large files). */
47
+ export declare function forEachLine(text: string, fn: (line: string, lineNo: number) => boolean): void;
48
+ /**
49
+ * In-process content search (fallback when packaged ripgrep is unavailable).
50
+ */
51
+ export declare function grepWalkUnderRoot(root: string, pattern: string, options?: FsGrepOptions): Promise<readonly FsGrepHit[]>;
26
52
  /**
27
- * Search file contents under root for a JS RegExp `pattern` string.
53
+ * Search file contents under root. Prefers packaged ripgrep (`--json`);
54
+ * falls back to {@link grepWalkUnderRoot} when the binary is missing.
55
+ * Set `XRK_FS_SEARCH=js` to force the walk.
28
56
  */
29
57
  export declare function grepUnderRoot(root: string, pattern: string, options?: FsGrepOptions): Promise<readonly FsGrepHit[]>;
58
+ export {};
30
59
  //# sourceMappingURL=search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,wDAAwD;IACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmCpD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAGpE;AA8BD;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAmB5B;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAoE/B"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,wDAAwD;IACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,+EAA+E;AAC/E,eAAO,MAAM,wBAAwB,aAsBnC,CAAC;AAEH,mEAAmE;AACnE,eAAO,MAAM,kBAAkB,SAAU,CAAC;AAC1C,+DAA+D;AAC/D,eAAO,MAAM,sBAAsB,UAAY,CAAC;AAIhD,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmCpD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAGpE;AAED,KAAK,WAAW,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AAElF;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,WAAW,EAClB,GAAG,GAAE,MAA2B,GAC/B,OAAO,CAAC,IAAI,CAAC,CAoCf;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAa5B;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAc5B;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,GAC5C,IAAI,CAaN;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CA0E/B;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAc/B"}