@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,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/options.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.OptionsDefault = exports.IncludeSystemVolumesDefault = exports.LinuxMountTablePathsDefault = exports.SystemFsTypesDefault = exports.SystemPathPatternsDefault = exports.TimeoutMsDefault = void 0;
|
|
5
|
+
exports.optionsWithDefaults = optionsWithDefaults;
|
|
6
|
+
const node_os_1 = require("node:os");
|
|
7
|
+
const object_js_1 = require("./object.js");
|
|
8
|
+
const platform_js_1 = require("./platform.js");
|
|
9
|
+
/**
|
|
10
|
+
* Default timeout in milliseconds for {@link Options.timeoutMs}.
|
|
11
|
+
*
|
|
12
|
+
* Note that this timeout may be insufficient for some devices, like spun-down
|
|
13
|
+
* optical drives or network shares that need to spin up or reconnect.
|
|
14
|
+
*/
|
|
15
|
+
exports.TimeoutMsDefault = 5_000;
|
|
16
|
+
/**
|
|
17
|
+
* System paths and globs that indicate system volumes
|
|
18
|
+
*/
|
|
19
|
+
exports.SystemPathPatternsDefault = [
|
|
20
|
+
"/boot",
|
|
21
|
+
"/boot/efi",
|
|
22
|
+
"/dev",
|
|
23
|
+
"/dev/**",
|
|
24
|
+
"/proc/**",
|
|
25
|
+
"/run",
|
|
26
|
+
"/run/credentials/**",
|
|
27
|
+
"/run/lock",
|
|
28
|
+
"/run/snapd/**",
|
|
29
|
+
"/run/user/*/doc",
|
|
30
|
+
"/run/user/*/gvfs",
|
|
31
|
+
"/snap/**",
|
|
32
|
+
"/sys/**",
|
|
33
|
+
// windows for linux:
|
|
34
|
+
"/mnt/wslg/distro",
|
|
35
|
+
"/mnt/wslg/doc",
|
|
36
|
+
"/mnt/wslg/versions.txt",
|
|
37
|
+
"/usr/lib/wsl/drivers",
|
|
38
|
+
// MacOS stuff:
|
|
39
|
+
"/private/var/vm", // macOS swap
|
|
40
|
+
"/System/Volumes/Hardware",
|
|
41
|
+
"/System/Volumes/iSCPreboot",
|
|
42
|
+
"/System/Volumes/Preboot",
|
|
43
|
+
"/System/Volumes/Recovery",
|
|
44
|
+
"/System/Volumes/Reserved",
|
|
45
|
+
"/System/Volumes/Update",
|
|
46
|
+
"/System/Volumes/VM",
|
|
47
|
+
"/System/Volumes/xarts",
|
|
48
|
+
];
|
|
49
|
+
/**
|
|
50
|
+
* Filesystem types that indicate system volumes
|
|
51
|
+
*/
|
|
52
|
+
exports.SystemFsTypesDefault = new Set([
|
|
53
|
+
"autofs",
|
|
54
|
+
"binfmt_misc",
|
|
55
|
+
"cgroup",
|
|
56
|
+
"cgroup2",
|
|
57
|
+
"configfs",
|
|
58
|
+
"debugfs",
|
|
59
|
+
"devpts",
|
|
60
|
+
"devtmpfs",
|
|
61
|
+
"efivarfs",
|
|
62
|
+
"fusectl",
|
|
63
|
+
"fuse.snapfuse",
|
|
64
|
+
"hugetlbfs",
|
|
65
|
+
"mqueue",
|
|
66
|
+
"none",
|
|
67
|
+
"proc",
|
|
68
|
+
"pstore",
|
|
69
|
+
"rootfs",
|
|
70
|
+
"securityfs",
|
|
71
|
+
"snap*",
|
|
72
|
+
"squashfs",
|
|
73
|
+
"sysfs",
|
|
74
|
+
"tmpfs",
|
|
75
|
+
]);
|
|
76
|
+
exports.LinuxMountTablePathsDefault = [
|
|
77
|
+
"/proc/self/mounts",
|
|
78
|
+
"/proc/mounts",
|
|
79
|
+
"/etc/mtab",
|
|
80
|
+
];
|
|
81
|
+
/**
|
|
82
|
+
* Should {@link getAllVolumeMetadata()} include system volumes by
|
|
83
|
+
* default?
|
|
84
|
+
*/
|
|
85
|
+
exports.IncludeSystemVolumesDefault = platform_js_1.isWindows;
|
|
86
|
+
/**
|
|
87
|
+
* Default {@link Options} object.
|
|
88
|
+
*
|
|
89
|
+
* @see {@link optionsWithDefaults} for creating an options object with default values
|
|
90
|
+
*/
|
|
91
|
+
exports.OptionsDefault = {
|
|
92
|
+
timeoutMs: exports.TimeoutMsDefault,
|
|
93
|
+
maxConcurrency: (0, node_os_1.availableParallelism)(),
|
|
94
|
+
systemPathPatterns: [...exports.SystemPathPatternsDefault],
|
|
95
|
+
systemFsTypes: new Set(exports.SystemFsTypesDefault),
|
|
96
|
+
linuxMountTablePaths: exports.LinuxMountTablePathsDefault,
|
|
97
|
+
includeSystemVolumes: exports.IncludeSystemVolumesDefault,
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Create an {@link Options} object using default values from
|
|
101
|
+
* {@link OptionsDefault} for missing fields.
|
|
102
|
+
*/
|
|
103
|
+
function optionsWithDefaults(overrides = {}) {
|
|
104
|
+
if (!(0, object_js_1.isObject)(overrides)) {
|
|
105
|
+
throw new TypeError("options(): expected an object, got " +
|
|
106
|
+
typeof overrides +
|
|
107
|
+
": " +
|
|
108
|
+
JSON.stringify(overrides));
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
...exports.OptionsDefault,
|
|
112
|
+
...(0, object_js_1.compactValues)(overrides),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/options.ts"],"names":[],"mappings":";AAAA,iBAAiB;;;AAiKjB,kDAgBC;AA/KD,qCAA+C;AAC/C,2CAAsD;AACtD,+CAA0C;AAuD1C;;;;;GAKG;AACU,QAAA,gBAAgB,GAAG,KAAc,CAAC;AAE/C;;GAEG;AACU,QAAA,yBAAyB,GAAG;IACvC,OAAO;IACP,WAAW;IACX,MAAM;IACN,SAAS;IACT,UAAU;IACV,MAAM;IACN,qBAAqB;IACrB,WAAW;IACX,eAAe;IACf,iBAAiB;IACjB,kBAAkB;IAClB,UAAU;IACV,SAAS;IAET,qBAAqB;IACrB,kBAAkB;IAClB,eAAe;IACf,wBAAwB;IACxB,sBAAsB;IAEtB,eAAe;IACf,iBAAiB,EAAE,aAAa;IAChC,0BAA0B;IAC1B,4BAA4B;IAC5B,yBAAyB;IACzB,0BAA0B;IAC1B,0BAA0B;IAC1B,wBAAwB;IACxB,oBAAoB;IACpB,uBAAuB;CACxB,CAAC;AAEF;;GAEG;AACU,QAAA,oBAAoB,GAAG,IAAI,GAAG,CAAC;IAC1C,QAAQ;IACR,aAAa;IACb,QAAQ;IACR,SAAS;IACT,UAAU;IACV,SAAS;IACT,QAAQ;IACR,UAAU;IACV,UAAU;IACV,SAAS;IACT,eAAe;IACf,WAAW;IACX,QAAQ;IACR,MAAM;IACN,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,OAAO;IACP,UAAU;IACV,OAAO;IACP,OAAO;CACR,CAAC,CAAC;AAEU,QAAA,2BAA2B,GAAG;IACzC,mBAAmB;IACnB,cAAc;IACd,WAAW;CACZ,CAAC;AAEF;;;GAGG;AACU,QAAA,2BAA2B,GAAG,uBAAS,CAAC;AAErD;;;;GAIG;AACU,QAAA,cAAc,GAAY;IACrC,SAAS,EAAE,wBAAgB;IAC3B,cAAc,EAAE,IAAA,8BAAoB,GAAE;IACtC,kBAAkB,EAAE,CAAC,GAAG,iCAAyB,CAAC;IAClD,aAAa,EAAE,IAAI,GAAG,CAAC,4BAAoB,CAAC;IAC5C,oBAAoB,EAAE,mCAA2B;IACjD,oBAAoB,EAAE,mCAA2B;CACzC,CAAC;AAEX;;;GAGG;AACH,SAAgB,mBAAmB,CACjC,YAAwB,EAAE;IAE1B,IAAI,CAAC,IAAA,oBAAQ,EAAC,SAAS,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,SAAS,CACjB,qCAAqC;YACnC,OAAO,SAAS;YAChB,IAAI;YACJ,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAC5B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,sBAAc;QACjB,GAAI,IAAA,yBAAa,EAAC,SAAS,CAAO;KACnC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare function normalizePath(mountPoint: string | undefined): string | undefined;
|
|
2
|
+
/**
|
|
3
|
+
* Normalizes a Linux or macOS mount point by removing any trailing slashes.
|
|
4
|
+
* This is a no-op for root mount points.
|
|
5
|
+
*/
|
|
6
|
+
export declare function normalizePosixPath(mountPoint: string | undefined): string | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* Normalizes a Windows mount point by ensuring drive letters end with a
|
|
9
|
+
* backslash.
|
|
10
|
+
*/
|
|
11
|
+
export declare function normalizeWindowsPath(mountPoint: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* @return true if `path` is the root directory--this is platform-specific. Only
|
|
14
|
+
* "/" on linux/macOS is considered a root directory. On Windows, the root
|
|
15
|
+
* directory is a drive letter followed by a colon, e.g. "C:\".
|
|
16
|
+
*/
|
|
17
|
+
export declare function isRootDirectory(path: string): boolean;
|
|
18
|
+
//# sourceMappingURL=path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/path.ts"],"names":[],"mappings":"AAMA,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,MAAM,GAAG,SAAS,CASpB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,MAAM,GAAG,SAAS,CAMpB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGrD"}
|
package/dist/cjs/path.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/path.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.normalizePath = normalizePath;
|
|
5
|
+
exports.normalizePosixPath = normalizePosixPath;
|
|
6
|
+
exports.normalizeWindowsPath = normalizeWindowsPath;
|
|
7
|
+
exports.isRootDirectory = isRootDirectory;
|
|
8
|
+
const node_path_1 = require("node:path");
|
|
9
|
+
const platform_js_1 = require("./platform.js");
|
|
10
|
+
const string_js_1 = require("./string.js");
|
|
11
|
+
function normalizePath(mountPoint) {
|
|
12
|
+
if ((0, string_js_1.isBlank)(mountPoint))
|
|
13
|
+
return undefined;
|
|
14
|
+
const result = platform_js_1.isWindows
|
|
15
|
+
? normalizeWindowsPath(mountPoint)
|
|
16
|
+
: normalizePosixPath(mountPoint);
|
|
17
|
+
// Make sure the native code doesn't see anything weird:
|
|
18
|
+
return result != null ? (0, node_path_1.resolve)(result) : undefined;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Normalizes a Linux or macOS mount point by removing any trailing slashes.
|
|
22
|
+
* This is a no-op for root mount points.
|
|
23
|
+
*/
|
|
24
|
+
function normalizePosixPath(mountPoint) {
|
|
25
|
+
return (0, string_js_1.isBlank)(mountPoint)
|
|
26
|
+
? undefined
|
|
27
|
+
: mountPoint === "/"
|
|
28
|
+
? mountPoint
|
|
29
|
+
: mountPoint.replace(/\/+$/, "");
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Normalizes a Windows mount point by ensuring drive letters end with a
|
|
33
|
+
* backslash.
|
|
34
|
+
*/
|
|
35
|
+
function normalizeWindowsPath(mountPoint) {
|
|
36
|
+
// Terrible things happen if we give syscalls "C:" instead of "C:\"
|
|
37
|
+
return /^[a-z]:$/i.test(mountPoint)
|
|
38
|
+
? mountPoint.toUpperCase() + "\\"
|
|
39
|
+
: mountPoint;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* @return true if `path` is the root directory--this is platform-specific. Only
|
|
43
|
+
* "/" on linux/macOS is considered a root directory. On Windows, the root
|
|
44
|
+
* directory is a drive letter followed by a colon, e.g. "C:\".
|
|
45
|
+
*/
|
|
46
|
+
function isRootDirectory(path) {
|
|
47
|
+
const n = normalizePath(path);
|
|
48
|
+
return n == null ? false : platform_js_1.isWindows ? (0, node_path_1.dirname)(n) === n : n === "/";
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/path.ts"],"names":[],"mappings":";AAAA,cAAc;;AAMd,sCAWC;AAMD,gDAQC;AAMD,oDAMC;AAOD,0CAGC;AAnDD,yCAA6C;AAC7C,+CAA0C;AAC1C,2CAAsC;AAEtC,SAAgB,aAAa,CAC3B,UAA8B;IAE9B,IAAI,IAAA,mBAAO,EAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IAE1C,MAAM,MAAM,GAAG,uBAAS;QACtB,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC;QAClC,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAEnC,wDAAwD;IACxD,OAAO,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAA,mBAAO,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAChC,UAA8B;IAE9B,OAAO,IAAA,mBAAO,EAAC,UAAU,CAAC;QACxB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,UAAU,KAAK,GAAG;YAClB,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,UAAkB;IACrD,mEAAmE;IAEnE,OAAO,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;QACjC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,IAAI;QACjC,CAAC,CAAC,UAAU,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,IAAY;IAC1C,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAS,CAAC,CAAC,CAAC,IAAA,mBAAO,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;AACtE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/platform.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,OAAO,SAAgB,CAAC;AACrC,eAAO,MAAM,SAAS,SAAgB,CAAC;AACvC,eAAO,MAAM,OAAO,SAAiB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/platform.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.isMacOS = exports.isWindows = exports.isLinux = void 0;
|
|
5
|
+
const node_os_1 = require("node:os");
|
|
6
|
+
const p = (0, node_os_1.platform)();
|
|
7
|
+
exports.isLinux = p === "linux";
|
|
8
|
+
exports.isWindows = p === "win32";
|
|
9
|
+
exports.isMacOS = p === "darwin";
|
|
10
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/platform.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;AAElB,qCAAmC;AAEnC,MAAM,CAAC,GAAG,IAAA,kBAAQ,GAAE,CAAC;AAER,QAAA,OAAO,GAAG,CAAC,KAAK,OAAO,CAAC;AACxB,QAAA,SAAS,GAAG,CAAC,KAAK,OAAO,CAAC;AAC1B,QAAA,OAAO,GAAG,CAAC,KAAK,QAAQ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @return a random character `[a-z]`
|
|
3
|
+
*/
|
|
4
|
+
export declare function randomLetter(): string;
|
|
5
|
+
export declare function randomLetters(length: number): string;
|
|
6
|
+
/**
|
|
7
|
+
* Shuffle an array using the Fisher-Yates (Knuth) algorithm.
|
|
8
|
+
* @param a The array to shuffle
|
|
9
|
+
* @returns A shallow shuffled copy of `a`
|
|
10
|
+
*/
|
|
11
|
+
export declare function shuffle<T>(a: T[]): T[];
|
|
12
|
+
export declare function pickRandom<T>(a: T[]): T;
|
|
13
|
+
//# sourceMappingURL=random.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../src/random.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAWtC;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAKvC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/random.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.randomLetter = randomLetter;
|
|
5
|
+
exports.randomLetters = randomLetters;
|
|
6
|
+
exports.shuffle = shuffle;
|
|
7
|
+
exports.pickRandom = pickRandom;
|
|
8
|
+
const node_crypto_1 = require("node:crypto");
|
|
9
|
+
const CharCode_a = "a".charCodeAt(0);
|
|
10
|
+
/**
|
|
11
|
+
* @return a random character `[a-z]`
|
|
12
|
+
*/
|
|
13
|
+
function randomLetter() {
|
|
14
|
+
return String.fromCharCode(CharCode_a + (0, node_crypto_1.randomInt)(0, 26));
|
|
15
|
+
}
|
|
16
|
+
function randomLetters(length) {
|
|
17
|
+
return Array.from({ length }, randomLetter).join("");
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Shuffle an array using the Fisher-Yates (Knuth) algorithm.
|
|
21
|
+
* @param a The array to shuffle
|
|
22
|
+
* @returns A shallow shuffled copy of `a`
|
|
23
|
+
*/
|
|
24
|
+
function shuffle(a) {
|
|
25
|
+
if (a.length <= 1)
|
|
26
|
+
return a;
|
|
27
|
+
a = [...a]; // Copy the array
|
|
28
|
+
for (let i = a.length - 1; i > 0; i--) {
|
|
29
|
+
// Pick a random index from 0 to i
|
|
30
|
+
const j = Math.floor(Math.random() * (i + 1));
|
|
31
|
+
// Swap elements at indices i and j
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
33
|
+
[a[i], a[j]] = [a[j], a[i]];
|
|
34
|
+
}
|
|
35
|
+
return a;
|
|
36
|
+
}
|
|
37
|
+
function pickRandom(a) {
|
|
38
|
+
if (a == null || a.length === 0) {
|
|
39
|
+
throw new Error("Cannot pick from an empty array");
|
|
40
|
+
}
|
|
41
|
+
return a[(0, node_crypto_1.randomInt)(0, a.length)];
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=random.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random.js","sourceRoot":"","sources":["../../src/random.ts"],"names":[],"mappings":";AAAA,gBAAgB;;AAQhB,oCAEC;AAED,sCAEC;AAOD,0BAWC;AACD,gCAKC;AApCD,6CAAwC;AAExC,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACrC;;GAEG;AACH,SAAgB,YAAY;IAC1B,OAAO,MAAM,CAAC,YAAY,CAAC,UAAU,GAAG,IAAA,uBAAS,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAgB,aAAa,CAAC,MAAc;IAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,SAAgB,OAAO,CAAI,CAAM;IAC/B,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC5B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,kCAAkC;QAClC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,mCAAmC;QACnC,oEAAoE;QACpE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AACD,SAAgB,UAAU,CAAI,CAAM;IAClC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,CAAC,CAAC,IAAA,uBAAS,EAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAM,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents remote filesystem information.
|
|
3
|
+
*/
|
|
4
|
+
export interface RemoteInfo {
|
|
5
|
+
/**
|
|
6
|
+
* We can sometimes fetch a URI of the resource (like "smb://server/share" or
|
|
7
|
+
* "file:///media/user/usb")
|
|
8
|
+
*/
|
|
9
|
+
uri?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Protocol used to access the share.
|
|
12
|
+
*/
|
|
13
|
+
protocol?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Does the protocol seem to be a remote filesystem?
|
|
16
|
+
*/
|
|
17
|
+
remote: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* If remote, may include the username used to access the share.
|
|
20
|
+
*
|
|
21
|
+
* This will be undefined on NFS and other remote filesystem types that do
|
|
22
|
+
* authentication out of band.
|
|
23
|
+
*/
|
|
24
|
+
remoteUser?: string;
|
|
25
|
+
/**
|
|
26
|
+
* If remote, the ip or hostname hosting the share (like "rusty" or "10.1.1.3")
|
|
27
|
+
*/
|
|
28
|
+
remoteHost?: string;
|
|
29
|
+
/**
|
|
30
|
+
* If remote, the name of the share (like "homes")
|
|
31
|
+
*/
|
|
32
|
+
remoteShare?: string;
|
|
33
|
+
}
|
|
34
|
+
export declare function isRemoteInfo(obj: unknown): obj is RemoteInfo;
|
|
35
|
+
export declare function normalizeProtocol(protocol: string): string;
|
|
36
|
+
export declare function isRemoteFsType(fstype: string | undefined): boolean;
|
|
37
|
+
export declare function parseURL(s: string): URL | undefined;
|
|
38
|
+
export declare function extractRemoteInfo(fsSpec: string | undefined): RemoteInfo | undefined;
|
|
39
|
+
//# sourceMappingURL=remote_info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote_info.d.ts","sourceRoot":"","sources":["../../src/remote_info.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,UAAU,CAI5D;AA0BD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAElE;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,CAMnD;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,UAAU,GAAG,SAAS,CAuExB"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/remote_info.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.isRemoteInfo = isRemoteInfo;
|
|
5
|
+
exports.normalizeProtocol = normalizeProtocol;
|
|
6
|
+
exports.isRemoteFsType = isRemoteFsType;
|
|
7
|
+
exports.parseURL = parseURL;
|
|
8
|
+
exports.extractRemoteInfo = extractRemoteInfo;
|
|
9
|
+
const debuglog_js_1 = require("./debuglog.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
|
+
function isRemoteInfo(obj) {
|
|
14
|
+
if (!(0, object_js_1.isObject)(obj))
|
|
15
|
+
return false;
|
|
16
|
+
const { remoteHost, remoteShare } = obj;
|
|
17
|
+
return (0, string_js_1.isNotBlank)(remoteHost) && (0, string_js_1.isNotBlank)(remoteShare);
|
|
18
|
+
}
|
|
19
|
+
const NETWORK_FS_TYPES = new Set([
|
|
20
|
+
"9p",
|
|
21
|
+
"afp",
|
|
22
|
+
"afs",
|
|
23
|
+
"beegfs",
|
|
24
|
+
"ceph",
|
|
25
|
+
"cifs",
|
|
26
|
+
"ftp",
|
|
27
|
+
"fuse.cephfs",
|
|
28
|
+
"fuse.glusterfs",
|
|
29
|
+
"fuse.sshfs",
|
|
30
|
+
"fuse",
|
|
31
|
+
"gfs2",
|
|
32
|
+
"glusterfs",
|
|
33
|
+
"lustre",
|
|
34
|
+
"ncpfs",
|
|
35
|
+
"nfs",
|
|
36
|
+
"nfs4",
|
|
37
|
+
"smb",
|
|
38
|
+
"smbfs",
|
|
39
|
+
"sshfs",
|
|
40
|
+
"webdav",
|
|
41
|
+
]);
|
|
42
|
+
function normalizeProtocol(protocol) {
|
|
43
|
+
return (protocol ?? "").toLowerCase().replace(/:$/, "");
|
|
44
|
+
}
|
|
45
|
+
function isRemoteFsType(fstype) {
|
|
46
|
+
return (0, string_js_1.isNotBlank)(fstype) && NETWORK_FS_TYPES.has(normalizeProtocol(fstype));
|
|
47
|
+
}
|
|
48
|
+
function parseURL(s) {
|
|
49
|
+
try {
|
|
50
|
+
return (0, string_js_1.isBlank)(s) ? undefined : new URL(s);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function extractRemoteInfo(fsSpec) {
|
|
57
|
+
if (fsSpec == null || (0, string_js_1.isBlank)(fsSpec))
|
|
58
|
+
return;
|
|
59
|
+
if (platform_js_1.isWindows) {
|
|
60
|
+
fsSpec = fsSpec.replace(/\\/g, "/");
|
|
61
|
+
}
|
|
62
|
+
const url = parseURL(fsSpec);
|
|
63
|
+
if (url?.protocol === "file:") {
|
|
64
|
+
return {
|
|
65
|
+
remote: false,
|
|
66
|
+
uri: fsSpec,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
const patterns = [
|
|
70
|
+
// CIFS/SMB pattern: //hostname/share or //user@host/share
|
|
71
|
+
{
|
|
72
|
+
regex: /^\/\/(?:(?<remoteUser>[^/@]+)@)?(?<remoteHost>[^/@]+)\/(?<remoteShare>.+)$/,
|
|
73
|
+
},
|
|
74
|
+
// NFS pattern: hostname:/share
|
|
75
|
+
{
|
|
76
|
+
protocol: "nfs",
|
|
77
|
+
regex: /^(?<remoteHost>[^:]+):\/(?!\/)(?<remoteShare>.+)$/,
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
for (const { protocol, regex } of patterns) {
|
|
81
|
+
const o = (0, object_js_1.compactValues)({
|
|
82
|
+
protocol,
|
|
83
|
+
remote: true,
|
|
84
|
+
...(fsSpec.match(regex)?.groups ?? {}),
|
|
85
|
+
});
|
|
86
|
+
if (isRemoteInfo(o)) {
|
|
87
|
+
(0, debuglog_js_1.debug)("[extractRemoteInfo] matched pattern: %o", o);
|
|
88
|
+
return o;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// Let's try URL last, as nfs mounts are URI-ish
|
|
92
|
+
try {
|
|
93
|
+
// try to parse fsSpec as a uri:
|
|
94
|
+
const parsed = new URL(fsSpec);
|
|
95
|
+
if (parsed != null) {
|
|
96
|
+
(0, debuglog_js_1.debug)("[extractRemoteInfo] parsed URL: %o", parsed);
|
|
97
|
+
const protocol = normalizeProtocol(parsed.protocol);
|
|
98
|
+
if (!isRemoteFsType(protocol)) {
|
|
99
|
+
// don't set remoteUser, remoteHost, or remoteShare, it's not remote!
|
|
100
|
+
return {
|
|
101
|
+
uri: fsSpec,
|
|
102
|
+
remote: false,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
return (0, object_js_1.compactValues)({
|
|
107
|
+
uri: fsSpec,
|
|
108
|
+
protocol,
|
|
109
|
+
remote: true,
|
|
110
|
+
remoteUser: parsed.username,
|
|
111
|
+
remoteHost: parsed.hostname,
|
|
112
|
+
// URL pathname includes leading slash:
|
|
113
|
+
remoteShare: parsed.pathname.replace(/^\//, ""),
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// ignore
|
|
120
|
+
}
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=remote_info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote_info.js","sourceRoot":"","sources":["../../src/remote_info.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/setup.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAiBjD,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CA8CxD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/exports.ts
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.setup = setup;
|
|
8
|
+
const node_gyp_build_1 = __importDefault(require("node-gyp-build"));
|
|
9
|
+
const debuglog_js_1 = require("./debuglog.js");
|
|
10
|
+
const defer_js_1 = require("./defer.js");
|
|
11
|
+
const fs_js_1 = require("./fs.js");
|
|
12
|
+
const hidden_js_1 = require("./hidden.js");
|
|
13
|
+
const mount_point_js_1 = require("./mount_point.js");
|
|
14
|
+
const options_js_1 = require("./options.js");
|
|
15
|
+
const volume_metadata_js_1 = require("./volume_metadata.js");
|
|
16
|
+
function setup(dirname) {
|
|
17
|
+
const nativeFn = (0, defer_js_1.defer)(async () => {
|
|
18
|
+
const start = Date.now();
|
|
19
|
+
try {
|
|
20
|
+
const dir = await (0, fs_js_1.findAncestorDir)(dirname, "binding.gyp");
|
|
21
|
+
if (dir == null) {
|
|
22
|
+
throw new Error("Could not find bindings.gyp in any ancestor directory of " + dirname);
|
|
23
|
+
}
|
|
24
|
+
const bindings = (0, node_gyp_build_1.default)(dir);
|
|
25
|
+
bindings.setDebugLogging((0, debuglog_js_1.isDebugEnabled)());
|
|
26
|
+
bindings.setDebugPrefix((0, debuglog_js_1.debugLogContext)() + ":native");
|
|
27
|
+
return bindings;
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
(0, debuglog_js_1.debug)("Loading native bindings failed: %s", error);
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
finally {
|
|
34
|
+
(0, debuglog_js_1.debug)(`Native bindings took %d ms to load`, Date.now() - start);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
return {
|
|
38
|
+
getVolumeMountPoints: (opts = {}) => (0, mount_point_js_1.getVolumeMountPoints)((0, options_js_1.optionsWithDefaults)(opts), nativeFn),
|
|
39
|
+
getVolumeMetadata: (mountPoint, opts = {}) => (0, volume_metadata_js_1.getVolumeMetadata)({ ...(0, options_js_1.optionsWithDefaults)(opts), mountPoint }, nativeFn),
|
|
40
|
+
getAllVolumeMetadata: (opts = {}) => (0, volume_metadata_js_1.getAllVolumeMetadata)((0, options_js_1.optionsWithDefaults)(opts), nativeFn),
|
|
41
|
+
isHidden: (pathname) => (0, hidden_js_1.isHidden)(pathname, nativeFn),
|
|
42
|
+
isHiddenRecursive: (pathname) => (0, hidden_js_1.isHiddenRecursive)(pathname, nativeFn),
|
|
43
|
+
getHiddenMetadata: (pathname) => (0, hidden_js_1.getHiddenMetadata)(pathname, nativeFn),
|
|
44
|
+
setHidden: (pathname, hidden, method = "auto") => (0, hidden_js_1.setHidden)(pathname, hidden, method, nativeFn),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/setup.ts"],"names":[],"mappings":";AAAA,iBAAiB;;;;;AAsBjB,sBA8CC;AAlED,oEAA0C;AAC1C,+CAAuE;AACvE,yCAAmC;AAEnC,mCAA0C;AAC1C,2CAMqB;AACrB,qDAG0B;AAC1B,6CAAmD;AAEnD,6DAA+E;AAE/E,SAAgB,KAAK,CAAC,OAAe;IACnC,MAAM,QAAQ,GAAG,IAAA,gBAAK,EAA0B,KAAK,IAAI,EAAE;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAA,uBAAe,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAC1D,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CACb,2DAA2D,GAAG,OAAO,CACtE,CAAC;YACJ,CAAC;YACD,MAAM,QAAQ,GAAG,IAAA,wBAAY,EAAC,GAAG,CAAmB,CAAC;YACrD,QAAQ,CAAC,eAAe,CAAC,IAAA,4BAAc,GAAE,CAAC,CAAC;YAC3C,QAAQ,CAAC,cAAc,CAAC,IAAA,6BAAe,GAAE,GAAG,SAAS,CAAC,CAAC;YACvD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,mBAAK,EAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAA,mBAAK,EAAC,oCAAoC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,oBAAoB,EAAE,CAAC,OAA4C,EAAE,EAAE,EAAE,CACvE,IAAA,qCAAoB,EAAC,IAAA,gCAAmB,EAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;QAE3D,iBAAiB,EAAE,CAAC,UAAkB,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,CACnD,IAAA,sCAAiB,EAAC,EAAE,GAAG,IAAA,gCAAmB,EAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,QAAQ,CAAC;QAE3E,oBAAoB,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,CAClC,IAAA,yCAAoB,EAAC,IAAA,gCAAmB,EAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;QAE3D,QAAQ,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,IAAA,oBAAQ,EAAC,QAAQ,EAAE,QAAQ,CAAC;QAE5D,iBAAiB,EAAE,CAAC,QAAgB,EAAE,EAAE,CACtC,IAAA,6BAAiB,EAAC,QAAQ,EAAE,QAAQ,CAAC;QAEvC,iBAAiB,EAAE,CAAC,QAAgB,EAAE,EAAE,CACtC,IAAA,6BAAiB,EAAC,QAAQ,EAAE,QAAQ,CAAC;QAEvC,SAAS,EAAE,CACT,QAAgB,EAChB,MAAe,EACf,SAAqB,MAAM,EAC3B,EAAE,CAAC,IAAA,qBAAS,EAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;KAC1C,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export declare function isString(input: unknown): input is string;
|
|
2
|
+
export declare function toS(input: unknown): string;
|
|
3
|
+
/**
|
|
4
|
+
* @return true iff the input is a string and has at least one non-whitespace character
|
|
5
|
+
*/
|
|
6
|
+
export declare function isNotBlank(input: unknown): input is string;
|
|
7
|
+
/**
|
|
8
|
+
* @return true iff the input is not a string or only has non-whitespace characters
|
|
9
|
+
*/
|
|
10
|
+
export declare function isBlank(input: unknown): input is undefined;
|
|
11
|
+
export declare function toNotBlank(input: unknown): string | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Decodes a string containing octal (\000-\377) and/or hexadecimal
|
|
14
|
+
* (\x00-\xFF) escape sequences
|
|
15
|
+
* @param input The string containing escape sequences to decode
|
|
16
|
+
* @returns The decoded string with escape sequences converted to their
|
|
17
|
+
* corresponding characters
|
|
18
|
+
* @throws Error if an invalid escape sequence is encountered
|
|
19
|
+
*/
|
|
20
|
+
export declare function decodeEscapeSequences(input: string): string;
|
|
21
|
+
export declare function encodeEscapeSequences(input: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Sort an array of strings using the locale-aware collation algorithm.
|
|
24
|
+
*
|
|
25
|
+
* @param arr The array of strings to sort. The original array **is sorted in
|
|
26
|
+
* place**.
|
|
27
|
+
*/
|
|
28
|
+
export declare function sortByLocale(arr: string[], locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions): string[];
|
|
29
|
+
/**
|
|
30
|
+
* Sort an array of objects using the locale-aware collation algorithm.
|
|
31
|
+
*
|
|
32
|
+
* @param arr The array of objects to sort.
|
|
33
|
+
* @param fn The function to extract the key to sort by from each object.
|
|
34
|
+
* @param locales The locales to use for sorting.
|
|
35
|
+
* @param options The collation options to use for sorting.
|
|
36
|
+
*/
|
|
37
|
+
export declare function sortObjectsByLocale<T>(arr: T[], fn: (key: T) => string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions): T[];
|
|
38
|
+
//# sourceMappingURL=string.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/string.ts"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE1D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE7D;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiB3D;AAID,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAU3D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,EAAE,EACb,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAC9B,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,GAC7B,MAAM,EAAE,CAEV;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,GAAG,EAAE,CAAC,EAAE,EACR,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,EACtB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAC9B,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,GAC7B,CAAC,EAAE,CAEL"}
|