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
package/CHANGELOG.md CHANGED
@@ -35,6 +35,61 @@ vendored versions of ExifTool match the version that they vendor.
35
35
 
36
36
  ## History
37
37
 
38
+ ### v37.0.0
39
+
40
+ - 💔 **BREAKING: malformed UTF-8 in ExifTool JSON output is now marked with
41
+ Unicode replacement character U+FFFD (`�`) instead of ASCII question mark
42
+ (`?`).** For example, malformed bytes `dc 4b` previously surfaced as `?K`
43
+ and now surface as `�K`. This applies to both `read()` and `readRaw()`,
44
+ including scalar and list values and calls that override `readArgs`. Valid
45
+ Unicode and authored question marks are unchanged.
46
+ - The original malformed string bytes are available without rereading the
47
+ media through an optional sparse `invalidUtf8Bytes` sidecar. It mirrors tag
48
+ paths, uses numeric object keys for damaged list items, stores each leaf as
49
+ a `Uint8Array`, and is absent when no malformed strings were found:
50
+
51
+ ```js
52
+ const tags = await exiftool.read(file);
53
+ tags.City; // "�K"
54
+ tags.invalidUtf8Bytes?.City; // Uint8Array([0xdc, 0x4b])
55
+ ```
56
+
57
+ `exiftool-vendored` does not guess a legacy charset. Consumers may decode
58
+ only these captured bytes using camera, tag, locale, or user-specific
59
+ evidence while retaining the U+FFFD value as a deterministic fallback.
60
+
61
+ - Nested structures mirror the paths ExifTool returns for the selected
62
+ `struct` mode. XML element text, attribute values, CDATA, opaque XML string
63
+ values, and leaves parsed from embedded binary XML packets are supported.
64
+ The captured bytes are the extracted value after XML parsing, not the
65
+ original XML token. Malformed XML element and attribute names are outside
66
+ this mechanism: value filters never receive names, and ExifTool's JSON
67
+ output repairs or canonicalizes them before the library sees them.
68
+
69
+ - The change affects new metadata reads only. Upgrading does not rewrite
70
+ values that applications have already persisted. Applications that use
71
+ extracted metadata as identifiers, facets, or tags may want to rescan or
72
+ reindex existing files.
73
+ - Consumers may replace ambiguous `?` corruption heuristics with explicit
74
+ U+FFFD checks where their data flow preserves the marker. Whether to
75
+ reject, display, or retain a marked value remains application policy.
76
+ - To restore the previous rendering, replace the marker in the string values
77
+ you consume (it never appears in numbers, dates, or binary fields). This is
78
+ a one-way transform — the reverse is impossible once malformed bytes have
79
+ collapsed to `?`, which is why the marker is preserved by default:
80
+
81
+ ```js
82
+ typeof value === "string" ? value.replace(/\uFFFD/g, "?") : value;
83
+ ```
84
+
85
+ - Advanced callers that provide their own non-empty ExifTool
86
+ `-api Filter=...` through `readArgs` retain ownership of the complete
87
+ filtering pipeline. A custom filter must perform its own UTF-8 repair and
88
+ byte capture if those behaviors are desired; `invalidUtf8Bytes` will be
89
+ absent.
90
+
91
+ - 📦 Corrected resource-cleanup documentation to distinguish normal shutdown, non-blocking `using`, awaited `await using`, and best-effort disposal timeouts.
92
+
38
93
  ### v36.1.0
39
94
 
40
95
  - ✨ Added `ExifTool.editTags()` for validated exact list-value additions/removals, MWG Collection additions/predicate removals, and audited scalar or flattened person-name removals without replacing unrelated metadata. See the [usage examples](docs/USAGE-EXAMPLES.md#editing-individual-tag-values).
@@ -156,7 +211,7 @@ vendored versions of ExifTool match the version that they vendor.
156
211
 
157
212
  **Previously**, even though child processes were unreferenced, the stdio streams kept the parent Node.js process alive, requiring explicit `.end()` calls.
158
213
 
159
- **Now**, stdio streams are unreferenced by default, so scripts can exit naturally without calling `.end()`. Child processes are cleaned up automatically when the parent exits.
214
+ **Now**, stdio streams are unreferenced by default, so scripts can exit naturally without calling `.end()`. During normal shutdown, child-process cleanup is attempted automatically. Exit cleanup was strengthened further in v35.2.0 and v35.10.1; abrupt termination such as `SIGKILL` cannot run cleanup handlers.
160
215
 
161
216
  To restore the previous behavior (parent process stays alive until `.end()` is called):
162
217
 
@@ -281,12 +336,12 @@ vendored versions of ExifTool match the version that they vendor.
281
336
 
282
337
  - ✨ Added **Disposable interface support** for automatic resource cleanup:
283
338
  - `ExifTool` now implements both `Disposable` and `AsyncDisposable` interfaces
284
- - Use `using et = new ExifTool()` for automatic synchronous cleanup (TypeScript 5.2+)
285
- - Use `await using et = new ExifTool()` for automatic asynchronous cleanup
339
+ - Use `using et = new ExifTool()` to initiate cleanup when a scope exits (TypeScript 5.2+)
340
+ - Use `await using et = new ExifTool()` to await asynchronous cleanup
286
341
  - Synchronous disposal initiates graceful cleanup with configurable timeout fallback
287
- - Asynchronous disposal provides robust cleanup with timeout protection
342
+ - Asynchronous disposal requests forceful cleanup after its configured timeout; the timeout is not a hard completion deadline
288
343
  - New options: `disposalTimeoutMs` (default: 1000ms) and `asyncDisposalTimeoutMs` (default: 5000ms)
289
- - Comprehensive error handling ensures disposal never throws or hangs
344
+ - Disposal errors are logged; asynchronous disposal may reject if cleanup fails
290
345
  - Maintains backward compatibility - existing `.end()` method unchanged
291
346
 
292
347
  - ✨ **Enhanced JSDoc annotations** for Tags interface with emoji-based visual hierarchy:
package/CLAUDE.md CHANGED
@@ -53,7 +53,8 @@ npm run release # Run release process (requires proper permissions)
53
53
  ## Important Notes
54
54
 
55
55
  - Always run `npm run compile` before testing
56
- - As of v35, `.end()` is optional for scripts (Node.js exits naturally), but recommended for long-running apps
56
+ - With default settings, `.end()` is optional after awaited script work, but it
57
+ should be awaited when cleanup must finish before the application continues or exits
57
58
  - Tag interfaces not comprehensive - less common tags may exist in returned objects
58
59
  - Uses batch processing with automatic process pool management
59
60
  - TypeScript union type limits require careful tag selection
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # exiftool-vendored
1
+ # 📸 exiftool-vendored
2
2
 
3
3
  **Fast, cross-platform [Node.js](https://nodejs.org/) access to [ExifTool](https://exiftool.org/). Built and supported by [PhotoStructure](https://photostructure.com).**
4
4
 
@@ -6,7 +6,7 @@
6
6
  [![Node.js CI](https://github.com/photostructure/exiftool-vendored.js/actions/workflows/build.yml/badge.svg)](https://github.com/photostructure/exiftool-vendored.js/actions/workflows/build.yml)
7
7
  [![GitHub issues](https://img.shields.io/github/issues/photostructure/exiftool-vendored.js.svg)](https://github.com/photostructure/exiftool-vendored.js/issues)
8
8
 
9
- ## Installation & Quick Start
9
+ ## 🚀 Installation & Quick Start
10
10
 
11
11
  **Requirements**: Node.js Active LTS or Maintenance LTS versions only
12
12
 
@@ -35,7 +35,7 @@ await exiftool.extractThumbnail("photo.jpg", "thumb.jpg");
35
35
  await exiftool.end();
36
36
  ```
37
37
 
38
- ## Why exiftool-vendored?
38
+ ## 🤔 Why exiftool-vendored?
39
39
 
40
40
  ### ⚡ **Performance**
41
41
 
@@ -53,7 +53,7 @@ Order of magnitude faster than other Node.js ExifTool modules. Powers [PhotoStru
53
53
  - **Smart dates**: Timezone-aware `ExifDateTime` classes
54
54
  - **Auto-generated tags**: Based on 10,000+ real camera samples
55
55
 
56
- ## Core Features
56
+ ## Core Features
57
57
 
58
58
  ### Reading Metadata
59
59
 
@@ -113,7 +113,7 @@ await exiftool.extractPreview("photo.jpg", "preview.jpg");
113
113
  await exiftool.extractJpgFromRaw("photo.cr2", "processed.jpg");
114
114
  ```
115
115
 
116
- ## Understanding Tags
116
+ ## 🏷️ Understanding Tags
117
117
 
118
118
  The `Tags` interface contains **thousands of metadata fields** from an auto-generated TypeScript file. Each tag has JSDoc annotations:
119
119
 
@@ -139,17 +139,86 @@ LensSpec?: string;
139
139
  - **@groups** = Metadata categories (EXIF, GPS, IPTC, XMP, etc.)
140
140
  - **@example** = Representative values
141
141
 
142
- ### Code defensively!
142
+ ## 🛡️ Code defensively!
143
143
 
144
- - No fields are guaranteed to be present.
145
- - Value types are not guaranteed -- assume strings may get in your numeric fields, and handle it gracefully.
146
- - There may very well be keys returned that are **not** in the `Tags` interface.
144
+ The generated `Tags` interface is a deliberately bounded, best-effort model of
145
+ what ExifTool extracts.
146
+
147
+ ### Declared fields may be missing
148
+
149
+ Formats, cameras, and editing software write different subsets of metadata,
150
+ and later tools may strip fields. Treat every property as optional, even when
151
+ it is common for the files you currently handle.
152
+
153
+ ### Undeclared fields may be included
154
+
155
+ The interface favors the most common and useful fields. Without tag pruning,
156
+ TypeScript fails with `TS2590: Expression produces a union type that is too
157
+ complex to represent`.
158
+
159
+ Rare, vendor-specific, and custom tags may still appear at runtime. If your app
160
+ needs arbitrary tags, intersect `Tags` with `Record<string, unknown>`; if a tag
161
+ would be useful to others, please open a PR to add it to the generated
162
+ interface.
163
+
164
+ ### Value types may vary
165
+
166
+ ExifTool may return unexpected representations for malformed, ambiguous, or
167
+ format-specific values. Validate values at runtime and handle strings in
168
+ nominally numeric fields gracefully.
147
169
 
148
170
  📖 **[Complete Tags Documentation →](docs/TAGS.md)**
149
171
 
150
- ## Important Notes
172
+ ## 🪤 Parsing gotchas
173
+
174
+ ### Timezones may be inferred
175
+
176
+ Media metadata often omits its timezone, so this library uses several heuristics
177
+ to infer one. See [Dates & Timezones](#timezones) for the inference order and
178
+ configuration options.
179
+
180
+ ### Malformed UTF-8 is marked and preserved
181
+
182
+ Malformed UTF-8 bytes are marked with the Unicode replacement character
183
+ U+FFFD, not ASCII `?`, so byte corruption stays distinguishable from
184
+ authored punctuation. The original bytes are preserved without another file
185
+ read in the sparse `invalidUtf8Bytes` sidecar:
151
186
 
152
- ### ⚙️ Configuration
187
+ ```ts
188
+ const tags = await exiftool.read(file);
189
+ tags.ImageDescription; // "Arch Enemy\rG�teborg, 19.07.2007"
190
+
191
+ const bytes = tags.invalidUtf8Bytes?.ImageDescription;
192
+ if (bytes instanceof Uint8Array) {
193
+ // Camera/tag-specific evidence identifies this Kodak value as MacRoman:
194
+ const recovered = new TextDecoder("macintosh").decode(bytes);
195
+ recovered; // "Arch Enemy\rGöteborg, 19.07.2007"
196
+ }
197
+ ```
198
+
199
+ The `macintosh` charset is justified by evidence for this specific Kodak
200
+ value; it is not a default for every damaged field.
201
+
202
+ Nested metadata mirrors the representation selected by ExifTool's `struct`
203
+ option. Extracted XML element text, attribute values, CDATA, and parsed
204
+ embedded XML values are captured at their returned paths. These are the
205
+ bytes of ExifTool's extracted value after XML parsing, not the original XML
206
+ token: entity spellings and CDATA delimiters are not retained. Value filters
207
+ never receive XML element or attribute _names_, and ExifTool's JSON output
208
+ repairs or canonicalizes malformed names before the library sees them, so
209
+ their exact bytes cannot be exposed by this sidecar.
210
+
211
+ The library deliberately does not guess a legacy charset: files assembled
212
+ over many years may contain several encodings, and readable alternatives are
213
+ not necessarily correct. Consumers can decode only the sidecar entries using
214
+ their own camera/tag/user context. An explicit custom ExifTool `Filter`
215
+ disables both built-in repair and byte capture. To restore the pre-v37
216
+ display, guard on the value type first:
217
+ `typeof value === "string" ? value.replace(/\uFFFD/g, "?") : value`.
218
+
219
+ ## ⚠️ Important Notes
220
+
221
+ ### Configuration
153
222
 
154
223
  exiftool-vendored provides two levels of configuration:
155
224
 
@@ -176,7 +245,9 @@ const exiftool = new ExifTool({
176
245
 
177
246
  📖 **[Complete Configuration Guide →](docs/CONFIGURATION.md)**
178
247
 
179
- ### ⏰ Dates & Timezones
248
+ <a id="timezones"></a>
249
+
250
+ ### Dates & Timezones
180
251
 
181
252
  Images rarely specify timezones. This library infers them using several heuristics:
182
253
 
@@ -194,53 +265,71 @@ if (dt instanceof ExifDateTime) {
194
265
 
195
266
  📖 **[Date & Timezone Guide →](docs/DATES.md)**
196
267
 
197
- ### 🧹 Resource Cleanup
268
+ ### Resource Cleanup
198
269
 
199
- As of v35, **Node.js will exit naturally** without calling `.end()` — child processes are cleaned up automatically when the parent exits.
270
+ With the default settings, ExifTool workers no longer keep Node.js alive after
271
+ awaited work finishes. During normal shutdown, the library attempts to clean up
272
+ workers automatically. Abrupt termination, such as `SIGKILL` or an operating-
273
+ system crash, cannot run cleanup handlers.
200
274
 
201
- For **long-running applications** (servers, daemons), calling `.end()` is still recommended for graceful shutdown:
275
+ Call and await `.end()` when cleanup must finish before your application
276
+ continues or exits. For servers and daemons, make this one part of the
277
+ application's complete shutdown procedure:
202
278
 
203
279
  ```javascript
204
280
  import { exiftool } from "exiftool-vendored";
205
281
 
206
- // For servers/daemons: graceful shutdown on termination signals
207
- process.on("SIGINT", () => exiftool.end());
208
- process.on("SIGTERM", () => exiftool.end());
282
+ async function shutdown(signal) {
283
+ try {
284
+ await closeApplicationResources(); // Server, sockets, database, etc.
285
+ await exiftool.end();
286
+ } finally {
287
+ // A signal listener disables Node's default termination behavior. Re-send
288
+ // the signal after cleanup so the process terminates normally.
289
+ process.kill(process.pid, signal);
290
+ }
291
+ }
292
+
293
+ process.once("SIGINT", (signal) => void shutdown(signal));
294
+ process.once("SIGTERM", (signal) => void shutdown(signal));
209
295
  ```
210
296
 
211
297
  #### Automatic Cleanup with Disposable Interfaces
212
298
 
213
- For **TypeScript 5.2+** projects, consider using automatic resource management:
299
+ For **TypeScript 5.2+** projects configured for explicit resource management,
300
+ you can bind an instance's lifecycle to a scope:
214
301
 
215
302
  ```javascript
216
303
  import { ExifTool } from "exiftool-vendored";
217
304
 
218
- // Automatic synchronous cleanup
305
+ // Starts cleanup when the scope exits, but does not wait for it
219
306
  {
220
307
  using et = new ExifTool();
221
308
  const tags = await et.read("photo.jpg");
222
- // ExifTool automatically cleaned up when block exits
309
+ // ExifTool cleanup is initiated when the block exits
223
310
  }
224
311
 
225
- // Automatic asynchronous cleanup (recommended)
312
+ // Waits for cleanup when the scope exits (recommended)
226
313
  {
227
314
  await using et = new ExifTool();
228
315
  const tags = await et.read("photo.jpg");
229
- // ExifTool gracefully cleaned up when block exits
316
+ // ExifTool cleanup is awaited when the block exits
230
317
  }
231
318
  ```
232
319
 
233
320
  **Benefits:**
234
321
 
235
- - **Guaranteed cleanup**: No leaked processes, even with exceptions
236
- - **Timeout protection**: Automatic forceful cleanup if graceful shutdown hangs
237
- - **Zero boilerplate**: No manual `.end()` calls needed
322
+ - **Scope-bound disposal**: Disposal runs on ordinary scope exit, including exceptions
323
+ - **Awaited cleanup**: `await using` waits for asynchronous disposal
324
+ - **Less boilerplate**: No manual `try`/`finally` cleanup block
238
325
 
239
326
  **Caution:**
240
327
 
241
- - **Operating-system startup lag**: Linux costs ~50-500ms to launch a new ExifTool process, but macOS can take several seconds (presumably due to Gatekeeper), and **Windows can take tens of seconds** due to antivirus shenanigans. Don't dispose your instance unless you're **really** done with it!
328
+ - **Operating-system startup lag**: Startup time varies widely with the OS,
329
+ hardware, and security software, and can take several seconds on some
330
+ systems. Don't dispose an instance until you're really done with it.
242
331
 
243
- ### 🏷️ Tag Completeness
332
+ ### Tag Completeness
244
333
 
245
334
  The `Tags` interface shows the most common fields, but ExifTool can extract many more. Cast to access unlisted fields:
246
335
 
@@ -249,9 +338,9 @@ const tags = await exiftool.read("photo.jpg");
249
338
  const customField = (tags as any).UncommonTag;
250
339
  ```
251
340
 
252
- ## Documentation
341
+ ## 📚 Documentation
253
342
 
254
- ### 📚 **Guides**
343
+ ### **Guides**
255
344
 
256
345
  - **[Installation Guide](docs/INSTALLATION.md)** - Electron, Docker, platform setup
257
346
  - **[Usage Examples](docs/USAGE-EXAMPLES.md)** - Comprehensive API examples
@@ -259,16 +348,16 @@ const customField = (tags as any).UncommonTag;
259
348
  - **[Tags Reference](docs/TAGS.md)** - Understanding the 2,500+ metadata fields
260
349
  - **[Electron Integration](docs/ELECTRON.md)** - Electron-specific setup
261
350
 
262
- ### 🔧 **Troubleshooting**
351
+ ### **Troubleshooting**
263
352
 
264
353
  - **[Debugging Guide](docs/DEBUGGING.md)** - Debug logging and common issues
265
354
  - **[Temporal Migration](docs/TEMPORAL-MIGRATION.md)** - Future JavaScript Temporal API
266
355
 
267
- ### 📖 **API Reference**
356
+ ### **API Reference**
268
357
 
269
358
  - **[TypeDoc Documentation](https://photostructure.github.io/exiftool-vendored.js/)** - Complete API reference
270
359
 
271
- ## Performance
360
+ ## Performance
272
361
 
273
362
  The default singleton is throttled for stability. For high-throughput processing:
274
363
 
@@ -289,13 +378,13 @@ await exiftool.end();
289
378
 
290
379
  **Benchmarks**: 20+ files/second/thread, 500+ files/second using all CPU cores.
291
380
 
292
- ## Support & Community
381
+ ## 🤝 Support & Community
293
382
 
294
383
  - **📋 Issues**: [GitHub Issues](https://github.com/photostructure/exiftool-vendored.js/issues)
295
384
  - **📖 Changelog**: [CHANGELOG.md](CHANGELOG.md)
296
385
  - **🔒 Security**: [SECURITY.md](SECURITY.md)
297
386
  - **📄 License**: [MIT](LICENSE)
298
387
 
299
- ### Contributors 🎉
388
+ ### Contributors
300
389
 
301
390
  [Matthew McEachen](https://github.com/mceachen), [Joshua Harris](https://github.com/Circuit8), [Anton Mokrushin](https://github.com/amokrushin), [Luca Ban](https://github.com/mesqueeb), [Demiurga](https://github.com/apolkingg8), [David Randler](https://github.com/draity)
@@ -7394,7 +7394,7 @@
7394
7394
  "FirmwareVersion": {
7395
7395
  "frequency": 0.07,
7396
7396
  "mainstream": true,
7397
- "groups": ["APP", "MakerNotes", "QuickTime"],
7397
+ "groups": ["APP", "MakerNotes", "QuickTime", "RAF"],
7398
7398
  "type": "string",
7399
7399
  "typed": true
7400
7400
  },
@@ -11899,7 +11899,7 @@
11899
11899
  "Location": {
11900
11900
  "frequency": 0.02,
11901
11901
  "mainstream": true,
11902
- "groups": ["MakerNotes"],
11902
+ "groups": ["Composite", "MakerNotes", "XMP"],
11903
11903
  "type": "string",
11904
11904
  "typed": true
11905
11905
  },
@@ -19753,7 +19753,7 @@
19753
19753
  },
19754
19754
  "Transform": {
19755
19755
  "frequency": 0.01,
19756
- "mainstream": false,
19756
+ "mainstream": true,
19757
19757
  "groups": ["MakerNotes"],
19758
19758
  "type": "string",
19759
19759
  "typed": true
@@ -21006,6 +21006,13 @@
21006
21006
  "type": "string",
21007
21007
  "typed": true
21008
21008
  },
21009
+ "invalidUtf8Bytes": {
21010
+ "frequency": 0,
21011
+ "mainstream": true,
21012
+ "groups": ["Library"],
21013
+ "type": "InvalidUtf8Bytes",
21014
+ "typed": true
21015
+ },
21009
21016
  "tz": {
21010
21017
  "frequency": 0,
21011
21018
  "mainstream": true,
@@ -45,6 +45,7 @@ export type { GeolocationTags } from "./GeolocationTags";
45
45
  export type { ICCProfileTags } from "./ICCProfileTags";
46
46
  export type { IPTCApplicationRecordTags as ApplicationRecordTags, IPTCApplicationRecordTags, } from "./IPTCApplicationRecordTags";
47
47
  export type { ImageDataHashTag } from "./ImageDataHashTag";
48
+ export type { InvalidUtf8Bytes } from "./InvalidUtf8Bytes";
48
49
  export type { Json, Literal } from "./JSON";
49
50
  export type { CollectionInfo, KeywordInfoStruct, KeywordStruct, MWGCollectionsTags, MWGKeywordTags, } from "./MWGTags";
50
51
  export type { Maybe, Nullable } from "./Maybe";
@@ -121,7 +122,9 @@ export declare class ExifTool {
121
122
  * use `readRaw`.** Note that the default is `["-fast"]`, so if you want
122
123
  * ExifTool to read the entire file for metadata, you should pass an empty
123
124
  * array as the second parameter. See https://exiftool.org/#performance for
124
- * more information about `-fast` and `-fast2`.
125
+ * more information about `-fast` and `-fast2`. The wrapper still adds its
126
+ * malformed UTF-8 repair/byte-capture filter unless these arguments provide
127
+ * a custom ExifTool `Filter`, in which case that filter owns both behaviors.
125
128
  *
126
129
  * @param options overrides to the default ExifTool options provided to the
127
130
  * ExifTool constructor.
@@ -148,9 +151,12 @@ export declare class ExifTool {
148
151
  * worse if you don't include `-fast` or `-fast2` (as the most expensive bits
149
152
  * are the perl interpreter and scanning the file on disk).
150
153
  *
151
- * @param options any additional arguments other than the file path. Note that
152
- * "-json", and the Windows unicode filename handler flags, "-charset
153
- * filename=utf8", will be added automatically.
154
+ * @param options read options, including any additional `readArgs` other than
155
+ * the file path. `-json`, the Windows Unicode filename handler flags,
156
+ * `-charset filename=utf8`, malformed UTF-8 repair with U+FFFD, and original
157
+ * malformed-string byte capture in `invalidUtf8Bytes` are added
158
+ * automatically. An explicit custom ExifTool `Filter` in `readArgs` replaces
159
+ * the wrapper's filter and owns both repair and byte capture.
154
160
  *
155
161
  * @return Note that the return value will be similar to `Tags`, but with no
156
162
  * date, time, or other rich type parsing that you get from `.read()`. The
@@ -401,8 +407,8 @@ export declare class ExifTool {
401
407
  * This allows ExifTool instances to be automatically cleaned up when they go out of scope.
402
408
  *
403
409
  * Note: This is a synchronous disposal method that initiates graceful cleanup but doesn't
404
- * wait for completion. If graceful cleanup times out, forceful cleanup is attempted.
405
- * For guaranteed cleanup completion, use `await using` with the async disposal method instead.
410
+ * wait for completion. If graceful cleanup times out, forceful cleanup is requested.
411
+ * Use `await using` when the caller must wait for the cleanup attempt to settle.
406
412
  *
407
413
  * @example
408
414
  * ```typescript
@@ -418,8 +424,9 @@ export declare class ExifTool {
418
424
  * Implements the AsyncDisposable interface for automatic async cleanup with the `await using` keyword.
419
425
  * This allows ExifTool instances to be automatically cleaned up when they go out of scope.
420
426
  *
421
- * This method provides robust cleanup with timeout protection to prevent hanging.
422
- * If graceful cleanup times out, forceful cleanup is attempted automatically.
427
+ * This method waits for graceful cleanup. If the configured timeout elapses,
428
+ * forceful cleanup is requested. Cleanup is best-effort and the timeout is not
429
+ * a hard completion deadline.
423
430
  *
424
431
  * @example
425
432
  * ```typescript
@@ -83,7 +83,7 @@ describe("ExifTool disposal", () => {
83
83
  await et[Symbol.asyncDispose]();
84
84
  (0, chai_1.expect)(et.ended).to.be.true;
85
85
  });
86
- it("should handle timeout in async disposal gracefully", async () => {
86
+ it("should request forceful cleanup after an async disposal timeout", async () => {
87
87
  const et = new ExifTool_1.ExifTool();
88
88
  // Mock a slow .end() method by stubbing it
89
89
  const originalEnd = et.end.bind(et);
@@ -98,11 +98,11 @@ describe("ExifTool disposal", () => {
98
98
  }
99
99
  else {
100
100
  forcefulEndCalled = true;
101
- // Forceful cleanup should work quickly
101
+ // Model a forceful cleanup request that settles quickly
102
102
  return originalEnd(false);
103
103
  }
104
104
  };
105
- // The async dispose should timeout and attempt forceful cleanup
105
+ // The async disposer should request forceful cleanup after its timeout
106
106
  await et[Symbol.asyncDispose]();
107
107
  (0, chai_1.expect)(endCalled).to.be.true;
108
108
  (0, chai_1.expect)(forcefulEndCalled).to.be.true;
@@ -1 +1 @@
1
- {"version":3,"file":"ExifTool.dispose.spec.js","sourceRoot":"","sources":["../src/ExifTool.dispose.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExifTool.dispose.spec.js","sourceRoot":"","sources":["../src/ExifTool.dispose.spec.ts"],"names":[],"mappings":"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"}
package/dist/ExifTool.js CHANGED
@@ -569,8 +569,8 @@ class ExifTool {
569
569
  * This allows ExifTool instances to be automatically cleaned up when they go out of scope.
570
570
  *
571
571
  * Note: This is a synchronous disposal method that initiates graceful cleanup but doesn't
572
- * wait for completion. If graceful cleanup times out, forceful cleanup is attempted.
573
- * 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.
574
574
  *
575
575
  * @example
576
576
  * ```typescript
@@ -585,18 +585,18 @@ class ExifTool {
585
585
  if (!this.ended) {
586
586
  // Start with graceful cleanup, but use timeout for safety since this is sync disposal
587
587
  const cleanup = this.end(true);
588
- // 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
589
589
  // This is necessary because synchronous disposal can't wait for async operations
590
590
  const timeoutMs = this.options.disposalTimeoutMs ?? 1000;
591
591
  const timeoutHandle = setTimeout(() => {
592
592
  const logger = this.options.logger();
593
- logger.error(`ExifTool synchronous disposal timeout after ${timeoutMs}ms, forcing cleanup`);
594
- // 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
595
595
  try {
596
596
  this.batchCluster.closeChildProcesses(false);
597
597
  }
598
598
  catch (err) {
599
- 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);
600
600
  }
601
601
  }, timeoutMs);
602
602
  cleanup
@@ -615,8 +615,9 @@ class ExifTool {
615
615
  * Implements the AsyncDisposable interface for automatic async cleanup with the `await using` keyword.
616
616
  * This allows ExifTool instances to be automatically cleaned up when they go out of scope.
617
617
  *
618
- * This method provides robust cleanup with timeout protection to prevent hanging.
619
- * 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.
620
621
  *
621
622
  * @example
622
623
  * ```typescript
@@ -629,7 +630,8 @@ class ExifTool {
629
630
  */
630
631
  async [Symbol.asyncDispose]() {
631
632
  if (!this.ended) {
632
- // 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.
633
635
  const timeoutMs = this.options.asyncDisposalTimeoutMs ?? 5000;
634
636
  let timeoutHandle = undefined;
635
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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"}