efront 4.29.1 → 4.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/#/345/233/275/351/231/205/345/214/226.yml +9 -0
- package/apps/pivot/main.js +2 -1
- package/coms/compile/Javascript.js +4 -0
- package/coms/compile/Javascript_test.js +3 -2
- package/coms/compile/Program.js +16 -2
- package/coms/compile/common.js +8 -20
- package/coms/compile/common_test.js +1 -0
- package/coms/docs/helps.js +1 -0
- package/coms/kugou/krc.js +3 -2
- package/coms/kugou/musicList.js +9 -0
- package/coms/zimoli/hookmedia.js +29 -0
- package/coms/zimoli/vbox.js +7 -2
- package/package.json +1 -1
- package/public/efront.js +1 -1
- package/public//346/226/207/344/273/266/347/263/273/347/273/237//344/270/273/351/241/265.jsp +2 -2
- package/coms/basic/concatByte.js +0 -15
- package/coms/basic/decodePack.js +0 -203
- package/coms/basic/decodeRange.js +0 -68
- package/coms/basic/encodePack.h +0 -9
- package/coms/basic/encodePack.js +0 -301
- package/coms/basic/encodeRange.h +0 -17
- package/coms/basic/encodeRange.js +0 -107
- package/coms/basic/encodeRange_test.js +0 -40
- package/coms/basic/readBinary.asm +0 -77
- package/coms/basic/readBinary.js +0 -31
- package/coms/basic/writeBinary.js +0 -37
|
@@ -40,6 +40,15 @@
|
|
|
40
40
|
- zh-CN: 禁用
|
|
41
41
|
en: Disable
|
|
42
42
|
|
|
43
|
+
- zh-CN: 压缩算法不支持
|
|
44
|
+
en: Compression algorithm not supported
|
|
45
|
+
|
|
46
|
+
- zh-CN: 数据解码异常!
|
|
47
|
+
en: Data decoding exception!
|
|
48
|
+
|
|
49
|
+
- zh-CN: 压缩到zip文件
|
|
50
|
+
en: Compress to zip file
|
|
51
|
+
|
|
43
52
|
- zh-CN: 无法下载!
|
|
44
53
|
en: Cannot download!
|
|
45
54
|
|
package/apps/pivot/main.js
CHANGED
|
@@ -7,7 +7,8 @@ i18n.setReloader(function () {
|
|
|
7
7
|
zimoli.reload(false);
|
|
8
8
|
});
|
|
9
9
|
data.loadConfig("api.yml");
|
|
10
|
-
user.loginPath = '
|
|
10
|
+
user.loginPath = 'pivot$login';
|
|
11
|
+
pivot$login;
|
|
11
12
|
cross.addReform(relogin(user.loginPath))
|
|
12
13
|
data.setReporter(function (m, t) {
|
|
13
14
|
alert(m, t);
|
|
@@ -220,6 +220,10 @@ var fixType = function (o) {
|
|
|
220
220
|
type = EXPRESS;
|
|
221
221
|
break;
|
|
222
222
|
}
|
|
223
|
+
if (last.type === EXPRESS && last === queue[queue.length - 1]) {
|
|
224
|
+
type = STRAP;
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
223
227
|
var qp = queue.prev;
|
|
224
228
|
if (qp?.type === STRAP && qp.text === 'await') qp = qp.prev;
|
|
225
229
|
if (qp?.type === STRAP && qp.text === 'for') type = STRAP;
|
|
@@ -59,9 +59,9 @@ var ts = new Javascript;
|
|
|
59
59
|
ts.straps.push('interface', 'implements', "declare", "module", "readonly", "enum", 'type');
|
|
60
60
|
ts.tags[0].push("{")
|
|
61
61
|
ts.lbtype = false;
|
|
62
|
-
var testTypescript = function (text) {
|
|
62
|
+
var testTypescript = function (text, exp = text) {
|
|
63
63
|
var s = scanner2(text, ts);
|
|
64
|
-
return assert(s.toString(),
|
|
64
|
+
return assert(s.toString(), exp);
|
|
65
65
|
}
|
|
66
66
|
testTypescript(`const strict: Omit<typeof assert, 'equal' | 'notEqual' | 'deepEqual' | 'notDeepEqual' | 'ok' | 'strictEqual' | 'deepStrictEqual' | 'ifError' | 'strict'> & {
|
|
67
67
|
(value: unknown, message?: string | Error): asserts value;
|
|
@@ -124,6 +124,7 @@ a ? function () {} : function () {}
|
|
|
124
124
|
declare module 'buffer' {}
|
|
125
125
|
a <= 1;
|
|
126
126
|
`)
|
|
127
|
+
testTypescript(`;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r)`, "; (t = ~~t) < 0 ? (t += r) < 0 && (t = 0) : t > r && (t = r)")
|
|
127
128
|
testTypescript(`
|
|
128
129
|
var a: TypeA
|
|
129
130
|
var a: TypeA, b: TypeB
|
package/coms/compile/Program.js
CHANGED
|
@@ -852,7 +852,7 @@ class Program {
|
|
|
852
852
|
}
|
|
853
853
|
}
|
|
854
854
|
else if (stamp_reg.test(m) && last) {
|
|
855
|
-
if (last.type === STAMP &&
|
|
855
|
+
if (last.type === STAMP && last === cache_stamp && powermap.hasOwnProperty(last.text + m)) break test;
|
|
856
856
|
if (last.istype || last.isprop || last.isargl) {
|
|
857
857
|
isTypeTag = true;
|
|
858
858
|
}
|
|
@@ -891,6 +891,10 @@ class Program {
|
|
|
891
891
|
case EXPRESS:
|
|
892
892
|
break test;
|
|
893
893
|
case SCOPED:
|
|
894
|
+
if (last.isExpress && powermap[m] <= powermap["++"]) {
|
|
895
|
+
break test;
|
|
896
|
+
}
|
|
897
|
+
console.log(last.isExpress, queue.inExpress, last.entry, last.prev?.text, m);
|
|
894
898
|
if (queue.inExpress && !iscomment) break test;
|
|
895
899
|
break;
|
|
896
900
|
case STAMP:
|
|
@@ -952,6 +956,7 @@ class Program {
|
|
|
952
956
|
continue;
|
|
953
957
|
}
|
|
954
958
|
if (space_reg.test(m)) {
|
|
959
|
+
if (cache_stamp) push_stamp();
|
|
955
960
|
if (/[\r\n\u2028\u2029]/.test(m)) {
|
|
956
961
|
if (last && last.isend === false) {
|
|
957
962
|
last.isend = true;
|
|
@@ -1109,6 +1114,15 @@ class Program {
|
|
|
1109
1114
|
}
|
|
1110
1115
|
}
|
|
1111
1116
|
if (!last || last.type !== STRAP && last.isExpress || last.transive) queue.inExpress = true;
|
|
1117
|
+
else if (last.type === STAMP) {
|
|
1118
|
+
if (last.text === "*") {
|
|
1119
|
+
var lp = last.prev;
|
|
1120
|
+
if (lp.type !== STRAP || !/^(async|function)$/.test(lp.text)) queue.inExpress = true;
|
|
1121
|
+
}
|
|
1122
|
+
else {
|
|
1123
|
+
queue.inExpress = true;
|
|
1124
|
+
}
|
|
1125
|
+
}
|
|
1112
1126
|
scope.isExpress = queue.inExpress;
|
|
1113
1127
|
scope.inExpress = true;
|
|
1114
1128
|
}
|
|
@@ -1159,7 +1173,7 @@ class Program {
|
|
|
1159
1173
|
var last = queue.last || queue;
|
|
1160
1174
|
console.warn(
|
|
1161
1175
|
"代码异常结束", createString(origin.slice(0, 30)),
|
|
1162
|
-
`\r\n - 祖先标记: ${parents.slice(1).map(p =>
|
|
1176
|
+
`\r\n - 祖先标记: ${parents.slice(1).map(p => `${p.entry || ""}<red2>${p.tag || p.text || ""}</red2><gray>${p.row}:${p.col}</gray>`).join('')}`,
|
|
1163
1177
|
`\r\n - 内层入口: <yellow>${this.mindpath}</yellow>:${last.row}:${last.col} ${last.text || last.entry}`,
|
|
1164
1178
|
`\r\n ----- 快照: ${createString(pickAssignment(queue.last || queue))}`,
|
|
1165
1179
|
);
|
package/coms/compile/common.js
CHANGED
|
@@ -886,32 +886,20 @@ var createScoped = function (parsed, wash) {
|
|
|
886
886
|
else if (isArraw) {
|
|
887
887
|
var n = skipAssignment(o);
|
|
888
888
|
scoped.arraw = o;
|
|
889
|
-
var u = o;
|
|
890
889
|
while (o !== n) {
|
|
891
890
|
var n1 = run(o, 0);
|
|
892
|
-
if (
|
|
891
|
+
if (n1 === o || n1?.entry === "{") o = getnext(n1);
|
|
893
892
|
else o = n1;
|
|
894
893
|
}
|
|
895
894
|
}
|
|
896
895
|
else {
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
if (
|
|
903
|
-
|
|
904
|
-
var p = getprev(o);
|
|
905
|
-
if (o.type === STAMP && /^(\+\+|\-\-)$/.test(o.text) && p?.type === EXPRESS
|
|
906
|
-
|| (VALUE | QUOTED | SCOPED) & o.type
|
|
907
|
-
|| EXPRESS === o.type && !needfoot_reg.test(o.text)) {
|
|
908
|
-
if ((VALUE | QUOTED | PROPERTY | LABEL) & n.type) break;
|
|
909
|
-
if (EXPRESS === n.type && !/^[\.\[]/.test(n.text)) break;
|
|
910
|
-
if (n.type === SCOPED && n.brace) break;
|
|
911
|
-
if (n.type === STRAP && !n.isExpress) break;
|
|
912
|
-
}
|
|
913
|
-
o = n;
|
|
914
|
-
} while (o);
|
|
896
|
+
var n = skipAssignment(o);
|
|
897
|
+
var n1 = o;
|
|
898
|
+
while (n1 && n1 !== n) {
|
|
899
|
+
o = n1;
|
|
900
|
+
n1 = run(n1, 0);
|
|
901
|
+
if (n1) n1 = getnext(n1);
|
|
902
|
+
}
|
|
915
903
|
}
|
|
916
904
|
var map = isFunction ? vars : lets;
|
|
917
905
|
var keepscope = !!scoped.body || !!scoped.head;
|
|
@@ -43,3 +43,4 @@ testPickSentence(`if(a)try{}catch{} else if(a);`, 0, "if (a) try {} catch {} els
|
|
|
43
43
|
assert(common.createString(common.pickArgument(scanner2(`a={a:1,c:d}`)[2][4])), 'c: d')
|
|
44
44
|
assert(common.createString(common.pickArgument(scanner2(`a=class{a=1\r\nc=d}`)[3][4])), 'c = d')
|
|
45
45
|
assert(common.createString(common.pickArgument(scanner2(`(a=1,c=d)`)[0][4])), 'c = d')
|
|
46
|
+
assert(scanner2(`for (let len of codeLengths) if (len) count[len]++;`).envs, { len: undefined })
|
package/coms/docs/helps.js
CHANGED
|
@@ -42,6 +42,7 @@ var helps = [
|
|
|
42
42
|
["-", i18n`从可执行文件的扫描路径中移除指定的路径`, "pathxrm PATHNAME"],
|
|
43
43
|
["-", i18n`设置远程访问的密码`, "password"],
|
|
44
44
|
["-", i18n`创建windows平台的一键安装包`, "packwin|packexe PUBLIC_PATH PACKAGE_PATH"],
|
|
45
|
+
["-", i18n`压缩到zip文件`, "packzip|zip PUBLIC_PATH PACKAGE_PATH"],
|
|
45
46
|
["-", i18n`从压缩文件提取源文件`, "unpack PACKAGE_PATH PUBLIC_PATH"]
|
|
46
47
|
];
|
|
47
48
|
helps.forEach((h, cx) => {
|
package/coms/kugou/krc.js
CHANGED
|
@@ -129,7 +129,7 @@ function createLRC(lrc) {
|
|
|
129
129
|
krcList.rows = saved_rows;
|
|
130
130
|
return krcList;
|
|
131
131
|
}
|
|
132
|
-
|
|
132
|
+
var metadata = hookmedia() || document;
|
|
133
133
|
function setClass(krcList, index) {
|
|
134
134
|
var ele = krcList[index];
|
|
135
135
|
krcList.slice(0, index).map(function (a, cx, arr) {
|
|
@@ -139,7 +139,8 @@ function setClass(krcList, index) {
|
|
|
139
139
|
removeClass(ele, "after before after-active before-active");
|
|
140
140
|
addClass(krcList[index - 1], 'before-active');
|
|
141
141
|
addClass(ele, "active");
|
|
142
|
-
if (ele.innerText)
|
|
142
|
+
if (ele.innerText) metadata.title = ele.innerText;
|
|
143
|
+
else metadata.title = '';
|
|
143
144
|
krcList.slice(index + 1).map(function (a) {
|
|
144
145
|
removeClass(a, "before active after-active before-active");
|
|
145
146
|
addClass(a, "after");
|
package/coms/kugou/musicList.js
CHANGED
|
@@ -16,6 +16,8 @@ var isSameSong = function (m1, m2) {
|
|
|
16
16
|
m1.url && String(m1.url).replace(/#[\s\S]*$/, '') === String(m2.url).replace(/#[\s\S]*$/, '');
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
+
var metadata = hookmedia();
|
|
20
|
+
|
|
19
21
|
function addMethod(name, func) {
|
|
20
22
|
Object.defineProperty(musicList, name, {
|
|
21
23
|
value: func,
|
|
@@ -29,6 +31,13 @@ addMethod("setActive", function (m) {
|
|
|
29
31
|
}
|
|
30
32
|
actived = m;
|
|
31
33
|
}
|
|
34
|
+
if (actived && metadata) {
|
|
35
|
+
metadata.title = actived.songName || actived.name || actived.title;
|
|
36
|
+
metadata.artist = actived.singerName || actived.singer;
|
|
37
|
+
if (actived.avatar) metadata.artwork = [{
|
|
38
|
+
src: actived.avatar
|
|
39
|
+
}]
|
|
40
|
+
}
|
|
32
41
|
});
|
|
33
42
|
addMethod("remove", function (music) {
|
|
34
43
|
for (var cx = this.length - 1; cx >= 0; cx--) {
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
var hooked = false;
|
|
2
|
+
var keydown = code => function () {
|
|
3
|
+
var event = document.createEvent("KeyboardEvent");
|
|
4
|
+
Object.defineProperty(event, 'keyCode', { value: code });
|
|
5
|
+
event.initEvent("keydown", false, false);
|
|
6
|
+
dispatch(window, event);
|
|
7
|
+
};
|
|
8
|
+
try {
|
|
9
|
+
var { mediaSession } = navigator;
|
|
10
|
+
} catch { }
|
|
11
|
+
if (!mediaSession) return function () { };
|
|
12
|
+
var metadata = window.MediaMetadata ? new window.MediaMetadata : null;
|
|
13
|
+
return function () {
|
|
14
|
+
if (hooked) return metadata;
|
|
15
|
+
hooked = true;
|
|
16
|
+
var Next = 176;
|
|
17
|
+
var Prev = 177;
|
|
18
|
+
var pause = 179;
|
|
19
|
+
var play = 179;
|
|
20
|
+
var volumeup = 175;
|
|
21
|
+
var volumedown = 174;
|
|
22
|
+
var mute = 173;
|
|
23
|
+
mediaSession.setActionHandler('play', keydown(play));
|
|
24
|
+
mediaSession.setActionHandler('pause', keydown(pause));
|
|
25
|
+
mediaSession.setActionHandler("nexttrack", keydown(Next));
|
|
26
|
+
mediaSession.setActionHandler("previoustrack", keydown(Prev));
|
|
27
|
+
if (metadata) mediaSession.metadata = metadata;
|
|
28
|
+
return metadata;
|
|
29
|
+
};
|
package/coms/zimoli/vbox.js
CHANGED
|
@@ -148,12 +148,17 @@ function ybox(generator) {
|
|
|
148
148
|
var wheelTime = 0;
|
|
149
149
|
onmousewheel(_box, function (event) {
|
|
150
150
|
event.preventDefault();
|
|
151
|
-
|
|
152
|
-
|
|
151
|
+
var isNew = event.timeStamp - wheelTime > 120;
|
|
152
|
+
wheelTime = event.timeStamp;
|
|
153
|
+
var absY = Math.abs(event.deltaY);
|
|
154
|
+
if (isNew && absY < 12) {
|
|
153
155
|
return;
|
|
154
156
|
}
|
|
155
157
|
if (event.moveLocked) return;
|
|
156
158
|
var deltay = -event.deltaY;
|
|
159
|
+
if (isNew && absY > 80 && (absY | 0) === absY) {
|
|
160
|
+
deltay /= 3;
|
|
161
|
+
}
|
|
157
162
|
if (!deltay && _box.bindX) deltay = -event.deltaX;
|
|
158
163
|
event.moveLocked = true;
|
|
159
164
|
var box;
|