summaryrefslogtreecommitdiff
path: root/cli/js/util.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/js/util.ts')
-rw-r--r--cli/js/util.ts193
1 files changed, 0 insertions, 193 deletions
diff --git a/cli/js/util.ts b/cli/js/util.ts
index faf4c99c6..9f0373721 100644
--- a/cli/js/util.ts
+++ b/cli/js/util.ts
@@ -1,5 +1,4 @@
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
-import { atob } from "./text_encoding.ts";
import { TypedArray } from "./types.ts";
let logDebug = false;
@@ -32,17 +31,6 @@ export function assert(cond: unknown, msg = "assert"): asserts cond {
}
}
-// @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:
*
@@ -97,48 +85,11 @@ export function unreachable(): never {
throw new Error("Code not reachable");
}
-// @internal
-export function hexdump(u8: Uint8Array): string {
- return Array.prototype.map
- .call(u8, (x: number): string => {
- return ("00" + x.toString(16)).slice(-2);
- })
- .join(" ");
-}
-
-// @internal
-export function containsOnlyASCII(str: string): boolean {
- if (typeof str !== "string") {
- return false;
- }
- return /^[\x00-\x7F]*$/.test(str);
-}
-
const TypedArrayConstructor = Object.getPrototypeOf(Uint8Array);
export function isTypedArray(x: unknown): x is TypedArray {
return x instanceof TypedArrayConstructor;
}
-// Returns whether o is an object, not null, and not a function.
-// @internal
-export function isObject(o: unknown): o is object {
- return o != null && typeof o === "object";
-}
-
-// Returns whether o is iterable.
-// @internal
-export function isIterable<T, P extends keyof T, K extends T[P]>(
- o: T
-): o is T & Iterable<[P, K]> {
- // checks for null and undefined
- if (o == null) {
- return false;
- }
- return (
- typeof ((o as unknown) as Iterable<[P, K]>)[Symbol.iterator] === "function"
- );
-}
-
// @internal
export function requiredArguments(
name: string,
@@ -209,147 +160,3 @@ export function hasOwnProperty<T>(obj: T, v: PropertyKey): boolean {
}
return Object.prototype.hasOwnProperty.call(obj, v);
}
-
-/**
- * Split a number into two parts: lower 32 bit and higher 32 bit
- * (as if the number is represented as uint64.)
- *
- * @param n Number to split.
- * @internal
- */
-export function splitNumberToParts(n: number): number[] {
- // JS bitwise operators (OR, SHIFT) operate as if number is uint32.
- const lower = n | 0;
- // This is also faster than Math.floor(n / 0x100000000) in V8.
- const higher = (n - lower) / 0x100000000;
- return [lower, higher];
-}
-
-// Constants used by `normalizeString` and `resolvePath`
-export const CHAR_DOT = 46; /* . */
-export const CHAR_FORWARD_SLASH = 47; /* / */
-
-/** Resolves `.` and `..` elements in a path with directory names */
-export function normalizeString(
- path: string,
- allowAboveRoot: boolean,
- separator: string,
- isPathSeparator: (code: number) => boolean
-): string {
- let res = "";
- let lastSegmentLength = 0;
- let lastSlash = -1;
- let dots = 0;
- let code: number;
- for (let i = 0, len = path.length; i <= len; ++i) {
- if (i < len) code = path.charCodeAt(i);
- else if (isPathSeparator(code!)) break;
- else code = CHAR_FORWARD_SLASH;
-
- if (isPathSeparator(code)) {
- if (lastSlash === i - 1 || dots === 1) {
- // NOOP
- } else if (lastSlash !== i - 1 && dots === 2) {
- if (
- res.length < 2 ||
- lastSegmentLength !== 2 ||
- res.charCodeAt(res.length - 1) !== CHAR_DOT ||
- res.charCodeAt(res.length - 2) !== CHAR_DOT
- ) {
- if (res.length > 2) {
- const lastSlashIndex = res.lastIndexOf(separator);
- if (lastSlashIndex === -1) {
- res = "";
- lastSegmentLength = 0;
- } else {
- res = res.slice(0, lastSlashIndex);
- lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);
- }
- lastSlash = i;
- dots = 0;
- continue;
- } else if (res.length === 2 || res.length === 1) {
- res = "";
- lastSegmentLength = 0;
- lastSlash = i;
- dots = 0;
- continue;
- }
- }
- if (allowAboveRoot) {
- if (res.length > 0) res += `${separator}..`;
- else res = "..";
- lastSegmentLength = 2;
- }
- } else {
- if (res.length > 0) res += separator + path.slice(lastSlash + 1, i);
- else res = path.slice(lastSlash + 1, i);
- lastSegmentLength = i - lastSlash - 1;
- }
- lastSlash = i;
- dots = 0;
- } else if (code === CHAR_DOT && dots !== -1) {
- ++dots;
- } else {
- dots = -1;
- }
- }
- return res;
-}
-
-/** Return the common path shared by the `paths`.
- *
- * @param paths The set of paths to compare.
- * @param sep An optional separator to use. Defaults to `/`.
- * @internal
- */
-export function commonPath(paths: string[], sep = "/"): string {
- const [first = "", ...remaining] = paths;
- if (first === "" || remaining.length === 0) {
- return first.substring(0, first.lastIndexOf(sep) + 1);
- }
- const parts = first.split(sep);
-
- let endOfPrefix = parts.length;
- for (const path of remaining) {
- const compare = path.split(sep);
- for (let i = 0; i < endOfPrefix; i++) {
- if (compare[i] !== parts[i]) {
- endOfPrefix = i;
- }
- }
-
- if (endOfPrefix === 0) {
- return "";
- }
- }
- const prefix = parts.slice(0, endOfPrefix).join(sep);
- return prefix.endsWith(sep) ? prefix : `${prefix}${sep}`;
-}
-
-/** Utility function to turn the number of bytes into a human readable
- * unit */
-export function humanFileSize(bytes: number): string {
- const thresh = 1000;
- if (Math.abs(bytes) < thresh) {
- return bytes + " B";
- }
- const units = ["kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
- let u = -1;
- do {
- bytes /= thresh;
- ++u;
- } while (Math.abs(bytes) >= thresh && u < units.length - 1);
- return `${bytes.toFixed(1)} ${units[u]}`;
-}
-
-// @internal
-export function base64ToUint8Array(data: string): Uint8Array {
- const binString = atob(data);
- const size = binString.length;
- const bytes = new Uint8Array(size);
- for (let i = 0; i < size; i++) {
- bytes[i] = binString.charCodeAt(i);
- }
- return bytes;
-}