@smthrs/std 0.0.0-stage → 1.0.0-rc.12
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/CHANGELOG.md +148 -0
- package/LICENSE +21 -0
- package/README.md +156 -2
- package/dist/cjs/ApplyPatch.d.ts +174 -0
- package/dist/cjs/ApplyPatch.d.ts.map +1 -0
- package/dist/cjs/ApplyPatch.js +309 -0
- package/dist/cjs/ApplyPatch.js.map +7 -0
- package/dist/cjs/Bash.d.ts +390 -0
- package/dist/cjs/Bash.d.ts.map +1 -0
- package/dist/cjs/Bash.js +333 -0
- package/dist/cjs/Bash.js.map +7 -0
- package/dist/cjs/Checkpoints.d.ts +322 -0
- package/dist/cjs/Checkpoints.d.ts.map +1 -0
- package/dist/cjs/Checkpoints.js +233 -0
- package/dist/cjs/Checkpoints.js.map +7 -0
- package/dist/cjs/Container.d.ts +132 -0
- package/dist/cjs/Container.d.ts.map +1 -0
- package/dist/cjs/Container.js +113 -0
- package/dist/cjs/Container.js.map +7 -0
- package/dist/cjs/Edit.d.ts +203 -0
- package/dist/cjs/Edit.d.ts.map +1 -0
- package/dist/cjs/Edit.js +258 -0
- package/dist/cjs/Edit.js.map +7 -0
- package/dist/cjs/ExaWebSearch.d.ts +22 -0
- package/dist/cjs/ExaWebSearch.d.ts.map +1 -0
- package/dist/cjs/ExaWebSearch.js +138 -0
- package/dist/cjs/ExaWebSearch.js.map +7 -0
- package/dist/cjs/Explore.d.ts +328 -0
- package/dist/cjs/Explore.d.ts.map +1 -0
- package/dist/cjs/Explore.js +90 -0
- package/dist/cjs/Explore.js.map +7 -0
- package/dist/cjs/Fetch.d.ts +130 -0
- package/dist/cjs/Fetch.d.ts.map +1 -0
- package/dist/cjs/Fetch.js +64 -0
- package/dist/cjs/Fetch.js.map +7 -0
- package/dist/cjs/Glob.d.ts +204 -0
- package/dist/cjs/Glob.d.ts.map +1 -0
- package/dist/cjs/Glob.js +94 -0
- package/dist/cjs/Glob.js.map +7 -0
- package/dist/cjs/Grep.d.ts +347 -0
- package/dist/cjs/Grep.d.ts.map +1 -0
- package/dist/cjs/Grep.js +181 -0
- package/dist/cjs/Grep.js.map +7 -0
- package/dist/cjs/HttpPost.d.ts +130 -0
- package/dist/cjs/HttpPost.d.ts.map +1 -0
- package/dist/cjs/HttpPost.js +72 -0
- package/dist/cjs/HttpPost.js.map +7 -0
- package/dist/cjs/LanguageServer.d.ts +90 -0
- package/dist/cjs/LanguageServer.d.ts.map +1 -0
- package/dist/cjs/LanguageServer.js +60 -0
- package/dist/cjs/LanguageServer.js.map +7 -0
- package/dist/cjs/Ls.d.ts +164 -0
- package/dist/cjs/Ls.d.ts.map +1 -0
- package/dist/cjs/Ls.js +136 -0
- package/dist/cjs/Ls.js.map +7 -0
- package/dist/cjs/Lsp.d.ts +125 -0
- package/dist/cjs/Lsp.d.ts.map +1 -0
- package/dist/cjs/Lsp.js +137 -0
- package/dist/cjs/Lsp.js.map +7 -0
- package/dist/cjs/Manifest.d.ts +918 -0
- package/dist/cjs/Manifest.d.ts.map +1 -0
- package/dist/cjs/Manifest.js +144 -0
- package/dist/cjs/Manifest.js.map +7 -0
- package/dist/cjs/NativeSearch.d.ts +38 -0
- package/dist/cjs/NativeSearch.d.ts.map +1 -0
- package/dist/cjs/NativeSearch.js +326 -0
- package/dist/cjs/NativeSearch.js.map +7 -0
- package/dist/cjs/NodeLanguageServer.d.ts +128 -0
- package/dist/cjs/NodeLanguageServer.d.ts.map +1 -0
- package/dist/cjs/NodeLanguageServer.js +796 -0
- package/dist/cjs/NodeLanguageServer.js.map +7 -0
- package/dist/cjs/PortableSearch.d.ts +36 -0
- package/dist/cjs/PortableSearch.d.ts.map +1 -0
- package/dist/cjs/PortableSearch.js +240 -0
- package/dist/cjs/PortableSearch.js.map +7 -0
- package/dist/cjs/Probe.d.ts +193 -0
- package/dist/cjs/Probe.d.ts.map +1 -0
- package/dist/cjs/Probe.js +134 -0
- package/dist/cjs/Probe.js.map +7 -0
- package/dist/cjs/Read.d.ts +189 -0
- package/dist/cjs/Read.d.ts.map +1 -0
- package/dist/cjs/Read.js +223 -0
- package/dist/cjs/Read.js.map +7 -0
- package/dist/cjs/Relocate.d.ts +73 -0
- package/dist/cjs/Relocate.d.ts.map +1 -0
- package/dist/cjs/Relocate.js +72 -0
- package/dist/cjs/Relocate.js.map +7 -0
- package/dist/cjs/RemoteSearch.d.ts +54 -0
- package/dist/cjs/RemoteSearch.d.ts.map +1 -0
- package/dist/cjs/RemoteSearch.js +134 -0
- package/dist/cjs/RemoteSearch.js.map +7 -0
- package/dist/cjs/Search.d.ts +163 -0
- package/dist/cjs/Search.d.ts.map +1 -0
- package/dist/cjs/Search.js +51 -0
- package/dist/cjs/Search.js.map +7 -0
- package/dist/cjs/SearchConformance.d.ts +115 -0
- package/dist/cjs/SearchConformance.d.ts.map +1 -0
- package/dist/cjs/SearchConformance.js +172 -0
- package/dist/cjs/SearchConformance.js.map +7 -0
- package/dist/cjs/SearchContract.d.ts +114 -0
- package/dist/cjs/SearchContract.d.ts.map +1 -0
- package/dist/cjs/SearchContract.js +339 -0
- package/dist/cjs/SearchContract.js.map +7 -0
- package/dist/cjs/ShellCommand.d.ts +164 -0
- package/dist/cjs/ShellCommand.d.ts.map +1 -0
- package/dist/cjs/ShellCommand.js +102 -0
- package/dist/cjs/ShellCommand.js.map +7 -0
- package/dist/cjs/StdError.d.ts +55 -0
- package/dist/cjs/StdError.d.ts.map +1 -0
- package/dist/cjs/StdError.js +74 -0
- package/dist/cjs/StdError.js.map +7 -0
- package/dist/cjs/TestRun.d.ts +311 -0
- package/dist/cjs/TestRun.d.ts.map +1 -0
- package/dist/cjs/TestRun.js +228 -0
- package/dist/cjs/TestRun.js.map +7 -0
- package/dist/cjs/TestRunner.d.ts +102 -0
- package/dist/cjs/TestRunner.d.ts.map +1 -0
- package/dist/cjs/TestRunner.js +54 -0
- package/dist/cjs/TestRunner.js.map +7 -0
- package/dist/cjs/TreeFingerprint.d.ts +140 -0
- package/dist/cjs/TreeFingerprint.d.ts.map +1 -0
- package/dist/cjs/TreeFingerprint.js +87 -0
- package/dist/cjs/TreeFingerprint.js.map +7 -0
- package/dist/cjs/UpdatePlan.d.ts +152 -0
- package/dist/cjs/UpdatePlan.d.ts.map +1 -0
- package/dist/cjs/UpdatePlan.js +87 -0
- package/dist/cjs/UpdatePlan.js.map +7 -0
- package/dist/cjs/WebFetch.d.ts +134 -0
- package/dist/cjs/WebFetch.d.ts.map +1 -0
- package/dist/cjs/WebFetch.js +140 -0
- package/dist/cjs/WebFetch.js.map +7 -0
- package/dist/cjs/WebSearch.d.ts +181 -0
- package/dist/cjs/WebSearch.d.ts.map +1 -0
- package/dist/cjs/WebSearch.js +86 -0
- package/dist/cjs/WebSearch.js.map +7 -0
- package/dist/cjs/Write.d.ts +147 -0
- package/dist/cjs/Write.d.ts.map +1 -0
- package/dist/cjs/Write.js +122 -0
- package/dist/cjs/Write.js.map +7 -0
- package/dist/cjs/index.d.ts +129 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +101 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/internal/ApplyPatch.d.ts +145 -0
- package/dist/cjs/internal/ApplyPatch.d.ts.map +1 -0
- package/dist/cjs/internal/ApplyPatch.js +462 -0
- package/dist/cjs/internal/ApplyPatch.js.map +7 -0
- package/dist/cjs/internal/CodexText.d.ts +73 -0
- package/dist/cjs/internal/CodexText.d.ts.map +1 -0
- package/dist/cjs/internal/CodexText.js +108 -0
- package/dist/cjs/internal/CodexText.js.map +7 -0
- package/dist/cjs/internal/Declaration.d.ts +49 -0
- package/dist/cjs/internal/Declaration.d.ts.map +1 -0
- package/dist/cjs/internal/Declaration.js +46 -0
- package/dist/cjs/internal/Declaration.js.map +7 -0
- package/dist/cjs/internal/Diagnostics.d.ts +77 -0
- package/dist/cjs/internal/Diagnostics.d.ts.map +1 -0
- package/dist/cjs/internal/Diagnostics.js +89 -0
- package/dist/cjs/internal/Diagnostics.js.map +7 -0
- package/dist/cjs/internal/EnvelopePrecheck.d.ts +69 -0
- package/dist/cjs/internal/EnvelopePrecheck.d.ts.map +1 -0
- package/dist/cjs/internal/EnvelopePrecheck.js +323 -0
- package/dist/cjs/internal/EnvelopePrecheck.js.map +7 -0
- package/dist/cjs/internal/Exec.d.ts +151 -0
- package/dist/cjs/internal/Exec.d.ts.map +1 -0
- package/dist/cjs/internal/Exec.js +207 -0
- package/dist/cjs/internal/Exec.js.map +7 -0
- package/dist/cjs/internal/FileMutation.d.ts +109 -0
- package/dist/cjs/internal/FileMutation.d.ts.map +1 -0
- package/dist/cjs/internal/FileMutation.js +116 -0
- package/dist/cjs/internal/FileMutation.js.map +7 -0
- package/dist/cjs/internal/FsFailure.d.ts +38 -0
- package/dist/cjs/internal/FsFailure.d.ts.map +1 -0
- package/dist/cjs/internal/FsFailure.js +40 -0
- package/dist/cjs/internal/FsFailure.js.map +7 -0
- package/dist/cjs/internal/GitWorktree.d.ts +108 -0
- package/dist/cjs/internal/GitWorktree.d.ts.map +1 -0
- package/dist/cjs/internal/GitWorktree.js +276 -0
- package/dist/cjs/internal/GitWorktree.js.map +7 -0
- package/dist/cjs/internal/Grouping.d.ts +51 -0
- package/dist/cjs/internal/Grouping.d.ts.map +1 -0
- package/dist/cjs/internal/Grouping.js +83 -0
- package/dist/cjs/internal/Grouping.js.map +7 -0
- package/dist/cjs/internal/Html.d.ts +20 -0
- package/dist/cjs/internal/Html.d.ts.map +1 -0
- package/dist/cjs/internal/Html.js +81 -0
- package/dist/cjs/internal/Html.js.map +7 -0
- package/dist/cjs/internal/Http.d.ts +95 -0
- package/dist/cjs/internal/Http.d.ts.map +1 -0
- package/dist/cjs/internal/Http.js +153 -0
- package/dist/cjs/internal/Http.js.map +7 -0
- package/dist/cjs/internal/HttpNetwork.d.ts +27 -0
- package/dist/cjs/internal/HttpNetwork.d.ts.map +1 -0
- package/dist/cjs/internal/HttpNetwork.js +146 -0
- package/dist/cjs/internal/HttpNetwork.js.map +7 -0
- package/dist/cjs/internal/Ignore.d.ts +37 -0
- package/dist/cjs/internal/Ignore.d.ts.map +1 -0
- package/dist/cjs/internal/Ignore.js +100 -0
- package/dist/cjs/internal/Ignore.js.map +7 -0
- package/dist/cjs/internal/LinearRegex.d.ts +19 -0
- package/dist/cjs/internal/LinearRegex.d.ts.map +1 -0
- package/dist/cjs/internal/LinearRegex.js +166 -0
- package/dist/cjs/internal/LinearRegex.js.map +7 -0
- package/dist/cjs/internal/Match.d.ts +85 -0
- package/dist/cjs/internal/Match.d.ts.map +1 -0
- package/dist/cjs/internal/Match.js +99 -0
- package/dist/cjs/internal/Match.js.map +7 -0
- package/dist/cjs/internal/Paths.d.ts +23 -0
- package/dist/cjs/internal/Paths.d.ts.map +1 -0
- package/dist/cjs/internal/Paths.js +52 -0
- package/dist/cjs/internal/Paths.js.map +7 -0
- package/dist/cjs/internal/Preserve.d.ts +25 -0
- package/dist/cjs/internal/Preserve.d.ts.map +1 -0
- package/dist/cjs/internal/Preserve.js +88 -0
- package/dist/cjs/internal/Preserve.js.map +7 -0
- package/dist/cjs/internal/Prune.d.ts +35 -0
- package/dist/cjs/internal/Prune.d.ts.map +1 -0
- package/dist/cjs/internal/Prune.js +54 -0
- package/dist/cjs/internal/Prune.js.map +7 -0
- package/dist/cjs/internal/RemoteTree.d.ts +60 -0
- package/dist/cjs/internal/RemoteTree.d.ts.map +1 -0
- package/dist/cjs/internal/RemoteTree.js +123 -0
- package/dist/cjs/internal/RemoteTree.js.map +7 -0
- package/dist/cjs/internal/SearchContract.d.ts +63 -0
- package/dist/cjs/internal/SearchContract.d.ts.map +1 -0
- package/dist/cjs/internal/SearchContract.js +46 -0
- package/dist/cjs/internal/SearchContract.js.map +7 -0
- package/dist/cjs/internal/Symbols.d.ts +39 -0
- package/dist/cjs/internal/Symbols.d.ts.map +1 -0
- package/dist/cjs/internal/Symbols.js +59 -0
- package/dist/cjs/internal/Symbols.js.map +7 -0
- package/dist/cjs/internal/Tar.d.ts +23 -0
- package/dist/cjs/internal/Tar.d.ts.map +1 -0
- package/dist/cjs/internal/Tar.js +86 -0
- package/dist/cjs/internal/Tar.js.map +7 -0
- package/dist/cjs/internal/TestReport.d.ts +52 -0
- package/dist/cjs/internal/TestReport.d.ts.map +1 -0
- package/dist/cjs/internal/TestReport.js +131 -0
- package/dist/cjs/internal/TestReport.js.map +7 -0
- package/dist/cjs/internal/Text.d.ts +125 -0
- package/dist/cjs/internal/Text.d.ts.map +1 -0
- package/dist/cjs/internal/Text.js +85 -0
- package/dist/cjs/internal/Text.js.map +7 -0
- package/dist/cjs/internal/Url.d.ts +13 -0
- package/dist/cjs/internal/Url.d.ts.map +1 -0
- package/dist/cjs/internal/Url.js +35 -0
- package/dist/cjs/internal/Url.js.map +7 -0
- package/dist/cjs/internal/Walk.d.ts +72 -0
- package/dist/cjs/internal/Walk.d.ts.map +1 -0
- package/dist/cjs/internal/Walk.js +108 -0
- package/dist/cjs/internal/Walk.js.map +7 -0
- package/dist/cjs/package.json +1 -0
- package/dist/esm/ApplyPatch.d.ts +174 -0
- package/dist/esm/ApplyPatch.d.ts.map +1 -0
- package/dist/esm/ApplyPatch.js +346 -0
- package/dist/esm/ApplyPatch.js.map +1 -0
- package/dist/esm/Bash.d.ts +390 -0
- package/dist/esm/Bash.d.ts.map +1 -0
- package/dist/esm/Bash.js +514 -0
- package/dist/esm/Bash.js.map +1 -0
- package/dist/esm/Checkpoints.d.ts +322 -0
- package/dist/esm/Checkpoints.d.ts.map +1 -0
- package/dist/esm/Checkpoints.js +396 -0
- package/dist/esm/Checkpoints.js.map +1 -0
- package/dist/esm/Container.d.ts +132 -0
- package/dist/esm/Container.d.ts.map +1 -0
- package/dist/esm/Container.js +151 -0
- package/dist/esm/Container.js.map +1 -0
- package/dist/esm/Edit.d.ts +203 -0
- package/dist/esm/Edit.d.ts.map +1 -0
- package/dist/esm/Edit.js +296 -0
- package/dist/esm/Edit.js.map +1 -0
- package/dist/esm/ExaWebSearch.d.ts +22 -0
- package/dist/esm/ExaWebSearch.d.ts.map +1 -0
- package/dist/esm/ExaWebSearch.js +107 -0
- package/dist/esm/ExaWebSearch.js.map +1 -0
- package/dist/esm/Explore.d.ts +328 -0
- package/dist/esm/Explore.d.ts.map +1 -0
- package/dist/esm/Explore.js +106 -0
- package/dist/esm/Explore.js.map +1 -0
- package/dist/esm/Fetch.d.ts +130 -0
- package/dist/esm/Fetch.d.ts.map +1 -0
- package/dist/esm/Fetch.js +91 -0
- package/dist/esm/Fetch.js.map +1 -0
- package/dist/esm/Glob.d.ts +204 -0
- package/dist/esm/Glob.d.ts.map +1 -0
- package/dist/esm/Glob.js +177 -0
- package/dist/esm/Glob.js.map +1 -0
- package/dist/esm/Grep.d.ts +347 -0
- package/dist/esm/Grep.d.ts.map +1 -0
- package/dist/esm/Grep.js +289 -0
- package/dist/esm/Grep.js.map +1 -0
- package/dist/esm/HttpPost.d.ts +130 -0
- package/dist/esm/HttpPost.d.ts.map +1 -0
- package/dist/esm/HttpPost.js +89 -0
- package/dist/esm/HttpPost.js.map +1 -0
- package/dist/esm/LanguageServer.d.ts +90 -0
- package/dist/esm/LanguageServer.d.ts.map +1 -0
- package/dist/esm/LanguageServer.js +57 -0
- package/dist/esm/LanguageServer.js.map +1 -0
- package/dist/esm/Ls.d.ts +164 -0
- package/dist/esm/Ls.d.ts.map +1 -0
- package/dist/esm/Ls.js +178 -0
- package/dist/esm/Ls.js.map +1 -0
- package/dist/esm/Lsp.d.ts +125 -0
- package/dist/esm/Lsp.d.ts.map +1 -0
- package/dist/esm/Lsp.js +165 -0
- package/dist/esm/Lsp.js.map +1 -0
- package/dist/esm/Manifest.d.ts +918 -0
- package/dist/esm/Manifest.d.ts.map +1 -0
- package/dist/esm/Manifest.js +153 -0
- package/dist/esm/Manifest.js.map +1 -0
- package/dist/esm/NativeSearch.d.ts +38 -0
- package/dist/esm/NativeSearch.d.ts.map +1 -0
- package/dist/esm/NativeSearch.js +378 -0
- package/dist/esm/NativeSearch.js.map +1 -0
- package/dist/esm/NodeLanguageServer.d.ts +128 -0
- package/dist/esm/NodeLanguageServer.d.ts.map +1 -0
- package/dist/esm/NodeLanguageServer.js +843 -0
- package/dist/esm/NodeLanguageServer.js.map +1 -0
- package/dist/esm/PortableSearch.d.ts +36 -0
- package/dist/esm/PortableSearch.d.ts.map +1 -0
- package/dist/esm/PortableSearch.js +256 -0
- package/dist/esm/PortableSearch.js.map +1 -0
- package/dist/esm/Probe.d.ts +193 -0
- package/dist/esm/Probe.d.ts.map +1 -0
- package/dist/esm/Probe.js +225 -0
- package/dist/esm/Probe.js.map +1 -0
- package/dist/esm/Read.d.ts +189 -0
- package/dist/esm/Read.d.ts.map +1 -0
- package/dist/esm/Read.js +300 -0
- package/dist/esm/Read.js.map +1 -0
- package/dist/esm/Relocate.d.ts +73 -0
- package/dist/esm/Relocate.d.ts.map +1 -0
- package/dist/esm/Relocate.js +153 -0
- package/dist/esm/Relocate.js.map +1 -0
- package/dist/esm/RemoteSearch.d.ts +54 -0
- package/dist/esm/RemoteSearch.d.ts.map +1 -0
- package/dist/esm/RemoteSearch.js +162 -0
- package/dist/esm/RemoteSearch.js.map +1 -0
- package/dist/esm/Search.d.ts +163 -0
- package/dist/esm/Search.d.ts.map +1 -0
- package/dist/esm/Search.js +47 -0
- package/dist/esm/Search.js.map +1 -0
- package/dist/esm/SearchConformance.d.ts +115 -0
- package/dist/esm/SearchConformance.d.ts.map +1 -0
- package/dist/esm/SearchConformance.js +193 -0
- package/dist/esm/SearchConformance.js.map +1 -0
- package/dist/esm/SearchContract.d.ts +114 -0
- package/dist/esm/SearchContract.d.ts.map +1 -0
- package/dist/esm/SearchContract.js +461 -0
- package/dist/esm/SearchContract.js.map +1 -0
- package/dist/esm/ShellCommand.d.ts +164 -0
- package/dist/esm/ShellCommand.d.ts.map +1 -0
- package/dist/esm/ShellCommand.js +159 -0
- package/dist/esm/ShellCommand.js.map +1 -0
- package/dist/esm/StdError.d.ts +55 -0
- package/dist/esm/StdError.d.ts.map +1 -0
- package/dist/esm/StdError.js +71 -0
- package/dist/esm/StdError.js.map +1 -0
- package/dist/esm/TestRun.d.ts +311 -0
- package/dist/esm/TestRun.d.ts.map +1 -0
- package/dist/esm/TestRun.js +316 -0
- package/dist/esm/TestRun.js.map +1 -0
- package/dist/esm/TestRunner.d.ts +102 -0
- package/dist/esm/TestRunner.d.ts.map +1 -0
- package/dist/esm/TestRunner.js +68 -0
- package/dist/esm/TestRunner.js.map +1 -0
- package/dist/esm/TreeFingerprint.d.ts +140 -0
- package/dist/esm/TreeFingerprint.d.ts.map +1 -0
- package/dist/esm/TreeFingerprint.js +170 -0
- package/dist/esm/TreeFingerprint.js.map +1 -0
- package/dist/esm/UpdatePlan.d.ts +152 -0
- package/dist/esm/UpdatePlan.d.ts.map +1 -0
- package/dist/esm/UpdatePlan.js +129 -0
- package/dist/esm/UpdatePlan.js.map +1 -0
- package/dist/esm/WebFetch.d.ts +134 -0
- package/dist/esm/WebFetch.d.ts.map +1 -0
- package/dist/esm/WebFetch.js +151 -0
- package/dist/esm/WebFetch.js.map +1 -0
- package/dist/esm/WebSearch.d.ts +181 -0
- package/dist/esm/WebSearch.d.ts.map +1 -0
- package/dist/esm/WebSearch.js +134 -0
- package/dist/esm/WebSearch.js.map +1 -0
- package/dist/esm/Write.d.ts +147 -0
- package/dist/esm/Write.d.ts.map +1 -0
- package/dist/esm/Write.js +144 -0
- package/dist/esm/Write.js.map +1 -0
- package/dist/esm/index.d.ts +129 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +129 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/ApplyPatch.d.ts +145 -0
- package/dist/esm/internal/ApplyPatch.d.ts.map +1 -0
- package/dist/esm/internal/ApplyPatch.js +489 -0
- package/dist/esm/internal/ApplyPatch.js.map +1 -0
- package/dist/esm/internal/CodexText.d.ts +73 -0
- package/dist/esm/internal/CodexText.d.ts.map +1 -0
- package/dist/esm/internal/CodexText.js +156 -0
- package/dist/esm/internal/CodexText.js.map +1 -0
- package/dist/esm/internal/Declaration.d.ts +49 -0
- package/dist/esm/internal/Declaration.d.ts.map +1 -0
- package/dist/esm/internal/Declaration.js +42 -0
- package/dist/esm/internal/Declaration.js.map +1 -0
- package/dist/esm/internal/Diagnostics.d.ts +77 -0
- package/dist/esm/internal/Diagnostics.d.ts.map +1 -0
- package/dist/esm/internal/Diagnostics.js +99 -0
- package/dist/esm/internal/Diagnostics.js.map +1 -0
- package/dist/esm/internal/EnvelopePrecheck.d.ts +69 -0
- package/dist/esm/internal/EnvelopePrecheck.d.ts.map +1 -0
- package/dist/esm/internal/EnvelopePrecheck.js +426 -0
- package/dist/esm/internal/EnvelopePrecheck.js.map +1 -0
- package/dist/esm/internal/Exec.d.ts +151 -0
- package/dist/esm/internal/Exec.d.ts.map +1 -0
- package/dist/esm/internal/Exec.js +285 -0
- package/dist/esm/internal/Exec.js.map +1 -0
- package/dist/esm/internal/FileMutation.d.ts +109 -0
- package/dist/esm/internal/FileMutation.d.ts.map +1 -0
- package/dist/esm/internal/FileMutation.js +123 -0
- package/dist/esm/internal/FileMutation.js.map +1 -0
- package/dist/esm/internal/FsFailure.d.ts +38 -0
- package/dist/esm/internal/FsFailure.d.ts.map +1 -0
- package/dist/esm/internal/FsFailure.js +39 -0
- package/dist/esm/internal/FsFailure.js.map +1 -0
- package/dist/esm/internal/GitWorktree.d.ts +108 -0
- package/dist/esm/internal/GitWorktree.d.ts.map +1 -0
- package/dist/esm/internal/GitWorktree.js +352 -0
- package/dist/esm/internal/GitWorktree.js.map +1 -0
- package/dist/esm/internal/Grouping.d.ts +51 -0
- package/dist/esm/internal/Grouping.d.ts.map +1 -0
- package/dist/esm/internal/Grouping.js +99 -0
- package/dist/esm/internal/Grouping.js.map +1 -0
- package/dist/esm/internal/Html.d.ts +20 -0
- package/dist/esm/internal/Html.d.ts.map +1 -0
- package/dist/esm/internal/Html.js +70 -0
- package/dist/esm/internal/Html.js.map +1 -0
- package/dist/esm/internal/Http.d.ts +95 -0
- package/dist/esm/internal/Http.d.ts.map +1 -0
- package/dist/esm/internal/Http.js +154 -0
- package/dist/esm/internal/Http.js.map +1 -0
- package/dist/esm/internal/HttpNetwork.d.ts +27 -0
- package/dist/esm/internal/HttpNetwork.d.ts.map +1 -0
- package/dist/esm/internal/HttpNetwork.js +114 -0
- package/dist/esm/internal/HttpNetwork.js.map +1 -0
- package/dist/esm/internal/Ignore.d.ts +37 -0
- package/dist/esm/internal/Ignore.d.ts.map +1 -0
- package/dist/esm/internal/Ignore.js +128 -0
- package/dist/esm/internal/Ignore.js.map +1 -0
- package/dist/esm/internal/LinearRegex.d.ts +19 -0
- package/dist/esm/internal/LinearRegex.d.ts.map +1 -0
- package/dist/esm/internal/LinearRegex.js +176 -0
- package/dist/esm/internal/LinearRegex.js.map +1 -0
- package/dist/esm/internal/Match.d.ts +85 -0
- package/dist/esm/internal/Match.d.ts.map +1 -0
- package/dist/esm/internal/Match.js +142 -0
- package/dist/esm/internal/Match.js.map +1 -0
- package/dist/esm/internal/Paths.d.ts +23 -0
- package/dist/esm/internal/Paths.d.ts.map +1 -0
- package/dist/esm/internal/Paths.js +40 -0
- package/dist/esm/internal/Paths.js.map +1 -0
- package/dist/esm/internal/Preserve.d.ts +25 -0
- package/dist/esm/internal/Preserve.d.ts.map +1 -0
- package/dist/esm/internal/Preserve.js +70 -0
- package/dist/esm/internal/Preserve.js.map +1 -0
- package/dist/esm/internal/Prune.d.ts +35 -0
- package/dist/esm/internal/Prune.d.ts.map +1 -0
- package/dist/esm/internal/Prune.js +60 -0
- package/dist/esm/internal/Prune.js.map +1 -0
- package/dist/esm/internal/RemoteTree.d.ts +60 -0
- package/dist/esm/internal/RemoteTree.d.ts.map +1 -0
- package/dist/esm/internal/RemoteTree.js +132 -0
- package/dist/esm/internal/RemoteTree.js.map +1 -0
- package/dist/esm/internal/SearchContract.d.ts +63 -0
- package/dist/esm/internal/SearchContract.d.ts.map +1 -0
- package/dist/esm/internal/SearchContract.js +66 -0
- package/dist/esm/internal/SearchContract.js.map +1 -0
- package/dist/esm/internal/Symbols.d.ts +39 -0
- package/dist/esm/internal/Symbols.d.ts.map +1 -0
- package/dist/esm/internal/Symbols.js +79 -0
- package/dist/esm/internal/Symbols.js.map +1 -0
- package/dist/esm/internal/Tar.d.ts +23 -0
- package/dist/esm/internal/Tar.d.ts.map +1 -0
- package/dist/esm/internal/Tar.js +97 -0
- package/dist/esm/internal/Tar.js.map +1 -0
- package/dist/esm/internal/TestReport.d.ts +52 -0
- package/dist/esm/internal/TestReport.d.ts.map +1 -0
- package/dist/esm/internal/TestReport.js +172 -0
- package/dist/esm/internal/TestReport.js.map +1 -0
- package/dist/esm/internal/Text.d.ts +125 -0
- package/dist/esm/internal/Text.d.ts.map +1 -0
- package/dist/esm/internal/Text.js +141 -0
- package/dist/esm/internal/Text.js.map +1 -0
- package/dist/esm/internal/Url.d.ts +13 -0
- package/dist/esm/internal/Url.d.ts.map +1 -0
- package/dist/esm/internal/Url.js +27 -0
- package/dist/esm/internal/Url.js.map +1 -0
- package/dist/esm/internal/Walk.d.ts +72 -0
- package/dist/esm/internal/Walk.d.ts.map +1 -0
- package/dist/esm/internal/Walk.js +126 -0
- package/dist/esm/internal/Walk.js.map +1 -0
- package/docs/README.md +119 -0
- package/docs/api.md +499 -0
- package/docs/concepts/effects-and-capabilities.md +138 -0
- package/docs/concepts/flows-and-handlers.md +115 -0
- package/docs/concepts/limits-and-disclosure.md +105 -0
- package/docs/concepts/search-contract.md +182 -0
- package/docs/guides/bind-the-standard-flows.md +116 -0
- package/docs/guides/implement-a-search-peer.md +133 -0
- package/docs/guides/pin-a-checkpoint.md +161 -0
- package/docs/guides/query-a-language-server.md +257 -0
- package/docs/guides/reach-the-network.md +141 -0
- package/docs/guides/read-and-edit-a-file.md +240 -0
- package/docs/guides/run-a-shell-command.md +236 -0
- package/docs/guides/run-the-test-suite.md +154 -0
- package/docs/guides/search-a-workspace.md +148 -0
- package/docs/installation.md +115 -0
- package/docs/quickstart.md +125 -0
- package/docs/reference/flows.md +556 -0
- package/docs/troubleshooting.md +347 -0
- package/package.json +449 -3
- package/src/ApplyPatch.ts +458 -0
- package/src/Bash.ts +619 -0
- package/src/Checkpoints.ts +589 -0
- package/src/Container.ts +212 -0
- package/src/Edit.ts +366 -0
- package/src/ExaWebSearch.ts +145 -0
- package/src/Explore.ts +139 -0
- package/src/Fetch.ts +117 -0
- package/src/Glob.ts +200 -0
- package/src/Grep.ts +320 -0
- package/src/HttpPost.ts +120 -0
- package/src/LanguageServer.ts +110 -0
- package/src/Ls.ts +228 -0
- package/src/Lsp.ts +184 -0
- package/src/Manifest.ts +162 -0
- package/src/NativeSearch.ts +457 -0
- package/src/NodeLanguageServer.ts +1148 -0
- package/src/PortableSearch.ts +284 -0
- package/src/Probe.ts +284 -0
- package/src/Read.ts +359 -0
- package/src/Relocate.ts +166 -0
- package/src/RemoteSearch.ts +199 -0
- package/src/Search.ts +185 -0
- package/src/SearchConformance.ts +288 -0
- package/src/SearchContract.ts +489 -0
- package/src/ShellCommand.ts +201 -0
- package/src/StdError.ts +80 -0
- package/src/TestRun.ts +401 -0
- package/src/TestRunner.ts +119 -0
- package/src/TreeFingerprint.ts +200 -0
- package/src/UpdatePlan.ts +171 -0
- package/src/WebFetch.ts +194 -0
- package/src/WebSearch.ts +165 -0
- package/src/Write.ts +195 -0
- package/src/index.ts +157 -0
- package/src/internal/ApplyPatch.ts +601 -0
- package/src/internal/CodexText.ts +182 -0
- package/src/internal/Declaration.ts +60 -0
- package/src/internal/Diagnostics.ts +134 -0
- package/src/internal/EnvelopePrecheck.ts +489 -0
- package/src/internal/Exec.ts +427 -0
- package/src/internal/FileMutation.ts +231 -0
- package/src/internal/FsFailure.ts +51 -0
- package/src/internal/GitWorktree.ts +491 -0
- package/src/internal/Grouping.ts +106 -0
- package/src/internal/Html.ts +87 -0
- package/src/internal/Http.ts +209 -0
- package/src/internal/HttpNetwork.ts +153 -0
- package/src/internal/Ignore.ts +135 -0
- package/src/internal/LinearRegex.ts +173 -0
- package/src/internal/Match.ts +172 -0
- package/src/internal/Paths.ts +42 -0
- package/src/internal/Preserve.ts +108 -0
- package/src/internal/Prune.ts +62 -0
- package/src/internal/RemoteTree.ts +159 -0
- package/src/internal/SearchContract.ts +77 -0
- package/src/internal/Symbols.ts +88 -0
- package/src/internal/Tar.ts +95 -0
- package/src/internal/TestReport.ts +194 -0
- package/src/internal/Text.ts +185 -0
- package/src/internal/Url.ts +23 -0
- package/src/internal/Walk.ts +176 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Manifest.d.ts","sourceRoot":"","sources":["../../src/Manifest.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAcjC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAG3C;;;;;GAKG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBhB,CAAA;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBnB,CAAA;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;qBAwEizB,CAAC;;;qBAA8tF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAtDtiH,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,KAAK,0LAoBjB,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ,gFAWpB,CAAA"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var Manifest_exports = {};
|
|
30
|
+
__export(Manifest_exports, {
|
|
31
|
+
effectsFor: () => effectsFor,
|
|
32
|
+
flows: () => flows,
|
|
33
|
+
handlers: () => handlers,
|
|
34
|
+
names: () => names,
|
|
35
|
+
readOnly: () => readOnly
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(Manifest_exports);
|
|
38
|
+
var ApplyPatch = __toESM(require("./ApplyPatch.js"), 1);
|
|
39
|
+
var Bash = __toESM(require("./Bash.js"), 1);
|
|
40
|
+
var Edit = __toESM(require("./Edit.js"), 1);
|
|
41
|
+
var Explore = __toESM(require("./Explore.js"), 1);
|
|
42
|
+
var Fetch = __toESM(require("./Fetch.js"), 1);
|
|
43
|
+
var Glob = __toESM(require("./Glob.js"), 1);
|
|
44
|
+
var Grep = __toESM(require("./Grep.js"), 1);
|
|
45
|
+
var HttpPost = __toESM(require("./HttpPost.js"), 1);
|
|
46
|
+
var Ls = __toESM(require("./Ls.js"), 1);
|
|
47
|
+
var Lsp = __toESM(require("./Lsp.js"), 1);
|
|
48
|
+
var Read = __toESM(require("./Read.js"), 1);
|
|
49
|
+
var ShellCommand = __toESM(require("./ShellCommand.js"), 1);
|
|
50
|
+
var TestRun = __toESM(require("./TestRun.js"), 1);
|
|
51
|
+
var UpdatePlan = __toESM(require("./UpdatePlan.js"), 1);
|
|
52
|
+
var WebFetch = __toESM(require("./WebFetch.js"), 1);
|
|
53
|
+
var WebSearch = __toESM(require("./WebSearch.js"), 1);
|
|
54
|
+
var Write = __toESM(require("./Write.js"), 1);
|
|
55
|
+
const flows = Object.freeze({
|
|
56
|
+
[Read.name]: Read.flow,
|
|
57
|
+
[Write.name]: Write.flow,
|
|
58
|
+
[Edit.name]: Edit.flow,
|
|
59
|
+
[Ls.name]: Ls.flow,
|
|
60
|
+
[Glob.name]: Glob.flow,
|
|
61
|
+
[Grep.name]: Grep.flow,
|
|
62
|
+
[Bash.name]: Bash.flow,
|
|
63
|
+
[TestRun.name]: TestRun.flow,
|
|
64
|
+
[ShellCommand.name]: ShellCommand.flow,
|
|
65
|
+
[ApplyPatch.name]: ApplyPatch.flow,
|
|
66
|
+
[UpdatePlan.name]: UpdatePlan.flow,
|
|
67
|
+
[Fetch.name]: Fetch.flow,
|
|
68
|
+
[HttpPost.name]: HttpPost.flow,
|
|
69
|
+
[Explore.name]: Explore.flow,
|
|
70
|
+
[WebFetch.name]: WebFetch.flow,
|
|
71
|
+
[WebSearch.name]: WebSearch.flow,
|
|
72
|
+
[Lsp.name]: Lsp.flow
|
|
73
|
+
});
|
|
74
|
+
const handlers = Object.freeze({
|
|
75
|
+
[Read.name]: Read.run,
|
|
76
|
+
[Write.name]: Write.run,
|
|
77
|
+
[Edit.name]: Edit.run,
|
|
78
|
+
[Ls.name]: Ls.run,
|
|
79
|
+
[Glob.name]: Glob.run,
|
|
80
|
+
[Grep.name]: Grep.run,
|
|
81
|
+
[Bash.name]: Bash.run,
|
|
82
|
+
[TestRun.name]: TestRun.run,
|
|
83
|
+
[ShellCommand.name]: ShellCommand.run,
|
|
84
|
+
[ApplyPatch.name]: ApplyPatch.run,
|
|
85
|
+
[UpdatePlan.name]: UpdatePlan.run,
|
|
86
|
+
[Fetch.name]: Fetch.run,
|
|
87
|
+
[HttpPost.name]: HttpPost.run,
|
|
88
|
+
[WebFetch.name]: WebFetch.run,
|
|
89
|
+
[WebSearch.name]: WebSearch.run,
|
|
90
|
+
[Lsp.name]: Lsp.run
|
|
91
|
+
});
|
|
92
|
+
const effectsFor = Object.freeze({
|
|
93
|
+
[Read.name]: Read.effectsFor,
|
|
94
|
+
[Write.name]: Write.effectsFor,
|
|
95
|
+
[Edit.name]: Edit.effectsFor,
|
|
96
|
+
[Ls.name]: Ls.effectsFor,
|
|
97
|
+
[Glob.name]: Glob.effectsFor,
|
|
98
|
+
[Grep.name]: Grep.effectsFor,
|
|
99
|
+
[Bash.name]: Bash.effectsFor,
|
|
100
|
+
[TestRun.name]: TestRun.effectsFor,
|
|
101
|
+
[ShellCommand.name]: ShellCommand.effectsFor,
|
|
102
|
+
[ApplyPatch.name]: ApplyPatch.effectsFor,
|
|
103
|
+
[UpdatePlan.name]: UpdatePlan.effectsFor,
|
|
104
|
+
[Fetch.name]: Fetch.effectsFor,
|
|
105
|
+
[HttpPost.name]: HttpPost.effectsFor,
|
|
106
|
+
[Explore.name]: Explore.effectsFor,
|
|
107
|
+
[WebFetch.name]: WebFetch.effectsFor,
|
|
108
|
+
[WebSearch.name]: WebSearch.effectsFor,
|
|
109
|
+
[Lsp.name]: Lsp.effectsFor
|
|
110
|
+
});
|
|
111
|
+
const names = Object.freeze(
|
|
112
|
+
[
|
|
113
|
+
Read.name,
|
|
114
|
+
Write.name,
|
|
115
|
+
Edit.name,
|
|
116
|
+
Ls.name,
|
|
117
|
+
Glob.name,
|
|
118
|
+
Grep.name,
|
|
119
|
+
Bash.name,
|
|
120
|
+
TestRun.name,
|
|
121
|
+
ShellCommand.name,
|
|
122
|
+
ApplyPatch.name,
|
|
123
|
+
UpdatePlan.name,
|
|
124
|
+
Fetch.name,
|
|
125
|
+
HttpPost.name,
|
|
126
|
+
Explore.name,
|
|
127
|
+
WebFetch.name,
|
|
128
|
+
WebSearch.name,
|
|
129
|
+
Lsp.name
|
|
130
|
+
]
|
|
131
|
+
);
|
|
132
|
+
const readOnly = Object.freeze(
|
|
133
|
+
[
|
|
134
|
+
Read.name,
|
|
135
|
+
Ls.name,
|
|
136
|
+
Glob.name,
|
|
137
|
+
Grep.name,
|
|
138
|
+
Fetch.name,
|
|
139
|
+
Explore.name,
|
|
140
|
+
WebFetch.name,
|
|
141
|
+
Lsp.name
|
|
142
|
+
]
|
|
143
|
+
);
|
|
144
|
+
//# sourceMappingURL=Manifest.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/Manifest.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Built-in flow declarations and their separately supplied handlers.\n *\n * @since 1.0.0\n */\n\nimport * as ApplyPatch from \"./ApplyPatch.ts\"\nimport * as Bash from \"./Bash.ts\"\nimport * as Edit from \"./Edit.ts\"\nimport * as Explore from \"./Explore.ts\"\nimport * as Fetch from \"./Fetch.ts\"\nimport * as Glob from \"./Glob.ts\"\nimport * as Grep from \"./Grep.ts\"\nimport * as HttpPost from \"./HttpPost.ts\"\nimport * as Ls from \"./Ls.ts\"\nimport * as Lsp from \"./Lsp.ts\"\nimport * as Read from \"./Read.ts\"\nimport * as ShellCommand from \"./ShellCommand.ts\"\nimport * as TestRun from \"./TestRun.ts\"\nimport * as UpdatePlan from \"./UpdatePlan.ts\"\nimport * as WebFetch from \"./WebFetch.ts\"\nimport * as WebSearch from \"./WebSearch.ts\"\nimport * as Write from \"./Write.ts\"\n\n/**\n * Frozen name-to-declaration registry for every standard flow.\n *\n * @category registries\n * @since 1.0.0\n */\nexport const flows = Object.freeze({\n [Read.name]: Read.flow,\n [Write.name]: Write.flow,\n [Edit.name]: Edit.flow,\n [Ls.name]: Ls.flow,\n [Glob.name]: Glob.flow,\n [Grep.name]: Grep.flow,\n [Bash.name]: Bash.flow,\n [TestRun.name]: TestRun.flow,\n [ShellCommand.name]: ShellCommand.flow,\n [ApplyPatch.name]: ApplyPatch.flow,\n [UpdatePlan.name]: UpdatePlan.flow,\n [Fetch.name]: Fetch.flow,\n [HttpPost.name]: HttpPost.flow,\n [Explore.name]: Explore.flow,\n [WebFetch.name]: WebFetch.flow,\n [WebSearch.name]: WebSearch.flow,\n [Lsp.name]: Lsp.flow\n})\n\n/**\n * Frozen name-to-handler registry for executable standard flows.\n *\n * Explore is dynamic and therefore has no handler entry.\n *\n * @category registries\n * @since 1.0.0\n */\nexport const handlers = Object.freeze({\n [Read.name]: Read.run,\n [Write.name]: Write.run,\n [Edit.name]: Edit.run,\n [Ls.name]: Ls.run,\n [Glob.name]: Glob.run,\n [Grep.name]: Grep.run,\n [Bash.name]: Bash.run,\n [TestRun.name]: TestRun.run,\n [ShellCommand.name]: ShellCommand.run,\n [ApplyPatch.name]: ApplyPatch.run,\n [UpdatePlan.name]: UpdatePlan.run,\n [Fetch.name]: Fetch.run,\n [HttpPost.name]: HttpPost.run,\n [WebFetch.name]: WebFetch.run,\n [WebSearch.name]: WebSearch.run,\n [Lsp.name]: Lsp.run\n})\n\n/**\n * Frozen name-to-narrowing registry: the entry point for `effectsFor`.\n *\n * Every flow declares a registry-time worst case in `flow.effects`, and every\n * module also narrows that declaration for one decoded input. Without this map\n * a host holding a flow name and a decoded input has no generic way to reach\n * the narrowing, so it would have to serialize conflicts against the worst case\n * for every call. Explore is included even though it has no handler entry: it\n * is a declaration a seat can be offered, and its envelope narrows the same way.\n *\n * @category registries\n * @since 1.0.0\n */\nexport const effectsFor = Object.freeze({\n [Read.name]: Read.effectsFor,\n [Write.name]: Write.effectsFor,\n [Edit.name]: Edit.effectsFor,\n [Ls.name]: Ls.effectsFor,\n [Glob.name]: Glob.effectsFor,\n [Grep.name]: Grep.effectsFor,\n [Bash.name]: Bash.effectsFor,\n [TestRun.name]: TestRun.effectsFor,\n [ShellCommand.name]: ShellCommand.effectsFor,\n [ApplyPatch.name]: ApplyPatch.effectsFor,\n [UpdatePlan.name]: UpdatePlan.effectsFor,\n [Fetch.name]: Fetch.effectsFor,\n [HttpPost.name]: HttpPost.effectsFor,\n [Explore.name]: Explore.effectsFor,\n [WebFetch.name]: WebFetch.effectsFor,\n [WebSearch.name]: WebSearch.effectsFor,\n [Lsp.name]: Lsp.effectsFor\n})\n\n/**\n * Frozen standard flow names in registry order.\n *\n * @category metadata\n * @since 1.0.0\n */\nexport const names = Object.freeze(\n [\n Read.name,\n Write.name,\n Edit.name,\n Ls.name,\n Glob.name,\n Grep.name,\n Bash.name,\n TestRun.name,\n ShellCommand.name,\n ApplyPatch.name,\n UpdatePlan.name,\n Fetch.name,\n HttpPost.name,\n Explore.name,\n WebFetch.name,\n WebSearch.name,\n Lsp.name\n ] as const\n)\n\n/**\n * Frozen names visible to a seat restricted to read-only flows.\n *\n * Seat policies consume this list instead of duplicating name checks.\n *\n * `websearch` is deliberately absent: its provider contract requires\n * `net:post` authority, which is mutating under the kernel capability\n * taxonomy, so it cannot ride in a read-only seat.\n *\n * @category visibility\n * @since 1.0.0\n */\nexport const readOnly = Object.freeze(\n [\n Read.name,\n Ls.name,\n Glob.name,\n Grep.name,\n Fetch.name,\n Explore.name,\n WebFetch.name,\n Lsp.name\n ] as const\n)\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `rg`-process implementation of the ripgrep search contract.
|
|
3
|
+
*
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
import type * as ChildProcessSpawner from "@smthrs/kernel/ChildProcessSpawner";
|
|
7
|
+
import * as Path from "@smthrs/kernel/Path";
|
|
8
|
+
import { type Context, Layer } from "effect";
|
|
9
|
+
import * as FileSystem from "effect/FileSystem";
|
|
10
|
+
import * as Search from "./Search.ts";
|
|
11
|
+
/**
|
|
12
|
+
* Maximum bytes captured from either stream across one search operation.
|
|
13
|
+
*
|
|
14
|
+
* Native search refuses an overflow instead of truncating because a partial
|
|
15
|
+
* ripgrep stream could make it disagree with the portable peer. The 64 MiB
|
|
16
|
+
* bound is well above real repository listings: 400,000 paths occupy roughly
|
|
17
|
+
* 16 MiB in a typical `rg --files` stream.
|
|
18
|
+
*
|
|
19
|
+
* @category constants
|
|
20
|
+
* @since 1.0.0
|
|
21
|
+
*/
|
|
22
|
+
export declare const MAX_CAPTURE_BYTES = 67108864;
|
|
23
|
+
/**
|
|
24
|
+
* Captures filesystem, path and process services in the native peer.
|
|
25
|
+
* Optional environment declarations overlay the host child-process allowlist.
|
|
26
|
+
*
|
|
27
|
+
* @category constructors
|
|
28
|
+
* @since 1.0.0
|
|
29
|
+
*/
|
|
30
|
+
export declare const make: (services: Context.Context<FileSystem.FileSystem | Path.Path | ChildProcessSpawner.ChildProcessSpawner>, environment?: Readonly<Record<string, string>>) => Search.Search;
|
|
31
|
+
/**
|
|
32
|
+
* Provides the `rg`-driven peer.
|
|
33
|
+
*
|
|
34
|
+
* @category layers
|
|
35
|
+
* @since 1.0.0
|
|
36
|
+
*/
|
|
37
|
+
export declare const layer: Layer.Layer<Search.Search, never, FileSystem.FileSystem | Path.Path | ChildProcessSpawner.ChildProcessSpawner>;
|
|
38
|
+
//# sourceMappingURL=NativeSearch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeSearch.d.ts","sourceRoot":"","sources":["../../src/NativeSearch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,mBAAmB,MAAM,oCAAoC,CAAA;AAC9E,OAAO,KAAK,IAAI,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAE,KAAK,OAAO,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAA;AACpD,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAK/C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAIrC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,WAAa,CAAA;AA8Y3C;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GACf,UAAU,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,EACtG,cAAc,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAC7C,MAAM,CAAC,MAIN,CAAA;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAC7B,MAAM,CAAC,MAAM,EACb,KAAK,EACL,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,mBAAmB,CAI5E,CAAA"}
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var NativeSearch_exports = {};
|
|
30
|
+
__export(NativeSearch_exports, {
|
|
31
|
+
MAX_CAPTURE_BYTES: () => MAX_CAPTURE_BYTES,
|
|
32
|
+
layer: () => layer,
|
|
33
|
+
make: () => make
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(NativeSearch_exports);
|
|
36
|
+
var Path = __toESM(require("@smthrs/kernel/Path"), 1);
|
|
37
|
+
var import_effect = require("effect");
|
|
38
|
+
var FileSystem = __toESM(require("effect/FileSystem"), 1);
|
|
39
|
+
var Exec = __toESM(require("./internal/Exec.js"), 1);
|
|
40
|
+
var Grouping = __toESM(require("./internal/Grouping.js"), 1);
|
|
41
|
+
var import_Text = require("./internal/Text.js");
|
|
42
|
+
var Walk = __toESM(require("./internal/Walk.js"), 1);
|
|
43
|
+
var Search = __toESM(require("./Search.js"), 1);
|
|
44
|
+
var Contract = __toESM(require("./SearchContract.js"), 1);
|
|
45
|
+
var StdError = __toESM(require("./StdError.js"), 1);
|
|
46
|
+
const MAX_CAPTURE_BYTES = 67108864;
|
|
47
|
+
const execute = (cwd, args, environment) => Exec.exec("rg", { args, cwd, env: environment, maxCaptureBytes: MAX_CAPTURE_BYTES, overflow: "refuse" }).pipe(
|
|
48
|
+
import_effect.Effect.mapError(
|
|
49
|
+
(error) => new StdError.StdError({
|
|
50
|
+
code: error.code === "capture_overflow" ? "command_failed" : "provider_unavailable",
|
|
51
|
+
message: error.code === "capture_overflow" ? error.message : "The native ripgrep implementation could not start rg"
|
|
52
|
+
})
|
|
53
|
+
)
|
|
54
|
+
);
|
|
55
|
+
const ignoreFlags = (noIgnore) => [
|
|
56
|
+
"--no-config",
|
|
57
|
+
"--no-require-git",
|
|
58
|
+
"--no-ignore-global",
|
|
59
|
+
"--no-ignore-parent",
|
|
60
|
+
"--no-ignore-exclude",
|
|
61
|
+
"--no-ignore-dot",
|
|
62
|
+
...noIgnore ? ["--no-ignore"] : []
|
|
63
|
+
];
|
|
64
|
+
const rejection = (result) => {
|
|
65
|
+
const message = result.stderr.trim();
|
|
66
|
+
return result.exitCode > 1 && message.length > 0 ? message : void 0;
|
|
67
|
+
};
|
|
68
|
+
const nulSeparated = (stdout) => stdout.split("\0").filter((value) => value.length > 0);
|
|
69
|
+
const preview = (line) => {
|
|
70
|
+
const withoutTerminator = line.replace(/\r?\n$/, "");
|
|
71
|
+
const characters = Array.from(withoutTerminator);
|
|
72
|
+
return (0, import_Text.truncateBytes)(characters.length > 500 ? characters.slice(0, 500).join("") : withoutTerminator, 500, {
|
|
73
|
+
keep: "head"
|
|
74
|
+
}).text;
|
|
75
|
+
};
|
|
76
|
+
const asRecord = (value) => typeof value === "object" && value !== null ? value : void 0;
|
|
77
|
+
const textAt = (record, key) => {
|
|
78
|
+
const nested = asRecord(record?.[key]);
|
|
79
|
+
return typeof nested?.text === "string" ? nested.text : void 0;
|
|
80
|
+
};
|
|
81
|
+
const malformedJson = () => new StdError.StdError({ code: "request_failed", message: "rg returned malformed JSON" });
|
|
82
|
+
const resolveRoot = (input, globs) => import_effect.Effect.gen(function* () {
|
|
83
|
+
const fileSystem = yield* FileSystem.FileSystem;
|
|
84
|
+
const path = yield* Path.Path;
|
|
85
|
+
const included = (relative, basename) => Contract.includedByGlobs(globs, relative, basename);
|
|
86
|
+
const walked = yield* Walk.files(fileSystem, path, input.root, input.hidden, input.noIgnore, included);
|
|
87
|
+
const cwd = walked.explicitFile ? path.dirname(input.root) : input.root;
|
|
88
|
+
const selected = walked.explicitFile ? walked.files : walked.files.filter((file) => included(Walk.relativeForPattern(path, input.root, file), path.basename(file)));
|
|
89
|
+
const links = walked.explicitFile ? [] : yield* Walk.symbolicLinks(fileSystem, selected);
|
|
90
|
+
return {
|
|
91
|
+
cwd,
|
|
92
|
+
targets: selected.filter((_, index) => links[index] !== true).map((file) => path.relative(cwd, file)),
|
|
93
|
+
explicitFile: walked.explicitFile,
|
|
94
|
+
ignored: walked.ignored,
|
|
95
|
+
absolute: (value) => path.normalize(path.join(cwd, value.replace(/^\.\//, "")))
|
|
96
|
+
};
|
|
97
|
+
});
|
|
98
|
+
const executeFiles = (cwd, args, targets, environment) => import_effect.Effect.gen(function* () {
|
|
99
|
+
if (targets.length === 0) {
|
|
100
|
+
return {
|
|
101
|
+
stdout: args.includes("--json") ? `${JSON.stringify({ type: "summary", data: { stats: { searches: 0 } } })}
|
|
102
|
+
` : "",
|
|
103
|
+
stderr: "",
|
|
104
|
+
exitCode: 0
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
const encoder = new TextEncoder();
|
|
108
|
+
const batches = [];
|
|
109
|
+
let batch = [];
|
|
110
|
+
let size = 0;
|
|
111
|
+
for (const target of targets) {
|
|
112
|
+
const bytes = encoder.encode(target).length + 1;
|
|
113
|
+
if (batch.length > 0 && (batch.length >= 256 || size + bytes > 32768)) {
|
|
114
|
+
batches.push(batch);
|
|
115
|
+
batch = [];
|
|
116
|
+
size = 0;
|
|
117
|
+
}
|
|
118
|
+
batch.push(target);
|
|
119
|
+
size += bytes;
|
|
120
|
+
}
|
|
121
|
+
batches.push(batch);
|
|
122
|
+
let stdout = "";
|
|
123
|
+
let stderr = "";
|
|
124
|
+
let stdoutBytes = 0;
|
|
125
|
+
let stderrBytes = 0;
|
|
126
|
+
let exitCode = 0;
|
|
127
|
+
for (const batch2 of batches) {
|
|
128
|
+
const result = yield* execute(cwd, [...args, ...batch2], environment);
|
|
129
|
+
if (rejection(result) !== void 0) return result;
|
|
130
|
+
stdoutBytes += encoder.encode(result.stdout).length;
|
|
131
|
+
stderrBytes += encoder.encode(result.stderr).length;
|
|
132
|
+
if (stdoutBytes > MAX_CAPTURE_BYTES || stderrBytes > MAX_CAPTURE_BYTES) {
|
|
133
|
+
return yield* import_effect.Effect.fail(
|
|
134
|
+
new StdError.StdError({
|
|
135
|
+
code: "command_failed",
|
|
136
|
+
message: `rg ${stdoutBytes > MAX_CAPTURE_BYTES ? "stdout" : "stderr"} exceeded the ${MAX_CAPTURE_BYTES}-byte capture cap`
|
|
137
|
+
})
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
stdout += result.stdout;
|
|
141
|
+
stderr += result.stderr;
|
|
142
|
+
exitCode = Math.max(exitCode, result.exitCode);
|
|
143
|
+
}
|
|
144
|
+
return { stdout, stderr, exitCode };
|
|
145
|
+
});
|
|
146
|
+
const pathOrder = (left, right) => left.file < right.file ? -1 : left.file > right.file ? 1 : left.line - right.line;
|
|
147
|
+
const capMatches = (lines, maxCount) => {
|
|
148
|
+
if (maxCount === void 0) return lines;
|
|
149
|
+
const counted = /* @__PURE__ */ new Map();
|
|
150
|
+
return lines.map((line) => {
|
|
151
|
+
if (line.kind !== "match") return line;
|
|
152
|
+
const seen = counted.get(line.file) ?? 0;
|
|
153
|
+
counted.set(line.file, seen + 1);
|
|
154
|
+
return seen < maxCount ? line : { ...line, kind: "context" };
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
const grep = (input, environment) => import_effect.Effect.gen(function* () {
|
|
158
|
+
const fileSystem = yield* FileSystem.FileSystem;
|
|
159
|
+
const path = yield* Path.Path;
|
|
160
|
+
const root = yield* resolveRoot(input, input.globs);
|
|
161
|
+
const args = [
|
|
162
|
+
"--json",
|
|
163
|
+
"--stats",
|
|
164
|
+
...ignoreFlags(input.noIgnore),
|
|
165
|
+
"--no-messages",
|
|
166
|
+
"--sort",
|
|
167
|
+
"path",
|
|
168
|
+
"--encoding=utf-8",
|
|
169
|
+
"--crlf"
|
|
170
|
+
];
|
|
171
|
+
if (input.hidden) args.push("--hidden");
|
|
172
|
+
if (input.fixedStrings) args.push("--fixed-strings");
|
|
173
|
+
if (input.ignoreCase) args.push("--ignore-case");
|
|
174
|
+
else if (input.smartCase) args.push("--smart-case");
|
|
175
|
+
if (input.beforeContext > 0) args.push("--before-context", String(input.beforeContext));
|
|
176
|
+
if (input.afterContext > 0) args.push("--after-context", String(input.afterContext));
|
|
177
|
+
if (input.maxCount !== void 0) args.push("--max-count", String(input.maxCount));
|
|
178
|
+
args.push("--", input.pattern);
|
|
179
|
+
const binaryArgs = [
|
|
180
|
+
"--files-with-matches",
|
|
181
|
+
"--text",
|
|
182
|
+
"--null",
|
|
183
|
+
...ignoreFlags(input.noIgnore),
|
|
184
|
+
"--no-messages",
|
|
185
|
+
"--sort",
|
|
186
|
+
"path"
|
|
187
|
+
];
|
|
188
|
+
if (input.hidden) binaryArgs.push("--hidden");
|
|
189
|
+
binaryArgs.push("--", "\\x00");
|
|
190
|
+
const [result, binaryResult] = yield* import_effect.Effect.all(
|
|
191
|
+
[
|
|
192
|
+
executeFiles(root.cwd, args, root.targets, environment),
|
|
193
|
+
executeFiles(root.cwd, binaryArgs, root.targets, environment)
|
|
194
|
+
],
|
|
195
|
+
{ concurrency: "unbounded" }
|
|
196
|
+
);
|
|
197
|
+
for (const outcome of [result, binaryResult]) {
|
|
198
|
+
const message = rejection(outcome);
|
|
199
|
+
if (message !== void 0) {
|
|
200
|
+
return yield* import_effect.Effect.fail(new StdError.StdError({ code: "request_failed", message }));
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
const binaryFiles = new Set(nulSeparated(binaryResult.stdout).map(root.absolute));
|
|
204
|
+
if (root.explicitFile && binaryFiles.size > 0) {
|
|
205
|
+
return yield* import_effect.Effect.fail(
|
|
206
|
+
new StdError.StdError({
|
|
207
|
+
code: "binary_file",
|
|
208
|
+
message: `Cannot search binary file: ${input.root}`,
|
|
209
|
+
path: input.root
|
|
210
|
+
})
|
|
211
|
+
);
|
|
212
|
+
}
|
|
213
|
+
const lines = [];
|
|
214
|
+
const files = /* @__PURE__ */ new Set();
|
|
215
|
+
let sawSummary = false;
|
|
216
|
+
for (const encoded of result.stdout.split("\n")) {
|
|
217
|
+
if (encoded.length === 0) continue;
|
|
218
|
+
let event;
|
|
219
|
+
try {
|
|
220
|
+
const decoded = JSON.parse(encoded);
|
|
221
|
+
const record = asRecord(decoded);
|
|
222
|
+
if (record === void 0) return yield* import_effect.Effect.fail(malformedJson());
|
|
223
|
+
event = record;
|
|
224
|
+
} catch {
|
|
225
|
+
return yield* import_effect.Effect.fail(malformedJson());
|
|
226
|
+
}
|
|
227
|
+
const type = event.type;
|
|
228
|
+
const data = asRecord(event.data);
|
|
229
|
+
if (type === "match" || type === "context") {
|
|
230
|
+
const file = textAt(data, "path");
|
|
231
|
+
const text = textAt(data, "lines");
|
|
232
|
+
const line = data?.line_number;
|
|
233
|
+
if (file === void 0 || text === void 0 || typeof line !== "number") {
|
|
234
|
+
return yield* import_effect.Effect.fail(malformedJson());
|
|
235
|
+
}
|
|
236
|
+
const absolute = root.absolute(file);
|
|
237
|
+
files.add(absolute);
|
|
238
|
+
lines.push({ file: absolute, line, text: preview(text), kind: type });
|
|
239
|
+
} else if (type === "begin") {
|
|
240
|
+
if (textAt(data, "path") === void 0) return yield* import_effect.Effect.fail(malformedJson());
|
|
241
|
+
} else if (type === "end") {
|
|
242
|
+
if (textAt(data, "path") === void 0 || data?.binary_offset !== null && typeof data?.binary_offset !== "number") return yield* import_effect.Effect.fail(malformedJson());
|
|
243
|
+
} else if (type === "summary") {
|
|
244
|
+
const stats = asRecord(data?.stats);
|
|
245
|
+
if (typeof stats?.searches !== "number") return yield* import_effect.Effect.fail(malformedJson());
|
|
246
|
+
sawSummary = true;
|
|
247
|
+
} else return yield* import_effect.Effect.fail(malformedJson());
|
|
248
|
+
}
|
|
249
|
+
if (!sawSummary) return yield* import_effect.Effect.fail(malformedJson());
|
|
250
|
+
for (const file of binaryFiles) files.delete(file);
|
|
251
|
+
const visibleLines = capMatches(
|
|
252
|
+
lines.filter((line) => !binaryFiles.has(line.file)).sort(pathOrder),
|
|
253
|
+
input.maxCount
|
|
254
|
+
);
|
|
255
|
+
const grouped = input.filesWithMatches ? [] : Grouping.group(visibleLines);
|
|
256
|
+
const entries = input.filesWithMatches ? [...files].sort() : grouped;
|
|
257
|
+
const truncated = entries.length > input.limit;
|
|
258
|
+
const shown = grouped.slice(0, input.limit);
|
|
259
|
+
const contents = /* @__PURE__ */ new Map();
|
|
260
|
+
if (input.symbols) {
|
|
261
|
+
for (const file of new Set(shown.map((match) => match.file))) {
|
|
262
|
+
const bytes = yield* import_effect.Effect.orElseSucceed(fileSystem.readFile(file), () => void 0);
|
|
263
|
+
if (bytes !== void 0) contents.set(file, Grouping.sourceLines(new TextDecoder().decode(bytes)));
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
const unsatisfiable = entries.length > 0 ? void 0 : yield* Contract.unsatisfiableNotice({
|
|
267
|
+
fileSystem,
|
|
268
|
+
path,
|
|
269
|
+
root: input.root,
|
|
270
|
+
globs: input.globs,
|
|
271
|
+
hidden: input.hidden,
|
|
272
|
+
noIgnore: input.noIgnore,
|
|
273
|
+
ignored: root.ignored
|
|
274
|
+
});
|
|
275
|
+
return {
|
|
276
|
+
matches: Grouping.annotate(shown, contents),
|
|
277
|
+
files: input.filesWithMatches ? [...files].sort().slice(0, input.limit) : [],
|
|
278
|
+
filesSearched: root.targets.length,
|
|
279
|
+
skippedBinary: binaryFiles.size,
|
|
280
|
+
truncated,
|
|
281
|
+
...truncated ? { notice: (0, import_Text.notice)(input.filesWithMatches ? "files" : "matches", input.limit, entries.length) } : {},
|
|
282
|
+
...unsatisfiable === void 0 ? {} : { notice: unsatisfiable }
|
|
283
|
+
};
|
|
284
|
+
});
|
|
285
|
+
const glob = (input, environment) => import_effect.Effect.gen(function* () {
|
|
286
|
+
const fileSystem = yield* FileSystem.FileSystem;
|
|
287
|
+
const path = yield* Path.Path;
|
|
288
|
+
const root = yield* resolveRoot(input, [input.pattern]);
|
|
289
|
+
const args = ["--files", "--null", ...ignoreFlags(input.noIgnore), "--no-messages", "--sort", "path"];
|
|
290
|
+
if (input.hidden) args.push("--hidden");
|
|
291
|
+
args.push("--");
|
|
292
|
+
const result = yield* executeFiles(root.cwd, args, root.targets, environment);
|
|
293
|
+
const rejected = rejection(result);
|
|
294
|
+
if (rejected !== void 0) {
|
|
295
|
+
return yield* import_effect.Effect.fail(new StdError.StdError({ code: "invalid_pattern", message: rejected }));
|
|
296
|
+
}
|
|
297
|
+
const paths = nulSeparated(result.stdout).map(root.absolute).filter(
|
|
298
|
+
(file) => root.explicitFile || Contract.includedByGlobs([input.pattern], Walk.relativeForPattern(path, input.root, file), path.basename(file))
|
|
299
|
+
).sort();
|
|
300
|
+
const shown = paths.slice(0, input.limit);
|
|
301
|
+
const unsatisfiable = paths.length > 0 ? void 0 : yield* Contract.unsatisfiableNotice({
|
|
302
|
+
fileSystem,
|
|
303
|
+
path,
|
|
304
|
+
root: input.root,
|
|
305
|
+
globs: [input.pattern],
|
|
306
|
+
hidden: input.hidden,
|
|
307
|
+
noIgnore: input.noIgnore,
|
|
308
|
+
ignored: root.ignored
|
|
309
|
+
});
|
|
310
|
+
return {
|
|
311
|
+
paths: shown,
|
|
312
|
+
total: paths.length,
|
|
313
|
+
truncated: paths.length > input.limit,
|
|
314
|
+
...paths.length > input.limit ? { notice: (0, import_Text.notice)("entries", shown.length, paths.length) } : {},
|
|
315
|
+
...unsatisfiable === void 0 ? {} : { notice: unsatisfiable }
|
|
316
|
+
};
|
|
317
|
+
});
|
|
318
|
+
const make = (services, environment) => Search.make({
|
|
319
|
+
grep: (input) => import_effect.Effect.provide(grep(input, environment), services),
|
|
320
|
+
glob: (input) => import_effect.Effect.provide(glob(input, environment), services)
|
|
321
|
+
});
|
|
322
|
+
const layer = import_effect.Layer.effect(
|
|
323
|
+
Search.Search,
|
|
324
|
+
import_effect.Effect.map(import_effect.Effect.context(), make)
|
|
325
|
+
);
|
|
326
|
+
//# sourceMappingURL=NativeSearch.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/NativeSearch.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * The `rg`-process implementation of the ripgrep search contract.\n *\n * @since 1.0.0\n */\n\nimport type * as ChildProcessSpawner from \"@smthrs/kernel/ChildProcessSpawner\"\nimport * as Path from \"@smthrs/kernel/Path\"\nimport { type Context, Effect, Layer } from \"effect\"\nimport * as FileSystem from \"effect/FileSystem\"\nimport * as Exec from \"./internal/Exec.ts\"\nimport * as Grouping from \"./internal/Grouping.ts\"\nimport { notice, truncateBytes } from \"./internal/Text.ts\"\nimport * as Walk from \"./internal/Walk.ts\"\nimport * as Search from \"./Search.ts\"\nimport * as Contract from \"./SearchContract.ts\"\nimport * as StdError from \"./StdError.ts\"\n\n/**\n * Maximum bytes captured from either stream across one search operation.\n *\n * Native search refuses an overflow instead of truncating because a partial\n * ripgrep stream could make it disagree with the portable peer. The 64 MiB\n * bound is well above real repository listings: 400,000 paths occupy roughly\n * 16 MiB in a typical `rg --files` stream.\n *\n * @category constants\n * @since 1.0.0\n */\nexport const MAX_CAPTURE_BYTES = 67_108_864\n\ninterface RgResult {\n readonly stdout: string\n readonly stderr: string\n readonly exitCode: number\n}\n\nconst execute = (\n cwd: string,\n args: ReadonlyArray<string>,\n environment: Readonly<Record<string, string>> | undefined\n): Effect.Effect<RgResult, StdError.StdError, ChildProcessSpawner.ChildProcessSpawner> =>\n Exec.exec(\"rg\", { args, cwd, env: environment, maxCaptureBytes: MAX_CAPTURE_BYTES, overflow: \"refuse\" }).pipe(\n Effect.mapError((error) =>\n new StdError.StdError({\n code: error.code === \"capture_overflow\" ? \"command_failed\" : \"provider_unavailable\",\n message: error.code === \"capture_overflow\"\n ? error.message\n : \"The native ripgrep implementation could not start rg\"\n })\n )\n )\n\n// Only .gitignore within the requested root participates. Disable user config,\n// parent/global rules and other ignore sources so the result is host independent.\nconst ignoreFlags = (noIgnore: boolean | undefined): ReadonlyArray<string> => [\n \"--no-config\",\n \"--no-require-git\",\n \"--no-ignore-global\",\n \"--no-ignore-parent\",\n \"--no-ignore-exclude\",\n \"--no-ignore-dot\",\n ...(noIgnore ? [\"--no-ignore\"] : [])\n]\n\n/**\n * Reports what `rg` rejected, or `undefined` when it produced an answer.\n *\n * Exit status 2 means only \"an error occurred\", and a walk hits those\n * routinely: a dangling symlink, a symlink loop, a directory the process may\n * not list. `--no-messages` suppresses exactly those, leaving stderr empty and\n * the results on stdout complete for everything `rg` could reach \u2014 the same\n * entries the in-process peer skips, so the peers still agree. A fatal error \u2014\n * an unparsable glob, a rejected expression, a killed process \u2014 always writes\n * to stderr, which `--no-messages` does not touch. Stderr is therefore the\n * discriminator, and the exit status alone is not.\n */\nconst rejection = (result: RgResult): string | undefined => {\n const message = result.stderr.trim()\n return result.exitCode > 1 && message.length > 0 ? message : undefined\n}\n\nconst nulSeparated = (stdout: string): ReadonlyArray<string> => stdout.split(\"\\0\").filter((value) => value.length > 0)\n\nconst preview = (line: string): string => {\n const withoutTerminator = line.replace(/\\r?\\n$/, \"\")\n const characters = Array.from(withoutTerminator)\n return truncateBytes(characters.length > 500 ? characters.slice(0, 500).join(\"\") : withoutTerminator, 500, {\n keep: \"head\"\n }).text\n}\n\nconst asRecord = (value: unknown): Record<string, unknown> | undefined =>\n typeof value === \"object\" && value !== null ? value as Record<string, unknown> : undefined\n\nconst textAt = (record: Record<string, unknown> | undefined, key: string): string | undefined => {\n const nested = asRecord(record?.[key])\n return typeof nested?.text === \"string\" ? nested.text : undefined\n}\n\nconst malformedJson = (): StdError.StdError =>\n new StdError.StdError({ code: \"request_failed\", message: \"rg returned malformed JSON\" })\n\n// rg releases differ on some gitignore grammar (for example BOMs and\n// unclosed character classes in 14 versus 15). Select paths through the same\n// walk as portable, then name them explicitly to rg. This also prevents a\n// positive caller glob from overriding ignore rules or scanning unrelated files.\nconst resolveRoot = (\n input: Search.GrepInput | Search.GlobInput,\n globs: ReadonlyArray<string>\n): Effect.Effect<\n {\n readonly cwd: string\n readonly targets: ReadonlyArray<string>\n readonly explicitFile: boolean\n readonly ignored: boolean\n readonly absolute: (value: string) => string\n },\n StdError.StdError,\n FileSystem.FileSystem | Path.Path\n> =>\n Effect.gen(function*() {\n const fileSystem = yield* FileSystem.FileSystem\n const path = yield* Path.Path\n const included = (relative: string, basename: string) => Contract.includedByGlobs(globs, relative, basename)\n const walked = yield* Walk.files(fileSystem, path, input.root, input.hidden, input.noIgnore, included)\n const cwd = walked.explicitFile ? path.dirname(input.root) : input.root\n const selected = walked.explicitFile ?\n walked.files :\n walked.files.filter((file) => included(Walk.relativeForPattern(path, input.root, file), path.basename(file)))\n const links = walked.explicitFile ? [] : yield* Walk.symbolicLinks(fileSystem, selected)\n return {\n cwd,\n targets: selected.filter((_, index) => links[index] !== true).map((file) => path.relative(cwd, file)),\n explicitFile: walked.explicitFile,\n ignored: walked.ignored,\n absolute: (value: string) => path.normalize(path.join(cwd, value.replace(/^\\.\\//, \"\")))\n }\n })\n\n// Stay well below OS argv limits, including on trees with long UTF-8 names.\n// Only one batch per operation is live, and the aggregate capture keeps the\n// same refusal bound as a single invocation.\nconst executeFiles = (\n cwd: string,\n args: ReadonlyArray<string>,\n targets: ReadonlyArray<string>,\n environment: Readonly<Record<string, string>> | undefined\n): Effect.Effect<RgResult, StdError.StdError, ChildProcessSpawner.ChildProcessSpawner> =>\n Effect.gen(function*() {\n if (targets.length === 0) {\n return {\n stdout: args.includes(\"--json\")\n ? `${JSON.stringify({ type: \"summary\", data: { stats: { searches: 0 } } })}\\n`\n : \"\",\n stderr: \"\",\n exitCode: 0\n }\n }\n const encoder = new TextEncoder()\n const batches: Array<Array<string>> = []\n let batch: Array<string> = []\n let size = 0\n for (const target of targets) {\n const bytes = encoder.encode(target).length + 1\n if (batch.length > 0 && (batch.length >= 256 || size + bytes > 32_768)) {\n batches.push(batch)\n batch = []\n size = 0\n }\n batch.push(target)\n size += bytes\n }\n batches.push(batch)\n let stdout = \"\"\n let stderr = \"\"\n let stdoutBytes = 0\n let stderrBytes = 0\n let exitCode = 0\n for (const batch of batches) {\n const result = yield* execute(cwd, [...args, ...batch], environment)\n if (rejection(result) !== undefined) return result\n stdoutBytes += encoder.encode(result.stdout).length\n stderrBytes += encoder.encode(result.stderr).length\n if (stdoutBytes > MAX_CAPTURE_BYTES || stderrBytes > MAX_CAPTURE_BYTES) {\n return yield* Effect.fail(\n new StdError.StdError({\n code: \"command_failed\",\n message: `rg ${\n stdoutBytes > MAX_CAPTURE_BYTES ? \"stdout\" : \"stderr\"\n } exceeded the ${MAX_CAPTURE_BYTES}-byte capture cap`\n })\n )\n }\n stdout += result.stdout\n stderr += result.stderr\n exitCode = Math.max(exitCode, result.exitCode)\n }\n return { stdout, stderr, exitCode }\n })\n\nconst pathOrder = (left: Search.GrepLine, right: Search.GrepLine): number =>\n left.file < right.file ? -1 : left.file > right.file ? 1 : left.line - right.line\n\n/**\n * Holds `maxCount` to the per-file match budget the contract states.\n *\n * `rg` labels an after-context line as a `match` when that line matches too,\n * so `--max-count 2 --after-context 1` over three consecutive matching lines\n * prints three `match` rows \u2014 measured against ripgrep 14.1.1. The in-process\n * peer stops counting at the budget and carries the surplus line as context,\n * and the generated conformance run found the two peers answering that call\n * differently on four seeds. The surplus rows are demoted rather than dropped,\n * because the caller asked for that context and `rg` did print it. Rows arrive\n * sorted by file and line, so counting in order is counting per file.\n */\nconst capMatches = (\n lines: ReadonlyArray<Search.GrepLine>,\n maxCount: number | undefined\n): ReadonlyArray<Search.GrepLine> => {\n if (maxCount === undefined) return lines\n const counted = new Map<string, number>()\n return lines.map((line) => {\n if (line.kind !== \"match\") return line\n const seen = counted.get(line.file) ?? 0\n counted.set(line.file, seen + 1)\n return seen < maxCount ? line : { ...line, kind: \"context\" as const }\n })\n}\n\nconst grep = (\n input: Search.GrepInput,\n environment: Readonly<Record<string, string>> | undefined\n): Effect.Effect<\n Search.GrepOutput,\n StdError.StdError,\n FileSystem.FileSystem | Path.Path | ChildProcessSpawner.ChildProcessSpawner\n> =>\n Effect.gen(function*() {\n const fileSystem = yield* FileSystem.FileSystem\n const path = yield* Path.Path\n const root = yield* resolveRoot(input, input.globs)\n const args: Array<string> = [\n \"--json\",\n \"--stats\",\n ...ignoreFlags(input.noIgnore),\n \"--no-messages\",\n \"--sort\",\n \"path\",\n \"--encoding=utf-8\",\n \"--crlf\"\n ]\n if (input.hidden) args.push(\"--hidden\")\n if (input.fixedStrings) args.push(\"--fixed-strings\")\n // `rg` documents `--smart-case` as overriding `--ignore-case`, so passing\n // both makes an uppercase pattern case-SENSITIVE. The in-process peer reads\n // the pair the other way round \u2014 `ignoreCase || (smartCase && no uppercase)`\n // \u2014 because an explicit request beats a heuristic. `Grep.run` refuses the\n // combination outright, but a host binding `Search` directly never reaches\n // that check, and the generated conformance run found the two peers\n // answering seven seeds differently through it.\n if (input.ignoreCase) args.push(\"--ignore-case\")\n else if (input.smartCase) args.push(\"--smart-case\")\n if (input.beforeContext > 0) args.push(\"--before-context\", String(input.beforeContext))\n if (input.afterContext > 0) args.push(\"--after-context\", String(input.afterContext))\n if (input.maxCount !== undefined) args.push(\"--max-count\", String(input.maxCount))\n args.push(\"--\", input.pattern)\n\n const binaryArgs: Array<string> = [\n \"--files-with-matches\",\n \"--text\",\n \"--null\",\n ...ignoreFlags(input.noIgnore),\n \"--no-messages\",\n \"--sort\",\n \"path\"\n ]\n if (input.hidden) binaryArgs.push(\"--hidden\")\n binaryArgs.push(\"--\", \"\\\\x00\")\n\n const [result, binaryResult] = yield* Effect.all(\n [\n executeFiles(root.cwd, args, root.targets, environment),\n executeFiles(root.cwd, binaryArgs, root.targets, environment)\n ],\n { concurrency: \"unbounded\" }\n )\n for (const outcome of [result, binaryResult]) {\n const message = rejection(outcome)\n if (message !== undefined) {\n return yield* Effect.fail(new StdError.StdError({ code: \"request_failed\", message }))\n }\n }\n const binaryFiles = new Set(nulSeparated(binaryResult.stdout).map(root.absolute))\n if (root.explicitFile && binaryFiles.size > 0) {\n return yield* Effect.fail(\n new StdError.StdError({\n code: \"binary_file\",\n message: `Cannot search binary file: ${input.root}`,\n path: input.root\n })\n )\n }\n\n const lines: Array<Search.GrepLine> = []\n const files = new Set<string>()\n let sawSummary = false\n for (const encoded of result.stdout.split(\"\\n\")) {\n if (encoded.length === 0) continue\n let event: Record<string, unknown>\n try {\n const decoded = JSON.parse(encoded) as unknown\n const record = asRecord(decoded)\n if (record === undefined) return yield* Effect.fail(malformedJson())\n event = record\n } catch {\n return yield* Effect.fail(malformedJson())\n }\n const type = event.type\n const data = asRecord(event.data)\n if (type === \"match\" || type === \"context\") {\n const file = textAt(data, \"path\")\n const text = textAt(data, \"lines\")\n const line = data?.line_number\n if (file === undefined || text === undefined || typeof line !== \"number\") {\n return yield* Effect.fail(malformedJson())\n }\n const absolute = root.absolute(file)\n files.add(absolute)\n lines.push({ file: absolute, line, text: preview(text), kind: type })\n } else if (type === \"begin\") {\n if (textAt(data, \"path\") === undefined) return yield* Effect.fail(malformedJson())\n } else if (type === \"end\") {\n if (\n textAt(data, \"path\") === undefined ||\n (data?.binary_offset !== null && typeof data?.binary_offset !== \"number\")\n ) return yield* Effect.fail(malformedJson())\n } else if (type === \"summary\") {\n const stats = asRecord(data?.stats)\n if (typeof stats?.searches !== \"number\") return yield* Effect.fail(malformedJson())\n sawSummary = true\n } else return yield* Effect.fail(malformedJson())\n }\n if (!sawSummary) return yield* Effect.fail(malformedJson())\n for (const file of binaryFiles) files.delete(file)\n const visibleLines = capMatches(\n lines.filter((line) => !binaryFiles.has(line.file)).sort(pathOrder),\n input.maxCount\n )\n const grouped = input.filesWithMatches ? [] : Grouping.group(visibleLines)\n const entries = input.filesWithMatches ? [...files].sort() : grouped\n const truncated = entries.length > input.limit\n const shown = grouped.slice(0, input.limit)\n // `rg` reports lines, not files, so the enclosing definition costs one read\n // of each file whose hits survived the limit \u2014 never one per file searched.\n const contents = new Map<string, ReadonlyArray<string>>()\n if (input.symbols) {\n for (const file of new Set(shown.map((match) => match.file))) {\n const bytes = yield* Effect.orElseSucceed(fileSystem.readFile(file), () => undefined)\n if (bytes !== undefined) contents.set(file, Grouping.sourceLines(new TextDecoder().decode(bytes)))\n }\n }\n const unsatisfiable = entries.length > 0 ? undefined : yield* Contract.unsatisfiableNotice({\n fileSystem,\n path,\n root: input.root,\n globs: input.globs,\n hidden: input.hidden,\n noIgnore: input.noIgnore,\n ignored: root.ignored\n })\n return {\n matches: Grouping.annotate(shown, contents),\n files: input.filesWithMatches ? [...files].sort().slice(0, input.limit) : [],\n filesSearched: root.targets.length,\n skippedBinary: binaryFiles.size,\n truncated,\n ...(truncated\n ? { notice: notice(input.filesWithMatches ? \"files\" : \"matches\", input.limit, entries.length) }\n : {}),\n ...(unsatisfiable === undefined ? {} : { notice: unsatisfiable })\n }\n })\n\nconst glob = (\n input: Search.GlobInput,\n environment: Readonly<Record<string, string>> | undefined\n): Effect.Effect<\n Search.GlobOutput,\n StdError.StdError,\n FileSystem.FileSystem | Path.Path | ChildProcessSpawner.ChildProcessSpawner\n> =>\n Effect.gen(function*() {\n const fileSystem = yield* FileSystem.FileSystem\n const path = yield* Path.Path\n const root = yield* resolveRoot(input, [input.pattern])\n const args: Array<string> = [\"--files\", \"--null\", ...ignoreFlags(input.noIgnore), \"--no-messages\", \"--sort\", \"path\"]\n if (input.hidden) args.push(\"--hidden\")\n args.push(\"--\")\n const result = yield* executeFiles(root.cwd, args, root.targets, environment)\n const rejected = rejection(result)\n if (rejected !== undefined) {\n return yield* Effect.fail(new StdError.StdError({ code: \"invalid_pattern\", message: rejected }))\n }\n const paths = nulSeparated(result.stdout).map(root.absolute).filter((file) =>\n root.explicitFile ||\n Contract.includedByGlobs([input.pattern], Walk.relativeForPattern(path, input.root, file), path.basename(file))\n ).sort()\n const shown = paths.slice(0, input.limit)\n const unsatisfiable = paths.length > 0 ? undefined : yield* Contract.unsatisfiableNotice({\n fileSystem,\n path,\n root: input.root,\n globs: [input.pattern],\n hidden: input.hidden,\n noIgnore: input.noIgnore,\n ignored: root.ignored\n })\n return {\n paths: shown,\n total: paths.length,\n truncated: paths.length > input.limit,\n ...(paths.length > input.limit ? { notice: notice(\"entries\", shown.length, paths.length) } : {}),\n ...(unsatisfiable === undefined ? {} : { notice: unsatisfiable })\n }\n })\n\n/**\n * Captures filesystem, path and process services in the native peer.\n * Optional environment declarations overlay the host child-process allowlist.\n *\n * @category constructors\n * @since 1.0.0\n */\nexport const make = (\n services: Context.Context<FileSystem.FileSystem | Path.Path | ChildProcessSpawner.ChildProcessSpawner>,\n environment?: Readonly<Record<string, string>>\n): Search.Search =>\n Search.make({\n grep: (input) => Effect.provide(grep(input, environment), services),\n glob: (input) => Effect.provide(glob(input, environment), services)\n })\n\n/**\n * Provides the `rg`-driven peer.\n *\n * @category layers\n * @since 1.0.0\n */\nexport const layer: Layer.Layer<\n Search.Search,\n never,\n FileSystem.FileSystem | Path.Path | ChildProcessSpawner.ChildProcessSpawner\n> = Layer.effect(\n Search.Search,\n Effect.map(Effect.context<FileSystem.FileSystem | Path.Path | ChildProcessSpawner.ChildProcessSpawner>(), make)\n)\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["batch"]
|
|
7
|
+
}
|