@etu-wiki/sharp-iiif-shims 0.0.46 → 0.0.47

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.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var ht=Object.create;var I=Object.defineProperty;var lt=Object.getOwnPropertyDescriptor;var pt=Object.getOwnPropertyNames;var gt=Object.getPrototypeOf,ct=Object.prototype.hasOwnProperty;var mt=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),ut=(i,e)=>{for(var t in e)I(i,t,{get:e[t],enumerable:!0})},U=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of pt(e))!ct.call(i,s)&&s!==t&&I(i,s,{get:()=>e[s],enumerable:!(r=lt(e,s))||r.enumerable});return i};var Y=(i,e,t)=>(t=i!=null?ht(gt(i)):{},U(e||!i||!i.__esModule?I(t,"default",{value:i,enumerable:!0}):t,i)),dt=i=>U(I({},"__esModule",{value:!0}),i);var Z=mt((Bt,L)=>{"use strict";var O=Object.defineProperty,ft=Object.getOwnPropertyDescriptor,yt=Object.getOwnPropertyNames,zt=Object.prototype.hasOwnProperty,wt=(i,e)=>{for(var t in e)O(i,t,{get:e[t],enumerable:!0})},vt=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of yt(e))!zt.call(i,s)&&s!==t&&O(i,s,{get:()=>e[s],enumerable:!(r=ft(e,s))||r.enumerable});return i},$t=i=>vt(O({},"__esModule",{value:!0}),i),K={};wt(K,{default:()=>V});L.exports=$t(K);var o="[1-9][0-9]*",G="[0-9]*",u="(?=.*[1-9])\\d+(\\.\\d+)?",N="\\d+(\\.\\d+)?",W=(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))(W||{}),z={version:["1.0","1.1","2.0","2.1","3.0"],level:["0","1","2"],region:["full","square",`${G},${G},${o},${o}`,`pct:${N},${N},${u},${u}`],rotation:`!?${N}`,quality:["color","gray","bitonal","default","native","grey"],format:["jpg","png","webp","tif","gif","jp2","pdf"],size:[""]},bt={1:["full",`${o},`,`,${o}`,`pct:${u}`,`${o},${o}`,`!${o},${o}`],1.1:["full",`${o},`,`,${o}`,`pct:${u}`,`${o},${o}`,`!${o},${o}`],2:["full",`${o},`,`,${o}`,`pct:${u}`,`${o},${o}`,`!${o},${o}`],2.1:["full","max",`${o},`,`,${o}`,`pct:${u}`,`${o},${o}`,`!${o},${o}`],3:["max",`${o},`,`,${o}`,`pct:${u}`,`${o},${o}`,`!${o},${o}`,"\\^max",`\\^${o},`,`\\^,${o}`,`\\^pct:${u}`,`\\^${o},${o}`,`\\^!${o},${o}`]},H=/^pct:([\d,]+)/,V=class{constructor(i,e,t,r,s,a,n){this.version=i,this.level=e,this.maxArea=t,this.maxWidth=r,this.maxHeight=s,this.tileWidth=a,this.tileHeight=n,this.validate("version",i),this.validate("level",e),z.size=bt[Number(i)]}validator(i){var e=z[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(H.test(i))return this._regionPct(i.match(H)[0],e);{let t=i.split(",").map(r=>Number(r));return this._regionXYWH(t,e)}}_regionSquare(i){let e,t,r=i.width,s=i.height;if(r!==s){let a=Math.min(r,s),n=Math.abs(Math.floor((r-s)/2));return r>s?(e=n,t=0):(e=0,t=n),this._regionXYWH([e,t,a,a],i)}return null}_regionPct(i,e){let t=i.split(",").map((r,s)=>{let a=Number(r)/100;return s===0||s===2?Math.round(e.width*a):s===1||s===3?Math.round(e.height*a):null});return this._regionXYWH(t,e)}_regionXYWH(i,e){let t=e.width,r=e.height,[s,a,n,h]=i;return s+n>t&&(n=t-s),a+h>r&&(h=r-a),{x:s,y:a,w:n,h}}normalizeSizeParams(i,e){let t=i,r=e.width,s=e.height;this.validate("size",t);let a=!1;t.charAt(0)==="^"&&(a=!0,t=t.substring(1));let n=null;if(t==="full"||(t==="max"?n=this._sizeMaxScale(e):H.test(t)?n=this._sizePctScale(t.match(H)[0]):t.charAt(0)==="!"&&(t=t.substring(1),n=this._sizeBangScale(t,a,e)),n===1))return null;if(n){let h=Math.round(r*n),l=Math.round(s*n);return this._sizeWH(`${h},${l}`,a,e)}else return this._sizeWH(t,a,e)}_sizeBangScale(i,e,t){let r=t.width,s=t.height,[a,n]=i.split(",").map(l=>l===""?null:Number(l)),h=Math.min(a/r,n/s);if(a>r&&n>s&&!e)throw Error("should not upscale without ^");return h}_sizeMaxScale(i){let e=i.width,t=i.height,r=1;return this.maxArea&&this.maxArea<e*t&&(r=Math.sqrt(this.maxArea/(e*t))),this.maxWidth&&this.maxWidth<e&&(r=Math.min(r,this.maxWidth/e)),this.maxHeight&&this.maxHeight<t&&(r=Math.min(r,this.maxHeight/t)),r}_sizePctScale(i){return Number(i)/100}_sizeWH(i,e,t){let r=t.width,s=t.height,[a,n]=i.split(",").map(h=>h===""?null:Number(h));if(a?n||(n=Math.round(s*a/r)):a=Math.round(r*n/s),(a>r||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 t=Number(i.replace(/^!/,""));return{isMirror:e,degree:t}}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 t=W[i],r=W[e];return t===r?null:i}getContentType(i){return W[i]}generateImageInfoTemp(i,e){let t={},r={};t.info=r;let s=this.version;return s==="1.0"?(r.identifier=i,r.width=e.width,r.height=e.height,r.scale_factors=this.factors(e),r.tile_width=this.tileWidth,r.tile_height=this.tileHeight,r.formats=z.format,r.qualities=z.quality,r.profile=this.uriPattern("compliance"),t.contentType="application/json",t.body=JSON.stringify(r)):(s==="1.1"?(r["@context"]=this.uriPattern("context"),r["@id"]=i,r.width=e.width,r.height=e.height,r.scale_factors=this.factors(e),r.tile_width=this.tileWidth,r.tile_height=this.tileHeight,r.formats=z.format,r.qualities=z.quality,r.profile=this.uriPattern("compliance")):s==="2.0"||s==="2.1"?(r["@context"]=this.uriPattern("context"),r["@id"]=i,r.protocol="http://iiif.io/api/image",r.width=e.width,r.height=e.height,this.level==="0"?r.sizes=this.sizes(e):r.tiles=[{scaleFactors:this.factors(e),width:this.tileWidth,height:this.tileHeight}],r.profile=[this.uriPattern("compliance")]):s==="3.0"&&(r["@context"]=[this.uriPattern("context")],r.id=i,r.type="ImageService3",r.protocol="http://iiif.io/api/image",r.width=e.width,r.height=e.height,this.level==="0"?r.sizes=this.sizes(e):r.tiles=[{scaleFactors:this.factors(e),width:this.tileWidth,height:this.tileHeight}],r.profile=this.uriPattern("compliance")),t.contentType="application/ld+json"),t}factors(i){let e=1,t=[1],r=i.width,s=i.height;for(;!(this.tileWidth*e>r&&this.tileHeight*e>s);)e*=2,t.push(e);return t}uriPattern(i){let e="",t="";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}`,t="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`,t="http://iiif.io/api/image/2/context.json"):this.version==="3.0"&&(e=`level${this.level}`,t="http://iiif.io/api/image/3/context.json"),i==="compliance"?e:i==="context"?t:""}sizes(i){return[{width:i.width,height:i.height}]}};L.exports=V});var Wt={};ut(Wt,{default:()=>v});module.exports=dt(Wt);var w=Y(require("sharp")),et=Y(Z()),xt=1e8,tt=1e4,it=1e4,Pt=512,It=512,Ht={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"]},v=class extends et.default{constructor(t,r,s=xt,a=tt,n=it,h=Pt,l=It){super(t,r,s,a,n,h,l)}regionImpl(t){console.log("region: "+JSON.stringify(t)),t&&(this.pipeline=this.pipeline.extract({left:t.x,top:t.y,width:t.w,height:t.h}))}sizeImpl(t){console.log("size: "+JSON.stringify(t)),t&&(this.pipeline=this.pipeline.resize({...t,fit:"fill"}))}rotationImpl(t){console.log("rotation: "+JSON.stringify(t)),t&&(t.isMirror&&(this.pipeline=this.pipeline.flop()),this.pipeline=this.pipeline.rotate(t.degree))}qualityImpl(t){console.log("quality: "+JSON.stringify(t)),t&&(t==="color"?this.pipeline=this.pipeline.toColorspace("srgb"):t==="gray"||t==="grey"?this.pipeline=this.pipeline.grayscale():t==="bitonal"&&(this.pipeline=this.pipeline.threshold()))}formatImpl(t){console.log("format: "+JSON.stringify(t)),t&&(this.pipeline=this.pipeline.toFormat(t))}iiifTransform(t,r){let s={width:r.width,height:r.height},a=(0,w.default)(),n=t.split("/"),h=n.pop(),l=h.split(".")[0],$=h.split(".")[1],M=n.pop(),B=n.pop(),_=n.pop();this.pipeline=a;let p=super.normalizeRegionParams(_,s);this.regionImpl(p);let g=super.normalizeSizeParams(B,{width:p?p.w:s.width,height:p?p.h:s.height});this.sizeImpl(g);let d=super.normalizeRotationParams(M);this.rotationImpl(d);let c=super.normalizeQualityParams(l);this.qualityImpl(c);let m=super.normalizeFormatParams($,r.format);return this.formatImpl(m),p||g||d||c||m?this.pipeline:(console.log("skip iiif transform"),null)}async generateIiifImage(t,r,s=256){let a=(0,w.default)(r,{limitInputPixels:!1,sequentialRead:!0}),n=t.split("/"),h=n.pop(),l=h.split(".")[0],$=h.split(".")[1],M=n.pop(),B=n.pop(),_=n.pop(),p=await a.metadata(),g={width:p.width,height:p.height},d={};this.pipeline=a;let c=super.normalizeRegionParams(_,g);this.regionImpl(c);let m=super.normalizeSizeParams(B,{width:c?c.w:g.width,height:c?c.h:g.height});this.sizeImpl(m);let{x:rt,y:st,w:j,h:S}=c||{x:0,y:0,w:g.width,h:g.height},{width:q,height:R}=m||{width:g.width,height:g.height};if(j*S>q*R*s&&q<tt&&R<it&&p.pages&&p.pages>1){console.log("thumbnail");let f=Math.max(q/j,R/S),[T,A,b,x]=[Math.round(rt*f),Math.round(st*f),Math.round(j*f),Math.round(S*f)],[k,D]=[Math.round(g.width*f),Math.round(g.height*f)],P=p.pages-1,X=await(0,w.default)(r,{limitInputPixels:!1,page:P,sequentialRead:!0}).metadata(),J=X.width,C=X.height;for(;C<D||J<k;)C*=2,J*=2,P--;console.log("selectedPage: "+P);let F={width:k,height:D,fastShrinkOnLoad:!1},at=await(0,w.default)(r,{limitInputPixels:!1,page:P,sequentialRead:!0}).resize(F).toBuffer();this.pipeline=(0,w.default)(at);let y=await this.pipeline.metadata();A+x>y.height&&(x=y.height-A,console.log("adjested sh: "+x)),T+b>y.width&&(b=y.width-T,console.log("adjusted sw: "+b));let Q={x:T,y:A,w:b,h:x};this.regionImpl(Q),this.sizeImpl(m),console.log(y.width,y.height,F.width,F.height,Q,m)}let nt=super.normalizeRotationParams(M);this.rotationImpl(nt);let ot=super.normalizeQualityParams(l);this.qualityImpl(ot),console.log($,p.format);let E=super.normalizeFormatParams($,p.format);return this.formatImpl(E),d.body=this.pipeline,d.contentType=super.getContentType(E),d}generateImageInfo(t,r){let s=this.version,a=this.level,n=super.generateImageInfoTemp(t,r),h=n.info;if((s==="2.0"||s==="2.1")&&(h.profile=[super.uriPattern("compliance")],a==="2")){let l={};l.formats=["jpg","png","webp","tif","jp2","pdf"],l.qualities=["color","gray","bitonal","default","native","grey"],l.supports=Ht[Number(s)],h.profile.push(l)}return s==="3.0"&&(h.extraFormats=["webp"],h.preferredFormats=["webp"]),n}};module.exports=v;
1
+ "use strict";var ht=Object.create;var I=Object.defineProperty;var lt=Object.getOwnPropertyDescriptor;var pt=Object.getOwnPropertyNames;var gt=Object.getPrototypeOf,ct=Object.prototype.hasOwnProperty;var mt=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),ut=(i,e)=>{for(var t in e)I(i,t,{get:e[t],enumerable:!0})},U=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of pt(e))!ct.call(i,s)&&s!==t&&I(i,s,{get:()=>e[s],enumerable:!(r=lt(e,s))||r.enumerable});return i};var Y=(i,e,t)=>(t=i!=null?ht(gt(i)):{},U(e||!i||!i.__esModule?I(t,"default",{value:i,enumerable:!0}):t,i)),dt=i=>U(I({},"__esModule",{value:!0}),i);var Z=mt((Bt,L)=>{"use strict";var O=Object.defineProperty,ft=Object.getOwnPropertyDescriptor,yt=Object.getOwnPropertyNames,zt=Object.prototype.hasOwnProperty,wt=(i,e)=>{for(var t in e)O(i,t,{get:e[t],enumerable:!0})},vt=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of yt(e))!zt.call(i,s)&&s!==t&&O(i,s,{get:()=>e[s],enumerable:!(r=ft(e,s))||r.enumerable});return i},$t=i=>vt(O({},"__esModule",{value:!0}),i),K={};wt(K,{default:()=>V});L.exports=$t(K);var o="[1-9][0-9]*",G="[0-9]*",u="(?=.*[1-9])\\d+(\\.\\d+)?",N="\\d+(\\.\\d+)?",W=(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))(W||{}),z={version:["1.0","1.1","2.0","2.1","3.0"],level:["0","1","2"],region:["full","square",`${G},${G},${o},${o}`,`pct:${N},${N},${u},${u}`],rotation:`!?${N}`,quality:["color","gray","bitonal","default","native","grey"],format:["jpg","png","webp","tif","gif","jp2","pdf"],size:[""]},bt={1:["full",`${o},`,`,${o}`,`pct:${u}`,`${o},${o}`,`!${o},${o}`],1.1:["full",`${o},`,`,${o}`,`pct:${u}`,`${o},${o}`,`!${o},${o}`],2:["full",`${o},`,`,${o}`,`pct:${u}`,`${o},${o}`,`!${o},${o}`],2.1:["full","max",`${o},`,`,${o}`,`pct:${u}`,`${o},${o}`,`!${o},${o}`],3:["max",`${o},`,`,${o}`,`pct:${u}`,`${o},${o}`,`!${o},${o}`,"\\^max",`\\^${o},`,`\\^,${o}`,`\\^pct:${u}`,`\\^${o},${o}`,`\\^!${o},${o}`]},H=/^pct:([\d,]+)/,V=class{constructor(i,e,t,r,s,a,n){this.version=i,this.level=e,this.maxArea=t,this.maxWidth=r,this.maxHeight=s,this.tileWidth=a,this.tileHeight=n,this.validate("version",i),this.validate("level",e),z.size=bt[Number(i)]}validator(i){var e=z[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(H.test(i))return this._regionPct(i.match(H)[1],e);{let t=i.split(",").map(r=>Number(r));return this._regionXYWH(t,e)}}_regionSquare(i){let e,t,r=i.width,s=i.height;if(r!==s){let a=Math.min(r,s),n=Math.abs(Math.floor((r-s)/2));return r>s?(e=n,t=0):(e=0,t=n),this._regionXYWH([e,t,a,a],i)}return null}_regionPct(i,e){let t=i.split(",").map((r,s)=>{let a=Number(r)/100;return s===0||s===2?Math.round(e.width*a):s===1||s===3?Math.round(e.height*a):null});return this._regionXYWH(t,e)}_regionXYWH(i,e){let t=e.width,r=e.height,[s,a,n,h]=i;return s+n>t&&(n=t-s),a+h>r&&(h=r-a),{x:s,y:a,w:n,h}}normalizeSizeParams(i,e){let t=i,r=e.width,s=e.height;this.validate("size",t);let a=!1;t.charAt(0)==="^"&&(a=!0,t=t.substring(1));let n=null;if(t==="full"||(t==="max"?n=this._sizeMaxScale(e):H.test(t)?n=this._sizePctScale(t.match(H)[1]):t.charAt(0)==="!"&&(t=t.substring(1),n=this._sizeBangScale(t,a,e)),n===1))return null;if(n){let h=Math.round(r*n),l=Math.round(s*n);return this._sizeWH(`${h},${l}`,a,e)}else return this._sizeWH(t,a,e)}_sizeBangScale(i,e,t){let r=t.width,s=t.height,[a,n]=i.split(",").map(l=>l===""?null:Number(l)),h=Math.min(a/r,n/s);if(a>r&&n>s&&!e)throw Error("should not upscale without ^");return h}_sizeMaxScale(i){let e=i.width,t=i.height,r=1;return this.maxArea&&this.maxArea<e*t&&(r=Math.sqrt(this.maxArea/(e*t))),this.maxWidth&&this.maxWidth<e&&(r=Math.min(r,this.maxWidth/e)),this.maxHeight&&this.maxHeight<t&&(r=Math.min(r,this.maxHeight/t)),r}_sizePctScale(i){return Number(i)/100}_sizeWH(i,e,t){let r=t.width,s=t.height,[a,n]=i.split(",").map(h=>h===""?null:Number(h));if(a?n||(n=Math.round(s*a/r)):a=Math.round(r*n/s),(a>r||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 t=Number(i.replace(/^!/,""));return{isMirror:e,degree:t}}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 t=W[i],r=W[e];return t===r?null:i}getContentType(i){return W[i]}generateImageInfoTemp(i,e){let t={},r={};t.info=r;let s=this.version;return s==="1.0"?(r.identifier=i,r.width=e.width,r.height=e.height,r.scale_factors=this.factors(e),r.tile_width=this.tileWidth,r.tile_height=this.tileHeight,r.formats=z.format,r.qualities=z.quality,r.profile=this.uriPattern("compliance"),t.contentType="application/json",t.body=JSON.stringify(r)):(s==="1.1"?(r["@context"]=this.uriPattern("context"),r["@id"]=i,r.width=e.width,r.height=e.height,r.scale_factors=this.factors(e),r.tile_width=this.tileWidth,r.tile_height=this.tileHeight,r.formats=z.format,r.qualities=z.quality,r.profile=this.uriPattern("compliance")):s==="2.0"||s==="2.1"?(r["@context"]=this.uriPattern("context"),r["@id"]=i,r.protocol="http://iiif.io/api/image",r.width=e.width,r.height=e.height,this.level==="0"?r.sizes=this.sizes(e):r.tiles=[{scaleFactors:this.factors(e),width:this.tileWidth,height:this.tileHeight}],r.profile=[this.uriPattern("compliance")]):s==="3.0"&&(r["@context"]=[this.uriPattern("context")],r.id=i,r.type="ImageService3",r.protocol="http://iiif.io/api/image",r.width=e.width,r.height=e.height,this.level==="0"?r.sizes=this.sizes(e):r.tiles=[{scaleFactors:this.factors(e),width:this.tileWidth,height:this.tileHeight}],r.profile=this.uriPattern("compliance")),t.contentType="application/ld+json"),t}factors(i){let e=1,t=[1],r=i.width,s=i.height;for(;!(this.tileWidth*e>r&&this.tileHeight*e>s);)e*=2,t.push(e);return t}uriPattern(i){let e="",t="";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}`,t="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`,t="http://iiif.io/api/image/2/context.json"):this.version==="3.0"&&(e=`level${this.level}`,t="http://iiif.io/api/image/3/context.json"),i==="compliance"?e:i==="context"?t:""}sizes(i){return[{width:i.width,height:i.height}]}};L.exports=V});var Wt={};ut(Wt,{default:()=>v});module.exports=dt(Wt);var w=Y(require("sharp")),et=Y(Z()),xt=1e8,tt=1e4,it=1e4,Pt=512,It=512,Ht={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"]},v=class extends et.default{constructor(t,r,s=xt,a=tt,n=it,h=Pt,l=It){super(t,r,s,a,n,h,l)}regionImpl(t){console.log("region: "+JSON.stringify(t)),t&&(this.pipeline=this.pipeline.extract({left:t.x,top:t.y,width:t.w,height:t.h}))}sizeImpl(t){console.log("size: "+JSON.stringify(t)),t&&(this.pipeline=this.pipeline.resize({...t,fit:"fill"}))}rotationImpl(t){console.log("rotation: "+JSON.stringify(t)),t&&(t.isMirror&&(this.pipeline=this.pipeline.flop()),this.pipeline=this.pipeline.rotate(t.degree))}qualityImpl(t){console.log("quality: "+JSON.stringify(t)),t&&(t==="color"?this.pipeline=this.pipeline.toColorspace("srgb"):t==="gray"||t==="grey"?this.pipeline=this.pipeline.grayscale():t==="bitonal"&&(this.pipeline=this.pipeline.threshold()))}formatImpl(t){console.log("format: "+JSON.stringify(t)),t&&(this.pipeline=this.pipeline.toFormat(t))}iiifTransform(t,r){let s={width:r.width,height:r.height},a=(0,w.default)(),n=t.split("/"),h=n.pop(),l=h.split(".")[0],$=h.split(".")[1],M=n.pop(),B=n.pop(),_=n.pop();this.pipeline=a;let p=super.normalizeRegionParams(_,s);this.regionImpl(p);let g=super.normalizeSizeParams(B,{width:p?p.w:s.width,height:p?p.h:s.height});this.sizeImpl(g);let d=super.normalizeRotationParams(M);this.rotationImpl(d);let c=super.normalizeQualityParams(l);this.qualityImpl(c);let m=super.normalizeFormatParams($,r.format);return this.formatImpl(m),p||g||d||c||m?this.pipeline:(console.log("skip iiif transform"),null)}async generateIiifImage(t,r,s=256){let a=(0,w.default)(r,{limitInputPixels:!1,sequentialRead:!0}),n=t.split("/"),h=n.pop(),l=h.split(".")[0],$=h.split(".")[1],M=n.pop(),B=n.pop(),_=n.pop(),p=await a.metadata(),g={width:p.width,height:p.height},d={};this.pipeline=a;let c=super.normalizeRegionParams(_,g);this.regionImpl(c);let m=super.normalizeSizeParams(B,{width:c?c.w:g.width,height:c?c.h:g.height});this.sizeImpl(m);let{x:rt,y:st,w:j,h:S}=c||{x:0,y:0,w:g.width,h:g.height},{width:q,height:R}=m||{width:g.width,height:g.height};if(j*S>q*R*s&&q<tt&&R<it&&p.pages&&p.pages>1){console.log("thumbnail");let f=Math.max(q/j,R/S),[T,A,b,x]=[Math.round(rt*f),Math.round(st*f),Math.round(j*f),Math.round(S*f)],[k,D]=[Math.round(g.width*f),Math.round(g.height*f)],P=p.pages-1,X=await(0,w.default)(r,{limitInputPixels:!1,page:P,sequentialRead:!0}).metadata(),J=X.width,C=X.height;for(;C<D||J<k;)C*=2,J*=2,P--;console.log("selectedPage: "+P);let F={width:k,height:D,fastShrinkOnLoad:!1},at=await(0,w.default)(r,{limitInputPixels:!1,page:P,sequentialRead:!0}).resize(F).toBuffer();this.pipeline=(0,w.default)(at);let y=await this.pipeline.metadata();A+x>y.height&&(x=y.height-A,console.log("adjested sh: "+x)),T+b>y.width&&(b=y.width-T,console.log("adjusted sw: "+b));let Q={x:T,y:A,w:b,h:x};this.regionImpl(Q),this.sizeImpl(m),console.log(y.width,y.height,F.width,F.height,Q,m)}let nt=super.normalizeRotationParams(M);this.rotationImpl(nt);let ot=super.normalizeQualityParams(l);this.qualityImpl(ot),console.log($,p.format);let E=super.normalizeFormatParams($,p.format);return this.formatImpl(E),d.body=this.pipeline,d.contentType=super.getContentType(E),d}generateImageInfo(t,r){let s=this.version,a=this.level,n=super.generateImageInfoTemp(t,r),h=n.info;if((s==="2.0"||s==="2.1")&&(h.profile=[super.uriPattern("compliance")],a==="2")){let l={};l.formats=["jpg","png","webp","tif","jp2","pdf"],l.qualities=["color","gray","bitonal","default","native","grey"],l.supports=Ht[Number(s)],h.profile.push(l)}return s==="3.0"&&(h.extraFormats=["webp"],h.preferredFormats=["webp"]),n}};module.exports=v;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etu-wiki/sharp-iiif-shims",
3
- "version": "0.0.46",
3
+ "version": "0.0.47",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -28,7 +28,7 @@
28
28
  "typescript": "^5.0.4"
29
29
  },
30
30
  "dependencies": {
31
- "@etu-wiki/iiif-image-shims": "^0.0.14",
31
+ "@etu-wiki/iiif-image-shims": "^0.0.15",
32
32
  "sharp": "^0.32.1"
33
33
  },
34
34
  "files": [