exiftool-vendored 34.3.0 โ†’ 35.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 CHANGED
@@ -35,6 +35,22 @@ vendored versions of ExifTool match the version that they vendor.
35
35
 
36
36
  ## History
37
37
 
38
+ ### v35.0.0
39
+
40
+ - ๐Ÿ’” **BREAKING**: Upgraded to [batch-cluster v17](https://github.com/photostructure/batch-cluster.js/releases/tag/v17.0.0), which changes process cleanup behavior.
41
+
42
+ **Previously**, even though child processes were unreferenced, the stdio streams kept the parent Node.js process alive, requiring explicit `.end()` calls.
43
+
44
+ **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.
45
+
46
+ To restore the previous behavior (parent process stays alive until `.end()` is called):
47
+
48
+ ```typescript
49
+ new ExifTool({ unrefStreams: false });
50
+ ```
51
+
52
+ Fixes [#319](https://github.com/photostructure/exiftool-vendored.js/discussions/319).
53
+
38
54
  ### v34.3.0
39
55
 
40
56
  - ๐Ÿž Add support for colon-less timezone offsets (`2025:04:27 19:47:08-0300`). Thanks for the [report](https://github.com/photostructure/exiftool-vendored.js/issues/318), [@dosten](https://github.com/dosten)!
package/CLAUDE.md CHANGED
@@ -53,7 +53,7 @@ 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
- - End singleton `exiftool` instance with `.end()` to clean up child processes
56
+ - As of v35, `.end()` is optional for scripts (Node.js exits naturally), but recommended for long-running apps
57
57
  - Tag interfaces not comprehensive - less common tags may exist in returned objects
58
58
  - Uses batch processing with automatic process pool management
59
59
  - TypeScript union type limits require careful tag selection
package/README.md CHANGED
@@ -192,16 +192,16 @@ if (dt instanceof ExifDateTime) {
192
192
 
193
193
  ### ๐Ÿงน Resource Cleanup
194
194
 
195
- **Always call `.end()` on ExifTool instances** to prevent Node.js from hanging:
195
+ As of v35, **Node.js will exit naturally** without calling `.end()` โ€” child processes are cleaned up automatically when the parent exits.
196
+
197
+ For **long-running applications** (servers, daemons), calling `.end()` is still recommended for graceful shutdown:
196
198
 
197
199
  ```javascript
198
200
  import { exiftool } from "exiftool-vendored";
199
201
 
200
- // Use the singleton
201
- const tags = await exiftool.read("photo.jpg");
202
-
203
- // Clean up when done
204
- process.on("beforeExit", () => exiftool.end());
202
+ // For servers/daemons: graceful shutdown on termination signals
203
+ process.on("SIGINT", () => exiftool.end());
204
+ process.on("SIGTERM", () => exiftool.end());
205
205
  ```
206
206
 
207
207
  #### Automatic Cleanup with Disposable Interfaces
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "exiftool-vendored",
3
- "version": "34.3.0",
3
+ "version": "35.0.0",
4
4
  "description": "Efficient, cross-platform access to ExifTool",
5
5
  "main": "./dist/ExifTool.js",
6
6
  "types": "./dist/ExifTool.d.ts",
@@ -120,7 +120,7 @@
120
120
  "eslint-plugin-regexp": "^2.10.0",
121
121
  "extract-zip": "^2.0.1",
122
122
  "geo-tz": "^8.1.4",
123
- "globals": "^16.5.0",
123
+ "globals": "^17.0.0",
124
124
  "globule": "^1.3.4",
125
125
  "mocha": "^11.7.5",
126
126
  "npm-check-updates": "^19.2.0",
@@ -143,7 +143,7 @@
143
143
  "dependencies": {
144
144
  "@photostructure/tz-lookup": "^11.3.0",
145
145
  "@types/luxon": "^3.7.1",
146
- "batch-cluster": "^16.0.0",
146
+ "batch-cluster": "^17.0.0",
147
147
  "he": "^1.2.0",
148
148
  "luxon": "^3.7.2"
149
149
  },