324 lines
11 KiB
Markdown
324 lines
11 KiB
Markdown
|
# Changelog
|
||
|
|
||
|
## [Unreleased]
|
||
|
|
||
|
## [7.1.3]
|
||
|
|
||
|
### Fixed
|
||
|
- `UrlFetcher` in Node.js can now handle redirects.
|
||
|
- added missing `multiSegment` in .d.ts file.
|
||
|
|
||
|
## [7.1.2]
|
||
|
|
||
|
### Fixed
|
||
|
- Issue #67 -> improved IPTC parsing performance.
|
||
|
|
||
|
## [7.1.0]
|
||
|
|
||
|
### Added
|
||
|
- Sidecar support through `exifr.sidecar()`.
|
||
|
- Support for url query strings and headers in Node.js polyfill of UrlFetcher.
|
||
|
|
||
|
## [7.0.0]
|
||
|
|
||
|
### Added
|
||
|
- `UrlFetcher` now works in Node.js too. i.e. You can use `string` URL as `file` argument in Node.js (previously only available in browser). Exifr now implements polyfill for `window.fetch()`. But it's only available in `full` bundle.
|
||
|
|
||
|
### Fixed
|
||
|
- Issue #59 regarding `mwg-rs:Regions`.
|
||
|
- Problems with parsing absolute paths in Electron, NW.JS and other Node/browser hybrid environments. (*Node's `fs` now takes precedence over brower's `fetch` when parsing absolute path argument*)
|
||
|
|
||
|
### Breaking changes
|
||
|
- Slight changes to XMP parsing logic. Only affects obscure cases with lists and nested `rdf:Description`. Won't affect most of the basic use cases.
|
||
|
|
||
|
## [6.3.0]
|
||
|
|
||
|
### Added
|
||
|
|
||
|
- **AVIF SUPPORT**
|
||
|
|
||
|
## [6.2.0]
|
||
|
|
||
|
### Added
|
||
|
|
||
|
- **EXIF** segment (and thus GPS) extraction from **PNG files**. Only parses the modern `eXIf` chunks and not `zTXt`
|
||
|
- IIQ file support
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
- `Invalid input argument for BufferView` bug when parsing XMP from TIFF file if the XMP IFD0 tag was of type string (2) instead of byte array (1)
|
||
|
- `Closing file descriptor N on garbage collection` when reading unknown format.
|
||
|
|
||
|
## [6.1.1]
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
- Encoding in IPTC (issue 47)
|
||
|
|
||
|
## [6.1.0]
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
- d.ts: typo; additional type for `exifr.rotation()`
|
||
|
- `exifr.rotation()` works correctly on latest macos safari.
|
||
|
|
||
|
## [6.0.0]
|
||
|
|
||
|
### Added
|
||
|
|
||
|
- **PNG SUPPORT** (and IHDR segment parser which implements the PNG header structure)
|
||
|
- IHDR dictionary
|
||
|
- JFIF dictionary - the keys are now in configurable dictionary instead of hardcoded into a parser.
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
- Orientation bug related to ios and webview (PR 42)
|
||
|
- Reading APP13 Segment not containing IPTC
|
||
|
- Unwrapping value of ExifImageHeight ExifImageWidth in case it is in typed array
|
||
|
|
||
|
## [5.0.6]
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
- Chunked reading of heic file, related to Issue 35
|
||
|
|
||
|
## [5.0.5]
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
- Nothing new. Re-release of 5.0.4 which was accidentally released with code from 5.0.3.
|
||
|
|
||
|
## [5.0.4]
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
- Issue 35 - reading heic file if mdat box preceded meta.
|
||
|
- autorotation detection in firefox 77
|
||
|
|
||
|
## [5.0.3]
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
- Bug: Reading photo in chunked mode where segment header is split between chunks.
|
||
|
- Bug: ICC Text fields (of type 'text') are no longer missing last few characters.
|
||
|
- Bug: IPTC out of range error.
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
- Initial work on reducing the library's filesize
|
||
|
- Slightly improved IPTC performance.
|
||
|
|
||
|
## [5.0.2]
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
- Updated `exifr.rotation()` with Chrome 81' new autorotation behavior. Applies to all Chromium browsers (like the new Edge).
|
||
|
|
||
|
## [5.0.1]
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
- `"main"` field in package.json now points to `./dist/full.umd.js` instead of `./dist/full.umd.cjs`.
|
||
|
|
||
|
## [5.0.0]
|
||
|
|
||
|
### Changed
|
||
|
- package.json no longer includes `"type": "module"` for now. Tools don't support it yet and `"main"` field was already pointing to UMD (CJS). Source codes were using `.mjs` extension for a while so nothing should break, but it's a major release just in case.
|
||
|
|
||
|
### Added
|
||
|
- `exifr.rotation()`
|
||
|
|
||
|
## [4.3.x]
|
||
|
|
||
|
### Fixed
|
||
|
- `orientation()` in mini bundle (possibly more mini-bundle related bugs)
|
||
|
- bug: **Critical dependency: require function** related to bundling UMD with webpack
|
||
|
- d.ts types
|
||
|
- IE10 DataView related bug
|
||
|
|
||
|
### Added
|
||
|
- `.cjs` copy of all `legacy` builds in dist/.
|
||
|
|
||
|
## [4.3.0]
|
||
|
|
||
|
Quality-Of-Life release. Improves compatibility and ease of use with various tools and environments.
|
||
|
|
||
|
### Changed
|
||
|
- all ESM bundles are now available in two identical copies with different file extensions. `.mjs` and `.js` for ESM, `.cjs` and `.js` for UMD. Just pick one that works with your tooling or environment.
|
||
|
- Backtracking on using only `"type":"module"` in package.json as the only way to define the module as ESM.
|
||
|
- package.json's `"main"` points to UMD bundle `full.esm.mjs` instead of UMD `full.umd.js`.
|
||
|
- Added default export which wraps all named exports into single object.
|
||
|
|
||
|
## [4.2.0]
|
||
|
|
||
|
### Changed
|
||
|
- Simplified and improved implementation of `thumbnail()` and `thumbnailUrl()`.
|
||
|
- Improved typescript types. Added `HTMLImageElement` to `input`.
|
||
|
|
||
|
## [4.1.0]
|
||
|
|
||
|
### Added
|
||
|
- Support for IE10
|
||
|
|
||
|
### Breaking changes (for IE / `legacy` bundle)
|
||
|
- No need to use these polyfills anymore: `TextDecoder`, `Object.assign`, `Object.keys`, `Object.values`, `Object.fromEntries`, `Array.from`, `Array.prototype.includes`, `fetch`, `Map`, `Set`.
|
||
|
- `Promise` polyfill is needed now instead of `regeneratorRuntime`
|
||
|
|
||
|
## [4.0.0]
|
||
|
|
||
|
### Added
|
||
|
- XMP XML Parser
|
||
|
- XMP Extended support. To extract all XMP segments, set `options.multiSegment` or `options.xmp.multiSegment` to true.
|
||
|
|
||
|
### Changed
|
||
|
- `output.xmp` is no longer where the XMP segment data are stored. XMP tags are parsed, grouped by namespace and each namespace is assigned directly to `output` object, like `output.xmlns`, `output.GPano`, `output.crs` and more. This can be disabled by setting `options.xmp.parse: false`
|
||
|
|
||
|
### Fixed
|
||
|
- `window.BigInt` bug in webworker
|
||
|
|
||
|
## [3.0.1]
|
||
|
|
||
|
### Fixed
|
||
|
- Fixed types in d.ts (`String` -> `string`, `Number` -> `number`).
|
||
|
|
||
|
## [3.0.0]
|
||
|
|
||
|
### Breaking changes
|
||
|
#### Exports
|
||
|
- renamed `ExifParser` class to `Exifr`.
|
||
|
- renamed `thumbnailBuffer()` function to `thumbnail()`. It now also returns `Uint8Array` instead of `ArrayBuffer` in browser. Node.js version keeps returning `Buffer`.
|
||
|
|
||
|
#### Output format
|
||
|
- Renamed `options.image` block to `options.ifd0`.
|
||
|
- Renamed `options.thumbnail` block to `options.ifd1`.
|
||
|
- renamed & simplified behavior of `seekChunkSize` and `parseChunkSize`. See `firstChunkSize`, `firstChunkSizeBrowser`, `firstChunkSizeNode`.
|
||
|
- Changed EXIF & IPTC tag dictionary to match [ExifTool](https://exiftool.org/TagNames/EXIF.html). Most tag names remain the same. Some might be changed slightly. You can check out the `src/dicts/*` files for reference. For example: before `{ExposureBiasValue: 0}`, after `{ExposureCompensation: 0}`; before `{WhiteBalance: 'Auto white balance'}`, after `{WhiteBalance: 'Auto'}`
|
||
|
|
||
|
#### Options
|
||
|
- Renamed `output.image` block to `output.ifd0`.
|
||
|
- Renamed `output.thumbnail` block to `output.ifd1`.
|
||
|
- removed `postProcess` property and split its behavior to new properties `sanitize`, `translateKeys`, `translateValues` and `reviveValues`.
|
||
|
- Changed behavior of `options.wholeFile` and renamed to `options.chunked`
|
||
|
|
||
|
#### library bundles
|
||
|
- The library now comes in multiple bundles, with varying number of parsers & tag dictonaries. `lite` bundle is now **recommend as the default for browser** use because of its small footprint.
|
||
|
- Broken down parsers and tag dictionaries into multiple files. No all of them are included in `lite` or `mini` builds.
|
||
|
- `package.json` defined module as `"type": "module"`. All `.js` files are treated as ES Modules by Node.js.
|
||
|
|
||
|
### Added
|
||
|
- ICC Parser
|
||
|
- Older browsers support
|
||
|
- multiple new output builds (so users can prevent importing unused code)
|
||
|
- tags filtering (`pick`/`skip` options)
|
||
|
- `exifr.gps()`
|
||
|
|
||
|
### Changed
|
||
|
- major rewrite of a whole input reader pipeline
|
||
|
- implemented `BufferView` wrapper class for all forms of binary data.
|
||
|
- reimplemented chunked reader
|
||
|
- major rewrite of a whole parser pipeline
|
||
|
- broken the code into separate parser classes & files (TIFF, XMP, IPTC, ICC)
|
||
|
- TIFF is no longer the main parser
|
||
|
- All APP segments are now first searched in the file and then parsed
|
||
|
- implemented base parser class than can be used to implement custom APP-segment parsers by user
|
||
|
- exposed segment parsers
|
||
|
- rewrote readme
|
||
|
|
||
|
## [2.1.4] - 2019-11-10
|
||
|
|
||
|
### Changed
|
||
|
- udpated dependencies
|
||
|
- tweaked demo page
|
||
|
|
||
|
## [2.1.3] - 2019-11-10
|
||
|
|
||
|
### Added
|
||
|
- code coverage
|
||
|
|
||
|
## [2.1.2] - 2019-11-09
|
||
|
|
||
|
### Changed
|
||
|
- added project logo
|
||
|
- tweaked demo page UI
|
||
|
- moved demo page to custom domain mutiny.cz & changed links to reflect that
|
||
|
|
||
|
## [2.1.1] - 2019-09-18
|
||
|
|
||
|
### Added
|
||
|
- tests for IPTC
|
||
|
- magic comments for webpack
|
||
|
|
||
|
### Changed
|
||
|
- normalized old tests
|
||
|
|
||
|
## [2.1.0] - 2019-09-12
|
||
|
|
||
|
### Added
|
||
|
- tests for webworker
|
||
|
|
||
|
### Fixed
|
||
|
- webworker bug
|
||
|
- removed dependency on Nodes fs module
|
||
|
- various bugfixes
|
||
|
|
||
|
## [2.0.0] - 2019-07-05
|
||
|
|
||
|
### Breaking changes
|
||
|
- default export is not longer `getExif()` function. It's available as named export `parse()`along few new ones.
|
||
|
|
||
|
### Added
|
||
|
- thumbnail extraction
|
||
|
- better docs and readme
|
||
|
|
||
|
### Fixed
|
||
|
- `*.tif` and `*.tiff` file support (raw TIFF segments not wrapped in jpg APPn segments)
|
||
|
- many bugfixes, typos, stability improvements
|
||
|
|
||
|
## [1.2.0] - 2019-04-27
|
||
|
|
||
|
### Fixed
|
||
|
- issue #1
|
||
|
|
||
|
## [1.1.0] - 2018-09-29
|
||
|
|
||
|
### Added
|
||
|
- AMD module support
|
||
|
|
||
|
## [1.0.0] - 2018-08-01
|
||
|
|
||
|
### Added
|
||
|
- initial implementation
|
||
|
|
||
|
[Unreleased]: https://github.com/MikeKovarik/exifr/compare/7.1.3...HEAD
|
||
|
[7.1.3]: https://github.com/MikeKovarik/exifr/compare/v7.1.2...v7.1.3
|
||
|
[7.1.2]: https://github.com/MikeKovarik/exifr/compare/v7.1.0...v7.1.2
|
||
|
[7.1.0]: https://github.com/MikeKovarik/exifr/compare/v7.0.0...v7.1.0
|
||
|
[7.0.0]: https://github.com/MikeKovarik/exifr/compare/v6.3.0...v7.0.0
|
||
|
[6.3.0]: https://github.com/MikeKovarik/exifr/compare/v6.2.0...v6.3.0
|
||
|
[6.2.0]: https://github.com/MikeKovarik/exifr/compare/v6.1.1...v6.2.0
|
||
|
[6.1.1]: https://github.com/MikeKovarik/exifr/compare/v6.1.0...v6.1.1
|
||
|
[6.1.0]: https://github.com/MikeKovarik/exifr/compare/v6.0.0...v6.1.0
|
||
|
[6.0.0]: https://github.com/MikeKovarik/exifr/compare/v5.0.6...v6.0.0
|
||
|
[5.0.6]: https://github.com/MikeKovarik/exifr/compare/v5.0.5...v5.0.6
|
||
|
[5.0.5]: https://github.com/MikeKovarik/exifr/compare/v5.0.4...v5.0.5
|
||
|
[5.0.4]: https://github.com/MikeKovarik/exifr/compare/v5.0.3...v5.0.4
|
||
|
[5.0.3]: https://github.com/MikeKovarik/exifr/compare/v5.0.2...v5.0.3
|
||
|
[5.0.2]: https://github.com/MikeKovarik/exifr/compare/v5.0.1...v5.0.2
|
||
|
[5.0.1]: https://github.com/MikeKovarik/exifr/compare/v5.0.0...v5.0.1
|
||
|
[5.0.0]: https://github.com/MikeKovarik/exifr/compare/v4.3.3...v5.0.0
|
||
|
[4.3.x]: https://github.com/MikeKovarik/exifr/compare/v4.3.0...v4.3.3
|
||
|
[4.3.0]: https://github.com/MikeKovarik/exifr/compare/v4.2.0...v4.3.0
|
||
|
[4.2.0]: https://github.com/MikeKovarik/exifr/compare/v4.1.0...v4.2.0
|
||
|
[4.1.0]: https://github.com/MikeKovarik/exifr/compare/v4.0.0...v4.1.0
|
||
|
[4.0.0]: https://github.com/MikeKovarik/exifr/compare/v3.0.1...v4.0.0
|
||
|
[3.0.1]: https://github.com/MikeKovarik/exifr/compare/v3.0.0...v3.0.1
|
||
|
[3.0.0]: https://github.com/MikeKovarik/exifr/compare/v2.1.4...v3.0.0
|
||
|
[2.1.4]: https://github.com/MikeKovarik/exifr/compare/v2.1.3...v2.1.4
|
||
|
[2.1.3]: https://github.com/MikeKovarik/exifr/compare/v2.1.2...v2.1.3
|
||
|
[2.1.2]: https://github.com/MikeKovarik/exifr/compare/v2.1.1...v2.1.2
|
||
|
[2.1.1]: https://github.com/MikeKovarik/exifr/compare/v2.1.0...v2.1.1
|
||
|
[2.1.0]: https://github.com/MikeKovarik/exifr/compare/v2.0.0...v2.1.0
|
||
|
[2.0.0]: https://github.com/MikeKovarik/exifr/compare/v1.2.0...v2.0.0
|
||
|
[1.2.0]: https://github.com/MikeKovarik/exifr/compare/v1.1.0...v1.2.0
|
||
|
[1.1.0]: https://github.com/MikeKovarik/exifr/compare/v1.0.0...v1.1.0
|
||
|
[1.0.0]: https://github.com/MikeKovarik/exifr/releases/tag/v1.0.0
|