exiftool-vendored 36.1.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 (49) hide show
  1. package/CHANGELOG.md +60 -5
  2. package/CLAUDE.md +2 -1
  3. package/README.md +124 -35
  4. package/data/TagMetadata.json +10 -3
  5. package/dist/ExifTool.d.ts +15 -8
  6. package/dist/ExifTool.dispose.spec.js +3 -3
  7. package/dist/ExifTool.dispose.spec.js.map +1 -1
  8. package/dist/ExifTool.js +11 -9
  9. package/dist/ExifTool.js.map +1 -1
  10. package/dist/ExifToolOptions.d.ts +15 -2
  11. package/dist/ExifToolOptions.js.map +1 -1
  12. package/dist/ExifToolVendoredTags.d.ts +11 -1
  13. package/dist/ExifToolVendoredTags.js +1 -1
  14. package/dist/ExifToolVendoredTags.js.map +1 -1
  15. package/dist/ExiftoolPath.js +1 -1
  16. package/dist/ExiftoolPath.js.map +1 -1
  17. package/dist/InvalidUtf8Bytes.d.ts +20 -0
  18. package/dist/InvalidUtf8Bytes.js +106 -0
  19. package/dist/InvalidUtf8Bytes.js.map +1 -0
  20. package/dist/InvalidUtf8Bytes.spec.d.ts +1 -0
  21. package/dist/InvalidUtf8Bytes.spec.js +75 -0
  22. package/dist/InvalidUtf8Bytes.spec.js.map +1 -0
  23. package/dist/InvalidUtf8Xml.spec.d.ts +1 -0
  24. package/dist/InvalidUtf8Xml.spec.js +156 -0
  25. package/dist/InvalidUtf8Xml.spec.js.map +1 -0
  26. package/dist/JSON.d.ts +1 -0
  27. package/dist/JSON.js +6 -1
  28. package/dist/JSON.js.map +1 -1
  29. package/dist/RawTags.d.ts +9 -2
  30. package/dist/ReadRawTask.d.ts +1 -0
  31. package/dist/ReadRawTask.js +16 -3
  32. package/dist/ReadRawTask.js.map +1 -1
  33. package/dist/ReadRawTask.spec.js +191 -0
  34. package/dist/ReadRawTask.spec.js.map +1 -1
  35. package/dist/ReadTask.js +24 -2
  36. package/dist/ReadTask.js.map +1 -1
  37. package/dist/ReadTask.spec.js +52 -0
  38. package/dist/ReadTask.spec.js.map +1 -1
  39. package/dist/Tags.d.ts +56 -38
  40. package/dist/Tags.js +3 -3
  41. package/dist/Tags.js.map +1 -1
  42. package/dist/Tags.spec.js +8 -0
  43. package/dist/Tags.spec.js.map +1 -1
  44. package/dist/Utf8JsonFilter.d.ts +7 -0
  45. package/dist/Utf8JsonFilter.js +85 -0
  46. package/dist/Utf8JsonFilter.js.map +1 -0
  47. package/dist/update/mktags.js +19 -1
  48. package/dist/update/mktags.js.map +1 -1
  49. package/package.json +8 -11
@@ -1 +1 @@
1
- {"version":3,"file":"ReadRawTask.js","sourceRoot":"","sources":["../src/ReadRawTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAuC;AACvC,iDAAmC;AACnC,qEAAkE;AAClE,2DAAwD;AAExD,iDAA8C;AAC9C,+DAAgE;AAChE,iCAA8B;AAGjB,QAAA,uBAAuB,GAAG;IACrC,UAAU;IACV,mBAAmB;IACnB,QAAQ;CACoC,CAAC;AAElC,QAAA,yBAAyB,GAAG;IACvC,GAAG,IAAA,WAAI,EAAC,+CAAsB,EAAE,GAAG,+BAAuB,CAAC;CAChB,CAAC;AAI9C,MAAa,WAAY,SAAQ,2BAAqB;IAkBzC;IACS;IAlBpB,MAAM,CAAC,GAAG,CAAC,QAAgB,EAAE,OAA4B;QACvD,MAAM,IAAI,GAAa;YACrB,GAAG,6CAAuB;YAC1B,GAAG,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;SAC7B,CAAC;QACF,MAAM,IAAI,GAAG,EAAE,GAAG,iCAAyB,EAAE,GAAG,OAAO,EAAE,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtB,OAAO,IAAI,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,YACW,UAAkB,EACT,IAAc,EAChC,OAAqC;QAErC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAJZ,eAAU,GAAV,UAAU,CAAQ;QACT,SAAI,GAAJ,IAAI,CAAU;IAIlC,CAAC;IAEQ,QAAQ;QACf,OAAO,cAAc,GAAG,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IAChD,CAAC;IAES,KAAK,CAAC,IAAY,EAAE,GAAW;QACvC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,qCAAiB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC3D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,SAAS,EAAE,CAAC;YACnB,IAAA,sBAAM,GAAE,CAAC,KAAK,CAAC,sCAAsC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,MAAM,GAAG,IAAI,SAAS,CAAC;QACzB,CAAC;IACH,CAAC;CACF;AAzCD,kCAyCC"}
1
+ {"version":3,"file":"ReadRawTask.js","sourceRoot":"","sources":["../src/ReadRawTask.ts"],"names":[],"mappings":"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"}
@@ -6,9 +6,200 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const promises_1 = require("node:fs/promises");
7
7
  const node_path_1 = __importDefault(require("node:path"));
8
8
  const ExifTool_1 = require("./ExifTool");
9
+ const InvalidUtf8Bytes_1 = require("./InvalidUtf8Bytes");
9
10
  const _chai_spec_1 = require("./_chai.spec");
10
11
  after(() => (0, _chai_spec_1.end)(ExifTool_1.exiftool));
11
12
  describe("ReadRawTask", () => {
13
+ describe("malformed UTF-8", () => {
14
+ const malformedUtf8File = node_path_1.default.join(_chai_spec_1.testDir, "malformed-utf8.jpg");
15
+ const binaryListFile = node_path_1.default.join(_chai_spec_1.testDir, "malformed-utf8.lfp");
16
+ const binaryCollisionFile = node_path_1.default.join(_chai_spec_1.testDir, "malformed-utf8-collision.mie");
17
+ const customFilter = 'Image::ExifTool::XMP::FixUTF8(\\$_,"X")';
18
+ function withoutInvalidUtf8Bytes(value) {
19
+ const { invalidUtf8Bytes: _, ...rest } = value;
20
+ return rest;
21
+ }
22
+ function legacyUtf8Replacement(value) {
23
+ if (typeof value === "string")
24
+ return value.replaceAll("\uFFFD", "?");
25
+ if (Array.isArray(value))
26
+ return value.map(legacyUtf8Replacement);
27
+ if (value != null && typeof value === "object") {
28
+ return Object.fromEntries(Object.entries(value).map(([key, child]) => [
29
+ key,
30
+ legacyUtf8Replacement(child),
31
+ ]));
32
+ }
33
+ return value;
34
+ }
35
+ it("marks malformed scalar and list values without changing valid text", async () => {
36
+ const tags = await ExifTool_1.exiftool.readRaw(malformedUtf8File);
37
+ (0, _chai_spec_1.expect)(tags).to.containSubset({
38
+ City: "\uFFFDK",
39
+ Title: "Authored? 世界",
40
+ Subject: ["Valid? item", "damaged:\uFFFDtail"],
41
+ UserComment: "SKEYս",
42
+ });
43
+ (0, _chai_spec_1.expect)(tags.invalidUtf8Bytes?.City).to.deep.equal(new Uint8Array([0xdc, 0x4b]));
44
+ (0, _chai_spec_1.expect)(tags.invalidUtf8Bytes?.Subject).to.deep.equal({
45
+ 1: new Uint8Array([
46
+ 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x64, 0x3a, 0xdc, 0x74, 0x61,
47
+ 0x69, 0x6c,
48
+ ]),
49
+ });
50
+ (0, _chai_spec_1.expect)(tags.invalidUtf8Bytes?.UserComment).to.deep.equal(new Uint8Array([
51
+ 0x53, 0x4b, 0x45, 0x59, 0x00, 0x00, 0x00, 0x00, 0xd5, 0x00, 0xbd,
52
+ ]));
53
+ });
54
+ it("mirrors JSON NUL removal before deciding which bytes are malformed", async () => {
55
+ const readArgs = ["-G1", "-UserComment"];
56
+ const marked = await ExifTool_1.exiftool.readRaw(malformedUtf8File, { readArgs });
57
+ const legacy = await ExifTool_1.exiftool.readRaw(malformedUtf8File, {
58
+ readArgs: [...readArgs, "-api", "Filter=1"],
59
+ });
60
+ // The stored bytes d5 00 bd become valid UTF-8 (U+057D) when JSON removes
61
+ // NUL. Repairing before that deletion would incorrectly produce two U+FFFDs.
62
+ (0, _chai_spec_1.expect)(marked).to.containSubset({ "ExifIFD:UserComment": "SKEYս" });
63
+ (0, _chai_spec_1.expect)(marked.invalidUtf8Bytes).to.deep.equal({
64
+ "ExifIFD:UserComment": new Uint8Array([
65
+ 0x53, 0x4b, 0x45, 0x59, 0x00, 0x00, 0x00, 0x00, 0xd5, 0x00, 0xbd,
66
+ ]),
67
+ });
68
+ (0, _chai_spec_1.expect)(withoutInvalidUtf8Bytes(marked)).to.deep.equal(legacy);
69
+ });
70
+ it("otherwise differs from legacy JSON only by ? to U+FFFD repair", async () => {
71
+ for (const [file, readArgs] of [
72
+ [malformedUtf8File, ["-City", "-Title", "-Subject", "-UserComment"]],
73
+ [binaryListFile, ["-G1", "-JSONMetadata", "-Foo"]],
74
+ [binaryCollisionFile, ["-G1", "-City", "-RelatedAudioFile"]],
75
+ ]) {
76
+ const marked = await ExifTool_1.exiftool.readRaw(file, {
77
+ readArgs: [...readArgs],
78
+ });
79
+ const legacy = await ExifTool_1.exiftool.readRaw(file, {
80
+ readArgs: [...readArgs, "-api", "Filter=1"],
81
+ });
82
+ (0, _chai_spec_1.expect)(legacyUtf8Replacement(withoutInvalidUtf8Bytes(marked))).to.deep.equal(legacy);
83
+ }
84
+ });
85
+ it("keeps the marker when per-call readArgs replace the defaults", async () => {
86
+ (0, _chai_spec_1.expect)(await ExifTool_1.exiftool.readRaw(malformedUtf8File, { readArgs: [] })).to.containSubset({
87
+ City: "\uFFFDK",
88
+ Subject: ["Valid? item", "damaged:\uFFFDtail"],
89
+ });
90
+ });
91
+ for (const { api, filter } of [
92
+ { api: "-api", filter: `Filter=${customFilter}` },
93
+ { api: "-API", filter: `filter=${customFilter}` },
94
+ { api: "-api", filter: `FILTER^=${customFilter}` },
95
+ ]) {
96
+ it(`leaves UTF-8 repair to ${api} ${filter.split("=")[0]}=`, async () => {
97
+ const tags = await ExifTool_1.exiftool.readRaw(malformedUtf8File, {
98
+ readArgs: [api, filter],
99
+ });
100
+ (0, _chai_spec_1.expect)(tags).to.containSubset({
101
+ City: "XK",
102
+ Subject: ["Valid? item", "damaged:Xtail"],
103
+ });
104
+ (0, _chai_spec_1.expect)(tags.invalidUtf8Bytes).to.equal(undefined);
105
+ });
106
+ }
107
+ for (const bareFilter of ["Filter", "Filter^"]) {
108
+ it(`treats a bare ${bareFilter} as a custom no-op Filter`, async () => {
109
+ // Ground truth:
110
+ // exiftool -j -City -api 'Filter[^]' test/malformed-utf8.jpg
111
+ const tags = await ExifTool_1.exiftool.readRaw(malformedUtf8File, {
112
+ readArgs: ["-City", "-api", bareFilter],
113
+ });
114
+ (0, _chai_spec_1.expect)(tags.City).to.equal("?K");
115
+ (0, _chai_spec_1.expect)(tags.invalidUtf8Bytes).to.equal(undefined);
116
+ });
117
+ }
118
+ it("does not decode marker-shaped output owned by a custom Filter", async () => {
119
+ const markerValue = {
120
+ [InvalidUtf8Bytes_1.InvalidUtf8Marker]: {
121
+ replacement: "s:forged",
122
+ rawBase64: "b64:3Es=",
123
+ },
124
+ };
125
+ const markerFilter = String.raw `Filter=$_={"${InvalidUtf8Bytes_1.InvalidUtf8Marker}"=>{replacement=>"s:forged",rawBase64=>"b64:3Es="}} if $_ eq "\xdcK"`;
126
+ const tags = await ExifTool_1.exiftool.readRaw(malformedUtf8File, {
127
+ readArgs: ["-City", "-api", markerFilter],
128
+ });
129
+ (0, _chai_spec_1.expect)(tags.City).to.deep.equal(markerValue);
130
+ (0, _chai_spec_1.expect)(tags.invalidUtf8Bytes).to.equal(undefined);
131
+ });
132
+ it("does not let a custom Filter leak into the next stay-open command", async () => {
133
+ (0, _chai_spec_1.expect)(await ExifTool_1.exiftool.readRaw(malformedUtf8File, {
134
+ readArgs: ["-api", `Filter=${customFilter}`],
135
+ })).to.containSubset({ City: "XK" });
136
+ (0, _chai_spec_1.expect)(await ExifTool_1.exiftool.readRaw(malformedUtf8File, { readArgs: [] })).to.containSubset({ City: "\uFFFDK" });
137
+ });
138
+ for (const emptyFilter of ["Filter=", "Filter^="]) {
139
+ it(`does not treat ${emptyFilter} as a custom Filter`, async () => {
140
+ (0, _chai_spec_1.expect)(await ExifTool_1.exiftool.readRaw(malformedUtf8File, {
141
+ readArgs: ["-api", emptyFilter],
142
+ })).to.containSubset({ City: "\uFFFDK" });
143
+ });
144
+ }
145
+ for (const clearedFilter of ["Filter=", "Filter^="]) {
146
+ it(`honors a final ${clearedFilter} after a custom Filter`, async () => {
147
+ // ExifTool API options are last-assignment-wins. Verified with:
148
+ // exiftool -j -api 'Filter=..."X"' -api 'Filter=' malformed-utf8.jpg
149
+ (0, _chai_spec_1.expect)(await ExifTool_1.exiftool.readRaw(malformedUtf8File, {
150
+ readArgs: ["-api", `Filter=${customFilter}`, "-api", clearedFilter],
151
+ })).to.containSubset({ City: "\uFFFDK" });
152
+ });
153
+ }
154
+ it("honors a final custom Filter after an empty Filter", async () => {
155
+ (0, _chai_spec_1.expect)(await ExifTool_1.exiftool.readRaw(malformedUtf8File, {
156
+ readArgs: ["-api", "Filter=", "-api", `Filter=${customFilter}`],
157
+ })).to.containSubset({ City: "XK" });
158
+ });
159
+ it("does not alter malformed binary list items", async () => {
160
+ // The synthetic LFP contains two 13-byte JSONMetadata binary items.
161
+ // Ground truth without a Filter:
162
+ // exiftool -j -G1 -struct test/malformed-utf8.lfp
163
+ const tags = await ExifTool_1.exiftool.readRaw(binaryListFile, {
164
+ readArgs: ["-G1", "-JSONMetadata", "-Foo"],
165
+ });
166
+ (0, _chai_spec_1.expect)(tags).to.containSubset({
167
+ "Lytro:JSONMetadata": [
168
+ "(Binary data 13 bytes, use -b option to extract)",
169
+ "(Binary data 13 bytes, use -b option to extract)",
170
+ ],
171
+ "Lytro:Foo": "\uFFFDL",
172
+ });
173
+ (0, _chai_spec_1.expect)(tags.invalidUtf8Bytes).to.deep.equal({
174
+ "Lytro:Foo": new Uint8Array([0xdd, 0x4c]),
175
+ });
176
+ });
177
+ it("repairs text that has the same bytes as an unrelated binary tag", async () => {
178
+ // Both tags contain dc 4b. Ground truth:
179
+ // exiftool -b -MIE-Geo:City malformed-utf8-collision.mie | od -An -tx1
180
+ // exiftool -b -MIE-Audio:RelatedAudioFile ... | od -An -tx1
181
+ const tags = await ExifTool_1.exiftool.readRaw(binaryCollisionFile, {
182
+ readArgs: ["-G1", "-City", "-RelatedAudioFile"],
183
+ });
184
+ (0, _chai_spec_1.expect)(tags).to.containSubset({
185
+ "MIE-Geo:City": "\uFFFDK",
186
+ "MIE-Audio:RelatedAudioFile": "(Binary data 2 bytes, use -b option to extract)",
187
+ });
188
+ (0, _chai_spec_1.expect)(tags.invalidUtf8Bytes).to.deep.equal({
189
+ "MIE-Geo:City": new Uint8Array([0xdc, 0x4b]),
190
+ });
191
+ });
192
+ it("preserves malformed binary output", async () => {
193
+ const tags = await ExifTool_1.exiftool.readRaw(binaryCollisionFile, {
194
+ readArgs: ["-G1", "-b", "-RelatedAudioFile"],
195
+ });
196
+ (0, _chai_spec_1.expect)(tags).to.containSubset({
197
+ // base64 for the original bytes dc 4b
198
+ "MIE-Audio:RelatedAudioFile": "base64:3Es=",
199
+ });
200
+ (0, _chai_spec_1.expect)(tags.invalidUtf8Bytes).to.equal(undefined);
201
+ });
202
+ });
12
203
  describe("non-alphanumeric filenames", () => {
13
204
  for (const { str, desc } of _chai_spec_1.NonAlphaStrings) {
14
205
  it("reads with " + desc, async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"ReadRawTask.spec.js","sourceRoot":"","sources":["../src/ReadRawTask.spec.ts"],"names":[],"mappings":";;;;;AAAA,+CAA4C;AAC5C,0DAA6B;AAC7B,yCAAsC;AACtC,6CAQsB;AAEtB,KAAK,CAAC,GAAG,EAAE,CAAC,IAAA,gBAAG,EAAC,mBAAQ,CAAC,CAAC,CAAC;AAE3B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC1C,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,4BAAe,EAAE,CAAC;YAC5C,EAAE,CAAC,aAAa,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE;gBAClC,IAAA,mBAAM,EAAC,mBAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/C,MAAM,QAAQ,GAAG,GAAG,GAAG,MAAM,CAAC;gBAC9B,MAAM,IAAI,GAAG,mBAAI,CAAC,IAAI,CAAC,IAAA,mBAAM,GAAE,EAAE,QAAQ,CAAC,CAAC;gBAC3C,MAAM,IAAA,mBAAM,EAAC,IAAA,mBAAM,GAAE,CAAC,CAAC;gBACvB,MAAM,IAAA,mBAAQ,EAAC,mBAAI,CAAC,IAAI,CAAC,oBAAO,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC;gBACvD,MAAM,CAAC,GAAG,MAAM,mBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAA,mBAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC;oBACzB,QAAQ,EAAE,YAAY;oBACtB,QAAQ;oBACR,gBAAgB,EAAE,yBAAyB;oBAC3C,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,eAAe;oBACtB,gBAAgB,EAAE,mCAAmC;oBACrD,cAAc,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC;oBAC7C,KAAK,EAAE,+BAAkB;iBAC1B,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,6DAA6D;IAC7D,qEAAqE;IACrE,uBAAuB;IACvB,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC5C,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,OAAO,IAAA,mBAAM,EACX,mBAAQ,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAC9D,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,OAAO,IAAA,mBAAM,EACX,mBAAQ,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAC/C,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"ReadRawTask.spec.js","sourceRoot":"","sources":["../src/ReadRawTask.spec.ts"],"names":[],"mappings":"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"}
package/dist/ReadTask.js CHANGED
@@ -50,6 +50,7 @@ const ExifToolTask_1 = require("./ExifToolTask");
50
50
  const File_1 = require("./File");
51
51
  const FilenameCharsetArgs_1 = require("./FilenameCharsetArgs");
52
52
  const GPS_1 = require("./GPS");
53
+ const InvalidUtf8Bytes_1 = require("./InvalidUtf8Bytes");
53
54
  const Lazy_1 = require("./Lazy");
54
55
  const Number_1 = require("./Number");
55
56
  const Object_1 = require("./Object");
@@ -58,6 +59,7 @@ const Pick_1 = require("./Pick");
58
59
  const String_1 = require("./String");
59
60
  const TagNameValidation_1 = require("./TagNameValidation");
60
61
  const Timezones_1 = require("./Timezones");
62
+ const Utf8JsonFilter_1 = require("./Utf8JsonFilter");
61
63
  /**
62
64
  * tag names we don't need to muck with, but name conventions (like including
63
65
  * "date") suggest they might be date/time tags
@@ -104,6 +106,8 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
104
106
  degroup;
105
107
  #raw = {};
106
108
  #rawDegrouped = {};
109
+ #invalidUtf8Bytes;
110
+ #unwrapInvalidUtf8;
107
111
  #tags = {};
108
112
  /**
109
113
  * @param sourceFile the file to read
@@ -116,6 +120,7 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
116
120
  this.sourceFile = sourceFile;
117
121
  this.args = args;
118
122
  this.options = options;
123
+ this.#unwrapInvalidUtf8 = (0, Utf8JsonFilter_1.hasBuiltInUtf8Filter)(args);
119
124
  // See https://github.com/photostructure/exiftool-vendored.js/issues/147#issuecomment-1642580118
120
125
  this.degroup = this.args.includes("-G");
121
126
  this.#tags = { SourceFile: sourceFile };
@@ -127,10 +132,12 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
127
132
  ...options,
128
133
  });
129
134
  const sourceFile = _path.resolve(filename);
135
+ const readArgs = (0, Array_1.toArray)(opts.readArgs);
130
136
  const args = [
131
137
  ...FilenameCharsetArgs_1.Utf8FilenameCharsetArgs,
132
138
  "-json",
133
- ...(0, Array_1.toArray)(opts.readArgs),
139
+ ...readArgs,
140
+ ...(0, Utf8JsonFilter_1.utf8JsonFilterArgs)(readArgs),
134
141
  ];
135
142
  // "-api struct=undef" doesn't work: but it's the same as struct=0:
136
143
  args.push("-api", "struct=" + ((0, Number_1.isNumber)(opts.struct) ? opts.struct : "0"));
@@ -171,7 +178,12 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
171
178
  try {
172
179
  // Fix ExifToolVersion to be a string to preserve version distinctions like 12.3 vs 12.30
173
180
  const versionFixedData = data.replace(/"ExifToolVersion"\s*:\s*(\d+(?:\.\d+)?)/, '"ExifToolVersion":"$1"');
174
- this.#raw = JSON.parse(versionFixedData)[0];
181
+ const parsed = JSON.parse(versionFixedData)[0];
182
+ const decoded = this.#unwrapInvalidUtf8
183
+ ? (0, InvalidUtf8Bytes_1.unwrapInvalidUtf8Tags)(parsed)
184
+ : { tags: parsed };
185
+ this.#raw = decoded.tags;
186
+ this.#invalidUtf8Bytes = decoded.invalidUtf8Bytes;
175
187
  }
176
188
  catch (jsonError) {
177
189
  // TODO: should restart exiftool?
@@ -243,6 +255,16 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
243
255
  const { errors, warnings } = (0, ErrorsAndWarnings_1.errorsAndWarnings)(this, tags);
244
256
  tags.errors = errors;
245
257
  tags.warnings = warnings;
258
+ if (this.#invalidUtf8Bytes != null) {
259
+ for (const key of Object.keys(this.#invalidUtf8Bytes)) {
260
+ if (!Object.hasOwn(tags, key)) {
261
+ Reflect.deleteProperty(this.#invalidUtf8Bytes, key);
262
+ }
263
+ }
264
+ if (Object.keys(this.#invalidUtf8Bytes).length > 0) {
265
+ tags.invalidUtf8Bytes = this.#invalidUtf8Bytes;
266
+ }
267
+ }
246
268
  return tags;
247
269
  }
248
270
  #extractGpsMetadata = (0, Lazy_1.lazy)(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"ReadTask.js","sourceRoot":"","sources":["../src/ReadTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwEA,0BAEC;AA1ED,iDAAuC;AACvC,iDAAmC;AACnC,mCAAkC;AAClC,+CAA4C;AAC5C,uCAAsC;AACtC,qEAAkE;AAClE,2DAAwD;AACxD,yCAAsC;AACtC,iDAA8C;AAC9C,yCAAsC;AACtC,uDAI2B;AAC3B,iDAA8C;AAC9C,iCAA0C;AAC1C,+DAAgE;AAChE,+BAA0D;AAC1D,iCAA8B;AAE9B,qCAAoC;AACpC,qCAAoC;AACpC,+CAA4C;AAC5C,iCAA8B;AAC9B,qCAA8C;AAC9C,2DAAsD;AAEtD,2CAOqB;AAErB;;;GAGG;AACH,MAAM,eAAe,GAAG;IACtB,iBAAiB;IACjB,eAAe;IACf,WAAW;IACX,UAAU;IACV,mBAAmB;CACpB,CAAC;AAEW,QAAA,oBAAoB,GAAG;IAClC,iCAAiC;IACjC,mBAAmB;IACnB,oBAAoB;IACpB,aAAa;IACb,OAAO;IACP,mBAAmB;IACnB,sBAAsB;IACtB,eAAe;IACf,qBAAqB;IACrB,6BAA6B;IAC7B,gCAAgC;IAChC,4BAA4B;IAC5B,aAAa;IACb,aAAa;IACb,gCAAgC;IAChC,UAAU;IACV,QAAQ;IACR,QAAQ;CACoC,CAAC;AAE/C,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAE/C,SAAgB,OAAO,CAAC,CAAU;IAChC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAA,iBAAQ,EAAC,CAAC,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAClE,CAAC;AAEY,QAAA,sBAAsB,GAAG;IACpC,GAAG,IAAA,WAAI,EAAC,+CAAsB,EAAE,GAAG,4BAAoB,CAAC;CACb,CAAC;AAI9C,MAAM,iBAAiB,GAAG,oCAAoC,CAAC;AAE/D,MAAa,QAAS,SAAQ,2BAAkB;IAanC;IACS;IACT;IAdM,OAAO,CAAU;IAClC,IAAI,GAA4B,EAAE,CAAC;IACnC,aAAa,GAA4B,EAAE,CAAC;IACnC,KAAK,GAAS,EAAE,CAAC;IAE1B;;;;;OAKG;IACH,YACW,UAAkB,EACT,IAAc,EACvB,OAAkC;QAE3C,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAJZ,eAAU,GAAV,UAAU,CAAQ;QACT,SAAI,GAAJ,IAAI,CAAU;QACvB,YAAO,GAAP,OAAO,CAA2B;QAG3C,gGAAgG;QAChG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,EAAE,UAAU,EAAE,UAAU,EAAU,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,QAAgB,EAAE,OAAwB;QACnD,MAAM,IAAI,GAA8B,IAAA,yCAAuB,EAAC;YAC9D,GAAG,8BAAsB;YACzB,GAAG,OAAO;SACX,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG;YACX,GAAG,6CAAuB;YAC1B,OAAO;YACP,GAAG,IAAA,eAAO,EAAC,IAAI,CAAC,QAAQ,CAAC;SAC1B,CAAC;QACF,mEAAmE;QACnE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,CAAC,IAAA,iBAAQ,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3E,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;YAC/D,IAAI,CAAC,gCAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjD,MAAM,IAAI,KAAK,CACb,0BAA0B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI;oBAC9D,4BAA4B,gCAAc,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAClE,CAAC;YACJ,CAAC;YACD,yEAAyE;YACzE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACnC,CAAC;QACD,uEAAuE;QACvE,oBAAoB;QACpB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAClC,IAAA,mCAAe,EAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;QAC5B,CAAC;QACD,qEAAqE;QAErE,+DAA+D;QAC/D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAE9B,OAAO,IAAI,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAEQ,QAAQ;QACf,OAAO,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IAC7C,CAAC;IAED,yBAAyB;IACzB,KAAK,CAAC,IAAY,EAAE,GAAW;QAC7B,IAAI,CAAC;YACH,yFAAyF;YACzF,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CACnC,yCAAyC,EACzC,wBAAwB,CACzB,CAAC;YACF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,SAAS,EAAE,CAAC;YACnB,iCAAiC;YACjC,IAAA,sBAAM,GAAE,CAAC,IAAI,CAAC,mCAAmC,EAAE;gBACjD,IAAI;gBACJ,GAAG;gBACH,SAAS;aACV,CAAC,CAAC;YACH,MAAM,GAAG,IAAI,SAAS,CAAC;QACzB,CAAC;QACD,8FAA8F;QAC9F,IAAI,IAAA,iBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,IAAA,uBAAgB,EAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC7D,8CAA8C;gBAC9C,MAAM,IAAI,KAAK,CACb,4CAA4C,IAAI,CAAC,IAAI,CAAC,UAAU,aAAa,IAAI,CAAC,UAAU,EAAE,CAC/F,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAED,QAAQ;QACN,OAAO,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACnE,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAC5D,CAAC;IAED,QAAQ,CAAC,CAAS;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrD,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YAChC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC;QACjC,CAAC;QAED,iEAAiE;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAgC,CAAC;QAEnD,sEAAsE;QACtE,sBAAsB;QACtB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;QAC5B,CAAC;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrD,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC7B,kDAAkD;YAClD,IAAI,GAAG,IAAI,IAAI;gBAAE,SAAS;YAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACnC,6DAA6D;YAC7D,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBACd,8CAA8C;gBAC9C,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,sEAAsE;QACtE,qBAAqB;QACrB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,qCAAiB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE;QAC9B,MAAM,MAAM,GAAG,IAAA,sBAAgB,EAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAClE,IAAI,MAAM,EAAE,QAAQ,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;YAC7B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;gBACzD,IAAI,CAAC,KAAiC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,aAAa,GAAG,IAAA,WAAI,EAClB,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,OAAO,IAAI,KAAK,CACnD,CAAC;IAEF,WAAW,GAAG,IAAA,WAAI,EAAkB,GAAG,EAAE,CACvC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,MAAM,IAAI,EAAE,CAAC,CACvE,CAAC;IAEF,uBAAuB,GAAG,IAAA,WAAI,EAAe,GAAG,EAAE;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC;QACrC,MAAM,GAAG,GAAG,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC;QACtC,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI;YACnE,OAAO;QACT,iCAAiC;QACjC,MAAM,UAAU,GAAG,IAAA,yBAAa,EAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;QACzE,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,OAAO;gBACL,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,EAAE,EAAE,UAAU,CAAC,IAAI;gBACnB,GAAG,EAAE,qBAAqB;aAC3B,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,IAAA,yBAAa,EAAC,KAAK,CAAC,CAAC;YAClC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjB,OAAO;oBACL,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,EAAE,EAAE,IAAI,CAAC,IAAI;oBACb,GAAG,EAAE,0BAA0B;iBAChC,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,qDAAqD,GAAG,KAAK,CAC9D,CAAC;QACJ,CAAC;QACD,OAAO;IACT,CAAC,CAAC,CAAC;IAEH,GAAG,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAC;IAE9C,gBAAgB,GAAG,IAAA,WAAI,EAAe,GAAG,EAAE;QACzC,IAAI,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,8BAA8B,EAAE,CAAC;YACzD,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/C,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,CACL,IAAA,mCAAuB,EAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC;YACzD,IAAI,CAAC,uBAAuB,EAAE;YAC9B,IAAA,yCAA6B,EAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC;YAC/D,wEAAwE;YACxE,wEAAwE;YACxE,8DAA8D;YAC9D,4CAA4C;YAC5C,CAAC,IAAI,CAAC,aAAa,EAAE;gBACnB,CAAC,CAAC;oBACE,IAAI,EAAE,KAAK;oBACX,EAAE,EAAE,KAAK;oBACT,GAAG,EAAE,oBAAoB;iBAC1B;gBACH,CAAC,CAAC,kBAAkB;oBAClB,SAAS,CAAC;YACd,6CAA6C;YAC7C,IAAA,wCAA4B,EAAC,IAAI,CAAC,aAAa,CAAC;YAChD,iEAAiE;YACjE,IAAA,wCAA4B,EAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAC/D,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,OAAe,EAAE,KAAc;QACvC,IAAI,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAErC,IAAI,CAAC;YACH,IAAI,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBACnE,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;oBACzB,iCAAiC;oBACjC,OAAO,SAAS,CAAC;gBACnB,CAAC;gBACD,MAAM,SAAS,GACb,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,OAAgC,CAAC,CAAC;gBACzD,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;oBACtB,6CAA6C;oBAC7C,OAAO,SAAS,CAAC;gBACnB,CAAC;gBACD,kEAAkE;gBAClE,kCAAkC;YACpC,CAAC;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,MAAM,MAAM,GAA4B,EAAE,CAAC;gBAC3C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3C,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnD,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,yBAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC1C,IAAI,CAAC,IAAI,IAAI;oBAAE,OAAO,CAAC,CAAC;gBAExB,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3B,MAAM,CAAC,GAAG,IAAA,mBAAS,EAAC,KAAK,CAAC,CAAC;oBAC3B,IAAI,CAAC,IAAI,IAAI;wBAAE,OAAO,CAAC,CAAC;gBAC1B,CAAC;gBAED,IACE,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC;oBAC/B,6DAA6D;oBAC7D,qBAAqB;oBACrB,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EACxB,CAAC;oBACD,0DAA0D;oBAC1D,oEAAoE;oBACpE,wDAAwD;oBACxD,MAAM,EAAE,GACN,YAAY,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;wBAC3C,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB;4BAC9B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;4BACZ,CAAC,CAAC,SAAS,CAAC;oBAElB,2DAA2D;oBAC3D,MAAM,eAAe,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACrD,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC9C,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB;oBACtE,MAAM,MAAM,GACV,CAAC,eAAe,IAAI,eAAe,IAAI,eAAe;wBACpD,CAAC,CAAC,2BAAY,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;wBAC9B,CAAC,CAAC,SAAS,CAAC;wBACd,CAAC,eAAe,IAAI,eAAe;4BACjC,CAAC,CAAC,mBAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;4BAC9B,CAAC,CAAC,SAAS,CAAC;wBACd,CAAC,eAAe,IAAI,eAAe;4BACjC,CAAC,CAAC,mBAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;4BACtB,CAAC,CAAC,SAAS,CAAC;wBACd,KAAK,CAAC;oBAER,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC7B,IACE,IAAI,CAAC,OAAO,CAAC,iBAAiB;wBAC9B,MAAM,IAAI,IAAI;wBACd,SAAS,IAAI,IAAI;wBACjB,MAAM,YAAY,2BAAY;wBAC9B,IAAI,CAAC,aAAa,EAAE;wBACpB,CAAC,YAAY,CAAC,OAAO,CAAC;wBACtB,IAAI,KAAK,MAAM,CAAC,YAAY,EAC5B,CAAC;wBACD,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACnC,CAAC;oBAED,OAAO,MAAM,CAAC;gBAChB,CAAC;YACH,CAAC;YACD,wEAAwE;YACxE,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,mBAAmB,OAAO,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CACvE,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF;AAhWD,4BAgWC;AAED,SAAS,YAAY,CAAC,OAAe;IACnC,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"ReadTask.js","sourceRoot":"","sources":["../src/ReadTask.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,7 @@ const DateTime_1 = require("./DateTime");
45
45
  const ExifDateTime_1 = require("./ExifDateTime");
46
46
  const ExifTool_1 = require("./ExifTool");
47
47
  const GeolocationTags_1 = require("./GeolocationTags");
48
+ const InvalidUtf8Bytes_1 = require("./InvalidUtf8Bytes");
48
49
  const Object_1 = require("./Object");
49
50
  const Pick_1 = require("./Pick");
50
51
  const ReadTask_1 = require("./ReadTask");
@@ -73,6 +74,57 @@ describe("ReadTask", () => {
73
74
  let exiftool;
74
75
  before(() => (exiftool = new ExifTool_1.ExifTool()));
75
76
  after(() => (0, _chai_spec_1.end)(exiftool));
77
+ describe("malformed UTF-8", () => {
78
+ const malformedUtf8File = (0, node_path_1.join)(_chai_spec_1.testDir, "malformed-utf8.jpg");
79
+ const customFilter = 'Filter=Image::ExifTool::XMP::FixUTF8(\\$_,"X")';
80
+ it("marks malformed scalar and list values without changing valid text", async () => {
81
+ const tags = await exiftool.read(malformedUtf8File);
82
+ (0, _chai_spec_1.expect)(tags).to.containSubset({
83
+ City: "\uFFFDK",
84
+ Title: "Authored? 世界",
85
+ Subject: ["Valid? item", "damaged:\uFFFDtail"],
86
+ });
87
+ (0, _chai_spec_1.expect)(tags.invalidUtf8Bytes?.City).to.deep.equal(new Uint8Array([0xdc, 0x4b]));
88
+ (0, _chai_spec_1.expect)(tags.invalidUtf8Bytes?.Subject).to.deep.equal({
89
+ 1: new Uint8Array([
90
+ 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x64, 0x3a, 0xdc, 0x74, 0x61,
91
+ 0x69, 0x6c,
92
+ ]),
93
+ });
94
+ });
95
+ it("keeps the marker when per-call readArgs replace the defaults", async () => {
96
+ (0, _chai_spec_1.expect)(await exiftool.read(malformedUtf8File, { readArgs: [] })).to.containSubset({
97
+ City: "\uFFFDK",
98
+ Subject: ["Valid? item", "damaged:\uFFFDtail"],
99
+ });
100
+ });
101
+ it("leaves UTF-8 repair to an explicit custom Filter", async () => {
102
+ const tags = await exiftool.read(malformedUtf8File, {
103
+ readArgs: ["-api", customFilter],
104
+ });
105
+ (0, _chai_spec_1.expect)(tags).to.containSubset({
106
+ City: "XK",
107
+ Subject: ["Valid? item", "damaged:Xtail"],
108
+ });
109
+ (0, _chai_spec_1.expect)(tags.invalidUtf8Bytes).to.equal(undefined);
110
+ });
111
+ it("prunes byte paths whose parsed tags are rejected", () => {
112
+ const tags = parse({
113
+ tags: {
114
+ GPSLatitude: 999,
115
+ GPSLongitude: 1,
116
+ GPSProcessingMethod: {
117
+ [InvalidUtf8Bytes_1.InvalidUtf8Marker]: {
118
+ replacement: "s:�GPS",
119
+ rawBase64: "b64:3EdQUw==",
120
+ },
121
+ },
122
+ },
123
+ });
124
+ (0, _chai_spec_1.expect)(tags.GPSProcessingMethod).to.equal(undefined);
125
+ (0, _chai_spec_1.expect)(tags.invalidUtf8Bytes).to.equal(undefined);
126
+ });
127
+ });
76
128
  describe("Lat/Lon parsing", () => {
77
129
  /* Example:
78
130
  $ exiftool -j -coordFormat '%.8f' -fast ../test-images/important/Apple_iPhone7Plus.jpg | grep itude