@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,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-file atomic replacement that preserves permission bits and ownership.
|
|
3
|
+
* The sibling is complete before rename; no crash-durability guarantee is made.
|
|
4
|
+
* A file whose owner this process cannot assign is rewritten in place instead.
|
|
5
|
+
*
|
|
6
|
+
* @since 1.0.0
|
|
7
|
+
*/
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import type * as FileSystem from "effect/FileSystem";
|
|
10
|
+
import type * as PlatformError from "effect/PlatformError";
|
|
11
|
+
/**
|
|
12
|
+
* Replaces a file's text atomically, preserving its permission bits and owner.
|
|
13
|
+
*
|
|
14
|
+
* @category filesystem
|
|
15
|
+
* @since 1.0.0
|
|
16
|
+
*/
|
|
17
|
+
export declare const writeFileString: (fileSystem: FileSystem.FileSystem, path: string, content: string) => Effect.Effect<void, PlatformError.PlatformError>;
|
|
18
|
+
/**
|
|
19
|
+
* Replaces a file's bytes with the same atomic boundary used for text writes.
|
|
20
|
+
*
|
|
21
|
+
* @category filesystem
|
|
22
|
+
* @since 1.0.0
|
|
23
|
+
*/
|
|
24
|
+
export declare const writeFile: (fileSystem: FileSystem.FileSystem, path: string, content: Uint8Array) => Effect.Effect<void, PlatformError.PlatformError>;
|
|
25
|
+
//# sourceMappingURL=Preserve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Preserve.d.ts","sourceRoot":"","sources":["../../../src/internal/Preserve.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAEpD,OAAO,KAAK,KAAK,aAAa,MAAM,sBAAsB,CAAA;AAI1D;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAC1B,YAAY,UAAU,CAAC,UAAU,EACjC,MAAM,MAAM,EACZ,SAAS,MAAM,KACd,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,aAAa,CAC8D,CAAA;AAEhH;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GACpB,YAAY,UAAU,CAAC,UAAU,EACjC,MAAM,MAAM,EACZ,SAAS,UAAU,KAClB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,aAAa,CACwD,CAAA"}
|
|
@@ -0,0 +1,88 @@
|
|
|
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 Preserve_exports = {};
|
|
30
|
+
__export(Preserve_exports, {
|
|
31
|
+
writeFile: () => writeFile,
|
|
32
|
+
writeFileString: () => writeFileString
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(Preserve_exports);
|
|
35
|
+
var Effect = __toESM(require("effect/Effect"), 1);
|
|
36
|
+
var Option = __toESM(require("effect/Option"), 1);
|
|
37
|
+
const permissions = 4095;
|
|
38
|
+
const writeFileString = (fileSystem, path, content) => replace(fileSystem, path, (target, flag, mode) => fileSystem.writeFileString(target, content, { flag, mode }));
|
|
39
|
+
const writeFile = (fileSystem, path, content) => replace(fileSystem, path, (target, flag, mode) => fileSystem.writeFile(target, content, { flag, mode }));
|
|
40
|
+
const replace = (fileSystem, path, write) => Effect.gen(function* () {
|
|
41
|
+
const before = yield* fileSystem.stat(path).pipe(
|
|
42
|
+
Effect.catch((error) => error.reason._tag === "NotFound" ? Effect.succeed(void 0) : Effect.fail(error))
|
|
43
|
+
);
|
|
44
|
+
const destination = before === void 0 ? path : yield* fileSystem.realPath(path);
|
|
45
|
+
const temporary = destination.replace(/[^/\\]+$/, `.smithers-${globalThis.crypto.randomUUID()}.tmp`);
|
|
46
|
+
let owned = true;
|
|
47
|
+
let inPlace = false;
|
|
48
|
+
yield* Effect.uninterruptibleMask(
|
|
49
|
+
(restore) => Effect.gen(function* () {
|
|
50
|
+
yield* write(temporary, "wx", before === void 0 ? void 0 : before.mode & permissions).pipe(
|
|
51
|
+
Effect.tapError(
|
|
52
|
+
(error) => Effect.sync(() => {
|
|
53
|
+
if (error.reason._tag === "AlreadyExists") owned = false;
|
|
54
|
+
})
|
|
55
|
+
)
|
|
56
|
+
);
|
|
57
|
+
yield* restore(Effect.gen(function* () {
|
|
58
|
+
if (before === void 0) return;
|
|
59
|
+
const after = yield* fileSystem.stat(temporary);
|
|
60
|
+
const uid = Option.getOrUndefined(before.uid);
|
|
61
|
+
const gid = Option.getOrUndefined(before.gid);
|
|
62
|
+
const ownerChanged = uid !== void 0 && uid !== Option.getOrUndefined(after.uid) || gid !== void 0 && gid !== Option.getOrUndefined(after.gid);
|
|
63
|
+
if (ownerChanged) {
|
|
64
|
+
const chowned = yield* fileSystem.chown(temporary, uid ?? -1, gid ?? -1).pipe(
|
|
65
|
+
Effect.as(true),
|
|
66
|
+
Effect.catch(
|
|
67
|
+
(error) => error.reason._tag === "PermissionDenied" ? Effect.succeed(false) : Effect.fail(error)
|
|
68
|
+
)
|
|
69
|
+
);
|
|
70
|
+
if (!chowned) {
|
|
71
|
+
inPlace = true;
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (ownerChanged || (after.mode & permissions) !== (before.mode & permissions)) {
|
|
76
|
+
yield* fileSystem.chmod(temporary, before.mode & permissions);
|
|
77
|
+
}
|
|
78
|
+
}));
|
|
79
|
+
if (!inPlace) yield* fileSystem.rename(temporary, destination);
|
|
80
|
+
}).pipe(
|
|
81
|
+
Effect.ensuring(
|
|
82
|
+
Effect.suspend(() => owned ? fileSystem.remove(temporary, { force: true }).pipe(Effect.orDie) : Effect.void)
|
|
83
|
+
)
|
|
84
|
+
)
|
|
85
|
+
);
|
|
86
|
+
if (inPlace) yield* write(destination, "w", void 0);
|
|
87
|
+
});
|
|
88
|
+
//# sourceMappingURL=Preserve.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/internal/Preserve.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Per-file atomic replacement that preserves permission bits and ownership.\n * The sibling is complete before rename; no crash-durability guarantee is made.\n * A file whose owner this process cannot assign is rewritten in place instead.\n *\n * @since 1.0.0\n */\n\nimport * as Effect from \"effect/Effect\"\nimport type * as FileSystem from \"effect/FileSystem\"\nimport * as Option from \"effect/Option\"\nimport type * as PlatformError from \"effect/PlatformError\"\n\nconst permissions = 0o7777\n\n/**\n * Replaces a file's text atomically, preserving its permission bits and owner.\n *\n * @category filesystem\n * @since 1.0.0\n */\nexport const writeFileString = (\n fileSystem: FileSystem.FileSystem,\n path: string,\n content: string\n): Effect.Effect<void, PlatformError.PlatformError> =>\n replace(fileSystem, path, (target, flag, mode) => fileSystem.writeFileString(target, content, { flag, mode }))\n\n/**\n * Replaces a file's bytes with the same atomic boundary used for text writes.\n *\n * @category filesystem\n * @since 1.0.0\n */\nexport const writeFile = (\n fileSystem: FileSystem.FileSystem,\n path: string,\n content: Uint8Array\n): Effect.Effect<void, PlatformError.PlatformError> =>\n replace(fileSystem, path, (target, flag, mode) => fileSystem.writeFile(target, content, { flag, mode }))\n\nconst replace = (\n fileSystem: FileSystem.FileSystem,\n path: string,\n write: (\n target: string,\n flag: \"wx\" | \"w\",\n mode: number | undefined\n ) => Effect.Effect<void, PlatformError.PlatformError>\n): Effect.Effect<void, PlatformError.PlatformError> =>\n Effect.gen(function*() {\n const before = yield* fileSystem.stat(path).pipe(\n Effect.catch((error) => error.reason._tag === \"NotFound\" ? Effect.succeed(undefined) : Effect.fail(error))\n )\n // Keep following an existing symlink, as an in-place write did.\n const destination = before === undefined ? path : yield* fileSystem.realPath(path)\n const temporary = destination.replace(/[^/\\\\]+$/, `.smithers-${globalThis.crypto.randomUUID()}.tmp`)\n let owned = true\n // Set when the sibling cannot take the file's owner; see the chown below.\n let inPlace = false\n yield* Effect.uninterruptibleMask((restore) =>\n Effect.gen(function*() {\n // Let the host finish its write before cancellation can unlink the name.\n yield* write(temporary, \"wx\", before === undefined ? undefined : before.mode & permissions).pipe(\n Effect.tapError((error) =>\n Effect.sync(() => {\n if (error.reason._tag === \"AlreadyExists\") owned = false\n })\n )\n )\n yield* restore(Effect.gen(function*() {\n if (before === undefined) return\n const after = yield* fileSystem.stat(temporary)\n const uid = Option.getOrUndefined(before.uid)\n const gid = Option.getOrUndefined(before.gid)\n const ownerChanged = (uid !== undefined && uid !== Option.getOrUndefined(after.uid)) ||\n (gid !== undefined && gid !== Option.getOrUndefined(after.gid))\n if (ownerChanged) {\n // Only root may give a file away. A writable file owned by another\n // user (a shared checkout, a bind mount) cannot be replaced by a\n // sibling this process owns without changing its owner, so it is\n // rewritten in place instead: same inode, owner, and mode, at the\n // cost of atomicity.\n const chowned = yield* fileSystem.chown(temporary, uid ?? -1, gid ?? -1).pipe(\n Effect.as(true),\n Effect.catch((error) =>\n error.reason._tag === \"PermissionDenied\" ? Effect.succeed(false) : Effect.fail(error)\n )\n )\n if (!chowned) {\n inPlace = true\n return\n }\n }\n // chown may clear set-id bits, so permissions are restored last.\n if (ownerChanged || (after.mode & permissions) !== (before.mode & permissions)) {\n yield* fileSystem.chmod(temporary, before.mode & permissions)\n }\n }))\n if (!inPlace) yield* fileSystem.rename(temporary, destination)\n }).pipe(\n Effect.ensuring(\n Effect.suspend(() => owned ? fileSystem.remove(temporary, { force: true }).pipe(Effect.orDie) : Effect.void)\n )\n )\n )\n if (inPlace) yield* write(destination, \"w\", undefined)\n })\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,aAAwB;AAExB,aAAwB;AAGxB,MAAM,cAAc;AAQb,MAAM,kBAAkB,CAC7B,YACA,MACA,YAEA,QAAQ,YAAY,MAAM,CAAC,QAAQ,MAAM,SAAS,WAAW,gBAAgB,QAAQ,SAAS,EAAE,MAAM,KAAK,CAAC,CAAC;AAQxG,MAAM,YAAY,CACvB,YACA,MACA,YAEA,QAAQ,YAAY,MAAM,CAAC,QAAQ,MAAM,SAAS,WAAW,UAAU,QAAQ,SAAS,EAAE,MAAM,KAAK,CAAC,CAAC;AAEzG,MAAM,UAAU,CACd,YACA,MACA,UAMA,OAAO,IAAI,aAAY;AACrB,QAAM,SAAS,OAAO,WAAW,KAAK,IAAI,EAAE;AAAA,IAC1C,OAAO,MAAM,CAAC,UAAU,MAAM,OAAO,SAAS,aAAa,OAAO,QAAQ,MAAS,IAAI,OAAO,KAAK,KAAK,CAAC;AAAA,EAC3G;AAEA,QAAM,cAAc,WAAW,SAAY,OAAO,OAAO,WAAW,SAAS,IAAI;AACjF,QAAM,YAAY,YAAY,QAAQ,YAAY,aAAa,WAAW,OAAO,WAAW,CAAC,MAAM;AACnG,MAAI,QAAQ;AAEZ,MAAI,UAAU;AACd,SAAO,OAAO;AAAA,IAAoB,CAAC,YACjC,OAAO,IAAI,aAAY;AAErB,aAAO,MAAM,WAAW,MAAM,WAAW,SAAY,SAAY,OAAO,OAAO,WAAW,EAAE;AAAA,QAC1F,OAAO;AAAA,UAAS,CAAC,UACf,OAAO,KAAK,MAAM;AAChB,gBAAI,MAAM,OAAO,SAAS,gBAAiB,SAAQ;AAAA,UACrD,CAAC;AAAA,QACH;AAAA,MACF;AACA,aAAO,QAAQ,OAAO,IAAI,aAAY;AACpC,YAAI,WAAW,OAAW;AAC1B,cAAM,QAAQ,OAAO,WAAW,KAAK,SAAS;AAC9C,cAAM,MAAM,OAAO,eAAe,OAAO,GAAG;AAC5C,cAAM,MAAM,OAAO,eAAe,OAAO,GAAG;AAC5C,cAAM,eAAgB,QAAQ,UAAa,QAAQ,OAAO,eAAe,MAAM,GAAG,KAC/E,QAAQ,UAAa,QAAQ,OAAO,eAAe,MAAM,GAAG;AAC/D,YAAI,cAAc;AAMhB,gBAAM,UAAU,OAAO,WAAW,MAAM,WAAW,OAAO,IAAI,OAAO,EAAE,EAAE;AAAA,YACvE,OAAO,GAAG,IAAI;AAAA,YACd,OAAO;AAAA,cAAM,CAAC,UACZ,MAAM,OAAO,SAAS,qBAAqB,OAAO,QAAQ,KAAK,IAAI,OAAO,KAAK,KAAK;AAAA,YACtF;AAAA,UACF;AACA,cAAI,CAAC,SAAS;AACZ,sBAAU;AACV;AAAA,UACF;AAAA,QACF;AAEA,YAAI,iBAAiB,MAAM,OAAO,kBAAkB,OAAO,OAAO,cAAc;AAC9E,iBAAO,WAAW,MAAM,WAAW,OAAO,OAAO,WAAW;AAAA,QAC9D;AAAA,MACF,CAAC,CAAC;AACF,UAAI,CAAC,QAAS,QAAO,WAAW,OAAO,WAAW,WAAW;AAAA,IAC/D,CAAC,EAAE;AAAA,MACD,OAAO;AAAA,QACL,OAAO,QAAQ,MAAM,QAAQ,WAAW,OAAO,WAAW,EAAE,OAAO,KAAK,CAAC,EAAE,KAAK,OAAO,KAAK,IAAI,OAAO,IAAI;AAAA,MAC7G;AAAA,IACF;AAAA,EACF;AACA,MAAI,QAAS,QAAO,MAAM,aAAa,KAAK,MAAS;AACvD,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one list of directory names a repository walk leaves out.
|
|
3
|
+
*
|
|
4
|
+
* `grep`, `glob` and `ls` walks, the tree fingerprint, and workspace
|
|
5
|
+
* observation all read this list, so a directory one of them skips is never
|
|
6
|
+
* counted, matched, or fingerprinted by another. Every entry is derived state:
|
|
7
|
+
* version-control internals, dependency trees, caches, and the scratch
|
|
8
|
+
* checkouts the checkpoint and test-baseline flows create inside the
|
|
9
|
+
* workspace. A scratch checkout is a full copy of the repository at an older
|
|
10
|
+
* commit, so walking it duplicates every match from a stale tree.
|
|
11
|
+
*
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Workspace-relative directory holding checkpoint checkouts.
|
|
16
|
+
*
|
|
17
|
+
* @private
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
*/
|
|
20
|
+
export declare const checkpointScratch = ".flows-checkpoints";
|
|
21
|
+
/**
|
|
22
|
+
* Workspace-relative directory holding test-baseline checkouts.
|
|
23
|
+
*
|
|
24
|
+
* @private
|
|
25
|
+
* @since 1.0.0
|
|
26
|
+
*/
|
|
27
|
+
export declare const testBaseScratch = ".flows-test-base";
|
|
28
|
+
/**
|
|
29
|
+
* Directory basenames no repository walk descends into.
|
|
30
|
+
*
|
|
31
|
+
* @private
|
|
32
|
+
* @since 1.0.0
|
|
33
|
+
*/
|
|
34
|
+
export declare const repositoryDirectories: ReadonlyArray<string>;
|
|
35
|
+
//# sourceMappingURL=Prune.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Prune.d.ts","sourceRoot":"","sources":["../../../src/internal/Prune.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,uBAAuB,CAAA;AAErD;;;;;GAKG;AACH,eAAO,MAAM,eAAe,qBAAqB,CAAA;AAEjD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,MAAM,CAyBvD,CAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var Prune_exports = {};
|
|
20
|
+
__export(Prune_exports, {
|
|
21
|
+
checkpointScratch: () => checkpointScratch,
|
|
22
|
+
repositoryDirectories: () => repositoryDirectories,
|
|
23
|
+
testBaseScratch: () => testBaseScratch
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(Prune_exports);
|
|
26
|
+
const checkpointScratch = ".flows-checkpoints";
|
|
27
|
+
const testBaseScratch = ".flows-test-base";
|
|
28
|
+
const repositoryDirectories = [
|
|
29
|
+
".git",
|
|
30
|
+
".hg",
|
|
31
|
+
".jj",
|
|
32
|
+
".svn",
|
|
33
|
+
".flows",
|
|
34
|
+
".artifacts",
|
|
35
|
+
".backend-go-modcache",
|
|
36
|
+
".pnpm-store",
|
|
37
|
+
".worktrees",
|
|
38
|
+
"worktrees",
|
|
39
|
+
checkpointScratch,
|
|
40
|
+
testBaseScratch,
|
|
41
|
+
"node_modules",
|
|
42
|
+
"__pycache__",
|
|
43
|
+
".venv",
|
|
44
|
+
".tox",
|
|
45
|
+
".nox",
|
|
46
|
+
".eggs",
|
|
47
|
+
".mypy_cache",
|
|
48
|
+
".pytest_cache",
|
|
49
|
+
".ruff_cache",
|
|
50
|
+
".gradle",
|
|
51
|
+
".turbo",
|
|
52
|
+
".next"
|
|
53
|
+
];
|
|
54
|
+
//# sourceMappingURL=Prune.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/internal/Prune.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * The one list of directory names a repository walk leaves out.\n *\n * `grep`, `glob` and `ls` walks, the tree fingerprint, and workspace\n * observation all read this list, so a directory one of them skips is never\n * counted, matched, or fingerprinted by another. Every entry is derived state:\n * version-control internals, dependency trees, caches, and the scratch\n * checkouts the checkpoint and test-baseline flows create inside the\n * workspace. A scratch checkout is a full copy of the repository at an older\n * commit, so walking it duplicates every match from a stale tree.\n *\n * @since 1.0.0\n */\n\n/**\n * Workspace-relative directory holding checkpoint checkouts.\n *\n * @private\n * @since 1.0.0\n */\nexport const checkpointScratch = \".flows-checkpoints\"\n\n/**\n * Workspace-relative directory holding test-baseline checkouts.\n *\n * @private\n * @since 1.0.0\n */\nexport const testBaseScratch = \".flows-test-base\"\n\n/**\n * Directory basenames no repository walk descends into.\n *\n * @private\n * @since 1.0.0\n */\nexport const repositoryDirectories: ReadonlyArray<string> = [\n \".git\",\n \".hg\",\n \".jj\",\n \".svn\",\n \".flows\",\n \".artifacts\",\n \".backend-go-modcache\",\n \".pnpm-store\",\n \".worktrees\",\n \"worktrees\",\n checkpointScratch,\n testBaseScratch,\n \"node_modules\",\n \"__pycache__\",\n \".venv\",\n \".tox\",\n \".nox\",\n \".eggs\",\n \".mypy_cache\",\n \".pytest_cache\",\n \".ruff_cache\",\n \".gradle\",\n \".turbo\",\n \".next\"\n]\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBO,MAAM,oBAAoB;AAQ1B,MAAM,kBAAkB;AAQxB,MAAM,wBAA+C;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A tree another machine listed, served as a read-only `FileSystem`.
|
|
3
|
+
*
|
|
4
|
+
* `RemoteSearch` lists a root on the machine with `find` and brings back the
|
|
5
|
+
* bytes the search reads with `tar`; this module holds what came back and
|
|
6
|
+
* answers what the walk, the globs, and the matcher ask of a filesystem, so
|
|
7
|
+
* `PortableSearch` can search the copy as it searches a host.
|
|
8
|
+
*
|
|
9
|
+
* @since 1.0.0-rc.8
|
|
10
|
+
*/
|
|
11
|
+
import type * as Path from "@smthrs/kernel/Path";
|
|
12
|
+
import * as FileSystem from "effect/FileSystem";
|
|
13
|
+
/**
|
|
14
|
+
* What one listed path is: `d` a directory, `u` a directory the machine's
|
|
15
|
+
* user may not list, `f` a file, `o` anything else, and a symbolic link to a
|
|
16
|
+
* directory (`D`), to a file (`F`), or to neither (`L`).
|
|
17
|
+
*
|
|
18
|
+
* @private
|
|
19
|
+
* @since 1.0.0-rc.8
|
|
20
|
+
*/
|
|
21
|
+
export type Kind = "d" | "u" | "f" | "o" | "D" | "F" | "L";
|
|
22
|
+
/**
|
|
23
|
+
* One machine's listing of a root, and the bytes it brought back, by
|
|
24
|
+
* absolute path.
|
|
25
|
+
*
|
|
26
|
+
* @private
|
|
27
|
+
* @since 1.0.0-rc.8
|
|
28
|
+
*/
|
|
29
|
+
export interface Tree {
|
|
30
|
+
readonly kinds: ReadonlyMap<string, Kind>;
|
|
31
|
+
readonly children: ReadonlyMap<string, ReadonlyArray<string>>;
|
|
32
|
+
readonly contents: ReadonlyMap<string, Uint8Array>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The member names `tar` wrote for absolute paths, which it strips of their
|
|
36
|
+
* leading `/`, as those paths again.
|
|
37
|
+
*
|
|
38
|
+
* @private
|
|
39
|
+
* @since 1.0.0-rc.8
|
|
40
|
+
*/
|
|
41
|
+
export declare const absolute: (members: ReadonlyMap<string, Uint8Array>) => ReadonlyMap<string, Uint8Array>;
|
|
42
|
+
/**
|
|
43
|
+
* Reads NUL-terminated `<kind><path>` records up to an `E` record, then the
|
|
44
|
+
* tar stream of `.gitignore` files after it. `root` is the listed root, which
|
|
45
|
+
* is nobody's child. `undefined` when the bytes are not that shape.
|
|
46
|
+
*
|
|
47
|
+
* @private
|
|
48
|
+
* @since 1.0.0-rc.8
|
|
49
|
+
*/
|
|
50
|
+
export declare const parse: (bytes: Uint8Array, root: string, path: Path.Path) => Tree | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* The tree as a read-only `FileSystem`, resolving paths with `path`. A file
|
|
53
|
+
* whose bytes did not come back is one the machine's user could not read,
|
|
54
|
+
* which the in-process peer skips exactly as it skips such a file on a host.
|
|
55
|
+
*
|
|
56
|
+
* @private
|
|
57
|
+
* @since 1.0.0-rc.8
|
|
58
|
+
*/
|
|
59
|
+
export declare const fileSystem: (tree: Tree, path: Path.Path) => FileSystem.FileSystem;
|
|
60
|
+
//# sourceMappingURL=RemoteTree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RemoteTree.d.ts","sourceRoot":"","sources":["../../../src/internal/RemoteTree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,KAAK,IAAI,MAAM,qBAAqB,CAAA;AAGhD,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAI/C;;;;;;;GAOG;AACH,MAAM,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAE1D;;;;;;GAMG;AACH,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACzC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;IAC7D,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CACnD;AAID;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAAI,SAAS,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,KAAG,WAAW,CAAC,MAAM,EAAE,UAAU,CAC/B,CAAA;AAEnE;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,GAAI,OAAO,UAAU,EAAE,MAAM,MAAM,EAAE,MAAM,IAAI,CAAC,IAAI,KAAG,IAAI,GAAG,SAuB/E,CAAA;AAiCD;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,KAAG,UAAU,CAAC,UAiCnE,CAAA"}
|
|
@@ -0,0 +1,123 @@
|
|
|
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 RemoteTree_exports = {};
|
|
30
|
+
__export(RemoteTree_exports, {
|
|
31
|
+
absolute: () => absolute,
|
|
32
|
+
fileSystem: () => fileSystem,
|
|
33
|
+
parse: () => parse
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(RemoteTree_exports);
|
|
36
|
+
var import_effect = require("effect");
|
|
37
|
+
var ByteSize = __toESM(require("effect/ByteSize"), 1);
|
|
38
|
+
var FileSystem = __toESM(require("effect/FileSystem"), 1);
|
|
39
|
+
var PlatformError = __toESM(require("effect/PlatformError"), 1);
|
|
40
|
+
var Tar = __toESM(require("./Tar.js"), 1);
|
|
41
|
+
const kinds = /* @__PURE__ */ new Set(["d", "u", "f", "o", "D", "F", "L"]);
|
|
42
|
+
const absolute = (members) => new Map([...members].map(([name, bytes]) => [`/${name}`, bytes]));
|
|
43
|
+
const parse = (bytes, root, path) => {
|
|
44
|
+
const decoder = new TextDecoder();
|
|
45
|
+
const listed = /* @__PURE__ */ new Map();
|
|
46
|
+
const children = /* @__PURE__ */ new Map();
|
|
47
|
+
let offset = 0;
|
|
48
|
+
for (; ; ) {
|
|
49
|
+
const end = bytes.indexOf(0, offset);
|
|
50
|
+
if (end === -1) return void 0;
|
|
51
|
+
const record = decoder.decode(bytes.subarray(offset, end));
|
|
52
|
+
offset = end + 1;
|
|
53
|
+
if (record === "E") break;
|
|
54
|
+
const kind = record.slice(0, 1);
|
|
55
|
+
if (!kinds.has(kind)) return void 0;
|
|
56
|
+
const entry = record.slice(1);
|
|
57
|
+
listed.set(entry, kind);
|
|
58
|
+
if (entry === root) continue;
|
|
59
|
+
const parent = path.dirname(entry);
|
|
60
|
+
const siblings = children.get(parent);
|
|
61
|
+
if (siblings === void 0) children.set(parent, [path.basename(entry)]);
|
|
62
|
+
else siblings.push(path.basename(entry));
|
|
63
|
+
}
|
|
64
|
+
const ignores = Tar.files(bytes.subarray(offset));
|
|
65
|
+
return ignores === void 0 ? void 0 : { kinds: listed, children, contents: absolute(ignores) };
|
|
66
|
+
};
|
|
67
|
+
const refusal = (tag, method, path) => PlatformError.systemError({ _tag: tag, module: "FileSystem", method, pathOrDescriptor: path });
|
|
68
|
+
const types = {
|
|
69
|
+
d: "Directory",
|
|
70
|
+
u: "Directory",
|
|
71
|
+
D: "Directory",
|
|
72
|
+
f: "File",
|
|
73
|
+
F: "File",
|
|
74
|
+
o: "Unknown",
|
|
75
|
+
L: void 0
|
|
76
|
+
};
|
|
77
|
+
const info = (type, size) => ({
|
|
78
|
+
type,
|
|
79
|
+
size: ByteSize.bytes(BigInt(size)),
|
|
80
|
+
mtime: import_effect.Option.none(),
|
|
81
|
+
atime: import_effect.Option.none(),
|
|
82
|
+
birthtime: import_effect.Option.none(),
|
|
83
|
+
dev: 0,
|
|
84
|
+
ino: import_effect.Option.none(),
|
|
85
|
+
mode: 0,
|
|
86
|
+
nlink: import_effect.Option.none(),
|
|
87
|
+
uid: import_effect.Option.none(),
|
|
88
|
+
gid: import_effect.Option.none(),
|
|
89
|
+
rdev: import_effect.Option.none(),
|
|
90
|
+
blksize: import_effect.Option.none(),
|
|
91
|
+
blocks: import_effect.Option.none()
|
|
92
|
+
});
|
|
93
|
+
const fileSystem = (tree, path) => {
|
|
94
|
+
const kindOf = (value) => tree.kinds.get(path.resolve(value));
|
|
95
|
+
const readFile = (value) => {
|
|
96
|
+
const bytes = tree.contents.get(path.resolve(value));
|
|
97
|
+
if (bytes !== void 0) return import_effect.Effect.succeed(bytes);
|
|
98
|
+
const type = types[kindOf(value) ?? "L"];
|
|
99
|
+
return import_effect.Effect.fail(
|
|
100
|
+
refusal(type === "File" ? "PermissionDenied" : type === void 0 ? "NotFound" : "BadResource", "readFile", value)
|
|
101
|
+
);
|
|
102
|
+
};
|
|
103
|
+
return FileSystem.makeNoop({
|
|
104
|
+
stat: (value) => {
|
|
105
|
+
const type = types[kindOf(value) ?? "L"];
|
|
106
|
+
return type === void 0 ? import_effect.Effect.fail(refusal("NotFound", "stat", value)) : import_effect.Effect.succeed(info(type, tree.contents.get(path.resolve(value))?.length ?? 0));
|
|
107
|
+
},
|
|
108
|
+
readDirectory: (value) => {
|
|
109
|
+
const kind = kindOf(value);
|
|
110
|
+
if (kind === "d") return import_effect.Effect.succeed([...tree.children.get(path.resolve(value)) ?? []]);
|
|
111
|
+
const tag = kind === "u" ? "PermissionDenied" : kind === void 0 || kind === "L" ? "NotFound" : "BadResource";
|
|
112
|
+
return import_effect.Effect.fail(refusal(tag, "readDirectory", value));
|
|
113
|
+
},
|
|
114
|
+
readLink: (value) => {
|
|
115
|
+
const kind = kindOf(value);
|
|
116
|
+
return kind === "D" || kind === "F" || kind === "L" ? import_effect.Effect.succeed("") : import_effect.Effect.fail(refusal(kind === void 0 ? "NotFound" : "BadResource", "readLink", value));
|
|
117
|
+
},
|
|
118
|
+
readFile,
|
|
119
|
+
readFileString: (value) => import_effect.Effect.map(readFile(value), (bytes) => new TextDecoder().decode(bytes)),
|
|
120
|
+
stream: (value) => import_effect.Stream.fromEffect(readFile(value))
|
|
121
|
+
});
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=RemoteTree.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/internal/RemoteTree.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * A tree another machine listed, served as a read-only `FileSystem`.\n *\n * `RemoteSearch` lists a root on the machine with `find` and brings back the\n * bytes the search reads with `tar`; this module holds what came back and\n * answers what the walk, the globs, and the matcher ask of a filesystem, so\n * `PortableSearch` can search the copy as it searches a host.\n *\n * @since 1.0.0-rc.8\n */\n\nimport type * as Path from \"@smthrs/kernel/Path\"\nimport { Effect, Option, Stream } from \"effect\"\nimport * as ByteSize from \"effect/ByteSize\"\nimport * as FileSystem from \"effect/FileSystem\"\nimport * as PlatformError from \"effect/PlatformError\"\nimport * as Tar from \"./Tar.ts\"\n\n/**\n * What one listed path is: `d` a directory, `u` a directory the machine's\n * user may not list, `f` a file, `o` anything else, and a symbolic link to a\n * directory (`D`), to a file (`F`), or to neither (`L`).\n *\n * @private\n * @since 1.0.0-rc.8\n */\nexport type Kind = \"d\" | \"u\" | \"f\" | \"o\" | \"D\" | \"F\" | \"L\"\n\n/**\n * One machine's listing of a root, and the bytes it brought back, by\n * absolute path.\n *\n * @private\n * @since 1.0.0-rc.8\n */\nexport interface Tree {\n readonly kinds: ReadonlyMap<string, Kind>\n readonly children: ReadonlyMap<string, ReadonlyArray<string>>\n readonly contents: ReadonlyMap<string, Uint8Array>\n}\n\nconst kinds: ReadonlySet<string> = new Set([\"d\", \"u\", \"f\", \"o\", \"D\", \"F\", \"L\"])\n\n/**\n * The member names `tar` wrote for absolute paths, which it strips of their\n * leading `/`, as those paths again.\n *\n * @private\n * @since 1.0.0-rc.8\n */\nexport const absolute = (members: ReadonlyMap<string, Uint8Array>): ReadonlyMap<string, Uint8Array> =>\n new Map([...members].map(([name, bytes]) => [`/${name}`, bytes]))\n\n/**\n * Reads NUL-terminated `<kind><path>` records up to an `E` record, then the\n * tar stream of `.gitignore` files after it. `root` is the listed root, which\n * is nobody's child. `undefined` when the bytes are not that shape.\n *\n * @private\n * @since 1.0.0-rc.8\n */\nexport const parse = (bytes: Uint8Array, root: string, path: Path.Path): Tree | undefined => {\n const decoder = new TextDecoder()\n const listed = new Map<string, Kind>()\n const children = new Map<string, Array<string>>()\n let offset = 0\n for (;;) {\n const end = bytes.indexOf(0, offset)\n if (end === -1) return undefined\n const record = decoder.decode(bytes.subarray(offset, end))\n offset = end + 1\n if (record === \"E\") break\n const kind = record.slice(0, 1)\n if (!kinds.has(kind)) return undefined\n const entry = record.slice(1)\n listed.set(entry, kind as Kind)\n if (entry === root) continue\n const parent = path.dirname(entry)\n const siblings = children.get(parent)\n if (siblings === undefined) children.set(parent, [path.basename(entry)])\n else siblings.push(path.basename(entry))\n }\n const ignores = Tar.files(bytes.subarray(offset))\n return ignores === undefined ? undefined : { kinds: listed, children, contents: absolute(ignores) }\n}\n\nconst refusal = (tag: PlatformError.SystemErrorTag, method: string, path: string): PlatformError.PlatformError =>\n PlatformError.systemError({ _tag: tag, module: \"FileSystem\", method, pathOrDescriptor: path })\n\n/** What `stat` says each kind is: links resolved, a dangling one absent. */\nconst types: Readonly<Record<Kind, FileSystem.File.Type | undefined>> = {\n d: \"Directory\",\n u: \"Directory\",\n D: \"Directory\",\n f: \"File\",\n F: \"File\",\n o: \"Unknown\",\n L: undefined\n}\n\nconst info = (type: FileSystem.File.Type, size: number): FileSystem.File.Info => ({\n type,\n size: ByteSize.bytes(BigInt(size)),\n mtime: Option.none(),\n atime: Option.none(),\n birthtime: Option.none(),\n dev: 0,\n ino: Option.none(),\n mode: 0,\n nlink: Option.none(),\n uid: Option.none(),\n gid: Option.none(),\n rdev: Option.none(),\n blksize: Option.none(),\n blocks: Option.none()\n})\n\n/**\n * The tree as a read-only `FileSystem`, resolving paths with `path`. A file\n * whose bytes did not come back is one the machine's user could not read,\n * which the in-process peer skips exactly as it skips such a file on a host.\n *\n * @private\n * @since 1.0.0-rc.8\n */\nexport const fileSystem = (tree: Tree, path: Path.Path): FileSystem.FileSystem => {\n const kindOf = (value: string) => tree.kinds.get(path.resolve(value))\n const readFile = (value: string) => {\n const bytes = tree.contents.get(path.resolve(value))\n if (bytes !== undefined) return Effect.succeed(bytes)\n const type = types[kindOf(value) ?? \"L\"]\n return Effect.fail(\n refusal(type === \"File\" ? \"PermissionDenied\" : type === undefined ? \"NotFound\" : \"BadResource\", \"readFile\", value)\n )\n }\n return FileSystem.makeNoop({\n stat: (value) => {\n const type = types[kindOf(value) ?? \"L\"]\n return type === undefined\n ? Effect.fail(refusal(\"NotFound\", \"stat\", value))\n : Effect.succeed(info(type, tree.contents.get(path.resolve(value))?.length ?? 0))\n },\n readDirectory: (value) => {\n const kind = kindOf(value)\n if (kind === \"d\") return Effect.succeed([...tree.children.get(path.resolve(value)) ?? []])\n const tag = kind === \"u\" ? \"PermissionDenied\" : kind === undefined || kind === \"L\" ? \"NotFound\" : \"BadResource\"\n return Effect.fail(refusal(tag, \"readDirectory\", value))\n },\n readLink: (value) => {\n const kind = kindOf(value)\n return kind === \"D\" || kind === \"F\" || kind === \"L\"\n ? Effect.succeed(\"\")\n : Effect.fail(refusal(kind === undefined ? \"NotFound\" : \"BadResource\", \"readLink\", value))\n },\n readFile,\n readFileString: (value) => Effect.map(readFile(value), (bytes) => new TextDecoder().decode(bytes)),\n stream: (value) => Stream.fromEffect(readFile(value))\n })\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA,oBAAuC;AACvC,eAA0B;AAC1B,iBAA4B;AAC5B,oBAA+B;AAC/B,UAAqB;AAyBrB,MAAM,QAA6B,oBAAI,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AASvE,MAAM,WAAW,CAAC,YACvB,IAAI,IAAI,CAAC,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC;AAU3D,MAAM,QAAQ,CAAC,OAAmB,MAAc,SAAsC;AAC3F,QAAM,UAAU,IAAI,YAAY;AAChC,QAAM,SAAS,oBAAI,IAAkB;AACrC,QAAM,WAAW,oBAAI,IAA2B;AAChD,MAAI,SAAS;AACb,aAAS;AACP,UAAM,MAAM,MAAM,QAAQ,GAAG,MAAM;AACnC,QAAI,QAAQ,GAAI,QAAO;AACvB,UAAM,SAAS,QAAQ,OAAO,MAAM,SAAS,QAAQ,GAAG,CAAC;AACzD,aAAS,MAAM;AACf,QAAI,WAAW,IAAK;AACpB,UAAM,OAAO,OAAO,MAAM,GAAG,CAAC;AAC9B,QAAI,CAAC,MAAM,IAAI,IAAI,EAAG,QAAO;AAC7B,UAAM,QAAQ,OAAO,MAAM,CAAC;AAC5B,WAAO,IAAI,OAAO,IAAY;AAC9B,QAAI,UAAU,KAAM;AACpB,UAAM,SAAS,KAAK,QAAQ,KAAK;AACjC,UAAM,WAAW,SAAS,IAAI,MAAM;AACpC,QAAI,aAAa,OAAW,UAAS,IAAI,QAAQ,CAAC,KAAK,SAAS,KAAK,CAAC,CAAC;AAAA,QAClE,UAAS,KAAK,KAAK,SAAS,KAAK,CAAC;AAAA,EACzC;AACA,QAAM,UAAU,IAAI,MAAM,MAAM,SAAS,MAAM,CAAC;AAChD,SAAO,YAAY,SAAY,SAAY,EAAE,OAAO,QAAQ,UAAU,UAAU,SAAS,OAAO,EAAE;AACpG;AAEA,MAAM,UAAU,CAAC,KAAmC,QAAgB,SAClE,cAAc,YAAY,EAAE,MAAM,KAAK,QAAQ,cAAc,QAAQ,kBAAkB,KAAK,CAAC;AAG/F,MAAM,QAAkE;AAAA,EACtE,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAEA,MAAM,OAAO,CAAC,MAA4B,UAAwC;AAAA,EAChF;AAAA,EACA,MAAM,SAAS,MAAM,OAAO,IAAI,CAAC;AAAA,EACjC,OAAO,qBAAO,KAAK;AAAA,EACnB,OAAO,qBAAO,KAAK;AAAA,EACnB,WAAW,qBAAO,KAAK;AAAA,EACvB,KAAK;AAAA,EACL,KAAK,qBAAO,KAAK;AAAA,EACjB,MAAM;AAAA,EACN,OAAO,qBAAO,KAAK;AAAA,EACnB,KAAK,qBAAO,KAAK;AAAA,EACjB,KAAK,qBAAO,KAAK;AAAA,EACjB,MAAM,qBAAO,KAAK;AAAA,EAClB,SAAS,qBAAO,KAAK;AAAA,EACrB,QAAQ,qBAAO,KAAK;AACtB;AAUO,MAAM,aAAa,CAAC,MAAY,SAA2C;AAChF,QAAM,SAAS,CAAC,UAAkB,KAAK,MAAM,IAAI,KAAK,QAAQ,KAAK,CAAC;AACpE,QAAM,WAAW,CAAC,UAAkB;AAClC,UAAM,QAAQ,KAAK,SAAS,IAAI,KAAK,QAAQ,KAAK,CAAC;AACnD,QAAI,UAAU,OAAW,QAAO,qBAAO,QAAQ,KAAK;AACpD,UAAM,OAAO,MAAM,OAAO,KAAK,KAAK,GAAG;AACvC,WAAO,qBAAO;AAAA,MACZ,QAAQ,SAAS,SAAS,qBAAqB,SAAS,SAAY,aAAa,eAAe,YAAY,KAAK;AAAA,IACnH;AAAA,EACF;AACA,SAAO,WAAW,SAAS;AAAA,IACzB,MAAM,CAAC,UAAU;AACf,YAAM,OAAO,MAAM,OAAO,KAAK,KAAK,GAAG;AACvC,aAAO,SAAS,SACZ,qBAAO,KAAK,QAAQ,YAAY,QAAQ,KAAK,CAAC,IAC9C,qBAAO,QAAQ,KAAK,MAAM,KAAK,SAAS,IAAI,KAAK,QAAQ,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC;AAAA,IACpF;AAAA,IACA,eAAe,CAAC,UAAU;AACxB,YAAM,OAAO,OAAO,KAAK;AACzB,UAAI,SAAS,IAAK,QAAO,qBAAO,QAAQ,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACzF,YAAM,MAAM,SAAS,MAAM,qBAAqB,SAAS,UAAa,SAAS,MAAM,aAAa;AAClG,aAAO,qBAAO,KAAK,QAAQ,KAAK,iBAAiB,KAAK,CAAC;AAAA,IACzD;AAAA,IACA,UAAU,CAAC,UAAU;AACnB,YAAM,OAAO,OAAO,KAAK;AACzB,aAAO,SAAS,OAAO,SAAS,OAAO,SAAS,MAC5C,qBAAO,QAAQ,EAAE,IACjB,qBAAO,KAAK,QAAQ,SAAS,SAAY,aAAa,eAAe,YAAY,KAAK,CAAC;AAAA,IAC7F;AAAA,IACA;AAAA,IACA,gBAAgB,CAAC,UAAU,qBAAO,IAAI,SAAS,KAAK,GAAG,CAAC,UAAU,IAAI,YAAY,EAAE,OAAO,KAAK,CAAC;AAAA,IACjG,QAAQ,CAAC,UAAU,qBAAO,WAAW,SAAS,KAAK,CAAC;AAAA,EACtD,CAAC;AACH;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The failure constructors and the literal escape both Search peers share.
|
|
3
|
+
*
|
|
4
|
+
* The validation and matching rules themselves are public, in
|
|
5
|
+
* `../SearchContract.ts`, because an external peer has to build on them. What
|
|
6
|
+
* is left here is what an external peer never calls: the three `StdError`
|
|
7
|
+
* shapes the contract fails with, the root-failure mapping, and the regex escape a fixed-string search
|
|
8
|
+
* applies before compiling.
|
|
9
|
+
*
|
|
10
|
+
* @since 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
import type * as PlatformError from "effect/PlatformError";
|
|
13
|
+
import * as StdError from "../StdError.ts";
|
|
14
|
+
/**
|
|
15
|
+
* Constructs the common unsupported-pattern failure.
|
|
16
|
+
*
|
|
17
|
+
* @private
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
*/
|
|
20
|
+
export declare const invalidPattern: (pattern: string, detail: string) => StdError.StdError;
|
|
21
|
+
/**
|
|
22
|
+
* How every rejection {@link invalidPattern} writes begins.
|
|
23
|
+
*
|
|
24
|
+
* @private
|
|
25
|
+
* @since 1.0.0
|
|
26
|
+
*/
|
|
27
|
+
export declare const rejectionPrefix = "Unsupported ripgrep pattern ";
|
|
28
|
+
/**
|
|
29
|
+
* Constructs the common invalid-options failure.
|
|
30
|
+
*
|
|
31
|
+
* @private
|
|
32
|
+
* @since 1.0.0
|
|
33
|
+
*/
|
|
34
|
+
export declare const invalidInput: (detail: string) => StdError.StdError;
|
|
35
|
+
/**
|
|
36
|
+
* Constructs the common missing-root failure.
|
|
37
|
+
*
|
|
38
|
+
* @private
|
|
39
|
+
* @since 1.0.0
|
|
40
|
+
*/
|
|
41
|
+
export declare const notFound: (path: string) => StdError.StdError;
|
|
42
|
+
/**
|
|
43
|
+
* Maps a failure to inspect the search root onto the contract's failures.
|
|
44
|
+
*
|
|
45
|
+
* Only a root that does not exist is `not_found`. Every other reason a stat
|
|
46
|
+
* or listing can fail (a guarded host that fails closed, a permission the
|
|
47
|
+
* process lacks, an I/O error) is a host operation failing, and it is
|
|
48
|
+
* reported as `command_failed` with the platform's own message, so the
|
|
49
|
+
* caller reads the real cause instead of a missing-path claim about a path
|
|
50
|
+
* that exists.
|
|
51
|
+
*
|
|
52
|
+
* @private
|
|
53
|
+
* @since 1.0.0
|
|
54
|
+
*/
|
|
55
|
+
export declare const rootFailure: (path: string, error: PlatformError.PlatformError) => StdError.StdError;
|
|
56
|
+
/**
|
|
57
|
+
* Escapes literal text for JavaScript regular expressions.
|
|
58
|
+
*
|
|
59
|
+
* @private
|
|
60
|
+
* @since 1.0.0
|
|
61
|
+
*/
|
|
62
|
+
export declare const escapeRegex: (value: string) => string;
|
|
63
|
+
//# sourceMappingURL=SearchContract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchContract.d.ts","sourceRoot":"","sources":["../../../src/internal/SearchContract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,KAAK,aAAa,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,SAAS,MAAM,EAAE,QAAQ,MAAM,KAAG,QAAQ,CAAC,QACgC,CAAA;AAE1G;;;;;GAKG;AACH,eAAO,MAAM,eAAe,iCAAiC,CAAA;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,KAAG,QAAQ,CAAC,QAC0C,CAAA;AAEjG;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,KAAG,QAAQ,CAAC,QACuC,CAAA;AAExF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,OAAO,aAAa,CAAC,aAAa,KAAG,QAAQ,CAAC,QAKyB,CAAA;AAEjH;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAsD,CAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
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 SearchContract_exports = {};
|
|
30
|
+
__export(SearchContract_exports, {
|
|
31
|
+
escapeRegex: () => escapeRegex,
|
|
32
|
+
invalidInput: () => invalidInput,
|
|
33
|
+
invalidPattern: () => invalidPattern,
|
|
34
|
+
notFound: () => notFound,
|
|
35
|
+
rejectionPrefix: () => rejectionPrefix,
|
|
36
|
+
rootFailure: () => rootFailure
|
|
37
|
+
});
|
|
38
|
+
module.exports = __toCommonJS(SearchContract_exports);
|
|
39
|
+
var StdError = __toESM(require("../StdError.js"), 1);
|
|
40
|
+
const invalidPattern = (pattern, detail) => new StdError.StdError({ code: "invalid_pattern", message: `${rejectionPrefix}"${pattern}": ${detail}` });
|
|
41
|
+
const rejectionPrefix = "Unsupported ripgrep pattern ";
|
|
42
|
+
const invalidInput = (detail) => new StdError.StdError({ code: "invalid_input", message: `Invalid ripgrep options: ${detail}` });
|
|
43
|
+
const notFound = (path) => new StdError.StdError({ code: "not_found", message: `Path not found: ${path}`, path });
|
|
44
|
+
const rootFailure = (path, error) => error.reason._tag === "NotFound" ? notFound(path) : error.reason._tag === "PermissionDenied" ? new StdError.StdError({ code: "permission_denied", message: `Cannot search ${path}: ${error.message}`, path }) : new StdError.StdError({ code: "command_failed", message: `Cannot search ${path}: ${error.message}`, path });
|
|
45
|
+
const escapeRegex = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
46
|
+
//# sourceMappingURL=SearchContract.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/internal/SearchContract.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * The failure constructors and the literal escape both Search peers share.\n *\n * The validation and matching rules themselves are public, in\n * `../SearchContract.ts`, because an external peer has to build on them. What\n * is left here is what an external peer never calls: the three `StdError`\n * shapes the contract fails with, the root-failure mapping, and the regex escape a fixed-string search\n * applies before compiling.\n *\n * @since 1.0.0\n */\n\nimport type * as PlatformError from \"effect/PlatformError\"\nimport * as StdError from \"../StdError.ts\"\n\n/**\n * Constructs the common unsupported-pattern failure.\n *\n * @private\n * @since 1.0.0\n */\nexport const invalidPattern = (pattern: string, detail: string): StdError.StdError =>\n new StdError.StdError({ code: \"invalid_pattern\", message: `${rejectionPrefix}\"${pattern}\": ${detail}` })\n\n/**\n * How every rejection {@link invalidPattern} writes begins.\n *\n * @private\n * @since 1.0.0\n */\nexport const rejectionPrefix = \"Unsupported ripgrep pattern \"\n\n/**\n * Constructs the common invalid-options failure.\n *\n * @private\n * @since 1.0.0\n */\nexport const invalidInput = (detail: string): StdError.StdError =>\n new StdError.StdError({ code: \"invalid_input\", message: `Invalid ripgrep options: ${detail}` })\n\n/**\n * Constructs the common missing-root failure.\n *\n * @private\n * @since 1.0.0\n */\nexport const notFound = (path: string): StdError.StdError =>\n new StdError.StdError({ code: \"not_found\", message: `Path not found: ${path}`, path })\n\n/**\n * Maps a failure to inspect the search root onto the contract's failures.\n *\n * Only a root that does not exist is `not_found`. Every other reason a stat\n * or listing can fail (a guarded host that fails closed, a permission the\n * process lacks, an I/O error) is a host operation failing, and it is\n * reported as `command_failed` with the platform's own message, so the\n * caller reads the real cause instead of a missing-path claim about a path\n * that exists.\n *\n * @private\n * @since 1.0.0\n */\nexport const rootFailure = (path: string, error: PlatformError.PlatformError): StdError.StdError =>\n error.reason._tag === \"NotFound\"\n ? notFound(path)\n : error.reason._tag === \"PermissionDenied\"\n ? new StdError.StdError({ code: \"permission_denied\", message: `Cannot search ${path}: ${error.message}`, path })\n : new StdError.StdError({ code: \"command_failed\", message: `Cannot search ${path}: ${error.message}`, path })\n\n/**\n * Escapes literal text for JavaScript regular expressions.\n *\n * @private\n * @since 1.0.0\n */\nexport const escapeRegex = (value: string): string => value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA,eAA0B;AAQnB,MAAM,iBAAiB,CAAC,SAAiB,WAC9C,IAAI,SAAS,SAAS,EAAE,MAAM,mBAAmB,SAAS,GAAG,eAAe,IAAI,OAAO,MAAM,MAAM,GAAG,CAAC;AAQlG,MAAM,kBAAkB;AAQxB,MAAM,eAAe,CAAC,WAC3B,IAAI,SAAS,SAAS,EAAE,MAAM,iBAAiB,SAAS,4BAA4B,MAAM,GAAG,CAAC;AAQzF,MAAM,WAAW,CAAC,SACvB,IAAI,SAAS,SAAS,EAAE,MAAM,aAAa,SAAS,mBAAmB,IAAI,IAAI,KAAK,CAAC;AAehF,MAAM,cAAc,CAAC,MAAc,UACxC,MAAM,OAAO,SAAS,aAClB,SAAS,IAAI,IACb,MAAM,OAAO,SAAS,qBACtB,IAAI,SAAS,SAAS,EAAE,MAAM,qBAAqB,SAAS,iBAAiB,IAAI,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,IAC7G,IAAI,SAAS,SAAS,EAAE,MAAM,kBAAkB,SAAS,iBAAiB,IAAI,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC;AAQzG,MAAM,cAAc,CAAC,UAA0B,MAAM,QAAQ,uBAAuB,MAAM;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The definition a line sits inside, read off the file's own shape.
|
|
3
|
+
*
|
|
4
|
+
* A search hit is a line number, and a line number is not a read window. Agents
|
|
5
|
+
* guess one: `offset: line - 10, limit: 40`, which lands short (astropy-15569
|
|
6
|
+
* missed `get_lookup` by one line and probed the wrong binding) or long (six
|
|
7
|
+
* blind-offset reads on sympy-13878). The enclosing definition is the window the
|
|
8
|
+
* hit actually belongs to, and for indentation- and brace-structured source it
|
|
9
|
+
* is derivable from the text already in hand.
|
|
10
|
+
*
|
|
11
|
+
* This is a heuristic and reports only what it can see plainly: a declaration
|
|
12
|
+
* keyword, a name, and the block that keyword opens. When the shape is not
|
|
13
|
+
* plain — a match at top level, a language this table does not name, a
|
|
14
|
+
* declaration split across lines — it answers `undefined` rather than guessing,
|
|
15
|
+
* because a wrong window is worse than none.
|
|
16
|
+
*
|
|
17
|
+
* @since 1.0.0
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* The definition enclosing a line.
|
|
21
|
+
*
|
|
22
|
+
* @category models
|
|
23
|
+
* @since 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
export interface Symbol {
|
|
26
|
+
readonly kind: string;
|
|
27
|
+
readonly name: string;
|
|
28
|
+
readonly startLine: number;
|
|
29
|
+
readonly endLine: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The definition enclosing a 1-based line, or `undefined` when there is none to
|
|
33
|
+
* read plainly.
|
|
34
|
+
*
|
|
35
|
+
* @category navigation
|
|
36
|
+
* @since 1.0.0
|
|
37
|
+
*/
|
|
38
|
+
export declare const enclosing: (lines: ReadonlyArray<string>, line: number) => Symbol | undefined;
|
|
39
|
+
//# sourceMappingURL=Symbols.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Symbols.d.ts","sourceRoot":"","sources":["../../../src/internal/Symbols.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAgBD;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,MAAM,KAAG,MAAM,GAAG,SAkC/E,CAAA"}
|