Files
vendoo/lib/categories.mjs
T
Masterluke77andGitHub 6f48827f4d Vendoo 1.41.2 – Git Ignore Boundary & Module Tracking Hotfix (#18)
* docs: prepare Vendoo 1.41.2 git-ignore boundary hotfix

* fix: track native source modules with root-anchored runtime ignores
2026-07-09 17:09:00 +02:00

360 lines
17 KiB
JavaScript

const CATEGORIES = {
vinted: [
{ id: 5, name: 'Damen', children: [
{ id: 1904, name: 'Kleidung', children: [
{ id: 1, name: 'Tops & T-Shirts' }, { id: 2, name: 'Pullover & Strickjacken' },
{ id: 3, name: 'Blusen & Hemden' }, { id: 4, name: 'Kleider' }, { id: 6, name: 'Röcke' },
{ id: 7, name: 'Hosen & Leggings' }, { id: 8, name: 'Jeans' }, { id: 9, name: 'Jacken & Mäntel' },
{ id: 10, name: 'Anzüge & Blazer' }, { id: 11, name: 'Sportbekleidung' }, { id: 12, name: 'Bademode' },
{ id: 13, name: 'Unterwäsche & Nachtwäsche' }, { id: 15, name: 'Overalls & Jumpsuits' },
{ id: 1226, name: 'Shorts' },
]},
{ id: 1905, name: 'Schuhe', children: [
{ id: 17, name: 'Sneaker' }, { id: 18, name: 'Stiefel & Stiefeletten' },
{ id: 19, name: 'Pumps & High Heels' }, { id: 20, name: 'Sandalen' }, { id: 21, name: 'Ballerinas' },
{ id: 23, name: 'Sportschuhe' },
]},
{ id: 1906, name: 'Taschen', children: [
{ id: 25, name: 'Handtaschen' }, { id: 26, name: 'Umhängetaschen' }, { id: 27, name: 'Rucksäcke' },
{ id: 28, name: 'Clutches' }, { id: 29, name: 'Geldbörsen & Etuis' },
]},
{ id: 1907, name: 'Accessoires', children: [
{ id: 31, name: 'Schmuck' }, { id: 32, name: 'Uhren' }, { id: 33, name: 'Sonnenbrillen' },
{ id: 34, name: 'Schals & Tücher' }, { id: 35, name: 'Gürtel' }, { id: 36, name: 'Mützen & Hüte' },
]},
{ id: 1919, name: 'Pflege & Kosmetik', children: [
{ id: 38, name: 'Makeup' }, { id: 39, name: 'Hautpflege' }, { id: 41, name: 'Parfum' },
]},
]},
{ id: 1206, name: 'Herren', children: [
{ id: 1908, name: 'Kleidung', children: [
{ id: 50, name: 'T-Shirts & Poloshirts' }, { id: 51, name: 'Pullover & Hoodies' },
{ id: 52, name: 'Hemden' }, { id: 53, name: 'Hosen' }, { id: 54, name: 'Jeans' },
{ id: 55, name: 'Shorts' }, { id: 56, name: 'Jacken & Mäntel' }, { id: 57, name: 'Anzüge & Sakkos' },
{ id: 58, name: 'Sportbekleidung' }, { id: 60, name: 'Unterwäsche & Nachtwäsche' },
]},
{ id: 1909, name: 'Schuhe', children: [
{ id: 62, name: 'Sneaker' }, { id: 63, name: 'Stiefel & Stiefeletten' },
{ id: 64, name: 'Business-Schuhe' }, { id: 65, name: 'Sandalen' }, { id: 66, name: 'Sportschuhe' },
]},
{ id: 1910, name: 'Taschen', children: [
{ id: 68, name: 'Rucksäcke' }, { id: 69, name: 'Umhängetaschen' }, { id: 71, name: 'Geldbörsen' },
]},
{ id: 1911, name: 'Accessoires', children: [
{ id: 72, name: 'Uhren' }, { id: 73, name: 'Sonnenbrillen' }, { id: 74, name: 'Krawatten & Fliegen' },
{ id: 75, name: 'Gürtel' }, { id: 76, name: 'Mützen & Hüte' }, { id: 78, name: 'Schmuck' },
]},
]},
{ id: 1207, name: 'Kinder', children: [
{ id: 1912, name: 'Mädchen-Kleidung', children: [
{ id: 100, name: 'Tops & T-Shirts' }, { id: 102, name: 'Kleider & Röcke' },
{ id: 103, name: 'Hosen & Jeans' }, { id: 104, name: 'Jacken & Mäntel' },
]},
{ id: 1913, name: 'Jungen-Kleidung', children: [
{ id: 110, name: 'Tops & T-Shirts' }, { id: 111, name: 'Pullover & Hoodies' },
{ id: 112, name: 'Hosen & Jeans' }, { id: 113, name: 'Jacken & Mäntel' },
]},
{ id: 1915, name: 'Kinderschuhe', children: [
{ id: 130, name: 'Sneaker' }, { id: 131, name: 'Stiefel' }, { id: 132, name: 'Sandalen' },
]},
{ id: 1916, name: 'Spielzeug', children: [
{ id: 140, name: 'Puppen' }, { id: 142, name: 'Bausteine' }, { id: 143, name: 'Kuscheltiere' },
{ id: 144, name: 'Brettspiele & Puzzles' },
]},
]},
{ id: 1208, name: 'Haus & Wohnen', children: [
{ id: 1917, name: 'Dekoration', children: [
{ id: 200, name: 'Bilder & Poster' }, { id: 201, name: 'Kerzen' }, { id: 202, name: 'Vasen' },
]},
{ id: 245, name: 'Küche', children: [
{ id: 210, name: 'Geschirr' }, { id: 211, name: 'Gläser & Tassen' }, { id: 213, name: 'Küchengeräte' },
]},
{ id: 246, name: 'Textilien', children: [
{ id: 220, name: 'Bettwäsche' }, { id: 222, name: 'Kissen & Decken' }, { id: 223, name: 'Teppiche' },
]},
{ id: 247, name: 'Möbel', children: [
{ id: 230, name: 'Regale' }, { id: 231, name: 'Tische' }, { id: 232, name: 'Stühle' },
]},
]},
{ id: 1209, name: 'Unterhaltung', children: [
{ id: 249, name: 'Bücher', children: [
{ id: 300, name: 'Romane' }, { id: 301, name: 'Sachbücher' }, { id: 303, name: 'Comics & Manga' },
]},
{ id: 251, name: 'Spiele & Konsolen', children: [
{ id: 320, name: 'Videospiele' }, { id: 321, name: 'Konsolen' }, { id: 323, name: 'Brettspiele' },
]},
{ id: 252, name: 'Sport', children: [
{ id: 330, name: 'Fitnessgeräte' }, { id: 331, name: 'Fahrräder' }, { id: 332, name: 'Camping' },
]},
]},
{ id: 1210, name: 'Elektronik', children: [
{ id: 253, name: 'Handys', children: [
{ id: 400, name: 'iPhones' }, { id: 401, name: 'Samsung' }, { id: 402, name: 'Sonstige Smartphones' },
{ id: 403, name: 'Handyhüllen & Zubehör' },
]},
{ id: 254, name: 'Computer & Tablets', children: [
{ id: 410, name: 'Laptops' }, { id: 411, name: 'Tablets' }, { id: 414, name: 'NAS & Server' },
{ id: 417, name: 'PC-Zubehör' },
]},
{ id: 255, name: 'Foto & Kamera', children: [
{ id: 420, name: 'Digitalkameras' }, { id: 422, name: 'Kamerazubehör' },
]},
{ id: 256, name: 'Audio & HiFi', children: [
{ id: 430, name: 'Kopfhörer' }, { id: 431, name: 'Lautsprecher' },
]},
]},
],
'ebay-ka': [
{ id: 'mode', name: 'Mode & Beauty', children: [
{ id: 'damen', name: 'Damenmode', children: [
{ id: 'dk1', name: 'Oberteile & T-Shirts' }, { id: 'dk2', name: 'Kleider' },
{ id: 'dk3', name: 'Hosen & Jeans' }, { id: 'dk4', name: 'Jacken & Mäntel' },
{ id: 'dk5', name: 'Pullover & Strickwaren' }, { id: 'dk6', name: 'Schuhe' },
{ id: 'dk7', name: 'Taschen' }, { id: 'dk8', name: 'Accessoires' },
]},
{ id: 'herren', name: 'Herrenmode', children: [
{ id: 'hk1', name: 'T-Shirts & Hemden' }, { id: 'hk2', name: 'Hosen & Jeans' },
{ id: 'hk3', name: 'Jacken & Mäntel' }, { id: 'hk4', name: 'Pullover & Hoodies' },
{ id: 'hk5', name: 'Schuhe' }, { id: 'hk6', name: 'Accessoires' },
]},
{ id: 'beauty', name: 'Beauty & Gesundheit', children: [
{ id: 'bk1', name: 'Parfum' }, { id: 'bk2', name: 'Hautpflege' }, { id: 'bk3', name: 'Makeup' },
]},
]},
{ id: 'elektronik', name: 'Elektronik', children: [
{ id: 'handy', name: 'Handy & Telefon', children: [
{ id: 'ek1', name: 'Smartphones' }, { id: 'ek2', name: 'Zubehör' },
]},
{ id: 'pc', name: 'PC & Zubehör', children: [
{ id: 'ek3', name: 'Notebooks & Laptops' }, { id: 'ek4', name: 'PCs & Desktops' },
{ id: 'ek5', name: 'Monitore' }, { id: 'ek6', name: 'Netzwerk & Server' },
{ id: 'ek7', name: 'Drucker & Scanner' }, { id: 'ek8', name: 'Zubehör' },
]},
{ id: 'audio', name: 'Audio & HiFi', children: [
{ id: 'ek9', name: 'Kopfhörer' }, { id: 'ek10', name: 'Lautsprecher' }, { id: 'ek11', name: 'HiFi-Anlagen' },
]},
{ id: 'foto', name: 'Foto & Kamera', children: [
{ id: 'ek12', name: 'Digitalkameras' }, { id: 'ek13', name: 'Objektive' }, { id: 'ek14', name: 'Zubehör' },
]},
{ id: 'tv', name: 'TV & Video', children: [
{ id: 'ek15', name: 'Fernseher' }, { id: 'ek16', name: 'Streaming' },
]},
{ id: 'konsolen', name: 'Konsolen & Spiele', children: [
{ id: 'ek17', name: 'Konsolen' }, { id: 'ek18', name: 'Spiele' }, { id: 'ek19', name: 'Zubehör' },
]},
]},
{ id: 'haus', name: 'Haus & Garten', children: [
{ id: 'moebel', name: 'Möbel', children: [
{ id: 'hk1', name: 'Tische' }, { id: 'hk2', name: 'Stühle' }, { id: 'hk3', name: 'Regale & Schränke' },
]},
{ id: 'deko', name: 'Dekoration', children: [
{ id: 'hk4', name: 'Bilder & Poster' }, { id: 'hk5', name: 'Vasen & Kerzen' },
]},
{ id: 'kueche', name: 'Küche', children: [
{ id: 'hk6', name: 'Geschirr' }, { id: 'hk7', name: 'Geräte' },
]},
{ id: 'garten', name: 'Garten', children: [
{ id: 'hk8', name: 'Gartenmöbel' }, { id: 'hk9', name: 'Geräte & Werkzeug' },
]},
]},
{ id: 'kinder', name: 'Familie, Kind & Baby', children: [
{ id: 'kkleidung', name: 'Kinderkleidung', children: [
{ id: 'kk1', name: 'Mädchen' }, { id: 'kk2', name: 'Jungen' }, { id: 'kk3', name: 'Baby' },
]},
{ id: 'spielzeug', name: 'Spielzeug', children: [
{ id: 'kk4', name: 'Lego & Bausteine' }, { id: 'kk5', name: 'Puppen & Figuren' },
{ id: 'kk6', name: 'Brettspiele' }, { id: 'kk7', name: 'Outdoor-Spielzeug' },
]},
]},
{ id: 'freizeit', name: 'Freizeit & Sport', children: [
{ id: 'sport', name: 'Sport', children: [
{ id: 'fk1', name: 'Fitnessgeräte' }, { id: 'fk2', name: 'Fahrräder' },
{ id: 'fk3', name: 'Wintersport' }, { id: 'fk4', name: 'Ballsport' },
]},
{ id: 'buecher', name: 'Bücher & Medien', children: [
{ id: 'fk5', name: 'Bücher' }, { id: 'fk6', name: 'CDs & Vinyl' }, { id: 'fk7', name: 'DVDs & Blu-ray' },
]},
]},
{ id: 'auto', name: 'Auto, Rad & Boot', children: [
{ id: 'azubehoer', name: 'Zubehör & Teile', children: [
{ id: 'ak1', name: 'Reifen & Felgen' }, { id: 'ak2', name: 'Ersatzteile' },
{ id: 'ak3', name: 'Tuning & Styling' },
]},
]},
],
'ebay-de': [
{ id: 'fashion', name: 'Kleidung & Accessoires', children: [
{ id: 'ed-damen', name: 'Damenbekleidung', children: [
{ id: 'ed1', name: 'Tops & Shirts' }, { id: 'ed2', name: 'Kleider' },
{ id: 'ed3', name: 'Hosen' }, { id: 'ed4', name: 'Jacken & Mäntel' },
{ id: 'ed5', name: 'Pullover' }, { id: 'ed6', name: 'Röcke' },
]},
{ id: 'ed-herren', name: 'Herrenbekleidung', children: [
{ id: 'ed7', name: 'T-Shirts' }, { id: 'ed8', name: 'Hemden' },
{ id: 'ed9', name: 'Hosen' }, { id: 'ed10', name: 'Jacken & Mäntel' },
{ id: 'ed11', name: 'Pullover & Hoodies' },
]},
{ id: 'ed-schuhe', name: 'Schuhe', children: [
{ id: 'ed12', name: 'Sneaker' }, { id: 'ed13', name: 'Stiefel' },
{ id: 'ed14', name: 'Sandalen' }, { id: 'ed15', name: 'Businessschuhe' },
]},
{ id: 'ed-acc', name: 'Accessoires', children: [
{ id: 'ed16', name: 'Uhren' }, { id: 'ed17', name: 'Schmuck' },
{ id: 'ed18', name: 'Taschen' }, { id: 'ed19', name: 'Sonnenbrillen' },
]},
]},
{ id: 'computer', name: 'Computer, Tablets & Netzwerk', children: [
{ id: 'ed-pc', name: 'Desktops & All-in-Ones', children: [
{ id: 'ed20', name: 'PC-Systeme' }, { id: 'ed21', name: 'Komponenten' },
]},
{ id: 'ed-nb', name: 'Notebooks & Tablets', children: [
{ id: 'ed22', name: 'Notebooks' }, { id: 'ed23', name: 'Tablets' },
]},
{ id: 'ed-nw', name: 'Netzwerk', children: [
{ id: 'ed24', name: 'Router & Modems' }, { id: 'ed25', name: 'NAS-Server' },
{ id: 'ed26', name: 'Switches & Hubs' },
]},
{ id: 'ed-zubehoer', name: 'Zubehör', children: [
{ id: 'ed27', name: 'Tastaturen & Mäuse' }, { id: 'ed28', name: 'Monitore' },
{ id: 'ed29', name: 'Speicher' }, { id: 'ed30', name: 'Kabel & Adapter' },
]},
]},
{ id: 'handy', name: 'Handys & Kommunikation', children: [
{ id: 'ed-phones', name: 'Smartphones', children: [
{ id: 'ed31', name: 'Apple iPhone' }, { id: 'ed32', name: 'Samsung Galaxy' },
{ id: 'ed33', name: 'Sonstige' },
]},
{ id: 'ed-phzub', name: 'Zubehör', children: [
{ id: 'ed34', name: 'Hüllen & Cover' }, { id: 'ed35', name: 'Ladegeräte' },
{ id: 'ed36', name: 'Displayschutz' },
]},
]},
{ id: 'haus', name: 'Möbel & Wohnen', children: [
{ id: 'ed-moebel', name: 'Möbel', children: [
{ id: 'ed40', name: 'Tische' }, { id: 'ed41', name: 'Stühle' },
{ id: 'ed42', name: 'Regale' }, { id: 'ed43', name: 'Betten' },
]},
{ id: 'ed-deko', name: 'Dekoration', children: [
{ id: 'ed44', name: 'Bilder' }, { id: 'ed45', name: 'Kerzen' }, { id: 'ed46', name: 'Vasen' },
]},
]},
{ id: 'sport', name: 'Sporting Goods', children: [
{ id: 'ed-fitness', name: 'Fitness', children: [
{ id: 'ed50', name: 'Fitnessgeräte' }, { id: 'ed51', name: 'Laufbänder' },
]},
{ id: 'ed-outdoor', name: 'Camping & Outdoor', children: [
{ id: 'ed52', name: 'Zelte' }, { id: 'ed53', name: 'Rucksäcke' },
]},
]},
],
etsy: [
{ id: 'jewel', name: 'Schmuck', children: [
{ id: 'et-rings', name: 'Ringe' }, { id: 'et-necklaces', name: 'Ketten' },
{ id: 'et-earrings', name: 'Ohrringe' }, { id: 'et-bracelets', name: 'Armbänder' },
]},
{ id: 'clothing', name: 'Kleidung', children: [
{ id: 'et-dresses', name: 'Kleider' }, { id: 'et-tops', name: 'Tops & Shirts' },
{ id: 'et-outerwear', name: 'Jacken & Mäntel' }, { id: 'et-pants', name: 'Hosen' },
{ id: 'et-shoes', name: 'Schuhe' }, { id: 'et-accessories', name: 'Accessoires' },
]},
{ id: 'home', name: 'Haus & Wohnen', children: [
{ id: 'et-deco', name: 'Wanddeko & Kunst' }, { id: 'et-furniture', name: 'Möbel' },
{ id: 'et-kitchen', name: 'Küche & Essen' }, { id: 'et-textiles', name: 'Textilien' },
{ id: 'et-candles', name: 'Kerzen & Duft' },
]},
{ id: 'vintage', name: 'Vintage', children: [
{ id: 'et-vclothing', name: 'Vintage Kleidung' }, { id: 'et-vjewelry', name: 'Vintage Schmuck' },
{ id: 'et-vhome', name: 'Vintage Haus & Wohnen' }, { id: 'et-vcollect', name: 'Sammlerstücke' },
]},
{ id: 'craft', name: 'Bastelmaterial', children: [
{ id: 'et-fabric', name: 'Stoffe' }, { id: 'et-beads', name: 'Perlen & Zubehör' },
{ id: 'et-tools', name: 'Werkzeug' }, { id: 'et-patterns', name: 'Schnittmuster' },
]},
{ id: 'art', name: 'Kunst', children: [
{ id: 'et-prints', name: 'Drucke & Poster' }, { id: 'et-painting', name: 'Gemälde' },
{ id: 'et-photo', name: 'Fotografie' }, { id: 'et-sculpture', name: 'Skulpturen' },
]},
{ id: 'gifts', name: 'Geschenke', children: [
{ id: 'et-personal', name: 'Personalisiert' }, { id: 'et-party', name: 'Party & Feier' },
]},
{ id: 'bags', name: 'Taschen & Geldbörsen', children: [
{ id: 'et-handbags', name: 'Handtaschen' }, { id: 'et-backpacks', name: 'Rucksäcke' },
{ id: 'et-wallets', name: 'Geldbörsen' },
]},
{ id: 'electronics', name: 'Elektronik & Zubehör', children: [
{ id: 'et-phonecases', name: 'Handyhüllen' }, { id: 'et-laptopacc', name: 'Laptop-Zubehör' },
{ id: 'et-gadgets', name: 'Gadgets' },
]},
],
};
function flattenTree(tree, path) {
const result = [];
for (const node of tree) {
const currentPath = [...(path || []), node.name];
if (node.children) {
for (const child of node.children) {
const childPath = [...currentPath, child.name];
if (child.children) {
for (const leaf of child.children) {
result.push({
id: leaf.id, name: leaf.name,
path: [...childPath, leaf.name],
pathStr: [...childPath, leaf.name].join(' > '),
search: [...childPath, leaf.name].join(' ').toLowerCase(),
});
}
} else {
result.push({
id: child.id, name: child.name,
path: childPath,
pathStr: childPath.join(' > '),
search: childPath.join(' ').toLowerCase(),
});
}
}
}
}
return result;
}
const flatCache = {};
export function getCategories(platformId) {
return CATEGORIES[platformId] || [];
}
export function getCategoriesFlat(platformId) {
if (!flatCache[platformId]) {
flatCache[platformId] = flattenTree(CATEGORIES[platformId] || []);
}
return flatCache[platformId];
}
export function matchCategories(platformId, query) {
if (!query) return [];
const flat = getCategoriesFlat(platformId);
const q = query.toLowerCase().trim();
const words = q.split(/\s+/);
const scored = flat.map(cat => {
let score = 0;
if (cat.search.includes(q)) score += 100;
if (cat.name.toLowerCase() === q) score += 200;
for (const w of words) {
if (w.length < 2) continue;
if (cat.search.includes(w)) score += 20;
if (cat.name.toLowerCase().includes(w)) score += 30;
}
return { ...cat, score };
}).filter(c => c.score > 0);
scored.sort((a, b) => b.score - a.score);
return scored.slice(0, 15);
}
export function getAllPlatformIds() {
return Object.keys(CATEGORIES);
}