exiftool-vendored 28.8.0 → 29.1.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 +40 -4
- package/README.md +22 -22
- package/SECURITY.md +1 -2
- package/dist/Array.d.ts +4 -4
- package/dist/Array.js +8 -10
- package/dist/Array.js.map +1 -1
- package/dist/AsyncRetry.js.map +1 -1
- package/dist/BinaryExtractionTask.d.ts +4 -2
- package/dist/BinaryExtractionTask.js +8 -5
- package/dist/BinaryExtractionTask.js.map +1 -1
- package/dist/BinaryField.js +2 -0
- package/dist/BinaryField.js.map +1 -1
- package/dist/BinaryToBufferTask.js +5 -5
- package/dist/BinaryToBufferTask.js.map +1 -1
- package/dist/Boolean.d.ts +1 -1
- package/dist/Boolean.js.map +1 -1
- package/dist/CapturedAtTagNames.js.map +1 -1
- package/dist/CoordinateParser.d.ts +59 -0
- package/dist/CoordinateParser.js +286 -0
- package/dist/CoordinateParser.js.map +1 -0
- package/dist/DateTime.d.ts +1 -1
- package/dist/DateTime.js +4 -5
- package/dist/DateTime.js.map +1 -1
- package/dist/DefaultCreateDateTagNames.js.map +1 -1
- package/dist/DefaultExifToolOptions.js +20 -7
- package/dist/DefaultExifToolOptions.js.map +1 -1
- package/dist/DefaultExiftoolArgs.js.map +1 -1
- package/dist/DefaultMaxProcs.js +17 -7
- package/dist/DefaultMaxProcs.js.map +1 -1
- package/dist/DeleteAllTagsArgs.js.map +1 -1
- package/dist/ErrorsAndWarnings.d.ts +5 -1
- package/dist/ErrorsAndWarnings.js +11 -2
- package/dist/ErrorsAndWarnings.js.map +1 -1
- package/dist/ExifDate.js +7 -2
- package/dist/ExifDate.js.map +1 -1
- package/dist/ExifDateTime.d.ts +2 -2
- package/dist/ExifDateTime.js +63 -67
- package/dist/ExifDateTime.js.map +1 -1
- package/dist/ExifTime.js +19 -26
- package/dist/ExifTime.js.map +1 -1
- package/dist/ExifTool.d.ts +28 -24
- package/dist/ExifTool.js +97 -81
- package/dist/ExifTool.js.map +1 -1
- package/dist/ExifToolOptions.d.ts +8 -0
- package/dist/ExifToolOptions.js.map +1 -1
- package/dist/ExifToolTags.js +0 -1
- package/dist/ExifToolTags.js.map +1 -1
- package/dist/ExifToolTask.js +38 -33
- package/dist/ExifToolTask.js.map +1 -1
- package/dist/ExifToolVendoredTags.js.map +1 -1
- package/dist/ExiftoolPath.js +27 -12
- package/dist/ExiftoolPath.js.map +1 -1
- package/dist/File.d.ts +2 -0
- package/dist/File.js +16 -1
- package/dist/File.js.map +1 -1
- package/dist/FileTags.d.ts +3 -2
- package/dist/FileTags.js +3 -2
- package/dist/FileTags.js.map +1 -1
- package/dist/FilenameCharsetArgs.js.map +1 -1
- package/dist/FirstDateTime.js +1 -1
- package/dist/FirstDateTime.js.map +1 -1
- package/dist/GPS.d.ts +18 -0
- package/dist/GPS.js +116 -0
- package/dist/GPS.js.map +1 -0
- package/dist/GeoTz.js.map +1 -1
- package/dist/GeolocationTags.d.ts +1 -1
- package/dist/GeolocationTags.js +16 -14
- package/dist/GeolocationTags.js.map +1 -1
- package/dist/IsWarning.js.map +1 -1
- package/dist/IsWin32.js +17 -7
- package/dist/IsWin32.js.map +1 -1
- package/dist/JSON.js +4 -1
- package/dist/JSON.js.map +1 -1
- package/dist/Lazy.js +2 -1
- package/dist/Lazy.js.map +1 -1
- package/dist/Maybe.js.map +1 -1
- package/dist/Number.d.ts +18 -3
- package/dist/Number.js +36 -1
- package/dist/Number.js.map +1 -1
- package/dist/Object.d.ts +4 -4
- package/dist/Object.js +8 -8
- package/dist/Object.js.map +1 -1
- package/dist/OnlyZerosRE.js.map +1 -1
- package/dist/Pick.js.map +1 -1
- package/dist/ReadRawTask.js +20 -8
- package/dist/ReadRawTask.js.map +1 -1
- package/dist/ReadTask.d.ts +1 -1
- package/dist/ReadTask.js +233 -264
- package/dist/ReadTask.js.map +1 -1
- package/dist/ResourceEvent.d.ts +1 -1
- package/dist/ResourceEvent.js +1 -1
- package/dist/ResourceEvent.js.map +1 -1
- package/dist/RewriteAllTagsTask.js +19 -9
- package/dist/RewriteAllTagsTask.js.map +1 -1
- package/dist/Sidecars.js.map +1 -1
- package/dist/String.d.ts +8 -4
- package/dist/String.js +7 -3
- package/dist/String.js.map +1 -1
- package/dist/Struct.d.ts +1 -1
- package/dist/Struct.js +1 -2
- package/dist/Struct.js.map +1 -1
- package/dist/Tags.d.ts +154 -152
- package/dist/TimeParsing.js +6 -8
- package/dist/TimeParsing.js.map +1 -1
- package/dist/Times.d.ts +6 -0
- package/dist/Times.js +7 -3
- package/dist/Times.js.map +1 -1
- package/dist/Timezones.d.ts +5 -4
- package/dist/Timezones.js +71 -41
- package/dist/Timezones.js.map +1 -1
- package/dist/Version.d.ts +1 -1
- package/dist/Version.js +1 -1
- package/dist/Version.js.map +1 -1
- package/dist/VersionTask.js +1 -1
- package/dist/VersionTask.js.map +1 -1
- package/dist/Which.js.map +1 -1
- package/dist/WriteTags.d.ts +6 -1
- package/dist/WriteTask.js +71 -25
- package/dist/WriteTask.js.map +1 -1
- package/eslint.config.mjs +34 -0
- package/package.json +21 -19
package/dist/ExifTool.js
CHANGED
|
@@ -15,22 +15,26 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
30
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
31
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
32
37
|
};
|
|
33
|
-
var _ExifTool_taskOptions, _ExifTool_checkForPerl;
|
|
34
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
39
|
exports.exiftool = exports.ExifTool = exports.DefaultWriteTaskOptions = exports.offsetMinutesToZoneName = exports.defaultVideosToUTC = exports.UnsetZoneOffsetMinutes = exports.UnsetZoneName = exports.UnsetZone = exports.TimezoneOffsetTagnames = exports.DefaultReadTaskOptions = exports.parseJSON = exports.isGeolocationTag = exports.exiftoolPath = exports.ExifToolTask = exports.ExifTime = exports.ExifDateTime = exports.ExifDate = exports.DefaultMaxProcs = exports.DefaultExiftoolArgs = exports.DefaultExifToolOptions = exports.CapturedAtTagNames = exports.BinaryField = void 0;
|
|
36
40
|
const bc = __importStar(require("batch-cluster"));
|
|
@@ -124,44 +128,9 @@ const whichPerl = (0, Lazy_1.lazy)(async () => {
|
|
|
124
128
|
* @see https://photostructure.github.io/exiftool-vendored.js/ for more documentation.
|
|
125
129
|
*/
|
|
126
130
|
class ExifTool {
|
|
131
|
+
options;
|
|
132
|
+
batchCluster;
|
|
127
133
|
constructor(options = {}) {
|
|
128
|
-
var _a;
|
|
129
|
-
this.exiftoolPath = (0, Lazy_1.lazy)(async () => {
|
|
130
|
-
var _a;
|
|
131
|
-
const o = this.options;
|
|
132
|
-
return ((_a = (await ((0, Object_1.isFunction)(o.exiftoolPath)
|
|
133
|
-
? o.exiftoolPath(this.options.logger())
|
|
134
|
-
: o.exiftoolPath))) !== null && _a !== void 0 ? _a : (0, ExiftoolPath_1.exiftoolPath)(this.options.logger()));
|
|
135
|
-
});
|
|
136
|
-
_ExifTool_taskOptions.set(this, (0, Lazy_1.lazy)(() => (0, Pick_1.pick)(this.options, "ignoreMinorErrors"))
|
|
137
|
-
/**
|
|
138
|
-
* Register life cycle event listeners. Delegates to BatchProcess.
|
|
139
|
-
*/
|
|
140
|
-
);
|
|
141
|
-
/**
|
|
142
|
-
* Register life cycle event listeners. Delegates to BatchProcess.
|
|
143
|
-
*/
|
|
144
|
-
this.on = (event, listener) => this.batchCluster.on(event, listener);
|
|
145
|
-
/**
|
|
146
|
-
* Unregister life cycle event listeners. Delegates to BatchProcess.
|
|
147
|
-
*/
|
|
148
|
-
this.off = (event, listener) => this.batchCluster.off(event, listener);
|
|
149
|
-
// calling whichPerl through this lazy() means we only do that task once per
|
|
150
|
-
// instance.
|
|
151
|
-
_ExifTool_checkForPerl.set(this, (0, Lazy_1.lazy)(async () => {
|
|
152
|
-
if (this.options.checkPerl) {
|
|
153
|
-
await whichPerl(); // < throws if perl is missing
|
|
154
|
-
}
|
|
155
|
-
})
|
|
156
|
-
/**
|
|
157
|
-
* Most users will not need to use `enqueueTask` directly. This method
|
|
158
|
-
* supports submitting custom `BatchCluster` tasks.
|
|
159
|
-
*
|
|
160
|
-
* @param task is a thunk to support retries by providing new instances on retries.
|
|
161
|
-
*
|
|
162
|
-
* @see BinaryExtractionTask for an example task implementation
|
|
163
|
-
*/
|
|
164
|
-
);
|
|
165
134
|
if (options != null && typeof options !== "object") {
|
|
166
135
|
throw new Error("Please update caller to the new ExifTool constructor API");
|
|
167
136
|
}
|
|
@@ -169,7 +138,7 @@ class ExifTool {
|
|
|
169
138
|
...DefaultExifToolOptions_1.DefaultExifToolOptions,
|
|
170
139
|
...options,
|
|
171
140
|
});
|
|
172
|
-
const ignoreShebang =
|
|
141
|
+
const ignoreShebang = o.ignoreShebang ?? _ignoreShebang();
|
|
173
142
|
const env = { ...o.exiftoolEnv, LANG: "C" };
|
|
174
143
|
if ((0, String_1.notBlank)(node_process_1.default.env.EXIFTOOL_HOME) && (0, String_1.blank)(env.EXIFTOOL_HOME)) {
|
|
175
144
|
env.EXIFTOOL_HOME = node_process_1.default.env.EXIFTOOL_HOME;
|
|
@@ -190,6 +159,23 @@ class ExifTool {
|
|
|
190
159
|
};
|
|
191
160
|
this.batchCluster = new bc.BatchCluster(this.options);
|
|
192
161
|
}
|
|
162
|
+
exiftoolPath = (0, Lazy_1.lazy)(async () => {
|
|
163
|
+
const o = await this.options.exiftoolPath;
|
|
164
|
+
if ((0, String_1.isString)(o) && (0, String_1.notBlank)(o))
|
|
165
|
+
return o;
|
|
166
|
+
if ((0, Object_1.isFunction)(o))
|
|
167
|
+
return o(this.options.logger());
|
|
168
|
+
return (0, ExiftoolPath_1.exiftoolPath)(this.options.logger());
|
|
169
|
+
});
|
|
170
|
+
#taskOptions = (0, Lazy_1.lazy)(() => (0, Pick_1.pick)(this.options, "ignoreMinorErrors"));
|
|
171
|
+
/**
|
|
172
|
+
* Register life cycle event listeners. Delegates to BatchProcess.
|
|
173
|
+
*/
|
|
174
|
+
on = (event, listener) => this.batchCluster.on(event, listener);
|
|
175
|
+
/**
|
|
176
|
+
* Unregister life cycle event listeners. Delegates to BatchProcess.
|
|
177
|
+
*/
|
|
178
|
+
off = (event, listener) => this.batchCluster.off(event, listener);
|
|
193
179
|
/**
|
|
194
180
|
* @return a promise holding the version number of the vendored ExifTool
|
|
195
181
|
*/
|
|
@@ -197,13 +183,12 @@ class ExifTool {
|
|
|
197
183
|
return this.enqueueTask(() => new VersionTask_1.VersionTask(this.options));
|
|
198
184
|
}
|
|
199
185
|
read(file, argsOrOptions, options) {
|
|
200
|
-
var _a, _b;
|
|
201
186
|
const opts = {
|
|
202
187
|
...(0, Pick_1.pick)(this.options, ...ReadTask_1.ReadTaskOptionFields),
|
|
203
188
|
...((0, Object_1.isObject)(argsOrOptions) ? argsOrOptions : options),
|
|
204
189
|
};
|
|
205
190
|
opts.readArgs =
|
|
206
|
-
(
|
|
191
|
+
(0, Array_1.ifArray)(argsOrOptions) ?? (0, Array_1.ifArray)(opts.readArgs) ?? this.options.readArgs;
|
|
207
192
|
return this.enqueueTask(() => ReadTask_1.ReadTask.for(file, opts)); // < no way to know at compile time if we're going to get back a T!
|
|
208
193
|
}
|
|
209
194
|
/**
|
|
@@ -232,16 +217,37 @@ class ExifTool {
|
|
|
232
217
|
* typing details.
|
|
233
218
|
*/
|
|
234
219
|
readRaw(file, args = []) {
|
|
235
|
-
return this.enqueueTask(() => ReadRawTask_1.ReadRawTask.for(file, args,
|
|
220
|
+
return this.enqueueTask(() => ReadRawTask_1.ReadRawTask.for(file, args, this.#taskOptions()));
|
|
236
221
|
}
|
|
222
|
+
/**
|
|
223
|
+
* Write the given `tags` to `file`.
|
|
224
|
+
*
|
|
225
|
+
* **NOTE: no input validation is done by this library.** ExifTool, however,
|
|
226
|
+
* is strict about tag names and values in the context of the format of file
|
|
227
|
+
* being written to.
|
|
228
|
+
*
|
|
229
|
+
* @param file an existing file to write `tags` to
|
|
230
|
+
*
|
|
231
|
+
* @param tags the tags to write to `file`.
|
|
232
|
+
*
|
|
233
|
+
* @param options overrides to the default ExifTool options provided to the
|
|
234
|
+
* ExifTool constructor.
|
|
235
|
+
*
|
|
236
|
+
* @returns Either the promise will be resolved if the tags are written to
|
|
237
|
+
* successfully, or the promise will be rejected if there are errors or
|
|
238
|
+
* warnings.
|
|
239
|
+
*
|
|
240
|
+
* @see https://exiftool.org/exiftool_pod.html#overwrite_original
|
|
241
|
+
*/
|
|
237
242
|
write(file, tags, writeArgsOrOptions, options) {
|
|
238
|
-
var _a, _b;
|
|
239
243
|
const opts = {
|
|
240
244
|
...(0, Pick_1.pick)(this.options, ...WriteTask_1.WriteTaskOptionFields),
|
|
241
245
|
...((0, Object_1.isObject)(writeArgsOrOptions) ? writeArgsOrOptions : options),
|
|
242
246
|
};
|
|
243
247
|
opts.writeArgs =
|
|
244
|
-
(
|
|
248
|
+
(0, Array_1.ifArray)(writeArgsOrOptions) ??
|
|
249
|
+
(0, Array_1.ifArray)(opts.writeArgs) ??
|
|
250
|
+
this.options.writeArgs;
|
|
245
251
|
// don't retry because writes might not be idempotent (e.g. incrementing
|
|
246
252
|
// timestamps by an hour)
|
|
247
253
|
const retriable = false;
|
|
@@ -259,34 +265,35 @@ class ExifTool {
|
|
|
259
265
|
* a list of metadata keys to **not** delete.
|
|
260
266
|
*/
|
|
261
267
|
deleteAllTags(file, opts) {
|
|
262
|
-
|
|
263
|
-
const
|
|
264
|
-
|
|
265
|
-
args.push(`-${ea}<${ea}`);
|
|
268
|
+
const writeArgs = [...DeleteAllTagsArgs_1.DeleteAllTagsArgs];
|
|
269
|
+
for (const ea of opts?.retain ?? []) {
|
|
270
|
+
writeArgs.push(`-${ea}<${ea}`);
|
|
266
271
|
}
|
|
267
|
-
return this.write(file, {},
|
|
272
|
+
return this.write(file, {}, { ...(0, Object_1.omit)(opts ?? {}, "retain"), writeArgs });
|
|
268
273
|
}
|
|
269
274
|
/**
|
|
270
|
-
* Extract the low-resolution thumbnail in `path/to/image.jpg`
|
|
271
|
-
*
|
|
275
|
+
* Extract the low-resolution thumbnail in `path/to/image.jpg` and write it to
|
|
276
|
+
* `path/to/thumbnail.jpg`.
|
|
272
277
|
*
|
|
273
278
|
* Note that these images can be less than .1 megapixels in size.
|
|
274
279
|
*
|
|
275
|
-
* @return a `Promise<void
|
|
276
|
-
*
|
|
280
|
+
* @return a `Promise<void>`
|
|
281
|
+
*
|
|
282
|
+
* @throws if the file could not be read or the output not written
|
|
277
283
|
*/
|
|
278
284
|
extractThumbnail(imageFile, thumbnailFile, opts) {
|
|
279
285
|
return this.extractBinaryTag("ThumbnailImage", imageFile, thumbnailFile, opts);
|
|
280
286
|
}
|
|
281
287
|
/**
|
|
282
|
-
* Extract the "preview" image in `path/to/image.jpg`
|
|
283
|
-
*
|
|
288
|
+
* Extract the "preview" image in `path/to/image.jpg` and write it to
|
|
289
|
+
* `path/to/preview.jpg`.
|
|
284
290
|
*
|
|
285
291
|
* The size of these images varies widely, and is present in dSLR images.
|
|
286
292
|
* Canon, Fuji, Olympus, and Sony use this tag.
|
|
287
293
|
*
|
|
288
|
-
* @return a `Promise<void
|
|
289
|
-
*
|
|
294
|
+
* @return a `Promise<void>`
|
|
295
|
+
*
|
|
296
|
+
* @throws if the file could not be read or the output not written
|
|
290
297
|
*/
|
|
291
298
|
extractPreview(imageFile, previewFile, opts) {
|
|
292
299
|
return this.extractBinaryTag("PreviewImage", imageFile, previewFile, opts);
|
|
@@ -298,8 +305,9 @@ class ExifTool {
|
|
|
298
305
|
* This size of these images varies widely, and is not present in all RAW
|
|
299
306
|
* images. Nikon and Panasonic use this tag.
|
|
300
307
|
*
|
|
301
|
-
* @return a `Promise<void
|
|
302
|
-
*
|
|
308
|
+
* @return a `Promise<void>`
|
|
309
|
+
*
|
|
310
|
+
* @throws if the file could not be read or the output not written.
|
|
303
311
|
*/
|
|
304
312
|
extractJpgFromRaw(imageFile, outputFile, opts) {
|
|
305
313
|
return this.extractBinaryTag("JpgFromRaw", imageFile, outputFile, opts);
|
|
@@ -309,14 +317,15 @@ class ExifTool {
|
|
|
309
317
|
* `path/to/image.jpg` and write it to `dest` (which cannot exist and whose
|
|
310
318
|
* directory must already exist).
|
|
311
319
|
*
|
|
312
|
-
* @return a `Promise<void
|
|
313
|
-
*
|
|
320
|
+
* @return a `Promise<void>`
|
|
321
|
+
*
|
|
322
|
+
* @throws if the binary output not be written to `dest`.
|
|
314
323
|
*/
|
|
315
324
|
async extractBinaryTag(tagname, src, dest, opts) {
|
|
316
325
|
// BinaryExtractionTask returns a stringified error if the output indicates
|
|
317
326
|
// the task should not be retried.
|
|
318
327
|
const maybeError = await this.enqueueTask(() => BinaryExtractionTask_1.BinaryExtractionTask.for(tagname, src, dest, {
|
|
319
|
-
...
|
|
328
|
+
...this.#taskOptions(),
|
|
320
329
|
...opts,
|
|
321
330
|
}));
|
|
322
331
|
if (maybeError != null) {
|
|
@@ -329,12 +338,13 @@ class ExifTool {
|
|
|
329
338
|
* a file, but if the payload associated to `tagname` is large, this can cause
|
|
330
339
|
* out-of-memory errors.
|
|
331
340
|
*
|
|
332
|
-
* @return a `Promise<Buffer
|
|
333
|
-
*
|
|
341
|
+
* @return a `Promise<Buffer>`
|
|
342
|
+
*
|
|
343
|
+
* @throws if the file or tag is missing.
|
|
334
344
|
*/
|
|
335
345
|
async extractBinaryTagToBuffer(tagname, imageFile, opts) {
|
|
336
346
|
const result = await this.enqueueTask(() => BinaryToBufferTask_1.BinaryToBufferTask.for(tagname, imageFile, {
|
|
337
|
-
...
|
|
347
|
+
...this.#taskOptions(),
|
|
338
348
|
...opts,
|
|
339
349
|
}));
|
|
340
350
|
if (Buffer.isBuffer(result)) {
|
|
@@ -363,12 +373,12 @@ class ExifTool {
|
|
|
363
373
|
* @param {boolean} opts.allowMakerNoteRepair if there are problems with MakerNote
|
|
364
374
|
* tags, allow ExifTool to apply heuristics to recover corrupt tags. See
|
|
365
375
|
* exiftool's `-F` flag.
|
|
366
|
-
* @return {Promise<void>} resolved
|
|
376
|
+
* @return {Promise<void>} resolved after the outputFile has been written.
|
|
367
377
|
*/
|
|
368
378
|
rewriteAllTags(inputFile, outputFile, opts) {
|
|
369
379
|
return this.enqueueTask(() => RewriteAllTagsTask_1.RewriteAllTagsTask.for(inputFile, outputFile, {
|
|
370
380
|
allowMakerNoteRepair: false,
|
|
371
|
-
...
|
|
381
|
+
...this.#taskOptions(),
|
|
372
382
|
...opts,
|
|
373
383
|
}));
|
|
374
384
|
}
|
|
@@ -388,6 +398,13 @@ class ExifTool {
|
|
|
388
398
|
get ended() {
|
|
389
399
|
return this.batchCluster.ended;
|
|
390
400
|
}
|
|
401
|
+
// calling whichPerl through this lazy() means we only do that task once per
|
|
402
|
+
// instance.
|
|
403
|
+
#checkForPerl = (0, Lazy_1.lazy)(async () => {
|
|
404
|
+
if (this.options.checkPerl) {
|
|
405
|
+
await whichPerl(); // < throws if perl is missing
|
|
406
|
+
}
|
|
407
|
+
});
|
|
391
408
|
/**
|
|
392
409
|
* Most users will not need to use `enqueueTask` directly. This method
|
|
393
410
|
* supports submitting custom `BatchCluster` tasks.
|
|
@@ -398,7 +415,7 @@ class ExifTool {
|
|
|
398
415
|
*/
|
|
399
416
|
enqueueTask(task, retriable = true) {
|
|
400
417
|
const f = async () => {
|
|
401
|
-
await
|
|
418
|
+
await this.#checkForPerl();
|
|
402
419
|
return this.batchCluster.enqueueTask(task());
|
|
403
420
|
};
|
|
404
421
|
return retriable ? (0, AsyncRetry_1.retryOnReject)(f, this.options.taskRetries) : f();
|
|
@@ -445,7 +462,6 @@ class ExifTool {
|
|
|
445
462
|
}
|
|
446
463
|
}
|
|
447
464
|
exports.ExifTool = ExifTool;
|
|
448
|
-
_ExifTool_taskOptions = new WeakMap(), _ExifTool_checkForPerl = new WeakMap();
|
|
449
465
|
/**
|
|
450
466
|
* Use this singleton rather than instantiating new {@link ExifTool} instances
|
|
451
467
|
* in order to leverage a single running ExifTool process.
|
package/dist/ExifTool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExifTool.js","sourceRoot":"","sources":["../src/ExifTool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExifTool.js","sourceRoot":"","sources":["../src/ExifTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -218,6 +218,14 @@ export interface ExifToolOptions extends bc.BatchClusterOptions, bc.BatchProcess
|
|
|
218
218
|
* This defaults to `true`, as ExifTool can be quite chatty.
|
|
219
219
|
*/
|
|
220
220
|
ignoreMinorErrors: boolean;
|
|
221
|
+
/**
|
|
222
|
+
* When writing an extracted tag to a file,
|
|
223
|
+
* this will overwrite an existing file instead of throwing an error.
|
|
224
|
+
* Enabling this option is equivalent to `-w!` in ExifTool.
|
|
225
|
+
*
|
|
226
|
+
* This defaults to `false`.
|
|
227
|
+
*/
|
|
228
|
+
forceWrite: boolean;
|
|
221
229
|
/**
|
|
222
230
|
* `ExifTool` has a shebang line that assumes a valid `perl` is installed at
|
|
223
231
|
* `/usr/bin/perl`.
|
|
@@ -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":";;AAiVA,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/ExifToolTags.js
CHANGED
package/dist/ExifToolTags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExifToolTags.js","sourceRoot":"","sources":["../src/ExifToolTags.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExifToolTags.js","sourceRoot":"","sources":["../src/ExifToolTags.ts"],"names":[],"mappings":";;;AAcA,sCAEC;AAhBD,qCAAkC;AAGrB,QAAA,gBAAgB,GAAG,IAAA,eAAM,EAAe;IACnD,eAAe,EAAE,IAAI;IACrB,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,IAAI;CACd,CAAC,CAAC;AAEH;;;GAGG;AACH,SAAgB,aAAa,CAAC,IAAY;IACxC,OAAO,wBAAgB,CAAC,QAAQ,CAAC,IAA0B,CAAC,CAAC;AAC/D,CAAC"}
|
package/dist/ExifToolTask.js
CHANGED
|
@@ -15,19 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
};
|
|
30
|
-
var
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
31
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
36
|
exports.ExifToolTask = void 0;
|
|
33
37
|
const bc = __importStar(require("batch-cluster"));
|
|
@@ -35,21 +39,22 @@ const IsWarning_1 = require("./IsWarning");
|
|
|
35
39
|
const String_1 = require("./String");
|
|
36
40
|
const BadPerlInstallationRE = /Can't locate \S+ in @INC/i;
|
|
37
41
|
class ExifToolTask extends bc.Task {
|
|
42
|
+
args;
|
|
43
|
+
options;
|
|
38
44
|
static renderCommand(args, options) {
|
|
39
45
|
const result = args.filter((ea) => !(0, String_1.blank)(ea));
|
|
40
|
-
if (
|
|
46
|
+
if (options?.ignoreMinorErrors === true) {
|
|
41
47
|
result.push("-ignoreMinorErrors");
|
|
42
48
|
}
|
|
43
49
|
result.push("-execute");
|
|
44
50
|
return result.join("\n") + "\n";
|
|
45
51
|
}
|
|
52
|
+
errors = [];
|
|
53
|
+
warnings = [];
|
|
46
54
|
constructor(args, options) {
|
|
47
|
-
super(ExifToolTask.renderCommand(args, options), (stdout, stderr, passed) =>
|
|
48
|
-
_ExifToolTask_instances.add(this);
|
|
55
|
+
super(ExifToolTask.renderCommand(args, options), (stdout, stderr, passed) => this.#parser(stdout, stderr, passed));
|
|
49
56
|
this.args = args;
|
|
50
57
|
this.options = options;
|
|
51
|
-
this.errors = [];
|
|
52
|
-
this.warnings = [];
|
|
53
58
|
}
|
|
54
59
|
onStderr(buf) {
|
|
55
60
|
if (BadPerlInstallationRE.test(buf.toString())) {
|
|
@@ -61,22 +66,22 @@ class ExifToolTask extends bc.Task {
|
|
|
61
66
|
}
|
|
62
67
|
super.onStderr(buf);
|
|
63
68
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
error !== null && error !== void 0 ? error : (error = new Error(line.replace(/^error: /i, "")));
|
|
69
|
+
#parser(stdout, stderr, passed) {
|
|
70
|
+
let error;
|
|
71
|
+
if ((0, String_1.notBlank)(stderr) || !passed) {
|
|
72
|
+
for (const line of (0, String_1.splitLines)(stderr ?? "")) {
|
|
73
|
+
if ((0, IsWarning_1.isWarning)(line)) {
|
|
74
|
+
this.warnings.push(line);
|
|
75
|
+
}
|
|
76
|
+
else if (/error|warning/i.test(line)) {
|
|
77
|
+
this.errors.push(line);
|
|
78
|
+
// new Error() will add a "Error: " prefix:
|
|
79
|
+
error ??= new Error(line.replace(/^error: /i, ""));
|
|
80
|
+
}
|
|
77
81
|
}
|
|
78
82
|
}
|
|
83
|
+
return this.parse(stdout, error);
|
|
79
84
|
}
|
|
80
|
-
|
|
81
|
-
|
|
85
|
+
}
|
|
86
|
+
exports.ExifToolTask = ExifToolTask;
|
|
82
87
|
//# sourceMappingURL=ExifToolTask.js.map
|
package/dist/ExifToolTask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExifToolTask.js","sourceRoot":"","sources":["../src/ExifToolTask.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExifToolTask.js","sourceRoot":"","sources":["../src/ExifToolTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAoC;AAEpC,2CAAwC;AAExC,qCAAuD;AAEvD,MAAM,qBAAqB,GAAG,2BAA2B,CAAC;AAI1D,MAAsB,YAAgB,SAAQ,EAAE,CAAC,IAAO;IAc3C;IACA;IAdX,MAAM,CAAC,aAAa,CAAC,IAAc,EAAE,OAA6B;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,IAAI,OAAO,EAAE,iBAAiB,KAAK,IAAI,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAClC,CAAC;IAEQ,MAAM,GAAa,EAAE,CAAC;IACtB,QAAQ,GAAa,EAAE,CAAC;IAEjC,YACW,IAAc,EACd,OAA6B;QAEtC,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAC1E,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CACrC,CAAC;QALO,SAAI,GAAJ,IAAI,CAAU;QACd,YAAO,GAAP,OAAO,CAAsB;IAKxC,CAAC;IAEQ,QAAQ,CAAC,GAAoB;QACpC,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YAC/C,sEAAsE;YACtE,6BAA6B;YAC7B,wEAAwE;YACxE,WAAW;YACX,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,MAA0B,EAAE,MAAe;QACjE,IAAI,KAAmB,CAAC;QACxB,IAAI,IAAA,iBAAQ,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,KAAK,MAAM,IAAI,IAAI,IAAA,mBAAU,EAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC5C,IAAI,IAAA,qBAAS,EAAC,IAAI,CAAC,EAAE,CAAC;oBACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;qBAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACvB,2CAA2C;oBAC3C,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;CAGF;AAlDD,oCAkDC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExifToolVendoredTags.js","sourceRoot":"","sources":["../src/ExifToolVendoredTags.ts"],"names":[],"mappings":";;;AAgCA,sDAIC;AAnCD,
|
|
1
|
+
{"version":3,"file":"ExifToolVendoredTags.js","sourceRoot":"","sources":["../src/ExifToolVendoredTags.ts"],"names":[],"mappings":";;;AAgCA,sDAIC;AAnCD,qCAAkC;AAoBrB,QAAA,wBAAwB,GAAG,IAAA,eAAM,EAAuB;IACnE,EAAE,EAAE,IAAI;IACR,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC;AAEH;;;GAGG;AACH,SAAgB,qBAAqB,CACnC,IAAY;IAEZ,OAAO,gCAAwB,CAAC,QAAQ,CAAC,IAAkC,CAAC,CAAC;AAC/E,CAAC"}
|
package/dist/ExiftoolPath.js
CHANGED
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
36
|
exports.exiftoolPath = exiftoolPath;
|
|
27
37
|
const _fs = __importStar(require("node:fs"));
|
|
@@ -38,7 +48,7 @@ function tryRequire({ prefix = "", logger, } = {}) {
|
|
|
38
48
|
return require(id);
|
|
39
49
|
}
|
|
40
50
|
catch (error) {
|
|
41
|
-
logger
|
|
51
|
+
logger?.warn(id + "not found: ", error);
|
|
42
52
|
return;
|
|
43
53
|
}
|
|
44
54
|
}
|
|
@@ -72,7 +82,10 @@ async function exiftoolPath(logger) {
|
|
|
72
82
|
const path = tryRequire({ prefix: "", logger });
|
|
73
83
|
// This s/app.asar/app.asar.unpacked/ path switch adds support for Electron
|
|
74
84
|
// apps whose modules are ASAR-packed (like by electron-builder).
|
|
75
|
-
const asarUnpackedPath = path
|
|
85
|
+
const asarUnpackedPath = path
|
|
86
|
+
?.split(_path.sep)
|
|
87
|
+
.map((ea) => (ea === "app.asar" ? "app.asar.unpacked" : ea))
|
|
88
|
+
.join(_path.sep);
|
|
76
89
|
// NOTE: we must check for the fixedPath FIRST, because Electron's ASAR
|
|
77
90
|
// shenanigans will make existsSync return true for asar-packed resources
|
|
78
91
|
if (asarUnpackedPath != null && _fs.existsSync(asarUnpackedPath)) {
|
|
@@ -81,16 +94,18 @@ async function exiftoolPath(logger) {
|
|
|
81
94
|
if (path != null && _fs.existsSync(path)) {
|
|
82
95
|
return path;
|
|
83
96
|
}
|
|
84
|
-
logger
|
|
97
|
+
logger?.warn("Failed to find exiftool via " + vendorPackage());
|
|
85
98
|
// process.resourcesPath is set by electron-forge:
|
|
86
|
-
const electronResourcePath = process
|
|
99
|
+
const electronResourcePath = process
|
|
100
|
+
.resourcesPath;
|
|
87
101
|
if (electronResourcePath != null) {
|
|
88
102
|
const forgePath = _path.join(electronResourcePath, vendorPackage(), "bin", "exiftool" + ((0, IsWin32_1.isWin32)() ? ".exe" : ""));
|
|
89
103
|
if (_fs.existsSync(forgePath)) {
|
|
90
104
|
return forgePath;
|
|
91
105
|
}
|
|
92
106
|
else {
|
|
93
|
-
logger
|
|
107
|
+
logger?.warn("Failed to find exiftool in electron forge resources path: " +
|
|
108
|
+
forgePath);
|
|
94
109
|
}
|
|
95
110
|
}
|
|
96
111
|
// Last ditch: is there a globally installed exiftool in the PATH?
|
package/dist/ExiftoolPath.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExiftoolPath.js","sourceRoot":"","sources":["../src/ExiftoolPath.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExiftoolPath.js","sourceRoot":"","sources":["../src/ExiftoolPath.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDA,oCAkDC;AApGD,6CAA+B;AAC/B,iDAAmC;AACnC,uCAAoC;AAEpC,mCAAgC;AAEhC,SAAS,aAAa;IACpB,OAAO,oBAAoB,GAAG,CAAC,IAAA,iBAAO,GAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,UAAU,CAAC,EAClB,MAAM,GAAG,EAAE,EACX,MAAM,MACyC,EAAE;IACjD,MAAM,EAAE,GAAG,MAAM,GAAG,aAAa,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,iEAAiE;QACjE,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,aAAa,EAAE,KAAK,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACI,KAAK,UAAU,YAAY,CAAC,MAAe;IAChD,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAChD,2EAA2E;IAC3E,iEAAiE;IAEjE,MAAM,gBAAgB,GAAG,IAAI;QAC3B,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;SACjB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC3D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEnB,uEAAuE;IACvE,yEAAyE;IACzE,IAAI,gBAAgB,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjE,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,EAAE,IAAI,CAAC,8BAA8B,GAAG,aAAa,EAAE,CAAC,CAAC;IAE/D,kDAAkD;IAClD,MAAM,oBAAoB,GAAI,OAAsC;SACjE,aAAa,CAAC;IACjB,IAAI,oBAAoB,IAAI,IAAI,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAC1B,oBAAoB,EACpB,aAAa,EAAE,EACf,KAAK,EACL,UAAU,GAAG,CAAC,IAAA,iBAAO,GAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CACvC,CAAC;QACF,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,IAAI,CACV,4DAA4D;gBAC1D,SAAS,CACZ,CAAC;QACJ,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,MAAM,QAAQ,GAAG,MAAM,IAAA,aAAK,EAAC,UAAU,CAAC,CAAC;IACzC,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACrB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;AACJ,CAAC"}
|
package/dist/File.d.ts
CHANGED