exiftool-vendored 28.8.0 → 29.1.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 (121) hide show
  1. package/CHANGELOG.md +40 -4
  2. package/README.md +22 -22
  3. package/SECURITY.md +1 -2
  4. package/dist/Array.d.ts +4 -4
  5. package/dist/Array.js +8 -10
  6. package/dist/Array.js.map +1 -1
  7. package/dist/AsyncRetry.js.map +1 -1
  8. package/dist/BinaryExtractionTask.d.ts +4 -2
  9. package/dist/BinaryExtractionTask.js +8 -5
  10. package/dist/BinaryExtractionTask.js.map +1 -1
  11. package/dist/BinaryField.js +2 -0
  12. package/dist/BinaryField.js.map +1 -1
  13. package/dist/BinaryToBufferTask.js +5 -5
  14. package/dist/BinaryToBufferTask.js.map +1 -1
  15. package/dist/Boolean.d.ts +1 -1
  16. package/dist/Boolean.js.map +1 -1
  17. package/dist/CapturedAtTagNames.js.map +1 -1
  18. package/dist/CoordinateParser.d.ts +59 -0
  19. package/dist/CoordinateParser.js +286 -0
  20. package/dist/CoordinateParser.js.map +1 -0
  21. package/dist/DateTime.d.ts +1 -1
  22. package/dist/DateTime.js +4 -5
  23. package/dist/DateTime.js.map +1 -1
  24. package/dist/DefaultCreateDateTagNames.js.map +1 -1
  25. package/dist/DefaultExifToolOptions.js +20 -7
  26. package/dist/DefaultExifToolOptions.js.map +1 -1
  27. package/dist/DefaultExiftoolArgs.js.map +1 -1
  28. package/dist/DefaultMaxProcs.js +17 -7
  29. package/dist/DefaultMaxProcs.js.map +1 -1
  30. package/dist/DeleteAllTagsArgs.js.map +1 -1
  31. package/dist/ErrorsAndWarnings.d.ts +5 -1
  32. package/dist/ErrorsAndWarnings.js +11 -2
  33. package/dist/ErrorsAndWarnings.js.map +1 -1
  34. package/dist/ExifDate.js +7 -2
  35. package/dist/ExifDate.js.map +1 -1
  36. package/dist/ExifDateTime.d.ts +2 -2
  37. package/dist/ExifDateTime.js +63 -67
  38. package/dist/ExifDateTime.js.map +1 -1
  39. package/dist/ExifTime.js +19 -26
  40. package/dist/ExifTime.js.map +1 -1
  41. package/dist/ExifTool.d.ts +28 -24
  42. package/dist/ExifTool.js +97 -81
  43. package/dist/ExifTool.js.map +1 -1
  44. package/dist/ExifToolOptions.d.ts +8 -0
  45. package/dist/ExifToolOptions.js.map +1 -1
  46. package/dist/ExifToolTags.js +0 -1
  47. package/dist/ExifToolTags.js.map +1 -1
  48. package/dist/ExifToolTask.js +38 -33
  49. package/dist/ExifToolTask.js.map +1 -1
  50. package/dist/ExifToolVendoredTags.js.map +1 -1
  51. package/dist/ExiftoolPath.js +27 -12
  52. package/dist/ExiftoolPath.js.map +1 -1
  53. package/dist/File.d.ts +2 -0
  54. package/dist/File.js +16 -1
  55. package/dist/File.js.map +1 -1
  56. package/dist/FileTags.d.ts +3 -2
  57. package/dist/FileTags.js +3 -2
  58. package/dist/FileTags.js.map +1 -1
  59. package/dist/FilenameCharsetArgs.js.map +1 -1
  60. package/dist/FirstDateTime.js +1 -1
  61. package/dist/FirstDateTime.js.map +1 -1
  62. package/dist/GPS.d.ts +18 -0
  63. package/dist/GPS.js +116 -0
  64. package/dist/GPS.js.map +1 -0
  65. package/dist/GeoTz.js.map +1 -1
  66. package/dist/GeolocationTags.d.ts +1 -1
  67. package/dist/GeolocationTags.js +16 -14
  68. package/dist/GeolocationTags.js.map +1 -1
  69. package/dist/IsWarning.js.map +1 -1
  70. package/dist/IsWin32.js +17 -7
  71. package/dist/IsWin32.js.map +1 -1
  72. package/dist/JSON.js +4 -1
  73. package/dist/JSON.js.map +1 -1
  74. package/dist/Lazy.js +2 -1
  75. package/dist/Lazy.js.map +1 -1
  76. package/dist/Maybe.js.map +1 -1
  77. package/dist/Number.d.ts +18 -3
  78. package/dist/Number.js +36 -1
  79. package/dist/Number.js.map +1 -1
  80. package/dist/Object.d.ts +4 -4
  81. package/dist/Object.js +8 -8
  82. package/dist/Object.js.map +1 -1
  83. package/dist/OnlyZerosRE.js.map +1 -1
  84. package/dist/Pick.js.map +1 -1
  85. package/dist/ReadRawTask.js +20 -8
  86. package/dist/ReadRawTask.js.map +1 -1
  87. package/dist/ReadTask.d.ts +1 -1
  88. package/dist/ReadTask.js +233 -264
  89. package/dist/ReadTask.js.map +1 -1
  90. package/dist/ResourceEvent.d.ts +1 -1
  91. package/dist/ResourceEvent.js +1 -1
  92. package/dist/ResourceEvent.js.map +1 -1
  93. package/dist/RewriteAllTagsTask.js +19 -9
  94. package/dist/RewriteAllTagsTask.js.map +1 -1
  95. package/dist/Sidecars.js.map +1 -1
  96. package/dist/String.d.ts +8 -4
  97. package/dist/String.js +7 -3
  98. package/dist/String.js.map +1 -1
  99. package/dist/Struct.d.ts +1 -1
  100. package/dist/Struct.js +1 -2
  101. package/dist/Struct.js.map +1 -1
  102. package/dist/Tags.d.ts +154 -152
  103. package/dist/TimeParsing.js +6 -8
  104. package/dist/TimeParsing.js.map +1 -1
  105. package/dist/Times.d.ts +6 -0
  106. package/dist/Times.js +7 -3
  107. package/dist/Times.js.map +1 -1
  108. package/dist/Timezones.d.ts +5 -4
  109. package/dist/Timezones.js +71 -41
  110. package/dist/Timezones.js.map +1 -1
  111. package/dist/Version.d.ts +1 -1
  112. package/dist/Version.js +1 -1
  113. package/dist/Version.js.map +1 -1
  114. package/dist/VersionTask.js +1 -1
  115. package/dist/VersionTask.js.map +1 -1
  116. package/dist/Which.js.map +1 -1
  117. package/dist/WriteTags.d.ts +6 -1
  118. package/dist/WriteTask.js +71 -25
  119. package/dist/WriteTask.js.map +1 -1
  120. package/eslint.config.mjs +34 -0
  121. package/package.json +21 -19
package/dist/ReadTask.js CHANGED
@@ -15,25 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
26
- if (kind === "m") throw new TypeError("Private method is not writable");
27
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
28
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
29
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
30
- };
31
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
32
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
33
- 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");
34
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
35
- };
36
- var _ReadTask_instances, _ReadTask_raw, _ReadTask_rawDegrouped, _ReadTask_tags, _ReadTask_isVideo, _ReadTask_defaultToUTC, _ReadTask_tagName, _ReadTask_parseTags, _ReadTask_lat, _ReadTask_lon, _ReadTask_extractTzOffsetFromGps, _ReadTask_extractGpsMetadata, _ReadTask_parseLocation, _ReadTask_tz, _ReadTask_extractTzOffset, _ReadTask_parseTag;
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
37
35
  Object.defineProperty(exports, "__esModule", { value: true });
38
36
  exports.ReadTask = exports.DefaultReadTaskOptions = exports.ReadTaskOptionFields = void 0;
39
37
  exports.nullish = nullish;
@@ -41,6 +39,7 @@ const batch_cluster_1 = require("batch-cluster");
41
39
  const _path = __importStar(require("node:path"));
42
40
  const Array_1 = require("./Array");
43
41
  const BinaryField_1 = require("./BinaryField");
42
+ const Boolean_1 = require("./Boolean");
44
43
  const DefaultExifToolOptions_1 = require("./DefaultExifToolOptions");
45
44
  const ErrorsAndWarnings_1 = require("./ErrorsAndWarnings");
46
45
  const ExifDate_1 = require("./ExifDate");
@@ -48,10 +47,12 @@ const ExifDateTime_1 = require("./ExifDateTime");
48
47
  const ExifTime_1 = require("./ExifTime");
49
48
  const ExifToolOptions_1 = require("./ExifToolOptions");
50
49
  const ExifToolTask_1 = require("./ExifToolTask");
50
+ const File_1 = require("./File");
51
51
  const FilenameCharsetArgs_1 = require("./FilenameCharsetArgs");
52
- const GeolocationTags_1 = require("./GeolocationTags");
52
+ const GPS_1 = require("./GPS");
53
53
  const Lazy_1 = require("./Lazy");
54
54
  const Number_1 = require("./Number");
55
+ const Object_1 = require("./Object");
55
56
  const OnlyZerosRE_1 = require("./OnlyZerosRE");
56
57
  const Pick_1 = require("./Pick");
57
58
  const String_1 = require("./String");
@@ -95,6 +96,13 @@ exports.DefaultReadTaskOptions = {
95
96
  };
96
97
  const MaybeDateOrTimeRe = /when|date|time|subsec|creat|modif/i;
97
98
  class ReadTask extends ExifToolTask_1.ExifToolTask {
99
+ sourceFile;
100
+ args;
101
+ options;
102
+ degroup;
103
+ #raw = {};
104
+ #rawDegrouped = {};
105
+ #tags = {};
98
106
  /**
99
107
  * @param sourceFile the file to read
100
108
  * @param args the full arguments to pass to exiftool that take into account
@@ -102,121 +110,13 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
102
110
  */
103
111
  constructor(sourceFile, args, options) {
104
112
  super(args, options);
105
- _ReadTask_instances.add(this);
106
113
  this.sourceFile = sourceFile;
107
114
  this.args = args;
108
115
  this.options = options;
109
- _ReadTask_raw.set(this, {});
110
- _ReadTask_rawDegrouped.set(this, {});
111
- _ReadTask_tags.set(this, {}
112
- /**
113
- * @param sourceFile the file to read
114
- * @param args the full arguments to pass to exiftool that take into account
115
- * the flags in `options`
116
- */
117
- );
118
- _ReadTask_lat.set(this, (0, Lazy_1.lazy)(() => { var _a; return (_a = __classPrivateFieldGet(this, _ReadTask_extractGpsMetadata, "f").call(this)) === null || _a === void 0 ? void 0 : _a.lat; }));
119
- _ReadTask_lon.set(this, (0, Lazy_1.lazy)(() => { var _a; return (_a = __classPrivateFieldGet(this, _ReadTask_extractGpsMetadata, "f").call(this)) === null || _a === void 0 ? void 0 : _a.lon; }));
120
- _ReadTask_extractTzOffsetFromGps.set(this, (0, Lazy_1.lazy)(() => { var _a; return (_a = __classPrivateFieldGet(this, _ReadTask_extractGpsMetadata, "f").call(this)) === null || _a === void 0 ? void 0 : _a.tz; }));
121
- _ReadTask_extractGpsMetadata.set(this, (0, Lazy_1.lazy)(() => {
122
- let lat = __classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_parseLocation).call(this, {
123
- tagName: "GPSLatitude",
124
- positiveRef: "N",
125
- negativeRef: "S",
126
- maxValid: 90,
127
- });
128
- let lon = __classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_parseLocation).call(this, {
129
- tagName: "GPSLongitude",
130
- positiveRef: "E",
131
- negativeRef: "W",
132
- maxValid: 180,
133
- });
134
- let invalid = false;
135
- if (this.options.ignoreZeroZeroLatLon && lat === 0 && lon === 0) {
136
- lat = undefined;
137
- lon = undefined;
138
- invalid = true;
139
- }
140
- let tz;
141
- if (!invalid && !(0, String_1.blank)(__classPrivateFieldGet(this, _ReadTask_rawDegrouped, "f").GeolocationTimeZone)) {
142
- const geolocTz = (0, Timezones_1.normalizeZone)(__classPrivateFieldGet(this, _ReadTask_rawDegrouped, "f").GeolocationTimeZone);
143
- if (geolocTz != null) {
144
- tz = {
145
- tz: geolocTz.name,
146
- src: "GeolocationTimeZone",
147
- };
148
- }
149
- else {
150
- this.warnings.push("Failed to determine timezone from GeolocationTimeZone value: " +
151
- __classPrivateFieldGet(this, _ReadTask_rawDegrouped, "f").GeolocationTimeZone);
152
- }
153
- }
154
- if (tz == null && !invalid && lat != null && lon != null) {
155
- try {
156
- const geoTz = this.options.geoTz(lat, lon);
157
- const zone = (0, Timezones_1.normalizeZone)(geoTz);
158
- if (zone != null) {
159
- tz = {
160
- tz: zone.name,
161
- src: "GPSLatitude/GPSLongitude",
162
- };
163
- }
164
- }
165
- catch (error) {
166
- this.warnings.push("Failed to determine timezone from GPS coordinates: " + error);
167
- invalid = true;
168
- lat = undefined;
169
- lon = undefined;
170
- }
171
- }
172
- if (this.options.geolocation && invalid) {
173
- if (__classPrivateFieldGet(this, _ReadTask_tags, "f").GPSLatitude != null || __classPrivateFieldGet(this, _ReadTask_tags, "f").GPSLongitude != null) {
174
- // don't complain unless there was a GPS value:
175
- this.warnings.push("Invalid GPSLatitude or GPSLongitude. Deleting geolocation tags.");
176
- }
177
- for (const key of GeolocationTags_1.GeolocationTagNames) {
178
- delete __classPrivateFieldGet(this, _ReadTask_tags, "f")[key];
179
- delete __classPrivateFieldGet(this, _ReadTask_raw, "f")[key];
180
- delete __classPrivateFieldGet(this, _ReadTask_rawDegrouped, "f")[key];
181
- }
182
- }
183
- return {
184
- lat,
185
- lon,
186
- invalid,
187
- tz,
188
- };
189
- }));
190
- _ReadTask_tz.set(this, (0, Lazy_1.lazy)(() => { var _a; return (_a = __classPrivateFieldGet(this, _ReadTask_extractTzOffset, "f").call(this)) === null || _a === void 0 ? void 0 : _a.tz; }));
191
- _ReadTask_extractTzOffset.set(this, (0, Lazy_1.lazy)(() => {
192
- var _a, _b, _c, _d, _e;
193
- if (true === this.options.preferTimezoneInferenceFromGps) {
194
- const fromGps = __classPrivateFieldGet(this, _ReadTask_extractTzOffsetFromGps, "f").call(this);
195
- if (fromGps != null) {
196
- return fromGps;
197
- }
198
- }
199
- return ((_e = (_d = (_c = (_b = (_a = (0, Timezones_1.extractTzOffsetFromTags)(__classPrivateFieldGet(this, _ReadTask_rawDegrouped, "f"), this.options)) !== null && _a !== void 0 ? _a : __classPrivateFieldGet(this, _ReadTask_extractTzOffsetFromGps, "f").call(this)) !== null && _b !== void 0 ? _b : (0, Timezones_1.extractTzOffsetFromDatestamps)(__classPrivateFieldGet(this, _ReadTask_rawDegrouped, "f"), this.options)) !== null && _c !== void 0 ? _c :
200
- // See https://github.com/photostructure/exiftool-vendored.js/issues/113
201
- // and https://github.com/photostructure/exiftool-vendored.js/issues/156
202
- // Videos are frequently encoded in UTC, but don't include the
203
- // timezone offset in their datetime stamps.
204
- (__classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_defaultToUTC).call(this)
205
- ? {
206
- tz: "UTC",
207
- src: "defaultVideosToUTC",
208
- }
209
- : // not applicable:
210
- undefined)) !== null && _d !== void 0 ? _d :
211
- // This is a last-ditch estimation heuristic:
212
- (0, Timezones_1.extractTzOffsetFromUTCOffset)(__classPrivateFieldGet(this, _ReadTask_rawDegrouped, "f"))) !== null && _e !== void 0 ? _e :
213
- // No, really, this is the even worse than UTC offset heuristics:
214
- (0, Timezones_1.extractTzOffsetFromTimeStamp)(__classPrivateFieldGet(this, _ReadTask_rawDegrouped, "f"), this.options));
215
- }));
216
116
  // See https://github.com/photostructure/exiftool-vendored.js/issues/147#issuecomment-1642580118
217
117
  this.degroup = this.args.includes("-G");
218
- __classPrivateFieldSet(this, _ReadTask_tags, { SourceFile: sourceFile }, "f");
219
- __classPrivateFieldGet(this, _ReadTask_tags, "f").errors = this.errors;
118
+ this.#tags = { SourceFile: sourceFile };
119
+ this.#tags.errors = this.errors;
220
120
  }
221
121
  static for(filename, options) {
222
122
  const opts = (0, ExifToolOptions_1.handleDeprecatedOptions)({
@@ -224,7 +124,11 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
224
124
  ...options,
225
125
  });
226
126
  const sourceFile = _path.resolve(filename);
227
- const args = [...FilenameCharsetArgs_1.Utf8FilenameCharsetArgs, "-json", ...(0, Array_1.toA)(opts.readArgs)];
127
+ const args = [
128
+ ...FilenameCharsetArgs_1.Utf8FilenameCharsetArgs,
129
+ "-json",
130
+ ...(0, Array_1.toArray)(opts.readArgs),
131
+ ];
228
132
  // "-api struct=undef" doesn't work: but it's the same as struct=0:
229
133
  args.push("-api", "struct=" + ((0, Number_1.isNumber)(opts.struct) ? opts.struct : "0"));
230
134
  if (opts.useMWG) {
@@ -252,7 +156,7 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
252
156
  // only exposed for tests
253
157
  parse(data, err) {
254
158
  try {
255
- __classPrivateFieldSet(this, _ReadTask_raw, JSON.parse(data)[0], "f");
159
+ this.#raw = JSON.parse(data)[0];
256
160
  }
257
161
  catch (jsonError) {
258
162
  // TODO: should restart exiftool?
@@ -261,159 +165,224 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
261
165
  err,
262
166
  jsonError,
263
167
  });
264
- throw err !== null && err !== void 0 ? err : jsonError;
168
+ throw err ?? jsonError;
265
169
  }
266
170
  // ExifTool does "humorous" things to paths, like flip path separators. resolve() undoes that.
267
- const SourceFile = _path.resolve(__classPrivateFieldGet(this, _ReadTask_raw, "f").SourceFile);
268
- // Sanity check that the result is for the file we want:
269
- if (SourceFile !== this.sourceFile) {
270
- // Throw an error rather than add an errors string because this is *really* bad:
271
- throw new Error(`Internal error: unexpected SourceFile of ${__classPrivateFieldGet(this, _ReadTask_raw, "f").SourceFile} for file ${this.sourceFile}`);
272
- }
273
- return __classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_parseTags).call(this);
274
- }
275
- }
276
- exports.ReadTask = ReadTask;
277
- _ReadTask_raw = new WeakMap(), _ReadTask_rawDegrouped = new WeakMap(), _ReadTask_tags = new WeakMap(), _ReadTask_lat = new WeakMap(), _ReadTask_lon = new WeakMap(), _ReadTask_extractTzOffsetFromGps = new WeakMap(), _ReadTask_extractGpsMetadata = new WeakMap(), _ReadTask_tz = new WeakMap(), _ReadTask_extractTzOffset = new WeakMap(), _ReadTask_instances = new WeakSet(), _ReadTask_isVideo = function _ReadTask_isVideo() {
278
- var _a;
279
- return String((_a = __classPrivateFieldGet(this, _ReadTask_rawDegrouped, "f")) === null || _a === void 0 ? void 0 : _a.MIMEType).startsWith("video/");
280
- }, _ReadTask_defaultToUTC = function _ReadTask_defaultToUTC() {
281
- return __classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_isVideo).call(this) && this.options.defaultVideosToUTC;
282
- }, _ReadTask_tagName = function _ReadTask_tagName(k) {
283
- var _a;
284
- return this.degroup ? ((_a = k.split(":")[1]) !== null && _a !== void 0 ? _a : k) : k;
285
- }, _ReadTask_parseTags = function _ReadTask_parseTags() {
286
- if (this.degroup) {
287
- __classPrivateFieldSet(this, _ReadTask_rawDegrouped, {}, "f");
288
- for (const [key, value] of Object.entries(__classPrivateFieldGet(this, _ReadTask_raw, "f"))) {
289
- const k = __classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_tagName).call(this, key);
290
- __classPrivateFieldGet(this, _ReadTask_rawDegrouped, "f")[k] = value;
171
+ if ((0, String_1.notBlank)(this.#raw.SourceFile)) {
172
+ if (!(0, File_1.compareFilePaths)(this.#raw.SourceFile, this.sourceFile)) {
173
+ // this would indicate a bug in batch-cluster:
174
+ throw new Error(`Internal error: unexpected SourceFile of ${this.#raw.SourceFile} for file ${this.sourceFile}`);
175
+ }
291
176
  }
177
+ return this.#parseTags();
292
178
  }
293
- else {
294
- __classPrivateFieldSet(this, _ReadTask_rawDegrouped, __classPrivateFieldGet(this, _ReadTask_raw, "f"), "f");
295
- }
296
- // avoid casting `this.tags as any` for the rest of the function:
297
- const tags = __classPrivateFieldGet(this, _ReadTask_tags, "f");
298
- const tzSrc = __classPrivateFieldGet(this, _ReadTask_extractTzOffset, "f").call(this);
299
- if (tzSrc) {
300
- tags.tz = tzSrc.tz;
301
- tags.tzSource = tzSrc.src;
302
- }
303
- for (const [key, value] of Object.entries(__classPrivateFieldGet(this, _ReadTask_raw, "f"))) {
304
- const k = __classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_tagName).call(this, key);
305
- const v = __classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_parseTag).call(this, k, value);
306
- // Note that we set `key` (which may include a group prefix):
307
- tags[key] = v;
179
+ #isVideo() {
180
+ return String(this.#rawDegrouped?.MIMEType).startsWith("video/");
308
181
  }
309
- // we could `return {...tags, ...errorsAndWarnings(this, tags)}` but tags is
310
- // a chonky monster, and we don't want to double the work for the poor
311
- // garbage collector.
312
- const { errors, warnings } = (0, ErrorsAndWarnings_1.errorsAndWarnings)(this, tags);
313
- tags.errors = errors;
314
- tags.warnings = warnings;
315
- return tags;
316
- }, _ReadTask_parseLocation = function _ReadTask_parseLocation({ tagName, positiveRef, negativeRef, maxValid, }) {
317
- const tagValue = __classPrivateFieldGet(this, _ReadTask_rawDegrouped, "f")[tagName];
318
- const refKey = tagName + "Ref";
319
- const ref = __classPrivateFieldGet(this, _ReadTask_rawDegrouped, "f")[refKey];
320
- const result = (0, Number_1.toFloat)(tagValue);
321
- if (result == null) {
322
- return undefined;
182
+ #defaultToUTC() {
183
+ return this.#isVideo() && this.options.defaultVideosToUTC;
323
184
  }
324
- else if (Math.abs(result) > maxValid) {
325
- this.warnings.push(`Invalid ${tagName}: ${JSON.stringify(tagValue)}`);
326
- return undefined;
327
- }
328
- else if ((0, String_1.blank)(ref)) {
329
- // Videos may not have a GPSLatitudeRef or GPSLongitudeRef: if this is the case, assume the given sign is correct.
330
- return result;
185
+ #tagName(k) {
186
+ return this.degroup ? (k.split(":")[1] ?? k) : k;
331
187
  }
332
- else {
333
- // See https://github.com/photostructure/exiftool-vendored.js/issues/165
334
- // and https://www.exiftool.org/TagNames/GPS.html
335
- const expectedPositive = ref.toUpperCase().startsWith(positiveRef) || ((0, Number_1.isNumber)(ref) && ref >= 0);
336
- const expectedNegative = ref.toUpperCase().startsWith(negativeRef) || ((0, Number_1.isNumber)(ref) && ref < 0);
337
- if (expectedPositive && result < 0) {
338
- this.warnings.push(`Invalid ${tagName} or ${refKey}: expected ${ref} ${tagName} > 0 but got ${result}`);
188
+ #parseTags() {
189
+ if (this.degroup) {
190
+ this.#rawDegrouped = {};
191
+ for (const [key, value] of Object.entries(this.#raw)) {
192
+ const k = this.#tagName(key);
193
+ this.#rawDegrouped[k] = value;
194
+ }
339
195
  }
340
- else if (expectedNegative && result > 0) {
341
- this.warnings.push(`Invalid ${tagName} or ${refKey}: expected ${ref} ${tagName} < 0 but got ${result}`);
196
+ else {
197
+ this.#rawDegrouped = this.#raw;
342
198
  }
343
- return result;
199
+ // avoid casting `this.tags as any` for the rest of the function:
200
+ const tags = this.#tags;
201
+ // Must be run before extracting tz offset, to repair possibly-invalid
202
+ // GeolocationTimeZone
203
+ this.#extractGpsMetadata();
204
+ const tzSrc = this.#extractTzOffset();
205
+ if (tzSrc) {
206
+ tags.tz = tzSrc.tz;
207
+ tags.tzSource = tzSrc.src;
208
+ }
209
+ for (const [key, value] of Object.entries(this.#raw)) {
210
+ const k = this.#tagName(key);
211
+ // Did something already set this? (like GPS tags)
212
+ if (key in tags)
213
+ continue;
214
+ const v = this.#parseTag(k, value);
215
+ // Note that we set `key` (which may include a group prefix):
216
+ if (v == null) {
217
+ delete tags[key];
218
+ }
219
+ else {
220
+ tags[key] = v;
221
+ }
222
+ }
223
+ // we could `return {...tags, ...errorsAndWarnings(this, tags)}` but tags is
224
+ // a chonky monster, and we don't want to double the work for the poor
225
+ // garbage collector.
226
+ const { errors, warnings } = (0, ErrorsAndWarnings_1.errorsAndWarnings)(this, tags);
227
+ tags.errors = errors;
228
+ tags.warnings = warnings;
229
+ return tags;
344
230
  }
345
- }, _ReadTask_parseTag = function _ReadTask_parseTag(tagName, value) {
346
- var _a, _b, _c;
347
- if (nullish(value))
348
- return undefined;
349
- try {
350
- if (PassthroughTags.indexOf(tagName) >= 0) {
351
- return value;
231
+ #extractGpsMetadata = (0, Lazy_1.lazy)(() => {
232
+ const result = (0, GPS_1.parseGPSLocation)(this.#rawDegrouped, this.options);
233
+ if (result?.warnings != null && (result.warnings.length ?? 0) > 0) {
234
+ this.warnings.push(...result.warnings);
352
235
  }
353
- if (tagName === "GPSLatitude") {
354
- return __classPrivateFieldGet(this, _ReadTask_lat, "f").call(this);
236
+ if (result?.invalid !== true) {
237
+ for (const [k, v] of Object.entries(result?.result ?? {})) {
238
+ this.#tags[k] = v;
239
+ }
240
+ }
241
+ return result;
242
+ });
243
+ #gpsIsInvalid = (0, Lazy_1.lazy)(() => this.#extractGpsMetadata()?.invalid ?? false);
244
+ #gpsResults = (0, Lazy_1.lazy)(() => this.#gpsIsInvalid() ? {} : (this.#extractGpsMetadata()?.result ?? {}));
245
+ #extractTzOffsetFromGps = (0, Lazy_1.lazy)(() => {
246
+ const gps = this.#extractGpsMetadata();
247
+ const lat = gps?.result?.GPSLatitude;
248
+ const lon = gps?.result?.GPSLongitude;
249
+ if (gps == null || gps.invalid === true || lat == null || lon == null)
250
+ return;
251
+ // First try GeolocationTimeZone:
252
+ const tz = (0, Timezones_1.normalizeZone)(this.#rawDegrouped.GeolocationTimeZone);
253
+ if (tz != null) {
254
+ return {
255
+ tz: tz.name,
256
+ src: "GeolocationTimeZone",
257
+ };
355
258
  }
356
- if (tagName === "GPSLongitude") {
357
- return __classPrivateFieldGet(this, _ReadTask_lon, "f").call(this);
259
+ try {
260
+ const geoTz = this.options.geoTz(lat, lon);
261
+ const zone = (0, Timezones_1.normalizeZone)(geoTz);
262
+ if (zone != null) {
263
+ return {
264
+ tz: zone.name,
265
+ src: "GPSLatitude/GPSLongitude",
266
+ };
267
+ }
358
268
  }
359
- if (Array.isArray(value)) {
360
- return value.map((ea) => __classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_parseTag).call(this, tagName, ea));
269
+ catch (error) {
270
+ this.warnings.push("Failed to determine timezone from GPS coordinates: " + error);
361
271
  }
362
- if (typeof value === "object") {
363
- const result = {};
364
- for (const [k, v] of Object.entries(value)) {
365
- result[k] = __classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_parseTag).call(this, tagName + "." + k, v);
272
+ return;
273
+ });
274
+ #tz = (0, Lazy_1.lazy)(() => this.#extractTzOffset()?.tz);
275
+ #extractTzOffset = (0, Lazy_1.lazy)(() => {
276
+ if (true === this.options.preferTimezoneInferenceFromGps) {
277
+ const fromGps = this.#extractTzOffsetFromGps();
278
+ if (fromGps != null) {
279
+ return fromGps;
366
280
  }
367
- return result;
368
281
  }
369
- if (typeof value === "string") {
370
- const b = BinaryField_1.BinaryField.fromRawValue(value);
371
- if (b != null)
372
- return b;
373
- if (MaybeDateOrTimeRe.test(tagName) &&
374
- // Reject date/time keys that are "0" or "00" (found in Canon
375
- // SubSecTime values)
376
- !OnlyZerosRE_1.OnlyZerosRE.test(value)) {
377
- // if #defaultToUTC() is true, _we actually think zoneless
378
- // datestamps are all in UTC_, rather than being in `this.tz` (which
379
- // may be from GPS or other heuristics). See issue #153.
380
- const tz = isUtcTagName(tagName) || __classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_defaultToUTC).call(this)
381
- ? "UTC"
382
- : this.options.backfillTimezones
383
- ? __classPrivateFieldGet(this, _ReadTask_tz, "f").call(this)
384
- : undefined;
385
- // Time-only tags have "time" but not "date" in their name:
386
- const keyIncludesTime = /subsec|time/i.test(tagName);
387
- const keyIncludesDate = /date/i.test(tagName);
388
- const keyIncludesWhen = /when/i.test(tagName); // < ResourceEvent.When
389
- const result = (_c = (_b = (_a = (keyIncludesTime || keyIncludesDate || keyIncludesWhen
390
- ? ExifDateTime_1.ExifDateTime.from(value, tz)
391
- : undefined)) !== null && _a !== void 0 ? _a : (keyIncludesTime || keyIncludesWhen
392
- ? ExifTime_1.ExifTime.fromEXIF(value, tz)
393
- : undefined)) !== null && _b !== void 0 ? _b : (keyIncludesDate || keyIncludesWhen
394
- ? ExifDate_1.ExifDate.from(value)
395
- : undefined)) !== null && _c !== void 0 ? _c : value;
396
- const defaultTz = __classPrivateFieldGet(this, _ReadTask_tz, "f").call(this);
397
- if (this.options.backfillTimezones &&
398
- result != null &&
399
- defaultTz != null &&
400
- result instanceof ExifDateTime_1.ExifDateTime &&
401
- __classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_defaultToUTC).call(this) &&
402
- !isUtcTagName(tagName) &&
403
- true === result.inferredZone) {
404
- return result.setZone(defaultTz);
282
+ return ((0, Timezones_1.extractTzOffsetFromTags)(this.#rawDegrouped, this.options) ??
283
+ this.#extractTzOffsetFromGps() ??
284
+ (0, Timezones_1.extractTzOffsetFromDatestamps)(this.#rawDegrouped, this.options) ??
285
+ // See https://github.com/photostructure/exiftool-vendored.js/issues/113
286
+ // and https://github.com/photostructure/exiftool-vendored.js/issues/156
287
+ // Videos are frequently encoded in UTC, but don't include the
288
+ // timezone offset in their datetime stamps.
289
+ (this.#defaultToUTC()
290
+ ? {
291
+ tz: "UTC",
292
+ src: "defaultVideosToUTC",
293
+ }
294
+ : // not applicable:
295
+ undefined) ??
296
+ // This is a last-ditch estimation heuristic:
297
+ (0, Timezones_1.extractTzOffsetFromUTCOffset)(this.#rawDegrouped) ??
298
+ // No, really, this is the even worse than UTC offset heuristics:
299
+ (0, Timezones_1.extractTzOffsetFromTimeStamp)(this.#rawDegrouped, this.options));
300
+ });
301
+ #parseTag(tagName, value) {
302
+ if (nullish(value))
303
+ return undefined;
304
+ try {
305
+ if (PassthroughTags.indexOf(tagName) >= 0) {
306
+ return value;
307
+ }
308
+ if (tagName.startsWith("GPS") || tagName.startsWith("Geolocation")) {
309
+ if (this.#gpsIsInvalid())
310
+ return undefined;
311
+ // If we parsed out a better value, use that:
312
+ const parsed = this.#gpsResults()[tagName];
313
+ if (parsed != null)
314
+ return parsed;
315
+ // Otherwise, parse the raw value like any other tag: (It might be
316
+ // something like "GPSTimeStamp"):
317
+ }
318
+ if (Array.isArray(value)) {
319
+ return value.map((ea) => this.#parseTag(tagName, ea));
320
+ }
321
+ if ((0, Object_1.isObject)(value)) {
322
+ const result = {};
323
+ for (const [k, v] of Object.entries(value)) {
324
+ result[k] = this.#parseTag(tagName + "." + k, v);
405
325
  }
406
326
  return result;
407
327
  }
328
+ if (typeof value === "string") {
329
+ const b = BinaryField_1.BinaryField.fromRawValue(value);
330
+ if (b != null)
331
+ return b;
332
+ if (/Valid$/.test(tagName)) {
333
+ const b = (0, Boolean_1.toBoolean)(value);
334
+ if (b != null)
335
+ return b;
336
+ }
337
+ if (MaybeDateOrTimeRe.test(tagName) &&
338
+ // Reject date/time keys that are "0" or "00" (found in Canon
339
+ // SubSecTime values)
340
+ !OnlyZerosRE_1.OnlyZerosRE.test(value)) {
341
+ // if #defaultToUTC() is true, _we actually think zoneless
342
+ // datestamps are all in UTC_, rather than being in `this.tz` (which
343
+ // may be from GPS or other heuristics). See issue #153.
344
+ const tz = isUtcTagName(tagName) || this.#defaultToUTC()
345
+ ? "UTC"
346
+ : this.options.backfillTimezones
347
+ ? this.#tz()
348
+ : undefined;
349
+ // Time-only tags have "time" but not "date" in their name:
350
+ const keyIncludesTime = /subsec|time/i.test(tagName);
351
+ const keyIncludesDate = /date/i.test(tagName);
352
+ const keyIncludesWhen = /when/i.test(tagName); // < ResourceEvent.When
353
+ const result = (keyIncludesTime || keyIncludesDate || keyIncludesWhen
354
+ ? ExifDateTime_1.ExifDateTime.from(value, tz)
355
+ : undefined) ??
356
+ (keyIncludesTime || keyIncludesWhen
357
+ ? ExifTime_1.ExifTime.fromEXIF(value, tz)
358
+ : undefined) ??
359
+ (keyIncludesDate || keyIncludesWhen
360
+ ? ExifDate_1.ExifDate.from(value)
361
+ : undefined) ??
362
+ value;
363
+ const defaultTz = this.#tz();
364
+ if (this.options.backfillTimezones &&
365
+ result != null &&
366
+ defaultTz != null &&
367
+ result instanceof ExifDateTime_1.ExifDateTime &&
368
+ this.#defaultToUTC() &&
369
+ !isUtcTagName(tagName) &&
370
+ true === result.inferredZone) {
371
+ return result.setZone(defaultTz);
372
+ }
373
+ return result;
374
+ }
375
+ }
376
+ // Trust that ExifTool rendered the value with the correct type in JSON:
377
+ return value;
378
+ }
379
+ catch (e) {
380
+ this.warnings.push(`Failed to parse ${tagName} with value ${JSON.stringify(value)}: ${e}`);
381
+ return value;
408
382
  }
409
- // Trust that ExifTool rendered the value with the correct type in JSON:
410
- return value;
411
- }
412
- catch (e) {
413
- this.warnings.push(`Failed to parse ${tagName} with value ${JSON.stringify(value)}: ${e}`);
414
- return value;
415
383
  }
416
- };
384
+ }
385
+ exports.ReadTask = ReadTask;
417
386
  function isUtcTagName(tagName) {
418
387
  return tagName.includes("UTC") || tagName.startsWith("GPS");
419
388
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ReadTask.js","sourceRoot":"","sources":["../src/ReadTask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReadTask.js","sourceRoot":"","sources":["../src/ReadTask.ts"],"names":[],"mappings":"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"}