efront 4.35.5 → 4.35.6
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/apps/_index.html +41 -41
- package/apps/blank/index.html +20 -20
- package/apps/noice/index.html +42 -42
- package/apps/pay/paypal.jsp +0 -0
- package/apps/pay/wxpay.jsp +32 -0
- package/apps/pivot/dht/rent.html +14 -0
- package/apps/pivot/dht/rent.js +148 -0
- package/apps/pivot/dht/rent.less +46 -0
- package/apps/pivot/home/desktop.xht +0 -0
- package/apps/pivot/menu.yml +6 -1
- package/apps/pivot/shop/goods/list.xht +183 -0
- package/apps/pivot/shop/home.xht +20 -0
- package/apps/pivot/shop/mind/list.xht +1 -0
- package/apps/pivot/shop/order/create.xht +49 -0
- package/apps/pivot/shop/order/list.xht +1 -0
- package/apps/pivot/shop/paypal.jsp +23 -0
- package/apps/pivot/soft/list.html +0 -0
- package/apps/pivot/soft/list.js +9 -0
- package/apps/pivot/soft/list.less +0 -0
- package/apps/pivot//344/270/273/351/241/265.html +42 -42
- package/coms/7z_temp/Java.js +93 -0
- package/coms/7z_temp/LzmaBench.java +392 -0
- package/coms/7z_temp/read-from-java-code.js +28 -0
- package/coms/7z_temp//350/257/264/346/230/216.md +1 -0
- package/coms/basic/JSAM.js +259 -259
- package/coms/basic/JSAM_test.js +3 -5
- package/coms/basic/check.js +42 -42
- package/coms/basic/color.js +696 -696
- package/coms/basic/crc.js +39 -39
- package/coms/basic/getIndexFromOrderedArray.js +39 -39
- package/coms/basic/isObject.js +3 -3
- package/coms/basic/keys.js +4 -4
- package/coms/basic/lazy.js +78 -78
- package/coms/basic/refilm.js +96 -96
- package/coms/basic/saveToOrderedArray.js +11 -11
- package/coms/basic/strings.js +0 -1
- package/coms/basic_/&pget.js +1 -0
- package/coms/basic_/&pset.js +1 -0
- package/coms/basic_/Proxy.js +6 -0
- package/coms/basic_/Reflect.js +55 -0
- package/coms/compile/autoeval.js +24 -5
- package/coms/compile/autoeval_test.js +5 -1
- package/coms/compile/bracket.js +51 -0
- package/coms/compile/bracket_test.js +9 -0
- package/coms/compile/createvm.js +35 -0
- package/coms/compile/createvm_test.js +7 -0
- package/coms/compile/scanner.js +653 -653
- package/coms/compile/scanner2.js +23 -0
- package/coms/docs/getMimeData_test.js +19 -19
- package/coms/docs/md5.js +173 -173
- package/coms/frame/top.less +190 -190
- package/coms/pivot/DB.js +9 -0
- package/coms/pivot/paypal-var.js +1 -0
- package/coms/pivot//345/225/206/345/223/201.js +1 -0
- package/coms/zimoli/AudioContext_test.html +5 -5
- package/coms/zimoli/AudioContext_test.js +92 -92
- package/coms/zimoli/AudioContext_test.less +114 -114
- package/coms/zimoli/alert_test.js +11 -11
- package/coms/zimoli/dispatch.js +50 -50
- package/coms/zimoli/extendTouchEvent.js +8 -8
- package/coms/zimoli/fullscreen.js +52 -52
- package/coms/zimoli/gallery.less +13 -13
- package/coms/zimoli/gallery_test.html +2 -2
- package/coms/zimoli/gallery_test.js +14 -14
- package/coms/zimoli/gallery_test.less +17 -17
- package/coms/zimoli/getChanged.js +7 -7
- package/coms/zimoli/getChanges.js +13 -13
- package/coms/zimoli/lattice.js +109 -109
- package/coms/zimoli/lattice_test.less +23 -23
- package/coms/zimoli/picture.less +71 -71
- package/coms/zimoli/refilm_test.html +41 -41
- package/coms/zimoli/refilm_test.less +102 -102
- package/coms/zimoli/xml.js +131 -131
- package/data/keystore/cross-cert.pem +21 -21
- package/data/keystore/cross-key.pem +27 -27
- 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/apps/pivot/{tick → ticket}/list.js +0 -0
package/coms/basic/crc.js
CHANGED
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
function table(sign, table = new Array(256)) {
|
|
3
|
-
var c;
|
|
4
|
-
for (var n = 0; n < 256; n++) {
|
|
5
|
-
c = n;
|
|
6
|
-
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
7
|
-
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
8
|
-
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
9
|
-
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
10
|
-
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
11
|
-
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
12
|
-
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
13
|
-
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
14
|
-
table[n] = c;
|
|
15
|
-
}
|
|
16
|
-
return table;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
function crc(bstr, seed) {
|
|
20
|
-
var C = seed ^ -1,
|
|
21
|
-
L = bstr.length - 1;
|
|
22
|
-
for (var i = 0; i < L;) {
|
|
23
|
-
C = C >>> 8 ^ T[(C ^ bstr[i++]) & 0xFF];
|
|
24
|
-
C = C >>> 8 ^ T[(C ^ bstr[i++]) & 0xFF];
|
|
25
|
-
}
|
|
26
|
-
if (i === L) C = C >>> 8 ^ T[(C ^ bstr[i]) & 0xFF];
|
|
27
|
-
return C ^ -1;
|
|
28
|
-
}
|
|
29
|
-
crc.string = function (str) {
|
|
30
|
-
var sum = [];
|
|
31
|
-
for (var i in str) sum[i] = str.charCodeAt(i);
|
|
32
|
-
return crc(sum);
|
|
33
|
-
}
|
|
34
|
-
var sign = parseInt("-52l3vk", 36);
|
|
35
|
-
var T = table(sign);
|
|
36
|
-
crc.table = T;
|
|
37
|
-
crc.init = function (sign) {
|
|
38
|
-
table(sign, T);
|
|
39
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
function table(sign, table = new Array(256)) {
|
|
3
|
+
var c;
|
|
4
|
+
for (var n = 0; n < 256; n++) {
|
|
5
|
+
c = n;
|
|
6
|
+
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
7
|
+
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
8
|
+
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
9
|
+
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
10
|
+
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
11
|
+
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
12
|
+
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
13
|
+
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
14
|
+
table[n] = c;
|
|
15
|
+
}
|
|
16
|
+
return table;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function crc(bstr, seed) {
|
|
20
|
+
var C = seed ^ -1,
|
|
21
|
+
L = bstr.length - 1;
|
|
22
|
+
for (var i = 0; i < L;) {
|
|
23
|
+
C = C >>> 8 ^ T[(C ^ bstr[i++]) & 0xFF];
|
|
24
|
+
C = C >>> 8 ^ T[(C ^ bstr[i++]) & 0xFF];
|
|
25
|
+
}
|
|
26
|
+
if (i === L) C = C >>> 8 ^ T[(C ^ bstr[i]) & 0xFF];
|
|
27
|
+
return C ^ -1;
|
|
28
|
+
}
|
|
29
|
+
crc.string = function (str) {
|
|
30
|
+
var sum = [];
|
|
31
|
+
for (var i in str) sum[i] = str.charCodeAt(i);
|
|
32
|
+
return crc(sum);
|
|
33
|
+
}
|
|
34
|
+
var sign = parseInt("-52l3vk", 36);
|
|
35
|
+
var T = table(sign);
|
|
36
|
+
crc.table = T;
|
|
37
|
+
crc.init = function (sign) {
|
|
38
|
+
table(sign, T);
|
|
39
|
+
};
|
|
40
40
|
module.exports = crc;
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
var getValue = function (o) {
|
|
3
|
-
return isObject(o) && "value" in o ? o.value : o
|
|
4
|
-
};
|
|
5
|
-
var arrayIsLE = function (a, b) {
|
|
6
|
-
var a_length = a.length, b_length = b.length;
|
|
7
|
-
var total = a_length < b_length ? a_length : b_length;
|
|
8
|
-
for (var cx = 0, dx = total; cx < dx; cx++) {
|
|
9
|
-
var a0 = a[cx];
|
|
10
|
-
var b0 = b[cx];
|
|
11
|
-
if (a0 !== b0) return a0 <= b0;
|
|
12
|
-
}
|
|
13
|
-
return a_length <= b_length;
|
|
14
|
-
};
|
|
15
|
-
var isArray = Array.isArray || (a => a instanceof Array);
|
|
16
|
-
var defaultIsLE = (sample, search) => isArray(sample) && isArray(search) ? arrayIsLE(sample, search) : getValue(sample) <= getValue(search);
|
|
17
|
-
/**
|
|
18
|
-
* 读取元素在有序数组中的位置
|
|
19
|
-
* @param {Array} orderArray
|
|
20
|
-
* @param {string|number} searchItem
|
|
21
|
-
*/
|
|
22
|
-
module.exports = function (orderArray, searchItem, isLE = typeof searchItem === "function" ? searchItem : defaultIsLE, findEqual = true) {
|
|
23
|
-
for (var cx = 0, dx = orderArray.length, ci = cx + dx >>> 1; cx < dx; ci = cx + dx >>> 1) {
|
|
24
|
-
var orderItem = orderArray[ci];
|
|
25
|
-
if (isLE(orderItem, searchItem)) {
|
|
26
|
-
cx = ci + 1;
|
|
27
|
-
} else {
|
|
28
|
-
dx = ci;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
if (findEqual && dx <= orderArray.length) {
|
|
32
|
-
var index = dx - 1;
|
|
33
|
-
while (index >= 0 && isLE(searchItem, orderArray[index])) {
|
|
34
|
-
if (orderArray[index] === searchItem) return index;
|
|
35
|
-
index--;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return dx - 1;
|
|
39
|
-
};
|
|
1
|
+
|
|
2
|
+
var getValue = function (o) {
|
|
3
|
+
return isObject(o) && "value" in o ? o.value : o
|
|
4
|
+
};
|
|
5
|
+
var arrayIsLE = function (a, b) {
|
|
6
|
+
var a_length = a.length, b_length = b.length;
|
|
7
|
+
var total = a_length < b_length ? a_length : b_length;
|
|
8
|
+
for (var cx = 0, dx = total; cx < dx; cx++) {
|
|
9
|
+
var a0 = a[cx];
|
|
10
|
+
var b0 = b[cx];
|
|
11
|
+
if (a0 !== b0) return a0 <= b0;
|
|
12
|
+
}
|
|
13
|
+
return a_length <= b_length;
|
|
14
|
+
};
|
|
15
|
+
var isArray = Array.isArray || (a => a instanceof Array);
|
|
16
|
+
var defaultIsLE = (sample, search) => isArray(sample) && isArray(search) ? arrayIsLE(sample, search) : getValue(sample) <= getValue(search);
|
|
17
|
+
/**
|
|
18
|
+
* 读取元素在有序数组中的位置
|
|
19
|
+
* @param {Array} orderArray
|
|
20
|
+
* @param {string|number} searchItem
|
|
21
|
+
*/
|
|
22
|
+
module.exports = function (orderArray, searchItem, isLE = typeof searchItem === "function" ? searchItem : defaultIsLE, findEqual = true) {
|
|
23
|
+
for (var cx = 0, dx = orderArray.length, ci = cx + dx >>> 1; cx < dx; ci = cx + dx >>> 1) {
|
|
24
|
+
var orderItem = orderArray[ci];
|
|
25
|
+
if (isLE(orderItem, searchItem)) {
|
|
26
|
+
cx = ci + 1;
|
|
27
|
+
} else {
|
|
28
|
+
dx = ci;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (findEqual && dx <= orderArray.length) {
|
|
32
|
+
var index = dx - 1;
|
|
33
|
+
while (index >= 0 && isLE(searchItem, orderArray[index])) {
|
|
34
|
+
if (orderArray[index] === searchItem) return index;
|
|
35
|
+
index--;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return dx - 1;
|
|
39
|
+
};
|
package/coms/basic/isObject.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// 用Object.create(null)创建的对象不继承Object,所以用 o instanceof Object可能会出错
|
|
2
|
-
module.exports = function isObject(o) {
|
|
3
|
-
return o !== null && typeof o === 'object';
|
|
1
|
+
// 用Object.create(null)创建的对象不继承Object,所以用 o instanceof Object可能会出错
|
|
2
|
+
module.exports = function isObject(o) {
|
|
3
|
+
return o !== null && typeof o === 'object';
|
|
4
4
|
}
|
package/coms/basic/keys.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
function keysFrom() {
|
|
2
|
-
var args = Array.prototype.slice.call(arguments, 0, arguments.length);
|
|
3
|
-
args.unshift(Object.create(null));
|
|
4
|
-
return Object.keys(extendIfNeeded.apply(null, args));
|
|
1
|
+
function keysFrom() {
|
|
2
|
+
var args = Array.prototype.slice.call(arguments, 0, arguments.length);
|
|
3
|
+
args.unshift(Object.create(null));
|
|
4
|
+
return Object.keys(extendIfNeeded.apply(null, args));
|
|
5
5
|
}
|
package/coms/basic/lazy.js
CHANGED
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
// 1.如果time大于0,传的和函数会延迟time执行,如果期间有新的调用,前一个调用会被忽略
|
|
2
|
-
// 2.如果time小于0,传入的函数会立即执行,并忽略-time内的连续调用,time时间后触发最后一次调用
|
|
3
|
-
// 如果time传false或0 使用requestAnimationFrame代替setTimeout按第1步执行
|
|
4
|
-
// 如果time传null或undefined或NaN使用requestAnimationFrame代替setTimeout按第2步执行
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @param {Function} run 主程序
|
|
8
|
-
* @param {number|undefined} time 间隔
|
|
9
|
-
* @param {any} ret 指定调用结束后返回的结果
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
function lazy(run, time, ret) {
|
|
13
|
-
var wait = +time ? setTimeout : requestAnimationFrame;
|
|
14
|
-
var quit = wait === setTimeout ? clearTimeout : cancelAnimationFrame;
|
|
15
|
-
var ing, args, that, id;
|
|
16
|
-
var hire = function () {
|
|
17
|
-
if (!ing) return;
|
|
18
|
-
if (time >= 0) {
|
|
19
|
-
if (ing === true) id = ing = wait(fire, +time / 2);
|
|
20
|
-
else id = wait(fire, +time / 2), ing = -2;
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
id = wait(fire, -time);
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
var fire = function () {
|
|
27
|
-
if (!ing) return;
|
|
28
|
-
if (time >= 0) {
|
|
29
|
-
if (ing === true) {
|
|
30
|
-
id = ing = wait(fire, +time / 2);
|
|
31
|
-
}
|
|
32
|
-
else if (ing > 0) {
|
|
33
|
-
id = wait(fire, +time / 2);
|
|
34
|
-
ing = -1;
|
|
35
|
-
}
|
|
36
|
-
else if (ing === -1) {
|
|
37
|
-
ing = run.apply(that, args);
|
|
38
|
-
if (ing instanceof Promise) ing.then(hire, hire);
|
|
39
|
-
else ing = false;
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
ing = false;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
if (ing === true) {
|
|
47
|
-
ing = run.apply(that, args);
|
|
48
|
-
if (ing instanceof Promise) ing.then(hire, hire);
|
|
49
|
-
else id = ing = wait(fire, -time);
|
|
50
|
-
} else {
|
|
51
|
-
ing = false;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
var exec = function () {
|
|
56
|
-
args = arguments;
|
|
57
|
-
that = this;
|
|
58
|
-
if (ing) return ing = true;
|
|
59
|
-
if (time >= 0) {
|
|
60
|
-
id = ing = wait(fire, +time);
|
|
61
|
-
}
|
|
62
|
-
else if (time < 0) {
|
|
63
|
-
ing = run.apply(that, args);
|
|
64
|
-
if (ing instanceof Promise) ing.then(hire, hire);
|
|
65
|
-
else id = ing = wait(fire, -time);
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
ing = true; id = wait(fire);
|
|
69
|
-
}
|
|
70
|
-
return ret;
|
|
71
|
-
};
|
|
72
|
-
exec.cancel = function () {
|
|
73
|
-
quit(id);
|
|
74
|
-
ing = false;
|
|
75
|
-
id = 0;
|
|
76
|
-
};
|
|
77
|
-
return exec;
|
|
78
|
-
}
|
|
1
|
+
// 1.如果time大于0,传的和函数会延迟time执行,如果期间有新的调用,前一个调用会被忽略
|
|
2
|
+
// 2.如果time小于0,传入的函数会立即执行,并忽略-time内的连续调用,time时间后触发最后一次调用
|
|
3
|
+
// 如果time传false或0 使用requestAnimationFrame代替setTimeout按第1步执行
|
|
4
|
+
// 如果time传null或undefined或NaN使用requestAnimationFrame代替setTimeout按第2步执行
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @param {Function} run 主程序
|
|
8
|
+
* @param {number|undefined} time 间隔
|
|
9
|
+
* @param {any} ret 指定调用结束后返回的结果
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
function lazy(run, time, ret) {
|
|
13
|
+
var wait = +time ? setTimeout : requestAnimationFrame;
|
|
14
|
+
var quit = wait === setTimeout ? clearTimeout : cancelAnimationFrame;
|
|
15
|
+
var ing, args, that, id;
|
|
16
|
+
var hire = function () {
|
|
17
|
+
if (!ing) return;
|
|
18
|
+
if (time >= 0) {
|
|
19
|
+
if (ing === true) id = ing = wait(fire, +time / 2);
|
|
20
|
+
else id = wait(fire, +time / 2), ing = -2;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
id = wait(fire, -time);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
var fire = function () {
|
|
27
|
+
if (!ing) return;
|
|
28
|
+
if (time >= 0) {
|
|
29
|
+
if (ing === true) {
|
|
30
|
+
id = ing = wait(fire, +time / 2);
|
|
31
|
+
}
|
|
32
|
+
else if (ing > 0) {
|
|
33
|
+
id = wait(fire, +time / 2);
|
|
34
|
+
ing = -1;
|
|
35
|
+
}
|
|
36
|
+
else if (ing === -1) {
|
|
37
|
+
ing = run.apply(that, args);
|
|
38
|
+
if (ing instanceof Promise) ing.then(hire, hire);
|
|
39
|
+
else ing = false;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
ing = false;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
if (ing === true) {
|
|
47
|
+
ing = run.apply(that, args);
|
|
48
|
+
if (ing instanceof Promise) ing.then(hire, hire);
|
|
49
|
+
else id = ing = wait(fire, -time);
|
|
50
|
+
} else {
|
|
51
|
+
ing = false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
var exec = function () {
|
|
56
|
+
args = arguments;
|
|
57
|
+
that = this;
|
|
58
|
+
if (ing) return ing = true;
|
|
59
|
+
if (time >= 0) {
|
|
60
|
+
id = ing = wait(fire, +time);
|
|
61
|
+
}
|
|
62
|
+
else if (time < 0) {
|
|
63
|
+
ing = run.apply(that, args);
|
|
64
|
+
if (ing instanceof Promise) ing.then(hire, hire);
|
|
65
|
+
else id = ing = wait(fire, -time);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
ing = true; id = wait(fire);
|
|
69
|
+
}
|
|
70
|
+
return ret;
|
|
71
|
+
};
|
|
72
|
+
exec.cancel = function () {
|
|
73
|
+
quit(id);
|
|
74
|
+
ing = false;
|
|
75
|
+
id = 0;
|
|
76
|
+
};
|
|
77
|
+
return exec;
|
|
78
|
+
}
|
|
79
79
|
module.exports = lazy;
|
package/coms/basic/refilm.js
CHANGED
|
@@ -1,97 +1,97 @@
|
|
|
1
|
-
function refilm() {
|
|
2
|
-
var [str] = arguments;
|
|
3
|
-
if (str.raw) str = str.raw;
|
|
4
|
-
return refilm_decode.apply(null, [str].concat([].slice.call(arguments, 1)));
|
|
5
|
-
}
|
|
6
|
-
var patchOffset = refilm.patchOffset = function (fields, offset = fields.offset || 0) {
|
|
7
|
-
fields.offset = offset;
|
|
8
|
-
fields.forEach(f => {
|
|
9
|
-
f.offset = offset;
|
|
10
|
-
fields[f.key] = f;
|
|
11
|
-
offset += f.size * f.ratio;
|
|
12
|
-
});
|
|
13
|
-
fields.size = offset - fields.offset;
|
|
14
|
-
return offset;
|
|
15
|
-
};
|
|
16
|
-
refilm.createFromFields = function (fields, values) {
|
|
17
|
-
if (!fields.size) patchOffset(fields);
|
|
18
|
-
var size = fields.size;
|
|
19
|
-
var data = new Uint8Array(size);
|
|
20
|
-
if (!values) values = Object.create(null);
|
|
21
|
-
for (var f of fields) {
|
|
22
|
-
if (f.key in values || !f.value) continue;
|
|
23
|
-
values[f.key] = f.value;
|
|
24
|
-
}
|
|
25
|
-
writeFields(data, fields, values, 0);
|
|
26
|
-
return data;
|
|
27
|
-
}
|
|
28
|
-
var writeField = refilm.writeField = function (data, field, value, offset = field.offset, byteLimit = field.size * field.ratio) {
|
|
29
|
-
if (isArrayLike(value));
|
|
30
|
-
else if (typeof value === "string") {
|
|
31
|
-
value = encodeUTF8(value);
|
|
32
|
-
}
|
|
33
|
-
else if (typeof value === "number") {
|
|
34
|
-
var v = [];
|
|
35
|
-
var limit = byteLimit;
|
|
36
|
-
while (limit-- > 0) {
|
|
37
|
-
v.push(value & 0xff);
|
|
38
|
-
if (limit >= 4) {
|
|
39
|
-
value = value / 256;
|
|
40
|
-
}
|
|
41
|
-
else value = value >>> 8;
|
|
42
|
-
}
|
|
43
|
-
if (value) throw new Error(i18n`数据过大`);
|
|
44
|
-
value = v;
|
|
45
|
-
}
|
|
46
|
-
else value = [value | 0];
|
|
47
|
-
if (value.length > byteLimit) {
|
|
48
|
-
throw new Error(i18n`数据超出大小限制!`);
|
|
49
|
-
}
|
|
50
|
-
var offset = field.offset;
|
|
51
|
-
while (value.length) data[offset++] = value.shift();
|
|
52
|
-
};
|
|
53
|
-
var writeFields = refilm.writeFields = function (data, fields, values, offset = fields.offset) {
|
|
54
|
-
for (var f of fields) {
|
|
55
|
-
var size = f.size * f.ratio;
|
|
56
|
-
if (f.key in values) writeField(data, f, values[f.key], offset, size);
|
|
57
|
-
offset += size;
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
var toint = function (buf) {
|
|
61
|
-
var n = 0;
|
|
62
|
-
if (buf.length >= 7 && (buf[7] || buf[6] > 0x1f)) return buf;
|
|
63
|
-
switch (buf.length) {
|
|
64
|
-
default:
|
|
65
|
-
case 3:
|
|
66
|
-
n |= buf[2] << 16;
|
|
67
|
-
case 2:
|
|
68
|
-
n |= buf[1] << 8;
|
|
69
|
-
case 1:
|
|
70
|
-
n |= buf[0];
|
|
71
|
-
case 0:
|
|
72
|
-
}
|
|
73
|
-
for (var cx = 3, dx = buf.length; cx < dx; cx++) {
|
|
74
|
-
n += buf[cx] * 2 ** (cx << 3);
|
|
75
|
-
}
|
|
76
|
-
return n;
|
|
77
|
-
};
|
|
78
|
-
var readBuffer = refilm.readBuffer = function (data, field, offset = field.offset, size = field.size * field.ratio) {
|
|
79
|
-
return data.slice(offset, offset + size);
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
var readField = refilm.readField = function (data, field, offset, size) {
|
|
83
|
-
var v = readBuffer(data, field, offset, size);
|
|
84
|
-
if (/^([us]?int|byte|word|dword|qword|long)/i.test(field.type)) v = toint(v);
|
|
85
|
-
return v;
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
refilm.readFields = function (data, fields, offset = fields.offset || 0) {
|
|
89
|
-
var res = Object.create(null);
|
|
90
|
-
for (var f of fields) {
|
|
91
|
-
var size = f.size * f.ratio;
|
|
92
|
-
var v = readField(data, f, offset, size);
|
|
93
|
-
res[f.key] = v;
|
|
94
|
-
offset += size;
|
|
95
|
-
}
|
|
96
|
-
return res;
|
|
1
|
+
function refilm() {
|
|
2
|
+
var [str] = arguments;
|
|
3
|
+
if (str.raw) str = str.raw;
|
|
4
|
+
return refilm_decode.apply(null, [str].concat([].slice.call(arguments, 1)));
|
|
5
|
+
}
|
|
6
|
+
var patchOffset = refilm.patchOffset = function (fields, offset = fields.offset || 0) {
|
|
7
|
+
fields.offset = offset;
|
|
8
|
+
fields.forEach(f => {
|
|
9
|
+
f.offset = offset;
|
|
10
|
+
fields[f.key] = f;
|
|
11
|
+
offset += f.size * f.ratio;
|
|
12
|
+
});
|
|
13
|
+
fields.size = offset - fields.offset;
|
|
14
|
+
return offset;
|
|
15
|
+
};
|
|
16
|
+
refilm.createFromFields = function (fields, values) {
|
|
17
|
+
if (!fields.size) patchOffset(fields);
|
|
18
|
+
var size = fields.size;
|
|
19
|
+
var data = new Uint8Array(size);
|
|
20
|
+
if (!values) values = Object.create(null);
|
|
21
|
+
for (var f of fields) {
|
|
22
|
+
if (f.key in values || !f.value) continue;
|
|
23
|
+
values[f.key] = f.value;
|
|
24
|
+
}
|
|
25
|
+
writeFields(data, fields, values, 0);
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
var writeField = refilm.writeField = function (data, field, value, offset = field.offset, byteLimit = field.size * field.ratio) {
|
|
29
|
+
if (isArrayLike(value));
|
|
30
|
+
else if (typeof value === "string") {
|
|
31
|
+
value = encodeUTF8(value);
|
|
32
|
+
}
|
|
33
|
+
else if (typeof value === "number") {
|
|
34
|
+
var v = [];
|
|
35
|
+
var limit = byteLimit;
|
|
36
|
+
while (limit-- > 0) {
|
|
37
|
+
v.push(value & 0xff);
|
|
38
|
+
if (limit >= 4) {
|
|
39
|
+
value = value / 256;
|
|
40
|
+
}
|
|
41
|
+
else value = value >>> 8;
|
|
42
|
+
}
|
|
43
|
+
if (value) throw new Error(i18n`数据过大`);
|
|
44
|
+
value = v;
|
|
45
|
+
}
|
|
46
|
+
else value = [value | 0];
|
|
47
|
+
if (value.length > byteLimit) {
|
|
48
|
+
throw new Error(i18n`数据超出大小限制!`);
|
|
49
|
+
}
|
|
50
|
+
var offset = field.offset;
|
|
51
|
+
while (value.length) data[offset++] = value.shift();
|
|
52
|
+
};
|
|
53
|
+
var writeFields = refilm.writeFields = function (data, fields, values, offset = fields.offset) {
|
|
54
|
+
for (var f of fields) {
|
|
55
|
+
var size = f.size * f.ratio;
|
|
56
|
+
if (f.key in values) writeField(data, f, values[f.key], offset, size);
|
|
57
|
+
offset += size;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
var toint = function (buf) {
|
|
61
|
+
var n = 0;
|
|
62
|
+
if (buf.length >= 7 && (buf[7] || buf[6] > 0x1f)) return buf;
|
|
63
|
+
switch (buf.length) {
|
|
64
|
+
default:
|
|
65
|
+
case 3:
|
|
66
|
+
n |= buf[2] << 16;
|
|
67
|
+
case 2:
|
|
68
|
+
n |= buf[1] << 8;
|
|
69
|
+
case 1:
|
|
70
|
+
n |= buf[0];
|
|
71
|
+
case 0:
|
|
72
|
+
}
|
|
73
|
+
for (var cx = 3, dx = buf.length; cx < dx; cx++) {
|
|
74
|
+
n += buf[cx] * 2 ** (cx << 3);
|
|
75
|
+
}
|
|
76
|
+
return n;
|
|
77
|
+
};
|
|
78
|
+
var readBuffer = refilm.readBuffer = function (data, field, offset = field.offset, size = field.size * field.ratio) {
|
|
79
|
+
return data.slice(offset, offset + size);
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
var readField = refilm.readField = function (data, field, offset, size) {
|
|
83
|
+
var v = readBuffer(data, field, offset, size);
|
|
84
|
+
if (/^([us]?int|byte|word|dword|qword|long)/i.test(field.type)) v = toint(v);
|
|
85
|
+
return v;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
refilm.readFields = function (data, fields, offset = fields.offset || 0) {
|
|
89
|
+
var res = Object.create(null);
|
|
90
|
+
for (var f of fields) {
|
|
91
|
+
var size = f.size * f.ratio;
|
|
92
|
+
var v = readField(data, f, offset, size);
|
|
93
|
+
res[f.key] = v;
|
|
94
|
+
offset += size;
|
|
95
|
+
}
|
|
96
|
+
return res;
|
|
97
97
|
};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
var getIndexFromOrderedArray = require("./getIndexFromOrderedArray");
|
|
2
|
-
/**
|
|
3
|
-
* 保存数据到有序数组
|
|
4
|
-
* @param {Array} orderArray
|
|
5
|
-
* @param {string|number} newItem
|
|
6
|
-
*/
|
|
7
|
-
module.exports = function (orderArray, newItem, isLE) {
|
|
8
|
-
var cx = getIndexFromOrderedArray(orderArray, newItem, isLE);
|
|
9
|
-
var keep = orderArray[cx] === newItem;
|
|
10
|
-
if (!keep) orderArray.splice(cx + 1, 0, newItem);
|
|
11
|
-
return cx + 1 - keep;
|
|
1
|
+
var getIndexFromOrderedArray = require("./getIndexFromOrderedArray");
|
|
2
|
+
/**
|
|
3
|
+
* 保存数据到有序数组
|
|
4
|
+
* @param {Array} orderArray
|
|
5
|
+
* @param {string|number} newItem
|
|
6
|
+
*/
|
|
7
|
+
module.exports = function (orderArray, newItem, isLE) {
|
|
8
|
+
var cx = getIndexFromOrderedArray(orderArray, newItem, isLE);
|
|
9
|
+
var keep = orderArray[cx] === newItem;
|
|
10
|
+
if (!keep) orderArray.splice(cx + 1, 0, newItem);
|
|
11
|
+
return cx + 1 - keep;
|
|
12
12
|
};
|
package/coms/basic/strings.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Reflect.get;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Reflect.set;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
class Descriptor {// 不要导出此类,保持私有
|
|
2
|
+
constructor(desc) {
|
|
3
|
+
extend(this, desc);
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
return this.Reflect || class Reflect {
|
|
7
|
+
static apply(method, context, argsList) {
|
|
8
|
+
return method.apply(context, argsList);
|
|
9
|
+
}
|
|
10
|
+
static construct(method, argsList) {
|
|
11
|
+
return method.apply(Object.create(method.prototype), argsList);
|
|
12
|
+
}
|
|
13
|
+
static get(o, k, t = o) {
|
|
14
|
+
if (o instanceof Proxy) {
|
|
15
|
+
if (o.handler) {
|
|
16
|
+
var g = o.handler.get;
|
|
17
|
+
if (g) return g.call(o.target, o, k, t);
|
|
18
|
+
}
|
|
19
|
+
return o[k];
|
|
20
|
+
}
|
|
21
|
+
var g = o[k];
|
|
22
|
+
if (g instanceof Descriptor) {
|
|
23
|
+
var get = g.get;
|
|
24
|
+
if (get) g = get.call(t, k);
|
|
25
|
+
else if ("value" in g) g = g.value;
|
|
26
|
+
}
|
|
27
|
+
return g;
|
|
28
|
+
}
|
|
29
|
+
static set(o, k, v, t = o) {
|
|
30
|
+
if (o instanceof Proxy) {
|
|
31
|
+
if (o.handler) {
|
|
32
|
+
var s = o.handler.set;
|
|
33
|
+
if (s) return s.call(o.target, o, k, v, t);
|
|
34
|
+
}
|
|
35
|
+
return t[k] = v;
|
|
36
|
+
}
|
|
37
|
+
var s = o[k];
|
|
38
|
+
if (s instanceof Descriptor) {
|
|
39
|
+
var set = s.set;
|
|
40
|
+
if (set) s = set.call(t, k, v);
|
|
41
|
+
else if ("value" in s) s = s.value;
|
|
42
|
+
}
|
|
43
|
+
return s;
|
|
44
|
+
}
|
|
45
|
+
static has(o, k) {
|
|
46
|
+
return k in o;
|
|
47
|
+
}
|
|
48
|
+
static defineProperty(o, k, d) {
|
|
49
|
+
o[k] = new Descriptor(d);
|
|
50
|
+
return k in o;
|
|
51
|
+
}
|
|
52
|
+
static deleteProperty(o, k) {
|
|
53
|
+
return delete o[k];
|
|
54
|
+
}
|
|
55
|
+
}
|