exiftool-vendored 15.2.0 → 15.6.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 (90) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +19 -0
  3. package/dist/ApplicationRecordTags.d.ts +0 -1
  4. package/dist/Array.d.ts +0 -1
  5. package/dist/AsyncRetry.d.ts +0 -1
  6. package/dist/BinaryExtractionTask.d.ts +0 -1
  7. package/dist/BinaryExtractionTask.js +7 -4
  8. package/dist/BinaryExtractionTask.js.map +1 -1
  9. package/dist/BinaryToBufferTask.d.ts +1 -3
  10. package/dist/BinaryToBufferTask.js +10 -3
  11. package/dist/BinaryToBufferTask.js.map +1 -1
  12. package/dist/DateTime.d.ts +0 -1
  13. package/dist/ExifDate.d.ts +8 -1
  14. package/dist/ExifDate.js +18 -6
  15. package/dist/ExifDate.js.map +1 -1
  16. package/dist/ExifDateTime.d.ts +16 -3
  17. package/dist/ExifDateTime.js +33 -14
  18. package/dist/ExifDateTime.js.map +1 -1
  19. package/dist/ExifTime.d.ts +8 -1
  20. package/dist/ExifTime.js +17 -5
  21. package/dist/ExifTime.js.map +1 -1
  22. package/dist/ExifTool.d.ts +4 -4
  23. package/dist/ExifTool.js +9 -7
  24. package/dist/ExifTool.js.map +1 -1
  25. package/dist/ExifToolTask.d.ts +0 -1
  26. package/dist/ExifToolTask.js +3 -3
  27. package/dist/ExifToolTask.js.map +1 -1
  28. package/dist/ICCProfileTags.d.ts +0 -1
  29. package/dist/JSON.d.ts +1 -0
  30. package/dist/JSON.js +16 -0
  31. package/dist/JSON.js.map +1 -0
  32. package/dist/Lazy.d.ts +0 -1
  33. package/dist/Maybe.d.ts +0 -1
  34. package/dist/Maybe.js +1 -1
  35. package/dist/Maybe.js.map +1 -1
  36. package/dist/Number.d.ts +0 -1
  37. package/dist/Number.js +2 -2
  38. package/dist/Number.js.map +1 -1
  39. package/dist/Object.d.ts +0 -1
  40. package/dist/PreviewTag.d.ts +0 -1
  41. package/dist/ReadRawTask.d.ts +0 -1
  42. package/dist/ReadRawTask.js +2 -2
  43. package/dist/ReadRawTask.js.map +1 -1
  44. package/dist/ReadTask.d.ts +3 -4
  45. package/dist/ReadTask.js +13 -13
  46. package/dist/ReadTask.js.map +1 -1
  47. package/dist/RewriteAllTagsTask.d.ts +0 -1
  48. package/dist/RewriteAllTagsTask.js +2 -2
  49. package/dist/RewriteAllTagsTask.js.map +1 -1
  50. package/dist/String.d.ts +0 -1
  51. package/dist/String.js +6 -3
  52. package/dist/String.js.map +1 -1
  53. package/dist/Struct.d.ts +0 -1
  54. package/dist/Struct.js +1 -1
  55. package/dist/Struct.js.map +1 -1
  56. package/dist/Tags.d.ts +9 -4
  57. package/dist/Timezones.d.ts +0 -1
  58. package/dist/Timezones.js +17 -16
  59. package/dist/Timezones.js.map +1 -1
  60. package/dist/VersionTask.d.ts +0 -1
  61. package/dist/WriteTask.d.ts +0 -1
  62. package/dist/WriteTask.js +9 -9
  63. package/dist/WriteTask.js.map +1 -1
  64. package/package.json +25 -25
  65. package/dist/ApplicationRecordTags.d.ts.map +0 -1
  66. package/dist/Array.d.ts.map +0 -1
  67. package/dist/AsyncRetry.d.ts.map +0 -1
  68. package/dist/BinaryExtractionTask.d.ts.map +0 -1
  69. package/dist/BinaryToBufferTask.d.ts.map +0 -1
  70. package/dist/DateTime.d.ts.map +0 -1
  71. package/dist/ExifDate.d.ts.map +0 -1
  72. package/dist/ExifDateTime.d.ts.map +0 -1
  73. package/dist/ExifTime.d.ts.map +0 -1
  74. package/dist/ExifTool.d.ts.map +0 -1
  75. package/dist/ExifToolTask.d.ts.map +0 -1
  76. package/dist/ICCProfileTags.d.ts.map +0 -1
  77. package/dist/Lazy.d.ts.map +0 -1
  78. package/dist/Maybe.d.ts.map +0 -1
  79. package/dist/Number.d.ts.map +0 -1
  80. package/dist/Object.d.ts.map +0 -1
  81. package/dist/PreviewTag.d.ts.map +0 -1
  82. package/dist/ReadRawTask.d.ts.map +0 -1
  83. package/dist/ReadTask.d.ts.map +0 -1
  84. package/dist/RewriteAllTagsTask.d.ts.map +0 -1
  85. package/dist/String.d.ts.map +0 -1
  86. package/dist/Struct.d.ts.map +0 -1
  87. package/dist/Tags.d.ts.map +0 -1
  88. package/dist/Timezones.d.ts.map +0 -1
  89. package/dist/VersionTask.d.ts.map +0 -1
  90. package/dist/WriteTask.d.ts.map +0 -1
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.6.0
29
+
30
+ - ✨ Added [serialization support](https://github.com/photostructure/exiftool-vendored.js/issues/102)
31
+
32
+ - 🌱 ExifTool upgraded to [v12.34](https://exiftool.org/history.html#v12.34).
33
+
34
+ ### v15.5.0
35
+
36
+ - 🌱 ExifTool upgraded to [v12.33](https://exiftool.org/history.html#v12.33).
37
+
38
+ - 📦 Updated dependencies
39
+
40
+ - 📦 Now ignoring `yarn.lock`
41
+
42
+ ### v15.4.0
43
+
44
+ - 🌱 ExifTool upgraded to [v12.31](https://exiftool.org/history.html#v12.31).
45
+
46
+ - 📦 Updated dependencies (including new TypeScript, which required import [adjustments](https://github.com/microsoft/TypeScript/issues/46027#issuecomment-926019016).
47
+
48
+ ### v15.3.0
49
+
50
+ - ✨ `ExifTool.read` and `ExifTool.write` [now accept generics](https://github.com/photostructure/exiftool-vendored.js/issues/103).
51
+
52
+ - 🌱 ExifTool upgraded to [v12.30](https://exiftool.org/history.html#v12.30).
53
+
54
+ - 📦 Updated dependencies (including new Luxon and TypeScript)
55
+
56
+ - 📦 Rebuilt docs
57
+
28
58
  ### v15.2.0
29
59
 
30
60
  - 📦 Updated dependencies (including [batch-cluster
package/README.md CHANGED
@@ -398,6 +398,25 @@ Note that if parsing fails (for, example, a datetime string), the raw string
398
398
  will be returned. Consuming code should verify both existence and type as
399
399
  reasonable for safety.
400
400
 
401
+ ## Serialization
402
+
403
+ The `Tags` object returned by `.readTags()` can be serialized to JSON with `JSON.stringify`.
404
+
405
+ To reconstitute, use the `parseJSON()` method.
406
+
407
+ ```ts
408
+ import { exiftool, parseJSON } from "exiftool-vendored"
409
+
410
+ const tags: Tags = await exiftool.readTags("/path/to/file.jpg")
411
+ const str: string = JSON.stringify(tags)
412
+
413
+ // parseJSON doesn't validate the input, so we don't assert that it's a Tags
414
+ // instance, but you can cast it (unsafely...)
415
+
416
+ const tags2: Tags = parseJSON(str) as Tags
417
+
418
+ ```
419
+
401
420
  ## Performance
402
421
 
403
422
  The `npm run mktags` target reads all tags found in a batch of sample images and
@@ -65,4 +65,3 @@ export interface ApplicationRecordTags {
65
65
  DocumentHistory?: string;
66
66
  ExifCameraInfo?: string;
67
67
  }
68
- //# sourceMappingURL=ApplicationRecordTags.d.ts.map
package/dist/Array.d.ts CHANGED
@@ -7,4 +7,3 @@ 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
- //# sourceMappingURL=Array.d.ts.map
@@ -1,2 +1 @@
1
1
  export declare function retryOnReject<T>(f: () => T | Promise<T>, maxRetries: number): Promise<T>;
2
- //# sourceMappingURL=AsyncRetry.d.ts.map
@@ -9,4 +9,3 @@ export declare class BinaryExtractionTask extends ExifToolTask<Maybe<string>> {
9
9
  static for(tagname: string, imgSrc: string, imgDest: string): BinaryExtractionTask;
10
10
  parse(stdout: string, err?: Error): Maybe<string>;
11
11
  }
12
- //# sourceMappingURL=BinaryExtractionTask.d.ts.map
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.BinaryExtractionTask = void 0;
4
- const path_1 = require("path");
7
+ const path_1 = __importDefault(require("path"));
5
8
  const ExifToolTask_1 = require("./ExifToolTask");
6
9
  const String_1 = require("./String");
7
10
  const StdoutRe = /\b(\d+) output files? created/i;
@@ -17,16 +20,16 @@ class BinaryExtractionTask extends ExifToolTask_1.ExifToolTask {
17
20
  const args = [
18
21
  "-b",
19
22
  "-" + tagname,
20
- path_1.resolve(imgSrc),
23
+ path_1.default.resolve(imgSrc),
21
24
  "-w",
22
25
  // The %0f prevents shell escaping. See
23
26
  // https://exiftool.org/exiftool_pod.html#w-EXT-or-FMT--textOut
24
- "%0f" + path_1.resolve(imgDest),
27
+ "%0f" + path_1.default.resolve(imgDest),
25
28
  ];
26
29
  return new BinaryExtractionTask(args);
27
30
  }
28
31
  parse(stdout, err) {
29
- const s = String_1.toS(stdout).trim();
32
+ const s = (0, String_1.toS)(stdout).trim();
30
33
  const m = StdoutRe.exec(s);
31
34
  if (err != null) {
32
35
  throw err;
@@ -1 +1 @@
1
- {"version":3,"file":"BinaryExtractionTask.js","sourceRoot":"","sources":["../src/BinaryExtractionTask.ts"],"names":[],"mappings":";;;AAAA,+BAA8B;AAC9B,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,cAAO,CAAC,MAAM,CAAC;YACf,IAAI;YACJ,uCAAuC;YACvC,+DAA+D;YAC/D,KAAK,GAAG,cAAO,CAAC,OAAO,CAAC;SACzB,CAAA;QACD,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,GAAW;QAC/B,MAAM,CAAC,GAAG,YAAG,CAAC,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;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,14 +1,12 @@
1
1
  /// <reference types="node" />
2
2
  import { ExifToolTask } from "./ExifToolTask";
3
- import { PreviewTag } from "./PreviewTag";
4
3
  /**
5
4
  * Task that returns an error string (to prevent retries), or undefined if
6
5
  * everything seems to have worked.
7
6
  */
8
7
  export declare class BinaryToBufferTask extends ExifToolTask<Buffer | Error> {
9
- readonly tagname: PreviewTag;
8
+ readonly tagname: string;
10
9
  private constructor();
11
10
  static for(tagname: string, imgSrc: string): BinaryToBufferTask;
12
11
  parse(data: string, err?: Error): Buffer | Error;
13
12
  }
14
- //# sourceMappingURL=BinaryToBufferTask.d.ts.map
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.BinaryToBufferTask = void 0;
4
- const path_1 = require("path");
7
+ const path_1 = __importDefault(require("path"));
5
8
  const ExifToolTask_1 = require("./ExifToolTask");
6
9
  const String_1 = require("./String");
7
10
  /**
@@ -16,7 +19,7 @@ class BinaryToBufferTask extends ExifToolTask_1.ExifToolTask {
16
19
  static for(tagname, imgSrc) {
17
20
  // NOTE TO FUTURE ME: we don't need to escape these arguments, because
18
21
  // ExifTool separates them via newlines.
19
- const args = ["-json", "-b", "-" + tagname, path_1.resolve(imgSrc)];
22
+ const args = ["-json", "-b", "-" + tagname, path_1.default.resolve(imgSrc)];
20
23
  return new BinaryToBufferTask(tagname, args);
21
24
  }
22
25
  parse(data, err) {
@@ -38,7 +41,11 @@ class BinaryToBufferTask extends ExifToolTask_1.ExifToolTask {
38
41
  }
39
42
  }
40
43
  catch (caught) {
41
- err !== null && err !== void 0 ? err : (err = String_1.notBlank(data) ? new Error(data) : caught);
44
+ err !== null && err !== void 0 ? err : (err = (0, String_1.notBlank)(data)
45
+ ? new Error(data)
46
+ : caught instanceof Error
47
+ ? caught
48
+ : new Error(String(caught)));
42
49
  }
43
50
  return err !== null && err !== void 0 ? err : new Error(this.tagname + " not found");
44
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BinaryToBufferTask.js","sourceRoot":"","sources":["../src/BinaryToBufferTask.ts"],"names":[],"mappings":";;;AAAA,+BAA8B;AAC9B,iDAA6C;AAG7C,qCAAmC;AAEnC;;;GAGG;AACH,MAAa,kBAAmB,SAAQ,2BAA4B;IAClE,YAA6B,OAAmB,EAAE,IAAc;QAC9D,KAAK,CAAC,IAAI,CAAC,CAAA;QADgB,YAAO,GAAP,OAAO,CAAY;IAEhD,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,cAAO,CAAC,MAAM,CAAC,CAAC,CAAA;QAC5D,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,iBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAA;SAClD;QACD,OAAO,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,CAAA;IACtD,CAAC;CACF;AA/BD,gDA+BC;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;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"}
@@ -11,4 +11,3 @@ export declare 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>;
14
- //# sourceMappingURL=DateTime.d.ts.map
@@ -22,5 +22,12 @@ export declare class ExifDate {
22
22
  toISOString(): string;
23
23
  toExifString(): string;
24
24
  toString(sep?: string): string;
25
+ toJSON(): {
26
+ _ctor: string;
27
+ year: number;
28
+ month: number;
29
+ day: number;
30
+ rawValue: string | undefined;
31
+ };
32
+ static fromJSON(json: ReturnType<ExifDate["toJSON"]>): ExifDate;
25
33
  }
26
- //# sourceMappingURL=ExifDate.d.ts.map
package/dist/ExifDate.js CHANGED
@@ -22,10 +22,10 @@ class ExifDate {
22
22
  return this.fromDateTime(luxon_1.DateTime.fromISO(text), text);
23
23
  }
24
24
  static fromPatterns(text, fmts) {
25
- if (String_1.blank(text))
25
+ if ((0, String_1.blank)(text))
26
26
  return;
27
- text = String_1.toS(text).trim();
28
- return Maybe_1.first(fmts, (fmt) => Maybe_1.map(luxon_1.DateTime.fromFormat(text, fmt), (dt) => this.fromDateTime(dt, text)));
27
+ text = (0, String_1.toS)(text).trim();
28
+ return (0, Maybe_1.first)(fmts, (fmt) => (0, Maybe_1.map)(luxon_1.DateTime.fromFormat(text, fmt), (dt) => this.fromDateTime(dt, text)));
29
29
  }
30
30
  // These are all formats I've seen in the wild from exiftool's output.
31
31
  // More iterations might make sense, like "d MMM, y" or "MMM d, y", but I
@@ -38,13 +38,13 @@ class ExifDate {
38
38
  return this.fromPatterns(text, ["MMM d y", "MMMM d y"]);
39
39
  }
40
40
  static fromEXIF(text) {
41
- return Maybe_1.firstDefinedThunk([
41
+ return (0, Maybe_1.firstDefinedThunk)([
42
42
  () => this.fromExifStrict(text),
43
43
  () => this.fromExifLoose(text),
44
44
  ]);
45
45
  }
46
46
  static fromDateTime(dt, rawValue) {
47
- return DateTime_1.validDateTime(dt)
47
+ return (0, DateTime_1.validDateTime)(dt)
48
48
  ? new ExifDate(dt.year, dt.month, dt.day, rawValue)
49
49
  : undefined;
50
50
  }
@@ -58,7 +58,19 @@ class ExifDate {
58
58
  return this.toString(":");
59
59
  }
60
60
  toString(sep = "-") {
61
- return `${this.year}${sep}${String_1.pad2(this.month, this.day).join(sep)}`;
61
+ return `${this.year}${sep}${(0, String_1.pad2)(this.month, this.day).join(sep)}`;
62
+ }
63
+ toJSON() {
64
+ return {
65
+ _ctor: "ExifDate",
66
+ year: this.year,
67
+ month: this.month,
68
+ day: this.day,
69
+ rawValue: this.rawValue,
70
+ };
71
+ }
72
+ static fromJSON(json) {
73
+ return new ExifDate(json.year, json.month, json.day, json.rawValue);
62
74
  }
63
75
  }
64
76
  exports.ExifDate = ExifDate;
@@ -1 +1 @@
1
- {"version":3,"file":"ExifDate.js","sourceRoot":"","sources":["../src/ExifDate.ts"],"names":[],"mappings":";;;AAAA,iCAAgC;AAEhC,yCAA0C;AAC1C,mCAA8D;AAC9D,qCAA2C;AAE3C;;GAEG;AACH,MAAa,QAAQ;IAwCnB,YACW,IAAY,EAAE,qJAAqJ;IACnK,KAAa,EAAE,4CAA4C;IAC3D,GAAW,EAAE,OAAO;IACpB,QAAiB;QAHjB,SAAI,GAAJ,IAAI,CAAQ;QACZ,UAAK,GAAL,KAAK,CAAQ;QACb,QAAG,GAAH,GAAG,CAAQ;QACX,aAAQ,GAAR,QAAQ,CAAS;IACzB,CAAC;IA5CJ,MAAM,CAAC,OAAO,CAAC,IAAY;QACzB,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;IACxD,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,IAAY,EAAE,IAAc;QACtD,IAAI,cAAK,CAAC,IAAI,CAAC;YAAE,OAAM;QACvB,IAAI,GAAG,YAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;QACvB,OAAO,aAAK,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CACzB,WAAG,CAAC,gBAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CACzE,CAAA;IACH,CAAC;IAED,sEAAsE;IAEtE,yEAAyE;IACzE,uEAAuE;IACvE,2CAA2C;IAE3C,MAAM,CAAC,cAAc,CAAC,IAAY;QAChC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;IACjE,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,IAAY;QAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;IACzD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,OAAO,yBAAiB,CAAC;YACvB,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAC/B,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;SAC/B,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,EAAY,EAAE,QAAiB;QACjD,OAAO,wBAAa,CAAC,EAAE,CAAC;YACtB,CAAC,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC;YACnD,CAAC,CAAC,SAAS,CAAA;IACf,CAAC;IASD,MAAM;QACJ,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;IACtD,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED,QAAQ,CAAC,GAAG,GAAG,GAAG;QAChB,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,aAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;IACpE,CAAC;CACF;AA9DD,4BA8DC"}
1
+ {"version":3,"file":"ExifDate.js","sourceRoot":"","sources":["../src/ExifDate.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { DateTime, ISOTimeOptions } from "luxon";
1
+ import { DateTime, ToISOTimeOptions } from "luxon";
2
2
  import { Maybe } from "./Maybe";
3
3
  /**
4
4
  * Encodes an ExifDateTime with an optional tz offset in minutes.
@@ -35,9 +35,22 @@ export declare class ExifDateTime {
35
35
  get zone(): Maybe<string>;
36
36
  toDateTime(): DateTime;
37
37
  toDate(): Date;
38
- toISOString(options?: ISOTimeOptions): Maybe<string>;
38
+ toISOString(options?: ToISOTimeOptions): Maybe<string>;
39
39
  toExifString(): string;
40
40
  toString(): Maybe<string>;
41
41
  get isValid(): boolean;
42
+ toJSON(): {
43
+ _ctor: string;
44
+ year: number;
45
+ month: number;
46
+ day: number;
47
+ hour: number;
48
+ minute: number;
49
+ second: number;
50
+ millisecond: number | undefined;
51
+ tzoffsetMinutes: number | undefined;
52
+ rawValue: string | undefined;
53
+ zoneName: string | undefined;
54
+ };
55
+ static fromJSON(json: ReturnType<ExifDateTime["toJSON"]>): ExifDateTime;
42
56
  }
43
- //# sourceMappingURL=ExifDateTime.d.ts.map
@@ -23,12 +23,12 @@ class ExifDateTime {
23
23
  this.zoneName = zoneName;
24
24
  }
25
25
  static fromISO(iso, zone, rawValue) {
26
- if (String_1.blank(iso) || null != iso.match(/^\d+$/))
26
+ if ((0, String_1.blank)(iso) || null != iso.match(/^\d+$/))
27
27
  return undefined;
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
- }), Maybe_1.orElse(rawValue, iso));
31
+ }), (0, Maybe_1.orElse)(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
@@ -40,16 +40,16 @@ class ExifDateTime {
40
40
  * `offsetMinutesToZoneName`.
41
41
  */
42
42
  static fromEXIF(text, defaultZone) {
43
- if (String_1.blank(text))
43
+ if ((0, String_1.blank)(text))
44
44
  return undefined;
45
- return Maybe_1.firstDefinedThunk([
45
+ return (0, Maybe_1.firstDefinedThunk)([
46
46
  () => this.fromExifStrict(text, defaultZone),
47
47
  () => this.fromISO(text, defaultZone),
48
48
  () => this.fromExifLoose(text, defaultZone),
49
49
  ]);
50
50
  }
51
51
  static fromPatterns(text, fmts) {
52
- const s = String_1.toS(text).trim();
52
+ const s = (0, String_1.toS)(text).trim();
53
53
  const inputs = [s];
54
54
  // Some EXIF datetime will "over-specify" and include both the utc offset
55
55
  // *and* the "time zone abbreviation", like PST or PDT.
@@ -61,13 +61,13 @@ class ExifDateTime {
61
61
  if (noTza !== s)
62
62
  inputs.push(noTza);
63
63
  }
64
- return Maybe_1.first(inputs, (input) => Maybe_1.first(fmts, ({ fmt, zone }) => Maybe_1.map(luxon_1.DateTime.fromFormat(input, fmt, {
64
+ return (0, Maybe_1.first)(inputs, (input) => (0, Maybe_1.first)(fmts, ({ fmt, zone }) => (0, Maybe_1.map)(luxon_1.DateTime.fromFormat(input, fmt, {
65
65
  setZone: true,
66
66
  zone: zone !== null && zone !== void 0 ? zone : Timezones_1.UnsetZone,
67
67
  }), (dt) => this.fromDateTime(dt, s))));
68
68
  }
69
69
  static fromExifStrict(text, zone) {
70
- if (String_1.blank(text))
70
+ if ((0, String_1.blank)(text))
71
71
  return undefined;
72
72
  return this.fromPatterns(text, [
73
73
  // if it specifies a zone, use it:
@@ -92,9 +92,9 @@ class ExifDateTime {
92
92
  ]);
93
93
  }
94
94
  static fromExifLoose(text, defaultZone) {
95
- if (String_1.blank(text))
95
+ if ((0, String_1.blank)(text))
96
96
  return undefined;
97
- const zone = String_1.notBlank(defaultZone) ? defaultZone : Timezones_1.UnsetZone;
97
+ const zone = (0, String_1.notBlank)(defaultZone) ? defaultZone : Timezones_1.UnsetZone;
98
98
  return this.fromPatterns(text, [
99
99
  // FWIW, the following are from actual datestamps seen in the wild:
100
100
  { fmt: "MMM d y H:m:sZZZ" },
@@ -120,11 +120,11 @@ class ExifDateTime {
120
120
  return this.millisecond;
121
121
  }
122
122
  get hasZone() {
123
- return String_1.notBlank(this.zone);
123
+ return (0, String_1.notBlank)(this.zone);
124
124
  }
125
125
  get zone() {
126
126
  var _a;
127
- return (_a = this.zoneName) !== null && _a !== void 0 ? _a : Timezones_1.offsetMinutesToZoneName(this.tzoffsetMinutes);
127
+ return (_a = this.zoneName) !== null && _a !== void 0 ? _a : (0, Timezones_1.offsetMinutesToZoneName)(this.tzoffsetMinutes);
128
128
  }
129
129
  toDateTime() {
130
130
  return luxon_1.DateTime.fromObject({
@@ -135,6 +135,7 @@ class ExifDateTime {
135
135
  minute: this.minute,
136
136
  second: this.second,
137
137
  millisecond: this.millisecond,
138
+ }, {
138
139
  zone: this.zone,
139
140
  });
140
141
  }
@@ -142,13 +143,13 @@ class ExifDateTime {
142
143
  return this.toDateTime().toJSDate();
143
144
  }
144
145
  toISOString(options = {}) {
145
- return Maybe_1.denull(this.toDateTime().toISO({
146
- suppressMilliseconds: Maybe_1.orElse(options.suppressMilliseconds, () => this.millisecond == null),
146
+ return (0, Maybe_1.denull)(this.toDateTime().toISO({
147
+ suppressMilliseconds: (0, Maybe_1.orElse)(options.suppressMilliseconds, () => this.millisecond == null),
147
148
  includeOffset: this.hasZone && options.includeOffset !== false,
148
149
  }));
149
150
  }
150
151
  toExifString() {
151
- return DateTime_1.dateTimeToExif(this.toDateTime());
152
+ return (0, DateTime_1.dateTimeToExif)(this.toDateTime());
152
153
  }
153
154
  toString() {
154
155
  return this.toISOString();
@@ -156,6 +157,24 @@ class ExifDateTime {
156
157
  get isValid() {
157
158
  return this.toDateTime().isValid;
158
159
  }
160
+ toJSON() {
161
+ return {
162
+ _ctor: "ExifDateTime",
163
+ year: this.year,
164
+ month: this.month,
165
+ day: this.day,
166
+ hour: this.hour,
167
+ minute: this.minute,
168
+ second: this.second,
169
+ millisecond: this.millisecond,
170
+ tzoffsetMinutes: this.tzoffsetMinutes,
171
+ rawValue: this.rawValue,
172
+ zoneName: this.zoneName,
173
+ };
174
+ }
175
+ static fromJSON(json) {
176
+ return new ExifDateTime(json.year, json.month, json.day, json.hour, json.minute, json.second, json.millisecond, json.tzoffsetMinutes, json.rawValue, json.zoneName);
177
+ }
159
178
  }
160
179
  exports.ExifDateTime = ExifDateTime;
161
180
  //# sourceMappingURL=ExifDateTime.js.map
@@ -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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"}
@@ -16,5 +16,12 @@ export declare class ExifTime {
16
16
  toString(): string;
17
17
  toISOString(): string;
18
18
  toExifString(): string;
19
+ toJSON(): {
20
+ _ctor: string;
21
+ hour: number;
22
+ minute: number;
23
+ second: number;
24
+ millisecond: number | undefined;
25
+ };
26
+ static fromJSON(json: ReturnType<ExifTime["toJSON"]>): ExifTime;
19
27
  }
20
- //# sourceMappingURL=ExifTime.d.ts.map
package/dist/ExifTime.js CHANGED
@@ -15,10 +15,10 @@ class ExifTime {
15
15
  this.millisecond = millisecond;
16
16
  }
17
17
  static fromEXIF(text) {
18
- if (String_1.blank(text))
18
+ if ((0, String_1.blank)(text))
19
19
  return;
20
- text = String_1.toS(text).trim();
21
- return Maybe_1.first(["HH:mm:ss.uZZ", "HH:mm:ssZZ", "HH:mm:ss.u", "HH:mm:ss"], (fmt) => Maybe_1.map(luxon_1.DateTime.fromFormat(text, fmt), (dt) => this.fromDateTime(dt)));
20
+ text = (0, String_1.toS)(text).trim();
21
+ return (0, Maybe_1.first)(["HH:mm:ss.uZZ", "HH:mm:ssZZ", "HH:mm:ss.u", "HH:mm:ss"], (fmt) => (0, Maybe_1.map)(luxon_1.DateTime.fromFormat(text, fmt), (dt) => this.fromDateTime(dt)));
22
22
  }
23
23
  static fromDateTime(dt) {
24
24
  return dt == null || !dt.isValid
@@ -31,10 +31,10 @@ class ExifTime {
31
31
  subsec() {
32
32
  return this.millisecond == null || this.millisecond === 0
33
33
  ? ""
34
- : "." + String_1.pad3(this.millisecond);
34
+ : "." + (0, String_1.pad3)(this.millisecond);
35
35
  }
36
36
  toString() {
37
- return String_1.pad2(this.hour, this.minute, this.second).join(":") + this.subsec();
37
+ return (0, String_1.pad2)(this.hour, this.minute, this.second).join(":") + this.subsec();
38
38
  }
39
39
  toISOString() {
40
40
  return this.toString();
@@ -42,6 +42,18 @@ class ExifTime {
42
42
  toExifString() {
43
43
  return this.toString();
44
44
  }
45
+ toJSON() {
46
+ return {
47
+ _ctor: "ExifTime",
48
+ hour: this.hour,
49
+ minute: this.minute,
50
+ second: this.second,
51
+ millisecond: this.millisecond,
52
+ };
53
+ }
54
+ static fromJSON(json) {
55
+ return new ExifTime(json.hour, json.minute, json.second, json.millisecond);
56
+ }
45
57
  }
46
58
  exports.ExifTime = ExifTime;
47
59
  //# sourceMappingURL=ExifTime.js.map
@@ -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;QAHpB,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAS;IAC5B,CAAC;IArBJ,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,IAAI,cAAK,CAAC,IAAI,CAAC;YAAE,OAAM;QACvB,IAAI,GAAG,YAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;QACvB,OAAO,aAAK,CACV,CAAC,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC,EACxD,CAAC,GAAG,EAAE,EAAE,CACN,WAAG,CAAC,gBAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CACrE,CAAA;IACH,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,EAAY;QAC9B,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,CAAC,CAAA;IACjE,CAAC;IASD,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,aAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAClC,CAAC;IAED,QAAQ;QACN,OAAO,aAAI,CAAC,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;CACF;AA7CD,4BA6CC"}
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;QAHpB,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAS;IAC5B,CAAC;IArBJ,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,CAAC,CAAC,CACrE,CAAA;IACH,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,EAAY;QAC9B,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,CAAC,CAAA;IACjE,CAAC;IASD,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;SAC9B,CAAA;IACH,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAoC;QAClD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;IAC5E,CAAC;CACF;AA3DD,4BA2DC"}
@@ -9,8 +9,9 @@ export { ExifDate } from "./ExifDate";
9
9
  export { ExifDateTime } from "./ExifDateTime";
10
10
  export { ExifTime } from "./ExifTime";
11
11
  export { ExifToolTask } from "./ExifToolTask";
12
- export { Tags } from "./Tags";
12
+ export { parseJSON } from "./JSON";
13
13
  export { offsetMinutesToZoneName } from "./Timezones";
14
+ export type { Tags };
14
15
  export declare const DefaultExifToolPath: string;
15
16
  export declare const DefaultExiftoolArgs: string[];
16
17
  /**
@@ -155,7 +156,7 @@ export declare class ExifTool {
155
156
  * during reading, the `.errors` field will be present.
156
157
  * @memberof ExifTool
157
158
  */
158
- read(file: string, args?: string[]): Promise<Tags>;
159
+ read<T extends Tags = Tags>(file: string, args?: string[]): Promise<T>;
159
160
  /**
160
161
  * Read the tags from `file`, without any post-processing of ExifTool values.
161
162
  *
@@ -195,7 +196,7 @@ export declare class ExifTool {
195
196
  * there are errors or warnings.
196
197
  * @memberof ExifTool
197
198
  */
198
- write(file: string, tags: WriteTags, args?: string[]): Promise<void>;
199
+ write<T extends WriteTags = WriteTags>(file: string, tags: T, args?: string[]): Promise<void>;
199
200
  /**
200
201
  * This will strip `file` of all metadata tags. The original file (with the
201
202
  * name `${FILENAME}_original`) will be retained. Note that some tags, like
@@ -338,4 +339,3 @@ export declare class ExifTool {
338
339
  * have limited system resources you may want to use a smaller `maxProcs` value.
339
340
  */
340
341
  export declare const exiftool: ExifTool;
341
- //# sourceMappingURL=ExifTool.d.ts.map
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.ExifToolTask = exports.ExifTime = exports.ExifDateTime = exports.ExifDate = void 0;
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;
23
23
  const bc = __importStar(require("batch-cluster"));
24
24
  const _cp = __importStar(require("child_process"));
25
25
  const _fs = __importStar(require("fs"));
@@ -45,9 +45,11 @@ var ExifTime_1 = require("./ExifTime");
45
45
  Object.defineProperty(exports, "ExifTime", { enumerable: true, get: function () { return ExifTime_1.ExifTime; } });
46
46
  var ExifToolTask_1 = require("./ExifToolTask");
47
47
  Object.defineProperty(exports, "ExifToolTask", { enumerable: true, get: function () { return ExifToolTask_1.ExifToolTask; } });
48
+ var JSON_1 = require("./JSON");
49
+ Object.defineProperty(exports, "parseJSON", { enumerable: true, get: function () { return JSON_1.parseJSON; } });
48
50
  var Timezones_1 = require("./Timezones");
49
51
  Object.defineProperty(exports, "offsetMinutesToZoneName", { enumerable: true, get: function () { return Timezones_1.offsetMinutesToZoneName; } });
50
- const isWin32 = Lazy_1.lazy(() => _os.platform() === "win32");
52
+ const isWin32 = (0, Lazy_1.lazy)(() => _os.platform() === "win32");
51
53
  function findExiftool() {
52
54
  const path = require(`exiftool-vendored.${isWin32() ? "exe" : "pl"}`);
53
55
  // This s/app.asar/app.asar.unpacked/ path switch adds support for Electron
@@ -73,7 +75,7 @@ function findExiftool() {
73
75
  }
74
76
  exports.DefaultExifToolPath = findExiftool();
75
77
  exports.DefaultExiftoolArgs = ["-stay_open", "True", "-@", "-"];
76
- const _ignoreShebang = Lazy_1.lazy(() => !isWin32() && !_fs.existsSync("/usr/bin/perl"));
78
+ const _ignoreShebang = (0, Lazy_1.lazy)(() => !isWin32() && !_fs.existsSync("/usr/bin/perl"));
77
79
  exports.DefaultMaxProcs = Math.max(1, Math.floor(_os.cpus().length / 4));
78
80
  /**
79
81
  * Default values for `ExifToolOptions`, except for `processFactory` (which is
@@ -120,9 +122,9 @@ class ExifTool {
120
122
  ...exports.DefaultExifToolOptions,
121
123
  ...options,
122
124
  };
123
- const ignoreShebang = Maybe_1.orElse(o.ignoreShebang, () => _ignoreShebang());
125
+ const ignoreShebang = (0, Maybe_1.orElse)(o.ignoreShebang, () => _ignoreShebang());
124
126
  const env = { ...o.exiftoolEnv, LANG: "C" };
125
- if (String_1.notBlank(_p.env.EXIFTOOL_HOME) && String_1.blank(env.EXIFTOOL_HOME)) {
127
+ if ((0, String_1.notBlank)(_p.env.EXIFTOOL_HOME) && (0, String_1.blank)(env.EXIFTOOL_HOME)) {
126
128
  env.EXIFTOOL_HOME = _p.env.EXIFTOOL_HOME;
127
129
  }
128
130
  const spawnOpts = {
@@ -166,7 +168,7 @@ class ExifTool {
166
168
  * @memberof ExifTool
167
169
  */
168
170
  read(file, args = ["-fast"]) {
169
- return this.enqueueTask(() => ReadTask_1.ReadTask.for(file, this.options.numericTags, args));
171
+ return this.enqueueTask(() => ReadTask_1.ReadTask.for(file, this.options.numericTags, args)); // < no way to know at compile time if we're going to get back a T!
170
172
  }
171
173
  /**
172
174
  * Read the tags from `file`, without any post-processing of ExifTool values.
@@ -340,7 +342,7 @@ class ExifTool {
340
342
  * @see BinaryExtractionTask for an example task implementation
341
343
  */
342
344
  enqueueTask(task) {
343
- return AsyncRetry_1.retryOnReject(() => this.batchCluster.enqueueTask(task()), this.options.taskRetries);
345
+ return (0, AsyncRetry_1.retryOnReject)(() => this.batchCluster.enqueueTask(task()), this.options.taskRetries);
344
346
  }
345
347
  /**
346
348
  * @return the currently running ExifTool processes. Note that on Windows,