Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | 68x 68x 68x 13x 13x 13x 13x 13x 13x 1x 12x 12x 12x 68x 5507x 2022x 2022x 2022x 5507x 5507x 2022x 68x 1231x 1231x | import { getGlobalScope } from '../storage/common';
export function arrayBufferToUint8(content: ArrayBuffer): Uint8Array {
if (ArrayBuffer.isView(content)) {
return new Uint8Array(content.buffer, content.byteOffset, content.byteLength);
} else {
throw new Error('Non array buffer passed to arrayBufferToUint8');
}
}
function getAPIUsageErrorMessage(
scopeObject: unknown,
apiName: string,
usageDesc?: string
): string {
if (usageDesc) {
return `Use of '${usageDesc}' requires \`${apiName}\` which is unavailable on the '${scopeObject}' object within the currently executing environment.`;
} else {
return `\`${apiName}\` is unavailable on the '${scopeObject}' object within the currently executing environment.`;
}
}
interface GetGlobalObjectOptions {
/**
* Throw an error if the object is not found.
* @default false
*/
throwIfUnavailable?: boolean;
/**
* Additional information to include in an error if thrown.
*/
usageDesc?: string;
/**
* If the object is not found, return an new empty object instead of undefined.
* Requires [[throwIfUnavailable]] to be falsey.
* @default false
*/
returnEmptyObject?: boolean;
}
/**
* Returns an object from the global scope (`Window` or `WorkerGlobalScope`) if it
* is available within the currently executing environment.
* When executing within the Node.js runtime these APIs are unavailable and will be
* `undefined` unless the API is provided via polyfill.
* @see https://developer.mozilla.org/en-US/docs/Web/API/Window/self
* @ignore
*/
export function getGlobalObject<K extends Extract<keyof Window, string>>(
name: K,
{ throwIfUnavailable, usageDesc, returnEmptyObject }: GetGlobalObjectOptions = {}
): Window[K] | undefined {
let globalScope: Window | undefined = undefined;
try {
globalScope = getGlobalScope();
if (globalScope) {
const obj = globalScope[name];
if (obj) {
return obj;
}
}
} catch (error) {
console.error(`Error getting object '${name}' from global scope '${globalScope}': ${error}`);
}
Iif (throwIfUnavailable) {
const errMsg = getAPIUsageErrorMessage(globalScope, name.toString(), usageDesc);
console.error(errMsg);
throw new Error(errMsg);
}
if (returnEmptyObject) {
return {} as any;
}
return undefined;
}
export function concatByteArrays(byteArrays: Uint8Array[]): Uint8Array {
const totalSize = byteArrays.reduce((len, bytes) => len + bytes.length, 0);
const resultArray = new Uint8Array(totalSize);
let offset = 0;
for (let i = 0; i < byteArrays.length; i++) {
resultArray.set(byteArrays[i], offset);
offset += byteArrays[i].length;
}
return resultArray;
}
export function ensureUint8Array(bytes: Uint8Array): Uint8Array {
if (typeof bytes === 'object') bytes = Uint8Array.from(bytes);
return bytes;
}
|