-
Notifications
You must be signed in to change notification settings - Fork 1
/
main.js
95 lines (84 loc) · 2.49 KB
/
main.js
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
const path = require('path');
const fs = require('fs');
let jsSource = [
'./draw.js',
'./syntax.js',
'./infoc/infoc.js',
'./anim.js'
];
let cssSource = [
'./draw.css',
'./syntax.css',
'./infoc/infoc.css',
'./anim.css'
];
if(fs.existsSync(path.join(__dirname, './src')) == false) {
try {
fs.mkdirSync(path.join(__dirname, './build'));
}
catch(e) {
console.error('A célmappa létrehozására nincs jogosultság', e);
process.exit(-1);
}
}
console.info('CSS fájlok egyesítése\n');
let cssFile = '';
for(let i = 0; i < cssSource.length; i++) {
try {
console.info(cssSource[i] + ' - ' + (parseInt(((i+1) / cssSource.length) * 10000) / 100))
cssFile += '/*' + cssSource[i] + '*/\n\n' + fs.readFileSync(path.join(__dirname, './src', cssSource[i])).toString() + '\n\n\n';
}
catch(e) {
console.error('A forrásfájl nem megnyitható: ' + cssSource[i], e);
process.exit(-1);
}
}
try {
fs.writeFileSync(path.join(__dirname, './build', 'default.css'), cssFile);
}
catch(e) {
console.error('A célmappában nincs írási jogosultság', e);
process.exit(-1);
}
console.info('\nJavaScript fájlok egyesítése\n');
let jsFile = '';
for(let i = 0; i < jsSource.length; i++) {
try {
console.info(jsSource[i] + ' - ' + (parseInt(((i+1) / jsSource.length) * 10000) / 100))
jsFile += '/*' + jsSource[i] + '*/\n\n' + fs.readFileSync(path.join(__dirname, './src', jsSource[i])).toString() + '\n\n\n';
}
catch(e) {
console.error('A forrásfájl nem megnyitható: ' + jsSource[i], e);
process.exit(-1);
}
}
try {
jsFile = require('btoa')(encodeURIComponent(jsFile).replace(/%([0-9A-F]{2})/g, function(match, p1) {
return String.fromCharCode('0x' + p1);
}));
}
catch(e) {
console.error('A forrásfájl nem kódolható', e);
process.exit(-1);
}
let outFile = `
var featureDetect = 'atob(btoa(1)); let A = class {constructor(){} F(){}}; let B = class extends A {constructor(){super();} F(){super.F();} *G() {yield 0;}}; let C = function*() {yield;};';
try {
eval(featureDetect);
window.eval(decodeURIComponent(Array.prototype.map.call(atob('${jsFile}'), function(c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join('')));
}
catch(e) {
console.log(e);
alert('A böngésző sajnos már nem támogatott. Frissítsen újabbra.');
}
`;
try {
fs.writeFileSync(path.join(__dirname, './build', 'index.js'), outFile);
}
catch(e) {
console.error('A célmappában nincs írási jogosultság', e);
process.exit(-1);
}
console.info('\nSikeres fordítás\n\n')