IIIF Presentation 3 types
A set of types that describe the format of the IIIF Presentation 3.0 specification as accurately as possible.
Installation:
$ npm i @iiif/presentation-3
Installation (yarn):
$ yarn add @iiif/presentation-3
Usage (Typescript):
import { Manifest } from '@iiif/presentation-3';
const manifest = getManifestFromSomewhere() as Manifest;
function doSomethingWithManifest(manifest: Manifest) {
}
Usage (Javascript):
const manifest = {};
function doSomethingWithManifest(manifest) {
console.log(manifest.label);
}
const manifest2 = {};
This will enable types completions in VSCode and IDEA, along with inline documentation from the IIIF specification:
Support
The following types are supported:
- Manifest
- Collection
- Canvas
- Annotation
- Annotation Collection
- Annotation Page
- Content Resource
- Provider
- Range
- Service
With some other types that aim to cover common services:
- Auth service
- GeoJSON service
- Image service
- Search service
Full List of types
Basic types
Type | Description |
---|
ResourceType | String literals for the possible values of type |
InternationalString | Common language property ({ "none": ["..."] } ) |
Reference | A reference to another resources ({id: '..', type: '..'} ) |
JsonLDContext | A partial of {'@context': ... } , extended by resources with contexts |
MetadataItem | Label value pair used in the metadata field |
SpecificationBehaviors | String literals for supported behaviors mentioned in the specification |
SpecificationTimeMode | String literals for supported time modes mentioned in the specification |
ViewingDirection | String literal for the 4 supported viewing directions |
Resources
Type | Description |
---|
Service | Any service that can appear in services property. Union of generic and specific services. |
Manifest | Types for a valid IIIF Manifest |
Canvas | Types for a valid IIIF Canvas |
ContentResource | Types for a Content Resource - warning this can be many things! |
AnnotationPage | Types for a valid Annotation page |
Annotation | Types for a valid Annotation in the context of a IIIF manifest |
AnnotationW3C | Types for a valid W3C annotation (different from above) |
Collection | Types for a valid IIIF Collection |
Range | Types for a valid IIIF Range |
AnnotationCollection | Types for a valid Annotation collection |
IIIFExternalWebResource | Abstract type for an external web resource |
ContentResourceString | Alias for string |
Resource items (structural)
Type | Description |
---|
CanvasItems | Alias for Annotation Page |
CollectionItems | Union of Manifest or Collection |
ManifestItems | Alias for Canvas |
RangeItems | Union of Range, Canvas or string |
Services
Type | Description |
---|
AuthAccessTokenServiceError | [todo] |
AuthAccessTokenServiceResponse | [todo] |
AuthAbstractService | [todo] |
AuthAccessTokenService | [todo] |
AuthExternalService | [todo] |
AuthClickThroughService | [todo] |
AuthKioskService | [todo] |
AuthLoginService | [todo] |
AuthLogoutService | [todo] |
AuthService | [todo] |
GeoJsonService | [todo] |
ImageService | [todo] |
ImageService2 | [todo] |
ImageServiceProfile | [todo] |
ImageProfile | [todo] |
ImageService3 | [todo] |
ImageSize | [todo] |
ImageTile | [todo] |
SearchService | [todo] |
SearchServiceAutocomplete | [todo] |
SearchServiceAutocompleteQueryParams | [todo] |
SearchServiceAutocompleteResponse | [todo] |
SearchServiceCommonHitSelectors | [todo] |
SearchServiceCommonResources | [todo] |
SearchServiceQueryParams | [todo] |
SearchServiceSearchCommonSelectors | [todo] |
SearchServiceSearchResponse | [todo] |
W3C Annotations
Most of these types are not exported, but internally follows the full W3C specification.
W3C Model Specification
Type | Description |
---|
Agent | [todo] |
AnnotationBody | [todo] |
AnnotationTarget | [todo] |
AnyMotivation | [todo] |
Audience | [todo] |
Body | [todo] |
ChoiceBody | [todo] |
ChoiceTarget | [todo] |
Creator | [todo] |
BasicState | [todo] |
CssSelector | [todo] |
DataPositionSelector | [todo] |
FragmentSelector | [todo] |
Selector | [todo] |
RefinedBy | [todo] |
RefinedByState | [todo] |
EmbeddedResource | [todo] |
ExternalResourceTypes | [todo] |
ExternalWebResource | [todo] |
RangeSelector | [todo] |
RequestHeaderState | [todo] |
SpecificResource | [todo] |
State | [todo] |
SvgSelector | [todo] |
TextPositionSelector | [todo] |
TextQuoteSelector | [todo] |
TimeState | [todo] |
XPathSelector | [todo] |
Stylesheet | [todo] |
Target | [todo] |
TargetComposite | [todo] |
TargetList | [todo] |
TargetIndependents | [todo] |
W3CAnnotationBody | [todo] |
W3CAnnotationCollection | [todo] |
W3CAnnotationPage | [todo] |
W3CAnnotationTarget | [todo] |
W3CMotivation | [todo] |
LinkedResource | [todo] |
ResourceBaseProperties | [todo] |
OtherProperties | [todo] |
Normalized resources
This is map of all the resources normalized where the following modifications are assumed to have been made:
- Everything property exists either as null, or an empty array
- Nested resources are replaced with references (id/type)
The types do not have a tool to create these types, but may be useful for implementations.
Type | Description |
---|
DescriptiveNormalized | Normalized abstract with all descriptive properties |
LinkingNormalized | Normalized abstract with all linking properties |
StructuralNormalized | Normalized abstract with all structural properties |
OtherPropertiesNormalized | Misc properties on W3C Annotations normalized |
AnnotationW3cNormalised | Normalized W3C Annotation |
AnnotationCollectionNormalized | Normalized Annotation Collection |
AnnotationNormalized | Normalized Annotation as it appears in a IIIF Manifest |
AnnotationPageNormalized | Normalized Annotation Page |
CanvasNormalized | Normalized Canvas |
CollectionNormalized | Normalized Collection |
CreatorNormalized | Normalized Creator (from annotation) |
ManifestNormalized | Normalized Manifest |
RangeNormalized | Normalized Range |
ServiceNormalized | Normalized Service - note: normalizing services is not recommend |
Partial / Abstract types
These types are building blocks of other types.
Type | Description |
---|
LinkingProperties | The linking properties of IIIF in a map LinkingProperties['seeAlso'] |
DescriptiveProperties | The descriptive properties of IIIF in a map DescriptiveProperties['label'] |
TechnicalProperties | The technical properties of IIIF in a map DescriptiveProperties['id'] |
StructuralProperties | The structural properties of IIIF in a map DescriptiveProperties['annotations'] |
Helpers
Type | Description |
---|
OmitProperties | Helper for removing properties from another type |
IdOrAtId | Helper for resources that can have either id or @id |
SomeRequired | Helper for requiring some properties from another type |
Required | Helper for requiring all properties from another type |