6 Commits

Author SHA1 Message Date
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
2d83ebac4d 1.0.10 2023-12-03 16:35:52 +01:00
7454a52d03 fix(core): update 2023-12-03 16:35:51 +01:00
4 changed files with 43 additions and 29 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "@push.rocks/smartjimp", "name": "@push.rocks/smartjimp",
"version": "1.0.9", "version": "1.0.12",
"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",
@ -20,6 +20,11 @@
"@types/node": "^20.10.2" "@types/node": "^20.10.2"
}, },
"dependencies": { "dependencies": {
"@img/sharp-darwin-arm64": "^0.33.0",
"@img/sharp-darwin-x64": "^0.33.0",
"@img/sharp-linux-arm64": "^0.33.0",
"@img/sharp-linux-x64": "^0.33.0",
"@img/sharp-win32-x64": "^0.33.0",
"@push.rocks/levelcache": "^3.0.3", "@push.rocks/levelcache": "^3.0.3",
"@push.rocks/smartfile": "^11.0.4", "@push.rocks/smartfile": "^11.0.4",
"@push.rocks/smarthash": "^3.0.4", "@push.rocks/smarthash": "^3.0.4",

30
pnpm-lock.yaml generated
View File

@ -5,6 +5,21 @@ settings:
excludeLinksFromLockfile: false excludeLinksFromLockfile: false
dependencies: dependencies:
'@img/sharp-darwin-arm64':
specifier: ^0.33.0
version: 0.33.0
'@img/sharp-darwin-x64':
specifier: ^0.33.0
version: 0.33.0
'@img/sharp-linux-arm64':
specifier: ^0.33.0
version: 0.33.0
'@img/sharp-linux-x64':
specifier: ^0.33.0
version: 0.33.0
'@img/sharp-win32-x64':
specifier: ^0.33.0
version: 0.33.0
'@push.rocks/levelcache': '@push.rocks/levelcache':
specifier: ^3.0.3 specifier: ^3.0.3
version: 3.0.6 version: 3.0.6
@ -20,9 +35,6 @@ dependencies:
'@push.rocks/smartrequest': '@push.rocks/smartrequest':
specifier: ^2.0.15 specifier: ^2.0.15
version: 2.0.21 version: 2.0.21
'@types/sharp':
specifier: ^0.32.0
version: 0.32.0
sharp: sharp:
specifier: ^0.33.0 specifier: ^0.33.0
version: 0.33.0 version: 0.33.0
@ -444,7 +456,6 @@ packages:
optionalDependencies: optionalDependencies:
'@img/sharp-libvips-darwin-arm64': 1.0.0 '@img/sharp-libvips-darwin-arm64': 1.0.0
dev: false dev: false
optional: true
/@img/sharp-darwin-x64@0.33.0: /@img/sharp-darwin-x64@0.33.0:
resolution: {integrity: sha512-pu/nvn152F3qbPeUkr+4e9zVvEhD3jhwzF473veQfMPkOYo9aoWXSfdZH/E6F+nYC3qvFjbxbvdDbUtEbghLqw==} resolution: {integrity: sha512-pu/nvn152F3qbPeUkr+4e9zVvEhD3jhwzF473veQfMPkOYo9aoWXSfdZH/E6F+nYC3qvFjbxbvdDbUtEbghLqw==}
@ -455,7 +466,6 @@ packages:
optionalDependencies: optionalDependencies:
'@img/sharp-libvips-darwin-x64': 1.0.0 '@img/sharp-libvips-darwin-x64': 1.0.0
dev: false dev: false
optional: true
/@img/sharp-libvips-darwin-arm64@1.0.0: /@img/sharp-libvips-darwin-arm64@1.0.0:
resolution: {integrity: sha512-VzYd6OwnUR81sInf3alj1wiokY50DjsHz5bvfnsFpxs5tqQxESoHtJO6xyksDs3RIkyhMWq2FufXo6GNSU9BMw==} resolution: {integrity: sha512-VzYd6OwnUR81sInf3alj1wiokY50DjsHz5bvfnsFpxs5tqQxESoHtJO6xyksDs3RIkyhMWq2FufXo6GNSU9BMw==}
@ -538,7 +548,6 @@ packages:
optionalDependencies: optionalDependencies:
'@img/sharp-libvips-linux-arm64': 1.0.0 '@img/sharp-libvips-linux-arm64': 1.0.0
dev: false dev: false
optional: true
/@img/sharp-linux-arm@0.33.0: /@img/sharp-linux-arm@0.33.0:
resolution: {integrity: sha512-4horD3wMFd5a0ddbDY8/dXU9CaOgHjEHALAddXgafoR5oWq5s8X61PDgsSeh4Qupsdo6ycfPPSSNBrfVQnwwrg==} resolution: {integrity: sha512-4horD3wMFd5a0ddbDY8/dXU9CaOgHjEHALAddXgafoR5oWq5s8X61PDgsSeh4Qupsdo6ycfPPSSNBrfVQnwwrg==}
@ -571,7 +580,6 @@ packages:
optionalDependencies: optionalDependencies:
'@img/sharp-libvips-linux-x64': 1.0.0 '@img/sharp-libvips-linux-x64': 1.0.0
dev: false dev: false
optional: true
/@img/sharp-linuxmusl-arm64@0.33.0: /@img/sharp-linuxmusl-arm64@0.33.0:
resolution: {integrity: sha512-1QLbbN0zt+32eVrg7bb1lwtvEaZwlhEsY1OrijroMkwAqlHqFj6R33Y47s2XUv7P6Ie1PwCxK/uFnNqMnkd5kg==} resolution: {integrity: sha512-1QLbbN0zt+32eVrg7bb1lwtvEaZwlhEsY1OrijroMkwAqlHqFj6R33Y47s2XUv7P6Ie1PwCxK/uFnNqMnkd5kg==}
@ -621,7 +629,6 @@ packages:
os: [win32] os: [win32]
requiresBuild: true requiresBuild: true
dev: false dev: false
optional: true
/@isaacs/cliui@8.0.2: /@isaacs/cliui@8.0.2:
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
@ -1842,13 +1849,6 @@ packages:
'@types/node': 20.10.2 '@types/node': 20.10.2
dev: true dev: true
/@types/sharp@0.32.0:
resolution: {integrity: sha512-OOi3kL+FZDnPhVzsfD37J88FNeZh6gQsGcLc95NbeURRGvmSjeXiDcyWzF2o3yh/gQAUn2uhh/e+CPCa5nwAxw==}
deprecated: This is a stub types definition. sharp provides its own type definitions, so you do not need this installed.
dependencies:
sharp: 0.33.0
dev: false
/@types/shortid@0.0.29: /@types/shortid@0.0.29:
resolution: {integrity: sha1-gJPuBBam4r8qpjOBCRFLP7/6Dps=} resolution: {integrity: sha1-gJPuBBam4r8qpjOBCRFLP7/6Dps=}
dev: true dev: true

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@push.rocks/smartjimp', name: '@push.rocks/smartjimp',
version: '1.0.9', version: '1.0.12',
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);