function findSelectors(sel, forceTwo = true) { if (sel === 'theme-dark' || sel.indexOf('-') === -1) return sel; let ret = ''; const selector = sel.split('-')[0]; const matches = mod => mod && typeof mod[selector] === 'string' && mod[selector].split(' ')[0] === sel; if (!forceTwo && matches(ZLibrary.WebpackModules.getByProps(selector))) return console.info(selector), selector; const returns = []; ZLibrary.WebpackModules.find(m => { if (ret || !matches(m)) return false; const keys = Object.keys(m); let args = []; const baseIdx = keys.indexOf(selector); goNegative = baseIdx + 1 >= keys.length; const getNextIdx = idx => { let rr = idx - 1; if (rr === baseIdx) rr--; while (args.indexOf(rr) !== -1) rr--; return rr; }; args.push(getNextIdx(keys.length)); const constructKeysFromArgs = () => { const result = [selector]; for (let i = 0; i < args.length; i++) result.push(keys[args[i]]); return result; }; while (1) { if (args.length > 1) break; const rargs = constructKeysFromArgs(); if (matches(ZLibrary.WebpackModules.getByProps(...rargs))) { const result = []; for (let i = 0; i < args.length; i++) result.push(keys[args[i]]); result.push(selector); const res = result.join(' '); if (returns.indexOf(res) === -1) returns.push(res) else console.warn('Duplicate found'); } const incrementNext = cur => { let newVar = getNextIdx(args[cur]); if (newVar < 0 || newVar >= keys.length) { if (cur === args.length - 1) { const nextNewVar = getNextIdx(keys.length); args.push(nextNewVar); newVar = getNextIdx(nextNewVar); } else { incrementNext(cur + 1); newVar = getNextIdx(args[cur + 1]); } if (newVar < 0 || newVar >= keys.length) throw 'Fuck me'; } args[cur] = newVar; }; try { incrementNext(0); } catch (e) { if (args.length >= keys.length) break; } } return true; }); console.log(`Possible combinations:`); let lastRes = ''; returns.forEach(e => { let args = ''; e.split(' ').forEach((e, i) => { if (i !== 0) args +=', '; args += `'${e}'`; }) const res = ZLibrary.WebpackModules.getByProps(...e.split(' '))[selector]; if (lastRes !== res) { lastRes = res; console.log('Matches for', res); } console.log(`${args}`); }); }