This repository has been archived by the owner on Aug 12, 2022. It is now read-only.
Releases: readium/r2-shared-swift
Releases · readium/r2-shared-swift
2.2.0
Take a look at the migration guide
Added
- Support for Paragraph Margins user setting.
Fixed
- Improved performances of the search service used with EPUB.
2.1.0
Take a look at the migration guide
Added
- Support for Swift Package Manager (contributed by @stevenzeck).
- (alpha) A new Publication
SearchService
to search through the resources' content with a default implementationStringSearchService
. Link
objects from archive-based publication assets (e.g. an EPUB/ZIP) have additional properties for entry metadata."properties" { "archive": { "entryLength": 8273, "isEntryCompressed": true } }
- New
UserProperties.removeProperty(forReference:)
API to remove unwanted Readium CSS properties (contributed by @ettore).
2.0.1
2.0.0
Take a look at the migration guide
Deprecated
- All APIs deprecated in previous versions are now unavailable.
DownloadSession
is deprecated and will be removed in the next major version. Please migrate to your own download solution.
2.0.0-beta.2
Take a look at the migration guide
Added
PublicationServiceContext
now holds a weak reference to the parentPublication
. This can be used to access other services from a givenPublicationService
implementation.- The default
LocatorService
implementation can be used to get aLocator
from a global progression in the publication.publication.locate(progression: 0.5)
Changed
- The
Archive
API now supports resource ownership at the entry level.- The default ZIP implementation takes advantage of this by opening a new ZIP stream for each resource to be served. This improves performances and memory safety.
Fixed
- Improved performances when reading consecutive ranges of a deflated ZIP entry.
- HREF normalization when a resource path contains special characters.
2.0.0-beta.1
Take a look at the migration guide
Added
PublicationAsset
is a new protocol which can be used to open a publication from various medium, such as a file, a remote URL or a custom source.File
was replaced byFileAsset
, which implementsPublicationAsset
.
Changed
Format
got merged intoMediaType
, to simplify the media type APIs.- You can use
MediaType.of()
to sniff the type of a file or bytes. MediaType
has now optionalname
andfileExtension
properties.- Some publication formats can be represented by several media type aliases. Using
mediaType.canonicalized
will give you the canonical media type to use, for example when persisting the file type in a database. All Readium APIs are already returning canonical media types, so it only matters if you create aMediaType
yourself from its string representation.
- You can use
ContentLayout
is deprecated, usepublication.metadata.effectiveReadingProgression
to determine the reading progression of a publication instead.
2.0.0-alpha.2
Take a look at the migration guide
Added
- The Publication Services API allows to extend a
Publication
with custom implementations of known services. This version ships with a few predefined services:PositionsService
provides a list of discrete locations in the publication, no matter what the original format is.CoverService
provides an easy access to a bitmap version of the publication cover.
- The Composite Fetcher API can be used to extend the way publication resources are accessed.
- Support for exploded directories for any archive-based publication format.
- Content Protection handles DRM and other format-specific protections in a more systematic way.
- LCP now ships an
LCPContentProtection
implementation to be plugged into theStreamer
. - You can add custom
ContentProtection
implementations to support other DRMs by providing an instance to theStreamer
.
- LCP now ships an
- A new
LinkRelation
type to represent link relations, instead of using raw strings.- This will improve code safety through type checking and enable code completion.
- Since
LinkRelation
conforms toExpressibleByStringLiteral
, you can continue using raw strings in the API. However, migrating your code is recommended, e.g.links.first(withRel: .cover)
. - Known link relations (including from OPDS specifications) are available under the
LinkRelation
namespace. You can easily add custom relations to the namespace by declaringstatic
properties in aLinkRelation
extension.
Changed
- The
Publication
andContainer
types were merged together to offer a single interface to a publication's resources.- Use
publication.get()
to read the content of a resource, such as the cover. It will automatically be decrypted if aContentProtection
was attached to thePublication
.
- Use
2.0.0-alpha.1
Added
- The new Format API simplifies the detection of file formats, including known publication formats such as EPUB and PDF.
- A format can be "sniffed" from files, raw bytes or even HTTP responses.
- Reading apps are welcome to extend the API with custom formats.
- Using
Link.mediaType?.matches()
is now recommended to safely check the type of a resource. - More details about the Swift implementation can be found in the pull request.
- In
Publication
shared models:- Presentation Hints and HTML Locations extensions.
- Support for OPDS holds, copies and availability in
Link
, for library-specific features.
- (Experimental) Audiobook toolkit:
AudioSession
simplifies the setup of anAVAudioSession
and handling its interruptions.NowPlayingInfo
helps manage the "Now Playing" information displayed on the lock screen.
Changed
- All the
Publication
shared models are now immutable, to improve code safety. This should not impact reading apps unless you createdPublication
or other models yourself. - The
DocumentTypes
API was extended and offers an easy way to check if your app supports a given file. - Dependencies to format-related third-party libraries such as ZIP, XML and PDF are being consolidated into
r2-shared-swift
. Therefore,r2-shared-swift
now depends on Fuzi and ZIPFoundation. This change will improve maintainability by isolating third-party code and allow (work in progress) to substitute the default libraries with custom ones.
1.4.3: Merge pull request #80 from readium/develop
updated pod spec
1.4.2
Update .travis.yml