@mavogel/awscdk-rootmail 0.0.219 → 0.0.221
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/.jsii +4 -4
- package/lib/rootmail.js +1 -1
- package/lib/ses-receive.js +1 -1
- package/node_modules/cdk-nag/.jsii +2 -2
- package/node_modules/cdk-nag/lib/ignore-suppression-conditions.js +5 -5
- package/node_modules/cdk-nag/lib/nag-logger.js +2 -2
- package/node_modules/cdk-nag/lib/nag-pack.js +1 -1
- package/node_modules/cdk-nag/lib/nag-rules.js +1 -1
- package/node_modules/cdk-nag/lib/nag-suppressions.js +1 -1
- package/node_modules/cdk-nag/lib/packs/aws-solutions.js +1 -1
- package/node_modules/cdk-nag/lib/packs/hipaa-security.js +1 -1
- package/node_modules/cdk-nag/lib/packs/nist-800-53-r4.js +1 -1
- package/node_modules/cdk-nag/lib/packs/nist-800-53-r5.js +1 -1
- package/node_modules/cdk-nag/lib/packs/pci-dss-321.js +1 -1
- package/node_modules/cdk-nag/package.json +1 -1
- package/node_modules/encoding-japanese/README.md +65 -13
- package/node_modules/encoding-japanese/encoding.js +7 -2
- package/node_modules/encoding-japanese/encoding.min.js +2 -2
- package/node_modules/encoding-japanese/package.json +2 -2
- package/node_modules/encoding-japanese/src/encoding-convert.js +5 -0
- package/node_modules/libbase64/.prettierrc.js +4 -1
- package/node_modules/libbase64/lib/libbase64.js +2 -1
- package/node_modules/libbase64/package.json +9 -8
- package/node_modules/libmime/CHANGELOG.md +7 -0
- package/node_modules/libmime/package.json +5 -5
- package/node_modules/libqp/CHANGELOG.md +15 -0
- package/node_modules/libqp/lib/libqp.js +13 -21
- package/node_modules/libqp/package.json +7 -6
- package/node_modules/libqp/test/libqp-test.js +161 -0
- package/node_modules/mailparser/CHANGELOG.md +7 -0
- package/node_modules/mailparser/package.json +8 -8
- package/node_modules/mailsplit/LICENSE.MIT +6 -1
- package/node_modules/mailsplit/README.md +2 -0
- package/node_modules/mailsplit/lib/headers.js +5 -1
- package/node_modules/mailsplit/package.json +10 -9
- package/node_modules/nodemailer/.ncurc.js +4 -1
- package/node_modules/nodemailer/CHANGELOG.md +25 -0
- package/node_modules/nodemailer/lib/addressparser/index.js +22 -8
- package/node_modules/nodemailer/lib/mime-funcs/mime-types.js +2 -0
- package/node_modules/nodemailer/lib/nodemailer.js +13 -6
- package/node_modules/nodemailer/lib/smtp-connection/index.js +9 -0
- package/node_modules/nodemailer/lib/well-known/services.json +14 -3
- package/node_modules/nodemailer/package.json +5 -5
- package/node_modules/tlds/index.json +0 -3
- package/node_modules/tlds/package.json +1 -1
- package/package.json +4 -4
- package/node_modules/libmime/node_modules/libbase64/.eslintrc +0 -11
- package/node_modules/libmime/node_modules/libbase64/.prettierrc.js +0 -8
- package/node_modules/libmime/node_modules/libbase64/LICENSE +0 -19
- package/node_modules/libmime/node_modules/libbase64/README.md +0 -113
- package/node_modules/libmime/node_modules/libbase64/lib/libbase64.js +0 -253
- package/node_modules/libmime/node_modules/libbase64/package.json +0 -35
- package/node_modules/libmime/node_modules/libqp/.eslintrc +0 -15
- package/node_modules/libmime/node_modules/libqp/.prettierrc.js +0 -8
- package/node_modules/libmime/node_modules/libqp/CHANGELOG.md +0 -8
- package/node_modules/libmime/node_modules/libqp/LICENSE +0 -19
- package/node_modules/libmime/node_modules/libqp/README.md +0 -119
- package/node_modules/libmime/node_modules/libqp/lib/libqp.js +0 -320
- package/node_modules/libmime/node_modules/libqp/package.json +0 -28
- package/node_modules/libmime/node_modules/libqp/test/libqp-test.js +0 -41
- package/node_modules/mailsplit/node_modules/encoding-japanese/LICENSE +0 -21
- package/node_modules/mailsplit/node_modules/encoding-japanese/README.md +0 -542
- package/node_modules/mailsplit/node_modules/encoding-japanese/encoding.js +0 -6077
- package/node_modules/mailsplit/node_modules/encoding-japanese/encoding.min.js +0 -8
- package/node_modules/mailsplit/node_modules/encoding-japanese/encoding.min.js.map +0 -1
- package/node_modules/mailsplit/node_modules/encoding-japanese/package.json +0 -70
- package/node_modules/mailsplit/node_modules/encoding-japanese/src/banner.js +0 -6
- package/node_modules/mailsplit/node_modules/encoding-japanese/src/config.js +0 -139
- package/node_modules/mailsplit/node_modules/encoding-japanese/src/encoding-convert.js +0 -1676
- package/node_modules/mailsplit/node_modules/encoding-japanese/src/encoding-detect.js +0 -502
- package/node_modules/mailsplit/node_modules/encoding-japanese/src/encoding-table.js +0 -4
- package/node_modules/mailsplit/node_modules/encoding-japanese/src/index.js +0 -593
- package/node_modules/mailsplit/node_modules/encoding-japanese/src/jis-to-utf8-table.js +0 -5
- package/node_modules/mailsplit/node_modules/encoding-japanese/src/jisx0212-to-utf8-table.js +0 -5
- package/node_modules/mailsplit/node_modules/encoding-japanese/src/kana-case-table.js +0 -41
- package/node_modules/mailsplit/node_modules/encoding-japanese/src/utf8-to-jis-table.js +0 -1493
- package/node_modules/mailsplit/node_modules/encoding-japanese/src/utf8-to-jisx0212-table.js +0 -1224
- package/node_modules/mailsplit/node_modules/encoding-japanese/src/util.js +0 -361
- package/node_modules/mailsplit/node_modules/libmime/.eslintrc +0 -7
- package/node_modules/mailsplit/node_modules/libmime/.gitattributes +0 -1
- package/node_modules/mailsplit/node_modules/libmime/.github/FUNDING.yml +0 -4
- package/node_modules/mailsplit/node_modules/libmime/.github/workflows/test.yml +0 -21
- package/node_modules/mailsplit/node_modules/libmime/.prettierrc.js +0 -8
- package/node_modules/mailsplit/node_modules/libmime/CHANGELOG.md +0 -110
- package/node_modules/mailsplit/node_modules/libmime/LICENSE +0 -19
- package/node_modules/mailsplit/node_modules/libmime/README.md +0 -207
- package/node_modules/mailsplit/node_modules/libmime/lib/charset.js +0 -117
- package/node_modules/mailsplit/node_modules/libmime/lib/charsets.js +0 -212
- package/node_modules/mailsplit/node_modules/libmime/lib/libmime.js +0 -903
- package/node_modules/mailsplit/node_modules/libmime/lib/mimetypes.js +0 -2049
- package/node_modules/mailsplit/node_modules/libmime/package.json +0 -37
- /package/node_modules/{libmime/node_modules/libbase64 → libbase64}/.github/FUNDING.yml +0 -0
- /package/node_modules/{libmime/node_modules/libbase64 → libbase64}/.github/workflows/release.yaml +0 -0
- /package/node_modules/{libmime/node_modules/libbase64 → libbase64}/.github/workflows/test.yml +0 -0
- /package/node_modules/{libmime/node_modules/libbase64 → libbase64}/.ncurc.js +0 -0
- /package/node_modules/{libmime/node_modules/libbase64 → libbase64}/CHANGELOG.md +0 -0
- /package/node_modules/{libmime/node_modules/libqp → libqp}/.github/FUNDING.yml +0 -0
- /package/node_modules/{libmime/node_modules/libqp → libqp}/.github/workflows/release.yaml +0 -0
- /package/node_modules/{libmime/node_modules/libqp → libqp}/.github/workflows/test.yml +0 -0
|
@@ -1,502 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Binary (exe, images and so, etc.)
|
|
3
|
-
*
|
|
4
|
-
* Note:
|
|
5
|
-
* This function is not considered for Unicode
|
|
6
|
-
*/
|
|
7
|
-
function isBINARY(data) {
|
|
8
|
-
var i = 0;
|
|
9
|
-
var len = data && data.length;
|
|
10
|
-
var c;
|
|
11
|
-
|
|
12
|
-
for (; i < len; i++) {
|
|
13
|
-
c = data[i];
|
|
14
|
-
if (c > 0xFF) {
|
|
15
|
-
return false;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
if ((c >= 0x00 && c <= 0x07) || c === 0xFF) {
|
|
19
|
-
return true;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
exports.isBINARY = isBINARY;
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* ASCII (ISO-646)
|
|
29
|
-
*/
|
|
30
|
-
function isASCII(data) {
|
|
31
|
-
var i = 0;
|
|
32
|
-
var len = data && data.length;
|
|
33
|
-
var b;
|
|
34
|
-
|
|
35
|
-
for (; i < len; i++) {
|
|
36
|
-
b = data[i];
|
|
37
|
-
if (b > 0xFF ||
|
|
38
|
-
(b >= 0x80 && b <= 0xFF) ||
|
|
39
|
-
b === 0x1B) {
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
|
-
exports.isASCII = isASCII;
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* ISO-2022-JP (JIS)
|
|
50
|
-
*
|
|
51
|
-
* RFC1468 Japanese Character Encoding for Internet Messages
|
|
52
|
-
* RFC1554 ISO-2022-JP-2: Multilingual Extension of ISO-2022-JP
|
|
53
|
-
* RFC2237 Japanese Character Encoding for Internet Messages
|
|
54
|
-
*/
|
|
55
|
-
function isJIS(data) {
|
|
56
|
-
var i = 0;
|
|
57
|
-
var len = data && data.length;
|
|
58
|
-
var b, esc1, esc2;
|
|
59
|
-
|
|
60
|
-
for (; i < len; i++) {
|
|
61
|
-
b = data[i];
|
|
62
|
-
if (b > 0xFF || (b >= 0x80 && b <= 0xFF)) {
|
|
63
|
-
return false;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
if (b === 0x1B) {
|
|
67
|
-
if (i + 2 >= len) {
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
esc1 = data[i + 1];
|
|
72
|
-
esc2 = data[i + 2];
|
|
73
|
-
if (esc1 === 0x24) {
|
|
74
|
-
if (esc2 === 0x28 || // JIS X 0208-1990/2000/2004
|
|
75
|
-
esc2 === 0x40 || // JIS X 0208-1978
|
|
76
|
-
esc2 === 0x42) { // JIS X 0208-1983
|
|
77
|
-
return true;
|
|
78
|
-
}
|
|
79
|
-
} else if (esc1 === 0x26 && // JIS X 0208-1990
|
|
80
|
-
esc2 === 0x40) {
|
|
81
|
-
return true;
|
|
82
|
-
} else if (esc1 === 0x28) {
|
|
83
|
-
if (esc2 === 0x42 || // ASCII
|
|
84
|
-
esc2 === 0x49 || // JIS X 0201 Halfwidth Katakana
|
|
85
|
-
esc2 === 0x4A) { // JIS X 0201-1976 Roman set
|
|
86
|
-
return true;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
94
|
-
exports.isJIS = isJIS;
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* EUC-JP
|
|
98
|
-
*/
|
|
99
|
-
function isEUCJP(data) {
|
|
100
|
-
var i = 0;
|
|
101
|
-
var len = data && data.length;
|
|
102
|
-
var b;
|
|
103
|
-
|
|
104
|
-
for (; i < len; i++) {
|
|
105
|
-
b = data[i];
|
|
106
|
-
if (b < 0x80) {
|
|
107
|
-
continue;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
if (b > 0xFF || b < 0x8E) {
|
|
111
|
-
return false;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
if (b === 0x8E) {
|
|
115
|
-
if (i + 1 >= len) {
|
|
116
|
-
return false;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
b = data[++i];
|
|
120
|
-
if (b < 0xA1 || 0xDF < b) {
|
|
121
|
-
return false;
|
|
122
|
-
}
|
|
123
|
-
} else if (b === 0x8F) {
|
|
124
|
-
if (i + 2 >= len) {
|
|
125
|
-
return false;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
b = data[++i];
|
|
129
|
-
if (b < 0xA2 || 0xED < b) {
|
|
130
|
-
return false;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
b = data[++i];
|
|
134
|
-
if (b < 0xA1 || 0xFE < b) {
|
|
135
|
-
return false;
|
|
136
|
-
}
|
|
137
|
-
} else if (0xA1 <= b && b <= 0xFE) {
|
|
138
|
-
if (i + 1 >= len) {
|
|
139
|
-
return false;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
b = data[++i];
|
|
143
|
-
if (b < 0xA1 || 0xFE < b) {
|
|
144
|
-
return false;
|
|
145
|
-
}
|
|
146
|
-
} else {
|
|
147
|
-
return false;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
return true;
|
|
152
|
-
}
|
|
153
|
-
exports.isEUCJP = isEUCJP;
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Shift-JIS (SJIS)
|
|
157
|
-
*/
|
|
158
|
-
function isSJIS(data) {
|
|
159
|
-
var i = 0;
|
|
160
|
-
var len = data && data.length;
|
|
161
|
-
var b;
|
|
162
|
-
|
|
163
|
-
while (i < len && data[i] > 0x80) {
|
|
164
|
-
if (data[i++] > 0xFF) {
|
|
165
|
-
return false;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
for (; i < len; i++) {
|
|
170
|
-
b = data[i];
|
|
171
|
-
if (b <= 0x80 ||
|
|
172
|
-
(0xA1 <= b && b <= 0xDF)) {
|
|
173
|
-
continue;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
if (b === 0xA0 || b > 0xEF || i + 1 >= len) {
|
|
177
|
-
return false;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
b = data[++i];
|
|
181
|
-
if (b < 0x40 || b === 0x7F || b > 0xFC) {
|
|
182
|
-
return false;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
return true;
|
|
187
|
-
}
|
|
188
|
-
exports.isSJIS = isSJIS;
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* UTF-8
|
|
192
|
-
*/
|
|
193
|
-
function isUTF8(data) {
|
|
194
|
-
var i = 0;
|
|
195
|
-
var len = data && data.length;
|
|
196
|
-
var b;
|
|
197
|
-
|
|
198
|
-
for (; i < len; i++) {
|
|
199
|
-
b = data[i];
|
|
200
|
-
if (b > 0xFF) {
|
|
201
|
-
return false;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
if (b === 0x09 || b === 0x0A || b === 0x0D ||
|
|
205
|
-
(b >= 0x20 && b <= 0x7E)) {
|
|
206
|
-
continue;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
if (b >= 0xC2 && b <= 0xDF) {
|
|
210
|
-
if (i + 1 >= len || data[i + 1] < 0x80 || data[i + 1] > 0xBF) {
|
|
211
|
-
return false;
|
|
212
|
-
}
|
|
213
|
-
i++;
|
|
214
|
-
} else if (b === 0xE0) {
|
|
215
|
-
if (i + 2 >= len ||
|
|
216
|
-
data[i + 1] < 0xA0 || data[i + 1] > 0xBF ||
|
|
217
|
-
data[i + 2] < 0x80 || data[i + 2] > 0xBF) {
|
|
218
|
-
return false;
|
|
219
|
-
}
|
|
220
|
-
i += 2;
|
|
221
|
-
} else if ((b >= 0xE1 && b <= 0xEC) ||
|
|
222
|
-
b === 0xEE || b === 0xEF) {
|
|
223
|
-
if (i + 2 >= len ||
|
|
224
|
-
data[i + 1] < 0x80 || data[i + 1] > 0xBF ||
|
|
225
|
-
data[i + 2] < 0x80 || data[i + 2] > 0xBF) {
|
|
226
|
-
return false;
|
|
227
|
-
}
|
|
228
|
-
i += 2;
|
|
229
|
-
} else if (b === 0xED) {
|
|
230
|
-
if (i + 2 >= len ||
|
|
231
|
-
data[i + 1] < 0x80 || data[i + 1] > 0x9F ||
|
|
232
|
-
data[i + 2] < 0x80 || data[i + 2] > 0xBF) {
|
|
233
|
-
return false;
|
|
234
|
-
}
|
|
235
|
-
i += 2;
|
|
236
|
-
} else if (b === 0xF0) {
|
|
237
|
-
if (i + 3 >= len ||
|
|
238
|
-
data[i + 1] < 0x90 || data[i + 1] > 0xBF ||
|
|
239
|
-
data[i + 2] < 0x80 || data[i + 2] > 0xBF ||
|
|
240
|
-
data[i + 3] < 0x80 || data[i + 3] > 0xBF) {
|
|
241
|
-
return false;
|
|
242
|
-
}
|
|
243
|
-
i += 3;
|
|
244
|
-
} else if (b >= 0xF1 && b <= 0xF3) {
|
|
245
|
-
if (i + 3 >= len ||
|
|
246
|
-
data[i + 1] < 0x80 || data[i + 1] > 0xBF ||
|
|
247
|
-
data[i + 2] < 0x80 || data[i + 2] > 0xBF ||
|
|
248
|
-
data[i + 3] < 0x80 || data[i + 3] > 0xBF) {
|
|
249
|
-
return false;
|
|
250
|
-
}
|
|
251
|
-
i += 3;
|
|
252
|
-
} else if (b === 0xF4) {
|
|
253
|
-
if (i + 3 >= len ||
|
|
254
|
-
data[i + 1] < 0x80 || data[i + 1] > 0x8F ||
|
|
255
|
-
data[i + 2] < 0x80 || data[i + 2] > 0xBF ||
|
|
256
|
-
data[i + 3] < 0x80 || data[i + 3] > 0xBF) {
|
|
257
|
-
return false;
|
|
258
|
-
}
|
|
259
|
-
i += 3;
|
|
260
|
-
} else {
|
|
261
|
-
return false;
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
return true;
|
|
266
|
-
}
|
|
267
|
-
exports.isUTF8 = isUTF8;
|
|
268
|
-
|
|
269
|
-
/**
|
|
270
|
-
* UTF-16 (LE or BE)
|
|
271
|
-
*
|
|
272
|
-
* RFC2781: UTF-16, an encoding of ISO 10646
|
|
273
|
-
*
|
|
274
|
-
* @link http://www.ietf.org/rfc/rfc2781.txt
|
|
275
|
-
*/
|
|
276
|
-
function isUTF16(data) {
|
|
277
|
-
var i = 0;
|
|
278
|
-
var len = data && data.length;
|
|
279
|
-
var pos = null;
|
|
280
|
-
var b1, b2, next, prev;
|
|
281
|
-
|
|
282
|
-
if (len < 2) {
|
|
283
|
-
if (data[0] > 0xFF) {
|
|
284
|
-
return false;
|
|
285
|
-
}
|
|
286
|
-
} else {
|
|
287
|
-
b1 = data[0];
|
|
288
|
-
b2 = data[1];
|
|
289
|
-
if (b1 === 0xFF && // BOM (little-endian)
|
|
290
|
-
b2 === 0xFE) {
|
|
291
|
-
return true;
|
|
292
|
-
}
|
|
293
|
-
if (b1 === 0xFE && // BOM (big-endian)
|
|
294
|
-
b2 === 0xFF) {
|
|
295
|
-
return true;
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
for (; i < len; i++) {
|
|
299
|
-
if (data[i] === 0x00) {
|
|
300
|
-
pos = i;
|
|
301
|
-
break;
|
|
302
|
-
} else if (data[i] > 0xFF) {
|
|
303
|
-
return false;
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
if (pos === null) {
|
|
308
|
-
return false; // Non ASCII
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
next = data[pos + 1]; // BE
|
|
312
|
-
if (next !== void 0 && next > 0x00 && next < 0x80) {
|
|
313
|
-
return true;
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
prev = data[pos - 1]; // LE
|
|
317
|
-
if (prev !== void 0 && prev > 0x00 && prev < 0x80) {
|
|
318
|
-
return true;
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
return false;
|
|
323
|
-
}
|
|
324
|
-
exports.isUTF16 = isUTF16;
|
|
325
|
-
|
|
326
|
-
/**
|
|
327
|
-
* UTF-16BE (big-endian)
|
|
328
|
-
*
|
|
329
|
-
* RFC 2781 4.3 Interpreting text labelled as UTF-16
|
|
330
|
-
* Text labelled "UTF-16BE" can always be interpreted as being big-endian
|
|
331
|
-
* when BOM does not founds (SHOULD)
|
|
332
|
-
*
|
|
333
|
-
* @link http://www.ietf.org/rfc/rfc2781.txt
|
|
334
|
-
*/
|
|
335
|
-
function isUTF16BE(data) {
|
|
336
|
-
var i = 0;
|
|
337
|
-
var len = data && data.length;
|
|
338
|
-
var pos = null;
|
|
339
|
-
var b1, b2;
|
|
340
|
-
|
|
341
|
-
if (len < 2) {
|
|
342
|
-
if (data[0] > 0xFF) {
|
|
343
|
-
return false;
|
|
344
|
-
}
|
|
345
|
-
} else {
|
|
346
|
-
b1 = data[0];
|
|
347
|
-
b2 = data[1];
|
|
348
|
-
if (b1 === 0xFE && // BOM
|
|
349
|
-
b2 === 0xFF) {
|
|
350
|
-
return true;
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
for (; i < len; i++) {
|
|
354
|
-
if (data[i] === 0x00) {
|
|
355
|
-
pos = i;
|
|
356
|
-
break;
|
|
357
|
-
} else if (data[i] > 0xFF) {
|
|
358
|
-
return false;
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
if (pos === null) {
|
|
363
|
-
return false; // Non ASCII
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
if (pos % 2 === 0) {
|
|
367
|
-
return true;
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
return false;
|
|
372
|
-
}
|
|
373
|
-
exports.isUTF16BE = isUTF16BE;
|
|
374
|
-
|
|
375
|
-
/**
|
|
376
|
-
* UTF-16LE (little-endian)
|
|
377
|
-
*/
|
|
378
|
-
function isUTF16LE(data) {
|
|
379
|
-
var i = 0;
|
|
380
|
-
var len = data && data.length;
|
|
381
|
-
var pos = null;
|
|
382
|
-
var b1, b2;
|
|
383
|
-
|
|
384
|
-
if (len < 2) {
|
|
385
|
-
if (data[0] > 0xFF) {
|
|
386
|
-
return false;
|
|
387
|
-
}
|
|
388
|
-
} else {
|
|
389
|
-
b1 = data[0];
|
|
390
|
-
b2 = data[1];
|
|
391
|
-
if (b1 === 0xFF && // BOM
|
|
392
|
-
b2 === 0xFE) {
|
|
393
|
-
return true;
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
for (; i < len; i++) {
|
|
397
|
-
if (data[i] === 0x00) {
|
|
398
|
-
pos = i;
|
|
399
|
-
break;
|
|
400
|
-
} else if (data[i] > 0xFF) {
|
|
401
|
-
return false;
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
if (pos === null) {
|
|
406
|
-
return false; // Non ASCII
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
if (pos % 2 !== 0) {
|
|
410
|
-
return true;
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
return false;
|
|
415
|
-
}
|
|
416
|
-
exports.isUTF16LE = isUTF16LE;
|
|
417
|
-
|
|
418
|
-
/**
|
|
419
|
-
* UTF-32
|
|
420
|
-
*
|
|
421
|
-
* Unicode 3.2.0: Unicode Standard Annex #19
|
|
422
|
-
*
|
|
423
|
-
* @link http://www.iana.org/assignments/charset-reg/UTF-32
|
|
424
|
-
* @link http://www.unicode.org/reports/tr19/tr19-9.html
|
|
425
|
-
*/
|
|
426
|
-
function isUTF32(data) {
|
|
427
|
-
var i = 0;
|
|
428
|
-
var len = data && data.length;
|
|
429
|
-
var pos = null;
|
|
430
|
-
var b1, b2, b3, b4;
|
|
431
|
-
var next, prev;
|
|
432
|
-
|
|
433
|
-
if (len < 4) {
|
|
434
|
-
for (; i < len; i++) {
|
|
435
|
-
if (data[i] > 0xFF) {
|
|
436
|
-
return false;
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
} else {
|
|
440
|
-
b1 = data[0];
|
|
441
|
-
b2 = data[1];
|
|
442
|
-
b3 = data[2];
|
|
443
|
-
b4 = data[3];
|
|
444
|
-
if (b1 === 0x00 && b2 === 0x00 && // BOM (big-endian)
|
|
445
|
-
b3 === 0xFE && b4 === 0xFF) {
|
|
446
|
-
return true;
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
if (b1 === 0xFF && b2 === 0xFE && // BOM (little-endian)
|
|
450
|
-
b3 === 0x00 && b4 === 0x00) {
|
|
451
|
-
return true;
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
for (; i < len; i++) {
|
|
455
|
-
if (data[i] === 0x00 && data[i + 1] === 0x00 && data[i + 2] === 0x00) {
|
|
456
|
-
pos = i;
|
|
457
|
-
break;
|
|
458
|
-
} else if (data[i] > 0xFF) {
|
|
459
|
-
return false;
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
if (pos === null) {
|
|
464
|
-
return false;
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
// The byte order should be the big-endian when BOM is not detected.
|
|
468
|
-
next = data[pos + 3];
|
|
469
|
-
if (next !== void 0 && next > 0x00 && next <= 0x7F) {
|
|
470
|
-
// big-endian
|
|
471
|
-
return data[pos + 2] === 0x00 && data[pos + 1] === 0x00;
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
prev = data[pos - 1];
|
|
475
|
-
if (prev !== void 0 && prev > 0x00 && prev <= 0x7F) {
|
|
476
|
-
// little-endian
|
|
477
|
-
return data[pos + 1] === 0x00 && data[pos + 2] === 0x00;
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
return false;
|
|
482
|
-
}
|
|
483
|
-
exports.isUTF32 = isUTF32;
|
|
484
|
-
|
|
485
|
-
/**
|
|
486
|
-
* JavaScript Unicode array
|
|
487
|
-
*/
|
|
488
|
-
function isUNICODE(data) {
|
|
489
|
-
var i = 0;
|
|
490
|
-
var len = data && data.length;
|
|
491
|
-
var c;
|
|
492
|
-
|
|
493
|
-
for (; i < len; i++) {
|
|
494
|
-
c = data[i];
|
|
495
|
-
if (c < 0 || c > 0x10FFFF) {
|
|
496
|
-
return false;
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
|
|
500
|
-
return true;
|
|
501
|
-
}
|
|
502
|
-
exports.isUNICODE = isUNICODE;
|