8 Commits

Author SHA1 Message Date
2b82a4b74a 1.0.14 2023-12-03 19:04:37 +01:00
499b7e5f42 fix(core): update 2023-12-03 19:04:36 +01:00
6b1948d834 1.0.13 2023-12-03 18:57:45 +01:00
7b340ea783 fix(core): update 2023-12-03 18:57:44 +01:00
063905bfaa 1.0.12 2023-12-03 18:41:44 +01:00
f1ad45289a fix(core): update 2023-12-03 18:41:43 +01:00
193e174fd7 1.0.11 2023-12-03 18:10:36 +01:00
703d21c426 fix(core): update 2023-12-03 18:10:35 +01:00
3 changed files with 23 additions and 14 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "@push.rocks/smartjimp", "name": "@push.rocks/smartjimp",
"version": "1.0.10", "version": "1.0.14",
"private": false, "private": false,
"description": "a tool fr working with images in TypeScript", "description": "a tool fr working with images in TypeScript",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@push.rocks/smartjimp', name: '@push.rocks/smartjimp',
version: '1.0.10', version: '1.0.14',
description: 'a tool fr working with images in TypeScript' description: 'a tool fr working with images in TypeScript'
} }

View File

@ -1,6 +1,7 @@
import * as plugins from './smartjimp.plugins.js'; import * as plugins from './smartjimp.plugins.js';
export interface IDimensions { export interface IAssetVariation {
format?: 'avif' | 'webp' | 'png';
width?: number; width?: number;
height?: number; height?: number;
} }
@ -18,28 +19,36 @@ export class SmartJimp {
private getCacheKey( private getCacheKey(
sourceTypeArg: 'streamfile' | 'smartfile', sourceTypeArg: 'streamfile' | 'smartfile',
sourceIdArg: string, sourceIdArg: string,
wantedDimensionsArg?: IDimensions assetVariationArg?: IAssetVariation
) { ) {
return `${sourceTypeArg}_${sourceIdArg}_${ return `${sourceTypeArg}_${sourceIdArg}_${
wantedDimensionsArg assetVariationArg
? `${wantedDimensionsArg.width || 'auto' }x${wantedDimensionsArg.height || 'auto'}` ? `${assetVariationArg.width || 'auto' }x${assetVariationArg.height || 'auto'}`
: 'original' : 'original'
}`; }`;
} }
private async computeAssetVariation(assetBuffer: Buffer, wantedDimensions?: IDimensions) { public async computeAssetVariation(assetBufferArg: Buffer, assetVariationArg?: IAssetVariation) {
if (!wantedDimensions) { if (!assetVariationArg) {
return assetBuffer; return assetBufferArg;
} }
let sharpImage = plugins.sharp(assetBuffer); let sharpImage = plugins.sharp(assetBufferArg);
sharpImage = sharpImage.resize(wantedDimensions.width, wantedDimensions.height); sharpImage = sharpImage.resize(assetVariationArg.width, assetVariationArg.height);
const result = await sharpImage.resize(wantedDimensions.width, wantedDimensions.height).avif().toBuffer(); const resultResize = sharpImage.resize(assetVariationArg.width, assetVariationArg.height);
return result; switch (assetVariationArg.format) {
case 'avif':
sharpImage = resultResize.avif();
case 'webp':
sharpImage = resultResize.webp();
case 'png':
sharpImage = resultResize.png();
}
return sharpImage.toBuffer();
} }
public async getFromSmartfile( public async getFromSmartfile(
smartfileArg: plugins.smartfile.SmartFile, smartfileArg: plugins.smartfile.SmartFile,
wantedDimensionsArg?: IDimensions wantedDimensionsArg?: IAssetVariation
) { ) {
const cacheKey = this.getCacheKey('smartfile', await smartfileArg.getHash(), wantedDimensionsArg); const cacheKey = this.getCacheKey('smartfile', await smartfileArg.getHash(), wantedDimensionsArg);
const existingCacheEntry = await this.levelCache.retrieveCacheEntryByKey(cacheKey); const existingCacheEntry = await this.levelCache.retrieveCacheEntryByKey(cacheKey);