rangement/node_modules/exifr/CHANGELOG.md

324 lines
11 KiB
Markdown
Raw Normal View History

# 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