@fast-china/utils
Version:
Fast 工具库.
1 lines • 9.46 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../src/base64/index.ts"],"sourcesContent":["const b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nconst b64re = /^(?:[A-Z\\d+/]{4})*?(?:[A-Z\\d+/]{2}(?:==)?|[A-Z\\d+/]{3}=?)?$/i;\n\n/**加密字典 */\nconst base64PwdDic = [\n\t{ index: 977, randomIndex: 188 },\n\t{ index: 926, randomIndex: 201 },\n\t{ index: 851, randomIndex: 225 },\n\t{ index: 700, randomIndex: 255 },\n\t{ index: 600, randomIndex: 268 },\n\t{ index: 500, randomIndex: 277 },\n\t{ index: 400, randomIndex: 288 },\n\t{ index: 330, randomIndex: 327 },\n\t{ index: 300, randomIndex: 180 },\n\t{ index: 200, randomIndex: 178 },\n\t{ index: 100, randomIndex: 124 },\n\t// 100 以内字典\n\t{ index: 98, randomIndex: 95 },\n\t{ index: 92, randomIndex: 90 },\n\t{ index: 91, randomIndex: 87 },\n\t{ index: 88, randomIndex: 84 },\n\t{ index: 82, randomIndex: 79 },\n\t{ index: 78, randomIndex: 71 },\n\t{ index: 72, randomIndex: 69 },\n\t{ index: 68, randomIndex: 66 },\n\t{ index: 59, randomIndex: 55 },\n\t{ index: 48, randomIndex: 43 },\n\t{ index: 42, randomIndex: 37 },\n\t{ index: 36, randomIndex: 30 },\n\t{ index: 33, randomIndex: 27 },\n\t{ index: 24, randomIndex: 20 },\n\t{ index: 23, randomIndex: 18 },\n\t{ index: 21, randomIndex: 16 },\n\t{ index: 17, randomIndex: 14 },\n\t{ index: 13, randomIndex: 9 },\n\t{ index: 7, randomIndex: 4 },\n\t{ index: 5, randomIndex: 3 },\n\t{ index: 2, randomIndex: 1 },\n];\n\n/**随机字符串长度 */\nconst randomPrefixStrLength = 6;\n\n/**随机字符串 */\nconst randomStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n\n/**\n * 在Base64字符串中添加加密字典\n */\nfunction insertRandomStrToBase64Str(base64Str: string): string {\n\tlet strResult = base64Str;\n\tconst items = base64PwdDic.sort((a, b) => {\n\t\treturn b.index - a.index;\n\t});\n\titems.forEach((item) => {\n\t\tif (item.index < base64Str.length) {\n\t\t\tconst randomChar = base64Str[item.randomIndex];\n\t\t\tstrResult = strResult.slice(0, item.index) + randomChar + strResult.slice(item.index);\n\t\t}\n\t});\n\treturn strResult;\n}\n\n/**\n * 删除Base64字符串中的加密字典\n */\nfunction removeBase64StrRandomStr(base64Str: string): string {\n\tconst items = base64PwdDic.sort((a, b) => {\n\t\treturn a.index - b.index;\n\t});\n\tlet strResult = base64Str;\n\titems.forEach((item) => {\n\t\tif (item.index < base64Str.length) {\n\t\t\tstrResult = strResult.slice(0, item.index) + strResult.slice(item.index + 1);\n\t\t}\n\t});\n\treturn strResult;\n}\n\n/**\n * 得到随机字符串\n */\nfunction getRandomStr(str = randomStr, prefixStrLength = randomPrefixStrLength): string {\n\tlet result = \"\";\n\tfor (let i = 0; i < prefixStrLength; i++) {\n\t\tconst randomInt = Math.ceil(Math.random() * (str.length - 1));\n\t\tconst randomChar = str[randomInt];\n\t\tresult += randomChar;\n\t}\n\treturn result;\n}\n\n/**\n * Base64工具类\n */\nexport const base64Util = {\n\t/**\n\t * 将字符串编码为Base64格式\n\t */\n\tbota(string: string): string {\n\t\tstring = String(string);\n\t\tlet bitmap,\n\t\t\ta,\n\t\t\tb,\n\t\t\tc,\n\t\t\tresult = \"\",\n\t\t\ti = 0,\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\trest = string.length % 3;\n\n\t\tfor (; i < string.length; ) {\n\t\t\tif ((a = string.charCodeAt(i++)) > 255 || (b = string.charCodeAt(i++)) > 255 || (c = string.charCodeAt(i++)) > 255)\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\"Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.\"\n\t\t\t\t);\n\n\t\t\tbitmap = (a << 16) | (b << 8) | c;\n\t\t\tresult += b64.charAt((bitmap >> 18) & 63) + b64.charAt((bitmap >> 12) & 63) + b64.charAt((bitmap >> 6) & 63) + b64.charAt(bitmap & 63);\n\t\t}\n\n\t\treturn rest ? result.slice(0, rest - 3) + \"===\".substring(rest) : result;\n\t},\n\t/**\n\t * 将Base64编码的字符串解码回其原始格式。\n\t */\n\tatob(string: string): string {\n\t\tstring = String(string).replace(/[\\t\\n\\f\\r ]+/g, \"\");\n\t\tif (!b64re.test(string)) throw new TypeError(\"Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.\");\n\t\tstring += \"==\".slice(2 - (string.length & 3));\n\t\tlet bitmap,\n\t\t\tresult = \"\",\n\t\t\tr1,\n\t\t\tr2,\n\t\t\ti = 0;\n\t\tfor (; i < string.length; ) {\n\t\t\tbitmap =\n\t\t\t\t(b64.indexOf(string.charAt(i++)) << 18) |\n\t\t\t\t(b64.indexOf(string.charAt(i++)) << 12) |\n\t\t\t\t((r1 = b64.indexOf(string.charAt(i++))) << 6) |\n\t\t\t\t(r2 = b64.indexOf(string.charAt(i++)));\n\n\t\t\tresult +=\n\t\t\t\tr1 === 64\n\t\t\t\t\t? String.fromCharCode((bitmap >> 16) & 255)\n\t\t\t\t\t: r2 === 64\n\t\t\t\t\t\t? String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255)\n\t\t\t\t\t\t: String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255, bitmap & 255);\n\t\t}\n\t\treturn result;\n\t},\n\t/**\n\t * 字符串ToBase64\n\t */\n\ttoBase64(str: string, prefixStrLength = randomPrefixStrLength): string {\n\t\tif (str.length === 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tconst randomPrefixStr = getRandomStr();\n\t\tlet base64 = base64Util.bota(encodeURIComponent(str));\n\t\tif (prefixStrLength !== 0) {\n\t\t\tbase64 = insertRandomStrToBase64Str(base64);\n\t\t}\n\t\treturn randomPrefixStr + base64;\n\t},\n\n\t/**\n\t * Base64转字符串\n\t */\n\tbase64ToStr(str: string, prefixStrLength = randomPrefixStrLength): string {\n\t\tlet result = str;\n\t\tif (str.length === 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tlet input = str.slice(prefixStrLength);\n\t\tif (prefixStrLength !== 0) {\n\t\t\tinput = removeBase64StrRandomStr(input);\n\t\t}\n\t\tresult = base64Util.atob(input);\n\t\treturn decodeURIComponent(result);\n\t},\n};\n"],"names":[],"mappings":"AAAA,MAAM,MAAM;AACZ,MAAM,QAAQ;AAGd,MAAM,eAAe;AAAA,EACpB,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA;AAAA,EAE/B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,EAAE;AAAA,EAC5B,EAAE,OAAO,GAAG,aAAa,EAAE;AAAA,EAC3B,EAAE,OAAO,GAAG,aAAa,EAAE;AAAA,EAC3B,EAAE,OAAO,GAAG,aAAa,EAAE;AAC5B;AAGA,MAAM,wBAAwB;AAG9B,MAAM,YAAY;AAKlB,SAAS,2BAA2B,WAA2B;AAC9D,MAAI,YAAY;AAChB,QAAM,QAAQ,aAAa,KAAK,CAAC,GAAG,MAAM;AAClC,WAAA,EAAE,QAAQ,EAAE;AAAA,EAAA,CACnB;AACK,QAAA,QAAQ,CAAC,SAAS;AACnB,QAAA,KAAK,QAAQ,UAAU,QAAQ;AAC5B,YAAA,aAAa,UAAU,KAAK,WAAW;AACjC,kBAAA,UAAU,MAAM,GAAG,KAAK,KAAK,IAAI,aAAa,UAAU,MAAM,KAAK,KAAK;AAAA,IAAA;AAAA,EACrF,CACA;AACM,SAAA;AACR;AAKA,SAAS,yBAAyB,WAA2B;AAC5D,QAAM,QAAQ,aAAa,KAAK,CAAC,GAAG,MAAM;AAClC,WAAA,EAAE,QAAQ,EAAE;AAAA,EAAA,CACnB;AACD,MAAI,YAAY;AACV,QAAA,QAAQ,CAAC,SAAS;AACnB,QAAA,KAAK,QAAQ,UAAU,QAAQ;AACtB,kBAAA,UAAU,MAAM,GAAG,KAAK,KAAK,IAAI,UAAU,MAAM,KAAK,QAAQ,CAAC;AAAA,IAAA;AAAA,EAC5E,CACA;AACM,SAAA;AACR;AAKA,SAAS,aAAa,MAAM,WAAW,kBAAkB,uBAA+B;AACvF,MAAI,SAAS;AACb,WAAS,IAAI,GAAG,IAAI,iBAAiB,KAAK;AACnC,UAAA,YAAY,KAAK,KAAK,KAAK,YAAY,IAAI,SAAS,EAAE;AACtD,UAAA,aAAa,IAAI,SAAS;AACtB,cAAA;AAAA,EAAA;AAEJ,SAAA;AACR;AAKO,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA,EAIzB,KAAK,QAAwB;AAC5B,aAAS,OAAO,MAAM;AAClB,QAAA,QACH,GACA,GACA,GACA,SAAS,IACT,IAAI,GAEJ,OAAO,OAAO,SAAS;AAEjB,WAAA,IAAI,OAAO,UAAU;AAC3B,WAAK,IAAI,OAAO,WAAW,GAAG,KAAK,QAAQ,IAAI,OAAO,WAAW,GAAG,KAAK,QAAQ,IAAI,OAAO,WAAW,GAAG,KAAK;AAC9G,cAAM,IAAI;AAAA,UACT;AAAA,QACD;AAES,eAAA,KAAK,KAAO,KAAK,IAAK;AACtB,gBAAA,IAAI,OAAQ,UAAU,KAAM,EAAE,IAAI,IAAI,OAAQ,UAAU,KAAM,EAAE,IAAI,IAAI,OAAQ,UAAU,IAAK,EAAE,IAAI,IAAI,OAAO,SAAS,EAAE;AAAA,IAAA;AAG/H,WAAA,OAAO,OAAO,MAAM,GAAG,OAAO,CAAC,IAAI,MAAM,UAAU,IAAI,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA,EAIA,KAAK,QAAwB;AAC5B,aAAS,OAAO,MAAM,EAAE,QAAQ,iBAAiB,EAAE;AAC/C,QAAA,CAAC,MAAM,KAAK,MAAM,EAAS,OAAA,IAAI,UAAU,0FAA0F;AACvI,cAAU,KAAK,MAAM,KAAK,OAAO,SAAS,EAAE;AAC5C,QAAI,QACH,SAAS,IACT,IACA,IACA,IAAI;AACE,WAAA,IAAI,OAAO,UAAU;AAC3B,eACE,IAAI,QAAQ,OAAO,OAAO,GAAG,CAAC,KAAK,KACnC,IAAI,QAAQ,OAAO,OAAO,GAAG,CAAC,KAAK,MAClC,KAAK,IAAI,QAAQ,OAAO,OAAO,GAAG,CAAC,MAAM,KAC1C,KAAK,IAAI,QAAQ,OAAO,OAAO,GAAG,CAAC;AAErC,gBACC,OAAO,KACJ,OAAO,aAAc,UAAU,KAAM,GAAG,IACxC,OAAO,KACN,OAAO,aAAc,UAAU,KAAM,KAAM,UAAU,IAAK,GAAG,IAC7D,OAAO,aAAc,UAAU,KAAM,KAAM,UAAU,IAAK,KAAK,SAAS,GAAG;AAAA,IAAA;AAE1E,WAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS,KAAa,kBAAkB,uBAA+B;AAClE,QAAA,IAAI,WAAW,GAAG;AACd,aAAA;AAAA,IAAA;AAER,UAAM,kBAAkB,aAAa;AACrC,QAAI,SAAS,WAAW,KAAK,mBAAmB,GAAG,CAAC;AACpD,QAAI,oBAAoB,GAAG;AAC1B,eAAS,2BAA2B,MAAM;AAAA,IAAA;AAE3C,WAAO,kBAAkB;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,KAAa,kBAAkB,uBAA+B;AACzE,QAAI,SAAS;AACT,QAAA,IAAI,WAAW,GAAG;AACd,aAAA;AAAA,IAAA;AAEJ,QAAA,QAAQ,IAAI,MAAM,eAAe;AACrC,QAAI,oBAAoB,GAAG;AAC1B,cAAQ,yBAAyB,KAAK;AAAA,IAAA;AAE9B,aAAA,WAAW,KAAK,KAAK;AAC9B,WAAO,mBAAmB,MAAM;AAAA,EAAA;AAElC;"}