Skip to content

Commit 7245b1e

Browse files
author
Frank Stokes
committed
Code for eipsode
0 parents  commit 7245b1e

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

index.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
const zero = '+[]';
2+
const one = '+!![]';
3+
4+
const number = n => {
5+
if (n === 0) return zero;
6+
return Array.from({length: n}, () => one).join(' + ');
7+
}
8+
9+
// C
10+
11+
const map = {};
12+
13+
const fromString = s =>s.split('').map(x => {
14+
if (!(x in map)) {
15+
const charCode = x.charCodeAt(0);
16+
return `([]+[])[${fromString('constructor')}][${fromString('fromCharCode')}](${number(charCode)})`;
17+
}
18+
return map[x];
19+
}).join('+');
20+
21+
map.a = `(+{}+[])[${number(1)}]`;
22+
map.b = `({}+[])[${number(2)}]`;
23+
map.o = `({}+[])[${number(1)}]`;
24+
map.e = `({}+[])[${number(4)}]`;
25+
map.c = `({}+[])[${number(5)}]`;
26+
map.t = `({}+[])[${number(6)}]`;
27+
map[' '] = `({}+[])[${number(7)}]`;
28+
map.f = `(![]+[])[${number(0)}]`;
29+
map.s = `(![]+[])[${number(3)}]`;
30+
map.r = `(!![]+[])[${number(1)}]`;
31+
map.u = `(!![]+[])[${number(2)}]`;
32+
map.i = `((+!![]/+[])+[])[${number(3)}]`;
33+
map.n = `((+!![]/+[])+[])[${number(4)}]`;
34+
map.S = `([]+([]+[])[${fromString('constructor')}])[${number(9)}]`;
35+
map.g = `([]+([]+[])[${fromString('constructor')}])[${number(14)}]`;
36+
map.p = `([]+(/-/)[${fromString('constructor')}])[${number(14)}]`;
37+
map['\\'] = `(/\\\\/+[])[${number(1)}]`;
38+
map.d = `(${number(13)})[${fromString('toString')}](${number(14)})`;
39+
map.h = `(${number(17)})[${fromString('toString')}](${number(18)})`;
40+
map.m = `(${number(22)})[${fromString('toString')}](${number(23)})`;
41+
map.C = `((()=>{})[${fromString('constructor')}](${fromString('return escape')})()(${map['\\']}))[${number(2)}]`;
42+
43+
const compile = code => `(()=>{})[${fromString('constructor')}](${fromString(code)})()`;
44+
45+
console.log(compile('console.log("Hello world!");'));

output.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)