diff options
author | Minteck <contact@minteck.org> | 2023-02-23 19:34:56 +0100 |
---|---|---|
committer | Minteck <contact@minteck.org> | 2023-02-23 19:34:56 +0100 |
commit | 3d1cd02f27518f1a04374c7c8320cd5d82ede6e9 (patch) | |
tree | 75be5fba4368472fb11c8015aee026b2b9a71888 /includes/external/school/node_modules/whatwg-encoding/lib/whatwg-encoding.js | |
parent | 8cc1f13c17fa2fb5a4410542d39e650e02945634 (diff) | |
download | pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.tar.gz pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.tar.bz2 pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.zip |
Updated 40 files, added 37 files, deleted 1103 files and renamed 3905 files (automated)
Diffstat (limited to 'includes/external/school/node_modules/whatwg-encoding/lib/whatwg-encoding.js')
-rw-r--r-- | includes/external/school/node_modules/whatwg-encoding/lib/whatwg-encoding.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/includes/external/school/node_modules/whatwg-encoding/lib/whatwg-encoding.js b/includes/external/school/node_modules/whatwg-encoding/lib/whatwg-encoding.js new file mode 100644 index 0000000..d04eab5 --- /dev/null +++ b/includes/external/school/node_modules/whatwg-encoding/lib/whatwg-encoding.js @@ -0,0 +1,47 @@ +"use strict"; +const iconvLite = require("iconv-lite"); +const supportedNames = require("./supported-names.json"); +const labelsToNames = require("./labels-to-names.json"); + +const supportedNamesSet = new Set(supportedNames); + +// https://encoding.spec.whatwg.org/#concept-encoding-get +exports.labelToName = label => { + label = String(label).trim().toLowerCase(); + + return labelsToNames[label] || null; +}; + +// https://encoding.spec.whatwg.org/#decode +exports.decode = (buffer, fallbackEncodingName) => { + let encoding = fallbackEncodingName; + if (!exports.isSupported(encoding)) { + throw new RangeError(`"${encoding}" is not a supported encoding name`); + } + + const bomEncoding = exports.getBOMEncoding(buffer); + if (bomEncoding !== null) { + encoding = bomEncoding; + } + + // iconv-lite will strip BOMs for us, so no need to do the stuff the spec does + + return iconvLite.decode(buffer, encoding); +}; + +// https://github.com/whatwg/html/issues/1910#issuecomment-254017369 +exports.getBOMEncoding = buffer => { + if (buffer[0] === 0xFE && buffer[1] === 0xFF) { + return "UTF-16BE"; + } else if (buffer[0] === 0xFF && buffer[1] === 0xFE) { + return "UTF-16LE"; + } else if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) { + return "UTF-8"; + } + + return null; +}; + +exports.isSupported = name => { + return supportedNamesSet.has(String(name)); +}; |