@uploadista/flow-images-photon 0.1.3 → 0.2.0

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/node.cjs CHANGED
@@ -1 +1 @@
1
- const e=require(`./common-ChdjHan4.cjs`);let t=require(`@cf-wasm/photon/node`),n=require(`@uploadista/core/errors`),r=require(`@uploadista/core/flow`),i=require(`@uploadista/observability`),a=require(`effect`);const o=e=>{let n=e.toRgb();return new t.Rgba(n.r,n.g,n.b,n.a)},s=(n,r,i,a)=>{let s=n.get_width(),c=n.get_height();if(!r&&!i)throw Error(`At least one of width or height is required`);if(r&&!i?i=Math.floor(r/s*c):i&&!r&&(r=Math.floor(i/c*s)),!r||!i)throw Error(`Invalid width or height`);if(r===s&&i===c)return n;let l=a?.fit||`cover`,u=e.t(l,s,c,r,i);n=(0,t.resize)(n,u.width,u.height,1);let[d,f]=[n.get_width(),n.get_height()];if(l===`contain`&&a?.fit_cover_letterbox_color){let e=Math.floor((r-d)/2),s=Math.floor((i-f)/2);s>0&&(n=(0,t.padding_top)(n,s,o(a.fit_cover_letterbox_color)),n=(0,t.padding_bottom)(n,s,o(a.fit_cover_letterbox_color))),e>0&&(n=(0,t.padding_left)(n,e,o(a.fit_cover_letterbox_color)),n=(0,t.padding_right)(n,e,o(a.fit_cover_letterbox_color)))}else if(l===`cover`){let e=Math.floor(d-r)/2,a=Math.floor(f-i)/2;n=(0,t.crop)(n,e,a,r+e,i+a)}return n},c=(e,t,n)=>{let r;switch(t){case`webp`:r=e.get_bytes_webp();break;case`jpeg`:r=e.get_bytes_jpeg(n?.jpeg_quality||100);break;case`png`:r=e.get_bytes();break;default:r=e.get_bytes_jpeg(n?.jpeg_quality||100)}return r},l=a.Layer.succeed(r.ImagePlugin,r.ImagePlugin.of({optimize:(e,{quality:n})=>{let r=t.PhotonImage.new_from_byteslice(e),o=r.get_bytes_jpeg(n);return r.free(),a.Effect.succeed(o).pipe((0,i.withOperationSpan)(`image`,`optimize`,{"image.quality":n,"image.input_size":e.byteLength}))},resize:(e,{width:n,height:r,fit:o})=>{if(!n&&!r)throw Error(`Either width or height must be specified for resize`);let c=t.PhotonImage.new_from_byteslice(e),l=s(c,n??c.get_width(),r??c.get_height(),{fit:o}),u=l.get_bytes_webp();return c.free(),l.free(),a.Effect.succeed(u).pipe((0,i.withOperationSpan)(`image`,`resize`,{"image.width":n,"image.height":r,"image.fit":o,"image.input_size":e.byteLength}))},transform:(e,r)=>a.Effect.gen(function*(){if([`watermark`,`logo`,`text`].includes(r.type))return yield*a.Effect.fail(n.UploadistaError.fromCode(`UNKNOWN_ERROR`,{body:`Photon plugin does not support '${r.type}'. Use sharp plugin or remove this transformation.`}));let i=t.PhotonImage.new_from_byteslice(e);try{switch(r.type){case`resize`:i=s(i,r.width,r.height,{fit:r.fit});break;case`blur`:{let e=Math.round(r.sigma);(0,t.gaussian_blur)(i,e);break}case`rotate`:return yield*a.Effect.fail(n.UploadistaError.fromCode(`UNKNOWN_ERROR`,{body:`Rotate transformation is not fully supported in photon plugin. Use sharp plugin instead.`}));case`flip`:r.direction===`horizontal`?(0,t.fliph)(i):(0,t.flipv)(i);break;case`grayscale`:(0,t.grayscale)(i);break;case`sepia`:(0,t.sepia)(i);break;case`brightness`:{let e=Math.round(r.value*2.55);(0,t.adjust_brightness)(i,e);break}case`contrast`:{let e=r.value;(0,t.adjust_contrast)(i,e);break}case`sharpen`:(0,t.sharpen)(i);break;default:return yield*a.Effect.fail(n.UploadistaError.fromCode(`UNKNOWN_ERROR`,{body:`Unknown transformation type: ${r.type}`}))}return i.get_bytes_webp()}finally{i.free()}}).pipe((0,i.withOperationSpan)(`image`,`transform`,{"image.transformation_type":r.type,"image.input_size":e.byteLength}))}));exports.autoResize=s,exports.imagePluginNode=l,exports.imageToFormat=c,exports.tinyColorToPhotonRGBA=o;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./common-ChdjHan4.cjs`);let t=require(`@cf-wasm/photon/node`),n=require(`@uploadista/core/errors`),r=require(`@uploadista/core/flow`),i=require(`@uploadista/observability`),a=require(`effect`);const o=e=>{let n=e.toRgb();return new t.Rgba(n.r,n.g,n.b,n.a)},s=(n,r,i,a)=>{let s=n.get_width(),c=n.get_height();if(!r&&!i)throw Error(`At least one of width or height is required`);if(r&&!i?i=Math.floor(r/s*c):i&&!r&&(r=Math.floor(i/c*s)),!r||!i)throw Error(`Invalid width or height`);if(r===s&&i===c)return n;let l=a?.fit||`cover`,u=e.t(l,s,c,r,i);n=(0,t.resize)(n,u.width,u.height,1);let[d,f]=[n.get_width(),n.get_height()];if(l===`contain`&&a?.fit_cover_letterbox_color){let e=Math.floor((r-d)/2),s=Math.floor((i-f)/2);s>0&&(n=(0,t.padding_top)(n,s,o(a.fit_cover_letterbox_color)),n=(0,t.padding_bottom)(n,s,o(a.fit_cover_letterbox_color))),e>0&&(n=(0,t.padding_left)(n,e,o(a.fit_cover_letterbox_color)),n=(0,t.padding_right)(n,e,o(a.fit_cover_letterbox_color)))}else if(l===`cover`){let e=Math.floor(d-r)/2,a=Math.floor(f-i)/2;n=(0,t.crop)(n,e,a,r+e,i+a)}return n},c=(e,t,n)=>{let r;switch(t){case`webp`:r=e.get_bytes_webp();break;case`jpeg`:r=e.get_bytes_jpeg(n?.jpeg_quality||100);break;case`png`:r=e.get_bytes();break;default:r=e.get_bytes_jpeg(n?.jpeg_quality||100)}return r},l=a.Layer.succeed(r.ImagePlugin,r.ImagePlugin.of({optimize:(e,{quality:n})=>{let r=t.PhotonImage.new_from_byteslice(e),o=r.get_bytes_jpeg(n);return r.free(),a.Effect.succeed(o).pipe((0,i.withOperationSpan)(`image`,`optimize`,{"image.quality":n,"image.input_size":e.byteLength}))},resize:(e,{width:n,height:r,fit:o})=>{if(!n&&!r)throw Error(`Either width or height must be specified for resize`);let c=t.PhotonImage.new_from_byteslice(e),l=s(c,n??c.get_width(),r??c.get_height(),{fit:o}),u=l.get_bytes_webp();return c.free(),l.free(),a.Effect.succeed(u).pipe((0,i.withOperationSpan)(`image`,`resize`,{"image.width":n,"image.height":r,"image.fit":o,"image.input_size":e.byteLength}))},transform:(e,r)=>a.Effect.gen(function*(){if([`watermark`,`logo`,`text`].includes(r.type))return yield*a.Effect.fail(n.UploadistaError.fromCode(`UNKNOWN_ERROR`,{body:`Photon plugin does not support '${r.type}'. Use sharp plugin or remove this transformation.`}));let i=t.PhotonImage.new_from_byteslice(e);try{switch(r.type){case`resize`:i=s(i,r.width,r.height,{fit:r.fit});break;case`blur`:{let e=Math.round(r.sigma);(0,t.gaussian_blur)(i,e);break}case`rotate`:return yield*a.Effect.fail(n.UploadistaError.fromCode(`UNKNOWN_ERROR`,{body:`Rotate transformation is not fully supported in photon plugin. Use sharp plugin instead.`}));case`flip`:r.direction===`horizontal`?(0,t.fliph)(i):(0,t.flipv)(i);break;case`grayscale`:(0,t.grayscale)(i);break;case`sepia`:(0,t.sepia)(i);break;case`brightness`:{let e=Math.round(r.value*2.55);(0,t.adjust_brightness)(i,e);break}case`contrast`:{let e=r.value;(0,t.adjust_contrast)(i,e);break}case`sharpen`:(0,t.sharpen)(i);break;default:return yield*a.Effect.fail(n.UploadistaError.fromCode(`UNKNOWN_ERROR`,{body:`Unknown transformation type: ${r.type}`}))}return i.get_bytes_webp()}finally{i.free()}}).pipe((0,i.withOperationSpan)(`image`,`transform`,{"image.transformation_type":r.type,"image.input_size":e.byteLength}))}));exports.autoResize=s,exports.imagePluginNode=l,exports.imageToFormat=c,exports.tinyColorToPhotonRGBA=o;
@@ -1 +1 @@
1
- const e=require(`./common-ChdjHan4.cjs`);let t=require(`@uploadista/core/errors`),n=require(`@uploadista/core/flow`),r=require(`effect`),i=require(`@cf-wasm/photon`);const a=e=>{let t=e.toRgb();return new i.Rgba(t.r,t.g,t.b,t.a)},o=(t,n,r,o)=>{let s=t.get_width(),c=t.get_height();if(!n&&!r)throw Error(`At least one of width or height is required`);if(n&&!r?r=Math.floor(n/s*c):r&&!n&&(n=Math.floor(r/c*s)),!n||!r)throw Error(`Invalid width or height`);if(n===s&&r===c)return t;let l=o?.fit||`cover`,u=e.t(l,s,c,n,r);t=(0,i.resize)(t,u.width,u.height,1);let[d,f]=[t.get_width(),t.get_height()];if(l===`contain`&&o?.fit_cover_letterbox_color){let e=Math.floor((n-d)/2),s=Math.floor((r-f)/2);s>0&&(t=(0,i.padding_top)(t,s,a(o.fit_cover_letterbox_color)),t=(0,i.padding_bottom)(t,s,a(o.fit_cover_letterbox_color))),e>0&&(t=(0,i.padding_left)(t,e,a(o.fit_cover_letterbox_color)),t=(0,i.padding_right)(t,e,a(o.fit_cover_letterbox_color)))}else if(l===`cover`){let e=Math.floor(d-n)/2,a=Math.floor(f-r)/2;t=(0,i.crop)(t,e,a,n+e,r+a)}return t},s=r.Layer.succeed(n.ImagePlugin,n.ImagePlugin.of({optimize:(e,{quality:t})=>{let n=i.PhotonImage.new_from_byteslice(e),a=n.get_bytes_jpeg(t);return n.free(),r.Effect.succeed(a)},resize:(e,{width:t,height:n,fit:a})=>{if(!t&&!n)throw Error(`Either width or height must be specified for resize`);let s=i.PhotonImage.new_from_byteslice(e),c=o(s,t??s.get_width(),n??s.get_height(),{fit:a}),l=c.get_bytes_webp();return s.free(),c.free(),r.Effect.succeed(l)},transform:(e,n)=>r.Effect.gen(function*(){if([`watermark`,`logo`,`text`].includes(n.type))return yield*r.Effect.fail(t.UploadistaError.fromCode(`UNKNOWN_ERROR`,{body:`Photon plugin does not support '${n.type}'. Use sharp plugin or remove this transformation.`}));let a=i.PhotonImage.new_from_byteslice(e);try{switch(n.type){case`resize`:a=o(a,n.width,n.height,{fit:n.fit});break;case`blur`:{let e=Math.round(n.sigma);(0,i.gaussian_blur)(a,e);break}case`rotate`:return yield*r.Effect.fail(t.UploadistaError.fromCode(`UNKNOWN_ERROR`,{body:`Rotate transformation is not fully supported in photon plugin. Use sharp plugin instead.`}));case`flip`:n.direction===`horizontal`?(0,i.fliph)(a):(0,i.flipv)(a);break;case`grayscale`:(0,i.grayscale)(a);break;case`sepia`:(0,i.sepia)(a);break;case`brightness`:{let e=Math.round(n.value*2.55);(0,i.adjust_brightness)(a,e);break}case`contrast`:{let e=n.value;(0,i.adjust_contrast)(a,e);break}case`sharpen`:(0,i.sharpen)(a);break;default:return yield*r.Effect.fail(t.UploadistaError.fromCode(`UNKNOWN_ERROR`,{body:`Unknown transformation type: ${n.type}`}))}return a.get_bytes_webp()}finally{a.free()}})}));exports.imagePluginServerless=s;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./common-ChdjHan4.cjs`);let t=require(`@uploadista/core/errors`),n=require(`@uploadista/core/flow`),r=require(`effect`),i=require(`@cf-wasm/photon`);const a=e=>{let t=e.toRgb();return new i.Rgba(t.r,t.g,t.b,t.a)},o=(t,n,r,o)=>{let s=t.get_width(),c=t.get_height();if(!n&&!r)throw Error(`At least one of width or height is required`);if(n&&!r?r=Math.floor(n/s*c):r&&!n&&(n=Math.floor(r/c*s)),!n||!r)throw Error(`Invalid width or height`);if(n===s&&r===c)return t;let l=o?.fit||`cover`,u=e.t(l,s,c,n,r);t=(0,i.resize)(t,u.width,u.height,1);let[d,f]=[t.get_width(),t.get_height()];if(l===`contain`&&o?.fit_cover_letterbox_color){let e=Math.floor((n-d)/2),s=Math.floor((r-f)/2);s>0&&(t=(0,i.padding_top)(t,s,a(o.fit_cover_letterbox_color)),t=(0,i.padding_bottom)(t,s,a(o.fit_cover_letterbox_color))),e>0&&(t=(0,i.padding_left)(t,e,a(o.fit_cover_letterbox_color)),t=(0,i.padding_right)(t,e,a(o.fit_cover_letterbox_color)))}else if(l===`cover`){let e=Math.floor(d-n)/2,a=Math.floor(f-r)/2;t=(0,i.crop)(t,e,a,n+e,r+a)}return t},s=r.Layer.succeed(n.ImagePlugin,n.ImagePlugin.of({optimize:(e,{quality:t})=>{let n=i.PhotonImage.new_from_byteslice(e),a=n.get_bytes_jpeg(t);return n.free(),r.Effect.succeed(a)},resize:(e,{width:t,height:n,fit:a})=>{if(!t&&!n)throw Error(`Either width or height must be specified for resize`);let s=i.PhotonImage.new_from_byteslice(e),c=o(s,t??s.get_width(),n??s.get_height(),{fit:a}),l=c.get_bytes_webp();return s.free(),c.free(),r.Effect.succeed(l)},transform:(e,n)=>r.Effect.gen(function*(){if([`watermark`,`logo`,`text`].includes(n.type))return yield*r.Effect.fail(t.UploadistaError.fromCode(`UNKNOWN_ERROR`,{body:`Photon plugin does not support '${n.type}'. Use sharp plugin or remove this transformation.`}));let a=i.PhotonImage.new_from_byteslice(e);try{switch(n.type){case`resize`:a=o(a,n.width,n.height,{fit:n.fit});break;case`blur`:{let e=Math.round(n.sigma);(0,i.gaussian_blur)(a,e);break}case`rotate`:return yield*r.Effect.fail(t.UploadistaError.fromCode(`UNKNOWN_ERROR`,{body:`Rotate transformation is not fully supported in photon plugin. Use sharp plugin instead.`}));case`flip`:n.direction===`horizontal`?(0,i.fliph)(a):(0,i.flipv)(a);break;case`grayscale`:(0,i.grayscale)(a);break;case`sepia`:(0,i.sepia)(a);break;case`brightness`:{let e=Math.round(n.value*2.55);(0,i.adjust_brightness)(a,e);break}case`contrast`:{let e=n.value;(0,i.adjust_contrast)(a,e);break}case`sharpen`:(0,i.sharpen)(a);break;default:return yield*r.Effect.fail(t.UploadistaError.fromCode(`UNKNOWN_ERROR`,{body:`Unknown transformation type: ${n.type}`}))}return a.get_bytes_webp()}finally{a.free()}})}));exports.imagePluginServerless=s;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@uploadista/flow-images-photon",
3
3
  "type": "module",
4
- "version": "0.1.3",
4
+ "version": "0.2.0",
5
5
  "description": "Photon image processing service for Uploadista Flow",
6
6
  "license": "MIT",
7
7
  "author": "Uploadista",
@@ -22,8 +22,8 @@
22
22
  "dependencies": {
23
23
  "@cf-wasm/photon": "0.3.4",
24
24
  "tinycolor2": "1.6.0",
25
- "@uploadista/core": "0.1.3",
26
- "@uploadista/observability": "0.1.3"
25
+ "@uploadista/core": "0.2.0",
26
+ "@uploadista/observability": "0.2.0"
27
27
  },
28
28
  "peerDependencies": {
29
29
  "effect": "^3.0.0",
@@ -33,11 +33,11 @@
33
33
  "@effect/vitest": "0.27.0",
34
34
  "@types/node": "24.10.9",
35
35
  "@types/tinycolor2": "1.4.6",
36
- "effect": "3.19.15",
37
- "tsdown": "0.20.1",
36
+ "effect": "3.19.17",
37
+ "tsdown": "0.20.3",
38
38
  "vitest": "4.0.18",
39
39
  "zod": "4.3.6",
40
- "@uploadista/typescript-config": "0.1.3"
40
+ "@uploadista/typescript-config": "0.2.0"
41
41
  },
42
42
  "scripts": {
43
43
  "build": "tsc --noEmit && tsdown",