mirror of
https://github.com/GoogleChromeLabs/squoosh.git
synced 2025-11-13 09:17:20 +00:00
Adding browser's webp encoder (#72)
* Adding WebP (without feature detect in place) * Adding WebP check * Remove unused import
This commit is contained in:
@@ -2,12 +2,18 @@ import * as mozJPEG from './mozjpeg/encoder';
|
||||
import * as identity from './identity/encoder';
|
||||
import * as browserPNG from './browser-png/encoder';
|
||||
import * as browserJPEG from './browser-jpeg/encoder';
|
||||
import * as browserWebP from './browser-webp/encoder';
|
||||
|
||||
export interface EncoderSupportMap {
|
||||
[key: string]: boolean;
|
||||
}
|
||||
|
||||
export type EncoderState =
|
||||
identity.EncoderState | mozJPEG.EncoderState | browserPNG.EncoderState | browserJPEG.EncoderState;
|
||||
identity.EncoderState | mozJPEG.EncoderState | browserPNG.EncoderState |
|
||||
browserJPEG.EncoderState | browserWebP.EncoderState;
|
||||
export type EncoderOptions =
|
||||
identity.EncodeOptions | mozJPEG.EncodeOptions | browserPNG.EncodeOptions |
|
||||
browserJPEG.EncodeOptions;
|
||||
browserJPEG.EncodeOptions | browserWebP.EncodeOptions;
|
||||
export type EncoderType = keyof typeof encoderMap;
|
||||
|
||||
export const encoderMap = {
|
||||
@@ -15,6 +21,20 @@ export const encoderMap = {
|
||||
[mozJPEG.type]: mozJPEG,
|
||||
[browserPNG.type]: browserPNG,
|
||||
[browserJPEG.type]: browserJPEG,
|
||||
[browserWebP.type]: browserWebP,
|
||||
};
|
||||
|
||||
export const encoders = Array.from(Object.values(encoderMap));
|
||||
|
||||
/** Does this browser support a given encoder? Indexed by label */
|
||||
export const encodersSupported = Promise.resolve().then(async () => {
|
||||
const encodersSupported: EncoderSupportMap = {};
|
||||
|
||||
await Promise.all(encoders.map(async (encoder) => {
|
||||
// If the encoder provides a featureTest, call it, otherwise assume supported.
|
||||
const isSupported = !('featureTest' in encoder) || await encoder.featureTest();
|
||||
encodersSupported[encoder.type] = isSupported;
|
||||
}));
|
||||
|
||||
return encodersSupported;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user