exiftool-vendored 28.8.0 → 29.1.0
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/CHANGELOG.md +40 -4
- package/README.md +22 -22
- package/SECURITY.md +1 -2
- package/dist/Array.d.ts +4 -4
- package/dist/Array.js +8 -10
- package/dist/Array.js.map +1 -1
- package/dist/AsyncRetry.js.map +1 -1
- package/dist/BinaryExtractionTask.d.ts +4 -2
- package/dist/BinaryExtractionTask.js +8 -5
- package/dist/BinaryExtractionTask.js.map +1 -1
- package/dist/BinaryField.js +2 -0
- package/dist/BinaryField.js.map +1 -1
- package/dist/BinaryToBufferTask.js +5 -5
- package/dist/BinaryToBufferTask.js.map +1 -1
- package/dist/Boolean.d.ts +1 -1
- package/dist/Boolean.js.map +1 -1
- package/dist/CapturedAtTagNames.js.map +1 -1
- package/dist/CoordinateParser.d.ts +59 -0
- package/dist/CoordinateParser.js +286 -0
- package/dist/CoordinateParser.js.map +1 -0
- package/dist/DateTime.d.ts +1 -1
- package/dist/DateTime.js +4 -5
- package/dist/DateTime.js.map +1 -1
- package/dist/DefaultCreateDateTagNames.js.map +1 -1
- package/dist/DefaultExifToolOptions.js +20 -7
- package/dist/DefaultExifToolOptions.js.map +1 -1
- package/dist/DefaultExiftoolArgs.js.map +1 -1
- package/dist/DefaultMaxProcs.js +17 -7
- package/dist/DefaultMaxProcs.js.map +1 -1
- package/dist/DeleteAllTagsArgs.js.map +1 -1
- package/dist/ErrorsAndWarnings.d.ts +5 -1
- package/dist/ErrorsAndWarnings.js +11 -2
- package/dist/ErrorsAndWarnings.js.map +1 -1
- package/dist/ExifDate.js +7 -2
- package/dist/ExifDate.js.map +1 -1
- package/dist/ExifDateTime.d.ts +2 -2
- package/dist/ExifDateTime.js +63 -67
- package/dist/ExifDateTime.js.map +1 -1
- package/dist/ExifTime.js +19 -26
- package/dist/ExifTime.js.map +1 -1
- package/dist/ExifTool.d.ts +28 -24
- package/dist/ExifTool.js +97 -81
- package/dist/ExifTool.js.map +1 -1
- package/dist/ExifToolOptions.d.ts +8 -0
- package/dist/ExifToolOptions.js.map +1 -1
- package/dist/ExifToolTags.js +0 -1
- package/dist/ExifToolTags.js.map +1 -1
- package/dist/ExifToolTask.js +38 -33
- package/dist/ExifToolTask.js.map +1 -1
- package/dist/ExifToolVendoredTags.js.map +1 -1
- package/dist/ExiftoolPath.js +27 -12
- package/dist/ExiftoolPath.js.map +1 -1
- package/dist/File.d.ts +2 -0
- package/dist/File.js +16 -1
- package/dist/File.js.map +1 -1
- package/dist/FileTags.d.ts +3 -2
- package/dist/FileTags.js +3 -2
- package/dist/FileTags.js.map +1 -1
- package/dist/FilenameCharsetArgs.js.map +1 -1
- package/dist/FirstDateTime.js +1 -1
- package/dist/FirstDateTime.js.map +1 -1
- package/dist/GPS.d.ts +18 -0
- package/dist/GPS.js +116 -0
- package/dist/GPS.js.map +1 -0
- package/dist/GeoTz.js.map +1 -1
- package/dist/GeolocationTags.d.ts +1 -1
- package/dist/GeolocationTags.js +16 -14
- package/dist/GeolocationTags.js.map +1 -1
- package/dist/IsWarning.js.map +1 -1
- package/dist/IsWin32.js +17 -7
- package/dist/IsWin32.js.map +1 -1
- package/dist/JSON.js +4 -1
- package/dist/JSON.js.map +1 -1
- package/dist/Lazy.js +2 -1
- package/dist/Lazy.js.map +1 -1
- package/dist/Maybe.js.map +1 -1
- package/dist/Number.d.ts +18 -3
- package/dist/Number.js +36 -1
- package/dist/Number.js.map +1 -1
- package/dist/Object.d.ts +4 -4
- package/dist/Object.js +8 -8
- package/dist/Object.js.map +1 -1
- package/dist/OnlyZerosRE.js.map +1 -1
- package/dist/Pick.js.map +1 -1
- package/dist/ReadRawTask.js +20 -8
- package/dist/ReadRawTask.js.map +1 -1
- package/dist/ReadTask.d.ts +1 -1
- package/dist/ReadTask.js +233 -264
- package/dist/ReadTask.js.map +1 -1
- package/dist/ResourceEvent.d.ts +1 -1
- package/dist/ResourceEvent.js +1 -1
- package/dist/ResourceEvent.js.map +1 -1
- package/dist/RewriteAllTagsTask.js +19 -9
- package/dist/RewriteAllTagsTask.js.map +1 -1
- package/dist/Sidecars.js.map +1 -1
- package/dist/String.d.ts +8 -4
- package/dist/String.js +7 -3
- package/dist/String.js.map +1 -1
- package/dist/Struct.d.ts +1 -1
- package/dist/Struct.js +1 -2
- package/dist/Struct.js.map +1 -1
- package/dist/Tags.d.ts +154 -152
- package/dist/TimeParsing.js +6 -8
- package/dist/TimeParsing.js.map +1 -1
- package/dist/Times.d.ts +6 -0
- package/dist/Times.js +7 -3
- package/dist/Times.js.map +1 -1
- package/dist/Timezones.d.ts +5 -4
- package/dist/Timezones.js +71 -41
- package/dist/Timezones.js.map +1 -1
- package/dist/Version.d.ts +1 -1
- package/dist/Version.js +1 -1
- package/dist/Version.js.map +1 -1
- package/dist/VersionTask.js +1 -1
- package/dist/VersionTask.js.map +1 -1
- package/dist/Which.js.map +1 -1
- package/dist/WriteTags.d.ts +6 -1
- package/dist/WriteTask.js +71 -25
- package/dist/WriteTask.js.map +1 -1
- package/eslint.config.mjs +34 -0
- package/package.json +21 -19
package/dist/File.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isPlatformCaseSensitive = void 0;
|
|
3
4
|
exports.isFileEmpty = isFileEmpty;
|
|
5
|
+
exports.compareFilePaths = compareFilePaths;
|
|
4
6
|
const node_fs_1 = require("node:fs");
|
|
7
|
+
const node_path_1 = require("node:path");
|
|
8
|
+
const Lazy_1 = require("./Lazy");
|
|
5
9
|
const String_1 = require("./String");
|
|
6
10
|
async function isFileEmpty(path) {
|
|
7
11
|
if ((0, String_1.blank)(path)) {
|
|
@@ -20,10 +24,21 @@ async function isFileEmpty(path) {
|
|
|
20
24
|
return s == null || s.size === 0;
|
|
21
25
|
}
|
|
22
26
|
catch (err) {
|
|
23
|
-
if (err
|
|
27
|
+
if (err &&
|
|
28
|
+
typeof err === "object" &&
|
|
29
|
+
"code" in err &&
|
|
30
|
+
err.code === "ENOENT")
|
|
24
31
|
return true;
|
|
25
32
|
else
|
|
26
33
|
throw err;
|
|
27
34
|
}
|
|
28
35
|
}
|
|
36
|
+
exports.isPlatformCaseSensitive = (0, Lazy_1.lazy)(() => process.platform !== "win32" && process.platform !== "darwin");
|
|
37
|
+
function compareFilePaths(a, b) {
|
|
38
|
+
const aNorm = (0, node_path_1.normalize)(a);
|
|
39
|
+
const bNorm = (0, node_path_1.normalize)(b);
|
|
40
|
+
return (0, exports.isPlatformCaseSensitive)()
|
|
41
|
+
? aNorm === bNorm
|
|
42
|
+
: aNorm.localeCompare(bNorm, undefined, { sensitivity: "base" }) === 0;
|
|
43
|
+
}
|
|
29
44
|
//# sourceMappingURL=File.js.map
|
package/dist/File.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"File.js","sourceRoot":"","sources":["../src/File.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"File.js","sourceRoot":"","sources":["../src/File.ts"],"names":[],"mappings":";;;AAKA,kCAyBC;AAMD,4CAMC;AA1CD,qCAAsC;AACtC,yCAAsC;AACtC,iCAA8B;AAC9B,qCAAiC;AAE1B,KAAK,UAAU,WAAW,CAAC,IAAY;IAC5C,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,2EAA2E;IAC3E,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,IAAI,OAAO,CAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC9C,IAAI,CAAC;gBACH,IAAA,cAAI,EAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,GAAG,CAAC,CAAC;YACX,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IACE,GAAG;YACH,OAAO,GAAG,KAAK,QAAQ;YACvB,MAAM,IAAI,GAAG;YACb,GAAG,CAAC,IAAI,KAAK,QAAQ;YAErB,OAAO,IAAI,CAAC;;YACT,MAAM,GAAG,CAAC;IACjB,CAAC;AACH,CAAC;AAEY,QAAA,uBAAuB,GAAG,IAAA,WAAI,EACzC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,CACpE,CAAC;AAEF,SAAgB,gBAAgB,CAAC,CAAS,EAAE,CAAS;IACnD,MAAM,KAAK,GAAG,IAAA,qBAAS,EAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAA,qBAAS,EAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,IAAA,+BAAuB,GAAE;QAC9B,CAAC,CAAC,KAAK,KAAK,KAAK;QACjB,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC"}
|
package/dist/FileTags.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FileTags } from "./Tags";
|
|
2
2
|
/**
|
|
3
|
-
* Is the given tag name intrinsic to the content of a given file?
|
|
4
|
-
*
|
|
3
|
+
* Is the given tag name intrinsic to the content of a given file?
|
|
4
|
+
*
|
|
5
|
+
* In other words, is it not an artifact of a metadata field?
|
|
5
6
|
*/
|
|
6
7
|
export declare function isFileTag(name: string): name is keyof FileTags;
|
package/dist/FileTags.js
CHANGED
|
@@ -31,8 +31,9 @@ const FileTagNames = (0, Object_1.keysOf)({
|
|
|
31
31
|
YCbCrSubSampling: true,
|
|
32
32
|
});
|
|
33
33
|
/**
|
|
34
|
-
* Is the given tag name intrinsic to the content of a given file?
|
|
35
|
-
*
|
|
34
|
+
* Is the given tag name intrinsic to the content of a given file?
|
|
35
|
+
*
|
|
36
|
+
* In other words, is it not an artifact of a metadata field?
|
|
36
37
|
*/
|
|
37
38
|
function isFileTag(name) {
|
|
38
39
|
return FileTagNames.includes(name);
|
package/dist/FileTags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileTags.js","sourceRoot":"","sources":["../src/FileTags.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"FileTags.js","sourceRoot":"","sources":["../src/FileTags.ts"],"names":[],"mappings":";;AAqCA,8BAEC;AAvCD,qCAAkC;AAGlC,MAAM,YAAY,GAAG,IAAA,eAAM,EAAW;IACpC,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,IAAI;IACvB,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,IAAI;IACrB,aAAa,EAAE,IAAI;IACnB,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,IAAI;IACpB,mBAAmB,EAAE,IAAI;IACzB,cAAc,EAAE,IAAI;IACpB,QAAQ,EAAE,IAAI;IACd,eAAe,EAAE,IAAI;IACrB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,IAAI;IAClB,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,kBAAkB,EAAE,IAAI;IACxB,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,MAAM,EAAE,IAAI;IACZ,gBAAgB,EAAE,IAAI;CACvB,CAAC,CAAC;AAEH;;;;GAIG;AACH,SAAgB,SAAS,CAAC,IAAY;IACpC,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAsB,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilenameCharsetArgs.js","sourceRoot":"","sources":["../src/FilenameCharsetArgs.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"FilenameCharsetArgs.js","sourceRoot":"","sources":["../src/FilenameCharsetArgs.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AAEpC;;;;;;;;;;;;;;GAcG;AACU,QAAA,uBAAuB,GAAG,IAAA,iBAAO,GAAE;IAC9C,CAAC,CAAC,CAAC,UAAU,EAAE,eAAe,CAAC;IAC/B,CAAC,CAAC,EAAE,CAAC"}
|
package/dist/FirstDateTime.js
CHANGED
|
@@ -10,7 +10,7 @@ const String_1 = require("./String");
|
|
|
10
10
|
*/
|
|
11
11
|
function firstDateTime(tags, dateTimeTags = CapturedAtTagNames_1.CapturedAtTagNames) {
|
|
12
12
|
for (const tag of dateTimeTags) {
|
|
13
|
-
const dt = tags
|
|
13
|
+
const dt = tags?.[tag];
|
|
14
14
|
if (dt instanceof ExifDateTime_1.ExifDateTime) {
|
|
15
15
|
return dt;
|
|
16
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FirstDateTime.js","sourceRoot":"","sources":["../src/FirstDateTime.ts"],"names":[],"mappings":";;AAWA,sCAgBC;AA3BD,
|
|
1
|
+
{"version":3,"file":"FirstDateTime.js","sourceRoot":"","sources":["../src/FirstDateTime.ts"],"names":[],"mappings":";;AAWA,sCAgBC;AA3BD,6DAA0D;AAC1D,iDAA8C;AAG9C,qCAAoC;AAGpC;;;GAGG;AACH,SAAgB,aAAa,CAC3B,IAAiB,EACjB,eAA8C,uCAAkB;IAEhE,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,EAAE,YAAY,2BAAY,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC;QACZ,CAAC;aAAM,IAAI,IAAA,iBAAQ,EAAC,EAAE,CAAC,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,2BAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;gBAChB,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO;AACT,CAAC"}
|
package/dist/GPS.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ExifToolOptions } from "./ExifToolOptions";
|
|
2
|
+
import { Maybe } from "./Maybe";
|
|
3
|
+
export type GpsLocationTags = {
|
|
4
|
+
GPSLatitude?: number;
|
|
5
|
+
GPSLatitudeRef?: string;
|
|
6
|
+
GPSLongitude?: number;
|
|
7
|
+
GPSLongitudeRef?: string;
|
|
8
|
+
GPSPosition?: string;
|
|
9
|
+
GeolocationPosition?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare const GpsLocationTagNames: (keyof GpsLocationTags)[];
|
|
12
|
+
export interface GpsParseResult {
|
|
13
|
+
result: GpsLocationTags;
|
|
14
|
+
details: string;
|
|
15
|
+
invalid: boolean;
|
|
16
|
+
warnings: string[];
|
|
17
|
+
}
|
|
18
|
+
export declare function parseGPSLocation(tags: GpsLocationTags, opts: Pick<ExifToolOptions, "ignoreZeroZeroLatLon">): Maybe<Partial<GpsParseResult>>;
|
package/dist/GPS.js
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GpsLocationTagNames = void 0;
|
|
4
|
+
exports.parseGPSLocation = parseGPSLocation;
|
|
5
|
+
const CoordinateParser_1 = require("./CoordinateParser");
|
|
6
|
+
const Lazy_1 = require("./Lazy");
|
|
7
|
+
const Number_1 = require("./Number");
|
|
8
|
+
const Object_1 = require("./Object");
|
|
9
|
+
const String_1 = require("./String");
|
|
10
|
+
exports.GpsLocationTagNames = (0, Object_1.keysOf)({
|
|
11
|
+
GPSLatitude: true,
|
|
12
|
+
GPSLatitudeRef: true,
|
|
13
|
+
GPSLongitude: true,
|
|
14
|
+
GPSLongitudeRef: true,
|
|
15
|
+
GPSPosition: true,
|
|
16
|
+
GeolocationPosition: true,
|
|
17
|
+
});
|
|
18
|
+
// local function that handles more input types:
|
|
19
|
+
function _parseCoordinate(v) {
|
|
20
|
+
return (0, String_1.blank)(v) ? undefined : (0, Number_1.isNumber)(v) ? v : (0, CoordinateParser_1.parseCoordinate)(v).decimal;
|
|
21
|
+
}
|
|
22
|
+
function _parseCoordinates(v) {
|
|
23
|
+
return (0, String_1.blank)(v) ? undefined : (0, CoordinateParser_1.parseCoordinates)(v);
|
|
24
|
+
}
|
|
25
|
+
function parseGPSLocation(tags, opts) {
|
|
26
|
+
const warnings = [];
|
|
27
|
+
try {
|
|
28
|
+
// Parse primary coordinates with error capturing
|
|
29
|
+
let latitude = undefined;
|
|
30
|
+
let longitude = undefined;
|
|
31
|
+
try {
|
|
32
|
+
latitude = _parseCoordinate(tags.GPSLatitude);
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
warnings.push(`Error parsing GPSLatitude: ${e}`);
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
longitude = _parseCoordinate(tags.GPSLongitude);
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
warnings.push(`Error parsing GPSLongitude: ${e}`);
|
|
42
|
+
}
|
|
43
|
+
// If either coordinate is missing, try GPSPosition
|
|
44
|
+
if (latitude == null || longitude == null) {
|
|
45
|
+
const gpsPos = (0, Lazy_1.lazy)(() => {
|
|
46
|
+
try {
|
|
47
|
+
return _parseCoordinates(tags.GPSPosition);
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
warnings.push(`Error parsing GPSPosition: ${e}`);
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
if (latitude == null) {
|
|
55
|
+
latitude = gpsPos()?.latitude;
|
|
56
|
+
}
|
|
57
|
+
if (longitude == null) {
|
|
58
|
+
longitude = gpsPos()?.longitude;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// If we still don't have both coordinates, return early
|
|
62
|
+
if (latitude == null || longitude == null) {
|
|
63
|
+
return { invalid: false, warnings };
|
|
64
|
+
}
|
|
65
|
+
// Check for zero coordinates if configured
|
|
66
|
+
if (opts.ignoreZeroZeroLatLon && latitude === 0 && longitude === 0) {
|
|
67
|
+
warnings.push("Ignoring zero coordinates from GPSLatitude/GPSLongitude");
|
|
68
|
+
return { invalid: true, warnings };
|
|
69
|
+
}
|
|
70
|
+
// Get geolocation reference values for sign validation
|
|
71
|
+
let geoPos = undefined;
|
|
72
|
+
try {
|
|
73
|
+
geoPos = _parseCoordinates(tags.GeolocationPosition);
|
|
74
|
+
}
|
|
75
|
+
catch (e) {
|
|
76
|
+
warnings.push(`Error parsing GeolocationPosition: ${e}`);
|
|
77
|
+
}
|
|
78
|
+
// Process coordinates with validation and sign correction
|
|
79
|
+
const latResult = (0, CoordinateParser_1.processCoordinate)({
|
|
80
|
+
value: latitude,
|
|
81
|
+
ref: tags.GPSLatitudeRef,
|
|
82
|
+
geoValue: geoPos?.latitude,
|
|
83
|
+
expectedRefPositive: "N",
|
|
84
|
+
expectedRefNegative: "S",
|
|
85
|
+
max: 90,
|
|
86
|
+
coordinateType: "Latitude",
|
|
87
|
+
}, warnings);
|
|
88
|
+
const lonResult = (0, CoordinateParser_1.processCoordinate)({
|
|
89
|
+
value: longitude,
|
|
90
|
+
ref: tags.GPSLongitudeRef,
|
|
91
|
+
geoValue: geoPos?.longitude,
|
|
92
|
+
expectedRefPositive: "E",
|
|
93
|
+
expectedRefNegative: "W",
|
|
94
|
+
max: 180,
|
|
95
|
+
coordinateType: "Longitude",
|
|
96
|
+
}, warnings);
|
|
97
|
+
if (latResult.isInvalid || lonResult.isInvalid) {
|
|
98
|
+
return { invalid: true, warnings };
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
result: {
|
|
102
|
+
GPSLatitude: latResult.value,
|
|
103
|
+
GPSLongitude: lonResult.value,
|
|
104
|
+
GPSLatitudeRef: latResult.ref,
|
|
105
|
+
GPSLongitudeRef: lonResult.ref,
|
|
106
|
+
},
|
|
107
|
+
invalid: false,
|
|
108
|
+
warnings,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
catch (e) {
|
|
112
|
+
warnings.push(`Error parsing coordinates: ${e}`);
|
|
113
|
+
return { invalid: true, warnings };
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=GPS.js.map
|
package/dist/GPS.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GPS.js","sourceRoot":"","sources":["../src/GPS.ts"],"names":[],"mappings":"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"}
|
package/dist/GeoTz.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeoTz.js","sourceRoot":"","sources":["../src/GeoTz.ts"],"names":[],"mappings":";;;;;AAMA,sBAEC;AARD,
|
|
1
|
+
{"version":3,"file":"GeoTz.js","sourceRoot":"","sources":["../src/GeoTz.ts"],"names":[],"mappings":";;;;;AAMA,sBAEC;AARD,0EAAkD;AAGlD;;GAEG;AACH,SAAgB,KAAK,CAAC,GAAW,EAAE,GAAW;IAC5C,OAAO,IAAA,mBAAS,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const GeolocationTagNames: (
|
|
1
|
+
export declare const GeolocationTagNames: (keyof GeolocationTags)[];
|
|
2
2
|
/**
|
|
3
3
|
* Is the given tag name intrinsic to the content of a given file? In other
|
|
4
4
|
* words, is it not an artifact of a metadata field?
|
package/dist/GeolocationTags.js
CHANGED
|
@@ -2,20 +2,22 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GeolocationTagNames = void 0;
|
|
4
4
|
exports.isGeolocationTag = isGeolocationTag;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
5
|
+
const Object_1 = require("./Object");
|
|
6
|
+
exports.GeolocationTagNames = (0, Object_1.keysOf)({
|
|
7
|
+
GeolocationBearing: true,
|
|
8
|
+
GeolocationCity: true,
|
|
9
|
+
GeolocationCountry: true,
|
|
10
|
+
GeolocationCountryCode: true,
|
|
11
|
+
GeolocationDistance: true,
|
|
12
|
+
GeolocationFeatureCode: true,
|
|
13
|
+
GeolocationFeatureType: true,
|
|
14
|
+
GeolocationPopulation: true,
|
|
15
|
+
GeolocationPosition: true,
|
|
16
|
+
GeolocationRegion: true,
|
|
17
|
+
GeolocationSubregion: true,
|
|
18
|
+
GeolocationTimeZone: true,
|
|
19
|
+
GeolocationWarning: true,
|
|
20
|
+
});
|
|
19
21
|
/**
|
|
20
22
|
* Is the given tag name intrinsic to the content of a given file? In other
|
|
21
23
|
* words, is it not an artifact of a metadata field?
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeolocationTags.js","sourceRoot":"","sources":["../src/GeolocationTags.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"GeolocationTags.js","sourceRoot":"","sources":["../src/GeolocationTags.ts"],"names":[],"mappings":";;;AAsBA,4CAEC;AAxBD,qCAAkC;AAErB,QAAA,mBAAmB,GAAG,IAAA,eAAM,EAAkB;IACzD,kBAAkB,EAAE,IAAI;IACxB,eAAe,EAAE,IAAI;IACrB,kBAAkB,EAAE,IAAI;IACxB,sBAAsB,EAAE,IAAI;IAC5B,mBAAmB,EAAE,IAAI;IACzB,sBAAsB,EAAE,IAAI;IAC5B,sBAAsB,EAAE,IAAI;IAC5B,qBAAqB,EAAE,IAAI;IAC3B,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,IAAI;IACvB,oBAAoB,EAAE,IAAI;IAC1B,mBAAmB,EAAE,IAAI;IACzB,kBAAkB,EAAE,IAAI;CACzB,CAAqC,CAAC;AAEvC;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,OAAO,2BAAmB,CAAC,QAAQ,CAAC,IAA6B,CAAC,CAAC;AACrE,CAAC"}
|
package/dist/IsWarning.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IsWarning.js","sourceRoot":"","sources":["../src/IsWarning.ts"],"names":[],"mappings":";;AAgBA,8BAIC;AAnBD,
|
|
1
|
+
{"version":3,"file":"IsWarning.js","sourceRoot":"","sources":["../src/IsWarning.ts"],"names":[],"mappings":";;AAgBA,8BAIC;AAnBD,qCAAsC;AAMtC,uEAAuE;AAEvE,MAAM,SAAS,GAAG,0CAA0C,CAAC;AAE7D;;;;GAIG;AACH,SAAgB,SAAS,CAAC,GAA0B;IAClD,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,GAAG,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,YAAG,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACnE,OAAO,IAAA,cAAK,EAAC,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC"}
|
package/dist/IsWin32.js
CHANGED
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
36
|
exports.isWin32 = void 0;
|
|
27
37
|
const _os = __importStar(require("node:os"));
|
package/dist/IsWin32.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IsWin32.js","sourceRoot":"","sources":["../src/IsWin32.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IsWin32.js","sourceRoot":"","sources":["../src/IsWin32.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,iCAA8B;AAEjB,QAAA,OAAO,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC"}
|
package/dist/JSON.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseJSON = parseJSON;
|
|
4
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
5
|
const BinaryField_1 = require("./BinaryField");
|
|
5
6
|
const ExifDate_1 = require("./ExifDate");
|
|
6
7
|
const ExifDateTime_1 = require("./ExifDateTime");
|
|
@@ -12,6 +13,8 @@ const Revivers = {
|
|
|
12
13
|
ExifTime: (ea) => ExifTime_1.ExifTime.fromJSON(ea),
|
|
13
14
|
};
|
|
14
15
|
function parseJSON(s) {
|
|
15
|
-
return JSON.parse(s, (_key, value) => {
|
|
16
|
+
return JSON.parse(s, (_key, value) => {
|
|
17
|
+
return Revivers[value?._ctor]?.(value) ?? value;
|
|
18
|
+
});
|
|
16
19
|
}
|
|
17
20
|
//# sourceMappingURL=JSON.js.map
|
package/dist/JSON.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JSON.js","sourceRoot":"","sources":["../src/JSON.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"JSON.js","sourceRoot":"","sources":["../src/JSON.ts"],"names":[],"mappings":";;AAaA,8BAIC;AAjBD,uDAAuD;AACvD,+CAA4C;AAC5C,yCAAsC;AACtC,iDAA8C;AAC9C,yCAAsC;AAEtC,MAAM,QAAQ,GAAG;IACf,WAAW,EAAE,CAAC,EAAO,EAAE,EAAE,CAAC,yBAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;IAClD,YAAY,EAAE,CAAC,EAAO,EAAE,EAAE,CAAC,2BAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpD,QAAQ,EAAE,CAAC,EAAO,EAAE,EAAE,CAAC,mBAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC5C,QAAQ,EAAE,CAAC,EAAO,EAAE,EAAE,CAAC,mBAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;CACE,CAAC;AAEjD,SAAgB,SAAS,CAAC,CAAS;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAU,EAAE,EAAE;QACxC,OAAO,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/Lazy.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.lazy = lazy;
|
|
4
|
+
const ErrorsAndWarnings_1 = require("./ErrorsAndWarnings");
|
|
4
5
|
function lazy(thunk) {
|
|
5
6
|
let invoked = false;
|
|
6
7
|
let result;
|
|
@@ -12,7 +13,7 @@ function lazy(thunk) {
|
|
|
12
13
|
result = thunk();
|
|
13
14
|
}
|
|
14
15
|
catch (e) {
|
|
15
|
-
error = e;
|
|
16
|
+
error = (0, ErrorsAndWarnings_1.toError)(e);
|
|
16
17
|
throw e;
|
|
17
18
|
}
|
|
18
19
|
}
|
package/dist/Lazy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Lazy.js","sourceRoot":"","sources":["../src/Lazy.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"Lazy.js","sourceRoot":"","sources":["../src/Lazy.ts"],"names":[],"mappings":";;AAEA,oBAiBC;AAnBD,2DAA8C;AAE9C,SAAgB,IAAI,CAAI,KAAc;IACpC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,MAAS,CAAC;IACd,IAAI,KAAY,CAAC;IACjB,OAAO,GAAG,EAAE;QACV,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM,GAAG,KAAK,EAAE,CAAC;YACnB,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,KAAK,GAAG,IAAA,2BAAO,EAAC,CAAC,CAAC,CAAC;gBACnB,MAAM,CAAC,CAAC;YACV,CAAC;QACH,CAAC;QACD,IAAI,KAAK,IAAI,IAAI;YAAE,MAAM,KAAK,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/Maybe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Maybe.js","sourceRoot":"","sources":["../src/Maybe.ts"],"names":[],"mappings":";;AAGA,kBAEC;AAED,oBAMC;AAED,sBAWC;AAED,8CAMC;AAKD,wBAEC;AAtCD,SAAgB,GAAG,CAAO,MAAoB,EAAE,CAAc;IAC5D,OAAO,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"Maybe.js","sourceRoot":"","sources":["../src/Maybe.ts"],"names":[],"mappings":";;AAGA,kBAEC;AAED,oBAMC;AAED,sBAWC;AAED,8CAMC;AAKD,wBAEC;AAtCD,SAAgB,GAAG,CAAO,MAAoB,EAAE,CAAc;IAC5D,OAAO,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,SAAgB,IAAI,CAClB,CAAe,EACf,CAAe,EACf,CAAoB;IAEpB,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAgB,KAAK,CACnB,IAAwB,EACxB,CAAqB;IAErB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,IAAI,IAAI;gBAAE,OAAO,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO;AACT,CAAC;AAED,SAAgB,iBAAiB,CAAI,IAA8B;IACjE,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,IAAI,MAAM,IAAI,IAAI;YAAE,OAAO,MAAM,CAAC;IACpC,CAAC;IACD,OAAO;AACT,CAAC;AAED;;GAEG;AACH,SAAgB,MAAM,CAAI,CAAW;IACnC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC"}
|
package/dist/Number.d.ts
CHANGED
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
import { Maybe } from "./Maybe";
|
|
2
|
-
export declare function isNumber(n:
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function
|
|
2
|
+
export declare function isNumber(n: unknown): n is number;
|
|
3
|
+
export declare function isInteger(n: unknown): n is number;
|
|
4
|
+
export declare function isFloat(n: unknown): n is number;
|
|
5
|
+
export declare function toFloat(n: unknown): Maybe<number>;
|
|
6
|
+
export declare function toInt(n: unknown): Maybe<number>;
|
|
7
|
+
/**
|
|
8
|
+
* Rounds a number to a specified number of decimal places.
|
|
9
|
+
*
|
|
10
|
+
* @param value - The number to round
|
|
11
|
+
* @param precision - The number of decimal places to retain
|
|
12
|
+
* @returns The rounded number with specified precision
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* roundToDecimalPlaces(3.14159, 2) // Returns 3.14
|
|
16
|
+
* roundToDecimalPlaces(123.456789, 3) // Returns 123.457
|
|
17
|
+
* roundToDecimalPlaces(0.0001234, 4) // Returns 0.0001
|
|
18
|
+
*/
|
|
19
|
+
export declare function roundToDecimalPlaces(value: number, precision: number): number;
|
package/dist/Number.js
CHANGED
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isNumber = isNumber;
|
|
4
|
+
exports.isInteger = isInteger;
|
|
5
|
+
exports.isFloat = isFloat;
|
|
4
6
|
exports.toFloat = toFloat;
|
|
5
7
|
exports.toInt = toInt;
|
|
8
|
+
exports.roundToDecimalPlaces = roundToDecimalPlaces;
|
|
6
9
|
function isNumber(n) {
|
|
7
10
|
return typeof n === "number" && isFinite(n);
|
|
8
11
|
}
|
|
12
|
+
function isInteger(n) {
|
|
13
|
+
return isNumber(n) && Number.isInteger(n);
|
|
14
|
+
}
|
|
15
|
+
function isFloat(n) {
|
|
16
|
+
return isNumber(n) && !Number.isInteger(n);
|
|
17
|
+
}
|
|
9
18
|
function toFloat(n) {
|
|
10
19
|
if (n == null)
|
|
11
20
|
return;
|
|
12
21
|
if (isNumber(n))
|
|
13
22
|
return n;
|
|
14
23
|
try {
|
|
15
|
-
|
|
24
|
+
const f = parseFloat(String(n).trim());
|
|
25
|
+
return isNumber(f) ? f : undefined;
|
|
16
26
|
}
|
|
17
27
|
catch {
|
|
18
28
|
return undefined;
|
|
@@ -32,4 +42,29 @@ function toInt(n) {
|
|
|
32
42
|
return undefined;
|
|
33
43
|
}
|
|
34
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Rounds a number to a specified number of decimal places.
|
|
47
|
+
*
|
|
48
|
+
* @param value - The number to round
|
|
49
|
+
* @param precision - The number of decimal places to retain
|
|
50
|
+
* @returns The rounded number with specified precision
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* roundToDecimalPlaces(3.14159, 2) // Returns 3.14
|
|
54
|
+
* roundToDecimalPlaces(123.456789, 3) // Returns 123.457
|
|
55
|
+
* roundToDecimalPlaces(0.0001234, 4) // Returns 0.0001
|
|
56
|
+
*/
|
|
57
|
+
function roundToDecimalPlaces(value, precision) {
|
|
58
|
+
// Handle edge cases
|
|
59
|
+
if (!isNumber(value))
|
|
60
|
+
throw new Error("Value must be a number");
|
|
61
|
+
if (precision < 0)
|
|
62
|
+
throw new Error("Precision must be non-negative");
|
|
63
|
+
if (value === 0)
|
|
64
|
+
return 0;
|
|
65
|
+
const multiplier = Math.pow(10, precision);
|
|
66
|
+
return Math.abs(value) < Number.EPSILON
|
|
67
|
+
? 0
|
|
68
|
+
: Math.round(value * multiplier) / multiplier;
|
|
69
|
+
}
|
|
35
70
|
//# sourceMappingURL=Number.js.map
|
package/dist/Number.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Number.js","sourceRoot":"","sources":["../src/Number.ts"],"names":[],"mappings":";;AAEA,4BAEC;AAED,
|
|
1
|
+
{"version":3,"file":"Number.js","sourceRoot":"","sources":["../src/Number.ts"],"names":[],"mappings":";;AAEA,4BAEC;AAED,8BAEC;AAED,0BAEC;AAED,0BASC;AAED,sBAWC;AAcD,oDAWC;AA3DD,SAAgB,QAAQ,CAAC,CAAU;IACjC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAgB,SAAS,CAAC,CAAU;IAClC,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAgB,OAAO,CAAC,CAAU;IAChC,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,OAAO,CAAC,CAAU;IAChC,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO;IACtB,IAAI,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAgB,KAAK,CAAC,CAAU;IAC9B,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO;IACtB,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,kEAAkE;QAClE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,oBAAoB,CAAC,KAAa,EAAE,SAAiB;IACnE,oBAAoB;IACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAChE,IAAI,SAAS,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACrE,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAE3C,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO;QACrC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,UAAU,CAAC;AAClD,CAAC"}
|
package/dist/Object.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Maybe } from "./Maybe";
|
|
2
|
-
export declare function isObject(obj:
|
|
2
|
+
export declare function isObject(obj: unknown): obj is object;
|
|
3
3
|
export declare function keys<T extends object, K extends string & keyof T>(o: T): K[];
|
|
4
|
-
export declare function isFunction(obj:
|
|
5
|
-
export declare function fromEntries(arr: Maybe<[Maybe<string>,
|
|
4
|
+
export declare function isFunction(obj: unknown): obj is (...args: unknown[]) => unknown;
|
|
5
|
+
export declare function fromEntries(arr: Maybe<[Maybe<string>, unknown]>[], obj?: Record<string, unknown>): Record<string, unknown>;
|
|
6
6
|
export type Unpick<T, U> = {
|
|
7
7
|
[P in keyof T]: P extends U ? never : T[P];
|
|
8
8
|
};
|
|
9
|
-
export declare function omit<T extends
|
|
9
|
+
export declare function omit<T extends object, S extends string>(t: T, ...keysToOmit: S[]): Unpick<T, S>;
|
|
10
10
|
/**
|
|
11
11
|
* Provides a type-safe exhaustive array of keys for a given interface.
|
|
12
12
|
*
|
package/dist/Object.js
CHANGED
|
@@ -19,27 +19,25 @@ function isFunction(obj) {
|
|
|
19
19
|
}
|
|
20
20
|
function fromEntries(arr, obj) {
|
|
21
21
|
if (arr == null || arr.length === 0)
|
|
22
|
-
return obj;
|
|
22
|
+
return obj ?? {};
|
|
23
23
|
// don't use Object.create(null), json stringify will break!
|
|
24
24
|
for (const ea of arr.filter((ea) => ea != null)) {
|
|
25
25
|
if (ea != null && Array.isArray(ea)) {
|
|
26
26
|
const [k, v] = ea;
|
|
27
27
|
// allow NULL fields:
|
|
28
28
|
if (k != null && v !== undefined) {
|
|
29
|
-
if (
|
|
29
|
+
if (!isObject(obj))
|
|
30
30
|
obj = {};
|
|
31
31
|
obj[k] = v;
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
return obj;
|
|
35
|
+
return obj ?? {};
|
|
36
36
|
}
|
|
37
37
|
function omit(t, ...keysToOmit) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
for (const ea of keysToOmit) {
|
|
42
|
-
delete result[ea];
|
|
38
|
+
const result = {};
|
|
39
|
+
for (const k of keys(t).filter((ea) => !keysToOmit.includes(ea))) {
|
|
40
|
+
result[k] = t[k];
|
|
43
41
|
}
|
|
44
42
|
return result;
|
|
45
43
|
}
|
|
@@ -55,4 +53,6 @@ function omit(t, ...keysToOmit) {
|
|
|
55
53
|
function keysOf(t) {
|
|
56
54
|
return Object.keys(t);
|
|
57
55
|
}
|
|
56
|
+
// This also doesn't enforce that all keys are present:
|
|
57
|
+
// type RequiredKeys<T> = { [K in keyof Required<T>]: K } extends { [K: string]: infer U } ? U[] : never;
|
|
58
58
|
//# sourceMappingURL=Object.js.map
|
package/dist/Object.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Object.js","sourceRoot":"","sources":["../src/Object.ts"],"names":[],"mappings":";;AAEA,4BAEC;AAED,oBAMC;AAED,
|
|
1
|
+
{"version":3,"file":"Object.js","sourceRoot":"","sources":["../src/Object.ts"],"names":[],"mappings":";;AAEA,4BAEC;AAED,oBAMC;AAED,gCAIC;AAED,kCAiBC;AAID,oBAWC;AAWD,wBAEC;AA/DD,SAAgB,QAAQ,CAAC,GAAY;IACnC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC;AACjD,CAAC;AAED,SAAgB,IAAI,CAA+C,CAAI;IACrE,OAAO,CAAC,IAAI,IAAI;QACd,CAAC,CAAC,EAAE;QACJ,CAAC,CAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAC5B,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAC9B,CAAC;AAChB,CAAC;AAED,SAAgB,UAAU,CACxB,GAAY;IAEZ,OAAO,OAAO,GAAG,KAAK,UAAU,CAAC;AACnC,CAAC;AAED,SAAgB,WAAW,CACzB,GAAsC,EACtC,GAA6B;IAE7B,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,IAAI,EAAE,CAAC;IACtD,4DAA4D;IAC5D,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,EAAE,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;YAClB,qBAAqB;YACrB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAAE,GAAG,GAAG,EAAE,CAAC;gBAC7B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,IAAI,EAAE,CAAC;AACnB,CAAC;AAID,SAAgB,IAAI,CAClB,CAAI,EACJ,GAAG,UAAe;IAElB,MAAM,MAAM,GAAG,EAAO,CAAC;IACvB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAC5B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAE,UAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAChC,EAAE,CAAC;QACjB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,MAAsB,CAAC;AAChC,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,MAAM,CAAI,CAAkC;IAC1D,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAgB,CAAC;AACvC,CAAC;AAED,uDAAuD;AAEvD,yGAAyG"}
|
package/dist/OnlyZerosRE.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnlyZerosRE.js","sourceRoot":"","sources":["../src/OnlyZerosRE.ts"],"names":[],"mappings":";;;AAAA,2EAA2E;AAC3E,8EAA8E;AAC9E,gEAAgE;AACnD,QAAA,WAAW,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"OnlyZerosRE.js","sourceRoot":"","sources":["../src/OnlyZerosRE.ts"],"names":[],"mappings":";;;AAAA,2EAA2E;AAC3E,8EAA8E;AAC9E,gEAAgE;AACnD,QAAA,WAAW,GAAG,MAAM,CAAC"}
|
package/dist/Pick.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pick.js","sourceRoot":"","sources":["../src/Pick.ts"],"names":[],"mappings":";;AAAA,oBAWC;AAXD,SAAgB,IAAI,CAClB,GAAM,EACN,GAAG,QAAa;IAEhB,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"Pick.js","sourceRoot":"","sources":["../src/Pick.ts"],"names":[],"mappings":";;AAAA,oBAWC;AAXD,SAAgB,IAAI,CAClB,GAAM,EACN,GAAG,QAAa;IAEhB,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,GAAG,CAAC;IAC5B,MAAM,MAAM,GAAG,EAAgB,CAAC;IAChC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|