exiftool-vendored 18.5.0 β†’ 19.0.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 +18 -0
  2. package/LICENSE +1 -1
  3. package/README.md +6 -5
  4. package/dist/BinaryExtractionTask.js +3 -1
  5. package/dist/BinaryExtractionTask.js.map +1 -1
  6. package/dist/BinaryToBufferTask.js +8 -1
  7. package/dist/BinaryToBufferTask.js.map +1 -1
  8. package/dist/DateTime.d.ts +1 -1
  9. package/dist/DateTime.js +1 -1
  10. package/dist/DateTime.js.map +1 -1
  11. package/dist/ExifDate.js +9 -9
  12. package/dist/ExifDate.js.map +1 -1
  13. package/dist/ExifDateTime.d.ts +16 -4
  14. package/dist/ExifDateTime.js +38 -26
  15. package/dist/ExifDateTime.js.map +1 -1
  16. package/dist/ExifTime.js +7 -7
  17. package/dist/ExifTime.js.map +1 -1
  18. package/dist/ExifTool.d.ts +11 -132
  19. package/dist/ExifTool.js +6 -11
  20. package/dist/ExifTool.js.map +1 -1
  21. package/dist/ExifToolOptions.d.ts +119 -0
  22. package/dist/ExifToolOptions.js +3 -0
  23. package/dist/ExifToolOptions.js.map +1 -0
  24. package/dist/ExifToolTask.js +3 -3
  25. package/dist/ExifToolTask.js.map +1 -1
  26. package/dist/FilenameCharsetArgs.d.ts +16 -0
  27. package/dist/FilenameCharsetArgs.js +23 -0
  28. package/dist/FilenameCharsetArgs.js.map +1 -0
  29. package/dist/IsWin32.d.ts +1 -0
  30. package/dist/IsWin32.js +30 -0
  31. package/dist/IsWin32.js.map +1 -0
  32. package/dist/Maybe.d.ts +2 -2
  33. package/dist/MaybeReadonly.d.ts +1 -1
  34. package/dist/Object.d.ts +1 -1
  35. package/dist/Omit.d.ts +1 -0
  36. package/dist/Omit.js +3 -0
  37. package/dist/Omit.js.map +1 -0
  38. package/dist/PreviewTag.d.ts +1 -1
  39. package/dist/ReadRawTask.js +8 -7
  40. package/dist/ReadRawTask.js.map +1 -1
  41. package/dist/ReadTask.d.ts +2 -2
  42. package/dist/ReadTask.js +7 -2
  43. package/dist/ReadTask.js.map +1 -1
  44. package/dist/RewriteAllTagsTask.js +3 -1
  45. package/dist/RewriteAllTagsTask.js.map +1 -1
  46. package/dist/Struct.d.ts +1 -1
  47. package/dist/Tags.d.ts +44 -44
  48. package/dist/WriteTask.d.ts +1 -1
  49. package/dist/WriteTask.js +13 -17
  50. package/dist/WriteTask.js.map +1 -1
  51. package/package.json +27 -21
package/CHANGELOG.md CHANGED
@@ -25,6 +25,24 @@ vendored versions of ExifTool match the version that they vendor.
25
25
 
26
26
  ## Version history
27
27
 
28
+ ### v19.0.0
29
+
30
+ - πŸ’”/🐞 [Fix #124](https://github.com/photostructure/exiftool-vendored.js/issues/124): Improved support for filenames with non-latin (a-z0-9) characters on Windows machines that weren't set to UTF-8. Thanks for the bug report and PR, [JΓΌrg Rast](https://github.com/jrast)!
31
+
32
+ - πŸ’”/🐞 ExifTool v12.54 has several new tags (see the diff) and now renders `GPSAltitude` with negative values when the altitude is below sea level.
33
+
34
+ - 🌱 ExifTool upgraded to [v12.54](https://exiftool.org/history.html#v12.54)
35
+
36
+ - πŸ“¦ Updated dependencies, re-ran prettier, rebuilt tags, rebuilt docs
37
+
38
+ - πŸ“¦ Node v19 added to the CI test matrix
39
+
40
+ ### v18.6.0
41
+
42
+ - 🌱 ExifTool upgraded to [v12.50](https://exiftool.org/history.html#v12.50)
43
+
44
+ - πŸ“¦ Updated dependencies, rebuild tags and docs
45
+
28
46
  ### v18.5.0
29
47
 
30
48
  - ✨ `ExifToolOptions` now supports an `ignorableError` predicate, used for characterizing errors as "ignorable". Defaults to ignoring the following styles of warnings:
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2016-2022 Matthew McEachen
3
+ Copyright (c) 2016-2023 Matthew McEachen
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -299,16 +299,17 @@ If you run this in a docker image based on Alpine or Debian Slim, **this won't w
299
299
 
300
300
  ## Resource hygiene
301
301
 
302
- **Always remember to call `.end()`.**
302
+ **Call `ExifTool.end()` when you're done**
303
+
304
+ You must explicitly call
305
+ [`.end()`](https://photostructure.github.io/exiftool-vendored.js/classes/ExifTool.html#end)
306
+ on any used instance of `ExifTool` to allow `node` to exit gracefully.
303
307
 
304
308
  ExifTool child processes consume system resources, and [prevents `node` from
305
309
  exiting due to the way Node.js streams
306
310
  work](https://github.com/photostructure/exiftool-vendored.js/issues/106).
307
311
 
308
- You must explicitly call `.end()` on any used instance of `ExifTool` for `node`
309
- to exit gracefully.
310
-
311
- This call cannot be in a `process.on("exit")` hook, as the `stdio` streams
312
+ Note that you can't call cannot be in a `process.on("exit")` hook, as the `stdio` streams
312
313
  attached to the child process cannot be `unref`'ed. (If there's a solution to
313
314
  this, please post to the above issue!)
314
315
 
@@ -7,6 +7,7 @@ exports.BinaryExtractionTask = void 0;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const ExifToolTask_1 = require("./ExifToolTask");
9
9
  const String_1 = require("./String");
10
+ const FilenameCharsetArgs_1 = require("./FilenameCharsetArgs");
10
11
  const StdoutRe = /\b(\d+) output files? created/i;
11
12
  /**
12
13
  * Task that returns an error string (to prevent retries), or undefined if
@@ -18,13 +19,14 @@ class BinaryExtractionTask extends ExifToolTask_1.ExifToolTask {
18
19
  }
19
20
  static for(tagname, imgSrc, imgDest) {
20
21
  const args = [
22
+ ...FilenameCharsetArgs_1.Utf8FilenameCharsetArgs,
21
23
  "-b",
22
24
  "-" + tagname,
23
- path_1.default.resolve(imgSrc),
24
25
  "-w",
25
26
  // The %0f prevents shell escaping. See
26
27
  // https://exiftool.org/exiftool_pod.html#w-EXT-or-FMT--textOut
27
28
  "%0f" + path_1.default.resolve(imgDest),
29
+ path_1.default.resolve(imgSrc),
28
30
  ];
29
31
  return new BinaryExtractionTask(args);
30
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BinaryExtractionTask.js","sourceRoot":"","sources":["../src/BinaryExtractionTask.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AACvB,iDAA6C;AAE7C,qCAA8B;AAE9B,MAAM,QAAQ,GAAG,gCAAgC,CAAA;AAEjD;;;GAGG;AACH,MAAa,oBAAqB,SAAQ,2BAA2B;IACnE,YAAoB,IAAc;QAChC,KAAK,CAAC,IAAI,CAAC,CAAA;IACb,CAAC;IAED,MAAM,CAAC,GAAG,CACR,OAAe,EACf,MAAc,EACd,OAAe;QAEf,MAAM,IAAI,GAAG;YACX,IAAI;YACJ,GAAG,GAAG,OAAO;YACb,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACpB,IAAI;YACJ,uCAAuC;YACvC,+DAA+D;YAC/D,KAAK,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SAC9B,CAAA;QACD,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,GAAW;QAC/B,MAAM,CAAC,GAAG,IAAA,YAAG,EAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;QAC5B,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,IAAI,GAAG,IAAI,IAAI,EAAE;YACf,MAAM,GAAG,CAAA;SACV;aAAM,IAAI,CAAC,IAAI,IAAI,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,MAAM,GAAG,GAAG,CAAC,CAAA;SACxE;aAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YACvB,OAAM;SACP;aAAM;YACL,2EAA2E;YAC3E,OAAO,CAAC,CAAA;SACT;IACH,CAAC;CACF;AApCD,oDAoCC"}
1
+ {"version":3,"file":"BinaryExtractionTask.js","sourceRoot":"","sources":["../src/BinaryExtractionTask.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AACvB,iDAA6C;AAE7C,qCAA8B;AAC9B,+DAA+D;AAE/D,MAAM,QAAQ,GAAG,gCAAgC,CAAA;AAEjD;;;GAGG;AACH,MAAa,oBAAqB,SAAQ,2BAA2B;IACnE,YAAoB,IAAc;QAChC,KAAK,CAAC,IAAI,CAAC,CAAA;IACb,CAAC;IAED,MAAM,CAAC,GAAG,CACR,OAAe,EACf,MAAc,EACd,OAAe;QAEf,MAAM,IAAI,GAAG;YACX,GAAG,6CAAuB;YAC1B,IAAI;YACJ,GAAG,GAAG,OAAO;YACb,IAAI;YACJ,uCAAuC;YACvC,+DAA+D;YAC/D,KAAK,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YAC7B,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC;SACrB,CAAA;QACD,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,GAAW;QAC/B,MAAM,CAAC,GAAG,IAAA,YAAG,EAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;QAC5B,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,IAAI,GAAG,IAAI,IAAI,EAAE;YACf,MAAM,GAAG,CAAA;SACV;aAAM,IAAI,CAAC,IAAI,IAAI,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,MAAM,GAAG,GAAG,CAAC,CAAA;SACxE;aAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YACvB,OAAM;SACP;aAAM;YACL,2EAA2E;YAC3E,OAAO,CAAC,CAAA;SACT;IACH,CAAC;CACF;AArCD,oDAqCC"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.BinaryToBufferTask = void 0;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const ExifToolTask_1 = require("./ExifToolTask");
9
+ const FilenameCharsetArgs_1 = require("./FilenameCharsetArgs");
9
10
  const String_1 = require("./String");
10
11
  /**
11
12
  * Task that returns an error string (to prevent retries), or undefined if
@@ -19,7 +20,13 @@ class BinaryToBufferTask extends ExifToolTask_1.ExifToolTask {
19
20
  static for(tagname, imgSrc) {
20
21
  // NOTE TO FUTURE ME: we don't need to escape these arguments, because
21
22
  // ExifTool separates them via newlines.
22
- const args = ["-json", "-b", "-" + tagname, path_1.default.resolve(imgSrc)];
23
+ const args = [
24
+ ...FilenameCharsetArgs_1.Utf8FilenameCharsetArgs,
25
+ "-json",
26
+ "-b",
27
+ "-" + tagname,
28
+ path_1.default.resolve(imgSrc),
29
+ ];
23
30
  return new BinaryToBufferTask(tagname, args);
24
31
  }
25
32
  parse(data, err) {
@@ -1 +1 @@
1
- {"version":3,"file":"BinaryToBufferTask.js","sourceRoot":"","sources":["../src/BinaryToBufferTask.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AACvB,iDAA6C;AAE7C,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,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,EAAE,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;QACjE,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;AAnCD,gDAmCC;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,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"}
@@ -7,7 +7,7 @@ export declare function validDateTime(dt: DateTime): boolean;
7
7
  export declare const MinuteMs: number;
8
8
  export declare const HourMs: number;
9
9
  export declare const DayMs: number;
10
- export declare type DateOrTime = ExifDateTime | ExifDate | ExifTime | DateTime;
10
+ export type DateOrTime = ExifDateTime | ExifDate | ExifTime | DateTime;
11
11
  export declare function isDateOrTime(o: any): o is DateOrTime;
12
12
  export declare function dateTimeToExif(d: DateTime): string;
13
13
  export declare function toExifString(d: DateOrTime): Maybe<string>;
package/dist/DateTime.js CHANGED
@@ -20,7 +20,7 @@ function isDateOrTime(o) {
20
20
  }
21
21
  exports.isDateOrTime = isDateOrTime;
22
22
  function dateTimeToExif(d) {
23
- return d.toFormat("y:LL:dd HH:mm:ss.u");
23
+ return d.toFormat("y:MM:dd HH:mm:ss.u");
24
24
  }
25
25
  exports.dateTimeToExif = dateTimeToExif;
26
26
  function toExifString(d) {
@@ -1 +1 @@
1
- {"version":3,"file":"DateTime.js","sourceRoot":"","sources":["../src/DateTime.ts"],"names":[],"mappings":";;;AAAA,iCAAgC;AAEhC,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,CAAC,YAAY,gBAAQ,CACtB,CAAA;AACH,CAAC;AAPD,oCAOC;AAED,SAAgB,cAAc,CAAC,CAAW;IACxC,OAAO,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;AACzC,CAAC;AAFD,wCAEC;AAED,SAAgB,YAAY,CAAC,CAAa;IACxC,IAAI,CAAC,YAAY,gBAAQ,EAAE;QACzB,OAAO,cAAc,CAAC,CAAC,CAAC,CAAA;KACzB;SAAM;QACL,OAAO,CAAC,CAAC,YAAY,EAAE,CAAA;KACxB;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,CAAC,YAAY,gBAAQ,CACtB,CAAA;AACH,CAAC;AAPD,oCAOC;AAED,SAAgB,cAAc,CAAC,CAAW;IACxC,OAAO,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;AACzC,CAAC;AAFD,wCAEC;AAED,SAAgB,YAAY,CAAC,CAAa;IACxC,IAAI,CAAC,YAAY,gBAAQ,EAAE;QACzB,OAAO,cAAc,CAAC,CAAC,CAAC,CAAA;KACzB;SAAM;QACL,OAAO,CAAC,CAAC,YAAY,EAAE,CAAA;KACxB;AACH,CAAC;AAND,oCAMC"}
package/dist/ExifDate.js CHANGED
@@ -9,15 +9,6 @@ const String_1 = require("./String");
9
9
  * Encodes an ExifDate
10
10
  */
11
11
  class ExifDate {
12
- constructor(year, // full year (probably 2019-ish, but maybe Japanese 30-ish). See https://ericasadun.com/2018/12/25/iso-8601-yyyy-yyyy-and-why-your-year-may-be-wrong/
13
- month, // 1-12, (no crazy 0-11 nonsense from Date!)
14
- day, // 1-31
15
- rawValue) {
16
- this.year = year;
17
- this.month = month;
18
- this.day = day;
19
- this.rawValue = rawValue;
20
- }
21
12
  static fromISO(text) {
22
13
  return this.fromDateTime(luxon_1.DateTime.fromISO(text), text);
23
14
  }
@@ -48,6 +39,15 @@ class ExifDate {
48
39
  ? new ExifDate(dt.year, dt.month, dt.day, rawValue)
49
40
  : undefined;
50
41
  }
42
+ constructor(year, // full year (probably 2019-ish, but maybe Japanese 30-ish). See https://ericasadun.com/2018/12/25/iso-8601-yyyy-yyyy-and-why-your-year-may-be-wrong/
43
+ month, // 1-12, (no crazy 0-11 nonsense from Date!)
44
+ day, // 1-31
45
+ rawValue) {
46
+ this.year = year;
47
+ this.month = month;
48
+ this.day = day;
49
+ this.rawValue = rawValue;
50
+ }
51
51
  toDate() {
52
52
  return new Date(this.year, this.month - 1, this.day);
53
53
  }
@@ -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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"}
@@ -17,17 +17,29 @@ export declare class ExifDateTime {
17
17
  readonly zoneName?: string | undefined;
18
18
  static fromISO(iso: string, zone?: Maybe<string>): Maybe<ExifDateTime>;
19
19
  /**
20
- * Try to parse a date-time string from EXIF. If there is not both a date and
21
- * a time component, returns `undefined`.
20
+ * Try to parse a date-time string from EXIF. If there is not both a date
21
+ * and a time component, returns `undefined`.
22
22
  *
23
23
  * @param text from EXIF metadata
24
- * @param defaultZone a "zone name" which may be IANA, like
24
+ * @param defaultZone a "zone name" to use as a backstop, or default, if
25
+ * `text` doesn't specify a zone. This may be IANA-formatted, like
25
26
  * "America/Los_Angeles", or an offset, like "UTC-3". See
26
27
  * `offsetMinutesToZoneName`.
27
28
  */
28
29
  static fromEXIF(text: string, defaultZone?: Maybe<string>): Maybe<ExifDateTime>;
29
30
  private static fromPatterns;
30
- static fromExifStrict(text: Maybe<string>, zone?: Maybe<string>): Maybe<ExifDateTime>;
31
+ /**
32
+ * Parse the given date-time string, EXIF-formatted.
33
+ *
34
+ * @param text from EXIF metadata, in `y:M:d H:m:s` format (with optional
35
+ * sub-seconds and/or timezone)
36
+
37
+ * @param defaultZone a "zone name" to use as a backstop, or default, if
38
+ * `text` doesn't specify a zone. This may be IANA-formatted, like
39
+ * "America/Los_Angeles", or an offset, like "UTC-3". See
40
+ * `offsetMinutesToZoneName`.
41
+ */
42
+ static fromExifStrict(text: Maybe<string>, defaultZone?: Maybe<string>): Maybe<ExifDateTime>;
31
43
  static fromExifLoose(text: Maybe<string>, defaultZone?: Maybe<string>): Maybe<ExifDateTime>;
32
44
  static fromDateTime(dt: DateTime, rawValue?: string): Maybe<ExifDateTime>;
33
45
  /**
@@ -23,19 +23,6 @@ const Timezones_1 = require("./Timezones");
23
23
  * Encodes an ExifDateTime with an optional tz offset in minutes.
24
24
  */
25
25
  class ExifDateTime {
26
- constructor(year, month, day, hour, minute, second, millisecond, tzoffsetMinutes, rawValue, zoneName) {
27
- this.year = year;
28
- this.month = month;
29
- this.day = day;
30
- this.hour = hour;
31
- this.minute = minute;
32
- this.second = second;
33
- this.millisecond = millisecond;
34
- this.tzoffsetMinutes = tzoffsetMinutes;
35
- this.rawValue = rawValue;
36
- this.zoneName = zoneName;
37
- _ExifDateTime_dt.set(this, void 0);
38
- }
39
26
  static fromISO(iso, zone) {
40
27
  if ((0, String_1.blank)(iso) || null != iso.match(/^\d+$/))
41
28
  return undefined;
@@ -54,22 +41,22 @@ class ExifDateTime {
54
41
  ]);
55
42
  }
56
43
  /**
57
- * Try to parse a date-time string from EXIF. If there is not both a date and
58
- * a time component, returns `undefined`.
44
+ * Try to parse a date-time string from EXIF. If there is not both a date
45
+ * and a time component, returns `undefined`.
59
46
  *
60
47
  * @param text from EXIF metadata
61
- * @param defaultZone a "zone name" which may be IANA, like
48
+ * @param defaultZone a "zone name" to use as a backstop, or default, if
49
+ * `text` doesn't specify a zone. This may be IANA-formatted, like
62
50
  * "America/Los_Angeles", or an offset, like "UTC-3". See
63
51
  * `offsetMinutesToZoneName`.
64
52
  */
65
53
  static fromEXIF(text, defaultZone) {
54
+ var _a;
66
55
  if ((0, String_1.blank)(text))
67
56
  return undefined;
68
- return (0, Maybe_1.firstDefinedThunk)([
69
- () => this.fromExifStrict(text, defaultZone),
70
- () => this.fromISO(text, defaultZone),
71
- () => this.fromExifLoose(text, defaultZone),
72
- ]);
57
+ return (
58
+ // .fromExifStrict() uses .fromISO() as a backstop
59
+ (_a = this.fromExifStrict(text, defaultZone)) !== null && _a !== void 0 ? _a : this.fromExifLoose(text, defaultZone));
73
60
  }
74
61
  static fromPatterns(text, fmts) {
75
62
  const s = (0, String_1.toS)(text).trim();
@@ -98,7 +85,18 @@ class ExifDateTime {
98
85
  }
99
86
  return;
100
87
  }
101
- static fromExifStrict(text, zone) {
88
+ /**
89
+ * Parse the given date-time string, EXIF-formatted.
90
+ *
91
+ * @param text from EXIF metadata, in `y:M:d H:m:s` format (with optional
92
+ * sub-seconds and/or timezone)
93
+
94
+ * @param defaultZone a "zone name" to use as a backstop, or default, if
95
+ * `text` doesn't specify a zone. This may be IANA-formatted, like
96
+ * "America/Los_Angeles", or an offset, like "UTC-3". See
97
+ * `offsetMinutesToZoneName`.
98
+ */
99
+ static fromExifStrict(text, defaultZone) {
102
100
  var _a;
103
101
  if ((0, String_1.blank)(text))
104
102
  return undefined;
@@ -110,10 +108,11 @@ class ExifDateTime {
110
108
  { fmt: "y:M:d H:m:s.u'Z'", zone: "utc" },
111
109
  { fmt: "y:M:d H:m:s'Z'", zone: "utc" },
112
110
  // Otherwise use the default zone:
113
- { fmt: "y:M:d H:m:s.u", zone },
114
- { fmt: "y:M:d H:m:s", zone },
115
- // Not found yet? Maybe it's in ISO format? See https://github.com/photostructure/exiftool-vendored.js/issues/71
116
- ])) !== null && _a !== void 0 ? _a : this.fromISO(text, zone));
111
+ { fmt: "y:M:d H:m:s.u", zone: defaultZone },
112
+ { fmt: "y:M:d H:m:s", zone: defaultZone },
113
+ // Not found yet? Maybe it's in ISO format? See
114
+ // https://github.com/photostructure/exiftool-vendored.js/issues/71
115
+ ])) !== null && _a !== void 0 ? _a : this.fromISO(text, defaultZone));
117
116
  }
118
117
  static fromExifLoose(text, defaultZone) {
119
118
  if ((0, String_1.blank)(text))
@@ -156,6 +155,19 @@ class ExifDateTime {
156
155
  static now(opts = {}) {
157
156
  return this.fromMillis(Date.now(), opts);
158
157
  }
158
+ constructor(year, month, day, hour, minute, second, millisecond, tzoffsetMinutes, rawValue, zoneName) {
159
+ this.year = year;
160
+ this.month = month;
161
+ this.day = day;
162
+ this.hour = hour;
163
+ this.minute = minute;
164
+ this.second = second;
165
+ this.millisecond = millisecond;
166
+ this.tzoffsetMinutes = tzoffsetMinutes;
167
+ this.rawValue = rawValue;
168
+ this.zoneName = zoneName;
169
+ _ExifDateTime_dt.set(this, void 0);
170
+ }
159
171
  get millis() {
160
172
  return this.millisecond;
161
173
  }
@@ -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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"}
package/dist/ExifTime.js CHANGED
@@ -8,13 +8,6 @@ const String_1 = require("./String");
8
8
  * Encodes an ExifTime (which may not have a timezone offset)
9
9
  */
10
10
  class ExifTime {
11
- constructor(hour, minute, second, millisecond, rawValue) {
12
- this.hour = hour;
13
- this.minute = minute;
14
- this.second = second;
15
- this.millisecond = millisecond;
16
- this.rawValue = rawValue;
17
- }
18
11
  static fromEXIF(text) {
19
12
  if ((0, String_1.blank)(text))
20
13
  return;
@@ -26,6 +19,13 @@ class ExifTime {
26
19
  ? undefined
27
20
  : new ExifTime(dt.hour, dt.minute, dt.second, dt.millisecond, rawValue);
28
21
  }
22
+ constructor(hour, minute, second, millisecond, rawValue) {
23
+ this.hour = hour;
24
+ this.minute = minute;
25
+ this.second = second;
26
+ this.millisecond = millisecond;
27
+ this.rawValue = rawValue;
28
+ }
29
29
  get millis() {
30
30
  return this.millisecond;
31
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ExifTime.js","sourceRoot":"","sources":["../src/ExifTime.ts"],"names":[],"mappings":";;;AAAA,iCAAgC;AAChC,mCAA2C;AAC3C,qCAAiD;AAEjD;;GAEG;AACH,MAAa,QAAQ;IAiBnB,YACW,IAAY,EACZ,MAAc,EACd,MAAc,EACd,WAAoB,EACpB,QAAiB;QAJjB,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAS;QACpB,aAAQ,GAAR,QAAQ,CAAS;IACzB,CAAC;IAtBJ,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC;YAAE,OAAM;QACvB,IAAI,GAAG,IAAA,YAAG,EAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;QACvB,OAAO,IAAA,aAAK,EACV,CAAC,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC,EACxD,CAAC,GAAG,EAAE,EAAE,CACN,IAAA,WAAG,EAAC,gBAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAC3E,CAAA;IACH,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,EAAY,EAAE,QAAiB;QACjD,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO;YAC9B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAC3E,CAAC;IAUD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEO,MAAM;QACZ,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC;YACvD,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,GAAG,GAAG,IAAA,aAAI,EAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAClC,CAAC;IAED,QAAQ;QACN,OAAO,IAAA,aAAI,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;IAC5E,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;IACxB,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;IACxB,CAAC;IAED,MAAM;QACJ,OAAO;YACL,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAA;IACH,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAoC;QAClD,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,QAAQ,CACd,CAAA;IACH,CAAC;CACF;AAnED,4BAmEC"}
1
+ {"version":3,"file":"ExifTime.js","sourceRoot":"","sources":["../src/ExifTime.ts"],"names":[],"mappings":";;;AAAA,iCAAgC;AAChC,mCAA2C;AAC3C,qCAAiD;AAEjD;;GAEG;AACH,MAAa,QAAQ;IACnB,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC;YAAE,OAAM;QACvB,IAAI,GAAG,IAAA,YAAG,EAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;QACvB,OAAO,IAAA,aAAK,EACV,CAAC,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC,EACxD,CAAC,GAAG,EAAE,EAAE,CACN,IAAA,WAAG,EAAC,gBAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAC3E,CAAA;IACH,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,EAAY,EAAE,QAAiB;QACjD,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO;YAC9B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAC3E,CAAC;IAED,YACW,IAAY,EACZ,MAAc,EACd,MAAc,EACd,WAAoB,EACpB,QAAiB;QAJjB,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAS;QACpB,aAAQ,GAAR,QAAQ,CAAS;IACzB,CAAC;IAEJ,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEO,MAAM;QACZ,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC;YACvD,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,GAAG,GAAG,IAAA,aAAI,EAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAClC,CAAC;IAED,QAAQ;QACN,OAAO,IAAA,aAAI,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;IAC5E,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;IACxB,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;IACxB,CAAC;IAED,MAAM;QACJ,OAAO;YACL,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAA;IACH,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAoC;QAClD,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,QAAQ,CACd,CAAA;IACH,CAAC;CACF;AAnED,4BAmEC"}
@@ -1,14 +1,14 @@
1
1
  /// <reference types="node" />
2
- /// <reference types="node" />
3
2
  import * as bc from "batch-cluster";
4
3
  import { ApplicationRecordTags } from "./ApplicationRecordTags";
5
4
  import { ExifDate } from "./ExifDate";
6
5
  import { ExifDateTime } from "./ExifDateTime";
6
+ import { ExifToolOptions } from "./ExifToolOptions";
7
7
  import { ExifToolTask } from "./ExifToolTask";
8
- import { geoTz } from "./GeoTz";
9
8
  import { ICCProfileTags } from "./ICCProfileTags";
10
9
  import { IgnorableError } from "./IgnorableError";
11
10
  import { Maybe } from "./Maybe";
11
+ import { Omit } from "./Omit";
12
12
  import { PreviewTag } from "./PreviewTag";
13
13
  import { ResourceEvent } from "./ResourceEvent";
14
14
  import { Struct } from "./Struct";
@@ -22,7 +22,7 @@ export { ExifToolTask } from "./ExifToolTask";
22
22
  export { isIgnorableWarning } from "./IgnorableError";
23
23
  export { parseJSON } from "./JSON";
24
24
  export { defaultVideosToUTC, offsetMinutesToZoneName, UnsetZone, UnsetZoneName, UnsetZoneOffsetMinutes, } from "./Timezones";
25
- export type { AdditionalWriteTags, APP12Tags, APP14Tags, APP1Tags, APP4Tags, APP5Tags, APP6Tags, ApplicationRecordTags, CompositeTags, EXIFTags, ExifToolTags, ExpandedDateTags, FileTags, FlashPixTags, ICCProfileTags, IgnorableError, IPTCTags, JFIFTags, MakerNotesTags, Maybe, MetaTags, MPFTags, Omit, PanasonicRawTags, PhotoshopTags, PrintIMTags, QuickTimeTags, RAFTags, ResourceEvent, RIFFTags, Struct, Tags, Version, XMPTags, };
25
+ export type { AdditionalWriteTags, APP12Tags, APP14Tags, APP1Tags, APP4Tags, APP5Tags, APP6Tags, ApplicationRecordTags, CompositeTags, EXIFTags, ExifToolTags, ExifToolOptions, ExpandedDateTags, FileTags, FlashPixTags, ICCProfileTags, IgnorableError, IPTCTags, JFIFTags, MakerNotesTags, Maybe, MetaTags, MPFTags, Omit, PanasonicRawTags, PhotoshopTags, PrintIMTags, QuickTimeTags, RAFTags, ResourceEvent, RIFFTags, Struct, Tags, Version, XMPTags, };
26
26
  export declare const DefaultExifToolPath: string;
27
27
  export declare const DefaultExiftoolArgs: string[];
28
28
  /**
@@ -37,14 +37,14 @@ export interface ShortcutTags {
37
37
  */
38
38
  AllDates?: string;
39
39
  }
40
- declare type AdditionalWriteTags = {
40
+ type AdditionalWriteTags = {
41
41
  "Orientation#"?: number;
42
42
  };
43
- declare type ExpandedDateTags = {
43
+ type ExpandedDateTags = {
44
44
  [K in keyof Tags]: (Tags[K] extends number ? number : Tags[K] extends ExifDateTime ? ExifDate | ExifDateTime : Tags[K]) | string;
45
45
  };
46
- export declare type Defined<T> = T extends undefined ? never : T;
47
- export declare type DefinedOrNullValued<T> = {
46
+ export type Defined<T> = T extends undefined ? never : T;
47
+ export type DefinedOrNullValued<T> = {
48
48
  [P in keyof T]: Defined<T[P]> | null;
49
49
  };
50
50
  export interface StructAppendTags {
@@ -57,124 +57,8 @@ export interface StructAppendTags {
57
57
  */
58
58
  "Versions+"?: Version | Version[];
59
59
  }
60
- export declare type WriteTags = DefinedOrNullValued<ShortcutTags & AdditionalWriteTags & ExpandedDateTags & StructAppendTags>;
60
+ export type WriteTags = DefinedOrNullValued<ShortcutTags & AdditionalWriteTags & ExpandedDateTags & StructAppendTags>;
61
61
  export declare const DefaultMaxProcs: number;
62
- export interface ExifToolOptions extends bc.BatchClusterOptions, bc.BatchProcessOptions, bc.ChildProcessFactory {
63
- /**
64
- * The maximum number of ExifTool child processes to spawn when load merits.
65
- *
66
- * Defaults to 1/4 the number of CPUs, minimally 1.
67
- */
68
- maxProcs: number;
69
- /**
70
- * The maximum number of requests a given ExifTool process will service before
71
- * being retired.
72
- *
73
- * Defaults to 500, to balance performance with memory usage.
74
- */
75
- maxTasksPerProcess: number;
76
- /**
77
- * Spawning new ExifTool processes must not take longer than
78
- * `spawnTimeoutMillis` millis before it times out and a new attempt is made.
79
- * Be pessimistic here--windows can regularly take several seconds to spin up
80
- * a process, thanks to antivirus shenanigans. This can't be set to a value
81
- * less than 100ms.
82
- *
83
- * Defaults to 30 seconds, to accommodate slow Windows machines.
84
- */
85
- spawnTimeoutMillis: number;
86
- /**
87
- * If requests to ExifTool take longer than this,
88
- * presume the underlying process is dead and we should restart the task. This
89
- * can't be set to a value less than 10ms, and really should be set to at more
90
- * than a second unless `taskRetries` is sufficiently large or all writes will
91
- * be to a fast local disk. Defaults to 10 seconds.
92
- */
93
- taskTimeoutMillis: number;
94
- /**
95
- * An interval timer is scheduled to do periodic maintenance of underlying
96
- * child processes with this periodicity.
97
- *
98
- * Defaults to 2 seconds.
99
- */
100
- onIdleIntervalMillis: number;
101
- /**
102
- * The number of times a task can error or timeout and be retried.
103
- *
104
- * Defaults to 1 (every task gets 2 chances).
105
- */
106
- taskRetries: number;
107
- /**
108
- * Allows for non-standard paths to ExifTool. Defaults to the perl or windows
109
- * binaries provided by `exiftool-vendored.pl` or `exiftool-vendored.exe`.
110
- */
111
- exiftoolPath: string;
112
- /**
113
- * Args passed to exiftool on launch.
114
- */
115
- exiftoolArgs: string[];
116
- /**
117
- * Environment variables passed to ExifTool (besides `EXIFTOOL_HOME`)
118
- */
119
- exiftoolEnv: NodeJS.ProcessEnv;
120
- /**
121
- * Tag names (which can have '*' glob matchers) which you want numeric values,
122
- * rather than ExifTool's "Print Conversion."
123
- *
124
- * If the tag value is only for human consumption, you may want to leave this
125
- * blank. The default is `["*Duration*"]`, but you may want to include
126
- * "Orientation" as well.
127
- */
128
- numericTags: string[];
129
- /**
130
- * Video file dates are assumed to be in UTC, rather than using timezone
131
- * inference used in images. To disable this default, set this to false.
132
- *
133
- * @see <https://github.com/photostructure/exiftool-vendored.js/issues/113>
134
- */
135
- defaultVideosToUTC: boolean;
136
- /**
137
- * `ExifTool` has a shebang line that assumes a valid `perl` is installed at
138
- * `/usr/bin/perl`.
139
- *
140
- * Some environments may not include a valid `/usr/bin/perl` (like AWS
141
- * Lambda), but `perl` may be available in your `PATH` some place else (like
142
- * `/opt/bin/perl`), if you pull in a perl layer.
143
- *
144
- * This will default to `true` in those environments as a workaround in these
145
- * situations. Note also that `perl` will be spawned in a sub-shell.
146
- */
147
- ignoreShebang: boolean;
148
- /**
149
- * Override the default geo-to-timezone lookup service.
150
- *
151
- * This defaults to `@photostructure/tz-lookup`, but if you have the
152
- * resources, consider using `geo-tz` for more accurate results.
153
- *
154
- * Here's a snippet of how to use `geo-tz` instead of `tz-lookup`:
155
- *
156
- ```js
157
- const geotz = require("geo-tz")
158
- const { ExifTool } = require("exiftool-vendored")
159
- const exiftool = new ExifTool({ geoTz: (lat, lon) => geotz.find(lat, lon)[0] })
160
- ```
161
- *
162
- * @see https://github.com/photostructure/tz-lookup
163
- * @see https://github.com/evansiroky/node-geo-tz/
164
- */
165
- geoTz: typeof geoTz;
166
- /**
167
- * Predicate for error handling.
168
- *
169
- * ExifTool will emit error and warning messages for a variety of reasons.
170
- *
171
- * The default implementation ignores all errors that begin with "Warning:"
172
- *
173
- * @return true if the error should be ignored
174
- */
175
- isIgnorableError: IgnorableError;
176
- }
177
- declare type Omit<T, K> = Pick<T, Exclude<keyof T, K>>;
178
62
  /**
179
63
  * Default values for `ExifToolOptions`, except for `processFactory` (which is
180
64
  * created by the ExifTool constructor)
@@ -227,19 +111,14 @@ export declare class ExifTool {
227
111
  * worse if you don't include `-fast` or `-fast2` (as the most expensive bit
228
112
  * is the perl interpreter and scanning the file on disk).
229
113
  *
230
- * @param args **all ExifTool arguments**, except for the file path. If
231
- * `-charset` or `filename=utf8` are missing, and you have non-ascii tag
232
- * values, you're going to have a bad day. The resolved pathname will be
233
- * appended to the args array for you, and if `-json` is missing from `args`,
234
- * that will be prepended, as it's a prerequisite to parsing the result.
114
+ * @param args any additional arguments other than the file path. Note that "-json", and the Windows unicode filename handler flags, "-charset filename=utf8", will be added automatically.
235
115
  *
236
116
  * @return Note that the return value will be similar to `Tags`, but with no
237
- * date, time, or other rich type parsing that you get from `.read()`, the
238
- * return value is wholly untyped.
117
+ * date, time, or other rich type parsing that you get from `.read()`. The field values will be `string | number | string[]`.
239
118
  *
240
119
  * @see https://github.com/photostructure/exiftool-vendored.js/issues/44
241
120
  */
242
- readRaw(file: string, args: string[]): Promise<Tags>;
121
+ readRaw(file: string, args?: string[]): Promise<Tags>;
243
122
  /**
244
123
  * Write the given `tags` to `file`.
245
124
  *