mirror of
https://github.com/GoogleChromeLabs/squoosh.git
synced 2025-11-15 10:09:45 +00:00
Fixup Emscripten factory & types
These days Emscripten returns a Promise to the module directly without hacks.
This commit is contained in:
2
codecs/avif/dec/avif_dec.d.ts
vendored
2
codecs/avif/dec/avif_dec.d.ts
vendored
@@ -2,5 +2,5 @@ interface AVIFModule extends EmscriptenWasm.Module {
|
||||
decode(data: BufferSource): ImageData | null;
|
||||
}
|
||||
|
||||
export default function(opts: EmscriptenWasm.ModuleOpts): AVIFModule;
|
||||
export default function(opts: EmscriptenWasm.ModuleOpts): Promise<AVIFModule>;
|
||||
|
||||
|
||||
2
codecs/avif/enc/avif_enc.d.ts
vendored
2
codecs/avif/enc/avif_enc.d.ts
vendored
@@ -4,4 +4,4 @@ interface AVIFModule extends EmscriptenWasm.Module {
|
||||
encode(data: BufferSource, width: number, height: number, options: EncodeOptions): Uint8Array | null;
|
||||
}
|
||||
|
||||
export default function(opts: EmscriptenWasm.ModuleOpts): AVIFModule;
|
||||
export default function(opts: EmscriptenWasm.ModuleOpts): Promise<AVIFModule>;
|
||||
|
||||
2
codecs/imagequant/imagequant.d.ts
vendored
2
codecs/imagequant/imagequant.d.ts
vendored
@@ -3,4 +3,4 @@ interface QuantizerModule extends EmscriptenWasm.Module {
|
||||
zx_quantize(data: BufferSource, width: number, height: number, dither: number): Uint8ClampedArray;
|
||||
}
|
||||
|
||||
export default function(opts: EmscriptenWasm.ModuleOpts): QuantizerModule;
|
||||
export default function(opts: EmscriptenWasm.ModuleOpts): Promise<QuantizerModule>;
|
||||
|
||||
2
codecs/mozjpeg_enc/mozjpeg_enc.d.ts
vendored
2
codecs/mozjpeg_enc/mozjpeg_enc.d.ts
vendored
@@ -4,4 +4,4 @@ interface MozJPEGModule extends EmscriptenWasm.Module {
|
||||
encode(data: BufferSource, width: number, height: number, options: EncodeOptions): Uint8Array;
|
||||
}
|
||||
|
||||
export default function(opts: EmscriptenWasm.ModuleOpts): MozJPEGModule;
|
||||
export default function(opts: EmscriptenWasm.ModuleOpts): Promise<MozJPEGModule>;
|
||||
|
||||
2
codecs/webp/dec/webp_dec.d.ts
vendored
2
codecs/webp/dec/webp_dec.d.ts
vendored
@@ -2,4 +2,4 @@ interface WebPModule extends EmscriptenWasm.Module {
|
||||
decode(data: BufferSource): ImageData | null;
|
||||
}
|
||||
|
||||
export default function(opts: EmscriptenWasm.ModuleOpts): WebPModule;
|
||||
export default function(opts: EmscriptenWasm.ModuleOpts): Promise<WebPModule>;
|
||||
|
||||
2
codecs/webp/enc/webp_enc.d.ts
vendored
2
codecs/webp/enc/webp_enc.d.ts
vendored
@@ -4,4 +4,4 @@ interface WebPModule extends EmscriptenWasm.Module {
|
||||
encode(data: BufferSource, width: number, height: number, options: EncodeOptions): Uint8Array | null;
|
||||
}
|
||||
|
||||
export default function(opts: EmscriptenWasm.ModuleOpts): WebPModule;
|
||||
export default function(opts: EmscriptenWasm.ModuleOpts): Promise<WebPModule>;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
export type ModuleFactory<M extends EmscriptenWasm.Module> = (
|
||||
opts: EmscriptenWasm.ModuleOpts,
|
||||
) => M;
|
||||
) => Promise<M>;
|
||||
|
||||
export function initEmscriptenModule<T extends EmscriptenWasm.Module>(
|
||||
moduleFactory: ModuleFactory<T>,
|
||||
@@ -8,8 +8,7 @@ export function initEmscriptenModule<T extends EmscriptenWasm.Module>(
|
||||
workerUrl?: string,
|
||||
mainUrl?: string,
|
||||
): Promise<T> {
|
||||
return new Promise((resolve) => {
|
||||
const module = moduleFactory({
|
||||
return moduleFactory({
|
||||
// Just to be safe, don't automatically invoke any wasm functions
|
||||
mainScriptUrlOrBlob: mainUrl,
|
||||
noInitialRun: true,
|
||||
@@ -19,14 +18,6 @@ export function initEmscriptenModule<T extends EmscriptenWasm.Module>(
|
||||
if (url.endsWith('.worker.js')) return workerUrl!;
|
||||
return url;
|
||||
},
|
||||
onRuntimeInitialized() {
|
||||
// An Emscripten is a then-able that resolves with itself, causing an infite loop when you
|
||||
// wrap it in a real promise. Delete the `then` prop solves this for now.
|
||||
// https://github.com/kripken/emscripten/issues/5820
|
||||
delete (module as any).then;
|
||||
resolve(module);
|
||||
},
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user