/presentation-3-types

A set of Typescript types that describe the format of the IIIF Presentation 3.0 specification as accurately as possible. (JS/Typescript)

Primary LanguageTypeScriptMIT LicenseMIT

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

/**
 * @typedef { import("@iiif/presentation-3").Manifest } Manifest
 */

/**
 * @type {Manifest}
 */
const manifest = {};


/**
 * @param manifest {Manifest}
 */
function doSomethingWithManifest(manifest) {
  console.log(manifest.label);
}

// You can also inline the import:

/**
 * @type {import("@iiif/presentation-3").Manifest}
 */
const manifest2 = {};

This will enable types completions in VSCode and IDEA, along with inline documentation from the IIIF specification: Screenshot 2021-03-28 at 17 11 14

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

The normalized types have moved to @iiif/presentation-3-normalized.

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