Skip to content

Latest commit

History

History
324 lines (224 loc) 路 10.9 KB

CHANGELOG.md

File metadata and controls

324 lines (224 loc) 路 10.9 KB

Changelog

Fixed

  • UrlFetcher in Node.js can now handle redirects.
  • added missing multiSegment in .d.ts file.

Fixed

  • Issue #67 -> improved IPTC parsing performance.

Added

  • Sidecar support through exifr.sidecar().
  • Support for url query strings and headers in Node.js polyfill of UrlFetcher.

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.

Added

  • AVIF SUPPORT

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.

Fixed

  • Encoding in IPTC (issue 47)

Fixed

  • d.ts: typo; additional type for exifr.rotation()
  • exifr.rotation() works correctly on latest macos safari.

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

Fixed

  • Chunked reading of heic file, related to Issue 35

Changed

  • Nothing new. Re-release of 5.0.4 which was accidentally released with code from 5.0.3.

Fixed

  • Issue 35 - reading heic file if mdat box preceded meta.
  • autorotation detection in firefox 77

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.

Fixed

  • Updated exifr.rotation() with Chrome 81' new autorotation behavior. Applies to all Chromium browsers (like the new Edge).

Changed

  • "main" field in package.json now points to ./dist/full.umd.js instead of ./dist/full.umd.cjs.

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()

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/.

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.

Changed

  • Simplified and improved implementation of thumbnail() and thumbnailUrl().
  • Improved typescript types. Added HTMLImageElement to input.

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

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

Fixed

  • Fixed types in d.ts (String -> string, Number -> number).

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. 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