fix(build): modernize project configuration and tighten smartjimp TypeScript compatibility

This commit is contained in:
2026-05-01 16:15:48 +00:00
parent 2eb887dce7
commit 42a6c57a68
12 changed files with 3248 additions and 4953 deletions
+3 -3
View File
@@ -1,8 +1,8 @@
/**
* autocreated commitinfo by @pushrocks/commitinfo
* autocreated commitinfo by @push.rocks/commitinfo
*/
export const commitinfo = {
name: '@push.rocks/smartjimp',
version: '1.0.18',
description: 'a tool fr working with images in TypeScript'
version: '1.2.1',
description: 'A TypeScript library for image processing combining both sharp and jimp libraries.'
}
+31 -22
View File
@@ -33,7 +33,7 @@ export class SmartJimp {
sourceTypeArg: 'streamfile' | 'smartfile',
sourceIdArg: string,
assetVariationArg?: IAssetVariation
) {
): string {
return `${sourceTypeArg}_${sourceIdArg}_${
assetVariationArg
? `${assetVariationArg.width || 'auto'}x${assetVariationArg.height || 'auto'}`
@@ -41,7 +41,7 @@ export class SmartJimp {
}`;
}
sharpMod: typeof pluginsTyped.sharpType.default;
private sharpMod?: typeof pluginsTyped.sharpType.default;
public async getSharpMod(): Promise<
typeof pluginsTyped.sharpType.default
> {
@@ -51,7 +51,7 @@ export class SmartJimp {
return this.sharpMod;
}
jimpMod: typeof pluginsTyped.jimpType;
private jimpMod?: typeof pluginsTyped.jimpType;
public async getJimpMod(): Promise<typeof pluginsTyped.jimpType> {
if (!this.jimpMod) {
this.jimpMod = await import('jimp');
@@ -59,12 +59,16 @@ export class SmartJimp {
return this.jimpMod;
}
public async computeAssetVariation(assetBufferArg: Buffer, assetVariationArg: IAssetVariation) {
public async computeAssetVariation(
assetBufferArg: Buffer,
assetVariationArg?: IAssetVariation
): Promise<Buffer> {
if (!assetVariationArg) {
return assetBufferArg;
}
if (this.options.mode === 'sharp') {
const sharp = await this.getSharpMod();
if (!assetVariationArg) {
return assetBufferArg;
}
let sharpImage = sharp(assetBufferArg);
sharpImage = sharpImage.resize(assetVariationArg.width, assetVariationArg.height);
const resultResize = sharpImage.resize(assetVariationArg.width, assetVariationArg.height);
@@ -73,29 +77,29 @@ export class SmartJimp {
}
switch (assetVariationArg.format) {
case 'avif':
const avifOptions: any = {};
const avifOptions: pluginsTyped.sharpType.AvifOptions = {};
if (assetVariationArg.quality !== undefined) {
avifOptions.quality = assetVariationArg.quality;
}
sharpImage = resultResize.avif(avifOptions);
break;
case 'webp':
const webpOptions: any = {};
const webpOptions: pluginsTyped.sharpType.WebpOptions = {};
if (assetVariationArg.quality !== undefined) {
webpOptions.quality = assetVariationArg.quality;
}
sharpImage = resultResize.webp(webpOptions);
break;
case 'png':
const pngOptions: any = {};
const pngOptions: pluginsTyped.sharpType.PngOptions = {};
if (assetVariationArg.quality !== undefined) {
pngOptions.quality = assetVariationArg.quality;
}
sharpImage = resultResize.png(pngOptions);
break;
case 'jpeg':
const jpegOptions: any = {
progressive: assetVariationArg.progressive || false
const jpegOptions: pluginsTyped.sharpType.JpegOptions = {
progressive: assetVariationArg.progressive || false,
};
if (assetVariationArg.quality !== undefined) {
jpegOptions.quality = assetVariationArg.quality;
@@ -104,8 +108,8 @@ export class SmartJimp {
break;
default:
// Default to JPEG
const defaultJpegOptions: any = {
progressive: assetVariationArg.progressive || false
const defaultJpegOptions: pluginsTyped.sharpType.JpegOptions = {
progressive: assetVariationArg.progressive || false,
};
if (assetVariationArg.quality !== undefined) {
defaultJpegOptions.quality = assetVariationArg.quality;
@@ -117,24 +121,27 @@ export class SmartJimp {
const jimpMod = await this.getJimpMod();
let jimpImage = await jimpMod.Jimp.read(assetBufferArg);
if (assetVariationArg.width || assetVariationArg.height) {
const resizeOptions: any = {};
if (assetVariationArg.width) resizeOptions.w = assetVariationArg.width;
if (assetVariationArg.height) resizeOptions.h = assetVariationArg.height;
jimpImage.resize(resizeOptions);
if (assetVariationArg.width && assetVariationArg.height) {
jimpImage.resize({ w: assetVariationArg.width, h: assetVariationArg.height });
} else if (assetVariationArg.width) {
jimpImage.resize({ w: assetVariationArg.width });
} else if (assetVariationArg.height) {
jimpImage.resize({ h: assetVariationArg.height });
}
}
if (assetVariationArg.invert) {
jimpImage.invert();
jimpImage.invert();
}
// Note: Jimp does not support progressive JPEG encoding
// Progressive option is ignored in jimp mode
const jpegOptions: any = {};
const jpegOptions: { quality?: number } = {};
if (assetVariationArg.quality !== undefined) {
jpegOptions.quality = assetVariationArg.quality;
}
switch (assetVariationArg.format) {
case 'png':
return await jimpImage.getBuffer("image/png");
return await jimpImage.getBuffer('image/png');
case 'webp':
case 'avif':
console.log(`Jimp doesn't support ${assetVariationArg.format}, falling back to JPEG`);
@@ -142,9 +149,11 @@ export class SmartJimp {
case 'jpeg':
default:
// Default to JPEG
return await jimpImage.getBuffer("image/jpeg", jpegOptions);
return await jimpImage.getBuffer('image/jpeg', jpegOptions);
}
}
throw new Error(`Unsupported smartjimp mode: ${this.options.mode}`);
}
public async getFromSmartfile(
+1 -1
View File
@@ -1,4 +1,4 @@
import * as plugins from './plugins.js';
export const packageDir = plugins.path.join(plugins.smartpath.get.dirnameFromImportMetaUrl(import.meta.url), '../');
export const nogitDir = plugins.path.join(packageDir, '.nogit/')
export const nogitDir = plugins.path.join(packageDir, '.nogit/');