exiftool-vendored 18.0.0 → 18.2.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 +24 -0
- package/README.md +0 -1
- package/dist/CapturedAtTagNames.d.ts +1 -0
- package/dist/CapturedAtTagNames.js +13 -0
- package/dist/CapturedAtTagNames.js.map +1 -0
- package/dist/ExifTool.d.ts +20 -1
- package/dist/ExifTool.js +5 -1
- package/dist/ExifTool.js.map +1 -1
- package/dist/FirstDateTime.d.ts +9 -0
- package/dist/FirstDateTime.js +27 -0
- package/dist/FirstDateTime.js.map +1 -0
- package/dist/GeoTz.d.ts +2 -0
- package/dist/GeoTz.js +17 -0
- package/dist/GeoTz.js.map +1 -0
- package/dist/MaybeReadonly.d.ts +1 -0
- package/dist/MaybeReadonly.js +3 -0
- package/dist/MaybeReadonly.js.map +1 -0
- package/dist/ReadTask.d.ts +1 -1
- package/dist/ReadTask.js +70 -49
- package/dist/ReadTask.js.map +1 -1
- package/dist/Tags.d.ts +5 -5
- package/dist/Timezones.d.ts +15 -1
- package/dist/Timezones.js +27 -11
- package/dist/Timezones.js.map +1 -1
- package/package.json +7 -5
package/CHANGELOG.md
CHANGED
|
@@ -25,6 +25,30 @@ vendored versions of ExifTool match the version that they vendor.
|
|
|
25
25
|
|
|
26
26
|
## Version history
|
|
27
27
|
|
|
28
|
+
### v18.2.0
|
|
29
|
+
|
|
30
|
+
- ✨ Add support for alternative gps timezone lookup libraries. If you want to use `geo-tz` instead, use something like this:
|
|
31
|
+
|
|
32
|
+
```js
|
|
33
|
+
const geoTz = require("geo-tz")
|
|
34
|
+
const { ExifTool } = require("exiftool-vendored")
|
|
35
|
+
const exiftool = new ExifTool({ geoToTz: (lat, lon) => geoTz.find(lat, lon)[0] })
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
- ✨ If a timezone offset tag is present, _and_ GPS metadata can infer a timezone, _and_ they result in the same offset, `Tags.tz` will use the GPS zone name (like `America/Los_Angeles`).
|
|
39
|
+
|
|
40
|
+
- 🐞 We now only apply timezone offset defaults to tag values that are lacking in explicit offsets and are not always encoded in UTC.
|
|
41
|
+
|
|
42
|
+
- 📦 Timezone "normalization" to a single timezone is no longer applied--if a datetime tag has an offset, the ExifDateTime value should retain that offset value now. Use `ExifDateTime.setZone` if you want to normalize any instance.
|
|
43
|
+
|
|
44
|
+
- 📦 Restore `GPSPosition` to the default `numericTags` so all GPS lat/lon values are consistent.
|
|
45
|
+
|
|
46
|
+
### v18.1.0
|
|
47
|
+
|
|
48
|
+
- 📦 Switch from the abandoned `tz-lookup` package to [`@photostructure/tz-lookup`](https://github.com/photostructure/tz-lookup). Note that this uses an updated time zone geo database, so some time zone names and geo shapes have changed.
|
|
49
|
+
|
|
50
|
+
- 📦 The `GPSPosition` tag is no longer included in the default set of numeric tags, as this results in ExifTool returning two floats, whitespace-separated. Use `GPSLatitude` and `GPSLongitude` instead.
|
|
51
|
+
|
|
28
52
|
### v18.0.0
|
|
29
53
|
|
|
30
54
|
- 💔 `ReadTask.for()` now takes an options hash, which includes the new `defaultVideosToUTC` option.
|
package/README.md
CHANGED
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
[](https://www.npmjs.com/package/exiftool-vendored)
|
|
6
6
|
[](https://github.com/photostructure/exiftool-vendored.js/actions/workflows/node.js.yml)
|
|
7
7
|
[](https://github.com/photostructure/exiftool-vendored.js/issues)
|
|
8
|
-
[](https://lgtm.com/projects/g/photostructure/exiftool-vendored.js/context:javascript)
|
|
9
8
|
[](https://snyk.io/test/github/photostructure/exiftool-vendored.js?targetFile=package.json)
|
|
10
9
|
|
|
11
10
|
## Features
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const CapturedAtTagNames: readonly ["SubSecDateTimeOriginal", "DateTimeOriginal", "SubSecCreateDate", "CreateDate", "SubSecMediaCreateDate", "MediaCreateDate", "DateTimeCreated"];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CapturedAtTagNames = void 0;
|
|
4
|
+
exports.CapturedAtTagNames = [
|
|
5
|
+
"SubSecDateTimeOriginal",
|
|
6
|
+
"DateTimeOriginal",
|
|
7
|
+
"SubSecCreateDate",
|
|
8
|
+
"CreateDate",
|
|
9
|
+
"SubSecMediaCreateDate",
|
|
10
|
+
"MediaCreateDate",
|
|
11
|
+
"DateTimeCreated",
|
|
12
|
+
];
|
|
13
|
+
//# sourceMappingURL=CapturedAtTagNames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CapturedAtTagNames.js","sourceRoot":"","sources":["../src/CapturedAtTagNames.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG;IAChC,wBAAwB;IACxB,kBAAkB;IAClB,kBAAkB;IAClB,YAAY;IACZ,uBAAuB;IACvB,iBAAiB;IACjB,iBAAiB;CACT,CAAA"}
|
package/dist/ExifTool.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { ApplicationRecordTags } from "./ApplicationRecordTags";
|
|
|
5
5
|
import { ExifDate } from "./ExifDate";
|
|
6
6
|
import { ExifDateTime } from "./ExifDateTime";
|
|
7
7
|
import { ExifToolTask } from "./ExifToolTask";
|
|
8
|
+
import { geoTz } from "./GeoTz";
|
|
8
9
|
import { ICCProfileTags } from "./ICCProfileTags";
|
|
9
10
|
import { Maybe } from "./Maybe";
|
|
10
11
|
import { PreviewTag } from "./PreviewTag";
|
|
@@ -17,7 +18,7 @@ export { ExifDateTime } from "./ExifDateTime";
|
|
|
17
18
|
export { ExifTime } from "./ExifTime";
|
|
18
19
|
export { ExifToolTask } from "./ExifToolTask";
|
|
19
20
|
export { parseJSON } from "./JSON";
|
|
20
|
-
export { offsetMinutesToZoneName, UnsetZone, UnsetZoneName, UnsetZoneOffsetMinutes, } from "./Timezones";
|
|
21
|
+
export { defaultVideosToUTC, offsetMinutesToZoneName, UnsetZone, UnsetZoneName, UnsetZoneOffsetMinutes, } from "./Timezones";
|
|
21
22
|
export type { AdditionalWriteTags, APP12Tags, APP14Tags, APP1Tags, APP4Tags, APP5Tags, APP6Tags, ApplicationRecordTags, CompositeTags, EXIFTags, ExifToolTags, ExpandedDateTags, FileTags, FlashPixTags, ICCProfileTags, IPTCTags, JFIFTags, MakerNotesTags, Maybe, MetaTags, MPFTags, Omit, PanasonicRawTags, PhotoshopTags, PrintIMTags, QuickTimeTags, RAFTags, ResourceEvent, RIFFTags, Struct, Tags, Version, XMPTags, };
|
|
22
23
|
export declare const DefaultExifToolPath: string;
|
|
23
24
|
export declare const DefaultExiftoolArgs: string[];
|
|
@@ -141,6 +142,24 @@ export interface ExifToolOptions extends bc.BatchClusterOptions, bc.BatchProcess
|
|
|
141
142
|
* situations. Note also that `perl` will be spawned in a sub-shell.
|
|
142
143
|
*/
|
|
143
144
|
ignoreShebang: boolean;
|
|
145
|
+
/**
|
|
146
|
+
* Override the default geo-to-timezone lookup service.
|
|
147
|
+
*
|
|
148
|
+
* This defaults to `@photostructure/tz-lookup`, but if you have the
|
|
149
|
+
* resources, consider using `geo-tz` for more accurate results.
|
|
150
|
+
*
|
|
151
|
+
* Here's a snippet of how to use `geo-tz` instead of `tz-lookup`:
|
|
152
|
+
*
|
|
153
|
+
```js
|
|
154
|
+
const geotz = require("geo-tz")
|
|
155
|
+
const { ExifTool } = require("exiftool-vendored")
|
|
156
|
+
const exiftool = new ExifTool({ geoTz: (lat, lon) => geotz.find(lat, lon)[0] })
|
|
157
|
+
```
|
|
158
|
+
*
|
|
159
|
+
* @see https://github.com/photostructure/tz-lookup
|
|
160
|
+
* @see https://github.com/evansiroky/node-geo-tz/
|
|
161
|
+
*/
|
|
162
|
+
geoTz: typeof geoTz;
|
|
144
163
|
}
|
|
145
164
|
declare type Omit<T, K> = Pick<T, Exclude<keyof T, K>>;
|
|
146
165
|
/**
|
package/dist/ExifTool.js
CHANGED
|
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.exiftool = exports.ExifTool = exports.DefaultExifToolOptions = exports.DefaultMaxProcs = exports.DefaultExiftoolArgs = exports.DefaultExifToolPath = exports.UnsetZoneOffsetMinutes = exports.UnsetZoneName = exports.UnsetZone = exports.offsetMinutesToZoneName = exports.parseJSON = exports.ExifToolTask = exports.ExifTime = exports.ExifDateTime = exports.ExifDate = void 0;
|
|
29
|
+
exports.exiftool = exports.ExifTool = exports.DefaultExifToolOptions = exports.DefaultMaxProcs = exports.DefaultExiftoolArgs = exports.DefaultExifToolPath = exports.UnsetZoneOffsetMinutes = exports.UnsetZoneName = exports.UnsetZone = exports.offsetMinutesToZoneName = exports.defaultVideosToUTC = exports.parseJSON = exports.ExifToolTask = exports.ExifTime = exports.ExifDateTime = exports.ExifDate = void 0;
|
|
30
30
|
const bc = __importStar(require("batch-cluster"));
|
|
31
31
|
const _cp = __importStar(require("child_process"));
|
|
32
32
|
const _fs = __importStar(require("fs"));
|
|
@@ -37,6 +37,7 @@ const AsyncRetry_1 = require("./AsyncRetry");
|
|
|
37
37
|
const BinaryExtractionTask_1 = require("./BinaryExtractionTask");
|
|
38
38
|
const BinaryToBufferTask_1 = require("./BinaryToBufferTask");
|
|
39
39
|
const DeleteAllTagsArgs_1 = require("./DeleteAllTagsArgs");
|
|
40
|
+
const GeoTz_1 = require("./GeoTz");
|
|
40
41
|
const Lazy_1 = require("./Lazy");
|
|
41
42
|
const ReadRawTask_1 = require("./ReadRawTask");
|
|
42
43
|
const ReadTask_1 = require("./ReadTask");
|
|
@@ -55,6 +56,7 @@ Object.defineProperty(exports, "ExifToolTask", { enumerable: true, get: function
|
|
|
55
56
|
var JSON_1 = require("./JSON");
|
|
56
57
|
Object.defineProperty(exports, "parseJSON", { enumerable: true, get: function () { return JSON_1.parseJSON; } });
|
|
57
58
|
var Timezones_1 = require("./Timezones");
|
|
59
|
+
Object.defineProperty(exports, "defaultVideosToUTC", { enumerable: true, get: function () { return Timezones_1.defaultVideosToUTC; } });
|
|
58
60
|
Object.defineProperty(exports, "offsetMinutesToZoneName", { enumerable: true, get: function () { return Timezones_1.offsetMinutesToZoneName; } });
|
|
59
61
|
Object.defineProperty(exports, "UnsetZone", { enumerable: true, get: function () { return Timezones_1.UnsetZone; } });
|
|
60
62
|
Object.defineProperty(exports, "UnsetZoneName", { enumerable: true, get: function () { return Timezones_1.UnsetZoneName; } });
|
|
@@ -118,6 +120,7 @@ exports.DefaultExifToolOptions = Object.freeze({
|
|
|
118
120
|
"Orientation",
|
|
119
121
|
],
|
|
120
122
|
defaultVideosToUTC: true,
|
|
123
|
+
geoTz: GeoTz_1.geoTz,
|
|
121
124
|
});
|
|
122
125
|
/**
|
|
123
126
|
* Manages delegating calls to a vendored running instance of ExifTool.
|
|
@@ -190,6 +193,7 @@ class ExifTool {
|
|
|
190
193
|
optionalArgs,
|
|
191
194
|
numericTags: this.options.numericTags,
|
|
192
195
|
defaultVideosToUTC: this.options.defaultVideosToUTC,
|
|
196
|
+
geoTz: this.options.geoTz,
|
|
193
197
|
})); // < no way to know at compile time if we're going to get back a T!
|
|
194
198
|
}
|
|
195
199
|
/**
|
package/dist/ExifTool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExifTool.js","sourceRoot":"","sources":["../src/ExifTool.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAmC;AACnC,mDAAoC;AACpC,wCAAyB;AACzB,wCAAyB;AACzB,4CAA6B;AAC7B,sDAA6B;AAE7B,6CAA4C;AAC5C,iEAA6D;AAC7D,6DAAyD;AACzD,2DAAuD;
|
|
1
|
+
{"version":3,"file":"ExifTool.js","sourceRoot":"","sources":["../src/ExifTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ExifDateTime } from "./ExifDateTime";
|
|
2
|
+
import { Maybe } from "./Maybe";
|
|
3
|
+
import { MaybeReadonly } from "./MaybeReadonly";
|
|
4
|
+
import { Tags } from "./Tags";
|
|
5
|
+
/**
|
|
6
|
+
* Returns the first date/time tag in `dateTimeTags` that strictly parses from
|
|
7
|
+
* EXIF.
|
|
8
|
+
*/
|
|
9
|
+
export declare function firstDateTime(tags: Maybe<Tags>, dateTimeTags?: MaybeReadonly<(keyof Tags)[]>): Maybe<ExifDateTime>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.firstDateTime = void 0;
|
|
4
|
+
const CapturedAtTagNames_1 = require("./CapturedAtTagNames");
|
|
5
|
+
const ExifDateTime_1 = require("./ExifDateTime");
|
|
6
|
+
const String_1 = require("./String");
|
|
7
|
+
/**
|
|
8
|
+
* Returns the first date/time tag in `dateTimeTags` that strictly parses from
|
|
9
|
+
* EXIF.
|
|
10
|
+
*/
|
|
11
|
+
function firstDateTime(tags, dateTimeTags = CapturedAtTagNames_1.CapturedAtTagNames) {
|
|
12
|
+
for (const tag of dateTimeTags) {
|
|
13
|
+
const dt = tags === null || tags === void 0 ? void 0 : tags[tag];
|
|
14
|
+
if (dt instanceof ExifDateTime_1.ExifDateTime) {
|
|
15
|
+
return dt;
|
|
16
|
+
}
|
|
17
|
+
else if ((0, String_1.isString)(dt)) {
|
|
18
|
+
const edt = ExifDateTime_1.ExifDateTime.fromEXIF(dt);
|
|
19
|
+
if (edt != null) {
|
|
20
|
+
return edt;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
exports.firstDateTime = firstDateTime;
|
|
27
|
+
//# sourceMappingURL=FirstDateTime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FirstDateTime.js","sourceRoot":"","sources":["../src/FirstDateTime.ts"],"names":[],"mappings":";;;AAAA,6DAAyD;AACzD,iDAA6C;AAG7C,qCAAmC;AAGnC;;;GAGG;AACH,SAAgB,aAAa,CAC3B,IAAiB,EACjB,eAA8C,uCAAkB;IAEhE,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;QAC9B,MAAM,EAAE,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,GAAG,CAAQ,CAAA;QAC7B,IAAI,EAAE,YAAY,2BAAY,EAAE;YAC9B,OAAO,EAAE,CAAA;SACV;aAAM,IAAI,IAAA,iBAAQ,EAAC,EAAE,CAAC,EAAE;YACvB,MAAM,GAAG,GAAG,2BAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;YACrC,IAAI,GAAG,IAAI,IAAI,EAAE;gBACf,OAAO,GAAG,CAAA;aACX;SACF;KACF;IACD,OAAM;AACR,CAAC;AAhBD,sCAgBC"}
|
package/dist/GeoTz.d.ts
ADDED
package/dist/GeoTz.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.geoTz = void 0;
|
|
7
|
+
const tz_lookup_1 = __importDefault(require("@photostructure/tz-lookup"));
|
|
8
|
+
function geoTz(lat, lon) {
|
|
9
|
+
try {
|
|
10
|
+
return (0, tz_lookup_1.default)(lat, lon);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.geoTz = geoTz;
|
|
17
|
+
//# sourceMappingURL=GeoTz.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GeoTz.js","sourceRoot":"","sources":["../src/GeoTz.ts"],"names":[],"mappings":";;;;;;AAAA,0EAAiD;AAGjD,SAAgB,KAAK,CAAC,GAAW,EAAE,GAAW;IAC5C,IAAI;QACF,OAAO,IAAA,mBAAS,EAAC,GAAG,EAAE,GAAG,CAAC,CAAA;KAC3B;IAAC,MAAM;QACN,OAAM;KACP;AACH,CAAC;AAND,sBAMC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare type MaybeReadonly<T> = T | Readonly<T>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaybeReadonly.js","sourceRoot":"","sources":["../src/MaybeReadonly.ts"],"names":[],"mappings":""}
|
package/dist/ReadTask.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { Tags } from "./Tags";
|
|
|
4
4
|
export declare function nullish(s: string | undefined): s is undefined;
|
|
5
5
|
export declare type ReadTaskOptions = {
|
|
6
6
|
optionalArgs: string[];
|
|
7
|
-
} & Pick<ExifToolOptions, "numericTags" | "defaultVideosToUTC">;
|
|
7
|
+
} & Pick<ExifToolOptions, "numericTags" | "defaultVideosToUTC" | "geoTz">;
|
|
8
8
|
export declare class ReadTask extends ExifToolTask<Tags> {
|
|
9
9
|
#private;
|
|
10
10
|
readonly sourceFile: string;
|
package/dist/ReadTask.js
CHANGED
|
@@ -27,7 +27,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
27
27
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
28
28
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
29
29
|
};
|
|
30
|
-
var _ReadTask_instances, _ReadTask_tagName, _ReadTask_parseTags, _ReadTask_extractLatLon, _ReadTask_latlon,
|
|
30
|
+
var _ReadTask_instances, _ReadTask_tagName, _ReadTask_parseTags, _ReadTask_extractLatLon, _ReadTask_latlon, _ReadTask_geoTz, _ReadTask_extractTzOffset, _ReadTask_parseTag;
|
|
31
31
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
32
|
exports.ReadTask = exports.nullish = void 0;
|
|
33
33
|
const batch_cluster_1 = require("batch-cluster");
|
|
@@ -36,11 +36,12 @@ const ExifDate_1 = require("./ExifDate");
|
|
|
36
36
|
const ExifDateTime_1 = require("./ExifDateTime");
|
|
37
37
|
const ExifTime_1 = require("./ExifTime");
|
|
38
38
|
const ExifToolTask_1 = require("./ExifToolTask");
|
|
39
|
+
const FirstDateTime_1 = require("./FirstDateTime");
|
|
40
|
+
const Lazy_1 = require("./Lazy");
|
|
39
41
|
const Maybe_1 = require("./Maybe");
|
|
40
42
|
const Number_1 = require("./Number");
|
|
41
43
|
const String_1 = require("./String");
|
|
42
44
|
const Timezones_1 = require("./Timezones");
|
|
43
|
-
const tzlookup = require("tz-lookup");
|
|
44
45
|
/**
|
|
45
46
|
* tag names we don't need to muck with:
|
|
46
47
|
*/
|
|
@@ -68,6 +69,27 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
|
|
|
68
69
|
/** Always has non-group-prefixed keys */
|
|
69
70
|
this._tags = {};
|
|
70
71
|
this.invalidLatLon = false;
|
|
72
|
+
_ReadTask_extractLatLon.set(this, (0, Lazy_1.lazy)(() => {
|
|
73
|
+
var _a, _b;
|
|
74
|
+
(_a = this.lat) !== null && _a !== void 0 ? _a : (this.lat = __classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_latlon).call(this, "GPSLatitude", "S", 90));
|
|
75
|
+
(_b = this.lon) !== null && _b !== void 0 ? _b : (this.lon = __classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_latlon).call(this, "GPSLongitude", "W", 180));
|
|
76
|
+
if (this.invalidLatLon) {
|
|
77
|
+
this.lat = this.lon = undefined;
|
|
78
|
+
}
|
|
79
|
+
}));
|
|
80
|
+
_ReadTask_geoTz.set(this, (0, Lazy_1.lazy)(() => {
|
|
81
|
+
__classPrivateFieldGet(this, _ReadTask_extractLatLon, "f").call(this);
|
|
82
|
+
if (this.invalidLatLon || this.lat == null || this.lon == null)
|
|
83
|
+
return;
|
|
84
|
+
try {
|
|
85
|
+
const geoTz = this.options.geoTz(this.lat, this.lon);
|
|
86
|
+
return (0, Timezones_1.normalizeZone)(geoTz);
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
this.invalidLatLon = true;
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
}));
|
|
71
93
|
this.degroup = this.args.indexOf("-G") !== -1;
|
|
72
94
|
this.tags = { SourceFile: sourceFile };
|
|
73
95
|
this.tags.errors = this.errors;
|
|
@@ -123,11 +145,11 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
|
|
|
123
145
|
}
|
|
124
146
|
}
|
|
125
147
|
exports.ReadTask = ReadTask;
|
|
126
|
-
_ReadTask_instances = new WeakSet(), _ReadTask_tagName = function _ReadTask_tagName(k) {
|
|
148
|
+
_ReadTask_extractLatLon = new WeakMap(), _ReadTask_geoTz = new WeakMap(), _ReadTask_instances = new WeakSet(), _ReadTask_tagName = function _ReadTask_tagName(k) {
|
|
127
149
|
var _a;
|
|
128
150
|
return this.degroup ? (_a = k.split(":")[1]) !== null && _a !== void 0 ? _a : k : k;
|
|
129
151
|
}, _ReadTask_parseTags = function _ReadTask_parseTags() {
|
|
130
|
-
__classPrivateFieldGet(this,
|
|
152
|
+
__classPrivateFieldGet(this, _ReadTask_extractLatLon, "f").call(this);
|
|
131
153
|
__classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_extractTzOffset).call(this);
|
|
132
154
|
(0, Maybe_1.map)(this.tz, (ea) => (this.tags.tz = ea));
|
|
133
155
|
(0, Maybe_1.map)(this.tzSource, (ea) => (this.tags.tzSource = ea));
|
|
@@ -138,13 +160,6 @@ _ReadTask_instances = new WeakSet(), _ReadTask_tagName = function _ReadTask_tagN
|
|
|
138
160
|
if (this.errors.length > 0)
|
|
139
161
|
this.tags.errors = this.errors;
|
|
140
162
|
return this.tags;
|
|
141
|
-
}, _ReadTask_extractLatLon = function _ReadTask_extractLatLon() {
|
|
142
|
-
var _a, _b;
|
|
143
|
-
(_a = this.lat) !== null && _a !== void 0 ? _a : (this.lat = __classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_latlon).call(this, "GPSLatitude", "S", 90));
|
|
144
|
-
(_b = this.lon) !== null && _b !== void 0 ? _b : (this.lon = __classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_latlon).call(this, "GPSLongitude", "W", 180));
|
|
145
|
-
if (this.invalidLatLon) {
|
|
146
|
-
this.lat = this.lon = undefined;
|
|
147
|
-
}
|
|
148
163
|
}, _ReadTask_latlon = function _ReadTask_latlon(tagName, negateRef, maxValid) {
|
|
149
164
|
const tagValue = this._tags[tagName];
|
|
150
165
|
const ref = this._tags[tagName + "Ref"];
|
|
@@ -171,48 +186,54 @@ _ReadTask_instances = new WeakSet(), _ReadTask_tagName = function _ReadTask_tagN
|
|
|
171
186
|
}
|
|
172
187
|
}, _ReadTask_extractTzOffset = function _ReadTask_extractTzOffset() {
|
|
173
188
|
(0, Maybe_1.map)((0, Maybe_1.firstDefinedThunk)([
|
|
189
|
+
// If there is an explicit TimeZone tag (which is rare), defer to that
|
|
190
|
+
// before defaulting to UTC for videos:
|
|
191
|
+
() => {
|
|
192
|
+
const tz = (0, Timezones_1.extractTzOffsetFromTags)(this._tags);
|
|
193
|
+
// If this tz offset matches the GPS zone, use the GPS zone name (like "America/Los_Angeles") instead of the offset.
|
|
194
|
+
const z = (0, Timezones_1.normalizeZone)(tz === null || tz === void 0 ? void 0 : tz.tz);
|
|
195
|
+
if (tz != null && z != null) {
|
|
196
|
+
const geoTz = __classPrivateFieldGet(this, _ReadTask_geoTz, "f").call(this);
|
|
197
|
+
if (geoTz != null) {
|
|
198
|
+
const edt = (0, FirstDateTime_1.firstDateTime)(this._raw);
|
|
199
|
+
if (edt != null) {
|
|
200
|
+
const ts = edt.toMillis();
|
|
201
|
+
const zOffset = z.offset(ts);
|
|
202
|
+
const geoTzOffset = geoTz.offset(ts);
|
|
203
|
+
if (zOffset === geoTzOffset) {
|
|
204
|
+
return {
|
|
205
|
+
tz: geoTz.name,
|
|
206
|
+
src: tz.src + " & Lat/Lon",
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return tz;
|
|
213
|
+
},
|
|
174
214
|
// See https://github.com/photostructure/exiftool-vendored.js/issues/113
|
|
215
|
+
// Videos are frequently encoded in UTC, but don't include the timezone offset in their datetime stamps.
|
|
216
|
+
// This must be before the tz_lookup/geoTz strategy, as smartphone videos
|
|
217
|
+
// will contain GPS, but still encode timestamps in UTC without an
|
|
218
|
+
// explicit offset. HURRAY
|
|
175
219
|
() => {
|
|
176
220
|
var _a, _b, _c;
|
|
177
|
-
|
|
178
|
-
this.options.defaultVideosToUTC === true
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
return;
|
|
221
|
+
return ((_b = (_a = this._tags) === null || _a === void 0 ? void 0 : _a.MIMEType) === null || _b === void 0 ? void 0 : _b.startsWith("video/")) &&
|
|
222
|
+
this.options.defaultVideosToUTC === true
|
|
223
|
+
? // If there is a TimeZone tag, defer to that before defaulting to UTC:
|
|
224
|
+
(_c = (0, Timezones_1.extractTzOffsetFromTags)(this._tags)) !== null && _c !== void 0 ? _c : {
|
|
225
|
+
tz: "UTC",
|
|
226
|
+
src: "defaultVideosToUTC",
|
|
227
|
+
}
|
|
228
|
+
: // not applicable:
|
|
229
|
+
undefined;
|
|
187
230
|
},
|
|
188
231
|
// If lat/lon is valid, use the tzlookup library, as it will be a proper
|
|
189
232
|
// Zone name (like "America/New_York"), rather than just an hour offset.
|
|
190
|
-
() => {
|
|
191
|
-
|
|
192
|
-
try {
|
|
193
|
-
return (0, Maybe_1.map)(tzlookup(this.lat, this.lon), (tz) => ({
|
|
194
|
-
tz,
|
|
195
|
-
src: "from Lat/Lon",
|
|
196
|
-
}));
|
|
197
|
-
}
|
|
198
|
-
catch (err) {
|
|
199
|
-
/* */
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
return;
|
|
203
|
-
},
|
|
204
|
-
() => (0, Timezones_1.extractTzOffsetFromTags)(this._tags),
|
|
233
|
+
() => (0, Maybe_1.map)(__classPrivateFieldGet(this, _ReadTask_geoTz, "f").call(this), (ea) => ({ tz: ea.name, src: "from Lat/Lon" })),
|
|
234
|
+
// This is a last-ditch estimation heuristic:
|
|
205
235
|
() => (0, Timezones_1.extractTzOffsetFromUTCOffset)(this._tags),
|
|
206
236
|
]), (ea) => ({ tz: this.tz, src: this.tzSource } = ea));
|
|
207
|
-
}, _ReadTask_normalizeDateTime = function _ReadTask_normalizeDateTime(tagName, value) {
|
|
208
|
-
if (tagName.startsWith("File") ||
|
|
209
|
-
!(value instanceof ExifDateTime_1.ExifDateTime) ||
|
|
210
|
-
utcTagName(tagName) ||
|
|
211
|
-
this.tz == null) {
|
|
212
|
-
return value;
|
|
213
|
-
}
|
|
214
|
-
// ExifTool may have put this in the current system time, instead of the timezone of the file.
|
|
215
|
-
return value.zone !== this.tz ? value.setZone(this.tz) : value;
|
|
216
237
|
}, _ReadTask_parseTag = function _ReadTask_parseTag(tagName, value) {
|
|
217
238
|
var _a, _b, _c, _d, _e, _f;
|
|
218
239
|
if (nullish(value))
|
|
@@ -238,18 +259,18 @@ _ReadTask_instances = new WeakSet(), _ReadTask_tagName = function _ReadTask_tagN
|
|
|
238
259
|
return this.lon;
|
|
239
260
|
}
|
|
240
261
|
if (typeof value === "string") {
|
|
241
|
-
const tz =
|
|
262
|
+
const tz = isUtcTagName(tagName) ? "UTC" : this.tz;
|
|
242
263
|
if (tagName === "When" ||
|
|
243
264
|
tagName.includes("DateTime") ||
|
|
244
265
|
tagName.toLowerCase().includes("timestamp")) {
|
|
245
266
|
const d = (_a = ExifDateTime_1.ExifDateTime.fromExifStrict(value, tz)) !== null && _a !== void 0 ? _a : ExifDateTime_1.ExifDateTime.fromISO(value, tz);
|
|
246
267
|
if (d != null)
|
|
247
|
-
return
|
|
268
|
+
return d;
|
|
248
269
|
}
|
|
249
270
|
if (tagName === "When" || tagName.includes("Date")) {
|
|
250
271
|
const d = (_f = (_e = (_d = (_c = (_b = ExifDateTime_1.ExifDateTime.fromExifStrict(value, tz)) !== null && _b !== void 0 ? _b : ExifDateTime_1.ExifDateTime.fromISO(value, tz)) !== null && _c !== void 0 ? _c : ExifDateTime_1.ExifDateTime.fromExifLoose(value, tz)) !== null && _d !== void 0 ? _d : ExifDate_1.ExifDate.fromExifStrict(value)) !== null && _e !== void 0 ? _e : ExifDate_1.ExifDate.fromISO(value)) !== null && _f !== void 0 ? _f : ExifDate_1.ExifDate.fromExifLoose(value);
|
|
251
272
|
if (d != null) {
|
|
252
|
-
return
|
|
273
|
+
return d;
|
|
253
274
|
}
|
|
254
275
|
}
|
|
255
276
|
if (tagName.includes("Time")) {
|
|
@@ -266,7 +287,7 @@ _ReadTask_instances = new WeakSet(), _ReadTask_tagName = function _ReadTask_tagN
|
|
|
266
287
|
return value;
|
|
267
288
|
}
|
|
268
289
|
};
|
|
269
|
-
function
|
|
290
|
+
function isUtcTagName(tagName) {
|
|
270
291
|
return tagName.includes("UTC") || tagName.startsWith("GPS");
|
|
271
292
|
}
|
|
272
293
|
//# sourceMappingURL=ReadTask.js.map
|
package/dist/ReadTask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadTask.js","sourceRoot":"","sources":["../src/ReadTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAsC;AACtC,4CAA6B;AAC7B,yCAAqC;AACrC,iDAA6C;AAC7C,yCAAqC;AAErC,iDAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"ReadTask.js","sourceRoot":"","sources":["../src/ReadTask.ts"],"names":[],"mappings":"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"}
|
package/dist/Tags.d.ts
CHANGED
|
@@ -1085,7 +1085,7 @@ export interface QuickTimeTags {
|
|
|
1085
1085
|
CompressorID?: string;
|
|
1086
1086
|
/** ☆☆☆☆ ✔ Example: "Track 1" */
|
|
1087
1087
|
ContentDescribes?: string;
|
|
1088
|
-
/** ☆☆☆☆ ✔ Example: 2022-02-
|
|
1088
|
+
/** ☆☆☆☆ ✔ Example: 2022-02-12T14:31:16.000-08:00 */
|
|
1089
1089
|
CreationDate?: ExifDateTime | string;
|
|
1090
1090
|
/** ☆☆☆☆ ✔ Example: "0 s" */
|
|
1091
1091
|
CurrentTime?: string;
|
|
@@ -4037,7 +4037,7 @@ export interface XMPTags {
|
|
|
4037
4037
|
CameraProfileDigest?: string;
|
|
4038
4038
|
/** ☆☆☆☆ Example: "Rear" */
|
|
4039
4039
|
CameraUnit?: string;
|
|
4040
|
-
/** ☆☆☆☆ ✔ Example: [{"
|
|
4040
|
+
/** ☆☆☆☆ ✔ Example: [{"DepthMap":{"ConfidenceURI":"android/confidencemap","De…ical"}] */
|
|
4041
4041
|
Cameras?: Struct[];
|
|
4042
4042
|
/** ☆☆☆☆ ✔ Example: "https://PhotoStructure.com/" */
|
|
4043
4043
|
CaptureSoftware?: string;
|
|
@@ -4069,7 +4069,7 @@ export interface XMPTags {
|
|
|
4069
4069
|
ColorNoiseReductionSmoothness?: number;
|
|
4070
4070
|
/** ☆☆☆☆ ✔ Example: "" */
|
|
4071
4071
|
Colorlabels?: string;
|
|
4072
|
-
/** ☆☆☆☆ ✔ Example: {"Directory":[{"
|
|
4072
|
+
/** ☆☆☆☆ ✔ Example: {"Directory":[{"DataURI":"primary_image","Length":0,"Mime…peg"}]} */
|
|
4073
4073
|
Container?: Struct;
|
|
4074
4074
|
/** ☆☆☆☆ ✔ Example: false */
|
|
4075
4075
|
ConvertToGrayscale?: boolean;
|
|
@@ -4351,7 +4351,7 @@ export interface XMPTags {
|
|
|
4351
4351
|
PreservedFileName?: string;
|
|
4352
4352
|
/** ☆☆☆☆ ✔ Example: 11 */
|
|
4353
4353
|
ProcessVersion?: number;
|
|
4354
|
-
/** ☆☆☆☆ ✔ Example: [{"
|
|
4354
|
+
/** ☆☆☆☆ ✔ Example: [{"CameraIndices":[0],"Type":"DepthPhoto"}] */
|
|
4355
4355
|
Profiles?: Struct[];
|
|
4356
4356
|
/** ☆☆☆☆ ✔ Example: "equirectangular" */
|
|
4357
4357
|
ProjectionType?: string;
|
|
@@ -4494,7 +4494,7 @@ export interface XMPTags {
|
|
|
4494
4494
|
* devices (like iPhones) An example value, JSON stringified, follows the
|
|
4495
4495
|
* popularity ratings.
|
|
4496
4496
|
*
|
|
4497
|
-
* Autogenerated by "yarn mktags" by ExifTool 12.45 on Tue Sep
|
|
4497
|
+
* Autogenerated by "yarn mktags" by ExifTool 12.45 on Tue Sep 27 2022.
|
|
4498
4498
|
* 2923 unique tags were found in 9968 photo and video files.
|
|
4499
4499
|
*/
|
|
4500
4500
|
export interface Tags extends APP12Tags, APP14Tags, APP1Tags, APP4Tags, APP5Tags, APP6Tags, ApplicationRecordTags, CompositeTags, EXIFTags, ExifToolTags, FileTags, FlashPixTags, ICCProfileTags, IPTCTags, JFIFTags, MPFTags, MakerNotesTags, MetaTags, PanasonicRawTags, PhotoshopTags, PrintIMTags, QuickTimeTags, RAFTags, RIFFTags, XMPTags {
|
package/dist/Timezones.d.ts
CHANGED
|
@@ -1,12 +1,26 @@
|
|
|
1
|
+
import { Zone } from "luxon";
|
|
1
2
|
import { Maybe } from "./Maybe";
|
|
2
3
|
export declare const MaxTzOffsetHours = 14;
|
|
4
|
+
/**
|
|
5
|
+
* Zone instances with this offset are a placeholder for being "unset".
|
|
6
|
+
*/
|
|
3
7
|
export declare const UnsetZoneOffsetMinutes = -1;
|
|
4
8
|
/**
|
|
5
9
|
* This is a placeholder for dates where the zone is unknown/unset, because
|
|
6
10
|
* Luxon doesn't officially support "unset" zones.
|
|
7
11
|
*/
|
|
8
|
-
export declare const UnsetZone:
|
|
12
|
+
export declare const UnsetZone: Zone;
|
|
13
|
+
/**
|
|
14
|
+
* Zone instances with this name are a placeholder for being "unset".
|
|
15
|
+
*/
|
|
9
16
|
export declare const UnsetZoneName: string;
|
|
17
|
+
/**
|
|
18
|
+
* If `tzSource` matches this value, the tags are from a video, and we had to
|
|
19
|
+
* resort to assuming time fields are in UTC.
|
|
20
|
+
* @see https://github.com/photostructure/exiftool-vendored.js/issues/113
|
|
21
|
+
*/
|
|
22
|
+
export declare const defaultVideosToUTC = "defaultVideosToUTC";
|
|
23
|
+
export declare function normalizeZone(z: Maybe<string | number | Zone>): Maybe<Zone>;
|
|
10
24
|
export declare function reasonableTzOffsetMinutes(tzOffsetMinutes: Maybe<number>): boolean;
|
|
11
25
|
/**
|
|
12
26
|
* Returns a "zone name" (used by `luxon`) that encodes the given offset.
|
package/dist/Timezones.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.extractTzOffsetFromUTCOffset = exports.inferLikelyOffsetMinutes = exports.extractTzOffsetFromTags = exports.extractOffset = exports.offsetMinutesToZoneName = exports.reasonableTzOffsetMinutes = exports.UnsetZoneName = exports.UnsetZone = exports.UnsetZoneOffsetMinutes = exports.MaxTzOffsetHours = void 0;
|
|
3
|
+
exports.extractTzOffsetFromUTCOffset = exports.inferLikelyOffsetMinutes = exports.extractTzOffsetFromTags = exports.extractOffset = exports.offsetMinutesToZoneName = exports.reasonableTzOffsetMinutes = exports.normalizeZone = exports.defaultVideosToUTC = exports.UnsetZoneName = exports.UnsetZone = exports.UnsetZoneOffsetMinutes = exports.MaxTzOffsetHours = void 0;
|
|
4
4
|
const luxon_1 = require("luxon");
|
|
5
5
|
const Array_1 = require("./Array");
|
|
6
|
+
const CapturedAtTagNames_1 = require("./CapturedAtTagNames");
|
|
6
7
|
const ExifDateTime_1 = require("./ExifDateTime");
|
|
7
8
|
const Maybe_1 = require("./Maybe");
|
|
8
9
|
const Number_1 = require("./Number");
|
|
@@ -10,13 +11,37 @@ const String_1 = require("./String");
|
|
|
10
11
|
// Pacific/Kiritimati is +14:00 TIL
|
|
11
12
|
// https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
|
12
13
|
exports.MaxTzOffsetHours = 14;
|
|
14
|
+
/**
|
|
15
|
+
* Zone instances with this offset are a placeholder for being "unset".
|
|
16
|
+
*/
|
|
13
17
|
exports.UnsetZoneOffsetMinutes = -1;
|
|
14
18
|
/**
|
|
15
19
|
* This is a placeholder for dates where the zone is unknown/unset, because
|
|
16
20
|
* Luxon doesn't officially support "unset" zones.
|
|
17
21
|
*/
|
|
18
22
|
exports.UnsetZone = luxon_1.Info.normalizeZone(exports.UnsetZoneOffsetMinutes);
|
|
23
|
+
/**
|
|
24
|
+
* Zone instances with this name are a placeholder for being "unset".
|
|
25
|
+
*/
|
|
19
26
|
exports.UnsetZoneName = exports.UnsetZone.name;
|
|
27
|
+
/**
|
|
28
|
+
* If `tzSource` matches this value, the tags are from a video, and we had to
|
|
29
|
+
* resort to assuming time fields are in UTC.
|
|
30
|
+
* @see https://github.com/photostructure/exiftool-vendored.js/issues/113
|
|
31
|
+
*/
|
|
32
|
+
exports.defaultVideosToUTC = "defaultVideosToUTC";
|
|
33
|
+
function normalizeZone(z) {
|
|
34
|
+
try {
|
|
35
|
+
if (z == null || (0, String_1.blank)(String(z)))
|
|
36
|
+
return;
|
|
37
|
+
const zone = luxon_1.Info.normalizeZone(z);
|
|
38
|
+
return (zone === null || zone === void 0 ? void 0 : zone.isValid) === true ? zone : undefined;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.normalizeZone = normalizeZone;
|
|
20
45
|
function reasonableTzOffsetMinutes(tzOffsetMinutes) {
|
|
21
46
|
return ((0, Number_1.isNumber)(tzOffsetMinutes) &&
|
|
22
47
|
tzOffsetMinutes !== exports.UnsetZoneOffsetMinutes &&
|
|
@@ -116,15 +141,7 @@ function extractTzOffsetFromUTCOffset(t) {
|
|
|
116
141
|
return;
|
|
117
142
|
// If we can find any of these without a zone, the timezone should be the
|
|
118
143
|
// offset between this time and the GPS time.
|
|
119
|
-
const dt = (0, Maybe_1.first)(
|
|
120
|
-
"SubSecDateTimeOriginal",
|
|
121
|
-
"DateTimeOriginal",
|
|
122
|
-
"SubSecCreateDate",
|
|
123
|
-
"CreateDate",
|
|
124
|
-
"SubSecMediaCreateDate",
|
|
125
|
-
"MediaCreateDate",
|
|
126
|
-
"DateTimeCreated",
|
|
127
|
-
], (tagName) => {
|
|
144
|
+
const dt = (0, Maybe_1.first)(CapturedAtTagNames_1.CapturedAtTagNames, (tagName) => {
|
|
128
145
|
const edt = ExifDateTime_1.ExifDateTime.fromExifStrict(t[tagName]);
|
|
129
146
|
return edt != null && edt.zone == null
|
|
130
147
|
? {
|
|
@@ -135,7 +152,6 @@ function extractTzOffsetFromUTCOffset(t) {
|
|
|
135
152
|
});
|
|
136
153
|
if (dt == null)
|
|
137
154
|
return;
|
|
138
|
-
// By flooring
|
|
139
155
|
const diffSeconds = dt.s - utc.s;
|
|
140
156
|
const offsetMinutes = inferLikelyOffsetMinutes(diffSeconds / 60);
|
|
141
157
|
return (0, Maybe_1.map)(offsetMinutesToZoneName(offsetMinutes), (tz) => ({
|
package/dist/Timezones.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Timezones.js","sourceRoot":"","sources":["../src/Timezones.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Timezones.js","sourceRoot":"","sources":["../src/Timezones.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "exiftool-vendored",
|
|
3
|
-
"version": "18.
|
|
3
|
+
"version": "18.2.0",
|
|
4
4
|
"description": "Efficient, cross-platform access to ExifTool",
|
|
5
5
|
"main": "./dist/ExifTool.js",
|
|
6
6
|
"types": "./dist/ExifTool.d.ts",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"@types/globule": "^1.1.4",
|
|
68
68
|
"@types/he": "^1.1.2",
|
|
69
69
|
"@types/mocha": "^9.1.1",
|
|
70
|
-
"@types/node": "^18.7.
|
|
70
|
+
"@types/node": "^18.7.20",
|
|
71
71
|
"@types/progress": "^2.0.5",
|
|
72
72
|
"@types/rimraf": "^3.0.2",
|
|
73
73
|
"@types/tar-fs": "^2.0.1",
|
|
@@ -79,11 +79,12 @@
|
|
|
79
79
|
"chai": "^4.3.6",
|
|
80
80
|
"chai-as-promised": "^7.1.1",
|
|
81
81
|
"chai-subset": "^1.6.0",
|
|
82
|
-
"eslint": "^8.
|
|
82
|
+
"eslint": "^8.24.0",
|
|
83
83
|
"eslint-plugin-import": "^2.26.0",
|
|
84
84
|
"eslint-plugin-node": "^11.1.0",
|
|
85
85
|
"extract-zip": "^2.0.1",
|
|
86
86
|
"fs-extra": "^10.1.0",
|
|
87
|
+
"geo-tz": "^7.0.2",
|
|
87
88
|
"globule": "^1.3.4",
|
|
88
89
|
"mocha": "^10.0.0",
|
|
89
90
|
"npm-run-all": "^4.1.5",
|
|
@@ -97,12 +98,13 @@
|
|
|
97
98
|
"typescript": "~4.8.3",
|
|
98
99
|
"xpath": "^0.0.32"
|
|
99
100
|
},
|
|
101
|
+
"dependencies-note": "@types/luxon is not a devDependency, as our exported TypeScript typings reference luxon types. See <https://github.com/photostructure/exiftool-vendored.js/pull/108>",
|
|
100
102
|
"dependencies": {
|
|
103
|
+
"@photostructure/tz-lookup": "^7.0.0",
|
|
101
104
|
"@types/luxon": "^3.0.1",
|
|
102
105
|
"batch-cluster": "^11.0.0",
|
|
103
106
|
"he": "^1.2.0",
|
|
104
|
-
"luxon": "^3.0.3"
|
|
105
|
-
"tz-lookup": "^6.1.25"
|
|
107
|
+
"luxon": "^3.0.3"
|
|
106
108
|
},
|
|
107
109
|
"optionalDependencies": {
|
|
108
110
|
"exiftool-vendored.exe": "12.45.0",
|