-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstring-encode.js.map
1 lines (1 loc) · 12.6 KB
/
string-encode.js.map
1
{"version":3,"file":"string-encode.js","sources":["../string-encode.js"],"sourcesContent":["/**\n * Convert different types of JavaScript String to/from Uint8Array.\n *\n * @author Dumitru Uzun (DUzun.Me)\n * @version 0.2.2\n */\n\n/*requires Uint8Array*/\n/*globals escape, unescape, encodeURI, decodeURIComponent, btoa*/\n\nexport const chr = String.fromCharCode;\n\nexport function ord(chr) {\n return chr.charCodeAt(0);\n}\n\nexport function buffer2bin(buf) {\n buf = view8(buf);\n return chr.apply(String, buf);\n}\n\n/**\n * Get the hex representation of a buffer (TypedArray)\n *\n * @requires String.prototype.padStart()\n *\n * @param {TypedArray} buf Uint8Array is desirable, cause it is consistent regardless of the endianness\n *\n * @return {String} The hex representation of the buf\n */\nexport function buffer2hex(buf) {\n const bpe = buf.BYTES_PER_ELEMENT << 1;\n return buf.reduce((r, c) => r += (c >>> 0).toString(16).padStart(bpe,'0'), '');\n}\n\nexport function buffer2str(buf, asUtf8) {\n if(typeof buf == 'string') return buf;\n buf = buffer2bin(buf);\n if (asUtf8 !== false && !isASCII(buf)) {\n if(asUtf8) {\n buf = utf8Decode(buf);\n } else if(asUtf8 == undefined) {\n try {\n buf = utf8Decode(buf);\n } catch(err) {}\n }\n }\n return buf;\n}\n\nexport function str2buffer(str, asUtf8) {\n str = String(str);\n if(asUtf8 == undefined) {\n // Some guessing\n asUtf8 = hasMultibyte(str); // || !isASCII(str)\n }\n if (asUtf8) {\n str = utf8Encode(str);\n }\n\n // Smaller x2\n // return new Uint8Array(String(str).split('').map(ord));\n\n // Faster x3-4\n let len = str.length;\n const buf = new Uint8Array(len);\n while(len--) buf[len] = str.charCodeAt(len);\n return buf;\n}\n\nconst nonHexDigitRE = /[^0-9a-f]/g;\n\n/**\n * Read a hex string into a buffer (Uint8Array), ignoring non-hex chars.\n *\n * @param {String} str\n *\n * @return {Uint8Array}\n */\nexport function hex2buffer(str) {\n str = str.replace(nonHexDigitRE, '');\n const len = str.length;\n const ret = new Uint8Array((len + 1) >>> 1);\n\n for(let i=0; i<len; i+=2) {\n ret[i >>> 1] = parseInt(str.slice(i, i+2), 16);\n }\n\n return ret;\n}\n\n/**\n * This method is a replacement of Buffer.toString(enc)\n * for Browser, where Buffer is not available.\n *\n * @requires btoa\n *\n * @this {Uint8Array}\n *\n * @param {String} enc 'binary' | 'hex' | 'base64' | 'utf8' | undefined\n *\n * @return {String}\n */\nexport function toString(enc) {\n // The Node.js equivalent would be something like:\n // if(typeof Buffer == 'function') {\n // if(enc === false) enc = 'binary';\n // if(enc === true) enc = 'utf8';\n // return Buffer.from(this.buffer, this.byteOffset, this.byteLength).toString(enc);\n // }\n switch(enc) {\n case false:\n case 'binary': return buffer2bin(this);\n case 'hex': return buffer2hex(this);\n case 'base64': return btoa(buffer2bin(this));\n case 'utf8': enc = true; break;\n }\n return buffer2str(this, enc);\n}\n\nexport function view8(buf, start, len) {\n // If buf is a Buffer, we still want to make it an Uint8Array\n if(!start && !len && buf instanceof Uint8Array && !buf.copy) return buf;\n start = start >>> 0;\n if(len == undefined) len = buf.byteLength - start;\n return new Uint8Array(buf.buffer, buf.byteOffset+start, len);\n}\n\nlet _isLittleEndian;\nexport function isLittleEndian() {\n if(_isLittleEndian !== undefined) return _isLittleEndian;\n _isLittleEndian = !!(new Uint8Array(new Uint16Array([1]).buffer)[0]);\n isLittleEndian = () => _isLittleEndian;\n return _isLittleEndian;\n}\n\nexport function switchEndianness32(i) {\n return (i&0xFF)<<24\n | (i&0xFF00)<<8\n | i>>8&0xFF00\n | i>>24&0xFF\n ;\n}\n\nexport function guessEncoding(str) {\n if(hasMultibyte(str)) return 'mb';\n\n // @todo: test which is faster, utf8bytes() or RegExp\n if(isHEX(str)) return 'hex';\n // if(isASCII(str)) return 'ascii';\n // if(isUTF8(str)) return 'utf8';\n\n let mbLen = utf8bytes(str);\n if(mbLen) return 'utf8';\n if(mbLen === 0) return 'ascii';\n if(mbLen === false) {\n mbLen = utf8bytes(str, true);\n if(mbLen) return '~utf8'; // UTF8, but with async characters at the edges\n }\n return 'binary';\n}\n\nconst hasMultibyteRE = /([^\\x00-\\xFF])/;\nconst isHEXRE = /^[0-9a-f\\s]*$/i;\nconst isASCIIRE = /^[\\x00-\\x7F]*$/;\nconst isUTF8RE = /^(?:[\\x00-\\x7F]|[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF][\\x80-\\xBF]|[\\xF0-\\xF7][\\x80-\\xBF][\\x80-\\xBF][\\x80-\\xBF])*$/;\n\nexport function hasMultibyte(str) {\n let m = hasMultibyteRE.exec(str);\n return m ? m[1] : false;\n}\n\nexport function isBinary(str) {\n return !hasMultibyte(str);\n}\n\nexport function isASCII(str) {\n return isASCIIRE.test(str);\n}\n\nexport function isUTF8(str) {\n return isUTF8RE.test(str);\n}\n\nexport function isHEX(str) {\n return isHEXRE.test(str);\n}\n\nexport function utf8bytes(str, allowAsyncChars) {\n var l = str.length\n , i = 0\n , u = 0\n , c\n , a = -1\n , asy = +!!allowAsyncChars\n ;\n\n for( ; i < l ; ) {\n c = str.charCodeAt(i++);\n if( c < 0x80 ) continue; // ASCII\n if( 0xFF <= c ) return false; // has multi-byte\n\n // async UTF8 character\n if( (c & 0xC0) == 0x80 ) {\n // Ignore async UTF8 characters at the beginning\n if(asy == i) {\n ++u;\n ++asy;\n continue;\n }\n return false;\n }\n\n // Check sync UTF8 bytes\n a = (c & 0xE0) !== 0xC0\n ? (c & 0xF0) !== 0xE0\n ? (c & 0xF8) !== 0xF0\n ? false\n : 3\n : 2\n : 1\n ;\n if(!a) return false; // Not an ASCII, nor sync UTF8 bytes\n\n for( ; (u += 1) && a-- && i < l; ) {\n c = str.charCodeAt(i++);\n if((c & 0xC0) !== 0x80) {\n return false; // Not an ASCII, nor sync UTF8 bytes\n }\n }\n }\n\n // Ignore async UTF8 characters at the end\n if(~a && !allowAsyncChars) return false;\n\n return u;\n}\n\nexport function utf8Encode(str) {\n return unescape(encodeURI(str));\n}\n\nexport function utf8Decode(str) {\n return decodeURIComponent(escape(str));\n}\n"],"names":["chr","String","fromCharCode","ord","charCodeAt","buffer2bin","buf","view8","apply","buffer2hex","bpe","BYTES_PER_ELEMENT","reduce","r","c","toString","padStart","buffer2str","asUtf8","isASCII","utf8Decode","undefined","err","str2buffer","str","hasMultibyte","utf8Encode","len","length","Uint8Array","nonHexDigitRE","hex2buffer","replace","ret","i","parseInt","slice","enc","btoa","start","copy","byteLength","buffer","byteOffset","_isLittleEndian","isLittleEndian","Uint16Array","switchEndianness32","guessEncoding","isHEX","mbLen","utf8bytes","hasMultibyteRE","isHEXRE","isASCIIRE","isUTF8RE","m","exec","isBinary","test","isUTF8","allowAsyncChars","l","u","a","asy","unescape","encodeURI","decodeURIComponent","escape"],"mappings":"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"}