exiftool-vendored 23.0.0 → 23.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.
package/CHANGELOG.md CHANGED
@@ -26,6 +26,21 @@ vendored versions of ExifTool match the version that they vendor.
26
26
 
27
27
  ## Version history
28
28
 
29
+ ### v23.1.0
30
+
31
+ - 🌱 ExifTool upgraded to [v12.67](https://exiftool.org/history.html#v12.67)
32
+
33
+ - ✨ `ExifTime` now parses and stores timezone offsets if available. This resolves [issue
34
+ #157](https://github.com/photostructure/exiftool-vendored.js/issues/157).
35
+
36
+ - 📦 `ExifDateTime`, `ExifTime`, and `ExifDate` are now [only allowed to try
37
+ to parse keys that includes `date` or
38
+ `time`](https://github.com/photostructure/exiftool-vendored.js/blob/ed7bf9eaea9b1d8ad234fb907953568219fc5bdb/src/ReadTask.ts#L389),
39
+ which avoids incorrect parsing of tags like `MonthDayCreated` (which looks
40
+ like `12:19`)
41
+
42
+ - 📦 Upgrade all deps, but only `devDependencies` were impacted.
43
+
29
44
  ### v23.0.0
30
45
 
31
46
  - 🏚️ Dropped support for Node.js v16, which is [End-of-Life](https://nodejs.org/en/blog/announcements/nodejs16-eol).
@@ -39,8 +54,10 @@ vendored versions of ExifTool match the version that they vendor.
39
54
  details.
40
55
 
41
56
  - 💔 `backfillTimezones` now defaults to `true`. Although this is likely to be
42
- what people expect, know that there are edge and corner cases that you
43
- should be aware of.
57
+ what people expect, but know that this makes the assumption that all encoded
58
+ times without an explicit offset share the same tz, which may not be correct
59
+ (say, if you edit the image in a different timezone from when it was
60
+ captured).
44
61
 
45
62
  - 💔 If `backfillTimezones` is set to `false`, `ExifDateTime` will no longer
46
63
  use the current file's `.tz` as a default. Prior versions would inherit the
@@ -8,7 +8,6 @@ function retryOnReject(f, maxRetries) {
8
8
  return await f();
9
9
  }
10
10
  catch (err) {
11
- // console.log("retryOnReject caught error", { err, retries, maxRetries })
12
11
  if (retries < maxRetries) {
13
12
  retries++;
14
13
  return g();
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncRetry.js","sourceRoot":"","sources":["../src/AsyncRetry.ts"],"names":[],"mappings":";;;AAAA,SAAgB,aAAa,CAC3B,CAAuB,EACvB,UAAkB;IAElB,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,MAAM,CAAC,GAAqB,KAAK,IAAI,EAAE;QACrC,IAAI;YACF,OAAO,MAAM,CAAC,EAAE,CAAA;SACjB;QAAC,OAAO,GAAG,EAAE;YACZ,0EAA0E;YAC1E,IAAI,OAAO,GAAG,UAAU,EAAE;gBACxB,OAAO,EAAE,CAAA;gBACT,OAAO,CAAC,EAAE,CAAA;aACX;iBAAM;gBACL,MAAM,GAAG,CAAA;aACV;SACF;IACH,CAAC,CAAA;IACD,OAAO,CAAC,EAAE,CAAA;AACZ,CAAC;AAnBD,sCAmBC"}
1
+ {"version":3,"file":"AsyncRetry.js","sourceRoot":"","sources":["../src/AsyncRetry.ts"],"names":[],"mappings":";;;AAAA,SAAgB,aAAa,CAC3B,CAAuB,EACvB,UAAkB;IAElB,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,MAAM,CAAC,GAAqB,KAAK,IAAI,EAAE;QACrC,IAAI;YACF,OAAO,MAAM,CAAC,EAAE,CAAA;SACjB;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,OAAO,GAAG,UAAU,EAAE;gBACxB,OAAO,EAAE,CAAA;gBACT,OAAO,CAAC,EAAE,CAAA;aACX;iBAAM;gBACL,MAAM,GAAG,CAAA;aACV;SACF;IACH,CAAC,CAAA;IACD,OAAO,CAAC,EAAE,CAAA;AACZ,CAAC;AAlBD,sCAkBC"}
@@ -3,7 +3,8 @@ import { ExifDate } from "./ExifDate";
3
3
  import { ExifDateTime } from "./ExifDateTime";
4
4
  import { ExifTime } from "./ExifTime";
5
5
  import { Maybe } from "./Maybe";
6
- export declare function validDateTime(dt: DateTime): boolean;
6
+ export declare function validDateTime(dt: Maybe<DateTime>): dt is DateTime;
7
+ export declare const SecondMs = 1000;
7
8
  export declare const MinuteMs: number;
8
9
  export declare const HourMs: number;
9
10
  export declare const DayMs: number;
package/dist/DateTime.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hms = exports.toExifString = exports.dateTimeToExif = exports.isDateOrTime = exports.DayMs = exports.HourMs = exports.MinuteMs = exports.validDateTime = void 0;
3
+ exports.hms = exports.toExifString = exports.dateTimeToExif = exports.isDateOrTime = exports.DayMs = exports.HourMs = exports.MinuteMs = exports.SecondMs = exports.validDateTime = void 0;
4
4
  const luxon_1 = require("luxon");
5
5
  const ExifDate_1 = require("./ExifDate");
6
6
  const ExifDateTime_1 = require("./ExifDateTime");
@@ -9,7 +9,8 @@ function validDateTime(dt) {
9
9
  return dt != null && dt.isValid;
10
10
  }
11
11
  exports.validDateTime = validDateTime;
12
- exports.MinuteMs = 60 * 1000;
12
+ exports.SecondMs = 1000;
13
+ exports.MinuteMs = 60 * exports.SecondMs;
13
14
  exports.HourMs = 60 * exports.MinuteMs;
14
15
  exports.DayMs = 24 * exports.HourMs;
15
16
  function isDateOrTime(o) {
@@ -1 +1 @@
1
- {"version":3,"file":"DateTime.js","sourceRoot":"","sources":["../src/DateTime.ts"],"names":[],"mappings":";;;AAAA,iCAAgC;AAChC,yCAAqC;AACrC,iDAA6C;AAC7C,yCAAqC;AAGrC,SAAgB,aAAa,CAAC,EAAY;IACxC,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,CAAA;AACjC,CAAC;AAFD,sCAEC;AAEY,QAAA,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAA;AACpB,QAAA,MAAM,GAAG,EAAE,GAAG,gBAAQ,CAAA;AACtB,QAAA,KAAK,GAAG,EAAE,GAAG,cAAM,CAAA;AAIhC,SAAgB,YAAY,CAAC,CAAM;IACjC,OAAO,CACL,CAAC,YAAY,2BAAY;QACzB,CAAC,YAAY,mBAAQ;QACrB,CAAC,YAAY,mBAAQ;QACrB,gBAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CACvB,CAAA;AACH,CAAC;AAPD,oCAOC;AAED,SAAgB,cAAc,CAC5B,CAAW,EACX,IAAiE;IAEjE,OAAO,CAAC,CAAC,QAAQ,CACf,kBAAkB;QAChB,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,mBAAmB,MAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,MAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC9C,CAAA;AACH,CAAC;AATD,wCASC;AAED,SAAgB,YAAY,CAAC,CAAa;;IACxC,IAAI,gBAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QAC1B,OAAO,cAAc,CAAC,CAAC,CAAC,CAAA;KACzB;SAAM;QACL,OAAO,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,YAAY,iDAAI,CAAA;KAC3B;AACH,CAAC;AAND,oCAMC;AAED,SAAgB,GAAG,CACjB,CAAW,EACX,IAAwC;IAExC,OAAO,CAAC,CAAC,QAAQ,CACf,UAAU,GAAG,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,mBAAmB,MAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAChE,CAAA;AACH,CAAC;AAPD,kBAOC"}
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,EAAmB;IAC/C,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,CAAA;AACjC,CAAC;AAFD,sCAEC;AAEY,QAAA,QAAQ,GAAG,IAAI,CAAA;AACf,QAAA,QAAQ,GAAG,EAAE,GAAG,gBAAQ,CAAA;AACxB,QAAA,MAAM,GAAG,EAAE,GAAG,gBAAQ,CAAA;AACtB,QAAA,KAAK,GAAG,EAAE,GAAG,cAAM,CAAA;AAIhC,SAAgB,YAAY,CAAC,CAAM;IACjC,OAAO,CACL,CAAC,YAAY,2BAAY;QACzB,CAAC,YAAY,mBAAQ;QACrB,CAAC,YAAY,mBAAQ;QACrB,gBAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CACvB,CAAA;AACH,CAAC;AAPD,oCAOC;AAED,SAAgB,cAAc,CAC5B,CAAW,EACX,IAAiE;IAEjE,OAAO,CAAC,CAAC,QAAQ,CACf,kBAAkB;QAChB,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,mBAAmB,MAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,MAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC9C,CAAA;AACH,CAAC;AATD,wCASC;AAED,SAAgB,YAAY,CAAC,CAAa;;IACxC,IAAI,gBAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QAC1B,OAAO,cAAc,CAAC,CAAC,CAAC,CAAA;KACzB;SAAM;QACL,OAAO,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,YAAY,iDAAI,CAAA;KAC3B;AACH,CAAC;AAND,oCAMC;AAED,SAAgB,GAAG,CACjB,CAAW,EACX,IAAwC;IAExC,OAAO,CAAC,CAAC,QAAQ,CACf,UAAU,GAAG,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,mBAAmB,MAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAChE,CAAA;AACH,CAAC;AAPD,kBAOC"}
@@ -29,7 +29,6 @@ export declare class ExifDateTime {
29
29
  * `offsetMinutesToZoneName`.
30
30
  */
31
31
  static fromEXIF(text: string, defaultZone?: Maybe<string>): Maybe<ExifDateTime>;
32
- private static fromPatterns;
33
32
  /**
34
33
  * Parse the given date-time string, EXIF-formatted.
35
34
  *
@@ -66,14 +65,17 @@ export declare class ExifDateTime {
66
65
  static now(opts?: DateTimeJSOptions & {
67
66
  rawValue?: string;
68
67
  }): ExifDateTime;
68
+ readonly zone: Maybe<string>;
69
69
  constructor(year: number, month: number, day: number, hour: number, minute: number, second: number, millisecond?: number | undefined, tzoffsetMinutes?: number | undefined, rawValue?: string | undefined, zoneName?: string | undefined, inferredZone?: boolean | undefined);
70
70
  get millis(): number | undefined;
71
71
  get hasZone(): boolean;
72
- get zone(): Maybe<string>;
73
- setZone(zone?: string | Zone, opts?: ZoneOptions): Maybe<ExifDateTime>;
72
+ get unsetMilliseconds(): boolean;
73
+ setZone(zone: string | Zone, opts?: ZoneOptions & {
74
+ inferredZone?: boolean;
75
+ }): Maybe<ExifDateTime>;
74
76
  /**
75
77
  * CAUTION: This instance will inherit the system timezone if this instance
76
- * has an unset zone
78
+ * has an unset zone (as Luxon doesn't support "unset" timezones)
77
79
  */
78
80
  toDateTime(): DateTime;
79
81
  toEpochSeconds(): number;
@@ -10,7 +10,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
10
10
  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");
11
11
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
12
12
  };
13
- var _ExifDateTime_dt;
13
+ var _a, _ExifDateTime_fromPatterns, _ExifDateTime_looseExifFormats, _ExifDateTime_dt;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.ExifDateTime = void 0;
16
16
  const luxon_1 = require("luxon");
@@ -18,45 +18,27 @@ const DateTime_1 = require("./DateTime");
18
18
  const Maybe_1 = require("./Maybe");
19
19
  const Object_1 = require("./Object");
20
20
  const String_1 = require("./String");
21
+ const TimeParsing_1 = require("./TimeParsing");
21
22
  const Timezones_1 = require("./Timezones");
22
- const TimeFmts = [
23
- { fmt: "HH:mm:ss.u", unsetMilliseconds: false },
24
- { fmt: "HH:mm:ss", unsetMilliseconds: true },
25
- { fmt: "HH:mm", unsetMilliseconds: true },
26
- ];
27
23
  /**
28
24
  * Encodes an ExifDateTime with an optional tz offset in minutes.
29
25
  */
30
26
  class ExifDateTime {
31
27
  static from(exifOrIso, defaultZone) {
32
- var _a, _b;
28
+ var _b, _c;
33
29
  return (
34
30
  // in order of strictness:
35
- (_b = (_a = this.fromExifStrict(exifOrIso, defaultZone)) !== null && _a !== void 0 ? _a : this.fromISO(exifOrIso, defaultZone)) !== null && _b !== void 0 ? _b : this.fromExifLoose(exifOrIso, defaultZone));
31
+ (_c = (_b = this.fromExifStrict(exifOrIso, defaultZone)) !== null && _b !== void 0 ? _b : this.fromISO(exifOrIso, defaultZone)) !== null && _c !== void 0 ? _c : this.fromExifLoose(exifOrIso, defaultZone));
36
32
  }
37
33
  static fromISO(iso, defaultZone) {
38
34
  if ((0, String_1.blank)(iso) || null != iso.match(/^\d+$/))
39
35
  return undefined;
40
36
  // Unfortunately, DateTime.fromISO() is happy to parse a date with no time,
41
37
  // so we have to do this ourselves:
42
- const patterns = [];
43
- for (const z of [
44
- { fmt: "ZZ", zone: undefined, inferredZone: false },
45
- { fmt: "'Z'", zone: "UTC", inferredZone: false },
46
- { fmt: "", zone: defaultZone, inferredZone: true },
47
- ]) {
48
- for (const sep of ["'T'", " "]) {
49
- for (const timeFmt of TimeFmts) {
50
- patterns.push({
51
- fmt: `y-M-d${sep}${timeFmt.fmt}${z.fmt}`,
52
- zone: z.zone,
53
- unsetMilliseconds: timeFmt.unsetMilliseconds,
54
- inferredZone: z.inferredZone,
55
- });
56
- }
57
- }
58
- }
59
- return this.fromPatterns(iso, patterns);
38
+ return __classPrivateFieldGet(this, _a, "m", _ExifDateTime_fromPatterns).call(this, iso, (0, TimeParsing_1.timeFormats)({
39
+ formatPrefixes: ["y-MM-dd'T'", "y-MM-dd ", "y-M-d "],
40
+ defaultZone,
41
+ }));
60
42
  }
61
43
  /**
62
44
  * Try to parse a date-time string from EXIF. If there is not both a date
@@ -69,54 +51,12 @@ class ExifDateTime {
69
51
  * `offsetMinutesToZoneName`.
70
52
  */
71
53
  static fromEXIF(text, defaultZone) {
72
- var _a;
54
+ var _b;
73
55
  if ((0, String_1.blank)(text))
74
56
  return undefined;
75
57
  return (
76
58
  // .fromExifStrict() uses .fromISO() as a backstop
77
- (_a = this.fromExifStrict(text, defaultZone)) !== null && _a !== void 0 ? _a : this.fromExifLoose(text, defaultZone));
78
- }
79
- static fromPatterns(text, fmts) {
80
- var _a, _b;
81
- const s = (0, String_1.toS)(text).trim();
82
- const inputs = [s];
83
- // Some EXIF datetime will "over-specify" and include both the utc offset
84
- // *and* the "time zone abbreviation", like PST or PDT.
85
- // TZAs are between 2 (AT) and 5 (WEST) characters.
86
- // Unfortunately, luxon doesn't support regex.
87
- // We only want to strip off the TZA if it isn't "UTC" or "Z"
88
- const zuluSuffix = s.match(/[.\d\s](UTC|Z)$/);
89
- if (null == zuluSuffix) {
90
- const noTza = s.replace(/ [a-z]{2,5}$/i, "");
91
- if (noTza !== s)
92
- inputs.push(noTza);
93
- }
94
- for (const input of inputs) {
95
- for (const ea of fmts) {
96
- const dt = luxon_1.DateTime.fromFormat(input, ea.fmt, {
97
- setZone: true,
98
- zone: (_a = ea.zone) !== null && _a !== void 0 ? _a : Timezones_1.UnsetZone,
99
- });
100
- if (dt != null && dt.isValid) {
101
- const zoneUnset = dt.zone == null || dt.zone === Timezones_1.UnsetZone;
102
- let inferredZone = zoneUnset ? false : ea.inferredZone;
103
- if (inferredZone == null) {
104
- // this is pretty miserable, but luxon doesn't expose how it got
105
- // the zone, so we have to resort to this hack:
106
- const dt2 = luxon_1.DateTime.fromFormat(input, ea.fmt, { setZone: true });
107
- inferredZone = dt.zone !== dt2.zone;
108
- }
109
- const edt = ExifDateTime.fromDateTime(dt, {
110
- rawValue: s,
111
- unsetMilliseconds: (_b = ea.unsetMilliseconds) !== null && _b !== void 0 ? _b : false,
112
- inferredZone,
113
- });
114
- if (edt != null)
115
- return edt;
116
- }
117
- }
118
- }
119
- return;
59
+ (_b = this.fromExifStrict(text, defaultZone)) !== null && _b !== void 0 ? _b : this.fromExifLoose(text, defaultZone));
120
60
  }
121
61
  /**
122
62
  * Parse the given date-time string, EXIF-formatted.
@@ -130,54 +70,27 @@ class ExifDateTime {
130
70
  * `offsetMinutesToZoneName`.
131
71
  */
132
72
  static fromExifStrict(text, defaultZone) {
133
- var _a;
73
+ var _b;
134
74
  if ((0, String_1.blank)(text))
135
75
  return undefined;
136
- const patterns = [];
137
- for (const z of [
138
- { fmt: "ZZ", zone: undefined, inferredZone: false },
139
- { fmt: "'Z'", zone: "UTC", inferredZone: false },
140
- { fmt: "", zone: defaultZone, inferredZone: true },
141
- ]) {
142
- for (const timeFmt of TimeFmts) {
143
- patterns.push({
144
- fmt: `y:M:d ${timeFmt.fmt}${z.fmt}`,
145
- zone: z.zone,
146
- unsetMilliseconds: timeFmt.unsetMilliseconds,
147
- inferredZone: z.inferredZone,
148
- });
149
- }
150
- }
151
- return ((_a = this.fromPatterns(text, patterns)) !== null && _a !== void 0 ? _a :
76
+ return ((_b = __classPrivateFieldGet(this, _a, "m", _ExifDateTime_fromPatterns).call(this, text, (0, TimeParsing_1.timeFormats)({ formatPrefixes: ["y:MM:dd ", "y:M:d "], defaultZone }))) !== null && _b !== void 0 ? _b :
152
77
  // Not found yet? Maybe it's in ISO format? See
153
78
  // https://github.com/photostructure/exiftool-vendored.js/issues/71
154
79
  this.fromISO(text, defaultZone));
155
80
  }
156
81
  static fromExifLoose(text, defaultZone) {
157
- if ((0, String_1.blank)(text))
158
- return undefined;
159
- const zone = (0, String_1.notBlank)(defaultZone) ? defaultZone : Timezones_1.UnsetZone;
160
- // The following are from actual datestamps seen in the wild:
161
- const formats = [
162
- "MMM d y H:m:s",
163
- "MMM d y, H:m:s",
164
- // Thu Oct 13 00:12:27 2016:
165
- "ccc MMM d H:m:s y",
166
- ];
167
- return this.fromPatterns(text, [
168
- ...formats.map((fmt) => ({ fmt: fmt + "ZZ", inferredZone: false })),
169
- // And the same formats, without offsets with default zone:
170
- ...formats.map((fmt) => ({ fmt, zone, inferredZone: true })),
171
- ]);
82
+ return (0, String_1.blank)(text)
83
+ ? undefined
84
+ : __classPrivateFieldGet(this, _a, "m", _ExifDateTime_fromPatterns).call(this, text, __classPrivateFieldGet(this, _a, "m", _ExifDateTime_looseExifFormats).call(this, defaultZone));
172
85
  }
173
86
  static fromDateTime(dt, opts) {
174
- var _a;
87
+ var _b;
175
88
  if (dt == null || !dt.isValid || dt.year === 0 || dt.year === 1) {
176
89
  return undefined;
177
90
  }
178
- return new ExifDateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.millisecond === 0 && true === (opts === null || opts === void 0 ? void 0 : opts.unsetMilliseconds)
91
+ return new _a(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.millisecond === 0 && true === (opts === null || opts === void 0 ? void 0 : opts.unsetMilliseconds)
179
92
  ? undefined
180
- : dt.millisecond, dt.offset === Timezones_1.UnsetZoneOffsetMinutes ? undefined : dt.offset, opts === null || opts === void 0 ? void 0 : opts.rawValue, dt.zoneName == null || ((_a = dt.zone) === null || _a === void 0 ? void 0 : _a.name) === Timezones_1.UnsetZone.name
93
+ : dt.millisecond, dt.offset === Timezones_1.UnsetZoneOffsetMinutes ? undefined : dt.offset, opts === null || opts === void 0 ? void 0 : opts.rawValue, dt.zoneName == null || ((_b = dt.zone) === null || _b === void 0 ? void 0 : _b.name) === Timezones_1.UnsetZone.name
181
94
  ? undefined
182
95
  : dt.zoneName, opts === null || opts === void 0 ? void 0 : opts.inferredZone);
183
96
  }
@@ -224,40 +137,38 @@ class ExifDateTime {
224
137
  this.zoneName = zoneName;
225
138
  this.inferredZone = inferredZone;
226
139
  _ExifDateTime_dt.set(this, void 0);
140
+ this.zone = (0, Timezones_1.getZoneName)({ zoneName, tzoffsetMinutes });
227
141
  }
228
142
  get millis() {
229
143
  return this.millisecond;
230
144
  }
231
145
  get hasZone() {
232
- return (0, String_1.notBlank)(this.zone);
146
+ return this.zone != null;
233
147
  }
234
- get zone() {
235
- var _a;
236
- return (_a = this.zoneName) !== null && _a !== void 0 ? _a : (0, Timezones_1.offsetMinutesToZoneName)(this.tzoffsetMinutes);
148
+ get unsetMilliseconds() {
149
+ return this.millisecond == null;
237
150
  }
238
151
  setZone(zone, opts) {
239
- // This is a bit tricky... We want to keep the local time and just _say_ it was in the zone of the image **if we don't already have a zone.**
240
- // If we _do_ have a zone, assume it was already converted by ExifTool into (probably the system) timezone, which means _don't_ keepLocalTime.
241
- const dt = this.toDateTime().setZone(zone, {
242
- keepLocalTime: !this.hasZone,
243
- ...opts,
152
+ var _b;
153
+ const dt = (0, TimeParsing_1.setZone)({
154
+ zone,
155
+ src: this.toDateTime(),
156
+ srcHasZone: this.hasZone,
157
+ opts,
244
158
  });
245
- const result = ExifDateTime.fromDateTime(dt, {
159
+ return _a.fromDateTime(dt, {
246
160
  rawValue: this.rawValue,
247
161
  unsetMilliseconds: this.millisecond == null,
162
+ inferredZone: (_b = opts === null || opts === void 0 ? void 0 : opts.inferredZone) !== null && _b !== void 0 ? _b : true,
248
163
  });
249
- // We know this will be defined: this is valid, so changing the zone will
250
- // also be valid.
251
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
252
- return result;
253
164
  }
254
165
  /**
255
166
  * CAUTION: This instance will inherit the system timezone if this instance
256
- * has an unset zone
167
+ * has an unset zone (as Luxon doesn't support "unset" timezones)
257
168
  */
258
169
  toDateTime() {
259
- var _a;
260
- return (__classPrivateFieldSet(this, _ExifDateTime_dt, (_a = __classPrivateFieldGet(this, _ExifDateTime_dt, "f")) !== null && _a !== void 0 ? _a : luxon_1.DateTime.fromObject({
170
+ var _b;
171
+ return (__classPrivateFieldSet(this, _ExifDateTime_dt, (_b = __classPrivateFieldGet(this, _ExifDateTime_dt, "f")) !== null && _b !== void 0 ? _b : luxon_1.DateTime.fromObject({
261
172
  year: this.year,
262
173
  month: this.month,
263
174
  day: this.day,
@@ -276,9 +187,9 @@ class ExifDateTime {
276
187
  return this.toDateTime().toJSDate();
277
188
  }
278
189
  toISOString(options = {}) {
279
- var _a;
190
+ var _b;
280
191
  return (0, Maybe_1.denull)(this.toDateTime().toISO({
281
- suppressMilliseconds: (_a = options.suppressMilliseconds) !== null && _a !== void 0 ? _a : this.millisecond == null,
192
+ suppressMilliseconds: (_b = options.suppressMilliseconds) !== null && _b !== void 0 ? _b : this.millisecond == null,
282
193
  includeOffset: this.hasZone && options.includeOffset !== false,
283
194
  }));
284
195
  }
@@ -320,13 +231,14 @@ class ExifDateTime {
320
231
  * @return a new ExifDateTime from the given JSON. Note that this instance **may not be valid**.
321
232
  */
322
233
  static fromJSON(json) {
323
- return new ExifDateTime(json.year, json.month, json.day, json.hour, json.minute, json.second, json.millisecond, json.tzoffsetMinutes, json.rawValue, json.zoneName, json.inferredZone);
234
+ return new _a(json.year, json.month, json.day, json.hour, json.minute, json.second, json.millisecond, json.tzoffsetMinutes, json.rawValue, json.zoneName, json.inferredZone);
324
235
  }
325
236
  maybeMatchZone(target, maxDeltaMs = 14 * DateTime_1.MinuteMs) {
326
- var _a, _b, _c, _d, _e;
327
- if (!target.hasZone)
237
+ var _b, _c, _d;
238
+ const targetZone = target.zone;
239
+ if (targetZone == null || !target.hasZone)
328
240
  return;
329
- return ((_d = (_b = (_a = this.setZone(target.zone, { keepLocalTime: false })) === null || _a === void 0 ? void 0 : _a.ifClose(target, maxDeltaMs)) !== null && _b !== void 0 ? _b : (_c = this.setZone(target.zone, { keepLocalTime: true })) === null || _c === void 0 ? void 0 : _c.ifClose(target, maxDeltaMs)) !== null && _d !== void 0 ? _d : (_e = this.setZone("UTC", { keepLocalTime: true })) === null || _e === void 0 ? void 0 : _e.ifClose(target, maxDeltaMs));
241
+ return ((_c = (_b = this.setZone(targetZone, { keepLocalTime: false })) === null || _b === void 0 ? void 0 : _b.ifClose(target, maxDeltaMs)) !== null && _c !== void 0 ? _c : (_d = this.setZone(targetZone, { keepLocalTime: true })) === null || _d === void 0 ? void 0 : _d.ifClose(target, maxDeltaMs));
330
242
  }
331
243
  ifClose(target, maxDeltaMs = 14 * DateTime_1.MinuteMs) {
332
244
  const ts = this.toMillis();
@@ -338,9 +250,30 @@ class ExifDateTime {
338
250
  if (!this.hasZone) {
339
251
  dt = dt.setZone(Timezones_1.UnsetZone, { keepLocalTime: true });
340
252
  }
341
- return ExifDateTime.fromDateTime(dt);
253
+ return _a.fromDateTime(dt, this);
342
254
  }
343
255
  }
344
256
  exports.ExifDateTime = ExifDateTime;
345
- _ExifDateTime_dt = new WeakMap();
257
+ _a = ExifDateTime, _ExifDateTime_dt = new WeakMap(), _ExifDateTime_fromPatterns = function _ExifDateTime_fromPatterns(text, fmts) {
258
+ const result = (0, TimeParsing_1.parseDateTime)(text, fmts);
259
+ return result == null
260
+ ? undefined
261
+ : _a.fromDateTime(result.dt, {
262
+ rawValue: text,
263
+ unsetMilliseconds: result.unsetMilliseconds,
264
+ inferredZone: result.inferredZone,
265
+ });
266
+ }, _ExifDateTime_looseExifFormats = function* _ExifDateTime_looseExifFormats(defaultZone) {
267
+ // The following are from actual datestamps seen in the wild (!!)
268
+ const formats = [
269
+ "MMM d y HH:mm:ss",
270
+ "MMM d y, HH:mm:ss",
271
+ // Thu Oct 13 00:12:27 2016:
272
+ "ccc MMM d HH:mm:ss y",
273
+ ];
274
+ const zone = (0, String_1.notBlank)(defaultZone) ? defaultZone : Timezones_1.UnsetZone;
275
+ for (const fmt of formats) {
276
+ yield { fmt: fmt, zone, inferredZone: true };
277
+ }
278
+ };
346
279
  //# 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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"}
@@ -1,22 +1,30 @@
1
- import { DateTime } from "luxon";
1
+ import { DateTime, Zone, ZoneOptions } from "luxon";
2
2
  import { Maybe } from "./Maybe";
3
3
  /**
4
4
  * Encodes an ExifTime (which may not have a timezone offset)
5
5
  */
6
6
  export declare class ExifTime {
7
+ #private;
7
8
  readonly hour: number;
8
9
  readonly minute: number;
9
10
  readonly second: number;
10
11
  readonly millisecond?: number | undefined;
11
12
  readonly rawValue?: string | undefined;
12
- static fromEXIF(text: string): Maybe<ExifTime>;
13
- static fromDateTime(dt: DateTime, rawValue?: string): Maybe<ExifTime>;
14
- constructor(hour: number, minute: number, second: number, millisecond?: number | undefined, rawValue?: string | undefined);
13
+ readonly inferredZone?: boolean | undefined;
14
+ static fromEXIF(text: string, defaultZone?: Maybe<string>): Maybe<ExifTime>;
15
+ static fromDateTime(dt: Maybe<DateTime>, rawValue?: string, zone?: string, inferredZone?: boolean, unsetMilliseconds?: boolean): Maybe<ExifTime>;
16
+ readonly zone: Maybe<string>;
17
+ constructor(hour: number, minute: number, second: number, millisecond?: number | undefined, rawValue?: string | undefined, zoneName?: Maybe<string>, inferredZone?: boolean | undefined);
18
+ toDateTime(): DateTime;
19
+ /**
20
+ * Alias for `.millisecond`
21
+ */
15
22
  get millis(): number | undefined;
16
- private subsec;
23
+ get hasZone(): boolean;
17
24
  toString(): string;
18
25
  toISOString(): string;
19
26
  toExifString(): string;
27
+ setZone(zone: string | Zone, opts?: ZoneOptions): Maybe<ExifTime>;
20
28
  toJSON(): {
21
29
  _ctor: string;
22
30
  hour: number;
@@ -24,6 +32,8 @@ export declare class ExifTime {
24
32
  second: number;
25
33
  millisecond: number | undefined;
26
34
  rawValue: string | undefined;
35
+ zone: Maybe<string>;
36
+ inferredZone: boolean | undefined;
27
37
  };
28
38
  static fromJSON(json: ReturnType<ExifTime["toJSON"]>): ExifTime;
29
39
  }