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 |
1×
1×
1×
1×
1×
1×
3×
1×
1×
1×
1×
512×
512×
28×
512×
1×
2075×
1×
32×
32×
2075×
30×
1×
32×
32×
32×
32×
1×
32×
32×
32×
1×
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);
}; |