diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2020-07-23 15:29:36 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-23 15:29:36 +0200 |
commit | b449964d1a8d87d53350c0f9adcf1227e6fd3eef (patch) | |
tree | c192a67245e0b3bec7af13680f7c0bd2a134db00 /cli/tsc/01_web_util.js | |
parent | e18e46a3b3f734d1c848b80a16d11810597b49f4 (diff) |
refactor: remove more compiler runtime code (#6841)
Diffstat (limited to 'cli/tsc/01_web_util.js')
-rw-r--r-- | cli/tsc/01_web_util.js | 202 |
1 files changed, 0 insertions, 202 deletions
diff --git a/cli/tsc/01_web_util.js b/cli/tsc/01_web_util.js deleted file mode 100644 index 596dcbfcd..000000000 --- a/cli/tsc/01_web_util.js +++ /dev/null @@ -1,202 +0,0 @@ -// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. - -((window) => { - function isTypedArray(x) { - return ArrayBuffer.isView(x) && !(x instanceof DataView); - } - - function isInvalidDate(x) { - return isNaN(x.getTime()); - } - - function requiredArguments( - name, - length, - required, - ) { - if (length < required) { - const errMsg = `${name} requires at least ${required} argument${ - required === 1 ? "" : "s" - }, but only ${length} present`; - throw new TypeError(errMsg); - } - } - - function immutableDefine( - o, - p, - value, - ) { - Object.defineProperty(o, p, { - value, - configurable: false, - writable: false, - }); - } - - function hasOwnProperty(obj, v) { - if (obj == null) { - return false; - } - return Object.prototype.hasOwnProperty.call(obj, v); - } - - /** Returns whether o is iterable. */ - function isIterable( - o, - ) { - // checks for null and undefined - if (o == null) { - return false; - } - return ( - typeof (o)[Symbol.iterator] === "function" - ); - } - - const objectCloneMemo = new WeakMap(); - - function cloneArrayBuffer( - srcBuffer, - srcByteOffset, - srcLength, - _cloneConstructor, - ) { - // this function fudges the return type but SharedArrayBuffer is disabled for a while anyway - return srcBuffer.slice( - srcByteOffset, - srcByteOffset + srcLength, - ); - } - - /** Clone a value in a similar way to structured cloning. It is similar to a - * StructureDeserialize(StructuredSerialize(...)). */ - function cloneValue(value) { - switch (typeof value) { - case "number": - case "string": - case "boolean": - case "undefined": - case "bigint": - return value; - case "object": { - if (objectCloneMemo.has(value)) { - return objectCloneMemo.get(value); - } - if (value === null) { - return value; - } - if (value instanceof Date) { - return new Date(value.valueOf()); - } - if (value instanceof RegExp) { - return new RegExp(value); - } - if (value instanceof SharedArrayBuffer) { - return value; - } - if (value instanceof ArrayBuffer) { - const cloned = cloneArrayBuffer( - value, - 0, - value.byteLength, - ArrayBuffer, - ); - objectCloneMemo.set(value, cloned); - return cloned; - } - if (ArrayBuffer.isView(value)) { - const clonedBuffer = cloneValue(value.buffer); - // Use DataViewConstructor type purely for type-checking, can be a - // DataView or TypedArray. They use the same constructor signature, - // only DataView has a length in bytes and TypedArrays use a length in - // terms of elements, so we adjust for that. - let length; - if (value instanceof DataView) { - length = value.byteLength; - } else { - length = value.length; - } - return new (value.constructor)( - clonedBuffer, - value.byteOffset, - length, - ); - } - if (value instanceof Map) { - const clonedMap = new Map(); - objectCloneMemo.set(value, clonedMap); - value.forEach((v, k) => clonedMap.set(k, cloneValue(v))); - return clonedMap; - } - if (value instanceof Set) { - const clonedSet = new Map(); - objectCloneMemo.set(value, clonedSet); - value.forEach((v, k) => clonedSet.set(k, cloneValue(v))); - return clonedSet; - } - - const clonedObj = {}; - objectCloneMemo.set(value, clonedObj); - const sourceKeys = Object.getOwnPropertyNames(value); - for (const key of sourceKeys) { - clonedObj[key] = cloneValue(value[key]); - } - return clonedObj; - } - case "symbol": - case "function": - default: - throw new DOMException("Uncloneable value in stream", "DataCloneError"); - } - } - - /** A helper function which ensures accessors are enumerable, as they normally - * are not. */ - function defineEnumerableProps( - Ctor, - props, - ) { - for (const prop of props) { - Reflect.defineProperty(Ctor.prototype, prop, { enumerable: true }); - } - } - - function getHeaderValueParams(value) { - const params = new Map(); - // Forced to do so for some Map constructor param mismatch - value - .split(";") - .slice(1) - .map((s) => s.trim().split("=")) - .filter((arr) => arr.length > 1) - .map(([k, v]) => [k, v.replace(/^"([^"]*)"$/, "$1")]) - .forEach(([k, v]) => params.set(k, v)); - return params; - } - - function hasHeaderValueOf(s, value) { - return new RegExp(`^${value}[\t\s]*;?`).test(s); - } - - /** An internal function which provides a function name for some generated - * functions, so stack traces are a bit more readable. - */ - function setFunctionName(fn, value) { - Object.defineProperty(fn, "name", { value, configurable: true }); - } - - window.__bootstrap.webUtil = { - isTypedArray, - isInvalidDate, - requiredArguments, - immutableDefine, - hasOwnProperty, - isIterable, - cloneValue, - defineEnumerableProps, - getHeaderValueParams, - hasHeaderValueOf, - setFunctionName, - }; -})(this); |