All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fixed incorrectly formatted label/value maps in Manifests (#33)
- Support for
navPlaceandtextGranularity - Fragment selectors in SpecificResources, strings and
{id,type}References are now normalised, reducing the need to parse IDs to grab the ID/Type - Added expand target helper, used internally for normalization (possibly useful for content state).
- New sub-package
@iiif/parser/strictfor fixing common mistakes in Presentation 3, with detailed feedback for implementors. - New sub-package
@iiif/parser/image-3for parsing IIIF Image API and some helpers - Test coverage across every IIIF Cookbook recipe, testing:
- Parsing / Traversing the IIIF
- Normalizing the IIIF correctly
- Re-serializing the IIIF back to identical JSON
- New traversal option for
SpecificResource - New traversal option for
GeoJson(e.g. from thenavPlaceextension) - New storing of
Serviceswhen normalizing 1 - Added second parameter to Presentation 3 Traversal to access parent of current resource
- Added JSON-LD framing to serialization
- New helpers for resolving framed resources
- Added
iiif-parser:hasPartto normalization of some resources containing JSON-LD frame for resources within a particular context (i.e. through partOf) - Serialize config now has additional contextual information (parent resource, full resource if framed)
- New
frameResourcehelper
[presentation-2]startCanvasproperty on Sequences are now added to the Manifest when converting- Fixed handling Specific resources where the
sourceis only string (inferring the correct type from the context) - Serializing Presentation 2 resources without items
- Bug where AV canvases would have height and width of
0when serializing - Bug where custom
@contexton Manifest was not retained during serialization - Bug where Content Resources did not keep extra properties when serializing (e.g.
valueorgeometry) - Bug where serialization may sometimes include
UNSETkeyword.
posterCanvas- hangover from pre-3.0, this will be ignoredlogoon non-provider resources - hangover from pre-3.0, these will be ignored2motivationfield on non-Annotation resources (bug)Traverse.traversePosterCanvas()is removed (nowTraverse.traverseLinkedCanvases())
range.items[]is now normalised to eitherReference<'Range'>3 orSpecificResource<Reference<'Canvas'>>4manifest.startis now normalised to aSpecificResource<Reference<'Canvas'>>annotation.targetis now normalized toSpecificResourceannotation.bodynow will correctly handleSpecificResourcetypeContentResourcenow has aiiif-parser:hasPartwhen normalizedAnnotationPagenow has aiiif-parser:hasPartwhen normalizedManifestnow has aiiif-parser:hasPartwhen normalizedCollectionnow has aiiif-parser:hasPartwhen normalized
Footnotes
-
This does not replace the inline services with references, instead it's a parallel store of normalized services. Editing tools will have to update both. This moves the problem of multiple services with different structures and fields to the user. The normalized structures will be specifically useful for loading Image services progressively in a store without affecting the serialisation of the IIIF. ↩
-
These properties were added to the specification pre-3.0 and then later removed. ↩
-
A
Reference<T>has the shape:{ id: string, type: T }and is usually narrowed to one or more types ↩ -
SpecificResource is defined by the W3C Annotation specification, but in short you can access the original reference by accessing
specificResource.source↩