base64.min.js 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. (function (global, factory) {
  2. typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(global) : typeof define === "function" && define.amd ? define(factory) : factory(global)
  3. }((typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : this), function (global) {
  4. global = global || {};
  5. var _Base64 = global.Base64;
  6. var version = "2.6.3";
  7. var b64chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  8. var b64tab = function (bin) {
  9. var t = {};
  10. for (var i = 0, l = bin.length; i < l; i++) {
  11. t[bin.charAt(i)] = i
  12. }
  13. return t
  14. }(b64chars);
  15. var fromCharCode = String.fromCharCode;
  16. var cb_utob = function (c) {
  17. if (c.length < 2) {
  18. var cc = c.charCodeAt(0);
  19. return cc < 128 ? c : cc < 2048 ? (fromCharCode(192 | (cc >>> 6)) + fromCharCode(128 | (cc & 63))) : (fromCharCode(224 | ((cc >>> 12) & 15)) + fromCharCode(128 | ((cc >>> 6) & 63)) + fromCharCode(128 | (cc & 63)))
  20. } else {
  21. var cc = 65536 + (c.charCodeAt(0) - 55296) * 1024 + (c.charCodeAt(1) - 56320);
  22. return (fromCharCode(240 | ((cc >>> 18) & 7)) + fromCharCode(128 | ((cc >>> 12) & 63)) + fromCharCode(128 | ((cc >>> 6) & 63)) + fromCharCode(128 | (cc & 63)))
  23. }
  24. };
  25. var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;
  26. var utob = function (u) {
  27. return u.replace(re_utob, cb_utob)
  28. };
  29. var cb_encode = function (ccc) {
  30. var padlen = [0, 2, 1][ccc.length % 3],
  31. ord = ccc.charCodeAt(0) << 16 | ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8) | ((ccc.length > 2 ? ccc.charCodeAt(2) : 0)),
  32. chars = [b64chars.charAt(ord >>> 18), b64chars.charAt((ord >>> 12) & 63), padlen >= 2 ? "=" : b64chars.charAt((ord >>> 6) & 63), padlen >= 1 ? "=" : b64chars.charAt(ord & 63)];
  33. return chars.join("")
  34. };
  35. var btoa = global.btoa && typeof global.btoa == "function" ? function (b) {
  36. return global.btoa(b)
  37. } : function (b) {
  38. if (b.match(/[^\x00-\xFF]/)) {
  39. throw new RangeError("The string contains invalid characters.")
  40. }
  41. return b.replace(/[\s\S]{1,3}/g, cb_encode)
  42. };
  43. var _encode = function (u) {
  44. return btoa(utob(String(u)))
  45. };
  46. var mkUriSafe = function (b64) {
  47. return b64.replace(/[+\/]/g, function (m0) {
  48. return m0 == "+" ? "-" : "_"
  49. }).replace(/=/g, "")
  50. };
  51. var encode = function (u, urisafe) {
  52. return urisafe ? mkUriSafe(_encode(u)) : _encode(u)
  53. };
  54. var encodeURI = function (u) {
  55. return encode(u, true)
  56. };
  57. var fromUint8Array;
  58. if (global.Uint8Array) {
  59. fromUint8Array = function (a, urisafe) {
  60. var b64 = "";
  61. for (var i = 0, l = a.length; i < l; i += 3) {
  62. var a0 = a[i],
  63. a1 = a[i + 1],
  64. a2 = a[i + 2];
  65. var ord = a0 << 16 | a1 << 8 | a2;
  66. b64 += b64chars.charAt(ord >>> 18) + b64chars.charAt((ord >>> 12) & 63) + (typeof a1 != "undefined" ? b64chars.charAt((ord >>> 6) & 63) : "=") + (typeof a2 != "undefined" ? b64chars.charAt(ord & 63) : "=")
  67. }
  68. return urisafe ? mkUriSafe(b64) : b64
  69. }
  70. }
  71. var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g;
  72. var cb_btou = function (cccc) {
  73. switch (cccc.length) {
  74. case 4:
  75. var cp = ((7 & cccc.charCodeAt(0)) << 18) | ((63 & cccc.charCodeAt(1)) << 12) | ((63 & cccc.charCodeAt(2)) << 6) | (63 & cccc.charCodeAt(3)),
  76. offset = cp - 65536;
  77. return (fromCharCode((offset >>> 10) + 55296) + fromCharCode((offset & 1023) + 56320));
  78. case 3:
  79. return fromCharCode(((15 & cccc.charCodeAt(0)) << 12) | ((63 & cccc.charCodeAt(1)) << 6) | (63 & cccc.charCodeAt(2)));
  80. default:
  81. return fromCharCode(((31 & cccc.charCodeAt(0)) << 6) | (63 & cccc.charCodeAt(1)))
  82. }
  83. };
  84. var btou = function (b) {
  85. return b.replace(re_btou, cb_btou)
  86. };
  87. var cb_decode = function (cccc) {
  88. var len = cccc.length,
  89. padlen = len % 4,
  90. n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0) | (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0) | (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0) | (len > 3 ? b64tab[cccc.charAt(3)] : 0),
  91. chars = [fromCharCode(n >>> 16), fromCharCode((n >>> 8) & 255), fromCharCode(n & 255)];
  92. chars.length -= [0, 0, 2, 1][padlen];
  93. return chars.join("")
  94. };
  95. var _atob = global.atob && typeof global.atob == "function" ? function (a) {
  96. return global.atob(a)
  97. } : function (a) {
  98. return a.replace(/\S{1,4}/g, cb_decode)
  99. };
  100. var atob = function (a) {
  101. return _atob(String(a).replace(/[^A-Za-z0-9\+\/]/g, ""))
  102. };
  103. var _decode = function (a) {
  104. return btou(_atob(a))
  105. };
  106. var _fromURI = function (a) {
  107. return String(a).replace(/[-_]/g, function (m0) {
  108. return m0 == "-" ? "+" : "/"
  109. }).replace(/[^A-Za-z0-9\+\/]/g, "")
  110. };
  111. var decode = function (a) {
  112. return _decode(_fromURI(a))
  113. };
  114. var toUint8Array;
  115. if (global.Uint8Array) {
  116. toUint8Array = function (a) {
  117. return Uint8Array.from(atob(_fromURI(a)), function (c) {
  118. return c.charCodeAt(0)
  119. })
  120. }
  121. }
  122. var noConflict = function () {
  123. var Base64 = global.Base64;
  124. global.Base64 = _Base64;
  125. return Base64
  126. };
  127. global.Base64 = {
  128. VERSION: version,
  129. atob: atob,
  130. btoa: btoa,
  131. fromBase64: decode,
  132. toBase64: encode,
  133. utob: utob,
  134. encode: encode,
  135. encodeURI: encodeURI,
  136. btou: btou,
  137. decode: decode,
  138. noConflict: noConflict,
  139. fromUint8Array: fromUint8Array,
  140. toUint8Array: toUint8Array
  141. };
  142. if (typeof Object.defineProperty === "function") {
  143. var noEnum = function (v) {
  144. return {
  145. value: v,
  146. enumerable: false,
  147. writable: true,
  148. configurable: true
  149. }
  150. };
  151. global.Base64.extendString = function () {
  152. Object.defineProperty(String.prototype, "fromBase64", noEnum(function () {
  153. return decode(this)
  154. }));
  155. Object.defineProperty(String.prototype, "toBase64", noEnum(function (urisafe) {
  156. return encode(this, urisafe)
  157. }));
  158. Object.defineProperty(String.prototype, "toBase64URI", noEnum(function () {
  159. return encode(this, true)
  160. }))
  161. }
  162. }
  163. if (global["Meteor"]) {
  164. Base64 = global.Base64
  165. }
  166. if (typeof module !== "undefined" && module.exports) {
  167. module.exports.Base64 = global.Base64
  168. } else {
  169. if (typeof define === "function" && define.amd) {
  170. define([], function () {
  171. return global.Base64
  172. })
  173. }
  174. }
  175. return {
  176. Base64: global.Base64
  177. }
  178. }));