| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.pick = pick;
- exports.installTimerFunctions = installTimerFunctions;
- exports.byteLength = byteLength;
- exports.randomString = randomString;
- const globals_node_js_1 = require("./globals.node.js");
- function pick(obj, ...attr) {
- return attr.reduce((acc, k) => {
- if (obj.hasOwnProperty(k)) {
- acc[k] = obj[k];
- }
- return acc;
- }, {});
- }
- // Keep a reference to the real timeout functions so they can be used when overridden
- const NATIVE_SET_TIMEOUT = globals_node_js_1.globalThisShim.setTimeout;
- const NATIVE_CLEAR_TIMEOUT = globals_node_js_1.globalThisShim.clearTimeout;
- function installTimerFunctions(obj, opts) {
- if (opts.useNativeTimers) {
- obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globals_node_js_1.globalThisShim);
- obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globals_node_js_1.globalThisShim);
- }
- else {
- obj.setTimeoutFn = globals_node_js_1.globalThisShim.setTimeout.bind(globals_node_js_1.globalThisShim);
- obj.clearTimeoutFn = globals_node_js_1.globalThisShim.clearTimeout.bind(globals_node_js_1.globalThisShim);
- }
- }
- // base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)
- const BASE64_OVERHEAD = 1.33;
- // we could also have used `new Blob([obj]).size`, but it isn't supported in IE9
- function byteLength(obj) {
- if (typeof obj === "string") {
- return utf8Length(obj);
- }
- // arraybuffer or blob
- return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);
- }
- function utf8Length(str) {
- let c = 0, length = 0;
- for (let i = 0, l = str.length; i < l; i++) {
- c = str.charCodeAt(i);
- if (c < 0x80) {
- length += 1;
- }
- else if (c < 0x800) {
- length += 2;
- }
- else if (c < 0xd800 || c >= 0xe000) {
- length += 3;
- }
- else {
- i++;
- length += 4;
- }
- }
- return length;
- }
- /**
- * Generates a random 8-characters string.
- */
- function randomString() {
- return (Date.now().toString(36).substring(3) +
- Math.random().toString(36).substring(2, 5));
- }
|