@etu-wiki/sharp-iiif-shims 0.0.40 → 0.0.41
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 +1 -1
- package/dist/index.js +1 -1
- package/package.json +4 -2
package/dist/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export default class SharpIiifImageShims extends IiifImageShims {
|
|
|
16
16
|
private rotationImpl;
|
|
17
17
|
private qualityImpl;
|
|
18
18
|
private formatImpl;
|
|
19
|
-
iiifTransform(path: string,
|
|
19
|
+
iiifTransform(path: string, metadata: any): sharp.Sharp;
|
|
20
20
|
generateIiifImage(path: string, sourceImage: any): Promise<any>;
|
|
21
21
|
generateImageInfo(id: string, dims: Dims): any;
|
|
22
22
|
}
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var ni=Object.create;var P=Object.defineProperty;var oi=Object.getOwnPropertyDescriptor;var hi=Object.getOwnPropertyNames;var li=Object.getPrototypeOf,pi=Object.prototype.hasOwnProperty;var gi=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ci=(e,t)=>{for(var i in t)P(e,i,{get:t[i],enumerable:!0})},C=(e,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of hi(t))!pi.call(e,s)&&s!==i&&P(e,s,{get:()=>t[s],enumerable:!(r=oi(t,s))||r.enumerable});return e};var Q=(e,t,i)=>(i=e!=null?ni(li(e)):{},C(t||!e||!e.__esModule?P(i,"default",{value:e,enumerable:!0}):i,e)),mi=e=>C(P({},"__esModule",{value:!0}),e);var K=gi((Bi,J)=>{"use strict";var F=Object.defineProperty,di=Object.getOwnPropertyDescriptor,ui=Object.getOwnPropertyNames,fi=Object.prototype.hasOwnProperty,yi=(e,t)=>{for(var i in t)F(e,i,{get:t[i],enumerable:!0})},zi=(e,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of ui(t))!fi.call(e,s)&&s!==i&&F(e,s,{get:()=>t[s],enumerable:!(r=di(t,s))||r.enumerable});return e},wi=e=>zi(F({},"__esModule",{value:!0}),e),Y={};yi(Y,{default:()=>$i});J.exports=wi(Y);var n="[1-9][0-9]*",U="[0-9]*",m="(?=.*[1-9])\\d+(\\.\\d+)?",q="\\d+(\\.\\d+)?",G=(e=>(e.jpg="image/jpeg",e.png="image/png",e.webp="image/webp",e.tif="image/tiff",e.gif="image/gif",e.jp2="image/jp2",e.pdf="application/pdf",e))(G||{}),y={version:["1.0","1.1","2.0","2.1","3.0"],level:["0","1","2"],region:["full","square",`${U},${U},${n},${n}`,`pct:${q},${q},${m},${m}`],rotation:`!?${q}`,quality:["color","gray","bitonal","default","native","grey"],format:["jpg","png","webp","tif","gif","jp2","pdf"],size:[""]},vi={1:["full",`${n},`,`,${n}`,`pct:${m}`,`${n},${n}`,`!${n},${n}`],1.1:["full",`${n},`,`,${n}`,`pct:${m}`,`${n},${n}`,`!${n},${n}`],2:["full",`${n},`,`,${n}`,`pct:${m}`,`${n},${n}`,`!${n},${n}`],2.1:["full","max",`${n},`,`,${n}`,`pct:${m}`,`${n},${n}`,`!${n},${n}`],3:["max",`${n},`,`,${n}`,`pct:${m}`,`${n},${n}`,`!${n},${n}`,"\\^max",`\\^${n},`,`\\^,${n}`,`\\^pct:${m}`,`\\^${n},${n}`,`\\^!${n},${n}`]},x=/^pct:([\d,]+)/,$i=class{constructor(e,t,i,r,s,a,o){this.version=e,this.level=t,this.maxArea=i,this.maxWidth=r,this.maxHeight=s,this.tileWidth=a,this.tileHeight=o,this.validate("version",e),this.validate("level",t),y.size=vi[Number(e)]}validator(e){var t=y[e];return t instanceof Array&&(t=t.join("|")),new RegExp("^("+t+")$")}validate(e,t){if(!this.validator(e).test(t))throw Error(`invalid IIIF url ${e}: ${t}`);return!0}normalizeRegionParams(e,t){if(this.validate("region",e),e==="full")return null;if(e==="square")return this._regionSquare(t);if(x.test(e))return this._regionPct(e.match(x)[0],t);{let i=e.split(",").map(r=>Number(r));return this._regionXYWH(i,t)}}_regionSquare(e){let t,i,r=e.width,s=e.height;if(r!==s){let a=Math.min(r,s),o=Math.abs(Math.floor((r-s)/2));return r>s?(t=o,i=0):(t=0,i=o),this._regionXYWH([t,i,a,a],e)}return null}_regionPct(e,t){let i=e.split(",").map((r,s)=>{let a=Number(r)/100;return s===0||s===2?Math.round(t.width*a):s===1||s===3?Math.round(t.height*a):null});return this._regionXYWH(i,t)}_regionXYWH(e,t){let i=t.width,r=t.height,[s,a,o,h]=e;return s+o>i&&(o=i-s),a+h>r&&(h=r-a),{x:s,y:a,w:o,h}}normalizeSizeParams(e,t){let i=e,r=t.width,s=t.height;this.validate("size",i);let a=!1;i.charAt(0)==="^"&&(a=!0,i=i.substring(1));let o=null;if(i==="full"||(i==="max"?o=this._sizeMaxScale(t):x.test(i)?o=this._sizePctScale(i.match(x)[0]):i.charAt(0)==="!"&&(i=i.substring(1),o=this._sizeBangScale(i,a,t)),o===1))return null;if(o){let h=Math.round(r*o),l=Math.round(s*o);return this._sizeWH(`${h},${l}`,a,t)}else return this._sizeWH(i,a,t)}_sizeBangScale(e,t,i){let r=i.width,s=i.height,[a,o]=e.split(",").map(l=>l===""?null:Number(l)),h=Math.min(a/r,o/s);if(a>r&&o>s&&!t)throw Error("should not upscale without ^");return h}_sizeMaxScale(e){let t=e.width,i=e.height,r=1;return this.maxArea&&this.maxArea<t*i&&(r=Math.sqrt(this.maxArea/(t*i))),this.maxWidth&&this.maxWidth<t&&(r=Math.min(r,this.maxWidth/t)),this.maxHeight&&this.maxHeight<i&&(r=Math.min(r,this.maxHeight/i)),r}_sizePctScale(e){return Number(e)/100}_sizeWH(e,t,i){let r=i.width,s=i.height,[a,o]=e.split(",").map(h=>h===""?null:Number(h));if(a?o||(o=Math.round(s*a/r)):a=Math.round(r*o/s),(a>r||o>s)&&!t)throw Error("should not upscale without ^");return{width:a,height:o}}normalizeRotationParams(e){this.validate("rotation",e);let t=!1;if(e==="0")return null;e[0]==="!"&&(t=!0);let i=Number(e.replace(/^!/,""));return{isMirror:t,degree:i}}normalizeQualityParams(e){return this.validate("quality",e),e}normalizeFormatParams(e){return(this.version==="1.0"||this.version==="1.1"||this.version==="2.0"||this.version==="2.1")&&!e?"png":(this.validate("format",e),e)}getContentType(e){return G[e]}generateImageInfoTemp(e,t){let i={},r={};i.info=r;let s=this.version;return s==="1.0"?(r.identifier=e,r.width=t.width,r.height=t.height,r.scale_factors=this.factors(t),r.tile_width=this.tileWidth,r.tile_height=this.tileHeight,r.formats=y.format,r.qualities=y.quality,r.profile=this.uriPattern("compliance"),i.contentType="application/json",i.body=JSON.stringify(r)):(s==="1.1"?(r["@context"]=this.uriPattern("context"),r["@id"]=e,r.width=t.width,r.height=t.height,r.scale_factors=this.factors(t),r.tile_width=this.tileWidth,r.tile_height=this.tileHeight,r.formats=y.format,r.qualities=y.quality,r.profile=this.uriPattern("compliance")):s==="2.0"||s==="2.1"?(r["@context"]=this.uriPattern("context"),r["@id"]=e,r.protocol="http://iiif.io/api/image",r.width=t.width,r.height=t.height,this.level==="0"?r.sizes=this.sizes(t):r.tiles=[{scaleFactors:this.factors(t),width:this.tileWidth,height:this.tileHeight}],r.profile=[this.uriPattern("compliance")]):s==="3.0"&&(r["@context"]=[this.uriPattern("context")],r.id=e,r.type="ImageService3",r.protocol="http://iiif.io/api/image",r.width=t.width,r.height=t.height,this.level==="0"?r.sizes=this.sizes(t):r.tiles=[{scaleFactors:this.factors(t),width:this.tileWidth,height:this.tileHeight}],r.profile=this.uriPattern("compliance")),i.contentType="application/ld+json"),i}factors(e){let t=1,i=[1],r=e.width,s=e.height;for(;!(this.tileWidth*t>r&&this.tileHeight*t>s);)t*=2,i.push(t);return i}uriPattern(e){let t="",i="";return this.version==="1.0"?t=`http://library.stanford.edu/iiif/image-api/compliance.html#level${this.level}`:this.version==="1.1"?(t=`http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level${this.level}`,i="http://library.stanford.edu/iiif/image-api/1.1/context.json"):this.version==="2.0"||this.version==="2.1"?(t=`http://iiif.io/api/image/2/level${this.level}.json`,i="http://iiif.io/api/image/2/context.json"):this.version==="3.0"&&(t=`level${this.level}`,i="http://iiif.io/api/image/3/context.json"),e==="compliance"?t:e==="context"?i:""}sizes(e){return[{width:e.width,height:e.height}]}}});var Mi={};ci(Mi,{default:()=>I});module.exports=mi(Mi);var z=Q(require("sharp")),ii=Q(K()),bi=1e8,V=1e4,Z=1e4,Pi=512,xi=512,Ii=256,Hi={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"]},I=class extends ii.default{constructor(i,r,s=bi,a=V,o=Z,h=Pi,l=xi){super(i,r,s,a,o,h,l)}regionImpl(i){i&&(this.pipeline=this.pipeline.extract({left:i.x,top:i.y,width:i.w,height:i.h}))}sizeImpl(i){i&&(this.pipeline=this.pipeline.resize({...i,fit:"fill"}))}rotationImpl(i){i&&(i.isMirror&&(this.pipeline=this.pipeline.flop()),this.pipeline=this.pipeline.rotate(i.degree))}qualityImpl(i){i==="native"||i==="default"||(i==="color"?this.pipeline=this.pipeline.toColorspace("srgb"):i==="gray"||i==="grey"?this.pipeline=this.pipeline.grayscale():i==="bitonal"&&(this.pipeline=this.pipeline.threshold()))}formatImpl(i){i=i==="tif"?"tiff":i,this.pipeline=this.pipeline.toFormat(i)}iiifTransform(i,r){let s=(0,z.default)(),a=i.split("/"),o=a.pop(),h=o.split(".")[0],l=o.split(".")[1],H=a.pop(),M=a.pop(),W=a.pop();this.pipeline=s;let p=super.normalizeRegionParams(W,r);this.regionImpl(p);let g=super.normalizeSizeParams(M,{width:p?p.w:r.width,height:p?p.h:r.height});this.sizeImpl(g);let w=super.normalizeRotationParams(H);this.rotationImpl(w);let c=super.normalizeQualityParams(h);this.qualityImpl(c);let d=super.normalizeFormatParams(l);return this.formatImpl(d),this.pipeline}async generateIiifImage(i,r){let s=(0,z.default)(r,{limitInputPixels:!1,sequentialRead:!0}),a=i.split("/"),o=a.pop(),h=o.split(".")[0],l=o.split(".")[1],H=a.pop(),M=a.pop(),W=a.pop(),p=await s.metadata(),g={width:p.width,height:p.height},w={};this.pipeline=s;let c=super.normalizeRegionParams(W,g);this.regionImpl(c);let d=super.normalizeSizeParams(M,{width:c?c.w:g.width,height:c?c.h:g.height});this.sizeImpl(d);let{x:ti,y:ei,w:B,h:_}=c||{x:0,y:0,w:g.width,h:g.height},{width:j,height:S}=d||{width:g.width,height:g.height};if(B*_>j*S*Ii&&j<V&&S<Z&&p.pages&&p.pages>1){console.log("thumbnail");let u=Math.max(j/B,S/_),[R,T,v,$]=[Math.round(ti*u),Math.round(ei*u),Math.round(B*u),Math.round(_*u)],[E,N]=[Math.round(g.width*u),Math.round(g.height*u)],b=p.pages-1,O=await(0,z.default)(r,{limitInputPixels:!1,page:b,sequentialRead:!0}).metadata(),D=O.width,k=O.height;for(;k<N||D<E;)k*=2,D*=2,b--;console.log("selectedPage: "+b);let A={width:E,height:N,fastShrinkOnLoad:!1},ai=await(0,z.default)(r,{limitInputPixels:!1,page:b,sequentialRead:!0}).resize(A).toBuffer();this.pipeline=(0,z.default)(ai);let f=await this.pipeline.metadata();T+$>f.height&&($=f.height-T,console.log("adjested sh: "+$)),R+v>f.width&&(v=f.width-R,console.log("adjusted sw: "+v));let X={x:R,y:T,w:v,h:$};this.regionImpl(X),this.sizeImpl(d),console.log(f.width,f.height,A.width,A.height,X,d)}let ri=super.normalizeRotationParams(H);this.rotationImpl(ri);let si=super.normalizeQualityParams(h);this.qualityImpl(si);let L=super.normalizeFormatParams(l);return this.formatImpl(L),w.body=this.pipeline,w.contentType=super.getContentType(L),w}generateImageInfo(i,r){let s=this.version,a=this.level,o=super.generateImageInfoTemp(i,r),h=o.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=Hi[Number(s)],h.profile.push(l)}return s==="3.0"&&(h.extraFormats=["webp"],h.preferredFormats=["webp"]),o}};
|
|
1
|
+
"use strict";var at=Object.create;var P=Object.defineProperty;var ot=Object.getOwnPropertyDescriptor;var ht=Object.getOwnPropertyNames;var lt=Object.getPrototypeOf,pt=Object.prototype.hasOwnProperty;var gt=(t,i)=>()=>(i||t((i={exports:{}}).exports,i),i.exports),mt=(t,i)=>{for(var e in i)P(t,e,{get:i[e],enumerable:!0})},U=(t,i,e,r)=>{if(i&&typeof i=="object"||typeof i=="function")for(let s of ht(i))!pt.call(t,s)&&s!==e&&P(t,s,{get:()=>i[s],enumerable:!(r=ot(i,s))||r.enumerable});return t};var Y=(t,i,e)=>(e=t!=null?at(lt(t)):{},U(i||!t||!t.__esModule?P(e,"default",{value:t,enumerable:!0}):e,t)),ct=t=>U(P({},"__esModule",{value:!0}),t);var V=gt((Bt,K)=>{"use strict";var E=Object.defineProperty,dt=Object.getOwnPropertyDescriptor,ut=Object.getOwnPropertyNames,ft=Object.prototype.hasOwnProperty,yt=(t,i)=>{for(var e in i)E(t,e,{get:i[e],enumerable:!0})},zt=(t,i,e,r)=>{if(i&&typeof i=="object"||typeof i=="function")for(let s of ut(i))!ft.call(t,s)&&s!==e&&E(t,s,{get:()=>i[s],enumerable:!(r=dt(i,s))||r.enumerable});return t},wt=t=>zt(E({},"__esModule",{value:!0}),t),J={};yt(J,{default:()=>$t});K.exports=wt(J);var a="[1-9][0-9]*",G="[0-9]*",c="(?=.*[1-9])\\d+(\\.\\d+)?",L="\\d+(\\.\\d+)?",I=(t=>(t.jpg="image/jpeg",t.jpeg="image/jpeg",t.png="image/png",t.webp="image/webp",t.tif="image/tiff",t.tiff="image/tiff",t.gif="image/gif",t.jp2="image/jp2",t.pdf="application/pdf",t))(I||{}),y={version:["1.0","1.1","2.0","2.1","3.0"],level:["0","1","2"],region:["full","square",`${G},${G},${a},${a}`,`pct:${L},${L},${c},${c}`],rotation:`!?${L}`,quality:["color","gray","bitonal","default","native","grey"],format:["jpg","png","webp","tif","gif","jp2","pdf"],size:[""]},vt={1:["full",`${a},`,`,${a}`,`pct:${c}`,`${a},${a}`,`!${a},${a}`],1.1:["full",`${a},`,`,${a}`,`pct:${c}`,`${a},${a}`,`!${a},${a}`],2:["full",`${a},`,`,${a}`,`pct:${c}`,`${a},${a}`,`!${a},${a}`],2.1:["full","max",`${a},`,`,${a}`,`pct:${c}`,`${a},${a}`,`!${a},${a}`],3:["max",`${a},`,`,${a}`,`pct:${c}`,`${a},${a}`,`!${a},${a}`,"\\^max",`\\^${a},`,`\\^,${a}`,`\\^pct:${c}`,`\\^${a},${a}`,`\\^!${a},${a}`]},x=/^pct:([\d,]+)/,$t=class{constructor(t,i,e,r,s,o,n){this.version=t,this.level=i,this.maxArea=e,this.maxWidth=r,this.maxHeight=s,this.tileWidth=o,this.tileHeight=n,this.validate("version",t),this.validate("level",i),y.size=vt[Number(t)]}validator(t){var i=y[t];return i instanceof Array&&(i=i.join("|")),new RegExp("^("+i+")$")}validate(t,i){if(!this.validator(t).test(i))throw Error(`invalid IIIF url ${t}: ${i}`);return!0}normalizeRegionParams(t,i){if(this.validate("region",t),t==="full")return null;if(t==="square")return this._regionSquare(i);if(x.test(t))return this._regionPct(t.match(x)[0],i);{let e=t.split(",").map(r=>Number(r));return this._regionXYWH(e,i)}}_regionSquare(t){let i,e,r=t.width,s=t.height;if(r!==s){let o=Math.min(r,s),n=Math.abs(Math.floor((r-s)/2));return r>s?(i=n,e=0):(i=0,e=n),this._regionXYWH([i,e,o,o],t)}return null}_regionPct(t,i){let e=t.split(",").map((r,s)=>{let o=Number(r)/100;return s===0||s===2?Math.round(i.width*o):s===1||s===3?Math.round(i.height*o):null});return this._regionXYWH(e,i)}_regionXYWH(t,i){let e=i.width,r=i.height,[s,o,n,h]=t;return s+n>e&&(n=e-s),o+h>r&&(h=r-o),{x:s,y:o,w:n,h}}normalizeSizeParams(t,i){let e=t,r=i.width,s=i.height;this.validate("size",e);let o=!1;e.charAt(0)==="^"&&(o=!0,e=e.substring(1));let n=null;if(e==="full"||(e==="max"?n=this._sizeMaxScale(i):x.test(e)?n=this._sizePctScale(e.match(x)[0]):e.charAt(0)==="!"&&(e=e.substring(1),n=this._sizeBangScale(e,o,i)),n===1))return null;if(n){let h=Math.round(r*n),l=Math.round(s*n);return this._sizeWH(`${h},${l}`,o,i)}else return this._sizeWH(e,o,i)}_sizeBangScale(t,i,e){let r=e.width,s=e.height,[o,n]=t.split(",").map(l=>l===""?null:Number(l)),h=Math.min(o/r,n/s);if(o>r&&n>s&&!i)throw Error("should not upscale without ^");return h}_sizeMaxScale(t){let i=t.width,e=t.height,r=1;return this.maxArea&&this.maxArea<i*e&&(r=Math.sqrt(this.maxArea/(i*e))),this.maxWidth&&this.maxWidth<i&&(r=Math.min(r,this.maxWidth/i)),this.maxHeight&&this.maxHeight<e&&(r=Math.min(r,this.maxHeight/e)),r}_sizePctScale(t){return Number(t)/100}_sizeWH(t,i,e){let r=e.width,s=e.height,[o,n]=t.split(",").map(h=>h===""?null:Number(h));if(o?n||(n=Math.round(s*o/r)):o=Math.round(r*n/s),(o>r||n>s)&&!i)throw Error("should not upscale without ^");return{width:o,height:n}}normalizeRotationParams(t){this.validate("rotation",t);let i=!1;if(t==="0")return null;t[0]==="!"&&(i=!0);let e=Number(t.replace(/^!/,""));return{isMirror:i,degree:e}}normalizeQualityParams(t){return this.validate("quality",t),t==="native"||t==="default"?null:t}normalizeFormatParams(t,i){if((this.version==="1.0"||this.version==="1.1"||this.version==="2.0"||this.version==="2.1")&&!t)return"png";this.validate("format",t);let e=I[t],r=I[i];return e===r?null:t}getContentType(t){return I[t]}generateImageInfoTemp(t,i){let e={},r={};e.info=r;let s=this.version;return s==="1.0"?(r.identifier=t,r.width=i.width,r.height=i.height,r.scale_factors=this.factors(i),r.tile_width=this.tileWidth,r.tile_height=this.tileHeight,r.formats=y.format,r.qualities=y.quality,r.profile=this.uriPattern("compliance"),e.contentType="application/json",e.body=JSON.stringify(r)):(s==="1.1"?(r["@context"]=this.uriPattern("context"),r["@id"]=t,r.width=i.width,r.height=i.height,r.scale_factors=this.factors(i),r.tile_width=this.tileWidth,r.tile_height=this.tileHeight,r.formats=y.format,r.qualities=y.quality,r.profile=this.uriPattern("compliance")):s==="2.0"||s==="2.1"?(r["@context"]=this.uriPattern("context"),r["@id"]=t,r.protocol="http://iiif.io/api/image",r.width=i.width,r.height=i.height,this.level==="0"?r.sizes=this.sizes(i):r.tiles=[{scaleFactors:this.factors(i),width:this.tileWidth,height:this.tileHeight}],r.profile=[this.uriPattern("compliance")]):s==="3.0"&&(r["@context"]=[this.uriPattern("context")],r.id=t,r.type="ImageService3",r.protocol="http://iiif.io/api/image",r.width=i.width,r.height=i.height,this.level==="0"?r.sizes=this.sizes(i):r.tiles=[{scaleFactors:this.factors(i),width:this.tileWidth,height:this.tileHeight}],r.profile=this.uriPattern("compliance")),e.contentType="application/ld+json"),e}factors(t){let i=1,e=[1],r=t.width,s=t.height;for(;!(this.tileWidth*i>r&&this.tileHeight*i>s);)i*=2,e.push(i);return e}uriPattern(t){let i="",e="";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}`,e="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`,e="http://iiif.io/api/image/2/context.json"):this.version==="3.0"&&(i=`level${this.level}`,e="http://iiif.io/api/image/3/context.json"),t==="compliance"?i:t==="context"?e:""}sizes(t){return[{width:t.width,height:t.height}]}}});var Mt={};mt(Mt,{default:()=>H});module.exports=ct(Mt);var z=Y(require("sharp")),it=Y(V()),bt=1e8,Z=1e4,tt=1e4,Pt=512,xt=512,It=256,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"]},H=class extends it.default{constructor(e,r,s=bt,o=Z,n=tt,h=Pt,l=xt){super(e,r,s,o,n,h,l)}regionImpl(e){e&&(this.pipeline=this.pipeline.extract({left:e.x,top:e.y,width:e.w,height:e.h}))}sizeImpl(e){e&&(this.pipeline=this.pipeline.resize({...e,fit:"fill"}))}rotationImpl(e){e&&(e.isMirror&&(this.pipeline=this.pipeline.flop()),this.pipeline=this.pipeline.rotate(e.degree))}qualityImpl(e){e&&(e==="color"?this.pipeline=this.pipeline.toColorspace("srgb"):e==="gray"||e==="grey"?this.pipeline=this.pipeline.grayscale():e==="bitonal"&&(this.pipeline=this.pipeline.threshold()))}formatImpl(e){e&&(this.pipeline=this.pipeline.toFormat(e))}iiifTransform(e,r){let s={width:r.width,height:r.height},o=(0,z.default)(),n=e.split("/"),h=n.pop(),l=h.split(".")[0],M=h.split(".")[1],W=n.pop(),B=n.pop(),m=n.pop();this.pipeline=o;let p=super.normalizeRegionParams(m,s);this.regionImpl(p);let w=super.normalizeSizeParams(B,{width:p?p.w:s.width,height:p?p.h:s.height});this.sizeImpl(w);let g=super.normalizeRotationParams(W);this.rotationImpl(g);let d=super.normalizeQualityParams(l);this.qualityImpl(d);let _=super.normalizeFormatParams(M,r.format);return this.formatImpl(_),this.pipeline}async generateIiifImage(e,r){let s=(0,z.default)(r,{limitInputPixels:!1,sequentialRead:!0}),o=e.split("/"),n=o.pop(),h=n.split(".")[0],l=n.split(".")[1],M=o.pop(),W=o.pop(),B=o.pop(),m=await s.metadata(),p={width:m.width,height:m.height},w={};this.pipeline=s;let g=super.normalizeRegionParams(B,p);this.regionImpl(g);let d=super.normalizeSizeParams(W,{width:g?g.w:p.width,height:g?g.h:p.height});this.sizeImpl(d);let{x:_,y:et,w:j,h:q}=g||{x:0,y:0,w:p.width,h:p.height},{width:S,height:R}=d||{width:p.width,height:p.height};if(j*q>S*R*It&&S<Z&&R<tt&&m.pages&&m.pages>1){console.log("thumbnail");let u=Math.max(S/j,R/q),[T,A,v,$]=[Math.round(_*u),Math.round(et*u),Math.round(j*u),Math.round(q*u)],[O,D]=[Math.round(p.width*u),Math.round(p.height*u)],b=m.pages-1,k=await(0,z.default)(r,{limitInputPixels:!1,page:b,sequentialRead:!0}).metadata(),X=k.width,C=k.height;for(;C<D||X<O;)C*=2,X*=2,b--;console.log("selectedPage: "+b);let F={width:O,height:D,fastShrinkOnLoad:!1},nt=await(0,z.default)(r,{limitInputPixels:!1,page:b,sequentialRead:!0}).resize(F).toBuffer();this.pipeline=(0,z.default)(nt);let f=await this.pipeline.metadata();A+$>f.height&&($=f.height-A,console.log("adjested sh: "+$)),T+v>f.width&&(v=f.width-T,console.log("adjusted sw: "+v));let Q={x:T,y:A,w:v,h:$};this.regionImpl(Q),this.sizeImpl(d),console.log(f.width,f.height,F.width,F.height,Q,d)}let rt=super.normalizeRotationParams(M);this.rotationImpl(rt);let st=super.normalizeQualityParams(h);this.qualityImpl(st);let N=super.normalizeFormatParams(l,m.format);return this.formatImpl(N),w.body=this.pipeline,w.contentType=super.getContentType(N),w}generateImageInfo(e,r){let s=this.version,o=this.level,n=super.generateImageInfoTemp(e,r),h=n.info;if((s==="2.0"||s==="2.1")&&(h.profile=[super.uriPattern("compliance")],o==="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}};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@etu-wiki/sharp-iiif-shims",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.41",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
"@babel/preset-env": "^7.21.4",
|
|
22
22
|
"@babel/preset-typescript": "^7.21.4",
|
|
23
23
|
"@types/jest": "^29.5.1",
|
|
24
|
+
"@types/mime-types": "^2.1.1",
|
|
24
25
|
"@types/node": "^18.16.2",
|
|
25
26
|
"babel-jest": "^29.5.0",
|
|
26
27
|
"esbuild": "^0.17.18",
|
|
@@ -28,7 +29,8 @@
|
|
|
28
29
|
"typescript": "^5.0.4"
|
|
29
30
|
},
|
|
30
31
|
"dependencies": {
|
|
31
|
-
"@etu-wiki/iiif-image-shims": "^0.0.
|
|
32
|
+
"@etu-wiki/iiif-image-shims": "^0.0.9",
|
|
33
|
+
"mime-types": "^2.1.35",
|
|
32
34
|
"sharp": "^0.32.0"
|
|
33
35
|
},
|
|
34
36
|
"files": [
|