UNPKG

5.04 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var fileUtil = require("./tool/FileUtil");
4var fs = require("fs");
5var path = require("path");
6var MainJSHX = /** @class */ (function () {
7 function MainJSHX(jsUrl, toUrl) {
8 this._paramJson = {};
9 this._o2nName = {};
10 var self = this;
11 if (!jsUrl) {
12 console.log('没有填写mian.min.js的保存,请重试');
13 return;
14 }
15 self._jsUrl = jsUrl;
16 self._toUrl = toUrl || jsUrl;
17 self.trans();
18 }
19 MainJSHX.prototype.trans = function () {
20 var self = this;
21 fileUtil.FileUtil.walkDir(path.join(this._jsUrl), self.onFile, null, self);
22 fs.writeFileSync(path.join(this._toUrl, 'o2nName.json'), JSON.stringify(self._o2nName));
23 //转义字符:'\n':换行符 '\t':制表符 '\r':回车
24 self._paramJson['byhescape'] = { linefeed: '\n', tab: '\t', enter: '\r' };
25 fs.writeFileSync(path.join(this._toUrl, 'jsparam.json'), JSON.stringify(self._paramJson));
26 };
27 MainJSHX.prototype.onFile = function (url) {
28 var type = path.basename(url).split('.')[0];
29 var jsStr = fs.readFileSync(url, 'utf-8');
30 var paramVal = 'window.cqjsparammap.' + type;
31 if (jsStr.indexOf(paramVal) >= 0) {
32 console.log(paramVal + '已提取过!!!');
33 return;
34 }
35 var startStr = '(function(){var b=';
36 var endStr = '"];function ';
37 var startIdx = jsStr.indexOf(startStr);
38 if (startIdx == -1) {
39 startStr = '(function(){var g=';
40 startIdx = jsStr.indexOf(startStr);
41 }
42 var headStr = jsStr.slice(0, startIdx - 1);
43 jsStr = this.glcf(headStr) + ';' + jsStr.slice(startIdx);
44 startIdx = jsStr.indexOf(startStr) + startStr.length;
45 var endIdx = jsStr.indexOf(endStr) + 1;
46 var paramStr = '';
47 var char = void 0;
48 while (startIdx <= endIdx) {
49 char = jsStr[startIdx];
50 paramStr += jsStr[startIdx];
51 startIdx++;
52 }
53 this.transJson(paramStr, type);
54 jsStr = jsStr.replace(paramStr, paramVal);
55 jsStr = this.thfz(jsStr, 'particlesys');
56 jsStr = this.thfz(jsStr, 'byh');
57 fs.writeFileSync(url.replace(this._jsUrl, this._toUrl), jsStr);
58 };
59 MainJSHX.prototype.thfz = function (mainjs, name) {
60 var namespace = name + '|| (' + name + '= {})';
61 var byhIdx = mainjs.indexOf(namespace);
62 if (byhIdx >= 0) {
63 while (byhIdx--) {
64 if (mainjs[byhIdx] == ';') {
65 byhIdx++;
66 mainjs = mainjs.slice(0, byhIdx) + 'ssdgregdsrwetyetjh' + fileUtil.FileUtil.replace(mainjs.slice(byhIdx), namespace, name);
67 mainjs = mainjs.replace('ssdgregdsrwetyetjh', namespace + ';');
68 break;
69 }
70 }
71 }
72 return mainjs;
73 };
74 MainJSHX.prototype.glcf = function (str) {
75 var strArr = str.split(',');
76 var newStrArr = [];
77 for (var i = 0, len = strArr.length; i < len; i++) {
78 if (newStrArr.indexOf(strArr[i]) < 0)
79 newStrArr.push(strArr[i]);
80 }
81 var newStr = '';
82 for (var j = 0, len = newStrArr.length; j < len; j++) {
83 if (newStr)
84 newStr += ',';
85 newStr += newStrArr[j];
86 }
87 return newStr;
88 };
89 MainJSHX.prototype.transJson = function (paramsStr, type) {
90 var paramArr = JSON.parse(paramsStr);
91 var fiters = ['ChangeJobNewRder', 'BabelRoleRen', 'CrBossHead', 'CrBossRoleRen', 'CrBossRoleRightRen', 'CrossHSFamilyCar', 'CSPlaysetRender', 'CMovieClip', 'CrSandyEnemyView', 'MnRbEui', 'Dispatcher', 'GameEvent', 'SoulTaskRder', 'SXMagicItm'];
92 var paramStr;
93 var byhArr = [];
94 for (var i = 0, len = paramArr.length; i < len; i++) {
95 paramStr = paramArr[i];
96 if (paramStr.indexOf('byh.') == 0) {
97 var subStrArr = paramStr.split('byh.');
98 var subStr = subStrArr[1];
99 if (fiters.indexOf(subStr) < 0) {
100 byhArr.push(subStr);
101 byhArr.push(paramStr);
102 }
103 }
104 }
105 var idx = 0;
106 var newName;
107 for (var i = 0, len = paramArr.length; i < len; i++) {
108 paramStr = paramArr[i];
109 if (byhArr.indexOf(paramStr) >= 0) {
110 newName = this._o2nName[paramStr];
111 if (!newName) {
112 newName = this._o2nName[paramStr] = 'H_F_' + idx;
113 idx++;
114 }
115 paramArr[i] = newName;
116 }
117 }
118 this._paramJson[type] = paramArr;
119 };
120 return MainJSHX;
121}());
122function run(jsUrl, toUrl) {
123 new MainJSHX(jsUrl, toUrl);
124}
125exports.run = run;