Neverending Package Mountain

    TypeScript icon, indicating that this package has built-in type declarations

    1.0.5 • Public • Published

    IIIF Presentation 3 types

    A set of types that describe the format of the IIIF Presentation 3.0 specification as accurately as possible.


    $ 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) {
    // 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


    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


    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


    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']


    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




    npm i @iiif/presentation-3

    DownloadsWeekly Downloads






    Unpacked Size

    81.5 kB

    Total Files


    Last publish


    • sdellis
    • edsilv-admin
    • mejackreed
    • stephenwf