exiftool-vendored 15.6.0 → 15.9.1
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 +31 -1
- package/README.md +19 -6
- package/dist/Array.d.ts +1 -0
- package/dist/Array.js +9 -1
- package/dist/Array.js.map +1 -1
- package/dist/DeleteAllTagsArgs.d.ts +1 -0
- package/dist/DeleteAllTagsArgs.js +5 -0
- package/dist/DeleteAllTagsArgs.js.map +1 -0
- package/dist/ExifDateTime.js +5 -3
- package/dist/ExifDateTime.js.map +1 -1
- package/dist/ExifTool.d.ts +7 -3
- package/dist/ExifTool.js +17 -9
- package/dist/ExifTool.js.map +1 -1
- package/dist/ExifToolTask.js +2 -3
- package/dist/ExifToolTask.js.map +1 -1
- package/dist/File.d.ts +1 -0
- package/dist/File.js +30 -0
- package/dist/File.js.map +1 -0
- package/dist/JSON.js.map +1 -1
- package/dist/Maybe.d.ts +0 -1
- package/dist/Maybe.js +1 -10
- package/dist/Maybe.js.map +1 -1
- package/dist/ReadRawTask.js +1 -2
- package/dist/ReadRawTask.js.map +1 -1
- package/dist/ReadTask.d.ts +2 -2
- package/dist/ReadTask.js +37 -32
- package/dist/ReadTask.js.map +1 -1
- package/dist/RewriteAllTagsTask.js +9 -5
- package/dist/RewriteAllTagsTask.js.map +1 -1
- package/dist/Sidecars.d.ts +2 -0
- package/dist/Sidecars.js +11 -0
- package/dist/Sidecars.js.map +1 -0
- package/dist/Tags.d.ts +30 -12
- package/dist/Timezones.js +6 -3
- package/dist/Timezones.js.map +1 -1
- package/dist/WriteTask.d.ts +2 -2
- package/dist/WriteTask.js +18 -4
- package/dist/WriteTask.js.map +1 -1
- package/package.json +19 -19
package/CHANGELOG.md
CHANGED
|
@@ -25,6 +25,36 @@ vendored versions of ExifTool match the version they vendor.
|
|
|
25
25
|
|
|
26
26
|
## Version history
|
|
27
27
|
|
|
28
|
+
### v15.9.1
|
|
29
|
+
|
|
30
|
+
- 📦 Exposed `UnsetZoneOffsetMinutes` from `Timezones`
|
|
31
|
+
|
|
32
|
+
### v15.9.0
|
|
33
|
+
|
|
34
|
+
- 📦 Exposed `UnsetZone` and `UnsetZoneName` from `Timezones`
|
|
35
|
+
|
|
36
|
+
### v15.8.0
|
|
37
|
+
|
|
38
|
+
- 🐞 `GPSDateTime` in prior versions could be incorrectly parsed, resulting in an incorrectly inferred current-date and encoded-time.
|
|
39
|
+
|
|
40
|
+
- 🐞 GPS latitude and longitude parsing could result in the incorrect hemisphere, depending on the version of ExifTool.
|
|
41
|
+
|
|
42
|
+
- 📦 The prior default of making all `GPS*` tags numeric has been reduced to only `GPSLatitude` and `GPSLongitude`, which means tags like `GPSImgDirectionRef` will now be something like "Magnetic North" instead of the more cryptic "M", and `GPSAltitudeRef` will now be "Below Sea Level" instead of "1".
|
|
43
|
+
|
|
44
|
+
### v15.7.0
|
|
45
|
+
|
|
46
|
+
- 🌱 ExifTool upgraded to [v12.38](https://exiftool.org/history.html#v12.38).
|
|
47
|
+
|
|
48
|
+
- ✨ Add specific support for [deleting values associated to existing tags](https://github.com/photostructure/exiftool-vendored.js/issues/104)
|
|
49
|
+
|
|
50
|
+
- 🐞 No-op `.write()` calls to sidecars are now gracefully no-op'ed.
|
|
51
|
+
|
|
52
|
+
- 📦 Added tests with and without retries (to validate stdout/stderr bugfixes in v8.0 of `batch-cluster`)
|
|
53
|
+
|
|
54
|
+
- 📦 Replace `orElse` calls with `??`
|
|
55
|
+
|
|
56
|
+
- 📦 Updated dependencies
|
|
57
|
+
|
|
28
58
|
### v15.6.0
|
|
29
59
|
|
|
30
60
|
- ✨ Added [serialization support](https://github.com/photostructure/exiftool-vendored.js/issues/102)
|
|
@@ -35,7 +65,7 @@ vendored versions of ExifTool match the version they vendor.
|
|
|
35
65
|
|
|
36
66
|
- 🌱 ExifTool upgraded to [v12.33](https://exiftool.org/history.html#v12.33).
|
|
37
67
|
|
|
38
|
-
- 📦 Updated dependencies
|
|
68
|
+
- 📦 Updated dependencies
|
|
39
69
|
|
|
40
70
|
- 📦 Now ignoring `yarn.lock`
|
|
41
71
|
|
package/README.md
CHANGED
|
@@ -262,6 +262,14 @@ exiftool.write("path/to/file.jpg", {
|
|
|
262
262
|
})
|
|
263
263
|
```
|
|
264
264
|
|
|
265
|
+
To delete a tag, use `null` as the value.
|
|
266
|
+
|
|
267
|
+
```js
|
|
268
|
+
exiftool.write("path/to/file.jpg", { UserComment: null })
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
The above example removes any value associated to the `UserComment` tag.
|
|
272
|
+
|
|
265
273
|
### Always Beware: Timezones
|
|
266
274
|
|
|
267
275
|
If you edit a timestamp tag, realize that the difference between the
|
|
@@ -303,6 +311,15 @@ ExifTool has an [extensive user configuration system](http://owl.phy.queensu.ca/
|
|
|
303
311
|
new ExifTool({ exiftoolEnv: { EXIFTOOL_HOME: resolve("path", "to", "config", "dir") }
|
|
304
312
|
```
|
|
305
313
|
|
|
314
|
+
## This package requires `procps`.
|
|
315
|
+
|
|
316
|
+
The default `BatchClusterOptions.cleanupChildProcs` value of `true` means that BatchCluster, which is used to manage child `exiftool` processes, will try to use `ps` to ensure Node's view of process state are correct, and that errant
|
|
317
|
+
processes are cleaned up.
|
|
318
|
+
|
|
319
|
+
If you run this in a docker image based off Alpine or Debian Slim, **this won't work properly unless you install the `procps` package.**
|
|
320
|
+
|
|
321
|
+
[See `batch-cluster` for details.](https://github.com/photostructure/batch-cluster.js/issues/13)
|
|
322
|
+
|
|
306
323
|
## Resource hygiene
|
|
307
324
|
|
|
308
325
|
**Always remember to call `.end()`.**
|
|
@@ -379,15 +396,12 @@ are [PascalCased](https://en.wikipedia.org/wiki/PascalCase), like
|
|
|
379
396
|
`AFPointSelected` and `ISO`. ("Fixing" the field names to be camelCase, would
|
|
380
397
|
result in ungainly `aFPointSelected` and `iSO` atrocities).
|
|
381
398
|
|
|
382
|
-
The [Tags](https://photostructure.github.io/exiftool-vendored.js/interfaces/
|
|
399
|
+
The [Tags](https://photostructure.github.io/exiftool-vendored.js/interfaces/Tags.html) interface is
|
|
383
400
|
auto-generated by the `mktags` script, which parses through over 6,000 unique
|
|
384
401
|
camera make and model images, in large part sourced from the ExifTool site.
|
|
385
402
|
`mktags` groups tags, extracts their type, popularity, and example values such
|
|
386
403
|
that your IDE can autocomplete.
|
|
387
404
|
|
|
388
|
-
For an example of a group of tags, see the [EXIFTags
|
|
389
|
-
interface](interfaces/exiftags.html).
|
|
390
|
-
|
|
391
405
|
Tags marked with "★★★★", like
|
|
392
406
|
[MIMEType](https://photostructure.github.io/exiftool-vendored.js/interfaces/tags.html#mimetype),
|
|
393
407
|
should be found in most files. Of the several thousand metadata tags, realize
|
|
@@ -413,8 +427,7 @@ const str: string = JSON.stringify(tags)
|
|
|
413
427
|
// parseJSON doesn't validate the input, so we don't assert that it's a Tags
|
|
414
428
|
// instance, but you can cast it (unsafely...)
|
|
415
429
|
|
|
416
|
-
const tags2: Tags = parseJSON(str) as Tags
|
|
417
|
-
|
|
430
|
+
const tags2: Tags = parseJSON(str) as Tags
|
|
418
431
|
```
|
|
419
432
|
|
|
420
433
|
## Performance
|
package/dist/Array.d.ts
CHANGED
|
@@ -7,3 +7,4 @@ export declare function times<T>(n: number, f: (idx: number) => T): T[];
|
|
|
7
7
|
*/
|
|
8
8
|
export declare function filterInPlace<T>(arr: T[], filter: (t: T) => boolean): T[];
|
|
9
9
|
export declare function uniq<T>(arr: T[]): T[];
|
|
10
|
+
export declare function shallowArrayEql(a: any[], b: any[]): boolean;
|
package/dist/Array.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.uniq = exports.filterInPlace = exports.times = exports.compact = void 0;
|
|
3
|
+
exports.shallowArrayEql = exports.uniq = exports.filterInPlace = exports.times = exports.compact = void 0;
|
|
4
4
|
function compact(array) {
|
|
5
5
|
return array.filter((elem) => elem != null);
|
|
6
6
|
}
|
|
@@ -36,4 +36,12 @@ function uniq(arr) {
|
|
|
36
36
|
}, []);
|
|
37
37
|
}
|
|
38
38
|
exports.uniq = uniq;
|
|
39
|
+
// terrible implementation only for internal use
|
|
40
|
+
function shallowArrayEql(a, b) {
|
|
41
|
+
return (a != null &&
|
|
42
|
+
b != null &&
|
|
43
|
+
a.length === b.length &&
|
|
44
|
+
a.every((ea, idx) => ea === b[idx]));
|
|
45
|
+
}
|
|
46
|
+
exports.shallowArrayEql = shallowArrayEql;
|
|
39
47
|
//# sourceMappingURL=Array.js.map
|
package/dist/Array.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Array.js","sourceRoot":"","sources":["../src/Array.ts"],"names":[],"mappings":";;;AAEA,SAAgB,OAAO,CAAI,KAAqB;IAC9C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI,CAAQ,CAAA;AACpD,CAAC;AAFD,0BAEC;AAED,SAAgB,KAAK,CAAI,CAAS,EAAE,CAAqB;IACvD,OAAO,KAAK,CAAC,CAAC,CAAC;SACZ,IAAI,CAAC,SAAS,CAAC;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACxB,CAAC;AAJD,sBAIC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAI,GAAQ,EAAE,MAAyB;IAClE,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QACpB,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;YACd,IAAI,CAAC,KAAK,CAAC;gBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;YACxB,CAAC,EAAE,CAAA;SACJ;IACH,CAAC,CAAC,CAAA;IACF,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;IACd,OAAO,GAAG,CAAA;AACZ,CAAC;AAVD,sCAUC;AAED,SAAgB,IAAI,CAAI,GAAQ;IAC9B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;QAC5B,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACxC,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAS,CAAC,CAAA;AACf,CAAC;AALD,oBAKC"}
|
|
1
|
+
{"version":3,"file":"Array.js","sourceRoot":"","sources":["../src/Array.ts"],"names":[],"mappings":";;;AAEA,SAAgB,OAAO,CAAI,KAAqB;IAC9C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI,CAAQ,CAAA;AACpD,CAAC;AAFD,0BAEC;AAED,SAAgB,KAAK,CAAI,CAAS,EAAE,CAAqB;IACvD,OAAO,KAAK,CAAC,CAAC,CAAC;SACZ,IAAI,CAAC,SAAS,CAAC;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACxB,CAAC;AAJD,sBAIC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAI,GAAQ,EAAE,MAAyB;IAClE,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QACpB,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;YACd,IAAI,CAAC,KAAK,CAAC;gBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;YACxB,CAAC,EAAE,CAAA;SACJ;IACH,CAAC,CAAC,CAAA;IACF,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;IACd,OAAO,GAAG,CAAA;AACZ,CAAC;AAVD,sCAUC;AAED,SAAgB,IAAI,CAAI,GAAQ;IAC9B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;QAC5B,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACxC,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAS,CAAC,CAAA;AACf,CAAC;AALD,oBAKC;AAED,gDAAgD;AAChD,SAAgB,eAAe,CAAC,CAAQ,EAAE,CAAQ;IAChD,OAAO,CACL,CAAC,IAAI,IAAI;QACT,CAAC,IAAI,IAAI;QACT,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QACrB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CACpC,CAAA;AACH,CAAC;AAPD,0CAOC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const DeleteAllTagsArgs: string[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeleteAllTagsArgs.js","sourceRoot":"","sources":["../src/DeleteAllTagsArgs.ts"],"names":[],"mappings":";;;AAAa,QAAA,iBAAiB,GAAG,CAAC,OAAO,CAAC,CAAA"}
|
package/dist/ExifDateTime.js
CHANGED
|
@@ -28,7 +28,7 @@ class ExifDateTime {
|
|
|
28
28
|
return this.fromDateTime(luxon_1.DateTime.fromISO(iso, {
|
|
29
29
|
setZone: true,
|
|
30
30
|
zone: zone !== null && zone !== void 0 ? zone : Timezones_1.UnsetZone,
|
|
31
|
-
}),
|
|
31
|
+
}), rawValue !== null && rawValue !== void 0 ? rawValue : iso);
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* Try to parse a date-time string from EXIF. If there is not both a date and
|
|
@@ -107,6 +107,7 @@ class ExifDateTime {
|
|
|
107
107
|
]);
|
|
108
108
|
}
|
|
109
109
|
static fromDateTime(dt, rawValue) {
|
|
110
|
+
var _a;
|
|
110
111
|
if (dt == null ||
|
|
111
112
|
!dt.isValid ||
|
|
112
113
|
dt.toMillis() === 0 ||
|
|
@@ -114,7 +115,7 @@ class ExifDateTime {
|
|
|
114
115
|
dt.year === 1) {
|
|
115
116
|
return undefined;
|
|
116
117
|
}
|
|
117
|
-
return new ExifDateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.millisecond, dt.offset === Timezones_1.UnsetZoneOffsetMinutes ? undefined : dt.offset, rawValue, dt.zone.name === Timezones_1.UnsetZone.name ? undefined : dt.zoneName);
|
|
118
|
+
return new ExifDateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.millisecond, dt.offset === Timezones_1.UnsetZoneOffsetMinutes ? undefined : dt.offset, rawValue, ((_a = dt.zone) === null || _a === void 0 ? void 0 : _a.name) === Timezones_1.UnsetZone.name ? undefined : dt.zoneName);
|
|
118
119
|
}
|
|
119
120
|
get millis() {
|
|
120
121
|
return this.millisecond;
|
|
@@ -143,8 +144,9 @@ class ExifDateTime {
|
|
|
143
144
|
return this.toDateTime().toJSDate();
|
|
144
145
|
}
|
|
145
146
|
toISOString(options = {}) {
|
|
147
|
+
var _a;
|
|
146
148
|
return (0, Maybe_1.denull)(this.toDateTime().toISO({
|
|
147
|
-
suppressMilliseconds: (
|
|
149
|
+
suppressMilliseconds: (_a = options.suppressMilliseconds) !== null && _a !== void 0 ? _a : this.millisecond == null,
|
|
148
150
|
includeOffset: this.hasZone && options.includeOffset !== false,
|
|
149
151
|
}));
|
|
150
152
|
}
|
package/dist/ExifDateTime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExifDateTime.js","sourceRoot":"","sources":["../src/ExifDateTime.ts"],"names":[],"mappings":";;;AAAA,iCAAwD;AACxD,yCAA2C;AAC3C,
|
|
1
|
+
{"version":3,"file":"ExifDateTime.js","sourceRoot":"","sources":["../src/ExifDateTime.ts"],"names":[],"mappings":";;;AAAA,iCAAwD;AACxD,yCAA2C;AAC3C,mCAAsE;AACtE,qCAA+C;AAC/C,2CAIoB;AAEpB;;GAEG;AACH,MAAa,YAAY;IAiJvB,YACW,IAAY,EACZ,KAAa,EACb,GAAW,EACX,IAAY,EACZ,MAAc,EACd,MAAc,EACd,WAAoB,EACpB,eAAwB,EACxB,QAAiB,EACjB,QAAiB;QATjB,SAAI,GAAJ,IAAI,CAAQ;QACZ,UAAK,GAAL,KAAK,CAAQ;QACb,QAAG,GAAH,GAAG,CAAQ;QACX,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAS;QACpB,oBAAe,GAAf,eAAe,CAAS;QACxB,aAAQ,GAAR,QAAQ,CAAS;QACjB,aAAQ,GAAR,QAAQ,CAAS;IACzB,CAAC;IA3JJ,MAAM,CAAC,OAAO,CACZ,GAAW,EACX,IAAoB,EACpB,QAAiB;QAEjB,IAAI,IAAA,cAAK,EAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;YAAE,OAAO,SAAS,CAAA;QAC9D,OAAO,IAAI,CAAC,YAAY,CACtB,gBAAQ,CAAC,OAAO,CAAC,GAAG,EAAE;YACpB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,qBAAS;SACxB,CAAC,EACF,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,GAAG,CAChB,CAAA;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,QAAQ,CACb,IAAY,EACZ,WAA2B;QAE3B,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAA;QACjC,OAAO,IAAA,yBAAiB,EAAC;YACvB,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC;YAC5C,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC;YACrC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC;SAC5C,CAAC,CAAA;IACJ,CAAC;IAEO,MAAM,CAAC,YAAY,CACzB,IAAY,EACZ,IAAyD;QAEzD,MAAM,CAAC,GAAG,IAAA,YAAG,EAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;QAC1B,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;QAElB,yEAAyE;QACzE,uDAAuD;QACvD,mDAAmD;QAEnD,8CAA8C;QAE9C,6DAA6D;QAC7D,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;YACvC,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;YAC5C,IAAI,KAAK,KAAK,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;SACpC;QAED,OAAO,IAAA,aAAK,EAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAC7B,IAAA,aAAK,EAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAC5B,IAAA,WAAG,EACD,gBAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE;YAC9B,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,qBAAS;SACxB,CAAC,EACF,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CACjC,CACF,CACF,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CACnB,IAAmB,EACnB,IAAoB;QAEpB,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAA;QACjC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;YAC7B,kCAAkC;YAClC,EAAE,GAAG,EAAE,iBAAiB,EAAE;YAC1B,EAAE,GAAG,EAAE,eAAe,EAAE;YAExB,+BAA+B;YAC/B,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,KAAK,EAAE;YACxC,EAAE,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,KAAK,EAAE;YAEtC,kCAAkC;YAClC,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE;YAC9B,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE;YAE5B,gHAAgH;YAEhH,kCAAkC;YAClC,EAAE,GAAG,EAAE,mBAAmB,EAAE;YAC5B,EAAE,GAAG,EAAE,iBAAiB,EAAE;YAE1B,+BAA+B;YAC/B,EAAE,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,KAAK,EAAE;YAC1C,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,KAAK,EAAE;YAExC,kCAAkC;YAClC,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE;YAChC,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE;SAC/B,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,aAAa,CAClB,IAAmB,EACnB,WAA2B;QAE3B,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAA;QACjC,MAAM,IAAI,GAAG,IAAA,iBAAQ,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,qBAAS,CAAA;QAC5D,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;YAC7B,mEAAmE;YACnE,EAAE,GAAG,EAAE,kBAAkB,EAAE;YAC3B,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE;YAC9B,EAAE,GAAG,EAAE,mBAAmB,EAAE;YAC5B,EAAE,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE;YAC/B,4BAA4B;YAC5B,EAAE,GAAG,EAAE,qBAAqB,EAAE;YAC9B,EAAE,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE;SACnC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,EAAY,EAAE,QAAiB;;QACjD,IACE,EAAE,IAAI,IAAI;YACV,CAAC,EAAE,CAAC,OAAO;YACX,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;YACnB,EAAE,CAAC,IAAI,KAAK,CAAC;YACb,EAAE,CAAC,IAAI,KAAK,CAAC,EACb;YACA,OAAO,SAAS,CAAA;SACjB;QACD,OAAO,IAAI,YAAY,CACrB,EAAE,CAAC,IAAI,EACP,EAAE,CAAC,KAAK,EACR,EAAE,CAAC,GAAG,EACN,EAAE,CAAC,IAAI,EACP,EAAE,CAAC,MAAM,EACT,EAAE,CAAC,MAAM,EACT,EAAE,CAAC,WAAW,EACd,EAAE,CAAC,MAAM,KAAK,kCAAsB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAC5D,QAAQ,EACR,CAAA,MAAA,EAAE,CAAC,IAAI,0CAAE,IAAI,MAAK,qBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAC3D,CAAA;IACH,CAAC;IAeD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAA,iBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED,IAAI,IAAI;;QACN,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,IAAA,mCAAuB,EAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IACvE,CAAC;IAED,UAAU;QACR,OAAO,gBAAQ,CAAC,UAAU,CACxB;YACE,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,EACD;YACE,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CACF,CAAA;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAA;IACrC,CAAC;IAED,WAAW,CAAC,UAA4B,EAAE;;QACxC,OAAO,IAAA,cAAM,EACX,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC;YACtB,oBAAoB,EAClB,MAAA,OAAO,CAAC,oBAAoB,mCAAI,IAAI,CAAC,WAAW,IAAI,IAAI;YAC1D,aAAa,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,aAAa,KAAK,KAAK;SAC/D,CAAC,CACH,CAAA;IACH,CAAC;IAED,YAAY;QACV,OAAO,IAAA,yBAAc,EAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,WAAW,EAAE,CAAA;IAC3B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAA;IAClC,CAAC;IAED,MAAM;QACJ,OAAO;YACL,KAAK,EAAE,cAAc;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAA;IACH,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAwC;QACtD,OAAO,IAAI,YAAY,CACrB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,CACd,CAAA;IACH,CAAC;CACF;AAnPD,oCAmPC"}
|
package/dist/ExifTool.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export { ExifDateTime } from "./ExifDateTime";
|
|
|
10
10
|
export { ExifTime } from "./ExifTime";
|
|
11
11
|
export { ExifToolTask } from "./ExifToolTask";
|
|
12
12
|
export { parseJSON } from "./JSON";
|
|
13
|
-
export { offsetMinutesToZoneName } from "./Timezones";
|
|
13
|
+
export { offsetMinutesToZoneName, UnsetZone, UnsetZoneName, UnsetZoneOffsetMinutes, } from "./Timezones";
|
|
14
14
|
export type { Tags };
|
|
15
15
|
export declare const DefaultExifToolPath: string;
|
|
16
16
|
export declare const DefaultExiftoolArgs: string[];
|
|
@@ -36,7 +36,11 @@ declare type AdditionalWriteTags = {
|
|
|
36
36
|
declare type ExpandedDateTags = {
|
|
37
37
|
[K in keyof Tags]: (Tags[K] extends number ? number : Tags[K] extends ExifDateTime ? ExifDate | ExifDateTime : Tags[K]) | string;
|
|
38
38
|
};
|
|
39
|
-
|
|
39
|
+
declare type NotUndefined<T> = T extends undefined ? never : T;
|
|
40
|
+
export declare type DefinedOrNullValued<T> = {
|
|
41
|
+
[P in keyof T]: NotUndefined<T[P]> | null;
|
|
42
|
+
};
|
|
43
|
+
export declare type WriteTags = DefinedOrNullValued<ShortcutTags & AdditionalWriteTags & ExpandedDateTags>;
|
|
40
44
|
export declare const DefaultMaxProcs: number;
|
|
41
45
|
export interface ExifToolOptions extends bc.BatchClusterOptions, bc.BatchProcessOptions, bc.ChildProcessFactory {
|
|
42
46
|
/**
|
|
@@ -292,7 +296,7 @@ export declare class ExifTool {
|
|
|
292
296
|
*
|
|
293
297
|
* @see BinaryExtractionTask for an example task implementation
|
|
294
298
|
*/
|
|
295
|
-
enqueueTask<T>(task: () => ExifToolTask<T>): Promise<T>;
|
|
299
|
+
enqueueTask<T>(task: () => ExifToolTask<T> | Promise<ExifToolTask<T>>): Promise<T>;
|
|
296
300
|
/**
|
|
297
301
|
* @return the currently running ExifTool processes. Note that on Windows,
|
|
298
302
|
* these are only the process IDs of the directly-spawned ExifTool wrapper,
|
package/dist/ExifTool.js
CHANGED
|
@@ -19,7 +19,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
19
19
|
return result;
|
|
20
20
|
};
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.exiftool = exports.ExifTool = exports.DefaultExifToolOptions = exports.DefaultMaxProcs = exports.DefaultExiftoolArgs = exports.DefaultExifToolPath = exports.offsetMinutesToZoneName = exports.parseJSON = exports.ExifToolTask = exports.ExifTime = exports.ExifDateTime = exports.ExifDate = void 0;
|
|
22
|
+
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;
|
|
23
23
|
const bc = __importStar(require("batch-cluster"));
|
|
24
24
|
const _cp = __importStar(require("child_process"));
|
|
25
25
|
const _fs = __importStar(require("fs"));
|
|
@@ -29,8 +29,8 @@ const _p = __importStar(require("process"));
|
|
|
29
29
|
const AsyncRetry_1 = require("./AsyncRetry");
|
|
30
30
|
const BinaryExtractionTask_1 = require("./BinaryExtractionTask");
|
|
31
31
|
const BinaryToBufferTask_1 = require("./BinaryToBufferTask");
|
|
32
|
+
const DeleteAllTagsArgs_1 = require("./DeleteAllTagsArgs");
|
|
32
33
|
const Lazy_1 = require("./Lazy");
|
|
33
|
-
const Maybe_1 = require("./Maybe");
|
|
34
34
|
const ReadRawTask_1 = require("./ReadRawTask");
|
|
35
35
|
const ReadTask_1 = require("./ReadTask");
|
|
36
36
|
const RewriteAllTagsTask_1 = require("./RewriteAllTagsTask");
|
|
@@ -49,6 +49,9 @@ var JSON_1 = require("./JSON");
|
|
|
49
49
|
Object.defineProperty(exports, "parseJSON", { enumerable: true, get: function () { return JSON_1.parseJSON; } });
|
|
50
50
|
var Timezones_1 = require("./Timezones");
|
|
51
51
|
Object.defineProperty(exports, "offsetMinutesToZoneName", { enumerable: true, get: function () { return Timezones_1.offsetMinutesToZoneName; } });
|
|
52
|
+
Object.defineProperty(exports, "UnsetZone", { enumerable: true, get: function () { return Timezones_1.UnsetZone; } });
|
|
53
|
+
Object.defineProperty(exports, "UnsetZoneName", { enumerable: true, get: function () { return Timezones_1.UnsetZoneName; } });
|
|
54
|
+
Object.defineProperty(exports, "UnsetZoneOffsetMinutes", { enumerable: true, get: function () { return Timezones_1.UnsetZoneOffsetMinutes; } });
|
|
52
55
|
const isWin32 = (0, Lazy_1.lazy)(() => _os.platform() === "win32");
|
|
53
56
|
function findExiftool() {
|
|
54
57
|
const path = require(`exiftool-vendored.${isWin32() ? "exe" : "pl"}`);
|
|
@@ -89,9 +92,6 @@ exports.DefaultExifToolOptions = Object.freeze({
|
|
|
89
92
|
// see https://github.com/photostructure/exiftool-vendored.js/issues/34 :
|
|
90
93
|
taskTimeoutMillis: 20000,
|
|
91
94
|
onIdleIntervalMillis: 2000,
|
|
92
|
-
// 1 ms seems to work on linux, but stderr and stdout may be buffered
|
|
93
|
-
// differently on different OSes:
|
|
94
|
-
streamFlushMillis: 7,
|
|
95
95
|
taskRetries: 1,
|
|
96
96
|
exiftoolPath: exports.DefaultExifToolPath,
|
|
97
97
|
exiftoolArgs: exports.DefaultExiftoolArgs,
|
|
@@ -100,7 +100,14 @@ exports.DefaultExifToolOptions = Object.freeze({
|
|
|
100
100
|
fail: "{ready}",
|
|
101
101
|
exitCommand: "-stay_open\nFalse\n",
|
|
102
102
|
versionCommand: new VersionTask_1.VersionTask().command,
|
|
103
|
-
numericTags: [
|
|
103
|
+
numericTags: [
|
|
104
|
+
"*Duration*",
|
|
105
|
+
"GPSAltitude",
|
|
106
|
+
"GPSLatitude",
|
|
107
|
+
"GPSLongitude",
|
|
108
|
+
"GPSPosition",
|
|
109
|
+
"Orientation",
|
|
110
|
+
],
|
|
104
111
|
});
|
|
105
112
|
/**
|
|
106
113
|
* Manages delegating calls to a vendored running instance of ExifTool.
|
|
@@ -110,6 +117,7 @@ exports.DefaultExifToolOptions = Object.freeze({
|
|
|
110
117
|
*/
|
|
111
118
|
class ExifTool {
|
|
112
119
|
constructor(options = {}) {
|
|
120
|
+
var _a;
|
|
113
121
|
/**
|
|
114
122
|
* Register life cycle event listeners. Delegates to BatchProcess.
|
|
115
123
|
*/
|
|
@@ -122,7 +130,7 @@ class ExifTool {
|
|
|
122
130
|
...exports.DefaultExifToolOptions,
|
|
123
131
|
...options,
|
|
124
132
|
};
|
|
125
|
-
const ignoreShebang = (
|
|
133
|
+
const ignoreShebang = (_a = o.ignoreShebang) !== null && _a !== void 0 ? _a : _ignoreShebang();
|
|
126
134
|
const env = { ...o.exiftoolEnv, LANG: "C" };
|
|
127
135
|
if ((0, String_1.notBlank)(_p.env.EXIFTOOL_HOME) && (0, String_1.blank)(env.EXIFTOOL_HOME)) {
|
|
128
136
|
env.EXIFTOOL_HOME = _p.env.EXIFTOOL_HOME;
|
|
@@ -221,7 +229,7 @@ class ExifTool {
|
|
|
221
229
|
* continue to exist if you re-`read` the file.
|
|
222
230
|
*/
|
|
223
231
|
deleteAllTags(file) {
|
|
224
|
-
return this.write(file, {},
|
|
232
|
+
return this.write(file, {}, DeleteAllTagsArgs_1.DeleteAllTagsArgs);
|
|
225
233
|
}
|
|
226
234
|
/**
|
|
227
235
|
* Extract the low-resolution thumbnail in `path/to/image.jpg`
|
|
@@ -342,7 +350,7 @@ class ExifTool {
|
|
|
342
350
|
* @see BinaryExtractionTask for an example task implementation
|
|
343
351
|
*/
|
|
344
352
|
enqueueTask(task) {
|
|
345
|
-
return (0, AsyncRetry_1.retryOnReject)(() => this.batchCluster.enqueueTask(task()), this.options.taskRetries);
|
|
353
|
+
return (0, AsyncRetry_1.retryOnReject)(async () => this.batchCluster.enqueueTask(await task()), this.options.taskRetries);
|
|
346
354
|
}
|
|
347
355
|
/**
|
|
348
356
|
* @return the currently running ExifTool processes. Note that on Windows,
|
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,4CAA6B;AAC7B,6CAA4C;AAC5C,iEAA6D;AAC7D,6DAAyD;
|
|
1
|
+
{"version":3,"file":"ExifTool.js","sourceRoot":"","sources":["../src/ExifTool.ts"],"names":[],"mappings":"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"}
|
package/dist/ExifToolTask.js
CHANGED
|
@@ -21,15 +21,14 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
22
|
exports.ExifToolTask = void 0;
|
|
23
23
|
const bc = __importStar(require("batch-cluster"));
|
|
24
|
-
const Maybe_1 = require("./Maybe");
|
|
25
24
|
const String_1 = require("./String");
|
|
26
25
|
class ExifToolTask extends bc.Task {
|
|
27
26
|
constructor(args) {
|
|
28
27
|
super(ExifToolTask.renderCommand(args), (stdout, stderr, passed) => {
|
|
29
28
|
let err;
|
|
30
29
|
if ((0, String_1.notBlank)(stderr) || !passed) {
|
|
31
|
-
this.errors.push(
|
|
32
|
-
err = new Error((0, String_1.stripPrefix)((0
|
|
30
|
+
this.errors.push(stderr !== null && stderr !== void 0 ? stderr : "failed");
|
|
31
|
+
err = new Error((0, String_1.stripPrefix)((stderr !== null && stderr !== void 0 ? stderr : stdout).trim(), "error: "));
|
|
33
32
|
}
|
|
34
33
|
return this.parse(stdout, err);
|
|
35
34
|
});
|
package/dist/ExifToolTask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExifToolTask.js","sourceRoot":"","sources":["../src/ExifToolTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAmC;
|
|
1
|
+
{"version":3,"file":"ExifToolTask.js","sourceRoot":"","sources":["../src/ExifToolTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAmC;AACnC,qCAAgD;AAEhD,MAAsB,YAAgB,SAAQ,EAAE,CAAC,IAAO;IAOtD,YAAqB,IAAc;QACjC,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACjE,IAAI,GAAG,CAAA;YACP,IAAI,IAAA,iBAAQ,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,QAAQ,CAAC,CAAA;gBACpC,GAAG,GAAG,IAAI,KAAK,CAAC,IAAA,oBAAW,EAAC,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,CAAA;aACnE;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;QARiB,SAAI,GAAJ,IAAI,CAAU;QAF1B,WAAM,GAAa,EAAE,CAAA;IAW9B,CAAC;IAfD,MAAM,CAAC,aAAa,CAAC,IAAc;QACjC,OAAO,CAAC,GAAG,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACnE,CAAC;IAiBD,QAAQ,CAAC,GAAW;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;CACF;AAvBD,oCAuBC"}
|
package/dist/File.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isFileEmpty(path: string): Promise<boolean>;
|
package/dist/File.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isFileEmpty = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const String_1 = require("./String");
|
|
6
|
+
async function isFileEmpty(path) {
|
|
7
|
+
if ((0, String_1.blank)(path)) {
|
|
8
|
+
throw new Error("isFileEmpty(): blank path");
|
|
9
|
+
}
|
|
10
|
+
// TODO: convert this to using fs/promises once node 12 is EOL (2022-04-30)
|
|
11
|
+
try {
|
|
12
|
+
const s = await new Promise((res, rej) => {
|
|
13
|
+
try {
|
|
14
|
+
(0, fs_1.stat)(path, (err, val) => (err == null ? res(val) : rej(err)));
|
|
15
|
+
}
|
|
16
|
+
catch (err) {
|
|
17
|
+
rej(err);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
return s == null || s.size === 0;
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
if (err.code === "ENOENT")
|
|
24
|
+
return true;
|
|
25
|
+
else
|
|
26
|
+
throw err;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.isFileEmpty = isFileEmpty;
|
|
30
|
+
//# sourceMappingURL=File.js.map
|
package/dist/File.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"File.js","sourceRoot":"","sources":["../src/File.ts"],"names":[],"mappings":";;;AAAA,2BAAgC;AAChC,qCAAgC;AAEzB,KAAK,UAAU,WAAW,CAAC,IAAY;IAC5C,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;KAC7C;IAED,2EAA2E;IAC3E,IAAI;QACF,MAAM,CAAC,GAAG,MAAM,IAAI,OAAO,CAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC9C,IAAI;gBACF,IAAA,SAAI,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,CAAA;aAC9D;YAAC,OAAO,GAAG,EAAE;gBACZ,GAAG,CAAC,GAAG,CAAC,CAAA;aACT;QACH,CAAC,CAAC,CAAA;QACF,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAA;KACjC;IAAC,OAAO,GAAQ,EAAE;QACjB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAA;;YACjC,MAAM,GAAG,CAAA;KACf;AACH,CAAC;AAnBD,kCAmBC"}
|
package/dist/JSON.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JSON.js","sourceRoot":"","sources":["../src/JSON.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AACrC,iDAA6C;AAC7C,yCAAqC;AAErC,MAAM,QAAQ,GAAQ;IACpB,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;CAC7C,CAAA;AAED,SAAgB,SAAS,CAAC,CAAS;IACjC,OAAO,IAAI,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"JSON.js","sourceRoot":"","sources":["../src/JSON.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AACrC,iDAA6C;AAC7C,yCAAqC;AAErC,MAAM,QAAQ,GAAQ;IACpB,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;CAC7C,CAAA;AAED,SAAgB,SAAS,CAAC,CAAS;IACjC,OAAO,IAAI,CAAC,KAAK,CACf,CAAC,EACD,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,eAAC,OAAA,MAAA,MAAA,QAAQ,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAC,+CAAtB,QAAQ,EAAiB,KAAK,CAAC,mCAAI,KAAK,CAAA,EAAA,CAC1D,CAAA;AACH,CAAC;AALD,8BAKC"}
|
package/dist/Maybe.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export declare type Maybe<T> = T | undefined;
|
|
2
2
|
export declare type MaybeNull<T> = Maybe<T> | null;
|
|
3
3
|
export declare function map<T, U>(maybeT: MaybeNull<T>, f: (t: T) => U): Maybe<U>;
|
|
4
|
-
export declare function orElse<T>(obj: MaybeNull<T>, defaultValue: T | (() => T)): T;
|
|
5
4
|
export declare function first<T, U>(iter: Iterable<Maybe<T>>, f: (t: T) => Maybe<U>): Maybe<U>;
|
|
6
5
|
export declare function firstDefinedThunk<T>(iter: Iterable<() => Maybe<T>>): Maybe<T>;
|
|
7
6
|
/**
|
package/dist/Maybe.js
CHANGED
|
@@ -1,19 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.denull = exports.firstDefinedThunk = exports.first = exports.
|
|
4
|
-
const Object_1 = require("./Object");
|
|
3
|
+
exports.denull = exports.firstDefinedThunk = exports.first = exports.map = void 0;
|
|
5
4
|
function map(maybeT, f) {
|
|
6
5
|
return maybeT == null ? undefined : f(maybeT);
|
|
7
6
|
}
|
|
8
7
|
exports.map = map;
|
|
9
|
-
function orElse(obj, defaultValue) {
|
|
10
|
-
return obj != null
|
|
11
|
-
? obj
|
|
12
|
-
: (0, Object_1.isFunction)(defaultValue)
|
|
13
|
-
? defaultValue()
|
|
14
|
-
: defaultValue;
|
|
15
|
-
}
|
|
16
|
-
exports.orElse = orElse;
|
|
17
8
|
function first(iter, f) {
|
|
18
9
|
for (const t of iter) {
|
|
19
10
|
if (t != null) {
|
package/dist/Maybe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Maybe.js","sourceRoot":"","sources":["../src/Maybe.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Maybe.js","sourceRoot":"","sources":["../src/Maybe.ts"],"names":[],"mappings":";;;AAGA,SAAgB,GAAG,CAAO,MAAoB,EAAE,CAAc;IAC5D,OAAO,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;AAC/C,CAAC;AAFD,kBAEC;AAED,SAAgB,KAAK,CACnB,IAAwB,EACxB,CAAqB;IAErB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;QACpB,IAAI,CAAC,IAAI,IAAI,EAAE;YACb,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YACd,IAAI,CAAC,IAAI,IAAI;gBAAE,OAAO,CAAC,CAAA;SACxB;KACF;IACD,OAAM;AACR,CAAC;AAXD,sBAWC;AAED,SAAgB,iBAAiB,CAAI,IAA8B;IACjE,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;QACpB,MAAM,MAAM,GAAG,CAAC,EAAE,CAAA;QAClB,IAAI,MAAM,IAAI,IAAI;YAAE,OAAO,MAAM,CAAA;KAClC;IACD,OAAM;AACR,CAAC;AAND,8CAMC;AAED;;GAEG;AACH,SAAgB,MAAM,CAAI,CAAW;IACnC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AAClC,CAAC;AAFD,wBAEC"}
|
package/dist/ReadRawTask.js
CHANGED
|
@@ -23,7 +23,6 @@ exports.ReadRawTask = void 0;
|
|
|
23
23
|
const batch_cluster_1 = require("batch-cluster");
|
|
24
24
|
const _path = __importStar(require("path"));
|
|
25
25
|
const ExifToolTask_1 = require("./ExifToolTask");
|
|
26
|
-
const Maybe_1 = require("./Maybe");
|
|
27
26
|
class ReadRawTask extends ExifToolTask_1.ExifToolTask {
|
|
28
27
|
constructor(sourceFile, args) {
|
|
29
28
|
super(args);
|
|
@@ -47,7 +46,7 @@ class ReadRawTask extends ExifToolTask_1.ExifToolTask {
|
|
|
47
46
|
}
|
|
48
47
|
catch (jsonError) {
|
|
49
48
|
(0, batch_cluster_1.logger)().error("ExifTool.ReadRawTask(): Invalid JSON", { data });
|
|
50
|
-
throw
|
|
49
|
+
throw err !== null && err !== void 0 ? err : jsonError;
|
|
51
50
|
}
|
|
52
51
|
}
|
|
53
52
|
}
|
package/dist/ReadRawTask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadRawTask.js","sourceRoot":"","sources":["../src/ReadRawTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAsC;AACtC,4CAA6B;
|
|
1
|
+
{"version":3,"file":"ReadRawTask.js","sourceRoot":"","sources":["../src/ReadRawTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAsC;AACtC,4CAA6B;AAC7B,iDAA6C;AAG7C,MAAa,WAAY,SAAQ,2BAAkB;IASjD,YACW,UAAkB,EACT,IAAc;QAEhC,KAAK,CAAC,IAAI,CAAC,CAAA;QAHF,eAAU,GAAV,UAAU,CAAQ;QACT,SAAI,GAAJ,IAAI,CAAU;IAGlC,CAAC;IAbD,MAAM,CAAC,GAAG,CAAC,QAAgB,EAAE,eAAyB,EAAE;QACtD,MAAM,IAAI,GAAG,CAAC,GAAG,YAAY,CAAC,CAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAClD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC1C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACrB,OAAO,IAAI,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAC1C,CAAC;IASQ,QAAQ;QACf,OAAO,aAAa,GAAG,IAAI,CAAC,UAAU,GAAG,GAAG,CAAA;IAC9C,CAAC;IAES,KAAK,CAAC,IAAY,EAAE,GAAW;QACvC,IAAI;YACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;SAC3B;QAAC,OAAO,SAAS,EAAE;YAClB,IAAA,sBAAM,GAAE,CAAC,KAAK,CAAC,sCAAsC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;YAChE,MAAM,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,SAAS,CAAA;SACvB;IACH,CAAC;CACF;AA5BD,kCA4BC"}
|
package/dist/ReadTask.d.ts
CHANGED
|
@@ -18,11 +18,11 @@ export declare class ReadTask extends ExifToolTask<Tags> {
|
|
|
18
18
|
private constructor();
|
|
19
19
|
static for(filename: string, numericTags: string[], optionalArgs?: string[]): ReadTask;
|
|
20
20
|
toString(): string;
|
|
21
|
-
|
|
21
|
+
parse(data: string, err?: Error): Tags;
|
|
22
22
|
private tagName;
|
|
23
23
|
private parseTags;
|
|
24
|
-
private latlon;
|
|
25
24
|
private extractLatLon;
|
|
25
|
+
private latlon;
|
|
26
26
|
private extractTzOffset;
|
|
27
27
|
private parseTag;
|
|
28
28
|
}
|
package/dist/ReadTask.js
CHANGED
|
@@ -66,8 +66,6 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
|
|
|
66
66
|
"-json",
|
|
67
67
|
"-struct",
|
|
68
68
|
...optionalArgs,
|
|
69
|
-
"-coordFormat",
|
|
70
|
-
"%.8f", // Just a float, please, not the default of "22 deg 20' 7.58\" N"
|
|
71
69
|
];
|
|
72
70
|
// IMPORTANT: "-all" must be after numeric tag references (first reference
|
|
73
71
|
// in wins)
|
|
@@ -90,7 +88,7 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
|
|
|
90
88
|
err,
|
|
91
89
|
jsonError,
|
|
92
90
|
});
|
|
93
|
-
throw
|
|
91
|
+
throw err !== null && err !== void 0 ? err : jsonError;
|
|
94
92
|
}
|
|
95
93
|
// ExifTool does "humorous" things to paths, like flip path separators. resolve() undoes that.
|
|
96
94
|
const SourceFile = _path.resolve(this._raw.SourceFile);
|
|
@@ -110,7 +108,8 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
|
|
|
110
108
|
return this.parseTags();
|
|
111
109
|
}
|
|
112
110
|
tagName(k) {
|
|
113
|
-
|
|
111
|
+
var _a;
|
|
112
|
+
return this.degroup ? (_a = k.split(":")[1]) !== null && _a !== void 0 ? _a : k : k;
|
|
114
113
|
}
|
|
115
114
|
parseTags() {
|
|
116
115
|
this.extractLatLon();
|
|
@@ -122,30 +121,37 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
|
|
|
122
121
|
this.tags.errors = this.errors;
|
|
123
122
|
return this.tags;
|
|
124
123
|
}
|
|
124
|
+
extractLatLon() {
|
|
125
|
+
var _a, _b;
|
|
126
|
+
(_a = this.lat) !== null && _a !== void 0 ? _a : (this.lat = this.latlon("GPSLatitude", "S", 90));
|
|
127
|
+
(_b = this.lon) !== null && _b !== void 0 ? _b : (this.lon = this.latlon("GPSLongitude", "W", 180));
|
|
128
|
+
if (this.invalidLatLon) {
|
|
129
|
+
this.lat = this.lon = undefined;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
125
132
|
latlon(tagName, negateRef, maxValid) {
|
|
126
133
|
const tagValue = this._tags[tagName];
|
|
127
|
-
const
|
|
128
|
-
|
|
134
|
+
const ref = this._tags[tagName + "Ref"];
|
|
135
|
+
const result = (0, Number_1.toF)(tagValue);
|
|
136
|
+
if (result == null) {
|
|
129
137
|
return;
|
|
130
|
-
|
|
131
|
-
|
|
138
|
+
}
|
|
139
|
+
else if (Math.abs(result) > maxValid) {
|
|
140
|
+
this.errors.push(`Invalid ${tagName}: ${JSON.stringify(tagValue)}`);
|
|
132
141
|
this.invalidLatLon = true;
|
|
133
142
|
return;
|
|
134
143
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
return
|
|
144
|
+
else if ((0, String_1.blank)(ref)) {
|
|
145
|
+
// Videos may not have a GPSLatitudeRef or GPSLongitudeRef: if this is the case, assume the given sign is correct.
|
|
146
|
+
return result;
|
|
138
147
|
}
|
|
139
148
|
else {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
if (!this.invalidLatLon && this.lon == null) {
|
|
148
|
-
this.lon = this.latlon("GPSLongitude", "W", 180);
|
|
149
|
+
// Versions of ExifTool pre-12 returned properly-negated lat/lon. ExifTool
|
|
150
|
+
// 12+ always returns positive values (!!). Also: if '-GPS*#' is set,
|
|
151
|
+
// we'll see "S" instead of "South", hence the .startsWith() instead of
|
|
152
|
+
// ===:
|
|
153
|
+
const negative = (0, String_1.toS)(ref).toUpperCase().startsWith(negateRef);
|
|
154
|
+
return (negative ? -1 : 1) * Math.abs(result);
|
|
149
155
|
}
|
|
150
156
|
}
|
|
151
157
|
extractTzOffset() {
|
|
@@ -169,6 +175,7 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
|
|
|
169
175
|
]), (ea) => ({ tz: this.tz, src: this.tzSource } = ea));
|
|
170
176
|
}
|
|
171
177
|
parseTag(tagNameWithGroup, value) {
|
|
178
|
+
var _a, _b, _c, _d, _e, _f;
|
|
172
179
|
if (nullish(value))
|
|
173
180
|
return undefined;
|
|
174
181
|
const tagName = this.tagName(tagNameWithGroup);
|
|
@@ -182,19 +189,17 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
|
|
|
182
189
|
if (tagName === "GPSLongitude") {
|
|
183
190
|
return this.lon;
|
|
184
191
|
}
|
|
192
|
+
const tz = tagName.includes("UTC") || tagName.startsWith("GPS") ? "UTC" : this.tz;
|
|
193
|
+
if (typeof value === "string" && tagName.includes("DateTime")) {
|
|
194
|
+
const d = (_a = ExifDateTime_1.ExifDateTime.fromExifStrict(value, tz)) !== null && _a !== void 0 ? _a : ExifDateTime_1.ExifDateTime.fromISO(value, tz);
|
|
195
|
+
if (d != null) {
|
|
196
|
+
return d;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
185
199
|
if (typeof value === "string" && tagName.includes("Date")) {
|
|
186
|
-
const
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
? "UTC"
|
|
190
|
-
: this.tz),
|
|
191
|
-
() => ExifDate_1.ExifDate.fromISO(value),
|
|
192
|
-
() => ExifDateTime_1.ExifDateTime.fromISO(value, this.tz),
|
|
193
|
-
() => ExifDate_1.ExifDate.fromExifLoose(value),
|
|
194
|
-
() => ExifDateTime_1.ExifDateTime.fromExifLoose(value, this.tz),
|
|
195
|
-
]);
|
|
196
|
-
if (dt != null) {
|
|
197
|
-
return dt;
|
|
200
|
+
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);
|
|
201
|
+
if (d != null) {
|
|
202
|
+
return d;
|
|
198
203
|
}
|
|
199
204
|
}
|
|
200
205
|
if (typeof value === "string" && tagName.includes("Time")) {
|
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;AACrC,iDAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"ReadTask.js","sourceRoot":"","sources":["../src/ReadTask.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,6 @@ exports.RewriteAllTagsTask = void 0;
|
|
|
23
23
|
const _path = __importStar(require("path"));
|
|
24
24
|
const Array_1 = require("./Array");
|
|
25
25
|
const ExifToolTask_1 = require("./ExifToolTask");
|
|
26
|
-
const Maybe_1 = require("./Maybe");
|
|
27
26
|
class RewriteAllTagsTask extends ExifToolTask_1.ExifToolTask {
|
|
28
27
|
constructor(args) {
|
|
29
28
|
super(args);
|
|
@@ -45,11 +44,16 @@ class RewriteAllTagsTask extends ExifToolTask_1.ExifToolTask {
|
|
|
45
44
|
return new RewriteAllTagsTask(args);
|
|
46
45
|
}
|
|
47
46
|
parse(data, error) {
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
var _a;
|
|
48
|
+
if (error != null) {
|
|
49
|
+
const str = String(error);
|
|
50
|
+
// Ignore warnings:
|
|
51
|
+
if (str.match(/\berror\b/i) != null && !str.match(/\bwarning\b/i)) {
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
50
54
|
}
|
|
51
|
-
if (data.
|
|
52
|
-
throw (0
|
|
55
|
+
if (null == data.match(/^\s*1 image files creat/i)) {
|
|
56
|
+
throw (error !== null && error !== void 0 ? error : new Error((_a = data.trim().split("\n")[0]) !== null && _a !== void 0 ? _a : "Missing expected status message"));
|
|
53
57
|
}
|
|
54
58
|
}
|
|
55
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RewriteAllTagsTask.js","sourceRoot":"","sources":["../src/RewriteAllTagsTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA6B;
|
|
1
|
+
{"version":3,"file":"RewriteAllTagsTask.js","sourceRoot":"","sources":["../src/RewriteAllTagsTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA6B;AAC7B,mCAAiC;AACjC,iDAA6C;AAE7C,MAAa,kBAAmB,SAAQ,2BAAkB;IACxD,YAAoB,IAAc;QAChC,KAAK,CAAC,IAAI,CAAC,CAAA;IACb,CAAC;IAED,MAAM,CAAC,GAAG,CACR,MAAc,EACd,OAAe,EACf,oBAA6B;QAE7B,8DAA8D;QAE9D,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC;YACnB,OAAO;YACP,eAAe;YACf,GAAG;YACH,UAAU;YACV,SAAS;YACT,cAAc;YACd,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACvC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACrB,MAAM;YACN,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;SACvB,CAAC,CAAA;QACF,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,IAAY,EAAE,KAAa;;QAC/B,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;YACzB,mBAAmB;YACnB,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;gBACjE,MAAM,KAAK,CAAA;aACZ;SACF;QACD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE;YAClD,MAAM,CACJ,KAAK,aAAL,KAAK,cAAL,KAAK,GACL,IAAI,KAAK,CACP,MAAA,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mCAAI,iCAAiC,CAChE,CACF,CAAA;SACF;IACH,CAAC;CACF;AA5CD,gDA4CC"}
|
package/dist/Sidecars.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isSidecarExt = exports.SidecarExts = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
exports.SidecarExts = [".exif", ".exv", ".mie", ".xmp"];
|
|
6
|
+
function isSidecarExt(filename) {
|
|
7
|
+
const p = (0, path_1.parse)(filename);
|
|
8
|
+
return exports.SidecarExts.includes(String(p.ext).toLowerCase());
|
|
9
|
+
}
|
|
10
|
+
exports.isSidecarExt = isSidecarExt;
|
|
11
|
+
//# sourceMappingURL=Sidecars.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sidecars.js","sourceRoot":"","sources":["../src/Sidecars.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAEf,QAAA,WAAW,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAE5D,SAAgB,YAAY,CAAC,QAAgB;IAC3C,MAAM,CAAC,GAAG,IAAA,YAAK,EAAC,QAAQ,CAAC,CAAA;IACzB,OAAO,mBAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;AAC1D,CAAC;AAHD,oCAGC"}
|
package/dist/Tags.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { Struct } from "./Struct";
|
|
|
7
7
|
export interface ExifToolTags {
|
|
8
8
|
/** ☆☆☆☆ ✔ Example: "File is empty" */
|
|
9
9
|
Error?: string;
|
|
10
|
-
/** ★★★★ ✔ Example: 12.
|
|
10
|
+
/** ★★★★ ✔ Example: 12.38 */
|
|
11
11
|
ExifToolVersion?: number;
|
|
12
12
|
/** ☆☆☆☆ ✔ Example: "Unrecognized IPTC record 0 (ignored)" */
|
|
13
13
|
Warning?: string;
|
|
@@ -33,9 +33,9 @@ export interface FileTags {
|
|
|
33
33
|
EncodingProcess?: string;
|
|
34
34
|
/** ★★★★ ✔ Example: "Little-endian (Intel, II)" */
|
|
35
35
|
ExifByteOrder?: string;
|
|
36
|
-
/** ★★★★ ✔ Example: 2021-
|
|
36
|
+
/** ★★★★ ✔ Example: 2021-12-20T17:04:11.000-08:00 */
|
|
37
37
|
FileAccessDate?: ExifDateTime | string;
|
|
38
|
-
/** ★★★★ ✔ Example: 2021-
|
|
38
|
+
/** ★★★★ ✔ Example: 2021-12-18T15:34:05.000-08:00 */
|
|
39
39
|
FileInodeChangeDate?: ExifDateTime | string;
|
|
40
40
|
/** ★★★★ ✔ Example: 2021-06-08T12:53:12.000-07:00 */
|
|
41
41
|
FileModifyDate?: ExifDateTime | string;
|
|
@@ -995,7 +995,7 @@ export interface IPTCTags {
|
|
|
995
995
|
SpecialInstructions?: string;
|
|
996
996
|
/** ☆☆☆☆ ✔ Example: "" */
|
|
997
997
|
SupplementalCategories?: string;
|
|
998
|
-
/** ☆☆☆☆ ✔ Example: 23:
|
|
998
|
+
/** ☆☆☆☆ ✔ Example: 23:47:00 */
|
|
999
999
|
TimeCreated?: ExifTime | string;
|
|
1000
1000
|
/** ☆☆☆☆ ✔ Example: "" */
|
|
1001
1001
|
TimeSent?: string;
|
|
@@ -1527,7 +1527,7 @@ export interface MakerNotesTags {
|
|
|
1527
1527
|
AFPointPosition?: string;
|
|
1528
1528
|
/** ☆☆☆☆ ✔ Example: "Center" */
|
|
1529
1529
|
AFPointRegistration?: string;
|
|
1530
|
-
/** ☆☆☆☆ ✔ Example: "Use
|
|
1530
|
+
/** ☆☆☆☆ ✔ Example: "Use Half" */
|
|
1531
1531
|
AFPointSel?: string;
|
|
1532
1532
|
/** ☆☆☆☆ ✔ Example: "n/a" */
|
|
1533
1533
|
AFPointSelected?: string;
|
|
@@ -1653,7 +1653,7 @@ export interface MakerNotesTags {
|
|
|
1653
1653
|
AssignMovieFunc2Button?: string;
|
|
1654
1654
|
/** ☆☆☆☆ ✔ Example: "None" */
|
|
1655
1655
|
AssignMoviePreviewButtonPlusDials?: string;
|
|
1656
|
-
/** ☆☆☆☆ ✔ Example: "
|
|
1656
|
+
/** ☆☆☆☆ ✔ Example: "Shutter/Aperture Lock" */
|
|
1657
1657
|
AssignMovieRecordButton?: string;
|
|
1658
1658
|
/** ☆☆☆☆ ✔ Example: "None" */
|
|
1659
1659
|
AssignMovieRecordButtonPlusDials?: string;
|
|
@@ -2359,6 +2359,8 @@ export interface MakerNotesTags {
|
|
|
2359
2359
|
EffectiveMaxAperture?: number;
|
|
2360
2360
|
/** ☆☆☆☆ ✔ Example: "On" */
|
|
2361
2361
|
ElectronicFrontCurtainShutter?: string;
|
|
2362
|
+
/** ☆☆☆☆ ✔ Example: "On" */
|
|
2363
|
+
EnergySavingMode?: string;
|
|
2362
2364
|
/** ☆☆☆☆ Example: "Off" */
|
|
2363
2365
|
Enhancement?: string;
|
|
2364
2366
|
/** ☆☆☆☆ ✔ Example: 960 */
|
|
@@ -2835,7 +2837,7 @@ export interface MakerNotesTags {
|
|
|
2835
2837
|
FullImageSize?: string;
|
|
2836
2838
|
/** ☆☆☆☆ Example: "Off" */
|
|
2837
2839
|
FullPressSnap?: string;
|
|
2838
|
-
/** ☆☆☆☆ ✔ Example: "
|
|
2840
|
+
/** ☆☆☆☆ ✔ Example: "Zoom (High)" */
|
|
2839
2841
|
Func1Button?: string;
|
|
2840
2842
|
/** ☆☆☆☆ ✔ Example: "Choose Image Area (DX/1.3x)" */
|
|
2841
2843
|
Func1ButtonPlusDials?: string;
|
|
@@ -2873,6 +2875,14 @@ export interface MakerNotesTags {
|
|
|
2873
2875
|
GripBatteryState?: string;
|
|
2874
2876
|
/** ☆☆☆☆ ✔ Example: "Squares" */
|
|
2875
2877
|
GroupAreaAFIllumination?: string;
|
|
2878
|
+
/** ☆☆☆☆ ✔ Example: "Unknown (5)" */
|
|
2879
|
+
HDMIBitDepth?: string;
|
|
2880
|
+
/** ☆☆☆☆ ✔ Example: "Off" */
|
|
2881
|
+
HDMIExternalRecorder?: string;
|
|
2882
|
+
/** ☆☆☆☆ ✔ Example: "Auto" */
|
|
2883
|
+
HDMIOutputRange?: string;
|
|
2884
|
+
/** ☆☆☆☆ ✔ Example: "Auto" */
|
|
2885
|
+
HDMIOutputResolution?: string;
|
|
2876
2886
|
/** ★☆☆☆ ✔ Example: "On" */
|
|
2877
2887
|
HDR?: string;
|
|
2878
2888
|
/** ☆☆☆☆ ✔ Example: "Natural" */
|
|
@@ -2929,9 +2939,9 @@ export interface MakerNotesTags {
|
|
|
2929
2939
|
ISO2?: number;
|
|
2930
2940
|
/** ☆☆☆☆ Example: "On" */
|
|
2931
2941
|
ISOAuto?: string;
|
|
2932
|
-
/** ☆☆☆☆ ✔ Example: "
|
|
2942
|
+
/** ☆☆☆☆ ✔ Example: "ISO 1600" */
|
|
2933
2943
|
ISOAutoFlashLimit?: string;
|
|
2934
|
-
/** ☆☆☆☆ ✔ Example: "Unknown (
|
|
2944
|
+
/** ☆☆☆☆ ✔ Example: "Unknown (0x6)" */
|
|
2935
2945
|
ISOAutoHiLimit?: string;
|
|
2936
2946
|
/** ☆☆☆☆ ✔ Example: 6400 */
|
|
2937
2947
|
ISOAutoMax?: number;
|
|
@@ -3407,6 +3417,8 @@ export interface MakerNotesTags {
|
|
|
3407
3417
|
ModifiedWhiteBalanceBlue?: number;
|
|
3408
3418
|
/** ☆☆☆☆ ✔ Example: 0 */
|
|
3409
3419
|
ModifiedWhiteBalanceRed?: number;
|
|
3420
|
+
/** ☆☆☆☆ ✔ Example: 0 */
|
|
3421
|
+
MonitorBrightness?: number;
|
|
3410
3422
|
/** ☆☆☆☆ ✔ Example: "Automatic" */
|
|
3411
3423
|
MonitorDisplayOff?: string;
|
|
3412
3424
|
/** ☆☆☆☆ ✔ Example: "8 s" */
|
|
@@ -3431,9 +3443,11 @@ export interface MakerNotesTags {
|
|
|
3431
3443
|
MotionSensitivity?: number;
|
|
3432
3444
|
/** ☆☆☆☆ ✔ Example: "AE/AF Lock" */
|
|
3433
3445
|
MovieAELockButtonAssignment?: string;
|
|
3446
|
+
/** ☆☆☆☆ ✔ Example: "Auto (People)" */
|
|
3447
|
+
MovieAFAreaMode?: string;
|
|
3434
3448
|
/** ☆☆☆☆ ✔ Example: "4 (Normal)" */
|
|
3435
3449
|
MovieAFTrackingSensitivity?: string;
|
|
3436
|
-
/** ☆☆☆☆ ✔ Example: "
|
|
3450
|
+
/** ☆☆☆☆ ✔ Example: "Zoom (Low)" */
|
|
3437
3451
|
MovieFunc1Button?: string;
|
|
3438
3452
|
/** ☆☆☆☆ ✔ Example: "Zoom (1:1)" */
|
|
3439
3453
|
MovieFunc2Button?: string;
|
|
@@ -3447,7 +3461,7 @@ export interface MakerNotesTags {
|
|
|
3447
3461
|
MovieHighlightDisplayThreshold?: number;
|
|
3448
3462
|
/** ☆☆☆☆ ✔ Example: "On" */
|
|
3449
3463
|
MovieISOAutoControlManualMode?: string;
|
|
3450
|
-
/** ☆☆☆☆ ✔ Example: "
|
|
3464
|
+
/** ☆☆☆☆ ✔ Example: "ISO 6400" */
|
|
3451
3465
|
MovieISOAutoHiLimit?: string;
|
|
3452
3466
|
/** ☆☆☆☆ ✔ Example: "Center Focus Point" */
|
|
3453
3467
|
MovieMultiSelector?: string;
|
|
@@ -3461,6 +3475,8 @@ export interface MakerNotesTags {
|
|
|
3461
3475
|
MovieSubSelectorAssignment?: string;
|
|
3462
3476
|
/** ☆☆☆☆ ✔ Example: "None" */
|
|
3463
3477
|
MovieSubSelectorAssignmentPlusDials?: string;
|
|
3478
|
+
/** ☆☆☆☆ ✔ Example: "Yes" */
|
|
3479
|
+
MovieWhiteBalanceSameAsPhoto?: string;
|
|
3464
3480
|
/** ☆☆☆☆ ✔ Example: "Off" */
|
|
3465
3481
|
MultiControllerWhileMetering?: string;
|
|
3466
3482
|
/** ☆☆☆☆ ✔ Example: "n/a" */
|
|
@@ -3990,6 +4006,8 @@ export interface MakerNotesTags {
|
|
|
3990
4006
|
/** ☆☆☆☆ ✔ Example: 3 */
|
|
3991
4007
|
SaturationUserDef3?: number;
|
|
3992
4008
|
/** ☆☆☆☆ ✔ Example: "Off" */
|
|
4009
|
+
SaveFocus?: string;
|
|
4010
|
+
/** ☆☆☆☆ ✔ Example: "Off" */
|
|
3993
4011
|
ScanImageEnhancer?: string;
|
|
3994
4012
|
/** ☆☆☆☆ ✔ Example: "Two-Shot" */
|
|
3995
4013
|
SceneAssist?: string;
|
|
@@ -4173,7 +4191,7 @@ export interface MakerNotesTags {
|
|
|
4173
4191
|
ShutterSpeedSetting?: string;
|
|
4174
4192
|
/** ☆☆☆☆ ✔ Example: "Normal" */
|
|
4175
4193
|
ShutterType?: string;
|
|
4176
|
-
/** ☆☆☆☆ ✔ Example: "
|
|
4194
|
+
/** ☆☆☆☆ ✔ Example: "On" */
|
|
4177
4195
|
SilentPhotography?: string;
|
|
4178
4196
|
/** ☆☆☆☆ ✔ Example: "Low" */
|
|
4179
4197
|
SingleFrameBracketing?: string;
|
package/dist/Timezones.js
CHANGED
|
@@ -62,9 +62,12 @@ function extractOffset(tz) {
|
|
|
62
62
|
if ((0, String_1.isString)(tz) && luxon_1.Info.isValidIANAZone(tz)) {
|
|
63
63
|
return { tz, src: "validIANAZone" };
|
|
64
64
|
}
|
|
65
|
-
return (0, Maybe_1.map)(tzRe.exec(tz), (m) =>
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
return (0, Maybe_1.map)(tzRe.exec(tz), (m) => {
|
|
66
|
+
var _a;
|
|
67
|
+
return (0, Maybe_1.map)(offsetMinutesToZoneName((m[1] === "-" ? -1 : 1) *
|
|
68
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
69
|
+
(parseInt(m[2]) * 60 + parseInt((_a = m[3]) !== null && _a !== void 0 ? _a : "0"))), (ea) => ({ tz: ea, src: "offsetMinutesToZoneName" }));
|
|
70
|
+
});
|
|
68
71
|
}
|
|
69
72
|
exports.extractOffset = extractOffset;
|
|
70
73
|
function extractTzOffsetFromTags(t) {
|
package/dist/Timezones.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Timezones.js","sourceRoot":"","sources":["../src/Timezones.ts"],"names":[],"mappings":";;;AAAA,iCAA6C;AAC7C,mCAAiC;AACjC,yCAAqC;AACrC,iDAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"Timezones.js","sourceRoot":"","sources":["../src/Timezones.ts"],"names":[],"mappings":"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"}
|
package/dist/WriteTask.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export declare class WriteTask extends ExifToolTask<void> {
|
|
|
4
4
|
readonly sourceFile: string;
|
|
5
5
|
readonly args: string[];
|
|
6
6
|
private constructor();
|
|
7
|
-
static for(filename: string, tags: WriteTags, optionalArgs?: string[]): WriteTask
|
|
7
|
+
static for(filename: string, tags: WriteTags, optionalArgs?: string[]): Promise<WriteTask | ExifToolTask<void>>;
|
|
8
8
|
toString(): string;
|
|
9
|
-
protected parse(data: string,
|
|
9
|
+
protected parse(data: string, error: Error): void;
|
|
10
10
|
}
|
package/dist/WriteTask.js
CHANGED
|
@@ -21,12 +21,16 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
22
|
exports.WriteTask = void 0;
|
|
23
23
|
const _path = __importStar(require("path"));
|
|
24
|
+
const Array_1 = require("./Array");
|
|
24
25
|
const DateTime_1 = require("./DateTime");
|
|
26
|
+
const DeleteAllTagsArgs_1 = require("./DeleteAllTagsArgs");
|
|
25
27
|
const ExifToolTask_1 = require("./ExifToolTask");
|
|
28
|
+
const File_1 = require("./File");
|
|
26
29
|
const Number_1 = require("./Number");
|
|
27
30
|
const Object_1 = require("./Object");
|
|
28
31
|
const String_1 = require("./String");
|
|
29
32
|
const Struct_1 = require("./Struct");
|
|
33
|
+
const VersionTask_1 = require("./VersionTask");
|
|
30
34
|
const successRE = /1 image files? (?:created|updated)/;
|
|
31
35
|
const sep = String.fromCharCode(31); // unit separator
|
|
32
36
|
// See https://exiftool.org/faq.html#Q10
|
|
@@ -73,9 +77,18 @@ class WriteTask extends ExifToolTask_1.ExifToolTask {
|
|
|
73
77
|
this.sourceFile = sourceFile;
|
|
74
78
|
this.args = args;
|
|
75
79
|
}
|
|
76
|
-
static for(filename, tags, optionalArgs = []) {
|
|
80
|
+
static async for(filename, tags, optionalArgs = []) {
|
|
77
81
|
const sourceFile = _path.resolve(filename);
|
|
78
82
|
const args = [...utfCharsetArgs];
|
|
83
|
+
// ExifTool complains "Nothing to write" if the task will only remove values
|
|
84
|
+
// and the file is missing.
|
|
85
|
+
if ((optionalArgs.length === 0 ||
|
|
86
|
+
(0, Array_1.shallowArrayEql)(optionalArgs, DeleteAllTagsArgs_1.DeleteAllTagsArgs)) &&
|
|
87
|
+
Object.values(tags).every((ea) => ea == null) &&
|
|
88
|
+
(await (0, File_1.isFileEmpty)(filename))) {
|
|
89
|
+
// no-op!
|
|
90
|
+
return new VersionTask_1.VersionTask();
|
|
91
|
+
}
|
|
79
92
|
for (const key of (0, Object_1.keys)(tags)) {
|
|
80
93
|
const val = tags[key];
|
|
81
94
|
args.push(`-${key}=${enc(val)}`);
|
|
@@ -88,9 +101,10 @@ class WriteTask extends ExifToolTask_1.ExifToolTask {
|
|
|
88
101
|
toString() {
|
|
89
102
|
return "WriteTask(" + this.sourceFile + ")";
|
|
90
103
|
}
|
|
91
|
-
parse(data,
|
|
92
|
-
|
|
93
|
-
|
|
104
|
+
parse(data, error) {
|
|
105
|
+
// console.log(this.toString() + ".parse()", { data, error })
|
|
106
|
+
if (error != null)
|
|
107
|
+
throw error;
|
|
94
108
|
if (this.errors.length > 0)
|
|
95
109
|
throw new Error(this.errors.join(";"));
|
|
96
110
|
data = data.trim();
|
package/dist/WriteTask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WriteTask.js","sourceRoot":"","sources":["../src/WriteTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA6B;AAC7B,yCAAuD;AAEvD,iDAA6C;
|
|
1
|
+
{"version":3,"file":"WriteTask.js","sourceRoot":"","sources":["../src/WriteTask.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "exiftool-vendored",
|
|
3
|
-
"version": "15.
|
|
3
|
+
"version": "15.9.1",
|
|
4
4
|
"description": "Efficient, cross-platform access to ExifTool",
|
|
5
5
|
"main": "./dist/ExifTool.js",
|
|
6
6
|
"types": "./dist/ExifTool.d.ts",
|
|
@@ -68,53 +68,53 @@
|
|
|
68
68
|
]
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
71
|
-
"@types/chai": "^4.
|
|
71
|
+
"@types/chai": "^4.3.0",
|
|
72
72
|
"@types/chai-as-promised": "^7.1.4",
|
|
73
73
|
"@types/chai-subset": "^1.3.3",
|
|
74
74
|
"@types/fs-extra": "^9.0.13",
|
|
75
75
|
"@types/globule": "^1.1.4",
|
|
76
76
|
"@types/he": "^1.1.2",
|
|
77
|
-
"@types/luxon": "^2.0.
|
|
77
|
+
"@types/luxon": "^2.0.8",
|
|
78
78
|
"@types/mocha": "^9.0.0",
|
|
79
|
-
"@types/node": "^
|
|
79
|
+
"@types/node": "^17.0.2",
|
|
80
80
|
"@types/progress": "^2.0.5",
|
|
81
81
|
"@types/rimraf": "^3.0.2",
|
|
82
82
|
"@types/tar-fs": "^2.0.1",
|
|
83
|
-
"@types/tmp": "^0.2.
|
|
83
|
+
"@types/tmp": "^0.2.3",
|
|
84
84
|
"@types/xmldom": "^0.1.31",
|
|
85
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
86
|
-
"@typescript-eslint/parser": "^5.
|
|
85
|
+
"@typescript-eslint/eslint-plugin": "^5.8.0",
|
|
86
|
+
"@typescript-eslint/parser": "^5.8.0",
|
|
87
87
|
"chai": "^4.3.4",
|
|
88
88
|
"chai-as-promised": "^7.1.1",
|
|
89
89
|
"chai-subset": "^1.6.0",
|
|
90
|
-
"eslint": "^8.
|
|
91
|
-
"eslint-plugin-import": "^2.25.
|
|
90
|
+
"eslint": "^8.5.0",
|
|
91
|
+
"eslint-plugin-import": "^2.25.3",
|
|
92
92
|
"eslint-plugin-node": "^11.1.0",
|
|
93
93
|
"extract-zip": "^2.0.1",
|
|
94
94
|
"fs-extra": "^10.0.0",
|
|
95
95
|
"globule": "^1.3.3",
|
|
96
96
|
"mocha": "^9.1.3",
|
|
97
97
|
"npm-run-all": "^4.1.5",
|
|
98
|
-
"prettier": "^2.
|
|
98
|
+
"prettier": "^2.5.1",
|
|
99
99
|
"progress": "^2.0.3",
|
|
100
100
|
"rimraf": "^3.0.2",
|
|
101
|
-
"serve": "^
|
|
102
|
-
"source-map-support": "^0.5.
|
|
101
|
+
"serve": "^13.0.2",
|
|
102
|
+
"source-map-support": "^0.5.21",
|
|
103
103
|
"tar-fs": "^2.1.1",
|
|
104
104
|
"tmp": "^0.2.1",
|
|
105
|
-
"typedoc": "^0.22.
|
|
106
|
-
"typescript": "^4.
|
|
107
|
-
"@xmldom/xmldom": "^0.
|
|
105
|
+
"typedoc": "^0.22.10",
|
|
106
|
+
"typescript": "^4.5.4",
|
|
107
|
+
"@xmldom/xmldom": "^0.8.0",
|
|
108
108
|
"xpath": "^0.0.32"
|
|
109
109
|
},
|
|
110
110
|
"dependencies": {
|
|
111
|
-
"batch-cluster": "^
|
|
111
|
+
"batch-cluster": "^8.0.1",
|
|
112
112
|
"he": "^1.2.0",
|
|
113
|
-
"luxon": "^2.0
|
|
113
|
+
"luxon": "^2.2.0",
|
|
114
114
|
"tz-lookup": "^6.1.25"
|
|
115
115
|
},
|
|
116
116
|
"optionalDependencies": {
|
|
117
|
-
"exiftool-vendored.exe": "12.
|
|
118
|
-
"exiftool-vendored.pl": "12.
|
|
117
|
+
"exiftool-vendored.exe": "12.38.0",
|
|
118
|
+
"exiftool-vendored.pl": "12.38.0"
|
|
119
119
|
}
|
|
120
120
|
}
|