File size: 1,745 Bytes
4fc5db8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
const fs = require('fs');
const html = fs.readFileSync('hermes_overlay/tools/templates/hermes_futures_desk_luxury.html', 'utf8');
const script = html.match(/<script>([\s\S]*?)<\/script>/)[1];

// Extract just the router bits we need, with a fake `window`/`history`/`document`.
const ROUTER_PAGES_MATCH = script.match(/const ROUTER_PAGES=(\[[^\]]*\]);/)[1];
const ROUTER_LEGACY_MATCH = script.match(/const ROUTER_LEGACY_MAP=(\{[^}]*\});/)[1];
const resolveFnMatch = script.match(/function resolvePageFromHash\(\)\{[\s\S]*?\}\n/)[0];

let hash = '';
const window_ = { location: { get hash(){return hash}, set hash(v){hash=v} } };
const fn = new Function('window', ROUTER_PAGES_MATCH.startsWith('[') ?
  `const ROUTER_PAGES=${ROUTER_PAGES_MATCH}; const ROUTER_LEGACY_MAP=${ROUTER_LEGACY_MATCH}; ${resolveFnMatch}; return resolvePageFromHash;` : '');
const resolvePageFromHash = fn(window_);

const cases = [
  ['#market','market'], ['#trade-plan','trade-plan'], ['#signals','signals'],
  ['#advisory','advisory'], ['#account','account'], ['#diagnostics','diagnostics'],
  ['#activity','activity'], ['#data-sources','data-sources'],
  ['#activityCard','activity'], ['#marketCard','market'], ['#planCard','trade-plan'],
  ['#signalsCard','signals'], ['#advisoryCard','advisory'], ['#accountCard','account'],
  ['#insightsCard','diagnostics'], ['#sourcesCard','data-sources'],
  ['', 'market'], ['#nonsense','market']
];
let ok = true;
for (const [h, expected] of cases) {
  window_.location.hash = h;
  const got = resolvePageFromHash();
  const pass = got === expected;
  if (!pass) ok = false;
  console.log((pass?'OK  ':'FAIL'), JSON.stringify(h), '->', got, pass?'':' expected '+expected);
}
console.log(ok ? 'ALL_ROUTES_OK' : 'ROUTE_FAILURES');