exiftool-vendored 30.1.0 → 30.3.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 +34 -15
- package/CLAUDE.md +2 -1
- package/README.md +160 -453
- package/RELEASE.md +1 -2
- package/dist/DefaultExifToolOptions.js +2 -0
- package/dist/DefaultExifToolOptions.js.map +1 -1
- package/dist/ExifTool.d.ts +71 -28
- package/dist/ExifTool.js +109 -11
- package/dist/ExifTool.js.map +1 -1
- package/dist/ExifToolOptions.d.ts +14 -0
- package/dist/ExifToolOptions.js.map +1 -1
- package/dist/StrEnum.d.ts +145 -5
- package/dist/StrEnum.js +4 -4
- package/dist/StrEnum.js.map +1 -1
- package/dist/Tags.d.ts +12512 -2512
- package/dist/Tags.js +3 -3
- package/dist/Tags.js.map +1 -1
- package/dist/WriteTags.d.ts +3 -4
- package/package.json +25 -18
package/RELEASE.md
CHANGED
|
@@ -20,9 +20,8 @@ A GitHub Actions workflow automatically checks for dependency updates (including
|
|
|
20
20
|
|
|
21
21
|
1. `git clone` this repo,
|
|
22
22
|
1. `npm install`
|
|
23
|
-
1. `npm run u` # should be a no-op if automated updates are working
|
|
24
23
|
1. `npm run mktags ../test-images` # < assumes `../test-images` has the full ExifTool sample image suite
|
|
25
|
-
1. `npm run
|
|
24
|
+
1. `npm run precommit` (look for lint or documentation generation issues)
|
|
26
25
|
1. `npm run test`
|
|
27
26
|
1. Verify diffs are reasonable, `git commit` and `git push`
|
|
28
27
|
1. Verify [](https://github.com/photostructure/exiftool-vendored.js/actions/workflows/node.js.yml)
|
|
@@ -123,6 +123,8 @@ exports.DefaultExifToolOptions = Object.freeze({
|
|
|
123
123
|
adjustTimeZoneIfDaylightSavings: defaultAdjustTimeZoneIfDaylightSavings,
|
|
124
124
|
preferTimezoneInferenceFromGps: false, // to retain prior behavior
|
|
125
125
|
keepUTCTime: true,
|
|
126
|
+
disposalTimeoutMs: 1000,
|
|
127
|
+
asyncDisposalTimeoutMs: 5000,
|
|
126
128
|
});
|
|
127
129
|
/**
|
|
128
130
|
* @see https://github.com/photostructure/exiftool-vendored.js/issues/215
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultExifToolOptions.js","sourceRoot":"","sources":["../src/DefaultExifToolOptions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"DefaultExifToolOptions.js","sourceRoot":"","sources":["../src/DefaultExifToolOptions.ts"],"names":[],"mappings":"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"}
|
package/dist/ExifTool.d.ts
CHANGED
|
@@ -1,29 +1,14 @@
|
|
|
1
1
|
import * as bc from "batch-cluster";
|
|
2
2
|
import { BinaryExtractionTaskOptions } from "./BinaryExtractionTask";
|
|
3
|
-
import { ContainerDirectoryItem } from "./ContainerDirectoryItem";
|
|
4
|
-
import { Defined, DefinedOrNullValued } from "./Defined";
|
|
5
|
-
import { ErrorsAndWarnings } from "./ErrorsAndWarnings";
|
|
6
3
|
import { ExifToolOptions } from "./ExifToolOptions";
|
|
7
4
|
import { ExifToolTask, ExifToolTaskOptions } from "./ExifToolTask";
|
|
8
|
-
import { ExifToolVendoredTags } from "./ExifToolVendoredTags";
|
|
9
|
-
import { GeolocationTags } from "./GeolocationTags";
|
|
10
|
-
import { ICCProfileTags } from "./ICCProfileTags";
|
|
11
|
-
import { IPTCApplicationRecordTags } from "./IPTCApplicationRecordTags";
|
|
12
|
-
import { ImageDataHashTag } from "./ImageDataHashTag";
|
|
13
|
-
import { Json, Literal } from "./JSON";
|
|
14
|
-
import { CollectionInfo, KeywordInfoStruct, KeywordStruct, MWGCollectionsTags, MWGKeywordTags } from "./MWGTags";
|
|
15
|
-
import { Maybe } from "./Maybe";
|
|
16
|
-
import { Omit } from "./Omit";
|
|
17
5
|
import { PreviewTag } from "./PreviewTag";
|
|
18
6
|
import { RawTags } from "./RawTags";
|
|
19
7
|
import { ReadTaskOptions } from "./ReadTask";
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import { Struct } from "./Struct";
|
|
23
|
-
import { APPTags, CompositeTags, EXIFTags, ExifToolTags, FileTags, FlashPixTags, IPTCTags, JFIFTags, MPFTags, MakerNotesTags, MetaTags, PanasonicRawTags, PhotoshopTags, PrintIMTags, QuickTimeTags, RAFTags, RIFFTags, Tags, XMPTags } from "./Tags";
|
|
24
|
-
import { Version } from "./Version";
|
|
25
|
-
import { AdditionalWriteTags, ExpandedDateTags, MutableTags, StructAppendTags, WritableGPSRefs, WriteTags } from "./WriteTags";
|
|
8
|
+
import { Tags } from "./Tags";
|
|
9
|
+
import { WriteTags } from "./WriteTags";
|
|
26
10
|
import { WriteTaskOptions, WriteTaskResult } from "./WriteTask";
|
|
11
|
+
export { retryOnReject } from "./AsyncRetry";
|
|
27
12
|
export { BinaryField } from "./BinaryField";
|
|
28
13
|
export { CapturedAtTagNames } from "./CapturedAtTagNames";
|
|
29
14
|
export { DefaultExifToolOptions } from "./DefaultExifToolOptions";
|
|
@@ -38,9 +23,34 @@ export { exiftoolPath } from "./ExiftoolPath";
|
|
|
38
23
|
export { GeolocationTagNames, isGeolocationTag } from "./GeolocationTags";
|
|
39
24
|
export { parseJSON } from "./JSON";
|
|
40
25
|
export { DefaultReadTaskOptions } from "./ReadTask";
|
|
41
|
-
export {
|
|
26
|
+
export { strEnum } from "./StrEnum";
|
|
27
|
+
export type { StrEnum, StrEnumHelpers, StrEnumKeys, StrEnumType, } from "./StrEnum";
|
|
28
|
+
export { defaultVideosToUTC, offsetMinutesToZoneName, TimezoneOffsetTagnames, UnsetZone, UnsetZoneName, UnsetZoneOffsetMinutes, } from "./Timezones";
|
|
42
29
|
export { DefaultWriteTaskOptions, WriteTaskOptionFields } from "./WriteTask";
|
|
43
|
-
export type {
|
|
30
|
+
export type { BinaryExtractionTaskOptions } from "./BinaryExtractionTask";
|
|
31
|
+
export type { ContainerDirectoryItem } from "./ContainerDirectoryItem";
|
|
32
|
+
export type { Defined, DefinedOrNullValued } from "./Defined";
|
|
33
|
+
export type { ErrorsAndWarnings } from "./ErrorsAndWarnings";
|
|
34
|
+
export type { ExifToolOptions } from "./ExifToolOptions";
|
|
35
|
+
export type { ExifToolTaskOptions } from "./ExifToolTask";
|
|
36
|
+
export type { ExifToolVendoredTags } from "./ExifToolVendoredTags";
|
|
37
|
+
export type { GeolocationTags } from "./GeolocationTags";
|
|
38
|
+
export type { ICCProfileTags } from "./ICCProfileTags";
|
|
39
|
+
export type { IPTCApplicationRecordTags as ApplicationRecordTags, IPTCApplicationRecordTags, } from "./IPTCApplicationRecordTags";
|
|
40
|
+
export type { ImageDataHashTag } from "./ImageDataHashTag";
|
|
41
|
+
export type { Json, Literal } from "./JSON";
|
|
42
|
+
export type { CollectionInfo, KeywordInfoStruct, KeywordStruct, MWGCollectionsTags, MWGKeywordTags, } from "./MWGTags";
|
|
43
|
+
export type { Maybe, Nullable } from "./Maybe";
|
|
44
|
+
export type { Omit } from "./Omit";
|
|
45
|
+
export type { RawTags } from "./RawTags";
|
|
46
|
+
export type { ReadTaskOptions } from "./ReadTask";
|
|
47
|
+
export type { ResourceEvent } from "./ResourceEvent";
|
|
48
|
+
export type { ShortcutTags } from "./ShortcutTags";
|
|
49
|
+
export type { Struct } from "./Struct";
|
|
50
|
+
export type { APPTags, CompositeTags, EXIFTags, ExifToolTags, FileTags, FlashPixTags, IPTCTags, JFIFTags, MakerNotesTags, MetaTags, MPFTags, PanasonicRawTags, PhotoshopTags, PrintIMTags, QuickTimeTags, RAFTags, RIFFTags, Tags, XMPTags, } from "./Tags";
|
|
51
|
+
export type { Version } from "./Version";
|
|
52
|
+
export type { AdditionalWriteTags, EXIFStrictDateTags, ExpandedDateTags, GroupPrefixedTags, MutableTags, StructAppendTags, WritableGPSRefs, WriteTags, XMPPartialDateTags, } from "./WriteTags";
|
|
53
|
+
export type { WriteTaskOptions, WriteTaskResult } from "./WriteTask";
|
|
44
54
|
/**
|
|
45
55
|
* Manages delegating calls to a cluster of ExifTool child processes.
|
|
46
56
|
*
|
|
@@ -321,20 +331,53 @@ export declare class ExifTool {
|
|
|
321
331
|
* be started automatically to handle new tasks.
|
|
322
332
|
*/
|
|
323
333
|
closeChildProcesses(gracefully?: boolean): Promise<void>;
|
|
334
|
+
/**
|
|
335
|
+
* Implements the Disposable interface for automatic cleanup with the `using` keyword.
|
|
336
|
+
* This allows ExifTool instances to be automatically cleaned up when they go out of scope.
|
|
337
|
+
*
|
|
338
|
+
* Note: This is a synchronous disposal method that initiates graceful cleanup but doesn't
|
|
339
|
+
* wait for completion. If graceful cleanup times out, forceful cleanup is attempted.
|
|
340
|
+
* For guaranteed cleanup completion, use `await using` with the async disposal method instead.
|
|
341
|
+
*
|
|
342
|
+
* @example
|
|
343
|
+
* ```typescript
|
|
344
|
+
* {
|
|
345
|
+
* using et = new ExifTool();
|
|
346
|
+
* const tags = await et.read("photo.jpg");
|
|
347
|
+
* // ExifTool cleanup will be initiated when this block exits
|
|
348
|
+
* }
|
|
349
|
+
* ```
|
|
350
|
+
*/
|
|
351
|
+
[Symbol.dispose](): void;
|
|
352
|
+
/**
|
|
353
|
+
* Implements the AsyncDisposable interface for automatic async cleanup with the `await using` keyword.
|
|
354
|
+
* This allows ExifTool instances to be automatically cleaned up when they go out of scope.
|
|
355
|
+
*
|
|
356
|
+
* This method provides robust cleanup with timeout protection to prevent hanging.
|
|
357
|
+
* If graceful cleanup times out, forceful cleanup is attempted automatically.
|
|
358
|
+
*
|
|
359
|
+
* @example
|
|
360
|
+
* ```typescript
|
|
361
|
+
* {
|
|
362
|
+
* await using et = new ExifTool();
|
|
363
|
+
* const tags = await et.read("photo.jpg");
|
|
364
|
+
* // ExifTool will be automatically ended when this block exits
|
|
365
|
+
* }
|
|
366
|
+
* ```
|
|
367
|
+
*/
|
|
368
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
324
369
|
}
|
|
325
370
|
/**
|
|
326
|
-
*
|
|
327
|
-
* in order to leverage a single running ExifTool process.
|
|
371
|
+
* This is a convenience singleton.
|
|
328
372
|
*
|
|
329
|
-
* As of v3.0, its {@link ExifToolOptions.maxProcs} is set to the number of
|
|
373
|
+
* As of v3.0, its {@link ExifToolOptions.maxProcs} is set to 1/4 the number of
|
|
330
374
|
* CPUs on the current system; no more than `maxProcs` instances of `exiftool`
|
|
331
|
-
* will be spawned. You may want to experiment with smaller or larger values
|
|
332
|
-
*
|
|
333
|
-
*
|
|
375
|
+
* will be spawned. You may want to experiment with smaller or larger values for
|
|
376
|
+
* `maxProcs`, depending on CPU and disk speed of your system and performance
|
|
377
|
+
* tradeoffs.
|
|
334
378
|
*
|
|
335
379
|
* Note that each child process consumes between 10 and 50 MB of RAM. If you
|
|
336
|
-
* have limited system resources you may want to use a smaller `maxProcs`
|
|
337
|
-
* value.
|
|
380
|
+
* have limited system resources you may want to use a smaller `maxProcs` value.
|
|
338
381
|
*
|
|
339
382
|
* See the source of {@link DefaultExifToolOptions} for more details about how
|
|
340
383
|
* this instance is configured.
|
package/dist/ExifTool.js
CHANGED
|
@@ -36,7 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.exiftool = exports.ExifTool = exports.WriteTaskOptionFields = exports.DefaultWriteTaskOptions = exports.
|
|
39
|
+
exports.exiftool = exports.ExifTool = exports.WriteTaskOptionFields = exports.DefaultWriteTaskOptions = exports.UnsetZoneOffsetMinutes = exports.UnsetZoneName = exports.UnsetZone = exports.TimezoneOffsetTagnames = exports.offsetMinutesToZoneName = exports.defaultVideosToUTC = exports.strEnum = exports.DefaultReadTaskOptions = exports.parseJSON = exports.isGeolocationTag = exports.GeolocationTagNames = exports.exiftoolPath = exports.ExifToolTask = exports.ExifTime = exports.ExifDateTime = exports.ExifDate = exports.DefaultMaxProcs = exports.DefaultExiftoolArgs = exports.DefaultExifToolOptions = exports.CapturedAtTagNames = exports.BinaryField = exports.retryOnReject = void 0;
|
|
40
40
|
const bc = __importStar(require("batch-cluster"));
|
|
41
41
|
const _cp = __importStar(require("node:child_process"));
|
|
42
42
|
const _fs = __importStar(require("node:fs"));
|
|
@@ -60,6 +60,8 @@ const String_1 = require("./String");
|
|
|
60
60
|
const VersionTask_1 = require("./VersionTask");
|
|
61
61
|
const Which_1 = require("./Which");
|
|
62
62
|
const WriteTask_1 = require("./WriteTask");
|
|
63
|
+
var AsyncRetry_2 = require("./AsyncRetry");
|
|
64
|
+
Object.defineProperty(exports, "retryOnReject", { enumerable: true, get: function () { return AsyncRetry_2.retryOnReject; } });
|
|
63
65
|
var BinaryField_1 = require("./BinaryField");
|
|
64
66
|
Object.defineProperty(exports, "BinaryField", { enumerable: true, get: function () { return BinaryField_1.BinaryField; } });
|
|
65
67
|
var CapturedAtTagNames_1 = require("./CapturedAtTagNames");
|
|
@@ -87,13 +89,15 @@ var JSON_1 = require("./JSON");
|
|
|
87
89
|
Object.defineProperty(exports, "parseJSON", { enumerable: true, get: function () { return JSON_1.parseJSON; } });
|
|
88
90
|
var ReadTask_2 = require("./ReadTask");
|
|
89
91
|
Object.defineProperty(exports, "DefaultReadTaskOptions", { enumerable: true, get: function () { return ReadTask_2.DefaultReadTaskOptions; } });
|
|
92
|
+
var StrEnum_1 = require("./StrEnum");
|
|
93
|
+
Object.defineProperty(exports, "strEnum", { enumerable: true, get: function () { return StrEnum_1.strEnum; } });
|
|
90
94
|
var Timezones_1 = require("./Timezones");
|
|
95
|
+
Object.defineProperty(exports, "defaultVideosToUTC", { enumerable: true, get: function () { return Timezones_1.defaultVideosToUTC; } });
|
|
96
|
+
Object.defineProperty(exports, "offsetMinutesToZoneName", { enumerable: true, get: function () { return Timezones_1.offsetMinutesToZoneName; } });
|
|
91
97
|
Object.defineProperty(exports, "TimezoneOffsetTagnames", { enumerable: true, get: function () { return Timezones_1.TimezoneOffsetTagnames; } });
|
|
92
98
|
Object.defineProperty(exports, "UnsetZone", { enumerable: true, get: function () { return Timezones_1.UnsetZone; } });
|
|
93
99
|
Object.defineProperty(exports, "UnsetZoneName", { enumerable: true, get: function () { return Timezones_1.UnsetZoneName; } });
|
|
94
100
|
Object.defineProperty(exports, "UnsetZoneOffsetMinutes", { enumerable: true, get: function () { return Timezones_1.UnsetZoneOffsetMinutes; } });
|
|
95
|
-
Object.defineProperty(exports, "defaultVideosToUTC", { enumerable: true, get: function () { return Timezones_1.defaultVideosToUTC; } });
|
|
96
|
-
Object.defineProperty(exports, "offsetMinutesToZoneName", { enumerable: true, get: function () { return Timezones_1.offsetMinutesToZoneName; } });
|
|
97
101
|
var WriteTask_2 = require("./WriteTask");
|
|
98
102
|
Object.defineProperty(exports, "DefaultWriteTaskOptions", { enumerable: true, get: function () { return WriteTask_2.DefaultWriteTaskOptions; } });
|
|
99
103
|
Object.defineProperty(exports, "WriteTaskOptionFields", { enumerable: true, get: function () { return WriteTask_2.WriteTaskOptionFields; } });
|
|
@@ -477,21 +481,115 @@ class ExifTool {
|
|
|
477
481
|
closeChildProcesses(gracefully = true) {
|
|
478
482
|
return this.batchCluster.closeChildProcesses(gracefully);
|
|
479
483
|
}
|
|
484
|
+
/**
|
|
485
|
+
* Implements the Disposable interface for automatic cleanup with the `using` keyword.
|
|
486
|
+
* This allows ExifTool instances to be automatically cleaned up when they go out of scope.
|
|
487
|
+
*
|
|
488
|
+
* Note: This is a synchronous disposal method that initiates graceful cleanup but doesn't
|
|
489
|
+
* wait for completion. If graceful cleanup times out, forceful cleanup is attempted.
|
|
490
|
+
* For guaranteed cleanup completion, use `await using` with the async disposal method instead.
|
|
491
|
+
*
|
|
492
|
+
* @example
|
|
493
|
+
* ```typescript
|
|
494
|
+
* {
|
|
495
|
+
* using et = new ExifTool();
|
|
496
|
+
* const tags = await et.read("photo.jpg");
|
|
497
|
+
* // ExifTool cleanup will be initiated when this block exits
|
|
498
|
+
* }
|
|
499
|
+
* ```
|
|
500
|
+
*/
|
|
501
|
+
[Symbol.dispose]() {
|
|
502
|
+
if (!this.ended) {
|
|
503
|
+
// Start with graceful cleanup, but use timeout for safety since this is sync disposal
|
|
504
|
+
const cleanup = this.end(true);
|
|
505
|
+
// Set up a timeout to force process exit if graceful cleanup hangs
|
|
506
|
+
// This is necessary because synchronous disposal can't wait for async operations
|
|
507
|
+
const timeoutMs = this.options.disposalTimeoutMs ?? 1000;
|
|
508
|
+
const timeoutHandle = setTimeout(() => {
|
|
509
|
+
const logger = this.options.logger();
|
|
510
|
+
logger.error(`ExifTool synchronous disposal timeout after ${timeoutMs}ms, forcing cleanup`);
|
|
511
|
+
// Force immediate termination of child processes if they exist
|
|
512
|
+
try {
|
|
513
|
+
this.batchCluster.closeChildProcesses(false);
|
|
514
|
+
}
|
|
515
|
+
catch (err) {
|
|
516
|
+
logger.error("Error during forced child process cleanup during sync disposal:", err);
|
|
517
|
+
}
|
|
518
|
+
}, timeoutMs);
|
|
519
|
+
cleanup
|
|
520
|
+
.then(() => {
|
|
521
|
+
clearTimeout(timeoutHandle);
|
|
522
|
+
})
|
|
523
|
+
.catch((err) => {
|
|
524
|
+
clearTimeout(timeoutHandle);
|
|
525
|
+
// Log error but don't throw, as disposal should not fail
|
|
526
|
+
const logger = this.options.logger();
|
|
527
|
+
logger.error("ExifTool synchronous disposal error:", err);
|
|
528
|
+
});
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Implements the AsyncDisposable interface for automatic async cleanup with the `await using` keyword.
|
|
533
|
+
* This allows ExifTool instances to be automatically cleaned up when they go out of scope.
|
|
534
|
+
*
|
|
535
|
+
* This method provides robust cleanup with timeout protection to prevent hanging.
|
|
536
|
+
* If graceful cleanup times out, forceful cleanup is attempted automatically.
|
|
537
|
+
*
|
|
538
|
+
* @example
|
|
539
|
+
* ```typescript
|
|
540
|
+
* {
|
|
541
|
+
* await using et = new ExifTool();
|
|
542
|
+
* const tags = await et.read("photo.jpg");
|
|
543
|
+
* // ExifTool will be automatically ended when this block exits
|
|
544
|
+
* }
|
|
545
|
+
* ```
|
|
546
|
+
*/
|
|
547
|
+
async [Symbol.asyncDispose]() {
|
|
548
|
+
if (!this.ended) {
|
|
549
|
+
// Set up a timeout to prevent hanging indefinitely during async disposal
|
|
550
|
+
const timeoutMs = this.options.asyncDisposalTimeoutMs ?? 5000;
|
|
551
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
552
|
+
setTimeout(() => {
|
|
553
|
+
reject(new Error(`ExifTool async disposal timeout after ${timeoutMs}ms`));
|
|
554
|
+
}, timeoutMs);
|
|
555
|
+
});
|
|
556
|
+
try {
|
|
557
|
+
// Race between graceful cleanup and timeout
|
|
558
|
+
await Promise.race([this.end(true), timeoutPromise]);
|
|
559
|
+
}
|
|
560
|
+
catch (err) {
|
|
561
|
+
const logger = this.options.logger();
|
|
562
|
+
if (err instanceof Error && err.message.includes("timeout")) {
|
|
563
|
+
logger.error(`ExifTool async disposal timed out after ${timeoutMs}ms, attempting forceful cleanup`);
|
|
564
|
+
// Attempt forceful cleanup on timeout
|
|
565
|
+
try {
|
|
566
|
+
await this.end(false);
|
|
567
|
+
}
|
|
568
|
+
catch (forcefulErr) {
|
|
569
|
+
logger.error("ExifTool forceful cleanup during async disposal also failed:", forcefulErr);
|
|
570
|
+
throw err; // Re-throw the original timeout error
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
else {
|
|
574
|
+
logger.error("ExifTool async disposal error:", err);
|
|
575
|
+
throw err;
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
}
|
|
480
580
|
}
|
|
481
581
|
exports.ExifTool = ExifTool;
|
|
482
582
|
/**
|
|
483
|
-
*
|
|
484
|
-
* in order to leverage a single running ExifTool process.
|
|
583
|
+
* This is a convenience singleton.
|
|
485
584
|
*
|
|
486
|
-
* As of v3.0, its {@link ExifToolOptions.maxProcs} is set to the number of
|
|
585
|
+
* As of v3.0, its {@link ExifToolOptions.maxProcs} is set to 1/4 the number of
|
|
487
586
|
* CPUs on the current system; no more than `maxProcs` instances of `exiftool`
|
|
488
|
-
* will be spawned. You may want to experiment with smaller or larger values
|
|
489
|
-
*
|
|
490
|
-
*
|
|
587
|
+
* will be spawned. You may want to experiment with smaller or larger values for
|
|
588
|
+
* `maxProcs`, depending on CPU and disk speed of your system and performance
|
|
589
|
+
* tradeoffs.
|
|
491
590
|
*
|
|
492
591
|
* Note that each child process consumes between 10 and 50 MB of RAM. If you
|
|
493
|
-
* have limited system resources you may want to use a smaller `maxProcs`
|
|
494
|
-
* value.
|
|
592
|
+
* have limited system resources you may want to use a smaller `maxProcs` value.
|
|
495
593
|
*
|
|
496
594
|
* See the source of {@link DefaultExifToolOptions} for more details about how
|
|
497
595
|
* this instance is configured.
|
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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"}
|
|
@@ -312,5 +312,19 @@ export interface ExifToolOptions extends bc.BatchClusterOptions, bc.BatchProcess
|
|
|
312
312
|
* @see https://exiftool.org/ExifTool.html#KeepUTCTime
|
|
313
313
|
*/
|
|
314
314
|
keepUTCTime: boolean;
|
|
315
|
+
/**
|
|
316
|
+
* Timeout in milliseconds for synchronous disposal (using Symbol.dispose).
|
|
317
|
+
* If graceful cleanup takes longer than this, forceful cleanup is attempted.
|
|
318
|
+
*
|
|
319
|
+
* Defaults to 1000ms (1 second).
|
|
320
|
+
*/
|
|
321
|
+
disposalTimeoutMs?: number;
|
|
322
|
+
/**
|
|
323
|
+
* Timeout in milliseconds for asynchronous disposal (using Symbol.asyncDispose).
|
|
324
|
+
* If graceful cleanup takes longer than this, forceful cleanup is attempted.
|
|
325
|
+
*
|
|
326
|
+
* Defaults to 5000ms (5 seconds).
|
|
327
|
+
*/
|
|
328
|
+
asyncDisposalTimeoutMs?: number;
|
|
315
329
|
}
|
|
316
330
|
export declare function handleDeprecatedOptions<T extends Partial<Pick<ExifToolOptions, "includeImageDataMD5" | "imageHashType">>>(options: T): T;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExifToolOptions.js","sourceRoot":"","sources":["../src/ExifToolOptions.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"ExifToolOptions.js","sourceRoot":"","sources":["../src/ExifToolOptions.ts"],"names":[],"mappings":";;AAiXA,0DASC;AATD,SAAgB,uBAAuB,CAIrC,OAAU;IACV,IAAI,OAAO,CAAC,aAAa,IAAI,IAAI,IAAI,OAAO,CAAC,mBAAmB,IAAI,IAAI,EAAE,CAAC;QACzE,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACtE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/StrEnum.d.ts
CHANGED
|
@@ -1,32 +1,172 @@
|
|
|
1
|
-
import { Maybe, Nullable } from "./Maybe";
|
|
1
|
+
import type { Maybe, Nullable } from "./Maybe";
|
|
2
2
|
export type StrEnumType<T extends string> = {
|
|
3
3
|
[K in T]: K;
|
|
4
4
|
};
|
|
5
|
+
/**
|
|
6
|
+
* Helper methods and properties for string enum types created with {@link strEnum}.
|
|
7
|
+
*
|
|
8
|
+
* Provides type-safe utilities for working with predefined string literal types,
|
|
9
|
+
* including validation, comparison, and transformation operations.
|
|
10
|
+
*
|
|
11
|
+
* @template T - The union of string literals that make up this enum
|
|
12
|
+
*/
|
|
5
13
|
export type StrEnumHelpers<T extends string> = {
|
|
14
|
+
/** Array of all valid enum values in declaration order */
|
|
6
15
|
values: T[];
|
|
16
|
+
/** Number of enum values */
|
|
7
17
|
length: number;
|
|
8
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Synonym for {@link includes}. Checks if a string is a valid enum value.
|
|
20
|
+
* @param s - String to check (can be null/undefined)
|
|
21
|
+
* @returns Type predicate indicating if s is a valid enum value
|
|
22
|
+
*/
|
|
9
23
|
has(s: Nullable<string>): s is T;
|
|
24
|
+
/**
|
|
25
|
+
* Type-safe check if a string is a valid enum value (case-sensitive).
|
|
26
|
+
* @param s - String to check (can be null/undefined)
|
|
27
|
+
* @returns Type predicate indicating if s is a valid enum value
|
|
28
|
+
* @example
|
|
29
|
+
* const Colors = strEnum("red", "green", "blue");
|
|
30
|
+
* Colors.includes("red") // true
|
|
31
|
+
* Colors.includes("RED") // false
|
|
32
|
+
*/
|
|
10
33
|
includes(s: Nullable<string>): s is T;
|
|
34
|
+
/**
|
|
35
|
+
* Get enum value with case-insensitive matching.
|
|
36
|
+
* @param s - String to match (can be null/undefined)
|
|
37
|
+
* @returns Matching enum value or undefined if no match
|
|
38
|
+
* @example
|
|
39
|
+
* const Colors = strEnum("red", "green", "blue");
|
|
40
|
+
* Colors.getCI("RED") // "red"
|
|
41
|
+
* Colors.getCI("purple") // undefined
|
|
42
|
+
*/
|
|
11
43
|
getCI(s: Nullable<string>): Maybe<T>;
|
|
44
|
+
/**
|
|
45
|
+
* Create a new array containing only the specified enum values.
|
|
46
|
+
* @param t - Enum values to include
|
|
47
|
+
* @returns Array of specified enum values
|
|
48
|
+
* @example
|
|
49
|
+
* const Colors = strEnum("red", "green", "blue");
|
|
50
|
+
* Colors.pick("red", "blue") // ["red", "blue"]
|
|
51
|
+
*/
|
|
12
52
|
pick<O extends T>(...t: O[]): Extract<T, O>[];
|
|
53
|
+
/**
|
|
54
|
+
* Create a new array containing all enum values except the specified ones.
|
|
55
|
+
* @param t - Enum values to exclude
|
|
56
|
+
* @returns Array of remaining enum values
|
|
57
|
+
* @example
|
|
58
|
+
* const Colors = strEnum("red", "green", "blue");
|
|
59
|
+
* Colors.omit("green") // ["red", "blue"]
|
|
60
|
+
*/
|
|
13
61
|
omit<O extends T>(...t: O[]): Exclude<T, O>[];
|
|
62
|
+
/**
|
|
63
|
+
* Get the zero-based index of an enum value.
|
|
64
|
+
* @param s - Enum value to find (can be null/undefined)
|
|
65
|
+
* @returns Index of the value or undefined if not found
|
|
66
|
+
* @example
|
|
67
|
+
* const Colors = strEnum("red", "green", "blue");
|
|
68
|
+
* Colors.indexOf("green") // 1
|
|
69
|
+
* Colors.indexOf("purple") // undefined
|
|
70
|
+
*/
|
|
14
71
|
indexOf(s: Nullable<string>): Maybe<number>;
|
|
72
|
+
/**
|
|
73
|
+
* Get the ordinal position of an enum value, or length if not found.
|
|
74
|
+
* Useful for sorting where invalid values should sort last.
|
|
75
|
+
* @param s - Enum value to find (can be null/undefined)
|
|
76
|
+
* @returns Index of the value, or enum length if not found
|
|
77
|
+
* @example
|
|
78
|
+
* const Colors = strEnum("red", "green", "blue");
|
|
79
|
+
* Colors.ordinal("green") // 1
|
|
80
|
+
* Colors.ordinal("purple") // 3 (length)
|
|
81
|
+
*/
|
|
15
82
|
ordinal(s: Nullable<string>): number;
|
|
16
|
-
/**
|
|
83
|
+
/**
|
|
84
|
+
* Synonym for {@link getCI}. Get enum value with case-insensitive matching.
|
|
85
|
+
* @param s - String to validate (can be null/undefined)
|
|
86
|
+
* @returns Valid enum value or undefined if no match
|
|
87
|
+
*/
|
|
17
88
|
toValid(s: Nullable<string>): Maybe<T>;
|
|
18
|
-
/**
|
|
89
|
+
/**
|
|
90
|
+
* Find the first valid enum value from a list of candidates.
|
|
91
|
+
* @param arr - Array of potential enum values to check
|
|
92
|
+
* @returns First valid enum value found, or undefined if none match
|
|
93
|
+
* @example
|
|
94
|
+
* const Colors = strEnum("red", "green", "blue");
|
|
95
|
+
* Colors.firstValid("purple", "GREEN", "red") // "green" (case-insensitive match)
|
|
96
|
+
*/
|
|
19
97
|
firstValid(...arr: Nullable<string>[]): Maybe<T>;
|
|
98
|
+
/**
|
|
99
|
+
* Apply a function to a string if it's a valid enum value.
|
|
100
|
+
* @param s - String to check and potentially transform
|
|
101
|
+
* @param f - Function to apply if s is a valid enum value
|
|
102
|
+
* @returns Result of function application, or undefined if s is invalid
|
|
103
|
+
* @example
|
|
104
|
+
* const Colors = strEnum("red", "green", "blue");
|
|
105
|
+
* Colors.mapValid("red", color => color.toUpperCase()) // "RED"
|
|
106
|
+
* Colors.mapValid("purple", color => color.toUpperCase()) // undefined
|
|
107
|
+
*/
|
|
20
108
|
mapValid<R>(s: Nullable<string>, f: (t: T) => R): Maybe<R>;
|
|
109
|
+
/**
|
|
110
|
+
* Compare two strings based on their enum order.
|
|
111
|
+
* @param a - First string to compare
|
|
112
|
+
* @param b - Second string to compare
|
|
113
|
+
* @returns -1 if a < b, 0 if a === b, 1 if a > b, undefined if either is invalid
|
|
114
|
+
* @example
|
|
115
|
+
* const Colors = strEnum("red", "green", "blue");
|
|
116
|
+
* Colors.cmp("red", "green") // -1 (red comes before green)
|
|
117
|
+
* Colors.cmp("blue", "red") // 1 (blue comes after red)
|
|
118
|
+
*/
|
|
21
119
|
cmp(a: Nullable<string>, b: Nullable<string>): Maybe<number>;
|
|
120
|
+
/**
|
|
121
|
+
* Check if first enum value comes before second in declaration order.
|
|
122
|
+
* @param a - First enum value
|
|
123
|
+
* @param b - Second enum value
|
|
124
|
+
* @returns True if a comes before b in the enum declaration
|
|
125
|
+
* @example
|
|
126
|
+
* const Colors = strEnum("red", "green", "blue");
|
|
127
|
+
* Colors.lt("red", "green") // true
|
|
128
|
+
* Colors.lt("green", "red") // false
|
|
129
|
+
*/
|
|
22
130
|
lt(a: T, b: T): boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Get the next enum value in declaration order.
|
|
133
|
+
* @param s - Current enum value
|
|
134
|
+
* @returns Next enum value, or undefined if s is the last value or invalid
|
|
135
|
+
* @example
|
|
136
|
+
* const Colors = strEnum("red", "green", "blue");
|
|
137
|
+
* Colors.next("red") // "green"
|
|
138
|
+
* Colors.next("blue") // undefined (no next value)
|
|
139
|
+
*/
|
|
23
140
|
next(s: Nullable<string>): Maybe<T>;
|
|
24
141
|
/**
|
|
25
|
-
*
|
|
142
|
+
* Create a new StrEnum with the values in reverse order.
|
|
26
143
|
*
|
|
27
144
|
* (This follows the new "toReversed" ES2023 naming convention for methods that return a new object)
|
|
145
|
+
* @returns New StrEnum with values in reverse declaration order
|
|
146
|
+
* @example
|
|
147
|
+
* const Colors = strEnum("red", "green", "blue");
|
|
148
|
+
* const Reversed = Colors.toReversed();
|
|
149
|
+
* Reversed.values // ["blue", "green", "red"]
|
|
28
150
|
*/
|
|
29
151
|
toReversed(): StrEnum<T>;
|
|
152
|
+
/**
|
|
153
|
+
* Makes the StrEnum iterable, allowing use in for...of loops and array destructuring.
|
|
154
|
+
* @returns Iterator that yields enum values in declaration order
|
|
155
|
+
* @example
|
|
156
|
+
* const Colors = strEnum("red", "green", "blue");
|
|
157
|
+
* for (const color of Colors) {
|
|
158
|
+
* console.log(color); // "red", "green", "blue"
|
|
159
|
+
* }
|
|
160
|
+
* const [first, second] = Colors; // first="red", second="green"
|
|
161
|
+
*/
|
|
162
|
+
[Symbol.iterator](): IterableIterator<T>;
|
|
163
|
+
/**
|
|
164
|
+
* String tag used by Object.prototype.toString() for better debugging.
|
|
165
|
+
* @example
|
|
166
|
+
* const Colors = strEnum("red", "green", "blue");
|
|
167
|
+
* Object.prototype.toString.call(Colors) // "[object StrEnum]"
|
|
168
|
+
*/
|
|
169
|
+
[Symbol.toStringTag]: "StrEnum";
|
|
30
170
|
};
|
|
31
171
|
export type StrEnum<T extends string> = StrEnumType<T> & StrEnumHelpers<T>;
|
|
32
172
|
export type StrEnumKeys<Type> = Type extends StrEnum<infer X> ? X : never;
|
package/dist/StrEnum.js
CHANGED
|
@@ -2,16 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Directions = void 0;
|
|
4
4
|
exports.strEnum = strEnum;
|
|
5
|
-
const Array_1 = require("./Array");
|
|
6
|
-
const Object_1 = require("./Object");
|
|
7
5
|
function lessThan(a, b) {
|
|
8
6
|
return a == null || b == null ? false : a < b;
|
|
9
7
|
}
|
|
10
8
|
function strEnum(...o) {
|
|
11
|
-
const values = Object.freeze(
|
|
9
|
+
const values = Object.freeze([...new Set(o)]);
|
|
12
10
|
// toLowerCase() is safe because we know all strEnum values are latin ASCII:
|
|
13
11
|
const lcToValue = new Map(values.map((ea) => [ea.toLowerCase(), ea]));
|
|
14
|
-
const valueToIndex =
|
|
12
|
+
const valueToIndex = Object.fromEntries(values.map((ea, idx) => [ea, idx]));
|
|
15
13
|
const dict = {};
|
|
16
14
|
for (const ea of values) {
|
|
17
15
|
dict[ea] = ea;
|
|
@@ -68,6 +66,8 @@ function strEnum(...o) {
|
|
|
68
66
|
lt,
|
|
69
67
|
next,
|
|
70
68
|
toReversed,
|
|
69
|
+
[Symbol.iterator]: () => values[Symbol.iterator](),
|
|
70
|
+
[Symbol.toStringTag]: "StrEnum",
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
73
|
// Example usage:
|
package/dist/StrEnum.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StrEnum.js","sourceRoot":"","sources":["../src/StrEnum.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"StrEnum.js","sourceRoot":"","sources":["../src/StrEnum.ts"],"names":[],"mappings":"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"}
|