Comparing version 1.0.2 to 1.0.3
@@ -14,7 +14,10 @@ 'use strict'; | ||
/** | ||
* Iterare over code points and | ||
* convert it into an buffer. | ||
* @param {bitfield} bits | ||
* @param {array} src | ||
* @param {Array} src | ||
* @returns {Buffer} | ||
*/ | ||
function traverse(bits, src) { | ||
for(const code of src.keys()) { | ||
for (const code of src.keys()) { | ||
bits.set(code, true); | ||
@@ -24,3 +27,3 @@ } | ||
const buffer = bits.toBuffer(); | ||
return Buffer.concat([ createSize(buffer), buffer ]); | ||
return Buffer.concat([createSize(buffer), buffer]); | ||
} | ||
@@ -47,5 +50,5 @@ | ||
traverse(bidirectional_r_al, codePoints.bidirectional_r_al), | ||
traverse(bidirectional_l, codePoints.bidirectional_l), | ||
traverse(bidirectional_l, codePoints.bidirectional_l) | ||
); | ||
process.stdout.write(Buffer.concat(memory)); |
101
index.js
@@ -1,2 +0,2 @@ | ||
'use strict' | ||
'use strict'; | ||
@@ -10,5 +10,5 @@ const { | ||
bidirectional_l, | ||
} = require('./lib/memory-code-points') | ||
} = require('./lib/memory-code-points'); | ||
module.exports = saslprep | ||
module.exports = saslprep; | ||
@@ -21,3 +21,3 @@ // 2.1. Mapping | ||
*/ | ||
const mapping2space = non_ASCII_space_characters | ||
const mapping2space = non_ASCII_space_characters; | ||
@@ -28,37 +28,68 @@ /** | ||
*/ | ||
const mapping2nothing = commonly_mapped_to_nothing | ||
const mapping2nothing = commonly_mapped_to_nothing; | ||
// utils | ||
const getCodePoint = character => character.codePointAt(0) | ||
const first = x => x[0] | ||
const last = x => x[x.length - 1] | ||
const getCodePoint = character => character.codePointAt(0); | ||
const first = x => x[0]; | ||
const last = x => x[x.length - 1]; | ||
/** | ||
* Convert provided string into an array of Unicode Code Points. | ||
* Based on https://stackoverflow.com/a/21409165/1556249 | ||
* and https://www.npmjs.com/package/code-point-at. | ||
* @param {string} input | ||
* @returns {number[]} | ||
*/ | ||
function toCodePoints(input) { | ||
const codepoints = []; | ||
const size = input.length; | ||
for (let i = 0; i < size; i += 1) { | ||
const before = input.charCodeAt(i); | ||
if (before >= 0xd800 && before <= 0xdbff && size > i + 1) { | ||
const next = input.charCodeAt(i + 1); | ||
if (next >= 0xdc00 && next <= 0xdfff) { | ||
codepoints.push((before - 0xd800) * 0x400 + next - 0xdc00 + 0x10000); | ||
i += 1; | ||
continue; | ||
} | ||
} | ||
codepoints.push(before); | ||
} | ||
return codepoints; | ||
} | ||
/** | ||
* SASLprep. | ||
* @param {string} input | ||
* @param {object} opts | ||
* @param {Object} opts | ||
* @param {boolean} opts.allowUnassigned | ||
* @returns {string} | ||
*/ | ||
function saslprep(input, opts = {}) { | ||
if (typeof input !== 'string') { | ||
throw new TypeError('Expected string.') | ||
throw new TypeError('Expected string.'); | ||
} | ||
if (input.length === 0) { | ||
return '' | ||
return ''; | ||
} | ||
// 1. Map | ||
const mapped_input = input | ||
.split('') | ||
.map(getCodePoint) | ||
const mapped_input = toCodePoints(input) | ||
// 1.1 mapping to space | ||
.map(character => (mapping2space.get(character) ? 0x20 : character)) | ||
// 1.2 mapping to nothing | ||
.filter(character => !mapping2nothing.get(character)) | ||
.filter(character => !mapping2nothing.get(character)); | ||
// 2. Normalize | ||
const normalized_input = String.fromCodePoint(...mapped_input).normalize('NFKC') | ||
const normalized_input = String.fromCodePoint | ||
.apply(null, mapped_input) | ||
.normalize('NFKC'); | ||
const normalized_map = normalized_input.split('').map(getCodePoint) | ||
const normalized_map = toCodePoints(normalized_input); | ||
@@ -68,3 +99,3 @@ // 3. Prohibit | ||
prohibited_characters.get(character) | ||
) | ||
); | ||
@@ -74,3 +105,3 @@ if (hasProhibited) { | ||
'Prohibited character, see https://tools.ietf.org/html/rfc4013#section-2.3' | ||
) | ||
); | ||
} | ||
@@ -82,3 +113,3 @@ | ||
unassigned_code_points.get(character) | ||
) | ||
); | ||
@@ -88,3 +119,3 @@ if (hasUnassigned) { | ||
'Unassigned code point, see https://tools.ietf.org/html/rfc4013#section-2.5' | ||
) | ||
); | ||
} | ||
@@ -95,7 +126,9 @@ } | ||
const hasBidiRAL = normalized_map | ||
.some((character) => bidirectional_r_al.get(character)) | ||
const hasBidiRAL = normalized_map.some(character => | ||
bidirectional_r_al.get(character) | ||
); | ||
const hasBidiL = normalized_map | ||
.some((character) => bidirectional_l.get(character)) | ||
const hasBidiL = normalized_map.some(character => | ||
bidirectional_l.get(character) | ||
); | ||
@@ -107,4 +140,4 @@ // 4.1 If a string contains any RandALCat character, the string MUST NOT | ||
'String must not contain RandALCat and LCat at the same time,' + | ||
' see https://tools.ietf.org/html/rfc3454#section-6' | ||
) | ||
' see https://tools.ietf.org/html/rfc3454#section-6' | ||
); | ||
} | ||
@@ -118,4 +151,8 @@ | ||
const isFirstBidiRAL = bidirectional_r_al.get(getCodePoint(first(normalized_input))) | ||
const isLastBidiRAL = bidirectional_r_al.get(getCodePoint(last(normalized_input))) | ||
const isFirstBidiRAL = bidirectional_r_al.get( | ||
getCodePoint(first(normalized_input)) | ||
); | ||
const isLastBidiRAL = bidirectional_r_al.get( | ||
getCodePoint(last(normalized_input)) | ||
); | ||
@@ -125,7 +162,7 @@ if (hasBidiRAL && !(isFirstBidiRAL && isLastBidiRAL)) { | ||
'Bidirectional RandALCat character must be the first and the last' + | ||
' character of the string, see https://tools.ietf.org/html/rfc3454#section-6' | ||
) | ||
' character of the string, see https://tools.ietf.org/html/rfc3454#section-6' | ||
); | ||
} | ||
return normalized_input | ||
return normalized_input; | ||
} |
@@ -1,4 +0,4 @@ | ||
'use strict' | ||
'use strict'; | ||
const { range } = require('./util') | ||
const { range } = require('./util'); | ||
@@ -11,19 +11,19 @@ /** | ||
0x0221, | ||
...range(0x0234, 0x024F), | ||
...range(0x02AE, 0x02AF), | ||
...range(0x02EF, 0x02FF), | ||
...range(0x0350, 0x035F), | ||
...range(0x0234, 0x024f), | ||
...range(0x02ae, 0x02af), | ||
...range(0x02ef, 0x02ff), | ||
...range(0x0350, 0x035f), | ||
...range(0x0370, 0x0373), | ||
...range(0x0376, 0x0379), | ||
...range(0x037B, 0x037D), | ||
...range(0x037F, 0x0383), | ||
0x038B, | ||
0x038D, | ||
0x03A2, | ||
0x03CF, | ||
...range(0x03F7, 0x03FF), | ||
...range(0x037b, 0x037d), | ||
...range(0x037f, 0x0383), | ||
0x038b, | ||
0x038d, | ||
0x03a2, | ||
0x03cf, | ||
...range(0x03f7, 0x03ff), | ||
0x0487, | ||
0x04CF, | ||
...range(0x04F6, 0x04F7), | ||
...range(0x04FA, 0x04FF), | ||
0x04cf, | ||
...range(0x04f6, 0x04f7), | ||
...range(0x04fa, 0x04ff), | ||
...range(0x0510, 0x0530), | ||
@@ -33,377 +33,377 @@ ...range(0x0557, 0x0558), | ||
0x0588, | ||
...range(0x058B, 0x0590), | ||
0x05A2, | ||
0x05BA, | ||
...range(0x05C5, 0x05CF), | ||
...range(0x05EB, 0x05EF), | ||
...range(0x05F5, 0x060B), | ||
...range(0x060D, 0x061A), | ||
...range(0x061C, 0x061E), | ||
...range(0x058b, 0x0590), | ||
0x05a2, | ||
0x05ba, | ||
...range(0x05c5, 0x05cf), | ||
...range(0x05eb, 0x05ef), | ||
...range(0x05f5, 0x060b), | ||
...range(0x060d, 0x061a), | ||
...range(0x061c, 0x061e), | ||
0x0620, | ||
...range(0x063B, 0x063F), | ||
...range(0x0656, 0x065F), | ||
...range(0x06EE, 0x06EF), | ||
0x06FF, | ||
0x070E, | ||
...range(0x072D, 0x072F), | ||
...range(0x074B, 0x077F), | ||
...range(0x07B2, 0x0900), | ||
...range(0x063b, 0x063f), | ||
...range(0x0656, 0x065f), | ||
...range(0x06ee, 0x06ef), | ||
0x06ff, | ||
0x070e, | ||
...range(0x072d, 0x072f), | ||
...range(0x074b, 0x077f), | ||
...range(0x07b2, 0x0900), | ||
0x0904, | ||
...range(0x093A, 0x093B), | ||
...range(0x094E, 0x094F), | ||
...range(0x093a, 0x093b), | ||
...range(0x094e, 0x094f), | ||
...range(0x0955, 0x0957), | ||
...range(0x0971, 0x0980), | ||
0x0984, | ||
...range(0x098D, 0x098E), | ||
...range(0x098d, 0x098e), | ||
...range(0x0991, 0x0992), | ||
0x09A9, | ||
0x09B1, | ||
...range(0x09B3, 0x09B5), | ||
...range(0x09BA, 0x09BB), | ||
0x09BD, | ||
...range(0x09C5, 0x09C6), | ||
...range(0x09C9, 0x09CA), | ||
...range(0x09CE, 0x09D6), | ||
...range(0x09D8, 0x09DB), | ||
0x09DE, | ||
...range(0x09E4, 0x09E5), | ||
...range(0x09FB, 0x0A01), | ||
...range(0x0A03, 0x0A04), | ||
...range(0x0A0B, 0x0A0E), | ||
...range(0x0A11, 0x0A12), | ||
0x0A29, | ||
0x0A31, | ||
0x0A34, | ||
0x0A37, | ||
...range(0x0A3A, 0x0A3B), | ||
0x0A3D, | ||
...range(0x0A43, 0x0A46), | ||
...range(0x0A49, 0x0A4A), | ||
...range(0x0A4E, 0x0A58), | ||
0x0A5D, | ||
...range(0x0A5F, 0x0A65), | ||
...range(0x0A75, 0x0A80), | ||
0x0A84, | ||
0x0A8C, | ||
0x0A8E, | ||
0x0A92, | ||
0x0AA9, | ||
0x0AB1, | ||
0x0AB4, | ||
...range(0x0ABA, 0x0ABB), | ||
0x0AC6, | ||
0x0ACA, | ||
...range(0x0ACE, 0x0ACF), | ||
...range(0x0AD1, 0x0ADF), | ||
...range(0x0AE1, 0x0AE5), | ||
...range(0x0AF0, 0x0B00), | ||
0x0B04, | ||
...range(0x0B0D, 0x0B0E), | ||
...range(0x0B11, 0x0B12), | ||
0x0B29, | ||
0x0B31, | ||
...range(0x0B34, 0x0B35), | ||
...range(0x0B3A, 0x0B3B), | ||
...range(0x0B44, 0x0B46), | ||
...range(0x0B49, 0x0B4A), | ||
...range(0x0B4E, 0x0B55), | ||
...range(0x0B58, 0x0B5B), | ||
0x0B5E, | ||
...range(0x0B62, 0x0B65), | ||
...range(0x0B71, 0x0B81), | ||
0x0B84, | ||
...range(0x0B8B, 0x0B8D), | ||
0x0B91, | ||
...range(0x0B96, 0x0B98), | ||
0x0B9B, | ||
0x0B9D, | ||
...range(0x0BA0, 0x0BA2), | ||
...range(0x0BA5, 0x0BA7), | ||
...range(0x0BAB, 0x0BAD), | ||
0x0BB6, | ||
...range(0x0BBA, 0x0BBD), | ||
...range(0x0BC3, 0x0BC5), | ||
0x0BC9, | ||
...range(0x0BCE, 0x0BD6), | ||
...range(0x0BD8, 0x0BE6), | ||
...range(0x0BF3, 0x0C00), | ||
0x0C04, | ||
0x0C0D, | ||
0x0C11, | ||
0x0C29, | ||
0x0C34, | ||
...range(0x0C3A, 0x0C3D), | ||
0x0C45, | ||
0x0C49, | ||
...range(0x0C4E, 0x0C54), | ||
...range(0x0C57, 0x0C5F), | ||
...range(0x0C62, 0x0C65), | ||
...range(0x0C70, 0x0C81), | ||
0x0C84, | ||
0x0C8D, | ||
0x0C91, | ||
0x0CA9, | ||
0x0CB4, | ||
...range(0x0CBA, 0x0CBD), | ||
0x0CC5, | ||
0x0CC9, | ||
...range(0x0CCE, 0x0CD4), | ||
...range(0x0CD7, 0x0CDD), | ||
0x0CDF, | ||
...range(0x0CE2, 0x0CE5), | ||
...range(0x0CF0, 0x0D01), | ||
0x0D04, | ||
0x0D0D, | ||
0x0D11, | ||
0x0D29, | ||
...range(0x0D3A, 0x0D3D), | ||
...range(0x0D44, 0x0D45), | ||
0x0D49, | ||
...range(0x0D4E, 0x0D56), | ||
...range(0x0D58, 0x0D5F), | ||
...range(0x0D62, 0x0D65), | ||
...range(0x0D70, 0x0D81), | ||
0x0D84, | ||
...range(0x0D97, 0x0D99), | ||
0x0DB2, | ||
0x0DBC, | ||
...range(0x0DBE, 0x0DBF), | ||
...range(0x0DC7, 0x0DC9), | ||
...range(0x0DCB, 0x0DCE), | ||
0x0DD5, | ||
0x0DD7, | ||
...range(0x0DE0, 0x0DF1), | ||
...range(0x0DF5, 0x0E00), | ||
...range(0x0E3B, 0x0E3E), | ||
...range(0x0E5C, 0x0E80), | ||
0x0E83, | ||
...range(0x0E85, 0x0E86), | ||
0x0E89, | ||
...range(0x0E8B, 0x0E8C), | ||
...range(0x0E8E, 0x0E93), | ||
0x0E98, | ||
0x0EA0, | ||
0x0EA4, | ||
0x0EA6, | ||
...range(0x0EA8, 0x0EA9), | ||
0x0EAC, | ||
0x0EBA, | ||
...range(0x0EBE, 0x0EBF), | ||
0x0EC5, | ||
0x0EC7, | ||
...range(0x0ECE, 0x0ECF), | ||
...range(0x0EDA, 0x0EDB), | ||
...range(0x0EDE, 0x0EFF), | ||
0x0F48, | ||
...range(0x0F6B, 0x0F70), | ||
...range(0x0F8C, 0x0F8F), | ||
0x0F98, | ||
0x0FBD, | ||
...range(0x0FCD, 0x0FCE), | ||
...range(0x0FD0, 0x0FFF), | ||
0x09a9, | ||
0x09b1, | ||
...range(0x09b3, 0x09b5), | ||
...range(0x09ba, 0x09bb), | ||
0x09bd, | ||
...range(0x09c5, 0x09c6), | ||
...range(0x09c9, 0x09ca), | ||
...range(0x09ce, 0x09d6), | ||
...range(0x09d8, 0x09db), | ||
0x09de, | ||
...range(0x09e4, 0x09e5), | ||
...range(0x09fb, 0x0a01), | ||
...range(0x0a03, 0x0a04), | ||
...range(0x0a0b, 0x0a0e), | ||
...range(0x0a11, 0x0a12), | ||
0x0a29, | ||
0x0a31, | ||
0x0a34, | ||
0x0a37, | ||
...range(0x0a3a, 0x0a3b), | ||
0x0a3d, | ||
...range(0x0a43, 0x0a46), | ||
...range(0x0a49, 0x0a4a), | ||
...range(0x0a4e, 0x0a58), | ||
0x0a5d, | ||
...range(0x0a5f, 0x0a65), | ||
...range(0x0a75, 0x0a80), | ||
0x0a84, | ||
0x0a8c, | ||
0x0a8e, | ||
0x0a92, | ||
0x0aa9, | ||
0x0ab1, | ||
0x0ab4, | ||
...range(0x0aba, 0x0abb), | ||
0x0ac6, | ||
0x0aca, | ||
...range(0x0ace, 0x0acf), | ||
...range(0x0ad1, 0x0adf), | ||
...range(0x0ae1, 0x0ae5), | ||
...range(0x0af0, 0x0b00), | ||
0x0b04, | ||
...range(0x0b0d, 0x0b0e), | ||
...range(0x0b11, 0x0b12), | ||
0x0b29, | ||
0x0b31, | ||
...range(0x0b34, 0x0b35), | ||
...range(0x0b3a, 0x0b3b), | ||
...range(0x0b44, 0x0b46), | ||
...range(0x0b49, 0x0b4a), | ||
...range(0x0b4e, 0x0b55), | ||
...range(0x0b58, 0x0b5b), | ||
0x0b5e, | ||
...range(0x0b62, 0x0b65), | ||
...range(0x0b71, 0x0b81), | ||
0x0b84, | ||
...range(0x0b8b, 0x0b8d), | ||
0x0b91, | ||
...range(0x0b96, 0x0b98), | ||
0x0b9b, | ||
0x0b9d, | ||
...range(0x0ba0, 0x0ba2), | ||
...range(0x0ba5, 0x0ba7), | ||
...range(0x0bab, 0x0bad), | ||
0x0bb6, | ||
...range(0x0bba, 0x0bbd), | ||
...range(0x0bc3, 0x0bc5), | ||
0x0bc9, | ||
...range(0x0bce, 0x0bd6), | ||
...range(0x0bd8, 0x0be6), | ||
...range(0x0bf3, 0x0c00), | ||
0x0c04, | ||
0x0c0d, | ||
0x0c11, | ||
0x0c29, | ||
0x0c34, | ||
...range(0x0c3a, 0x0c3d), | ||
0x0c45, | ||
0x0c49, | ||
...range(0x0c4e, 0x0c54), | ||
...range(0x0c57, 0x0c5f), | ||
...range(0x0c62, 0x0c65), | ||
...range(0x0c70, 0x0c81), | ||
0x0c84, | ||
0x0c8d, | ||
0x0c91, | ||
0x0ca9, | ||
0x0cb4, | ||
...range(0x0cba, 0x0cbd), | ||
0x0cc5, | ||
0x0cc9, | ||
...range(0x0cce, 0x0cd4), | ||
...range(0x0cd7, 0x0cdd), | ||
0x0cdf, | ||
...range(0x0ce2, 0x0ce5), | ||
...range(0x0cf0, 0x0d01), | ||
0x0d04, | ||
0x0d0d, | ||
0x0d11, | ||
0x0d29, | ||
...range(0x0d3a, 0x0d3d), | ||
...range(0x0d44, 0x0d45), | ||
0x0d49, | ||
...range(0x0d4e, 0x0d56), | ||
...range(0x0d58, 0x0d5f), | ||
...range(0x0d62, 0x0d65), | ||
...range(0x0d70, 0x0d81), | ||
0x0d84, | ||
...range(0x0d97, 0x0d99), | ||
0x0db2, | ||
0x0dbc, | ||
...range(0x0dbe, 0x0dbf), | ||
...range(0x0dc7, 0x0dc9), | ||
...range(0x0dcb, 0x0dce), | ||
0x0dd5, | ||
0x0dd7, | ||
...range(0x0de0, 0x0df1), | ||
...range(0x0df5, 0x0e00), | ||
...range(0x0e3b, 0x0e3e), | ||
...range(0x0e5c, 0x0e80), | ||
0x0e83, | ||
...range(0x0e85, 0x0e86), | ||
0x0e89, | ||
...range(0x0e8b, 0x0e8c), | ||
...range(0x0e8e, 0x0e93), | ||
0x0e98, | ||
0x0ea0, | ||
0x0ea4, | ||
0x0ea6, | ||
...range(0x0ea8, 0x0ea9), | ||
0x0eac, | ||
0x0eba, | ||
...range(0x0ebe, 0x0ebf), | ||
0x0ec5, | ||
0x0ec7, | ||
...range(0x0ece, 0x0ecf), | ||
...range(0x0eda, 0x0edb), | ||
...range(0x0ede, 0x0eff), | ||
0x0f48, | ||
...range(0x0f6b, 0x0f70), | ||
...range(0x0f8c, 0x0f8f), | ||
0x0f98, | ||
0x0fbd, | ||
...range(0x0fcd, 0x0fce), | ||
...range(0x0fd0, 0x0fff), | ||
0x1022, | ||
0x1028, | ||
0x102B, | ||
0x102b, | ||
...range(0x1033, 0x1035), | ||
...range(0x103A, 0x103F), | ||
...range(0x105A, 0x109F), | ||
...range(0x10C6, 0x10CF), | ||
...range(0x10F9, 0x10FA), | ||
...range(0x10FC, 0x10FF), | ||
...range(0x115A, 0x115E), | ||
...range(0x11A3, 0x11A7), | ||
...range(0x11FA, 0x11FF), | ||
...range(0x103a, 0x103f), | ||
...range(0x105a, 0x109f), | ||
...range(0x10c6, 0x10cf), | ||
...range(0x10f9, 0x10fa), | ||
...range(0x10fc, 0x10ff), | ||
...range(0x115a, 0x115e), | ||
...range(0x11a3, 0x11a7), | ||
...range(0x11fa, 0x11ff), | ||
0x1207, | ||
0x1247, | ||
0x1249, | ||
...range(0x124E, 0x124F), | ||
...range(0x124e, 0x124f), | ||
0x1257, | ||
0x1259, | ||
...range(0x125E, 0x125F), | ||
...range(0x125e, 0x125f), | ||
0x1287, | ||
0x1289, | ||
...range(0x128E, 0x128F), | ||
0x12AF, | ||
0x12B1, | ||
...range(0x12B6, 0x12B7), | ||
0x12BF, | ||
0x12C1, | ||
...range(0x12C6, 0x12C7), | ||
0x12CF, | ||
0x12D7, | ||
0x12EF, | ||
0x130F, | ||
...range(0x128e, 0x128f), | ||
0x12af, | ||
0x12b1, | ||
...range(0x12b6, 0x12b7), | ||
0x12bf, | ||
0x12c1, | ||
...range(0x12c6, 0x12c7), | ||
0x12cf, | ||
0x12d7, | ||
0x12ef, | ||
0x130f, | ||
0x1311, | ||
...range(0x1316, 0x1317), | ||
0x131F, | ||
0x131f, | ||
0x1347, | ||
...range(0x135B, 0x1360), | ||
...range(0x137D, 0x139F), | ||
...range(0x13F5, 0x1400), | ||
...range(0x1677, 0x167F), | ||
...range(0x169D, 0x169F), | ||
...range(0x16F1, 0x16FF), | ||
0x170D, | ||
...range(0x1715, 0x171F), | ||
...range(0x1737, 0x173F), | ||
...range(0x1754, 0x175F), | ||
0x176D, | ||
...range(0x135b, 0x1360), | ||
...range(0x137d, 0x139f), | ||
...range(0x13f5, 0x1400), | ||
...range(0x1677, 0x167f), | ||
...range(0x169d, 0x169f), | ||
...range(0x16f1, 0x16ff), | ||
0x170d, | ||
...range(0x1715, 0x171f), | ||
...range(0x1737, 0x173f), | ||
...range(0x1754, 0x175f), | ||
0x176d, | ||
0x1771, | ||
...range(0x1774, 0x177F), | ||
...range(0x17DD, 0x17DF), | ||
...range(0x17EA, 0x17FF), | ||
0x180F, | ||
...range(0x181A, 0x181F), | ||
...range(0x1878, 0x187F), | ||
...range(0x18AA, 0x1DFF), | ||
...range(0x1E9C, 0x1E9F), | ||
...range(0x1EFA, 0x1EFF), | ||
...range(0x1F16, 0x1F17), | ||
...range(0x1F1E, 0x1F1F), | ||
...range(0x1F46, 0x1F47), | ||
...range(0x1F4E, 0x1F4F), | ||
0x1F58, | ||
0x1F5A, | ||
0x1F5C, | ||
0x1F5E, | ||
...range(0x1F7E, 0x1F7F), | ||
0x1FB5, | ||
0x1FC5, | ||
...range(0x1FD4, 0x1FD5), | ||
0x1FDC, | ||
...range(0x1FF0, 0x1FF1), | ||
0x1FF5, | ||
0x1FFF, | ||
...range(0x1774, 0x177f), | ||
...range(0x17dd, 0x17df), | ||
...range(0x17ea, 0x17ff), | ||
0x180f, | ||
...range(0x181a, 0x181f), | ||
...range(0x1878, 0x187f), | ||
...range(0x18aa, 0x1dff), | ||
...range(0x1e9c, 0x1e9f), | ||
...range(0x1efa, 0x1eff), | ||
...range(0x1f16, 0x1f17), | ||
...range(0x1f1e, 0x1f1f), | ||
...range(0x1f46, 0x1f47), | ||
...range(0x1f4e, 0x1f4f), | ||
0x1f58, | ||
0x1f5a, | ||
0x1f5c, | ||
0x1f5e, | ||
...range(0x1f7e, 0x1f7f), | ||
0x1fb5, | ||
0x1fc5, | ||
...range(0x1fd4, 0x1fd5), | ||
0x1fdc, | ||
...range(0x1ff0, 0x1ff1), | ||
0x1ff5, | ||
0x1fff, | ||
...range(0x2053, 0x2056), | ||
...range(0x2058, 0x205E), | ||
...range(0x2058, 0x205e), | ||
...range(0x2064, 0x2069), | ||
...range(0x2072, 0x2073), | ||
...range(0x208F, 0x209F), | ||
...range(0x20B2, 0x20CF), | ||
...range(0x20EB, 0x20FF), | ||
...range(0x213B, 0x213C), | ||
...range(0x214C, 0x2152), | ||
...range(0x2184, 0x218F), | ||
...range(0x23CF, 0x23FF), | ||
...range(0x2427, 0x243F), | ||
...range(0x244B, 0x245F), | ||
0x24FF, | ||
...range(0x208f, 0x209f), | ||
...range(0x20b2, 0x20cf), | ||
...range(0x20eb, 0x20ff), | ||
...range(0x213b, 0x213c), | ||
...range(0x214c, 0x2152), | ||
...range(0x2184, 0x218f), | ||
...range(0x23cf, 0x23ff), | ||
...range(0x2427, 0x243f), | ||
...range(0x244b, 0x245f), | ||
0x24ff, | ||
...range(0x2614, 0x2615), | ||
0x2618, | ||
...range(0x267E, 0x267F), | ||
...range(0x268A, 0x2700), | ||
...range(0x267e, 0x267f), | ||
...range(0x268a, 0x2700), | ||
0x2705, | ||
...range(0x270A, 0x270B), | ||
...range(0x270a, 0x270b), | ||
0x2728, | ||
0x274C, | ||
0x274E, | ||
0x274c, | ||
0x274e, | ||
...range(0x2753, 0x2755), | ||
0x2757, | ||
...range(0x275F, 0x2760), | ||
...range(0x275f, 0x2760), | ||
...range(0x2795, 0x2797), | ||
0x27B0, | ||
...range(0x27BF, 0x27CF), | ||
...range(0x27EC, 0x27EF), | ||
...range(0x2B00, 0x2E7F), | ||
0x2E9A, | ||
...range(0x2EF4, 0x2EFF), | ||
...range(0x2FD6, 0x2FEF), | ||
...range(0x2FFC, 0x2FFF), | ||
0x27b0, | ||
...range(0x27bf, 0x27cf), | ||
...range(0x27ec, 0x27ef), | ||
...range(0x2b00, 0x2e7f), | ||
0x2e9a, | ||
...range(0x2ef4, 0x2eff), | ||
...range(0x2fd6, 0x2fef), | ||
...range(0x2ffc, 0x2fff), | ||
0x3040, | ||
...range(0x3097, 0x3098), | ||
...range(0x3100, 0x3104), | ||
...range(0x312D, 0x3130), | ||
0x318F, | ||
...range(0x31B8, 0x31EF), | ||
...range(0x321D, 0x321F), | ||
...range(0x312d, 0x3130), | ||
0x318f, | ||
...range(0x31b8, 0x31ef), | ||
...range(0x321d, 0x321f), | ||
...range(0x3244, 0x3250), | ||
...range(0x327C, 0x327E), | ||
...range(0x32CC, 0x32CF), | ||
0x32FF, | ||
...range(0x3377, 0x337A), | ||
...range(0x33DE, 0x33DF), | ||
0x33FF, | ||
...range(0x4DB6, 0x4DFF), | ||
...range(0x9FA6, 0x9FFF), | ||
...range(0xA48D, 0xA48F), | ||
...range(0xA4C7, 0xABFF), | ||
...range(0xD7A4, 0xD7FF), | ||
...range(0xFA2E, 0xFA2F), | ||
...range(0xFA6B, 0xFAFF), | ||
...range(0xFB07, 0xFB12), | ||
...range(0xFB18, 0xFB1C), | ||
0xFB37, | ||
0xFB3D, | ||
0xFB3F, | ||
0xFB42, | ||
0xFB45, | ||
...range(0xFBB2, 0xFBD2), | ||
...range(0xFD40, 0xFD4F), | ||
...range(0xFD90, 0xFD91), | ||
...range(0xFDC8, 0xFDCF), | ||
...range(0xFDFD, 0xFDFF), | ||
...range(0xFE10, 0xFE1F), | ||
...range(0xFE24, 0xFE2F), | ||
...range(0xFE47, 0xFE48), | ||
0xFE53, | ||
0xFE67, | ||
...range(0xFE6C, 0xFE6F), | ||
0xFE75, | ||
...range(0xFEFD, 0xFEFE), | ||
0xFF00, | ||
...range(0xFFBF, 0xFFC1), | ||
...range(0xFFC8, 0xFFC9), | ||
...range(0xFFD0, 0xFFD1), | ||
...range(0xFFD8, 0xFFD9), | ||
...range(0xFFDD, 0xFFDF), | ||
0xFFE7, | ||
...range(0xFFEF, 0xFFF8), | ||
...range(0x10000, 0x102FF), | ||
0x1031F, | ||
...range(0x10324, 0x1032F), | ||
...range(0x1034B, 0x103FF), | ||
...range(0x327c, 0x327e), | ||
...range(0x32cc, 0x32cf), | ||
0x32ff, | ||
...range(0x3377, 0x337a), | ||
...range(0x33de, 0x33df), | ||
0x33ff, | ||
...range(0x4db6, 0x4dff), | ||
...range(0x9fa6, 0x9fff), | ||
...range(0xa48d, 0xa48f), | ||
...range(0xa4c7, 0xabff), | ||
...range(0xd7a4, 0xd7ff), | ||
...range(0xfa2e, 0xfa2f), | ||
...range(0xfa6b, 0xfaff), | ||
...range(0xfb07, 0xfb12), | ||
...range(0xfb18, 0xfb1c), | ||
0xfb37, | ||
0xfb3d, | ||
0xfb3f, | ||
0xfb42, | ||
0xfb45, | ||
...range(0xfbb2, 0xfbd2), | ||
...range(0xfd40, 0xfd4f), | ||
...range(0xfd90, 0xfd91), | ||
...range(0xfdc8, 0xfdcf), | ||
...range(0xfdfd, 0xfdff), | ||
...range(0xfe10, 0xfe1f), | ||
...range(0xfe24, 0xfe2f), | ||
...range(0xfe47, 0xfe48), | ||
0xfe53, | ||
0xfe67, | ||
...range(0xfe6c, 0xfe6f), | ||
0xfe75, | ||
...range(0xfefd, 0xfefe), | ||
0xff00, | ||
...range(0xffbf, 0xffc1), | ||
...range(0xffc8, 0xffc9), | ||
...range(0xffd0, 0xffd1), | ||
...range(0xffd8, 0xffd9), | ||
...range(0xffdd, 0xffdf), | ||
0xffe7, | ||
...range(0xffef, 0xfff8), | ||
...range(0x10000, 0x102ff), | ||
0x1031f, | ||
...range(0x10324, 0x1032f), | ||
...range(0x1034b, 0x103ff), | ||
...range(0x10426, 0x10427), | ||
...range(0x1044E, 0x1CFFF), | ||
...range(0x1D0F6, 0x1D0FF), | ||
...range(0x1D127, 0x1D129), | ||
...range(0x1D1DE, 0x1D3FF), | ||
0x1D455, | ||
0x1D49D, | ||
...range(0x1D4A0, 0x1D4A1), | ||
...range(0x1D4A3, 0x1D4A4), | ||
...range(0x1D4A7, 0x1D4A8), | ||
0x1D4AD, | ||
0x1D4BA, | ||
0x1D4BC, | ||
0x1D4C1, | ||
0x1D4C4, | ||
0x1D506, | ||
...range(0x1D50B, 0x1D50C), | ||
0x1D515, | ||
0x1D51D, | ||
0x1D53A, | ||
0x1D53F, | ||
0x1D545, | ||
...range(0x1D547, 0x1D549), | ||
0x1D551, | ||
...range(0x1D6A4, 0x1D6A7), | ||
...range(0x1D7CA, 0x1D7CD), | ||
...range(0x1D800, 0x1FFFD), | ||
...range(0x2A6D7, 0x2F7FF), | ||
...range(0x2FA1E, 0x2FFFD), | ||
...range(0x30000, 0x3FFFD), | ||
...range(0x40000, 0x4FFFD), | ||
...range(0x50000, 0x5FFFD), | ||
...range(0x60000, 0x6FFFD), | ||
...range(0x70000, 0x7FFFD), | ||
...range(0x80000, 0x8FFFD), | ||
...range(0x90000, 0x9FFFD), | ||
...range(0xA0000, 0xAFFFD), | ||
...range(0xB0000, 0xBFFFD), | ||
...range(0xC0000, 0xCFFFD), | ||
...range(0xD0000, 0xDFFFD), | ||
0xE0000, | ||
...range(0xE0002, 0xE001F), | ||
...range(0xE0080, 0xEFFFD), | ||
]) | ||
...range(0x1044e, 0x1cfff), | ||
...range(0x1d0f6, 0x1d0ff), | ||
...range(0x1d127, 0x1d129), | ||
...range(0x1d1de, 0x1d3ff), | ||
0x1d455, | ||
0x1d49d, | ||
...range(0x1d4a0, 0x1d4a1), | ||
...range(0x1d4a3, 0x1d4a4), | ||
...range(0x1d4a7, 0x1d4a8), | ||
0x1d4ad, | ||
0x1d4ba, | ||
0x1d4bc, | ||
0x1d4c1, | ||
0x1d4c4, | ||
0x1d506, | ||
...range(0x1d50b, 0x1d50c), | ||
0x1d515, | ||
0x1d51d, | ||
0x1d53a, | ||
0x1d53f, | ||
0x1d545, | ||
...range(0x1d547, 0x1d549), | ||
0x1d551, | ||
...range(0x1d6a4, 0x1d6a7), | ||
...range(0x1d7ca, 0x1d7cd), | ||
...range(0x1d800, 0x1fffd), | ||
...range(0x2a6d7, 0x2f7ff), | ||
...range(0x2fa1e, 0x2fffd), | ||
...range(0x30000, 0x3fffd), | ||
...range(0x40000, 0x4fffd), | ||
...range(0x50000, 0x5fffd), | ||
...range(0x60000, 0x6fffd), | ||
...range(0x70000, 0x7fffd), | ||
...range(0x80000, 0x8fffd), | ||
...range(0x90000, 0x9fffd), | ||
...range(0xa0000, 0xafffd), | ||
...range(0xb0000, 0xbfffd), | ||
...range(0xc0000, 0xcfffd), | ||
...range(0xd0000, 0xdfffd), | ||
0xe0000, | ||
...range(0xe0002, 0xe001f), | ||
...range(0xe0080, 0xefffd), | ||
]); | ||
@@ -415,30 +415,30 @@ /** | ||
const commonly_mapped_to_nothing = new Set([ | ||
0x00AD, | ||
0x034F, | ||
0x00ad, | ||
0x034f, | ||
0x1806, | ||
0x180B, | ||
0x180C, | ||
0x180D, | ||
0x200B, | ||
0x200C, | ||
0x200D, | ||
0x180b, | ||
0x180c, | ||
0x180d, | ||
0x200b, | ||
0x200c, | ||
0x200d, | ||
0x2060, | ||
0xFE00, | ||
0xFE01, | ||
0xFE02, | ||
0xFE03, | ||
0xFE04, | ||
0xFE05, | ||
0xFE06, | ||
0xFE07, | ||
0xFE08, | ||
0xFE09, | ||
0xFE0A, | ||
0xFE0B, | ||
0xFE0C, | ||
0xFE0D, | ||
0xFE0E, | ||
0xFE0F, | ||
0xFEFF, | ||
]) | ||
0xfe00, | ||
0xfe01, | ||
0xfe02, | ||
0xfe03, | ||
0xfe04, | ||
0xfe05, | ||
0xfe06, | ||
0xfe07, | ||
0xfe08, | ||
0xfe09, | ||
0xfe0a, | ||
0xfe0b, | ||
0xfe0c, | ||
0xfe0d, | ||
0xfe0e, | ||
0xfe0f, | ||
0xfeff, | ||
]); | ||
@@ -467,3 +467,3 @@ /** | ||
0x3000 /* IDEOGRAPHIC SPACE */, | ||
]) | ||
]); | ||
@@ -488,18 +488,18 @@ /** | ||
*/ | ||
...range(0x0080, 0x009F), /* [CONTROL CHARACTERS] */ | ||
0x06DD, /* ARABIC END OF AYAH */ | ||
0x070F, /* SYRIAC ABBREVIATION MARK */ | ||
0x180E, /* MONGOLIAN VOWEL SEPARATOR */ | ||
0x200C, /* ZERO WIDTH NON-JOINER */ | ||
0x200D, /* ZERO WIDTH JOINER */ | ||
0x2028, /* LINE SEPARATOR */ | ||
0x2029, /* PARAGRAPH SEPARATOR */ | ||
0x2060, /* WORD JOINER */ | ||
0x2061, /* FUNCTION APPLICATION */ | ||
0x2062, /* INVISIBLE TIMES */ | ||
0x2063, /* INVISIBLE SEPARATOR */ | ||
...range(0x206A, 0x206F), /* [CONTROL CHARACTERS] */ | ||
0xFEFF, /* ZERO WIDTH NO-BREAK SPACE */ | ||
...range(0xFFF9, 0xFFFC), /* [CONTROL CHARACTERS] */ | ||
...range(0x1D173, 0x1D17A), /* [MUSICAL CONTROL CHARACTERS] */ | ||
...range(0x0080, 0x009f) /* [CONTROL CHARACTERS] */, | ||
0x06dd /* ARABIC END OF AYAH */, | ||
0x070f /* SYRIAC ABBREVIATION MARK */, | ||
0x180e /* MONGOLIAN VOWEL SEPARATOR */, | ||
0x200c /* ZERO WIDTH NON-JOINER */, | ||
0x200d /* ZERO WIDTH JOINER */, | ||
0x2028 /* LINE SEPARATOR */, | ||
0x2029 /* PARAGRAPH SEPARATOR */, | ||
0x2060 /* WORD JOINER */, | ||
0x2061 /* FUNCTION APPLICATION */, | ||
0x2062 /* INVISIBLE TIMES */, | ||
0x2063 /* INVISIBLE SEPARATOR */, | ||
...range(0x206a, 0x206f) /* [CONTROL CHARACTERS] */, | ||
0xfeff /* ZERO WIDTH NO-BREAK SPACE */, | ||
...range(0xfff9, 0xfffc) /* [CONTROL CHARACTERS] */, | ||
...range(0x1d173, 0x1d17a) /* [MUSICAL CONTROL CHARACTERS] */, | ||
@@ -510,5 +510,5 @@ /** | ||
*/ | ||
...range(0xE000, 0xF8FF), /* [PRIVATE USE, PLANE 0] */ | ||
...range(0xF0000, 0xFFFFD), /* [PRIVATE USE, PLANE 15] */ | ||
...range(0x100000, 0x10FFFD), /* [PRIVATE USE, PLANE 16] */ | ||
...range(0xe000, 0xf8ff) /* [PRIVATE USE, PLANE 0] */, | ||
...range(0xf0000, 0xffffd) /* [PRIVATE USE, PLANE 15] */, | ||
...range(0x100000, 0x10fffd) /* [PRIVATE USE, PLANE 16] */, | ||
@@ -519,19 +519,19 @@ /** | ||
*/ | ||
...range(0xFDD0, 0xFDEF), /* [NONCHARACTER CODE POINTS] */ | ||
...range(0xFFFE, 0xFFFF), /* [NONCHARACTER CODE POINTS] */ | ||
...range(0x1FFFE, 0x1FFFF), /* [NONCHARACTER CODE POINTS] */ | ||
...range(0x2FFFE, 0x2FFFF), /* [NONCHARACTER CODE POINTS] */ | ||
...range(0x3FFFE, 0x3FFFF), /* [NONCHARACTER CODE POINTS] */ | ||
...range(0x4FFFE, 0x4FFFF), /* [NONCHARACTER CODE POINTS] */ | ||
...range(0x5FFFE, 0x5FFFF), /* [NONCHARACTER CODE POINTS] */ | ||
...range(0x6FFFE, 0x6FFFF), /* [NONCHARACTER CODE POINTS] */ | ||
...range(0x7FFFE, 0x7FFFF), /* [NONCHARACTER CODE POINTS] */ | ||
...range(0x8FFFE, 0x8FFFF), /* [NONCHARACTER CODE POINTS] */ | ||
...range(0x9FFFE, 0x9FFFF), /* [NONCHARACTER CODE POINTS] */ | ||
...range(0xAFFFE, 0xAFFFF), /* [NONCHARACTER CODE POINTS] */ | ||
...range(0xBFFFE, 0xBFFFF), /* [NONCHARACTER CODE POINTS] */ | ||
...range(0xCFFFE, 0xCFFFF), /* [NONCHARACTER CODE POINTS] */ | ||
...range(0xDFFFE, 0xDFFFF), /* [NONCHARACTER CODE POINTS] */ | ||
...range(0xEFFFE, 0xEFFFF), /* [NONCHARACTER CODE POINTS] */ | ||
...range(0x10FFFE, 0x10FFFF), /* [NONCHARACTER CODE POINTS] */ | ||
...range(0xfdd0, 0xfdef) /* [NONCHARACTER CODE POINTS] */, | ||
...range(0xfffe, 0xffff) /* [NONCHARACTER CODE POINTS] */, | ||
...range(0x1fffe, 0x1ffff) /* [NONCHARACTER CODE POINTS] */, | ||
...range(0x2fffe, 0x2ffff) /* [NONCHARACTER CODE POINTS] */, | ||
...range(0x3fffe, 0x3ffff) /* [NONCHARACTER CODE POINTS] */, | ||
...range(0x4fffe, 0x4ffff) /* [NONCHARACTER CODE POINTS] */, | ||
...range(0x5fffe, 0x5ffff) /* [NONCHARACTER CODE POINTS] */, | ||
...range(0x6fffe, 0x6ffff) /* [NONCHARACTER CODE POINTS] */, | ||
...range(0x7fffe, 0x7ffff) /* [NONCHARACTER CODE POINTS] */, | ||
...range(0x8fffe, 0x8ffff) /* [NONCHARACTER CODE POINTS] */, | ||
...range(0x9fffe, 0x9ffff) /* [NONCHARACTER CODE POINTS] */, | ||
...range(0xafffe, 0xaffff) /* [NONCHARACTER CODE POINTS] */, | ||
...range(0xbfffe, 0xbffff) /* [NONCHARACTER CODE POINTS] */, | ||
...range(0xcfffe, 0xcffff) /* [NONCHARACTER CODE POINTS] */, | ||
...range(0xdfffe, 0xdffff) /* [NONCHARACTER CODE POINTS] */, | ||
...range(0xefffe, 0xeffff) /* [NONCHARACTER CODE POINTS] */, | ||
...range(0x10fffe, 0x10ffff) /* [NONCHARACTER CODE POINTS] */, | ||
@@ -542,3 +542,3 @@ /** | ||
*/ | ||
...range(0xD800, 0xDFFF), | ||
...range(0xd800, 0xdfff), | ||
@@ -549,7 +549,7 @@ /** | ||
*/ | ||
0xFFF9, /* INTERLINEAR ANNOTATION ANCHOR */ | ||
0xFFFA, /* INTERLINEAR ANNOTATION SEPARATOR */ | ||
0xFFFB, /* INTERLINEAR ANNOTATION TERMINATOR */ | ||
0xFFFC, /* OBJECT REPLACEMENT CHARACTER */ | ||
0xFFFD, /* REPLACEMENT CHARACTER */ | ||
0xfff9 /* INTERLINEAR ANNOTATION ANCHOR */, | ||
0xfffa /* INTERLINEAR ANNOTATION SEPARATOR */, | ||
0xfffb /* INTERLINEAR ANNOTATION TERMINATOR */, | ||
0xfffc /* OBJECT REPLACEMENT CHARACTER */, | ||
0xfffd /* REPLACEMENT CHARACTER */, | ||
@@ -560,3 +560,3 @@ /** | ||
*/ | ||
...range(0x2FF0, 0x2FFB), /* [IDEOGRAPHIC DESCRIPTION CHARACTERS] */ | ||
...range(0x2ff0, 0x2ffb) /* [IDEOGRAPHIC DESCRIPTION CHARACTERS] */, | ||
@@ -567,17 +567,17 @@ /** | ||
*/ | ||
0x0340, /* COMBINING GRAVE TONE MARK */ | ||
0x0341, /* COMBINING ACUTE TONE MARK */ | ||
0x200E, /* LEFT-TO-RIGHT MARK */ | ||
0x200F, /* RIGHT-TO-LEFT MARK */ | ||
0x202A, /* LEFT-TO-RIGHT EMBEDDING */ | ||
0x202B, /* RIGHT-TO-LEFT EMBEDDING */ | ||
0x202C, /* POP DIRECTIONAL FORMATTING */ | ||
0x202D, /* LEFT-TO-RIGHT OVERRIDE */ | ||
0x202E, /* RIGHT-TO-LEFT OVERRIDE */ | ||
0x206A, /* INHIBIT SYMMETRIC SWAPPING */ | ||
0x206B, /* ACTIVATE SYMMETRIC SWAPPING */ | ||
0x206C, /* INHIBIT ARABIC FORM SHAPING */ | ||
0x206D, /* ACTIVATE ARABIC FORM SHAPING */ | ||
0x206E, /* NATIONAL DIGIT SHAPES */ | ||
0x206F, /* NOMINAL DIGIT SHAPES */ | ||
0x0340 /* COMBINING GRAVE TONE MARK */, | ||
0x0341 /* COMBINING ACUTE TONE MARK */, | ||
0x200e /* LEFT-TO-RIGHT MARK */, | ||
0x200f /* RIGHT-TO-LEFT MARK */, | ||
0x202a /* LEFT-TO-RIGHT EMBEDDING */, | ||
0x202b /* RIGHT-TO-LEFT EMBEDDING */, | ||
0x202c /* POP DIRECTIONAL FORMATTING */, | ||
0x202d /* LEFT-TO-RIGHT OVERRIDE */, | ||
0x202e /* RIGHT-TO-LEFT OVERRIDE */, | ||
0x206a /* INHIBIT SYMMETRIC SWAPPING */, | ||
0x206b /* ACTIVATE SYMMETRIC SWAPPING */, | ||
0x206c /* INHIBIT ARABIC FORM SHAPING */, | ||
0x206d /* ACTIVATE ARABIC FORM SHAPING */, | ||
0x206e /* NATIONAL DIGIT SHAPES */, | ||
0x206f /* NOMINAL DIGIT SHAPES */, | ||
@@ -588,5 +588,5 @@ /** | ||
*/ | ||
0xE0001, /* LANGUAGE TAG */ | ||
...range(0xE0020, 0xE007F) /* [TAGGING CHARACTERS] */ | ||
]) | ||
0xe0001 /* LANGUAGE TAG */, | ||
...range(0xe0020, 0xe007f) /* [TAGGING CHARACTERS] */, | ||
]); | ||
@@ -598,37 +598,37 @@ /** | ||
const bidirectional_r_al = new Set([ | ||
0x05BE, | ||
0x05C0, | ||
0x05C3, | ||
...range(0x05D0, 0x05EA), | ||
...range(0x05F0, 0x05F4), | ||
0x061B, | ||
0x061F, | ||
...range(0x0621, 0x063A), | ||
...range(0x0640, 0x064A), | ||
...range(0x066D, 0x066F), | ||
...range(0x0671, 0x06D5), | ||
0x06DD, | ||
...range(0x06E5, 0x06E6), | ||
...range(0x06FA, 0x06FE), | ||
...range(0x0700, 0x070D), | ||
0x05be, | ||
0x05c0, | ||
0x05c3, | ||
...range(0x05d0, 0x05ea), | ||
...range(0x05f0, 0x05f4), | ||
0x061b, | ||
0x061f, | ||
...range(0x0621, 0x063a), | ||
...range(0x0640, 0x064a), | ||
...range(0x066d, 0x066f), | ||
...range(0x0671, 0x06d5), | ||
0x06dd, | ||
...range(0x06e5, 0x06e6), | ||
...range(0x06fa, 0x06fe), | ||
...range(0x0700, 0x070d), | ||
0x0710, | ||
...range(0x0712, 0x072C), | ||
...range(0x0780, 0x07A5), | ||
0x07B1, | ||
0x200F, | ||
0xFB1D, | ||
...range(0xFB1F, 0xFB28), | ||
...range(0xFB2A, 0xFB36), | ||
...range(0xFB38, 0xFB3C), | ||
0xFB3E, | ||
...range(0xFB40, 0xFB41), | ||
...range(0xFB43, 0xFB44), | ||
...range(0xFB46, 0xFBB1), | ||
...range(0xFBD3, 0xFD3D), | ||
...range(0xFD50, 0xFD8F), | ||
...range(0xFD92, 0xFDC7), | ||
...range(0xFDF0, 0xFDFC), | ||
...range(0xFE70, 0xFE74), | ||
...range(0xFE76, 0xFEFC), | ||
]) | ||
...range(0x0712, 0x072c), | ||
...range(0x0780, 0x07a5), | ||
0x07b1, | ||
0x200f, | ||
0xfb1d, | ||
...range(0xfb1f, 0xfb28), | ||
...range(0xfb2a, 0xfb36), | ||
...range(0xfb38, 0xfb3c), | ||
0xfb3e, | ||
...range(0xfb40, 0xfb41), | ||
...range(0xfb43, 0xfb44), | ||
...range(0xfb46, 0xfbb1), | ||
...range(0xfbd3, 0xfd3d), | ||
...range(0xfd50, 0xfd8f), | ||
...range(0xfd92, 0xfdc7), | ||
...range(0xfdf0, 0xfdfc), | ||
...range(0xfe70, 0xfe74), | ||
...range(0xfe76, 0xfefc), | ||
]); | ||
@@ -640,31 +640,31 @@ /** | ||
const bidirectional_l = new Set([ | ||
...range(0x0041, 0x005A), | ||
...range(0x0061, 0x007A), | ||
0x00AA, | ||
0x00B5, | ||
0x00BA, | ||
...range(0x00C0, 0x00D6), | ||
...range(0x00D8, 0x00F6), | ||
...range(0x00F8, 0x0220), | ||
...range(0x0041, 0x005a), | ||
...range(0x0061, 0x007a), | ||
0x00aa, | ||
0x00b5, | ||
0x00ba, | ||
...range(0x00c0, 0x00d6), | ||
...range(0x00d8, 0x00f6), | ||
...range(0x00f8, 0x0220), | ||
...range(0x0222, 0x0233), | ||
...range(0x0250, 0x02AD), | ||
...range(0x02B0, 0x02B8), | ||
...range(0x02BB, 0x02C1), | ||
...range(0x02D0, 0x02D1), | ||
...range(0x02E0, 0x02E4), | ||
0x02EE, | ||
0x037A, | ||
...range(0x0250, 0x02ad), | ||
...range(0x02b0, 0x02b8), | ||
...range(0x02bb, 0x02c1), | ||
...range(0x02d0, 0x02d1), | ||
...range(0x02e0, 0x02e4), | ||
0x02ee, | ||
0x037a, | ||
0x0386, | ||
...range(0x0388, 0x038A), | ||
0x038C, | ||
...range(0x038E, 0x03A1), | ||
...range(0x03A3, 0x03CE), | ||
...range(0x03D0, 0x03F5), | ||
...range(0x0388, 0x038a), | ||
0x038c, | ||
...range(0x038e, 0x03a1), | ||
...range(0x03a3, 0x03ce), | ||
...range(0x03d0, 0x03f5), | ||
...range(0x0400, 0x0482), | ||
...range(0x048A, 0x04CE), | ||
...range(0x04D0, 0x04F5), | ||
...range(0x04F8, 0x04F9), | ||
...range(0x0500, 0x050F), | ||
...range(0x048a, 0x04ce), | ||
...range(0x04d0, 0x04f5), | ||
...range(0x04f8, 0x04f9), | ||
...range(0x0500, 0x050f), | ||
...range(0x0531, 0x0556), | ||
...range(0x0559, 0x055F), | ||
...range(0x0559, 0x055f), | ||
...range(0x0561, 0x0587), | ||
@@ -674,4 +674,4 @@ 0x0589, | ||
...range(0x0905, 0x0939), | ||
...range(0x093D, 0x0940), | ||
...range(0x0949, 0x094C), | ||
...range(0x093d, 0x0940), | ||
...range(0x0949, 0x094c), | ||
0x0950, | ||
@@ -681,324 +681,324 @@ ...range(0x0958, 0x0961), | ||
...range(0x0982, 0x0983), | ||
...range(0x0985, 0x098C), | ||
...range(0x098F, 0x0990), | ||
...range(0x0993, 0x09A8), | ||
...range(0x09AA, 0x09B0), | ||
0x09B2, | ||
...range(0x09B6, 0x09B9), | ||
...range(0x09BE, 0x09C0), | ||
...range(0x09C7, 0x09C8), | ||
...range(0x09CB, 0x09CC), | ||
0x09D7, | ||
...range(0x09DC, 0x09DD), | ||
...range(0x09DF, 0x09E1), | ||
...range(0x09E6, 0x09F1), | ||
...range(0x09F4, 0x09FA), | ||
...range(0x0A05, 0x0A0A), | ||
...range(0x0A0F, 0x0A10), | ||
...range(0x0A13, 0x0A28), | ||
...range(0x0A2A, 0x0A30), | ||
...range(0x0A32, 0x0A33), | ||
...range(0x0A35, 0x0A36), | ||
...range(0x0A38, 0x0A39), | ||
...range(0x0A3E, 0x0A40), | ||
...range(0x0A59, 0x0A5C), | ||
0x0A5E, | ||
...range(0x0A66, 0x0A6F), | ||
...range(0x0A72, 0x0A74), | ||
0x0A83, | ||
...range(0x0A85, 0x0A8B), | ||
0x0A8D, | ||
...range(0x0A8F, 0x0A91), | ||
...range(0x0A93, 0x0AA8), | ||
...range(0x0AAA, 0x0AB0), | ||
...range(0x0AB2, 0x0AB3), | ||
...range(0x0AB5, 0x0AB9), | ||
...range(0x0ABD, 0x0AC0), | ||
0x0AC9, | ||
...range(0x0ACB, 0x0ACC), | ||
0x0AD0, | ||
0x0AE0, | ||
...range(0x0AE6, 0x0AEF), | ||
...range(0x0B02, 0x0B03), | ||
...range(0x0B05, 0x0B0C), | ||
...range(0x0B0F, 0x0B10), | ||
...range(0x0B13, 0x0B28), | ||
...range(0x0B2A, 0x0B30), | ||
...range(0x0B32, 0x0B33), | ||
...range(0x0B36, 0x0B39), | ||
...range(0x0B3D, 0x0B3E), | ||
0x0B40, | ||
...range(0x0B47, 0x0B48), | ||
...range(0x0B4B, 0x0B4C), | ||
0x0B57, | ||
...range(0x0B5C, 0x0B5D), | ||
...range(0x0B5F, 0x0B61), | ||
...range(0x0B66, 0x0B70), | ||
0x0B83, | ||
...range(0x0B85, 0x0B8A), | ||
...range(0x0B8E, 0x0B90), | ||
...range(0x0B92, 0x0B95), | ||
...range(0x0B99, 0x0B9A), | ||
0x0B9C, | ||
...range(0x0B9E, 0x0B9F), | ||
...range(0x0BA3, 0x0BA4), | ||
...range(0x0BA8, 0x0BAA), | ||
...range(0x0BAE, 0x0BB5), | ||
...range(0x0BB7, 0x0BB9), | ||
...range(0x0BBE, 0x0BBF), | ||
...range(0x0BC1, 0x0BC2), | ||
...range(0x0BC6, 0x0BC8), | ||
...range(0x0BCA, 0x0BCC), | ||
0x0BD7, | ||
...range(0x0BE7, 0x0BF2), | ||
...range(0x0C01, 0x0C03), | ||
...range(0x0C05, 0x0C0C), | ||
...range(0x0C0E, 0x0C10), | ||
...range(0x0C12, 0x0C28), | ||
...range(0x0C2A, 0x0C33), | ||
...range(0x0C35, 0x0C39), | ||
...range(0x0C41, 0x0C44), | ||
...range(0x0C60, 0x0C61), | ||
...range(0x0C66, 0x0C6F), | ||
...range(0x0C82, 0x0C83), | ||
...range(0x0C85, 0x0C8C), | ||
...range(0x0C8E, 0x0C90), | ||
...range(0x0C92, 0x0CA8), | ||
...range(0x0CAA, 0x0CB3), | ||
...range(0x0CB5, 0x0CB9), | ||
0x0CBE, | ||
...range(0x0CC0, 0x0CC4), | ||
...range(0x0CC7, 0x0CC8), | ||
...range(0x0CCA, 0x0CCB), | ||
...range(0x0CD5, 0x0CD6), | ||
0x0CDE, | ||
...range(0x0CE0, 0x0CE1), | ||
...range(0x0CE6, 0x0CEF), | ||
...range(0x0D02, 0x0D03), | ||
...range(0x0D05, 0x0D0C), | ||
...range(0x0D0E, 0x0D10), | ||
...range(0x0D12, 0x0D28), | ||
...range(0x0D2A, 0x0D39), | ||
...range(0x0D3E, 0x0D40), | ||
...range(0x0D46, 0x0D48), | ||
...range(0x0D4A, 0x0D4C), | ||
0x0D57, | ||
...range(0x0D60, 0x0D61), | ||
...range(0x0D66, 0x0D6F), | ||
...range(0x0D82, 0x0D83), | ||
...range(0x0D85, 0x0D96), | ||
...range(0x0D9A, 0x0DB1), | ||
...range(0x0DB3, 0x0DBB), | ||
0x0DBD, | ||
...range(0x0DC0, 0x0DC6), | ||
...range(0x0DCF, 0x0DD1), | ||
...range(0x0DD8, 0x0DDF), | ||
...range(0x0DF2, 0x0DF4), | ||
...range(0x0E01, 0x0E30), | ||
...range(0x0E32, 0x0E33), | ||
...range(0x0E40, 0x0E46), | ||
...range(0x0E4F, 0x0E5B), | ||
...range(0x0E81, 0x0E82), | ||
0x0E84, | ||
...range(0x0E87, 0x0E88), | ||
0x0E8A, | ||
0x0E8D, | ||
...range(0x0E94, 0x0E97), | ||
...range(0x0E99, 0x0E9F), | ||
...range(0x0EA1, 0x0EA3), | ||
0x0EA5, | ||
0x0EA7, | ||
...range(0x0EAA, 0x0EAB), | ||
...range(0x0EAD, 0x0EB0), | ||
...range(0x0EB2, 0x0EB3), | ||
0x0EBD, | ||
...range(0x0EC0, 0x0EC4), | ||
0x0EC6, | ||
...range(0x0ED0, 0x0ED9), | ||
...range(0x0EDC, 0x0EDD), | ||
...range(0x0F00, 0x0F17), | ||
...range(0x0F1A, 0x0F34), | ||
0x0F36, | ||
0x0F38, | ||
...range(0x0F3E, 0x0F47), | ||
...range(0x0F49, 0x0F6A), | ||
0x0F7F, | ||
0x0F85, | ||
...range(0x0F88, 0x0F8B), | ||
...range(0x0FBE, 0x0FC5), | ||
...range(0x0FC7, 0x0FCC), | ||
0x0FCF, | ||
...range(0x0985, 0x098c), | ||
...range(0x098f, 0x0990), | ||
...range(0x0993, 0x09a8), | ||
...range(0x09aa, 0x09b0), | ||
0x09b2, | ||
...range(0x09b6, 0x09b9), | ||
...range(0x09be, 0x09c0), | ||
...range(0x09c7, 0x09c8), | ||
...range(0x09cb, 0x09cc), | ||
0x09d7, | ||
...range(0x09dc, 0x09dd), | ||
...range(0x09df, 0x09e1), | ||
...range(0x09e6, 0x09f1), | ||
...range(0x09f4, 0x09fa), | ||
...range(0x0a05, 0x0a0a), | ||
...range(0x0a0f, 0x0a10), | ||
...range(0x0a13, 0x0a28), | ||
...range(0x0a2a, 0x0a30), | ||
...range(0x0a32, 0x0a33), | ||
...range(0x0a35, 0x0a36), | ||
...range(0x0a38, 0x0a39), | ||
...range(0x0a3e, 0x0a40), | ||
...range(0x0a59, 0x0a5c), | ||
0x0a5e, | ||
...range(0x0a66, 0x0a6f), | ||
...range(0x0a72, 0x0a74), | ||
0x0a83, | ||
...range(0x0a85, 0x0a8b), | ||
0x0a8d, | ||
...range(0x0a8f, 0x0a91), | ||
...range(0x0a93, 0x0aa8), | ||
...range(0x0aaa, 0x0ab0), | ||
...range(0x0ab2, 0x0ab3), | ||
...range(0x0ab5, 0x0ab9), | ||
...range(0x0abd, 0x0ac0), | ||
0x0ac9, | ||
...range(0x0acb, 0x0acc), | ||
0x0ad0, | ||
0x0ae0, | ||
...range(0x0ae6, 0x0aef), | ||
...range(0x0b02, 0x0b03), | ||
...range(0x0b05, 0x0b0c), | ||
...range(0x0b0f, 0x0b10), | ||
...range(0x0b13, 0x0b28), | ||
...range(0x0b2a, 0x0b30), | ||
...range(0x0b32, 0x0b33), | ||
...range(0x0b36, 0x0b39), | ||
...range(0x0b3d, 0x0b3e), | ||
0x0b40, | ||
...range(0x0b47, 0x0b48), | ||
...range(0x0b4b, 0x0b4c), | ||
0x0b57, | ||
...range(0x0b5c, 0x0b5d), | ||
...range(0x0b5f, 0x0b61), | ||
...range(0x0b66, 0x0b70), | ||
0x0b83, | ||
...range(0x0b85, 0x0b8a), | ||
...range(0x0b8e, 0x0b90), | ||
...range(0x0b92, 0x0b95), | ||
...range(0x0b99, 0x0b9a), | ||
0x0b9c, | ||
...range(0x0b9e, 0x0b9f), | ||
...range(0x0ba3, 0x0ba4), | ||
...range(0x0ba8, 0x0baa), | ||
...range(0x0bae, 0x0bb5), | ||
...range(0x0bb7, 0x0bb9), | ||
...range(0x0bbe, 0x0bbf), | ||
...range(0x0bc1, 0x0bc2), | ||
...range(0x0bc6, 0x0bc8), | ||
...range(0x0bca, 0x0bcc), | ||
0x0bd7, | ||
...range(0x0be7, 0x0bf2), | ||
...range(0x0c01, 0x0c03), | ||
...range(0x0c05, 0x0c0c), | ||
...range(0x0c0e, 0x0c10), | ||
...range(0x0c12, 0x0c28), | ||
...range(0x0c2a, 0x0c33), | ||
...range(0x0c35, 0x0c39), | ||
...range(0x0c41, 0x0c44), | ||
...range(0x0c60, 0x0c61), | ||
...range(0x0c66, 0x0c6f), | ||
...range(0x0c82, 0x0c83), | ||
...range(0x0c85, 0x0c8c), | ||
...range(0x0c8e, 0x0c90), | ||
...range(0x0c92, 0x0ca8), | ||
...range(0x0caa, 0x0cb3), | ||
...range(0x0cb5, 0x0cb9), | ||
0x0cbe, | ||
...range(0x0cc0, 0x0cc4), | ||
...range(0x0cc7, 0x0cc8), | ||
...range(0x0cca, 0x0ccb), | ||
...range(0x0cd5, 0x0cd6), | ||
0x0cde, | ||
...range(0x0ce0, 0x0ce1), | ||
...range(0x0ce6, 0x0cef), | ||
...range(0x0d02, 0x0d03), | ||
...range(0x0d05, 0x0d0c), | ||
...range(0x0d0e, 0x0d10), | ||
...range(0x0d12, 0x0d28), | ||
...range(0x0d2a, 0x0d39), | ||
...range(0x0d3e, 0x0d40), | ||
...range(0x0d46, 0x0d48), | ||
...range(0x0d4a, 0x0d4c), | ||
0x0d57, | ||
...range(0x0d60, 0x0d61), | ||
...range(0x0d66, 0x0d6f), | ||
...range(0x0d82, 0x0d83), | ||
...range(0x0d85, 0x0d96), | ||
...range(0x0d9a, 0x0db1), | ||
...range(0x0db3, 0x0dbb), | ||
0x0dbd, | ||
...range(0x0dc0, 0x0dc6), | ||
...range(0x0dcf, 0x0dd1), | ||
...range(0x0dd8, 0x0ddf), | ||
...range(0x0df2, 0x0df4), | ||
...range(0x0e01, 0x0e30), | ||
...range(0x0e32, 0x0e33), | ||
...range(0x0e40, 0x0e46), | ||
...range(0x0e4f, 0x0e5b), | ||
...range(0x0e81, 0x0e82), | ||
0x0e84, | ||
...range(0x0e87, 0x0e88), | ||
0x0e8a, | ||
0x0e8d, | ||
...range(0x0e94, 0x0e97), | ||
...range(0x0e99, 0x0e9f), | ||
...range(0x0ea1, 0x0ea3), | ||
0x0ea5, | ||
0x0ea7, | ||
...range(0x0eaa, 0x0eab), | ||
...range(0x0ead, 0x0eb0), | ||
...range(0x0eb2, 0x0eb3), | ||
0x0ebd, | ||
...range(0x0ec0, 0x0ec4), | ||
0x0ec6, | ||
...range(0x0ed0, 0x0ed9), | ||
...range(0x0edc, 0x0edd), | ||
...range(0x0f00, 0x0f17), | ||
...range(0x0f1a, 0x0f34), | ||
0x0f36, | ||
0x0f38, | ||
...range(0x0f3e, 0x0f47), | ||
...range(0x0f49, 0x0f6a), | ||
0x0f7f, | ||
0x0f85, | ||
...range(0x0f88, 0x0f8b), | ||
...range(0x0fbe, 0x0fc5), | ||
...range(0x0fc7, 0x0fcc), | ||
0x0fcf, | ||
...range(0x1000, 0x1021), | ||
...range(0x1023, 0x1027), | ||
...range(0x1029, 0x102A), | ||
0x102C, | ||
...range(0x1029, 0x102a), | ||
0x102c, | ||
0x1031, | ||
0x1038, | ||
...range(0x1040, 0x1057), | ||
...range(0x10A0, 0x10C5), | ||
...range(0x10D0, 0x10F8), | ||
0x10FB, | ||
...range(0x10a0, 0x10c5), | ||
...range(0x10d0, 0x10f8), | ||
0x10fb, | ||
...range(0x1100, 0x1159), | ||
...range(0x115F, 0x11A2), | ||
...range(0x11A8, 0x11F9), | ||
...range(0x115f, 0x11a2), | ||
...range(0x11a8, 0x11f9), | ||
...range(0x1200, 0x1206), | ||
...range(0x1208, 0x1246), | ||
0x1248, | ||
...range(0x124A, 0x124D), | ||
...range(0x124a, 0x124d), | ||
...range(0x1250, 0x1256), | ||
0x1258, | ||
...range(0x125A, 0x125D), | ||
...range(0x125a, 0x125d), | ||
...range(0x1260, 0x1286), | ||
0x1288, | ||
...range(0x128A, 0x128D), | ||
...range(0x1290, 0x12AE), | ||
0x12B0, | ||
...range(0x12B2, 0x12B5), | ||
...range(0x12B8, 0x12BE), | ||
0x12C0, | ||
...range(0x12C2, 0x12C5), | ||
...range(0x12C8, 0x12CE), | ||
...range(0x12D0, 0x12D6), | ||
...range(0x12D8, 0x12EE), | ||
...range(0x12F0, 0x130E), | ||
...range(0x128a, 0x128d), | ||
...range(0x1290, 0x12ae), | ||
0x12b0, | ||
...range(0x12b2, 0x12b5), | ||
...range(0x12b8, 0x12be), | ||
0x12c0, | ||
...range(0x12c2, 0x12c5), | ||
...range(0x12c8, 0x12ce), | ||
...range(0x12d0, 0x12d6), | ||
...range(0x12d8, 0x12ee), | ||
...range(0x12f0, 0x130e), | ||
0x1310, | ||
...range(0x1312, 0x1315), | ||
...range(0x1318, 0x131E), | ||
...range(0x1318, 0x131e), | ||
...range(0x1320, 0x1346), | ||
...range(0x1348, 0x135A), | ||
...range(0x1361, 0x137C), | ||
...range(0x13A0, 0x13F4), | ||
...range(0x1348, 0x135a), | ||
...range(0x1361, 0x137c), | ||
...range(0x13a0, 0x13f4), | ||
...range(0x1401, 0x1676), | ||
...range(0x1681, 0x169A), | ||
...range(0x16A0, 0x16F0), | ||
...range(0x1700, 0x170C), | ||
...range(0x170E, 0x1711), | ||
...range(0x1681, 0x169a), | ||
...range(0x16a0, 0x16f0), | ||
...range(0x1700, 0x170c), | ||
...range(0x170e, 0x1711), | ||
...range(0x1720, 0x1731), | ||
...range(0x1735, 0x1736), | ||
...range(0x1740, 0x1751), | ||
...range(0x1760, 0x176C), | ||
...range(0x176E, 0x1770), | ||
...range(0x1780, 0x17B6), | ||
...range(0x17BE, 0x17C5), | ||
...range(0x17C7, 0x17C8), | ||
...range(0x17D4, 0x17DA), | ||
0x17DC, | ||
...range(0x17E0, 0x17E9), | ||
...range(0x1760, 0x176c), | ||
...range(0x176e, 0x1770), | ||
...range(0x1780, 0x17b6), | ||
...range(0x17be, 0x17c5), | ||
...range(0x17c7, 0x17c8), | ||
...range(0x17d4, 0x17da), | ||
0x17dc, | ||
...range(0x17e0, 0x17e9), | ||
...range(0x1810, 0x1819), | ||
...range(0x1820, 0x1877), | ||
...range(0x1880, 0x18A8), | ||
...range(0x1E00, 0x1E9B), | ||
...range(0x1EA0, 0x1EF9), | ||
...range(0x1F00, 0x1F15), | ||
...range(0x1F18, 0x1F1D), | ||
...range(0x1F20, 0x1F45), | ||
...range(0x1F48, 0x1F4D), | ||
...range(0x1F50, 0x1F57), | ||
0x1F59, | ||
0x1F5B, | ||
0x1F5D, | ||
...range(0x1F5F, 0x1F7D), | ||
...range(0x1F80, 0x1FB4), | ||
...range(0x1FB6, 0x1FBC), | ||
0x1FBE, | ||
...range(0x1FC2, 0x1FC4), | ||
...range(0x1FC6, 0x1FCC), | ||
...range(0x1FD0, 0x1FD3), | ||
...range(0x1FD6, 0x1FDB), | ||
...range(0x1FE0, 0x1FEC), | ||
...range(0x1FF2, 0x1FF4), | ||
...range(0x1FF6, 0x1FFC), | ||
0x200E, | ||
...range(0x1880, 0x18a8), | ||
...range(0x1e00, 0x1e9b), | ||
...range(0x1ea0, 0x1ef9), | ||
...range(0x1f00, 0x1f15), | ||
...range(0x1f18, 0x1f1d), | ||
...range(0x1f20, 0x1f45), | ||
...range(0x1f48, 0x1f4d), | ||
...range(0x1f50, 0x1f57), | ||
0x1f59, | ||
0x1f5b, | ||
0x1f5d, | ||
...range(0x1f5f, 0x1f7d), | ||
...range(0x1f80, 0x1fb4), | ||
...range(0x1fb6, 0x1fbc), | ||
0x1fbe, | ||
...range(0x1fc2, 0x1fc4), | ||
...range(0x1fc6, 0x1fcc), | ||
...range(0x1fd0, 0x1fd3), | ||
...range(0x1fd6, 0x1fdb), | ||
...range(0x1fe0, 0x1fec), | ||
...range(0x1ff2, 0x1ff4), | ||
...range(0x1ff6, 0x1ffc), | ||
0x200e, | ||
0x2071, | ||
0x207F, | ||
0x207f, | ||
0x2102, | ||
0x2107, | ||
...range(0x210A, 0x2113), | ||
...range(0x210a, 0x2113), | ||
0x2115, | ||
...range(0x2119, 0x211D), | ||
...range(0x2119, 0x211d), | ||
0x2124, | ||
0x2126, | ||
0x2128, | ||
...range(0x212A, 0x212D), | ||
...range(0x212F, 0x2131), | ||
...range(0x212a, 0x212d), | ||
...range(0x212f, 0x2131), | ||
...range(0x2133, 0x2139), | ||
...range(0x213D, 0x213F), | ||
...range(0x213d, 0x213f), | ||
...range(0x2145, 0x2149), | ||
...range(0x2160, 0x2183), | ||
...range(0x2336, 0x237A), | ||
...range(0x2336, 0x237a), | ||
0x2395, | ||
...range(0x249C, 0x24E9), | ||
...range(0x249c, 0x24e9), | ||
...range(0x3005, 0x3007), | ||
...range(0x3021, 0x3029), | ||
...range(0x3031, 0x3035), | ||
...range(0x3038, 0x303C), | ||
...range(0x3038, 0x303c), | ||
...range(0x3041, 0x3096), | ||
...range(0x309D, 0x309F), | ||
...range(0x30A1, 0x30FA), | ||
...range(0x30FC, 0x30FF), | ||
...range(0x3105, 0x312C), | ||
...range(0x3131, 0x318E), | ||
...range(0x3190, 0x31B7), | ||
...range(0x31F0, 0x321C), | ||
...range(0x309d, 0x309f), | ||
...range(0x30a1, 0x30fa), | ||
...range(0x30fc, 0x30ff), | ||
...range(0x3105, 0x312c), | ||
...range(0x3131, 0x318e), | ||
...range(0x3190, 0x31b7), | ||
...range(0x31f0, 0x321c), | ||
...range(0x3220, 0x3243), | ||
...range(0x3260, 0x327B), | ||
...range(0x327F, 0x32B0), | ||
...range(0x32C0, 0x32CB), | ||
...range(0x32D0, 0x32FE), | ||
...range(0x3260, 0x327b), | ||
...range(0x327f, 0x32b0), | ||
...range(0x32c0, 0x32cb), | ||
...range(0x32d0, 0x32fe), | ||
...range(0x3300, 0x3376), | ||
...range(0x337B, 0x33DD), | ||
...range(0x33E0, 0x33FE), | ||
...range(0x3400, 0x4DB5), | ||
...range(0x4E00, 0x9FA5), | ||
...range(0xA000, 0xA48C), | ||
...range(0xAC00, 0xD7A3), | ||
...range(0xD800, 0xFA2D), | ||
...range(0xFA30, 0xFA6A), | ||
...range(0xFB00, 0xFB06), | ||
...range(0xFB13, 0xFB17), | ||
...range(0xFF21, 0xFF3A), | ||
...range(0xFF41, 0xFF5A), | ||
...range(0xFF66, 0xFFBE), | ||
...range(0xFFC2, 0xFFC7), | ||
...range(0xFFCA, 0xFFCF), | ||
...range(0xFFD2, 0xFFD7), | ||
...range(0xFFDA, 0xFFDC), | ||
...range(0x10300, 0x1031E), | ||
...range(0x337b, 0x33dd), | ||
...range(0x33e0, 0x33fe), | ||
...range(0x3400, 0x4db5), | ||
...range(0x4e00, 0x9fa5), | ||
...range(0xa000, 0xa48c), | ||
...range(0xac00, 0xd7a3), | ||
...range(0xd800, 0xfa2d), | ||
...range(0xfa30, 0xfa6a), | ||
...range(0xfb00, 0xfb06), | ||
...range(0xfb13, 0xfb17), | ||
...range(0xff21, 0xff3a), | ||
...range(0xff41, 0xff5a), | ||
...range(0xff66, 0xffbe), | ||
...range(0xffc2, 0xffc7), | ||
...range(0xffca, 0xffcf), | ||
...range(0xffd2, 0xffd7), | ||
...range(0xffda, 0xffdc), | ||
...range(0x10300, 0x1031e), | ||
...range(0x10320, 0x10323), | ||
...range(0x10330, 0x1034A), | ||
...range(0x10330, 0x1034a), | ||
...range(0x10400, 0x10425), | ||
...range(0x10428, 0x1044D), | ||
...range(0x1D000, 0x1D0F5), | ||
...range(0x1D100, 0x1D126), | ||
...range(0x1D12A, 0x1D166), | ||
...range(0x1D16A, 0x1D172), | ||
...range(0x1D183, 0x1D184), | ||
...range(0x1D18C, 0x1D1A9), | ||
...range(0x1D1AE, 0x1D1DD), | ||
...range(0x1D400, 0x1D454), | ||
...range(0x1D456, 0x1D49C), | ||
...range(0x1D49E, 0x1D49F), | ||
0x1D4A2, | ||
...range(0x1D4A5, 0x1D4A6), | ||
...range(0x1D4A9, 0x1D4AC), | ||
...range(0x1D4AE, 0x1D4B9), | ||
0x1D4BB, | ||
...range(0x1D4BD, 0x1D4C0), | ||
...range(0x1D4C2, 0x1D4C3), | ||
...range(0x1D4C5, 0x1D505), | ||
...range(0x1D507, 0x1D50A), | ||
...range(0x1D50D, 0x1D514), | ||
...range(0x1D516, 0x1D51C), | ||
...range(0x1D51E, 0x1D539), | ||
...range(0x1D53B, 0x1D53E), | ||
...range(0x1D540, 0x1D544), | ||
0x1D546, | ||
...range(0x1D54A, 0x1D550), | ||
...range(0x1D552, 0x1D6A3), | ||
...range(0x1D6A8, 0x1D7C9), | ||
...range(0x20000, 0x2A6D6), | ||
...range(0x2F800, 0x2FA1D), | ||
...range(0xF0000, 0xFFFFD), | ||
...range(0x100000, 0x10FFFD) | ||
]) | ||
...range(0x10428, 0x1044d), | ||
...range(0x1d000, 0x1d0f5), | ||
...range(0x1d100, 0x1d126), | ||
...range(0x1d12a, 0x1d166), | ||
...range(0x1d16a, 0x1d172), | ||
...range(0x1d183, 0x1d184), | ||
...range(0x1d18c, 0x1d1a9), | ||
...range(0x1d1ae, 0x1d1dd), | ||
...range(0x1d400, 0x1d454), | ||
...range(0x1d456, 0x1d49c), | ||
...range(0x1d49e, 0x1d49f), | ||
0x1d4a2, | ||
...range(0x1d4a5, 0x1d4a6), | ||
...range(0x1d4a9, 0x1d4ac), | ||
...range(0x1d4ae, 0x1d4b9), | ||
0x1d4bb, | ||
...range(0x1d4bd, 0x1d4c0), | ||
...range(0x1d4c2, 0x1d4c3), | ||
...range(0x1d4c5, 0x1d505), | ||
...range(0x1d507, 0x1d50a), | ||
...range(0x1d50d, 0x1d514), | ||
...range(0x1d516, 0x1d51c), | ||
...range(0x1d51e, 0x1d539), | ||
...range(0x1d53b, 0x1d53e), | ||
...range(0x1d540, 0x1d544), | ||
0x1d546, | ||
...range(0x1d54a, 0x1d550), | ||
...range(0x1d552, 0x1d6a3), | ||
...range(0x1d6a8, 0x1d7c9), | ||
...range(0x20000, 0x2a6d6), | ||
...range(0x2f800, 0x2fa1d), | ||
...range(0xf0000, 0xffffd), | ||
...range(0x100000, 0x10fffd), | ||
]); | ||
@@ -1011,3 +1011,3 @@ module.exports = { | ||
bidirectional_r_al, | ||
bidirectional_l | ||
} | ||
bidirectional_l, | ||
}; |
@@ -7,5 +7,10 @@ 'use strict'; | ||
/* eslint-disable-next-line security/detect-non-literal-fs-filename */ | ||
const memory = fs.readFileSync(path.resolve(__dirname, '../code-points.mem')); | ||
let offset = 0; | ||
/** | ||
* Loads each code points sequence from buffer. | ||
* @returns {bitfield} | ||
*/ | ||
function read() { | ||
@@ -35,2 +40,2 @@ const size = memory.readUInt32BE(offset); | ||
bidirectional_l, | ||
} | ||
}; |
@@ -1,15 +0,21 @@ | ||
'use strict' | ||
'use strict'; | ||
/** | ||
* Create an array of numbers. | ||
* @param {number} from | ||
* @param {number} to | ||
* @returns {number[]} | ||
*/ | ||
function range(from, to) { | ||
// TODO: make this inlined. | ||
const list = new Array(to - from + 1) | ||
const list = new Array(to - from + 1); | ||
for(let i = 0; i < list.length; ++i) { | ||
list[i] = from + i | ||
for (let i = 0; i < list.length; i += 1) { | ||
list[i] = from + i; | ||
} | ||
return list | ||
return list; | ||
} | ||
module.exports = { | ||
range | ||
} | ||
range, | ||
}; |
{ | ||
"name": "saslprep", | ||
"version": "1.0.2", | ||
"version": "1.0.3", | ||
"description": "SASLprep: Stringprep Profile for User Names and Passwords, rfc4013.", | ||
"main": "index.js", | ||
"scripts": { | ||
"test": "ava", | ||
"test": "npm run lint && npm run unit-test", | ||
"lint": "npx eslint --quiet .", | ||
"unit-test": "npx jest", | ||
"gen-code-points": "node generate-code-points.js > code-points.mem" | ||
@@ -31,9 +33,41 @@ }, | ||
"devDependencies": { | ||
"ava": "^0.25.0", | ||
"eslint-plugin-prettier": "^2.1.2", | ||
"prettier": "^1.4.4" | ||
"@nodertc/eslint-config": "^0.2.1", | ||
"eslint": "^5.16.0", | ||
"jest": "^23.6.0", | ||
"prettier": "^1.14.3" | ||
}, | ||
"dependencies": { | ||
"sparse-bitfield": "^3.0.3" | ||
}, | ||
"eslintConfig": { | ||
"extends": "@nodertc", | ||
"rules": { | ||
"camelcase": "off", | ||
"no-continue": "off" | ||
}, | ||
"overrides": [ | ||
{ | ||
"files": [ | ||
"test/*.js" | ||
], | ||
"env": { | ||
"jest": true | ||
}, | ||
"rules": { | ||
"require-jsdoc": "off" | ||
} | ||
} | ||
] | ||
}, | ||
"jest": { | ||
"modulePaths": [ | ||
"<rootDir>" | ||
], | ||
"testMatch": [ | ||
"**/test/*.js" | ||
], | ||
"testPathIgnorePatterns": [ | ||
"<rootDir>/node_modules/" | ||
] | ||
} | ||
} |
@@ -31,2 +31,2 @@ # saslprep | ||
MIT, 2017 (c) Dmitriy Tsvettsikh | ||
MIT, 2017-2019 (c) Dmitriy Tsvettsikh |
@@ -1,70 +0,76 @@ | ||
import test from 'ava' | ||
import saslprep from '../' | ||
'use strict'; | ||
const chr = String.fromCodePoint | ||
const saslprep = require('..'); | ||
test('should work with liatin letters', (t) => { | ||
const str = 'user' | ||
t.is(saslprep(str), str) | ||
}) | ||
const chr = String.fromCodePoint; | ||
test('should work be case preserved', (t) => { | ||
const str = 'USER' | ||
t.is(saslprep(str), str) | ||
}) | ||
test('should work with liatin letters', () => { | ||
const str = 'user'; | ||
expect(saslprep(str)).toEqual(str); | ||
}); | ||
test('should remove `mapped to nothing` characters', (t) => { | ||
t.is(saslprep('I\u00ADX'), 'IX') | ||
}) | ||
test('should work be case preserved', () => { | ||
const str = 'USER'; | ||
expect(saslprep(str)).toEqual(str); | ||
}); | ||
test('should replace `Non-ASCII space characters` with space', (t) => { | ||
t.is(saslprep('a\u00A0b'), 'a\u0020b') | ||
}) | ||
test('should work with high code points (> U+FFFF)', () => { | ||
const str = '\uD83D\uDE00'; | ||
expect(saslprep(str, { allowUnassigned: true })).toEqual(str); | ||
}); | ||
test('should normalize as NFKC', (t) => { | ||
t.is(saslprep('\u00AA'), 'a') | ||
t.is(saslprep('\u2168'), 'IX') | ||
}) | ||
test('should remove `mapped to nothing` characters', () => { | ||
expect(saslprep('I\u00ADX')).toEqual('IX'); | ||
}); | ||
test('should throws when prohibited characters', (t) => { | ||
test('should replace `Non-ASCII space characters` with space', () => { | ||
expect(saslprep('a\u00A0b')).toEqual('a\u0020b'); | ||
}); | ||
test('should normalize as NFKC', () => { | ||
expect(saslprep('\u00AA')).toEqual('a'); | ||
expect(saslprep('\u2168')).toEqual('IX'); | ||
}); | ||
test('should throws when prohibited characters', () => { | ||
// C.2.1 ASCII control characters | ||
t.throws(() => saslprep('a\u007Fb')) | ||
expect(() => saslprep('a\u007Fb')).toThrow(); | ||
// C.2.2 Non-ASCII control characters | ||
t.throws(() => saslprep('a\u06DDb')) | ||
expect(() => saslprep('a\u06DDb')).toThrow(); | ||
// C.3 Private use | ||
t.throws(() => saslprep('a\uE000b')) | ||
expect(() => saslprep('a\uE000b')).toThrow(); | ||
// C.4 Non-character code points | ||
t.throws(() => saslprep(`a${chr(0x1FFFE)}b`)) | ||
expect(() => saslprep(`a${chr(0x1fffe)}b`)).toThrow(); | ||
// C.5 Surrogate codes | ||
t.throws(() => saslprep('a\uD800b')) | ||
expect(() => saslprep('a\uD800b')).toThrow(); | ||
// C.6 Inappropriate for plain text | ||
t.throws(() => saslprep('a\uFFF9b')) | ||
expect(() => saslprep('a\uFFF9b')).toThrow(); | ||
// C.7 Inappropriate for canonical representation | ||
t.throws(() => saslprep('a\u2FF0b')) | ||
expect(() => saslprep('a\u2FF0b')).toThrow(); | ||
// C.8 Change display properties or are deprecated | ||
t.throws(() => saslprep('a\u200Eb')) | ||
expect(() => saslprep('a\u200Eb')).toThrow(); | ||
// C.9 Tagging characters | ||
t.throws(() => saslprep(`a${chr(0xE0001)}b`)) | ||
}) | ||
expect(() => saslprep(`a${chr(0xe0001)}b`)).toThrow(); | ||
}); | ||
test('should not containt RandALCat and LCat bidi', (t) => { | ||
t.throws(() => saslprep('a\u06DD\u00AAb')) | ||
}) | ||
test('should not containt RandALCat and LCat bidi', () => { | ||
expect(() => saslprep('a\u06DD\u00AAb')).toThrow(); | ||
}); | ||
test('RandALCat should be first and last', (t) => { | ||
t.notThrows(() => saslprep('\u0627\u0031\u0628')) | ||
t.throws(() => saslprep('\u0627\u0031')) | ||
}) | ||
test('RandALCat should be first and last', () => { | ||
expect(() => saslprep('\u0627\u0031\u0628')).not.toThrow(); | ||
expect(() => saslprep('\u0627\u0031')).toThrow(); | ||
}); | ||
test('should handle unassigned code points', (t) => { | ||
t.throws(() => saslprep('a\u0487')) | ||
t.notThrows(() => saslprep('a\u0487', {allowUnassigned: true})) | ||
}) | ||
test('should handle unassigned code points', () => { | ||
expect(() => saslprep('a\u0487')).toThrow(); | ||
expect(() => saslprep('a\u0487', { allowUnassigned: true })).not.toThrow(); | ||
}); |
@@ -1,15 +0,16 @@ | ||
import { setFlagsFromString } from 'v8' | ||
import { range } from '../lib/util' | ||
import test from 'ava' | ||
'use strict'; | ||
const { setFlagsFromString } = require('v8'); | ||
const { range } = require('../lib/util'); | ||
// 984 by default. | ||
setFlagsFromString('--stack_size=500') | ||
setFlagsFromString('--stack_size=500'); | ||
test('should work', (t) => { | ||
const list = range(1, 3) | ||
t.deepEqual(list, [1, 2, 3]) | ||
}) | ||
test('should work', () => { | ||
const list = range(1, 3); | ||
expect(list).toEqual([1, 2, 3]); | ||
}); | ||
test('should work for large ranges', (t) => { | ||
t.notThrows(() => range(1, 1e6)) | ||
}) | ||
test('should work for large ranges', () => { | ||
expect(() => range(1, 1e6)).not.toThrow(); | ||
}); |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
457546
1267
4
1