CoolFace
Apppublic

Pinsave/counterstrike

sourceHugging Faceupdated 3mo agoView on Hugging Face
1likes
common.js106 linesDownload Raw Back to utils
1'use strict';2 3 4var TYPED_OK =  (typeof Uint8Array !== 'undefined') &&5                (typeof Uint16Array !== 'undefined') &&6                (typeof Int32Array !== 'undefined');7 8function _has(obj, key) {9  return Object.prototype.hasOwnProperty.call(obj, key);10}11 12exports.assign = function (obj /*from1, from2, from3, ...*/) {13  var sources = Array.prototype.slice.call(arguments, 1);14  while (sources.length) {15    var source = sources.shift();16    if (!source) { continue; }17 18    if (typeof source !== 'object') {19      throw new TypeError(source + 'must be non-object');20    }21 22    for (var p in source) {23      if (_has(source, p)) {24        obj[p] = source[p];25      }26    }27  }28 29  return obj;30};31 32 33// reduce buffer size, avoiding mem copy34exports.shrinkBuf = function (buf, size) {35  if (buf.length === size) { return buf; }36  if (buf.subarray) { return buf.subarray(0, size); }37  buf.length = size;38  return buf;39};40 41 42var fnTyped = {43  arraySet: function (dest, src, src_offs, len, dest_offs) {44    if (src.subarray && dest.subarray) {45      dest.set(src.subarray(src_offs, src_offs + len), dest_offs);46      return;47    }48    // Fallback to ordinary array49    for (var i = 0; i < len; i++) {50      dest[dest_offs + i] = src[src_offs + i];51    }52  },53  // Join array of chunks to single array.54  flattenChunks: function (chunks) {55    var i, l, len, pos, chunk, result;56 57    // calculate data length58    len = 0;59    for (i = 0, l = chunks.length; i < l; i++) {60      len += chunks[i].length;61    }62 63    // join chunks64    result = new Uint8Array(len);65    pos = 0;66    for (i = 0, l = chunks.length; i < l; i++) {67      chunk = chunks[i];68      result.set(chunk, pos);69      pos += chunk.length;70    }71 72    return result;73  }74};75 76var fnUntyped = {77  arraySet: function (dest, src, src_offs, len, dest_offs) {78    for (var i = 0; i < len; i++) {79      dest[dest_offs + i] = src[src_offs + i];80    }81  },82  // Join array of chunks to single array.83  flattenChunks: function (chunks) {84    return [].concat.apply([], chunks);85  }86};87 88 89// Enable/Disable typed arrays use, for testing90//91exports.setTyped = function (on) {92  if (on) {93    exports.Buf8  = Uint8Array;94    exports.Buf16 = Uint16Array;95    exports.Buf32 = Int32Array;96    exports.assign(exports, fnTyped);97  } else {98    exports.Buf8  = Array;99    exports.Buf16 = Array;100    exports.Buf32 = Array;101    exports.assign(exports, fnUntyped);102  }103};104 105exports.setTyped(TYPED_OK);106