@etu-wiki/sharp-iiif-shims 0.0.89 → 0.0.91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,8 @@ export default class SharpIiifImageShims extends IiifImageShims {
|
|
|
5
5
|
level: string;
|
|
6
6
|
tileWidth: number;
|
|
7
7
|
tileHeight: number;
|
|
8
|
-
|
|
8
|
+
enableHD: boolean;
|
|
9
|
+
constructor(version: string, level: string, enableHD?: boolean, maxArea?: number, maxWidth?: number, maxHeight?: number, tileWidth?: number, tileHeight?: number);
|
|
9
10
|
private regionImpl;
|
|
10
11
|
private sizeImpl;
|
|
11
12
|
private rotationImpl;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var lt=Object.create;var B=Object.defineProperty;var gt=Object.getOwnPropertyDescriptor;var ct=Object.getOwnPropertyNames;var pt=Object.getPrototypeOf,ut=Object.prototype.hasOwnProperty;var mt=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),ft=(i,e)=>{for(var r in e)B(i,r,{get:e[r],enumerable:!0})},Q=(i,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of ct(e))!ut.call(i,s)&&s!==r&&B(i,s,{get:()=>e[s],enumerable:!(t=gt(e,s))||t.enumerable});return i};var K=(i,e,r)=>(r=i!=null?lt(pt(i)):{},Q(e||!i||!i.__esModule?B(r,"default",{value:i,enumerable:!0}):r,i)),dt=i=>Q(B({},"__esModule",{value:!0}),i);var it=mt((_t,D)=>{"use strict";var E=Object.defineProperty,yt=Object.getOwnPropertyDescriptor,wt=Object.getOwnPropertyNames,zt=Object.prototype.hasOwnProperty,vt=(i,e)=>{for(var r in e)E(i,r,{get:e[r],enumerable:!0})},$t=(i,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of wt(e))!zt.call(i,s)&&s!==r&&E(i,s,{get:()=>e[s],enumerable:!(t=yt(e,s))||t.enumerable});return i},bt=i=>$t(E({},"__esModule",{value:!0}),i),Z={};vt(Z,{default:()=>tt});D.exports=bt(Z);var a="[1-9][0-9]*",V="[0-9]*",w="(?=.*[1-9])\\d+(\\.\\d+)?",O="\\d+(\\.\\d+)?",j=(i=>(i.jpg="image/jpeg",i.jpeg="image/jpeg",i.png="image/png",i.webp="image/webp",i.tif="image/tiff",i.tiff="image/tiff",i.gif="image/gif",i.jp2="image/jp2",i.pdf="application/pdf",i))(j||{}),$={version:["1.0","1.1","2.0","2.1","3.0"],level:["0","1","2"],region:["full","square",`${V},${V},${a},${a}`,`pct:${O},${O},${w},${w}`],rotation:`!?${O}`,quality:["color","gray","bitonal","default","native","grey"],format:["jpg","png","webp","tif","gif","jp2","pdf"],size:[""]},xt={1:["full",`${a},`,`,${a}`,`pct:${w}`,`${a},${a}`,`!${a},${a}`],1.1:["full",`${a},`,`,${a}`,`pct:${w}`,`${a},${a}`,`!${a},${a}`],2:["full",`${a},`,`,${a}`,`pct:${w}`,`${a},${a}`,`!${a},${a}`],2.1:["full","max",`${a},`,`,${a}`,`pct:${w}`,`${a},${a}`,`!${a},${a}`],3:["max",`${a},`,`,${a}`,`pct:${w}`,`${a},${a}`,`!${a},${a}`,"\\^max",`\\^${a},`,`\\^,${a}`,`\\^pct:${w}`,`\\^${a},${a}`,`\\^!${a},${a}`]},_=/^pct:([\d,]+)/,tt=class{constructor(i,e,r,t,s,o,n){this.version=i,this.level=e,this.maxArea=r,this.maxWidth=t,this.maxHeight=s,this.tileWidth=o,this.tileHeight=n,this.validate("version",i),this.validate("level",e),$.size=xt[Number(i)]}validator(i){var e=$[i];return e instanceof Array&&(e=e.join("|")),new RegExp("^("+e+")$")}validate(i,e){if(!this.validator(i).test(e))throw Error(`invalid IIIF url ${i}: ${e}`);return!0}normalizeRegionParams(i,e){if(this.validate("region",i),i==="full")return null;if(i==="square")return this._regionSquare(e);if(_.test(i))return this._regionPct(i.match(_)[1],e);{let r=i.split(",").map(t=>Number(t));return this._regionXYWH(r,e)}}_regionSquare(i){let e,r,t=i.width,s=i.height;if(t!==s){let o=Math.min(t,s),n=Math.abs(Math.floor((t-s)/2));return t>s?(e=n,r=0):(e=0,r=n),this._regionXYWH([e,r,o,o],i)}return null}_regionPct(i,e){let r=i.split(",").map((t,s)=>{let o=Number(t)/100;return s===0||s===2?Math.ceil(e.width*o):s===1||s===3?Math.ceil(e.height*o):null});return this._regionXYWH(r,e)}_regionXYWH(i,e){let r=e.width,t=e.height,[s,o,n,h]=i;return s+n>r&&(n=r-s),o+h>t&&(h=t-o),{x:s,y:o,w:n,h}}normalizeSizeParams(i,e){let r=i,t=e.width,s=e.height;if(!e||!t&&!s)throw Error(`invalid region dimensions: ${JSON.stringify(e,null,2)}`);this.validate("size",r);let o=!1;r.charAt(0)==="^"&&(o=!0,r=r.substring(1));let n=null;if(r==="full"||(r==="max"?n=this._sizeMaxScale(e):_.test(r)?n=this._sizePctScale(r.match(_)[1]):r.charAt(0)==="!"&&(r=r.substring(1),n=this._sizeBangScale(r,o,e)),n===1))return null;if(n){let h=Math.ceil(t*n),g=Math.ceil(s*n);return this._sizeWH(`${h},${g}`,o,e)}else return this._sizeWH(r,o,e)}_sizeBangScale(i,e,r){let t=r.width,s=r.height,[o,n]=i.split(",").map(g=>g===""?null:Number(g)),h=Math.min(o/t,n/s);if(o>t&&n>s&&!e)throw Error("should not upscale without ^");return h}_sizeMaxScale(i){let e=i.width,r=i.height,t=1;return this.maxArea&&this.maxArea<e*r&&(t=Math.sqrt(this.maxArea/(e*r))),this.maxWidth&&this.maxWidth<e&&(t=Math.min(t,this.maxWidth/e)),this.maxHeight&&this.maxHeight<r&&(t=Math.min(t,this.maxHeight/r)),t}_sizePctScale(i){return Number(i)/100}_sizeWH(i,e,r){let t=r.width,s=r.height,[o,n]=i.split(",").map(h=>h===""?null:Number(h));if(o?n||(n=Math.ceil(s*o/t),n=n===0?1:n):(o=Math.ceil(t*n/s),o=o===0?1:o),(o>t||n>s)&&!e)throw Error("should not upscale without ^");return{width:o,height:n}}normalizeRotationParams(i){this.validate("rotation",i);let e=!1;if(i==="0")return null;i[0]==="!"&&(e=!0);let r=Number(i.replace(/^!/,""));return{isMirror:e,degree:r}}normalizeQualityParams(i){return this.validate("quality",i),i==="native"||i==="default"?null:i}normalizeFormatParams(i,e){if((this.version==="1.0"||this.version==="1.1"||this.version==="2.0"||this.version==="2.1")&&!i)return"png";this.validate("format",i);let r=j[i],t=j[e];return r===t?null:i}getContentType(i){return j[i]}generateImageInfoTemp(i,e){let r={},t={};r.info=t;let s=this.version;return s==="1.0"?(t.identifier=i,t.width=e.width,t.height=e.height,t.scale_factors=this.factors(e),t.tile_width=this.tileWidth,t.tile_height=this.tileHeight,t.formats=$.format,t.qualities=$.quality,t.profile=this.uriPattern("compliance"),r.contentType="application/json",r.body=JSON.stringify(t)):(s==="1.1"?(t["@context"]=this.uriPattern("context"),t["@id"]=i,t.width=e.width,t.height=e.height,t.scale_factors=this.factors(e),t.tile_width=this.tileWidth,t.tile_height=this.tileHeight,t.formats=$.format,t.qualities=$.quality,t.profile=this.uriPattern("compliance")):s==="2.0"||s==="2.1"?(t["@context"]=this.uriPattern("context"),t["@id"]=i,t.protocol="http://iiif.io/api/image",t.width=e.width,t.height=e.height,this.level==="0"?t.sizes=this.sizes(e):t.tiles=[{scaleFactors:this.factors(e),width:this.tileWidth,height:this.tileHeight}],t.profile=[this.uriPattern("compliance")]):s==="3.0"&&(t["@context"]=[this.uriPattern("context")],t.id=i,t.type="ImageService3",t.protocol="http://iiif.io/api/image",t.width=e.width,t.height=e.height,this.level==="0"?t.sizes=this.sizes(e):t.tiles=[{scaleFactors:this.factors(e),width:this.tileWidth,height:this.tileHeight}],t.profile=this.uriPattern("compliance")),r.contentType="application/ld+json"),r}factors(i){let e=1,r=[];for(;this.tileWidth*e<=i.width&&this.tileHeight*e<=i.height;)r.push(e),e*=2;return r}uriPattern(i){let e="",r="";return this.version==="1.0"?e=`http://library.stanford.edu/iiif/image-api/compliance.html#level${this.level}`:this.version==="1.1"?(e=`http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level${this.level}`,r="http://library.stanford.edu/iiif/image-api/1.1/context.json"):this.version==="2.0"||this.version==="2.1"?(e=`http://iiif.io/api/image/2/level${this.level}.json`,r="http://iiif.io/api/image/2/context.json"):this.version==="3.0"&&(e=`level${this.level}`,r="http://iiif.io/api/image/3/context.json"),i==="compliance"?e:i==="context"?r:""}sizes(i){return[{width:i.width,height:i.height}]}};D.exports=tt});var Mt={};ft(Mt,{default:()=>x});module.exports=dt(Mt);var b=K(require("sharp")),st=K(it()),Pt=1e8,et=1e4,rt=1e4,Ht=512,It=512,Wt={2:["baseUriRedirect","canonicalLinkHeader","cors","jsonldMediaType","mirroring","profileLinkHeader","regionByPct","regionByPx","rotationArbitrary","rotationBy90s","sizeAboveFull","sizeByWhListed","sizeByForcedWh","sizeByH","sizeByPct","sizeByW","sizeByWh"],2.1:["baseUriRedirect","canonicalLinkHeader","cors","jsonldMediaType","mirroring","profileLinkHeader","regionByPct","regionByPx","regionSquare","rotationArbitrary","rotationBy90s","sizeAboveFull","sizeByConfinedWh","sizeByDistortedWh","sizeByH","sizeByPct","sizeByW","sizeByWh","sizeByWhListed","sizeByForcedWh"],3:["baseUriRedirect","canonicalLinkHeader","cors","jsonldMediaType","mirroring","profileLinkHeader","regionByPct","regionByPx","regionSquare","rotationArbitrary","rotationBy90s","sizeByConfinedWh","sizeByH","sizeByPct","sizeByW","sizeByWh","sizeUpscaling"]},x=class extends st.default{constructor(r,t,s=Pt,o=et,n=rt,h=Ht,g=It){super(r,t,s,o,n,h,g)}regionImpl(r,t){r&&(t=t.extract({left:r.x,top:r.y,width:r.w,height:r.h}))}sizeImpl(r,t){r&&(t=t.resize({...r,fit:"fill"}))}rotationImpl(r,t){r&&(r.isMirror&&(t=t.flop()),t=t.rotate(r.degree))}qualityFormatImpl(r,t,s,o,n){r&&(r==="color"?s=s.toColorspace("srgb"):r==="gray"||r==="grey"?s=s.grayscale():r==="bitonal"&&(s=s.threshold())),t&&(s=s.toFormat(t)),o==="png"&&(n.paletteBitDepth===1||n.space==="b-w")&&(s=s.toColorspace("b-w").png({colors:2}))}iiifTransform(r,t){let s=(0,b.default)(),o=r.split("/"),n=o.pop(),h=n.split(".")[0],g=n.split(".")[1],u=o.pop(),d=o.pop(),S=o.pop(),P=!1,l=s,c={width:t.width,height:t.height};t&&t.orientation&&(P=!0,l=l.rotate(),t.orientation>=5&&(c={width:t.height,height:t.width}));let m=super.normalizeRegionParams(S,c);this.regionImpl(m,l);let p=super.normalizeSizeParams(d,{width:m?m.w:c.width,height:m?m.h:c.height});this.sizeImpl(p,l);let f=super.normalizeRotationParams(u);this.rotationImpl(f,l);let y=super.normalizeQualityParams(h),H=super.normalizeFormatParams(g,t.format);return this.qualityFormatImpl(y,H,l,g,t),m||p||f||y||H||P?l:(console.log("skip iiif transform"),null)}async generateIiifImage(r,t,s=256){let o=(0,b.default)(t,{limitInputPixels:!1,sequentialRead:!0}),n=r.split("/"),h=n.pop(),g=h.split(".")[0],u=h.split(".")[1],d=n.pop(),S=n.pop(),P=n.pop(),l=await o.metadata(),c={width:l.width,height:l.height},m={},p=o,f=super.normalizeRegionParams(P,c);this.regionImpl(f,p);let y=super.normalizeSizeParams(S,{width:f?f.w:c.width,height:f?f.h:c.height});this.sizeImpl(y,p);let{x:H,y:ot,w:q,h:R}=f||{x:0,y:0,w:c.width,h:c.height},{width:T,height:A}=y||{width:c.width,height:c.height};if(q*R>T*A*s&&T<et&&A<rt&&l.pages&&l.pages>1){console.log("thumbnail");let z=Math.max(T/q,A/R),[F,L,I,W]=[Math.round(H*z),Math.round(ot*z),Math.round(q*z),Math.round(R*z)],[X,C]=[Math.round(c.width*z),Math.round(c.height*z)],M=l.pages-1,U=await(0,b.default)(t,{limitInputPixels:!1,page:M,sequentialRead:!0}).metadata(),Y=U.width,G=U.height;for(;G<C||Y<X;)G*=2,Y*=2,M--;console.log("selectedPage: "+M);let N={width:X,height:C,fastShrinkOnLoad:!1},ht=await(0,b.default)(t,{limitInputPixels:!1,page:M,sequentialRead:!0}).resize(N).toBuffer();p=(0,b.default)(ht);let v=await p.metadata();L+W>v.height&&(W=v.height-L,console.log("adjested sh: "+W)),F+I>v.width&&(I=v.width-F,console.log("adjusted sw: "+I));let J={x:F,y:L,w:I,h:W};this.regionImpl(J,p),this.sizeImpl(y,p),console.log(v.width,v.height,N.width,N.height,J,y)}let nt=super.normalizeRotationParams(d);this.rotationImpl(nt,p);let at=super.normalizeQualityParams(g);console.log(u,l.format);let k=super.normalizeFormatParams(u,l.format);return this.qualityFormatImpl(at,k,p,u,l),m.body=p,m.contentType=super.getContentType(k),m}generateImageInfo(r,t,s=""){let o=this.version,n=this.level,h={width:t.width,height:t.height};t&&t.orientation&&t.orientation>=5&&(console.log(t.orientation),h={width:t.height,height:t.width});let g=super.generateImageInfoTemp(r,h),u=g.info;if((o==="2.0"||o==="2.1")&&(u.profile=[super.uriPattern("compliance")],n==="2")){let d={};d.formats=["jpg","png","webp","jp2","pdf","tif"],d.qualities=["color","gray","bitonal","default","native","grey"],d.supports=Wt[Number(o)],u.profile.push(d)}return o==="3.0"&&s&&(u.extraFormats=[s],u.preferredFormats=[s]),s&&(u.formats=[s]),g}};module.exports=x;
|
|
1
|
+
"use strict";var lt=Object.create;var _=Object.defineProperty;var gt=Object.getOwnPropertyDescriptor;var ct=Object.getOwnPropertyNames;var pt=Object.getPrototypeOf,ut=Object.prototype.hasOwnProperty;var mt=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),ft=(i,e)=>{for(var r in e)_(i,r,{get:e[r],enumerable:!0})},K=(i,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of ct(e))!ut.call(i,s)&&s!==r&&_(i,s,{get:()=>e[s],enumerable:!(t=gt(e,s))||t.enumerable});return i};var V=(i,e,r)=>(r=i!=null?lt(pt(i)):{},K(e||!i||!i.__esModule?_(r,"default",{value:i,enumerable:!0}):r,i)),dt=i=>K(_({},"__esModule",{value:!0}),i);var et=mt((_t,E)=>{"use strict";var O=Object.defineProperty,yt=Object.getOwnPropertyDescriptor,wt=Object.getOwnPropertyNames,zt=Object.prototype.hasOwnProperty,vt=(i,e)=>{for(var r in e)O(i,r,{get:e[r],enumerable:!0})},$t=(i,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of wt(e))!zt.call(i,s)&&s!==r&&O(i,s,{get:()=>e[s],enumerable:!(t=yt(e,s))||t.enumerable});return i},bt=i=>$t(O({},"__esModule",{value:!0}),i),tt={};vt(tt,{default:()=>it});E.exports=bt(tt);var o="[1-9][0-9]*",Z="[0-9]*",z="(?=.*[1-9])\\d+(\\.\\d+)?",N="\\d+(\\.\\d+)?",q=(i=>(i.jpg="image/jpeg",i.jpeg="image/jpeg",i.png="image/png",i.webp="image/webp",i.tif="image/tiff",i.tiff="image/tiff",i.gif="image/gif",i.jp2="image/jp2",i.pdf="application/pdf",i))(q||{}),x={version:["1.0","1.1","2.0","2.1","3.0"],level:["0","1","2"],region:["full","square",`${Z},${Z},${o},${o}`,`pct:${N},${N},${z},${z}`],rotation:`!?${N}`,quality:["color","gray","bitonal","default","native","grey"],format:["jpg","png","webp","tif","gif","jp2","pdf"],size:[""]},xt={1:["full",`${o},`,`,${o}`,`pct:${z}`,`${o},${o}`,`!${o},${o}`],1.1:["full",`${o},`,`,${o}`,`pct:${z}`,`${o},${o}`,`!${o},${o}`],2:["full",`${o},`,`,${o}`,`pct:${z}`,`${o},${o}`,`!${o},${o}`],2.1:["full","max",`${o},`,`,${o}`,`pct:${z}`,`${o},${o}`,`!${o},${o}`],3:["max",`${o},`,`,${o}`,`pct:${z}`,`${o},${o}`,`!${o},${o}`,"\\^max",`\\^${o},`,`\\^,${o}`,`\\^pct:${z}`,`\\^${o},${o}`,`\\^!${o},${o}`]},j=/^pct:([\d,]+)/,it=class{constructor(i,e,r,t,s,a,n){this.version=i,this.level=e,this.maxArea=r,this.maxWidth=t,this.maxHeight=s,this.tileWidth=a,this.tileHeight=n,this.validate("version",i),this.validate("level",e),x.size=xt[Number(i)]}validator(i){var e=x[i];return e instanceof Array&&(e=e.join("|")),new RegExp("^("+e+")$")}validate(i,e){if(!this.validator(i).test(e))throw Error(`invalid IIIF url ${i}: ${e}`);return!0}normalizeRegionParams(i,e){if(this.validate("region",i),i==="full")return null;if(i==="square")return this._regionSquare(e);if(j.test(i))return this._regionPct(i.match(j)[1],e);{let r=i.split(",").map(t=>Number(t));return this._regionXYWH(r,e)}}_regionSquare(i){let e,r,t=i.width,s=i.height;if(t!==s){let a=Math.min(t,s),n=Math.abs(Math.floor((t-s)/2));return t>s?(e=n,r=0):(e=0,r=n),this._regionXYWH([e,r,a,a],i)}return null}_regionPct(i,e){let r=i.split(",").map((t,s)=>{let a=Number(t)/100;return s===0||s===2?Math.ceil(e.width*a):s===1||s===3?Math.ceil(e.height*a):null});return this._regionXYWH(r,e)}_regionXYWH(i,e){let r=e.width,t=e.height,[s,a,n,h]=i;return s+n>r&&(n=r-s),a+h>t&&(h=t-a),{x:s,y:a,w:n,h}}normalizeSizeParams(i,e){let r=i,t=e.width,s=e.height;if(!e||!t&&!s)throw Error(`invalid region dimensions: ${JSON.stringify(e,null,2)}`);this.validate("size",r);let a=!1;r.charAt(0)==="^"&&(a=!0,r=r.substring(1));let n=null;if(r==="full"||(r==="max"?n=this._sizeMaxScale(e):j.test(r)?n=this._sizePctScale(r.match(j)[1]):r.charAt(0)==="!"&&(r=r.substring(1),n=this._sizeBangScale(r,a,e)),n===1))return null;if(n){let h=Math.ceil(t*n),g=Math.ceil(s*n);return this._sizeWH(`${h},${g}`,a,e)}else return this._sizeWH(r,a,e)}_sizeBangScale(i,e,r){let t=r.width,s=r.height,[a,n]=i.split(",").map(g=>g===""?null:Number(g)),h=Math.min(a/t,n/s);if(a>t&&n>s&&!e)throw Error("should not upscale without ^");return h}_sizeMaxScale(i){let e=i.width,r=i.height,t=1;return this.maxArea&&this.maxArea<e*r&&(t=Math.sqrt(this.maxArea/(e*r))),this.maxWidth&&this.maxWidth<e&&(t=Math.min(t,this.maxWidth/e)),this.maxHeight&&this.maxHeight<r&&(t=Math.min(t,this.maxHeight/r)),t}_sizePctScale(i){return Number(i)/100}_sizeWH(i,e,r){let t=r.width,s=r.height,[a,n]=i.split(",").map(h=>h===""?null:Number(h));if(a?n||(n=Math.ceil(s*a/t),n=n===0?1:n):(a=Math.ceil(t*n/s),a=a===0?1:a),(a>t||n>s)&&!e)throw Error("should not upscale without ^");return{width:a,height:n}}normalizeRotationParams(i){this.validate("rotation",i);let e=!1;if(i==="0")return null;i[0]==="!"&&(e=!0);let r=Number(i.replace(/^!/,""));return{isMirror:e,degree:r}}normalizeQualityParams(i){return this.validate("quality",i),i==="native"||i==="default"?null:i}normalizeFormatParams(i,e){if((this.version==="1.0"||this.version==="1.1"||this.version==="2.0"||this.version==="2.1")&&!i)return"png";this.validate("format",i);let r=q[i],t=q[e];return r===t?null:i}getContentType(i){return q[i]}generateImageInfoTemp(i,e){let r={},t={};r.info=t;let s=this.version;return s==="1.0"?(t.identifier=i,t.width=e.width,t.height=e.height,t.scale_factors=this.factors(e),t.tile_width=this.tileWidth,t.tile_height=this.tileHeight,t.formats=x.format,t.qualities=x.quality,t.profile=this.uriPattern("compliance"),r.contentType="application/json",r.body=JSON.stringify(t)):(s==="1.1"?(t["@context"]=this.uriPattern("context"),t["@id"]=i,t.width=e.width,t.height=e.height,t.scale_factors=this.factors(e),t.tile_width=this.tileWidth,t.tile_height=this.tileHeight,t.formats=x.format,t.qualities=x.quality,t.profile=this.uriPattern("compliance")):s==="2.0"||s==="2.1"?(t["@context"]=this.uriPattern("context"),t["@id"]=i,t.protocol="http://iiif.io/api/image",t.width=e.width,t.height=e.height,this.level==="0"?t.sizes=this.sizes(e):t.tiles=[{scaleFactors:this.factors(e),width:this.tileWidth,height:this.tileHeight}],t.profile=[this.uriPattern("compliance")]):s==="3.0"&&(t["@context"]=[this.uriPattern("context")],t.id=i,t.type="ImageService3",t.protocol="http://iiif.io/api/image",t.width=e.width,t.height=e.height,this.level==="0"?t.sizes=this.sizes(e):t.tiles=[{scaleFactors:this.factors(e),width:this.tileWidth,height:this.tileHeight}],t.profile=this.uriPattern("compliance")),r.contentType="application/ld+json"),r}factors(i){let e=1,r=[];for(;this.tileWidth*e<=i.width&&this.tileHeight*e<=i.height;)r.push(e),e*=2;return r}uriPattern(i){let e="",r="";return this.version==="1.0"?e=`http://library.stanford.edu/iiif/image-api/compliance.html#level${this.level}`:this.version==="1.1"?(e=`http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level${this.level}`,r="http://library.stanford.edu/iiif/image-api/1.1/context.json"):this.version==="2.0"||this.version==="2.1"?(e=`http://iiif.io/api/image/2/level${this.level}.json`,r="http://iiif.io/api/image/2/context.json"):this.version==="3.0"&&(e=`level${this.level}`,r="http://iiif.io/api/image/3/context.json"),i==="compliance"?e:i==="context"?r:""}sizes(i){return[{width:i.width,height:i.height}]}};E.exports=it});var It={};ft(It,{default:()=>P});module.exports=dt(It);var m=V(require("sharp")),at=V(et()),Pt=1e8,rt=1e4,st=1e4,Ht=512,Wt=512,Bt={2:["baseUriRedirect","canonicalLinkHeader","cors","jsonldMediaType","mirroring","profileLinkHeader","regionByPct","regionByPx","rotationArbitrary","rotationBy90s","sizeAboveFull","sizeByWhListed","sizeByForcedWh","sizeByH","sizeByPct","sizeByW","sizeByWh"],2.1:["baseUriRedirect","canonicalLinkHeader","cors","jsonldMediaType","mirroring","profileLinkHeader","regionByPct","regionByPx","regionSquare","rotationArbitrary","rotationBy90s","sizeAboveFull","sizeByConfinedWh","sizeByDistortedWh","sizeByH","sizeByPct","sizeByW","sizeByWh","sizeByWhListed","sizeByForcedWh"],3:["baseUriRedirect","canonicalLinkHeader","cors","jsonldMediaType","mirroring","profileLinkHeader","regionByPct","regionByPx","regionSquare","rotationArbitrary","rotationBy90s","sizeByConfinedWh","sizeByH","sizeByPct","sizeByW","sizeByWh","sizeUpscaling"]},P=class extends at.default{constructor(r,t,s=!1,a=Pt,n=rt,h=st,g=Ht,p=Wt){super(r,t,a,n,h,g,p);this.enableHD=s}regionImpl(r,t){r&&(t=t.extract({left:r.x,top:r.y,width:r.w,height:r.h}))}sizeImpl(r,t){r&&(t=t.resize({...r,fit:"fill"}))}rotationImpl(r,t){r&&(r.isMirror&&(t=t.flop()),t=t.rotate(r.degree))}qualityFormatImpl(r,t,s,a,n){r&&(r==="color"?s=s.toColorspace("srgb"):r==="gray"||r==="grey"?s=s.grayscale():r==="bitonal"&&(s=s.threshold())),t&&(s=s.toFormat(t)),a==="png"&&(n.paletteBitDepth===1||n.space==="b-w")&&(s=s.toColorspace("b-w").png({colors:2}))}iiifTransform(r,t){let s=this.enableHD?(0,m.default)({limitInputPixels:!1,sequentialRead:!0}):(0,m.default)(),a=r.split("/"),n=a.pop(),h=n.split(".")[0],g=n.split(".")[1],p=a.pop(),y=a.pop(),S=a.pop(),H=!1,l=s,c={width:t.width,height:t.height};t&&t.orientation&&(H=!0,l=l.rotate(),t.orientation>=5&&(c={width:t.height,height:t.width}));let f=super.normalizeRegionParams(S,c);this.regionImpl(f,l);let u=super.normalizeSizeParams(y,{width:f?f.w:c.width,height:f?f.h:c.height});this.sizeImpl(u,l);let d=super.normalizeRotationParams(p);this.rotationImpl(d,l);let w=super.normalizeQualityParams(h),W=super.normalizeFormatParams(g,t.format);return this.qualityFormatImpl(w,W,l,g,t),f||u||d||w||W||H?l:(console.log("skip iiif transform"),null)}async generateIiifImage(r,t,s=256){let a=this.enableHD?(0,m.default)(t,{limitInputPixels:!1,sequentialRead:!0}):(0,m.default)(t),n=r.split("/"),h=n.pop(),g=h.split(".")[0],p=h.split(".")[1],y=n.pop(),S=n.pop(),H=n.pop(),l=await a.metadata(),c={width:l.width,height:l.height},f={},u=a,d=super.normalizeRegionParams(H,c);this.regionImpl(d,u);let w=super.normalizeSizeParams(S,{width:d?d.w:c.width,height:d?d.h:c.height});this.sizeImpl(w,u);let{x:W,y:nt,w:R,h:T}=d||{x:0,y:0,w:c.width,h:c.height},{width:A,height:D}=w||{width:c.width,height:c.height};if(R*T>A*D*s&&A<rt&&D<st&&l.pages&&l.pages>1){console.log("thumbnail");let v=Math.max(A/R,D/T),[F,L,B,I]=[Math.round(W*v),Math.round(nt*v),Math.round(R*v),Math.round(T*v)],[X,C]=[Math.round(c.width*v),Math.round(c.height*v)],$=l.pages-1,U=this.enableHD?await(0,m.default)(t,{limitInputPixels:!1,page:$,sequentialRead:!0}).metadata():await(0,m.default)(t,{page:$}).metadata(),Y=U.width,G=U.height;for(;G<C||Y<X;)G*=2,Y*=2,$--;console.log("selectedPage: "+$);let M={width:X,height:C,fastShrinkOnLoad:!1},J=this.enableHD?await(0,m.default)(t,{limitInputPixels:!1,page:$,sequentialRead:!0}).resize(M).toBuffer():await(0,m.default)(t,{page:$}).resize(M).toBuffer();u=this.enableHD?(0,m.default)(J,{limitInputPixels:!1,sequentialRead:!0}):(0,m.default)(J);let b=await u.metadata();L+I>b.height&&(I=b.height-L,console.log("adjested sh: "+I)),F+B>b.width&&(B=b.width-F,console.log("adjusted sw: "+B));let Q={x:F,y:L,w:B,h:I};this.regionImpl(Q,u),this.sizeImpl(w,u),console.log(b.width,b.height,M.width,M.height,Q,w)}let ot=super.normalizeRotationParams(y);this.rotationImpl(ot,u);let ht=super.normalizeQualityParams(g);console.log(p,l.format);let k=super.normalizeFormatParams(p,l.format);return this.qualityFormatImpl(ht,k,u,p,l),f.body=u,f.contentType=super.getContentType(k),f}generateImageInfo(r,t,s=""){let a=this.version,n=this.level,h={width:t.width,height:t.height};t&&t.orientation&&t.orientation>=5&&(console.log(t.orientation),h={width:t.height,height:t.width});let g=super.generateImageInfoTemp(r,h),p=g.info;if((a==="2.0"||a==="2.1")&&(p.profile=[super.uriPattern("compliance")],n==="2")){let y={};y.formats=["jpg","png","webp","jp2","pdf","tif"],y.qualities=["color","gray","bitonal","default","native","grey"],y.supports=Bt[Number(a)],p.profile.push(y)}return a==="3.0"&&s&&(p.extraFormats=[s],p.preferredFormats=[s]),s&&(p.formats=[s]),g}};module.exports=P;
|