@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.
Files changed (259) hide show
  1. package/binding.gyp +13 -0
  2. package/dist/cjs/array.d.ts +31 -0
  3. package/dist/cjs/array.d.ts.map +1 -0
  4. package/dist/cjs/array.js +57 -0
  5. package/dist/cjs/array.js.map +1 -0
  6. package/dist/cjs/async.d.ts +43 -0
  7. package/dist/cjs/async.d.ts.map +1 -0
  8. package/dist/cjs/async.js +116 -0
  9. package/dist/cjs/async.js.map +1 -0
  10. package/dist/cjs/cache.d.ts +5 -0
  11. package/dist/cjs/cache.d.ts.map +1 -0
  12. package/dist/cjs/cache.js +28 -0
  13. package/dist/cjs/cache.js.map +1 -0
  14. package/dist/cjs/debuglog.d.ts +9 -0
  15. package/dist/cjs/debuglog.d.ts.map +1 -0
  16. package/dist/cjs/debuglog.js +35 -0
  17. package/dist/cjs/debuglog.js.map +1 -0
  18. package/dist/cjs/defer.d.ts +12 -0
  19. package/dist/cjs/defer.d.ts.map +1 -0
  20. package/dist/cjs/defer.js +26 -0
  21. package/dist/cjs/defer.js.map +1 -0
  22. package/dist/cjs/error.d.ts +18 -0
  23. package/dist/cjs/error.d.ts.map +1 -0
  24. package/dist/cjs/error.js +63 -0
  25. package/dist/cjs/error.js.map +1 -0
  26. package/dist/cjs/exports.d.ts +99 -0
  27. package/dist/cjs/exports.d.ts.map +1 -0
  28. package/dist/cjs/exports.js +14 -0
  29. package/dist/cjs/exports.js.map +1 -0
  30. package/dist/cjs/fs.d.ts +23 -0
  31. package/dist/cjs/fs.d.ts.map +1 -0
  32. package/dist/cjs/fs.js +81 -0
  33. package/dist/cjs/fs.js.map +1 -0
  34. package/dist/cjs/glob.d.ts +18 -0
  35. package/dist/cjs/glob.d.ts.map +1 -0
  36. package/dist/cjs/glob.js +117 -0
  37. package/dist/cjs/glob.js.map +1 -0
  38. package/dist/cjs/hidden.d.ts +67 -0
  39. package/dist/cjs/hidden.d.ts.map +1 -0
  40. package/dist/cjs/hidden.js +163 -0
  41. package/dist/cjs/hidden.js.map +1 -0
  42. package/dist/cjs/index.cjs +23 -0
  43. package/dist/cjs/index.cjs.map +1 -0
  44. package/dist/cjs/index.d.cts.map +1 -0
  45. package/dist/cjs/linux/dev_disk.d.ts +14 -0
  46. package/dist/cjs/linux/dev_disk.d.ts.map +1 -0
  47. package/dist/cjs/linux/dev_disk.js +66 -0
  48. package/dist/cjs/linux/dev_disk.js.map +1 -0
  49. package/dist/cjs/linux/mount_points.d.ts +7 -0
  50. package/dist/cjs/linux/mount_points.d.ts.map +1 -0
  51. package/dist/cjs/linux/mount_points.js +81 -0
  52. package/dist/cjs/linux/mount_points.js.map +1 -0
  53. package/dist/cjs/linux/mtab.d.ts +48 -0
  54. package/dist/cjs/linux/mtab.d.ts.map +1 -0
  55. package/dist/cjs/linux/mtab.js +88 -0
  56. package/dist/cjs/linux/mtab.js.map +1 -0
  57. package/dist/cjs/mount_point.d.ts +56 -0
  58. package/dist/cjs/mount_point.d.ts.map +1 -0
  59. package/dist/cjs/mount_point.js +67 -0
  60. package/dist/cjs/mount_point.js.map +1 -0
  61. package/dist/cjs/number.d.ts +8 -0
  62. package/dist/cjs/number.d.ts.map +1 -0
  63. package/dist/cjs/number.js +41 -0
  64. package/dist/cjs/number.js.map +1 -0
  65. package/dist/cjs/object.d.ts +18 -0
  66. package/dist/cjs/object.d.ts.map +1 -0
  67. package/dist/cjs/object.js +59 -0
  68. package/dist/cjs/object.js.map +1 -0
  69. package/dist/cjs/options.d.ts +80 -0
  70. package/dist/cjs/options.d.ts.map +1 -0
  71. package/dist/cjs/options.js +115 -0
  72. package/dist/cjs/options.js.map +1 -0
  73. package/dist/cjs/path.d.ts +18 -0
  74. package/dist/cjs/path.d.ts.map +1 -0
  75. package/dist/cjs/path.js +50 -0
  76. package/dist/cjs/path.js.map +1 -0
  77. package/dist/cjs/platform.d.ts +4 -0
  78. package/dist/cjs/platform.d.ts.map +1 -0
  79. package/dist/cjs/platform.js +10 -0
  80. package/dist/cjs/platform.js.map +1 -0
  81. package/dist/cjs/random.d.ts +13 -0
  82. package/dist/cjs/random.d.ts.map +1 -0
  83. package/dist/cjs/random.js +43 -0
  84. package/dist/cjs/random.js.map +1 -0
  85. package/dist/cjs/remote_info.d.ts +39 -0
  86. package/dist/cjs/remote_info.d.ts.map +1 -0
  87. package/dist/cjs/remote_info.js +123 -0
  88. package/dist/cjs/remote_info.js.map +1 -0
  89. package/dist/cjs/setup.d.ts +3 -0
  90. package/dist/cjs/setup.d.ts.map +1 -0
  91. package/dist/cjs/setup.js +47 -0
  92. package/dist/cjs/setup.js.map +1 -0
  93. package/dist/cjs/string.d.ts +38 -0
  94. package/dist/cjs/string.d.ts.map +1 -0
  95. package/dist/cjs/string.js +89 -0
  96. package/dist/cjs/string.js.map +1 -0
  97. package/dist/cjs/string_enum.d.ts +20 -0
  98. package/dist/cjs/string_enum.d.ts.map +1 -0
  99. package/dist/cjs/string_enum.js +27 -0
  100. package/dist/cjs/string_enum.js.map +1 -0
  101. package/dist/cjs/system_volume.d.ts +15 -0
  102. package/dist/cjs/system_volume.d.ts.map +1 -0
  103. package/dist/cjs/system_volume.js +44 -0
  104. package/dist/cjs/system_volume.js.map +1 -0
  105. package/dist/cjs/types/native_bindings.d.ts +52 -0
  106. package/dist/cjs/types/native_bindings.d.ts.map +1 -0
  107. package/dist/cjs/types/native_bindings.js +4 -0
  108. package/dist/cjs/types/native_bindings.js.map +1 -0
  109. package/dist/cjs/unc.d.ts +12 -0
  110. package/dist/cjs/unc.d.ts.map +1 -0
  111. package/dist/cjs/unc.js +52 -0
  112. package/dist/cjs/unc.js.map +1 -0
  113. package/dist/cjs/units.d.ts +17 -0
  114. package/dist/cjs/units.d.ts.map +1 -0
  115. package/dist/cjs/units.js +35 -0
  116. package/dist/cjs/units.js.map +1 -0
  117. package/dist/cjs/uuid.d.ts +17 -0
  118. package/dist/cjs/uuid.d.ts.map +1 -0
  119. package/dist/cjs/uuid.js +25 -0
  120. package/dist/cjs/uuid.js.map +1 -0
  121. package/dist/cjs/volume_health_status.d.ts +25 -0
  122. package/dist/cjs/volume_health_status.d.ts.map +1 -0
  123. package/dist/cjs/volume_health_status.js +50 -0
  124. package/dist/cjs/volume_health_status.js.map +1 -0
  125. package/dist/cjs/volume_metadata.d.ts +55 -0
  126. package/dist/cjs/volume_metadata.d.ts.map +1 -0
  127. package/dist/cjs/volume_metadata.js +169 -0
  128. package/dist/cjs/volume_metadata.js.map +1 -0
  129. package/dist/esm/array.d.ts +31 -0
  130. package/dist/esm/array.d.ts.map +1 -0
  131. package/dist/esm/array.js +50 -0
  132. package/dist/esm/array.js.map +1 -0
  133. package/dist/esm/async.d.ts +43 -0
  134. package/dist/esm/async.d.ts.map +1 -0
  135. package/dist/esm/async.js +109 -0
  136. package/dist/esm/async.js.map +1 -0
  137. package/dist/esm/cache.d.ts +5 -0
  138. package/dist/esm/cache.d.ts.map +1 -0
  139. package/dist/esm/cache.js +25 -0
  140. package/dist/esm/cache.js.map +1 -0
  141. package/dist/esm/debuglog.d.ts +9 -0
  142. package/dist/esm/debuglog.d.ts.map +1 -0
  143. package/dist/esm/debuglog.js +30 -0
  144. package/dist/esm/debuglog.js.map +1 -0
  145. package/dist/esm/defer.d.ts +12 -0
  146. package/dist/esm/defer.d.ts.map +1 -0
  147. package/dist/esm/defer.js +23 -0
  148. package/dist/esm/defer.js.map +1 -0
  149. package/dist/esm/error.d.ts +18 -0
  150. package/dist/esm/error.d.ts.map +1 -0
  151. package/dist/esm/error.js +58 -0
  152. package/dist/esm/error.js.map +1 -0
  153. package/dist/esm/exports.d.ts +99 -0
  154. package/dist/esm/exports.d.ts.map +1 -0
  155. package/dist/esm/exports.js +4 -0
  156. package/dist/esm/exports.js.map +1 -0
  157. package/dist/esm/fs.d.ts +23 -0
  158. package/dist/esm/fs.d.ts.map +1 -0
  159. package/dist/esm/fs.js +73 -0
  160. package/dist/esm/fs.js.map +1 -0
  161. package/dist/esm/glob.d.ts +18 -0
  162. package/dist/esm/glob.d.ts.map +1 -0
  163. package/dist/esm/glob.js +113 -0
  164. package/dist/esm/glob.js.map +1 -0
  165. package/dist/esm/hidden.d.ts +67 -0
  166. package/dist/esm/hidden.d.ts.map +1 -0
  167. package/dist/esm/hidden.js +155 -0
  168. package/dist/esm/hidden.js.map +1 -0
  169. package/dist/esm/index.d.ts +3 -0
  170. package/dist/esm/index.d.ts.map +1 -0
  171. package/dist/esm/index.js +7 -0
  172. package/dist/esm/index.js.map +1 -0
  173. package/dist/esm/linux/dev_disk.d.ts +14 -0
  174. package/dist/esm/linux/dev_disk.d.ts.map +1 -0
  175. package/dist/esm/linux/dev_disk.js +61 -0
  176. package/dist/esm/linux/dev_disk.js.map +1 -0
  177. package/dist/esm/linux/mount_points.d.ts +7 -0
  178. package/dist/esm/linux/mount_points.d.ts.map +1 -0
  179. package/dist/esm/linux/mount_points.js +77 -0
  180. package/dist/esm/linux/mount_points.js.map +1 -0
  181. package/dist/esm/linux/mtab.d.ts +48 -0
  182. package/dist/esm/linux/mtab.d.ts.map +1 -0
  183. package/dist/esm/linux/mtab.js +82 -0
  184. package/dist/esm/linux/mtab.js.map +1 -0
  185. package/dist/esm/mount_point.d.ts +56 -0
  186. package/dist/esm/mount_point.d.ts.map +1 -0
  187. package/dist/esm/mount_point.js +63 -0
  188. package/dist/esm/mount_point.js.map +1 -0
  189. package/dist/esm/number.d.ts +8 -0
  190. package/dist/esm/number.d.ts.map +1 -0
  191. package/dist/esm/number.js +32 -0
  192. package/dist/esm/number.js.map +1 -0
  193. package/dist/esm/object.d.ts +18 -0
  194. package/dist/esm/object.d.ts.map +1 -0
  195. package/dist/esm/object.js +52 -0
  196. package/dist/esm/object.js.map +1 -0
  197. package/dist/esm/options.d.ts +80 -0
  198. package/dist/esm/options.d.ts.map +1 -0
  199. package/dist/esm/options.js +111 -0
  200. package/dist/esm/options.js.map +1 -0
  201. package/dist/esm/path.d.ts +18 -0
  202. package/dist/esm/path.d.ts.map +1 -0
  203. package/dist/esm/path.js +44 -0
  204. package/dist/esm/path.js.map +1 -0
  205. package/dist/esm/platform.d.ts +4 -0
  206. package/dist/esm/platform.d.ts.map +1 -0
  207. package/dist/esm/platform.js +7 -0
  208. package/dist/esm/platform.js.map +1 -0
  209. package/dist/esm/random.d.ts +13 -0
  210. package/dist/esm/random.d.ts.map +1 -0
  211. package/dist/esm/random.js +37 -0
  212. package/dist/esm/random.js.map +1 -0
  213. package/dist/esm/remote_info.d.ts +39 -0
  214. package/dist/esm/remote_info.d.ts.map +1 -0
  215. package/dist/esm/remote_info.js +116 -0
  216. package/dist/esm/remote_info.js.map +1 -0
  217. package/dist/esm/setup.d.ts +3 -0
  218. package/dist/esm/setup.d.ts.map +1 -0
  219. package/dist/esm/setup.js +41 -0
  220. package/dist/esm/setup.js.map +1 -0
  221. package/dist/esm/string.d.ts +38 -0
  222. package/dist/esm/string.d.ts.map +1 -0
  223. package/dist/esm/string.js +78 -0
  224. package/dist/esm/string.js.map +1 -0
  225. package/dist/esm/string_enum.d.ts +20 -0
  226. package/dist/esm/string_enum.d.ts.map +1 -0
  227. package/dist/esm/string_enum.js +24 -0
  228. package/dist/esm/string_enum.js.map +1 -0
  229. package/dist/esm/system_volume.d.ts +15 -0
  230. package/dist/esm/system_volume.d.ts.map +1 -0
  231. package/dist/esm/system_volume.js +40 -0
  232. package/dist/esm/system_volume.js.map +1 -0
  233. package/dist/esm/types/native_bindings.d.ts +52 -0
  234. package/dist/esm/types/native_bindings.d.ts.map +1 -0
  235. package/dist/esm/types/native_bindings.js +3 -0
  236. package/dist/esm/types/native_bindings.js.map +1 -0
  237. package/dist/esm/unc.d.ts +12 -0
  238. package/dist/esm/unc.d.ts.map +1 -0
  239. package/dist/esm/unc.js +49 -0
  240. package/dist/esm/unc.js.map +1 -0
  241. package/dist/esm/units.d.ts +17 -0
  242. package/dist/esm/units.d.ts.map +1 -0
  243. package/dist/esm/units.js +31 -0
  244. package/dist/esm/units.js.map +1 -0
  245. package/dist/esm/uuid.d.ts +17 -0
  246. package/dist/esm/uuid.d.ts.map +1 -0
  247. package/dist/esm/uuid.js +22 -0
  248. package/dist/esm/uuid.js.map +1 -0
  249. package/dist/esm/volume_health_status.d.ts +25 -0
  250. package/dist/esm/volume_health_status.d.ts.map +1 -0
  251. package/dist/esm/volume_health_status.js +46 -0
  252. package/dist/esm/volume_health_status.js.map +1 -0
  253. package/dist/esm/volume_metadata.d.ts +55 -0
  254. package/dist/esm/volume_metadata.d.ts.map +1 -0
  255. package/dist/esm/volume_metadata.js +164 -0
  256. package/dist/esm/volume_metadata.js.map +1 -0
  257. package/package.json +7 -8
  258. package/prebuilds/darwin-arm64/@photostructure+fs-metadata.glibc.node +0 -0
  259. 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":";AAAA,qBAAqB;;AAgErB,oCAGC;AAgBD,oDASC;AA1FD,yCAAoC;AACpC,yCAAwD;AACxD,+CAAsC;AACtC,6DAA8D;AAC9D,2CAAsD;AAEtD,+CAAmD;AACnD,2CAA0E;AAC1E,yDAA4E;AAE5E,uEAAgF;AAoDhF,SAAgB,YAAY,CAAC,GAAY;IACvC,IAAI,CAAC,IAAA,oBAAQ,EAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACjC,OAAO,YAAY,IAAI,GAAG,IAAI,IAAA,sBAAU,EAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC3D,CAAC;AAaD;;GAEG;AACI,KAAK,UAAU,oBAAoB,CACxC,IAA0C,EAC1C,QAA0B;IAE1B,MAAM,CAAC,GAAG,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChD,kEAAkE;IAClE,OAAO,uBAAS;QACd,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,IAAA,sBAAW,EAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,CAAuC,EACvC,QAA0B;IAE1B,IAAA,mBAAK,EAAC,gEAAgE,EAAE,CAAC,CAAC,CAAC;IAE3E,MAAM,MAAM,GAAG,MAAM,CAAC,uBAAS,IAAI,qBAAO;QACxC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;YACV,IAAA,mBAAK,EAAC,oDAAoD,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAChE,IAAA,mBAAK,EACH,wDAAwD,EACxD,MAAM,CAAC,MAAM,CACd,CAAC;YACF,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,EAAE;QACN,CAAC,CAAC,IAAA,qCAAmB,EAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IAEtC,IAAA,mBAAK,EAAC,6CAA6C,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,MAAM;SACrB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAA,yBAAa,EAAC,EAAE,CAAe,CAAC;SAC5C,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAA,sBAAU,EAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,CAAC,CAAC,oBAAoB;QACrC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,IAAA,iBAAM,EAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAA,sBAAU,EAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACjE,IAAA,mBAAK,EAAC,qDAAqD,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,IAAA,+BAAmB,EAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IACjE,IAAA,mBAAK,EACH,2DAA2D,EAC3D,OAAO,CAAC,MAAM,CACf,CAAC;IAEF,MAAM,IAAA,wBAAa,EAAC;QAClB,cAAc,EAAE,CAAC,CAAC,cAAc;QAChC,KAAK,EAAE,OAAO;QACd,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACf,IAAA,qCAAkB,EAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAE1B,IAAI,CAAC,IAAA,sBAAU,EAAC,EAAE,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;gBACvD,mBAAmB;gBACnB,IAAA,mBAAK,EAAC,8CAA8C,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;gBACrE,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,IAAA,yCAAe,EAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;gBACvE,IAAA,mBAAK,EACH,0CAA0C,EAC1C,EAAE,CAAC,UAAU,EACb,EAAE,CAAC,MAAM,CACV,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,IAAA,mBAAK,EACH,uDAAuD,EACvD,OAAO,CAAC,MAAM,CACf,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -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"}