@etu-wiki/sharp-iiif-shims 0.0.69 → 0.0.71

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