Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@iiif/parser

Package Overview
Dependencies
Maintainers
4
Versions
39
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@iiif/parser - npm Package Compare versions

Comparing version
1.0.2
to
1.0.3
+1
-1
dist/cjs/index.js

@@ -1,1 +0,1 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const Ce={id:"https://iiif-parser/annotation",type:"Annotation",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[],accessibility:[],audience:[],body:[],bodyValue:null,canonical:null,created:null,creator:[],generated:null,generator:[],modified:null,motivation:[],rights:[],stylesheet:null,target:[],timeMode:void 0,via:[],partOf:[]},k={id:"https://iiif-parser/annotation-page",type:"AnnotationPage",behavior:[],motivation:null,label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[]},N={id:"https://iiif-parser/empty-canvas",type:"Canvas",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],duration:0,height:0,width:0},j={id:"https://iiif-parser/empty-collection",type:"Collection",label:null,viewingDirection:"left-to-right",behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],services:[]},G={id:"https://iiif-parser/empty-manifest",type:"Manifest",annotations:[],behavior:[],homepage:[],items:[],label:null,logo:[],metadata:[],motivation:null,navDate:null,provider:[],partOf:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,rendering:[],requiredStatement:null,rights:null,seeAlso:[],service:[],services:[],start:null,structures:[],summary:null,thumbnail:[],viewingDirection:"left-to-right"},$={id:"https://iiif-parser/empty-canvas",type:"Range",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],start:null,supplementary:null,viewingDirection:"left-to-right"},q={id:"https://iiif-parser/empty-agent",type:"Agent",label:{},logo:[],seeAlso:[],homepage:[]},M=["Collection","Manifest","Canvas","AnnotationPage","AnnotationCollection","Annotation","ContentResource","Range","Service","Selector","Agent"];function U(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t.type=="string"){const e=M.indexOf(t.type);if(e!==-1)return M[e]}if(t.profile)return"Service";throw new Error("Resource type is not known")}class L{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationCollection:[],annotationPage:[],annotation:[],contentResource:[],choice:[],range:[],service:[],agent:[],...e},this.options={allowUndefinedReturn:!1,...i}}static all(e){return new L({collection:[e],manifest:[e],canvas:[e],annotationCollection:[e],annotationPage:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e]})}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=e.thumbnail.map(i=>this.traverseType(i,this.traversals.contentResource))),e.provider&&(e.provider=e.provider.map(i=>this.traverseAgent(i))),e}traverseLinking(e){return e.seeAlso&&(e.seeAlso=e.seeAlso.map(i=>this.traverseType(i,this.traversals.contentResource))),e.service&&(e.service=e.service.map(i=>this.traverseType(i,this.traversals.service))),e.services&&(e.services=e.services.map(i=>this.traverseType(i,this.traversals.service))),e.logo&&(e.logo=e.logo.map(i=>this.traverseType(i,this.traversals.contentResource))),e.homepage&&(e.homepage=e.homepage.map(i=>this.traverseType(i,this.traversals.contentResource))),e.partOf&&(e.partOf=e.partOf.map(i=>typeof i=="string"||!i.type?this.traverseType(i,this.traversals.contentResource):i.type==="Canvas"?this.traverseType(i,this.traversals.canvas):i.type==="AnnotationCollection"?this.traverseType(i,this.traversals.annotationCollection):this.traverseType(i,this.traversals.contentResource))),e.start&&(e.start=e.start?this.traverseType(e.start,this.traversals.canvas):null),e.rendering&&(e.rendering=e.rendering.map(i=>this.traverseType(i,this.traversals.contentResource))),e.supplementary&&(e.supplementary=e.supplementary.map(i=>this.traverseType(i,this.traversals.contentResource))),e}traverseCollectionItems(e){return e.items&&e.items.map(i=>i.type==="Collection"?this.traverseCollection(i):this.traverseManifest(i)),e}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseInlineAnnotationPages(this.traverseLinking(this.traversePosterCanvas(this.traverseCollectionItems(e))))),this.traversals.collection)}traverseManifestItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseCanvas(i))),e}traverseManifestStructures(e){return e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseManifest(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traverseManifestStructures(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e)))))),this.traversals.manifest)}traverseCanvasItems(e){return e.items=(e.items||[]).map(i=>this.traverseAnnotationPage(i)),e}traverseInlineAnnotationPages(e){return typeof e=="string"||!e||e.annotations&&(e.annotations=e.annotations.map(i=>this.traverseAnnotationPage(i))),e}traverseCanvas(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))))),this.traversals.canvas)}traverseAnnotationPageItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseAnnotation(i))),e}traverseAnnotationPage(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationPageItems(e))),this.traversals.annotationPage)}traverseAnnotationBody(e){return Array.isArray(e.body)?e.body=e.body.map(i=>this.traverseContentResource(i)):e.body&&(e.body=this.traverseContentResource(e.body)),e}traversePosterCanvas(e){return e.posterCanvas&&(e.posterCanvas=this.traverseType(e.posterCanvas,this.traversals.canvas)),e.placeholderCanvas&&(e.placeholderCanvas=this.traverseType(e.placeholderCanvas,this.traversals.canvas)),e.accompanyingCanvas&&(e.accompanyingCanvas=this.traverseType(e.accompanyingCanvas,this.traversals.canvas)),e}traverseAnnotation(e){return this.traverseType(this.traverseLinking(this.traverseAnnotationBody(e)),this.traversals.annotation)}traverseContentResourceLinking(e){return typeof e=="string"||!e||e&&e.service&&(e.service=(e.service||[]).map(i=>this.traverseType(i,this.traversals.service))),e}traverseContentResource(e){return e.type==="Choice"&&(e.items=e.items.map(i=>this.traverseContentResource(i))),this.traverseType(this.traverseInlineAnnotationPages(this.traverseContentResourceLinking(e)),this.traversals.contentResource)}traverseRangeRanges(e){return e.items&&(e.items=e.items.map(i=>typeof i=="string"?this.traverseCanvas({id:i,type:"Canvas"}):i.type==="Manifest"?this.traverseManifest(i):this.traverseRange(i))),e}traverseRange(e){return this.traverseType(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseRangeRanges(e)))),this.traversals.range)}traverseAgent(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.agent)}traverseType(e,i){return i.reduce((n,a)=>{const r=a(n);return typeof r=="undefined"&&!this.options.allowUndefinedReturn?n:r},e)}traverseService(e){return this.traverseType(e,this.traversals.service)}traverseUnknown(e){const i=U(e);switch(i){case"Collection":return this.traverseCollection(e);case"Manifest":return this.traverseManifest(e);case"Canvas":return this.traverseCanvas(e);case"AnnotationPage":return this.traverseAnnotationPage(e);case"Annotation":return this.traverseAnnotation(e);case"ContentResource":return this.traverseContentResource(e);case"Range":return this.traverseRange(e);case"Service":return this.traverseService(e);case"Agent":return this.traverseAgent(e);default:throw new Error(`Unknown or unsupported resource type of ${i}`)}}}const V=["sc:Collection","sc:Manifest","sc:Canvas","oa:AnnotationList","oa:Annotation","sc:Range","sc:Layer","sc:Sequence","oa:Choice","Service","ContentResource"];function Ie(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t["@type"]=="string"){const e=V.indexOf(t["@type"]);if(e!==-1)return V[e]}if(t.profile)return"Service";if(t.format||t["@type"])return"ContentResource";throw new Error("Resource type is not known")}class S{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationList:[],sequence:[],annotation:[],contentResource:[],choice:[],range:[],service:[],layer:[],...e},this.options={convertPropsToArray:!0,mergeMemberProperties:!0,allowUndefinedReturn:!1,...i}}static all(e){return new S({collection:[e],manifest:[e],canvas:[e],annotationList:[e],sequence:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e],layer:[e]})}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCollectionItems(e))),this.traversals.collection)}traverseCollectionItems(e){if(this.options.mergeMemberProperties){const i=[...(e.manifests||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Manifest"}:n),...(e.collections||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Collection"}:n),...e.members||[]];delete e.collections,delete e.manifests,e.members=i}return e.manifests&&(e.manifests=e.manifests.map(i=>this.traverseManifest(typeof i=="string"?{"@id":i,"@type":"sc:Manifest"}:i))),e.collections&&(e.collections=e.collections.map(i=>this.traverseCollection(typeof i=="string"?{"@id":i,"@type":"sc:Collection"}:i))),e.members&&(e.members=e.members.map(i=>typeof i=="string"?i:this.traverseUnknown(i))),e}traverseManifest(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e))),this.traversals.manifest)}traverseManifestItems(e){return e.sequences&&(e.sequences=e.sequences.map(i=>this.traverseSequence(i))),e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseSequence(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseSequenceItems(e))),this.traversals.sequence)}traverseSequenceItems(e){return e.canvases&&(e.canvases=e.canvases.map(i=>this.traverseCanvas(i))),e}traverseCanvas(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))),this.traversals.canvas)}traverseCanvasItems(e){return e.images&&(e.images=e.images.map(i=>this.traverseAnnotation(i))),e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseRange(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseRangeItems(e))),this.traversals.range)}traverseRangeItems(e){if(this.options.mergeMemberProperties){const i=[...(e.ranges||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Range"}:n),...(e.canvases||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Canvas"}:n),...e.members||[]];delete e.ranges,delete e.canvases,e.members=i.length?i.map(n=>this.traverseUnknown(n)):void 0}return e}traverseAnnotationList(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationListItems(e))),this.traversals.annotationList)}traverseAnnotationListItems(e){return e.resources&&(e.resources=e.resources.map(i=>this.traverseAnnotation(i))),e}traverseAnnotation(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationItems(e))),this.traversals.annotation)}traverseAnnotationItems(e){return e.resource&&(e.resource=this.traverseContentResource(e.resource)),e.on,e}traverseLayer(e){return this.traverseType(this.traverseLinking(this.traverseLayerItems(e)),this.traversals.layer)}traverseLayerItems(e){return e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseChoice(e){return this.traverseType(this.traverseChoiceItems(e),this.traversals.choice)}traverseChoiceItems(e){return e.default&&e.default!=="rdf:nil"&&(e.default=this.traverseContentResource(e.default)),e.item&&e.item!=="rdf:nil"&&(e.item=e.item.map(i=>this.traverseContentResource(i))),e}traverseService(e){return this.traverseType(this.traverseLinking(e),this.traversals.service)}traverseContentResource(e){return e["@type"]==="oa:Choice"?this.traverseChoice(e):this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.contentResource)}traverseUnknown(e){if(!e["@type"]||typeof e=="string")return e;switch(Ie(e)){case"sc:Collection":return this.traverseCollection(e);case"sc:Manifest":return this.traverseManifest(e);case"sc:Canvas":return this.traverseCanvas(e);case"sc:Sequence":return this.traverseSequence(e);case"sc:Range":return this.traverseRange(e);case"oa:Annotation":return this.traverseAnnotation(e);case"oa:AnnotationList":return this.traverseAnnotationList(e);case"sc:Layer":return this.traverseLayer(e);case"Service":return this.traverseService(e);case"oa:Choice":return this.traverseChoice(e);case"ContentResource":return this.traverseContentResource(e)}return e.profile?this.traverseService(e):e}traverseImageResource(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],a=[];for(const r of n)typeof r=="string"?a.push(this.traverseContentResource({"@id":r,"@type":"dctypes:Image"})):a.push(this.traverseContentResource(r));return!i&&!this.options.convertPropsToArray?a[0]:a}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=this.traverseImageResource(e.thumbnail)),e.logo&&(e.logo=this.traverseImageResource(e.logo)),e}traverseOneOrMoreServices(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],a=[];for(const r of n)a.push(this.traverseService(r));return!i&&!this.options.convertPropsToArray?a[0]:a}traverseLinking(e){return e.related&&(e.related=this.traverseOneOrManyType(e.related,this.traversals.contentResource)),e.rendering&&(e.rendering=this.traverseOneOrManyType(e.rendering,this.traversals.contentResource)),e.service&&(e.service=this.traverseOneOrMoreServices(e.service)),e.seeAlso&&(e.seeAlso=this.traverseOneOrManyType(e.seeAlso,this.traversals.contentResource)),e.within&&(typeof e.within=="string"||(e.within=this.traverseOneOrManyType(e.within,this.traversals.contentResource))),e.startCanvas&&(typeof e.startCanvas=="string"?e.startCanvas=this.traverseType({"@id":e.startCanvas,"@type":"sc:Canvas"},this.traversals.canvas):e.startCanvas&&this.traverseType(e.startCanvas,this.traversals.canvas)),e.contentLayer&&(typeof e.contentLayer=="string"?e.contentLayer=this.traverseLayer({"@id":e.contentLayer,"@type":"sc:Layer"}):e.contentLayer=this.traverseLayer(e.contentLayer)),e}traverseOneOrManyType(e,i){if(!Array.isArray(e))if(this.options.convertPropsToArray)e=[e];else return this.traverseType(e,i);return e.map(n=>this.traverseType(n,i))}traverseType(e,i){return i.reduce((n,a)=>{const r=a(n);return typeof r=="undefined"&&!this.options.allowUndefinedReturn?n:r},e)}}const _e="http://library.stanford.edu/iiif/image-api/compliance.html#level0",W="http://library.stanford.edu/iiif/image-api/compliance.html#level1",z="http://library.stanford.edu/iiif/image-api/compliance.html#level2",be="http://library.stanford.edu/iiif/image-api/conformance.html#level0",H="http://library.stanford.edu/iiif/image-api/conformance.html#level1",B="http://library.stanford.edu/iiif/image-api/conformance.html#level2",Re="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0",K="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1",Q="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2",Ee="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0",X="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1",Y="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2",we="http://iiif.io/api/image/1/level0.json",Le="http://iiif.io/api/image/1/profiles/level0.json",Z="http://iiif.io/api/image/1/level1.json",J="http://iiif.io/api/image/1/profiles/level1.json",ee="http://iiif.io/api/image/1/level2.json",te="http://iiif.io/api/image/1/profiles/level2.json",Te="http://iiif.io/api/image/2/level0.json",Me="http://iiif.io/api/image/2/profiles/level0.json",ie="http://iiif.io/api/image/2/level1.json",ne="http://iiif.io/api/image/2/profiles/level1.json",re="http://iiif.io/api/image/2/level2.json",ae="http://iiif.io/api/image/2/profiles/level2.json",Se="level0",se="level1",oe="level2",xe="http://iiif.io/api/image/2/level0",le="http://iiif.io/api/image/2/level1",ve="http://iiif.io/api/image/2/level2",Pe=[le,ve,W,z,H,B,K,Q,X,Y,Z,J,ee,te,ie,ne,re,ae,se,oe],Oe=[xe,le,ve,_e,W,z,be,H,B,Re,K,Q,Ee,X,Y,we,Le,Z,J,ee,te,Te,Me,ie,ne,re,ae,Se,se,oe],x={attributionLabel:"Attribution",lang:"none",providerId:"http://example.org/provider",providerName:"Unknown"};function u(t,e="none"){if(!t)return{};const i=Array.isArray(t)?t:[t],n={};for(const a of i){if(typeof a=="string"){n[e]=n[e]?n[e]:[],n[e].push(a||"");continue}if(!a["@language"]){n[e]=n[e]?n[e]:[],n[e].push(a["@value"]||"");continue}const r=a["@language"];n[r]=n[r]?n[r]:[],n[r].push(a["@value"]||"")}return n}function pe(t){if(Array.isArray(t))return pe(t.find(e=>typeof e=="string"));if(Oe.indexOf(t)!==-1)return"level2";if(Pe.indexOf(t)!==-1)return"level1";if(typeof t=="string")return t}function Fe(t){const e=Array.isArray(t)?t:[t];for(const i of e)switch(i){case"http://iiif.io/api/image/2/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2":return"ImageService2";case"http://iiif.io/api/image/1/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/context.json":return"ImageService1";case"http://iiif.io/api/annex/openannotation/context.json":return"ImageApiSelector"}}function De(t){switch(t){case"http://iiif.io/api/image/2/level0.json":case"http://iiif.io/api/image/2/level1.json":case"http://iiif.io/api/image/2/level2.json":return"ImageService2";case"http://iiif.io/api/auth/1/kiosk":case"http://iiif.io/api/auth/1/login":case"http://iiif.io/api/auth/1/clickthrough":case"http://iiif.io/api/auth/1/external":case"http://iiif.io/api/auth/0/kiosk":case"http://iiif.io/api/auth/0/login":case"http://iiif.io/api/auth/0/clickthrough":case"http://iiif.io/api/auth/0/external":return"AuthCookieService1";case"http://iiif.io/api/auth/1/token":case"http://iiif.io/api/auth/0/token":return"AuthTokenService1";case"http://iiif.io/api/auth/1/logout":case"http://iiif.io/api/auth/0/logout":return"AuthLogoutService1";case"http://iiif.io/api/search/1/search":case"http://iiif.io/api/search/0/search":return"SearchService1";case"http://iiif.io/api/search/1/autocomplete":case"http://iiif.io/api/search/0/autocomplete":return"AutoCompleteService1"}}function ke(t){return Array.isArray(t)?t:[t]}function Ne(t){for(const e of["sc","oa","dcterms","dctypes","iiif"])if(t.startsWith(`${e}:`))return t.slice(e.length+1);return t}function P(t){const e=t["@id"]||t.id;let i=t["@type"]||t.type;const n=t.profile||void 0,a=t["@context"]||void 0;if(n){const r=De(n);if(r)return r}if(a){const r=Fe(a);if(r)return r}if(i){if(Array.isArray(i)){if(i.indexOf("oa:CssStylesheet")!==-1)return"CssStylesheet";if(i.indexOf("cnt:ContentAsText")!==-1)return"TextualBody";i=i[0]}for(const r of["sc","oa","dcterms","dctypes","iiif"])if(i.startsWith(`${r}:`)){i=i.slice(r.length+1);break}switch(i){case"Layer":return"AnnotationCollection";case"AnnotationList":return"AnnotationPage";case"cnt:ContentAsText":return"TextualBody"}}if(t.format){if(t.format.startsWith("image/"))return"Image";if(t.format.startsWith("text/")||t.format==="application/pdf")return"Text";if(t.format.startsWith("application/"))return"Dataset"}return e&&(e.endsWith(".jpg")||e.endsWith(".png")||e.endsWith(".jpeg"))?"Image":i||"unknown"}const je=/http(s)?:\/\/(creativecommons.org|rightsstatements.org)[^"'\\<\n]+/gm;function Ge(t){const e=t.match(je);return e?e[0]:t}function $e(t,e="Rights/License",i="none"){let n=null;const a=[],r=Array.isArray(t)?t:[t];for(const A of r){const o=A?Ge(A):void 0;if(o&&(o.indexOf("creativecommons.org")!==-1||o.indexOf("rightsstatements.org")!==-1)){o.startsWith("https://")?n=`http://${o.slice(8)}`:n=o;continue}o&&a.push({label:{[i]:[e]},value:{[i]:[o]}})}return[n,a]}const qe=["http://iiif.io/api/presentation/2/context.json","http://iiif.io/api/image/2/context.json","http://iiif.io/api/image/1/context.json","http://library.stanford.edu/iiif/image-api/1.1/context.json","http://iiif.io/api/search/1/context.json","http://iiif.io/api/search/0/context.json","http://iiif.io/api/auth/1/context.json","http://iiif.io/api/auth/0/context.json","http://iiif.io/api/annex/openannotation/context.json"];function Ue(t){if(t){const e=Array.isArray(t)?t:[t],i=[];for(const n of e)n==="http://iiif.io/api/presentation/2/context.json"&&i.push("http://iiif.io/api/presentation/3/context.json"),qe.indexOf(n)===-1&&i.push(n);if(e.length)return i.length===1?i[0]:i}}function Ve(t){return t?t.map(e=>({label:u(e.label),value:u(e.value)})):[]}function v(t){for(const e in t)(typeof t[e]=="undefined"||t[e]===null)&&delete t[e];return t}let he=0;function ce(t,e){const i=encodeURI(t.id||t["@id"]||"").trim();return i&&e?`${i}/${e}`:i||(he++,`http://example.org/${t["@type"]}${e?`/${e}`:""}/${he}`)}function p(t){const e=[...t.behavior||[]];return t.viewingHint&&e.push(t.viewingHint),{"@context":t["@context"]?Ue(t["@context"]):void 0,id:(t["@id"]||ce(t)).trim(),type:P(t),behavior:e.length?e:void 0,height:t.height?t.height:void 0,width:t.width?t.width:void 0,motivation:t.motivation?Ne(t.motivation):void 0,viewingDirection:t.viewingDirection,profile:t.profile,format:t.format?t.format:void 0,duration:void 0,timeMode:void 0}}function l(t){const[e,i]=$e(t.license),n=[...t.metadata?Ve(t.metadata):[],...i];return{rights:e,metadata:n.length?n:void 0,label:t.label?u(t.label):void 0,requiredStatement:t.attribution?{label:u(x.attributionLabel),value:u(t.attribution)}:void 0,navDate:t.navDate,summary:t.description?u(t.description):void 0,thumbnail:t.thumbnail}}function We(t){if(!t.within)return;const e=Array.isArray(t.within)?t.within:[t.within],i=[];for(const n of e)if(typeof n=="string"){if(n)switch(t["@type"]){case"sc:Manifest":i.push({id:n,type:"Collection"});break}}else n["@id"]&&i.push({id:n["@id"],type:P(n)});return i.length?i:void 0}function h(t){const e=t.related?Array.isArray(t.related)?t.related:[t.related]:[],i=t.contentLayer;return{provider:t.logo||e.length?[{id:x.providerId,type:"Agent",homepage:e.length?[e[0]]:void 0,logo:t.logo?Array.isArray(t.logo)?t.logo:[t.logo]:void 0,label:u(x.providerName)}]:void 0,partOf:We(t),rendering:t.rendering,seeAlso:t.seeAlso,start:t.startCanvas,service:t.service?ke(t.service):void 0,supplementary:i?[i]:void 0}}function ze(t){return v({...p(t),...l(t),...h(t),items:t.members})}function He(t){const e=[],i=[];for(const a of t.sequences||[])a.canvases.length&&e.push(...a.canvases),a.behavior&&i.push(...a.behavior);const n=p(t);return i.length&&(n.behavior?n.behavior.push(...i):n.behavior=i),v({...n,...l(t),...h(t),items:e,structures:t.structures})}function Be(t){return v({...p(t),...l(t),...h(t),items:t.images&&t.images.length?[{id:ce(t,"annotation-page"),type:"AnnotationPage",items:t.images}]:void 0})}function Ke(t){return v({...p(t),...l(t),...h(t),items:t.resources})}function Qe(t){return!t.canvases||t.canvases.length===0?{canvases:[],behavior:[]}:{canvases:t.canvases,behavior:t.viewingHint?[t.viewingHint]:[]}}function Xe(t){return v({...p(t),...l(t),...h(t),target:typeof t.on=="string"?encodeURI(t.on).trim():t.on,body:t.resource})}function Ye(t){const e=t;return v({...p(e),...l(e),...h(e)})}function Ze(t){const e=[];return t.default&&t.default!=="rdf:nil"&&e.push(t.default),t.item&&t.item!=="rdf:nil"&&e.push(...t.item),{...p(t),...l(t),items:e}}function Je(t){return v({...p(t),...l(t),...h(t),items:t.members})}function et(t){const{"@id":e,"@type":i,"@context":n,profile:a,...r}=t;return e&&(r.id=e),r.type=P(t),r.type==="unknown"&&(r.type="Service"),a&&(r.profile=pe(a)),v({...r,...l(r)})}function tt(t){return v({...p(t),...l(t),...h(t)})}const it=new S({collection:[ze],manifest:[He],canvas:[Be],annotationList:[Ke],sequence:[Qe],annotation:[Xe],contentResource:[Ye],choice:[Ze],range:[Je],service:[et],layer:[tt]});function nt(t){return t&&t["@context"]&&(t["@context"]==="http://iiif.io/api/presentation/2/context.json"||t["@context"].indexOf("http://iiif.io/api/presentation/2/context.json")!==-1||t["@context"]==="http://www.shared-canvas.org/ns/context.json")||t["@context"]==="http://iiif.io/api/image/2/context.json"?it.traverseUnknown(t):t}const rt={Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}};function fe(){return{Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}}}function ue(t,e){if(typeof t=="string")return{id:t,type:e};if(!t.id)throw new Error(`Invalid resource does not have an ID (${e})`);return t}function at(t){return(e,i)=>{const n=t[e]?t[e]:{};return a=>{const r=ue(a,i||e);return r&&r.id&&e?(n[r.id]=n[r.id]?Object.assign({},n[r.id],r):Object.assign({},r),{id:r.id,type:e==="ContentResource"?e:r.type}):r}}}function st(t){return(e,i)=>n=>{const{id:a,type:r}=ue(n,i||e);if(typeof a=="undefined")throw new Error("Found invalid entity without an ID.");return e==="ContentResource"?t[a]=e:t[a]=r,n}}function ot(t){const e=JSON.stringify(t);let i=5381,n=e.length;for(;n;)i=i*33^e.charCodeAt(--n);const r=(i>>>0).toString(16);return r.length%2?"0"+r:r}function O(t){return e=>typeof e=="string"?{id:e,type:t}:e.id?e.type?e:{type:t,...e}:{id:ot(e),type:t,...e}}function C(t){return e=>({...t,...e})}function I(t){return Array.isArray(t)?t:[t]}function lt(t){return t.body&&(t.body=I(t.body)),t.seeAlso&&(t.seeAlso=I(t.seeAlso)),t.body&&(t.body=I(t.body)),t.audience&&(t.audience=I(t.audience)),t.accessibility&&(t.accessibility=I(t.accessibility)),t.motivation&&(t.motivation=I(t.motivation)),t}function vt(t){const e=nt(t),i=fe(),n={},a=at(i),r=st(n),o=new L({collection:[C(j),r("Collection"),a("Collection")],manifest:[C(G),r("Manifest"),a("Manifest")],canvas:[C(N),r("Canvas"),a("Canvas")],annotationPage:[O("AnnotationPage"),C(k),r("AnnotationPage"),a("AnnotationPage")],annotation:[O("Annotation"),lt,r("Annotation"),a("Annotation")],contentResource:[O("ContentResource"),r("ContentResource"),a("ContentResource")],range:[C($),r("Range","Canvas"),a("Range","Canvas")],agent:[C(q),r("Agent"),a("Agent")]}).traverseUnknown(e);return{entities:i,resource:o,mapping:n}}const c="__$UNSET$__",F="__$UNWRAP$__";function pt(t,e){const i=t.requests[e],n=t.mapping[e];if(!(!n||i&&i.resourceUri&&!t.entities[n][i.resourceUri]))return t.entities[n][i?i.resourceUri:e]}function de(t){const e={};for(const[i,n]of t){if(i===F&&n!==c)return n;n!==c&&typeof n!="undefined"&&n!==null&&(e[i]=n)}return e}function ht(t,e,i){if(!e.type||!e.id)throw new Error("Unknown entity");if(!i[e.type])throw new Error(`Serializer not found for ${e.type}`);function n(a){const r=i[a.type];if(!r)return c;const A=pt(t,a.id)||(a.id&&a.type?a:null);if(!A)return c;const o=r(A,t);let _=o.next();for(;!_.done;){const w=_.value;let T=c;if(w)if(Array.isArray(w)){const D=[];for(const Ae of w)D.push(n(Ae));T=D}else T=n(w);_=o.next(T)}return _.value===c?c:de(_.value)}return n(e)}function d(t){if(!t)return;const e=Object.keys(t);if(e.length!==0){if(e.length===1){const i=e[0];if(!i)return"";const n=(t[i]||[]).join("");return i==="@none"||i==="none"||i==="en"?n:{"@language":i,"@value":n}}return e.map(i=>({"@language":i,"@value":(t[i]||[]).join("")}))}}function me(t){return Array.isArray(t)?t.map(e=>me(e)):typeof t=="string"?t:t.type&&t.type==="Canvas"?t.id:t}function f(t,e=!1){if(!!t)return t.length>1&&!e?t:t[0]||void 0}function ct(t){if(!!t){if(typeof t=="string")return{"@id":t};if("@id"in t){const e={...t};return delete e["@type"],e}return{"@context":"http://iiif.io/api/image/2/context.json","@id":t.id,profile:`http://iiif.io/api/image/2/profiles/${t.profile}.json`}}}function m(t,e){return[["@id",t.id],["@type",e],["format",t.format],["height",t.height],["width",t.width],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0]]}function*g(t){const e=t.provider?yield t.provider[0]:void 0;return[["label",d(t.label)],["metadata",t.metadata&&t.metadata.length?t.metadata.map(i=>({label:d(i.label)||"",value:d(i.value)||""})):void 0],["description",d(t.summary)],["thumbnail",f(yield t.thumbnail)],["navDate",t.navDate],["logo",e?f(e.logo):void 0],["homepage",e?e.homepage:void 0],["attribution",t.requiredStatement?d(t.requiredStatement.value):void 0]]}function*b(t){return[["seeAlso",f(yield t.seeAlso)],["service",f((t.service||[]).map(ct))],["rendering",f(yield t.rendering)],["startCanvas",t.start?t.start.id:void 0]]}const ft={Manifest:function*(t){return[...m(t,"sc:Manifest"),...yield*g(t),...yield*b(t),["sequences",[{"@id":`${t.id}/sequence0`,"@type":"sc:Sequence",canvases:yield t.items}]],["structures",yield t.structures]]},Canvas:function*(t){const i=(yield t.items)[0];return[...m(t,"sc:Canvas"),...yield*g(t),...yield*b(t),["images",i?[i.resources]:void 0],["annotations",t.annotations&&t.annotations.length?f(yield t.annotations):void 0]]},AnnotationPage:function*(t){return[...m(t,"sc:AnnotationList"),...yield*g(t),["resources",t.items&&t.items.length?f(yield t.items):void 0]]},Annotation:function*(t){return[["@id",t.id],["@type","oa:Annotation"],["motivation","sc:painting"],["on",me(t.target)],["resource",f(yield t.body,!0)]]},ContentResource:function*(t){switch(t.type){case"Image":return[...m(t,"dctypes:Image"),...yield*g(t),...yield*b(t)];case"Text":case"Dataset":default:return[...m(t,void 0),...yield*g(t)]}},AnnotationCollection:function*(t){return[["@id",t.id],["@type","sc:Layer"],["label",d(t.label)]]},Collection:function*(t){return[...m(t,"sc:Collection"),...yield*g(t),...yield*b(t),["members",yield*t.items]]},Range:function*(t){const e=[],i=[];if(t.items)for(const n of t.items){const a=yield n;e.push({"@id":n.id,"@type":n.type,label:a?a.label:void 0,within:t.id}),n.type==="Canvas"&&i.push(n.id)}return[...m(t,"sc:Range"),...yield*g(t),...yield*b(t),["canvases",i.length===e.length?i:void 0],["members",i.length!==e.length?e:void 0]]}};function R(t){return[["id",t.id],["type",t.type],["format",t.format],["profile",t.profile],["height",t.height],["width",t.width],["duration",t.duration||void 0],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0],["behavior",t.behavior&&t.behavior.length?t.behavior:void 0],["timeMode",t.timeMode],["motivation",t.motivation]]}function s(t){if(!(!t||t.length===0))return t}function ge(t){if(t&&t.type&&t.type==="ImageService2"){const{id:e,type:i,profile:n,...a}=t;return{"@id":e,"@type":i,profile:n.startsWith("http")?n:`http://iiif.io/api/image/2/${n}.json`,...a}}return t}function ye(t){if(!(!t||t.length===0))return t.map(ge)}function*E(t){return[["label",t.label],["metadata",s(t.metadata)],["summary",t.summary],["requiredStatement",t.requiredStatement],["rights",t.rights],["navDate",t.navDate],["language",t.language],["thumbnail",s(yield t.thumbnail)],["placeholderCanvas",yield t.placeholderCanvas],["accompanyingCanvas",yield t.accompanyingCanvas],["provider",s(yield t.provider)]]}function*y(t){return[["seeAlso",s(yield t.seeAlso)],["service",ye(t.service)],["services",ye(t.services)],["rendering",s(yield t.rendering)],["supplementary",s(yield t.supplementary)],["homepage",s(yield t.homepage)],["logo",s(yield t.logo)],["partOf",s(yield t.partOf)],["start",t.start]]}const ut={Manifest:function*(t){return[["@context","http://iiif.io/api/presentation/3/context.json"],...R(t),...yield*E(t),...yield*y(t),["items",yield t.items],["structures",s(yield t.structures)],["annotations",s(yield t.annotations)]]},Canvas:function*(t){return[...R(t),...yield*E(t),...yield*y(t),["items",yield t.items],["annotations",s(yield t.annotations)]]},Agent:function*(t){return[["id",t.id],["type","Agent"],["label",t.label],...yield*y(t)]},AnnotationPage:function*(t){return[...Object.entries(t).map(([i,n])=>[i,Array.isArray(n)?s(n):n]).filter(([i,n])=>i!=="items"),...yield*y(t),["items",yield t.items]]},Service:function*(t){return[[F,ge(t)]]},Annotation:function*(t){return[...Object.entries(t).map(([i,n])=>[i,Array.isArray(n)?s(n):n]).filter(([i])=>i!=="body"),["body",yield t.body]]},ContentResource:function*(t){return[...R(t),...yield*E(t),...yield*y(t),["annotations",s(yield t.annotations)]]},AnnotationCollection:function*(t){return[["id",t.id],["type","AnnotationCollection"],["label",t.label]]},Collection:function*(t){return[...R(t),...yield*E(t),...yield*y(t),["items",yield*t.items],["annotations",s(yield t.annotations)]]},Range:function*(t){const e=[];for(const i of t.items)i.type==="Range"?e.push(yield i):e.push(i);return[...R(t),...yield*E(t),...yield*y(t),["items",e],["annotations",s(yield t.annotations)]]}};exports.Traverse=L,exports.UNSET=c,exports.UNWRAP=F,exports.defaultEntities=rt,exports.emptyAgent=q,exports.emptyAnnotation=Ce,exports.emptyAnnotationPage=k,exports.emptyCanvas=N,exports.emptyCollection=j,exports.emptyManifest=G,exports.emptyRange=$,exports.getDefaultEntities=fe,exports.identifyResource=U,exports.languageString2to3=d,exports.normalize=vt,exports.serialize=ht,exports.serializeConfigPresentation2=ft,exports.serializeConfigPresentation3=ut,exports.serializedFieldsToObject=de,exports.types=M;
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const Ce={id:"https://iiif-parser/annotation",type:"Annotation",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[],accessibility:[],audience:[],body:[],bodyValue:null,canonical:null,created:null,creator:[],generated:null,generator:[],modified:null,motivation:[],rights:[],stylesheet:null,target:[],timeMode:void 0,via:[],partOf:[]},k={id:"https://iiif-parser/annotation-page",type:"AnnotationPage",behavior:[],motivation:null,label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[]},N={id:"https://iiif-parser/empty-canvas",type:"Canvas",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],duration:0,height:0,width:0},j={id:"https://iiif-parser/empty-collection",type:"Collection",label:null,viewingDirection:"left-to-right",behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],services:[]},G={id:"https://iiif-parser/empty-manifest",type:"Manifest",annotations:[],behavior:[],homepage:[],items:[],label:null,logo:[],metadata:[],motivation:null,navDate:null,provider:[],partOf:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,rendering:[],requiredStatement:null,rights:null,seeAlso:[],service:[],services:[],start:null,structures:[],summary:null,thumbnail:[],viewingDirection:"left-to-right"},$={id:"https://iiif-parser/empty-canvas",type:"Range",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],start:null,supplementary:null,viewingDirection:"left-to-right"},q={id:"https://iiif-parser/empty-agent",type:"Agent",label:{},logo:[],seeAlso:[],homepage:[]},M=["Collection","Manifest","Canvas","AnnotationPage","AnnotationCollection","Annotation","ContentResource","Range","Service","Selector","Agent"];function U(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t.type=="string"){const e=M.indexOf(t.type);if(e!==-1)return M[e]}if(t.profile)return"Service";throw new Error("Resource type is not known")}class L{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationCollection:[],annotationPage:[],annotation:[],contentResource:[],choice:[],range:[],service:[],agent:[],...e},this.options={allowUndefinedReturn:!1,...i}}static all(e){return new L({collection:[e],manifest:[e],canvas:[e],annotationCollection:[e],annotationPage:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e]})}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=e.thumbnail.map(i=>this.traverseType(i,this.traversals.contentResource))),e.provider&&(e.provider=e.provider.map(i=>this.traverseAgent(i))),e}traverseLinking(e){return e.seeAlso&&(e.seeAlso=e.seeAlso.map(i=>this.traverseType(i,this.traversals.contentResource))),e.service&&(e.service=e.service.map(i=>this.traverseType(i,this.traversals.service))),e.services&&(e.services=e.services.map(i=>this.traverseType(i,this.traversals.service))),e.logo&&(e.logo=e.logo.map(i=>this.traverseType(i,this.traversals.contentResource))),e.homepage&&(e.homepage=e.homepage.map(i=>this.traverseType(i,this.traversals.contentResource))),e.partOf&&(e.partOf=e.partOf.map(i=>typeof i=="string"||!i.type?this.traverseType(i,this.traversals.contentResource):i.type==="Canvas"?this.traverseType(i,this.traversals.canvas):i.type==="AnnotationCollection"?this.traverseType(i,this.traversals.annotationCollection):this.traverseType(i,this.traversals.contentResource))),e.start&&(e.start=e.start?this.traverseType(e.start,this.traversals.canvas):null),e.rendering&&(e.rendering=e.rendering.map(i=>this.traverseType(i,this.traversals.contentResource))),e.supplementary&&(e.supplementary=e.supplementary.map(i=>this.traverseType(i,this.traversals.contentResource))),e}traverseCollectionItems(e){return e.items&&e.items.map(i=>i.type==="Collection"?this.traverseCollection(i):this.traverseManifest(i)),e}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseInlineAnnotationPages(this.traverseLinking(this.traversePosterCanvas(this.traverseCollectionItems(e))))),this.traversals.collection)}traverseManifestItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseCanvas(i))),e}traverseManifestStructures(e){return e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseManifest(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traverseManifestStructures(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e)))))),this.traversals.manifest)}traverseCanvasItems(e){return e.items=(e.items||[]).map(i=>this.traverseAnnotationPage(i)),e}traverseInlineAnnotationPages(e){return typeof e=="string"||!e||e.annotations&&(e.annotations=e.annotations.map(i=>this.traverseAnnotationPage(i))),e}traverseCanvas(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))))),this.traversals.canvas)}traverseAnnotationPageItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseAnnotation(i))),e}traverseAnnotationPage(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationPageItems(e))),this.traversals.annotationPage)}traverseAnnotationBody(e){return Array.isArray(e.body)?e.body=e.body.map(i=>this.traverseContentResource(i)):e.body&&(e.body=this.traverseContentResource(e.body)),e}traversePosterCanvas(e){return e.posterCanvas&&(e.posterCanvas=this.traverseType(e.posterCanvas,this.traversals.canvas)),e.placeholderCanvas&&(e.placeholderCanvas=this.traverseType(e.placeholderCanvas,this.traversals.canvas)),e.accompanyingCanvas&&(e.accompanyingCanvas=this.traverseType(e.accompanyingCanvas,this.traversals.canvas)),e}traverseAnnotation(e){return this.traverseType(this.traverseLinking(this.traverseAnnotationBody(e)),this.traversals.annotation)}traverseContentResourceLinking(e){return typeof e=="string"||!e||e&&e.service&&(e.service=(e.service||[]).map(i=>this.traverseType(i,this.traversals.service))),e}traverseContentResource(e){return e.type==="Choice"&&(e.items=e.items.map(i=>this.traverseContentResource(i))),this.traverseType(this.traverseInlineAnnotationPages(this.traverseContentResourceLinking(e)),this.traversals.contentResource)}traverseRangeRanges(e){return e.items&&(e.items=e.items.map(i=>typeof i=="string"?this.traverseCanvas({id:i,type:"Canvas"}):i.type==="Manifest"?this.traverseManifest(i):this.traverseRange(i))),e}traverseRange(e){return this.traverseType(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseRangeRanges(e)))),this.traversals.range)}traverseAgent(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.agent)}traverseType(e,i){return i.reduce((n,a)=>{const r=a(n);return typeof r=="undefined"&&!this.options.allowUndefinedReturn?n:r},e)}traverseService(e){return this.traverseType(e,this.traversals.service)}traverseUnknown(e){const i=U(e);switch(i){case"Collection":return this.traverseCollection(e);case"Manifest":return this.traverseManifest(e);case"Canvas":return this.traverseCanvas(e);case"AnnotationPage":return this.traverseAnnotationPage(e);case"Annotation":return this.traverseAnnotation(e);case"ContentResource":return this.traverseContentResource(e);case"Range":return this.traverseRange(e);case"Service":return this.traverseService(e);case"Agent":return this.traverseAgent(e);default:throw new Error(`Unknown or unsupported resource type of ${i}`)}}}const V=["sc:Collection","sc:Manifest","sc:Canvas","oa:AnnotationList","oa:Annotation","sc:Range","sc:Layer","sc:Sequence","oa:Choice","Service","ContentResource"];function Ie(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t["@type"]=="string"){const e=V.indexOf(t["@type"]);if(e!==-1)return V[e]}if(t.profile)return"Service";if(t.format||t["@type"])return"ContentResource";throw new Error("Resource type is not known")}class S{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationList:[],sequence:[],annotation:[],contentResource:[],choice:[],range:[],service:[],layer:[],...e},this.options={convertPropsToArray:!0,mergeMemberProperties:!0,allowUndefinedReturn:!1,...i}}static all(e){return new S({collection:[e],manifest:[e],canvas:[e],annotationList:[e],sequence:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e],layer:[e]})}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCollectionItems(e))),this.traversals.collection)}traverseCollectionItems(e){if(this.options.mergeMemberProperties){const i=[...(e.manifests||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Manifest"}:n),...(e.collections||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Collection"}:n),...e.members||[]];delete e.collections,delete e.manifests,e.members=i}return e.manifests&&(e.manifests=e.manifests.map(i=>this.traverseManifest(typeof i=="string"?{"@id":i,"@type":"sc:Manifest"}:i))),e.collections&&(e.collections=e.collections.map(i=>this.traverseCollection(typeof i=="string"?{"@id":i,"@type":"sc:Collection"}:i))),e.members&&(e.members=e.members.map(i=>typeof i=="string"?i:this.traverseUnknown(i))),e}traverseManifest(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e))),this.traversals.manifest)}traverseManifestItems(e){return e.sequences&&(e.sequences=e.sequences.map(i=>this.traverseSequence(i))),e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseSequence(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseSequenceItems(e))),this.traversals.sequence)}traverseSequenceItems(e){return e.canvases&&(e.canvases=e.canvases.map(i=>this.traverseCanvas(i))),e}traverseCanvas(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))),this.traversals.canvas)}traverseCanvasItems(e){return e.images&&(e.images=e.images.map(i=>this.traverseAnnotation(i))),e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseRange(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseRangeItems(e))),this.traversals.range)}traverseRangeItems(e){if(this.options.mergeMemberProperties){const i=[...(e.ranges||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Range"}:n),...(e.canvases||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Canvas"}:n),...e.members||[]];delete e.ranges,delete e.canvases,e.members=i.length?i.map(n=>this.traverseUnknown(n)):void 0}return e}traverseAnnotationList(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationListItems(e))),this.traversals.annotationList)}traverseAnnotationListItems(e){return e.resources&&(e.resources=e.resources.map(i=>this.traverseAnnotation(i))),e}traverseAnnotation(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationItems(e))),this.traversals.annotation)}traverseAnnotationItems(e){return e.resource&&(e.resource=this.traverseContentResource(e.resource)),e.on,e}traverseLayer(e){return this.traverseType(this.traverseLinking(this.traverseLayerItems(e)),this.traversals.layer)}traverseLayerItems(e){return e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseChoice(e){return this.traverseType(this.traverseChoiceItems(e),this.traversals.choice)}traverseChoiceItems(e){return e.default&&e.default!=="rdf:nil"&&(e.default=this.traverseContentResource(e.default)),e.item&&e.item!=="rdf:nil"&&(e.item=e.item.map(i=>this.traverseContentResource(i))),e}traverseService(e){return this.traverseType(this.traverseLinking(e),this.traversals.service)}traverseContentResource(e){return e["@type"]==="oa:Choice"?this.traverseChoice(e):this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.contentResource)}traverseUnknown(e){if(!e["@type"]||typeof e=="string")return e;switch(Ie(e)){case"sc:Collection":return this.traverseCollection(e);case"sc:Manifest":return this.traverseManifest(e);case"sc:Canvas":return this.traverseCanvas(e);case"sc:Sequence":return this.traverseSequence(e);case"sc:Range":return this.traverseRange(e);case"oa:Annotation":return this.traverseAnnotation(e);case"oa:AnnotationList":return this.traverseAnnotationList(e);case"sc:Layer":return this.traverseLayer(e);case"Service":return this.traverseService(e);case"oa:Choice":return this.traverseChoice(e);case"ContentResource":return this.traverseContentResource(e)}return e.profile?this.traverseService(e):e}traverseImageResource(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],a=[];for(const r of n)typeof r=="string"?a.push(this.traverseContentResource({"@id":r,"@type":"dctypes:Image"})):a.push(this.traverseContentResource(r));return!i&&!this.options.convertPropsToArray?a[0]:a}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=this.traverseImageResource(e.thumbnail)),e.logo&&(e.logo=this.traverseImageResource(e.logo)),e}traverseOneOrMoreServices(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],a=[];for(const r of n)a.push(this.traverseService(r));return!i&&!this.options.convertPropsToArray?a[0]:a}traverseLinking(e){return e.related&&(e.related=this.traverseOneOrManyType(e.related,this.traversals.contentResource)),e.rendering&&(e.rendering=this.traverseOneOrManyType(e.rendering,this.traversals.contentResource)),e.service&&(e.service=this.traverseOneOrMoreServices(e.service)),e.seeAlso&&(e.seeAlso=this.traverseOneOrManyType(e.seeAlso,this.traversals.contentResource)),e.within&&(typeof e.within=="string"||(e.within=this.traverseOneOrManyType(e.within,this.traversals.contentResource))),e.startCanvas&&(typeof e.startCanvas=="string"?e.startCanvas=this.traverseType({"@id":e.startCanvas,"@type":"sc:Canvas"},this.traversals.canvas):e.startCanvas&&this.traverseType(e.startCanvas,this.traversals.canvas)),e.contentLayer&&(typeof e.contentLayer=="string"?e.contentLayer=this.traverseLayer({"@id":e.contentLayer,"@type":"sc:Layer"}):e.contentLayer=this.traverseLayer(e.contentLayer)),e}traverseOneOrManyType(e,i){if(!Array.isArray(e))if(this.options.convertPropsToArray)e=[e];else return this.traverseType(e,i);return e.map(n=>this.traverseType(n,i))}traverseType(e,i){return i.reduce((n,a)=>{const r=a(n);return typeof r=="undefined"&&!this.options.allowUndefinedReturn?n:r},e)}}const _e="http://library.stanford.edu/iiif/image-api/compliance.html#level0",W="http://library.stanford.edu/iiif/image-api/compliance.html#level1",z="http://library.stanford.edu/iiif/image-api/compliance.html#level2",be="http://library.stanford.edu/iiif/image-api/conformance.html#level0",H="http://library.stanford.edu/iiif/image-api/conformance.html#level1",B="http://library.stanford.edu/iiif/image-api/conformance.html#level2",Re="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0",K="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1",Q="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2",Ee="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0",X="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1",Y="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2",we="http://iiif.io/api/image/1/level0.json",Le="http://iiif.io/api/image/1/profiles/level0.json",Z="http://iiif.io/api/image/1/level1.json",J="http://iiif.io/api/image/1/profiles/level1.json",ee="http://iiif.io/api/image/1/level2.json",te="http://iiif.io/api/image/1/profiles/level2.json",Te="http://iiif.io/api/image/2/level0.json",Me="http://iiif.io/api/image/2/profiles/level0.json",ie="http://iiif.io/api/image/2/level1.json",ne="http://iiif.io/api/image/2/profiles/level1.json",re="http://iiif.io/api/image/2/level2.json",ae="http://iiif.io/api/image/2/profiles/level2.json",Se="level0",se="level1",oe="level2",xe="http://iiif.io/api/image/2/level0",le="http://iiif.io/api/image/2/level1",ve="http://iiif.io/api/image/2/level2",Pe=[le,ve,W,z,H,B,K,Q,X,Y,Z,J,ee,te,ie,ne,re,ae,se,oe],Oe=[xe,le,ve,_e,W,z,be,H,B,Re,K,Q,Ee,X,Y,we,Le,Z,J,ee,te,Te,Me,ie,ne,re,ae,Se,se,oe],x={attributionLabel:"Attribution",lang:"none",providerId:"http://example.org/provider",providerName:"Unknown"};function u(t,e="none"){if(!t)return{};const i=Array.isArray(t)?t:[t],n={};for(const a of i){if(typeof a=="string"){n[e]=n[e]?n[e]:[],n[e].push(a||"");continue}if(!a["@language"]){n[e]=n[e]?n[e]:[],n[e].push(a["@value"]||"");continue}const r=a["@language"];n[r]=n[r]?n[r]:[],n[r].push(a["@value"]||"")}return n}function pe(t){if(Array.isArray(t))return pe(t.find(e=>typeof e=="string"));if(Oe.indexOf(t)!==-1)return"level2";if(Pe.indexOf(t)!==-1)return"level1";if(typeof t=="string")return t}function Fe(t){const e=Array.isArray(t)?t:[t];for(const i of e)switch(i){case"http://iiif.io/api/image/2/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2":return"ImageService2";case"http://iiif.io/api/image/1/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/context.json":return"ImageService1";case"http://iiif.io/api/annex/openannotation/context.json":return"ImageApiSelector"}}function De(t){switch(t){case"http://iiif.io/api/image/2/level0.json":case"http://iiif.io/api/image/2/level1.json":case"http://iiif.io/api/image/2/level2.json":return"ImageService2";case"http://iiif.io/api/auth/1/kiosk":case"http://iiif.io/api/auth/1/login":case"http://iiif.io/api/auth/1/clickthrough":case"http://iiif.io/api/auth/1/external":case"http://iiif.io/api/auth/0/kiosk":case"http://iiif.io/api/auth/0/login":case"http://iiif.io/api/auth/0/clickthrough":case"http://iiif.io/api/auth/0/external":return"AuthCookieService1";case"http://iiif.io/api/auth/1/token":case"http://iiif.io/api/auth/0/token":return"AuthTokenService1";case"http://iiif.io/api/auth/1/logout":case"http://iiif.io/api/auth/0/logout":return"AuthLogoutService1";case"http://iiif.io/api/search/1/search":case"http://iiif.io/api/search/0/search":return"SearchService1";case"http://iiif.io/api/search/1/autocomplete":case"http://iiif.io/api/search/0/autocomplete":return"AutoCompleteService1"}}function ke(t){return Array.isArray(t)?t:[t]}function Ne(t){for(const e of["sc","oa","dcterms","dctypes","iiif"])if(t.startsWith(`${e}:`))return t.slice(e.length+1);return t}function P(t){const e=t["@id"]||t.id;let i=t["@type"]||t.type;const n=t.profile||void 0,a=t["@context"]||void 0;if(n){const r=De(n);if(r)return r}if(a){const r=Fe(a);if(r)return r}if(i){if(Array.isArray(i)){if(i.indexOf("oa:CssStylesheet")!==-1)return"CssStylesheet";if(i.indexOf("cnt:ContentAsText")!==-1)return"TextualBody";i=i[0]}for(const r of["sc","oa","dcterms","dctypes","iiif"])if(i.startsWith(`${r}:`)){i=i.slice(r.length+1);break}switch(i){case"Layer":return"AnnotationCollection";case"AnnotationList":return"AnnotationPage";case"cnt:ContentAsText":return"TextualBody"}}if(t.format){if(t.format.startsWith("image/"))return"Image";if(t.format.startsWith("text/")||t.format==="application/pdf")return"Text";if(t.format.startsWith("application/"))return"Dataset"}return e&&(e.endsWith(".jpg")||e.endsWith(".png")||e.endsWith(".jpeg"))?"Image":i||"unknown"}const je=/http(s)?:\/\/(creativecommons.org|rightsstatements.org)[^"'\\<\n]+/gm;function Ge(t){const e=t.match(je);return e?e[0]:t}function $e(t,e="Rights/License",i="none"){let n=null;const a=[],r=Array.isArray(t)?t:[t];for(const I of r){const o=I?Ge(I):void 0;if(o&&(o.indexOf("creativecommons.org")!==-1||o.indexOf("rightsstatements.org")!==-1)){o.startsWith("https://")?n=`http://${o.slice(8)}`:n=o;continue}o&&a.push({label:{[i]:[e]},value:{[i]:[o]}})}return[n,a]}const qe=["http://iiif.io/api/presentation/2/context.json","http://iiif.io/api/image/2/context.json","http://iiif.io/api/image/1/context.json","http://library.stanford.edu/iiif/image-api/1.1/context.json","http://iiif.io/api/search/1/context.json","http://iiif.io/api/search/0/context.json","http://iiif.io/api/auth/1/context.json","http://iiif.io/api/auth/0/context.json","http://iiif.io/api/annex/openannotation/context.json"];function Ue(t){if(t){const e=Array.isArray(t)?t:[t],i=[];for(const n of e)n==="http://iiif.io/api/presentation/2/context.json"&&i.push("http://iiif.io/api/presentation/3/context.json"),qe.indexOf(n)===-1&&i.push(n);if(e.length)return i.length===1?i[0]:i}}function Ve(t){return t?t.map(e=>({label:u(e.label),value:u(e.value)})):[]}function v(t){for(const e in t)(typeof t[e]=="undefined"||t[e]===null)&&delete t[e];return t}let he=0;function ce(t,e){const i=encodeURI(t.id||t["@id"]||"").trim();return i&&e?`${i}/${e}`:i||(he++,`http://example.org/${t["@type"]}${e?`/${e}`:""}/${he}`)}function p(t){const e=[...t.behavior||[]];return t.viewingHint&&e.push(t.viewingHint),{"@context":t["@context"]?Ue(t["@context"]):void 0,id:(t["@id"]||ce(t)).trim(),type:P(t),behavior:e.length?e:void 0,height:t.height?t.height:void 0,width:t.width?t.width:void 0,motivation:t.motivation?Ne(t.motivation):void 0,viewingDirection:t.viewingDirection,profile:t.profile,format:t.format?t.format:void 0,duration:void 0,timeMode:void 0}}function l(t){const[e,i]=$e(t.license),n=[...t.metadata?Ve(t.metadata):[],...i];return{rights:e,metadata:n.length?n:void 0,label:t.label?u(t.label):void 0,requiredStatement:t.attribution?{label:u(x.attributionLabel),value:u(t.attribution)}:void 0,navDate:t.navDate,summary:t.description?u(t.description):void 0,thumbnail:t.thumbnail}}function We(t){if(!t.within)return;const e=Array.isArray(t.within)?t.within:[t.within],i=[];for(const n of e)if(typeof n=="string"){if(n)switch(t["@type"]){case"sc:Manifest":i.push({id:n,type:"Collection"});break}}else n["@id"]&&i.push({id:n["@id"],type:P(n)});return i.length?i:void 0}function h(t){const e=t.related?Array.isArray(t.related)?t.related:[t.related]:[],i=t.contentLayer;return{provider:t.logo||e.length?[{id:x.providerId,type:"Agent",homepage:e.length?[e[0]]:void 0,logo:t.logo?Array.isArray(t.logo)?t.logo:[t.logo]:void 0,label:u(x.providerName)}]:void 0,partOf:We(t),rendering:t.rendering,seeAlso:t.seeAlso,start:t.startCanvas,service:t.service?ke(t.service):void 0,supplementary:i?[i]:void 0}}function ze(t){return v({...p(t),...l(t),...h(t),items:t.members})}function He(t){const e=[],i=[];for(const a of t.sequences||[])a.canvases.length&&e.push(...a.canvases),a.behavior&&i.push(...a.behavior);const n=p(t);return i.length&&(n.behavior?n.behavior.push(...i):n.behavior=i),v({...n,...l(t),...h(t),items:e,structures:t.structures})}function Be(t){return v({...p(t),...l(t),...h(t),items:t.images&&t.images.length?[{id:ce(t,"annotation-page"),type:"AnnotationPage",items:t.images}]:void 0})}function Ke(t){return v({...p(t),...l(t),...h(t),items:t.resources})}function Qe(t){return!t.canvases||t.canvases.length===0?{canvases:[],behavior:[]}:{canvases:t.canvases,behavior:t.viewingHint?[t.viewingHint]:[]}}function Xe(t){return v({...p(t),...l(t),...h(t),target:typeof t.on=="string"?encodeURI(t.on).trim():t.on,body:t.resource})}function Ye(t){const e=t;return v({...p(e),...l(e),...h(e)})}function Ze(t){const e=[];return t.default&&t.default!=="rdf:nil"&&e.push(t.default),t.item&&t.item!=="rdf:nil"&&e.push(...t.item),{...p(t),...l(t),items:e}}function Je(t){return v({...p(t),...l(t),...h(t),items:t.members})}function et(t){const{"@id":e,"@type":i,"@context":n,profile:a,...r}=t;return e&&(r.id=e),r.type=P(t),r.type==="unknown"&&(r.type="Service"),a&&(r.profile=pe(a)),v({...r,...l(r)})}function tt(t){return v({...p(t),...l(t),...h(t)})}const it=new S({collection:[ze],manifest:[He],canvas:[Be],annotationList:[Ke],sequence:[Qe],annotation:[Xe],contentResource:[Ye],choice:[Ze],range:[Je],service:[et],layer:[tt]});function nt(t){return t&&t["@context"]&&(t["@context"]==="http://iiif.io/api/presentation/2/context.json"||t["@context"].indexOf("http://iiif.io/api/presentation/2/context.json")!==-1||t["@context"]==="http://www.shared-canvas.org/ns/context.json")||t["@context"]==="http://iiif.io/api/image/2/context.json"?it.traverseUnknown(t):t}const rt={Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}};function fe(){return{Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}}}function ue(t,e){if(typeof t=="string")return{id:t,type:e};if(!t.id)throw new Error(`Invalid resource does not have an ID (${e})`);return t}function at(t){return(e,i)=>{const n=t[e]?t[e]:{};return a=>{const r=ue(a,i||e);return r&&r.id&&e?(n[r.id]=n[r.id]?Object.assign({},n[r.id],r):Object.assign({},r),{id:r.id,type:e==="ContentResource"?e:r.type}):r}}}function st(t){return(e,i)=>n=>{const{id:a,type:r}=ue(n,i||e);if(typeof a=="undefined")throw new Error("Found invalid entity without an ID.");return e==="ContentResource"?t[a]=e:t[a]=r,n}}function ot(t){const e=JSON.stringify(t);let i=5381,n=e.length;for(;n;)i=i*33^e.charCodeAt(--n);const r=(i>>>0).toString(16);return r.length%2?"0"+r:r}function O(t){return e=>typeof e=="string"?{id:e,type:t}:e.id?e.type?e:{type:t,...e}:{id:ot(e),type:t,...e}}function _(t){return e=>({...t,...e})}function b(t){return Array.isArray(t)?t:[t]}function lt(t){return t.body&&(t.body=b(t.body)),t.seeAlso&&(t.seeAlso=b(t.seeAlso)),t.body&&(t.body=b(t.body)),t.audience&&(t.audience=b(t.audience)),t.accessibility&&(t.accessibility=b(t.accessibility)),t.motivation&&(t.motivation=b(t.motivation)),t}function vt(t){const e=nt(t),i=fe(),n={},a=at(i),r=st(n),o=new L({collection:[_(j),r("Collection"),a("Collection")],manifest:[_(G),r("Manifest"),a("Manifest")],canvas:[_(N),r("Canvas"),a("Canvas")],annotationPage:[O("AnnotationPage"),_(k),r("AnnotationPage"),a("AnnotationPage")],annotation:[O("Annotation"),lt,r("Annotation"),a("Annotation")],contentResource:[O("ContentResource"),r("ContentResource"),a("ContentResource")],range:[_($),r("Range","Canvas"),a("Range","Canvas")],agent:[_(q),r("Agent"),a("Agent")]}).traverseUnknown(e);return{entities:i,resource:o,mapping:n}}const c="__$UNSET$__",F="__$UNWRAP$__";function pt(t,e){const i=t.requests[e],n=t.mapping[e];if(!(!n||i&&i.resourceUri&&!t.entities[n][i.resourceUri]))return t.entities[n][i?i.resourceUri:e]}function de(t){const e={};for(const[i,n]of t){if(i===F&&n!==c)return n;n!==c&&typeof n!="undefined"&&n!==null&&(e[i]=n)}return e}function ht(t,e,i){if(!e.type||!e.id)throw new Error("Unknown entity");if(!i[e.type])throw new Error(`Serializer not found for ${e.type}`);function n(a){const r=i[a.type];if(!r)return c;const I=pt(t,a.id)||(a.id&&a.type?a:null);if(!I)return c;const o=r(I,t,{isTopLevel:e.id===a.id});let R=o.next();for(;!R.done;){const w=R.value;let T=c;if(w)if(Array.isArray(w)){const D=[];for(const Ae of w)D.push(n(Ae));T=D}else T=n(w);R=o.next(T)}return R.value===c?c:de(R.value)}return n(e)}function d(t){if(!t)return;const e=Object.keys(t);if(e.length!==0){if(e.length===1){const i=e[0];if(!i)return"";const n=(t[i]||[]).join("");return i==="@none"||i==="none"||i==="en"?n:{"@language":i,"@value":n}}return e.map(i=>({"@language":i,"@value":(t[i]||[]).join("")}))}}function me(t){return Array.isArray(t)?t.map(e=>me(e)):typeof t=="string"?t:t.type&&t.type==="Canvas"?t.id:t}function f(t,e=!1){if(!!t)return t.length>1&&!e?t:t[0]||void 0}function ct(t){if(!!t){if(typeof t=="string")return{"@id":t};if("@id"in t){const e={...t};return delete e["@type"],e}return{"@context":"http://iiif.io/api/image/2/context.json","@id":t.id,profile:`http://iiif.io/api/image/2/profiles/${t.profile}.json`}}}function m(t,e){return[["@id",t.id],["@type",e],["format",t.format],["height",t.height],["width",t.width],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0]]}function*g(t){const e=t.provider?yield t.provider[0]:void 0;return[["label",d(t.label)],["metadata",t.metadata&&t.metadata.length?t.metadata.map(i=>({label:d(i.label)||"",value:d(i.value)||""})):void 0],["description",d(t.summary)],["thumbnail",f(yield t.thumbnail)],["navDate",t.navDate],["logo",e?f(e.logo):void 0],["homepage",e?e.homepage:void 0],["attribution",t.requiredStatement?d(t.requiredStatement.value):void 0]]}function*E(t){return[["seeAlso",f(yield t.seeAlso)],["service",f((t.service||[]).map(ct))],["rendering",f(yield t.rendering)],["startCanvas",t.start?t.start.id:void 0]]}const ft={Manifest:function*(t){return[...m(t,"sc:Manifest"),...yield*g(t),...yield*E(t),["sequences",[{"@id":`${t.id}/sequence0`,"@type":"sc:Sequence",canvases:yield t.items}]],["structures",yield t.structures]]},Canvas:function*(t){const i=(yield t.items)[0];return[...m(t,"sc:Canvas"),...yield*g(t),...yield*E(t),["images",i?[i.resources]:void 0],["annotations",t.annotations&&t.annotations.length?f(yield t.annotations):void 0]]},AnnotationPage:function*(t){return[...m(t,"sc:AnnotationList"),...yield*g(t),["resources",t.items&&t.items.length?f(yield t.items):void 0]]},Annotation:function*(t){return[["@id",t.id],["@type","oa:Annotation"],["motivation","sc:painting"],["on",me(t.target)],["resource",f(yield t.body,!0)]]},ContentResource:function*(t){switch(t.type){case"Image":return[...m(t,"dctypes:Image"),...yield*g(t),...yield*E(t)];case"Text":case"Dataset":default:return[...m(t,void 0),...yield*g(t)]}},AnnotationCollection:function*(t){return[["@id",t.id],["@type","sc:Layer"],["label",d(t.label)]]},Collection:function*(t){return[...m(t,"sc:Collection"),...yield*g(t),...yield*E(t),["members",yield*t.items]]},Range:function*(t){const e=[],i=[];if(t.items)for(const n of t.items){const a=yield n;e.push({"@id":n.id,"@type":n.type,label:a?a.label:void 0,within:t.id}),n.type==="Canvas"&&i.push(n.id)}return[...m(t,"sc:Range"),...yield*g(t),...yield*E(t),["canvases",i.length===e.length?i:void 0],["members",i.length!==e.length?e:void 0]]}};function y(t){return[["id",t.id],["type",t.type],["format",t.format],["profile",t.profile],["height",t.height],["width",t.width],["duration",t.duration||void 0],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0],["behavior",t.behavior&&t.behavior.length?t.behavior:void 0],["timeMode",t.timeMode],["motivation",t.motivation]]}function s(t){if(!(!t||t.length===0))return t}function ge(t){if(t&&t.type&&t.type==="ImageService2"){const{id:e,type:i,profile:n,...a}=t;return{"@id":e,"@type":i,profile:n.startsWith("http")?n:`http://iiif.io/api/image/2/${n}.json`,...a}}return t}function ye(t){if(!(!t||t.length===0))return t.map(ge)}function*A(t){return[["label",t.label],["metadata",s(t.metadata)],["summary",t.summary],["requiredStatement",t.requiredStatement],["rights",t.rights],["navDate",t.navDate],["language",t.language],["thumbnail",s(yield t.thumbnail)],["placeholderCanvas",yield t.placeholderCanvas],["accompanyingCanvas",yield t.accompanyingCanvas],["provider",s(yield t.provider)]]}function*C(t){return[["seeAlso",s(yield t.seeAlso)],["service",ye(t.service)],["services",ye(t.services)],["rendering",s(yield t.rendering)],["supplementary",s(yield t.supplementary)],["homepage",s(yield t.homepage)],["logo",s(yield t.logo)],["partOf",s(yield t.partOf)],["start",t.start]]}const ut={Manifest:function*(t,e,{isTopLevel:i}){return i?[["@context","http://iiif.io/api/presentation/3/context.json"],...y(t),...yield*A(t),...yield*C(t),["items",yield t.items],["structures",s(yield t.structures)],["annotations",s(yield t.annotations)]]:[...y(t),...yield*A(t)]},Canvas:function*(t){return[...y(t),...yield*A(t),...yield*C(t),["items",yield t.items],["annotations",s(yield t.annotations)]]},Agent:function*(t){return[["id",t.id],["type","Agent"],["label",t.label],...yield*C(t)]},AnnotationPage:function*(t){return[...Object.entries(t).map(([i,n])=>[i,Array.isArray(n)?s(n):n]).filter(([i,n])=>i!=="items"),...yield*C(t),["items",yield t.items]]},Service:function*(t){return[[F,ge(t)]]},Annotation:function*(t){return[...Object.entries(t).map(([i,n])=>[i,Array.isArray(n)?s(n):n]).filter(([i])=>i!=="body"),["body",yield t.body]]},ContentResource:function*(t){return[...y(t),...yield*A(t),...yield*C(t),["annotations",s(yield t.annotations)]]},AnnotationCollection:function*(t){return[["id",t.id],["type","AnnotationCollection"],["label",t.label]]},Collection:function*(t,e,{isTopLevel:i}){return i?[["@context","http://iiif.io/api/presentation/3/context.json"],...y(t),...yield*A(t),...yield*C(t),["items",s(yield t.items)],["annotations",s(yield t.annotations)]]:[...y(t),...yield*A(t)]},Range:function*(t){const e=[];for(const i of t.items)i.type==="Range"?e.push(yield i):e.push(i);return[...y(t),...yield*A(t),...yield*C(t),["items",e],["annotations",s(yield t.annotations)]]}};exports.Traverse=L,exports.UNSET=c,exports.UNWRAP=F,exports.defaultEntities=rt,exports.emptyAgent=q,exports.emptyAnnotation=Ce,exports.emptyAnnotationPage=k,exports.emptyCanvas=N,exports.emptyCollection=j,exports.emptyManifest=G,exports.emptyRange=$,exports.getDefaultEntities=fe,exports.identifyResource=U,exports.languageString2to3=d,exports.normalize=vt,exports.serialize=ht,exports.serializeConfigPresentation2=ft,exports.serializeConfigPresentation3=ut,exports.serializedFieldsToObject=de,exports.types=M;

@@ -1,1 +0,1 @@

const Ie={id:"https://iiif-parser/annotation",type:"Annotation",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[],accessibility:[],audience:[],body:[],bodyValue:null,canonical:null,created:null,creator:[],generated:null,generator:[],modified:null,motivation:[],rights:[],stylesheet:null,target:[],timeMode:void 0,via:[],partOf:[]},k={id:"https://iiif-parser/annotation-page",type:"AnnotationPage",behavior:[],motivation:null,label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[]},N={id:"https://iiif-parser/empty-canvas",type:"Canvas",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],duration:0,height:0,width:0},j={id:"https://iiif-parser/empty-collection",type:"Collection",label:null,viewingDirection:"left-to-right",behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],services:[]},G={id:"https://iiif-parser/empty-manifest",type:"Manifest",annotations:[],behavior:[],homepage:[],items:[],label:null,logo:[],metadata:[],motivation:null,navDate:null,provider:[],partOf:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,rendering:[],requiredStatement:null,rights:null,seeAlso:[],service:[],services:[],start:null,structures:[],summary:null,thumbnail:[],viewingDirection:"left-to-right"},$={id:"https://iiif-parser/empty-canvas",type:"Range",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],start:null,supplementary:null,viewingDirection:"left-to-right"},q={id:"https://iiif-parser/empty-agent",type:"Agent",label:{},logo:[],seeAlso:[],homepage:[]},M=["Collection","Manifest","Canvas","AnnotationPage","AnnotationCollection","Annotation","ContentResource","Range","Service","Selector","Agent"];function U(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t.type=="string"){const e=M.indexOf(t.type);if(e!==-1)return M[e]}if(t.profile)return"Service";throw new Error("Resource type is not known")}class L{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationCollection:[],annotationPage:[],annotation:[],contentResource:[],choice:[],range:[],service:[],agent:[],...e},this.options={allowUndefinedReturn:!1,...i}}static all(e){return new L({collection:[e],manifest:[e],canvas:[e],annotationCollection:[e],annotationPage:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e]})}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=e.thumbnail.map(i=>this.traverseType(i,this.traversals.contentResource))),e.provider&&(e.provider=e.provider.map(i=>this.traverseAgent(i))),e}traverseLinking(e){return e.seeAlso&&(e.seeAlso=e.seeAlso.map(i=>this.traverseType(i,this.traversals.contentResource))),e.service&&(e.service=e.service.map(i=>this.traverseType(i,this.traversals.service))),e.services&&(e.services=e.services.map(i=>this.traverseType(i,this.traversals.service))),e.logo&&(e.logo=e.logo.map(i=>this.traverseType(i,this.traversals.contentResource))),e.homepage&&(e.homepage=e.homepage.map(i=>this.traverseType(i,this.traversals.contentResource))),e.partOf&&(e.partOf=e.partOf.map(i=>typeof i=="string"||!i.type?this.traverseType(i,this.traversals.contentResource):i.type==="Canvas"?this.traverseType(i,this.traversals.canvas):i.type==="AnnotationCollection"?this.traverseType(i,this.traversals.annotationCollection):this.traverseType(i,this.traversals.contentResource))),e.start&&(e.start=e.start?this.traverseType(e.start,this.traversals.canvas):null),e.rendering&&(e.rendering=e.rendering.map(i=>this.traverseType(i,this.traversals.contentResource))),e.supplementary&&(e.supplementary=e.supplementary.map(i=>this.traverseType(i,this.traversals.contentResource))),e}traverseCollectionItems(e){return e.items&&e.items.map(i=>i.type==="Collection"?this.traverseCollection(i):this.traverseManifest(i)),e}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseInlineAnnotationPages(this.traverseLinking(this.traversePosterCanvas(this.traverseCollectionItems(e))))),this.traversals.collection)}traverseManifestItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseCanvas(i))),e}traverseManifestStructures(e){return e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseManifest(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traverseManifestStructures(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e)))))),this.traversals.manifest)}traverseCanvasItems(e){return e.items=(e.items||[]).map(i=>this.traverseAnnotationPage(i)),e}traverseInlineAnnotationPages(e){return typeof e=="string"||!e||e.annotations&&(e.annotations=e.annotations.map(i=>this.traverseAnnotationPage(i))),e}traverseCanvas(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))))),this.traversals.canvas)}traverseAnnotationPageItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseAnnotation(i))),e}traverseAnnotationPage(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationPageItems(e))),this.traversals.annotationPage)}traverseAnnotationBody(e){return Array.isArray(e.body)?e.body=e.body.map(i=>this.traverseContentResource(i)):e.body&&(e.body=this.traverseContentResource(e.body)),e}traversePosterCanvas(e){return e.posterCanvas&&(e.posterCanvas=this.traverseType(e.posterCanvas,this.traversals.canvas)),e.placeholderCanvas&&(e.placeholderCanvas=this.traverseType(e.placeholderCanvas,this.traversals.canvas)),e.accompanyingCanvas&&(e.accompanyingCanvas=this.traverseType(e.accompanyingCanvas,this.traversals.canvas)),e}traverseAnnotation(e){return this.traverseType(this.traverseLinking(this.traverseAnnotationBody(e)),this.traversals.annotation)}traverseContentResourceLinking(e){return typeof e=="string"||!e||e&&e.service&&(e.service=(e.service||[]).map(i=>this.traverseType(i,this.traversals.service))),e}traverseContentResource(e){return e.type==="Choice"&&(e.items=e.items.map(i=>this.traverseContentResource(i))),this.traverseType(this.traverseInlineAnnotationPages(this.traverseContentResourceLinking(e)),this.traversals.contentResource)}traverseRangeRanges(e){return e.items&&(e.items=e.items.map(i=>typeof i=="string"?this.traverseCanvas({id:i,type:"Canvas"}):i.type==="Manifest"?this.traverseManifest(i):this.traverseRange(i))),e}traverseRange(e){return this.traverseType(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseRangeRanges(e)))),this.traversals.range)}traverseAgent(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.agent)}traverseType(e,i){return i.reduce((n,a)=>{const r=a(n);return typeof r=="undefined"&&!this.options.allowUndefinedReturn?n:r},e)}traverseService(e){return this.traverseType(e,this.traversals.service)}traverseUnknown(e){const i=U(e);switch(i){case"Collection":return this.traverseCollection(e);case"Manifest":return this.traverseManifest(e);case"Canvas":return this.traverseCanvas(e);case"AnnotationPage":return this.traverseAnnotationPage(e);case"Annotation":return this.traverseAnnotation(e);case"ContentResource":return this.traverseContentResource(e);case"Range":return this.traverseRange(e);case"Service":return this.traverseService(e);case"Agent":return this.traverseAgent(e);default:throw new Error(`Unknown or unsupported resource type of ${i}`)}}}const V=["sc:Collection","sc:Manifest","sc:Canvas","oa:AnnotationList","oa:Annotation","sc:Range","sc:Layer","sc:Sequence","oa:Choice","Service","ContentResource"];function Ce(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t["@type"]=="string"){const e=V.indexOf(t["@type"]);if(e!==-1)return V[e]}if(t.profile)return"Service";if(t.format||t["@type"])return"ContentResource";throw new Error("Resource type is not known")}class S{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationList:[],sequence:[],annotation:[],contentResource:[],choice:[],range:[],service:[],layer:[],...e},this.options={convertPropsToArray:!0,mergeMemberProperties:!0,allowUndefinedReturn:!1,...i}}static all(e){return new S({collection:[e],manifest:[e],canvas:[e],annotationList:[e],sequence:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e],layer:[e]})}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCollectionItems(e))),this.traversals.collection)}traverseCollectionItems(e){if(this.options.mergeMemberProperties){const i=[...(e.manifests||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Manifest"}:n),...(e.collections||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Collection"}:n),...e.members||[]];delete e.collections,delete e.manifests,e.members=i}return e.manifests&&(e.manifests=e.manifests.map(i=>this.traverseManifest(typeof i=="string"?{"@id":i,"@type":"sc:Manifest"}:i))),e.collections&&(e.collections=e.collections.map(i=>this.traverseCollection(typeof i=="string"?{"@id":i,"@type":"sc:Collection"}:i))),e.members&&(e.members=e.members.map(i=>typeof i=="string"?i:this.traverseUnknown(i))),e}traverseManifest(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e))),this.traversals.manifest)}traverseManifestItems(e){return e.sequences&&(e.sequences=e.sequences.map(i=>this.traverseSequence(i))),e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseSequence(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseSequenceItems(e))),this.traversals.sequence)}traverseSequenceItems(e){return e.canvases&&(e.canvases=e.canvases.map(i=>this.traverseCanvas(i))),e}traverseCanvas(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))),this.traversals.canvas)}traverseCanvasItems(e){return e.images&&(e.images=e.images.map(i=>this.traverseAnnotation(i))),e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseRange(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseRangeItems(e))),this.traversals.range)}traverseRangeItems(e){if(this.options.mergeMemberProperties){const i=[...(e.ranges||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Range"}:n),...(e.canvases||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Canvas"}:n),...e.members||[]];delete e.ranges,delete e.canvases,e.members=i.length?i.map(n=>this.traverseUnknown(n)):void 0}return e}traverseAnnotationList(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationListItems(e))),this.traversals.annotationList)}traverseAnnotationListItems(e){return e.resources&&(e.resources=e.resources.map(i=>this.traverseAnnotation(i))),e}traverseAnnotation(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationItems(e))),this.traversals.annotation)}traverseAnnotationItems(e){return e.resource&&(e.resource=this.traverseContentResource(e.resource)),e.on,e}traverseLayer(e){return this.traverseType(this.traverseLinking(this.traverseLayerItems(e)),this.traversals.layer)}traverseLayerItems(e){return e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseChoice(e){return this.traverseType(this.traverseChoiceItems(e),this.traversals.choice)}traverseChoiceItems(e){return e.default&&e.default!=="rdf:nil"&&(e.default=this.traverseContentResource(e.default)),e.item&&e.item!=="rdf:nil"&&(e.item=e.item.map(i=>this.traverseContentResource(i))),e}traverseService(e){return this.traverseType(this.traverseLinking(e),this.traversals.service)}traverseContentResource(e){return e["@type"]==="oa:Choice"?this.traverseChoice(e):this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.contentResource)}traverseUnknown(e){if(!e["@type"]||typeof e=="string")return e;switch(Ce(e)){case"sc:Collection":return this.traverseCollection(e);case"sc:Manifest":return this.traverseManifest(e);case"sc:Canvas":return this.traverseCanvas(e);case"sc:Sequence":return this.traverseSequence(e);case"sc:Range":return this.traverseRange(e);case"oa:Annotation":return this.traverseAnnotation(e);case"oa:AnnotationList":return this.traverseAnnotationList(e);case"sc:Layer":return this.traverseLayer(e);case"Service":return this.traverseService(e);case"oa:Choice":return this.traverseChoice(e);case"ContentResource":return this.traverseContentResource(e)}return e.profile?this.traverseService(e):e}traverseImageResource(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],a=[];for(const r of n)typeof r=="string"?a.push(this.traverseContentResource({"@id":r,"@type":"dctypes:Image"})):a.push(this.traverseContentResource(r));return!i&&!this.options.convertPropsToArray?a[0]:a}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=this.traverseImageResource(e.thumbnail)),e.logo&&(e.logo=this.traverseImageResource(e.logo)),e}traverseOneOrMoreServices(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],a=[];for(const r of n)a.push(this.traverseService(r));return!i&&!this.options.convertPropsToArray?a[0]:a}traverseLinking(e){return e.related&&(e.related=this.traverseOneOrManyType(e.related,this.traversals.contentResource)),e.rendering&&(e.rendering=this.traverseOneOrManyType(e.rendering,this.traversals.contentResource)),e.service&&(e.service=this.traverseOneOrMoreServices(e.service)),e.seeAlso&&(e.seeAlso=this.traverseOneOrManyType(e.seeAlso,this.traversals.contentResource)),e.within&&(typeof e.within=="string"||(e.within=this.traverseOneOrManyType(e.within,this.traversals.contentResource))),e.startCanvas&&(typeof e.startCanvas=="string"?e.startCanvas=this.traverseType({"@id":e.startCanvas,"@type":"sc:Canvas"},this.traversals.canvas):e.startCanvas&&this.traverseType(e.startCanvas,this.traversals.canvas)),e.contentLayer&&(typeof e.contentLayer=="string"?e.contentLayer=this.traverseLayer({"@id":e.contentLayer,"@type":"sc:Layer"}):e.contentLayer=this.traverseLayer(e.contentLayer)),e}traverseOneOrManyType(e,i){if(!Array.isArray(e))if(this.options.convertPropsToArray)e=[e];else return this.traverseType(e,i);return e.map(n=>this.traverseType(n,i))}traverseType(e,i){return i.reduce((n,a)=>{const r=a(n);return typeof r=="undefined"&&!this.options.allowUndefinedReturn?n:r},e)}}const _e="http://library.stanford.edu/iiif/image-api/compliance.html#level0",W="http://library.stanford.edu/iiif/image-api/compliance.html#level1",z="http://library.stanford.edu/iiif/image-api/compliance.html#level2",be="http://library.stanford.edu/iiif/image-api/conformance.html#level0",H="http://library.stanford.edu/iiif/image-api/conformance.html#level1",B="http://library.stanford.edu/iiif/image-api/conformance.html#level2",Re="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0",K="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1",Q="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2",Ee="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0",X="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1",Y="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2",we="http://iiif.io/api/image/1/level0.json",Le="http://iiif.io/api/image/1/profiles/level0.json",Z="http://iiif.io/api/image/1/level1.json",J="http://iiif.io/api/image/1/profiles/level1.json",ee="http://iiif.io/api/image/1/level2.json",te="http://iiif.io/api/image/1/profiles/level2.json",Te="http://iiif.io/api/image/2/level0.json",Me="http://iiif.io/api/image/2/profiles/level0.json",ie="http://iiif.io/api/image/2/level1.json",ne="http://iiif.io/api/image/2/profiles/level1.json",re="http://iiif.io/api/image/2/level2.json",ae="http://iiif.io/api/image/2/profiles/level2.json",Se="level0",se="level1",oe="level2",xe="http://iiif.io/api/image/2/level0",le="http://iiif.io/api/image/2/level1",ve="http://iiif.io/api/image/2/level2",Oe=[le,ve,W,z,H,B,K,Q,X,Y,Z,J,ee,te,ie,ne,re,ae,se,oe],Pe=[xe,le,ve,_e,W,z,be,H,B,Re,K,Q,Ee,X,Y,we,Le,Z,J,ee,te,Te,Me,ie,ne,re,ae,Se,se,oe],x={attributionLabel:"Attribution",lang:"none",providerId:"http://example.org/provider",providerName:"Unknown"};function u(t,e="none"){if(!t)return{};const i=Array.isArray(t)?t:[t],n={};for(const a of i){if(typeof a=="string"){n[e]=n[e]?n[e]:[],n[e].push(a||"");continue}if(!a["@language"]){n[e]=n[e]?n[e]:[],n[e].push(a["@value"]||"");continue}const r=a["@language"];n[r]=n[r]?n[r]:[],n[r].push(a["@value"]||"")}return n}function pe(t){if(Array.isArray(t))return pe(t.find(e=>typeof e=="string"));if(Pe.indexOf(t)!==-1)return"level2";if(Oe.indexOf(t)!==-1)return"level1";if(typeof t=="string")return t}function Fe(t){const e=Array.isArray(t)?t:[t];for(const i of e)switch(i){case"http://iiif.io/api/image/2/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2":return"ImageService2";case"http://iiif.io/api/image/1/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/context.json":return"ImageService1";case"http://iiif.io/api/annex/openannotation/context.json":return"ImageApiSelector"}}function De(t){switch(t){case"http://iiif.io/api/image/2/level0.json":case"http://iiif.io/api/image/2/level1.json":case"http://iiif.io/api/image/2/level2.json":return"ImageService2";case"http://iiif.io/api/auth/1/kiosk":case"http://iiif.io/api/auth/1/login":case"http://iiif.io/api/auth/1/clickthrough":case"http://iiif.io/api/auth/1/external":case"http://iiif.io/api/auth/0/kiosk":case"http://iiif.io/api/auth/0/login":case"http://iiif.io/api/auth/0/clickthrough":case"http://iiif.io/api/auth/0/external":return"AuthCookieService1";case"http://iiif.io/api/auth/1/token":case"http://iiif.io/api/auth/0/token":return"AuthTokenService1";case"http://iiif.io/api/auth/1/logout":case"http://iiif.io/api/auth/0/logout":return"AuthLogoutService1";case"http://iiif.io/api/search/1/search":case"http://iiif.io/api/search/0/search":return"SearchService1";case"http://iiif.io/api/search/1/autocomplete":case"http://iiif.io/api/search/0/autocomplete":return"AutoCompleteService1"}}function ke(t){return Array.isArray(t)?t:[t]}function Ne(t){for(const e of["sc","oa","dcterms","dctypes","iiif"])if(t.startsWith(`${e}:`))return t.slice(e.length+1);return t}function O(t){const e=t["@id"]||t.id;let i=t["@type"]||t.type;const n=t.profile||void 0,a=t["@context"]||void 0;if(n){const r=De(n);if(r)return r}if(a){const r=Fe(a);if(r)return r}if(i){if(Array.isArray(i)){if(i.indexOf("oa:CssStylesheet")!==-1)return"CssStylesheet";if(i.indexOf("cnt:ContentAsText")!==-1)return"TextualBody";i=i[0]}for(const r of["sc","oa","dcterms","dctypes","iiif"])if(i.startsWith(`${r}:`)){i=i.slice(r.length+1);break}switch(i){case"Layer":return"AnnotationCollection";case"AnnotationList":return"AnnotationPage";case"cnt:ContentAsText":return"TextualBody"}}if(t.format){if(t.format.startsWith("image/"))return"Image";if(t.format.startsWith("text/")||t.format==="application/pdf")return"Text";if(t.format.startsWith("application/"))return"Dataset"}return e&&(e.endsWith(".jpg")||e.endsWith(".png")||e.endsWith(".jpeg"))?"Image":i||"unknown"}const je=/http(s)?:\/\/(creativecommons.org|rightsstatements.org)[^"'\\<\n]+/gm;function Ge(t){const e=t.match(je);return e?e[0]:t}function $e(t,e="Rights/License",i="none"){let n=null;const a=[],r=Array.isArray(t)?t:[t];for(const A of r){const o=A?Ge(A):void 0;if(o&&(o.indexOf("creativecommons.org")!==-1||o.indexOf("rightsstatements.org")!==-1)){o.startsWith("https://")?n=`http://${o.slice(8)}`:n=o;continue}o&&a.push({label:{[i]:[e]},value:{[i]:[o]}})}return[n,a]}const qe=["http://iiif.io/api/presentation/2/context.json","http://iiif.io/api/image/2/context.json","http://iiif.io/api/image/1/context.json","http://library.stanford.edu/iiif/image-api/1.1/context.json","http://iiif.io/api/search/1/context.json","http://iiif.io/api/search/0/context.json","http://iiif.io/api/auth/1/context.json","http://iiif.io/api/auth/0/context.json","http://iiif.io/api/annex/openannotation/context.json"];function Ue(t){if(t){const e=Array.isArray(t)?t:[t],i=[];for(const n of e)n==="http://iiif.io/api/presentation/2/context.json"&&i.push("http://iiif.io/api/presentation/3/context.json"),qe.indexOf(n)===-1&&i.push(n);if(e.length)return i.length===1?i[0]:i}}function Ve(t){return t?t.map(e=>({label:u(e.label),value:u(e.value)})):[]}function v(t){for(const e in t)(typeof t[e]=="undefined"||t[e]===null)&&delete t[e];return t}let he=0;function ce(t,e){const i=encodeURI(t.id||t["@id"]||"").trim();return i&&e?`${i}/${e}`:i||(he++,`http://example.org/${t["@type"]}${e?`/${e}`:""}/${he}`)}function p(t){const e=[...t.behavior||[]];return t.viewingHint&&e.push(t.viewingHint),{"@context":t["@context"]?Ue(t["@context"]):void 0,id:(t["@id"]||ce(t)).trim(),type:O(t),behavior:e.length?e:void 0,height:t.height?t.height:void 0,width:t.width?t.width:void 0,motivation:t.motivation?Ne(t.motivation):void 0,viewingDirection:t.viewingDirection,profile:t.profile,format:t.format?t.format:void 0,duration:void 0,timeMode:void 0}}function l(t){const[e,i]=$e(t.license),n=[...t.metadata?Ve(t.metadata):[],...i];return{rights:e,metadata:n.length?n:void 0,label:t.label?u(t.label):void 0,requiredStatement:t.attribution?{label:u(x.attributionLabel),value:u(t.attribution)}:void 0,navDate:t.navDate,summary:t.description?u(t.description):void 0,thumbnail:t.thumbnail}}function We(t){if(!t.within)return;const e=Array.isArray(t.within)?t.within:[t.within],i=[];for(const n of e)if(typeof n=="string"){if(n)switch(t["@type"]){case"sc:Manifest":i.push({id:n,type:"Collection"});break}}else n["@id"]&&i.push({id:n["@id"],type:O(n)});return i.length?i:void 0}function h(t){const e=t.related?Array.isArray(t.related)?t.related:[t.related]:[],i=t.contentLayer;return{provider:t.logo||e.length?[{id:x.providerId,type:"Agent",homepage:e.length?[e[0]]:void 0,logo:t.logo?Array.isArray(t.logo)?t.logo:[t.logo]:void 0,label:u(x.providerName)}]:void 0,partOf:We(t),rendering:t.rendering,seeAlso:t.seeAlso,start:t.startCanvas,service:t.service?ke(t.service):void 0,supplementary:i?[i]:void 0}}function ze(t){return v({...p(t),...l(t),...h(t),items:t.members})}function He(t){const e=[],i=[];for(const a of t.sequences||[])a.canvases.length&&e.push(...a.canvases),a.behavior&&i.push(...a.behavior);const n=p(t);return i.length&&(n.behavior?n.behavior.push(...i):n.behavior=i),v({...n,...l(t),...h(t),items:e,structures:t.structures})}function Be(t){return v({...p(t),...l(t),...h(t),items:t.images&&t.images.length?[{id:ce(t,"annotation-page"),type:"AnnotationPage",items:t.images}]:void 0})}function Ke(t){return v({...p(t),...l(t),...h(t),items:t.resources})}function Qe(t){return!t.canvases||t.canvases.length===0?{canvases:[],behavior:[]}:{canvases:t.canvases,behavior:t.viewingHint?[t.viewingHint]:[]}}function Xe(t){return v({...p(t),...l(t),...h(t),target:typeof t.on=="string"?encodeURI(t.on).trim():t.on,body:t.resource})}function Ye(t){const e=t;return v({...p(e),...l(e),...h(e)})}function Ze(t){const e=[];return t.default&&t.default!=="rdf:nil"&&e.push(t.default),t.item&&t.item!=="rdf:nil"&&e.push(...t.item),{...p(t),...l(t),items:e}}function Je(t){return v({...p(t),...l(t),...h(t),items:t.members})}function et(t){const{"@id":e,"@type":i,"@context":n,profile:a,...r}=t;return e&&(r.id=e),r.type=O(t),r.type==="unknown"&&(r.type="Service"),a&&(r.profile=pe(a)),v({...r,...l(r)})}function tt(t){return v({...p(t),...l(t),...h(t)})}const it=new S({collection:[ze],manifest:[He],canvas:[Be],annotationList:[Ke],sequence:[Qe],annotation:[Xe],contentResource:[Ye],choice:[Ze],range:[Je],service:[et],layer:[tt]});function nt(t){return t&&t["@context"]&&(t["@context"]==="http://iiif.io/api/presentation/2/context.json"||t["@context"].indexOf("http://iiif.io/api/presentation/2/context.json")!==-1||t["@context"]==="http://www.shared-canvas.org/ns/context.json")||t["@context"]==="http://iiif.io/api/image/2/context.json"?it.traverseUnknown(t):t}const rt={Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}};function fe(){return{Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}}}function ue(t,e){if(typeof t=="string")return{id:t,type:e};if(!t.id)throw new Error(`Invalid resource does not have an ID (${e})`);return t}function at(t){return(e,i)=>{const n=t[e]?t[e]:{};return a=>{const r=ue(a,i||e);return r&&r.id&&e?(n[r.id]=n[r.id]?Object.assign({},n[r.id],r):Object.assign({},r),{id:r.id,type:e==="ContentResource"?e:r.type}):r}}}function st(t){return(e,i)=>n=>{const{id:a,type:r}=ue(n,i||e);if(typeof a=="undefined")throw new Error("Found invalid entity without an ID.");return e==="ContentResource"?t[a]=e:t[a]=r,n}}function ot(t){const e=JSON.stringify(t);let i=5381,n=e.length;for(;n;)i=i*33^e.charCodeAt(--n);const r=(i>>>0).toString(16);return r.length%2?"0"+r:r}function P(t){return e=>typeof e=="string"?{id:e,type:t}:e.id?e.type?e:{type:t,...e}:{id:ot(e),type:t,...e}}function I(t){return e=>({...t,...e})}function C(t){return Array.isArray(t)?t:[t]}function lt(t){return t.body&&(t.body=C(t.body)),t.seeAlso&&(t.seeAlso=C(t.seeAlso)),t.body&&(t.body=C(t.body)),t.audience&&(t.audience=C(t.audience)),t.accessibility&&(t.accessibility=C(t.accessibility)),t.motivation&&(t.motivation=C(t.motivation)),t}function vt(t){const e=nt(t),i=fe(),n={},a=at(i),r=st(n),o=new L({collection:[I(j),r("Collection"),a("Collection")],manifest:[I(G),r("Manifest"),a("Manifest")],canvas:[I(N),r("Canvas"),a("Canvas")],annotationPage:[P("AnnotationPage"),I(k),r("AnnotationPage"),a("AnnotationPage")],annotation:[P("Annotation"),lt,r("Annotation"),a("Annotation")],contentResource:[P("ContentResource"),r("ContentResource"),a("ContentResource")],range:[I($),r("Range","Canvas"),a("Range","Canvas")],agent:[I(q),r("Agent"),a("Agent")]}).traverseUnknown(e);return{entities:i,resource:o,mapping:n}}const c="__$UNSET$__",F="__$UNWRAP$__";function pt(t,e){const i=t.requests[e],n=t.mapping[e];if(!(!n||i&&i.resourceUri&&!t.entities[n][i.resourceUri]))return t.entities[n][i?i.resourceUri:e]}function de(t){const e={};for(const[i,n]of t){if(i===F&&n!==c)return n;n!==c&&typeof n!="undefined"&&n!==null&&(e[i]=n)}return e}function ht(t,e,i){if(!e.type||!e.id)throw new Error("Unknown entity");if(!i[e.type])throw new Error(`Serializer not found for ${e.type}`);function n(a){const r=i[a.type];if(!r)return c;const A=pt(t,a.id)||(a.id&&a.type?a:null);if(!A)return c;const o=r(A,t);let _=o.next();for(;!_.done;){const w=_.value;let T=c;if(w)if(Array.isArray(w)){const D=[];for(const Ae of w)D.push(n(Ae));T=D}else T=n(w);_=o.next(T)}return _.value===c?c:de(_.value)}return n(e)}function d(t){if(!t)return;const e=Object.keys(t);if(e.length!==0){if(e.length===1){const i=e[0];if(!i)return"";const n=(t[i]||[]).join("");return i==="@none"||i==="none"||i==="en"?n:{"@language":i,"@value":n}}return e.map(i=>({"@language":i,"@value":(t[i]||[]).join("")}))}}function me(t){return Array.isArray(t)?t.map(e=>me(e)):typeof t=="string"?t:t.type&&t.type==="Canvas"?t.id:t}function f(t,e=!1){if(!!t)return t.length>1&&!e?t:t[0]||void 0}function ct(t){if(!!t){if(typeof t=="string")return{"@id":t};if("@id"in t){const e={...t};return delete e["@type"],e}return{"@context":"http://iiif.io/api/image/2/context.json","@id":t.id,profile:`http://iiif.io/api/image/2/profiles/${t.profile}.json`}}}function m(t,e){return[["@id",t.id],["@type",e],["format",t.format],["height",t.height],["width",t.width],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0]]}function*g(t){const e=t.provider?yield t.provider[0]:void 0;return[["label",d(t.label)],["metadata",t.metadata&&t.metadata.length?t.metadata.map(i=>({label:d(i.label)||"",value:d(i.value)||""})):void 0],["description",d(t.summary)],["thumbnail",f(yield t.thumbnail)],["navDate",t.navDate],["logo",e?f(e.logo):void 0],["homepage",e?e.homepage:void 0],["attribution",t.requiredStatement?d(t.requiredStatement.value):void 0]]}function*b(t){return[["seeAlso",f(yield t.seeAlso)],["service",f((t.service||[]).map(ct))],["rendering",f(yield t.rendering)],["startCanvas",t.start?t.start.id:void 0]]}const ft={Manifest:function*(t){return[...m(t,"sc:Manifest"),...yield*g(t),...yield*b(t),["sequences",[{"@id":`${t.id}/sequence0`,"@type":"sc:Sequence",canvases:yield t.items}]],["structures",yield t.structures]]},Canvas:function*(t){const i=(yield t.items)[0];return[...m(t,"sc:Canvas"),...yield*g(t),...yield*b(t),["images",i?[i.resources]:void 0],["annotations",t.annotations&&t.annotations.length?f(yield t.annotations):void 0]]},AnnotationPage:function*(t){return[...m(t,"sc:AnnotationList"),...yield*g(t),["resources",t.items&&t.items.length?f(yield t.items):void 0]]},Annotation:function*(t){return[["@id",t.id],["@type","oa:Annotation"],["motivation","sc:painting"],["on",me(t.target)],["resource",f(yield t.body,!0)]]},ContentResource:function*(t){switch(t.type){case"Image":return[...m(t,"dctypes:Image"),...yield*g(t),...yield*b(t)];case"Text":case"Dataset":default:return[...m(t,void 0),...yield*g(t)]}},AnnotationCollection:function*(t){return[["@id",t.id],["@type","sc:Layer"],["label",d(t.label)]]},Collection:function*(t){return[...m(t,"sc:Collection"),...yield*g(t),...yield*b(t),["members",yield*t.items]]},Range:function*(t){const e=[],i=[];if(t.items)for(const n of t.items){const a=yield n;e.push({"@id":n.id,"@type":n.type,label:a?a.label:void 0,within:t.id}),n.type==="Canvas"&&i.push(n.id)}return[...m(t,"sc:Range"),...yield*g(t),...yield*b(t),["canvases",i.length===e.length?i:void 0],["members",i.length!==e.length?e:void 0]]}};function R(t){return[["id",t.id],["type",t.type],["format",t.format],["profile",t.profile],["height",t.height],["width",t.width],["duration",t.duration||void 0],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0],["behavior",t.behavior&&t.behavior.length?t.behavior:void 0],["timeMode",t.timeMode],["motivation",t.motivation]]}function s(t){if(!(!t||t.length===0))return t}function ge(t){if(t&&t.type&&t.type==="ImageService2"){const{id:e,type:i,profile:n,...a}=t;return{"@id":e,"@type":i,profile:n.startsWith("http")?n:`http://iiif.io/api/image/2/${n}.json`,...a}}return t}function ye(t){if(!(!t||t.length===0))return t.map(ge)}function*E(t){return[["label",t.label],["metadata",s(t.metadata)],["summary",t.summary],["requiredStatement",t.requiredStatement],["rights",t.rights],["navDate",t.navDate],["language",t.language],["thumbnail",s(yield t.thumbnail)],["placeholderCanvas",yield t.placeholderCanvas],["accompanyingCanvas",yield t.accompanyingCanvas],["provider",s(yield t.provider)]]}function*y(t){return[["seeAlso",s(yield t.seeAlso)],["service",ye(t.service)],["services",ye(t.services)],["rendering",s(yield t.rendering)],["supplementary",s(yield t.supplementary)],["homepage",s(yield t.homepage)],["logo",s(yield t.logo)],["partOf",s(yield t.partOf)],["start",t.start]]}const ut={Manifest:function*(t){return[["@context","http://iiif.io/api/presentation/3/context.json"],...R(t),...yield*E(t),...yield*y(t),["items",yield t.items],["structures",s(yield t.structures)],["annotations",s(yield t.annotations)]]},Canvas:function*(t){return[...R(t),...yield*E(t),...yield*y(t),["items",yield t.items],["annotations",s(yield t.annotations)]]},Agent:function*(t){return[["id",t.id],["type","Agent"],["label",t.label],...yield*y(t)]},AnnotationPage:function*(t){return[...Object.entries(t).map(([i,n])=>[i,Array.isArray(n)?s(n):n]).filter(([i,n])=>i!=="items"),...yield*y(t),["items",yield t.items]]},Service:function*(t){return[[F,ge(t)]]},Annotation:function*(t){return[...Object.entries(t).map(([i,n])=>[i,Array.isArray(n)?s(n):n]).filter(([i])=>i!=="body"),["body",yield t.body]]},ContentResource:function*(t){return[...R(t),...yield*E(t),...yield*y(t),["annotations",s(yield t.annotations)]]},AnnotationCollection:function*(t){return[["id",t.id],["type","AnnotationCollection"],["label",t.label]]},Collection:function*(t){return[...R(t),...yield*E(t),...yield*y(t),["items",yield*t.items],["annotations",s(yield t.annotations)]]},Range:function*(t){const e=[];for(const i of t.items)i.type==="Range"?e.push(yield i):e.push(i);return[...R(t),...yield*E(t),...yield*y(t),["items",e],["annotations",s(yield t.annotations)]]}};export{L as Traverse,c as UNSET,F as UNWRAP,rt as defaultEntities,q as emptyAgent,Ie as emptyAnnotation,k as emptyAnnotationPage,N as emptyCanvas,j as emptyCollection,G as emptyManifest,$ as emptyRange,fe as getDefaultEntities,U as identifyResource,d as languageString2to3,vt as normalize,ht as serialize,ft as serializeConfigPresentation2,ut as serializeConfigPresentation3,de as serializedFieldsToObject,M as types};
const Ie={id:"https://iiif-parser/annotation",type:"Annotation",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[],accessibility:[],audience:[],body:[],bodyValue:null,canonical:null,created:null,creator:[],generated:null,generator:[],modified:null,motivation:[],rights:[],stylesheet:null,target:[],timeMode:void 0,via:[],partOf:[]},k={id:"https://iiif-parser/annotation-page",type:"AnnotationPage",behavior:[],motivation:null,label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[]},N={id:"https://iiif-parser/empty-canvas",type:"Canvas",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],duration:0,height:0,width:0},j={id:"https://iiif-parser/empty-collection",type:"Collection",label:null,viewingDirection:"left-to-right",behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],services:[]},G={id:"https://iiif-parser/empty-manifest",type:"Manifest",annotations:[],behavior:[],homepage:[],items:[],label:null,logo:[],metadata:[],motivation:null,navDate:null,provider:[],partOf:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,rendering:[],requiredStatement:null,rights:null,seeAlso:[],service:[],services:[],start:null,structures:[],summary:null,thumbnail:[],viewingDirection:"left-to-right"},$={id:"https://iiif-parser/empty-canvas",type:"Range",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],start:null,supplementary:null,viewingDirection:"left-to-right"},q={id:"https://iiif-parser/empty-agent",type:"Agent",label:{},logo:[],seeAlso:[],homepage:[]},M=["Collection","Manifest","Canvas","AnnotationPage","AnnotationCollection","Annotation","ContentResource","Range","Service","Selector","Agent"];function U(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t.type=="string"){const e=M.indexOf(t.type);if(e!==-1)return M[e]}if(t.profile)return"Service";throw new Error("Resource type is not known")}class L{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationCollection:[],annotationPage:[],annotation:[],contentResource:[],choice:[],range:[],service:[],agent:[],...e},this.options={allowUndefinedReturn:!1,...i}}static all(e){return new L({collection:[e],manifest:[e],canvas:[e],annotationCollection:[e],annotationPage:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e]})}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=e.thumbnail.map(i=>this.traverseType(i,this.traversals.contentResource))),e.provider&&(e.provider=e.provider.map(i=>this.traverseAgent(i))),e}traverseLinking(e){return e.seeAlso&&(e.seeAlso=e.seeAlso.map(i=>this.traverseType(i,this.traversals.contentResource))),e.service&&(e.service=e.service.map(i=>this.traverseType(i,this.traversals.service))),e.services&&(e.services=e.services.map(i=>this.traverseType(i,this.traversals.service))),e.logo&&(e.logo=e.logo.map(i=>this.traverseType(i,this.traversals.contentResource))),e.homepage&&(e.homepage=e.homepage.map(i=>this.traverseType(i,this.traversals.contentResource))),e.partOf&&(e.partOf=e.partOf.map(i=>typeof i=="string"||!i.type?this.traverseType(i,this.traversals.contentResource):i.type==="Canvas"?this.traverseType(i,this.traversals.canvas):i.type==="AnnotationCollection"?this.traverseType(i,this.traversals.annotationCollection):this.traverseType(i,this.traversals.contentResource))),e.start&&(e.start=e.start?this.traverseType(e.start,this.traversals.canvas):null),e.rendering&&(e.rendering=e.rendering.map(i=>this.traverseType(i,this.traversals.contentResource))),e.supplementary&&(e.supplementary=e.supplementary.map(i=>this.traverseType(i,this.traversals.contentResource))),e}traverseCollectionItems(e){return e.items&&e.items.map(i=>i.type==="Collection"?this.traverseCollection(i):this.traverseManifest(i)),e}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseInlineAnnotationPages(this.traverseLinking(this.traversePosterCanvas(this.traverseCollectionItems(e))))),this.traversals.collection)}traverseManifestItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseCanvas(i))),e}traverseManifestStructures(e){return e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseManifest(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traverseManifestStructures(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e)))))),this.traversals.manifest)}traverseCanvasItems(e){return e.items=(e.items||[]).map(i=>this.traverseAnnotationPage(i)),e}traverseInlineAnnotationPages(e){return typeof e=="string"||!e||e.annotations&&(e.annotations=e.annotations.map(i=>this.traverseAnnotationPage(i))),e}traverseCanvas(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))))),this.traversals.canvas)}traverseAnnotationPageItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseAnnotation(i))),e}traverseAnnotationPage(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationPageItems(e))),this.traversals.annotationPage)}traverseAnnotationBody(e){return Array.isArray(e.body)?e.body=e.body.map(i=>this.traverseContentResource(i)):e.body&&(e.body=this.traverseContentResource(e.body)),e}traversePosterCanvas(e){return e.posterCanvas&&(e.posterCanvas=this.traverseType(e.posterCanvas,this.traversals.canvas)),e.placeholderCanvas&&(e.placeholderCanvas=this.traverseType(e.placeholderCanvas,this.traversals.canvas)),e.accompanyingCanvas&&(e.accompanyingCanvas=this.traverseType(e.accompanyingCanvas,this.traversals.canvas)),e}traverseAnnotation(e){return this.traverseType(this.traverseLinking(this.traverseAnnotationBody(e)),this.traversals.annotation)}traverseContentResourceLinking(e){return typeof e=="string"||!e||e&&e.service&&(e.service=(e.service||[]).map(i=>this.traverseType(i,this.traversals.service))),e}traverseContentResource(e){return e.type==="Choice"&&(e.items=e.items.map(i=>this.traverseContentResource(i))),this.traverseType(this.traverseInlineAnnotationPages(this.traverseContentResourceLinking(e)),this.traversals.contentResource)}traverseRangeRanges(e){return e.items&&(e.items=e.items.map(i=>typeof i=="string"?this.traverseCanvas({id:i,type:"Canvas"}):i.type==="Manifest"?this.traverseManifest(i):this.traverseRange(i))),e}traverseRange(e){return this.traverseType(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseRangeRanges(e)))),this.traversals.range)}traverseAgent(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.agent)}traverseType(e,i){return i.reduce((n,a)=>{const r=a(n);return typeof r=="undefined"&&!this.options.allowUndefinedReturn?n:r},e)}traverseService(e){return this.traverseType(e,this.traversals.service)}traverseUnknown(e){const i=U(e);switch(i){case"Collection":return this.traverseCollection(e);case"Manifest":return this.traverseManifest(e);case"Canvas":return this.traverseCanvas(e);case"AnnotationPage":return this.traverseAnnotationPage(e);case"Annotation":return this.traverseAnnotation(e);case"ContentResource":return this.traverseContentResource(e);case"Range":return this.traverseRange(e);case"Service":return this.traverseService(e);case"Agent":return this.traverseAgent(e);default:throw new Error(`Unknown or unsupported resource type of ${i}`)}}}const V=["sc:Collection","sc:Manifest","sc:Canvas","oa:AnnotationList","oa:Annotation","sc:Range","sc:Layer","sc:Sequence","oa:Choice","Service","ContentResource"];function Ce(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t["@type"]=="string"){const e=V.indexOf(t["@type"]);if(e!==-1)return V[e]}if(t.profile)return"Service";if(t.format||t["@type"])return"ContentResource";throw new Error("Resource type is not known")}class x{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationList:[],sequence:[],annotation:[],contentResource:[],choice:[],range:[],service:[],layer:[],...e},this.options={convertPropsToArray:!0,mergeMemberProperties:!0,allowUndefinedReturn:!1,...i}}static all(e){return new x({collection:[e],manifest:[e],canvas:[e],annotationList:[e],sequence:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e],layer:[e]})}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCollectionItems(e))),this.traversals.collection)}traverseCollectionItems(e){if(this.options.mergeMemberProperties){const i=[...(e.manifests||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Manifest"}:n),...(e.collections||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Collection"}:n),...e.members||[]];delete e.collections,delete e.manifests,e.members=i}return e.manifests&&(e.manifests=e.manifests.map(i=>this.traverseManifest(typeof i=="string"?{"@id":i,"@type":"sc:Manifest"}:i))),e.collections&&(e.collections=e.collections.map(i=>this.traverseCollection(typeof i=="string"?{"@id":i,"@type":"sc:Collection"}:i))),e.members&&(e.members=e.members.map(i=>typeof i=="string"?i:this.traverseUnknown(i))),e}traverseManifest(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e))),this.traversals.manifest)}traverseManifestItems(e){return e.sequences&&(e.sequences=e.sequences.map(i=>this.traverseSequence(i))),e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseSequence(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseSequenceItems(e))),this.traversals.sequence)}traverseSequenceItems(e){return e.canvases&&(e.canvases=e.canvases.map(i=>this.traverseCanvas(i))),e}traverseCanvas(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))),this.traversals.canvas)}traverseCanvasItems(e){return e.images&&(e.images=e.images.map(i=>this.traverseAnnotation(i))),e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseRange(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseRangeItems(e))),this.traversals.range)}traverseRangeItems(e){if(this.options.mergeMemberProperties){const i=[...(e.ranges||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Range"}:n),...(e.canvases||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Canvas"}:n),...e.members||[]];delete e.ranges,delete e.canvases,e.members=i.length?i.map(n=>this.traverseUnknown(n)):void 0}return e}traverseAnnotationList(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationListItems(e))),this.traversals.annotationList)}traverseAnnotationListItems(e){return e.resources&&(e.resources=e.resources.map(i=>this.traverseAnnotation(i))),e}traverseAnnotation(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationItems(e))),this.traversals.annotation)}traverseAnnotationItems(e){return e.resource&&(e.resource=this.traverseContentResource(e.resource)),e.on,e}traverseLayer(e){return this.traverseType(this.traverseLinking(this.traverseLayerItems(e)),this.traversals.layer)}traverseLayerItems(e){return e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseChoice(e){return this.traverseType(this.traverseChoiceItems(e),this.traversals.choice)}traverseChoiceItems(e){return e.default&&e.default!=="rdf:nil"&&(e.default=this.traverseContentResource(e.default)),e.item&&e.item!=="rdf:nil"&&(e.item=e.item.map(i=>this.traverseContentResource(i))),e}traverseService(e){return this.traverseType(this.traverseLinking(e),this.traversals.service)}traverseContentResource(e){return e["@type"]==="oa:Choice"?this.traverseChoice(e):this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.contentResource)}traverseUnknown(e){if(!e["@type"]||typeof e=="string")return e;switch(Ce(e)){case"sc:Collection":return this.traverseCollection(e);case"sc:Manifest":return this.traverseManifest(e);case"sc:Canvas":return this.traverseCanvas(e);case"sc:Sequence":return this.traverseSequence(e);case"sc:Range":return this.traverseRange(e);case"oa:Annotation":return this.traverseAnnotation(e);case"oa:AnnotationList":return this.traverseAnnotationList(e);case"sc:Layer":return this.traverseLayer(e);case"Service":return this.traverseService(e);case"oa:Choice":return this.traverseChoice(e);case"ContentResource":return this.traverseContentResource(e)}return e.profile?this.traverseService(e):e}traverseImageResource(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],a=[];for(const r of n)typeof r=="string"?a.push(this.traverseContentResource({"@id":r,"@type":"dctypes:Image"})):a.push(this.traverseContentResource(r));return!i&&!this.options.convertPropsToArray?a[0]:a}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=this.traverseImageResource(e.thumbnail)),e.logo&&(e.logo=this.traverseImageResource(e.logo)),e}traverseOneOrMoreServices(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],a=[];for(const r of n)a.push(this.traverseService(r));return!i&&!this.options.convertPropsToArray?a[0]:a}traverseLinking(e){return e.related&&(e.related=this.traverseOneOrManyType(e.related,this.traversals.contentResource)),e.rendering&&(e.rendering=this.traverseOneOrManyType(e.rendering,this.traversals.contentResource)),e.service&&(e.service=this.traverseOneOrMoreServices(e.service)),e.seeAlso&&(e.seeAlso=this.traverseOneOrManyType(e.seeAlso,this.traversals.contentResource)),e.within&&(typeof e.within=="string"||(e.within=this.traverseOneOrManyType(e.within,this.traversals.contentResource))),e.startCanvas&&(typeof e.startCanvas=="string"?e.startCanvas=this.traverseType({"@id":e.startCanvas,"@type":"sc:Canvas"},this.traversals.canvas):e.startCanvas&&this.traverseType(e.startCanvas,this.traversals.canvas)),e.contentLayer&&(typeof e.contentLayer=="string"?e.contentLayer=this.traverseLayer({"@id":e.contentLayer,"@type":"sc:Layer"}):e.contentLayer=this.traverseLayer(e.contentLayer)),e}traverseOneOrManyType(e,i){if(!Array.isArray(e))if(this.options.convertPropsToArray)e=[e];else return this.traverseType(e,i);return e.map(n=>this.traverseType(n,i))}traverseType(e,i){return i.reduce((n,a)=>{const r=a(n);return typeof r=="undefined"&&!this.options.allowUndefinedReturn?n:r},e)}}const _e="http://library.stanford.edu/iiif/image-api/compliance.html#level0",W="http://library.stanford.edu/iiif/image-api/compliance.html#level1",z="http://library.stanford.edu/iiif/image-api/compliance.html#level2",be="http://library.stanford.edu/iiif/image-api/conformance.html#level0",H="http://library.stanford.edu/iiif/image-api/conformance.html#level1",B="http://library.stanford.edu/iiif/image-api/conformance.html#level2",Re="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0",K="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1",Q="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2",Ee="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0",X="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1",Y="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2",we="http://iiif.io/api/image/1/level0.json",Le="http://iiif.io/api/image/1/profiles/level0.json",Z="http://iiif.io/api/image/1/level1.json",J="http://iiif.io/api/image/1/profiles/level1.json",ee="http://iiif.io/api/image/1/level2.json",te="http://iiif.io/api/image/1/profiles/level2.json",Te="http://iiif.io/api/image/2/level0.json",Me="http://iiif.io/api/image/2/profiles/level0.json",ie="http://iiif.io/api/image/2/level1.json",ne="http://iiif.io/api/image/2/profiles/level1.json",re="http://iiif.io/api/image/2/level2.json",ae="http://iiif.io/api/image/2/profiles/level2.json",xe="level0",se="level1",oe="level2",Se="http://iiif.io/api/image/2/level0",le="http://iiif.io/api/image/2/level1",ve="http://iiif.io/api/image/2/level2",Oe=[le,ve,W,z,H,B,K,Q,X,Y,Z,J,ee,te,ie,ne,re,ae,se,oe],Pe=[Se,le,ve,_e,W,z,be,H,B,Re,K,Q,Ee,X,Y,we,Le,Z,J,ee,te,Te,Me,ie,ne,re,ae,xe,se,oe],S={attributionLabel:"Attribution",lang:"none",providerId:"http://example.org/provider",providerName:"Unknown"};function u(t,e="none"){if(!t)return{};const i=Array.isArray(t)?t:[t],n={};for(const a of i){if(typeof a=="string"){n[e]=n[e]?n[e]:[],n[e].push(a||"");continue}if(!a["@language"]){n[e]=n[e]?n[e]:[],n[e].push(a["@value"]||"");continue}const r=a["@language"];n[r]=n[r]?n[r]:[],n[r].push(a["@value"]||"")}return n}function pe(t){if(Array.isArray(t))return pe(t.find(e=>typeof e=="string"));if(Pe.indexOf(t)!==-1)return"level2";if(Oe.indexOf(t)!==-1)return"level1";if(typeof t=="string")return t}function Fe(t){const e=Array.isArray(t)?t:[t];for(const i of e)switch(i){case"http://iiif.io/api/image/2/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2":return"ImageService2";case"http://iiif.io/api/image/1/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/context.json":return"ImageService1";case"http://iiif.io/api/annex/openannotation/context.json":return"ImageApiSelector"}}function De(t){switch(t){case"http://iiif.io/api/image/2/level0.json":case"http://iiif.io/api/image/2/level1.json":case"http://iiif.io/api/image/2/level2.json":return"ImageService2";case"http://iiif.io/api/auth/1/kiosk":case"http://iiif.io/api/auth/1/login":case"http://iiif.io/api/auth/1/clickthrough":case"http://iiif.io/api/auth/1/external":case"http://iiif.io/api/auth/0/kiosk":case"http://iiif.io/api/auth/0/login":case"http://iiif.io/api/auth/0/clickthrough":case"http://iiif.io/api/auth/0/external":return"AuthCookieService1";case"http://iiif.io/api/auth/1/token":case"http://iiif.io/api/auth/0/token":return"AuthTokenService1";case"http://iiif.io/api/auth/1/logout":case"http://iiif.io/api/auth/0/logout":return"AuthLogoutService1";case"http://iiif.io/api/search/1/search":case"http://iiif.io/api/search/0/search":return"SearchService1";case"http://iiif.io/api/search/1/autocomplete":case"http://iiif.io/api/search/0/autocomplete":return"AutoCompleteService1"}}function ke(t){return Array.isArray(t)?t:[t]}function Ne(t){for(const e of["sc","oa","dcterms","dctypes","iiif"])if(t.startsWith(`${e}:`))return t.slice(e.length+1);return t}function O(t){const e=t["@id"]||t.id;let i=t["@type"]||t.type;const n=t.profile||void 0,a=t["@context"]||void 0;if(n){const r=De(n);if(r)return r}if(a){const r=Fe(a);if(r)return r}if(i){if(Array.isArray(i)){if(i.indexOf("oa:CssStylesheet")!==-1)return"CssStylesheet";if(i.indexOf("cnt:ContentAsText")!==-1)return"TextualBody";i=i[0]}for(const r of["sc","oa","dcterms","dctypes","iiif"])if(i.startsWith(`${r}:`)){i=i.slice(r.length+1);break}switch(i){case"Layer":return"AnnotationCollection";case"AnnotationList":return"AnnotationPage";case"cnt:ContentAsText":return"TextualBody"}}if(t.format){if(t.format.startsWith("image/"))return"Image";if(t.format.startsWith("text/")||t.format==="application/pdf")return"Text";if(t.format.startsWith("application/"))return"Dataset"}return e&&(e.endsWith(".jpg")||e.endsWith(".png")||e.endsWith(".jpeg"))?"Image":i||"unknown"}const je=/http(s)?:\/\/(creativecommons.org|rightsstatements.org)[^"'\\<\n]+/gm;function Ge(t){const e=t.match(je);return e?e[0]:t}function $e(t,e="Rights/License",i="none"){let n=null;const a=[],r=Array.isArray(t)?t:[t];for(const C of r){const o=C?Ge(C):void 0;if(o&&(o.indexOf("creativecommons.org")!==-1||o.indexOf("rightsstatements.org")!==-1)){o.startsWith("https://")?n=`http://${o.slice(8)}`:n=o;continue}o&&a.push({label:{[i]:[e]},value:{[i]:[o]}})}return[n,a]}const qe=["http://iiif.io/api/presentation/2/context.json","http://iiif.io/api/image/2/context.json","http://iiif.io/api/image/1/context.json","http://library.stanford.edu/iiif/image-api/1.1/context.json","http://iiif.io/api/search/1/context.json","http://iiif.io/api/search/0/context.json","http://iiif.io/api/auth/1/context.json","http://iiif.io/api/auth/0/context.json","http://iiif.io/api/annex/openannotation/context.json"];function Ue(t){if(t){const e=Array.isArray(t)?t:[t],i=[];for(const n of e)n==="http://iiif.io/api/presentation/2/context.json"&&i.push("http://iiif.io/api/presentation/3/context.json"),qe.indexOf(n)===-1&&i.push(n);if(e.length)return i.length===1?i[0]:i}}function Ve(t){return t?t.map(e=>({label:u(e.label),value:u(e.value)})):[]}function v(t){for(const e in t)(typeof t[e]=="undefined"||t[e]===null)&&delete t[e];return t}let he=0;function ce(t,e){const i=encodeURI(t.id||t["@id"]||"").trim();return i&&e?`${i}/${e}`:i||(he++,`http://example.org/${t["@type"]}${e?`/${e}`:""}/${he}`)}function p(t){const e=[...t.behavior||[]];return t.viewingHint&&e.push(t.viewingHint),{"@context":t["@context"]?Ue(t["@context"]):void 0,id:(t["@id"]||ce(t)).trim(),type:O(t),behavior:e.length?e:void 0,height:t.height?t.height:void 0,width:t.width?t.width:void 0,motivation:t.motivation?Ne(t.motivation):void 0,viewingDirection:t.viewingDirection,profile:t.profile,format:t.format?t.format:void 0,duration:void 0,timeMode:void 0}}function l(t){const[e,i]=$e(t.license),n=[...t.metadata?Ve(t.metadata):[],...i];return{rights:e,metadata:n.length?n:void 0,label:t.label?u(t.label):void 0,requiredStatement:t.attribution?{label:u(S.attributionLabel),value:u(t.attribution)}:void 0,navDate:t.navDate,summary:t.description?u(t.description):void 0,thumbnail:t.thumbnail}}function We(t){if(!t.within)return;const e=Array.isArray(t.within)?t.within:[t.within],i=[];for(const n of e)if(typeof n=="string"){if(n)switch(t["@type"]){case"sc:Manifest":i.push({id:n,type:"Collection"});break}}else n["@id"]&&i.push({id:n["@id"],type:O(n)});return i.length?i:void 0}function h(t){const e=t.related?Array.isArray(t.related)?t.related:[t.related]:[],i=t.contentLayer;return{provider:t.logo||e.length?[{id:S.providerId,type:"Agent",homepage:e.length?[e[0]]:void 0,logo:t.logo?Array.isArray(t.logo)?t.logo:[t.logo]:void 0,label:u(S.providerName)}]:void 0,partOf:We(t),rendering:t.rendering,seeAlso:t.seeAlso,start:t.startCanvas,service:t.service?ke(t.service):void 0,supplementary:i?[i]:void 0}}function ze(t){return v({...p(t),...l(t),...h(t),items:t.members})}function He(t){const e=[],i=[];for(const a of t.sequences||[])a.canvases.length&&e.push(...a.canvases),a.behavior&&i.push(...a.behavior);const n=p(t);return i.length&&(n.behavior?n.behavior.push(...i):n.behavior=i),v({...n,...l(t),...h(t),items:e,structures:t.structures})}function Be(t){return v({...p(t),...l(t),...h(t),items:t.images&&t.images.length?[{id:ce(t,"annotation-page"),type:"AnnotationPage",items:t.images}]:void 0})}function Ke(t){return v({...p(t),...l(t),...h(t),items:t.resources})}function Qe(t){return!t.canvases||t.canvases.length===0?{canvases:[],behavior:[]}:{canvases:t.canvases,behavior:t.viewingHint?[t.viewingHint]:[]}}function Xe(t){return v({...p(t),...l(t),...h(t),target:typeof t.on=="string"?encodeURI(t.on).trim():t.on,body:t.resource})}function Ye(t){const e=t;return v({...p(e),...l(e),...h(e)})}function Ze(t){const e=[];return t.default&&t.default!=="rdf:nil"&&e.push(t.default),t.item&&t.item!=="rdf:nil"&&e.push(...t.item),{...p(t),...l(t),items:e}}function Je(t){return v({...p(t),...l(t),...h(t),items:t.members})}function et(t){const{"@id":e,"@type":i,"@context":n,profile:a,...r}=t;return e&&(r.id=e),r.type=O(t),r.type==="unknown"&&(r.type="Service"),a&&(r.profile=pe(a)),v({...r,...l(r)})}function tt(t){return v({...p(t),...l(t),...h(t)})}const it=new x({collection:[ze],manifest:[He],canvas:[Be],annotationList:[Ke],sequence:[Qe],annotation:[Xe],contentResource:[Ye],choice:[Ze],range:[Je],service:[et],layer:[tt]});function nt(t){return t&&t["@context"]&&(t["@context"]==="http://iiif.io/api/presentation/2/context.json"||t["@context"].indexOf("http://iiif.io/api/presentation/2/context.json")!==-1||t["@context"]==="http://www.shared-canvas.org/ns/context.json")||t["@context"]==="http://iiif.io/api/image/2/context.json"?it.traverseUnknown(t):t}const rt={Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}};function fe(){return{Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}}}function ue(t,e){if(typeof t=="string")return{id:t,type:e};if(!t.id)throw new Error(`Invalid resource does not have an ID (${e})`);return t}function at(t){return(e,i)=>{const n=t[e]?t[e]:{};return a=>{const r=ue(a,i||e);return r&&r.id&&e?(n[r.id]=n[r.id]?Object.assign({},n[r.id],r):Object.assign({},r),{id:r.id,type:e==="ContentResource"?e:r.type}):r}}}function st(t){return(e,i)=>n=>{const{id:a,type:r}=ue(n,i||e);if(typeof a=="undefined")throw new Error("Found invalid entity without an ID.");return e==="ContentResource"?t[a]=e:t[a]=r,n}}function ot(t){const e=JSON.stringify(t);let i=5381,n=e.length;for(;n;)i=i*33^e.charCodeAt(--n);const r=(i>>>0).toString(16);return r.length%2?"0"+r:r}function P(t){return e=>typeof e=="string"?{id:e,type:t}:e.id?e.type?e:{type:t,...e}:{id:ot(e),type:t,...e}}function _(t){return e=>({...t,...e})}function b(t){return Array.isArray(t)?t:[t]}function lt(t){return t.body&&(t.body=b(t.body)),t.seeAlso&&(t.seeAlso=b(t.seeAlso)),t.body&&(t.body=b(t.body)),t.audience&&(t.audience=b(t.audience)),t.accessibility&&(t.accessibility=b(t.accessibility)),t.motivation&&(t.motivation=b(t.motivation)),t}function vt(t){const e=nt(t),i=fe(),n={},a=at(i),r=st(n),o=new L({collection:[_(j),r("Collection"),a("Collection")],manifest:[_(G),r("Manifest"),a("Manifest")],canvas:[_(N),r("Canvas"),a("Canvas")],annotationPage:[P("AnnotationPage"),_(k),r("AnnotationPage"),a("AnnotationPage")],annotation:[P("Annotation"),lt,r("Annotation"),a("Annotation")],contentResource:[P("ContentResource"),r("ContentResource"),a("ContentResource")],range:[_($),r("Range","Canvas"),a("Range","Canvas")],agent:[_(q),r("Agent"),a("Agent")]}).traverseUnknown(e);return{entities:i,resource:o,mapping:n}}const c="__$UNSET$__",F="__$UNWRAP$__";function pt(t,e){const i=t.requests[e],n=t.mapping[e];if(!(!n||i&&i.resourceUri&&!t.entities[n][i.resourceUri]))return t.entities[n][i?i.resourceUri:e]}function de(t){const e={};for(const[i,n]of t){if(i===F&&n!==c)return n;n!==c&&typeof n!="undefined"&&n!==null&&(e[i]=n)}return e}function ht(t,e,i){if(!e.type||!e.id)throw new Error("Unknown entity");if(!i[e.type])throw new Error(`Serializer not found for ${e.type}`);function n(a){const r=i[a.type];if(!r)return c;const C=pt(t,a.id)||(a.id&&a.type?a:null);if(!C)return c;const o=r(C,t,{isTopLevel:e.id===a.id});let R=o.next();for(;!R.done;){const w=R.value;let T=c;if(w)if(Array.isArray(w)){const D=[];for(const Ae of w)D.push(n(Ae));T=D}else T=n(w);R=o.next(T)}return R.value===c?c:de(R.value)}return n(e)}function d(t){if(!t)return;const e=Object.keys(t);if(e.length!==0){if(e.length===1){const i=e[0];if(!i)return"";const n=(t[i]||[]).join("");return i==="@none"||i==="none"||i==="en"?n:{"@language":i,"@value":n}}return e.map(i=>({"@language":i,"@value":(t[i]||[]).join("")}))}}function me(t){return Array.isArray(t)?t.map(e=>me(e)):typeof t=="string"?t:t.type&&t.type==="Canvas"?t.id:t}function f(t,e=!1){if(!!t)return t.length>1&&!e?t:t[0]||void 0}function ct(t){if(!!t){if(typeof t=="string")return{"@id":t};if("@id"in t){const e={...t};return delete e["@type"],e}return{"@context":"http://iiif.io/api/image/2/context.json","@id":t.id,profile:`http://iiif.io/api/image/2/profiles/${t.profile}.json`}}}function m(t,e){return[["@id",t.id],["@type",e],["format",t.format],["height",t.height],["width",t.width],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0]]}function*g(t){const e=t.provider?yield t.provider[0]:void 0;return[["label",d(t.label)],["metadata",t.metadata&&t.metadata.length?t.metadata.map(i=>({label:d(i.label)||"",value:d(i.value)||""})):void 0],["description",d(t.summary)],["thumbnail",f(yield t.thumbnail)],["navDate",t.navDate],["logo",e?f(e.logo):void 0],["homepage",e?e.homepage:void 0],["attribution",t.requiredStatement?d(t.requiredStatement.value):void 0]]}function*E(t){return[["seeAlso",f(yield t.seeAlso)],["service",f((t.service||[]).map(ct))],["rendering",f(yield t.rendering)],["startCanvas",t.start?t.start.id:void 0]]}const ft={Manifest:function*(t){return[...m(t,"sc:Manifest"),...yield*g(t),...yield*E(t),["sequences",[{"@id":`${t.id}/sequence0`,"@type":"sc:Sequence",canvases:yield t.items}]],["structures",yield t.structures]]},Canvas:function*(t){const i=(yield t.items)[0];return[...m(t,"sc:Canvas"),...yield*g(t),...yield*E(t),["images",i?[i.resources]:void 0],["annotations",t.annotations&&t.annotations.length?f(yield t.annotations):void 0]]},AnnotationPage:function*(t){return[...m(t,"sc:AnnotationList"),...yield*g(t),["resources",t.items&&t.items.length?f(yield t.items):void 0]]},Annotation:function*(t){return[["@id",t.id],["@type","oa:Annotation"],["motivation","sc:painting"],["on",me(t.target)],["resource",f(yield t.body,!0)]]},ContentResource:function*(t){switch(t.type){case"Image":return[...m(t,"dctypes:Image"),...yield*g(t),...yield*E(t)];case"Text":case"Dataset":default:return[...m(t,void 0),...yield*g(t)]}},AnnotationCollection:function*(t){return[["@id",t.id],["@type","sc:Layer"],["label",d(t.label)]]},Collection:function*(t){return[...m(t,"sc:Collection"),...yield*g(t),...yield*E(t),["members",yield*t.items]]},Range:function*(t){const e=[],i=[];if(t.items)for(const n of t.items){const a=yield n;e.push({"@id":n.id,"@type":n.type,label:a?a.label:void 0,within:t.id}),n.type==="Canvas"&&i.push(n.id)}return[...m(t,"sc:Range"),...yield*g(t),...yield*E(t),["canvases",i.length===e.length?i:void 0],["members",i.length!==e.length?e:void 0]]}};function y(t){return[["id",t.id],["type",t.type],["format",t.format],["profile",t.profile],["height",t.height],["width",t.width],["duration",t.duration||void 0],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0],["behavior",t.behavior&&t.behavior.length?t.behavior:void 0],["timeMode",t.timeMode],["motivation",t.motivation]]}function s(t){if(!(!t||t.length===0))return t}function ge(t){if(t&&t.type&&t.type==="ImageService2"){const{id:e,type:i,profile:n,...a}=t;return{"@id":e,"@type":i,profile:n.startsWith("http")?n:`http://iiif.io/api/image/2/${n}.json`,...a}}return t}function ye(t){if(!(!t||t.length===0))return t.map(ge)}function*A(t){return[["label",t.label],["metadata",s(t.metadata)],["summary",t.summary],["requiredStatement",t.requiredStatement],["rights",t.rights],["navDate",t.navDate],["language",t.language],["thumbnail",s(yield t.thumbnail)],["placeholderCanvas",yield t.placeholderCanvas],["accompanyingCanvas",yield t.accompanyingCanvas],["provider",s(yield t.provider)]]}function*I(t){return[["seeAlso",s(yield t.seeAlso)],["service",ye(t.service)],["services",ye(t.services)],["rendering",s(yield t.rendering)],["supplementary",s(yield t.supplementary)],["homepage",s(yield t.homepage)],["logo",s(yield t.logo)],["partOf",s(yield t.partOf)],["start",t.start]]}const ut={Manifest:function*(t,e,{isTopLevel:i}){return i?[["@context","http://iiif.io/api/presentation/3/context.json"],...y(t),...yield*A(t),...yield*I(t),["items",yield t.items],["structures",s(yield t.structures)],["annotations",s(yield t.annotations)]]:[...y(t),...yield*A(t)]},Canvas:function*(t){return[...y(t),...yield*A(t),...yield*I(t),["items",yield t.items],["annotations",s(yield t.annotations)]]},Agent:function*(t){return[["id",t.id],["type","Agent"],["label",t.label],...yield*I(t)]},AnnotationPage:function*(t){return[...Object.entries(t).map(([i,n])=>[i,Array.isArray(n)?s(n):n]).filter(([i,n])=>i!=="items"),...yield*I(t),["items",yield t.items]]},Service:function*(t){return[[F,ge(t)]]},Annotation:function*(t){return[...Object.entries(t).map(([i,n])=>[i,Array.isArray(n)?s(n):n]).filter(([i])=>i!=="body"),["body",yield t.body]]},ContentResource:function*(t){return[...y(t),...yield*A(t),...yield*I(t),["annotations",s(yield t.annotations)]]},AnnotationCollection:function*(t){return[["id",t.id],["type","AnnotationCollection"],["label",t.label]]},Collection:function*(t,e,{isTopLevel:i}){return i?[["@context","http://iiif.io/api/presentation/3/context.json"],...y(t),...yield*A(t),...yield*I(t),["items",s(yield t.items)],["annotations",s(yield t.annotations)]]:[...y(t),...yield*A(t)]},Range:function*(t){const e=[];for(const i of t.items)i.type==="Range"?e.push(yield i):e.push(i);return[...y(t),...yield*A(t),...yield*I(t),["items",e],["annotations",s(yield t.annotations)]]}};export{L as Traverse,c as UNSET,F as UNWRAP,rt as defaultEntities,q as emptyAgent,Ie as emptyAnnotation,k as emptyAnnotationPage,N as emptyCanvas,j as emptyCollection,G as emptyManifest,$ as emptyRange,fe as getDefaultEntities,U as identifyResource,d as languageString2to3,vt as normalize,ht as serialize,ft as serializeConfigPresentation2,ut as serializeConfigPresentation3,de as serializedFieldsToObject,M as types};

@@ -309,3 +309,6 @@ import * as _iiif_presentation_3 from '@iiif/presentation-3';

declare type NormalizedEntity = CollectionNormalized | ManifestNormalized | CanvasNormalized | AnnotationPageNormalized | AnnotationCollectionNormalized | AnnotationCollection | AnnotationNormalized | ContentResource | RangeNormalized | ServiceNormalized | Selector | ResourceProviderNormalized;
declare type Serializer<Type extends NormalizedEntity> = (entity: Type, state: any) => Generator<Reference | Reference[], typeof UNSET | Field[], any>;
declare type SerializerContext = {
isTopLevel?: boolean;
};
declare type Serializer<Type extends NormalizedEntity> = (entity: Type, state: any, context: SerializerContext) => Generator<Reference | Reference[], typeof UNSET | Field[], any>;
declare type SerializeConfig = {

@@ -312,0 +315,0 @@ Collection?: Serializer<CollectionNormalized>;

@@ -1,1 +0,1 @@

(function(d,C){typeof exports=="object"&&typeof module!="undefined"?module.exports=C():typeof define=="function"&&define.amd?define(C):(d=typeof globalThis!="undefined"?globalThis:d||self,d.IIIFParser=C())})(this,function(){"use strict";const d=["sc:Collection","sc:Manifest","sc:Canvas","oa:AnnotationList","oa:Annotation","sc:Range","sc:Layer","sc:Sequence","oa:Choice","Service","ContentResource"];function C(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t["@type"]=="string"){const e=d.indexOf(t["@type"]);if(e!==-1)return d[e]}if(t.profile)return"Service";if(t.format||t["@type"])return"ContentResource";throw new Error("Resource type is not known")}class T{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationList:[],sequence:[],annotation:[],contentResource:[],choice:[],range:[],service:[],layer:[],...e},this.options={convertPropsToArray:!0,mergeMemberProperties:!0,allowUndefinedReturn:!1,...i}}static all(e){return new T({collection:[e],manifest:[e],canvas:[e],annotationList:[e],sequence:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e],layer:[e]})}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCollectionItems(e))),this.traversals.collection)}traverseCollectionItems(e){if(this.options.mergeMemberProperties){const i=[...(e.manifests||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Manifest"}:n),...(e.collections||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Collection"}:n),...e.members||[]];delete e.collections,delete e.manifests,e.members=i}return e.manifests&&(e.manifests=e.manifests.map(i=>this.traverseManifest(typeof i=="string"?{"@id":i,"@type":"sc:Manifest"}:i))),e.collections&&(e.collections=e.collections.map(i=>this.traverseCollection(typeof i=="string"?{"@id":i,"@type":"sc:Collection"}:i))),e.members&&(e.members=e.members.map(i=>typeof i=="string"?i:this.traverseUnknown(i))),e}traverseManifest(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e))),this.traversals.manifest)}traverseManifestItems(e){return e.sequences&&(e.sequences=e.sequences.map(i=>this.traverseSequence(i))),e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseSequence(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseSequenceItems(e))),this.traversals.sequence)}traverseSequenceItems(e){return e.canvases&&(e.canvases=e.canvases.map(i=>this.traverseCanvas(i))),e}traverseCanvas(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))),this.traversals.canvas)}traverseCanvasItems(e){return e.images&&(e.images=e.images.map(i=>this.traverseAnnotation(i))),e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseRange(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseRangeItems(e))),this.traversals.range)}traverseRangeItems(e){if(this.options.mergeMemberProperties){const i=[...(e.ranges||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Range"}:n),...(e.canvases||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Canvas"}:n),...e.members||[]];delete e.ranges,delete e.canvases,e.members=i.length?i.map(n=>this.traverseUnknown(n)):void 0}return e}traverseAnnotationList(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationListItems(e))),this.traversals.annotationList)}traverseAnnotationListItems(e){return e.resources&&(e.resources=e.resources.map(i=>this.traverseAnnotation(i))),e}traverseAnnotation(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationItems(e))),this.traversals.annotation)}traverseAnnotationItems(e){return e.resource&&(e.resource=this.traverseContentResource(e.resource)),e.on,e}traverseLayer(e){return this.traverseType(this.traverseLinking(this.traverseLayerItems(e)),this.traversals.layer)}traverseLayerItems(e){return e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseChoice(e){return this.traverseType(this.traverseChoiceItems(e),this.traversals.choice)}traverseChoiceItems(e){return e.default&&e.default!=="rdf:nil"&&(e.default=this.traverseContentResource(e.default)),e.item&&e.item!=="rdf:nil"&&(e.item=e.item.map(i=>this.traverseContentResource(i))),e}traverseService(e){return this.traverseType(this.traverseLinking(e),this.traversals.service)}traverseContentResource(e){return e["@type"]==="oa:Choice"?this.traverseChoice(e):this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.contentResource)}traverseUnknown(e){if(!e["@type"]||typeof e=="string")return e;switch(C(e)){case"sc:Collection":return this.traverseCollection(e);case"sc:Manifest":return this.traverseManifest(e);case"sc:Canvas":return this.traverseCanvas(e);case"sc:Sequence":return this.traverseSequence(e);case"sc:Range":return this.traverseRange(e);case"oa:Annotation":return this.traverseAnnotation(e);case"oa:AnnotationList":return this.traverseAnnotationList(e);case"sc:Layer":return this.traverseLayer(e);case"Service":return this.traverseService(e);case"oa:Choice":return this.traverseChoice(e);case"ContentResource":return this.traverseContentResource(e)}return e.profile?this.traverseService(e):e}traverseImageResource(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],a=[];for(const r of n)typeof r=="string"?a.push(this.traverseContentResource({"@id":r,"@type":"dctypes:Image"})):a.push(this.traverseContentResource(r));return!i&&!this.options.convertPropsToArray?a[0]:a}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=this.traverseImageResource(e.thumbnail)),e.logo&&(e.logo=this.traverseImageResource(e.logo)),e}traverseOneOrMoreServices(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],a=[];for(const r of n)a.push(this.traverseService(r));return!i&&!this.options.convertPropsToArray?a[0]:a}traverseLinking(e){return e.related&&(e.related=this.traverseOneOrManyType(e.related,this.traversals.contentResource)),e.rendering&&(e.rendering=this.traverseOneOrManyType(e.rendering,this.traversals.contentResource)),e.service&&(e.service=this.traverseOneOrMoreServices(e.service)),e.seeAlso&&(e.seeAlso=this.traverseOneOrManyType(e.seeAlso,this.traversals.contentResource)),e.within&&(typeof e.within=="string"||(e.within=this.traverseOneOrManyType(e.within,this.traversals.contentResource))),e.startCanvas&&(typeof e.startCanvas=="string"?e.startCanvas=this.traverseType({"@id":e.startCanvas,"@type":"sc:Canvas"},this.traversals.canvas):e.startCanvas&&this.traverseType(e.startCanvas,this.traversals.canvas)),e.contentLayer&&(typeof e.contentLayer=="string"?e.contentLayer=this.traverseLayer({"@id":e.contentLayer,"@type":"sc:Layer"}):e.contentLayer=this.traverseLayer(e.contentLayer)),e}traverseOneOrManyType(e,i){if(!Array.isArray(e))if(this.options.convertPropsToArray)e=[e];else return this.traverseType(e,i);return e.map(n=>this.traverseType(n,i))}traverseType(e,i){return i.reduce((n,a)=>{const r=a(n);return typeof r=="undefined"&&!this.options.allowUndefinedReturn?n:r},e)}}const be="http://library.stanford.edu/iiif/image-api/compliance.html#level0",j="http://library.stanford.edu/iiif/image-api/compliance.html#level1",G="http://library.stanford.edu/iiif/image-api/compliance.html#level2",Re="http://library.stanford.edu/iiif/image-api/conformance.html#level0",$="http://library.stanford.edu/iiif/image-api/conformance.html#level1",q="http://library.stanford.edu/iiif/image-api/conformance.html#level2",Ee="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0",U="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1",V="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2",we="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0",z="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1",W="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2",Le="http://iiif.io/api/image/1/level0.json",Te="http://iiif.io/api/image/1/profiles/level0.json",H="http://iiif.io/api/image/1/level1.json",B="http://iiif.io/api/image/1/profiles/level1.json",K="http://iiif.io/api/image/1/level2.json",Q="http://iiif.io/api/image/1/profiles/level2.json",Me="http://iiif.io/api/image/2/level0.json",xe="http://iiif.io/api/image/2/profiles/level0.json",X="http://iiif.io/api/image/2/level1.json",Y="http://iiif.io/api/image/2/profiles/level1.json",Z="http://iiif.io/api/image/2/level2.json",J="http://iiif.io/api/image/2/profiles/level2.json",Se="level0",ee="level1",te="level2",Pe="http://iiif.io/api/image/2/level0",ie="http://iiif.io/api/image/2/level1",ne="http://iiif.io/api/image/2/level2",Oe=[ie,ne,j,G,$,q,U,V,z,W,H,B,K,Q,X,Y,Z,J,ee,te],Fe=[Pe,ie,ne,be,j,G,Re,$,q,Ee,U,V,we,z,W,Le,Te,H,B,K,Q,Me,xe,X,Y,Z,J,Se,ee,te],S={attributionLabel:"Attribution",lang:"none",providerId:"http://example.org/provider",providerName:"Unknown"};function f(t,e="none"){if(!t)return{};const i=Array.isArray(t)?t:[t],n={};for(const a of i){if(typeof a=="string"){n[e]=n[e]?n[e]:[],n[e].push(a||"");continue}if(!a["@language"]){n[e]=n[e]?n[e]:[],n[e].push(a["@value"]||"");continue}const r=a["@language"];n[r]=n[r]?n[r]:[],n[r].push(a["@value"]||"")}return n}function P(t){if(Array.isArray(t))return P(t.find(e=>typeof e=="string"));if(Fe.indexOf(t)!==-1)return"level2";if(Oe.indexOf(t)!==-1)return"level1";if(typeof t=="string")return t}function re(t){const e=Array.isArray(t)?t:[t];for(const i of e)switch(i){case"http://iiif.io/api/image/2/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2":return"ImageService2";case"http://iiif.io/api/image/1/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/context.json":return"ImageService1";case"http://iiif.io/api/annex/openannotation/context.json":return"ImageApiSelector"}}function De(t){switch(t){case"http://iiif.io/api/image/2/level0.json":case"http://iiif.io/api/image/2/level1.json":case"http://iiif.io/api/image/2/level2.json":return"ImageService2";case"http://iiif.io/api/auth/1/kiosk":case"http://iiif.io/api/auth/1/login":case"http://iiif.io/api/auth/1/clickthrough":case"http://iiif.io/api/auth/1/external":case"http://iiif.io/api/auth/0/kiosk":case"http://iiif.io/api/auth/0/login":case"http://iiif.io/api/auth/0/clickthrough":case"http://iiif.io/api/auth/0/external":return"AuthCookieService1";case"http://iiif.io/api/auth/1/token":case"http://iiif.io/api/auth/0/token":return"AuthTokenService1";case"http://iiif.io/api/auth/1/logout":case"http://iiif.io/api/auth/0/logout":return"AuthLogoutService1";case"http://iiif.io/api/search/1/search":case"http://iiif.io/api/search/0/search":return"SearchService1";case"http://iiif.io/api/search/1/autocomplete":case"http://iiif.io/api/search/0/autocomplete":return"AutoCompleteService1"}}function ke(t){return Array.isArray(t)?t:[t]}function Ne(t){for(const e of["sc","oa","dcterms","dctypes","iiif"])if(t.startsWith(`${e}:`))return t.slice(e.length+1);return t}function O(t){const e=t["@id"]||t.id;let i=t["@type"]||t.type;const n=t.profile||void 0,a=t["@context"]||void 0;if(n){const r=De(n);if(r)return r}if(a){const r=re(a);if(r)return r}if(i){if(Array.isArray(i)){if(i.indexOf("oa:CssStylesheet")!==-1)return"CssStylesheet";if(i.indexOf("cnt:ContentAsText")!==-1)return"TextualBody";i=i[0]}for(const r of["sc","oa","dcterms","dctypes","iiif"])if(i.startsWith(`${r}:`)){i=i.slice(r.length+1);break}switch(i){case"Layer":return"AnnotationCollection";case"AnnotationList":return"AnnotationPage";case"cnt:ContentAsText":return"TextualBody"}}if(t.format){if(t.format.startsWith("image/"))return"Image";if(t.format.startsWith("text/")||t.format==="application/pdf")return"Text";if(t.format.startsWith("application/"))return"Dataset"}return e&&(e.endsWith(".jpg")||e.endsWith(".png")||e.endsWith(".jpeg"))?"Image":i||"unknown"}const je=/http(s)?:\/\/(creativecommons.org|rightsstatements.org)[^"'\\<\n]+/gm;function Ge(t){const e=t.match(je);return e?e[0]:t}function $e(t,e="Rights/License",i="none"){let n=null;const a=[],r=Array.isArray(t)?t:[t];for(const b of r){const o=b?Ge(b):void 0;if(o&&(o.indexOf("creativecommons.org")!==-1||o.indexOf("rightsstatements.org")!==-1)){o.startsWith("https://")?n=`http://${o.slice(8)}`:n=o;continue}o&&a.push({label:{[i]:[e]},value:{[i]:[o]}})}return[n,a]}const qe=["http://iiif.io/api/presentation/2/context.json","http://iiif.io/api/image/2/context.json","http://iiif.io/api/image/1/context.json","http://library.stanford.edu/iiif/image-api/1.1/context.json","http://iiif.io/api/search/1/context.json","http://iiif.io/api/search/0/context.json","http://iiif.io/api/auth/1/context.json","http://iiif.io/api/auth/0/context.json","http://iiif.io/api/annex/openannotation/context.json"];function Ue(t){if(t){const e=Array.isArray(t)?t:[t],i=[];for(const n of e)n==="http://iiif.io/api/presentation/2/context.json"&&i.push("http://iiif.io/api/presentation/3/context.json"),qe.indexOf(n)===-1&&i.push(n);if(e.length)return i.length===1?i[0]:i}}function Ve(t){return t?t.map(e=>({label:f(e.label),value:f(e.value)})):[]}function v(t){for(const e in t)(typeof t[e]=="undefined"||t[e]===null)&&delete t[e];return t}let ae=0;function se(t,e){const i=encodeURI(t.id||t["@id"]||"").trim();return i&&e?`${i}/${e}`:i||(ae++,`http://example.org/${t["@type"]}${e?`/${e}`:""}/${ae}`)}function p(t){const e=[...t.behavior||[]];return t.viewingHint&&e.push(t.viewingHint),{"@context":t["@context"]?Ue(t["@context"]):void 0,id:(t["@id"]||se(t)).trim(),type:O(t),behavior:e.length?e:void 0,height:t.height?t.height:void 0,width:t.width?t.width:void 0,motivation:t.motivation?Ne(t.motivation):void 0,viewingDirection:t.viewingDirection,profile:t.profile,format:t.format?t.format:void 0,duration:void 0,timeMode:void 0}}function l(t){const[e,i]=$e(t.license),n=[...t.metadata?Ve(t.metadata):[],...i];return{rights:e,metadata:n.length?n:void 0,label:t.label?f(t.label):void 0,requiredStatement:t.attribution?{label:f(S.attributionLabel),value:f(t.attribution)}:void 0,navDate:t.navDate,summary:t.description?f(t.description):void 0,thumbnail:t.thumbnail}}function ze(t){if(!t.within)return;const e=Array.isArray(t.within)?t.within:[t.within],i=[];for(const n of e)if(typeof n=="string"){if(n)switch(t["@type"]){case"sc:Manifest":i.push({id:n,type:"Collection"});break}}else n["@id"]&&i.push({id:n["@id"],type:O(n)});return i.length?i:void 0}function c(t){const e=t.related?Array.isArray(t.related)?t.related:[t.related]:[],i=t.contentLayer;return{provider:t.logo||e.length?[{id:S.providerId,type:"Agent",homepage:e.length?[e[0]]:void 0,logo:t.logo?Array.isArray(t.logo)?t.logo:[t.logo]:void 0,label:f(S.providerName)}]:void 0,partOf:ze(t),rendering:t.rendering,seeAlso:t.seeAlso,start:t.startCanvas,service:t.service?ke(t.service):void 0,supplementary:i?[i]:void 0}}function We(t){return v({...p(t),...l(t),...c(t),items:t.members})}function He(t){const e=[],i=[];for(const a of t.sequences||[])a.canvases.length&&e.push(...a.canvases),a.behavior&&i.push(...a.behavior);const n=p(t);return i.length&&(n.behavior?n.behavior.push(...i):n.behavior=i),v({...n,...l(t),...c(t),items:e,structures:t.structures})}function Be(t){return v({...p(t),...l(t),...c(t),items:t.images&&t.images.length?[{id:se(t,"annotation-page"),type:"AnnotationPage",items:t.images}]:void 0})}function Ke(t){return v({...p(t),...l(t),...c(t),items:t.resources})}function Qe(t){return!t.canvases||t.canvases.length===0?{canvases:[],behavior:[]}:{canvases:t.canvases,behavior:t.viewingHint?[t.viewingHint]:[]}}function Xe(t){return v({...p(t),...l(t),...c(t),target:typeof t.on=="string"?encodeURI(t.on).trim():t.on,body:t.resource})}function Ye(t){const e=t;return v({...p(e),...l(e),...c(e)})}function Ze(t){const e=[];return t.default&&t.default!=="rdf:nil"&&e.push(t.default),t.item&&t.item!=="rdf:nil"&&e.push(...t.item),{...p(t),...l(t),items:e}}function Je(t){return v({...p(t),...l(t),...c(t),items:t.members})}function et(t){const{"@id":e,"@type":i,"@context":n,profile:a,...r}=t;return e&&(r.id=e),r.type=O(t),r.type==="unknown"&&(r.type="Service"),a&&(r.profile=P(a)),v({...r,...l(r)})}function tt(t){return v({...p(t),...l(t),...c(t)})}const oe=new T({collection:[We],manifest:[He],canvas:[Be],annotationList:[Ke],sequence:[Qe],annotation:[Xe],contentResource:[Ye],choice:[Ze],range:[Je],service:[et],layer:[tt]});function le(t){return t&&t["@context"]&&(t["@context"]==="http://iiif.io/api/presentation/2/context.json"||t["@context"].indexOf("http://iiif.io/api/presentation/2/context.json")!==-1||t["@context"]==="http://www.shared-canvas.org/ns/context.json")||t["@context"]==="http://iiif.io/api/image/2/context.json"?oe.traverseUnknown(t):t}var it=Object.freeze({__proto__:null,types:d,identifyResource:C,Traverse:T,convertLanguageMapping:f,getProfile:P,getTypeFromContext:re,presentation2to3:oe,convertPresentation2:le});const nt={id:"https://iiif-parser/annotation",type:"Annotation",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[],accessibility:[],audience:[],body:[],bodyValue:null,canonical:null,created:null,creator:[],generated:null,generator:[],modified:null,motivation:[],rights:[],stylesheet:null,target:[],timeMode:void 0,via:[],partOf:[]},ve={id:"https://iiif-parser/annotation-page",type:"AnnotationPage",behavior:[],motivation:null,label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[]},pe={id:"https://iiif-parser/empty-canvas",type:"Canvas",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],duration:0,height:0,width:0},fe={id:"https://iiif-parser/empty-collection",type:"Collection",label:null,viewingDirection:"left-to-right",behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],services:[]},ce={id:"https://iiif-parser/empty-manifest",type:"Manifest",annotations:[],behavior:[],homepage:[],items:[],label:null,logo:[],metadata:[],motivation:null,navDate:null,provider:[],partOf:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,rendering:[],requiredStatement:null,rights:null,seeAlso:[],service:[],services:[],start:null,structures:[],summary:null,thumbnail:[],viewingDirection:"left-to-right"},he={id:"https://iiif-parser/empty-canvas",type:"Range",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],start:null,supplementary:null,viewingDirection:"left-to-right"},ue={id:"https://iiif-parser/empty-agent",type:"Agent",label:{},logo:[],seeAlso:[],homepage:[]},F=["Collection","Manifest","Canvas","AnnotationPage","AnnotationCollection","Annotation","ContentResource","Range","Service","Selector","Agent"];function de(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t.type=="string"){const e=F.indexOf(t.type);if(e!==-1)return F[e]}if(t.profile)return"Service";throw new Error("Resource type is not known")}class M{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationCollection:[],annotationPage:[],annotation:[],contentResource:[],choice:[],range:[],service:[],agent:[],...e},this.options={allowUndefinedReturn:!1,...i}}static all(e){return new M({collection:[e],manifest:[e],canvas:[e],annotationCollection:[e],annotationPage:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e]})}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=e.thumbnail.map(i=>this.traverseType(i,this.traversals.contentResource))),e.provider&&(e.provider=e.provider.map(i=>this.traverseAgent(i))),e}traverseLinking(e){return e.seeAlso&&(e.seeAlso=e.seeAlso.map(i=>this.traverseType(i,this.traversals.contentResource))),e.service&&(e.service=e.service.map(i=>this.traverseType(i,this.traversals.service))),e.services&&(e.services=e.services.map(i=>this.traverseType(i,this.traversals.service))),e.logo&&(e.logo=e.logo.map(i=>this.traverseType(i,this.traversals.contentResource))),e.homepage&&(e.homepage=e.homepage.map(i=>this.traverseType(i,this.traversals.contentResource))),e.partOf&&(e.partOf=e.partOf.map(i=>typeof i=="string"||!i.type?this.traverseType(i,this.traversals.contentResource):i.type==="Canvas"?this.traverseType(i,this.traversals.canvas):i.type==="AnnotationCollection"?this.traverseType(i,this.traversals.annotationCollection):this.traverseType(i,this.traversals.contentResource))),e.start&&(e.start=e.start?this.traverseType(e.start,this.traversals.canvas):null),e.rendering&&(e.rendering=e.rendering.map(i=>this.traverseType(i,this.traversals.contentResource))),e.supplementary&&(e.supplementary=e.supplementary.map(i=>this.traverseType(i,this.traversals.contentResource))),e}traverseCollectionItems(e){return e.items&&e.items.map(i=>i.type==="Collection"?this.traverseCollection(i):this.traverseManifest(i)),e}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseInlineAnnotationPages(this.traverseLinking(this.traversePosterCanvas(this.traverseCollectionItems(e))))),this.traversals.collection)}traverseManifestItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseCanvas(i))),e}traverseManifestStructures(e){return e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseManifest(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traverseManifestStructures(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e)))))),this.traversals.manifest)}traverseCanvasItems(e){return e.items=(e.items||[]).map(i=>this.traverseAnnotationPage(i)),e}traverseInlineAnnotationPages(e){return typeof e=="string"||!e||e.annotations&&(e.annotations=e.annotations.map(i=>this.traverseAnnotationPage(i))),e}traverseCanvas(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))))),this.traversals.canvas)}traverseAnnotationPageItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseAnnotation(i))),e}traverseAnnotationPage(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationPageItems(e))),this.traversals.annotationPage)}traverseAnnotationBody(e){return Array.isArray(e.body)?e.body=e.body.map(i=>this.traverseContentResource(i)):e.body&&(e.body=this.traverseContentResource(e.body)),e}traversePosterCanvas(e){return e.posterCanvas&&(e.posterCanvas=this.traverseType(e.posterCanvas,this.traversals.canvas)),e.placeholderCanvas&&(e.placeholderCanvas=this.traverseType(e.placeholderCanvas,this.traversals.canvas)),e.accompanyingCanvas&&(e.accompanyingCanvas=this.traverseType(e.accompanyingCanvas,this.traversals.canvas)),e}traverseAnnotation(e){return this.traverseType(this.traverseLinking(this.traverseAnnotationBody(e)),this.traversals.annotation)}traverseContentResourceLinking(e){return typeof e=="string"||!e||e&&e.service&&(e.service=(e.service||[]).map(i=>this.traverseType(i,this.traversals.service))),e}traverseContentResource(e){return e.type==="Choice"&&(e.items=e.items.map(i=>this.traverseContentResource(i))),this.traverseType(this.traverseInlineAnnotationPages(this.traverseContentResourceLinking(e)),this.traversals.contentResource)}traverseRangeRanges(e){return e.items&&(e.items=e.items.map(i=>typeof i=="string"?this.traverseCanvas({id:i,type:"Canvas"}):i.type==="Manifest"?this.traverseManifest(i):this.traverseRange(i))),e}traverseRange(e){return this.traverseType(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseRangeRanges(e)))),this.traversals.range)}traverseAgent(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.agent)}traverseType(e,i){return i.reduce((n,a)=>{const r=a(n);return typeof r=="undefined"&&!this.options.allowUndefinedReturn?n:r},e)}traverseService(e){return this.traverseType(e,this.traversals.service)}traverseUnknown(e){const i=de(e);switch(i){case"Collection":return this.traverseCollection(e);case"Manifest":return this.traverseManifest(e);case"Canvas":return this.traverseCanvas(e);case"AnnotationPage":return this.traverseAnnotationPage(e);case"Annotation":return this.traverseAnnotation(e);case"ContentResource":return this.traverseContentResource(e);case"Range":return this.traverseRange(e);case"Service":return this.traverseService(e);case"Agent":return this.traverseAgent(e);default:throw new Error(`Unknown or unsupported resource type of ${i}`)}}}const rt={Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}};function me(){return{Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}}}function ge(t,e){if(typeof t=="string")return{id:t,type:e};if(!t.id)throw new Error(`Invalid resource does not have an ID (${e})`);return t}function at(t){return(e,i)=>{const n=t[e]?t[e]:{};return a=>{const r=ge(a,i||e);return r&&r.id&&e?(n[r.id]=n[r.id]?Object.assign({},n[r.id],r):Object.assign({},r),{id:r.id,type:e==="ContentResource"?e:r.type}):r}}}function st(t){return(e,i)=>n=>{const{id:a,type:r}=ge(n,i||e);if(typeof a=="undefined")throw new Error("Found invalid entity without an ID.");return e==="ContentResource"?t[a]=e:t[a]=r,n}}function ot(t){const e=JSON.stringify(t);let i=5381,n=e.length;for(;n;)i=i*33^e.charCodeAt(--n);const r=(i>>>0).toString(16);return r.length%2?"0"+r:r}function D(t){return e=>typeof e=="string"?{id:e,type:t}:e.id?e.type?e:{type:t,...e}:{id:ot(e),type:t,...e}}function I(t){return e=>({...t,...e})}function _(t){return Array.isArray(t)?t:[t]}function lt(t){return t.body&&(t.body=_(t.body)),t.seeAlso&&(t.seeAlso=_(t.seeAlso)),t.body&&(t.body=_(t.body)),t.audience&&(t.audience=_(t.audience)),t.accessibility&&(t.accessibility=_(t.accessibility)),t.motivation&&(t.motivation=_(t.motivation)),t}function vt(t){const e=le(t),i=me(),n={},a=at(i),r=st(n),o=new M({collection:[I(fe),r("Collection"),a("Collection")],manifest:[I(ce),r("Manifest"),a("Manifest")],canvas:[I(pe),r("Canvas"),a("Canvas")],annotationPage:[D("AnnotationPage"),I(ve),r("AnnotationPage"),a("AnnotationPage")],annotation:[D("Annotation"),lt,r("Annotation"),a("Annotation")],contentResource:[D("ContentResource"),r("ContentResource"),a("ContentResource")],range:[I(he),r("Range","Canvas"),a("Range","Canvas")],agent:[I(ue),r("Agent"),a("Agent")]}).traverseUnknown(e);return{entities:i,resource:o,mapping:n}}const h="__$UNSET$__",k="__$UNWRAP$__";function pt(t,e){const i=t.requests[e],n=t.mapping[e];if(!(!n||i&&i.resourceUri&&!t.entities[n][i.resourceUri]))return t.entities[n][i?i.resourceUri:e]}function ye(t){const e={};for(const[i,n]of t){if(i===k&&n!==h)return n;n!==h&&typeof n!="undefined"&&n!==null&&(e[i]=n)}return e}function ft(t,e,i){if(!e.type||!e.id)throw new Error("Unknown entity");if(!i[e.type])throw new Error(`Serializer not found for ${e.type}`);function n(a){const r=i[a.type];if(!r)return h;const b=pt(t,a.id)||(a.id&&a.type?a:null);if(!b)return h;const o=r(b,t);let L=o.next();for(;!L.done;){const x=L.value;let N=h;if(x)if(Array.isArray(x)){const _e=[];for(const mt of x)_e.push(n(mt));N=_e}else N=n(x);L=o.next(N)}return L.value===h?h:ye(L.value)}return n(e)}function m(t){if(!t)return;const e=Object.keys(t);if(e.length!==0){if(e.length===1){const i=e[0];if(!i)return"";const n=(t[i]||[]).join("");return i==="@none"||i==="none"||i==="en"?n:{"@language":i,"@value":n}}return e.map(i=>({"@language":i,"@value":(t[i]||[]).join("")}))}}function Ae(t){return Array.isArray(t)?t.map(e=>Ae(e)):typeof t=="string"?t:t.type&&t.type==="Canvas"?t.id:t}function u(t,e=!1){if(!!t)return t.length>1&&!e?t:t[0]||void 0}function ct(t){if(!!t){if(typeof t=="string")return{"@id":t};if("@id"in t){const e={...t};return delete e["@type"],e}return{"@context":"http://iiif.io/api/image/2/context.json","@id":t.id,profile:`http://iiif.io/api/image/2/profiles/${t.profile}.json`}}}function g(t,e){return[["@id",t.id],["@type",e],["format",t.format],["height",t.height],["width",t.width],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0]]}function*y(t){const e=t.provider?yield t.provider[0]:void 0;return[["label",m(t.label)],["metadata",t.metadata&&t.metadata.length?t.metadata.map(i=>({label:m(i.label)||"",value:m(i.value)||""})):void 0],["description",m(t.summary)],["thumbnail",u(yield t.thumbnail)],["navDate",t.navDate],["logo",e?u(e.logo):void 0],["homepage",e?e.homepage:void 0],["attribution",t.requiredStatement?m(t.requiredStatement.value):void 0]]}function*R(t){return[["seeAlso",u(yield t.seeAlso)],["service",u((t.service||[]).map(ct))],["rendering",u(yield t.rendering)],["startCanvas",t.start?t.start.id:void 0]]}const ht={Manifest:function*(t){return[...g(t,"sc:Manifest"),...yield*y(t),...yield*R(t),["sequences",[{"@id":`${t.id}/sequence0`,"@type":"sc:Sequence",canvases:yield t.items}]],["structures",yield t.structures]]},Canvas:function*(t){const i=(yield t.items)[0];return[...g(t,"sc:Canvas"),...yield*y(t),...yield*R(t),["images",i?[i.resources]:void 0],["annotations",t.annotations&&t.annotations.length?u(yield t.annotations):void 0]]},AnnotationPage:function*(t){return[...g(t,"sc:AnnotationList"),...yield*y(t),["resources",t.items&&t.items.length?u(yield t.items):void 0]]},Annotation:function*(t){return[["@id",t.id],["@type","oa:Annotation"],["motivation","sc:painting"],["on",Ae(t.target)],["resource",u(yield t.body,!0)]]},ContentResource:function*(t){switch(t.type){case"Image":return[...g(t,"dctypes:Image"),...yield*y(t),...yield*R(t)];case"Text":case"Dataset":default:return[...g(t,void 0),...yield*y(t)]}},AnnotationCollection:function*(t){return[["@id",t.id],["@type","sc:Layer"],["label",m(t.label)]]},Collection:function*(t){return[...g(t,"sc:Collection"),...yield*y(t),...yield*R(t),["members",yield*t.items]]},Range:function*(t){const e=[],i=[];if(t.items)for(const n of t.items){const a=yield n;e.push({"@id":n.id,"@type":n.type,label:a?a.label:void 0,within:t.id}),n.type==="Canvas"&&i.push(n.id)}return[...g(t,"sc:Range"),...yield*y(t),...yield*R(t),["canvases",i.length===e.length?i:void 0],["members",i.length!==e.length?e:void 0]]}};function E(t){return[["id",t.id],["type",t.type],["format",t.format],["profile",t.profile],["height",t.height],["width",t.width],["duration",t.duration||void 0],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0],["behavior",t.behavior&&t.behavior.length?t.behavior:void 0],["timeMode",t.timeMode],["motivation",t.motivation]]}function s(t){if(!(!t||t.length===0))return t}function Ce(t){if(t&&t.type&&t.type==="ImageService2"){const{id:e,type:i,profile:n,...a}=t;return{"@id":e,"@type":i,profile:n.startsWith("http")?n:`http://iiif.io/api/image/2/${n}.json`,...a}}return t}function Ie(t){if(!(!t||t.length===0))return t.map(Ce)}function*w(t){return[["label",t.label],["metadata",s(t.metadata)],["summary",t.summary],["requiredStatement",t.requiredStatement],["rights",t.rights],["navDate",t.navDate],["language",t.language],["thumbnail",s(yield t.thumbnail)],["placeholderCanvas",yield t.placeholderCanvas],["accompanyingCanvas",yield t.accompanyingCanvas],["provider",s(yield t.provider)]]}function*A(t){return[["seeAlso",s(yield t.seeAlso)],["service",Ie(t.service)],["services",Ie(t.services)],["rendering",s(yield t.rendering)],["supplementary",s(yield t.supplementary)],["homepage",s(yield t.homepage)],["logo",s(yield t.logo)],["partOf",s(yield t.partOf)],["start",t.start]]}var ut=Object.freeze({__proto__:null,emptyAnnotation:nt,emptyAnnotationPage:ve,emptyCanvas:pe,emptyCollection:fe,emptyManifest:ce,emptyRange:he,emptyAgent:ue,defaultEntities:rt,getDefaultEntities:me,normalize:vt,types:F,identifyResource:de,Traverse:M,UNSET:h,UNWRAP:k,serializedFieldsToObject:ye,serialize:ft,languageString2to3:m,serializeConfigPresentation2:ht,serializeConfigPresentation3:{Manifest:function*(t){return[["@context","http://iiif.io/api/presentation/3/context.json"],...E(t),...yield*w(t),...yield*A(t),["items",yield t.items],["structures",s(yield t.structures)],["annotations",s(yield t.annotations)]]},Canvas:function*(t){return[...E(t),...yield*w(t),...yield*A(t),["items",yield t.items],["annotations",s(yield t.annotations)]]},Agent:function*(t){return[["id",t.id],["type","Agent"],["label",t.label],...yield*A(t)]},AnnotationPage:function*(t){return[...Object.entries(t).map(([i,n])=>[i,Array.isArray(n)?s(n):n]).filter(([i,n])=>i!=="items"),...yield*A(t),["items",yield t.items]]},Service:function*(t){return[[k,Ce(t)]]},Annotation:function*(t){return[...Object.entries(t).map(([i,n])=>[i,Array.isArray(n)?s(n):n]).filter(([i])=>i!=="body"),["body",yield t.body]]},ContentResource:function*(t){return[...E(t),...yield*w(t),...yield*A(t),["annotations",s(yield t.annotations)]]},AnnotationCollection:function*(t){return[["id",t.id],["type","AnnotationCollection"],["label",t.label]]},Collection:function*(t){return[...E(t),...yield*w(t),...yield*A(t),["items",yield*t.items],["annotations",s(yield t.annotations)]]},Range:function*(t){const e=[];for(const i of t.items)i.type==="Range"?e.push(yield i):e.push(i);return[...E(t),...yield*w(t),...yield*A(t),["items",e],["annotations",s(yield t.annotations)]]}}}),dt={Presentation2:it,Presentation3:ut};return dt});
(function(d,_){typeof exports=="object"&&typeof module!="undefined"?module.exports=_():typeof define=="function"&&define.amd?define(_):(d=typeof globalThis!="undefined"?globalThis:d||self,d.IIIFParser=_())})(this,function(){"use strict";const d=["sc:Collection","sc:Manifest","sc:Canvas","oa:AnnotationList","oa:Annotation","sc:Range","sc:Layer","sc:Sequence","oa:Choice","Service","ContentResource"];function _(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t["@type"]=="string"){const e=d.indexOf(t["@type"]);if(e!==-1)return d[e]}if(t.profile)return"Service";if(t.format||t["@type"])return"ContentResource";throw new Error("Resource type is not known")}class T{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationList:[],sequence:[],annotation:[],contentResource:[],choice:[],range:[],service:[],layer:[],...e},this.options={convertPropsToArray:!0,mergeMemberProperties:!0,allowUndefinedReturn:!1,...i}}static all(e){return new T({collection:[e],manifest:[e],canvas:[e],annotationList:[e],sequence:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e],layer:[e]})}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCollectionItems(e))),this.traversals.collection)}traverseCollectionItems(e){if(this.options.mergeMemberProperties){const i=[...(e.manifests||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Manifest"}:n),...(e.collections||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Collection"}:n),...e.members||[]];delete e.collections,delete e.manifests,e.members=i}return e.manifests&&(e.manifests=e.manifests.map(i=>this.traverseManifest(typeof i=="string"?{"@id":i,"@type":"sc:Manifest"}:i))),e.collections&&(e.collections=e.collections.map(i=>this.traverseCollection(typeof i=="string"?{"@id":i,"@type":"sc:Collection"}:i))),e.members&&(e.members=e.members.map(i=>typeof i=="string"?i:this.traverseUnknown(i))),e}traverseManifest(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e))),this.traversals.manifest)}traverseManifestItems(e){return e.sequences&&(e.sequences=e.sequences.map(i=>this.traverseSequence(i))),e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseSequence(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseSequenceItems(e))),this.traversals.sequence)}traverseSequenceItems(e){return e.canvases&&(e.canvases=e.canvases.map(i=>this.traverseCanvas(i))),e}traverseCanvas(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))),this.traversals.canvas)}traverseCanvasItems(e){return e.images&&(e.images=e.images.map(i=>this.traverseAnnotation(i))),e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseRange(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseRangeItems(e))),this.traversals.range)}traverseRangeItems(e){if(this.options.mergeMemberProperties){const i=[...(e.ranges||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Range"}:n),...(e.canvases||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Canvas"}:n),...e.members||[]];delete e.ranges,delete e.canvases,e.members=i.length?i.map(n=>this.traverseUnknown(n)):void 0}return e}traverseAnnotationList(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationListItems(e))),this.traversals.annotationList)}traverseAnnotationListItems(e){return e.resources&&(e.resources=e.resources.map(i=>this.traverseAnnotation(i))),e}traverseAnnotation(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationItems(e))),this.traversals.annotation)}traverseAnnotationItems(e){return e.resource&&(e.resource=this.traverseContentResource(e.resource)),e.on,e}traverseLayer(e){return this.traverseType(this.traverseLinking(this.traverseLayerItems(e)),this.traversals.layer)}traverseLayerItems(e){return e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseChoice(e){return this.traverseType(this.traverseChoiceItems(e),this.traversals.choice)}traverseChoiceItems(e){return e.default&&e.default!=="rdf:nil"&&(e.default=this.traverseContentResource(e.default)),e.item&&e.item!=="rdf:nil"&&(e.item=e.item.map(i=>this.traverseContentResource(i))),e}traverseService(e){return this.traverseType(this.traverseLinking(e),this.traversals.service)}traverseContentResource(e){return e["@type"]==="oa:Choice"?this.traverseChoice(e):this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.contentResource)}traverseUnknown(e){if(!e["@type"]||typeof e=="string")return e;switch(_(e)){case"sc:Collection":return this.traverseCollection(e);case"sc:Manifest":return this.traverseManifest(e);case"sc:Canvas":return this.traverseCanvas(e);case"sc:Sequence":return this.traverseSequence(e);case"sc:Range":return this.traverseRange(e);case"oa:Annotation":return this.traverseAnnotation(e);case"oa:AnnotationList":return this.traverseAnnotationList(e);case"sc:Layer":return this.traverseLayer(e);case"Service":return this.traverseService(e);case"oa:Choice":return this.traverseChoice(e);case"ContentResource":return this.traverseContentResource(e)}return e.profile?this.traverseService(e):e}traverseImageResource(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],a=[];for(const r of n)typeof r=="string"?a.push(this.traverseContentResource({"@id":r,"@type":"dctypes:Image"})):a.push(this.traverseContentResource(r));return!i&&!this.options.convertPropsToArray?a[0]:a}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=this.traverseImageResource(e.thumbnail)),e.logo&&(e.logo=this.traverseImageResource(e.logo)),e}traverseOneOrMoreServices(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],a=[];for(const r of n)a.push(this.traverseService(r));return!i&&!this.options.convertPropsToArray?a[0]:a}traverseLinking(e){return e.related&&(e.related=this.traverseOneOrManyType(e.related,this.traversals.contentResource)),e.rendering&&(e.rendering=this.traverseOneOrManyType(e.rendering,this.traversals.contentResource)),e.service&&(e.service=this.traverseOneOrMoreServices(e.service)),e.seeAlso&&(e.seeAlso=this.traverseOneOrManyType(e.seeAlso,this.traversals.contentResource)),e.within&&(typeof e.within=="string"||(e.within=this.traverseOneOrManyType(e.within,this.traversals.contentResource))),e.startCanvas&&(typeof e.startCanvas=="string"?e.startCanvas=this.traverseType({"@id":e.startCanvas,"@type":"sc:Canvas"},this.traversals.canvas):e.startCanvas&&this.traverseType(e.startCanvas,this.traversals.canvas)),e.contentLayer&&(typeof e.contentLayer=="string"?e.contentLayer=this.traverseLayer({"@id":e.contentLayer,"@type":"sc:Layer"}):e.contentLayer=this.traverseLayer(e.contentLayer)),e}traverseOneOrManyType(e,i){if(!Array.isArray(e))if(this.options.convertPropsToArray)e=[e];else return this.traverseType(e,i);return e.map(n=>this.traverseType(n,i))}traverseType(e,i){return i.reduce((n,a)=>{const r=a(n);return typeof r=="undefined"&&!this.options.allowUndefinedReturn?n:r},e)}}const be="http://library.stanford.edu/iiif/image-api/compliance.html#level0",j="http://library.stanford.edu/iiif/image-api/compliance.html#level1",G="http://library.stanford.edu/iiif/image-api/compliance.html#level2",Re="http://library.stanford.edu/iiif/image-api/conformance.html#level0",$="http://library.stanford.edu/iiif/image-api/conformance.html#level1",q="http://library.stanford.edu/iiif/image-api/conformance.html#level2",Ee="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0",U="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1",V="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2",Le="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0",z="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1",W="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2",we="http://iiif.io/api/image/1/level0.json",Te="http://iiif.io/api/image/1/profiles/level0.json",H="http://iiif.io/api/image/1/level1.json",B="http://iiif.io/api/image/1/profiles/level1.json",K="http://iiif.io/api/image/1/level2.json",Q="http://iiif.io/api/image/1/profiles/level2.json",Me="http://iiif.io/api/image/2/level0.json",xe="http://iiif.io/api/image/2/profiles/level0.json",X="http://iiif.io/api/image/2/level1.json",Y="http://iiif.io/api/image/2/profiles/level1.json",Z="http://iiif.io/api/image/2/level2.json",J="http://iiif.io/api/image/2/profiles/level2.json",Se="level0",ee="level1",te="level2",Pe="http://iiif.io/api/image/2/level0",ie="http://iiif.io/api/image/2/level1",ne="http://iiif.io/api/image/2/level2",Oe=[ie,ne,j,G,$,q,U,V,z,W,H,B,K,Q,X,Y,Z,J,ee,te],Fe=[Pe,ie,ne,be,j,G,Re,$,q,Ee,U,V,Le,z,W,we,Te,H,B,K,Q,Me,xe,X,Y,Z,J,Se,ee,te],S={attributionLabel:"Attribution",lang:"none",providerId:"http://example.org/provider",providerName:"Unknown"};function f(t,e="none"){if(!t)return{};const i=Array.isArray(t)?t:[t],n={};for(const a of i){if(typeof a=="string"){n[e]=n[e]?n[e]:[],n[e].push(a||"");continue}if(!a["@language"]){n[e]=n[e]?n[e]:[],n[e].push(a["@value"]||"");continue}const r=a["@language"];n[r]=n[r]?n[r]:[],n[r].push(a["@value"]||"")}return n}function P(t){if(Array.isArray(t))return P(t.find(e=>typeof e=="string"));if(Fe.indexOf(t)!==-1)return"level2";if(Oe.indexOf(t)!==-1)return"level1";if(typeof t=="string")return t}function re(t){const e=Array.isArray(t)?t:[t];for(const i of e)switch(i){case"http://iiif.io/api/image/2/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2":return"ImageService2";case"http://iiif.io/api/image/1/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/context.json":return"ImageService1";case"http://iiif.io/api/annex/openannotation/context.json":return"ImageApiSelector"}}function De(t){switch(t){case"http://iiif.io/api/image/2/level0.json":case"http://iiif.io/api/image/2/level1.json":case"http://iiif.io/api/image/2/level2.json":return"ImageService2";case"http://iiif.io/api/auth/1/kiosk":case"http://iiif.io/api/auth/1/login":case"http://iiif.io/api/auth/1/clickthrough":case"http://iiif.io/api/auth/1/external":case"http://iiif.io/api/auth/0/kiosk":case"http://iiif.io/api/auth/0/login":case"http://iiif.io/api/auth/0/clickthrough":case"http://iiif.io/api/auth/0/external":return"AuthCookieService1";case"http://iiif.io/api/auth/1/token":case"http://iiif.io/api/auth/0/token":return"AuthTokenService1";case"http://iiif.io/api/auth/1/logout":case"http://iiif.io/api/auth/0/logout":return"AuthLogoutService1";case"http://iiif.io/api/search/1/search":case"http://iiif.io/api/search/0/search":return"SearchService1";case"http://iiif.io/api/search/1/autocomplete":case"http://iiif.io/api/search/0/autocomplete":return"AutoCompleteService1"}}function ke(t){return Array.isArray(t)?t:[t]}function Ne(t){for(const e of["sc","oa","dcterms","dctypes","iiif"])if(t.startsWith(`${e}:`))return t.slice(e.length+1);return t}function O(t){const e=t["@id"]||t.id;let i=t["@type"]||t.type;const n=t.profile||void 0,a=t["@context"]||void 0;if(n){const r=De(n);if(r)return r}if(a){const r=re(a);if(r)return r}if(i){if(Array.isArray(i)){if(i.indexOf("oa:CssStylesheet")!==-1)return"CssStylesheet";if(i.indexOf("cnt:ContentAsText")!==-1)return"TextualBody";i=i[0]}for(const r of["sc","oa","dcterms","dctypes","iiif"])if(i.startsWith(`${r}:`)){i=i.slice(r.length+1);break}switch(i){case"Layer":return"AnnotationCollection";case"AnnotationList":return"AnnotationPage";case"cnt:ContentAsText":return"TextualBody"}}if(t.format){if(t.format.startsWith("image/"))return"Image";if(t.format.startsWith("text/")||t.format==="application/pdf")return"Text";if(t.format.startsWith("application/"))return"Dataset"}return e&&(e.endsWith(".jpg")||e.endsWith(".png")||e.endsWith(".jpeg"))?"Image":i||"unknown"}const je=/http(s)?:\/\/(creativecommons.org|rightsstatements.org)[^"'\\<\n]+/gm;function Ge(t){const e=t.match(je);return e?e[0]:t}function $e(t,e="Rights/License",i="none"){let n=null;const a=[],r=Array.isArray(t)?t:[t];for(const E of r){const o=E?Ge(E):void 0;if(o&&(o.indexOf("creativecommons.org")!==-1||o.indexOf("rightsstatements.org")!==-1)){o.startsWith("https://")?n=`http://${o.slice(8)}`:n=o;continue}o&&a.push({label:{[i]:[e]},value:{[i]:[o]}})}return[n,a]}const qe=["http://iiif.io/api/presentation/2/context.json","http://iiif.io/api/image/2/context.json","http://iiif.io/api/image/1/context.json","http://library.stanford.edu/iiif/image-api/1.1/context.json","http://iiif.io/api/search/1/context.json","http://iiif.io/api/search/0/context.json","http://iiif.io/api/auth/1/context.json","http://iiif.io/api/auth/0/context.json","http://iiif.io/api/annex/openannotation/context.json"];function Ue(t){if(t){const e=Array.isArray(t)?t:[t],i=[];for(const n of e)n==="http://iiif.io/api/presentation/2/context.json"&&i.push("http://iiif.io/api/presentation/3/context.json"),qe.indexOf(n)===-1&&i.push(n);if(e.length)return i.length===1?i[0]:i}}function Ve(t){return t?t.map(e=>({label:f(e.label),value:f(e.value)})):[]}function v(t){for(const e in t)(typeof t[e]=="undefined"||t[e]===null)&&delete t[e];return t}let ae=0;function se(t,e){const i=encodeURI(t.id||t["@id"]||"").trim();return i&&e?`${i}/${e}`:i||(ae++,`http://example.org/${t["@type"]}${e?`/${e}`:""}/${ae}`)}function p(t){const e=[...t.behavior||[]];return t.viewingHint&&e.push(t.viewingHint),{"@context":t["@context"]?Ue(t["@context"]):void 0,id:(t["@id"]||se(t)).trim(),type:O(t),behavior:e.length?e:void 0,height:t.height?t.height:void 0,width:t.width?t.width:void 0,motivation:t.motivation?Ne(t.motivation):void 0,viewingDirection:t.viewingDirection,profile:t.profile,format:t.format?t.format:void 0,duration:void 0,timeMode:void 0}}function l(t){const[e,i]=$e(t.license),n=[...t.metadata?Ve(t.metadata):[],...i];return{rights:e,metadata:n.length?n:void 0,label:t.label?f(t.label):void 0,requiredStatement:t.attribution?{label:f(S.attributionLabel),value:f(t.attribution)}:void 0,navDate:t.navDate,summary:t.description?f(t.description):void 0,thumbnail:t.thumbnail}}function ze(t){if(!t.within)return;const e=Array.isArray(t.within)?t.within:[t.within],i=[];for(const n of e)if(typeof n=="string"){if(n)switch(t["@type"]){case"sc:Manifest":i.push({id:n,type:"Collection"});break}}else n["@id"]&&i.push({id:n["@id"],type:O(n)});return i.length?i:void 0}function c(t){const e=t.related?Array.isArray(t.related)?t.related:[t.related]:[],i=t.contentLayer;return{provider:t.logo||e.length?[{id:S.providerId,type:"Agent",homepage:e.length?[e[0]]:void 0,logo:t.logo?Array.isArray(t.logo)?t.logo:[t.logo]:void 0,label:f(S.providerName)}]:void 0,partOf:ze(t),rendering:t.rendering,seeAlso:t.seeAlso,start:t.startCanvas,service:t.service?ke(t.service):void 0,supplementary:i?[i]:void 0}}function We(t){return v({...p(t),...l(t),...c(t),items:t.members})}function He(t){const e=[],i=[];for(const a of t.sequences||[])a.canvases.length&&e.push(...a.canvases),a.behavior&&i.push(...a.behavior);const n=p(t);return i.length&&(n.behavior?n.behavior.push(...i):n.behavior=i),v({...n,...l(t),...c(t),items:e,structures:t.structures})}function Be(t){return v({...p(t),...l(t),...c(t),items:t.images&&t.images.length?[{id:se(t,"annotation-page"),type:"AnnotationPage",items:t.images}]:void 0})}function Ke(t){return v({...p(t),...l(t),...c(t),items:t.resources})}function Qe(t){return!t.canvases||t.canvases.length===0?{canvases:[],behavior:[]}:{canvases:t.canvases,behavior:t.viewingHint?[t.viewingHint]:[]}}function Xe(t){return v({...p(t),...l(t),...c(t),target:typeof t.on=="string"?encodeURI(t.on).trim():t.on,body:t.resource})}function Ye(t){const e=t;return v({...p(e),...l(e),...c(e)})}function Ze(t){const e=[];return t.default&&t.default!=="rdf:nil"&&e.push(t.default),t.item&&t.item!=="rdf:nil"&&e.push(...t.item),{...p(t),...l(t),items:e}}function Je(t){return v({...p(t),...l(t),...c(t),items:t.members})}function et(t){const{"@id":e,"@type":i,"@context":n,profile:a,...r}=t;return e&&(r.id=e),r.type=O(t),r.type==="unknown"&&(r.type="Service"),a&&(r.profile=P(a)),v({...r,...l(r)})}function tt(t){return v({...p(t),...l(t),...c(t)})}const oe=new T({collection:[We],manifest:[He],canvas:[Be],annotationList:[Ke],sequence:[Qe],annotation:[Xe],contentResource:[Ye],choice:[Ze],range:[Je],service:[et],layer:[tt]});function le(t){return t&&t["@context"]&&(t["@context"]==="http://iiif.io/api/presentation/2/context.json"||t["@context"].indexOf("http://iiif.io/api/presentation/2/context.json")!==-1||t["@context"]==="http://www.shared-canvas.org/ns/context.json")||t["@context"]==="http://iiif.io/api/image/2/context.json"?oe.traverseUnknown(t):t}var it=Object.freeze({__proto__:null,types:d,identifyResource:_,Traverse:T,convertLanguageMapping:f,getProfile:P,getTypeFromContext:re,presentation2to3:oe,convertPresentation2:le});const nt={id:"https://iiif-parser/annotation",type:"Annotation",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[],accessibility:[],audience:[],body:[],bodyValue:null,canonical:null,created:null,creator:[],generated:null,generator:[],modified:null,motivation:[],rights:[],stylesheet:null,target:[],timeMode:void 0,via:[],partOf:[]},ve={id:"https://iiif-parser/annotation-page",type:"AnnotationPage",behavior:[],motivation:null,label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[]},pe={id:"https://iiif-parser/empty-canvas",type:"Canvas",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],duration:0,height:0,width:0},fe={id:"https://iiif-parser/empty-collection",type:"Collection",label:null,viewingDirection:"left-to-right",behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],services:[]},ce={id:"https://iiif-parser/empty-manifest",type:"Manifest",annotations:[],behavior:[],homepage:[],items:[],label:null,logo:[],metadata:[],motivation:null,navDate:null,provider:[],partOf:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,rendering:[],requiredStatement:null,rights:null,seeAlso:[],service:[],services:[],start:null,structures:[],summary:null,thumbnail:[],viewingDirection:"left-to-right"},he={id:"https://iiif-parser/empty-canvas",type:"Range",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],start:null,supplementary:null,viewingDirection:"left-to-right"},ue={id:"https://iiif-parser/empty-agent",type:"Agent",label:{},logo:[],seeAlso:[],homepage:[]},F=["Collection","Manifest","Canvas","AnnotationPage","AnnotationCollection","Annotation","ContentResource","Range","Service","Selector","Agent"];function de(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t.type=="string"){const e=F.indexOf(t.type);if(e!==-1)return F[e]}if(t.profile)return"Service";throw new Error("Resource type is not known")}class M{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationCollection:[],annotationPage:[],annotation:[],contentResource:[],choice:[],range:[],service:[],agent:[],...e},this.options={allowUndefinedReturn:!1,...i}}static all(e){return new M({collection:[e],manifest:[e],canvas:[e],annotationCollection:[e],annotationPage:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e]})}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=e.thumbnail.map(i=>this.traverseType(i,this.traversals.contentResource))),e.provider&&(e.provider=e.provider.map(i=>this.traverseAgent(i))),e}traverseLinking(e){return e.seeAlso&&(e.seeAlso=e.seeAlso.map(i=>this.traverseType(i,this.traversals.contentResource))),e.service&&(e.service=e.service.map(i=>this.traverseType(i,this.traversals.service))),e.services&&(e.services=e.services.map(i=>this.traverseType(i,this.traversals.service))),e.logo&&(e.logo=e.logo.map(i=>this.traverseType(i,this.traversals.contentResource))),e.homepage&&(e.homepage=e.homepage.map(i=>this.traverseType(i,this.traversals.contentResource))),e.partOf&&(e.partOf=e.partOf.map(i=>typeof i=="string"||!i.type?this.traverseType(i,this.traversals.contentResource):i.type==="Canvas"?this.traverseType(i,this.traversals.canvas):i.type==="AnnotationCollection"?this.traverseType(i,this.traversals.annotationCollection):this.traverseType(i,this.traversals.contentResource))),e.start&&(e.start=e.start?this.traverseType(e.start,this.traversals.canvas):null),e.rendering&&(e.rendering=e.rendering.map(i=>this.traverseType(i,this.traversals.contentResource))),e.supplementary&&(e.supplementary=e.supplementary.map(i=>this.traverseType(i,this.traversals.contentResource))),e}traverseCollectionItems(e){return e.items&&e.items.map(i=>i.type==="Collection"?this.traverseCollection(i):this.traverseManifest(i)),e}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseInlineAnnotationPages(this.traverseLinking(this.traversePosterCanvas(this.traverseCollectionItems(e))))),this.traversals.collection)}traverseManifestItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseCanvas(i))),e}traverseManifestStructures(e){return e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseManifest(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traverseManifestStructures(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e)))))),this.traversals.manifest)}traverseCanvasItems(e){return e.items=(e.items||[]).map(i=>this.traverseAnnotationPage(i)),e}traverseInlineAnnotationPages(e){return typeof e=="string"||!e||e.annotations&&(e.annotations=e.annotations.map(i=>this.traverseAnnotationPage(i))),e}traverseCanvas(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))))),this.traversals.canvas)}traverseAnnotationPageItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseAnnotation(i))),e}traverseAnnotationPage(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationPageItems(e))),this.traversals.annotationPage)}traverseAnnotationBody(e){return Array.isArray(e.body)?e.body=e.body.map(i=>this.traverseContentResource(i)):e.body&&(e.body=this.traverseContentResource(e.body)),e}traversePosterCanvas(e){return e.posterCanvas&&(e.posterCanvas=this.traverseType(e.posterCanvas,this.traversals.canvas)),e.placeholderCanvas&&(e.placeholderCanvas=this.traverseType(e.placeholderCanvas,this.traversals.canvas)),e.accompanyingCanvas&&(e.accompanyingCanvas=this.traverseType(e.accompanyingCanvas,this.traversals.canvas)),e}traverseAnnotation(e){return this.traverseType(this.traverseLinking(this.traverseAnnotationBody(e)),this.traversals.annotation)}traverseContentResourceLinking(e){return typeof e=="string"||!e||e&&e.service&&(e.service=(e.service||[]).map(i=>this.traverseType(i,this.traversals.service))),e}traverseContentResource(e){return e.type==="Choice"&&(e.items=e.items.map(i=>this.traverseContentResource(i))),this.traverseType(this.traverseInlineAnnotationPages(this.traverseContentResourceLinking(e)),this.traversals.contentResource)}traverseRangeRanges(e){return e.items&&(e.items=e.items.map(i=>typeof i=="string"?this.traverseCanvas({id:i,type:"Canvas"}):i.type==="Manifest"?this.traverseManifest(i):this.traverseRange(i))),e}traverseRange(e){return this.traverseType(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseRangeRanges(e)))),this.traversals.range)}traverseAgent(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.agent)}traverseType(e,i){return i.reduce((n,a)=>{const r=a(n);return typeof r=="undefined"&&!this.options.allowUndefinedReturn?n:r},e)}traverseService(e){return this.traverseType(e,this.traversals.service)}traverseUnknown(e){const i=de(e);switch(i){case"Collection":return this.traverseCollection(e);case"Manifest":return this.traverseManifest(e);case"Canvas":return this.traverseCanvas(e);case"AnnotationPage":return this.traverseAnnotationPage(e);case"Annotation":return this.traverseAnnotation(e);case"ContentResource":return this.traverseContentResource(e);case"Range":return this.traverseRange(e);case"Service":return this.traverseService(e);case"Agent":return this.traverseAgent(e);default:throw new Error(`Unknown or unsupported resource type of ${i}`)}}}const rt={Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}};function me(){return{Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}}}function ge(t,e){if(typeof t=="string")return{id:t,type:e};if(!t.id)throw new Error(`Invalid resource does not have an ID (${e})`);return t}function at(t){return(e,i)=>{const n=t[e]?t[e]:{};return a=>{const r=ge(a,i||e);return r&&r.id&&e?(n[r.id]=n[r.id]?Object.assign({},n[r.id],r):Object.assign({},r),{id:r.id,type:e==="ContentResource"?e:r.type}):r}}}function st(t){return(e,i)=>n=>{const{id:a,type:r}=ge(n,i||e);if(typeof a=="undefined")throw new Error("Found invalid entity without an ID.");return e==="ContentResource"?t[a]=e:t[a]=r,n}}function ot(t){const e=JSON.stringify(t);let i=5381,n=e.length;for(;n;)i=i*33^e.charCodeAt(--n);const r=(i>>>0).toString(16);return r.length%2?"0"+r:r}function D(t){return e=>typeof e=="string"?{id:e,type:t}:e.id?e.type?e:{type:t,...e}:{id:ot(e),type:t,...e}}function b(t){return e=>({...t,...e})}function R(t){return Array.isArray(t)?t:[t]}function lt(t){return t.body&&(t.body=R(t.body)),t.seeAlso&&(t.seeAlso=R(t.seeAlso)),t.body&&(t.body=R(t.body)),t.audience&&(t.audience=R(t.audience)),t.accessibility&&(t.accessibility=R(t.accessibility)),t.motivation&&(t.motivation=R(t.motivation)),t}function vt(t){const e=le(t),i=me(),n={},a=at(i),r=st(n),o=new M({collection:[b(fe),r("Collection"),a("Collection")],manifest:[b(ce),r("Manifest"),a("Manifest")],canvas:[b(pe),r("Canvas"),a("Canvas")],annotationPage:[D("AnnotationPage"),b(ve),r("AnnotationPage"),a("AnnotationPage")],annotation:[D("Annotation"),lt,r("Annotation"),a("Annotation")],contentResource:[D("ContentResource"),r("ContentResource"),a("ContentResource")],range:[b(he),r("Range","Canvas"),a("Range","Canvas")],agent:[b(ue),r("Agent"),a("Agent")]}).traverseUnknown(e);return{entities:i,resource:o,mapping:n}}const h="__$UNSET$__",k="__$UNWRAP$__";function pt(t,e){const i=t.requests[e],n=t.mapping[e];if(!(!n||i&&i.resourceUri&&!t.entities[n][i.resourceUri]))return t.entities[n][i?i.resourceUri:e]}function ye(t){const e={};for(const[i,n]of t){if(i===k&&n!==h)return n;n!==h&&typeof n!="undefined"&&n!==null&&(e[i]=n)}return e}function ft(t,e,i){if(!e.type||!e.id)throw new Error("Unknown entity");if(!i[e.type])throw new Error(`Serializer not found for ${e.type}`);function n(a){const r=i[a.type];if(!r)return h;const E=pt(t,a.id)||(a.id&&a.type?a:null);if(!E)return h;const o=r(E,t,{isTopLevel:e.id===a.id});let w=o.next();for(;!w.done;){const x=w.value;let N=h;if(x)if(Array.isArray(x)){const _e=[];for(const mt of x)_e.push(n(mt));N=_e}else N=n(x);w=o.next(N)}return w.value===h?h:ye(w.value)}return n(e)}function m(t){if(!t)return;const e=Object.keys(t);if(e.length!==0){if(e.length===1){const i=e[0];if(!i)return"";const n=(t[i]||[]).join("");return i==="@none"||i==="none"||i==="en"?n:{"@language":i,"@value":n}}return e.map(i=>({"@language":i,"@value":(t[i]||[]).join("")}))}}function Ae(t){return Array.isArray(t)?t.map(e=>Ae(e)):typeof t=="string"?t:t.type&&t.type==="Canvas"?t.id:t}function u(t,e=!1){if(!!t)return t.length>1&&!e?t:t[0]||void 0}function ct(t){if(!!t){if(typeof t=="string")return{"@id":t};if("@id"in t){const e={...t};return delete e["@type"],e}return{"@context":"http://iiif.io/api/image/2/context.json","@id":t.id,profile:`http://iiif.io/api/image/2/profiles/${t.profile}.json`}}}function g(t,e){return[["@id",t.id],["@type",e],["format",t.format],["height",t.height],["width",t.width],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0]]}function*y(t){const e=t.provider?yield t.provider[0]:void 0;return[["label",m(t.label)],["metadata",t.metadata&&t.metadata.length?t.metadata.map(i=>({label:m(i.label)||"",value:m(i.value)||""})):void 0],["description",m(t.summary)],["thumbnail",u(yield t.thumbnail)],["navDate",t.navDate],["logo",e?u(e.logo):void 0],["homepage",e?e.homepage:void 0],["attribution",t.requiredStatement?m(t.requiredStatement.value):void 0]]}function*L(t){return[["seeAlso",u(yield t.seeAlso)],["service",u((t.service||[]).map(ct))],["rendering",u(yield t.rendering)],["startCanvas",t.start?t.start.id:void 0]]}const ht={Manifest:function*(t){return[...g(t,"sc:Manifest"),...yield*y(t),...yield*L(t),["sequences",[{"@id":`${t.id}/sequence0`,"@type":"sc:Sequence",canvases:yield t.items}]],["structures",yield t.structures]]},Canvas:function*(t){const i=(yield t.items)[0];return[...g(t,"sc:Canvas"),...yield*y(t),...yield*L(t),["images",i?[i.resources]:void 0],["annotations",t.annotations&&t.annotations.length?u(yield t.annotations):void 0]]},AnnotationPage:function*(t){return[...g(t,"sc:AnnotationList"),...yield*y(t),["resources",t.items&&t.items.length?u(yield t.items):void 0]]},Annotation:function*(t){return[["@id",t.id],["@type","oa:Annotation"],["motivation","sc:painting"],["on",Ae(t.target)],["resource",u(yield t.body,!0)]]},ContentResource:function*(t){switch(t.type){case"Image":return[...g(t,"dctypes:Image"),...yield*y(t),...yield*L(t)];case"Text":case"Dataset":default:return[...g(t,void 0),...yield*y(t)]}},AnnotationCollection:function*(t){return[["@id",t.id],["@type","sc:Layer"],["label",m(t.label)]]},Collection:function*(t){return[...g(t,"sc:Collection"),...yield*y(t),...yield*L(t),["members",yield*t.items]]},Range:function*(t){const e=[],i=[];if(t.items)for(const n of t.items){const a=yield n;e.push({"@id":n.id,"@type":n.type,label:a?a.label:void 0,within:t.id}),n.type==="Canvas"&&i.push(n.id)}return[...g(t,"sc:Range"),...yield*y(t),...yield*L(t),["canvases",i.length===e.length?i:void 0],["members",i.length!==e.length?e:void 0]]}};function A(t){return[["id",t.id],["type",t.type],["format",t.format],["profile",t.profile],["height",t.height],["width",t.width],["duration",t.duration||void 0],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0],["behavior",t.behavior&&t.behavior.length?t.behavior:void 0],["timeMode",t.timeMode],["motivation",t.motivation]]}function s(t){if(!(!t||t.length===0))return t}function Ce(t){if(t&&t.type&&t.type==="ImageService2"){const{id:e,type:i,profile:n,...a}=t;return{"@id":e,"@type":i,profile:n.startsWith("http")?n:`http://iiif.io/api/image/2/${n}.json`,...a}}return t}function Ie(t){if(!(!t||t.length===0))return t.map(Ce)}function*C(t){return[["label",t.label],["metadata",s(t.metadata)],["summary",t.summary],["requiredStatement",t.requiredStatement],["rights",t.rights],["navDate",t.navDate],["language",t.language],["thumbnail",s(yield t.thumbnail)],["placeholderCanvas",yield t.placeholderCanvas],["accompanyingCanvas",yield t.accompanyingCanvas],["provider",s(yield t.provider)]]}function*I(t){return[["seeAlso",s(yield t.seeAlso)],["service",Ie(t.service)],["services",Ie(t.services)],["rendering",s(yield t.rendering)],["supplementary",s(yield t.supplementary)],["homepage",s(yield t.homepage)],["logo",s(yield t.logo)],["partOf",s(yield t.partOf)],["start",t.start]]}var ut=Object.freeze({__proto__:null,emptyAnnotation:nt,emptyAnnotationPage:ve,emptyCanvas:pe,emptyCollection:fe,emptyManifest:ce,emptyRange:he,emptyAgent:ue,defaultEntities:rt,getDefaultEntities:me,normalize:vt,types:F,identifyResource:de,Traverse:M,UNSET:h,UNWRAP:k,serializedFieldsToObject:ye,serialize:ft,languageString2to3:m,serializeConfigPresentation2:ht,serializeConfigPresentation3:{Manifest:function*(t,e,{isTopLevel:i}){return i?[["@context","http://iiif.io/api/presentation/3/context.json"],...A(t),...yield*C(t),...yield*I(t),["items",yield t.items],["structures",s(yield t.structures)],["annotations",s(yield t.annotations)]]:[...A(t),...yield*C(t)]},Canvas:function*(t){return[...A(t),...yield*C(t),...yield*I(t),["items",yield t.items],["annotations",s(yield t.annotations)]]},Agent:function*(t){return[["id",t.id],["type","Agent"],["label",t.label],...yield*I(t)]},AnnotationPage:function*(t){return[...Object.entries(t).map(([i,n])=>[i,Array.isArray(n)?s(n):n]).filter(([i,n])=>i!=="items"),...yield*I(t),["items",yield t.items]]},Service:function*(t){return[[k,Ce(t)]]},Annotation:function*(t){return[...Object.entries(t).map(([i,n])=>[i,Array.isArray(n)?s(n):n]).filter(([i])=>i!=="body"),["body",yield t.body]]},ContentResource:function*(t){return[...A(t),...yield*C(t),...yield*I(t),["annotations",s(yield t.annotations)]]},AnnotationCollection:function*(t){return[["id",t.id],["type","AnnotationCollection"],["label",t.label]]},Collection:function*(t,e,{isTopLevel:i}){return i?[["@context","http://iiif.io/api/presentation/3/context.json"],...A(t),...yield*C(t),...yield*I(t),["items",s(yield t.items)],["annotations",s(yield t.annotations)]]:[...A(t),...yield*C(t)]},Range:function*(t){const e=[];for(const i of t.items)i.type==="Range"?e.push(yield i):e.push(i);return[...A(t),...yield*C(t),...yield*I(t),["items",e],["annotations",s(yield t.annotations)]]}}}),dt={Presentation2:it,Presentation3:ut};return dt});
{
"name": "@iiif/parser",
"version": "1.0.2",
"version": "1.0.3",
"license": "MIT",

@@ -36,3 +36,3 @@ "main": "dist/cjs/index.js",

"@iiif/presentation-2": "^1.0.1",
"@iiif/presentation-3": "^1.0.3",
"@iiif/presentation-3": "^1.0.4",
"@types/geojson": "^7946.0.8"

@@ -39,0 +39,0 @@ },

(function (c, f) {
typeof exports == "object" && typeof module != "undefined" ? f(exports) : typeof define == "function" && define.amd ? define(["exports"], f) : (c = typeof globalThis != "undefined" ? globalThis : c || self, f(c.IIIFValidator = {}))
})(this, function (c) {
"use strict";
var f = require("./compile"), p = require("./compile/resolve"), A = require("./cache"),
v = require("./compile/schema_obj"), I = require("fast-json-stable-stringify"),
P = require("./compile/formats"), M = require("./compile/rules"), $ = require("./data"),
_ = require("./compile/util");
module.exports = s, s.prototype.validate = x, s.prototype.compile = C, s.prototype.addSchema = E, s.prototype.addMetaSchema = D, s.prototype.validateSchema = z, s.prototype.getSchema = U, s.prototype.removeSchema = B, s.prototype.addFormat = Y, s.prototype.errorsText = H, s.prototype._addSchema = Z, s.prototype._compile = L, s.prototype.compileAsync = require("./compile/async");
var d = require("./keyword");
s.prototype.addKeyword = d.add, s.prototype.getKeyword = d.get, s.prototype.removeKeyword = d.remove, s.prototype.validateKeyword = d.validate;
var S = require("./compile/error_classes");
s.ValidationError = S.Validation, s.MissingRefError = S.MissingRef, s.$dataMetaSchema = $;
var y = "http://json-schema.org/draft-07/schema",
b = ["removeAdditional", "useDefaults", "coerceTypes", "strictDefaults"], T = ["/properties"];
function s(e) {
if (!(this instanceof s)) return new s(e);
e = this._opts = _.copy(e) || {}, ee(this), this._schemas = {}, this._refs = {}, this._fragments = {}, this._formats = P(e.format), this._cache = e.cache || new A, this._loadingSchemas = {}, this._compilations = [], this.RULES = M(), this._getId = N(e), e.loopRequired = e.loopRequired || 1 / 0, e.errorDataPath == "property" && (e._errorDataPathProperty = !0), e.serialize === void 0 && (e.serialize = I), this._metaOpts = X(this), e.formats && Q(this), e.keywords && W(this), J(this), typeof e.meta == "object" && this.addMetaSchema(e.meta), e.nullable && this.addKeyword("nullable", {metaSchema: {type: "boolean"}}), K(this)
}
function x(e, t) {
var r;
if (typeof e == "string") {
if (r = this.getSchema(e), !r) throw new Error('no schema with key or ref "' + e + '"')
} else {
var i = this._addSchema(e);
r = i.validate || this._compile(i)
}
var a = r(t);
return r.$async !== !0 && (this.errors = r.errors), a
}
function C(e, t) {
var r = this._addSchema(e, void 0, t);
return r.validate || this._compile(r)
}
function E(e, t, r, i) {
if (Array.isArray(e)) {
for (var a = 0; a < e.length; a++) this.addSchema(e[a], void 0, r, i);
return this
}
var n = this._getId(e);
if (n !== void 0 && typeof n != "string") throw new Error("schema id must be string");
return t = p.normalizeId(t || n), j(this, t), this._schemas[t] = this._addSchema(e, r, i, !0), this
}
function D(e, t, r) {
return this.addSchema(e, t, r, !0), this
}
function z(e, t) {
var r = e.$schema;
if (r !== void 0 && typeof r != "string") throw new Error("$schema must be a string");
if (r = r || this._opts.defaultMeta || V(this), !r) return this.logger.warn("meta-schema not available"), this.errors = null, !0;
var i = this.validate(r, e);
if (!i && t) {
var a = "schema is invalid: " + this.errorsText();
if (this._opts.validateSchema == "log") this.logger.error(a); else throw new Error(a)
}
return i
}
function V(e) {
var t = e._opts.meta;
return e._opts.defaultMeta = typeof t == "object" ? e._getId(t) || t : e.getSchema(y) ? y : void 0, e._opts.defaultMeta
}
function U(e) {
var t = w(this, e);
switch (typeof t) {
case"object":
return t.validate || this._compile(t);
case"string":
return this.getSchema(t);
case"undefined":
return F(this, e)
}
}
function F(e, t) {
var r = p.schema.call(e, {schema: {}}, t);
if (r) {
var i = r.schema, a = r.root, n = r.baseId, o = f.call(e, i, a, void 0, n);
return e._fragments[t] = new v({ref: t, fragment: !0, schema: i, root: a, baseId: n, validate: o}), o
}
}
function w(e, t) {
return t = p.normalizeId(t), e._schemas[t] || e._refs[t] || e._fragments[t]
}
function B(e) {
if (e instanceof RegExp) return h(this, this._schemas, e), h(this, this._refs, e), this;
switch (typeof e) {
case"undefined":
return h(this, this._schemas), h(this, this._refs), this._cache.clear(), this;
case"string":
var t = w(this, e);
return t && this._cache.del(t.cacheKey), delete this._schemas[e], delete this._refs[e], this;
case"object":
var r = this._opts.serialize, i = r ? r(e) : e;
this._cache.del(i);
var a = this._getId(e);
a && (a = p.normalizeId(a), delete this._schemas[a], delete this._refs[a])
}
return this
}
function h(e, t, r) {
for (var i in t) {
var a = t[i];
!a.meta && (!r || r.test(i)) && (e._cache.del(a.cacheKey), delete t[i])
}
}
function Z(e, t, r, i) {
if (typeof e != "object" && typeof e != "boolean") throw new Error("schema should be object or boolean");
var a = this._opts.serialize, n = a ? a(e) : e, o = this._cache.get(n);
if (o) return o;
i = i || this._opts.addUsedSchema !== !1;
var l = p.normalizeId(this._getId(e));
l && i && j(this, l);
var O = this._opts.validateSchema !== !1 && !t, q;
O && !(q = l && l == p.normalizeId(e.$schema)) && this.validateSchema(e, !0);
var ce = p.ids.call(this, e), m = new v({id: l, schema: e, localRefs: ce, cacheKey: n, meta: r});
return l[0] != "#" && i && (this._refs[l] = m), this._cache.put(n, m), O && q && this.validateSchema(e, !0), m
}
function L(e, t) {
if (e.compiling) return e.validate = a, a.schema = e.schema, a.errors = null, a.root = t || a, e.schema.$async === !0 && (a.$async = !0), a;
e.compiling = !0;
var r;
e.meta && (r = this._opts, this._opts = this._metaOpts);
var i;
try {
i = f.call(this, e.schema, t, e.localRefs)
} catch (n) {
throw delete e.validate, n
} finally {
e.compiling = !1, e.meta && (this._opts = r)
}
return e.validate = i, e.refs = i.refs, e.refVal = i.refVal, e.root = i.root, i;
function a() {
var n = e.validate, o = n.apply(this, arguments);
return a.errors = n.errors, o
}
}
function N(e) {
switch (e.schemaId) {
case"auto":
return k;
case"id":
return G;
default:
return R
}
}
function G(e) {
return e.$id && this.logger.warn("schema $id ignored", e.$id), e.id
}
function R(e) {
return e.id && this.logger.warn("schema id ignored", e.id), e.$id
}
function k(e) {
if (e.$id && e.id && e.$id != e.id) throw new Error("schema $id is different from id");
return e.$id || e.id
}
function H(e, t) {
if (e = e || this.errors, !e) return "No errors";
t = t || {};
for (var r = t.separator === void 0 ? ", " : t.separator, i = t.dataVar === void 0 ? "data" : t.dataVar, a = "", n = 0; n < e.length; n++) {
var o = e[n];
o && (a += i + o.dataPath + " " + o.message + r)
}
return a.slice(0, -r.length)
}
function Y(e, t) {
return typeof t == "string" && (t = new RegExp(t)), this._formats[e] = t, this
}
function J(e) {
var t;
if (e._opts.$data && (t = require("./refs/data.json"), e.addMetaSchema(t, t.$id, !0)), e._opts.meta !== !1) {
var r = require("./refs/json-schema-draft-07.json");
e._opts.$data && (r = $(r, T)), e.addMetaSchema(r, y, !0), e._refs["http://json-schema.org/schema"] = y
}
}
function K(e) {
var t = e._opts.schemas;
if (!!t) if (Array.isArray(t)) e.addSchema(t); else for (var r in t) e.addSchema(t[r], r)
}
function Q(e) {
for (var t in e._opts.formats) {
var r = e._opts.formats[t];
e.addFormat(t, r)
}
}
function W(e) {
for (var t in e._opts.keywords) {
var r = e._opts.keywords[t];
e.addKeyword(t, r)
}
}
function j(e, t) {
if (e._schemas[t] || e._refs[t]) throw new Error('schema with key or id "' + t + '" already exists')
}
function X(e) {
for (var t = _.copy(e._opts), r = 0; r < b.length; r++) delete t[b[r]];
return t
}
function ee(e) {
var t = e._opts.logger;
if (t === !1) e.logger = {log: u, warn: u, error: u}; else {
if (t === void 0 && (t = console), !(typeof t == "object" && t.log && t.warn && t.error)) throw new Error("logger must implement log, warn and error methods");
e.logger = t
}
}
function u() {
}
var te = Object.freeze({__proto__: null}), re = "http://json-schema.org/schema#", ae = "IIIF Classes", ie = {
id: {type: "string", format: "uri", pattern: "^http.*$", title: "Id must be presesnt and must be a URI"},
lngString: {
title: "Language string, must have a language and value must be an array.",
type: "object",
patternProperties: {
"^[a-zA-Z-][a-zA-Z-]*$": {type: "array", items: {type: "string"}},
"^none$": {type: "array", items: {type: "string"}}
},
additionalProperties: !1
},
keyValueString: {
type: "object",
properties: {label: {$ref: "#/types/lngString"}, value: {$ref: "#/types/lngString"}},
required: ["label", "value"]
},
BCP47: {anyOf: [{type: "string", pattern: "^[a-zA-Z-][a-zA-Z-]*$"}, {type: "string", pattern: "^none$"}]},
format: {type: "string", pattern: "^[a-z][a-z]*/.*$"},
class: {
title: "Classes MUST have an id and type property and MAY have a label.",
type: "object",
properties: {id: {$ref: "#/types/id"}, type: {type: "string"}, label: {$ref: "#/types/lngString"}},
required: ["id", "type"]
},
duration: {type: "number", minimum: 0},
external: {
type: "array",
items: {
allOf: [{$ref: "#/types/class"}, {
type: "object",
properties: {format: {$ref: "#/types/format"}, profile: {type: "string"}}
}]
}
}
}, se = {
metadata: {type: "array", items: {$ref: "#/types/keyValueString"}},
homepage: {
type: "array",
items: {
allOf: [{$ref: "#/types/class"}, {
type: "object",
properties: {
format: {$ref: "#/types/format"},
language: {type: "array", items: {$ref: "#/types/BCP47"}}
}
}]
}
},
seeAlso: {$ref: "#/types/external"},
partOf: {type: "array", items: {$ref: "#/types/class"}},
choice: {
type: "object",
properties: {type: {type: "string", const: "Choice"}, items: {type: "array"}},
required: ["type", "items"]
},
resource: {
oneOf: [{
title: "Annotation bodies MUST have an id and type property.",
type: "object",
properties: {
id: {$ref: "#/types/id"},
type: {type: "string"},
height: {type: "integer"},
width: {type: "integer"},
duration: {$ref: "#/types/duration"},
language: {type: "string"},
service: {$ref: "#/classes/service"},
format: {$ref: "#/types/format"},
label: {$ref: "#/types/lngString"}
},
required: ["id", "type"]
}, {
title: "Annotation bodies which are TextualBody MUST have an type and value property.",
type: "object",
properties: {
id: {$ref: "#/types/id"},
type: {type: "string", pattern: "^TextualBody$"},
value: {type: "string"},
format: {$ref: "#/types/format"},
language: {type: "string"}
},
required: ["value", "type"]
}]
},
imgSvr: {
allOf: [{$ref: "#/classes/service"}, {
properties: {
profile: {type: "string"},
"@id": {$ref: "#/types/id"},
"@type": {type: "string"}
}
}]
},
service: {
type: "array",
items: {
oneOf: [{
allOf: [{$ref: "#/types/class"}, {
type: "object",
properties: {profile: {type: "string"}, service: {$ref: "#/classes/service"}}
}]
}, {
type: "object",
properties: {
"@id": {$ref: "#/types/id"},
"@type": {type: "string"},
profile: {type: "string"},
service: {$ref: "#/classes/service"}
},
required: ["@id", "@type"]
}]
}
},
rights: {
title: "Rights URI isn't from either Creative Commons or RightsStatements.org. Both require http links.",
oneOf: [{type: "string", format: "uri", pattern: "http://creativecommons.org/licenses/.*"}, {
type: "string",
format: "uri",
pattern: "http://creativecommons.org/publicdomain/.*"
}, {type: "string", format: "uri", pattern: "http://rightsstatements.org/vocab/.*"}]
},
navDate: {type: "string", format: "date-time"},
viewingDirection: {
anyOf: [{type: "string", pattern: "^left-to-right$"}, {
type: "string",
pattern: "^right-to-left$"
}, {type: "string", pattern: "^top-to-bottom$"}, {type: "string", pattern: "^bottom-to-top$"}]
},
behavior: {
type: "array",
items: {
anyOf: [{type: "string", pattern: "^auto-advance$"}, {
type: "string",
pattern: "^no-auto-advance$"
}, {type: "string", pattern: "^repeat$"}, {type: "string", pattern: "^no-repeat$"}, {
type: "string",
pattern: "^unordered$"
}, {type: "string", pattern: "^individuals$"}, {
type: "string",
pattern: "^continuous$"
}, {type: "string", pattern: "^paged$"}, {type: "string", pattern: "^facing-pages$"}, {
type: "string",
pattern: "^non-paged$"
}, {type: "string", pattern: "^multi-part$"}, {type: "string", pattern: "^together$"}, {
type: "string",
pattern: "^sequence$"
}, {type: "string", pattern: "^thumbnail-nav$"}, {type: "string", pattern: "^no-nav$"}, {
type: "string",
pattern: "^hidden$"
}]
}
},
provider: {
type: "array",
items: {
allOf: [{$ref: "#/types/class"}, {
type: "object",
properties: {
type: {type: "string", pattern: "^Agent$"},
homepage: {$ref: "#/classes/homepage"},
logo: {type: "array", items: {$ref: "#/classes/resource"}},
seeAlso: {$ref: "#/classes/seeAlso"}
}
}]
}
},
collection: {
allOf: [{$ref: "#/types/class"}, {
type: "object",
properties: {
type: {
type: "string",
pattern: "^Collection",
title: "Are you validating a collection?",
description: "If you are validating a manifest, you may get this error if there are errors in the manifest. The validator first validates it as a manifest and if that fails it will try and validate it using the other types."
},
metadata: {$ref: "#/classes/metadata"},
summary: {$ref: "#/types/lngString"},
requiredStatement: {$ref: "#/types/keyValueString"},
rights: {$ref: "#/classes/rights"},
navDate: {$ref: "#/classes/navDate"},
provider: {$ref: "#/classes/provider"},
seeAlso: {$ref: "#/classes/seeAlso"},
services: {$ref: "#/classes/service"},
thumbnail: {type: "array", items: {$ref: "#/classes/resource"}},
homepage: {$ref: "#/classes/homepage"},
behavior: {$ref: "#/classes/behavior"},
partOf: {$ref: "#/classes/partOf"},
items: {
type: "array",
items: {oneOf: [{$ref: "#/classes/manifest"}, {$ref: "#/classes/collection"}]}
},
annotations: {type: "array", items: {$ref: "#/classes/annotationPage"}}
},
required: ["id", "type", "label"]
}]
},
manifest: {
allOf: [{$ref: "#/types/class"}, {
type: "object", additionalProperties: !1, properties: {
"@context": {
oneOf: [{
type: "array",
items: {type: "string", format: "uri", pattern: "^http.*$"}
}, {type: "string", const: "http://iiif.io/api/presentation/3/context.json"}]
},
id: {$ref: "#/types/id"},
label: {$ref: "#/types/lngString"},
type: {type: "string", pattern: "^Manifest"},
metadata: {$ref: "#/classes/metadata"},
summary: {$ref: "#/types/lngString"},
requiredStatement: {$ref: "#/types/keyValueString"},
rendering: {$ref: "#/types/external"},
service: {$ref: "#/classes/service"},
services: {$ref: "#/classes/service"},
viewingDirection: {$ref: "#/classes/viewingDirection"},
rights: {$ref: "#/classes/rights"},
start: {},
logo: {type: "array", items: {$ref: "#/classes/resource"}},
navDate: {$ref: "#/classes/navDate"},
provider: {$ref: "#/classes/provider"},
seeAlso: {$ref: "#/classes/seeAlso"},
thumbnail: {type: "array", items: {$ref: "#/classes/resource"}},
homepage: {$ref: "#/classes/homepage"},
behavior: {$ref: "#/classes/behavior"},
partOf: {$ref: "#/classes/partOf"},
items: {type: "array", items: {$ref: "#/classes/canvas"}},
structures: {type: "array", items: {$ref: "#/classes/range"}},
annotations: {type: "array", items: {$ref: "#/classes/annotationPage"}}
}, required: ["id", "type", "label"]
}]
},
canvas: {
allOf: [{$ref: "#/types/class"}, {
type: "object",
properties: {
type: {type: "string", pattern: "^Canvas$"},
height: {type: "integer"},
width: {type: "integer"},
duration: {$ref: "#/types/duration"},
metadata: {$ref: "#/classes/metadata"},
summary: {$ref: "#/types/lngString"},
requiredStatement: {$ref: "#/types/keyValueString"},
rights: {$ref: "#/classes/rights"},
navDate: {$ref: "#/classes/navDate"},
provider: {$ref: "#/classes/provider"},
seeAlso: {$ref: "#/classes/seeAlso"},
thumbnail: {type: "array", items: {$ref: "#/classes/resource"}},
homepage: {$ref: "#/classes/homepage"},
behavior: {$ref: "#/classes/behavior"},
partOf: {$ref: "#/classes/partOf"},
items: {type: "array", items: {$ref: "#/classes/annotationPage"}},
annotations: {type: "array", items: {$ref: "#/classes/annotationPage"}}
},
anyOf: [{required: ["width"]}, {required: ["height"]}, {required: ["duration"]}],
dependencies: {width: ["height"], height: ["width"]}
}]
},
annotationCollection: {
allOf: [{$ref: "#/types/class"}, {
type: "object",
properties: {
type: {type: "string", pattern: "^AnnotationCollection$"},
partOf: {$ref: "#/classes/partOf"},
next: {$ref: "#/classes/annotationPage"},
first: {$ref: "#/classes/annotationPage"},
last: {$ref: "#/classes/annotationPage"},
items: {type: "array", items: {$ref: "#/classes/annotation"}}
}
}]
},
annotationPage: {
allOf: [{$ref: "#/types/class"}, {
type: "object",
properties: {
id: {$ref: "#/types/id"},
"@context": {},
type: {type: "string", pattern: "^AnnotationPage$"},
items: {type: "array", items: {$ref: "#/classes/annotation"}}
},
additionalProperties: !1
}]
},
annotation: {
allOf: [{$ref: "#/types/class"}, {
type: "object",
properties: {
type: {type: "string", pattern: "^Annotation$"},
motivation: {oneOf: [{type: "string"}, {type: "array", items: {type: "string"}}]},
body: {
anyOf: [{type: "object", $ref: "#/classes/resource"}, {
type: "object",
allOf: [{$ref: "#/classes/choice"}, {
properties: {
items: {
type: "array",
items: {$ref: "#/classes/resource"}
}
}, required: ["items"]
}]
}, {type: "array", items: {type: "object"}}]
},
target: {
anyOf: [{$ref: "#/classes/annoTarget"}, {
type: "array",
items: {$ref: "#/classes/annoTarget"}
}]
}
},
required: ["target", "type"]
}]
},
annoTarget: {
oneOf: [{
type: "string",
format: "uri",
pattern: "^http.*$"
}, {$ref: "#/classes/specificResource"}]
},
specificResource: {
type: "object",
properties: {
id: {$ref: "#/types/id"},
type: {type: "string", pattern: "^SpecificResource$"},
format: {$ref: "#/types/format"},
accessibility: {type: "string"},
source: {$ref: "#/types/id"},
selector: {
oneOf: [{$ref: "#/classes/annoSelector"}, {
type: "array",
items: {$ref: "#/classes/annoSelector"}
}]
}
},
required: ["source", "selector"]
},
annoSelector: {
oneOf: [{type: "string", format: "uri", pattern: "^http.*$"}, {
type: "object",
properties: {type: {type: "string"}, t: {$ref: "#/types/duration"}},
required: ["type"]
}]
},
range: {
allOf: [{$ref: "#/types/class"}, {
type: "object",
properties: {
type: {type: "string", pattern: "^Range$"},
supplementary: {$ref: "#/classes/annotationCollection"},
items: {
type: "array",
items: {
oneOf: [{$ref: "#/classes/specificResource"}, {
allOf: [{$ref: "#/types/class"}, {
type: "object",
properties: {type: {type: "string", pattern: "^Canvas$"}}
}]
}, {$ref: "#/classes/range"}]
}
}
}
}]
}
}, ne = "http://iiif.io/api/presentation/3/schema.json",
oe = [{$ref: "#/classes/manifest"}, {$ref: "#/classes/collection"}, {$ref: "#/classes/annotationPage"}],
pe = {$schema: re, $comment: ae, types: ie, classes: se, $id: ne, oneOf: oe};
const g = e => ({$id: `http://iiif.io/api/presentation/3/${e}.json`, $ref: `schema.json#/classes/${e}`});
class le {
ajv;
validators;
constructor(t = {}) {
this.ajv = new te({
logger: !1,
schemas: [pe, g("collection"), g("manifest"), g("annotationPage")], ...t
}), this.validators = {
all: this.ajv.getSchema("http://iiif.io/api/presentation/3/schema.json"),
manifest: this.ajv.getSchema("http://iiif.io/api/presentation/3/manifest.json"),
collection: this.ajv.getSchema("http://iiif.io/api/presentation/3/collection.json"),
annotationPage: this.ajv.getSchema("http://iiif.io/api/presentation/3/annotationPage.json")
}
}
validate(t) {
return this.validators.all(t)
}
validateManifest(t) {
return this.validators.manifest(t)
}
validateCollection(t) {
return this.validators.collection(t)
}
validateAnnotationPage(t) {
return this.validators.annotationPage(t)
}
validateCustom(t, r) {
return this.validators[t] || (this.ajv.addSchema(g(t)), this.validators[t] = this.ajv.getSchema(`http://iiif.io/api/presentation/3/${t}.json`)), this.validators[t](r)
}
}
c.Validator = le, Object.defineProperty(c, "__esModule", {value: !0})
});