@photostructure/fs-metadata 0.1.2 → 0.1.3
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/binding.gyp +13 -0
- package/dist/cjs/array.d.ts +31 -0
- package/dist/cjs/array.d.ts.map +1 -0
- package/dist/cjs/array.js +57 -0
- package/dist/cjs/array.js.map +1 -0
- package/dist/cjs/async.d.ts +43 -0
- package/dist/cjs/async.d.ts.map +1 -0
- package/dist/cjs/async.js +116 -0
- package/dist/cjs/async.js.map +1 -0
- package/dist/cjs/cache.d.ts +5 -0
- package/dist/cjs/cache.d.ts.map +1 -0
- package/dist/cjs/cache.js +28 -0
- package/dist/cjs/cache.js.map +1 -0
- package/dist/cjs/debuglog.d.ts +9 -0
- package/dist/cjs/debuglog.d.ts.map +1 -0
- package/dist/cjs/debuglog.js +35 -0
- package/dist/cjs/debuglog.js.map +1 -0
- package/dist/cjs/defer.d.ts +12 -0
- package/dist/cjs/defer.d.ts.map +1 -0
- package/dist/cjs/defer.js +26 -0
- package/dist/cjs/defer.js.map +1 -0
- package/dist/cjs/error.d.ts +18 -0
- package/dist/cjs/error.d.ts.map +1 -0
- package/dist/cjs/error.js +63 -0
- package/dist/cjs/error.js.map +1 -0
- package/dist/cjs/exports.d.ts +99 -0
- package/dist/cjs/exports.d.ts.map +1 -0
- package/dist/cjs/exports.js +14 -0
- package/dist/cjs/exports.js.map +1 -0
- package/dist/cjs/fs.d.ts +23 -0
- package/dist/cjs/fs.d.ts.map +1 -0
- package/dist/cjs/fs.js +81 -0
- package/dist/cjs/fs.js.map +1 -0
- package/dist/cjs/glob.d.ts +18 -0
- package/dist/cjs/glob.d.ts.map +1 -0
- package/dist/cjs/glob.js +117 -0
- package/dist/cjs/glob.js.map +1 -0
- package/dist/cjs/hidden.d.ts +67 -0
- package/dist/cjs/hidden.d.ts.map +1 -0
- package/dist/cjs/hidden.js +163 -0
- package/dist/cjs/hidden.js.map +1 -0
- package/dist/cjs/index.cjs +23 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/index.d.cts.map +1 -0
- package/dist/cjs/linux/dev_disk.d.ts +14 -0
- package/dist/cjs/linux/dev_disk.d.ts.map +1 -0
- package/dist/cjs/linux/dev_disk.js +66 -0
- package/dist/cjs/linux/dev_disk.js.map +1 -0
- package/dist/cjs/linux/mount_points.d.ts +7 -0
- package/dist/cjs/linux/mount_points.d.ts.map +1 -0
- package/dist/cjs/linux/mount_points.js +81 -0
- package/dist/cjs/linux/mount_points.js.map +1 -0
- package/dist/cjs/linux/mtab.d.ts +48 -0
- package/dist/cjs/linux/mtab.d.ts.map +1 -0
- package/dist/cjs/linux/mtab.js +88 -0
- package/dist/cjs/linux/mtab.js.map +1 -0
- package/dist/cjs/mount_point.d.ts +56 -0
- package/dist/cjs/mount_point.d.ts.map +1 -0
- package/dist/cjs/mount_point.js +67 -0
- package/dist/cjs/mount_point.js.map +1 -0
- package/dist/cjs/number.d.ts +8 -0
- package/dist/cjs/number.d.ts.map +1 -0
- package/dist/cjs/number.js +41 -0
- package/dist/cjs/number.js.map +1 -0
- package/dist/cjs/object.d.ts +18 -0
- package/dist/cjs/object.d.ts.map +1 -0
- package/dist/cjs/object.js +59 -0
- package/dist/cjs/object.js.map +1 -0
- package/dist/cjs/options.d.ts +80 -0
- package/dist/cjs/options.d.ts.map +1 -0
- package/dist/cjs/options.js +115 -0
- package/dist/cjs/options.js.map +1 -0
- package/dist/cjs/path.d.ts +18 -0
- package/dist/cjs/path.d.ts.map +1 -0
- package/dist/cjs/path.js +50 -0
- package/dist/cjs/path.js.map +1 -0
- package/dist/cjs/platform.d.ts +4 -0
- package/dist/cjs/platform.d.ts.map +1 -0
- package/dist/cjs/platform.js +10 -0
- package/dist/cjs/platform.js.map +1 -0
- package/dist/cjs/random.d.ts +13 -0
- package/dist/cjs/random.d.ts.map +1 -0
- package/dist/cjs/random.js +43 -0
- package/dist/cjs/random.js.map +1 -0
- package/dist/cjs/remote_info.d.ts +39 -0
- package/dist/cjs/remote_info.d.ts.map +1 -0
- package/dist/cjs/remote_info.js +123 -0
- package/dist/cjs/remote_info.js.map +1 -0
- package/dist/cjs/setup.d.ts +3 -0
- package/dist/cjs/setup.d.ts.map +1 -0
- package/dist/cjs/setup.js +47 -0
- package/dist/cjs/setup.js.map +1 -0
- package/dist/cjs/string.d.ts +38 -0
- package/dist/cjs/string.d.ts.map +1 -0
- package/dist/cjs/string.js +89 -0
- package/dist/cjs/string.js.map +1 -0
- package/dist/cjs/string_enum.d.ts +20 -0
- package/dist/cjs/string_enum.d.ts.map +1 -0
- package/dist/cjs/string_enum.js +27 -0
- package/dist/cjs/string_enum.js.map +1 -0
- package/dist/cjs/system_volume.d.ts +15 -0
- package/dist/cjs/system_volume.d.ts.map +1 -0
- package/dist/cjs/system_volume.js +44 -0
- package/dist/cjs/system_volume.js.map +1 -0
- package/dist/cjs/types/native_bindings.d.ts +52 -0
- package/dist/cjs/types/native_bindings.d.ts.map +1 -0
- package/dist/cjs/types/native_bindings.js +4 -0
- package/dist/cjs/types/native_bindings.js.map +1 -0
- package/dist/cjs/unc.d.ts +12 -0
- package/dist/cjs/unc.d.ts.map +1 -0
- package/dist/cjs/unc.js +52 -0
- package/dist/cjs/unc.js.map +1 -0
- package/dist/cjs/units.d.ts +17 -0
- package/dist/cjs/units.d.ts.map +1 -0
- package/dist/cjs/units.js +35 -0
- package/dist/cjs/units.js.map +1 -0
- package/dist/cjs/uuid.d.ts +17 -0
- package/dist/cjs/uuid.d.ts.map +1 -0
- package/dist/cjs/uuid.js +25 -0
- package/dist/cjs/uuid.js.map +1 -0
- package/dist/cjs/volume_health_status.d.ts +25 -0
- package/dist/cjs/volume_health_status.d.ts.map +1 -0
- package/dist/cjs/volume_health_status.js +50 -0
- package/dist/cjs/volume_health_status.js.map +1 -0
- package/dist/cjs/volume_metadata.d.ts +55 -0
- package/dist/cjs/volume_metadata.d.ts.map +1 -0
- package/dist/cjs/volume_metadata.js +169 -0
- package/dist/cjs/volume_metadata.js.map +1 -0
- package/dist/esm/array.d.ts +31 -0
- package/dist/esm/array.d.ts.map +1 -0
- package/dist/esm/array.js +50 -0
- package/dist/esm/array.js.map +1 -0
- package/dist/esm/async.d.ts +43 -0
- package/dist/esm/async.d.ts.map +1 -0
- package/dist/esm/async.js +109 -0
- package/dist/esm/async.js.map +1 -0
- package/dist/esm/cache.d.ts +5 -0
- package/dist/esm/cache.d.ts.map +1 -0
- package/dist/esm/cache.js +25 -0
- package/dist/esm/cache.js.map +1 -0
- package/dist/esm/debuglog.d.ts +9 -0
- package/dist/esm/debuglog.d.ts.map +1 -0
- package/dist/esm/debuglog.js +30 -0
- package/dist/esm/debuglog.js.map +1 -0
- package/dist/esm/defer.d.ts +12 -0
- package/dist/esm/defer.d.ts.map +1 -0
- package/dist/esm/defer.js +23 -0
- package/dist/esm/defer.js.map +1 -0
- package/dist/esm/error.d.ts +18 -0
- package/dist/esm/error.d.ts.map +1 -0
- package/dist/esm/error.js +58 -0
- package/dist/esm/error.js.map +1 -0
- package/dist/esm/exports.d.ts +99 -0
- package/dist/esm/exports.d.ts.map +1 -0
- package/dist/esm/exports.js +4 -0
- package/dist/esm/exports.js.map +1 -0
- package/dist/esm/fs.d.ts +23 -0
- package/dist/esm/fs.d.ts.map +1 -0
- package/dist/esm/fs.js +73 -0
- package/dist/esm/fs.js.map +1 -0
- package/dist/esm/glob.d.ts +18 -0
- package/dist/esm/glob.d.ts.map +1 -0
- package/dist/esm/glob.js +113 -0
- package/dist/esm/glob.js.map +1 -0
- package/dist/esm/hidden.d.ts +67 -0
- package/dist/esm/hidden.d.ts.map +1 -0
- package/dist/esm/hidden.js +155 -0
- package/dist/esm/hidden.js.map +1 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/linux/dev_disk.d.ts +14 -0
- package/dist/esm/linux/dev_disk.d.ts.map +1 -0
- package/dist/esm/linux/dev_disk.js +61 -0
- package/dist/esm/linux/dev_disk.js.map +1 -0
- package/dist/esm/linux/mount_points.d.ts +7 -0
- package/dist/esm/linux/mount_points.d.ts.map +1 -0
- package/dist/esm/linux/mount_points.js +77 -0
- package/dist/esm/linux/mount_points.js.map +1 -0
- package/dist/esm/linux/mtab.d.ts +48 -0
- package/dist/esm/linux/mtab.d.ts.map +1 -0
- package/dist/esm/linux/mtab.js +82 -0
- package/dist/esm/linux/mtab.js.map +1 -0
- package/dist/esm/mount_point.d.ts +56 -0
- package/dist/esm/mount_point.d.ts.map +1 -0
- package/dist/esm/mount_point.js +63 -0
- package/dist/esm/mount_point.js.map +1 -0
- package/dist/esm/number.d.ts +8 -0
- package/dist/esm/number.d.ts.map +1 -0
- package/dist/esm/number.js +32 -0
- package/dist/esm/number.js.map +1 -0
- package/dist/esm/object.d.ts +18 -0
- package/dist/esm/object.d.ts.map +1 -0
- package/dist/esm/object.js +52 -0
- package/dist/esm/object.js.map +1 -0
- package/dist/esm/options.d.ts +80 -0
- package/dist/esm/options.d.ts.map +1 -0
- package/dist/esm/options.js +111 -0
- package/dist/esm/options.js.map +1 -0
- package/dist/esm/path.d.ts +18 -0
- package/dist/esm/path.d.ts.map +1 -0
- package/dist/esm/path.js +44 -0
- package/dist/esm/path.js.map +1 -0
- package/dist/esm/platform.d.ts +4 -0
- package/dist/esm/platform.d.ts.map +1 -0
- package/dist/esm/platform.js +7 -0
- package/dist/esm/platform.js.map +1 -0
- package/dist/esm/random.d.ts +13 -0
- package/dist/esm/random.d.ts.map +1 -0
- package/dist/esm/random.js +37 -0
- package/dist/esm/random.js.map +1 -0
- package/dist/esm/remote_info.d.ts +39 -0
- package/dist/esm/remote_info.d.ts.map +1 -0
- package/dist/esm/remote_info.js +116 -0
- package/dist/esm/remote_info.js.map +1 -0
- package/dist/esm/setup.d.ts +3 -0
- package/dist/esm/setup.d.ts.map +1 -0
- package/dist/esm/setup.js +41 -0
- package/dist/esm/setup.js.map +1 -0
- package/dist/esm/string.d.ts +38 -0
- package/dist/esm/string.d.ts.map +1 -0
- package/dist/esm/string.js +78 -0
- package/dist/esm/string.js.map +1 -0
- package/dist/esm/string_enum.d.ts +20 -0
- package/dist/esm/string_enum.d.ts.map +1 -0
- package/dist/esm/string_enum.js +24 -0
- package/dist/esm/string_enum.js.map +1 -0
- package/dist/esm/system_volume.d.ts +15 -0
- package/dist/esm/system_volume.d.ts.map +1 -0
- package/dist/esm/system_volume.js +40 -0
- package/dist/esm/system_volume.js.map +1 -0
- package/dist/esm/types/native_bindings.d.ts +52 -0
- package/dist/esm/types/native_bindings.d.ts.map +1 -0
- package/dist/esm/types/native_bindings.js +3 -0
- package/dist/esm/types/native_bindings.js.map +1 -0
- package/dist/esm/unc.d.ts +12 -0
- package/dist/esm/unc.d.ts.map +1 -0
- package/dist/esm/unc.js +49 -0
- package/dist/esm/unc.js.map +1 -0
- package/dist/esm/units.d.ts +17 -0
- package/dist/esm/units.d.ts.map +1 -0
- package/dist/esm/units.js +31 -0
- package/dist/esm/units.js.map +1 -0
- package/dist/esm/uuid.d.ts +17 -0
- package/dist/esm/uuid.d.ts.map +1 -0
- package/dist/esm/uuid.js +22 -0
- package/dist/esm/uuid.js.map +1 -0
- package/dist/esm/volume_health_status.d.ts +25 -0
- package/dist/esm/volume_health_status.d.ts.map +1 -0
- package/dist/esm/volume_health_status.js +46 -0
- package/dist/esm/volume_health_status.js.map +1 -0
- package/dist/esm/volume_metadata.d.ts +55 -0
- package/dist/esm/volume_metadata.d.ts.map +1 -0
- package/dist/esm/volume_metadata.js +164 -0
- package/dist/esm/volume_metadata.js.map +1 -0
- package/package.json +7 -8
- package/prebuilds/darwin-arm64/@photostructure+fs-metadata.glibc.node +0 -0
- package/prebuilds/win32-x64/@photostructure+fs-metadata.glibc.node +0 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VolumeHealthStatuses = exports.TimeoutMsDefault = exports.SystemPathPatternsDefault = exports.SystemFsTypesDefault = exports.optionsWithDefaults = exports.OptionsDefault = exports.LinuxMountTablePathsDefault = exports.IncludeSystemVolumesDefault = void 0;
|
|
4
|
+
const options_js_1 = require("./options.js");
|
|
5
|
+
Object.defineProperty(exports, "IncludeSystemVolumesDefault", { enumerable: true, get: function () { return options_js_1.IncludeSystemVolumesDefault; } });
|
|
6
|
+
Object.defineProperty(exports, "LinuxMountTablePathsDefault", { enumerable: true, get: function () { return options_js_1.LinuxMountTablePathsDefault; } });
|
|
7
|
+
Object.defineProperty(exports, "OptionsDefault", { enumerable: true, get: function () { return options_js_1.OptionsDefault; } });
|
|
8
|
+
Object.defineProperty(exports, "optionsWithDefaults", { enumerable: true, get: function () { return options_js_1.optionsWithDefaults; } });
|
|
9
|
+
Object.defineProperty(exports, "SystemFsTypesDefault", { enumerable: true, get: function () { return options_js_1.SystemFsTypesDefault; } });
|
|
10
|
+
Object.defineProperty(exports, "SystemPathPatternsDefault", { enumerable: true, get: function () { return options_js_1.SystemPathPatternsDefault; } });
|
|
11
|
+
Object.defineProperty(exports, "TimeoutMsDefault", { enumerable: true, get: function () { return options_js_1.TimeoutMsDefault; } });
|
|
12
|
+
const volume_health_status_js_1 = require("./volume_health_status.js");
|
|
13
|
+
Object.defineProperty(exports, "VolumeHealthStatuses", { enumerable: true, get: function () { return volume_health_status_js_1.VolumeHealthStatuses; } });
|
|
14
|
+
//# sourceMappingURL=exports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exports.js","sourceRoot":"","sources":["../../src/exports.ts"],"names":[],"mappings":";;;AAGA,6CAQsB;AAqIpB,4GA5IA,wCAA2B,OA4IA;AAC3B,4GA5IA,wCAA2B,OA4IA;AAC3B,+FA5IA,2BAAc,OA4IA;AACd,oGA5IA,gCAAmB,OA4IA;AACnB,qGA5IA,iCAAoB,OA4IA;AACpB,0GA5IA,sCAAyB,OA4IA;AACzB,iGA5IA,6BAAgB,OA4IA;AAnIlB,uEAAiE;AAoI/D,qGApIO,8CAAoB,OAoIP"}
|
package/dist/cjs/fs.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type PathLike, type StatOptions, Stats } from "node:fs";
|
|
2
|
+
/**
|
|
3
|
+
* Wrapping node:fs/promises.stat() so we can mock it in tests.
|
|
4
|
+
*/
|
|
5
|
+
export declare function statAsync(path: PathLike, options?: StatOptions & {
|
|
6
|
+
bigint?: false;
|
|
7
|
+
}): Promise<Stats>;
|
|
8
|
+
export declare function canStatAsync(path: string): Promise<boolean>;
|
|
9
|
+
/**
|
|
10
|
+
* @return true if `path` exists and is a directory
|
|
11
|
+
*/
|
|
12
|
+
export declare function isDirectory(path: string): Promise<boolean>;
|
|
13
|
+
/**
|
|
14
|
+
* @return the first directory containing `file` or an empty string
|
|
15
|
+
*/
|
|
16
|
+
export declare function findAncestorDir(dir: string, file: string): Promise<string | undefined>;
|
|
17
|
+
export declare function existsSync(path: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* @return `true` if `dir` exists and is a directory and at least one entry can be read.
|
|
20
|
+
* @throws {Error} if `dir` does not exist or is not a directory or cannot be read.
|
|
21
|
+
*/
|
|
22
|
+
export declare function canReaddir(dir: string, timeoutMs: number): Promise<true>;
|
|
23
|
+
//# sourceMappingURL=fs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/fs.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,EAEN,MAAM,SAAS,CAAC;AAKjB;;GAEG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,QAAQ,EACd,OAAO,CAAC,EAAE,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,GACzC,OAAO,CAAC,KAAK,CAAC,CAEhB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAMjE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAMhE;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAU7B;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAMf"}
|
package/dist/cjs/fs.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/fs.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.statAsync = statAsync;
|
|
5
|
+
exports.canStatAsync = canStatAsync;
|
|
6
|
+
exports.isDirectory = isDirectory;
|
|
7
|
+
exports.findAncestorDir = findAncestorDir;
|
|
8
|
+
exports.existsSync = existsSync;
|
|
9
|
+
exports.canReaddir = canReaddir;
|
|
10
|
+
const node_fs_1 = require("node:fs");
|
|
11
|
+
const promises_1 = require("node:fs/promises");
|
|
12
|
+
const node_path_1 = require("node:path");
|
|
13
|
+
const async_js_1 = require("./async.js");
|
|
14
|
+
/**
|
|
15
|
+
* Wrapping node:fs/promises.stat() so we can mock it in tests.
|
|
16
|
+
*/
|
|
17
|
+
async function statAsync(path, options) {
|
|
18
|
+
return (0, promises_1.stat)(path, options);
|
|
19
|
+
}
|
|
20
|
+
async function canStatAsync(path) {
|
|
21
|
+
try {
|
|
22
|
+
return null != (await statAsync(path));
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* @return true if `path` exists and is a directory
|
|
30
|
+
*/
|
|
31
|
+
async function isDirectory(path) {
|
|
32
|
+
try {
|
|
33
|
+
return (await statAsync(path))?.isDirectory() === true;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* @return the first directory containing `file` or an empty string
|
|
41
|
+
*/
|
|
42
|
+
async function findAncestorDir(dir, file) {
|
|
43
|
+
dir = (0, node_path_1.resolve)(dir);
|
|
44
|
+
try {
|
|
45
|
+
const s = await statAsync((0, node_path_1.join)(dir, file));
|
|
46
|
+
if (s.isFile())
|
|
47
|
+
return dir;
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// fall through
|
|
51
|
+
}
|
|
52
|
+
const parent = (0, node_path_1.resolve)(dir, "..");
|
|
53
|
+
return parent === dir ? undefined : findAncestorDir(parent, file);
|
|
54
|
+
}
|
|
55
|
+
function existsSync(path) {
|
|
56
|
+
return (0, node_fs_1.statSync)(path, { throwIfNoEntry: false }) != null;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* @return `true` if `dir` exists and is a directory and at least one entry can be read.
|
|
60
|
+
* @throws {Error} if `dir` does not exist or is not a directory or cannot be read.
|
|
61
|
+
*/
|
|
62
|
+
async function canReaddir(dir, timeoutMs) {
|
|
63
|
+
return (0, async_js_1.withTimeout)({
|
|
64
|
+
desc: "canReaddir()",
|
|
65
|
+
promise: _canReaddir(dir),
|
|
66
|
+
timeoutMs,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
async function _canReaddir(dir) {
|
|
70
|
+
let d = undefined;
|
|
71
|
+
try {
|
|
72
|
+
d = await (0, promises_1.opendir)(dir);
|
|
73
|
+
await d.read();
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
if (d != null)
|
|
78
|
+
void d.close();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=fs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/fs.ts"],"names":[],"mappings":";AAAA,YAAY;;AAgBZ,8BAKC;AAED,oCAMC;AAKD,kCAMC;AAKD,0CAaC;AAED,gCAEC;AAMD,gCASC;AA3ED,qCAMiB;AACjB,+CAAiD;AACjD,yCAA0C;AAC1C,yCAAyC;AAEzC;;GAEG;AACI,KAAK,UAAU,SAAS,CAC7B,IAAc,EACd,OAA0C;IAE1C,OAAO,IAAA,eAAI,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7B,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,IAAY;IAC7C,IAAI,CAAC;QACH,OAAO,IAAI,IAAI,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,WAAW,CAAC,IAAY;IAC5C,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,eAAe,CACnC,GAAW,EACX,IAAY;IAEZ,GAAG,GAAG,IAAA,mBAAO,EAAC,GAAG,CAAC,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,CAAC,MAAM,EAAE;YAAE,OAAO,GAAG,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,mBAAO,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,OAAO,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,IAAA,kBAAQ,EAAC,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,SAAiB;IAEjB,OAAO,IAAA,sBAAW,EAAC;QACjB,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC;QACzB,SAAS;KACV,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAW;IACpC,IAAI,CAAC,GAAoB,SAAS,CAAC;IACnC,IAAI,CAAC;QACH,CAAC,GAAG,MAAM,IAAA,kBAAO,EAAC,GAAG,CAAC,CAAC;QACvB,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,IAAI,IAAI;YAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compiles an array of glob patterns into a single regular expression.
|
|
3
|
+
*
|
|
4
|
+
* The function supports the following patterns:
|
|
5
|
+
* - `**` matches any number of directories.
|
|
6
|
+
* - `*` matches any number of characters except for `/`.
|
|
7
|
+
* - `?` matches exactly one character except for `/`.
|
|
8
|
+
* - `.` is escaped to match a literal period.
|
|
9
|
+
* - `/` at the end of the pattern matches either a slash or the end of the string.
|
|
10
|
+
* - Other regex special characters are escaped.
|
|
11
|
+
*
|
|
12
|
+
* @param patterns - An array of glob patterns to compile.
|
|
13
|
+
* @returns A `RegExp` object that matches any of the provided patterns.
|
|
14
|
+
*/
|
|
15
|
+
export declare function compileGlob(patterns: string[] | readonly string[] | undefined): RegExp;
|
|
16
|
+
export declare const AlwaysMatchRE: RegExp;
|
|
17
|
+
export declare const NeverMatchRE: RegExp;
|
|
18
|
+
//# sourceMappingURL=glob.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../src/glob.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,GACjD,MAAM,CA+BR;AAuED,eAAO,MAAM,aAAa,QAAS,CAAC;AACpC,eAAO,MAAM,YAAY,QAAS,CAAC"}
|
package/dist/cjs/glob.js
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/glob.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.NeverMatchRE = exports.AlwaysMatchRE = void 0;
|
|
5
|
+
exports.compileGlob = compileGlob;
|
|
6
|
+
const platform_js_1 = require("./platform.js");
|
|
7
|
+
const string_js_1 = require("./string.js");
|
|
8
|
+
const cache = new Map();
|
|
9
|
+
/**
|
|
10
|
+
* Compiles an array of glob patterns into a single regular expression.
|
|
11
|
+
*
|
|
12
|
+
* The function supports the following patterns:
|
|
13
|
+
* - `**` matches any number of directories.
|
|
14
|
+
* - `*` matches any number of characters except for `/`.
|
|
15
|
+
* - `?` matches exactly one character except for `/`.
|
|
16
|
+
* - `.` is escaped to match a literal period.
|
|
17
|
+
* - `/` at the end of the pattern matches either a slash or the end of the string.
|
|
18
|
+
* - Other regex special characters are escaped.
|
|
19
|
+
*
|
|
20
|
+
* @param patterns - An array of glob patterns to compile.
|
|
21
|
+
* @returns A `RegExp` object that matches any of the provided patterns.
|
|
22
|
+
*/
|
|
23
|
+
function compileGlob(patterns) {
|
|
24
|
+
if (patterns == null || patterns.length === 0) {
|
|
25
|
+
return exports.NeverMatchRE;
|
|
26
|
+
}
|
|
27
|
+
const patternsKey = JSON.stringify(patterns);
|
|
28
|
+
{
|
|
29
|
+
const prior = cache.get(patternsKey);
|
|
30
|
+
if (prior != null) {
|
|
31
|
+
return prior;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const sorted = patterns.slice().filter(string_js_1.isNotBlank).sort();
|
|
35
|
+
const sortedKey = JSON.stringify(sorted);
|
|
36
|
+
{
|
|
37
|
+
const prior = cache.get(sortedKey);
|
|
38
|
+
if (prior != null) {
|
|
39
|
+
cache.set(patternsKey, prior);
|
|
40
|
+
return prior;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const result = _compileGlob(sorted);
|
|
44
|
+
if (cache.size > 256) {
|
|
45
|
+
// avoid unbounded memory usage
|
|
46
|
+
cache.clear();
|
|
47
|
+
}
|
|
48
|
+
cache.set(patternsKey, result);
|
|
49
|
+
cache.set(sortedKey, result);
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
function _compileGlob(patterns) {
|
|
53
|
+
const regexPatterns = patterns.map((pattern) => {
|
|
54
|
+
let regex = "";
|
|
55
|
+
let i = 0;
|
|
56
|
+
while (i < pattern.length) {
|
|
57
|
+
// Handle '**' pattern
|
|
58
|
+
if (pattern[i] === "*" && pattern[i + 1] === "*") {
|
|
59
|
+
regex += ".*";
|
|
60
|
+
i += 2;
|
|
61
|
+
if (pattern[i] === "/") {
|
|
62
|
+
i++; // Skip the slash after **
|
|
63
|
+
}
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
// Handle single '*' pattern
|
|
67
|
+
if (pattern[i] === "*") {
|
|
68
|
+
regex += "[^/]*";
|
|
69
|
+
i++;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
// Handle '?' pattern
|
|
73
|
+
if (pattern[i] === "?") {
|
|
74
|
+
regex += "[^/]";
|
|
75
|
+
i++;
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
// Handle period
|
|
79
|
+
if (pattern[i] === ".") {
|
|
80
|
+
regex += "\\.";
|
|
81
|
+
i++;
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
// Handle end of directory pattern
|
|
85
|
+
if (pattern[i] === "/") {
|
|
86
|
+
if (i === pattern.length - 1) {
|
|
87
|
+
regex += "(?:/|$)";
|
|
88
|
+
i++;
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
else if (platform_js_1.isWindows) {
|
|
92
|
+
regex += "[\\/\\\\]";
|
|
93
|
+
i++;
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Escape other regex special characters
|
|
98
|
+
if (/[+^${}()|[\]\\]/.test(pattern[i])) {
|
|
99
|
+
regex += "\\" + pattern[i];
|
|
100
|
+
i++;
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
// Add other characters as-is
|
|
104
|
+
regex += pattern[i];
|
|
105
|
+
i++;
|
|
106
|
+
}
|
|
107
|
+
return regex;
|
|
108
|
+
});
|
|
109
|
+
const final = regexPatterns.filter((ea) => ea.length > 0);
|
|
110
|
+
return final.length === 0
|
|
111
|
+
? // Empty pattern matches nothing
|
|
112
|
+
exports.NeverMatchRE // Case insensitive for Windows paths
|
|
113
|
+
: new RegExp(`^(?:${final.join("|")})$`, "i");
|
|
114
|
+
}
|
|
115
|
+
exports.AlwaysMatchRE = /(?:)/;
|
|
116
|
+
exports.NeverMatchRE = /(?!)/;
|
|
117
|
+
//# sourceMappingURL=glob.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glob.js","sourceRoot":"","sources":["../../src/glob.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { NativeBindingsFn } from "./types/native_bindings.js";
|
|
2
|
+
/**
|
|
3
|
+
* Represents the detailed state of a file or directory's hidden attribute
|
|
4
|
+
*/
|
|
5
|
+
export interface HiddenMetadata {
|
|
6
|
+
/**
|
|
7
|
+
* Whether the item is considered hidden by any method
|
|
8
|
+
*/
|
|
9
|
+
hidden: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Whether the item has a dot prefix (POSIX-style hidden). Windows doesn't
|
|
12
|
+
* care about dot prefixes.
|
|
13
|
+
*/
|
|
14
|
+
dotPrefix: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Whether the item has system hidden flags set, like via `chflags` on macOS
|
|
17
|
+
* or on Windows via `GetFileAttributesW`
|
|
18
|
+
*/
|
|
19
|
+
systemFlag: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Indicates which hiding methods are supported on the current platform
|
|
22
|
+
*/
|
|
23
|
+
supported: {
|
|
24
|
+
/**
|
|
25
|
+
* Whether dot prefix hiding is supported on the current operating system
|
|
26
|
+
*/
|
|
27
|
+
dotPrefix: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Whether system flag hiding is supported
|
|
30
|
+
*/
|
|
31
|
+
systemFlag: boolean;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export declare const LocalSupport: {
|
|
35
|
+
/**
|
|
36
|
+
* Whether dot prefix hiding is supported on the current operating system
|
|
37
|
+
*/
|
|
38
|
+
dotPrefix: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Whether system flag hiding is supported
|
|
41
|
+
*/
|
|
42
|
+
systemFlag: boolean;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Checks if the file or directory is hidden through any available method
|
|
46
|
+
* @returns A boolean indicating if the item is hidden
|
|
47
|
+
* @throws {Error} If the file doesn't exist or permissions are insufficient
|
|
48
|
+
*/
|
|
49
|
+
export declare function isHidden(pathname: string, nativeFn: NativeBindingsFn): Promise<boolean>;
|
|
50
|
+
export declare function isHiddenRecursive(path: string, nativeFn: NativeBindingsFn): Promise<boolean>;
|
|
51
|
+
export declare function createHiddenPosixPath(pathname: string, hidden: boolean): string;
|
|
52
|
+
/**
|
|
53
|
+
* Gets detailed information about the hidden state of the file or directory
|
|
54
|
+
* @returns An object containing detailed hidden state information
|
|
55
|
+
* @throws {Error} If the file doesn't exist or permissions are insufficient
|
|
56
|
+
*/
|
|
57
|
+
export declare function getHiddenMetadata(pathname: string, nativeFn: NativeBindingsFn): Promise<HiddenMetadata>;
|
|
58
|
+
export type HideMethod = "dotPrefix" | "systemFlag" | "all" | "auto";
|
|
59
|
+
export type SetHiddenResult = {
|
|
60
|
+
pathname: string;
|
|
61
|
+
actions: {
|
|
62
|
+
dotPrefix: boolean;
|
|
63
|
+
systemFlag: boolean;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
export declare function setHidden(pathname: string, hide: boolean, method: HideMethod, nativeFn: NativeBindingsFn): Promise<SetHiddenResult>;
|
|
67
|
+
//# sourceMappingURL=hidden.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hidden.d.ts","sourceRoot":"","sources":["../../src/hidden.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,SAAS,EAAE;QACT;;WAEG;QACH,SAAS,EAAE,OAAO,CAAC;QAEnB;;WAEG;QACH,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;CACH;AAyBD,eAAO,MAAM,YAAY;IAnCrB;;OAEG;eACQ,OAAO;IAElB;;OAEG;gBACS,OAAO;CA+BtB,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,OAAO,CAAC,CASlB;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,UAStE;AAyCD;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,cAAc,CAAC,CAazB;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,KAAK,GAAG,MAAM,CAAC;AAErE,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE;QACP,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;CACH,CAAC;AAEF,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC,CAgD1B"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/hidden.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.LocalSupport = void 0;
|
|
5
|
+
exports.isHidden = isHidden;
|
|
6
|
+
exports.isHiddenRecursive = isHiddenRecursive;
|
|
7
|
+
exports.createHiddenPosixPath = createHiddenPosixPath;
|
|
8
|
+
exports.getHiddenMetadata = getHiddenMetadata;
|
|
9
|
+
exports.setHidden = setHidden;
|
|
10
|
+
const promises_1 = require("node:fs/promises");
|
|
11
|
+
const node_path_1 = require("node:path");
|
|
12
|
+
const error_js_1 = require("./error.js");
|
|
13
|
+
const fs_js_1 = require("./fs.js");
|
|
14
|
+
const path_js_1 = require("./path.js");
|
|
15
|
+
const platform_js_1 = require("./platform.js");
|
|
16
|
+
const HiddenSupportByPlatform = {
|
|
17
|
+
win32: {
|
|
18
|
+
supported: {
|
|
19
|
+
dotPrefix: false,
|
|
20
|
+
systemFlag: true,
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
darwin: {
|
|
24
|
+
supported: {
|
|
25
|
+
dotPrefix: true,
|
|
26
|
+
systemFlag: true,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
linux: {
|
|
30
|
+
supported: {
|
|
31
|
+
dotPrefix: true,
|
|
32
|
+
systemFlag: false,
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
exports.LocalSupport = HiddenSupportByPlatform[process.platform]
|
|
37
|
+
?.supported ?? {
|
|
38
|
+
dotPrefix: false,
|
|
39
|
+
systemFlag: false,
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Checks if the file or directory is hidden through any available method
|
|
43
|
+
* @returns A boolean indicating if the item is hidden
|
|
44
|
+
* @throws {Error} If the file doesn't exist or permissions are insufficient
|
|
45
|
+
*/
|
|
46
|
+
async function isHidden(pathname, nativeFn) {
|
|
47
|
+
const norm = (0, path_js_1.normalizePath)(pathname);
|
|
48
|
+
if (norm == null) {
|
|
49
|
+
throw new Error("Invalid pathname: " + JSON.stringify(pathname));
|
|
50
|
+
}
|
|
51
|
+
return ((exports.LocalSupport.dotPrefix && isPosixHidden(norm)) ||
|
|
52
|
+
(exports.LocalSupport.systemFlag && isSystemHidden(norm, nativeFn)));
|
|
53
|
+
}
|
|
54
|
+
async function isHiddenRecursive(path, nativeFn) {
|
|
55
|
+
let norm = (0, path_js_1.normalizePath)(path);
|
|
56
|
+
if (norm == null) {
|
|
57
|
+
throw new Error("Invalid path: " + JSON.stringify(path));
|
|
58
|
+
}
|
|
59
|
+
while (!(0, path_js_1.isRootDirectory)(norm)) {
|
|
60
|
+
if (await isHidden(norm, nativeFn)) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
norm = (0, node_path_1.dirname)(norm);
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
function createHiddenPosixPath(pathname, hidden) {
|
|
68
|
+
const norm = (0, path_js_1.normalizePath)(pathname);
|
|
69
|
+
if (norm == null) {
|
|
70
|
+
throw new Error("Invalid pathname: " + JSON.stringify(pathname));
|
|
71
|
+
}
|
|
72
|
+
const dir = (0, node_path_1.dirname)(norm);
|
|
73
|
+
const srcBase = (0, node_path_1.basename)(norm).replace(/^\./, "");
|
|
74
|
+
const dest = (0, node_path_1.join)(dir, (hidden ? "." : "") + srcBase);
|
|
75
|
+
return dest;
|
|
76
|
+
}
|
|
77
|
+
async function setHiddenPosix(pathname, hidden) {
|
|
78
|
+
if (exports.LocalSupport.dotPrefix) {
|
|
79
|
+
const dest = createHiddenPosixPath(pathname, hidden);
|
|
80
|
+
if (pathname !== dest)
|
|
81
|
+
await (0, promises_1.rename)(pathname, dest);
|
|
82
|
+
return dest;
|
|
83
|
+
}
|
|
84
|
+
throw new Error("Unsupported platform");
|
|
85
|
+
}
|
|
86
|
+
function isPosixHidden(pathname) {
|
|
87
|
+
if (!exports.LocalSupport.dotPrefix)
|
|
88
|
+
return false;
|
|
89
|
+
const b = (0, node_path_1.basename)(pathname);
|
|
90
|
+
return b.startsWith(".") && b !== "." && b !== "..";
|
|
91
|
+
}
|
|
92
|
+
async function isSystemHidden(pathname, nativeFn) {
|
|
93
|
+
if (!exports.LocalSupport.systemFlag) {
|
|
94
|
+
// not supported on this platform
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
if (platform_js_1.isWindows && (0, path_js_1.isRootDirectory)(pathname)) {
|
|
98
|
+
// windows `attr` thinks all drive letters don't exist.
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
// don't bother the native bindings if the file doesn't exist:
|
|
102
|
+
return ((await (0, fs_js_1.canStatAsync)(pathname)) &&
|
|
103
|
+
(await (await nativeFn()).isHidden(pathname)));
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Gets detailed information about the hidden state of the file or directory
|
|
107
|
+
* @returns An object containing detailed hidden state information
|
|
108
|
+
* @throws {Error} If the file doesn't exist or permissions are insufficient
|
|
109
|
+
*/
|
|
110
|
+
async function getHiddenMetadata(pathname, nativeFn) {
|
|
111
|
+
const norm = (0, path_js_1.normalizePath)(pathname);
|
|
112
|
+
if (norm == null) {
|
|
113
|
+
throw new Error("Invalid pathname: " + JSON.stringify(pathname));
|
|
114
|
+
}
|
|
115
|
+
const dotPrefix = isPosixHidden(norm);
|
|
116
|
+
const systemFlag = await isSystemHidden(norm, nativeFn);
|
|
117
|
+
return {
|
|
118
|
+
hidden: dotPrefix || systemFlag,
|
|
119
|
+
dotPrefix,
|
|
120
|
+
systemFlag,
|
|
121
|
+
supported: exports.LocalSupport,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
async function setHidden(pathname, hide, method, nativeFn) {
|
|
125
|
+
let norm = (0, path_js_1.normalizePath)(pathname);
|
|
126
|
+
if (norm == null) {
|
|
127
|
+
throw new Error("Invalid pathname: " + JSON.stringify(pathname));
|
|
128
|
+
}
|
|
129
|
+
if (method === "dotPrefix" && !exports.LocalSupport.dotPrefix) {
|
|
130
|
+
throw new Error("Dot prefix hiding is not supported on this platform");
|
|
131
|
+
}
|
|
132
|
+
if (method === "systemFlag" && !exports.LocalSupport.systemFlag) {
|
|
133
|
+
throw new Error("System flag hiding is not supported on this platform");
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
await (0, fs_js_1.statAsync)(norm);
|
|
137
|
+
}
|
|
138
|
+
catch (cause) {
|
|
139
|
+
throw new error_js_1.WrappedError("setHidden()", { cause });
|
|
140
|
+
}
|
|
141
|
+
if (platform_js_1.isWindows && (0, path_js_1.isRootDirectory)(norm)) {
|
|
142
|
+
throw new Error("Cannot hide root directory on Windows");
|
|
143
|
+
}
|
|
144
|
+
const actions = {
|
|
145
|
+
dotPrefix: false,
|
|
146
|
+
systemFlag: false,
|
|
147
|
+
};
|
|
148
|
+
let acted = false;
|
|
149
|
+
if (exports.LocalSupport.dotPrefix && ["auto", "all", "dotPrefix"].includes(method)) {
|
|
150
|
+
if (isPosixHidden(norm) !== hide) {
|
|
151
|
+
norm = await setHiddenPosix(norm, hide);
|
|
152
|
+
actions.dotPrefix = true;
|
|
153
|
+
}
|
|
154
|
+
acted = true;
|
|
155
|
+
}
|
|
156
|
+
if (exports.LocalSupport.systemFlag &&
|
|
157
|
+
(["all", "systemFlag"].includes(method) || (!acted && method === "auto"))) {
|
|
158
|
+
await (await nativeFn()).setHidden(norm, hide);
|
|
159
|
+
actions.systemFlag = true;
|
|
160
|
+
}
|
|
161
|
+
return { pathname: norm, actions };
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=hidden.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hidden.js","sourceRoot":"","sources":["../../src/hidden.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/index.cts
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
15
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
16
|
+
};
|
|
17
|
+
var _a;
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.setHidden = exports.getHiddenMetadata = exports.isHiddenRecursive = exports.isHidden = exports.getAllVolumeMetadata = exports.getVolumeMetadata = exports.getVolumeMountPoints = void 0;
|
|
20
|
+
const setup_js_1 = require("./setup.js");
|
|
21
|
+
__exportStar(require("./exports.js"), exports);
|
|
22
|
+
_a = (0, setup_js_1.setup)(__dirname), exports.getVolumeMountPoints = _a.getVolumeMountPoints, exports.getVolumeMetadata = _a.getVolumeMetadata, exports.getAllVolumeMetadata = _a.getAllVolumeMetadata, exports.isHidden = _a.isHidden, exports.isHiddenRecursive = _a.isHiddenRecursive, exports.getHiddenMetadata = _a.getHiddenMetadata, exports.setHidden = _a.setHidden;
|
|
23
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/index.cts"],"names":[],"mappings":";AAAA,gBAAgB;;;;;;;;;;;;;;;;;;AAEhB,yCAAmC;AAEnC,+CAA6B;AAEhB,KAQT,IAAA,gBAAK,EAAC,SAAS,CAAC,EAPlB,4BAAoB,4BACpB,yBAAiB,yBACjB,4BAAoB,4BACpB,gBAAQ,gBACR,yBAAiB,yBACjB,yBAAiB,yBACjB,iBAAS,gBACU"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/index.cts"],"names":[],"mappings":"AAIA,cAAc,cAAc,CAAC;AAE7B,eAAO,MACL,oBAAoB,sDACpB,iBAAiB,mDACjB,oBAAoB,sDACpB,QAAQ,0CACR,iBAAiB,mDACjB,iBAAiB,mDACjB,SAAS,yCACS,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gets the UUID from symlinks for a given device path asynchronously
|
|
3
|
+
* @param devicePath The device path to look up
|
|
4
|
+
* @returns Promise that resolves to the UUID if found, empty string otherwise
|
|
5
|
+
*/
|
|
6
|
+
export declare function getUuidFromDevDisk(devicePath: string): Promise<string | undefined>;
|
|
7
|
+
/**
|
|
8
|
+
* Gets the label from symlinks for a given device path asynchronously
|
|
9
|
+
* @param devicePath The device path to look up
|
|
10
|
+
* @returns Promise that resolves to the label if found, empty string otherwise
|
|
11
|
+
*/
|
|
12
|
+
export declare function getLabelFromDevDisk(devicePath: string): Promise<string | undefined>;
|
|
13
|
+
export declare function getBasenameLinkedTo(linkDir: string, linkPath: string): Promise<string | undefined>;
|
|
14
|
+
//# sourceMappingURL=dev_disk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev_disk.d.ts","sourceRoot":"","sources":["../../../src/linux/dev_disk.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,+BAY1D;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,+BAY3D;AAGD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQ7B"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/linux/dev_disk.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.getUuidFromDevDisk = getUuidFromDevDisk;
|
|
5
|
+
exports.getLabelFromDevDisk = getLabelFromDevDisk;
|
|
6
|
+
exports.getBasenameLinkedTo = getBasenameLinkedTo;
|
|
7
|
+
const promises_1 = require("node:fs/promises");
|
|
8
|
+
const node_path_1 = require("node:path");
|
|
9
|
+
const debuglog_js_1 = require("../debuglog.js");
|
|
10
|
+
const string_js_1 = require("../string.js");
|
|
11
|
+
/**
|
|
12
|
+
* Gets the UUID from symlinks for a given device path asynchronously
|
|
13
|
+
* @param devicePath The device path to look up
|
|
14
|
+
* @returns Promise that resolves to the UUID if found, empty string otherwise
|
|
15
|
+
*/
|
|
16
|
+
async function getUuidFromDevDisk(devicePath) {
|
|
17
|
+
try {
|
|
18
|
+
const result = await getBasenameLinkedTo("/dev/disk/by-uuid", (0, node_path_1.resolve)(devicePath));
|
|
19
|
+
(0, debuglog_js_1.debug)("[getUuidFromDevDisk] result: %o", result);
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
(0, debuglog_js_1.debug)("[getUuidFromDevDisk] failed: " + error);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Gets the label from symlinks for a given device path asynchronously
|
|
29
|
+
* @param devicePath The device path to look up
|
|
30
|
+
* @returns Promise that resolves to the label if found, empty string otherwise
|
|
31
|
+
*/
|
|
32
|
+
async function getLabelFromDevDisk(devicePath) {
|
|
33
|
+
try {
|
|
34
|
+
const result = await getBasenameLinkedTo("/dev/disk/by-label", (0, node_path_1.resolve)(devicePath));
|
|
35
|
+
(0, debuglog_js_1.debug)("[getLabelFromDevDisk] result: %o", result);
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
(0, debuglog_js_1.debug)("[getLabelFromDevDisk] failed: " + error);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// only exposed for tests
|
|
44
|
+
async function getBasenameLinkedTo(linkDir, linkPath) {
|
|
45
|
+
for await (const ea of readLinks(linkDir)) {
|
|
46
|
+
if (ea.linkTarget === linkPath) {
|
|
47
|
+
// Expect the symlink to be named like '1tb\x20\x28test\x29'
|
|
48
|
+
return (0, string_js_1.decodeEscapeSequences)(ea.dirent.name);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
async function* readLinks(directory) {
|
|
54
|
+
for (const dirent of await (0, promises_1.readdir)(directory, { withFileTypes: true })) {
|
|
55
|
+
if (dirent.isSymbolicLink()) {
|
|
56
|
+
try {
|
|
57
|
+
const linkTarget = (0, node_path_1.resolve)(directory, await (0, promises_1.readlink)((0, node_path_1.join)(directory, dirent.name)));
|
|
58
|
+
yield { dirent, linkTarget };
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// Ignore errors
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=dev_disk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev_disk.js","sourceRoot":"","sources":["../../../src/linux/dev_disk.ts"],"names":[],"mappings":";AAAA,wBAAwB;;AAaxB,gDAYC;AAOD,kDAYC;AAGD,kDAWC;AAvDD,+CAAqD;AACrD,yCAA0C;AAC1C,gDAAuC;AACvC,4CAAqD;AAErD;;;;GAIG;AACI,KAAK,UAAU,kBAAkB,CAAC,UAAkB;IACzD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,CACtC,mBAAmB,EACnB,IAAA,mBAAO,EAAC,UAAU,CAAC,CACpB,CAAC;QACF,IAAA,mBAAK,EAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAA,mBAAK,EAAC,+BAA+B,GAAG,KAAK,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;AACH,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,mBAAmB,CAAC,UAAkB;IAC1D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,CACtC,oBAAoB,EACpB,IAAA,mBAAO,EAAC,UAAU,CAAC,CACpB,CAAC;QACF,IAAA,mBAAK,EAAC,kCAAkC,EAAE,MAAM,CAAC,CAAC;QAClD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAA,mBAAK,EAAC,gCAAgC,GAAG,KAAK,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;AACH,CAAC;AAED,yBAAyB;AAClB,KAAK,UAAU,mBAAmB,CACvC,OAAe,EACf,QAAgB;IAEhB,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,IAAI,EAAE,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC/B,4DAA4D;YAC5D,OAAO,IAAA,iCAAqB,EAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,OAAO;AACT,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,SAAS,CACvB,SAAiB;IAEjB,KAAK,MAAM,MAAM,IAAI,MAAM,IAAA,kBAAO,EAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACvE,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAA,mBAAO,EACxB,SAAS,EACT,MAAM,IAAA,mBAAQ,EAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAC7C,CAAC;gBACF,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,gBAAgB;YAClB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
|