@iiif/presentation-3
v2.2.3
Published
IIIF Presentation v3.0 typescript types
Downloads
11,318
Keywords
Readme
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:
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.
| 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 |