summaryrefslogtreecommitdiff
path: root/js/text_encoding.ts
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2018-08-09 13:24:03 -0400
committerRyan Dahl <ry@tinyclouds.org>2018-08-09 14:27:46 -0700
commit040a0426796f0249bf0ca61ebbb2aae0b4993e94 (patch)
tree689c78775ebb83f9b251348399793c0adb524cb8 /js/text_encoding.ts
parentfb87cb38eca7a2d490c3e70738407dc6538e80d3 (diff)
Add TextEncoder/TextDecoder support.
Fixes #470 This commit increases size: out/release/gen/bundle/main.js 7.3M -> 7.9M out/release/gen/bundle/main.js.map 11M -> 12M out/release/gen/snapshot_deno.bin 34M -> 37M out/release/deno 49M -> 53M Note the amount in the JS code added is quite small: 4.0K node_modules/text-encoding/index.js 4.0K node_modules/@types/text-encoding/index.d.ts 4.0K js/text_encoding.ts Unclear to me what is causing the jump in snapshot size.
Diffstat (limited to 'js/text_encoding.ts')
-rw-r--r--js/text_encoding.ts28
1 files changed, 28 insertions, 0 deletions
diff --git a/js/text_encoding.ts b/js/text_encoding.ts
new file mode 100644
index 000000000..c8e262f5e
--- /dev/null
+++ b/js/text_encoding.ts
@@ -0,0 +1,28 @@
+// Copyright 2018 the Deno authors. All rights reserved. MIT license.
+
+// @types/text-encoding relies on lib.dom.d.ts for some interfaces. We do not
+// want to include lib.dom.d.ts (due to size) into deno's global type scope.
+// Therefore this hack: add a few of the missing interfaces in
+// @types/text-encoding to the global scope before importing.
+
+declare global {
+ type BufferSource = ArrayBufferView | ArrayBuffer;
+
+ interface TextDecodeOptions {
+ stream?: boolean;
+ }
+
+ interface TextDecoderOptions {
+ fatal?: boolean;
+ ignoreBOM?: boolean;
+ }
+
+ interface TextDecoder {
+ readonly encoding: string;
+ readonly fatal: boolean;
+ readonly ignoreBOM: boolean;
+ decode(input?: BufferSource, options?: TextDecodeOptions): string;
+ }
+}
+
+export { TextEncoder, TextDecoder } from "text-encoding";