Open
Description
The large majority of users of TextEncoder
and TextDecoder
do not make use of streaming capabilities. Instead they just need to decode a single chunk, or encode a single chunk. We should consider adding a static utility method to TextEncoder
/ TextDecoder
to cater to this use case.
// current
const data = new TextDecoder().decode(new Uint8Array(/** data here */));
// proposed
const data = TextDecoder.decode(new Uint8Array(/** data here */));
I propose the following API be added:
dictionary TextDecoderOptionsWithLabel : TextDecoderOptions {
DOMString label = "utf-8";
};
interface TextDecoder {
static USVString decode(optional [AllowShared] BufferSource input, optional TextDecoderOptionsWithLabel options = {});
}
interface TextEncoder {
static Uint8Array encode(optional USVString input = "");
static TextEncoderEncodeIntoResult encodeInto(USVString source, [AllowShared] Uint8Array destination);
}
The exact name of the method should be something different though - the static method and prototype method would name clash in this example which is confusing.
Internally this would behave exactly like a single use non streaming encoder.