-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstring-encode.min.js.map
1 lines (1 loc) · 9.24 KB
/
string-encode.min.js.map
1
{"version":3,"file":"string-encode.min.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","buffer2bin","buf","view8","apply","buffer2hex","bpe","BYTES_PER_ELEMENT","reduce","r","c","toString","padStart","buffer2str","asUtf8","isASCII","utf8Decode","undefined","err","_isLittleEndian","nonHexDigitRE","start","len","Uint8Array","copy","byteLength","buffer","byteOffset","isLittleEndian","Uint16Array","hasMultibyteRE","isHEXRE","isASCIIRE","isUTF8RE","hasMultibyte","str","m","exec","test","isHEX","utf8bytes","allowAsyncChars","l","length","i","u","a","asy","charCodeAt","utf8Encode","unescape","encodeURI","decodeURIComponent","escape","mbLen","replace","ret","parseInt","slice","enc","this","btoa"],"mappings":"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"}