summaryrefslogtreecommitdiff
path: root/node_modules/magic-bytes.js/dist/index.js
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2023-09-02 19:12:47 -0400
committersowgro <tpoke.ferrari@gmail.com>2023-09-02 19:12:47 -0400
commite4450c8417624b71d779cb4f41692538f9165e10 (patch)
treeb70826542223ecdf8a7a259f61b0a1abb8a217d8 /node_modules/magic-bytes.js/dist/index.js
downloadsowbot3-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.js56
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;