summaryrefslogtreecommitdiff
path: root/js/util.ts
diff options
context:
space:
mode:
authorKitson Kelly <me@kitsonkelly.com>2018-09-04 12:23:38 -0700
committerRyan Dahl <ry@tinyclouds.org>2018-09-05 08:45:55 -0400
commit10dc71133af211de40e29e7a7ab8c470a4a2c417 (patch)
treef44cd8d8dc430f22cec974ac4ccd4490453de20b /js/util.ts
parent2c0d00840d09ce6d8f2b8615c9682ce4dfbfdb9d (diff)
Mark APIs at internal and include JSDoc in types
Diffstat (limited to 'js/util.ts')
-rw-r--r--js/util.ts42
1 files changed, 29 insertions, 13 deletions
diff --git a/js/util.ts b/js/util.ts
index 959bc6abd..6971ca1b9 100644
--- a/js/util.ts
+++ b/js/util.ts
@@ -3,11 +3,15 @@ import { TypedArray } from "./types";
let logDebug = false;
+// @internal
export function setLogDebug(debug: boolean): void {
logDebug = debug;
}
-// Debug logging for deno. Enable with the --DEBUG command line flag.
+/**
+ * Debug logging for deno. Enable with the `--DEBUG` command line flag.
+ * @internal
+ */
// tslint:disable-next-line:no-any
export function log(...args: any[]): void {
if (logDebug) {
@@ -15,41 +19,51 @@ export function log(...args: any[]): void {
}
}
+// @internal
export function assert(cond: boolean, msg = "assert") {
if (!cond) {
throw Error(msg);
}
}
+// @internal
export function typedArrayToArrayBuffer(ta: TypedArray): ArrayBuffer {
const ab = ta.buffer.slice(ta.byteOffset, ta.byteOffset + ta.byteLength);
return ab as ArrayBuffer;
}
+// @internal
export function arrayToStr(ui8: Uint8Array): string {
return String.fromCharCode(...ui8);
}
-// A `Resolvable` is a Promise with the `reject` and `resolve` functions
-// placed as methods on the promise object itself. It allows you to do:
-//
-// const p = createResolvable<number>();
-// ...
-// p.resolve(42);
-//
-// It'd be prettier to make Resolvable a class that inherits from Promise,
-// rather than an interface. This is possible in ES2016, however typescript
-// produces broken code when targeting ES5 code.
-// See https://github.com/Microsoft/TypeScript/issues/15202
-// At the time of writing, the github issue is closed but the problem remains.
+/**
+ * A `Resolvable` is a Promise with the `reject` and `resolve` functions
+ * placed as methods on the promise object itself. It allows you to do:
+ *
+ * const p = createResolvable<number>();
+ * ...
+ * p.resolve(42);
+ *
+ * It'd be prettier to make Resolvable a class that inherits from Promise,
+ * rather than an interface. This is possible in ES2016, however typescript
+ * produces broken code when targeting ES5 code.
+ * See https://github.com/Microsoft/TypeScript/issues/15202
+ * At the time of writing, the github issue is closed but the problem remains.
+ *
+ * @internal
+ */
+
export interface ResolvableMethods<T> {
resolve: (value?: T | PromiseLike<T>) => void;
// tslint:disable-next-line:no-any
reject: (reason?: any) => void;
}
+// @internal
export type Resolvable<T> = Promise<T> & ResolvableMethods<T>;
+// @internal
export function createResolvable<T>(): Resolvable<T> {
let methods: ResolvableMethods<T>;
const promise = new Promise<T>((resolve, reject) => {
@@ -60,10 +74,12 @@ export function createResolvable<T>(): Resolvable<T> {
return Object.assign(promise, methods!) as Resolvable<T>;
}
+// @internal
export function notImplemented(): never {
throw new Error("Not implemented");
}
+// @internal
export function unreachable(): never {
throw new Error("Code not reachable");
}