@vibe-agent-toolkit/utils 0.2.0-rc.10 → 0.2.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/README.md +112 -10
- package/dist/archive/archive.d.ts +129 -0
- package/dist/archive/archive.d.ts.map +1 -0
- package/dist/archive/archive.js +223 -0
- package/dist/archive/archive.js.map +1 -0
- package/dist/archive/entries.d.ts +132 -0
- package/dist/archive/entries.d.ts.map +1 -0
- package/dist/archive/entries.js +223 -0
- package/dist/archive/entries.js.map +1 -0
- package/dist/archive/limits.d.ts +39 -0
- package/dist/archive/limits.d.ts.map +1 -0
- package/dist/archive/limits.js +59 -0
- package/dist/archive/limits.js.map +1 -0
- package/dist/archive/records.d.ts +14 -0
- package/dist/archive/records.d.ts.map +1 -0
- package/dist/archive/records.js +3 -0
- package/dist/archive/records.js.map +1 -0
- package/dist/archive/tar-reader.d.ts +18 -0
- package/dist/archive/tar-reader.d.ts.map +1 -0
- package/dist/archive/tar-reader.js +173 -0
- package/dist/archive/tar-reader.js.map +1 -0
- package/dist/archive/zip-reader.d.ts +76 -0
- package/dist/archive/zip-reader.d.ts.map +1 -0
- package/dist/archive/zip-reader.js +376 -0
- package/dist/archive/zip-reader.js.map +1 -0
- package/dist/archive.d.ts +14 -0
- package/dist/archive.d.ts.map +1 -0
- package/dist/archive.js +12 -0
- package/dist/archive.js.map +1 -0
- package/dist/asset-reference.d.ts +17 -1
- package/dist/asset-reference.d.ts.map +1 -1
- package/dist/asset-reference.js +31 -7
- package/dist/asset-reference.js.map +1 -1
- package/dist/dirent-kind.d.ts +13 -40
- package/dist/dirent-kind.d.ts.map +1 -1
- package/dist/dirent-kind.js +21 -69
- package/dist/dirent-kind.js.map +1 -1
- package/dist/entrypoint.d.ts +2 -2
- package/dist/entrypoint.d.ts.map +1 -1
- package/dist/entrypoint.js +4 -3
- package/dist/entrypoint.js.map +1 -1
- package/dist/env-flag.d.ts +13 -5
- package/dist/env-flag.d.ts.map +1 -1
- package/dist/env-flag.js +13 -5
- package/dist/env-flag.js.map +1 -1
- package/dist/errors/confirmed-absent.d.ts +41 -0
- package/dist/errors/confirmed-absent.d.ts.map +1 -0
- package/dist/errors/confirmed-absent.js +43 -0
- package/dist/errors/confirmed-absent.js.map +1 -0
- package/dist/errors/errno-table.d.ts +177 -0
- package/dist/errors/errno-table.d.ts.map +1 -0
- package/dist/errors/errno-table.js +343 -0
- package/dist/errors/errno-table.js.map +1 -0
- package/dist/errors/fs-boundary.d.ts +36 -0
- package/dist/errors/fs-boundary.d.ts.map +1 -0
- package/dist/errors/fs-boundary.js +121 -0
- package/dist/errors/fs-boundary.js.map +1 -0
- package/dist/errors/fs-fault.d.ts +176 -0
- package/dist/errors/fs-fault.d.ts.map +1 -0
- package/dist/errors/fs-fault.js +215 -0
- package/dist/errors/fs-fault.js.map +1 -0
- package/dist/errors/git-errno.d.ts +13 -0
- package/dist/errors/git-errno.d.ts.map +1 -0
- package/dist/errors/git-errno.js +45 -0
- package/dist/errors/git-errno.js.map +1 -0
- package/dist/errors/path-present.d.ts +72 -0
- package/dist/errors/path-present.d.ts.map +1 -0
- package/dist/errors/path-present.js +110 -0
- package/dist/errors/path-present.js.map +1 -0
- package/dist/errors/rag-index-empty.d.ts +16 -0
- package/dist/errors/rag-index-empty.d.ts.map +1 -0
- package/dist/errors/rag-index-empty.js +16 -0
- package/dist/errors/rag-index-empty.js.map +1 -0
- package/dist/errors/suppressed-faults.d.ts +34 -0
- package/dist/errors/suppressed-faults.d.ts.map +1 -0
- package/dist/errors/suppressed-faults.js +66 -0
- package/dist/errors/suppressed-faults.js.map +1 -0
- package/dist/file-crawler.d.ts +13 -18
- package/dist/file-crawler.d.ts.map +1 -1
- package/dist/file-crawler.js +140 -24
- package/dist/file-crawler.js.map +1 -1
- package/dist/fs-utils.d.ts +75 -50
- package/dist/fs-utils.d.ts.map +1 -1
- package/dist/fs-utils.js +148 -158
- package/dist/fs-utils.js.map +1 -1
- package/dist/fs.d.ts +5 -4
- package/dist/fs.d.ts.map +1 -1
- package/dist/fs.js +5 -4
- package/dist/fs.js.map +1 -1
- package/dist/git-snapshot.d.ts +25 -17
- package/dist/git-snapshot.d.ts.map +1 -1
- package/dist/git-snapshot.js +65 -11
- package/dist/git-snapshot.js.map +1 -1
- package/dist/git-tracker.d.ts +11 -3
- package/dist/git-tracker.d.ts.map +1 -1
- package/dist/git-tracker.js +29 -6
- package/dist/git-tracker.js.map +1 -1
- package/dist/git-utils.d.ts.map +1 -1
- package/dist/git-utils.js +7 -35
- package/dist/git-utils.js.map +1 -1
- package/dist/git.d.ts +1 -1
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +1 -1
- package/dist/git.js.map +1 -1
- package/dist/gitignore-checker.d.ts.map +1 -1
- package/dist/gitignore-checker.js +5 -4
- package/dist/gitignore-checker.js.map +1 -1
- package/dist/in-order.d.ts +93 -0
- package/dist/in-order.d.ts.map +1 -0
- package/dist/in-order.js +165 -0
- package/dist/in-order.js.map +1 -0
- package/dist/index.d.ts +20 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -4
- package/dist/index.js.map +1 -1
- package/dist/kill-process-tree.d.ts +43 -0
- package/dist/kill-process-tree.d.ts.map +1 -0
- package/dist/kill-process-tree.js +48 -0
- package/dist/kill-process-tree.js.map +1 -0
- package/dist/link-following.d.ts +115 -0
- package/dist/link-following.d.ts.map +1 -0
- package/dist/link-following.js +283 -0
- package/dist/link-following.js.map +1 -0
- package/dist/listing-refusal.d.ts +44 -0
- package/dist/listing-refusal.d.ts.map +1 -1
- package/dist/listing-refusal.js +79 -2
- package/dist/listing-refusal.js.map +1 -1
- package/dist/name-fold.d.ts +25 -0
- package/dist/name-fold.d.ts.map +1 -0
- package/dist/name-fold.js +40 -0
- package/dist/name-fold.js.map +1 -0
- package/dist/path-containment.d.ts +17 -0
- package/dist/path-containment.d.ts.map +1 -1
- package/dist/path-containment.js +28 -5
- package/dist/path-containment.js.map +1 -1
- package/dist/path-utils.d.ts +14 -17
- package/dist/path-utils.d.ts.map +1 -1
- package/dist/path-utils.js +37 -55
- package/dist/path-utils.js.map +1 -1
- package/dist/process.d.ts +2 -0
- package/dist/process.d.ts.map +1 -1
- package/dist/process.js +2 -0
- package/dist/process.js.map +1 -1
- package/dist/project-utils.d.ts.map +1 -1
- package/dist/project-utils.js +8 -9
- package/dist/project-utils.js.map +1 -1
- package/dist/safe-exec.d.ts +6 -2
- package/dist/safe-exec.d.ts.map +1 -1
- package/dist/safe-exec.js +1 -1
- package/dist/safe-exec.js.map +1 -1
- package/dist/skill-targets.d.ts.map +1 -1
- package/dist/skill-targets.js +3 -1
- package/dist/skill-targets.js.map +1 -1
- package/dist/skill-test/spawn-claude.d.ts +0 -15
- package/dist/skill-test/spawn-claude.d.ts.map +1 -1
- package/dist/skill-test/spawn-claude.js +11 -50
- package/dist/skill-test/spawn-claude.js.map +1 -1
- package/dist/special-file.d.ts +18 -0
- package/dist/special-file.d.ts.map +1 -0
- package/dist/special-file.js +21 -0
- package/dist/special-file.js.map +1 -0
- package/dist/terminating-signals.d.ts +129 -0
- package/dist/terminating-signals.d.ts.map +1 -0
- package/dist/terminating-signals.js +210 -0
- package/dist/terminating-signals.js.map +1 -0
- package/dist/test-helpers.d.ts +9 -5
- package/dist/test-helpers.d.ts.map +1 -1
- package/dist/test-helpers.js +18 -21
- package/dist/test-helpers.js.map +1 -1
- package/dist/test-scratch-guard.d.ts +34 -0
- package/dist/test-scratch-guard.d.ts.map +1 -0
- package/dist/test-scratch-guard.js +45 -0
- package/dist/test-scratch-guard.js.map +1 -0
- package/dist/testing/archive-fixtures.d.ts +147 -0
- package/dist/testing/archive-fixtures.d.ts.map +1 -0
- package/dist/testing/archive-fixtures.js +449 -0
- package/dist/testing/archive-fixtures.js.map +1 -0
- package/dist/testing/executables.d.ts +6 -0
- package/dist/testing/executables.d.ts.map +1 -1
- package/dist/testing/executables.js +20 -9
- package/dist/testing/executables.js.map +1 -1
- package/dist/testing/fault-fs-preload.d.ts +16 -0
- package/dist/testing/fault-fs-preload.d.ts.map +1 -0
- package/dist/testing/fault-fs-preload.js +22 -0
- package/dist/testing/fault-fs-preload.js.map +1 -0
- package/dist/testing/fault-fs.d.ts +115 -0
- package/dist/testing/fault-fs.d.ts.map +1 -0
- package/dist/testing/fault-fs.js +411 -0
- package/dist/testing/fault-fs.js.map +1 -0
- package/dist/testing/fault-spec.d.ts +83 -0
- package/dist/testing/fault-spec.d.ts.map +1 -0
- package/dist/testing/fault-spec.js +132 -0
- package/dist/testing/fault-spec.js.map +1 -0
- package/dist/testing/hostile-tree.d.ts.map +1 -1
- package/dist/testing/hostile-tree.js +3 -4
- package/dist/testing/hostile-tree.js.map +1 -1
- package/dist/testing/platform-gates.d.ts +8 -0
- package/dist/testing/platform-gates.d.ts.map +1 -1
- package/dist/testing/platform-gates.js +24 -0
- package/dist/testing/platform-gates.js.map +1 -1
- package/dist/testing/temp-dir.d.ts +31 -0
- package/dist/testing/temp-dir.d.ts.map +1 -1
- package/dist/testing/temp-dir.js +63 -0
- package/dist/testing/temp-dir.js.map +1 -1
- package/dist/testing/tier-timeout.d.ts +34 -0
- package/dist/testing/tier-timeout.d.ts.map +1 -0
- package/dist/testing/tier-timeout.js +45 -0
- package/dist/testing/tier-timeout.js.map +1 -0
- package/dist/testing/tree-snapshot.d.ts +71 -0
- package/dist/testing/tree-snapshot.d.ts.map +1 -0
- package/dist/testing/tree-snapshot.js +163 -0
- package/dist/testing/tree-snapshot.js.map +1 -0
- package/dist/testing.d.ts +6 -0
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +8 -1
- package/dist/testing.js.map +1 -1
- package/dist/text-content.d.ts +29 -0
- package/dist/text-content.d.ts.map +1 -1
- package/dist/text-content.js +64 -0
- package/dist/text-content.js.map +1 -1
- package/dist/text-file.d.ts +58 -6
- package/dist/text-file.d.ts.map +1 -1
- package/dist/text-file.js +111 -11
- package/dist/text-file.js.map +1 -1
- package/dist/text.d.ts +1 -1
- package/dist/text.d.ts.map +1 -1
- package/dist/text.js +1 -1
- package/dist/text.js.map +1 -1
- package/dist/timing-dump.d.ts.map +1 -1
- package/dist/timing-dump.js +2 -10
- package/dist/timing-dump.js.map +1 -1
- package/dist/tree-change/apply-decisions.d.ts +101 -0
- package/dist/tree-change/apply-decisions.d.ts.map +1 -0
- package/dist/tree-change/apply-decisions.js +139 -0
- package/dist/tree-change/apply-decisions.js.map +1 -0
- package/dist/tree-change/apply.d.ts +98 -0
- package/dist/tree-change/apply.d.ts.map +1 -0
- package/dist/tree-change/apply.js +364 -0
- package/dist/tree-change/apply.js.map +1 -0
- package/dist/tree-change/copy-decisions.d.ts +58 -0
- package/dist/tree-change/copy-decisions.d.ts.map +1 -0
- package/dist/tree-change/copy-decisions.js +66 -0
- package/dist/tree-change/copy-decisions.js.map +1 -0
- package/dist/tree-change/copy-tree.d.ts +125 -0
- package/dist/tree-change/copy-tree.d.ts.map +1 -0
- package/dist/tree-change/copy-tree.js +279 -0
- package/dist/tree-change/copy-tree.js.map +1 -0
- package/dist/tree-change/files.d.ts +167 -0
- package/dist/tree-change/files.d.ts.map +1 -0
- package/dist/tree-change/files.js +423 -0
- package/dist/tree-change/files.js.map +1 -0
- package/dist/tree-change/followed-walk.d.ts +54 -0
- package/dist/tree-change/followed-walk.d.ts.map +1 -0
- package/dist/tree-change/followed-walk.js +81 -0
- package/dist/tree-change/followed-walk.js.map +1 -0
- package/dist/tree-change/host-chain.d.ts +48 -0
- package/dist/tree-change/host-chain.d.ts.map +1 -0
- package/dist/tree-change/host-chain.js +85 -0
- package/dist/tree-change/host-chain.js.map +1 -0
- package/dist/tree-change/identity-compare.d.ts +61 -0
- package/dist/tree-change/identity-compare.d.ts.map +1 -0
- package/dist/tree-change/identity-compare.js +115 -0
- package/dist/tree-change/identity-compare.js.map +1 -0
- package/dist/tree-change/identity.d.ts +62 -0
- package/dist/tree-change/identity.d.ts.map +1 -0
- package/dist/tree-change/identity.js +152 -0
- package/dist/tree-change/identity.js.map +1 -0
- package/dist/tree-change/index.d.ts +24 -0
- package/dist/tree-change/index.d.ts.map +1 -0
- package/dist/tree-change/index.js +14 -0
- package/dist/tree-change/index.js.map +1 -0
- package/dist/tree-change/link-chain.d.ts +180 -0
- package/dist/tree-change/link-chain.d.ts.map +1 -0
- package/dist/tree-change/link-chain.js +377 -0
- package/dist/tree-change/link-chain.js.map +1 -0
- package/dist/tree-change/link-containment.d.ts +105 -0
- package/dist/tree-change/link-containment.d.ts.map +1 -0
- package/dist/tree-change/link-containment.js +196 -0
- package/dist/tree-change/link-containment.js.map +1 -0
- package/dist/tree-change/link-walk.d.ts +49 -0
- package/dist/tree-change/link-walk.d.ts.map +1 -0
- package/dist/tree-change/link-walk.js +69 -0
- package/dist/tree-change/link-walk.js.map +1 -0
- package/dist/tree-change/plan.d.ts +206 -0
- package/dist/tree-change/plan.d.ts.map +1 -0
- package/dist/tree-change/plan.js +320 -0
- package/dist/tree-change/plan.js.map +1 -0
- package/dist/tree-change/readable-tree.d.ts +44 -0
- package/dist/tree-change/readable-tree.d.ts.map +1 -0
- package/dist/tree-change/readable-tree.js +52 -0
- package/dist/tree-change/readable-tree.js.map +1 -0
- package/dist/tree-change/rollback-error.d.ts +29 -0
- package/dist/tree-change/rollback-error.d.ts.map +1 -0
- package/dist/tree-change/rollback-error.js +31 -0
- package/dist/tree-change/rollback-error.js.map +1 -0
- package/dist/tree-change/staging-names.d.ts +27 -0
- package/dist/tree-change/staging-names.d.ts.map +1 -0
- package/dist/tree-change/staging-names.js +40 -0
- package/dist/tree-change/staging-names.js.map +1 -0
- package/dist/tree-change/tree-walk.d.ts +81 -0
- package/dist/tree-change/tree-walk.d.ts.map +1 -0
- package/dist/tree-change/tree-walk.js +212 -0
- package/dist/tree-change/tree-walk.js.map +1 -0
- package/dist/win32-namespace.d.ts +24 -0
- package/dist/win32-namespace.d.ts.map +1 -0
- package/dist/win32-namespace.js +31 -0
- package/dist/win32-namespace.js.map +1 -0
- package/dist/yaml/surgical-yaml.d.ts +12 -3
- package/dist/yaml/surgical-yaml.d.ts.map +1 -1
- package/dist/yaml/surgical-yaml.js +16 -6
- package/dist/yaml/surgical-yaml.js.map +1 -1
- package/eslint/README.md +12 -4
- package/eslint/rules/fs-binding-scan.cjs +278 -0
- package/eslint/rules/no-adhoc-errno.cjs +364 -0
- package/eslint/rules/no-bare-symlink-in-tests.cjs +2 -3
- package/eslint/rules/no-blind-catch.cjs +1 -1
- package/eslint/rules/no-destructive-fs.cjs +359 -0
- package/eslint/rules/no-existssync.cjs +70 -0
- package/eslint/rules/no-fragile-entrypoint-guard.cjs +3 -2
- package/eslint/rules/no-link-following-fs.cjs +68 -0
- package/eslint/rules/no-literal-process-exit.cjs +96 -8
- package/eslint/rules/no-literal-test-timeout.cjs +214 -0
- package/eslint/rules/no-raw-signal-listener.cjs +224 -0
- package/eslint/rules/no-stdout-outside-writer.cjs +135 -0
- package/package.json +10 -2
- package/dist/errors/errno.d.ts +0 -51
- package/dist/errors/errno.d.ts.map +0 -1
- package/dist/errors/errno.js +0 -112
- package/dist/errors/errno.js.map +0 -1
- package/eslint/rules/no-fs-promises-cp.cjs +0 -43
package/dist/fs-utils.js
CHANGED
|
@@ -1,29 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Filesystem utilities
|
|
3
3
|
*/
|
|
4
|
-
// ⚠️
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
// assertion (they must reach neither `readdir` nor this pair), so a "tidy-up"
|
|
11
|
-
// back to named imports would silently disarm the guard. The async half below
|
|
12
|
-
// already uses the default object for the same reason.
|
|
13
|
-
import nodeFs from 'node:fs';
|
|
4
|
+
// ⚠️ Every fs call here is reached through a DEFAULT object (`fs.readdir`), and every
|
|
5
|
+
// link-following one through `link-following.ts`, which does the same: Node snapshots a
|
|
6
|
+
// builtin's named ESM exports at import time, so a `vi.spyOn` cannot see a call made through
|
|
7
|
+
// a named binding — the spy attaches and counts zero, which reads exactly like "this function
|
|
8
|
+
// performs no I/O". `pathSpellingFrom` and `realpathRowFrom` are guarded by precisely that
|
|
9
|
+
// assertion, so a "tidy-up" to named imports would silently disarm the guard.
|
|
14
10
|
import fs from 'node:fs/promises';
|
|
15
11
|
import path from 'node:path';
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import { isUnderRoot } from './path-containment.js';
|
|
12
|
+
import { fsFaultOf, isRetryableShortageError, isUnresolvableLinkError } from './errors/errno-table.js';
|
|
13
|
+
import { linkResolutionFault } from './errors/fs-fault.js';
|
|
14
|
+
import { everyInOrder } from './in-order.js';
|
|
15
|
+
import { followedRealpath, followedStatSync } from './link-following.js';
|
|
21
16
|
import { toForwardSlash, toNfc } from './path-core.js';
|
|
22
17
|
import { safePath } from './path-utils.js';
|
|
23
18
|
/**
|
|
24
19
|
* Turn a `readdir` rejection into the failure it actually is.
|
|
25
20
|
*
|
|
26
|
-
* ⚠️ **`
|
|
21
|
+
* ⚠️ **`fsFaultOf` is deliberately NOT used here, and that is not
|
|
27
22
|
* an oversight.** It answers a different question — *"is this the environment's
|
|
28
23
|
* fault or a bug in our code?"* — and to answer it, it deliberately groups
|
|
29
24
|
* `ENOENT` together with `EACCES`. That grouping IS the conflation this function
|
|
@@ -39,39 +34,44 @@ import { safePath } from './path-utils.js';
|
|
|
39
34
|
* @returns The listing outcome that error stands for
|
|
40
35
|
*/
|
|
41
36
|
export function listingFailure(error) {
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
// that does not exist, which is exactly what the caller has to report.
|
|
47
|
-
if (code === 'ENOENT' || code === 'ENOTDIR')
|
|
37
|
+
const facts = fsFaultOf(error);
|
|
38
|
+
// The `absent` class holds `ENOTDIR` too: a path component that is a file is a
|
|
39
|
+
// directory that does not exist, which is exactly what the caller has to report.
|
|
40
|
+
if (facts?.faultClass === 'absent')
|
|
48
41
|
return { outcome: 'absent' };
|
|
42
|
+
if (facts !== undefined)
|
|
43
|
+
return { outcome: 'unreadable', code: facts.errno };
|
|
44
|
+
// An errno outside the classifier's table is still a refusal, reported as itself.
|
|
45
|
+
const code = typeof error === 'object' && error !== null && 'code' in error ? error.code : undefined;
|
|
49
46
|
return { outcome: 'unreadable', code: typeof code === 'string' ? code : 'UNKNOWN' };
|
|
50
47
|
}
|
|
51
48
|
/**
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
* wrong answers *within one run*,
|
|
66
|
-
* unbounded number of syscalls on a `--x`
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
49
|
+
* Whether a listing refused with `code` could be answered differently by a later
|
|
50
|
+
* ask — {@link isRetryableShortageError}: busy, or out of descriptors.
|
|
51
|
+
*
|
|
52
|
+
* ⚠️ **This decides what may be MEMOIZED, which makes it a correctness boundary
|
|
53
|
+
* rather than a taxonomy.** `EACCES` (a mode bit) and `ELOOP` (a committed
|
|
54
|
+
* symlink cycle) are facts about the tree: they hold for the whole run, re-asking
|
|
55
|
+
* buys the same refusal, and caching them is exactly what {@link FsLookupCache}
|
|
56
|
+
* is for. A descriptor shortage or a busy handle is not a fact about the tree at
|
|
57
|
+
* all — it is a fact about this process at one instant — and a memo that keeps
|
|
58
|
+
* one un-verifies every path under that directory for the rest of the run,
|
|
59
|
+
* producing a burst of findings that a re-run does not reproduce.
|
|
60
|
+
*
|
|
61
|
+
* **Everything else is treated as stable.** The two mistakes are not symmetric:
|
|
62
|
+
* memoizing a transient refusal costs a burst of wrong answers *within one run*,
|
|
63
|
+
* while re-asking a stable one costs an unbounded number of syscalls on a `--x`
|
|
64
|
+
* directory that will refuse every one of them. The `device` class (`ETIMEDOUT`,
|
|
65
|
+
* `ESTALE`, `EIO`) stays stable — a re-ask against failing hardware or a hung
|
|
66
|
+
* mount is the storm this boundary exists to avoid — and so does a full disk
|
|
67
|
+
* (`ENOSPC`, `EDQUOT`): re-asking frees no space, and the clause below would
|
|
68
|
+
* tell the reader to re-run.
|
|
71
69
|
*/
|
|
72
|
-
|
|
70
|
+
function isTransientListingCode(code) {
|
|
71
|
+
return isRetryableShortageError({ code });
|
|
72
|
+
}
|
|
73
73
|
/**
|
|
74
|
-
* The clause a finding prints about a refusal {@link
|
|
74
|
+
* The clause a finding prints about a refusal {@link isTransientListingCode}
|
|
75
75
|
* calls transient — owned here, beside the list, so it describes every member.
|
|
76
76
|
*
|
|
77
77
|
* 🪤 Both consumers of `AbsenceCause.transient` used to write their own: "`X`
|
|
@@ -86,11 +86,11 @@ const TRANSIENT_LISTING_ERRNOS = new Set(['EMFILE', 'ENFILE', 'EAGAIN']);
|
|
|
86
86
|
* trailing punctuation so a caller can continue the sentence
|
|
87
87
|
*/
|
|
88
88
|
export function transientRefusalClause(code) {
|
|
89
|
-
return `${code} is a transient shortage (a descriptor
|
|
89
|
+
return `${code} is a transient shortage (a descriptor this process ran out of, or something busy, for a moment), not a permission`;
|
|
90
90
|
}
|
|
91
91
|
/** Whether this listing failed in a way a later ask could get past. */
|
|
92
92
|
function isTransientRefusal(listing) {
|
|
93
|
-
return listing.outcome === 'unreadable' &&
|
|
93
|
+
return listing.outcome === 'unreadable' && isTransientListingCode(listing.code);
|
|
94
94
|
}
|
|
95
95
|
/**
|
|
96
96
|
* Per-run memo for the two filesystem lookups that validation repeats on values
|
|
@@ -133,6 +133,12 @@ export class FsLookupCache {
|
|
|
133
133
|
#probeMisses = 0;
|
|
134
134
|
/** The listings turned into spelling indexes, built on first use. */
|
|
135
135
|
#spellingIndex;
|
|
136
|
+
/** The tree every path this cache follows is crawled in: the operator's own input (`link-following.ts`). */
|
|
137
|
+
#within;
|
|
138
|
+
/** @param within - The tree this run's paths are crawled in — a project or skill root the operator named */
|
|
139
|
+
constructor(within) {
|
|
140
|
+
this.#within = within;
|
|
141
|
+
}
|
|
136
142
|
/**
|
|
137
143
|
* The three-way spelling index over this cache's listings — one per run, for
|
|
138
144
|
* the same reason the listings themselves are.
|
|
@@ -165,12 +171,12 @@ export class FsLookupCache {
|
|
|
165
171
|
/**
|
|
166
172
|
* Does this path exist, and is it a directory — asked once per run.
|
|
167
173
|
*
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
* `
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
174
|
+
* One followed `stat`, its link chain read beneath this cache's tree first
|
|
175
|
+
* (`followedStatSync`): a path that resolves to nothing — absent, dangling, a
|
|
176
|
+
* cycle — is `{ exists: false }`; a probe the OS refused, or a chain VAT will not
|
|
177
|
+
* hand the kernel (a link to a network or device path), is present with NO
|
|
178
|
+
* answer (`isDirectory: null`), which the link walker reports as an unreadable
|
|
179
|
+
* target — so the refusal is SEEN, never read as "not there".
|
|
174
180
|
*
|
|
175
181
|
* Synchronous, unlike this class's other two lookups, because its caller (the
|
|
176
182
|
* skill link-graph walker) is synchronous throughout. One oracle answering
|
|
@@ -185,25 +191,18 @@ export class FsLookupCache {
|
|
|
185
191
|
if (cached !== undefined)
|
|
186
192
|
return cached;
|
|
187
193
|
this.#probeMisses++;
|
|
188
|
-
|
|
194
|
+
let exists = true;
|
|
189
195
|
let isDirectory = null;
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
// stays loud; `isFilesystemAccessError` is the right predicate here
|
|
201
|
-
// precisely because it groups every environmental errno together and
|
|
202
|
-
// excludes a `TypeError`.
|
|
203
|
-
if (!isFilesystemAccessError(error))
|
|
204
|
-
throw error;
|
|
205
|
-
isDirectory = null;
|
|
206
|
-
}
|
|
196
|
+
try {
|
|
197
|
+
const stats = followedStatSync(targetPath, this.#within);
|
|
198
|
+
exists = stats !== undefined;
|
|
199
|
+
isDirectory = stats === undefined ? null : stats.isDirectory();
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
// A bug from under the stat is not a refusal and stays loud: only a fault
|
|
203
|
+
// the classifier knows, or VAT's own refusal of the chain, is "no answer".
|
|
204
|
+
if (linkResolutionFault(error) === undefined)
|
|
205
|
+
exists = false;
|
|
207
206
|
}
|
|
208
207
|
const result = { exists, isDirectory };
|
|
209
208
|
this.#probes.set(targetPath, result);
|
|
@@ -245,9 +244,16 @@ export class FsLookupCache {
|
|
|
245
244
|
* is idempotent at a root (`'/'` on posix, `'C:/'` for a drive, `'//server/share/'`
|
|
246
245
|
* for a UNC share), so without it the walk never terminates.
|
|
247
246
|
*
|
|
248
|
-
*
|
|
249
|
-
*
|
|
250
|
-
*
|
|
247
|
+
* Every filesystem failure walks up, and the row says which kind it was
|
|
248
|
+
* ({@link linkResolutionFault}, the one predicate): a path that resolves to
|
|
249
|
+
* nothing (ENOENT, ELOOP on a cycle, …) carries `fault: null`, and one the OS
|
|
250
|
+
* DECLINED (`EACCES`/`EPERM`) or could not look at carries the fault — errno
|
|
251
|
+
* and class — for the judge to report against that ONE target. Never a
|
|
252
|
+
* rejection: this column is filled over every link target in one
|
|
253
|
+
* `Promise.all`, and one refused target must not abort the run and lose every
|
|
254
|
+
* other finding. The ancestor answer is still the containment answer: a
|
|
255
|
+
* target outside the root is outside whatever refused beneath it. A bug
|
|
256
|
+
* (no errno) rejects as itself.
|
|
251
257
|
*
|
|
252
258
|
* ⚠️ **`promisify(nodeFs.realpath)` — NOT `fs/promises.realpath`. Node ships two
|
|
253
259
|
* different realpaths and they do not agree.** `fs.realpathSync` and the
|
|
@@ -285,7 +291,8 @@ export class FsLookupCache {
|
|
|
285
291
|
* The wrapper is allocated only on a cache MISS, i.e. once per actual syscall.
|
|
286
292
|
*
|
|
287
293
|
* @param targetPath - Path to canonicalize
|
|
288
|
-
* @returns
|
|
294
|
+
* @returns The canonical path with forward slashes on every platform, and the
|
|
295
|
+
* fault (or `null`) that sent the answer to an ancestor
|
|
289
296
|
*/
|
|
290
297
|
realpath(targetPath) {
|
|
291
298
|
const cached = this.#realpaths.get(targetPath);
|
|
@@ -298,9 +305,16 @@ export class FsLookupCache {
|
|
|
298
305
|
// sibling lookups: the rule matches a member call on an fs object, and the
|
|
299
306
|
// path is passed to the promisified wrapper instead. The path is
|
|
300
307
|
// caller-validated all the same.
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
308
|
+
// The kernel is asked only once the link chain has been read and shown local
|
|
309
|
+
// (`assertLocalChain`); a chain it refuses is this target's fault, like any other.
|
|
310
|
+
const pending = Promise.resolve()
|
|
311
|
+
.then(() => followedRealpath(targetPath, this.#within))
|
|
312
|
+
.then((real) => ({ path: toForwardSlash(real), fault: null }))
|
|
313
|
+
.catch((error) => {
|
|
314
|
+
const facts = linkResolutionFault(error);
|
|
315
|
+
const fault = facts === undefined ? null : { errno: facts.errno, faultClass: facts.faultClass, error };
|
|
316
|
+
return this.#canonicalizeViaAncestor(targetPath, fault);
|
|
317
|
+
});
|
|
304
318
|
this.#realpaths.set(targetPath, pending);
|
|
305
319
|
return pending;
|
|
306
320
|
}
|
|
@@ -314,24 +328,27 @@ export class FsLookupCache {
|
|
|
314
328
|
* before any of this can start.
|
|
315
329
|
*
|
|
316
330
|
* @param targetPath - Path that could not be canonicalized
|
|
317
|
-
* @
|
|
331
|
+
* @param fault - Why it could not, when the OS declined or could not look; `null` when it resolves to nothing
|
|
332
|
+
* @returns Canonical ancestor plus the missing remainder, forward-slashed, with
|
|
333
|
+
* this path's own fault — or, when it has none, the ancestor's
|
|
318
334
|
*/
|
|
319
|
-
async #canonicalizeViaAncestor(targetPath) {
|
|
335
|
+
async #canonicalizeViaAncestor(targetPath, fault) {
|
|
320
336
|
const absolutePath = safePath.resolve(targetPath);
|
|
321
337
|
const parent = toForwardSlash(path.dirname(absolutePath));
|
|
322
338
|
// Fixpoint at a filesystem root — `/`, `C:/`, `//server/share/` — where
|
|
323
339
|
// `dirname` returns its own input. Nothing left to walk, and no guard means
|
|
324
340
|
// no termination.
|
|
325
341
|
if (parent === absolutePath)
|
|
326
|
-
return absolutePath;
|
|
327
|
-
|
|
342
|
+
return { path: absolutePath, fault };
|
|
343
|
+
const ancestor = await this.realpath(parent);
|
|
344
|
+
return { path: safePath.join(ancestor.path, path.basename(absolutePath)), fault: fault ?? ancestor.fault };
|
|
328
345
|
}
|
|
329
346
|
/**
|
|
330
347
|
* What `dirPath` holds, or which of the two ways the question went unanswered.
|
|
331
348
|
*
|
|
332
349
|
* A *stable* failure is cached like a success: re-asking a directory whose
|
|
333
350
|
* mode bits refuse us, or whose path is a symlink cycle, is the same failed
|
|
334
|
-
* syscall. A **transient** one is not — see {@link
|
|
351
|
+
* syscall. A **transient** one is not — see {@link isTransientListingCode}.
|
|
335
352
|
*
|
|
336
353
|
* ⚠️ **The transient entry is dropped only once the promise has SETTLED, and
|
|
337
354
|
* that timing is the whole design.** Deleting the row up front, or refusing to
|
|
@@ -385,67 +402,6 @@ export class FsLookupCache {
|
|
|
385
402
|
return listing;
|
|
386
403
|
}
|
|
387
404
|
}
|
|
388
|
-
/** Thrown when a link inside the tree being copied points outside it. */
|
|
389
|
-
export class CopyLinkEscapesSourceError extends VatError {
|
|
390
|
-
constructor(link, src) {
|
|
391
|
-
super('COPY_LINK_ESCAPES_SOURCE', `Refusing to copy ${link}: it is a symlink to a path outside ${src}. ` +
|
|
392
|
-
'A copy follows links, so this would ship content the source tree does not own — ' +
|
|
393
|
-
'replace the link with the files, or point it inside the tree.');
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
/**
|
|
397
|
-
* Recursively copy a directory, following symlinks — contained to `src`.
|
|
398
|
-
*
|
|
399
|
-
* A link is copied as what it points at (a linked directory as its tree, a
|
|
400
|
-
* linked file as its bytes; a dangling link fails loudly in `stat`). Two
|
|
401
|
-
* refusals bound that: a link whose target is not under `src` throws
|
|
402
|
-
* {@link CopyLinkEscapesSourceError} — `scripts/etc -> /etc` used to copy
|
|
403
|
-
* `/etc` into `dist` — and a link that leads the walk back into a directory
|
|
404
|
-
* it already entered throws `DirectoryWalkRevisitedError` (`scripts/loop -> .`
|
|
405
|
-
* used to create `dest/loop/loop/…` until `ENAMETOOLONG`, writing every file
|
|
406
|
-
* at every level first). Adopter-authored trees reach this through
|
|
407
|
-
* `vat agent build`, so neither shape is exotic.
|
|
408
|
-
*
|
|
409
|
-
* @param src - Source directory path
|
|
410
|
-
* @param dest - Destination directory path
|
|
411
|
-
*
|
|
412
|
-
* @example
|
|
413
|
-
* await copyDirectory('/source/dir', '/dest/dir');
|
|
414
|
-
*/
|
|
415
|
-
export async function copyDirectory(src, dest) {
|
|
416
|
-
const walk = new FollowedWalk();
|
|
417
|
-
walk.enter(src);
|
|
418
|
-
await copyTree(src, dest, src, walk);
|
|
419
|
-
}
|
|
420
|
-
/** One level of {@link copyDirectory}; every directory it recurses into has been `enter`ed. */
|
|
421
|
-
async function copyTree(src, dest, root, walk) {
|
|
422
|
-
await fs.mkdir(dest, { recursive: true });
|
|
423
|
-
const entries = await fs.readdir(src, { withFileTypes: true });
|
|
424
|
-
for (const entry of entries) {
|
|
425
|
-
const srcPath = safePath.join(src, entry.name);
|
|
426
|
-
const destPath = safePath.join(dest, entry.name);
|
|
427
|
-
// (Inline rather than `direntKindFollowing`: that module imports this one.)
|
|
428
|
-
let isDirectory = entry.isDirectory();
|
|
429
|
-
if (entry.isSymbolicLink()) {
|
|
430
|
-
isDirectory = (await fs.stat(srcPath)).isDirectory();
|
|
431
|
-
// Revisit first, so a link back into the tree is named as the loop it
|
|
432
|
-
// is; then containment, so a link out is named as the escape it is.
|
|
433
|
-
if (isDirectory)
|
|
434
|
-
walk.enter(srcPath);
|
|
435
|
-
if (isUnderRoot(root, srcPath) !== 'inside')
|
|
436
|
-
throw new CopyLinkEscapesSourceError(srcPath, root);
|
|
437
|
-
}
|
|
438
|
-
else if (isDirectory) {
|
|
439
|
-
walk.enter(srcPath);
|
|
440
|
-
}
|
|
441
|
-
if (isDirectory) {
|
|
442
|
-
await copyTree(srcPath, destPath, root, walk);
|
|
443
|
-
}
|
|
444
|
-
else {
|
|
445
|
-
await fs.copyFile(srcPath, destPath);
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
405
|
/**
|
|
450
406
|
* The refusal a `readdir` that was refused stands for — errno, directory and
|
|
451
407
|
* whether a re-ask could answer differently, derived ONCE beside the errno list.
|
|
@@ -463,18 +419,46 @@ export function directoryRefusalFor(listing, directory) {
|
|
|
463
419
|
kind: 'directory_unreadable',
|
|
464
420
|
code: listing.code,
|
|
465
421
|
directory: toForwardSlash(directory),
|
|
466
|
-
transient:
|
|
422
|
+
transient: isTransientListingCode(listing.code),
|
|
467
423
|
};
|
|
468
424
|
}
|
|
425
|
+
/**
|
|
426
|
+
* The refusal a failed `stat` or `readdir` of a scan ROOT stands for, or
|
|
427
|
+
* `undefined` when the root is simply absent (`ENOENT`/`ENOTDIR`).
|
|
428
|
+
*
|
|
429
|
+
* For a caller that must decide whether a root exists before it scans it: an
|
|
430
|
+
* `existsSync` answers `false` for an untraversable parent too, and the root
|
|
431
|
+
* then reads as scanned and empty.
|
|
432
|
+
*
|
|
433
|
+
* @param error - What the `stat` or `readdir` of `directory` threw
|
|
434
|
+
* @param directory - The root that was asked about
|
|
435
|
+
*/
|
|
436
|
+
export function rootListingRefusal(error, directory) {
|
|
437
|
+
const listing = listingFailure(error);
|
|
438
|
+
return listing.outcome === 'unreadable' ? directoryRefusalFor(listing, directory) : undefined;
|
|
439
|
+
}
|
|
469
440
|
/**
|
|
470
441
|
* The cause for a listing that produced no index.
|
|
471
442
|
*
|
|
443
|
+
* ⛔ One link, one answer. A directory whose listing failed with an errno the ONE link predicate
|
|
444
|
+
* ({@link isUnresolvableLinkError}) calls "resolves to nothing" — the `absent` class, and a link
|
|
445
|
+
* loop (`ELOOP`) — is ABSENCE here, exactly as the realpath beside this walk
|
|
446
|
+
* ({@link FsLookupCache.realpath}, through `linkResolutionFault`) answers the same errno, and as the
|
|
447
|
+
* projection extent and every install lane do. This walk used to call a looping directory
|
|
448
|
+
* "unreadable" while that realpath called the same link a link to nothing: two answers for one
|
|
449
|
+
* link. Every other failed listing stays a refusal with its errno: declined or failed (`EACCES`,
|
|
450
|
+
* `EIO`, Windows' `UNKNOWN`), and Windows' ambiguous `EINVAL` / `ENAMETOOLONG`, each of which libuv
|
|
451
|
+
* answers for more than one Win32 error.
|
|
452
|
+
*
|
|
453
|
+
* {@link listingFailure} itself keeps `absent` to `ENOENT`/`ENOTDIR`: the crawler reads it to
|
|
454
|
+
* decide what it could not ENUMERATE, a different question from whether a link target exists.
|
|
455
|
+
*
|
|
472
456
|
* @param listing - A `readdir` outcome that is not `listed`
|
|
473
457
|
* @param directory - The directory that was asked about
|
|
474
458
|
* @returns Which absence this is, and — when it is a refusal — its detail
|
|
475
459
|
*/
|
|
476
460
|
function absenceCauseFor(listing, directory) {
|
|
477
|
-
if (listing.outcome === 'absent')
|
|
461
|
+
if (listing.outcome === 'absent' || isUnresolvableLinkError({ code: listing.code }))
|
|
478
462
|
return { kind: 'no_such_entry' };
|
|
479
463
|
return directoryRefusalFor(listing, directory);
|
|
480
464
|
}
|
|
@@ -621,17 +605,18 @@ export class DirectorySpellingIndex {
|
|
|
621
605
|
const actual = [];
|
|
622
606
|
let worst = 'exact';
|
|
623
607
|
let directory = root;
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
608
|
+
let absent;
|
|
609
|
+
// In order by necessity: which directory holds the next component depends
|
|
610
|
+
// on how this one is really spelled. Every listing is memoized, so a run
|
|
611
|
+
// pays per DIRECTORY, not per path and not per component.
|
|
612
|
+
await everyInOrder(segments, async (segment) => {
|
|
628
613
|
const found = await this.lookup(directory, segment);
|
|
629
614
|
if (found.match === 'absent') {
|
|
630
615
|
// The cause travels with the verdict rather than being re-derived: by
|
|
631
616
|
// the time a caller reports this, the directory that refused is
|
|
632
617
|
// several frames gone and nothing else can tell the two absences
|
|
633
618
|
// apart. So does what was learned ABOVE it — see `verified`.
|
|
634
|
-
|
|
619
|
+
absent = {
|
|
635
620
|
match: 'absent',
|
|
636
621
|
askedPath,
|
|
637
622
|
actualPath: '',
|
|
@@ -642,12 +627,16 @@ export class DirectorySpellingIndex {
|
|
|
642
627
|
actualPath: actual.join('/'),
|
|
643
628
|
},
|
|
644
629
|
};
|
|
630
|
+
return false;
|
|
645
631
|
}
|
|
646
632
|
if (SPELLING_RANK[found.match] > SPELLING_RANK[worst])
|
|
647
633
|
worst = found.match;
|
|
648
634
|
actual.push(found.actualName);
|
|
649
635
|
directory = safePath.join(directory, found.actualName);
|
|
650
|
-
|
|
636
|
+
return true;
|
|
637
|
+
});
|
|
638
|
+
if (absent !== undefined)
|
|
639
|
+
return absent;
|
|
651
640
|
return { match: worst, askedPath, actualPath: actual.join('/') };
|
|
652
641
|
}
|
|
653
642
|
/**
|
|
@@ -793,7 +782,7 @@ export function pathSpellingFrom(table, referrer, target) {
|
|
|
793
782
|
* fact, and the pass that must run *before* any judging.
|
|
794
783
|
*
|
|
795
784
|
* ⚠️ **Rows are keyed by the input path string exactly as given** — not a
|
|
796
|
-
* dirname, not a re-resolved form. {@link
|
|
785
|
+
* dirname, not a re-resolved form. {@link realpathRowFrom} looks that same string
|
|
797
786
|
* up, so any normalization applied here and not there is a silent miss (a loud
|
|
798
787
|
* one, in fact: the judge throws). Contrast {@link fillPathSpellings}, which
|
|
799
788
|
* keys by (walk root, target) *because* many references share one walk; here the
|
|
@@ -819,7 +808,8 @@ export async function fillRealpaths(paths, fsCache) {
|
|
|
819
808
|
return table;
|
|
820
809
|
}
|
|
821
810
|
/**
|
|
822
|
-
* Read the
|
|
811
|
+
* Read the row for `filePath` — its canonical path and the fault, if any, that
|
|
812
|
+
* kept it from resolving — out of an already-filled table. Pure.
|
|
823
813
|
*
|
|
824
814
|
* **A miss throws rather than degrading to a recomputed realpath.** The fill set
|
|
825
815
|
* is derived from exactly the paths the judge will be asked about, so a missing
|
|
@@ -842,18 +832,18 @@ export async function fillRealpaths(paths, fsCache) {
|
|
|
842
832
|
*
|
|
843
833
|
* @param table - Table filled by {@link fillRealpaths}
|
|
844
834
|
* @param filePath - Path being asked about, as it was handed to the fill
|
|
845
|
-
* @returns The canonical path, with forward slashes on every platform
|
|
835
|
+
* @returns The row: the canonical path, with forward slashes on every platform, and its fault
|
|
846
836
|
* @throws If `table` holds no row for `filePath`
|
|
847
837
|
*/
|
|
848
|
-
export function
|
|
849
|
-
// `undefined` can only mean "absent key": a filled row is always a
|
|
838
|
+
export function realpathRowFrom(table, filePath) {
|
|
839
|
+
// `undefined` can only mean "absent key": a filled row is always a row,
|
|
850
840
|
// because `FsLookupCache.realpath` falls back to the deepest existing
|
|
851
841
|
// ancestor's canonical path rather than leaving an unresolvable path without
|
|
852
842
|
// an answer.
|
|
853
|
-
const
|
|
854
|
-
if (
|
|
843
|
+
const row = table.get(filePath);
|
|
844
|
+
if (row === undefined) {
|
|
855
845
|
throw new Error(`No canonical path for "${filePath}". Fill it with fillRealpaths() before judging.`);
|
|
856
846
|
}
|
|
857
|
-
return
|
|
847
|
+
return row;
|
|
858
848
|
}
|
|
859
849
|
//# sourceMappingURL=fs-utils.js.map
|
package/dist/fs-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs-utils.js","sourceRoot":"","sources":["../src/fs-utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fs-utils.js","sourceRoot":"","sources":["../src/fs-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/fs.d.ts
CHANGED
|
@@ -8,9 +8,10 @@
|
|
|
8
8
|
* `@vibe-agent-toolkit/utils/path` instead — it is dramatically cheaper.
|
|
9
9
|
*/
|
|
10
10
|
export { normalizePath, normalizedTmpdir, mkdirSyncReal, resolveFromImportMeta, dynamicImportPath, } from './path-utils.js';
|
|
11
|
-
export { readTextContent, readTextContentSync } from './text-file.js';
|
|
11
|
+
export { exceedsDecodableLength, MAX_DECODABLE_BYTES, openForReading, readDecodableBytes, readTextContent, readTextContentSync, } from './text-file.js';
|
|
12
|
+
export { TextTooLargeError } from './text-content.js';
|
|
12
13
|
export type { DecodedText, EncodingSource, TextEncoding, TextProvenance } from './text-content.js';
|
|
13
|
-
export {
|
|
14
|
-
export {
|
|
15
|
-
export type { ComponentMatch, FilenameMatch, PathProbe, PathProbeStats, PathSpelling, PathSpellingRequest, PathSpellingTable, RealpathTable, } from './fs-utils.js';
|
|
14
|
+
export { fsFaultOf, isPathAbsentError } from './errors/errno-table.js';
|
|
15
|
+
export { DirectorySpellingIndex, fillPathSpellings, fillRealpaths, FsLookupCache, pathSpellingFrom, realpathRowFrom, spellingWalkRoot, } from './fs-utils.js';
|
|
16
|
+
export type { ComponentMatch, FilenameMatch, PathProbe, PathProbeStats, PathSpelling, PathSpellingRequest, PathSpellingTable, RealpathFault, RealpathRow, RealpathTable, } from './fs-utils.js';
|
|
16
17
|
//# sourceMappingURL=fs.d.ts.map
|
package/dist/fs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAKzB,OAAO,
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKnG,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,cAAc,EACd,aAAa,EACb,SAAS,EACT,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,aAAa,GACd,MAAM,eAAe,CAAC"}
|
package/dist/fs.js
CHANGED
|
@@ -11,10 +11,11 @@ export { normalizePath, normalizedTmpdir, mkdirSyncReal, resolveFromImportMeta,
|
|
|
11
11
|
// Read a file and decode it through the one content-decoding seam. The DECISION
|
|
12
12
|
// about what the bytes say is pure and lives on `./text`; these two are that
|
|
13
13
|
// plus a `readFile`, which is why they are here and not there.
|
|
14
|
-
export { readTextContent, readTextContentSync } from './text-file.js';
|
|
14
|
+
export { exceedsDecodableLength, MAX_DECODABLE_BYTES, openForReading, readDecodableBytes, readTextContent, readTextContentSync, } from './text-file.js';
|
|
15
|
+
export { TextTooLargeError } from './text-content.js';
|
|
15
16
|
// Two materialized columns, each a fill+judge pair and nothing else. In both the
|
|
16
|
-
// row IS the answer, so the row lookup — `pathSpellingFrom`, `
|
|
17
|
+
// row IS the answer, so the row lookup — `pathSpellingFrom`, `realpathRowFrom` — is
|
|
17
18
|
// itself the judge and is exported. See `index.ts` for the full reasoning.
|
|
18
|
-
export {
|
|
19
|
-
export {
|
|
19
|
+
export { fsFaultOf, isPathAbsentError } from './errors/errno-table.js';
|
|
20
|
+
export { DirectorySpellingIndex, fillPathSpellings, fillRealpaths, FsLookupCache, pathSpellingFrom, realpathRowFrom, spellingWalkRoot, } from './fs-utils.js';
|
|
20
21
|
//# sourceMappingURL=fs.js.map
|
package/dist/fs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,gFAAgF;AAChF,6EAA6E;AAC7E,+DAA+D;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,gFAAgF;AAChF,6EAA6E;AAC7E,+DAA+D;AAC/D,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,iFAAiF;AACjF,oFAAoF;AACpF,2EAA2E;AAC3E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
|