* health check

* Update Dockerfile

* simplifying the deployment

* Update Bot.js

makes the find team command public

* test (#9)

* Dev (#7)

* health check

* Update Dockerfile

* simplifying the deployment

* Dev (#8)

* health check

* Update Dockerfile

* simplifying the deployment

* Update Bot.js

makes the find team command public

* Update PlayerService.js

* massive update????

could break stuff

* Update Bot.js

update
This commit is contained in:
VinceC
2025-07-07 21:38:19 -05:00
committed by GitHub
parent 0c86148835
commit 3453be6947
1742 changed files with 28844 additions and 67711 deletions

View File

@@ -1,4 +1,8 @@
import { Tree } from "./tree";
import { Info, Tree } from "./tree";
declare type TypeName = string;
declare type Signature = string[];
export declare const add: (typename: TypeName, signature: Signature, additionalInfo?: Info | undefined, offset?: number | undefined) => void;
export declare const createTree: () => Tree;
declare const _default: () => Tree;
export default _default;
//# sourceMappingURL=pattern-tree.d.ts.map

View File

@@ -1 +1 @@
{"version":3,"file":"pattern-tree.d.ts","sourceRoot":"","sources":["../../src/model/pattern-tree.ts"],"names":[],"mappings":"AACA,OAAO,EAA8C,IAAI,EAAE,MAAM,QAAQ,CAAC;8BAu0CvD,IAAI;AAAvB,wBAAwC"}
{"version":3,"file":"pattern-tree.d.ts","sourceRoot":"","sources":["../../src/model/pattern-tree.ts"],"names":[],"mappings":"AACA,OAAO,EAAiC,IAAI,EAAS,IAAI,EAAE,MAAM,QAAQ,CAAC;AAQ1E,aAAK,QAAQ,GAAG,MAAM,CAAC;AACvB,aAAK,SAAS,GAAG,MAAM,EAAE,CAAC;AAE1B,eAAO,MAAM,GAAG,aACJ,QAAQ,yCAED,IAAI,GAAG,SAAS,sCAwClC,CAAC;AA2xCF,eAAO,MAAM,UAAU,QAAO,IAAoB,CAAC;8BAChC,IAAI;AAAvB,wBAAwC"}

View File

@@ -1,5 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createTree = exports.add = void 0;
const toHex_1 = require("./toHex");
const tree_1 = require("./tree");
// https://en.wikipedia.org/wiki/List_of_file_signatures
@@ -27,19 +28,20 @@ const add = (typename, signature, additionalInfo, offset) => {
}
}
};
add("gif", ["0x47", "0x49", "0x46", "0x38", "0x37", "0x61"], {
exports.add = add;
exports.add("gif", ["0x47", "0x49", "0x46", "0x38", "0x37", "0x61"], {
mime: "image/gif",
extension: "gif",
});
add("gif", ["0x47", "0x49", "0x46", "0x38", "0x39", "0x61"], {
exports.add("gif", ["0x47", "0x49", "0x46", "0x38", "0x39", "0x61"], {
mime: "image/gif",
extension: "gif",
});
add("jpg", ["0xFF", "0xD8", "0xFF"], {
exports.add("jpg", ["0xFF", "0xD8", "0xFF"], {
mime: "image/jpeg",
extension: "jpeg",
});
add("webp", [
exports.add("webp", [
"0x52",
"0x49",
"0x46",
@@ -53,41 +55,41 @@ add("webp", [
"0x42",
"0x50",
], { mime: "image/webp", extension: "webp" });
add("heif", ["0x66", "0x74", "0x79", "0x70", "0x6D", "0x69", "0x66", "0x31"], { mime: "image/heif", extension: "heif" }, 4);
add("heif", ["0x66", "0x74", "0x79", "0x70", "0x68", "0x65", "0x69", "0x63"], { mime: "image/heif", extension: "heic" }, 4);
add("rpm", ["0xed", "0xab", "0xee", "0xdb"]);
add("bin", ["0x53", "0x50", "0x30", "0x31"], {
exports.add("heif", ["0x66", "0x74", "0x79", "0x70", "0x6D", "0x69", "0x66", "0x31"], { mime: "image/heif", extension: "heif" }, 4);
exports.add("heif", ["0x66", "0x74", "0x79", "0x70", "0x68", "0x65", "0x69", "0x63"], { mime: "image/heif", extension: "heic" }, 4);
exports.add("rpm", ["0xed", "0xab", "0xee", "0xdb"]);
exports.add("bin", ["0x53", "0x50", "0x30", "0x31"], {
mime: "application/octet-stream",
extension: "bin",
});
add("pic", ["0x00"]);
add("pif", ["0x00"]);
add("sea", ["0x00"]);
add("ytr", ["0x00"]);
exports.add("pic", ["0x00"]);
exports.add("pif", ["0x00"]);
exports.add("sea", ["0x00"]);
exports.add("ytr", ["0x00"]);
// 66747970
// 6D703432
add("mp4", ["0x66", "0x74", "0x79", "0x70"], { mime: "video/mp4", extension: "mp4" }, 0x4);
add("ttf", ["0x00", "0x01", "0x00", "0x00", "0x00"], {
exports.add("mp4", ["0x66", "0x74", "0x79", "0x70"], { mime: "video/mp4", extension: "mp4" }, 0x4);
exports.add("ttf", ["0x00", "0x01", "0x00", "0x00", "0x00"], {
mime: "font/ttf",
extension: "ttf",
});
add("otf", ["0x4F", "0x54", "0x54", "0x4F"], {
exports.add("otf", ["0x4F", "0x54", "0x54", "0x4F"], {
mime: "font/otf",
extension: "otf",
});
add("eot", ["0x50", "0x4C"], {
exports.add("eot", ["0x50", "0x4C"], {
mime: "application/vnd.ms-fontobject",
extension: "eot",
});
add("woff", ["0x77", "0x4F", "0x46", "0x46"], {
exports.add("woff", ["0x77", "0x4F", "0x46", "0x46"], {
mime: "font/woff",
extension: "woff",
});
add("woff2", ["0x77", "0x4F", "0x46", "0x32"], {
exports.add("woff2", ["0x77", "0x4F", "0x46", "0x32"], {
mime: "font/woff2",
extension: "woff2",
});
add("pdb", [
exports.add("pdb", [
"0x00",
"0x00",
"0x00",
@@ -113,18 +115,18 @@ add("pdb", [
"0x00",
"0x00",
]);
add("dba", ["0xBE", "0xBA", "0xFE", "0xCA"]);
add("dba2", ["0x00", "0x01", "0x42", "0x44"]);
add("tda", ["0x00", "0x01", "0x44", "0x54"]);
add("tda2", ["0x00", "0x01", "0x00", "0x00"]);
add("ico", ["0x00", "0x00", "0x01", "0x00"], {
exports.add("dba", ["0xBE", "0xBA", "0xFE", "0xCA"]);
exports.add("dba2", ["0x00", "0x01", "0x42", "0x44"]);
exports.add("tda", ["0x00", "0x01", "0x44", "0x54"]);
exports.add("tda2", ["0x00", "0x01", "0x00", "0x00"]);
exports.add("ico", ["0x00", "0x00", "0x01", "0x00"], {
mime: "image/x-icon",
extension: "ico",
});
add("3gp", ["0x66", "0x74", "0x79", "0x70", "0x33", "0x67"]);
add("z", ["0x1F", "0x9D"]);
add("tar.z", ["0x1F", "0xA0"]);
add("bac", [
exports.add("3gp", ["0x66", "0x74", "0x79", "0x70", "0x33", "0x67"]);
exports.add("z", ["0x1F", "0x9D"]);
exports.add("tar.z", ["0x1F", "0xA0"]);
exports.add("bac", [
"0x42",
"0x41",
"0x43",
@@ -138,19 +140,19 @@ add("bac", [
"0x53",
"0x4B",
]);
add("bz2", ["0x42", "0x5A", "0x68"], {
exports.add("bz2", ["0x42", "0x5A", "0x68"], {
mime: "application/x-bzip2",
extension: "bz2",
});
add("tif", ["0x49", "0x49", "0x2A", "0x00"], {
exports.add("tif", ["0x49", "0x49", "0x2A", "0x00"], {
mime: "image/tiff",
extension: "tif",
});
add("tiff", ["0x4D", "0x4D", "0x00", "0x2A"], {
exports.add("tiff", ["0x4D", "0x4D", "0x00", "0x2A"], {
mime: "image/tiff",
extension: "tiff",
});
add("cr2", [
exports.add("cr2", [
"0x49",
"0x49",
"0x2A",
@@ -162,14 +164,14 @@ add("cr2", [
"0x43",
"0x52",
]);
add("cin", ["0x80", "0x2A", "0x5F", "0xD7"]);
add("cin1", ["0x52", "0x4E", "0x43", "0x01"]);
add("cin2", ["0x52", "0x4E", "0x43", "0x02"]);
add("dpx", ["0x53", "0x44", "0x50", "0x58"]);
add("dpx2", ["0x58", "0x50", "0x44", "0x53"]);
add("exr", ["0x76", "0x2F", "0x31", "0x01"]);
add("bpg", ["0x42", "0x50", "0x47", "0xFB"]);
add("ilbm", [
exports.add("cin", ["0x80", "0x2A", "0x5F", "0xD7"]);
exports.add("cin1", ["0x52", "0x4E", "0x43", "0x01"]);
exports.add("cin2", ["0x52", "0x4E", "0x43", "0x02"]);
exports.add("dpx", ["0x53", "0x44", "0x50", "0x58"]);
exports.add("dpx2", ["0x58", "0x50", "0x44", "0x53"]);
exports.add("exr", ["0x76", "0x2F", "0x31", "0x01"]);
exports.add("bpg", ["0x42", "0x50", "0x47", "0xFB"]);
exports.add("ilbm", [
"0x46",
"0x4F",
"0x52",
@@ -183,7 +185,7 @@ add("ilbm", [
"0x42",
"0x4D",
]);
add("8svx", [
exports.add("8svx", [
"0x46",
"0x4F",
"0x52",
@@ -197,7 +199,7 @@ add("8svx", [
"0x56",
"0x58",
]);
add("acbm", [
exports.add("acbm", [
"0x46",
"0x4F",
"0x52",
@@ -211,7 +213,7 @@ add("acbm", [
"0x42",
"0x4D",
]);
add("anbm", [
exports.add("anbm", [
"0x46",
"0x4F",
"0x52",
@@ -225,7 +227,7 @@ add("anbm", [
"0x42",
"0x4D",
]);
add("anim", [
exports.add("anim", [
"0x46",
"0x4F",
"0x52",
@@ -239,7 +241,7 @@ add("anim", [
"0x49",
"0x4D",
]);
add("faxx", [
exports.add("faxx", [
"0x46",
"0x4F",
"0x52",
@@ -253,7 +255,7 @@ add("faxx", [
"0x58",
"0x58",
]);
add("ftxt", [
exports.add("ftxt", [
"0x46",
"0x4F",
"0x52",
@@ -267,7 +269,7 @@ add("ftxt", [
"0x58",
"0x54",
]);
add("smus", [
exports.add("smus", [
"0x46",
"0x4F",
"0x52",
@@ -281,7 +283,7 @@ add("smus", [
"0x55",
"0x53",
]);
add("cmus", [
exports.add("cmus", [
"0x46",
"0x4F",
"0x52",
@@ -295,7 +297,7 @@ add("cmus", [
"0x55",
"0x53",
]);
add("yuvn", [
exports.add("yuvn", [
"0x46",
"0x4F",
"0x52",
@@ -309,7 +311,7 @@ add("yuvn", [
"0x56",
"0x4E",
]);
add("iff", [
exports.add("iff", [
"0x46",
"0x4F",
"0x52",
@@ -323,7 +325,7 @@ add("iff", [
"0x4E",
"0x54",
]);
add("aiff", [
exports.add("aiff", [
"0x46",
"0x4F",
"0x52",
@@ -337,179 +339,179 @@ add("aiff", [
"0x46",
"0x46",
], { mime: "audio/x-aiff", extension: "aiff" });
add("idx", ["0x49", "0x4E", "0x44", "0x58"]);
add("lz", ["0x4C", "0x5A", "0x49", "0x50"]);
add("exe", ["0x4D", "0x5A"]);
add("zip", ["0x50", "0x4B", "0x03", "0x04"], {
exports.add("idx", ["0x49", "0x4E", "0x44", "0x58"]);
exports.add("lz", ["0x4C", "0x5A", "0x49", "0x50"]);
exports.add("exe", ["0x4D", "0x5A"]);
exports.add("zip", ["0x50", "0x4B", "0x03", "0x04"], {
mime: "application/zip",
extension: "zip",
});
add("zip", ["0x50", "0x4B", "0x05", "0x06"], {
exports.add("zip", ["0x50", "0x4B", "0x05", "0x06"], {
mime: "application/zip",
extension: "zip",
});
add("zip", ["0x50", "0x4B", "0x07", "0x08"], {
exports.add("zip", ["0x50", "0x4B", "0x07", "0x08"], {
mime: "application/zip",
extension: "zip",
});
add("jar", ["0x50", "0x4B", "0x03", "0x04"], {
exports.add("jar", ["0x50", "0x4B", "0x03", "0x04"], {
mime: "application/java-archive",
extension: "jar",
});
add("jar", ["0x50", "0x4B", "0x05", "0x06"], {
exports.add("jar", ["0x50", "0x4B", "0x05", "0x06"], {
mime: "application/java-archive",
extension: "jar",
});
add("jar", ["0x50", "0x4B", "0x07", "0x08"], {
exports.add("jar", ["0x50", "0x4B", "0x07", "0x08"], {
mime: "application/java-archive",
extension: "jar",
});
add("odt", ["0x50", "0x4B", "0x03", "0x04"], {
exports.add("odt", ["0x50", "0x4B", "0x03", "0x04"], {
mime: "application/vnd.oasis.opendocument.text",
extension: "odt",
});
add("odt", ["0x50", "0x4B", "0x05", "0x06"], {
exports.add("odt", ["0x50", "0x4B", "0x05", "0x06"], {
mime: "application/vnd.oasis.opendocument.text",
extension: "odt",
});
add("odt", ["0x50", "0x4B", "0x07", "0x08"], {
exports.add("odt", ["0x50", "0x4B", "0x07", "0x08"], {
mime: "application/vnd.oasis.opendocument.text",
extension: "odt",
});
add("ods", ["0x50", "0x4B", "0x03", "0x04"], {
exports.add("ods", ["0x50", "0x4B", "0x03", "0x04"], {
mime: "application/vnd.oasis.opendocument.spreadsheet",
extension: "ods",
});
add("ods", ["0x50", "0x4B", "0x05", "0x06"], {
exports.add("ods", ["0x50", "0x4B", "0x05", "0x06"], {
mime: "application/vnd.oasis.opendocument.spreadsheet",
extension: "ods",
});
add("ods", ["0x50", "0x4B", "0x07", "0x08"], {
exports.add("ods", ["0x50", "0x4B", "0x07", "0x08"], {
mime: "application/vnd.oasis.opendocument.spreadsheet",
extension: "ods",
});
add("odp", ["0x50", "0x4B", "0x03", "0x04"], {
exports.add("odp", ["0x50", "0x4B", "0x03", "0x04"], {
mime: "application/vnd.oasis.opendocument.presentation",
extension: "odp",
});
add("odp", ["0x50", "0x4B", "0x05", "0x06"], {
exports.add("odp", ["0x50", "0x4B", "0x05", "0x06"], {
mime: "application/vnd.oasis.opendocument.presentation",
extension: "odp",
});
add("odp", ["0x50", "0x4B", "0x07", "0x08"], {
exports.add("odp", ["0x50", "0x4B", "0x07", "0x08"], {
mime: "application/vnd.oasis.opendocument.presentation",
extension: "odp",
});
add("docx", ["0x50", "0x4B", "0x03", "0x04"], {
exports.add("docx", ["0x50", "0x4B", "0x03", "0x04"], {
mime: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
extension: "docx",
});
add("docx", ["0x50", "0x4B", "0x05", "0x06"], {
exports.add("docx", ["0x50", "0x4B", "0x05", "0x06"], {
mime: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
extension: "docx",
});
add("docx", ["0x50", "0x4B", "0x07", "0x08"], {
exports.add("docx", ["0x50", "0x4B", "0x07", "0x08"], {
mime: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
extension: "docx",
});
add("xlsx", ["0x50", "0x4B", "0x03", "0x04"], {
exports.add("xlsx", ["0x50", "0x4B", "0x03", "0x04"], {
mime: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
extension: "xlsx",
});
add("xlsx", ["0x50", "0x4B", "0x05", "0x06"], {
exports.add("xlsx", ["0x50", "0x4B", "0x05", "0x06"], {
mime: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
extension: "xlsx",
});
add("xlsx", ["0x50", "0x4B", "0x07", "0x08"], {
exports.add("xlsx", ["0x50", "0x4B", "0x07", "0x08"], {
mime: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
extension: "xlsx",
});
add("pptx", ["0x50", "0x4B", "0x03", "0x04"], {
exports.add("pptx", ["0x50", "0x4B", "0x03", "0x04"], {
mime: "application/vnd.openxmlformats-officedocument.presentationml.presentation",
extension: "pptx",
});
add("pptx", ["0x50", "0x4B", "0x05", "0x06"], {
exports.add("pptx", ["0x50", "0x4B", "0x05", "0x06"], {
mime: "application/vnd.openxmlformats-officedocument.presentationml.presentation",
extension: "pptx",
});
add("pptx", ["0x50", "0x4B", "0x07", "0x08"], {
exports.add("pptx", ["0x50", "0x4B", "0x07", "0x08"], {
mime: "application/vnd.openxmlformats-officedocument.presentationml.presentation",
extension: "pptx",
});
add("vsdx", ["0x50", "0x4B", "0x03", "0x04"], {
exports.add("vsdx", ["0x50", "0x4B", "0x03", "0x04"], {
mime: "application/vnd.ms-visio.drawing",
extension: "vsdx",
});
add("vsdx", ["0x50", "0x4B", "0x05", "0x06"], {
exports.add("vsdx", ["0x50", "0x4B", "0x05", "0x06"], {
mime: "application/vnd.ms-visio.drawing",
extension: "vsdx",
});
add("vsdx", ["0x50", "0x4B", "0x07", "0x08"], {
exports.add("vsdx", ["0x50", "0x4B", "0x07", "0x08"], {
mime: "application/vnd.ms-visio.drawing",
extension: "vsdx",
});
add("apk", ["0x50", "0x4B", "0x03", "0x04"], {
exports.add("apk", ["0x50", "0x4B", "0x03", "0x04"], {
mime: "application/vnd.android.package-archive",
extension: "apk",
});
add("apk", ["0x50", "0x4B", "0x05", "0x06"], {
exports.add("apk", ["0x50", "0x4B", "0x05", "0x06"], {
mime: "application/vnd.android.package-archive",
extension: "apk",
});
add("apk", ["0x50", "0x4B", "0x07", "0x08"], {
exports.add("apk", ["0x50", "0x4B", "0x07", "0x08"], {
mime: "application/vnd.android.package-archive",
extension: "apk",
});
add("aar", ["0x50", "0x4B", "0x03", "0x04"], {
exports.add("aar", ["0x50", "0x4B", "0x03", "0x04"], {
mime: "application/vnd.android.package-archive",
extension: "aar",
});
add("aar", ["0x50", "0x4B", "0x05", "0x06"], {
exports.add("aar", ["0x50", "0x4B", "0x05", "0x06"], {
mime: "application/vnd.android.package-archive",
extension: "aar",
});
add("aar", ["0x50", "0x4B", "0x07", "0x08"], {
exports.add("aar", ["0x50", "0x4B", "0x07", "0x08"], {
mime: "application/vnd.android.package-archive",
extension: "aar",
});
add("rar", ["0x52", "0x61", "0x72", "0x21", "0x1A", "0x07", "0x00"], {
exports.add("rar", ["0x52", "0x61", "0x72", "0x21", "0x1A", "0x07", "0x00"], {
mime: "application/vnd.rar",
extension: "rar",
});
add("rar", ["0x52", "0x61", "0x72", "0x21", "0x1A", "0x07", "0x01", "0x00"], {
exports.add("rar", ["0x52", "0x61", "0x72", "0x21", "0x1A", "0x07", "0x01", "0x00"], {
mime: "application/vnd.rar",
extension: "rar",
});
add("rar", ["0x7F", "0x45", "0x4C", "0x46"], {
exports.add("rar", ["0x7F", "0x45", "0x4C", "0x46"], {
mime: "application/vnd.rar",
extension: "rar",
});
add("png", ["0x89", "0x50", "0x4E", "0x47", "0x0D", "0x0A", "0x1A", "0x0A"], {
exports.add("png", ["0x89", "0x50", "0x4E", "0x47", "0x0D", "0x0A", "0x1A", "0x0A"], {
mime: "image/png",
extension: "png",
});
add("apng", ["0x89", "0x50", "0x4E", "0x47", "0x0D", "0x0A", "0x1A", "0x0A"], {
exports.add("apng", ["0x89", "0x50", "0x4E", "0x47", "0x0D", "0x0A", "0x1A", "0x0A"], {
mime: "image/apng",
extension: "apng",
});
add("class", ["0xCA", "0xFE", "0xBA", "0xBE"]);
add("class", ["0xEF", "0xBB", "0xBF"]);
add("class", ["0xFE", "0xed", "0xFA", "0xCE"], undefined, 0x1000);
add("class", ["0xFE", "0xed", "0xFA", "0xCF"], undefined, 0x1000);
add("class", ["0xCE", "0xFA", "0xed", "0xFE"]);
add("class", ["0xCF", "0xFA", "0xed", "0xFE"]);
add("class", ["0xFF", "0xFE"]);
add("class", ["0xFF", "0xFE"]);
add("class", ["0xFF", "0xFE", "0x00", "0x00"]);
add("ps", ["0x25", "0x21", "0x50", "0x53"], {
exports.add("class", ["0xCA", "0xFE", "0xBA", "0xBE"]);
exports.add("class", ["0xEF", "0xBB", "0xBF"]);
exports.add("class", ["0xFE", "0xed", "0xFA", "0xCE"], undefined, 0x1000);
exports.add("class", ["0xFE", "0xed", "0xFA", "0xCF"], undefined, 0x1000);
exports.add("class", ["0xCE", "0xFA", "0xed", "0xFE"]);
exports.add("class", ["0xCF", "0xFA", "0xed", "0xFE"]);
exports.add("class", ["0xFF", "0xFE"]);
exports.add("class", ["0xFF", "0xFE"]);
exports.add("class", ["0xFF", "0xFE", "0x00", "0x00"]);
exports.add("ps", ["0x25", "0x21", "0x50", "0x53"], {
mime: "application/postscript",
extension: ".ps"
extension: ".ps",
});
add("pdf", ["0x25", "0x50", "0x44", "0x46"], {
exports.add("pdf", ["0x25", "0x50", "0x44", "0x46"], {
mime: "application/pdf",
extension: "pdf",
});
add("asf", [
exports.add("asf", [
"0x30",
"0x26",
"0xB2",
@@ -527,7 +529,7 @@ add("asf", [
"0xCE",
"0x6C",
]);
add("wma", [
exports.add("wma", [
"0x30",
"0x26",
"0xB2",
@@ -545,7 +547,7 @@ add("wma", [
"0xCE",
"0x6C",
]);
add("wmv", [
exports.add("wmv", [
"0x30",
"0x26",
"0xB2",
@@ -563,7 +565,7 @@ add("wmv", [
"0xCE",
"0x6C",
]);
add("deploymentimage", [
exports.add("deploymentimage", [
"0x24",
"0x53",
"0x44",
@@ -574,7 +576,7 @@ add("deploymentimage", [
"0x31",
]);
// ogg video ' theora'
add("ogv", [
exports.add("ogv", [
"0x4F",
"0x67",
"0x67",
@@ -615,7 +617,7 @@ add("ogv", [
extension: "ogv",
});
// ogg video '\x01video'
add("ogm", [
exports.add("ogm", [
"0x4F",
"0x67",
"0x67",
@@ -656,7 +658,7 @@ add("ogm", [
extension: "ogm",
});
// ogg audio ' FLAC'
add("oga", [
exports.add("oga", [
"0x4F",
"0x67",
"0x67",
@@ -695,7 +697,7 @@ add("oga", [
extension: "oga",
});
// ogg audio 'Speex '
add("spx", [
exports.add("spx", [
"0x4F",
"0x67",
"0x67",
@@ -736,7 +738,7 @@ add("spx", [
extension: "spx",
});
// ogg audio '\x01vorbis '
add("ogg", [
exports.add("ogg", [
"0x4F",
"0x67",
"0x67",
@@ -777,16 +779,16 @@ add("ogg", [
extension: "ogg",
});
// default OGG container
add("ogx", ["0x4F", "0x67", "0x67", "0x53"], {
exports.add("ogx", ["0x4F", "0x67", "0x67", "0x53"], {
mime: "application/ogg",
extension: "ogx",
});
add("psd", ["0x38", "0x42", "0x50", "0x53"], {
exports.add("psd", ["0x38", "0x42", "0x50", "0x53"], {
mime: "application/x-photoshop",
extension: "psd",
});
add("clip", ["0x43", "0x53", "0x46", "0x43", "0x48", "0x55", "0x4e", "0x4b"]);
add("wav", [
exports.add("clip", ["0x43", "0x53", "0x46", "0x43", "0x48", "0x55", "0x4e", "0x4b"]);
exports.add("wav", [
"0x52",
"0x49",
"0x46",
@@ -800,7 +802,7 @@ add("wav", [
"0x56",
"0x45",
], { mime: "audio/x-wav", extension: "wav" });
add("avi", [
exports.add("avi", [
"0x52",
"0x49",
"0x46",
@@ -814,39 +816,39 @@ add("avi", [
"0x49",
"0x20",
], { mime: "video/x-msvideo", extension: "avi" });
add("mp3", ["0xFF", "0xFB"], { mime: "audio/mpeg", extension: "mp3" });
add("mp3", ["0xFF", "0xF3"], { mime: "audio/mpeg", extension: "mp3" });
add("mp3", ["0xFF", "0xF2"], { mime: "audio/mpeg", extension: "mp3" });
add("mp3", ["0x49", "0x44", "0x33"], { mime: "audio/mpeg", extension: "mp3" });
add("bmp", ["0x42", "0x4D"], { mime: "image/bmp", extension: "bmp" });
add("iso", ["0x43", "0x44", "0x30", "0x30", "0x31"]);
add("flac", ["0x66", "0x4C", "0x61", "0x43"]);
add("mid", ["0x4D", "0x54", "0x68", "0x64"], {
exports.add("mp3", ["0xFF", "0xFB"], { mime: "audio/mpeg", extension: "mp3" });
exports.add("mp3", ["0xFF", "0xF3"], { mime: "audio/mpeg", extension: "mp3" });
exports.add("mp3", ["0xFF", "0xF2"], { mime: "audio/mpeg", extension: "mp3" });
exports.add("mp3", ["0x49", "0x44", "0x33"], { mime: "audio/mpeg", extension: "mp3" });
exports.add("bmp", ["0x42", "0x4D"], { mime: "image/bmp", extension: "bmp" });
exports.add("iso", ["0x43", "0x44", "0x30", "0x30", "0x31"]);
exports.add("flac", ["0x66", "0x4C", "0x61", "0x43"]);
exports.add("mid", ["0x4D", "0x54", "0x68", "0x64"], {
mime: "audio/midi",
extension: "mid",
});
add("midi", ["0x4D", "0x54", "0x68", "0x64"], {
exports.add("midi", ["0x4D", "0x54", "0x68", "0x64"], {
mime: "audio/midi",
extension: "midi",
});
add("doc", ["0xD0", "0xCF", "0x11", "0xE0", "0xA1", "0xB1", "0x1A", "0xE1"], {
exports.add("doc", ["0xD0", "0xCF", "0x11", "0xE0", "0xA1", "0xB1", "0x1A", "0xE1"], {
mime: "application/msword",
extension: "doc",
});
add("xls", ["0xD0", "0xCF", "0x11", "0xE0", "0xA1", "0xB1", "0x1A", "0xE1"], {
exports.add("xls", ["0xD0", "0xCF", "0x11", "0xE0", "0xA1", "0xB1", "0x1A", "0xE1"], {
mime: "application/vnd.ms-excel",
extension: "xls",
});
add("ppt", ["0xD0", "0xCF", "0x11", "0xE0", "0xA1", "0xB1", "0x1A", "0xE1"], {
exports.add("ppt", ["0xD0", "0xCF", "0x11", "0xE0", "0xA1", "0xB1", "0x1A", "0xE1"], {
mime: "application/vnd.ms-powerpoint",
extension: "ppt",
});
add("msg", ["0xD0", "0xCF", "0x11", "0xE0", "0xA1", "0xB1", "0x1A", "0xE1"]);
add("dex", ["0x64", "0x65", "0x78", "0x0A", "0x30", "0x33", "0x35", "0x00"]);
add("vmdk", ["0x4B", "0x44", "0x4D"]);
add("crx", ["0x43", "0x72", "0x32", "0x34"]);
add("fh8", ["0x41", "0x47", "0x44", "0x33"]);
add("cwk", [
exports.add("msg", ["0xD0", "0xCF", "0x11", "0xE0", "0xA1", "0xB1", "0x1A", "0xE1"]);
exports.add("dex", ["0x64", "0x65", "0x78", "0x0A", "0x30", "0x33", "0x35", "0x00"]);
exports.add("vmdk", ["0x4B", "0x44", "0x4D"]);
exports.add("crx", ["0x43", "0x72", "0x32", "0x34"]);
exports.add("fh8", ["0x41", "0x47", "0x44", "0x33"]);
exports.add("cwk", [
"0x05",
"0x07",
"0x00",
@@ -870,7 +872,7 @@ add("cwk", [
"0x00",
"0x01",
]);
add("cwk", [
exports.add("cwk", [
"0x06",
"0x07",
"0xE1",
@@ -894,27 +896,27 @@ add("cwk", [
"0x00",
"0x01",
]);
add("toast", ["0x45", "0x52", "0x02", "0x00", "0x00", "0x00"]);
add("toast", ["0x8B", "0x45", "0x52", "0x02", "0x00", "0x00", "0x00"]);
add("dmg", ["0x78", "0x01", "0x73", "0x0D", "0x62", "0x62", "0x60"]);
add("xar", ["0x78", "0x61", "0x72", "0x21"]);
add("dat", ["0x50", "0x4D", "0x4F", "0x43", "0x43", "0x4D", "0x4F", "0x43"]);
add("nes", ["0x4E", "0x45", "0x53", "0x1A"]);
add("tar", ["0x75", "0x73", "0x74", "0x61", "0x72", "0x00", "0x30", "0x30"], {
exports.add("toast", ["0x45", "0x52", "0x02", "0x00", "0x00", "0x00"]);
exports.add("toast", ["0x8B", "0x45", "0x52", "0x02", "0x00", "0x00", "0x00"]);
exports.add("dmg", ["0x78", "0x01", "0x73", "0x0D", "0x62", "0x62", "0x60"]);
exports.add("xar", ["0x78", "0x61", "0x72", "0x21"]);
exports.add("dat", ["0x50", "0x4D", "0x4F", "0x43", "0x43", "0x4D", "0x4F", "0x43"]);
exports.add("nes", ["0x4E", "0x45", "0x53", "0x1A"]);
exports.add("tar", ["0x75", "0x73", "0x74", "0x61", "0x72", "0x00", "0x30", "0x30"], {
// As per Mozilla documentation available at:
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
// or wikipedia page:
// https://en.wikipedia.org/wiki/List_of_archive_formats
mime: "application/x-tar",
extension: "tar"
extension: "tar",
}, 0x101);
add("tar", ["0x75", "0x73", "0x74", "0x61", "0x72", "0x20", "0x20", "0x00"], {
exports.add("tar", ["0x75", "0x73", "0x74", "0x61", "0x72", "0x20", "0x20", "0x00"], {
mime: "application/x-tar",
extension: "tar"
extension: "tar",
}, 0x101);
add("tox", ["0x74", "0x6F", "0x78", "0x33"]);
add("mlv", ["0x4D", "0x4C", "0x56", "0x49"]);
add("windowsupdate", [
exports.add("tox", ["0x74", "0x6F", "0x78", "0x33"]);
exports.add("mlv", ["0x4D", "0x4C", "0x56", "0x49"]);
exports.add("windowsupdate", [
"0x44",
"0x43",
"0x4D",
@@ -924,131 +926,131 @@ add("windowsupdate", [
"0x33",
"0x30",
]);
add("7z", ["0x37", "0x7A", "0xBC", "0xAF", "0x27", "0x1C"], {
exports.add("7z", ["0x37", "0x7A", "0xBC", "0xAF", "0x27", "0x1C"], {
mime: "application/x-7z-compressed",
extension: "7z",
});
add("gz", ["0x1F", "0x8B"], { mime: "application/gzip", extension: "gz" });
add("tar.gz", ["0x1F", "0x8B"], {
exports.add("gz", ["0x1F", "0x8B"], { mime: "application/gzip", extension: "gz" });
exports.add("tar.gz", ["0x1F", "0x8B"], {
mime: "application/gzip",
extension: "tar.gz",
});
add("xz", ["0xFD", "0x37", "0x7A", "0x58", "0x5A", "0x00", "0x00"], {
exports.add("xz", ["0xFD", "0x37", "0x7A", "0x58", "0x5A", "0x00", "0x00"], {
mime: "application/gzip",
extension: "xz",
});
add("tar.xz", ["0xFD", "0x37", "0x7A", "0x58", "0x5A", "0x00", "0x00"], {
exports.add("tar.xz", ["0xFD", "0x37", "0x7A", "0x58", "0x5A", "0x00", "0x00"], {
mime: "application/gzip",
extension: "tar.xz",
});
add("lz2", ["0x04", "0x22", "0x4D", "0x18"]);
add("cab", ["0x4D", "0x53", "0x43", "0x46"]);
add("mkv", ["0x1A", "0x45", "0xDF", "0xA3"], {
exports.add("lz2", ["0x04", "0x22", "0x4D", "0x18"]);
exports.add("cab", ["0x4D", "0x53", "0x43", "0x46"]);
exports.add("mkv", ["0x1A", "0x45", "0xDF", "0xA3"], {
mime: "video/x-matroska",
extension: "mkv",
});
add("mka", ["0x1A", "0x45", "0xDF", "0xA3"], {
exports.add("mka", ["0x1A", "0x45", "0xDF", "0xA3"], {
mime: "audio/x-matroska",
extension: "mka",
});
add("mks", ["0x1A", "0x45", "0xDF", "0xA3"], {
exports.add("mks", ["0x1A", "0x45", "0xDF", "0xA3"], {
mime: "video/x-matroska",
extension: "mks",
});
add("mk3d", ["0x1A", "0x45", "0xDF", "0xA3"]);
add("webm", ["0x1A", "0x45", "0xDF", "0xA3"], {
exports.add("mk3d", ["0x1A", "0x45", "0xDF", "0xA3"]);
exports.add("webm", ["0x1A", "0x45", "0xDF", "0xA3"], {
mime: "audio/webm",
extension: "webm",
});
add("dcm", ["0x44", "0x49", "0x43", "0x4D"], undefined, 0x80);
add("xml", ["0x3C", "0x3f", "0x78", "0x6d", "0x6C", "0x20"], {
exports.add("dcm", ["0x44", "0x49", "0x43", "0x4D"], undefined, 0x80);
exports.add("xml", ["0x3C", "0x3f", "0x78", "0x6d", "0x6C", "0x20"], {
mime: "application/xml",
extension: "xml",
});
add("wasm", ["0x00", "0x61", "0x73", "0x6d"], {
exports.add("wasm", ["0x00", "0x61", "0x73", "0x6d"], {
mime: "application/wasm",
extension: "wasm",
});
add("lep", ["0xCF", "0x84", "0x01"]);
add("swf", ["0x43", "0x57", "0x53"], {
exports.add("lep", ["0xCF", "0x84", "0x01"]);
exports.add("swf", ["0x43", "0x57", "0x53"], {
mime: "application/x-shockwave-flash",
extension: "swf",
});
add("swf", ["0x46", "0x57", "0x53"], {
exports.add("swf", ["0x46", "0x57", "0x53"], {
mime: "application/x-shockwave-flash",
extension: "swf",
});
add("deb", ["0x21", "0x3C", "0x61", "0x72", "0x63", "0x68", "0x3E"]);
add("rtf", ["0x7B", "0x5C", "0x72", "0x74", "0x66", "0x31"], {
exports.add("deb", ["0x21", "0x3C", "0x61", "0x72", "0x63", "0x68", "0x3E"]);
exports.add("rtf", ["0x7B", "0x5C", "0x72", "0x74", "0x66", "0x31"], {
mime: "application/rtf",
extension: "rtf",
});
add("m2p", ["0x00", "0x00", "0x01", "0xBA"]);
add("vob", ["0x00", "0x00", "0x01", "0xBA"]);
add("mpg", ["0x00", "0x00", "0x01", "0xBA"], {
exports.add("m2p", ["0x00", "0x00", "0x01", "0xBA"]);
exports.add("vob", ["0x00", "0x00", "0x01", "0xBA"]);
exports.add("mpg", ["0x00", "0x00", "0x01", "0xBA"], {
mime: "video/mpeg",
extension: "mpg",
});
add("mpeg", ["0x00", "0x00", "0x01", "0xBA"], {
exports.add("mpeg", ["0x00", "0x00", "0x01", "0xBA"], {
mime: "video/mpeg",
extension: "mpeg",
});
add("mpeg", ["0x47"], { mime: "video/mpeg", extension: "mpeg" });
add("mpeg", ["0x00", "0x00", "0x01", "0xB3"], {
exports.add("mpeg", ["0x47"], { mime: "video/mpeg", extension: "mpeg" });
exports.add("mpeg", ["0x00", "0x00", "0x01", "0xB3"], {
mime: "video/mpeg",
extension: "mpeg",
});
// mov 'free' TODO: find test file
add("mov", ["0x66", "0x72", "0x65", "0x65"], {
exports.add("mov", ["0x66", "0x72", "0x65", "0x65"], {
mime: "video/quicktime",
extension: "mov",
}, 0x4);
// mov 'mdat'
add("mov", ["0x6D", "0x64", "0x61", "0x74"], {
exports.add("mov", ["0x6D", "0x64", "0x61", "0x74"], {
mime: "video/quicktime",
extension: "mov",
}, 0x4);
// mov 'moov' TODO: find test file
add("mov", ["0x6D", "0x6F", "0x6F", "0x76"], {
exports.add("mov", ["0x6D", "0x6F", "0x6F", "0x76"], {
mime: "video/quicktime",
extension: "mov",
}, 0x4);
// move 'wide' TODO: find test file
add("mov", ["0x77", "0x69", "0x64", "0x65"], {
exports.add("mov", ["0x77", "0x69", "0x64", "0x65"], {
mime: "video/quicktime",
extension: "mov",
}, 0x4);
// mov 'ftypqt'
add("mov", ["0x66", "0x74", "0x79", "0x70", "0x71", "0x74"], {
exports.add("mov", ["0x66", "0x74", "0x79", "0x70", "0x71", "0x74"], {
mime: "video/quicktime",
extension: "mov",
}, 0x4);
add("hl2demo", ["0x48", "0x4C", "0x32", "0x44", "0x45", "0x4D", "0x4F"]);
add("txt", ["0xEF", "0xBB", "0xBF"], {
exports.add("hl2demo", ["0x48", "0x4C", "0x32", "0x44", "0x45", "0x4D", "0x4F"]);
exports.add("txt", ["0xEF", "0xBB", "0xBF"], {
mime: "text/plain; charset=UTF-8",
extension: "txt",
});
add("txt", ["0xFF", "0xFE"], {
exports.add("txt", ["0xFF", "0xFE"], {
mime: "text/plain; charset=UTF-16LE",
extension: "txt",
});
add("txt", ["0xFE", "0xFF"], {
exports.add("txt", ["0xFE", "0xFF"], {
mime: "text/plain; charset=UTF-16BE",
extension: "txt",
});
add("txt", ["0xFF", "0xFE", "0x00", "0x00"], {
exports.add("txt", ["0xFF", "0xFE", "0x00", "0x00"], {
mime: "text/plain; charset=UTF-32LE",
extension: "txt",
});
add("txt", ["0x00", "0x00", "0xFE", "0xFF"], {
exports.add("txt", ["0x00", "0x00", "0xFE", "0xFF"], {
mime: "text/plain; charset=UTF-32BE",
extension: "txt",
});
add("SubRip", ["0x31", "0x0D", "0x0A", "0x30", "0x30", "0x3A"], {
exports.add("SubRip", ["0x31", "0x0D", "0x0A", "0x30", "0x30", "0x3A"], {
mime: "application/x-subrip",
extension: "srt",
});
add("WebVTT", [
exports.add("WebVTT", [
"0xEF",
"0xBB",
"0xBF",
@@ -1063,7 +1065,7 @@ add("WebVTT", [
mime: "text/vtt",
extension: "vtt",
});
add("WebVTT", [
exports.add("WebVTT", [
"0xEF",
"0xBB",
"0xBF",
@@ -1078,7 +1080,7 @@ add("WebVTT", [
mime: "text/vtt",
extension: "vtt",
});
add("WebVTT", [
exports.add("WebVTT", [
"0xEF",
"0xBB",
"0xBF",
@@ -1093,7 +1095,7 @@ add("WebVTT", [
mime: "text/vtt",
extension: "vtt",
});
add("WebVTT", [
exports.add("WebVTT", [
"0xEF",
"0xBB",
"0xBF",
@@ -1108,48 +1110,54 @@ add("WebVTT", [
mime: "text/vtt",
extension: "vtt",
});
add("WebVTT", ["0x57", "0x45", "0x42", "0x56", "0x54", "0x54", "0x0A"], {
exports.add("WebVTT", ["0x57", "0x45", "0x42", "0x56", "0x54", "0x54", "0x0A"], {
mime: "text/vtt",
extension: "vtt",
});
add("WebVTT", ["0x57", "0x45", "0x42", "0x56", "0x54", "0x54", "0x0D"], {
exports.add("WebVTT", ["0x57", "0x45", "0x42", "0x56", "0x54", "0x54", "0x0D"], {
mime: "text/vtt",
extension: "vtt",
});
add("WebVTT", ["0x57", "0x45", "0x42", "0x56", "0x54", "0x54", "0x20"], {
exports.add("WebVTT", ["0x57", "0x45", "0x42", "0x56", "0x54", "0x54", "0x20"], {
mime: "text/vtt",
extension: "vtt",
});
add("WebVTT", ["0x57", "0x45", "0x42", "0x56", "0x54", "0x54", "0x09"], {
exports.add("WebVTT", ["0x57", "0x45", "0x42", "0x56", "0x54", "0x54", "0x09"], {
mime: "text/vtt",
extension: "vtt",
});
add("Json", ["0x7B"], {
exports.add("Json", ["0x7B"], {
mime: "application/json",
extension: ".json",
});
add("Json", ["0x5B"], {
exports.add("Json", ["0x5B"], {
mime: "application/json",
extension: ".json",
});
add("ELF", ["0x7F", "0x45", "0x4C", "0x46"], {
exports.add("ELF", ["0x7F", "0x45", "0x4C", "0x46"], {
mime: "application/x-executable",
extension: ".elf",
});
add("Mach-O", ["0xFE", "0xED", "0xFA", "0xC"], {
exports.add("Mach-O", ["0xFE", "0xED", "0xFA", "0xC"], {
mime: "application/x-mach-binary",
extension: ".o",
});
add("Mach-O", ["0xFE", "0xED", "0xFA", "0xCF"], {
exports.add("Mach-O", ["0xFE", "0xED", "0xFA", "0xCF"], {
mime: "application/x-executable",
extension: "elf",
});
add("EML", ["0x52", "0x65", "0x63", "0x65", "0x69", "0x76", "0x65", "0x64", "0x3A"], {
exports.add("EML", ["0x52", "0x65", "0x63", "0x65", "0x69", "0x76", "0x65", "0x64", "0x3A"], {
mime: "message/rfc822",
extension: ".eml",
});
add("SVG", ["0x3c", "0x73", "0x76", "0x67"], {
exports.add("SVG", ["0x3c", "0x73", "0x76", "0x67"], {
mime: "image/svg+xml",
extension: "svg",
});
exports.add("avif", ["0x66", "0x74", "0x79", "0x70", "0x61", "0x76", "0x69", "0x66"], {
mime: "image/avif",
extension: "avif",
}, 4);
const createTree = () => tree;
exports.createTree = createTree;
exports.default = () => tree;

View File

@@ -1 +1 @@
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/model/tree.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe,GAAG;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,oBAAY,OAAO,GAAG,eAAe,GAAG;IACtC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,oBAAY,WAAW,GAAG,IAAI,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,oBAAY,IAAI,GAAG;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,oBAAY,IAAI,GAAG;IACjB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE;QACL,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC;CACH,CAAC;AAEF,oBAAY,IAAI,GAAG;IACjB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE;QAAE,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CACxC,CAAC;AAcF,eAAO,MAAM,KAAK,SAAU,OAAO,QAAQ,IAAI,KAAG,IAoCjD,CAAC;AAEF,eAAO,MAAM,UAAU,aACX,MAAM,SACT,MAAM,EAAE,8BAEd,OAEF,CAAC;AAEF,eAAO,MAAM,iBAAiB,aAClB,MAAM,SACT,MAAM,EAAE,8BAEd,IAoBF,CAAC"}
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/model/tree.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe,GAAG;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,oBAAY,OAAO,GAAG,eAAe,GAAG;IACtC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,oBAAY,WAAW,GAAG,IAAI,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,oBAAY,IAAI,GAAG;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,oBAAY,IAAI,GAAG;IACjB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE;QACL,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC;CACH,CAAC;AAEF,oBAAY,IAAI,GAAG;IACjB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE;QAAE,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CACxC,CAAC;AAYF,eAAO,MAAM,KAAK,SAAU,OAAO,QAAQ,IAAI,KAAG,IA4BjD,CAAC;AAEF,eAAO,MAAM,UAAU,aACX,MAAM,SACT,MAAM,EAAE,8BAEd,OAEF,CAAC;AAEF,eAAO,MAAM,iBAAiB,aAClB,MAAM,SACT,MAAM,EAAE,8BAEd,IAmBF,CAAC"}

View File

@@ -6,22 +6,19 @@ const createMatch = (leaf) => ({
mime: leaf.info.mime,
extension: leaf.info.extension,
});
const isMatchingNode = (tree, path) => tree && path.length === 0;
const head = (arr) => arr[0];
const tail = (arr) => arr.slice(1, arr.length);
const isLeafNode = (tree, path) => tree && path.length === 0;
const merge = (node, tree) => {
if (node.bytes.length === 0)
return tree;
const currentByte = head(node.bytes); // 0
const path = tail(node.bytes); // [1,2]
const [currentByte, ...path] = node.bytes;
const currentTree = tree.bytes[currentByte];
// traversed to end. Just add key to leaf.
if (isMatchingNode(currentTree, path)) {
if (isLeafNode(currentTree, path)) {
const matchingNode = tree.bytes[currentByte];
tree.bytes[currentByte] = {
...matchingNode,
matches: [
...(matchingNode.matches ? matchingNode.matches : []),
...(matchingNode.matches ?? []),
createMatch(node),
],
};
@@ -30,14 +27,9 @@ const merge = (node, tree) => {
// Path exists already, Merge subtree
if (tree.bytes[currentByte]) {
tree.bytes[currentByte] = exports.merge(exports.createNode(node.typename, path, node.info), tree.bytes[currentByte]);
return tree;
}
// Tree did not exist before
if (!tree.bytes[currentByte]) {
tree.bytes[currentByte] = {
...tree.bytes[currentByte],
...exports.createComplexNode(node.typename, path, node.info),
};
else { // Tree did not exist before
tree.bytes[currentByte] = exports.createComplexNode(node.typename, path, node.info);
}
return tree;
};
@@ -51,8 +43,7 @@ const createComplexNode = (typename, bytes, info) => {
bytes: {},
matches: undefined,
};
const currentKey = head(bytes); // 0
const path = tail(bytes); // [1,2]
const [currentKey, ...path] = bytes;
if (bytes.length === 0) {
return {
matches: [