dependency ffixes. properly make canvas/sharp optional. fix ts typings

This commit is contained in:
Skillbert
2025-07-28 22:17:26 +02:00
parent 48e9f56ae4
commit dc2691b8f5
5 changed files with 2431 additions and 8412 deletions

10825
package-lock.json generated
View File

File diff suppressed because it is too large Load Diff

View File

@@ -39,7 +39,6 @@
"autobind-decorator": "^2.4.0",
"browserify-zlib": "^0.2.0",
"buffer": "^6.0.3",
"canvas": "^2.10.2",
"classnames": "^2.3.1",
"copy-webpack-plugin": "^10.2.4",
"electron": "^26.3.0",
@@ -53,7 +52,6 @@
"react": "^18.1.0",
"react-dom": "^18.1.0",
"rimraf": "^3.0.2",
"sharp": "^0.33.2",
"sql.js": "file:./src/libs/sqljsfork",
"sqlite3": "^5.0.8",
"stream-browserify": "^3.0.0",

View File

@@ -41,17 +41,14 @@ export async function pixelsToImageFile(imgdata: ImageData, format: "png" | "web
let warnedstripalpha = false;
declare global {
const ImageDecoder: any;
interface ImageDecoder { }
}
export async function fileToImageData(file: Uint8Array, mimetype: "image/png" | "image/jpg", stripAlpha: boolean) {
if (typeof ImageDecoder != "undefined") {
let decoder = new ImageDecoder({ data: file, type: mimetype, premultiplyAlpha: (stripAlpha ? "none" : "default"), colorSpaceConversion: "none" });
//typescript claims premultiplyAlpha option doesn't exist
let decoder = new ImageDecoder({ data: file, type: mimetype, premultiplyAlpha: (stripAlpha ? "none" : "default"), colorSpaceConversion: "none" } as any);
let frame = await decoder.decode();
let pixels = new Uint8Array(frame.image.allocationSize());
frame.image.copyTo(pixels);
let pixelcount = frame.image.visibleRect.width * frame.image.visibleRect.height;
let pixelcount = frame.image.visibleRect!.width * frame.image.visibleRect!.height;
if (frame.image.format == "BGRX" || frame.image.format == "RGBX") {
stripAlpha = true;
}
@@ -72,7 +69,7 @@ export async function fileToImageData(file: Uint8Array, mimetype: "image/png" |
} else {
throw new Error("unexpected image format");
}
return makeImageData(pixels, frame.image.visibleRect.width, frame.image.visibleRect.height);
return makeImageData(pixels, frame.image.visibleRect!.width, frame.image.visibleRect!.height);
} else if (typeof HTMLCanvasElement != "undefined") {
if (stripAlpha && !warnedstripalpha) {
console.warn("can not strip alpha in browser context that does not support ImageDecoder");

View File

@@ -995,7 +995,7 @@ const rendermodeHeight: RenderMode<"height"> = function (engine, config, cnf, de
async run2d(chunks) {
//TODO what to do with classic 48x48 chunks?
let file = chunks[0].grid.getHeightCollisionFile(singlerect.x * 64, singlerect.z * 64, thiscnf.level, 64, 64);
let buf = Buffer.from(file.buffer, file.byteOffset, file.byteLength);
let buf: Buffer = Buffer.from(file.buffer, file.byteOffset, file.byteLength);
if (thiscnf.usegzip) {
buf = zlib.gzipSync(buf);
}

View File

@@ -160,7 +160,8 @@ async function mipCanvas(render: MapRender, files: (MipFile | null)[], format: "
}
// imagedecoder API doesn't support svg
if (mimetype != "image/svg+xml" && typeof ImageDecoder != "undefined") {
let decoder = new ImageDecoder({ data: res.body, type: mimetype, desiredWidth: subtilesize, desiredHeight: subtilesize });
//typescript types seem broken here? these properties are not depricated either
let decoder = new ImageDecoder({ data: res.body, type: mimetype, desiredWidth: subtilesize, desiredHeight: subtilesize } as any);
img = (await decoder.decode()).image;
} else {
let blobsrc = URL.createObjectURL(await res.blob());