summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
Diffstat (limited to 'js')
-rw-r--r--js/globals.ts12
-rw-r--r--js/text-encoding.d.ts6
-rw-r--r--js/text_encoding.ts28
3 files changed, 36 insertions, 10 deletions
diff --git a/js/globals.ts b/js/globals.ts
index f17d2f33a..a6f1b0927 100644
--- a/js/globals.ts
+++ b/js/globals.ts
@@ -3,6 +3,7 @@
import { Console } from "./console";
import { RawSourceMap } from "./types";
import * as timers from "./timers";
+import { TextEncoder, TextDecoder } from "./text_encoding";
declare global {
interface Window {
@@ -16,6 +17,11 @@ declare global {
const console: Console;
const window: Window;
+
+ // tslint:disable:variable-name
+ let TextEncoder: TextEncoder;
+ let TextDecoder: TextDecoder;
+ // tslint:enable:variable-name
}
// If you use the eval function indirectly, by invoking it via a reference
@@ -49,10 +55,8 @@ window.clearTimeout = timers.clearTimer;
window.clearInterval = timers.clearTimer;
window.console = new Console(libdeno.print);
+window.TextEncoder = TextEncoder;
+window.TextDecoder = TextDecoder;
// import { fetch } from "./fetch";
// window["fetch"] = fetch;
-
-// import { TextEncoder, TextDecoder } from "text-encoding";
-// window["TextEncoder"] = TextEncoder;
-// window["TextDecoder"] = TextDecoder;
diff --git a/js/text-encoding.d.ts b/js/text-encoding.d.ts
deleted file mode 100644
index 6feadad9c..000000000
--- a/js/text-encoding.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-// Remove and depend on @types/text-encoding once this PR is merged
-// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/26141
-declare module "text-encoding" {
- export const TextEncoder: TextEncoder;
- export const TextDecoder: TextDecoder;
-}
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";