@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,7 @@
|
|
|
1
|
+
import { type MountPoint } from "../mount_point.js";
|
|
2
|
+
import { type Options } from "../options.js";
|
|
3
|
+
import type { NativeBindingsFn } from "../types/native_bindings.js";
|
|
4
|
+
import { MountEntry } from "./mtab.js";
|
|
5
|
+
export declare function getLinuxMountPoints(native: NativeBindingsFn, opts?: Pick<Options, "linuxMountTablePaths">): Promise<MountPoint[]>;
|
|
6
|
+
export declare function getLinuxMtabMetadata(mountPoint: string, opts?: Pick<Options, "linuxMountTablePaths">): Promise<MountEntry>;
|
|
7
|
+
//# sourceMappingURL=mount_points.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mount_points.d.ts","sourceRoot":"","sources":["../../../src/linux/mount_points.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAuB,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAqC,MAAM,WAAW,CAAC;AAE1E,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,gBAAgB,EACxB,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,GAC3C,OAAO,CAAC,UAAU,EAAE,CAAC,CAoDvB;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,GAC3C,OAAO,CAAC,UAAU,CAAC,CAoBrB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getLinuxMountPoints = getLinuxMountPoints;
|
|
4
|
+
exports.getLinuxMtabMetadata = getLinuxMtabMetadata;
|
|
5
|
+
// src/linux/mount_points.ts
|
|
6
|
+
const promises_1 = require("node:fs/promises");
|
|
7
|
+
const debuglog_js_1 = require("../debuglog.js");
|
|
8
|
+
const error_js_1 = require("../error.js");
|
|
9
|
+
const mount_point_js_1 = require("../mount_point.js");
|
|
10
|
+
const object_js_1 = require("../object.js");
|
|
11
|
+
const options_js_1 = require("../options.js");
|
|
12
|
+
const system_volume_js_1 = require("../system_volume.js");
|
|
13
|
+
const mtab_js_1 = require("./mtab.js");
|
|
14
|
+
async function getLinuxMountPoints(native, opts) {
|
|
15
|
+
const o = (0, options_js_1.optionsWithDefaults)(opts);
|
|
16
|
+
const raw = [];
|
|
17
|
+
try {
|
|
18
|
+
// Get GIO mounts if available from native module
|
|
19
|
+
const arr = await (await native()).getGioMountPoints?.();
|
|
20
|
+
(0, debuglog_js_1.debug)("[getLinuxMountPoints] GIO mount points: %o", arr);
|
|
21
|
+
if (arr != null)
|
|
22
|
+
raw.push(...arr);
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
(0, debuglog_js_1.debug)("Failed to get GIO mount points: %s", error);
|
|
26
|
+
// GIO support not compiled in or failed, continue with just mtab mounts
|
|
27
|
+
}
|
|
28
|
+
let cause;
|
|
29
|
+
for (const input of o.linuxMountTablePaths) {
|
|
30
|
+
try {
|
|
31
|
+
const mtabContent = await (0, promises_1.readFile)(input, "utf8");
|
|
32
|
+
const arr = (0, mtab_js_1.parseMtab)(mtabContent)
|
|
33
|
+
.map((ea) => (0, mtab_js_1.mountEntryToMountPoint)(ea))
|
|
34
|
+
.filter((ea) => ea != null);
|
|
35
|
+
(0, debuglog_js_1.debug)("[getLinuxMountPoints] %s mount points: %o", input, arr);
|
|
36
|
+
if (arr.length > 0) {
|
|
37
|
+
raw.push(...arr);
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
cause ??= (0, error_js_1.toError)(error);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const byMountPoint = new Map();
|
|
46
|
+
for (const ea of raw) {
|
|
47
|
+
const prior = byMountPoint.get(ea.mountPoint);
|
|
48
|
+
const merged = { ...(0, object_js_1.compactValues)(prior), ...(0, object_js_1.compactValues)(ea) };
|
|
49
|
+
if ((0, mount_point_js_1.isMountPoint)(merged)) {
|
|
50
|
+
(0, system_volume_js_1.assignSystemVolume)(merged, o);
|
|
51
|
+
byMountPoint.set(merged.mountPoint, merged);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (byMountPoint.size === 0) {
|
|
55
|
+
throw new error_js_1.WrappedError(`Failed to find any mount points (tried: ${JSON.stringify(o.linuxMountTablePaths)})`, { cause });
|
|
56
|
+
}
|
|
57
|
+
const results = [...byMountPoint.values()];
|
|
58
|
+
(0, debuglog_js_1.debug)("[getLinuxMountPoints] found %d mount points", results.length);
|
|
59
|
+
return o.includeSystemVolumes
|
|
60
|
+
? results
|
|
61
|
+
: results.filter((ea) => !ea.isSystemVolume);
|
|
62
|
+
}
|
|
63
|
+
async function getLinuxMtabMetadata(mountPoint, opts) {
|
|
64
|
+
let caughtError;
|
|
65
|
+
const inputs = (0, options_js_1.optionsWithDefaults)(opts).linuxMountTablePaths;
|
|
66
|
+
for (const input of inputs) {
|
|
67
|
+
try {
|
|
68
|
+
const mtabContent = await (0, promises_1.readFile)(input, "utf8");
|
|
69
|
+
for (const ea of (0, mtab_js_1.parseMtab)(mtabContent)) {
|
|
70
|
+
if (ea.fs_file === mountPoint) {
|
|
71
|
+
return ea;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
caughtError ??= (0, error_js_1.toError)(error);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
throw new error_js_1.WrappedError(`Failed to find mount point ${mountPoint} in an linuxMountTablePaths (tried: ${JSON.stringify(inputs)})`, caughtError);
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=mount_points.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mount_points.js","sourceRoot":"","sources":["../../../src/linux/mount_points.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { MountPoint } from "../mount_point.js";
|
|
2
|
+
import { SystemVolumeConfig } from "../system_volume.js";
|
|
3
|
+
import { VolumeMetadata } from "../volume_metadata.js";
|
|
4
|
+
/**
|
|
5
|
+
* Represents an entry in the mount table.
|
|
6
|
+
*/
|
|
7
|
+
export interface MountEntry {
|
|
8
|
+
/**
|
|
9
|
+
* Device or remote filesystem
|
|
10
|
+
*/
|
|
11
|
+
fs_spec: string;
|
|
12
|
+
/**
|
|
13
|
+
* Mount point
|
|
14
|
+
*/
|
|
15
|
+
fs_file: string;
|
|
16
|
+
/**
|
|
17
|
+
* Filesystem type
|
|
18
|
+
*/
|
|
19
|
+
fs_vfstype: string;
|
|
20
|
+
/**
|
|
21
|
+
* Mount options
|
|
22
|
+
*/
|
|
23
|
+
fs_mntops: string | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Dump frequency
|
|
26
|
+
*/
|
|
27
|
+
fs_freq: number | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* fsck pass number
|
|
30
|
+
*/
|
|
31
|
+
fs_passno: number | undefined;
|
|
32
|
+
}
|
|
33
|
+
export declare function mountEntryToMountPoint(entry: MountEntry): MountPoint | undefined;
|
|
34
|
+
export type MtabVolumeMetadata = Omit<VolumeMetadata, "size" | "used" | "available" | "label" | "uuid" | "status">;
|
|
35
|
+
export declare function mountEntryToPartialVolumeMetadata(entry: MountEntry, options?: Partial<SystemVolumeConfig>): MtabVolumeMetadata;
|
|
36
|
+
/**
|
|
37
|
+
* Parses an mtab/fstab file content into structured mount entries
|
|
38
|
+
* @param content - Raw content of the mtab/fstab file
|
|
39
|
+
* @returns Array of parsed mount entries
|
|
40
|
+
*/
|
|
41
|
+
export declare function parseMtab(content: string): MountEntry[];
|
|
42
|
+
/**
|
|
43
|
+
* Formats mount entries back into mtab file format
|
|
44
|
+
* @param entries - Array of mount entries
|
|
45
|
+
* @returns Formatted mtab file content
|
|
46
|
+
*/
|
|
47
|
+
export declare function formatMtab(entries: MountEntry[]): string;
|
|
48
|
+
//# sourceMappingURL=mtab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mtab.d.ts","sourceRoot":"","sources":["../../../src/linux/mtab.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAU/C,OAAO,EAAkB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B;;OAEG;IACH,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,UAAU,GAChB,UAAU,GAAG,SAAS,CASxB;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,cAAc,EACd,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAC5D,CAAC;AAEF,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,OAAO,CAAC,kBAAkB,CAAM,GACxC,kBAAkB,CASpB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAgCvD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAcxD"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/linux/mtab.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.mountEntryToMountPoint = mountEntryToMountPoint;
|
|
5
|
+
exports.mountEntryToPartialVolumeMetadata = mountEntryToPartialVolumeMetadata;
|
|
6
|
+
exports.parseMtab = parseMtab;
|
|
7
|
+
exports.formatMtab = formatMtab;
|
|
8
|
+
const number_js_1 = require("../number.js");
|
|
9
|
+
const path_js_1 = require("../path.js");
|
|
10
|
+
const remote_info_js_1 = require("../remote_info.js");
|
|
11
|
+
const string_js_1 = require("../string.js");
|
|
12
|
+
const system_volume_js_1 = require("../system_volume.js");
|
|
13
|
+
function mountEntryToMountPoint(entry) {
|
|
14
|
+
const mountPoint = (0, path_js_1.normalizePosixPath)(entry.fs_file);
|
|
15
|
+
const fstype = (0, string_js_1.toNotBlank)(entry.fs_vfstype) ?? (0, string_js_1.toNotBlank)(entry.fs_spec);
|
|
16
|
+
return mountPoint == null || fstype == null
|
|
17
|
+
? undefined
|
|
18
|
+
: {
|
|
19
|
+
mountPoint,
|
|
20
|
+
fstype,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function mountEntryToPartialVolumeMetadata(entry, options = {}) {
|
|
24
|
+
return {
|
|
25
|
+
mountPoint: entry.fs_file,
|
|
26
|
+
fstype: entry.fs_vfstype,
|
|
27
|
+
mountFrom: entry.fs_spec,
|
|
28
|
+
isSystemVolume: (0, system_volume_js_1.isSystemVolume)(entry.fs_file, entry.fs_vfstype, options),
|
|
29
|
+
remote: false, // < default to false
|
|
30
|
+
...(0, remote_info_js_1.extractRemoteInfo)(entry.fs_spec),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Parses an mtab/fstab file content into structured mount entries
|
|
35
|
+
* @param content - Raw content of the mtab/fstab file
|
|
36
|
+
* @returns Array of parsed mount entries
|
|
37
|
+
*/
|
|
38
|
+
function parseMtab(content) {
|
|
39
|
+
const entries = [];
|
|
40
|
+
const lines = content.split("\n");
|
|
41
|
+
for (const line of lines) {
|
|
42
|
+
// Skip comments and empty lines
|
|
43
|
+
if ((0, string_js_1.isBlank)(line) || line.trim().startsWith("#")) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const fields = line
|
|
47
|
+
.trim()
|
|
48
|
+
.match(/(?:[^\s\\]+|\\.)+/g)
|
|
49
|
+
?.map(string_js_1.decodeEscapeSequences);
|
|
50
|
+
if (!fields || fields.length < 3) {
|
|
51
|
+
continue; // Skip malformed lines
|
|
52
|
+
}
|
|
53
|
+
const fs_file = (0, path_js_1.normalizePosixPath)(fields[1]);
|
|
54
|
+
if (fs_file != null) {
|
|
55
|
+
entries.push({
|
|
56
|
+
fs_spec: fields[0],
|
|
57
|
+
// normalizeLinuxPath DOES NOT resolve()!
|
|
58
|
+
fs_file,
|
|
59
|
+
fs_vfstype: fields[2],
|
|
60
|
+
fs_mntops: fields[3],
|
|
61
|
+
fs_freq: (0, number_js_1.toInt)(fields[4]),
|
|
62
|
+
fs_passno: (0, number_js_1.toInt)(fields[5]),
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return entries;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Formats mount entries back into mtab file format
|
|
70
|
+
* @param entries - Array of mount entries
|
|
71
|
+
* @returns Formatted mtab file content
|
|
72
|
+
*/
|
|
73
|
+
function formatMtab(entries) {
|
|
74
|
+
return entries
|
|
75
|
+
.map((entry) => {
|
|
76
|
+
const fields = [
|
|
77
|
+
entry.fs_spec,
|
|
78
|
+
(0, string_js_1.encodeEscapeSequences)(entry.fs_file),
|
|
79
|
+
entry.fs_vfstype,
|
|
80
|
+
entry.fs_mntops,
|
|
81
|
+
entry.fs_freq?.toString(),
|
|
82
|
+
entry.fs_passno?.toString(),
|
|
83
|
+
];
|
|
84
|
+
return fields.join("\t");
|
|
85
|
+
})
|
|
86
|
+
.join("\n");
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=mtab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mtab.js","sourceRoot":"","sources":["../../../src/linux/mtab.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Options } from "./options.js";
|
|
2
|
+
import { SystemVolumeConfig } from "./system_volume.js";
|
|
3
|
+
import type { NativeBindingsFn } from "./types/native_bindings.js";
|
|
4
|
+
import { VolumeHealthStatus } from "./volume_health_status.js";
|
|
5
|
+
/**
|
|
6
|
+
* A mount point is a location in the file system where a volume is mounted.
|
|
7
|
+
*
|
|
8
|
+
* @see https://en.wikipedia.org/wiki/Mount_(computing)
|
|
9
|
+
*/
|
|
10
|
+
export interface MountPoint {
|
|
11
|
+
/**
|
|
12
|
+
* Mount location (like "/" or "C:\").
|
|
13
|
+
*/
|
|
14
|
+
mountPoint: string;
|
|
15
|
+
/**
|
|
16
|
+
* The type of file system on the volume, like `ext4`, `apfs`, or `ntfs`.
|
|
17
|
+
*
|
|
18
|
+
* Note: on Windows this may show as "ntfs" for remote filesystems, as that
|
|
19
|
+
* is how the filesystem is presented to the OS.
|
|
20
|
+
*/
|
|
21
|
+
fstype?: string;
|
|
22
|
+
/**
|
|
23
|
+
* On Windows, returns the health status of the volume.
|
|
24
|
+
*
|
|
25
|
+
* Note that this is only available on Windows, as both Linux and macOS are
|
|
26
|
+
* prohibitively expensive, requiring forking `fsck -N` or `diskutil
|
|
27
|
+
* verifyVolume`.
|
|
28
|
+
*
|
|
29
|
+
* If there are non-critical errors while extracting metadata, those error
|
|
30
|
+
* messages may be added to this field (say, from blkid or gio).
|
|
31
|
+
*
|
|
32
|
+
* @see {@link VolumeHealthStatuses} for values returned by Windows.
|
|
33
|
+
*/
|
|
34
|
+
status?: VolumeHealthStatus | string;
|
|
35
|
+
/**
|
|
36
|
+
* Indicates if this volume is primarily for system use (e.g., swap, snap
|
|
37
|
+
* loopbacks, EFI boot, or only system directories).
|
|
38
|
+
*
|
|
39
|
+
* Note: This is a best-effort classification and is not 100% accurate.
|
|
40
|
+
*
|
|
41
|
+
* @see {@link Options.systemPathPatterns} and {@link Options.systemFsTypes}
|
|
42
|
+
*/
|
|
43
|
+
isSystemVolume?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* If there are non-critical errors while extracting metadata, those errors
|
|
46
|
+
* may be added to this field.
|
|
47
|
+
*/
|
|
48
|
+
error?: Error | string;
|
|
49
|
+
}
|
|
50
|
+
export declare function isMountPoint(obj: unknown): obj is MountPoint;
|
|
51
|
+
export type GetVolumeMountPointOptions = Partial<Pick<Options, "timeoutMs" | "linuxMountTablePaths" | "maxConcurrency" | "includeSystemVolumes"> & SystemVolumeConfig>;
|
|
52
|
+
/**
|
|
53
|
+
* Helper function for {@link getVolumeMountPoints}.
|
|
54
|
+
*/
|
|
55
|
+
export declare function getVolumeMountPoints(opts: Required<GetVolumeMountPointOptions>, nativeFn: NativeBindingsFn): Promise<MountPoint[]>;
|
|
56
|
+
//# sourceMappingURL=mount_point.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mount_point.d.ts","sourceRoot":"","sources":["../../src/mount_point.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAsB,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAmB,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEhF;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC;IAErC;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACxB;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,UAAU,CAG5D;AAED,MAAM,MAAM,0BAA0B,GAAG,OAAO,CAC9C,IAAI,CACF,OAAO,EACL,WAAW,GACX,sBAAsB,GACtB,gBAAgB,GAChB,sBAAsB,CACzB,GACC,kBAAkB,CACrB,CAAC;AAEF;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,QAAQ,CAAC,0BAA0B,CAAC,EAC1C,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,UAAU,EAAE,CAAC,CAMvB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/mount_point.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.isMountPoint = isMountPoint;
|
|
5
|
+
exports.getVolumeMountPoints = getVolumeMountPoints;
|
|
6
|
+
const array_js_1 = require("./array.js");
|
|
7
|
+
const async_js_1 = require("./async.js");
|
|
8
|
+
const debuglog_js_1 = require("./debuglog.js");
|
|
9
|
+
const mount_points_js_1 = require("./linux/mount_points.js");
|
|
10
|
+
const object_js_1 = require("./object.js");
|
|
11
|
+
const platform_js_1 = require("./platform.js");
|
|
12
|
+
const string_js_1 = require("./string.js");
|
|
13
|
+
const system_volume_js_1 = require("./system_volume.js");
|
|
14
|
+
const volume_health_status_js_1 = require("./volume_health_status.js");
|
|
15
|
+
function isMountPoint(obj) {
|
|
16
|
+
if (!(0, object_js_1.isObject)(obj))
|
|
17
|
+
return false;
|
|
18
|
+
return "mountPoint" in obj && (0, string_js_1.isNotBlank)(obj.mountPoint);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Helper function for {@link getVolumeMountPoints}.
|
|
22
|
+
*/
|
|
23
|
+
async function getVolumeMountPoints(opts, nativeFn) {
|
|
24
|
+
const p = _getVolumeMountPoints(opts, nativeFn);
|
|
25
|
+
// we rely on the native bindings on Windows to do proper timeouts
|
|
26
|
+
return platform_js_1.isWindows
|
|
27
|
+
? p
|
|
28
|
+
: (0, async_js_1.withTimeout)({ desc: "getVolumeMountPoints", ...opts, promise: p });
|
|
29
|
+
}
|
|
30
|
+
async function _getVolumeMountPoints(o, nativeFn) {
|
|
31
|
+
(0, debuglog_js_1.debug)("[getVolumeMountPoints] gathering mount points with options: %o", o);
|
|
32
|
+
const result = await (platform_js_1.isWindows || platform_js_1.isMacOS
|
|
33
|
+
? (async () => {
|
|
34
|
+
(0, debuglog_js_1.debug)("[getVolumeMountPoints] using native implementation");
|
|
35
|
+
const points = await (await nativeFn()).getVolumeMountPoints(o);
|
|
36
|
+
(0, debuglog_js_1.debug)("[getVolumeMountPoints] native returned %d mount points", points.length);
|
|
37
|
+
return points;
|
|
38
|
+
})()
|
|
39
|
+
: (0, mount_points_js_1.getLinuxMountPoints)(nativeFn, o));
|
|
40
|
+
(0, debuglog_js_1.debug)("[getVolumeMountPoints] raw mount points: %o", result);
|
|
41
|
+
const compacted = result
|
|
42
|
+
.map((ea) => (0, object_js_1.compactValues)(ea))
|
|
43
|
+
.filter((ea) => (0, string_js_1.isNotBlank)(ea.mountPoint));
|
|
44
|
+
const filtered = o.includeSystemVolumes
|
|
45
|
+
? compacted
|
|
46
|
+
: compacted.filter((ea) => !ea.isSystemVolume);
|
|
47
|
+
const uniq = (0, array_js_1.uniqBy)(filtered, (ea) => (0, string_js_1.toNotBlank)(ea.mountPoint));
|
|
48
|
+
(0, debuglog_js_1.debug)("[getVolumeMountPoints] found %d unique mount points", uniq.length);
|
|
49
|
+
const results = (0, string_js_1.sortObjectsByLocale)(uniq, (ea) => ea.mountPoint);
|
|
50
|
+
(0, debuglog_js_1.debug)("[getVolumeMountPoints] getting status for %d mount points", results.length);
|
|
51
|
+
await (0, async_js_1.mapConcurrent)({
|
|
52
|
+
maxConcurrency: o.maxConcurrency,
|
|
53
|
+
items: results,
|
|
54
|
+
fn: async (mp) => {
|
|
55
|
+
(0, system_volume_js_1.assignSystemVolume)(mp, o);
|
|
56
|
+
if (((0, string_js_1.toNotBlank)(mp.status) ?? "healthy") === "healthy") {
|
|
57
|
+
// trust but verify
|
|
58
|
+
(0, debuglog_js_1.debug)("[getVolumeMountPoints] checking status of %s", mp.mountPoint);
|
|
59
|
+
mp.status = (await (0, volume_health_status_js_1.directoryStatus)(mp.mountPoint, o.timeoutMs)).status;
|
|
60
|
+
(0, debuglog_js_1.debug)("[getVolumeMountPoints] status for %s: %s", mp.mountPoint, mp.status);
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
(0, debuglog_js_1.debug)("[getVolumeMountPoints] completed with %d mount points", results.length);
|
|
65
|
+
return results;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=mount_point.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mount_point.js","sourceRoot":"","sources":["../../src/mount_point.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function isNumber(value: unknown): value is number;
|
|
2
|
+
export declare function toInt(value: unknown): number | undefined;
|
|
3
|
+
export declare function gt0(value: unknown): value is number;
|
|
4
|
+
export declare function gte0(value: unknown): value is number;
|
|
5
|
+
export declare function toGt0(value: unknown): number | undefined;
|
|
6
|
+
export declare function toGte0(value: unknown): number | undefined;
|
|
7
|
+
export declare function lte(a: number | undefined, b: number | undefined): boolean;
|
|
8
|
+
//# sourceMappingURL=number.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/number.ts"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAID,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAQxD;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEnD;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEpD;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAExD;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAEzD;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEzE"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/number.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.isNumber = isNumber;
|
|
5
|
+
exports.toInt = toInt;
|
|
6
|
+
exports.gt0 = gt0;
|
|
7
|
+
exports.gte0 = gte0;
|
|
8
|
+
exports.toGt0 = toGt0;
|
|
9
|
+
exports.toGte0 = toGte0;
|
|
10
|
+
exports.lte = lte;
|
|
11
|
+
function isNumber(value) {
|
|
12
|
+
return typeof value === "number" && isFinite(value);
|
|
13
|
+
}
|
|
14
|
+
const INTEGER_REGEX = /^-?\d+$/;
|
|
15
|
+
function toInt(value) {
|
|
16
|
+
try {
|
|
17
|
+
if (value == null)
|
|
18
|
+
return;
|
|
19
|
+
const s = String(value).trim();
|
|
20
|
+
return INTEGER_REGEX.test(s) ? parseInt(s) : undefined;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function gt0(value) {
|
|
27
|
+
return isNumber(value) && value > 0;
|
|
28
|
+
}
|
|
29
|
+
function gte0(value) {
|
|
30
|
+
return isNumber(value) && value >= 0;
|
|
31
|
+
}
|
|
32
|
+
function toGt0(value) {
|
|
33
|
+
return gt0(value) ? value : undefined;
|
|
34
|
+
}
|
|
35
|
+
function toGte0(value) {
|
|
36
|
+
return gte0(value) ? value : undefined;
|
|
37
|
+
}
|
|
38
|
+
function lte(a, b) {
|
|
39
|
+
return isNumber(a) && isNumber(b) && a <= b;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=number.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/number.ts"],"names":[],"mappings":";AAAA,gBAAgB;;AAEhB,4BAEC;AAID,sBAQC;AAED,kBAEC;AAED,oBAEC;AAED,sBAEC;AAED,wBAEC;AAED,kBAEC;AAlCD,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,aAAa,GAAG,SAAS,CAAC;AAEhC,SAAgB,KAAK,CAAC,KAAc;IAClC,IAAI,CAAC;QACH,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO;QAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/B,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;AACH,CAAC;AAED,SAAgB,GAAG,CAAC,KAAc;IAChC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,SAAgB,IAAI,CAAC,KAAc;IACjC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,KAAK,CAAC,KAAc;IAClC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACxC,CAAC;AAED,SAAgB,MAAM,CAAC,KAAc;IACnC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACzC,CAAC;AAED,SAAgB,GAAG,CAAC,CAAqB,EAAE,CAAqB;IAC9D,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if a value is an object
|
|
3
|
+
*/
|
|
4
|
+
export declare function isObject(value: unknown): value is object;
|
|
5
|
+
/**
|
|
6
|
+
* Map a value to another value, or undefined if the value is undefined
|
|
7
|
+
*/
|
|
8
|
+
export declare function map<T, U>(obj: T | undefined, fn: (value: T) => U): U | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Omit the specified fields from an object
|
|
11
|
+
*/
|
|
12
|
+
export declare function omit<T extends object, K extends keyof T>(obj: T, ...keys: K[]): Omit<T, K>;
|
|
13
|
+
/**
|
|
14
|
+
* Pick the specified fields from an object
|
|
15
|
+
*/
|
|
16
|
+
export declare function pick<T extends object, K extends keyof T>(obj: T, ...keys: K[]): Pick<T, K>;
|
|
17
|
+
export declare function compactValues<T extends object>(obj: T | undefined): Partial<T>;
|
|
18
|
+
//# sourceMappingURL=object.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/object.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAGxD;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EACtB,GAAG,EAAE,CAAC,GAAG,SAAS,EAClB,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAClB,CAAC,GAAG,SAAS,CAEf;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,EACtD,GAAG,EAAE,CAAC,EACN,GAAG,IAAI,EAAE,CAAC,EAAE,GACX,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAYZ;AACD;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,EACtD,GAAG,EAAE,CAAC,EACN,GAAG,IAAI,EAAE,CAAC,EAAE,GACX,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAMZ;AACD,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAC5C,GAAG,EAAE,CAAC,GAAG,SAAS,GACjB,OAAO,CAAC,CAAC,CAAC,CAUZ"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/object.js
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.isObject = isObject;
|
|
5
|
+
exports.map = map;
|
|
6
|
+
exports.omit = omit;
|
|
7
|
+
exports.pick = pick;
|
|
8
|
+
exports.compactValues = compactValues;
|
|
9
|
+
const string_js_1 = require("./string.js");
|
|
10
|
+
/**
|
|
11
|
+
* Check if a value is an object
|
|
12
|
+
*/
|
|
13
|
+
function isObject(value) {
|
|
14
|
+
// typeof null is 'object', so we need to check for that case YAY JAVASCRIPT
|
|
15
|
+
return value != null && typeof value === "object" && !Array.isArray(value);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Map a value to another value, or undefined if the value is undefined
|
|
19
|
+
*/
|
|
20
|
+
function map(obj, fn) {
|
|
21
|
+
return obj == null ? undefined : fn(obj);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Omit the specified fields from an object
|
|
25
|
+
*/
|
|
26
|
+
function omit(obj, ...keys) {
|
|
27
|
+
const result = {};
|
|
28
|
+
const keysSet = new Set(keys);
|
|
29
|
+
// OH THE TYPING HUGEMANATEE
|
|
30
|
+
for (const key of Object.keys(obj)) {
|
|
31
|
+
if (!keysSet.has(key)) {
|
|
32
|
+
result[key] = obj[key];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Pick the specified fields from an object
|
|
39
|
+
*/
|
|
40
|
+
function pick(obj, ...keys) {
|
|
41
|
+
const copy = {};
|
|
42
|
+
for (const key of keys) {
|
|
43
|
+
copy[key] = obj[key];
|
|
44
|
+
}
|
|
45
|
+
return copy;
|
|
46
|
+
}
|
|
47
|
+
function compactValues(obj) {
|
|
48
|
+
const result = {};
|
|
49
|
+
if (obj == null || !isObject(obj))
|
|
50
|
+
return {};
|
|
51
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
52
|
+
// skip blank strings and nullish values:
|
|
53
|
+
if (value != null && (!(0, string_js_1.isString)(value) || (0, string_js_1.isNotBlank)(value))) {
|
|
54
|
+
result[key] = value;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=object.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/object.ts"],"names":[],"mappings":";AAAA,gBAAgB;;AAOhB,4BAGC;AAKD,kBAKC;AAKD,oBAeC;AAID,oBASC;AACD,sCAYC;AAhED,2CAAmD;AAEnD;;GAEG;AACH,SAAgB,QAAQ,CAAC,KAAc;IACrC,4EAA4E;IAC5E,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED;;GAEG;AACH,SAAgB,GAAG,CACjB,GAAkB,EAClB,EAAmB;IAEnB,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,SAAgB,IAAI,CAClB,GAAM,EACN,GAAG,IAAS;IAEZ,MAAM,MAAM,GAAG,EAAgB,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IAE9B,4BAA4B;IAC5B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAA4B,EAAE,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAmB,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AACD;;GAEG;AACH,SAAgB,IAAI,CAClB,GAAM,EACN,GAAG,IAAS;IAEZ,MAAM,IAAI,GAAG,EAAgB,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AACD,SAAgB,aAAa,CAC3B,GAAkB;IAElB,MAAM,MAAM,GAAG,EAAgB,CAAC;IAChC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,yCAAyC;QACzC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,IAAA,oBAAQ,EAAC,KAAK,CAAC,IAAI,IAAA,sBAAU,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC7D,MAAM,CAAC,GAAc,CAAC,GAAG,KAAmB,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration options for filesystem operations.
|
|
3
|
+
*
|
|
4
|
+
* @see {@link optionsWithDefaults} for creating an options object with default values
|
|
5
|
+
* @see {@link OptionsDefault} for the default values
|
|
6
|
+
*/
|
|
7
|
+
export interface Options {
|
|
8
|
+
/**
|
|
9
|
+
* Timeout in milliseconds for filesystem operations.
|
|
10
|
+
*
|
|
11
|
+
* Disable timeouts by setting this to 0.
|
|
12
|
+
*
|
|
13
|
+
* @see {@link TimeoutMsDefault}.
|
|
14
|
+
*/
|
|
15
|
+
timeoutMs: number;
|
|
16
|
+
/**
|
|
17
|
+
* Maximum number of concurrent filesystem operations.
|
|
18
|
+
*
|
|
19
|
+
* Defaults to {@link https://nodejs.org/api/os.html#osavailableparallelism | availableParallelism}.
|
|
20
|
+
*/
|
|
21
|
+
maxConcurrency: number;
|
|
22
|
+
/**
|
|
23
|
+
* On Linux and macOS, mount point pathnames that matches any of these glob
|
|
24
|
+
* patterns will have {@link MountPoint.isSystemVolume} set to true.
|
|
25
|
+
*
|
|
26
|
+
* @see {@link SystemPathPatternsDefault} for the default value
|
|
27
|
+
*/
|
|
28
|
+
systemPathPatterns: string[];
|
|
29
|
+
/**
|
|
30
|
+
* On Linux and macOS, volumes whose filesystem matches any of these strings
|
|
31
|
+
* will have {@link MountPoint.isSystemVolume} set to true.
|
|
32
|
+
*
|
|
33
|
+
* @see {@link SystemFsTypesDefault} for the default value
|
|
34
|
+
*/
|
|
35
|
+
systemFsTypes: Set<string>;
|
|
36
|
+
/**
|
|
37
|
+
* On Linux, use the first mount point table in this array that is readable.
|
|
38
|
+
*
|
|
39
|
+
* @see {@link LinuxMountTablePathsDefault} for the default values
|
|
40
|
+
*/
|
|
41
|
+
linuxMountTablePaths: string[];
|
|
42
|
+
/**
|
|
43
|
+
* Should system volumes be included in result arrays? Defaults to true on
|
|
44
|
+
* Windows and false elsewhere.
|
|
45
|
+
*/
|
|
46
|
+
includeSystemVolumes: boolean;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Default timeout in milliseconds for {@link Options.timeoutMs}.
|
|
50
|
+
*
|
|
51
|
+
* Note that this timeout may be insufficient for some devices, like spun-down
|
|
52
|
+
* optical drives or network shares that need to spin up or reconnect.
|
|
53
|
+
*/
|
|
54
|
+
export declare const TimeoutMsDefault: 5000;
|
|
55
|
+
/**
|
|
56
|
+
* System paths and globs that indicate system volumes
|
|
57
|
+
*/
|
|
58
|
+
export declare const SystemPathPatternsDefault: string[];
|
|
59
|
+
/**
|
|
60
|
+
* Filesystem types that indicate system volumes
|
|
61
|
+
*/
|
|
62
|
+
export declare const SystemFsTypesDefault: Set<string>;
|
|
63
|
+
export declare const LinuxMountTablePathsDefault: string[];
|
|
64
|
+
/**
|
|
65
|
+
* Should {@link getAllVolumeMetadata()} include system volumes by
|
|
66
|
+
* default?
|
|
67
|
+
*/
|
|
68
|
+
export declare const IncludeSystemVolumesDefault: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Default {@link Options} object.
|
|
71
|
+
*
|
|
72
|
+
* @see {@link optionsWithDefaults} for creating an options object with default values
|
|
73
|
+
*/
|
|
74
|
+
export declare const OptionsDefault: Options;
|
|
75
|
+
/**
|
|
76
|
+
* Create an {@link Options} object using default values from
|
|
77
|
+
* {@link OptionsDefault} for missing fields.
|
|
78
|
+
*/
|
|
79
|
+
export declare function optionsWithDefaults<T extends Options>(overrides?: Partial<T>): T;
|
|
80
|
+
//# sourceMappingURL=options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/options.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB;;;;;;OAMG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;;;OAKG;IACH,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAE7B;;;;;OAKG;IACH,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAE3B;;;;OAIG;IACH,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAE/B;;;OAGG;IACH,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAG,IAAc,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,yBAAyB,UA+BrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,aAuB/B,CAAC;AAEH,eAAO,MAAM,2BAA2B,UAIvC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,SAAY,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,OAOnB,CAAC;AAEX;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,OAAO,EACnD,SAAS,GAAE,OAAO,CAAC,CAAC,CAAM,GACzB,CAAC,CAcH"}
|