diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2023-09-02 19:12:47 -0400 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2023-09-02 19:12:47 -0400 |
commit | e4450c8417624b71d779cb4f41692538f9165e10 (patch) | |
tree | b70826542223ecdf8a7a259f61b0a1abb8a217d8 /node_modules/magic-bytes.js/dist/index.js | |
download | sowbot3-e4450c8417624b71d779cb4f41692538f9165e10.tar.gz sowbot3-e4450c8417624b71d779cb4f41692538f9165e10.tar.bz2 sowbot3-e4450c8417624b71d779cb4f41692538f9165e10.zip |
first commit
Diffstat (limited to 'node_modules/magic-bytes.js/dist/index.js')
-rw-r--r-- | node_modules/magic-bytes.js/dist/index.js | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/node_modules/magic-bytes.js/dist/index.js b/node_modules/magic-bytes.js/dist/index.js new file mode 100644 index 0000000..7bfde63 --- /dev/null +++ b/node_modules/magic-bytes.js/dist/index.js @@ -0,0 +1,56 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.filetypeextension = exports.filetypemime = exports.filetypename = exports.filetypeinfo = void 0; +const pattern_tree_1 = __importDefault(require("./model/pattern-tree")); +const toHex_1 = require("./model/toHex"); +const patternTree = pattern_tree_1.default(); +const filetypeinfo = (bytes) => { + let tree = patternTree; + for (const k of Object.keys(tree.offset)) { + const offset = toHex_1.fromHex(k); + const offsetExceedsFile = offset >= bytes.length; + if (offsetExceedsFile) { + continue; + } + const node = patternTree.offset[k]; + const guessed = walkTree(offset, bytes, node); + if (guessed.length > 0) { + return guessed; + } + } + if (tree.noOffset === null) { + return []; + } + return walkTree(0, bytes, tree.noOffset); +}; +exports.filetypeinfo = filetypeinfo; +const walkTree = (index, bytes, node) => { + let step = node; + let guessFile = []; + while (true) { + const currentByte = toHex_1.toHex(bytes[index]); + if (step.bytes["?"] && !step.bytes[currentByte]) { + step = step.bytes["?"]; + } + else { + step = step.bytes[currentByte]; + } + if (!step) { + return guessFile; + } + if (step && step.matches) { + guessFile = step.matches.slice(0); + } + index += 1; + } +}; +exports.default = exports.filetypeinfo; +const filetypename = (bytes) => exports.filetypeinfo(bytes).map((e) => e.typename); +exports.filetypename = filetypename; +const filetypemime = (bytes) => exports.filetypeinfo(bytes).map((e) => (e.mime ? e.mime : "")); +exports.filetypemime = filetypemime; +const filetypeextension = (bytes) => exports.filetypeinfo(bytes).map((e) => (e.extension ? e.extension : "")); +exports.filetypeextension = filetypeextension; |