all files / lib/ binary.js

100% Statements 37/37
90% Branches 9/10
100% Functions 6/6
100% Lines 34/34
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                      512× 512× 28×   512×     2075×     32× 32× 2075×   30×     32× 32× 32×   32×     32× 32× 32×     44×   32×  
'use strict';
 
var _lodash = require('lodash');
 
var _lodash2 = _interopRequireDefault(_lodash);
 
var _fs = require('fs');
 
var _fs2 = _interopRequireDefault(_fs);
 
var _path = require('path');
 
var _path2 = _interopRequireDefault(_path);
 
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
var BINARY_FILE_EXTENSIONS = require('../extensions');
 
var binaryCharacters = [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31];
 
var characters = new Buffer(512);
for (var i = 0; i < characters.length; i++) {
  var isBinary = 0;
  if (_lodash2.default.includes(binaryCharacters, i)) {
    isBinary = 1;
  }
  characters[i] = isBinary;
}
 
function isBinaryChar(data) {
  return characters[data];
}
 
function _isbinary(data, size) {
  var len = Math.min(size, 512);
  for (var _i = 0; _i < len; _i++) {
    if (isBinaryChar(data[_i])) return true;
  }
  return false;
}
 
function writeToBuffer(filename, buffer) {
  var fd = _fs2.default.openSync(filename, 'r');
  var bytesRead = _fs2.default.readSync(fd, buffer, 0, buffer.length, 0);
  _fs2.default.closeSync(fd);
 
  return bytesRead;
}
 
function isBinaryData(filename) {
  var bytes = new Buffer(512);
  var bytesRead = writeToBuffer(filename, bytes);
  return _isbinary(bytes, bytesRead);
}
 
module.exports = function (file) {
  if (_lodash2.default.includes(BINARY_FILE_EXTENSIONS, _path2.default.extname(file))) return true;
 
  return isBinaryData(file);
};