style-xlsx-m 0.1.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/CHANGELOG.md +264 -0
- package/LICENSE +201 -0
- package/README.md +145 -0
- package/bin/xlsx.njs +310 -0
- package/bower.json +22 -0
- package/dist/LICENSE +201 -0
- package/dist/cpexcel.full.mjs +1502 -0
- package/dist/cpexcel.js +1506 -0
- package/dist/shim.min.js +2 -0
- package/dist/xlsx.core.min.js +15 -0
- package/dist/xlsx.core.min.map +1 -0
- package/dist/xlsx.extendscript.js +24642 -0
- package/dist/xlsx.full.min.js +22 -0
- package/dist/xlsx.full.min.map +1 -0
- package/dist/xlsx.mini.min.js +9 -0
- package/dist/xlsx.mini.min.map +1 -0
- package/dist/xlsx.zahl.js +4 -0
- package/dist/xlsx.zahl.mjs +2 -0
- package/package.json +101 -0
- package/types/index.d.ts +900 -0
- package/types/tsconfig.json +15 -0
- package/xlsx-js-style/LICENSE +201 -0
- package/xlsx-js-style/bin/xlsx.njs +284 -0
- package/xlsx-js-style/dist/LICENSE +201 -0
- package/xlsx-js-style/dist/cpexcel.full.mjs +1502 -0
- package/xlsx-js-style/dist/cpexcel.js +1506 -0
- package/xlsx-js-style/dist/shim.min.js +2 -0
- package/xlsx-js-style/dist/xlsx.bundle.js +3 -0
- package/xlsx-js-style/dist/xlsx.bundle.js.map +1 -0
- package/xlsx-js-style/dist/xlsx.min.js +3 -0
- package/xlsx-js-style/dist/xlsx.min.js.map +1 -0
- package/xlsx-js-style/node_modules/.bin/adler32 +12 -0
- package/xlsx-js-style/node_modules/.bin/adler32.cmd +17 -0
- package/xlsx-js-style/node_modules/.bin/adler32.ps1 +28 -0
- package/xlsx-js-style/node_modules/.bin/codepage +12 -0
- package/xlsx-js-style/node_modules/.bin/codepage.cmd +17 -0
- package/xlsx-js-style/node_modules/.bin/codepage.ps1 +28 -0
- package/xlsx-js-style/node_modules/adler-32/LICENSE +14 -0
- package/xlsx-js-style/node_modules/adler-32/README.md +139 -0
- package/xlsx-js-style/node_modules/adler-32/adler32.js +92 -0
- package/xlsx-js-style/node_modules/adler-32/bin/adler32.njs +87 -0
- package/xlsx-js-style/node_modules/adler-32/package.json +42 -0
- package/xlsx-js-style/node_modules/adler-32/types/index.d.ts +14 -0
- package/xlsx-js-style/node_modules/adler-32/types/tsconfig.json +14 -0
- package/xlsx-js-style/node_modules/adler-32/types/tslint.json +11 -0
- package/xlsx-js-style/node_modules/codepage/LICENSE +14 -0
- package/xlsx-js-style/node_modules/codepage/README.md +347 -0
- package/xlsx-js-style/node_modules/codepage/bin/codepage.njs +98 -0
- package/xlsx-js-style/node_modules/codepage/bits/10000.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/10001.js +115 -0
- package/xlsx-js-style/node_modules/codepage/bits/10002.js +253 -0
- package/xlsx-js-style/node_modules/codepage/bits/10003.js +183 -0
- package/xlsx-js-style/node_modules/codepage/bits/10004.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/10005.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/10006.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/10007.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/10008.js +167 -0
- package/xlsx-js-style/node_modules/codepage/bits/10010.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/10017.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/10021.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/10029.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/10079.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/10081.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/10082.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1010.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1026.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1047.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1132.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1140.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1141.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1142.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1143.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1144.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1145.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1146.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1147.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1148.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1149.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1250.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1251.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1252.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1253.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1254.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1255.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1256.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1257.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1258.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/1361.js +231 -0
- package/xlsx-js-style/node_modules/codepage/bits/20000.js +193 -0
- package/xlsx-js-style/node_modules/codepage/bits/20001.js +217 -0
- package/xlsx-js-style/node_modules/codepage/bits/20002.js +167 -0
- package/xlsx-js-style/node_modules/codepage/bits/20003.js +213 -0
- package/xlsx-js-style/node_modules/codepage/bits/20004.js +193 -0
- package/xlsx-js-style/node_modules/codepage/bits/20005.js +223 -0
- package/xlsx-js-style/node_modules/codepage/bits/20105.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20106.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20107.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20108.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20261.js +31 -0
- package/xlsx-js-style/node_modules/codepage/bits/20269.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20273.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20277.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20278.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20280.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20284.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20285.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20290.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20297.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20420.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20423.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20424.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20833.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20838.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20866.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20871.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20880.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20905.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20924.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/20932.js +189 -0
- package/xlsx-js-style/node_modules/codepage/bits/20936.js +167 -0
- package/xlsx-js-style/node_modules/codepage/bits/20949.js +183 -0
- package/xlsx-js-style/node_modules/codepage/bits/21025.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/21027.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/21866.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/28591.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/28592.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/28593.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/28594.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/28595.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/28596.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/28597.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/28598.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/28599.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/28600.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/28601.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/28603.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/28604.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/28605.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/28606.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/29001.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/37.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/38598.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/437.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/47451.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/500.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/50220.js +395 -0
- package/xlsx-js-style/node_modules/codepage/bits/50221.js +395 -0
- package/xlsx-js-style/node_modules/codepage/bits/50222.js +395 -0
- package/xlsx-js-style/node_modules/codepage/bits/50225.js +259 -0
- package/xlsx-js-style/node_modules/codepage/bits/50227.js +257 -0
- package/xlsx-js-style/node_modules/codepage/bits/51932.js +171 -0
- package/xlsx-js-style/node_modules/codepage/bits/51936.js +257 -0
- package/xlsx-js-style/node_modules/codepage/bits/51949.js +183 -0
- package/xlsx-js-style/node_modules/codepage/bits/52936.js +7 -0
- package/xlsx-js-style/node_modules/codepage/bits/54936.js +257 -0
- package/xlsx-js-style/node_modules/codepage/bits/57002.js +39 -0
- package/xlsx-js-style/node_modules/codepage/bits/57003.js +23 -0
- package/xlsx-js-style/node_modules/codepage/bits/57004.js +7 -0
- package/xlsx-js-style/node_modules/codepage/bits/57005.js +15 -0
- package/xlsx-js-style/node_modules/codepage/bits/57006.js +23 -0
- package/xlsx-js-style/node_modules/codepage/bits/57007.js +21 -0
- package/xlsx-js-style/node_modules/codepage/bits/57008.js +17 -0
- package/xlsx-js-style/node_modules/codepage/bits/57009.js +13 -0
- package/xlsx-js-style/node_modules/codepage/bits/57010.js +15 -0
- package/xlsx-js-style/node_modules/codepage/bits/57011.js +17 -0
- package/xlsx-js-style/node_modules/codepage/bits/620.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/708.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/720.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/737.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/775.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/808.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/850.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/852.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/855.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/857.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/858.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/860.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/861.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/862.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/863.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/864.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/865.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/866.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/869.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/870.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/872.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/874.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/875.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/895.js +2 -0
- package/xlsx-js-style/node_modules/codepage/bits/932.js +95 -0
- package/xlsx-js-style/node_modules/codepage/bits/936.js +257 -0
- package/xlsx-js-style/node_modules/codepage/bits/949.js +253 -0
- package/xlsx-js-style/node_modules/codepage/bits/950.js +179 -0
- package/xlsx-js-style/node_modules/codepage/cptable.js +6347 -0
- package/xlsx-js-style/node_modules/codepage/cputils.js +528 -0
- package/xlsx-js-style/node_modules/codepage/dist/LICENSE +14 -0
- package/xlsx-js-style/node_modules/codepage/dist/cpexcel.full.js +1505 -0
- package/xlsx-js-style/node_modules/codepage/dist/cputils.js +528 -0
- package/xlsx-js-style/node_modules/codepage/dist/sbcs.full.js +639 -0
- package/xlsx-js-style/node_modules/codepage/node_modules/commander/CHANGELOG.md +350 -0
- package/xlsx-js-style/node_modules/codepage/node_modules/commander/LICENSE +22 -0
- package/xlsx-js-style/node_modules/codepage/node_modules/commander/Readme.md +408 -0
- package/xlsx-js-style/node_modules/codepage/node_modules/commander/index.js +1157 -0
- package/xlsx-js-style/node_modules/codepage/node_modules/commander/package.json +37 -0
- package/xlsx-js-style/node_modules/codepage/node_modules/commander/typings/index.d.ts +309 -0
- package/xlsx-js-style/node_modules/codepage/package.json +67 -0
- package/xlsx-js-style/node_modules/codepage/types/index.d.ts +39 -0
- package/xlsx-js-style/node_modules/codepage/types/tsconfig.json +14 -0
- package/xlsx-js-style/node_modules/codepage/types/tslint.json +11 -0
- package/xlsx-js-style/package.json +90 -0
- package/xlsx-js-style/types/index.d.ts +1065 -0
- package/xlsx-js-style/types/tsconfig.json +15 -0
- package/xlsx.js +24711 -0
- package/xlsx.mjs +24597 -0
- package/xlsxworker.js +14 -0
|
@@ -0,0 +1,528 @@
|
|
|
1
|
+
/* cputils.js (C) 2013-present SheetJS -- http://sheetjs.com */
|
|
2
|
+
/* vim: set ft=javascript: */
|
|
3
|
+
/*jshint newcap: false */
|
|
4
|
+
(function(root, factory) {
|
|
5
|
+
/*jshint ignore:start */
|
|
6
|
+
/*eslint-disable */
|
|
7
|
+
"use strict";
|
|
8
|
+
if(typeof cptable === "undefined") {
|
|
9
|
+
if(typeof require !== "undefined"){
|
|
10
|
+
var cpt = require('./cptable');
|
|
11
|
+
if (typeof module !== 'undefined' && module.exports && typeof DO_NOT_EXPORT_CODEPAGE === 'undefined') module.exports = factory(cpt);
|
|
12
|
+
else root.cptable = factory(cpt);
|
|
13
|
+
} else throw new Error("cptable not found");
|
|
14
|
+
} else cptable = factory(cptable);
|
|
15
|
+
/*eslint-enable */
|
|
16
|
+
/*jshint ignore:end */
|
|
17
|
+
}(this, function(cpt){
|
|
18
|
+
"use strict";
|
|
19
|
+
/*global module, Buffer */
|
|
20
|
+
var magic = {
|
|
21
|
+
"1200":"utf16le",
|
|
22
|
+
"1201":"utf16be",
|
|
23
|
+
"12000":"utf32le",
|
|
24
|
+
"12001":"utf32be",
|
|
25
|
+
"16969":"utf64le",
|
|
26
|
+
"20127":"ascii",
|
|
27
|
+
"65000":"utf7",
|
|
28
|
+
"65001":"utf8"
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
var sbcs_cache = [874,1250,1251,1252,1253,1254,1255,1256,10000];
|
|
32
|
+
var dbcs_cache = [932,936,949,950];
|
|
33
|
+
var magic_cache = [65001];
|
|
34
|
+
var magic_decode = {};
|
|
35
|
+
var magic_encode = {};
|
|
36
|
+
var cpdcache = {};
|
|
37
|
+
var cpecache = {};
|
|
38
|
+
|
|
39
|
+
var sfcc = function sfcc(x) { return String.fromCharCode(x); };
|
|
40
|
+
var cca = function cca(x) { return x.charCodeAt(0); };
|
|
41
|
+
|
|
42
|
+
var has_buf = (typeof Buffer !== 'undefined');
|
|
43
|
+
var Buffer_from = function(){};
|
|
44
|
+
if(has_buf) {
|
|
45
|
+
var nbfs = !Buffer.from;
|
|
46
|
+
if(!nbfs) try { Buffer.from("foo", "utf8"); } catch(e) { nbfs = true; }
|
|
47
|
+
Buffer_from = nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);
|
|
48
|
+
// $FlowIgnore
|
|
49
|
+
if(!Buffer.allocUnsafe) Buffer.allocUnsafe = function(n) { return new Buffer(n); };
|
|
50
|
+
|
|
51
|
+
var mdl = 1024, mdb = Buffer.allocUnsafe(mdl);
|
|
52
|
+
var make_EE = function make_EE(E){
|
|
53
|
+
var EE = Buffer.allocUnsafe(65536);
|
|
54
|
+
for(var i = 0; i < 65536;++i) EE[i] = 0;
|
|
55
|
+
var keys = Object.keys(E), len = keys.length;
|
|
56
|
+
for(var ee = 0, e = keys[ee]; ee < len; ++ee) {
|
|
57
|
+
if(!(e = keys[ee])) continue;
|
|
58
|
+
EE[e.charCodeAt(0)] = E[e];
|
|
59
|
+
}
|
|
60
|
+
return EE;
|
|
61
|
+
};
|
|
62
|
+
var sbcs_encode = function make_sbcs_encode(cp) {
|
|
63
|
+
var EE = make_EE(cpt[cp].enc);
|
|
64
|
+
return function sbcs_e(data, ofmt) {
|
|
65
|
+
var len = data.length;
|
|
66
|
+
var out, i=0, j=0, D=0, w=0;
|
|
67
|
+
if(typeof data === 'string') {
|
|
68
|
+
out = Buffer.allocUnsafe(len);
|
|
69
|
+
for(i = 0; i < len; ++i) out[i] = EE[data.charCodeAt(i)];
|
|
70
|
+
} else if(Buffer.isBuffer(data)) {
|
|
71
|
+
out = Buffer.allocUnsafe(2*len);
|
|
72
|
+
j = 0;
|
|
73
|
+
for(i = 0; i < len; ++i) {
|
|
74
|
+
D = data[i];
|
|
75
|
+
if(D < 128) out[j++] = EE[D];
|
|
76
|
+
else if(D < 224) { out[j++] = EE[((D&31)<<6)+(data[i+1]&63)]; ++i; }
|
|
77
|
+
else if(D < 240) { out[j++] = EE[((D&15)<<12)+((data[i+1]&63)<<6)+(data[i+2]&63)]; i+=2; }
|
|
78
|
+
else {
|
|
79
|
+
w = ((D&7)<<18)+((data[i+1]&63)<<12)+((data[i+2]&63)<<6)+(data[i+3]&63); i+=3;
|
|
80
|
+
if(w < 65536) out[j++] = EE[w];
|
|
81
|
+
else { w -= 65536; out[j++] = EE[0xD800 + ((w>>10)&1023)]; out[j++] = EE[0xDC00 + (w&1023)]; }
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
out = out.slice(0,j);
|
|
85
|
+
} else {
|
|
86
|
+
out = Buffer.allocUnsafe(len);
|
|
87
|
+
for(i = 0; i < len; ++i) out[i] = EE[data[i].charCodeAt(0)];
|
|
88
|
+
}
|
|
89
|
+
if(!ofmt || ofmt === 'buf') return out;
|
|
90
|
+
if(ofmt !== 'arr') return out.toString('binary');
|
|
91
|
+
return [].slice.call(out);
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
var sbcs_decode = function make_sbcs_decode(cp) {
|
|
95
|
+
var D = cpt[cp].dec;
|
|
96
|
+
var DD = Buffer.allocUnsafe(131072), d=0, c="";
|
|
97
|
+
for(d=0;d<D.length;++d) {
|
|
98
|
+
if(!(c=D[d])) continue;
|
|
99
|
+
var w = c.charCodeAt(0);
|
|
100
|
+
DD[2*d] = w&255; DD[2*d+1] = w>>8;
|
|
101
|
+
}
|
|
102
|
+
return function sbcs_d(data) {
|
|
103
|
+
var len = data.length, i=0, j=0;
|
|
104
|
+
if(2 * len > mdl) { mdl = 2 * len; mdb = Buffer.allocUnsafe(mdl); }
|
|
105
|
+
if(Buffer.isBuffer(data)) {
|
|
106
|
+
for(i = 0; i < len; i++) {
|
|
107
|
+
j = 2*data[i];
|
|
108
|
+
mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1];
|
|
109
|
+
}
|
|
110
|
+
} else if(typeof data === "string") {
|
|
111
|
+
for(i = 0; i < len; i++) {
|
|
112
|
+
j = 2*data.charCodeAt(i);
|
|
113
|
+
mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1];
|
|
114
|
+
}
|
|
115
|
+
} else {
|
|
116
|
+
for(i = 0; i < len; i++) {
|
|
117
|
+
j = 2*data[i];
|
|
118
|
+
mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1];
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return mdb.slice(0, 2 * len).toString('ucs2');
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
var dbcs_encode = function make_dbcs_encode(cp) {
|
|
125
|
+
var E = cpt[cp].enc;
|
|
126
|
+
var EE = Buffer.allocUnsafe(131072);
|
|
127
|
+
for(var i = 0; i < 131072; ++i) EE[i] = 0;
|
|
128
|
+
var keys = Object.keys(E);
|
|
129
|
+
for(var ee = 0, e = keys[ee]; ee < keys.length; ++ee) {
|
|
130
|
+
if(!(e = keys[ee])) continue;
|
|
131
|
+
var f = e.charCodeAt(0);
|
|
132
|
+
EE[2*f] = E[e] & 255; EE[2*f+1] = E[e]>>8;
|
|
133
|
+
}
|
|
134
|
+
return function dbcs_e(data, ofmt) {
|
|
135
|
+
var len = data.length, out = Buffer.allocUnsafe(2*len), i=0, j=0, jj=0, k=0, D=0;
|
|
136
|
+
if(typeof data === 'string') {
|
|
137
|
+
for(i = k = 0; i < len; ++i) {
|
|
138
|
+
j = data.charCodeAt(i)*2;
|
|
139
|
+
out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];
|
|
140
|
+
}
|
|
141
|
+
out = out.slice(0,k);
|
|
142
|
+
} else if(Buffer.isBuffer(data)) {
|
|
143
|
+
for(i = k = 0; i < len; ++i) {
|
|
144
|
+
D = data[i];
|
|
145
|
+
if(D < 128) j = D;
|
|
146
|
+
else if(D < 224) { j = ((D&31)<<6)+(data[i+1]&63); ++i; }
|
|
147
|
+
else if(D < 240) { j = ((D&15)<<12)+((data[i+1]&63)<<6)+(data[i+2]&63); i+=2; }
|
|
148
|
+
else { j = ((D&7)<<18)+((data[i+1]&63)<<12)+((data[i+2]&63)<<6)+(data[i+3]&63); i+=3; }
|
|
149
|
+
if(j<65536) { j*=2; out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; }
|
|
150
|
+
else { jj = j-65536;
|
|
151
|
+
j=2*(0xD800 + ((jj>>10)&1023)); out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];
|
|
152
|
+
j=2*(0xDC00 + (jj&1023)); out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
out = out.slice(0,k);
|
|
156
|
+
} else {
|
|
157
|
+
for(i = k = 0; i < len; i++) {
|
|
158
|
+
j = data[i].charCodeAt(0)*2;
|
|
159
|
+
out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if(!ofmt || ofmt === 'buf') return out;
|
|
163
|
+
if(ofmt !== 'arr') return out.toString('binary');
|
|
164
|
+
return [].slice.call(out);
|
|
165
|
+
};
|
|
166
|
+
};
|
|
167
|
+
var dbcs_decode = function make_dbcs_decode(cp) {
|
|
168
|
+
var D = cpt[cp].dec;
|
|
169
|
+
var DD = Buffer.allocUnsafe(131072), d=0, c, w=0, j=0, i=0;
|
|
170
|
+
for(i = 0; i < 65536; ++i) { DD[2*i] = 0xFF; DD[2*i+1] = 0xFD;}
|
|
171
|
+
for(d = 0; d < D.length; ++d) {
|
|
172
|
+
if(!(c=D[d])) continue;
|
|
173
|
+
w = c.charCodeAt(0);
|
|
174
|
+
j = 2*d;
|
|
175
|
+
DD[j] = w&255; DD[j+1] = w>>8;
|
|
176
|
+
}
|
|
177
|
+
return function dbcs_d(data) {
|
|
178
|
+
var len = data.length, out = Buffer.allocUnsafe(2*len), i=0, j=0, k=0;
|
|
179
|
+
if(Buffer.isBuffer(data)) {
|
|
180
|
+
for(i = 0; i < len; i++) {
|
|
181
|
+
j = 2*data[i];
|
|
182
|
+
if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data[i]<<8)+data[i+1]); ++i; }
|
|
183
|
+
out[k++] = DD[j]; out[k++] = DD[j+1];
|
|
184
|
+
}
|
|
185
|
+
} else if(typeof data === "string") {
|
|
186
|
+
for(i = 0; i < len; i++) {
|
|
187
|
+
j = 2*data.charCodeAt(i);
|
|
188
|
+
if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data.charCodeAt(i)<<8)+data.charCodeAt(i+1)); ++i; }
|
|
189
|
+
out[k++] = DD[j]; out[k++] = DD[j+1];
|
|
190
|
+
}
|
|
191
|
+
} else {
|
|
192
|
+
for(i = 0; i < len; i++) {
|
|
193
|
+
j = 2*data[i];
|
|
194
|
+
if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data[i]<<8)+data[i+1]); ++i; }
|
|
195
|
+
out[k++] = DD[j]; out[k++] = DD[j+1];
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return out.slice(0,k).toString('ucs2');
|
|
199
|
+
};
|
|
200
|
+
};
|
|
201
|
+
magic_decode[65001] = function utf8_d(data) {
|
|
202
|
+
if(typeof data === "string") return utf8_d(data.split("").map(cca));
|
|
203
|
+
var len = data.length, w = 0, ww = 0;
|
|
204
|
+
if(4 * len > mdl) { mdl = 4 * len; mdb = Buffer.allocUnsafe(mdl); }
|
|
205
|
+
var i = 0;
|
|
206
|
+
if(len >= 3 && data[0] == 0xEF) if(data[1] == 0xBB && data[2] == 0xBF) i = 3;
|
|
207
|
+
for(var j = 1, k = 0, D = 0; i < len; i+=j) {
|
|
208
|
+
j = 1; D = data[i];
|
|
209
|
+
if(D < 128) w = D;
|
|
210
|
+
else if(D < 224) { w=(D&31)*64+(data[i+1]&63); j=2; }
|
|
211
|
+
else if(D < 240) { w=((D&15)<<12)+(data[i+1]&63)*64+(data[i+2]&63); j=3; }
|
|
212
|
+
else { w=(D&7)*262144+((data[i+1]&63)<<12)+(data[i+2]&63)*64+(data[i+3]&63); j=4; }
|
|
213
|
+
if(w < 65536) { mdb[k++] = w&255; mdb[k++] = w>>8; }
|
|
214
|
+
else {
|
|
215
|
+
w -= 65536; ww = 0xD800 + ((w>>10)&1023); w = 0xDC00 + (w&1023);
|
|
216
|
+
mdb[k++] = ww&255; mdb[k++] = ww>>>8; mdb[k++] = w&255; mdb[k++] = (w>>>8)&255;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return mdb.slice(0,k).toString('ucs2');
|
|
220
|
+
};
|
|
221
|
+
magic_encode[65001] = function utf8_e(data, ofmt) {
|
|
222
|
+
if(has_buf && Buffer.isBuffer(data)) {
|
|
223
|
+
if(!ofmt || ofmt === 'buf') return data;
|
|
224
|
+
if(ofmt !== 'arr') return data.toString('binary');
|
|
225
|
+
return [].slice.call(data);
|
|
226
|
+
}
|
|
227
|
+
var len = data.length, w = 0, ww = 0, j = 0;
|
|
228
|
+
var direct = typeof data === "string";
|
|
229
|
+
if(4 * len > mdl) { mdl = 4 * len; mdb = Buffer.allocUnsafe(mdl); }
|
|
230
|
+
for(var i = 0; i < len; ++i) {
|
|
231
|
+
w = direct ? data.charCodeAt(i) : data[i].charCodeAt(0);
|
|
232
|
+
if(w <= 0x007F) mdb[j++] = w;
|
|
233
|
+
else if(w <= 0x07FF) {
|
|
234
|
+
mdb[j++] = 192 + (w >> 6);
|
|
235
|
+
mdb[j++] = 128 + (w&63);
|
|
236
|
+
} else if(w >= 0xD800 && w <= 0xDFFF) {
|
|
237
|
+
w -= 0xD800; ++i;
|
|
238
|
+
ww = (direct ? data.charCodeAt(i) : data[i].charCodeAt(0)) - 0xDC00 + (w << 10);
|
|
239
|
+
mdb[j++] = 240 + ((ww>>>18) & 0x07);
|
|
240
|
+
mdb[j++] = 144 + ((ww>>>12) & 0x3F);
|
|
241
|
+
mdb[j++] = 128 + ((ww>>>6) & 0x3F);
|
|
242
|
+
mdb[j++] = 128 + (ww & 0x3F);
|
|
243
|
+
} else {
|
|
244
|
+
mdb[j++] = 224 + (w >> 12);
|
|
245
|
+
mdb[j++] = 128 + ((w >> 6)&63);
|
|
246
|
+
mdb[j++] = 128 + (w&63);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
if(!ofmt || ofmt === 'buf') return mdb.slice(0,j);
|
|
250
|
+
if(ofmt !== 'arr') return mdb.slice(0,j).toString('binary');
|
|
251
|
+
return [].slice.call(mdb, 0, j);
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
var encache = function encache() {
|
|
256
|
+
if(has_buf) {
|
|
257
|
+
if(cpdcache[sbcs_cache[0]]) return;
|
|
258
|
+
var i=0, s=0;
|
|
259
|
+
for(i = 0; i < sbcs_cache.length; ++i) {
|
|
260
|
+
s = sbcs_cache[i];
|
|
261
|
+
if(cpt[s]) {
|
|
262
|
+
cpdcache[s] = sbcs_decode(s);
|
|
263
|
+
cpecache[s] = sbcs_encode(s);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
for(i = 0; i < dbcs_cache.length; ++i) {
|
|
267
|
+
s = dbcs_cache[i];
|
|
268
|
+
if(cpt[s]) {
|
|
269
|
+
cpdcache[s] = dbcs_decode(s);
|
|
270
|
+
cpecache[s] = dbcs_encode(s);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
for(i = 0; i < magic_cache.length; ++i) {
|
|
274
|
+
s = magic_cache[i];
|
|
275
|
+
if(magic_decode[s]) cpdcache[s] = magic_decode[s];
|
|
276
|
+
if(magic_encode[s]) cpecache[s] = magic_encode[s];
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
};
|
|
280
|
+
var null_enc = function(data, ofmt) { void ofmt; return ""; };
|
|
281
|
+
var cp_decache = function cp_decache(cp) { delete cpdcache[cp]; delete cpecache[cp]; };
|
|
282
|
+
var decache = function decache() {
|
|
283
|
+
if(has_buf) {
|
|
284
|
+
if(!cpdcache[sbcs_cache[0]]) return;
|
|
285
|
+
sbcs_cache.forEach(cp_decache);
|
|
286
|
+
dbcs_cache.forEach(cp_decache);
|
|
287
|
+
magic_cache.forEach(cp_decache);
|
|
288
|
+
}
|
|
289
|
+
last_enc = null_enc; last_cp = 0;
|
|
290
|
+
};
|
|
291
|
+
var cache = {
|
|
292
|
+
encache: encache,
|
|
293
|
+
decache: decache,
|
|
294
|
+
sbcs: sbcs_cache,
|
|
295
|
+
dbcs: dbcs_cache
|
|
296
|
+
};
|
|
297
|
+
|
|
298
|
+
encache();
|
|
299
|
+
|
|
300
|
+
var BM = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
301
|
+
var SetD = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?";
|
|
302
|
+
var last_enc = null_enc, last_cp = 0;
|
|
303
|
+
var encode = function encode(cp, data, ofmt) {
|
|
304
|
+
if(cp === last_cp && last_enc) { return last_enc(data, ofmt); }
|
|
305
|
+
if(cpecache[cp]) { last_enc = cpecache[last_cp=cp]; return last_enc(data, ofmt); }
|
|
306
|
+
if(has_buf && Buffer.isBuffer(data)) data = data.toString('utf8');
|
|
307
|
+
var len = data.length;
|
|
308
|
+
var out = has_buf ? Buffer.allocUnsafe(4*len) : [], w=0, i=0, j = 0, ww=0;
|
|
309
|
+
var C = cpt[cp], E, M = "";
|
|
310
|
+
var isstr = typeof data === 'string';
|
|
311
|
+
if(C && (E=C.enc)) for(i = 0; i < len; ++i, ++j) {
|
|
312
|
+
w = E[isstr? data.charAt(i) : data[i]];
|
|
313
|
+
if(w > 255) {
|
|
314
|
+
out[j] = w>>8;
|
|
315
|
+
out[++j] = w&255;
|
|
316
|
+
} else out[j] = w&255;
|
|
317
|
+
}
|
|
318
|
+
else if((M=magic[cp])) switch(M) {
|
|
319
|
+
case "utf8":
|
|
320
|
+
if(has_buf && isstr) { out = Buffer_from(data, M); j = out.length; break; }
|
|
321
|
+
for(i = 0; i < len; ++i, ++j) {
|
|
322
|
+
w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);
|
|
323
|
+
if(w <= 0x007F) out[j] = w;
|
|
324
|
+
else if(w <= 0x07FF) {
|
|
325
|
+
out[j] = 192 + (w >> 6);
|
|
326
|
+
out[++j] = 128 + (w&63);
|
|
327
|
+
} else if(w >= 0xD800 && w <= 0xDFFF) {
|
|
328
|
+
w -= 0xD800;
|
|
329
|
+
ww = (isstr ? data.charCodeAt(++i) : data[++i].charCodeAt(0)) - 0xDC00 + (w << 10);
|
|
330
|
+
out[j] = 240 + ((ww>>>18) & 0x07);
|
|
331
|
+
out[++j] = 144 + ((ww>>>12) & 0x3F);
|
|
332
|
+
out[++j] = 128 + ((ww>>>6) & 0x3F);
|
|
333
|
+
out[++j] = 128 + (ww & 0x3F);
|
|
334
|
+
} else {
|
|
335
|
+
out[j] = 224 + (w >> 12);
|
|
336
|
+
out[++j] = 128 + ((w >> 6)&63);
|
|
337
|
+
out[++j] = 128 + (w&63);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
break;
|
|
341
|
+
case "ascii":
|
|
342
|
+
if(has_buf && typeof data === "string") { out = Buffer_from(data, M); j = out.length; break; }
|
|
343
|
+
for(i = 0; i < len; ++i, ++j) {
|
|
344
|
+
w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);
|
|
345
|
+
if(w <= 0x007F) out[j] = w;
|
|
346
|
+
else throw new Error("bad ascii " + w);
|
|
347
|
+
}
|
|
348
|
+
break;
|
|
349
|
+
case "utf16le":
|
|
350
|
+
if(has_buf && typeof data === "string") { out = Buffer_from(data, M); j = out.length; break; }
|
|
351
|
+
for(i = 0; i < len; ++i) {
|
|
352
|
+
w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);
|
|
353
|
+
out[j++] = w&255;
|
|
354
|
+
out[j++] = w>>8;
|
|
355
|
+
}
|
|
356
|
+
break;
|
|
357
|
+
case "utf16be":
|
|
358
|
+
for(i = 0; i < len; ++i) {
|
|
359
|
+
w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);
|
|
360
|
+
out[j++] = w>>8;
|
|
361
|
+
out[j++] = w&255;
|
|
362
|
+
}
|
|
363
|
+
break;
|
|
364
|
+
case "utf32le":
|
|
365
|
+
for(i = 0; i < len; ++i) {
|
|
366
|
+
w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);
|
|
367
|
+
if(w >= 0xD800 && w <= 0xDFFF) w = 0x10000 + ((w - 0xD800) << 10) + (data[++i].charCodeAt(0) - 0xDC00);
|
|
368
|
+
out[j++] = w&255; w >>= 8;
|
|
369
|
+
out[j++] = w&255; w >>= 8;
|
|
370
|
+
out[j++] = w&255; w >>= 8;
|
|
371
|
+
out[j++] = w&255;
|
|
372
|
+
}
|
|
373
|
+
break;
|
|
374
|
+
case "utf32be":
|
|
375
|
+
for(i = 0; i < len; ++i) {
|
|
376
|
+
w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);
|
|
377
|
+
if(w >= 0xD800 && w <= 0xDFFF) w = 0x10000 + ((w - 0xD800) << 10) + (data[++i].charCodeAt(0) - 0xDC00);
|
|
378
|
+
out[j+3] = w&255; w >>= 8;
|
|
379
|
+
out[j+2] = w&255; w >>= 8;
|
|
380
|
+
out[j+1] = w&255; w >>= 8;
|
|
381
|
+
out[j] = w&255;
|
|
382
|
+
j+=4;
|
|
383
|
+
}
|
|
384
|
+
break;
|
|
385
|
+
case "utf7":
|
|
386
|
+
for(i = 0; i < len; i++) {
|
|
387
|
+
var c = isstr ? data.charAt(i) : data[i].charAt(0);
|
|
388
|
+
if(c === "+") { out[j++] = 0x2b; out[j++] = 0x2d; continue; }
|
|
389
|
+
if(SetD.indexOf(c) > -1) { out[j++] = c.charCodeAt(0); continue; }
|
|
390
|
+
var tt = encode(1201, c);
|
|
391
|
+
out[j++] = 0x2b;
|
|
392
|
+
out[j++] = BM.charCodeAt(tt[0]>>2);
|
|
393
|
+
out[j++] = BM.charCodeAt(((tt[0]&0x03)<<4) + ((tt[1]||0)>>4));
|
|
394
|
+
out[j++] = BM.charCodeAt(((tt[1]&0x0F)<<2) + ((tt[2]||0)>>6));
|
|
395
|
+
out[j++] = 0x2d;
|
|
396
|
+
}
|
|
397
|
+
break;
|
|
398
|
+
default: throw new Error("Unsupported magic: " + cp + " " + magic[cp]);
|
|
399
|
+
}
|
|
400
|
+
else throw new Error("Unrecognized CP: " + cp);
|
|
401
|
+
out = out.slice(0,j);
|
|
402
|
+
if(!has_buf) return (ofmt == 'str') ? (out).map(sfcc).join("") : out;
|
|
403
|
+
if(!ofmt || ofmt === 'buf') return out;
|
|
404
|
+
if(ofmt !== 'arr') return out.toString('binary');
|
|
405
|
+
return [].slice.call(out);
|
|
406
|
+
};
|
|
407
|
+
var decode = function decode(cp, data) {
|
|
408
|
+
var F; if((F=cpdcache[cp])) return F(data);
|
|
409
|
+
if(typeof data === "string") return decode(cp, data.split("").map(cca));
|
|
410
|
+
var len = data.length, out = new Array(len), s="", w=0, i=0, j=1, k=0, ww=0;
|
|
411
|
+
var C = cpt[cp], D, M="";
|
|
412
|
+
if(C && (D=C.dec)) {
|
|
413
|
+
for(i = 0; i < len; i+=j) {
|
|
414
|
+
j = 2;
|
|
415
|
+
s = D[(data[i]<<8)+ data[i+1]];
|
|
416
|
+
if(!s) {
|
|
417
|
+
j = 1;
|
|
418
|
+
s = D[data[i]];
|
|
419
|
+
}
|
|
420
|
+
if(!s) throw new Error('Unrecognized code: ' + data[i] + ' ' + data[i+j-1] + ' ' + i + ' ' + j + ' ' + D[data[i]]);
|
|
421
|
+
out[k++] = s;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
else if((M=magic[cp])) switch(M) {
|
|
425
|
+
case "utf8":
|
|
426
|
+
if(len >= 3 && data[0] == 0xEF) if(data[1] == 0xBB && data[2] == 0xBF) i = 3;
|
|
427
|
+
for(; i < len; i+=j) {
|
|
428
|
+
j = 1;
|
|
429
|
+
if(data[i] < 128) w = data[i];
|
|
430
|
+
else if(data[i] < 224) { w=(data[i]&31)*64+(data[i+1]&63); j=2; }
|
|
431
|
+
else if(data[i] < 240) { w=((data[i]&15)<<12)+(data[i+1]&63)*64+(data[i+2]&63); j=3; }
|
|
432
|
+
else { w=(data[i]&7)*262144+((data[i+1]&63)<<12)+(data[i+2]&63)*64+(data[i+3]&63); j=4; }
|
|
433
|
+
if(w < 65536) { out[k++] = String.fromCharCode(w); }
|
|
434
|
+
else {
|
|
435
|
+
w -= 65536; ww = 0xD800 + ((w>>10)&1023); w = 0xDC00 + (w&1023);
|
|
436
|
+
out[k++] = String.fromCharCode(ww); out[k++] = String.fromCharCode(w);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
break;
|
|
440
|
+
case "ascii":
|
|
441
|
+
if(has_buf && Buffer.isBuffer(data)) return data.toString(M);
|
|
442
|
+
for(i = 0; i < len; i++) out[i] = String.fromCharCode(data[i]);
|
|
443
|
+
k = len; break;
|
|
444
|
+
case "utf16le":
|
|
445
|
+
if(len >= 2 && data[0] == 0xFF) if(data[1] == 0xFE) i = 2;
|
|
446
|
+
if(has_buf && Buffer.isBuffer(data)) return data.toString(M);
|
|
447
|
+
j = 2;
|
|
448
|
+
for(; i+1 < len; i+=j) {
|
|
449
|
+
out[k++] = String.fromCharCode((data[i+1]<<8) + data[i]);
|
|
450
|
+
}
|
|
451
|
+
break;
|
|
452
|
+
case "utf16be":
|
|
453
|
+
if(len >= 2 && data[0] == 0xFE) if(data[1] == 0xFF) i = 2;
|
|
454
|
+
j = 2;
|
|
455
|
+
for(; i+1 < len; i+=j) {
|
|
456
|
+
out[k++] = String.fromCharCode((data[i]<<8) + data[i+1]);
|
|
457
|
+
}
|
|
458
|
+
break;
|
|
459
|
+
case "utf32le":
|
|
460
|
+
if(len >= 4 && data[0] == 0xFF) if(data[1] == 0xFE && data[2] === 0 && data[3] === 0) i = 4;
|
|
461
|
+
j = 4;
|
|
462
|
+
for(; i < len; i+=j) {
|
|
463
|
+
w = (data[i+3]<<24) + (data[i+2]<<16) + (data[i+1]<<8) + (data[i]);
|
|
464
|
+
if(w > 0xFFFF) {
|
|
465
|
+
w -= 0x10000;
|
|
466
|
+
out[k++] = String.fromCharCode(0xD800 + ((w >> 10) & 0x3FF));
|
|
467
|
+
out[k++] = String.fromCharCode(0xDC00 + (w & 0x3FF));
|
|
468
|
+
}
|
|
469
|
+
else out[k++] = String.fromCharCode(w);
|
|
470
|
+
}
|
|
471
|
+
break;
|
|
472
|
+
case "utf32be":
|
|
473
|
+
if(len >= 4 && data[3] == 0xFF) if(data[2] == 0xFE && data[1] === 0 && data[0] === 0) i = 4;
|
|
474
|
+
j = 4;
|
|
475
|
+
for(; i < len; i+=j) {
|
|
476
|
+
w = (data[i]<<24) + (data[i+1]<<16) + (data[i+2]<<8) + (data[i+3]);
|
|
477
|
+
if(w > 0xFFFF) {
|
|
478
|
+
w -= 0x10000;
|
|
479
|
+
out[k++] = String.fromCharCode(0xD800 + ((w >> 10) & 0x3FF));
|
|
480
|
+
out[k++] = String.fromCharCode(0xDC00 + (w & 0x3FF));
|
|
481
|
+
}
|
|
482
|
+
else out[k++] = String.fromCharCode(w);
|
|
483
|
+
}
|
|
484
|
+
break;
|
|
485
|
+
case "utf7":
|
|
486
|
+
if(len >= 4 && data[0] == 0x2B && data[1] == 0x2F && data[2] == 0x76) {
|
|
487
|
+
if(len >= 5 && data[3] == 0x38 && data[4] == 0x2D) i = 5;
|
|
488
|
+
else if(data[3] == 0x38 || data[3] == 0x39 || data[3] == 0x2B || data[3] == 0x2F) i = 4;
|
|
489
|
+
}
|
|
490
|
+
for(; i < len; i+=j) {
|
|
491
|
+
if(data[i] !== 0x2b) { j=1; out[k++] = String.fromCharCode(data[i]); continue; }
|
|
492
|
+
j=1;
|
|
493
|
+
if(data[i+1] === 0x2d) { j = 2; out[k++] = "+"; continue; }
|
|
494
|
+
// eslint-disable-next-line no-useless-escape
|
|
495
|
+
while(String.fromCharCode(data[i+j]).match(/[A-Za-z0-9+\/]/)) j++;
|
|
496
|
+
var dash = 0;
|
|
497
|
+
if(data[i+j] === 0x2d) { ++j; dash=1; }
|
|
498
|
+
var tt = [];
|
|
499
|
+
var o64 = "";
|
|
500
|
+
var c1=0, c2=0, c3=0;
|
|
501
|
+
var e1=0, e2=0, e3=0, e4=0;
|
|
502
|
+
for(var l = 1; l < j - dash;) {
|
|
503
|
+
e1 = BM.indexOf(String.fromCharCode(data[i+l++]));
|
|
504
|
+
e2 = BM.indexOf(String.fromCharCode(data[i+l++]));
|
|
505
|
+
c1 = e1 << 2 | e2 >> 4;
|
|
506
|
+
tt.push(c1);
|
|
507
|
+
e3 = BM.indexOf(String.fromCharCode(data[i+l++]));
|
|
508
|
+
if(e3 === -1) break;
|
|
509
|
+
c2 = (e2 & 15) << 4 | e3 >> 2;
|
|
510
|
+
tt.push(c2);
|
|
511
|
+
e4 = BM.indexOf(String.fromCharCode(data[i+l++]));
|
|
512
|
+
if(e4 === -1) break;
|
|
513
|
+
c3 = (e3 & 3) << 6 | e4;
|
|
514
|
+
if(e4 < 64) tt.push(c3);
|
|
515
|
+
}
|
|
516
|
+
o64 = decode(1201, tt);
|
|
517
|
+
for(l = 0; l < o64.length; ++l) out[k++] = o64.charAt(l);
|
|
518
|
+
}
|
|
519
|
+
break;
|
|
520
|
+
default: throw new Error("Unsupported magic: " + cp + " " + magic[cp]);
|
|
521
|
+
}
|
|
522
|
+
else throw new Error("Unrecognized CP: " + cp);
|
|
523
|
+
return out.slice(0,k).join("");
|
|
524
|
+
};
|
|
525
|
+
var hascp = function hascp(cp) { return !!(cpt[cp] || magic[cp]); };
|
|
526
|
+
cpt.utils = { decode: decode, encode: encode, hascp: hascp, magic: magic, cache:cache };
|
|
527
|
+
return cpt;
|
|
528
|
+
}));
|