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.
- package/CHANGELOG.md +60 -5
- package/CLAUDE.md +2 -1
- package/README.md +124 -35
- package/data/TagMetadata.json +10 -3
- package/dist/ExifTool.d.ts +15 -8
- package/dist/ExifTool.dispose.spec.js +3 -3
- package/dist/ExifTool.dispose.spec.js.map +1 -1
- package/dist/ExifTool.js +11 -9
- package/dist/ExifTool.js.map +1 -1
- package/dist/ExifToolOptions.d.ts +15 -2
- package/dist/ExifToolOptions.js.map +1 -1
- package/dist/ExifToolVendoredTags.d.ts +11 -1
- package/dist/ExifToolVendoredTags.js +1 -1
- package/dist/ExifToolVendoredTags.js.map +1 -1
- package/dist/ExiftoolPath.js +1 -1
- package/dist/ExiftoolPath.js.map +1 -1
- package/dist/InvalidUtf8Bytes.d.ts +20 -0
- package/dist/InvalidUtf8Bytes.js +106 -0
- package/dist/InvalidUtf8Bytes.js.map +1 -0
- package/dist/InvalidUtf8Bytes.spec.d.ts +1 -0
- package/dist/InvalidUtf8Bytes.spec.js +75 -0
- package/dist/InvalidUtf8Bytes.spec.js.map +1 -0
- package/dist/InvalidUtf8Xml.spec.d.ts +1 -0
- package/dist/InvalidUtf8Xml.spec.js +156 -0
- package/dist/InvalidUtf8Xml.spec.js.map +1 -0
- package/dist/JSON.d.ts +1 -0
- package/dist/JSON.js +6 -1
- package/dist/JSON.js.map +1 -1
- package/dist/RawTags.d.ts +9 -2
- package/dist/ReadRawTask.d.ts +1 -0
- package/dist/ReadRawTask.js +16 -3
- package/dist/ReadRawTask.js.map +1 -1
- package/dist/ReadRawTask.spec.js +191 -0
- package/dist/ReadRawTask.spec.js.map +1 -1
- package/dist/ReadTask.js +24 -2
- package/dist/ReadTask.js.map +1 -1
- package/dist/ReadTask.spec.js +52 -0
- package/dist/ReadTask.spec.js.map +1 -1
- package/dist/Tags.d.ts +56 -38
- package/dist/Tags.js +3 -3
- package/dist/Tags.js.map +1 -1
- package/dist/Tags.spec.js +8 -0
- package/dist/Tags.spec.js.map +1 -1
- package/dist/Utf8JsonFilter.d.ts +7 -0
- package/dist/Utf8JsonFilter.js +85 -0
- package/dist/Utf8JsonFilter.js.map +1 -0
- package/dist/update/mktags.js +19 -1
- package/dist/update/mktags.js.map +1 -1
- 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()`.
|
|
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()`
|
|
285
|
-
- Use `await using et = new ExifTool()`
|
|
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
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
[](https://github.com/photostructure/exiftool-vendored.js/actions/workflows/build.yml)
|
|
7
7
|
[](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
|
-
|
|
142
|
+
## 🛡️ Code defensively!
|
|
143
143
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
###
|
|
268
|
+
### Resource Cleanup
|
|
198
269
|
|
|
199
|
-
|
|
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
|
-
|
|
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
|
-
|
|
207
|
-
|
|
208
|
-
|
|
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
|
|
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
|
-
//
|
|
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
|
|
309
|
+
// ExifTool cleanup is initiated when the block exits
|
|
223
310
|
}
|
|
224
311
|
|
|
225
|
-
//
|
|
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
|
|
316
|
+
// ExifTool cleanup is awaited when the block exits
|
|
230
317
|
}
|
|
231
318
|
```
|
|
232
319
|
|
|
233
320
|
**Benefits:**
|
|
234
321
|
|
|
235
|
-
- **
|
|
236
|
-
- **
|
|
237
|
-
- **
|
|
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**:
|
|
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
|
-
###
|
|
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
|
-
###
|
|
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
|
-
###
|
|
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
|
-
###
|
|
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)
|
package/data/TagMetadata.json
CHANGED
|
@@ -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":
|
|
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,
|
package/dist/ExifTool.d.ts
CHANGED
|
@@ -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
|
|
152
|
-
*
|
|
153
|
-
* filename=utf8
|
|
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
|
|
405
|
-
*
|
|
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
|
|
422
|
-
*
|
|
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
|
|
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
|
-
//
|
|
101
|
+
// Model a forceful cleanup request that settles quickly
|
|
102
102
|
return originalEnd(false);
|
|
103
103
|
}
|
|
104
104
|
};
|
|
105
|
-
// The async
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA8B;AAC9B,yCAAsC;AAEtC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,GAAG,IAAI,mBAAQ,EAAE,CAAC;QAC1B,IAAA,aAAM,EAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,EAAE,GAAG,IAAI,mBAAQ,EAAE,CAAC;QAC1B,IAAA,aAAM,EAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,EAAE,GAAG,IAAI,mBAAQ,EAAE,CAAC;QAC1B,IAAA,aAAM,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QAClD,6EAA6E;QAC7E,wDAAwD;QACxD,IAAA,aAAM,EAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,EAAE,GAAG,IAAI,mBAAQ,EAAE,CAAC;QAC1B,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,IAAA,aAAM,EAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,EAAE,GAAG,IAAI,mBAAQ,EAAE,CAAC;QAC1B,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,IAAA,aAAM,EAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC5B,kCAAkC;QAClC,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,IAAA,aAAM,EAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,
|
|
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
|
|
573
|
-
*
|
|
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
|
|
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,
|
|
594
|
-
//
|
|
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
|
|
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
|
|
619
|
-
*
|
|
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
|
|
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) => {
|
package/dist/ExifTool.js.map
CHANGED
|
@@ -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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"}
|