exiftool-vendored 22.0.0 → 22.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.
Files changed (51) hide show
  1. package/CHANGELOG.md +17 -3
  2. package/README.md +0 -9
  3. package/dist/Array.d.ts +13 -2
  4. package/dist/Array.js +58 -7
  5. package/dist/Array.js.map +1 -1
  6. package/dist/BinaryField.js.map +1 -1
  7. package/dist/BinaryToBufferTask.js.map +1 -1
  8. package/dist/DateTime.d.ts +3 -0
  9. package/dist/DateTime.js +5 -1
  10. package/dist/DateTime.js.map +1 -1
  11. package/dist/DefaultExifToolOptions.js +6 -1
  12. package/dist/DefaultExifToolOptions.js.map +1 -1
  13. package/dist/DefaultExiftoolArgs.js +1 -0
  14. package/dist/DefaultExiftoolArgs.js.map +1 -1
  15. package/dist/ExifDate.d.ts +1 -0
  16. package/dist/ExifDate.js +6 -0
  17. package/dist/ExifDate.js.map +1 -1
  18. package/dist/ExifDateTime.d.ts +3 -0
  19. package/dist/ExifDateTime.js +17 -0
  20. package/dist/ExifDateTime.js.map +1 -1
  21. package/dist/ExifTool.d.ts +12 -10
  22. package/dist/ExifTool.js +39 -13
  23. package/dist/ExifTool.js.map +1 -1
  24. package/dist/ExifToolOptions.d.ts +38 -8
  25. package/dist/ExifToolOptions.js +8 -0
  26. package/dist/ExifToolOptions.js.map +1 -1
  27. package/dist/ImageDataHashTag.d.ts +11 -0
  28. package/dist/ImageDataHashTag.js +3 -0
  29. package/dist/ImageDataHashTag.js.map +1 -0
  30. package/dist/Lazy.js +6 -2
  31. package/dist/Lazy.js.map +1 -1
  32. package/dist/Object.js +1 -1
  33. package/dist/Object.js.map +1 -1
  34. package/dist/ReadTask.d.ts +6 -5
  35. package/dist/ReadTask.js +90 -64
  36. package/dist/ReadTask.js.map +1 -1
  37. package/dist/String.js +3 -3
  38. package/dist/String.js.map +1 -1
  39. package/dist/Tags.d.ts +55 -54
  40. package/dist/Times.d.ts +1 -0
  41. package/dist/Times.js +10 -0
  42. package/dist/Times.js.map +1 -0
  43. package/dist/Timezones.d.ts +10 -15
  44. package/dist/Timezones.js +93 -30
  45. package/dist/Timezones.js.map +1 -1
  46. package/dist/VersionTask.js +1 -1
  47. package/dist/VersionTask.js.map +1 -1
  48. package/dist/Which.d.ts +2 -0
  49. package/dist/Which.js +23 -0
  50. package/dist/Which.js.map +1 -0
  51. package/package.json +24 -28
package/CHANGELOG.md CHANGED
@@ -26,6 +26,20 @@ vendored versions of ExifTool match the version that they vendor.
26
26
 
27
27
  ## Version history
28
28
 
29
+ ### v22.2.0
30
+
31
+ - ✨ Add support for zone extraction from `ExifDateTime`, `ExifTime`, `number[]`, and `number` fields.
32
+
33
+ - 📦 Improve type signature of `extractTzOffsetFromTags`.
34
+
35
+ ### v22.1.0
36
+
37
+ - 🌱 ExifTool upgraded to [v12.65](https://exiftool.org/history.html#v12.65)
38
+
39
+ - ✨ Add support for new `ImageDataHash` tag: [See the docs for details](https://photostructure.github.io/exiftool-vendored.js/interfaces/ExifToolOptions.html#imageHashType).
40
+
41
+ - 🐞 `perl` is checked for on non-windows machines at startup. This resolves [#152](https://github.com/photostructure/exiftool-vendored.js/issues/152). You can disable this with the [new `checkPerl` option](https://photostructure.github.io/exiftool-vendored.js/interfaces/ExifToolOptions.html#checkPerl).
42
+
29
43
  ### v22.0.0
30
44
 
31
45
  - 🏚️ Drop support for Node 14, which EOL'ed 2023-04-30
@@ -33,12 +47,12 @@ vendored versions of ExifTool match the version that they vendor.
33
47
  - 🌱 ExifTool upgraded to [v12.62](https://exiftool.org/history.html#v12.62)
34
48
 
35
49
  - 🐞 Fix exports for DefaultExifToolOptions and several other non-type values. Thanks for the [bug report, renambot!](https://github.com/photostructure/exiftool-vendored.js/issues/144)
36
-
50
+
37
51
  ### v21.5.1
38
52
 
39
53
  - 📦 Avoid double-rendering of ImageDataMD5 (Thanks, Phil! See [forum post for details](https://exiftool.org/forum/index.php?topic=14706.msg79218#msg79218))
40
-
41
- - 📦 Pull down new camera test images, rebuild Tags and docs
54
+
55
+ - 📦 Pull down new camera test images, rebuild Tags and docs
42
56
 
43
57
  ### v21.5.0
44
58
 
package/README.md CHANGED
@@ -288,15 +288,6 @@ ExifTool has an [extensive user configuration system](http://owl.phy.queensu.ca/
288
288
  new ExifTool({ exiftoolEnv: { EXIFTOOL_HOME: resolve("path", "to", "config", "dir") }
289
289
  ```
290
290
 
291
- ## This package requires `procps`.
292
-
293
- 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
294
- processes are cleaned up.
295
-
296
- If you run this in a docker image based on Alpine or Debian Slim, **this won't work properly unless you install the `procps` package.**
297
-
298
- [See `batch-cluster` for details.](https://github.com/photostructure/batch-cluster.js/issues/13)
299
-
300
291
  ## Resource hygiene
301
292
 
302
293
  **Call `ExifTool.end()` when you're done**
package/dist/Array.d.ts CHANGED
@@ -1,6 +1,7 @@
1
- import { MaybeNull } from "./Maybe";
1
+ import { Maybe, MaybeNull } from "./Maybe";
2
+ export declare function isIterable(obj: any): obj is Iterable<any>;
3
+ export declare function toA<T>(arr: undefined | null | T[] | T | Iterable<T>): T[];
2
4
  export declare function compact<T>(array: MaybeNull<T>[]): T[];
3
- export declare function times<T>(n: number, f: (idx: number) => T): T[];
4
5
  /**
5
6
  * Remove all elements from the given array that return false from the given
6
7
  * predicate `filter`.
@@ -8,3 +9,13 @@ export declare function times<T>(n: number, f: (idx: number) => T): T[];
8
9
  export declare function filterInPlace<T>(arr: T[], filter: (t: T) => boolean): T[];
9
10
  export declare function uniq<T>(arr: T[]): T[];
10
11
  export declare function shallowArrayEql(a: any[], b: any[]): boolean;
12
+ type Comparable = number | string | boolean;
13
+ /**
14
+ * Returns a copy of arr, stable sorted by the given constraint. Note that false
15
+ * < true, and that `f` may return an array for sort priorities, or undefined if
16
+ * the item should be skipped from the returned result.
17
+ *
18
+ * Note: localeSort() thinks lower case should come before upper case (!!)
19
+ */
20
+ export declare function sortBy<T>(arr: Iterable<Maybe<T>> | Maybe<T>[], f: (t: T) => Maybe<Comparable>): T[];
21
+ export {};
package/dist/Array.js CHANGED
@@ -1,16 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.shallowArrayEql = exports.uniq = exports.filterInPlace = exports.times = exports.compact = void 0;
3
+ exports.sortBy = exports.shallowArrayEql = exports.uniq = exports.filterInPlace = exports.compact = exports.toA = exports.isIterable = void 0;
4
+ const String_1 = require("./String");
5
+ function isIterable(obj) {
6
+ return (obj != null &&
7
+ typeof obj !== "string" &&
8
+ typeof obj[Symbol.iterator] === "function");
9
+ }
10
+ exports.isIterable = isIterable;
11
+ function toA(arr) {
12
+ return Array.isArray(arr) // < strings are not arrays
13
+ ? arr
14
+ : arr == null
15
+ ? []
16
+ : (0, String_1.isString)(arr) // < don't rely on isIterable rejecting Strings
17
+ ? [arr]
18
+ : isIterable(arr)
19
+ ? Array.from(arr)
20
+ : [arr];
21
+ }
22
+ exports.toA = toA;
4
23
  function compact(array) {
5
24
  return array.filter((elem) => elem != null);
6
25
  }
7
26
  exports.compact = compact;
8
- function times(n, f) {
9
- return Array(n)
10
- .fill(undefined)
11
- .map((_, i) => f(i));
12
- }
13
- exports.times = times;
14
27
  /**
15
28
  * Remove all elements from the given array that return false from the given
16
29
  * predicate `filter`.
@@ -44,4 +57,42 @@ function shallowArrayEql(a, b) {
44
57
  a.every((ea, idx) => ea === b[idx]));
45
58
  }
46
59
  exports.shallowArrayEql = shallowArrayEql;
60
+ /**
61
+ * Returns a copy of arr, stable sorted by the given constraint. Note that false
62
+ * < true, and that `f` may return an array for sort priorities, or undefined if
63
+ * the item should be skipped from the returned result.
64
+ *
65
+ * Note: localeSort() thinks lower case should come before upper case (!!)
66
+ */
67
+ function sortBy(arr, f) {
68
+ return (toA(arr).filter((ea) => ea != null)
69
+ .map((item) => ({
70
+ item,
71
+ cmp: f(item),
72
+ }))
73
+ .filter((ea) => ea.cmp != null)
74
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
75
+ .sort((a, b) => cmp(a.cmp, b.cmp))
76
+ .map((ea) => ea.item));
77
+ }
78
+ exports.sortBy = sortBy;
79
+ function cmp(a, b) {
80
+ // undefined == undefined:
81
+ if (a == null && b == null)
82
+ return 0;
83
+ // undefined should be < defined. We can't use typeof here because typeof null
84
+ // is "object" and typeof undefined = "undefined".
85
+ if (a == null)
86
+ return -1;
87
+ if (b == null)
88
+ return 1;
89
+ const aType = typeof a;
90
+ const bType = typeof b;
91
+ if ((aType === "string" || aType === "symbol") &&
92
+ (bType === "string" || bType === "symbol")) {
93
+ // in German, ä sorts before z, in Swedish, ä sorts after z
94
+ return String(a).localeCompare(String(b));
95
+ }
96
+ return a > b ? 1 : a < b ? -1 : 0;
97
+ }
47
98
  //# 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;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"}
1
+ {"version":3,"file":"Array.js","sourceRoot":"","sources":["../src/Array.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BinaryField.js","sourceRoot":"","sources":["../src/BinaryField.ts"],"names":[],"mappings":";;;AACA,qCAAgC;AAEhC,0DAA0D;AAC1D,MAAM,aAAa;AACjB,yDAAyD;AACzD,wBAAwB,CAAA;AAE1B,MAAa,WAAW;IACtB,YAAqB,KAAa,EAAW,QAAgB;QAAxC,UAAK,GAAL,KAAK,CAAQ;QAAW,aAAQ,GAAR,QAAQ,CAAQ;IAAG,CAAC;IAEjE,MAAM;QACJ,OAAO;YACL,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAA;IACH,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAuC;QACrD,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,QAAgB;QAClC,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QACvC,IAAI,CAAC,IAAI,IAAI,EAAE;YACb,MAAM,KAAK,GAAG,IAAA,cAAK,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACzB,IAAI,KAAK,IAAI,IAAI,EAAE;gBACjB,OAAO,IAAI,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aACxC;SACF;QACD,OAAM;IACR,CAAC;CACF;AAzBD,kCAyBC"}
1
+ {"version":3,"file":"BinaryField.js","sourceRoot":"","sources":["../src/BinaryField.ts"],"names":[],"mappings":";;;AACA,qCAAgC;AAEhC,0DAA0D;AAC1D,MAAM,aAAa;AACjB,yDAAyD;AACzD,wBAAwB,CAAA;AAE1B,MAAa,WAAW;IACtB,YACW,KAAa,EACb,QAAgB;QADhB,UAAK,GAAL,KAAK,CAAQ;QACb,aAAQ,GAAR,QAAQ,CAAQ;IACxB,CAAC;IAEJ,MAAM;QACJ,OAAO;YACL,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAA;IACH,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAuC;QACrD,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,QAAgB;QAClC,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QACvC,IAAI,CAAC,IAAI,IAAI,EAAE;YACb,MAAM,KAAK,GAAG,IAAA,cAAK,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACzB,IAAI,KAAK,IAAI,IAAI,EAAE;gBACjB,OAAO,IAAI,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aACxC;SACF;QACD,OAAM;IACR,CAAC;CACF;AA5BD,kCA4BC"}
@@ -1 +1 @@
1
- {"version":3,"file":"BinaryToBufferTask.js","sourceRoot":"","sources":["../src/BinaryToBufferTask.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AACvB,iDAA6C;AAC7C,+DAA+D;AAE/D,qCAAmC;AAEnC;;;GAGG;AACH,MAAa,kBAAmB,SAAQ,2BAA4B;IAClE,YAA6B,OAAe,EAAE,IAAc;QAC1D,KAAK,CAAC,IAAI,CAAC,CAAA;QADgB,YAAO,GAAP,OAAO,CAAQ;IAE5C,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,OAAe,EAAE,MAAc;QACxC,sEAAsE;QACtE,wCAAwC;QACxC,MAAM,IAAI,GAAG;YACX,GAAG,6CAAuB;YAC1B,OAAO;YACP,IAAI;YACJ,GAAG,GAAG,OAAO;YACb,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC;SACrB,CAAA;QACD,OAAO,IAAI,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAC9C,CAAC;IAED,KAAK,CAAC,IAAY,EAAE,GAAW;;QAC7B,IAAI;YACF,MAAM,GAAG,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,0CAAG,CAAC,CAAC,CAAA;YACjC,iCAAiC;YACjC;gBACE,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;gBACxC,IAAI,MAAM,IAAI,IAAI;oBAAE,OAAO,MAAM,CAAA;aAClC,CAAC,+CAA+C;YACjD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAChC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE;oBAClD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC7B,IAAI,MAAM,IAAI,IAAI;wBAAE,OAAO,MAAM,CAAA;iBAClC;aACF;SACF;QAAC,OAAO,MAAM,EAAE;YACf,GAAG,aAAH,GAAG,cAAH,GAAG,IAAH,GAAG,GAAK,IAAA,iBAAQ,EAAC,IAAI,CAAC;gBACpB,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;gBACjB,CAAC,CAAC,MAAM,YAAY,KAAK;oBACzB,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAA;SAC9B;QACD,OAAO,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,CAAA;IACtD,CAAC;CACF;AAzCD,gDAyCC;AAED,MAAM,SAAS,GAAG,SAAS,CAAA;AAE3B,SAAS,MAAM,CAAC,IAAmB;IACjC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAChD,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAA;AAC7D,CAAC"}
1
+ {"version":3,"file":"BinaryToBufferTask.js","sourceRoot":"","sources":["../src/BinaryToBufferTask.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AACvB,iDAA6C;AAC7C,+DAA+D;AAE/D,qCAAmC;AAEnC;;;GAGG;AACH,MAAa,kBAAmB,SAAQ,2BAA4B;IAClE,YACW,OAAe,EACxB,IAAc;QAEd,KAAK,CAAC,IAAI,CAAC,CAAA;QAHF,YAAO,GAAP,OAAO,CAAQ;IAI1B,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,OAAe,EAAE,MAAc;QACxC,sEAAsE;QACtE,wCAAwC;QACxC,MAAM,IAAI,GAAG;YACX,GAAG,6CAAuB;YAC1B,OAAO;YACP,IAAI;YACJ,GAAG,GAAG,OAAO;YACb,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC;SACrB,CAAA;QACD,OAAO,IAAI,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAC9C,CAAC;IAED,KAAK,CAAC,IAAY,EAAE,GAAW;;QAC7B,IAAI;YACF,MAAM,GAAG,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,0CAAG,CAAC,CAAC,CAAA;YACjC,iCAAiC;YACjC;gBACE,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;gBACxC,IAAI,MAAM,IAAI,IAAI;oBAAE,OAAO,MAAM,CAAA;aAClC,CAAC,+CAA+C;YACjD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAChC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE;oBAClD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC7B,IAAI,MAAM,IAAI,IAAI;wBAAE,OAAO,MAAM,CAAA;iBAClC;aACF;SACF;QAAC,OAAO,MAAM,EAAE;YACf,GAAG,aAAH,GAAG,cAAH,GAAG,IAAH,GAAG,GAAK,IAAA,iBAAQ,EAAC,IAAI,CAAC;gBACpB,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;gBACjB,CAAC,CAAC,MAAM,YAAY,KAAK;oBACzB,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAA;SAC9B;QACD,OAAO,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,CAAA;IACtD,CAAC;CACF;AA5CD,gDA4CC;AAED,MAAM,SAAS,GAAG,SAAS,CAAA;AAE3B,SAAS,MAAM,CAAC,IAAmB;IACjC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAChD,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAA;AAC7D,CAAC"}
@@ -14,3 +14,6 @@ export declare function dateTimeToExif(d: DateTime, opts?: {
14
14
  includeMilliseconds?: boolean;
15
15
  }): string;
16
16
  export declare function toExifString(d: DateOrTime): Maybe<string>;
17
+ export declare function hms(d: DateTime, opts?: {
18
+ includeMilliseconds?: boolean;
19
+ }): string;
package/dist/DateTime.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toExifString = exports.dateTimeToExif = exports.isDateOrTime = exports.DayMs = exports.HourMs = exports.MinuteMs = exports.validDateTime = void 0;
3
+ exports.hms = exports.toExifString = exports.dateTimeToExif = exports.isDateOrTime = exports.DayMs = exports.HourMs = exports.MinuteMs = exports.validDateTime = void 0;
4
4
  const luxon_1 = require("luxon");
5
5
  const ExifDate_1 = require("./ExifDate");
6
6
  const ExifDateTime_1 = require("./ExifDateTime");
@@ -35,4 +35,8 @@ function toExifString(d) {
35
35
  }
36
36
  }
37
37
  exports.toExifString = toExifString;
38
+ function hms(d, opts) {
39
+ return d.toFormat("HH:mm:ss" + ((opts === null || opts === void 0 ? void 0 : opts.includeMilliseconds) === true ? ".SSS" : ""));
40
+ }
41
+ exports.hms = hms;
38
42
  //# sourceMappingURL=DateTime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateTime.js","sourceRoot":"","sources":["../src/DateTime.ts"],"names":[],"mappings":";;;AAAA,iCAAgC;AAChC,yCAAqC;AACrC,iDAA6C;AAC7C,yCAAqC;AAGrC,SAAgB,aAAa,CAAC,EAAY;IACxC,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,CAAA;AACjC,CAAC;AAFD,sCAEC;AAEY,QAAA,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAA;AACpB,QAAA,MAAM,GAAG,EAAE,GAAG,gBAAQ,CAAA;AACtB,QAAA,KAAK,GAAG,EAAE,GAAG,cAAM,CAAA;AAIhC,SAAgB,YAAY,CAAC,CAAM;IACjC,OAAO,CACL,CAAC,YAAY,2BAAY;QACzB,CAAC,YAAY,mBAAQ;QACrB,CAAC,YAAY,mBAAQ;QACrB,gBAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CACvB,CAAA;AACH,CAAC;AAPD,oCAOC;AAED,SAAgB,cAAc,CAC5B,CAAW,EACX,IAAiE;IAEjE,OAAO,CAAC,CAAC,QAAQ,CACf,kBAAkB;QAChB,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,mBAAmB,MAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,MAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC9C,CAAA;AACH,CAAC;AATD,wCASC;AAED,SAAgB,YAAY,CAAC,CAAa;;IACxC,IAAI,gBAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QAC1B,OAAO,cAAc,CAAC,CAAC,CAAC,CAAA;KACzB;SAAM;QACL,OAAO,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,YAAY,iDAAI,CAAA;KAC3B;AACH,CAAC;AAND,oCAMC"}
1
+ {"version":3,"file":"DateTime.js","sourceRoot":"","sources":["../src/DateTime.ts"],"names":[],"mappings":";;;AAAA,iCAAgC;AAChC,yCAAqC;AACrC,iDAA6C;AAC7C,yCAAqC;AAGrC,SAAgB,aAAa,CAAC,EAAY;IACxC,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,CAAA;AACjC,CAAC;AAFD,sCAEC;AAEY,QAAA,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAA;AACpB,QAAA,MAAM,GAAG,EAAE,GAAG,gBAAQ,CAAA;AACtB,QAAA,KAAK,GAAG,EAAE,GAAG,cAAM,CAAA;AAIhC,SAAgB,YAAY,CAAC,CAAM;IACjC,OAAO,CACL,CAAC,YAAY,2BAAY;QACzB,CAAC,YAAY,mBAAQ;QACrB,CAAC,YAAY,mBAAQ;QACrB,gBAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CACvB,CAAA;AACH,CAAC;AAPD,oCAOC;AAED,SAAgB,cAAc,CAC5B,CAAW,EACX,IAAiE;IAEjE,OAAO,CAAC,CAAC,QAAQ,CACf,kBAAkB;QAChB,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,mBAAmB,MAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,MAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC9C,CAAA;AACH,CAAC;AATD,wCASC;AAED,SAAgB,YAAY,CAAC,CAAa;;IACxC,IAAI,gBAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QAC1B,OAAO,cAAc,CAAC,CAAC,CAAC,CAAA;KACzB;SAAM;QACL,OAAO,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,YAAY,iDAAI,CAAA;KAC3B;AACH,CAAC;AAND,oCAMC;AAED,SAAgB,GAAG,CACjB,CAAW,EACX,IAAwC;IAExC,OAAO,CAAC,CAAC,QAAQ,CACf,UAAU,GAAG,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,mBAAmB,MAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAChE,CAAA;AACH,CAAC;AAPD,kBAOC"}
@@ -30,6 +30,7 @@ const DefaultMaxProcs_1 = require("./DefaultMaxProcs");
30
30
  const FindExiftool_1 = require("./FindExiftool");
31
31
  const GeoTz_1 = require("./GeoTz");
32
32
  const IgnorableError_1 = require("./IgnorableError");
33
+ const IsWin32_1 = require("./IsWin32");
33
34
  const VersionTask_1 = require("./VersionTask");
34
35
  /**
35
36
  * Default values for `ExifToolOptions`, except for `processFactory` (which is
@@ -47,6 +48,7 @@ exports.DefaultExifToolOptions = Object.freeze({
47
48
  exiftoolPath: FindExiftool_1.DefaultExifToolPath,
48
49
  exiftoolArgs: DefaultExiftoolArgs_1.DefaultExiftoolArgs,
49
50
  exiftoolEnv: {},
51
+ checkPerl: !(0, IsWin32_1.isWin32)(),
50
52
  pass: "{ready}",
51
53
  fail: "{ready}",
52
54
  exitCommand: "-stay_open\nFalse\n",
@@ -62,8 +64,11 @@ exports.DefaultExifToolOptions = Object.freeze({
62
64
  "GPSPosition",
63
65
  "Orientation",
64
66
  ],
65
- includeImageDataMD5: false,
67
+ includeImageDataMD5: undefined,
68
+ imageHashType: false,
66
69
  defaultVideosToUTC: true,
70
+ backfillTimezones: false,
71
+ inferTimezoneFromDatestamps: false,
67
72
  geoTz: GeoTz_1.geoTz,
68
73
  isIgnorableError: IgnorableError_1.isIgnorableWarning,
69
74
  });
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultExifToolOptions.js","sourceRoot":"","sources":["../src/DefaultExifToolOptions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAmC;AACnC,+DAA2D;AAC3D,uDAAmD;AAEnD,iDAAoD;AACpD,mCAA+B;AAC/B,qDAAqD;AAErD,+CAA2C;AAE3C;;;GAGG;AAEU,QAAA,sBAAsB,GAG/B,MAAM,CAAC,MAAM,CAAC;IAChB,GAAG,IAAI,EAAE,CAAC,mBAAmB,EAAE;IAC/B,QAAQ,EAAE,iCAAe;IACzB,kBAAkB,EAAE,GAAG;IACvB,kBAAkB,EAAE,KAAK;IACzB,yEAAyE;IACzE,iBAAiB,EAAE,KAAK;IACxB,oBAAoB,EAAE,IAAI;IAC1B,WAAW,EAAE,CAAC;IACd,YAAY,EAAE,kCAAmB;IACjC,YAAY,EAAE,yCAAmB;IACjC,WAAW,EAAE,EAAE;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,qBAAqB;IAClC,cAAc,EAAE,IAAI,yBAAW,EAAE,CAAC,OAAO;IACzC,yBAAyB,EAAE,KAAK;IAChC,kBAAkB,EAAE,kBAAkB;IACtC,MAAM,EAAE,KAAK;IACb,WAAW,EAAE;QACX,YAAY;QACZ,aAAa;QACb,aAAa;QACb,cAAc;QACd,aAAa;QACb,aAAa;KACd;IACD,mBAAmB,EAAE,KAAK;IAC1B,kBAAkB,EAAE,IAAI;IACxB,KAAK,EAAE,aAAK;IACZ,gBAAgB,EAAE,mCAAkB;CACrC,CAAC,CAAA"}
1
+ {"version":3,"file":"DefaultExifToolOptions.js","sourceRoot":"","sources":["../src/DefaultExifToolOptions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAmC;AACnC,+DAA2D;AAC3D,uDAAmD;AAEnD,iDAAoD;AACpD,mCAA+B;AAC/B,qDAAqD;AACrD,uCAAmC;AAEnC,+CAA2C;AAE3C;;;GAGG;AAEU,QAAA,sBAAsB,GAG/B,MAAM,CAAC,MAAM,CAAC;IAChB,GAAG,IAAI,EAAE,CAAC,mBAAmB,EAAE;IAC/B,QAAQ,EAAE,iCAAe;IACzB,kBAAkB,EAAE,GAAG;IACvB,kBAAkB,EAAE,KAAK;IACzB,yEAAyE;IACzE,iBAAiB,EAAE,KAAK;IACxB,oBAAoB,EAAE,IAAI;IAC1B,WAAW,EAAE,CAAC;IACd,YAAY,EAAE,kCAAmB;IACjC,YAAY,EAAE,yCAAmB;IACjC,WAAW,EAAE,EAAE;IACf,SAAS,EAAE,CAAC,IAAA,iBAAO,GAAE;IACrB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,qBAAqB;IAClC,cAAc,EAAE,IAAI,yBAAW,EAAE,CAAC,OAAO;IACzC,yBAAyB,EAAE,KAAK;IAChC,kBAAkB,EAAE,kBAAkB;IACtC,MAAM,EAAE,KAAK;IACb,WAAW,EAAE;QACX,YAAY;QACZ,aAAa;QACb,aAAa;QACb,cAAc;QACd,aAAa;QACb,aAAa;KACd;IACD,mBAAmB,EAAE,SAAS;IAC9B,aAAa,EAAE,KAAK;IACpB,kBAAkB,EAAE,IAAI;IACxB,iBAAiB,EAAE,KAAK;IACxB,2BAA2B,EAAE,KAAK;IAClC,KAAK,EAAE,aAAK;IACZ,gBAAgB,EAAE,mCAAkB;CACrC,CAAC,CAAA"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DefaultExiftoolArgs = void 0;
4
+ // -stay_open True -@ -
4
5
  exports.DefaultExiftoolArgs = ["-stay_open", "True", "-@", "-"];
5
6
  //# sourceMappingURL=DefaultExiftoolArgs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultExiftoolArgs.js","sourceRoot":"","sources":["../src/DefaultExiftoolArgs.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA"}
1
+ {"version":3,"file":"DefaultExiftoolArgs.js","sourceRoot":"","sources":["../src/DefaultExiftoolArgs.ts"],"names":[],"mappings":";;;AAAA,uBAAuB;AACV,QAAA,mBAAmB,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA"}
@@ -8,6 +8,7 @@ export declare class ExifDate {
8
8
  readonly month: number;
9
9
  readonly day: number;
10
10
  readonly rawValue?: string | undefined;
11
+ static from(exifOrIso: string): Maybe<ExifDate>;
11
12
  static fromISO(text: string): Maybe<ExifDate>;
12
13
  private static fromPatterns;
13
14
  static fromExifStrict(text: string): Maybe<ExifDate>;
package/dist/ExifDate.js CHANGED
@@ -9,6 +9,12 @@ const String_1 = require("./String");
9
9
  * Encodes an ExifDate
10
10
  */
11
11
  class ExifDate {
12
+ static from(exifOrIso) {
13
+ var _a, _b;
14
+ return (
15
+ // in order of strictness:
16
+ (_b = (_a = this.fromExifStrict(exifOrIso)) !== null && _a !== void 0 ? _a : this.fromISO(exifOrIso)) !== null && _b !== void 0 ? _b : this.fromExifLoose(exifOrIso));
17
+ }
12
18
  static fromISO(text) {
13
19
  return this.fromDateTime(luxon_1.DateTime.fromISO(text), text);
14
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ExifDate.js","sourceRoot":"","sources":["../src/ExifDate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExifDate.js","sourceRoot":"","sources":["../src/ExifDate.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ export declare class ExifDateTime {
15
15
  readonly tzoffsetMinutes?: number | undefined;
16
16
  readonly rawValue?: string | undefined;
17
17
  readonly zoneName?: string | undefined;
18
+ static from(exifOrIso: string, defaultZone?: Maybe<string>): Maybe<ExifDateTime>;
18
19
  static fromISO(iso: string, defaultZone?: Maybe<string>): Maybe<ExifDateTime>;
19
20
  /**
20
21
  * Try to parse a date-time string from EXIF. If there is not both a date
@@ -100,5 +101,7 @@ export declare class ExifDateTime {
100
101
  * @return a new ExifDateTime from the given JSON. Note that this instance **may not be valid**.
101
102
  */
102
103
  static fromJSON(json: Omit<ReturnType<ExifDateTime["toJSON"]>, "_ctor">): ExifDateTime;
104
+ maybeMatchZone(target: ExifDateTime, maxDeltaMs?: number): Maybe<ExifDateTime>;
105
+ private ifClose;
103
106
  plus(duration: DurationLike): Maybe<ExifDateTime>;
104
107
  }
@@ -28,6 +28,12 @@ const TimeFmts = [
28
28
  * Encodes an ExifDateTime with an optional tz offset in minutes.
29
29
  */
30
30
  class ExifDateTime {
31
+ static from(exifOrIso, defaultZone) {
32
+ var _a, _b;
33
+ return (
34
+ // in order of strictness:
35
+ (_b = (_a = this.fromExifStrict(exifOrIso, defaultZone)) !== null && _a !== void 0 ? _a : this.fromISO(exifOrIso, defaultZone)) !== null && _b !== void 0 ? _b : this.fromExifLoose(exifOrIso, defaultZone));
36
+ }
31
37
  static fromISO(iso, defaultZone) {
32
38
  if ((0, String_1.blank)(iso) || null != iso.match(/^\d+$/))
33
39
  return undefined;
@@ -300,6 +306,17 @@ class ExifDateTime {
300
306
  static fromJSON(json) {
301
307
  return new ExifDateTime(json.year, json.month, json.day, json.hour, json.minute, json.second, json.millisecond, json.tzoffsetMinutes, json.rawValue, json.zoneName);
302
308
  }
309
+ maybeMatchZone(target, maxDeltaMs = 14 * DateTime_1.MinuteMs) {
310
+ var _a, _b, _c, _d, _e;
311
+ if (!target.hasZone)
312
+ return;
313
+ return ((_d = (_b = (_a = this.setZone(target.zone, { keepLocalTime: false })) === null || _a === void 0 ? void 0 : _a.ifClose(target, maxDeltaMs)) !== null && _b !== void 0 ? _b : (_c = this.setZone(target.zone, { keepLocalTime: true })) === null || _c === void 0 ? void 0 : _c.ifClose(target, maxDeltaMs)) !== null && _d !== void 0 ? _d : (_e = this.setZone("UTC", { keepLocalTime: true })) === null || _e === void 0 ? void 0 : _e.ifClose(target, maxDeltaMs));
314
+ }
315
+ ifClose(target, maxDeltaMs = 14 * DateTime_1.MinuteMs) {
316
+ const ts = this.toMillis();
317
+ const targetTs = target.toMillis();
318
+ return Math.abs(ts - targetTs) <= maxDeltaMs ? this : undefined;
319
+ }
303
320
  plus(duration) {
304
321
  let dt = this.toDateTime().plus(duration);
305
322
  if (!this.hasZone) {
@@ -1 +1 @@
1
- {"version":3,"file":"ExifDateTime.js","sourceRoot":"","sources":["../src/ExifDateTime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExifDateTime.js","sourceRoot":"","sources":["../src/ExifDateTime.ts"],"names":[],"mappings":"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"}
@@ -14,13 +14,13 @@ import { Json, Literal, RawTags } from "./RawTags";
14
14
  import { ReadTaskOptions } from "./ReadTask";
15
15
  import { ResourceEvent } from "./ResourceEvent";
16
16
  import { Struct } from "./Struct";
17
- import { APP12Tags, APP14Tags, APP1Tags, APP4Tags, APP5Tags, APP6Tags, CompositeTags, EXIFTags, ExifToolTags, FileTags, FlashPixTags, IPTCTags, JFIFTags, MakerNotesTags, MetaTags, MPFTags, PanasonicRawTags, PhotoshopTags, PrintIMTags, QuickTimeTags, RAFTags, RIFFTags, Tags, XMPTags } from "./Tags";
17
+ import { APP12Tags, APP14Tags, APP1Tags, APP4Tags, APP5Tags, APP6Tags, CompositeTags, EXIFTags, ExifToolTags, FileTags, FlashPixTags, IPTCTags, JFIFTags, MPFTags, MakerNotesTags, MetaTags, PanasonicRawTags, PhotoshopTags, PrintIMTags, QuickTimeTags, RAFTags, RIFFTags, Tags, XMPTags } from "./Tags";
18
18
  import { Version } from "./Version";
19
19
  import { WriteTags } from "./WriteTags";
20
20
  import { WriteTaskOptions } from "./WriteTask";
21
21
  export { BinaryField } from "./BinaryField";
22
- export { DefaultExiftoolArgs } from "./DefaultExiftoolArgs";
23
22
  export { DefaultExifToolOptions } from "./DefaultExifToolOptions";
23
+ export { DefaultExiftoolArgs } from "./DefaultExiftoolArgs";
24
24
  export { DefaultMaxProcs } from "./DefaultMaxProcs";
25
25
  export { ExifDate } from "./ExifDate";
26
26
  export { ExifDateTime } from "./ExifDateTime";
@@ -29,9 +29,9 @@ export { ExifToolTask } from "./ExifToolTask";
29
29
  export { isIgnorableWarning } from "./IgnorableError";
30
30
  export { parseJSON } from "./JSON";
31
31
  export { DefaultReadTaskOptions } from "./ReadTask";
32
- export { defaultVideosToUTC, offsetMinutesToZoneName, UnsetZone, UnsetZoneName, UnsetZoneOffsetMinutes, } from "./Timezones";
32
+ export { UnsetZone, UnsetZoneName, UnsetZoneOffsetMinutes, defaultVideosToUTC, offsetMinutesToZoneName, } from "./Timezones";
33
33
  export { DefaultWriteTaskOptions } from "./WriteTask";
34
- export type { AdditionalWriteTags, APP12Tags, APP14Tags, APP1Tags, APP4Tags, APP5Tags, APP6Tags, ApplicationRecordTags, CompositeTags, EXIFTags, ExifToolOptions, ExifToolTags, ExpandedDateTags, FileTags, FlashPixTags, ICCProfileTags, IgnorableError, IPTCTags, JFIFTags, Json, Literal, MakerNotesTags, Maybe, MetaTags, MPFTags, Omit, PanasonicRawTags, PhotoshopTags, PrintIMTags, QuickTimeTags, RAFTags, RawTags, ReadTaskOptions, ResourceEvent, RIFFTags, Struct, Tags, Version, WriteTags, WriteTaskOptions, XMPTags, };
34
+ export type { APP12Tags, APP14Tags, APP1Tags, APP4Tags, APP5Tags, APP6Tags, AdditionalWriteTags, ApplicationRecordTags, CompositeTags, EXIFTags, ExifToolOptions, ExifToolTags, ExpandedDateTags, FileTags, FlashPixTags, ICCProfileTags, IPTCTags, IgnorableError, JFIFTags, Json, Literal, MPFTags, MakerNotesTags, Maybe, MetaTags, Omit, PanasonicRawTags, PhotoshopTags, PrintIMTags, QuickTimeTags, RAFTags, RIFFTags, RawTags, ReadTaskOptions, ResourceEvent, Struct, Tags, Version, WriteTags, WriteTaskOptions, XMPTags, };
35
35
  /**
36
36
  * @see https://exiftool.org/TagNames/Shortcuts.html
37
37
  */
@@ -71,6 +71,7 @@ export interface StructAppendTags {
71
71
  * instance of this class, `exiftool`.
72
72
  */
73
73
  export declare class ExifTool {
74
+ #private;
74
75
  readonly options: ExifToolOptions;
75
76
  private readonly batchCluster;
76
77
  constructor(options?: Partial<ExifToolOptions>);
@@ -97,7 +98,7 @@ export declare class ExifTool {
97
98
  * @returns {Promise<Tags>} A resolved Tags promise. If there are errors
98
99
  * during reading, the `.errors` field will be present.
99
100
  */
100
- read<T extends Tags = Tags>(file: string, optionalArgs?: string[], options?: ReadTaskOptions): Promise<T>;
101
+ read<T extends Tags = Tags>(file: string, optionalArgs?: string[], options?: Partial<ReadTaskOptions>): Promise<T>;
101
102
  /**
102
103
  * Read the tags from `file`, without any post-processing of ExifTool
103
104
  * values.
@@ -130,12 +131,13 @@ export declare class ExifTool {
130
131
  *
131
132
  * @param {string} file an existing file to write `tags` to.
132
133
  * @param {Tags} tags the tags to write to `file`.
133
- * @param {string[]} [args] any additional ExifTool arguments, like "-n".
134
- * Most consumers won't probably need this.
135
- * @returns {Promise<void>} Either the promise will be resolved if the
136
- * tags are written to successfully, or the promise will be rejected if
137
- * there are errors or warnings.
134
+ * @param {string[]} [args] any additional ExifTool arguments, like `-n`, or
135
+ * `-overwrite_original`.
136
+ * @returns {Promise<void>} Either the promise will be resolved if the tags
137
+ * are written to successfully, or the promise will be rejected if there are
138
+ * errors or warnings.
138
139
  * @memberof ExifTool
140
+ * @see https://exiftool.org/exiftool_pod.html#overwrite_original
139
141
  */
140
142
  write(file: string, tags: WriteTags, args?: string[], options?: WriteTaskOptions): Promise<void>;
141
143
  /**
package/dist/ExifTool.js CHANGED
@@ -22,11 +22,17 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
26
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
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
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
29
+ };
25
30
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
31
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
32
  };
33
+ var _ExifTool_checkForPerl;
28
34
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.exiftool = exports.ExifTool = exports.DefaultWriteTaskOptions = exports.UnsetZoneOffsetMinutes = exports.UnsetZoneName = exports.UnsetZone = exports.offsetMinutesToZoneName = exports.defaultVideosToUTC = exports.DefaultReadTaskOptions = exports.parseJSON = exports.isIgnorableWarning = exports.ExifToolTask = exports.ExifTime = exports.ExifDateTime = exports.ExifDate = exports.DefaultMaxProcs = exports.DefaultExifToolOptions = exports.DefaultExiftoolArgs = exports.BinaryField = void 0;
35
+ exports.exiftool = exports.ExifTool = exports.DefaultWriteTaskOptions = exports.offsetMinutesToZoneName = exports.defaultVideosToUTC = exports.UnsetZoneOffsetMinutes = exports.UnsetZoneName = exports.UnsetZone = exports.DefaultReadTaskOptions = exports.parseJSON = exports.isIgnorableWarning = exports.ExifToolTask = exports.ExifTime = exports.ExifDateTime = exports.ExifDate = exports.DefaultMaxProcs = exports.DefaultExiftoolArgs = exports.DefaultExifToolOptions = exports.BinaryField = void 0;
30
36
  const bc = __importStar(require("batch-cluster"));
31
37
  const _cp = __importStar(require("child_process"));
32
38
  const _fs = __importStar(require("fs"));
@@ -36,6 +42,7 @@ const BinaryExtractionTask_1 = require("./BinaryExtractionTask");
36
42
  const BinaryToBufferTask_1 = require("./BinaryToBufferTask");
37
43
  const DefaultExifToolOptions_1 = require("./DefaultExifToolOptions");
38
44
  const DeleteAllTagsArgs_1 = require("./DeleteAllTagsArgs");
45
+ const ExifToolOptions_1 = require("./ExifToolOptions");
39
46
  const IsWin32_1 = require("./IsWin32");
40
47
  const Lazy_1 = require("./Lazy");
41
48
  const Pick_1 = require("./Pick");
@@ -44,13 +51,14 @@ const ReadTask_1 = require("./ReadTask");
44
51
  const RewriteAllTagsTask_1 = require("./RewriteAllTagsTask");
45
52
  const String_1 = require("./String");
46
53
  const VersionTask_1 = require("./VersionTask");
54
+ const Which_1 = require("./Which");
47
55
  const WriteTask_1 = require("./WriteTask");
48
56
  var BinaryField_1 = require("./BinaryField");
49
57
  Object.defineProperty(exports, "BinaryField", { enumerable: true, get: function () { return BinaryField_1.BinaryField; } });
50
- var DefaultExiftoolArgs_1 = require("./DefaultExiftoolArgs");
51
- Object.defineProperty(exports, "DefaultExiftoolArgs", { enumerable: true, get: function () { return DefaultExiftoolArgs_1.DefaultExiftoolArgs; } });
52
58
  var DefaultExifToolOptions_2 = require("./DefaultExifToolOptions");
53
59
  Object.defineProperty(exports, "DefaultExifToolOptions", { enumerable: true, get: function () { return DefaultExifToolOptions_2.DefaultExifToolOptions; } });
60
+ var DefaultExiftoolArgs_1 = require("./DefaultExiftoolArgs");
61
+ Object.defineProperty(exports, "DefaultExiftoolArgs", { enumerable: true, get: function () { return DefaultExiftoolArgs_1.DefaultExiftoolArgs; } });
54
62
  var DefaultMaxProcs_1 = require("./DefaultMaxProcs");
55
63
  Object.defineProperty(exports, "DefaultMaxProcs", { enumerable: true, get: function () { return DefaultMaxProcs_1.DefaultMaxProcs; } });
56
64
  var ExifDate_1 = require("./ExifDate");
@@ -68,11 +76,11 @@ Object.defineProperty(exports, "parseJSON", { enumerable: true, get: function ()
68
76
  var ReadTask_2 = require("./ReadTask");
69
77
  Object.defineProperty(exports, "DefaultReadTaskOptions", { enumerable: true, get: function () { return ReadTask_2.DefaultReadTaskOptions; } });
70
78
  var Timezones_1 = require("./Timezones");
71
- Object.defineProperty(exports, "defaultVideosToUTC", { enumerable: true, get: function () { return Timezones_1.defaultVideosToUTC; } });
72
- Object.defineProperty(exports, "offsetMinutesToZoneName", { enumerable: true, get: function () { return Timezones_1.offsetMinutesToZoneName; } });
73
79
  Object.defineProperty(exports, "UnsetZone", { enumerable: true, get: function () { return Timezones_1.UnsetZone; } });
74
80
  Object.defineProperty(exports, "UnsetZoneName", { enumerable: true, get: function () { return Timezones_1.UnsetZoneName; } });
75
81
  Object.defineProperty(exports, "UnsetZoneOffsetMinutes", { enumerable: true, get: function () { return Timezones_1.UnsetZoneOffsetMinutes; } });
82
+ Object.defineProperty(exports, "defaultVideosToUTC", { enumerable: true, get: function () { return Timezones_1.defaultVideosToUTC; } });
83
+ Object.defineProperty(exports, "offsetMinutesToZoneName", { enumerable: true, get: function () { return Timezones_1.offsetMinutesToZoneName; } });
76
84
  var WriteTask_2 = require("./WriteTask");
77
85
  Object.defineProperty(exports, "DefaultWriteTaskOptions", { enumerable: true, get: function () { return WriteTask_2.DefaultWriteTaskOptions; } });
78
86
  const _ignoreShebang = (0, Lazy_1.lazy)(() => !(0, IsWin32_1.isWin32)() && !_fs.existsSync("/usr/bin/perl"));
@@ -90,13 +98,28 @@ class ExifTool {
90
98
  */
91
99
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
92
100
  this.on = (event, listener) => this.batchCluster.on(event, listener);
101
+ _ExifTool_checkForPerl.set(this, (0, Lazy_1.lazy)(async () => {
102
+ if (this.options.checkPerl) {
103
+ const perl = await (0, Which_1.which)("perl");
104
+ if (perl == null) {
105
+ throw new Error("ExifTool requires perl. Please install perl and try again.");
106
+ }
107
+ }
108
+ })
109
+ /**
110
+ * Most users will not need to use `enqueueTask` directly. This method
111
+ * supports submitting custom `BatchCluster` tasks.
112
+ *
113
+ * @see BinaryExtractionTask for an example task implementation
114
+ */
115
+ );
93
116
  if (options != null && typeof options !== "object") {
94
117
  throw new Error("Please update caller to the new ExifTool constructor API");
95
118
  }
96
- const o = {
119
+ const o = (0, ExifToolOptions_1.handleDeprecatedOptions)({
97
120
  ...DefaultExifToolOptions_1.DefaultExifToolOptions,
98
121
  ...options,
99
- };
122
+ });
100
123
  const ignoreShebang = (_a = o.ignoreShebang) !== null && _a !== void 0 ? _a : _ignoreShebang();
101
124
  const env = { ...o.exiftoolEnv, LANG: "C" };
102
125
  if ((0, String_1.notBlank)(process_1.default.env.EXIFTOOL_HOME) && (0, String_1.blank)(env.EXIFTOOL_HOME)) {
@@ -146,7 +169,7 @@ class ExifTool {
146
169
  read(file, optionalArgs = ["-fast"], options) {
147
170
  return this.enqueueTask(() => ReadTask_1.ReadTask.for(file, {
148
171
  optionalArgs,
149
- ...(0, Pick_1.pick)(this.options, "numericTags", "useMWG", "includeImageDataMD5", "defaultVideosToUTC", "geoTz"),
172
+ ...(0, Pick_1.pick)(this.options, "numericTags", "useMWG", "imageHashType", "defaultVideosToUTC", "geoTz"),
150
173
  ...options,
151
174
  })); // < no way to know at compile time if we're going to get back a T!
152
175
  }
@@ -184,12 +207,13 @@ class ExifTool {
184
207
  *
185
208
  * @param {string} file an existing file to write `tags` to.
186
209
  * @param {Tags} tags the tags to write to `file`.
187
- * @param {string[]} [args] any additional ExifTool arguments, like "-n".
188
- * Most consumers won't probably need this.
189
- * @returns {Promise<void>} Either the promise will be resolved if the
190
- * tags are written to successfully, or the promise will be rejected if
191
- * there are errors or warnings.
210
+ * @param {string[]} [args] any additional ExifTool arguments, like `-n`, or
211
+ * `-overwrite_original`.
212
+ * @returns {Promise<void>} Either the promise will be resolved if the tags
213
+ * are written to successfully, or the promise will be rejected if there are
214
+ * errors or warnings.
192
215
  * @memberof ExifTool
216
+ * @see https://exiftool.org/exiftool_pod.html#overwrite_original
193
217
  */
194
218
  write(file, tags, args, options) {
195
219
  const retriable = false;
@@ -327,6 +351,7 @@ class ExifTool {
327
351
  */
328
352
  enqueueTask(task, retriable = true) {
329
353
  const f = async () => {
354
+ await __classPrivateFieldGet(this, _ExifTool_checkForPerl, "f").call(this);
330
355
  const t = await task();
331
356
  // if we have to add more options for every task, rethink this approach:
332
357
  t.isIgnorableError = this.options.isIgnorableError;
@@ -376,6 +401,7 @@ class ExifTool {
376
401
  }
377
402
  }
378
403
  exports.ExifTool = ExifTool;
404
+ _ExifTool_checkForPerl = new WeakMap();
379
405
  /**
380
406
  * Use this singleton rather than instantiating new ExifTool instances in order
381
407
  * to leverage a single running ExifTool process. As of v3.0, its `maxProcs` is