exiftool-vendored 36.0.0 → 37.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/CHANGELOG.md +64 -5
  2. package/CLAUDE.md +2 -1
  3. package/README.md +128 -35
  4. package/RELEASE.md +1 -1
  5. package/data/TagMetadata.json +10 -3
  6. package/dist/DateTime.d.ts +2 -2
  7. package/dist/DateTime.js +1 -1
  8. package/dist/DateTime.js.map +1 -1
  9. package/dist/ExifTool.d.ts +45 -8
  10. package/dist/ExifTool.dispose.spec.js +3 -3
  11. package/dist/ExifTool.dispose.spec.js.map +1 -1
  12. package/dist/ExifTool.js +54 -10
  13. package/dist/ExifTool.js.map +1 -1
  14. package/dist/ExifToolOptions.d.ts +15 -2
  15. package/dist/ExifToolOptions.js.map +1 -1
  16. package/dist/ExifToolVendoredTags.d.ts +11 -1
  17. package/dist/ExifToolVendoredTags.js +1 -1
  18. package/dist/ExifToolVendoredTags.js.map +1 -1
  19. package/dist/ExiftoolPath.js +1 -1
  20. package/dist/ExiftoolPath.js.map +1 -1
  21. package/dist/InvalidUtf8Bytes.d.ts +20 -0
  22. package/dist/InvalidUtf8Bytes.js +106 -0
  23. package/dist/InvalidUtf8Bytes.js.map +1 -0
  24. package/dist/InvalidUtf8Bytes.spec.d.ts +1 -0
  25. package/dist/InvalidUtf8Bytes.spec.js +75 -0
  26. package/dist/InvalidUtf8Bytes.spec.js.map +1 -0
  27. package/dist/InvalidUtf8Xml.spec.d.ts +1 -0
  28. package/dist/InvalidUtf8Xml.spec.js +156 -0
  29. package/dist/InvalidUtf8Xml.spec.js.map +1 -0
  30. package/dist/JSON.d.ts +1 -0
  31. package/dist/JSON.js +6 -1
  32. package/dist/JSON.js.map +1 -1
  33. package/dist/RawTags.d.ts +9 -2
  34. package/dist/ReadRawTask.d.ts +1 -0
  35. package/dist/ReadRawTask.js +16 -3
  36. package/dist/ReadRawTask.js.map +1 -1
  37. package/dist/ReadRawTask.spec.js +191 -0
  38. package/dist/ReadRawTask.spec.js.map +1 -1
  39. package/dist/ReadTask.js +24 -2
  40. package/dist/ReadTask.js.map +1 -1
  41. package/dist/ReadTask.spec.js +52 -0
  42. package/dist/ReadTask.spec.js.map +1 -1
  43. package/dist/TagEdit.d.ts +62 -0
  44. package/dist/TagEdit.js +224 -0
  45. package/dist/TagEdit.js.map +1 -0
  46. package/dist/TagEdit.spec.d.ts +1 -0
  47. package/dist/TagEdit.spec.js +863 -0
  48. package/dist/TagEdit.spec.js.map +1 -0
  49. package/dist/Tags.d.ts +56 -38
  50. package/dist/Tags.js +3 -3
  51. package/dist/Tags.js.map +1 -1
  52. package/dist/Tags.spec.js +8 -0
  53. package/dist/Tags.spec.js.map +1 -1
  54. package/dist/Timezones.js.map +1 -1
  55. package/dist/Utf8JsonFilter.d.ts +7 -0
  56. package/dist/Utf8JsonFilter.js +85 -0
  57. package/dist/Utf8JsonFilter.js.map +1 -0
  58. package/dist/WriteTask.d.ts +6 -0
  59. package/dist/WriteTask.js +58 -18
  60. package/dist/WriteTask.js.map +1 -1
  61. package/dist/WriteTask.spec.js +17 -0
  62. package/dist/WriteTask.spec.js.map +1 -1
  63. package/dist/update/mktags.js +19 -1
  64. package/dist/update/mktags.js.map +1 -1
  65. package/package.json +15 -47
package/dist/ExifTool.js CHANGED
@@ -36,7 +36,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.exiftool = exports.ExifTool = exports.ImageHashTypes = exports.WriteTaskOptionFields = exports.DefaultWriteTaskOptions = exports.zoneToShortOffset = exports.validTzOffsetMinutes = exports.ValidTimezoneOffsets = exports.UnsetZoneOffsetMinutes = exports.UnsetZoneName = exports.UnsetZone = exports.TimezoneOffsetTagnames = exports.TimezoneOffsetRE = exports.parseTimezoneOffsetToMinutes = exports.parseTimezoneOffsetMatch = exports.offsetMinutesToZoneName = exports.normalizeZone = exports.isZoneValid = exports.isZoneUnset = exports.isZone = exports.isUTC = exports.inferLikelyOffsetMinutes = exports.extractZone = exports.extractTzOffsetFromUTCOffset = exports.extractTzOffsetFromTags = exports.equivalentZones = exports.defaultVideosToUTC = exports.ArchaicTimezoneOffsets = exports.TagDescriptions = exports.strEnum = exports.Settings = exports.Setting = exports.DefaultReadTaskOptions = exports.DefaultReadRawTaskOptions = exports.parseJSON = exports.isGeolocationTag = exports.GeolocationTagNames = exports.exiftoolPath = exports.ExifToolTask = exports.ExifTime = exports.ExifDateTime = exports.ExifDate = exports.DefaultMaxProcs = exports.DefaultExiftoolArgs = exports.DefaultExifToolOptions = exports.CapturedAtTagNames = exports.BinaryField = exports.retryOnReject = void 0;
39
+ exports.TagEditRemoveOnlyTagNames = exports.TagEditAddTagNames = exports.RegionNameEditTagName = exports.CollectionEditTagName = exports.ImageHashTypes = exports.WriteTaskOptionFields = exports.DefaultWriteTaskOptions = exports.zoneToShortOffset = exports.validTzOffsetMinutes = exports.ValidTimezoneOffsets = exports.UnsetZoneOffsetMinutes = exports.UnsetZoneName = exports.UnsetZone = exports.TimezoneOffsetTagnames = exports.TimezoneOffsetRE = exports.parseTimezoneOffsetToMinutes = exports.parseTimezoneOffsetMatch = exports.offsetMinutesToZoneName = exports.normalizeZone = exports.isZoneValid = exports.isZoneUnset = exports.isZone = exports.isUTC = exports.inferLikelyOffsetMinutes = exports.extractZone = exports.extractTzOffsetFromUTCOffset = exports.extractTzOffsetFromTags = exports.equivalentZones = exports.defaultVideosToUTC = exports.ArchaicTimezoneOffsets = exports.TagDescriptions = exports.strEnum = exports.Settings = exports.Setting = exports.DefaultReadTaskOptions = exports.DefaultReadRawTaskOptions = exports.parseJSON = exports.isGeolocationTag = exports.GeolocationTagNames = exports.exiftoolPath = exports.ExifToolTask = exports.ExifTime = exports.ExifDateTime = exports.ExifDate = exports.DefaultMaxProcs = exports.DefaultExiftoolArgs = exports.DefaultExifToolOptions = exports.CapturedAtTagNames = exports.BinaryField = exports.retryOnReject = void 0;
40
+ exports.exiftool = exports.ExifTool = exports.TagEditValueTagNames = exports.TagEditTagNames = void 0;
40
41
  const bc = __importStar(require("batch-cluster"));
41
42
  const _cp = __importStar(require("node:child_process"));
42
43
  const _fs = __importStar(require("node:fs"));
@@ -129,6 +130,13 @@ Object.defineProperty(exports, "DefaultWriteTaskOptions", { enumerable: true, ge
129
130
  Object.defineProperty(exports, "WriteTaskOptionFields", { enumerable: true, get: function () { return WriteTask_2.WriteTaskOptionFields; } });
130
131
  var ExifToolOptions_2 = require("./ExifToolOptions");
131
132
  Object.defineProperty(exports, "ImageHashTypes", { enumerable: true, get: function () { return ExifToolOptions_2.ImageHashTypes; } });
133
+ var TagEdit_1 = require("./TagEdit");
134
+ Object.defineProperty(exports, "CollectionEditTagName", { enumerable: true, get: function () { return TagEdit_1.CollectionEditTagName; } });
135
+ Object.defineProperty(exports, "RegionNameEditTagName", { enumerable: true, get: function () { return TagEdit_1.RegionNameEditTagName; } });
136
+ Object.defineProperty(exports, "TagEditAddTagNames", { enumerable: true, get: function () { return TagEdit_1.TagEditAddTagNames; } });
137
+ Object.defineProperty(exports, "TagEditRemoveOnlyTagNames", { enumerable: true, get: function () { return TagEdit_1.TagEditRemoveOnlyTagNames; } });
138
+ Object.defineProperty(exports, "TagEditTagNames", { enumerable: true, get: function () { return TagEdit_1.TagEditTagNames; } });
139
+ Object.defineProperty(exports, "TagEditValueTagNames", { enumerable: true, get: function () { return TagEdit_1.TagEditValueTagNames; } });
132
140
  /**
133
141
  * This is the hardcoded path in the exiftool shebang line (#!/usr/bin/perl).
134
142
  *
@@ -298,6 +306,40 @@ class ExifTool {
298
306
  const retriable = false;
299
307
  return this.enqueueTask(() => WriteTask_1.WriteTask.for(file, tags, opts), retriable);
300
308
  }
309
+ /**
310
+ * Add or remove individual metadata values without replacing unrelated list
311
+ * items. Arguments are emitted in the provided order in one non-retriable
312
+ * ExifTool write command, but ExifTool applies removals before additions for
313
+ * the same tag.
314
+ *
315
+ * Tag names must be entries in {@link TagEditTagNames}. The primitive subset
316
+ * is {@link TagEditValueTagNames}; {@link TagEditAddTagNames} and
317
+ * {@link TagEditRemoveOnlyTagNames} distinguish add-capable lists from
318
+ * audited scalar and flattened structure fields. Structured values and
319
+ * predicates are supported only for the closed schemas explicitly typed by
320
+ * {@link TagEdit}. Each primitive operation accepts one non-empty, exactly
321
+ * preservable string value; repeat operations to preserve duplicate
322
+ * additions. A remove operation deletes every exact matching value. Values
323
+ * are literal text and HTML entity sequences are not decoded, unlike the
324
+ * legacy behavior of {@link ExifTool.write}.
325
+ *
326
+ * This API does not set, clear, or force-write empty tags. Continue using
327
+ * {@link ExifTool.write} for whole-tag writes and deletion with `null`.
328
+ *
329
+ * @param file an existing file or writable sidecar path
330
+ * @param edits one or more ordered add/remove operations
331
+ * @param options overrides to the configured write-task options. `-api` and
332
+ * `-sep`/`-separator` write arguments are rejected because they can alter
333
+ * edit semantics.
334
+ */
335
+ editTags(file, edits, options) {
336
+ const opts = {
337
+ ...(0, Pick_1.pick)(this.options, ...WriteTask_1.WriteTaskOptionFields),
338
+ ...options,
339
+ };
340
+ // Edits such as additions are not necessarily idempotent.
341
+ return this.enqueueTask(() => WriteTask_1.WriteTask.forTagEdits(file, edits, opts), false);
342
+ }
301
343
  /**
302
344
  * This will strip `file` of all metadata tags. The original file (with the
303
345
  * name `${FILENAME}_original`) will be retained. Note that some tags, like
@@ -527,8 +569,8 @@ class ExifTool {
527
569
  * This allows ExifTool instances to be automatically cleaned up when they go out of scope.
528
570
  *
529
571
  * Note: This is a synchronous disposal method that initiates graceful cleanup but doesn't
530
- * wait for completion. If graceful cleanup times out, forceful cleanup is attempted.
531
- * For guaranteed cleanup completion, use `await using` with the async disposal method instead.
572
+ * wait for completion. If graceful cleanup times out, forceful cleanup is requested.
573
+ * Use `await using` when the caller must wait for the cleanup attempt to settle.
532
574
  *
533
575
  * @example
534
576
  * ```typescript
@@ -543,18 +585,18 @@ class ExifTool {
543
585
  if (!this.ended) {
544
586
  // Start with graceful cleanup, but use timeout for safety since this is sync disposal
545
587
  const cleanup = this.end(true);
546
- // Set up a timeout to force process exit if graceful cleanup hangs
588
+ // Set up a timeout to request forceful cleanup if graceful cleanup hangs
547
589
  // This is necessary because synchronous disposal can't wait for async operations
548
590
  const timeoutMs = this.options.disposalTimeoutMs ?? 1000;
549
591
  const timeoutHandle = setTimeout(() => {
550
592
  const logger = this.options.logger();
551
- logger.error(`ExifTool synchronous disposal timeout after ${timeoutMs}ms, forcing cleanup`);
552
- // Force immediate termination of child processes if they exist
593
+ logger.error(`ExifTool synchronous disposal timeout after ${timeoutMs}ms, requesting forceful cleanup`);
594
+ // Request immediate termination of child processes if they still exist
553
595
  try {
554
596
  this.batchCluster.closeChildProcesses(false);
555
597
  }
556
598
  catch (err) {
557
- logger.error("Error during forced child process cleanup during sync disposal:", err);
599
+ logger.error("Error while requesting forceful child process cleanup during sync disposal:", err);
558
600
  }
559
601
  }, timeoutMs);
560
602
  cleanup
@@ -573,8 +615,9 @@ class ExifTool {
573
615
  * Implements the AsyncDisposable interface for automatic async cleanup with the `await using` keyword.
574
616
  * This allows ExifTool instances to be automatically cleaned up when they go out of scope.
575
617
  *
576
- * This method provides robust cleanup with timeout protection to prevent hanging.
577
- * If graceful cleanup times out, forceful cleanup is attempted automatically.
618
+ * This method waits for graceful cleanup. If the configured timeout elapses,
619
+ * forceful cleanup is requested. Cleanup is best-effort and the timeout is not
620
+ * a hard completion deadline.
578
621
  *
579
622
  * @example
580
623
  * ```typescript
@@ -587,7 +630,8 @@ class ExifTool {
587
630
  */
588
631
  async [Symbol.asyncDispose]() {
589
632
  if (!this.ended) {
590
- // Set up a timeout to prevent hanging indefinitely during async disposal
633
+ // Set up a timeout before requesting forceful cleanup. This does not
634
+ // impose a hard deadline on the complete disposal operation.
591
635
  const timeoutMs = this.options.asyncDisposalTimeoutMs ?? 5000;
592
636
  let timeoutHandle = undefined;
593
637
  const timeoutPromise = new Promise((_, reject) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ExifTool.js","sourceRoot":"","sources":["../src/ExifTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExifTool.js","sourceRoot":"","sources":["../src/ExifTool.ts"],"names":[],"mappings":"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"}
@@ -288,6 +288,17 @@ export interface ExifToolOptions extends bc.BatchClusterOptions, bc.BatchProcess
288
288
  * library rejects any entry containing `\r`, `\n`, or `\0` as a
289
289
  * defense-in-depth measure, but provides no other sanitization.
290
290
  *
291
+ * JSON reads repair malformed UTF-8 with U+FFFD (`�`) independently of this
292
+ * array and preserve the original string bytes in
293
+ * `Tags.invalidUtf8Bytes`. If these arguments contain an explicit,
294
+ * non-empty ExifTool `-api Filter=...` option, that custom filter owns the
295
+ * complete output filtering pipeline and must perform any desired UTF-8
296
+ * repair and byte capture itself.
297
+ *
298
+ * The marker appears only in string values; to render it as the pre-v37 `?`,
299
+ * post-process with
300
+ * `typeof value === "string" ? value.replace(/\uFFFD/g, "?") : value`.
301
+ *
291
302
  * @default `["-fast"]`
292
303
  */
293
304
  readArgs: string[];
@@ -347,14 +358,16 @@ export interface ExifToolOptions extends bc.BatchClusterOptions, bc.BatchProcess
347
358
  keepUTCTime: boolean;
348
359
  /**
349
360
  * Timeout in milliseconds for synchronous disposal (using Symbol.dispose).
350
- * If graceful cleanup takes longer than this, forceful cleanup is attempted.
361
+ * If graceful cleanup takes longer than this, forceful cleanup is requested.
362
+ * This is not a hard completion deadline.
351
363
  *
352
364
  * @default 1000 (1 second)
353
365
  */
354
366
  disposalTimeoutMs?: number;
355
367
  /**
356
368
  * Timeout in milliseconds for asynchronous disposal (using Symbol.asyncDispose).
357
- * If graceful cleanup takes longer than this, forceful cleanup is attempted.
369
+ * If graceful cleanup takes longer than this, forceful cleanup is requested.
370
+ * This is not a hard completion deadline.
358
371
  *
359
372
  * @default 5000 (5 seconds)
360
373
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ExifToolOptions.js","sourceRoot":"","sources":["../src/ExifToolOptions.ts"],"names":[],"mappings":";;;AAyZA,0DASC;AA/ZD,uCAA0D;AAG7C,QAAA,cAAc,GAAG,IAAA,iBAAO,EACnC,KAAK,EACL,QAAQ,EACR,QAAQ,CACsC,CAAC;AA+YjD,SAAgB,uBAAuB,CAIrC,OAAU;IACV,IAAI,OAAO,CAAC,aAAa,IAAI,IAAI,IAAI,OAAO,CAAC,mBAAmB,IAAI,IAAI,EAAE,CAAC;QACzE,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACtE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"ExifToolOptions.js","sourceRoot":"","sources":["../src/ExifToolOptions.ts"],"names":[],"mappings":";;;AAsaA,0DASC;AA5aD,uCAA0D;AAG7C,QAAA,cAAc,GAAG,IAAA,iBAAO,EACnC,KAAK,EACL,QAAQ,EACR,QAAQ,CACsC,CAAC;AA4ZjD,SAAgB,uBAAuB,CAIrC,OAAU;IACV,IAAI,OAAO,CAAC,aAAa,IAAI,IAAI,IAAI,OAAO,CAAC,mBAAmB,IAAI,IAAI,EAAE,CAAC;QACzE,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACtE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,9 +1,19 @@
1
1
  import { ErrorsAndWarnings } from "./ErrorsAndWarnings";
2
+ import { InvalidUtf8Bytes } from "./InvalidUtf8Bytes";
2
3
  import { StrEnum, StrEnumKeys } from "./StrEnum";
3
4
  /**
4
5
  * This tags are added to {@link Tags} from this library.
5
6
  */
6
7
  export interface ExifToolVendoredTags extends ErrorsAndWarnings {
8
+ /**
9
+ * Original bytes for metadata strings that contained malformed UTF-8.
10
+ *
11
+ * This sparse object mirrors the returned tag paths. It is absent when all
12
+ * strings were valid UTF-8 or when a custom ExifTool `Filter` handled them.
13
+ * Each damaged string is a `Uint8Array` leaf; narrow a dynamic lookup with
14
+ * `value instanceof Uint8Array` before decoding it.
15
+ */
16
+ invalidUtf8Bytes?: InvalidUtf8Bytes;
7
17
  /**
8
18
  * Either an offset, like `UTC-7`, or an actual IANA timezone, like
9
19
  * `America/Los_Angeles`.
@@ -28,5 +38,5 @@ export interface ExifToolVendoredTags extends ErrorsAndWarnings {
28
38
  */
29
39
  zoneSource?: string;
30
40
  }
31
- export declare const ExifToolVendoredTagNames: StrEnum<"zone" | "tz" | "tzSource" | "zoneSource" | "errors" | "warnings">;
41
+ export declare const ExifToolVendoredTagNames: StrEnum<"zone" | "invalidUtf8Bytes" | "tz" | "tzSource" | "zoneSource" | "errors" | "warnings">;
32
42
  export type ExifToolVendoredTagName = StrEnumKeys<typeof ExifToolVendoredTagNames>;
@@ -2,5 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ExifToolVendoredTagNames = void 0;
4
4
  const StrEnum_1 = require("./StrEnum");
5
- exports.ExifToolVendoredTagNames = (0, StrEnum_1.strEnum)("tz", "zone", "tzSource", "zoneSource", "errors", "warnings");
5
+ exports.ExifToolVendoredTagNames = (0, StrEnum_1.strEnum)("invalidUtf8Bytes", "tz", "zone", "tzSource", "zoneSource", "errors", "warnings");
6
6
  //# sourceMappingURL=ExifToolVendoredTags.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExifToolVendoredTags.js","sourceRoot":"","sources":["../src/ExifToolVendoredTags.ts"],"names":[],"mappings":";;;AAGA,uCAA0D;AAkC7C,QAAA,wBAAwB,GAAG,IAAA,iBAAO,EAC7C,IAAI,EACJ,MAAM,EACN,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,UAAU,CACmC,CAAC"}
1
+ {"version":3,"file":"ExifToolVendoredTags.js","sourceRoot":"","sources":["../src/ExifToolVendoredTags.ts"],"names":[],"mappings":";;;AAIA,uCAA0D;AA4C7C,QAAA,wBAAwB,GAAG,IAAA,iBAAO,EAC7C,kBAAkB,EAClB,IAAI,EACJ,MAAM,EACN,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,UAAU,CACmC,CAAC"}
@@ -44,7 +44,7 @@ function vendorPackage() {
44
44
  async function tryImport({ prefix = "", logger, } = {}) {
45
45
  const id = prefix + vendorPackage();
46
46
  try {
47
- const module = await Promise.resolve(`${id}`).then(s => __importStar(require(s)));
47
+ const module = await import(id);
48
48
  return module.default ?? module;
49
49
  }
50
50
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"ExiftoolPath.js","sourceRoot":"","sources":["../src/ExiftoolPath.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDA,oCAkDC;AApGD,6CAA+B;AAC/B,iDAAmC;AACnC,uCAAoC;AAEpC,mCAAgC;AAEhC,SAAS,aAAa;IACpB,OAAO,oBAAoB,GAAG,CAAC,IAAA,iBAAO,GAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,EACvB,MAAM,GAAG,EAAE,EACX,MAAM,MACyC,EAAE;IACjD,MAAM,EAAE,GAAG,MAAM,GAAG,aAAa,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,yBAAa,EAAE,uCAAC,CAAC;QAChC,OAAO,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,cAAc,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACI,KAAK,UAAU,YAAY,CAAC,MAAe;IAChD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACrD,2EAA2E;IAC3E,iEAAiE;IAEjE,MAAM,gBAAgB,GAAG,IAAI;QAC3B,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;SACjB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC3D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEnB,uEAAuE;IACvE,yEAAyE;IACzE,IAAI,gBAAgB,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjE,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,EAAE,IAAI,CAAC,8BAA8B,GAAG,aAAa,EAAE,CAAC,CAAC;IAE/D,kDAAkD;IAClD,MAAM,oBAAoB,GAAI,OAAsC;SACjE,aAAa,CAAC;IACjB,IAAI,oBAAoB,IAAI,IAAI,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAC1B,oBAAoB,EACpB,aAAa,EAAE,EACf,KAAK,EACL,UAAU,GAAG,CAAC,IAAA,iBAAO,GAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CACvC,CAAC;QACF,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,IAAI,CACV,4DAA4D;gBAC1D,SAAS,CACZ,CAAC;QACJ,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,MAAM,QAAQ,GAAG,MAAM,IAAA,aAAK,EAAC,UAAU,CAAC,CAAC;IACzC,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACrB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ExiftoolPath.js","sourceRoot":"","sources":["../src/ExiftoolPath.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDA,oCAkDC;AApGD,6CAA+B;AAC/B,iDAAmC;AACnC,uCAAoC;AAEpC,mCAAgC;AAEhC,SAAS,aAAa;IACpB,OAAO,oBAAoB,GAAG,CAAC,IAAA,iBAAO,GAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,EACvB,MAAM,GAAG,EAAE,EACX,MAAM,MACyC,EAAE;IACjD,MAAM,EAAE,GAAG,MAAM,GAAG,aAAa,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,cAAc,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACI,KAAK,UAAU,YAAY,CAAC,MAAe;IAChD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACrD,2EAA2E;IAC3E,iEAAiE;IAEjE,MAAM,gBAAgB,GAAG,IAAI;QAC3B,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;SACjB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC3D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEnB,uEAAuE;IACvE,yEAAyE;IACzE,IAAI,gBAAgB,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjE,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,EAAE,IAAI,CAAC,8BAA8B,GAAG,aAAa,EAAE,CAAC,CAAC;IAE/D,kDAAkD;IAClD,MAAM,oBAAoB,GAAI,OAAsC;SACjE,aAAa,CAAC;IACjB,IAAI,oBAAoB,IAAI,IAAI,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAC1B,oBAAoB,EACpB,aAAa,EAAE,EACf,KAAK,EACL,UAAU,GAAG,CAAC,IAAA,iBAAO,GAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CACvC,CAAC;QACF,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,IAAI,CACV,4DAA4D;gBAC1D,SAAS,CACZ,CAAC;QACJ,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,MAAM,QAAQ,GAAG,MAAM,IAAA,aAAK,EAAC,UAAU,CAAC,CAAC;IACzC,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACrB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Original bytes for metadata strings that contained malformed UTF-8.
3
+ *
4
+ * Keys mirror the returned tag value. List indexes are represented as numeric
5
+ * object keys, and branches without malformed strings are omitted. Each leaf
6
+ * is a `Uint8Array`; intermediate values are nested `InvalidUtf8Bytes` objects.
7
+ * Narrow a dynamic lookup with `value instanceof Uint8Array` before decoding
8
+ * it.
9
+ */
10
+ export interface InvalidUtf8Bytes {
11
+ [tagOrIndex: string]: Uint8Array | InvalidUtf8Bytes;
12
+ }
13
+ export declare const InvalidUtf8Marker = "__etvInvalidUtf8V1";
14
+ /** Restore byte arrays after callers serialize tags with `JSON.stringify()`. */
15
+ export declare function reviveInvalidUtf8Bytes(value: unknown): unknown;
16
+ /** Decode the private ExifTool filter wrapper before returning public tags. */
17
+ export declare function unwrapInvalidUtf8Tags(tags: Record<string, unknown>): {
18
+ tags: Record<string, unknown>;
19
+ invalidUtf8Bytes?: InvalidUtf8Bytes;
20
+ };
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvalidUtf8Marker = void 0;
4
+ exports.reviveInvalidUtf8Bytes = reviveInvalidUtf8Bytes;
5
+ exports.unwrapInvalidUtf8Tags = unwrapInvalidUtf8Tags;
6
+ exports.InvalidUtf8Marker = "__etvInvalidUtf8V1";
7
+ const StringPrefix = "s:";
8
+ const Base64Prefix = "b64:";
9
+ function wireValue(value) {
10
+ if (value == null || typeof value !== "object" || Array.isArray(value)) {
11
+ return;
12
+ }
13
+ const outerEntries = Object.entries(value);
14
+ if (outerEntries.length !== 1 || outerEntries[0]?.[0] !== exports.InvalidUtf8Marker) {
15
+ return;
16
+ }
17
+ const payload = outerEntries[0][1];
18
+ if (payload == null ||
19
+ typeof payload !== "object" ||
20
+ Array.isArray(payload)) {
21
+ return;
22
+ }
23
+ const payloadEntries = Object.entries(payload);
24
+ if (payloadEntries.length !== 2 ||
25
+ typeof payload.replacement !==
26
+ "string" ||
27
+ typeof payload.rawBase64 !== "string") {
28
+ return;
29
+ }
30
+ const result = payload;
31
+ return result.replacement.startsWith(StringPrefix) &&
32
+ result.rawBase64.startsWith(Base64Prefix)
33
+ ? result
34
+ : undefined;
35
+ }
36
+ function unwrap(value) {
37
+ const wire = wireValue(value);
38
+ if (wire != null) {
39
+ return {
40
+ value: wire.replacement.slice(StringPrefix.length),
41
+ bytes: new Uint8Array(Buffer.from(wire.rawBase64.slice(Base64Prefix.length), "base64")),
42
+ };
43
+ }
44
+ if (value == null || typeof value !== "object")
45
+ return { value };
46
+ const result = value;
47
+ let bytes;
48
+ for (const [key, child] of Object.entries(value)) {
49
+ const unwrapped = unwrap(child);
50
+ if (unwrapped.value !== child) {
51
+ Object.defineProperty(result, key, {
52
+ configurable: true,
53
+ enumerable: true,
54
+ value: unwrapped.value,
55
+ writable: true,
56
+ });
57
+ }
58
+ if (unwrapped.bytes != null) {
59
+ bytes ??= {};
60
+ // Assignment would invoke Object.prototype.__proto__'s setter.
61
+ Object.defineProperty(bytes, key, {
62
+ configurable: true,
63
+ enumerable: true,
64
+ value: unwrapped.bytes,
65
+ writable: true,
66
+ });
67
+ }
68
+ }
69
+ return bytes == null ? { value: result } : { value: result, bytes };
70
+ }
71
+ /** Restore byte arrays after callers serialize tags with `JSON.stringify()`. */
72
+ function reviveInvalidUtf8Bytes(value) {
73
+ if (value == null || typeof value !== "object" || Array.isArray(value)) {
74
+ return value;
75
+ }
76
+ const entries = Object.entries(value);
77
+ if (entries.length > 0 &&
78
+ entries.every(([key, byte], index) => key === String(index) &&
79
+ typeof byte === "number" &&
80
+ Number.isInteger(byte) &&
81
+ byte >= 0 &&
82
+ byte <= 0xff)) {
83
+ return Uint8Array.from(entries.map(([, byte]) => byte));
84
+ }
85
+ for (const [key, child] of entries) {
86
+ const revived = reviveInvalidUtf8Bytes(child);
87
+ if (revived !== child) {
88
+ Object.defineProperty(value, key, {
89
+ configurable: true,
90
+ enumerable: true,
91
+ value: revived,
92
+ writable: true,
93
+ });
94
+ }
95
+ }
96
+ return value;
97
+ }
98
+ /** Decode the private ExifTool filter wrapper before returning public tags. */
99
+ function unwrapInvalidUtf8Tags(tags) {
100
+ const result = unwrap(tags);
101
+ const decodedTags = { tags: result.value };
102
+ return result.bytes == null || result.bytes instanceof Uint8Array
103
+ ? decodedTags
104
+ : { ...decodedTags, invalidUtf8Bytes: result.bytes };
105
+ }
106
+ //# sourceMappingURL=InvalidUtf8Bytes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvalidUtf8Bytes.js","sourceRoot":"","sources":["../src/InvalidUtf8Bytes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const _chai_spec_1 = require("./_chai.spec");
4
+ const InvalidUtf8Bytes_1 = require("./InvalidUtf8Bytes");
5
+ const JSON_1 = require("./JSON");
6
+ function wrapped(replacement, bytes) {
7
+ return {
8
+ [InvalidUtf8Bytes_1.InvalidUtf8Marker]: {
9
+ replacement: "s:" + replacement,
10
+ rawBase64: "b64:" + Buffer.from(bytes).toString("base64"),
11
+ },
12
+ };
13
+ }
14
+ describe("unwrapInvalidUtf8Tags", () => {
15
+ it("unwraps nested object and list leaves into a sparse byte sidecar", () => {
16
+ const collision = {
17
+ [InvalidUtf8Bytes_1.InvalidUtf8Marker]: {
18
+ replacement: "missing the required prefix",
19
+ rawBase64: "b64:3Es=",
20
+ },
21
+ };
22
+ const decoded = (0, InvalidUtf8Bytes_1.unwrapInvalidUtf8Tags)({
23
+ Description: wrapped("G�teborg", [0x47, 0x9a, 0x74]),
24
+ Nested: {
25
+ Subjects: ["valid", wrapped("�K", [0xdc, 0x4b])],
26
+ },
27
+ Collision: collision,
28
+ });
29
+ (0, _chai_spec_1.expect)(decoded.tags).to.deep.equal({
30
+ Description: "G�teborg",
31
+ Nested: { Subjects: ["valid", "�K"] },
32
+ Collision: collision,
33
+ });
34
+ (0, _chai_spec_1.expect)(decoded.invalidUtf8Bytes).to.deep.equal({
35
+ Description: new Uint8Array([0x47, 0x9a, 0x74]),
36
+ Nested: {
37
+ Subjects: { 1: new Uint8Array([0xdc, 0x4b]) },
38
+ },
39
+ });
40
+ });
41
+ it("does not add a sidecar when no private wrapper is present", () => {
42
+ const tags = { Title: "Authored? 世界" };
43
+ const decoded = (0, InvalidUtf8Bytes_1.unwrapInvalidUtf8Tags)(tags);
44
+ (0, _chai_spec_1.expect)(decoded.tags).to.equal(tags);
45
+ (0, _chai_spec_1.expect)(decoded).to.deep.equal({
46
+ tags: { Title: "Authored? 世界" },
47
+ });
48
+ });
49
+ it("preserves wrapped bytes under an own __proto__ key", () => {
50
+ const input = JSON.parse(`{"__proto__":${JSON.stringify(wrapped("�K", [0xdc, 0x4b]))}}`);
51
+ const decoded = (0, InvalidUtf8Bytes_1.unwrapInvalidUtf8Tags)(input);
52
+ (0, _chai_spec_1.expect)(Object.hasOwn(decoded.tags, "__proto__")).to.equal(true);
53
+ (0, _chai_spec_1.expect)(decoded.tags.__proto__).to.equal("�K");
54
+ (0, _chai_spec_1.expect)(Object.hasOwn(decoded.invalidUtf8Bytes, "__proto__")).to.equal(true);
55
+ (0, _chai_spec_1.expect)(decoded.invalidUtf8Bytes?.__proto__).to.deep.equal(new Uint8Array([0xdc, 0x4b]));
56
+ });
57
+ it("preserves __proto__ as an ordinary metadata key", () => {
58
+ const input = JSON.parse('{"__proto__":"metadata"}');
59
+ const decoded = (0, InvalidUtf8Bytes_1.unwrapInvalidUtf8Tags)(input);
60
+ (0, _chai_spec_1.expect)(Object.hasOwn(decoded.tags, "__proto__")).to.equal(true);
61
+ (0, _chai_spec_1.expect)(decoded.tags.__proto__).to.equal("metadata");
62
+ (0, _chai_spec_1.expect)(Object.getPrototypeOf(decoded.tags)).to.equal(Object.prototype);
63
+ });
64
+ it("round-trips byte arrays through the public parseJSON helper", () => {
65
+ const value = {
66
+ City: "�K",
67
+ invalidUtf8Bytes: {
68
+ City: new Uint8Array([0xdc, 0x4b]),
69
+ Subject: { 1: new Uint8Array([0xdd, 0x4c]) },
70
+ },
71
+ };
72
+ (0, _chai_spec_1.expect)((0, JSON_1.parseJSON)(JSON.stringify(value))).to.deep.equal(value);
73
+ });
74
+ });
75
+ //# sourceMappingURL=InvalidUtf8Bytes.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvalidUtf8Bytes.spec.js","sourceRoot":"","sources":["../src/InvalidUtf8Bytes.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};