@photostructure/fs-metadata 0.1.4 → 0.1.6
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/dist/index.cjs +1318 -0
- package/dist/index.mjs +1270 -0
- package/dist/types/array.d.ts +0 -1
- package/dist/types/async.d.ts +0 -1
- package/dist/types/cache.d.ts +0 -1
- package/dist/types/debuglog.d.ts +0 -1
- package/dist/types/defer.d.ts +0 -1
- package/dist/types/error.d.ts +0 -1
- package/dist/types/exports.d.ts +0 -1
- package/dist/types/fs.d.ts +0 -1
- package/dist/types/glob.d.ts +0 -1
- package/dist/types/hidden.d.ts +0 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/linux/dev_disk.d.ts +0 -1
- package/dist/types/linux/mount_points.d.ts +0 -1
- package/dist/types/linux/mtab.d.ts +0 -1
- package/dist/types/mount_point.d.ts +0 -1
- package/dist/types/number.d.ts +0 -1
- package/dist/types/object.d.ts +0 -1
- package/dist/types/options.d.ts +0 -1
- package/dist/types/path.d.ts +0 -1
- package/dist/types/platform.d.ts +0 -1
- package/dist/types/random.d.ts +0 -1
- package/dist/types/remote_info.d.ts +0 -1
- package/dist/types/setup.d.ts +0 -1
- package/dist/types/string.d.ts +0 -1
- package/dist/types/string_enum.d.ts +0 -1
- package/dist/types/system_volume.d.ts +0 -1
- package/dist/types/types/native_bindings.d.ts +0 -1
- package/dist/types/unc.d.ts +0 -1
- package/dist/types/units.d.ts +0 -1
- package/dist/types/uuid.d.ts +0 -1
- package/dist/types/volume_health_status.d.ts +0 -1
- package/dist/types/volume_metadata.d.ts +0 -1
- package/jest.config.cjs +33 -0
- package/package.json +26 -36
- package/prebuilds/darwin-arm64/@photostructure+fs-metadata.glibc.node +0 -0
- package/prebuilds/linux-arm64/@photostructure+fs-metadata.musl.node +0 -0
- package/prebuilds/linux-x64/@photostructure+fs-metadata.glibc.node +0 -0
- package/prebuilds/linux-x64/@photostructure+fs-metadata.musl.node +0 -0
- package/prebuilds/win32-x64/@photostructure+fs-metadata.glibc.node +0 -0
- package/src/darwin/volume_metadata.cpp +26 -12
- package/src/linux/volume_metadata.cpp +21 -4
- package/dist/cjs/array.cjs +0 -57
- package/dist/cjs/array.js.map +0 -1
- package/dist/cjs/async.cjs +0 -116
- package/dist/cjs/async.js.map +0 -1
- package/dist/cjs/cache.cjs +0 -28
- package/dist/cjs/cache.js.map +0 -1
- package/dist/cjs/debuglog.cjs +0 -35
- package/dist/cjs/debuglog.js.map +0 -1
- package/dist/cjs/defer.cjs +0 -26
- package/dist/cjs/defer.js.map +0 -1
- package/dist/cjs/error.cjs +0 -63
- package/dist/cjs/error.js.map +0 -1
- package/dist/cjs/exports.cjs +0 -14
- package/dist/cjs/exports.js.map +0 -1
- package/dist/cjs/fs.cjs +0 -81
- package/dist/cjs/fs.js.map +0 -1
- package/dist/cjs/glob.cjs +0 -117
- package/dist/cjs/glob.js.map +0 -1
- package/dist/cjs/hidden.cjs +0 -163
- package/dist/cjs/hidden.js.map +0 -1
- package/dist/cjs/index.cjs +0 -23
- package/dist/cjs/index.cjs.map +0 -1
- package/dist/cjs/linux/dev_disk.cjs +0 -66
- package/dist/cjs/linux/dev_disk.js.map +0 -1
- package/dist/cjs/linux/mount_points.cjs +0 -81
- package/dist/cjs/linux/mount_points.js.map +0 -1
- package/dist/cjs/linux/mtab.cjs +0 -88
- package/dist/cjs/linux/mtab.js.map +0 -1
- package/dist/cjs/mount_point.cjs +0 -67
- package/dist/cjs/mount_point.js.map +0 -1
- package/dist/cjs/number.cjs +0 -41
- package/dist/cjs/number.js.map +0 -1
- package/dist/cjs/object.cjs +0 -59
- package/dist/cjs/object.js.map +0 -1
- package/dist/cjs/options.cjs +0 -115
- package/dist/cjs/options.js.map +0 -1
- package/dist/cjs/path.cjs +0 -50
- package/dist/cjs/path.js.map +0 -1
- package/dist/cjs/platform.cjs +0 -10
- package/dist/cjs/platform.js.map +0 -1
- package/dist/cjs/random.cjs +0 -43
- package/dist/cjs/random.js.map +0 -1
- package/dist/cjs/remote_info.cjs +0 -123
- package/dist/cjs/remote_info.js.map +0 -1
- package/dist/cjs/setup.cjs +0 -47
- package/dist/cjs/setup.js.map +0 -1
- package/dist/cjs/string.cjs +0 -89
- package/dist/cjs/string.js.map +0 -1
- package/dist/cjs/string_enum.cjs +0 -27
- package/dist/cjs/string_enum.js.map +0 -1
- package/dist/cjs/system_volume.cjs +0 -44
- package/dist/cjs/system_volume.js.map +0 -1
- package/dist/cjs/types/native_bindings.cjs +0 -4
- package/dist/cjs/types/native_bindings.js.map +0 -1
- package/dist/cjs/unc.cjs +0 -52
- package/dist/cjs/unc.js.map +0 -1
- package/dist/cjs/units.cjs +0 -35
- package/dist/cjs/units.js.map +0 -1
- package/dist/cjs/uuid.cjs +0 -25
- package/dist/cjs/uuid.js.map +0 -1
- package/dist/cjs/volume_health_status.cjs +0 -50
- package/dist/cjs/volume_health_status.js.map +0 -1
- package/dist/cjs/volume_metadata.cjs +0 -169
- package/dist/cjs/volume_metadata.js.map +0 -1
- package/dist/esm/array.js +0 -50
- package/dist/esm/array.js.map +0 -1
- package/dist/esm/async.js +0 -109
- package/dist/esm/async.js.map +0 -1
- package/dist/esm/cache.js +0 -25
- package/dist/esm/cache.js.map +0 -1
- package/dist/esm/debuglog.js +0 -30
- package/dist/esm/debuglog.js.map +0 -1
- package/dist/esm/defer.js +0 -23
- package/dist/esm/defer.js.map +0 -1
- package/dist/esm/error.js +0 -58
- package/dist/esm/error.js.map +0 -1
- package/dist/esm/exports.js +0 -4
- package/dist/esm/exports.js.map +0 -1
- package/dist/esm/fs.js +0 -73
- package/dist/esm/fs.js.map +0 -1
- package/dist/esm/glob.js +0 -113
- package/dist/esm/glob.js.map +0 -1
- package/dist/esm/hidden.js +0 -155
- package/dist/esm/hidden.js.map +0 -1
- package/dist/esm/index.js +0 -7
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/linux/dev_disk.js +0 -61
- package/dist/esm/linux/dev_disk.js.map +0 -1
- package/dist/esm/linux/mount_points.js +0 -77
- package/dist/esm/linux/mount_points.js.map +0 -1
- package/dist/esm/linux/mtab.js +0 -82
- package/dist/esm/linux/mtab.js.map +0 -1
- package/dist/esm/mount_point.js +0 -63
- package/dist/esm/mount_point.js.map +0 -1
- package/dist/esm/number.js +0 -32
- package/dist/esm/number.js.map +0 -1
- package/dist/esm/object.js +0 -52
- package/dist/esm/object.js.map +0 -1
- package/dist/esm/options.js +0 -111
- package/dist/esm/options.js.map +0 -1
- package/dist/esm/path.js +0 -44
- package/dist/esm/path.js.map +0 -1
- package/dist/esm/platform.js +0 -7
- package/dist/esm/platform.js.map +0 -1
- package/dist/esm/random.js +0 -37
- package/dist/esm/random.js.map +0 -1
- package/dist/esm/remote_info.js +0 -116
- package/dist/esm/remote_info.js.map +0 -1
- package/dist/esm/setup.js +0 -41
- package/dist/esm/setup.js.map +0 -1
- package/dist/esm/string.js +0 -78
- package/dist/esm/string.js.map +0 -1
- package/dist/esm/string_enum.js +0 -24
- package/dist/esm/string_enum.js.map +0 -1
- package/dist/esm/system_volume.js +0 -40
- package/dist/esm/system_volume.js.map +0 -1
- package/dist/esm/types/native_bindings.js +0 -3
- package/dist/esm/types/native_bindings.js.map +0 -1
- package/dist/esm/unc.js +0 -49
- package/dist/esm/unc.js.map +0 -1
- package/dist/esm/units.js +0 -31
- package/dist/esm/units.js.map +0 -1
- package/dist/esm/uuid.js +0 -22
- package/dist/esm/uuid.js.map +0 -1
- package/dist/esm/volume_health_status.js +0 -46
- package/dist/esm/volume_health_status.js.map +0 -1
- package/dist/esm/volume_metadata.js +0 -164
- package/dist/esm/volume_metadata.js.map +0 -1
- package/dist/types/array.d.ts.map +0 -1
- package/dist/types/array.js +0 -50
- package/dist/types/array.js.map +0 -1
- package/dist/types/async.d.ts.map +0 -1
- package/dist/types/async.js +0 -109
- package/dist/types/async.js.map +0 -1
- package/dist/types/cache.d.ts.map +0 -1
- package/dist/types/cache.js +0 -25
- package/dist/types/cache.js.map +0 -1
- package/dist/types/debuglog.d.ts.map +0 -1
- package/dist/types/debuglog.js +0 -30
- package/dist/types/debuglog.js.map +0 -1
- package/dist/types/defer.d.ts.map +0 -1
- package/dist/types/defer.js +0 -23
- package/dist/types/defer.js.map +0 -1
- package/dist/types/error.d.ts.map +0 -1
- package/dist/types/error.js +0 -58
- package/dist/types/error.js.map +0 -1
- package/dist/types/exports.d.ts.map +0 -1
- package/dist/types/exports.js +0 -4
- package/dist/types/exports.js.map +0 -1
- package/dist/types/fs.d.ts.map +0 -1
- package/dist/types/fs.js +0 -73
- package/dist/types/fs.js.map +0 -1
- package/dist/types/glob.d.ts.map +0 -1
- package/dist/types/glob.js +0 -113
- package/dist/types/glob.js.map +0 -1
- package/dist/types/hidden.d.ts.map +0 -1
- package/dist/types/hidden.js +0 -155
- package/dist/types/hidden.js.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -7
- package/dist/types/index.js.map +0 -1
- package/dist/types/linux/dev_disk.d.ts.map +0 -1
- package/dist/types/linux/dev_disk.js +0 -61
- package/dist/types/linux/dev_disk.js.map +0 -1
- package/dist/types/linux/mount_points.d.ts.map +0 -1
- package/dist/types/linux/mount_points.js +0 -77
- package/dist/types/linux/mount_points.js.map +0 -1
- package/dist/types/linux/mtab.d.ts.map +0 -1
- package/dist/types/linux/mtab.js +0 -82
- package/dist/types/linux/mtab.js.map +0 -1
- package/dist/types/mount_point.d.ts.map +0 -1
- package/dist/types/mount_point.js +0 -63
- package/dist/types/mount_point.js.map +0 -1
- package/dist/types/number.d.ts.map +0 -1
- package/dist/types/number.js +0 -32
- package/dist/types/number.js.map +0 -1
- package/dist/types/object.d.ts.map +0 -1
- package/dist/types/object.js +0 -52
- package/dist/types/object.js.map +0 -1
- package/dist/types/options.d.ts.map +0 -1
- package/dist/types/options.js +0 -111
- package/dist/types/options.js.map +0 -1
- package/dist/types/path.d.ts.map +0 -1
- package/dist/types/path.js +0 -44
- package/dist/types/path.js.map +0 -1
- package/dist/types/platform.d.ts.map +0 -1
- package/dist/types/platform.js +0 -7
- package/dist/types/platform.js.map +0 -1
- package/dist/types/random.d.ts.map +0 -1
- package/dist/types/random.js +0 -37
- package/dist/types/random.js.map +0 -1
- package/dist/types/remote_info.d.ts.map +0 -1
- package/dist/types/remote_info.js +0 -116
- package/dist/types/remote_info.js.map +0 -1
- package/dist/types/setup.d.ts.map +0 -1
- package/dist/types/setup.js +0 -41
- package/dist/types/setup.js.map +0 -1
- package/dist/types/string.d.ts.map +0 -1
- package/dist/types/string.js +0 -78
- package/dist/types/string.js.map +0 -1
- package/dist/types/string_enum.d.ts.map +0 -1
- package/dist/types/string_enum.js +0 -24
- package/dist/types/string_enum.js.map +0 -1
- package/dist/types/system_volume.d.ts.map +0 -1
- package/dist/types/system_volume.js +0 -40
- package/dist/types/system_volume.js.map +0 -1
- package/dist/types/types/native_bindings.d.ts.map +0 -1
- package/dist/types/types/native_bindings.js +0 -3
- package/dist/types/types/native_bindings.js.map +0 -1
- package/dist/types/unc.d.ts.map +0 -1
- package/dist/types/unc.js +0 -49
- package/dist/types/unc.js.map +0 -1
- package/dist/types/units.d.ts.map +0 -1
- package/dist/types/units.js +0 -31
- package/dist/types/units.js.map +0 -1
- package/dist/types/uuid.d.ts.map +0 -1
- package/dist/types/uuid.js +0 -22
- package/dist/types/uuid.js.map +0 -1
- package/dist/types/volume_health_status.d.ts.map +0 -1
- package/dist/types/volume_health_status.js +0 -46
- package/dist/types/volume_health_status.js.map +0 -1
- package/dist/types/volume_metadata.d.ts.map +0 -1
- package/dist/types/volume_metadata.js +0 -164
- package/dist/types/volume_metadata.js.map +0 -1
- package/scripts/fix-cjs.mjs +0 -35
package/dist/types/setup.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
// src/exports.ts
|
|
2
|
-
import NodeGypBuild from "node-gyp-build";
|
|
3
|
-
import { debug, debugLogContext, isDebugEnabled } from "./debuglog.js";
|
|
4
|
-
import { defer } from "./defer.js";
|
|
5
|
-
import { findAncestorDir } from "./fs.js";
|
|
6
|
-
import { getHiddenMetadata, isHidden, isHiddenRecursive, setHidden, } from "./hidden.js";
|
|
7
|
-
import { getVolumeMountPoints, } from "./mount_point.js";
|
|
8
|
-
import { optionsWithDefaults } from "./options.js";
|
|
9
|
-
import { getAllVolumeMetadata, getVolumeMetadata } from "./volume_metadata.js";
|
|
10
|
-
export function setup(dirname) {
|
|
11
|
-
const nativeFn = defer(async () => {
|
|
12
|
-
const start = Date.now();
|
|
13
|
-
try {
|
|
14
|
-
const dir = await findAncestorDir(dirname, "binding.gyp");
|
|
15
|
-
if (dir == null) {
|
|
16
|
-
throw new Error("Could not find bindings.gyp in any ancestor directory of " + dirname);
|
|
17
|
-
}
|
|
18
|
-
const bindings = NodeGypBuild(dir);
|
|
19
|
-
bindings.setDebugLogging(isDebugEnabled());
|
|
20
|
-
bindings.setDebugPrefix(debugLogContext() + ":native");
|
|
21
|
-
return bindings;
|
|
22
|
-
}
|
|
23
|
-
catch (error) {
|
|
24
|
-
debug("Loading native bindings failed: %s", error);
|
|
25
|
-
throw error;
|
|
26
|
-
}
|
|
27
|
-
finally {
|
|
28
|
-
debug(`Native bindings took %d ms to load`, Date.now() - start);
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
return {
|
|
32
|
-
getVolumeMountPoints: (opts = {}) => getVolumeMountPoints(optionsWithDefaults(opts), nativeFn),
|
|
33
|
-
getVolumeMetadata: (mountPoint, opts = {}) => getVolumeMetadata({ ...optionsWithDefaults(opts), mountPoint }, nativeFn),
|
|
34
|
-
getAllVolumeMetadata: (opts = {}) => getAllVolumeMetadata(optionsWithDefaults(opts), nativeFn),
|
|
35
|
-
isHidden: (pathname) => isHidden(pathname, nativeFn),
|
|
36
|
-
isHiddenRecursive: (pathname) => isHiddenRecursive(pathname, nativeFn),
|
|
37
|
-
getHiddenMetadata: (pathname) => getHiddenMetadata(pathname, nativeFn),
|
|
38
|
-
setHidden: (pathname, hidden, method = "auto") => setHidden(pathname, hidden, method, nativeFn),
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=setup.js.map
|
package/dist/types/setup.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/setup.ts"],"names":[],"mappings":"AAAA,iBAAiB;AAEjB,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EACL,iBAAiB,EAEjB,QAAQ,EACR,iBAAiB,EACjB,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,GAErB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,MAAM,UAAU,KAAK,CAAC,OAAe;IACnC,MAAM,QAAQ,GAAG,KAAK,CAA0B,KAAK,IAAI,EAAE;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,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,YAAY,CAAC,GAAG,CAAmB,CAAC;YACrD,QAAQ,CAAC,eAAe,CAAC,cAAc,EAAE,CAAC,CAAC;YAC3C,QAAQ,CAAC,cAAc,CAAC,eAAe,EAAE,GAAG,SAAS,CAAC,CAAC;YACvD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,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,oBAAoB,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;QAE3D,iBAAiB,EAAE,CAAC,UAAkB,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,CACnD,iBAAiB,CAAC,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,QAAQ,CAAC;QAE3E,oBAAoB,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,CAClC,oBAAoB,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;QAE3D,QAAQ,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAE5D,iBAAiB,EAAE,CAAC,QAAgB,EAAE,EAAE,CACtC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAEvC,iBAAiB,EAAE,CAAC,QAAgB,EAAE,EAAE,CACtC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAEvC,SAAS,EAAE,CACT,QAAgB,EAChB,MAAe,EACf,SAAqB,MAAM,EAC3B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;KAC1C,CAAC;AACb,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/types/string.js
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
// src/string.ts
|
|
2
|
-
export function isString(input) {
|
|
3
|
-
return typeof input === "string";
|
|
4
|
-
}
|
|
5
|
-
export function toS(input) {
|
|
6
|
-
return isString(input) ? input : input == null ? "" : String(input);
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* @return true iff the input is a string and has at least one non-whitespace character
|
|
10
|
-
*/
|
|
11
|
-
export function isNotBlank(input) {
|
|
12
|
-
return typeof input === "string" && input.trim().length > 0;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* @return true iff the input is not a string or only has non-whitespace characters
|
|
16
|
-
*/
|
|
17
|
-
export function isBlank(input) {
|
|
18
|
-
return !isNotBlank(input);
|
|
19
|
-
}
|
|
20
|
-
export function toNotBlank(input) {
|
|
21
|
-
return isNotBlank(input) ? input : undefined;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Decodes a string containing octal (\000-\377) and/or hexadecimal
|
|
25
|
-
* (\x00-\xFF) escape sequences
|
|
26
|
-
* @param input The string containing escape sequences to decode
|
|
27
|
-
* @returns The decoded string with escape sequences converted to their
|
|
28
|
-
* corresponding characters
|
|
29
|
-
* @throws Error if an invalid escape sequence is encountered
|
|
30
|
-
*/
|
|
31
|
-
export function decodeEscapeSequences(input) {
|
|
32
|
-
const escapeRegex = /\\(?:([0-7]{2,6})|x([0-9a-fA-F]{2,4}))/g;
|
|
33
|
-
return input.replace(escapeRegex, (match, octal, hex) => {
|
|
34
|
-
// Handle octal escape sequences
|
|
35
|
-
if (octal != null) {
|
|
36
|
-
return String.fromCharCode(parseInt(octal, 8));
|
|
37
|
-
}
|
|
38
|
-
// Handle hexadecimal escape sequences
|
|
39
|
-
if (hex != null) {
|
|
40
|
-
return String.fromCharCode(parseInt(hex, 16));
|
|
41
|
-
}
|
|
42
|
-
// This should never happen due to the regex pattern
|
|
43
|
-
throw new Error(`Invalid escape sequence: ${match}`);
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
const AlphaNumericRE = /[a-z0-9.-_]/i;
|
|
47
|
-
export function encodeEscapeSequences(input) {
|
|
48
|
-
return input
|
|
49
|
-
.split("")
|
|
50
|
-
.map((char) => {
|
|
51
|
-
const encodedChar = AlphaNumericRE.test(char)
|
|
52
|
-
? char
|
|
53
|
-
: "\\" + char.charCodeAt(0).toString(8).padStart(2, "0");
|
|
54
|
-
return encodedChar;
|
|
55
|
-
})
|
|
56
|
-
.join("");
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Sort an array of strings using the locale-aware collation algorithm.
|
|
60
|
-
*
|
|
61
|
-
* @param arr The array of strings to sort. The original array **is sorted in
|
|
62
|
-
* place**.
|
|
63
|
-
*/
|
|
64
|
-
export function sortByLocale(arr, locales, options) {
|
|
65
|
-
return arr.sort((a, b) => a.localeCompare(b, locales, options));
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Sort an array of objects using the locale-aware collation algorithm.
|
|
69
|
-
*
|
|
70
|
-
* @param arr The array of objects to sort.
|
|
71
|
-
* @param fn The function to extract the key to sort by from each object.
|
|
72
|
-
* @param locales The locales to use for sorting.
|
|
73
|
-
* @param options The collation options to use for sorting.
|
|
74
|
-
*/
|
|
75
|
-
export function sortObjectsByLocale(arr, fn, locales, options) {
|
|
76
|
-
return arr.sort((a, b) => fn(a).localeCompare(fn(b), locales, options));
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=string.js.map
|
package/dist/types/string.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/string.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAEhB,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,KAAc;IAChC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,MAAM,WAAW,GAAG,yCAAyC,CAAC;IAE9D,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACtD,gCAAgC;QAChC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,OAAO,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,sCAAsC;QACtC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,oDAAoD;QACpD,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,cAAc,GAAG,cAAc,CAAC;AAEtC,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,OAAO,KAAK;SACT,KAAK,CAAC,EAAE,CAAC;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3C,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3D,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAa,EACb,OAA8B,EAC9B,OAA8B;IAE9B,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAAQ,EACR,EAAsB,EACtB,OAA8B,EAC9B,OAA8B;IAE9B,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"string_enum.d.ts","sourceRoot":"","sources":["../../src/string_enum.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,IAAI;KAC5C,CAAC,IAAI,CAAC,GAAG,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG;IAC7D,MAAM,EAAE,CAAC,EAAE,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,IAAI,IAAI,IAAI,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEhF;;;;;;;;EAQE;AACF,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAerE"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
// src/string_enum.ts
|
|
2
|
-
/**
|
|
3
|
-
* Create a string enum with the given values.
|
|
4
|
-
|
|
5
|
-
Example usage:
|
|
6
|
-
|
|
7
|
-
export const Directions = stringEnum("North", "South", "East", "West")
|
|
8
|
-
export type Direction = StringEnumKeys<typeof Directions>
|
|
9
|
-
|
|
10
|
-
*/
|
|
11
|
-
export function stringEnum(...o) {
|
|
12
|
-
const set = new Set(o);
|
|
13
|
-
const dict = {};
|
|
14
|
-
for (const key of o) {
|
|
15
|
-
dict[key] = key;
|
|
16
|
-
}
|
|
17
|
-
return {
|
|
18
|
-
...dict,
|
|
19
|
-
values: Object.freeze([...set]),
|
|
20
|
-
size: set.size,
|
|
21
|
-
get: (s) => s != null && set.has(s) ? s : undefined,
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=string_enum.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"string_enum.js","sourceRoot":"","sources":["../../src/string_enum.ts"],"names":[],"mappings":"AAAA,qBAAqB;AAgBrB;;;;;;;;EAQE;AACF,MAAM,UAAU,UAAU,CAAmB,GAAG,CAAM;IACpD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IAEvB,MAAM,IAAI,GAAsB,EAAuB,CAAC;IACxD,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,CAAQ;QACtC,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,GAAG,EAAE,CAAC,CAAqB,EAAE,EAAE,CAC7B,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAM,CAAC,CAAC,CAAC,CAAE,CAAO,CAAC,CAAC,CAAC,SAAS;KACtD,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"system_volume.d.ts","sourceRoot":"","sources":["../../src/system_volume.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,OAAO,EAGR,MAAM,cAAc,CAAC;AAKtB;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,OAAO,EACP,oBAAoB,GAAG,eAAe,CACvC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,MAAM,GAAE,OAAO,CAAC,kBAAkB,CAAM,GACvC,OAAO,CAiBT;AACD,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,QAapC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
// src/system_volume.ts
|
|
2
|
-
import { debug } from "./debuglog.js";
|
|
3
|
-
import { compileGlob } from "./glob.js";
|
|
4
|
-
import { SystemFsTypesDefault, SystemPathPatternsDefault, } from "./options.js";
|
|
5
|
-
import { normalizePath } from "./path.js";
|
|
6
|
-
import { isWindows } from "./platform.js";
|
|
7
|
-
import { isNotBlank } from "./string.js";
|
|
8
|
-
/**
|
|
9
|
-
* Determines if a mount point represents a system volume based on its path and
|
|
10
|
-
* filesystem type
|
|
11
|
-
*/
|
|
12
|
-
export function isSystemVolume(mountPoint, fstype, config = {}) {
|
|
13
|
-
debug("[isSystemVolume] checking %s (fstype: %s)", mountPoint, fstype);
|
|
14
|
-
if (isWindows) {
|
|
15
|
-
const systemDrive = normalizePath(process.env["SystemDrive"]);
|
|
16
|
-
if (systemDrive != null && mountPoint === systemDrive) {
|
|
17
|
-
debug("[isSystemVolume] %s is the Windows system drive", mountPoint);
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
const result = (isNotBlank(fstype) &&
|
|
22
|
-
(config.systemFsTypes ?? SystemFsTypesDefault).has(fstype)) ||
|
|
23
|
-
compileGlob(config.systemPathPatterns ?? SystemPathPatternsDefault).test(mountPoint);
|
|
24
|
-
debug("[isSystemVolume] %s -> %s", mountPoint, result);
|
|
25
|
-
return result;
|
|
26
|
-
}
|
|
27
|
-
export function assignSystemVolume(mp, config) {
|
|
28
|
-
const result = isSystemVolume(mp.mountPoint, mp.fstype, config);
|
|
29
|
-
if (isWindows) {
|
|
30
|
-
// native code actually knows the system drive and has more in-depth
|
|
31
|
-
// metadata information that we trust more than these heuristics
|
|
32
|
-
mp.isSystemVolume ??= result;
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
// macOS and Linux don't have a concept of an explicit "system drive" like
|
|
36
|
-
// Windows--always trust our heuristics
|
|
37
|
-
mp.isSystemVolume = result;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=system_volume.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"system_volume.js","sourceRoot":"","sources":["../../src/system_volume.ts"],"names":[],"mappings":"AAAA,uBAAuB;AAEvB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAEL,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAYzC;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,UAAkB,EAClB,MAA0B,EAC1B,SAAsC,EAAE;IAExC,KAAK,CAAC,2CAA2C,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACvE,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QAC9D,IAAI,WAAW,IAAI,IAAI,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;YACtD,KAAK,CAAC,iDAAiD,EAAE,UAAU,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GACV,CAAC,UAAU,CAAC,MAAM,CAAC;QACjB,CAAC,MAAM,CAAC,aAAa,IAAI,oBAAoB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7D,WAAW,CAAC,MAAM,CAAC,kBAAkB,IAAI,yBAAyB,CAAC,CAAC,IAAI,CACtE,UAAU,CACX,CAAC;IACJ,KAAK,CAAC,2BAA2B,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,MAAM,UAAU,kBAAkB,CAChC,EAAc,EACd,MAAmC;IAEnC,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhE,IAAI,SAAS,EAAE,CAAC;QACd,oEAAoE;QACpE,gEAAgE;QAChE,EAAE,CAAC,cAAc,KAAK,MAAM,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,0EAA0E;QAC1E,uCAAuC;QACvC,EAAE,CAAC,cAAc,GAAG,MAAM,CAAC;IAC7B,CAAC;AACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"native_bindings.d.ts","sourceRoot":"","sources":["../../../src/types/native_bindings.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAExC;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAErC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzC;;;;;;;;OAQG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;OAGG;IACH,oBAAoB,CAClB,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,GACnC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAEzB;;OAEG;IACH,iBAAiB,CAAC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAE5C;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAC/E;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;AAExC,MAAM,MAAM,gBAAgB,GAAG,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"native_bindings.js","sourceRoot":"","sources":["../../../src/types/native_bindings.ts"],"names":[],"mappings":"AAAA,+BAA+B"}
|
package/dist/types/unc.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unc.d.ts","sourceRoot":"","sources":["../../src/unc.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC9B,UAAU,GAAG,SAAS,CA8CxB"}
|
package/dist/types/unc.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
// src/unc.ts
|
|
2
|
-
import { isBlank, isString } from "./string.js";
|
|
3
|
-
/**
|
|
4
|
-
* Checks if a string is formatted as a valid UNC path.
|
|
5
|
-
* A valid UNC path starts with double backslashes or slashes,
|
|
6
|
-
* followed by a server/host name, and then a share name.
|
|
7
|
-
* The path must use consistent slashes (all forward or all backward).
|
|
8
|
-
*
|
|
9
|
-
* @param path - The string to check
|
|
10
|
-
* @returns boolean - True if the string is a valid UNC path, false otherwise
|
|
11
|
-
*/
|
|
12
|
-
export function parseUNCPath(path) {
|
|
13
|
-
if (path == null || isBlank(path) || !isString(path)) {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
// Check for two forward slashes or two backslashes at start
|
|
17
|
-
if (!path.startsWith("\\\\") && !path.startsWith("//")) {
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
// Determine slash type from the start of the path
|
|
21
|
-
const isForwardSlash = path.startsWith("//");
|
|
22
|
-
const slashChar = isForwardSlash ? "/" : "\\";
|
|
23
|
-
// Split path using the correct slash type
|
|
24
|
-
const parts = path.slice(2).split(slashChar);
|
|
25
|
-
// Check minimum required parts (server and share)
|
|
26
|
-
if (parts.length < 2) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
// Validate server and share names exist and aren't empty
|
|
30
|
-
const [remoteHost, remoteShare] = parts;
|
|
31
|
-
if (remoteHost == null ||
|
|
32
|
-
isBlank(remoteHost) ||
|
|
33
|
-
remoteShare == null ||
|
|
34
|
-
isBlank(remoteShare)) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
// Check for invalid characters in server and share names
|
|
38
|
-
const invalidChars = /[<>:"|?*]/;
|
|
39
|
-
if (invalidChars.test(remoteHost) || invalidChars.test(remoteShare)) {
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
// Check for mixed slash usage
|
|
43
|
-
const wrongSlash = isForwardSlash ? "\\" : "/";
|
|
44
|
-
if (path.includes(wrongSlash)) {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
return { remoteHost, remoteShare, remote: true };
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=unc.js.map
|
package/dist/types/unc.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unc.js","sourceRoot":"","sources":["../../src/unc.ts"],"names":[],"mappings":"AAAA,aAAa;AAGb,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,IAA+B;IAE/B,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,OAAO;IACT,CAAC;IAED,4DAA4D;IAC5D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,OAAO;IACT,CAAC;IAED,kDAAkD;IAClD,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAE9C,0CAA0C;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAE7C,kDAAkD;IAClD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,yDAAyD;IACzD,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC;IACxC,IACE,UAAU,IAAI,IAAI;QAClB,OAAO,CAAC,UAAU,CAAC;QACnB,WAAW,IAAI,IAAI;QACnB,OAAO,CAAC,WAAW,CAAC,EACpB,CAAC;QACD,OAAO;IACT,CAAC;IAED,yDAAyD;IACzD,MAAM,YAAY,GAAG,WAAW,CAAC;IACjC,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACpE,OAAO;IACT,CAAC;IAED,8BAA8B;IAC9B,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACnD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"units.d.ts","sourceRoot":"","sources":["../../src/units.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,GAAG,OAAO,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,GAAG,QAAa,CAAC;AAE9B;;;GAGG;AACH,eAAO,MAAM,GAAG,QAAa,CAAC;AAE9B,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAU9C"}
|
package/dist/types/units.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
// src/units.ts
|
|
2
|
-
/**
|
|
3
|
-
* KiB = 1024 bytes
|
|
4
|
-
* @see https://en.wikipedia.org/wiki/Kibibyte
|
|
5
|
-
*/
|
|
6
|
-
export const KiB = 1024;
|
|
7
|
-
/**
|
|
8
|
-
* MiB = 1024 KiB
|
|
9
|
-
* @see https://en.wikipedia.org/wiki/Mebibyte
|
|
10
|
-
*/
|
|
11
|
-
export const MiB = 1024 * KiB;
|
|
12
|
-
/**
|
|
13
|
-
* GiB = 1024 MiB
|
|
14
|
-
* @see https://en.wikipedia.org/wiki/Gibibyte
|
|
15
|
-
*/
|
|
16
|
-
export const GiB = 1024 * MiB;
|
|
17
|
-
export function fmtBytes(bytes) {
|
|
18
|
-
if (bytes < KiB) {
|
|
19
|
-
return `${bytes} B`;
|
|
20
|
-
}
|
|
21
|
-
else if (bytes < MiB) {
|
|
22
|
-
return `${(bytes / KiB).toFixed(2)} KiB`;
|
|
23
|
-
}
|
|
24
|
-
else if (bytes < GiB) {
|
|
25
|
-
return `${(bytes / MiB).toFixed(2)} MiB`;
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
return `${(bytes / GiB).toFixed(2)} GiB`;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=units.js.map
|
package/dist/types/units.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"units.js","sourceRoot":"","sources":["../../src/units.ts"],"names":[],"mappings":"AAAA,eAAe;AAEf;;;GAGG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;AAE9B;;;GAGG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;AAE9B,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QAChB,OAAO,GAAG,KAAK,IAAI,CAAC;IACtB,CAAC;SAAM,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3C,CAAC;SAAM,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3C,CAAC;AACH,CAAC"}
|
package/dist/types/uuid.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../../src/uuid.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAExE"}
|
package/dist/types/uuid.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
// src/uuid.ts
|
|
2
|
-
import { toS } from "./string.js";
|
|
3
|
-
const uuidRegex = /[a-z0-9][a-z0-9-]{7,}/i;
|
|
4
|
-
/**
|
|
5
|
-
* Some volume UUIDs are short, like, `ABCD1234`.
|
|
6
|
-
*
|
|
7
|
-
* Some volume UUIDs are in hexadecimal, but others and use G-Z. We will allow
|
|
8
|
-
* that.
|
|
9
|
-
*
|
|
10
|
-
* Some Windows syscalls wrap the UUID in a "\\\\?\\Volume{...}\\" prefix and
|
|
11
|
-
* suffix. This function will strip out that prefix and suffix.
|
|
12
|
-
*
|
|
13
|
-
* We will ignore any UUID-ish string that is not at least 8 characters long
|
|
14
|
-
* (and return `undefined` if no other, longer uuid-ish string is found).
|
|
15
|
-
*
|
|
16
|
-
* UUIDs cannot start with a hyphen, and can only contain a-z, 0-9, and hyphens
|
|
17
|
-
* (case-insensitive).
|
|
18
|
-
*/
|
|
19
|
-
export function extractUUID(uuid) {
|
|
20
|
-
return toS(uuid).match(uuidRegex)?.[0];
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=uuid.js.map
|
package/dist/types/uuid.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uuid.js","sourceRoot":"","sources":["../../src/uuid.ts"],"names":[],"mappings":"AAAA,cAAc;AAEd,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,MAAM,SAAS,GAAG,wBAAwB,CAAC;AAE3C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,WAAW,CAAC,IAAwB;IAClD,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"volume_health_status.d.ts","sourceRoot":"","sources":["../../src/volume_health_status.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAc,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE9D;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,4GAMhC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE7E;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,cAAc,GAAE,OAAO,UAAuB,GAC7C,OAAO,CAAC;IAAE,MAAM,EAAE,kBAAkB,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,CAkBxD"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
// src/volume_health_status.ts
|
|
2
|
-
import { TimeoutError } from "./async.js";
|
|
3
|
-
import { debug } from "./debuglog.js";
|
|
4
|
-
import { toError } from "./error.js";
|
|
5
|
-
import { canReaddir } from "./fs.js";
|
|
6
|
-
import { isObject } from "./object.js";
|
|
7
|
-
import { stringEnum } from "./string_enum.js";
|
|
8
|
-
/**
|
|
9
|
-
* Health statuses for volumes (mostly applicable to Windows).
|
|
10
|
-
*
|
|
11
|
-
* - `healthy`: Volume is "OK": accessible and functioning normally
|
|
12
|
-
* - `timeout`: Volume could not be accessed before the specified timeout. It
|
|
13
|
-
* may be inaccessible or disconnected.
|
|
14
|
-
* - `inaccessible`: Volume exists but can't be accessed (permissions/locks)
|
|
15
|
-
* - `disconnected`: Network volume that's offline
|
|
16
|
-
* - `unknown`: Status can't be determined
|
|
17
|
-
*/
|
|
18
|
-
export const VolumeHealthStatuses = stringEnum("healthy", "timeout", "inaccessible", "disconnected", "unknown");
|
|
19
|
-
/**
|
|
20
|
-
* Attempt to read a directory to determine if it's accessible, and if an error
|
|
21
|
-
* is thrown, convert to a health status.
|
|
22
|
-
* @returns the "health status" of the directory, based on the success of `readdir(dir)`.
|
|
23
|
-
* @throws never
|
|
24
|
-
*/
|
|
25
|
-
export async function directoryStatus(dir, timeoutMs, canReaddirImpl = canReaddir) {
|
|
26
|
-
try {
|
|
27
|
-
if (await canReaddirImpl(dir, timeoutMs)) {
|
|
28
|
-
return { status: VolumeHealthStatuses.healthy };
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
debug("[directoryStatus] %s: %s", dir, error);
|
|
33
|
-
let status = VolumeHealthStatuses.unknown;
|
|
34
|
-
if (error instanceof TimeoutError) {
|
|
35
|
-
status = VolumeHealthStatuses.timeout;
|
|
36
|
-
}
|
|
37
|
-
else if (isObject(error) && error instanceof Error && "code" in error) {
|
|
38
|
-
if (error.code === "EPERM" || error.code === "EACCES") {
|
|
39
|
-
status = VolumeHealthStatuses.inaccessible;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return { status, error: toError(error) };
|
|
43
|
-
}
|
|
44
|
-
return { status: VolumeHealthStatuses.unknown };
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=volume_health_status.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"volume_health_status.js","sourceRoot":"","sources":["../../src/volume_health_status.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAE9B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAkB,MAAM,kBAAkB,CAAC;AAE9D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAC5C,SAAS,EACT,SAAS,EACT,cAAc,EACd,cAAc,EACd,SAAS,CACV,CAAC;AAIF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAW,EACX,SAAiB,EACjB,iBAAoC,UAAU;IAE9C,IAAI,CAAC;QACH,IAAI,MAAM,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,OAAO,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,0BAA0B,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9C,IAAI,MAAM,GAAuB,oBAAoB,CAAC,OAAO,CAAC;QAC9D,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;YAClC,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC;QACxC,CAAC;aAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;YACxE,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtD,MAAM,GAAG,oBAAoB,CAAC,YAAY,CAAC;YAC7C,CAAC;QACH,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;IAC3C,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,OAAO,EAAE,CAAC;AAClD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"volume_metadata.d.ts","sourceRoot":"","sources":["../../src/volume_metadata.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAwB,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EAEL,OAAO,EAER,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,UAAU,EAGX,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EACV,wBAAwB,EACxB,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAQpC;;;;GAIG;AACH,MAAM,WAAW,cAAe,SAAQ,UAAU,EAAE,UAAU;IAC5D;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,iBAAiB,CACrC,CAAC,EAAE,wBAAwB,GAAG,OAAO,EACrC,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,cAAc,CAAC,CAgBzB;AA2GD,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,EACD,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,cAAc,EAAE,CAAC,CAwE3B;AAED,eAAO,MAAM,CAAC,WAAY,CAAC"}
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
// src/volume_metadata.ts
|
|
2
|
-
import { mapConcurrent, withTimeout } from "./async.js";
|
|
3
|
-
import { debug } from "./debuglog.js";
|
|
4
|
-
import { WrappedError } from "./error.js";
|
|
5
|
-
import { getLabelFromDevDisk, getUuidFromDevDisk } from "./linux/dev_disk.js";
|
|
6
|
-
import { getLinuxMtabMetadata } from "./linux/mount_points.js";
|
|
7
|
-
import { mountEntryToPartialVolumeMetadata, } from "./linux/mtab.js";
|
|
8
|
-
import { getVolumeMountPoints } from "./mount_point.js";
|
|
9
|
-
import { compactValues } from "./object.js";
|
|
10
|
-
import { IncludeSystemVolumesDefault, optionsWithDefaults, } from "./options.js";
|
|
11
|
-
import { normalizePath } from "./path.js";
|
|
12
|
-
import { isLinux, isWindows } from "./platform.js";
|
|
13
|
-
import { extractRemoteInfo, isRemoteFsType, } from "./remote_info.js";
|
|
14
|
-
import { isBlank, isNotBlank } from "./string.js";
|
|
15
|
-
import { assignSystemVolume } from "./system_volume.js";
|
|
16
|
-
import { parseUNCPath } from "./unc.js";
|
|
17
|
-
import { extractUUID } from "./uuid.js";
|
|
18
|
-
import { VolumeHealthStatuses, directoryStatus, } from "./volume_health_status.js";
|
|
19
|
-
export async function getVolumeMetadata(o, nativeFn) {
|
|
20
|
-
if (isBlank(o.mountPoint)) {
|
|
21
|
-
throw new TypeError("Invalid mountPoint: got " + JSON.stringify(o.mountPoint));
|
|
22
|
-
}
|
|
23
|
-
const p = _getVolumeMetadata(o, nativeFn);
|
|
24
|
-
// we rely on the native bindings on Windows to do proper timeouts
|
|
25
|
-
return isWindows
|
|
26
|
-
? p
|
|
27
|
-
: withTimeout({
|
|
28
|
-
desc: "getVolumeMetadata()",
|
|
29
|
-
timeoutMs: o.timeoutMs,
|
|
30
|
-
promise: p,
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
async function _getVolumeMetadata(o, nativeFn) {
|
|
34
|
-
o = optionsWithDefaults(o);
|
|
35
|
-
const norm = normalizePath(o.mountPoint);
|
|
36
|
-
if (norm == null) {
|
|
37
|
-
throw new Error("Invalid mountPoint: " + JSON.stringify(o.mountPoint));
|
|
38
|
-
}
|
|
39
|
-
o.mountPoint = norm;
|
|
40
|
-
debug("[getVolumeMetadata] starting metadata collection for %s", o.mountPoint);
|
|
41
|
-
debug("[getVolumeMetadata] options: %o", o);
|
|
42
|
-
const { status, error } = await directoryStatus(o.mountPoint, o.timeoutMs);
|
|
43
|
-
if (status !== VolumeHealthStatuses.healthy) {
|
|
44
|
-
debug("[getVolumeMetadata] directoryStatus error: %s", error);
|
|
45
|
-
throw error ?? new Error("Volume not healthy: " + status);
|
|
46
|
-
}
|
|
47
|
-
debug("[getVolumeMetadata] readdir status: %s", status);
|
|
48
|
-
let remote = false;
|
|
49
|
-
// Get filesystem info from mtab first on Linux
|
|
50
|
-
let mtabInfo;
|
|
51
|
-
let device;
|
|
52
|
-
if (isLinux) {
|
|
53
|
-
debug("[getVolumeMetadata] collecting Linux mtab info");
|
|
54
|
-
try {
|
|
55
|
-
const m = await getLinuxMtabMetadata(o.mountPoint, o);
|
|
56
|
-
mtabInfo = mountEntryToPartialVolumeMetadata(m, o);
|
|
57
|
-
debug("[getVolumeMetadata] mtab info: %o", mtabInfo);
|
|
58
|
-
if (mtabInfo.remote) {
|
|
59
|
-
remote = true;
|
|
60
|
-
}
|
|
61
|
-
if (isNotBlank(m.fs_spec)) {
|
|
62
|
-
device = m.fs_spec;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
catch (err) {
|
|
66
|
-
debug("[getVolumeMetadata] failed to get mtab info: " + err);
|
|
67
|
-
// this may be a GIO mount. Ignore the error and continue.
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
if (isNotBlank(device)) {
|
|
71
|
-
o.device = device;
|
|
72
|
-
debug("[getVolumeMetadata] using device: %s", device);
|
|
73
|
-
}
|
|
74
|
-
debug("[getVolumeMetadata] requesting native metadata");
|
|
75
|
-
const metadata = (await (await nativeFn()).getVolumeMetadata(o));
|
|
76
|
-
debug("[getVolumeMetadata] native metadata: %o", metadata);
|
|
77
|
-
// Some OS implementations leave it up to us to extract remote info:
|
|
78
|
-
const remoteInfo = mtabInfo ??
|
|
79
|
-
extractRemoteInfo(metadata.uri) ??
|
|
80
|
-
extractRemoteInfo(metadata.mountFrom) ??
|
|
81
|
-
(isWindows ? parseUNCPath(o.mountPoint) : undefined);
|
|
82
|
-
debug("[getVolumeMetadata] extracted remote info: %o", remoteInfo);
|
|
83
|
-
remote ||=
|
|
84
|
-
isRemoteFsType(metadata.fstype) ||
|
|
85
|
-
(remoteInfo?.remote ?? metadata.remote ?? false);
|
|
86
|
-
debug("[getVolumeMetadata] assembling: %o", {
|
|
87
|
-
status,
|
|
88
|
-
mtabInfo,
|
|
89
|
-
remoteInfo,
|
|
90
|
-
metadata,
|
|
91
|
-
mountPoint: o.mountPoint,
|
|
92
|
-
remote,
|
|
93
|
-
});
|
|
94
|
-
const result = compactValues({
|
|
95
|
-
status, // < let the implementation's status win by having this first
|
|
96
|
-
...compactValues(remoteInfo),
|
|
97
|
-
...compactValues(metadata),
|
|
98
|
-
...compactValues(mtabInfo),
|
|
99
|
-
mountPoint: o.mountPoint,
|
|
100
|
-
remote,
|
|
101
|
-
});
|
|
102
|
-
// Backfill if blkid or gio failed us:
|
|
103
|
-
if (isLinux && isNotBlank(device)) {
|
|
104
|
-
// Sometimes blkid doesn't have the UUID in cache. Try to get it from
|
|
105
|
-
// /dev/disk/by-uuid:
|
|
106
|
-
result.uuid ??= (await getUuidFromDevDisk(device)) ?? "";
|
|
107
|
-
result.label ??= (await getLabelFromDevDisk(device)) ?? "";
|
|
108
|
-
}
|
|
109
|
-
assignSystemVolume(result, o);
|
|
110
|
-
// Fix microsoft's UUID format:
|
|
111
|
-
result.uuid = extractUUID(result.uuid) ?? result.uuid ?? "";
|
|
112
|
-
debug("[getVolumeMetadata] final result for %s: %o", o.mountPoint, result);
|
|
113
|
-
return compactValues(result);
|
|
114
|
-
}
|
|
115
|
-
export async function getAllVolumeMetadata(opts, nativeFn) {
|
|
116
|
-
const o = optionsWithDefaults(opts);
|
|
117
|
-
debug("[getAllVolumeMetadata] starting with options: %o", o);
|
|
118
|
-
const arr = await getVolumeMountPoints(o, nativeFn);
|
|
119
|
-
debug("[getAllVolumeMetadata] found %d mount points", arr.length);
|
|
120
|
-
const unhealthyMountPoints = arr
|
|
121
|
-
.filter((ea) => ea.status != null && ea.status !== VolumeHealthStatuses.healthy)
|
|
122
|
-
.map((ea) => ({
|
|
123
|
-
mountPoint: ea.mountPoint,
|
|
124
|
-
error: new WrappedError("volume not healthy: " + ea.status, {
|
|
125
|
-
name: "Skipped",
|
|
126
|
-
}),
|
|
127
|
-
}));
|
|
128
|
-
const includeSystemVolumes = opts?.includeSystemVolumes ?? IncludeSystemVolumesDefault;
|
|
129
|
-
const systemMountPoints = includeSystemVolumes
|
|
130
|
-
? []
|
|
131
|
-
: arr
|
|
132
|
-
.filter((ea) => ea.isSystemVolume)
|
|
133
|
-
.map((ea) => ({
|
|
134
|
-
mountPoint: ea.mountPoint,
|
|
135
|
-
error: new WrappedError("system volume", { name: "Skipped" }),
|
|
136
|
-
}));
|
|
137
|
-
const healthy = arr.filter((ea) => ea.status == null || ea.status === VolumeHealthStatuses.healthy);
|
|
138
|
-
debug("[getAllVolumeMetadata] ", {
|
|
139
|
-
allMountPoints: arr.map((ea) => ea.mountPoint),
|
|
140
|
-
healthyMountPoints: healthy.map((ea) => ea.mountPoint),
|
|
141
|
-
});
|
|
142
|
-
debug("[getAllVolumeMetadata] processing %d healthy volumes with max concurrency %d", healthy.length, o.maxConcurrency);
|
|
143
|
-
const results = await mapConcurrent({
|
|
144
|
-
maxConcurrency: o.maxConcurrency,
|
|
145
|
-
items: (opts?.includeSystemVolumes ?? IncludeSystemVolumesDefault)
|
|
146
|
-
? healthy
|
|
147
|
-
: healthy.filter((ea) => !ea.isSystemVolume),
|
|
148
|
-
fn: async (mp) => getVolumeMetadata({ ...mp, ...o }, nativeFn).catch((error) => ({
|
|
149
|
-
mountPoint: mp.mountPoint,
|
|
150
|
-
error,
|
|
151
|
-
})),
|
|
152
|
-
});
|
|
153
|
-
debug("[getAllVolumeMetadata] completed processing all volumes");
|
|
154
|
-
return arr.map((result) => (results.find((ea) => ea.mountPoint === result.mountPoint) ??
|
|
155
|
-
unhealthyMountPoints.find((ea) => ea.mountPoint === result.mountPoint) ??
|
|
156
|
-
systemMountPoints.find((ea) => ea.mountPoint === result.mountPoint) ?? {
|
|
157
|
-
...result,
|
|
158
|
-
error: new WrappedError("Mount point metadata not retrieved", {
|
|
159
|
-
name: "NotApplicableError",
|
|
160
|
-
}),
|
|
161
|
-
}));
|
|
162
|
-
}
|
|
163
|
-
export const _ = undefined;
|
|
164
|
-
//# sourceMappingURL=volume_metadata.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"volume_metadata.js","sourceRoot":"","sources":["../../src/volume_metadata.ts"],"names":[],"mappings":"AAAA,yBAAyB;AAEzB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAEL,iCAAiC,GAClC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAc,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,2BAA2B,EAE3B,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAEL,iBAAiB,EACjB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAKxD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EACL,oBAAoB,EACpB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AAkDnC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,CAAqC,EACrC,QAA0B;IAE1B,IAAI,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,SAAS,CACjB,0BAA0B,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAC1D,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1C,kEAAkE;IAClE,OAAO,SAAS;QACd,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,WAAW,CAAC;YACV,IAAI,EAAE,qBAAqB;YAC3B,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;AACT,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,CAAqC,EACrC,QAA0B;IAE1B,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACzC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IACzE,CAAC;IACD,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;IAEpB,KAAK,CACH,yDAAyD,EACzD,CAAC,CAAC,UAAU,CACb,CAAC;IACF,KAAK,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;IAE5C,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,eAAe,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3E,IAAI,MAAM,KAAK,oBAAoB,CAAC,OAAO,EAAE,CAAC;QAC5C,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;QAC9D,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAC;IAExD,IAAI,MAAM,GAAY,KAAK,CAAC;IAC5B,+CAA+C;IAC/C,IAAI,QAAwC,CAAC;IAC7C,IAAI,MAA0B,CAAC;IAC/B,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACxD,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,oBAAoB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACtD,QAAQ,GAAG,iCAAiC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnD,KAAK,CAAC,mCAAmC,EAAE,QAAQ,CAAC,CAAC;YACrD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;YACD,IAAI,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1B,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;YACrB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,+CAA+C,GAAG,GAAG,CAAC,CAAC;YAC7D,0DAA0D;QAC5D,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;QAClB,KAAK,CAAC,sCAAsC,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,CAAC,MAAM,CACtB,MAAM,QAAQ,EAAE,CACjB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAmB,CAAC;IAC1C,KAAK,CAAC,yCAAyC,EAAE,QAAQ,CAAC,CAAC;IAE3D,oEAAoE;IACpE,MAAM,UAAU,GACd,QAAQ;QACR,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC/B,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC;QACrC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEvD,KAAK,CAAC,+CAA+C,EAAE,UAAU,CAAC,CAAC;IAEnE,MAAM;QACJ,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC/B,CAAC,UAAU,EAAE,MAAM,IAAI,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;IAEnD,KAAK,CAAC,oCAAoC,EAAE;QAC1C,MAAM;QACN,QAAQ;QACR,UAAU;QACV,QAAQ;QACR,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,MAAM;KACP,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,aAAa,CAAC;QAC3B,MAAM,EAAE,6DAA6D;QACrE,GAAG,aAAa,CAAC,UAAU,CAAC;QAC5B,GAAG,aAAa,CAAC,QAAQ,CAAC;QAC1B,GAAG,aAAa,CAAC,QAAQ,CAAC;QAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,MAAM;KACP,CAAmB,CAAC;IAErB,sCAAsC;IACtC,IAAI,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,qEAAqE;QACrE,qBAAqB;QACrB,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACzD,MAAM,CAAC,KAAK,KAAK,CAAC,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7D,CAAC;IAED,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAE9B,+BAA+B;IAC/B,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAE5D,KAAK,CAAC,6CAA6C,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC3E,OAAO,aAAa,CAAC,MAAM,CAAmB,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAGC,EACD,QAA0B;IAE1B,MAAM,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACpC,KAAK,CAAC,kDAAkD,EAAE,CAAC,CAAC,CAAC;IAE7D,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpD,KAAK,CAAC,8CAA8C,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAElE,MAAM,oBAAoB,GAAG,GAAG;SAC7B,MAAM,CACL,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC,MAAM,KAAK,oBAAoB,CAAC,OAAO,CACxE;SACA,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACZ,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,KAAK,EAAE,IAAI,YAAY,CAAC,sBAAsB,GAAG,EAAE,CAAC,MAAM,EAAE;YAC1D,IAAI,EAAE,SAAS;SAChB,CAAC;KACH,CAAC,CAAC,CAAC;IAEN,MAAM,oBAAoB,GACxB,IAAI,EAAE,oBAAoB,IAAI,2BAA2B,CAAC;IAE5D,MAAM,iBAAiB,GAAG,oBAAoB;QAC5C,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,GAAG;aACA,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC;aACjC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACZ,UAAU,EAAE,EAAE,CAAC,UAAU;YACzB,KAAK,EAAE,IAAI,YAAY,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;SAC9D,CAAC,CAAC,CAAC;IAEV,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CACxB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC,MAAM,KAAK,oBAAoB,CAAC,OAAO,CACxE,CAAC;IAEF,KAAK,CAAC,yBAAyB,EAAE;QAC/B,cAAc,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC;QAC9C,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC;KACvD,CAAC,CAAC;IAEH,KAAK,CACH,8EAA8E,EAC9E,OAAO,CAAC,MAAM,EACd,CAAC,CAAC,cAAc,CACjB,CAAC;IAEF,MAAM,OAAO,GAAG,MAAO,aAAa,CAAC;QACnC,cAAc,EAAE,CAAC,CAAC,cAAc;QAChC,KAAK,EACH,CAAC,IAAI,EAAE,oBAAoB,IAAI,2BAA2B,CAAC;YACzD,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC;QAChD,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CACf,iBAAiB,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC7D,UAAU,EAAE,EAAE,CAAC,UAAU;YACzB,KAAK;SACN,CAAC,CAAC;KACN,CAAwE,CAAC;IAE1E,KAAK,CAAC,yDAAyD,CAAC,CAAC;IACjE,OAAO,GAAG,CAAC,GAAG,CACZ,CAAC,MAAM,EAAE,EAAE,CACT,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,CAAC;QACxD,oBAAoB,CAAC,IAAI,CACvB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,CAC5C;QACD,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,CAAC,IAAI;QACrE,GAAG,MAAM;QACT,KAAK,EAAE,IAAI,YAAY,CAAC,oCAAoC,EAAE;YAC5D,IAAI,EAAE,oBAAoB;SAC3B,CAAC;KACH,CAAmB,CACzB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC"}
|
package/scripts/fix-cjs.mjs
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { readFile, readdir, unlink, writeFile } from "node:fs/promises";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
|
|
4
|
-
async function fixCjsFiles(dir) {
|
|
5
|
-
const files = await readdir(dir, { withFileTypes: true });
|
|
6
|
-
|
|
7
|
-
for (const file of files) {
|
|
8
|
-
const fullPath = join(dir, file.name);
|
|
9
|
-
|
|
10
|
-
if (file.isDirectory()) {
|
|
11
|
-
await fixCjsFiles(fullPath);
|
|
12
|
-
continue;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
// First read and fix content
|
|
16
|
-
if (file.name.endsWith(".js") || file.name.endsWith(".cjs")) {
|
|
17
|
-
const content = await readFile(fullPath, "utf8");
|
|
18
|
-
const fixedContent = content.replace(
|
|
19
|
-
/require\("(.+?)\.js"\)/gm,
|
|
20
|
-
'require("$1.cjs")',
|
|
21
|
-
);
|
|
22
|
-
|
|
23
|
-
// Write fixed content to .cjs file
|
|
24
|
-
const newPath = fullPath.replace(/\.js$/, ".cjs");
|
|
25
|
-
await writeFile(newPath, fixedContent);
|
|
26
|
-
|
|
27
|
-
// Remove old .js file if it exists
|
|
28
|
-
if (newPath !== fullPath) {
|
|
29
|
-
await unlink(fullPath);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
await fixCjsFiles("./dist/cjs");
|