efront 4.29.0 → 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.
Files changed (33) hide show
  1. package/#/345/233/275/351/231/205/345/214/226.yml +9 -0
  2. package/apps/pivot/main.js +2 -1
  3. package/coms/compile/Javascript.js +4 -0
  4. package/coms/compile/Javascript_test.js +3 -2
  5. package/coms/compile/Program.js +16 -2
  6. package/coms/compile/common.js +8 -20
  7. package/coms/compile/common_test.js +1 -0
  8. package/coms/docs/helps.js +1 -0
  9. package/coms/kugou/krc.js +3 -2
  10. package/coms/kugou/musicList.js +9 -0
  11. package/coms/{frame → pivot}/login.xht +1 -1
  12. package/coms/zimoli/contextmenu.js +8 -0
  13. package/coms/zimoli/hookmedia.js +29 -0
  14. package/coms/zimoli/on.js +16 -6
  15. package/coms/zimoli/vbox.js +7 -2
  16. package/coms/zimoli/zimoli.js +3 -3
  17. package/package.json +2 -2
  18. package/public/efront.js +1 -1
  19. package/public//346/226/207/344/273/266/347/263/273/347/273/237//344/270/273/351/241/265.jsp +45 -0
  20. package/apps//346/226/207/344/273/266/347/263/273/347/273/237/main.js +0 -55
  21. package/apps//346/226/207/344/273/266/347/263/273/347/273/237//344/270/273/351/241/265.jsp +0 -42
  22. package/apps//346/226/207/344/273/266/347/263/273/347/273/237//350/265/204/346/272/220/347/256/241/347/220/206/345/231/250.js +0 -1
  23. package/coms/basic/concatByte.js +0 -15
  24. package/coms/basic/decodePack.js +0 -203
  25. package/coms/basic/decodeRange.js +0 -68
  26. package/coms/basic/encodePack.h +0 -9
  27. package/coms/basic/encodePack.js +0 -301
  28. package/coms/basic/encodeRange.h +0 -17
  29. package/coms/basic/encodeRange.js +0 -107
  30. package/coms/basic/encodeRange_test.js +0 -40
  31. package/coms/basic/readBinary.asm +0 -77
  32. package/coms/basic/readBinary.js +0 -31
  33. package/coms/basic/writeBinary.js +0 -37
@@ -1,55 +0,0 @@
1
- user.loginPath = "frame$login";
2
- cross.addReform(relogin(user.loginPath));
3
- data.setConfig(`
4
- / authorization=:
5
- folder: options ::file-:opt:::path?:to
6
- list: options :::type*:idkey
7
- edit: options :::type-:key?:value
8
- add: options :::type-:key+:value
9
- patch: options :::type-:key*:value
10
- upload: put :path
11
- login: options ::login-:a
12
- `);
13
- zimoli.register('', "/资源管理器");
14
- zimoli.switch("", null, '/');
15
- zimoli();
16
- var outbar = zimoli$progbar();
17
- outbar.total = 100;
18
- outbar.current = 0;
19
- css(outbar, 'z-index:2;border-radius:14px;line-height:26px;outline-color:#fff;background:#d45;color:#fff;position:fixed;height:26px;bottom:20px;left:20px;min-width:26px');
20
- appendChild(document.body, outbar);
21
- var cancel = function () {
22
- clearInterval(interval_id);
23
- outbar.innerText = '';
24
- css(outbar, 'width:26px');
25
- outbar.innerText = '';
26
- outbar.current = 0;
27
- render.refresh(outbar);
28
- };
29
- var reached = function () {
30
- outbar.current++;
31
- render.refresh(outbar);
32
- if (outbar.current < outbar.total) return;
33
- data.setSource({});
34
- zimoli.reload();
35
- cancel();
36
- };
37
- moveupon(outbar, {
38
- async start() {
39
- var a = await data.getApi('login');
40
- if (!data.getSource(a.base)) return;
41
- css(outbar, 'width:100px');
42
- outbar.current = 0;
43
- interval_id = setInterval(reached, 12);
44
- outbar.innerText = '长按登出';
45
- },
46
- move() {
47
- if (!onclick.preventClick) return;
48
- cancel();
49
- },
50
- end() {
51
- cancel();
52
- }
53
- })
54
- drag.on(outbar)
55
- var interval_id = 0;
@@ -1,42 +0,0 @@
1
- <!DOCTYPE html>
2
- <!--
3
- http://efront.cc
4
- -->
5
- <html lang="zh-CN">
6
-
7
- <head>
8
- <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
9
- <meta charset="utf-8" />
10
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
11
- <link rel="Shortcut Icon" href="/favicon.ico" type="image/x-icon" />
12
- <meta name="viewport" content="initial-scale=1,maximum-scale=1,width=device-width" />
13
- <title>efront 文件管理器</title>
14
- <script deleteoncompile efrontloader>
15
- // 若要在开发环境使用内置组件,请保留此script标签中的代码,在编译发布时,这里的代码会自动删除
16
- </script>
17
- <style>
18
- html {
19
- height: 100%;
20
- font-family: "SF Pro SC", "SF Pro Text", "SF Pro Icons", "PingFang SC", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
21
- }
22
-
23
- *,
24
- ::before,
25
- ::after {
26
- box-sizing: border-box;
27
- }
28
-
29
- body {
30
- border: none;
31
- margin: 0;
32
- padding: 0;
33
- height: 100%;
34
- overflow: hidden;
35
- }
36
- </style>
37
- </head>
38
-
39
- <body scroll=no main-path="/main">
40
- </body>
41
-
42
- </html>
@@ -1,15 +0,0 @@
1
- function concatTypedArray(buffs) {
2
- var total = 0;
3
- buffs.forEach(a => total += a.byteLength || a.length);
4
- var res = new Uint8Array(total);
5
- var offset = 0, inc = 0;
6
- while (offset < total) {
7
- var b = buffs[inc++];
8
- if (b.buffer) b = new Uint8Array(b.buffer, b.byteOffset, b.byteLength);
9
- res.set(b, offset);
10
- offset += b.length;
11
- }
12
- return res;
13
- }
14
-
15
- module.exports = concatTypedArray;
@@ -1,203 +0,0 @@
1
- "include ./encodePack.h";
2
- var readBinary = require("./readBinary");
3
- var decodeRange = require("./decodeRange");
4
- function decodeFlat(buff, start = 0) {
5
- var tcount = buff[start];
6
- var total = 0;
7
- var t = buff[start + 1] & 0x1f;
8
- var bitoffset = start + 2 << 3, inc = 0;
9
- var counts = [];
10
- while (inc < tcount) {
11
- var v = readBinary(buff, bitoffset, t);
12
- bitoffset += t;
13
- var k = readBinary(buff, bitoffset, t);
14
- bitoffset += t;
15
- counts.unshift(k, v);
16
- total += v;
17
- inc++;
18
- }
19
- var rest = new Array(total);
20
- while (counts.length) {
21
- var t = counts[counts.length - 2];
22
- var n = readBinary(buff, bitoffset, t);
23
- rest[--total] = [n, t];
24
- bitoffset += t;
25
- if (--counts[counts.length - 1] <= 0) {
26
- counts.pop();
27
- counts.pop();
28
- }
29
- }
30
- rest.offset = bitoffset;
31
- return rest;
32
- }
33
- function fromhuff(buff, result = [], scanstart, type) {
34
- type = type === repeat_huffman;
35
- var huf = decodeFlat(buff, scanstart);
36
- var byteoffset = huf.offset + 7 >> 3;
37
- var map = [];
38
- var codeend = byteoffset + (huf.length - 1);
39
- while (byteoffset < codeend) {
40
- var [k, v] = huf.shift();
41
- if (!map[v]) {
42
- map[v] = {};
43
- }
44
- if (type) {
45
- if (buff[byteoffset] >= 128) {
46
- codeend++;
47
- map[v][k] = buff[byteoffset++] - 128 << 8 | buff[byteoffset++];
48
- } else {
49
- map[v][k] = buff[byteoffset++];
50
- }
51
- } else {
52
- map[v][k] = buff[byteoffset++];
53
- }
54
- }
55
- var bitoffset = byteoffset << 3;
56
- codeend = buff.length << 3;
57
- var endflag = huf[huf.length - 1];
58
- var t = 1, s = endflag[1];
59
- do {
60
- if (!(t in map)) {
61
- continue;
62
- }
63
- var sum = readBinary(buff, bitoffset, t);
64
- if (sum in map[t]) {
65
- bitoffset += t;
66
- result.push(map[t][sum]);
67
- t = 0;
68
- }
69
- } while (bitoffset < codeend && ++t <= s);
70
-
71
- if (sum !== endflag[0]) {
72
- console.log(
73
- "result:", result,
74
- "\r\ndataend:", codeend,
75
- "\r\nendflag:", endflag,
76
- "\r\ncodefound:", sum,
77
- "\r\nbitwidth:", t,
78
- "\r\ncodemap:", map
79
- );
80
- throw console.warn(i18n`数据异常!`);
81
- }
82
- bitoffset = bitoffset + endflag[1];
83
- return bitoffset;
84
- }
85
-
86
- function inflate(buff) {
87
- var result = [];
88
- for (var cx = 0, dx = buff.length; cx < dx; cx++) {
89
- var b = buff[cx];
90
- if (b < 256) {
91
- result.push(b);
92
- }
93
- else {
94
- b = ((b & 0x7f) << 8 | buff[++cx]) + 1;
95
- var c = buff[++cx] << 9 | buff[++cx] << 4 | buff[++cx];
96
- var s = result.length - c - b;
97
- var code = result.slice(s, s + b);
98
- while (code.length) {
99
- result.push.apply(result, code.splice(0, 1024));
100
- }
101
- }
102
- }
103
- return result;
104
- }
105
-
106
- function repeat(a, count) {
107
- var result = [];
108
- while (count-- > 0) {
109
- result.push(a);
110
- }
111
- return new Uint8Array(result);
112
- }
113
- function readint(buff) {
114
- var n = 0;
115
- for (var cx = 0, dx = buff.length; cx < dx; cx++) {
116
- var b = buff[cx];
117
- n = n * 256 + b;
118
- }
119
- return n;
120
- }
121
- var concatByte = require("./concatByte");
122
- function unpack(buff) {
123
- if (buff.length < 2) return buff;
124
- var result = [];
125
- var byteoffset = 0;
126
- do {
127
- var type = buff[byteoffset + 1] >> 5;
128
- switch (type) {
129
- case normal_huffman:
130
- var res = [];
131
- var bitoffset = fromhuff(buff, res, byteoffset);
132
- result.push(new Uint8Array(res));
133
- byteoffset = bitoffset + 7 >> 3;
134
- break;
135
- case repeat_huffman:
136
- var res = [];
137
- var bitoffset = fromhuff(buff, res, byteoffset, type);
138
- res = new Uint16Array(res);
139
- res = inflate(res);
140
- res = new Uint8Array(res);
141
- result.push(res);
142
- var tempoffset = bitoffset + 7 >> 3;
143
- byteoffset = tempoffset;
144
- break;
145
- case normal_repeat1:
146
- var count = buff[byteoffset + 1] & 0x1f;
147
- var res = repeat(buff[byteoffset], count);
148
- result.push(res);
149
- byteoffset += 2;
150
- break;
151
- case normal_repeat2:
152
- var count = (buff[byteoffset + 1] & 0x1f) << 8 | buff[byteoffset + 2];
153
- var res = repeat(buff[byteoffset], count);
154
- result.push(res);
155
- byteoffset += 3;
156
- break;
157
- case normal_nocode1:
158
- var count = buff[byteoffset] << 5 | buff[byteoffset + 1] & 0x1f;
159
- byteoffset += 2;
160
- var res = buff.slice(byteoffset, byteoffset + count);
161
- result.push(res);
162
- byteoffset += count;
163
- break;
164
- case normal_nocode2:
165
- var count = buff[byteoffset] << 13 | buff[byteoffset + 1] << 8 & 0x1f00 | buff[byteoffset + 2];
166
- byteoffset += 3;
167
- var res = buff.slice(byteoffset, byteoffset + count);
168
- result.push(res);
169
- byteoffset += count;
170
- break;
171
- case normal_nocode3:
172
- var count = buff[byteoffset] << 21 | buff[byteoffset + 1] << 16 & 0x1f0000 | buff[byteoffset + 2] << 8 | buff[byteoffset + 3];
173
- byteoffset += 4;
174
- var res = buff.slice(byteoffset, byteoffset + count);
175
- result.push(res);
176
- byteoffset += count;
177
- break;
178
- case other_compress:
179
- var size = buff[byteoffset + 1] & 0x1f;
180
- var type1 = buff[byteoffset];
181
- var count = buff.slice(byteoffset += 2, byteoffset += size);
182
- count = readint(count);
183
- switch (type1) {
184
- case range_compress:
185
- var res = buff.slice(byteoffset, byteoffset += count);
186
- res = decodeRange(res);
187
- res = new Uint16Array(res);
188
- res = inflate(res);
189
- res = new Uint8Array(res);
190
- result.push(res);
191
- break;
192
- default:
193
- throw new Error(i18n`编码异常!`);
194
- }
195
- break;
196
- default:
197
- throw new Error(i18n`数据异常!`);
198
- }
199
- } while (byteoffset + 1 < buff.length);
200
- result = concatByte(result);
201
- return result;
202
- }
203
- module.exports = unpack;
@@ -1,68 +0,0 @@
1
- "include ./encodeRange.h";
2
- var R = R_max,
3
- L = 0,
4
- d = 0;
5
- var __buff;
6
- var __input = 0;
7
-
8
- function init() {
9
- L = 0;
10
- R = R_max;
11
- d = 0;
12
- var i = code_bits + 1;
13
- do {
14
- i -= 8;
15
- d = shl(d, 8) | input();
16
- } while (i > 0);
17
- }
18
-
19
- function input() {
20
- if (__input >= __buff.length) return 0;
21
- return __buff[__input++];
22
- }
23
-
24
- function guess(T) {// DecodeTarget
25
- var code = T;
26
- code = shr(d, 1);
27
- R = R / T | 0;
28
- var result;
29
- if (code < L) {
30
- result = (code + R_max - L) / R | 0;
31
- }
32
- else {
33
- result = (code - L) / R | 0;
34
- }
35
- return result;
36
- }
37
-
38
- function decode(cf, f) {
39
- L += cf * R;
40
- R = f * R;
41
- while (R <= R_min) {
42
- L = shl(L, 8) & R_max - 1;
43
- R = shl(R, 8);
44
- d = shl(d, 8) | input();
45
- }
46
- }
47
-
48
- function main(buff) {
49
- var [total, offset] = readLEB128(buff, 0);
50
- __input = offset;
51
- __buff = buff;
52
- init();
53
- var tree = new BitTree(symbol_no);
54
- var f, cf;
55
- var result = [];
56
- while (result.length < total) {
57
- var g = guess(tree.total);
58
- var i = tree.find2(g);
59
- var cf = tree.sumTo(i);
60
- var f = tree.counts[i];
61
- decode(cf, f);
62
- tree.count(i);
63
- result.push(i);
64
- }
65
- __buff = null;
66
- return result;
67
- }
68
- module.exports = main;
@@ -1,9 +0,0 @@
1
- const normal_huffman = 0;
2
- const normal_repeat1 = 1;
3
- const normal_repeat2 = 2;
4
- const normal_nocode1 = 3;
5
- const normal_nocode2 = 4;
6
- const normal_nocode3 = 5;
7
- const repeat_huffman = 6;
8
- const other_compress = 7;
9
- const range_compress = 1;
@@ -1,301 +0,0 @@
1
- "include ./encodePack.h";
2
- var getIndexFromOrderedArray = require("./getIndexFromOrderedArray");
3
- var saveToOrderedArray = require("./saveToOrderedArray");
4
- var writeBinary = require("./writeBinary");
5
- var encodeRange = require("./encodeRange");
6
- var createHuffman = function (counts) {
7
- var rest = [];
8
- var counts = [].slice.call(counts);
9
- do {
10
- var a = counts.pop();
11
- var b = counts.pop();
12
- var p = [+a + +b];
13
- if (!a.length) rest.unshift([0, p]);
14
- else a[1] = p, a[0] = 0;
15
- if (!b.length) rest.unshift([1, p]);
16
- else b[1] = p, b[0] = 1;
17
- saveToOrderedArray(counts, p, (a, b) => a >= b);
18
- } while (counts.length > 1);
19
-
20
- rest = rest.map(a => {
21
- var sum = a[0];
22
- var i = 1;
23
- while (a[1] !== p) {
24
- a = a[1];
25
- sum |= a[0] << i++;
26
- }
27
- return [sum, i];
28
- });
29
- rest = rest.sort((a, b) => a[1] - b[1]);
30
- return rest;
31
- };
32
-
33
- function encodeFlat(rest) {
34
- var countMap = {};
35
- var dist = [];
36
- rest = [].slice.call(rest);
37
- rest.forEach(sum => {
38
- sum = sum[1];
39
- if (!countMap[sum]) countMap[sum] = 1;
40
- else countMap[sum]++;
41
- });
42
- var max = 0, total = 0;
43
- for (var k in countMap) {
44
- var v = countMap[k];
45
- k = +k;
46
- if (k > max) max = k;
47
- if (v > max) max = v;
48
- total += k * v;
49
- dist.push(+k, v);
50
- }
51
- var t = 1;
52
- while (max >> t) t++;
53
- var buff = new Uint8Array(t * dist.length + total + 23 >> 3);
54
- buff[0] = dist.length >> 1;
55
- buff[1] = t;
56
- var offset = 16;
57
- while (dist.length > 0) {
58
- writeBinary(buff, offset, t, dist.pop());
59
- offset += t;
60
- }
61
- while (rest.length) {
62
- var s = rest.pop();
63
- writeBinary(buff, offset, s[1], s[0]);
64
- offset += s[1];
65
- }
66
- return buff;
67
- }
68
- function tohuff(buff, result = [], type_limit) {
69
- var a = new Uint32Array(type_limit);
70
- for (var cx = 0, dx = buff.length; cx < dx; cx++) {
71
- a[buff[cx]]++;
72
- }
73
- var b = new Uint32Array(type_limit);
74
- for (var cx = 0, dx = b.length; cx < dx; cx++) {
75
- b[cx] = cx;
76
- }
77
- b.sort(function (m, n) {
78
- return a[n] - a[m];
79
- });
80
- var size = getIndexFromOrderedArray(b, 1, (m, n) => a[m] >= n, false);
81
- if (a[b[size]] > 0) size++;
82
- if (size + 1 > b.length) console.log(a.slice(420), buff.filter(a => a > 512), b.slice(420))
83
-
84
- var c = new Uint32Array(b.buffer, 0, size + 1).map(_ => a[_]);
85
- c = createHuffman(c);
86
- var d = new Uint32Array(type_limit);
87
- var f = [].slice.call(encodeFlat(c));
88
- c.forEach((s, i) => {
89
- if (type_limit > 258) {
90
- if (b[i] < 128) {
91
- f.push(b[i]);
92
- } else {
93
- f.push((b[i] >> 8) + 128, b[i] & 0xff);
94
- }
95
- } else {
96
- f.push(b[i]);
97
- }
98
- a[b[i]] = s[0];
99
- d[b[i]] = s[1];
100
- });
101
- if (type_limit > 258 && b[c.length - 1] >= 128) f.pop();
102
- f.pop();
103
- result.push.apply(result, f);
104
- var bitoffset = result.length * 8;
105
- buff.forEach(s => {
106
- writeBinary(result, bitoffset, d[s], a[s]);
107
- bitoffset += d[s];
108
- });
109
- var endflag = c[c.length - 1];
110
- writeBinary(result, bitoffset, endflag[1], endflag[0]);
111
- return bitoffset + endflag[1];
112
- }
113
- function scan(buff) {
114
- var cache = [], cacheLength = 0, cacheLimit = 32768;
115
- var writeCache = function (length) {
116
- for (var cy = cx, dy = cx + length; cy < dy; cy++) {
117
- var b = buff[cy] << 8 | buff[cy + 1] ^ buff[cy + 2];
118
- if (cacheLength >= cacheLimit) {
119
- var t = cy - cacheLength;
120
- var a = buff[t++] << 8 | buff[t++] ^ buff[t];
121
- cache[a].shift();
122
- } else {
123
- cacheLength++;
124
- }
125
- if (!cache[b]) cache[b] = [];
126
- cache[b].push(cy);
127
- }
128
- };
129
- var readCache = function () {
130
- var sign = buff[cx] << 8 | buff[cx + 1] ^ buff[cx + 2];
131
- if (!cache[sign]) return buff[cx];
132
- var list = cache[sign];
133
- var max_length = 2, match_position;
134
- for (var cy = list.length - 1; cy > 0; cy--) {
135
- var inc = list[cy];
136
- for (var cz = 1, dz = Math.min(cx - inc, buff.length - cx); cz < dz; cz++) {
137
- if (buff[cx + cz] !== buff[inc + cz]) break;
138
- }
139
- if (cz > max_length) {
140
- max_length = cz;
141
- match_position = inc;
142
- }
143
- }
144
- if (max_length > 2) {
145
- sign = [max_length - 1, cx - match_position - max_length];
146
- } else {
147
- sign = buff[cx];
148
- }
149
- return sign;
150
- };
151
- var result = new Uint16Array(buff.length), result_index = 0;
152
- for (var cx = 0, dx = buff.length; cx < dx; cx++) {
153
- var b = readCache();
154
- if (b.length) {
155
- result[result_index++] = b[0] >> 8 | 0x100;
156
- result[result_index++] = b[0] & 0xff;
157
- result[result_index++] = b[1] >> 9;
158
- result[result_index++] = b[1] >> 4 & 0x1f;
159
- result[result_index++] = b[1] & 0xf;
160
- writeCache(1 + b[0]);
161
- cx += b[0];
162
- } else {
163
- result[result_index++] = b;
164
- writeCache(1);
165
- }
166
- }
167
- return result.slice(0, result_index);
168
- }
169
- function repeat(buff, readstart = 0) {
170
- var s = buff[readstart], f = [s], c = 0;
171
- for (var cx = readstart + 1, dx = buff.length; cx < dx; cx++) {
172
- if (buff[cx] !== s) break;
173
- }
174
- var length = cx - readstart;
175
- length = length & 0x1fff;
176
- if (length < 32) {
177
- f[1] = normal_repeat1 << 5 | length;
178
- } else {
179
- f[1] = normal_repeat2 << 5 | length >> 8;
180
- f[2] = length & 0xff;
181
- }
182
- f.byteoffset = cx;
183
- return f;
184
- }
185
- var concatTypedArray = require("./concatByte");
186
-
187
- function pack(buff) {
188
- if (buff.length < 2) return buff;
189
- var byteoffset = 0;
190
- var samples = []; var count1 = 0, countp;
191
- var tempoffset = byteoffset;
192
- var result = [];
193
- var reset = function () {
194
- tempoffset = byteoffset;
195
- samples = [];
196
- count1 = 0;
197
- countp = samples.length;
198
- };
199
- do {
200
- var s = buff[tempoffset++];
201
- var sl = samples.length;
202
- saveToOrderedArray(samples, s);
203
- if (sl === samples.length && tempoffset < buff.length && tempoffset - byteoffset < 8192 << 12) {
204
- continue;
205
- }
206
-
207
- switch (samples.length) {
208
- case 1:
209
- if (tempoffset - byteoffset > 8) {
210
- var f = repeat(buff, byteoffset);
211
- result.push(f);
212
- byteoffset = f.byteoffset;
213
- reset();
214
- break;
215
- }
216
- default:
217
- var length = tempoffset - byteoffset;
218
- if (tempoffset >= buff.length || length > 8192 << 12) {
219
- var res = [];
220
- var _buff = buff.slice(byteoffset, byteoffset + length);
221
- var _buff1 = scan(_buff);
222
- var huffman_type = repeat_huffman;
223
- var type_limit = 516;
224
- if (_buff.length <= _buff1.length) {
225
- type_limit = 258;
226
- huffman_type = normal_huffman;
227
- } else {
228
- _buff = _buff1;
229
- }
230
- tohuff(_buff, res, type_limit);
231
- res[1] |= huffman_type << 5;
232
- result.push(res);
233
- byteoffset = tempoffset;
234
- reset();
235
- }
236
- }
237
- } while (tempoffset < buff.length);
238
- result = concatTypedArray(result);
239
- return pack0(buff, result);
240
- }
241
-
242
- function pack0(buff, result) {
243
- var length = buff.length;
244
- if (length < 8192 && result.length - length > 2) {
245
- result = concatTypedArray([
246
- [length >> 5, normal_nocode1 << 5 | length & 0x1f],
247
- buff
248
- ]);
249
- }
250
- else if (length < 8192 << 8 && result.length - length > 3) {
251
- result = concatTypedArray([
252
- [length >> 13, normal_nocode2 << 5 | length >> 8 & 0x1f, length & 0xff],
253
- buff
254
- ]);
255
- }
256
- else if (length < 8192 << 16 && result.length - length > 4) {
257
- result = concatTypedArray([
258
- [length >> 21, normal_nocode3 << 5 | length >> 16 & 0x1f, length >> 8 & 0xff, length & 0xff],
259
- buff
260
- ]);
261
- }
262
- return result;
263
- }
264
-
265
- function int(n) {
266
- var dist = [];
267
- while (n > 0) {
268
- dist.push(n & 0xff);
269
- n = n / 256 | 0;
270
- }
271
- dist.reverse();
272
- return dist;
273
- }
274
-
275
-
276
- function pack2(buff) {
277
- var result = [];
278
- for (var cx = 0, dx = buff.length, bx = 32 * 1024 * 1024; cx < dx; cx += bx) {
279
- var b = buff.slice(cx, cx + bx);
280
- var b = scan(b);
281
- var e = encodeRange(b);
282
- var el = int(e.length);
283
- result.push(concatTypedArray([
284
- [
285
- range_compress,
286
- other_compress << 5 | el.length,
287
- ],
288
- el, e]));
289
- }
290
- result = concatTypedArray(result);
291
- return pack0(buff, result);
292
- }
293
- module.exports = function (buff, type) {
294
- switch (type) {
295
- case 1:
296
- return pack(buff);
297
- case 2:
298
- return pack2(buff);
299
- }
300
- return pack2(buff);
301
- };