exiftool-vendored
Advanced tools
Comparing version 1.2.0 to 1.3.0
"use strict"; | ||
const _dt = require('./datetime'); | ||
const chai_1 = require('chai'); | ||
const _dt = require("./datetime"); | ||
const chai_1 = require("chai"); | ||
const chai = require('chai'); | ||
@@ -5,0 +5,0 @@ const chaiAsPromised = require('chai-as-promised'); |
"use strict"; | ||
const cp = require('child_process'); | ||
const fs = require('fs'); | ||
const process = require('process'); | ||
const deferred_1 = require('./deferred'); | ||
const exiftool_1 = require('./exiftool'); | ||
const cp = require("child_process"); | ||
const fs = require("fs"); | ||
const process = require("process"); | ||
const deferred_1 = require("./deferred"); | ||
const exiftool_1 = require("./exiftool"); | ||
const isWin32 = process.platform === 'win32'; | ||
@@ -8,0 +8,0 @@ const exiftoolPath = require(`exiftool-vendored.${isWin32 ? 'exe' : 'pl'}`); |
"use strict"; | ||
const exiftool_process_1 = require('./exiftool_process'); | ||
const chai_1 = require('chai'); | ||
const exiftool_process_1 = require("./exiftool_process"); | ||
const chai_1 = require("chai"); | ||
const chai = require('chai'); | ||
@@ -5,0 +5,0 @@ const chaiAsPromised = require('chai-as-promised'); |
@@ -1,2 +0,1 @@ | ||
/// <reference types="node" /> | ||
import { Tags } from './tags'; | ||
@@ -3,0 +2,0 @@ import { Task } from './task'; |
"use strict"; | ||
const tags_task_1 = require('./tags_task'); | ||
const version_task_1 = require('./version_task'); | ||
const exiftool_process_1 = require('./exiftool_process'); | ||
var datetime_1 = require('./datetime'); | ||
const tags_task_1 = require("./tags_task"); | ||
const version_task_1 = require("./version_task"); | ||
const exiftool_process_1 = require("./exiftool_process"); | ||
var datetime_1 = require("./datetime"); | ||
exports.ExifDate = datetime_1.ExifDate; | ||
@@ -10,3 +10,3 @@ exports.ExifTime = datetime_1.ExifTime; | ||
exports.ExifTimeZoneOffset = datetime_1.ExifTimeZoneOffset; | ||
const process = require('process'); | ||
const process = require("process"); | ||
/** | ||
@@ -13,0 +13,0 @@ * Assign your custom logger to this instance. |
"use strict"; | ||
const exiftool_1 = require('./exiftool'); | ||
const chai_1 = require('chai'); | ||
const _path = require('path'); | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments)).next()); | ||
}); | ||
}; | ||
const exiftool_1 = require("./exiftool"); | ||
const chai_1 = require("chai"); | ||
const _path = require("path"); | ||
const chai = require('chai'); | ||
@@ -17,3 +25,3 @@ const chaiAsPromised = require('chai-as-promised'); | ||
it('returns the correct version', () => { | ||
return chai_1.expect(exiftool.version()).to.become('10.33'); | ||
return chai_1.expect(exiftool.version()).to.become('10.36'); | ||
}); | ||
@@ -56,2 +64,5 @@ it('returns expected results for a given file', () => { | ||
}); | ||
it('sets "Error" for unsupported file types', () => __awaiter(this, void 0, void 0, function* () { | ||
return chai_1.expect((yield exiftool.read(__filename)).Error).to.match(/Unknown file type/i); | ||
})); | ||
it('ends with multiple procs', () => { | ||
@@ -58,0 +69,0 @@ const promises = [exiftool.read(img), exiftool.read(img)]; |
"use strict"; | ||
const _dt = require('./datetime'); | ||
const task_1 = require('./task'); | ||
const _path = require('path'); | ||
const _dt = require("./datetime"); | ||
const task_1 = require("./task"); | ||
const _path = require("path"); | ||
class TagsTask extends task_1.Task { | ||
@@ -6,0 +6,0 @@ constructor(SourceFile, args) { |
"use strict"; | ||
const tags_task_1 = require('./tags_task'); | ||
const chai_1 = require('chai'); | ||
const tags_task_1 = require("./tags_task"); | ||
const chai_1 = require("chai"); | ||
const chai = require('chai'); | ||
@@ -5,0 +5,0 @@ const chaiAsPromised = require('chai-as-promised'); |
"use strict"; | ||
const deferred_1 = require('./deferred'); | ||
const deferred_1 = require("./deferred"); | ||
/** | ||
@@ -4,0 +4,0 @@ * Emodies both a command (`args`), and a handler for the resulting output |
"use strict"; | ||
const io_1 = require('./io'); | ||
const io_1 = require("./io"); | ||
/** | ||
@@ -4,0 +4,0 @@ * If the vendored ExifTool version is different from |
"use strict"; | ||
const checksums_1 = require('./checksums'); | ||
const io = require('./io'); | ||
const _path = require('path'); | ||
const _url = require('url'); | ||
const xmldom = require('xmldom'); | ||
const checksums_1 = require("./checksums"); | ||
const io = require("./io"); | ||
const _path = require("path"); | ||
const _url = require("url"); | ||
const xmldom = require("xmldom"); | ||
const xpath = require('xpath'); | ||
@@ -15,2 +15,3 @@ class Enclosure { | ||
} // tslint:disable-line | ||
// tslint:disable-line | ||
static parsedPath(url) { | ||
@@ -17,0 +18,0 @@ const parsedUrlPathname = _url.parse(url).pathname; |
"use strict"; | ||
const _fs = require('fs'); | ||
const _crypto = require('crypto'); | ||
const _zlib = require('zlib'); | ||
const rimraf = require('rimraf'); | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments)).next()); | ||
}); | ||
}; | ||
const _fs = require("fs"); | ||
const _crypto = require("crypto"); | ||
const _zlib = require("zlib"); | ||
const rimraf = require("rimraf"); | ||
const tar = require('tar-fs'); | ||
@@ -156,7 +164,8 @@ const https = require('https'); | ||
function editPackageJson(packageJson, f) { | ||
return readFile(packageJson) | ||
.then((json) => { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const json = yield readFile(packageJson); | ||
const pkg = JSON.parse(json); | ||
f(pkg); | ||
writeFile(packageJson, JSON.stringify(pkg, null, 2) + '\n'); | ||
yield writeFile(packageJson, JSON.stringify(pkg, null, 2) + '\n'); | ||
return undefined; | ||
}); | ||
@@ -163,0 +172,0 @@ } |
"use strict"; | ||
const datetime_1 = require('../datetime'); | ||
const exiftool_1 = require('../exiftool'); | ||
const tags_task_1 = require('../tags_task'); | ||
const exiftool_process_1 = require('../exiftool_process'); | ||
const process = require('process'); | ||
const _fs = require('fs'); | ||
const _path = require('path'); | ||
const datetime_1 = require("../datetime"); | ||
const exiftool_1 = require("../exiftool"); | ||
const tags_task_1 = require("../tags_task"); | ||
const exiftool_process_1 = require("../exiftool_process"); | ||
const process = require("process"); | ||
const _fs = require("fs"); | ||
const _path = require("path"); | ||
// ☠☠ THIS IS PRETTY GRISLY CODE. SCROLL DOWN AT YOUR OWN PERIL ☠☠ | ||
@@ -180,2 +180,4 @@ const globule = require('globule'); | ||
tagWriter.write(' errors: string[]\n'); | ||
tagWriter.write(' /** "Unknown file type" */\n'); | ||
tagWriter.write(' Error: string\n'); | ||
tagWriter.write(' SourceFile: string\n'); | ||
@@ -182,0 +184,0 @@ tagWriter.write('}\n'); |
"use strict"; | ||
const enclosure_1 = require('./enclosure'); | ||
const io = require('./io'); | ||
const _path = require('path'); | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments)).next()); | ||
}); | ||
}; | ||
const enclosure_1 = require("./enclosure"); | ||
const io = require("./io"); | ||
const _path = require("path"); | ||
const globule = require('globule'); | ||
@@ -15,3 +23,3 @@ class Update { | ||
verify() { | ||
return io.sha1(this.dlDest, this.enclosure.sha1); | ||
return io.sha1(this.dlDest, this.enclosure.sha1).then(() => undefined); | ||
} | ||
@@ -33,3 +41,3 @@ downloadMaybeAndVerify() { | ||
.then(() => this.unpack()) | ||
.then(() => io.updatePackageVersion(this.packageJson, this.version)); | ||
.then(() => io.updatePackageVersion(this.packageJson, this.version + '-pre')); | ||
} | ||
@@ -92,3 +100,4 @@ } | ||
function update() { | ||
return enclosure_1.Enclosure.get().then(encs => { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const encs = yield enclosure_1.Enclosure.get(); | ||
const tar = encs.find(enc => enc.path.ext === '.gz'); | ||
@@ -98,12 +107,9 @@ const zip = encs.find(enc => enc.path.ext === '.zip'); | ||
const dl = _path.join(__dirname, '..', '..', 'dl'); | ||
yield io.mkdir(dl, true); | ||
const tarUpdate = new TarUpdate(tar, dl); | ||
yield tarUpdate.update(); | ||
const zipUpdate = new ZipUpdate(zip, dl); | ||
const tarUpdate = new TarUpdate(tar, dl); | ||
return io.mkdir(dl, true) | ||
.then(() => Promise.all([ | ||
zipUpdate.update(), | ||
tarUpdate.update() | ||
])) | ||
.then(() => { | ||
updatePlatformDependentModules(tarUpdate.version, zipUpdate.version); | ||
}); | ||
yield zipUpdate.update(); | ||
yield updatePlatformDependentModules(tarUpdate.version, zipUpdate.version); | ||
console.log('👍 now run `git commit` and `np` in the .pl and .exe subdirectories.'); | ||
} | ||
@@ -110,0 +116,0 @@ else { |
"use strict"; | ||
const task_1 = require('./task'); | ||
const task_1 = require("./task"); | ||
class VersionTask extends task_1.Task { | ||
@@ -4,0 +4,0 @@ constructor() { |
{ | ||
"name": "exiftool-vendored", | ||
"version": "1.2.0", | ||
"version": "1.3.0", | ||
"description": "Efficient, cross-platform access to ExifTool", | ||
@@ -57,9 +57,9 @@ "main": "./lib/exiftool.js", | ||
"linux": [ | ||
"exiftool-vendored.pl@10.33.0" | ||
"exiftool-vendored.pl@10.36.0" | ||
], | ||
"darwin": [ | ||
"exiftool-vendored.pl@10.33.0" | ||
"exiftool-vendored.pl@10.36.0" | ||
], | ||
"win32": [ | ||
"exiftool-vendored.exe@10.33.0" | ||
"exiftool-vendored.exe@10.36.0" | ||
] | ||
@@ -70,7 +70,7 @@ } | ||
"@types/chai": "^3.4.34", | ||
"@types/chai-as-promised": "0.0.29", | ||
"@types/chai-as-promised": "^0.0.29", | ||
"@types/jsdom": "^2.0.29", | ||
"@types/mocha": "^2.2.33", | ||
"@types/node": "^6.0.48", | ||
"@types/rimraf": "0.0.28", | ||
"@types/rimraf": "^0.0.28", | ||
"@types/xmldom": "^0.1.28", | ||
@@ -81,18 +81,18 @@ "chai": "^3.5.0", | ||
"globule": "^1.1.0", | ||
"mocha": "^3.1.2", | ||
"mocha": "^3.2.0", | ||
"np": "^2.10.1", | ||
"npm-run-all": "^3.1.1", | ||
"npm-run-all": "^3.1.2", | ||
"rimraf": "^2.5.4", | ||
"tar-fs": "^1.14.0", | ||
"tslint": "^3.15.1", | ||
"tslint-config-standard": "^1.5.0", | ||
"tslint-eslint-rules": "^2.1.0", | ||
"typescript": "^2.0.10", | ||
"tslint": "^4.0.2", | ||
"tslint-config-standard": "^2.0.0", | ||
"tslint-eslint-rules": "^3.1.0", | ||
"typescript": "^2.1.4", | ||
"typescript-formatter": "^4.0.1", | ||
"xmldom": "^0.1.22", | ||
"xpath": "0.0.23" | ||
"xmldom": "^0.1.27", | ||
"xpath": "^0.0.23" | ||
}, | ||
"dependencies": { | ||
"platform-dependent-modules": "0.0.14" | ||
"platform-dependent-modules": "^0.0.14" | ||
} | ||
} |
@@ -103,16 +103,34 @@ # exiftool-vendored | ||
Given those constraints, version numbers follow the following scheme: | ||
Given those constraints, version numbers follow standard SemVer, with the following scheme: | ||
```sh | ||
$API.$UPDATE.$PATCH | ||
API.UPDATE.PATCH | ||
``` | ||
* Breaking API changes to this package will increment `API`. | ||
* Any bugfix or new release of ExifTool will increment `UPDATE`. | ||
* Metadata changes or trivial bugfixes will increment `PATCH`. | ||
### `API` is incremented for | ||
Note that the platform dependent modules use the ExifTool version with an optional patch release. | ||
* 💔 Non-backward-compatible API changes | ||
* 🌲 New releases of ExifTool that have externally visible changes | ||
### `UPDATE` is incremented for | ||
* 🌱 New releases of ExifTool with no externally visible changes | ||
* 🐛 Bugfixes | ||
* ✨ Backward-compatible features | ||
### `PATCH` is incremented for | ||
* 📦 Minor packaging changes | ||
* 🐞 Minor bugfixes | ||
## Changelog | ||
### v1.3.0 | ||
* 🌱 ExifTool upgraded to v10.36 | ||
* ✨ `Tag.Error` exposed for unsupported file types. | ||
### v1.2.0 | ||
* It was too easy to miss calling `ExifTool.end()`, which left child ExifTool processes running. | ||
* 🐛 It was too easy to miss calling `ExifTool.end()`, which left child ExifTool processes running. | ||
The constructor to ExifTool now adds a shutdown hook to send all child processes a shutdown signal. | ||
@@ -122,28 +140,28 @@ | ||
* Added `toString()` for all date/time types | ||
* ✨ Added `toString()` for all date/time types | ||
### v1.0.0 | ||
* Added typings reference in the package.json | ||
* Upgraded vendored exiftool to 10.33 | ||
* ✨ Added typings reference in the package.json | ||
* 🌱 Upgraded vendored exiftool to 10.33 | ||
### v0.4.0 | ||
* Fixed packaging (maintain jsdocs in .d.ts) | ||
* Using [np](https://www.npmjs.com/package/np) for packaging | ||
* 📦 Fixed packaging (maintain jsdocs in .d.ts and added typings reference) | ||
* 📦 Using [np](https://www.npmjs.com/package/np) for packaging | ||
### v0.3.0 | ||
* Multithreading support with the `maxProcs` ctor param | ||
* Added tests for reading images with truncated or missing EXIF headers | ||
* Added tests for timezone offset extraction and rendering | ||
* Subsecond resolution from the Google Pixel has 8 significant digits(!!), added support for that. | ||
* ✨ Multithreading support with the `maxProcs` ctor param | ||
* ✨ Added tests for reading images with truncated or missing EXIF headers | ||
* ✨ Added tests for timezone offset extraction and rendering | ||
* ✨ Subsecond resolution from the Google Pixel has 8 significant digits(!!), added support for that. | ||
### v0.2.0 | ||
* More rigorous TimeZone extraction from assets, and added the `ExifTimeZoneOffset` to handle the `TimeZone` composite tag | ||
* Added support for millisecond timestamps | ||
* ✨ More rigorous TimeZone extraction from assets, and added the `ExifTimeZoneOffset` to handle the `TimeZone` composite tag | ||
* ✨ Added support for millisecond timestamps | ||
### v0.1.1 | ||
Initial Release. Packages ExifTool v10.31. | ||
🌱✨ Initial Release. Packages ExifTool v10.31. |
Sorry, the diff of this file is too big to display
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
158206
4298
165