efront 4.35.4 → 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.
Files changed (84) hide show
  1. package/apps/_index.html +41 -41
  2. package/apps/blank/index.html +20 -20
  3. package/apps/noice/index.html +42 -42
  4. package/apps/pay/paypal.jsp +0 -0
  5. package/apps/pay/wxpay.jsp +32 -0
  6. package/apps/pivot/dht/rent.html +14 -0
  7. package/apps/pivot/dht/rent.js +148 -0
  8. package/apps/pivot/dht/rent.less +46 -0
  9. package/apps/pivot/home/desktop.xht +0 -0
  10. package/apps/pivot/menu.yml +6 -1
  11. package/apps/pivot/shop/goods/list.xht +183 -0
  12. package/apps/pivot/shop/home.xht +20 -0
  13. package/apps/pivot/shop/mind/list.xht +1 -0
  14. package/apps/pivot/shop/order/create.xht +49 -0
  15. package/apps/pivot/shop/order/list.xht +1 -0
  16. package/apps/pivot/shop/paypal.jsp +23 -0
  17. package/apps/pivot/soft/list.html +0 -0
  18. package/apps/pivot/soft/list.js +9 -0
  19. package/apps/pivot/soft/list.less +0 -0
  20. package/apps/pivot//344/270/273/351/241/265.html +42 -42
  21. package/coms/7z_temp/Java.js +93 -0
  22. package/coms/7z_temp/LzmaBench.java +392 -0
  23. package/coms/7z_temp/read-from-java-code.js +28 -0
  24. package/coms/7z_temp//350/257/264/346/230/216.md +1 -0
  25. package/coms/basic/JSAM.js +259 -259
  26. package/coms/basic/JSAM_test.js +3 -5
  27. package/coms/basic/check.js +42 -42
  28. package/coms/basic/color.js +696 -696
  29. package/coms/basic/crc.js +39 -39
  30. package/coms/basic/getIndexFromOrderedArray.js +39 -39
  31. package/coms/basic/isObject.js +3 -3
  32. package/coms/basic/keys.js +4 -4
  33. package/coms/basic/lazy.js +78 -78
  34. package/coms/basic/math.js +7 -1
  35. package/coms/basic/math.md +11 -0
  36. package/coms/basic/refilm.js +96 -96
  37. package/coms/basic/saveToOrderedArray.js +11 -11
  38. package/coms/basic/strings.js +7 -5
  39. package/coms/basic_/&pget.js +1 -0
  40. package/coms/basic_/&pset.js +1 -0
  41. package/coms/basic_/Proxy.js +6 -0
  42. package/coms/basic_/Reflect.js +55 -0
  43. package/coms/compile/Html.js +15 -7
  44. package/coms/compile/Program.js +3 -1
  45. package/coms/compile/autoeval.js +26 -7
  46. package/coms/compile/autoeval_test.js +9 -0
  47. package/coms/compile/bracket.js +51 -0
  48. package/coms/compile/bracket_test.js +9 -0
  49. package/coms/compile/createvm.js +35 -0
  50. package/coms/compile/createvm_test.js +7 -0
  51. package/coms/compile/scanner.js +653 -653
  52. package/coms/compile/scanner2.js +24 -1
  53. package/coms/compile//347/264/240/351/246/250.js +4 -4
  54. package/coms/docs/getMimeData_test.js +19 -19
  55. package/coms/docs/md5.js +173 -173
  56. package/coms/frame/top.less +190 -190
  57. package/coms/pivot/DB.js +9 -0
  58. package/coms/pivot/paypal-var.js +1 -0
  59. package/coms/pivot//345/225/206/345/223/201.js +1 -0
  60. package/coms/zimoli/AudioContext_test.html +5 -5
  61. package/coms/zimoli/AudioContext_test.js +92 -92
  62. package/coms/zimoli/AudioContext_test.less +114 -114
  63. package/coms/zimoli/alert_test.js +11 -11
  64. package/coms/zimoli/dispatch.js +50 -50
  65. package/coms/zimoli/extendTouchEvent.js +8 -8
  66. package/coms/zimoli/fullscreen.js +52 -52
  67. package/coms/zimoli/gallery.less +13 -13
  68. package/coms/zimoli/gallery_test.html +2 -2
  69. package/coms/zimoli/gallery_test.js +14 -14
  70. package/coms/zimoli/gallery_test.less +17 -17
  71. package/coms/zimoli/getChanged.js +7 -7
  72. package/coms/zimoli/getChanges.js +13 -13
  73. package/coms/zimoli/lattice.js +109 -109
  74. package/coms/zimoli/lattice_test.less +23 -23
  75. package/coms/zimoli/picture.less +71 -71
  76. package/coms/zimoli/refilm_test.html +41 -41
  77. package/coms/zimoli/refilm_test.less +102 -102
  78. package/coms/zimoli/xml.js +131 -131
  79. package/data/keystore/cross-cert.pem +21 -21
  80. package/data/keystore/cross-key.pem +27 -27
  81. package/package.json +1 -1
  82. package/public/efront.js +1 -1
  83. package/public//346/226/207/344/273/266/347/263/273/347/273/237//344/270/273/351/241/265.jsp +2 -2
  84. /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
+ };
@@ -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
  }
@@ -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
  }
@@ -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;
@@ -137,6 +137,12 @@ var funcmap = {
137
137
  abs(a) {
138
138
  return `<mo>|</mo>${a}<mo>|</mo>`;
139
139
  },
140
+ log(x, n) {
141
+ return `<msub><mo>log</mo>${n}</msub>${x}`
142
+ },
143
+ ln(x){
144
+ return `<mo>ln</mo>${x}`
145
+ },
140
146
  "div"(...args) {
141
147
  return mo3("÷", args);
142
148
  },
@@ -295,7 +301,7 @@ var br = function () {
295
301
  function toString(obj, p, deep) {
296
302
  if (obj instanceof Array) {
297
303
  if (deep == 1 && obj.length === 2 && obj[1].tab) {
298
- return toString(obj[0], 0, deep) +"</mtd><mtd>"+ obj.slice(1, obj.length).map(a => toString(a, 0, 0)).join("</mtd><mtd>");
304
+ return toString(obj[0], 0, deep) + "</mtd><mtd>" + obj.slice(1, obj.length).map(a => toString(a, 0, 0)).join("</mtd><mtd>");
299
305
  }
300
306
  deep++;
301
307
  var args = obj.map(a => toString(a, deep > 1 ? 0 : p, deep));
@@ -337,6 +337,17 @@ series(公式主体,n=1,+Infinity)
337
337
  corner(A);
338
338
  corner(BAC);
339
339
  ```
340
+ * 对数
341
+ ```mathscript
342
+ log(x,2);
343
+ log(x,e);
344
+ ln(x);
345
+ ```
346
+ ```math
347
+ log(x,2);
348
+ log(x,e);
349
+ ln(x);
350
+ ```
340
351
 
341
352
  ## 希腊字母对照表如下
342
353
  按此表中的英文单词命名的变量将自动转换为希腊字母
@@ -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
  };
@@ -44,7 +44,7 @@ var esc = function (a) {
44
44
  function uncode(s) {
45
45
  return s.replace(/\\u(?:\{[0-9a-f]+\}|[0-9a-f]{4})/ig, esc);
46
46
  }
47
- function kicode(s) {
47
+ function kicode(s, singleSlash = false) {
48
48
  var t = [];
49
49
  return s.replace(/\\(?:u\{[0-9a-f]+\}|u[0-9a-f]{4}|x[0-9a-f]{2}|([0-7]{1,3}|[\s\S]))/ig, (a, b, i) => {
50
50
  if (!b) {
@@ -63,17 +63,19 @@ function kicode(s) {
63
63
  }
64
64
  if (unescapeMap.hasOwnProperty(a)) return unescapeMap[a];
65
65
  if (/^[0-7]+$/.test(b)) return String.fromCharCode(parseInt(b, 8));
66
+ if (b === singleSlash) return b;
67
+ if (singleSlash) return '\\' + b;
66
68
  return b;
67
69
  });
68
70
  }
69
- function decode(s) {
71
+ function decode(s, singleSlash) {
70
72
  var r = /^(['"`])([\s\S]*)\1$/.exec(s);
71
73
  if (!r) return s;
72
- return kicode(r[2]);
74
+ return kicode(r[2], singleSlash ? r[1] : null);
73
75
  }
74
76
 
75
- function recode(s) {
76
- s = decode(s);
77
+ function recode(s, singleSlash) {
78
+ s = decode(s, singleSlash);
77
79
  s = encode(s);
78
80
  return s;
79
81
  }
@@ -0,0 +1 @@
1
+ Reflect.get;
@@ -0,0 +1 @@
1
+ Reflect.set;
@@ -0,0 +1,6 @@
1
+ this.Proxy || class Proxy {
2
+ constructor(target, handler) {
3
+ this.handler = handler;
4
+ this.target = target;
5
+ }
6
+ }