@cloudcome/utils-core 0.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/dist/array.cjs +129 -0
  2. package/dist/array.cjs.map +1 -0
  3. package/dist/array.d.ts +171 -0
  4. package/dist/array.mjs +129 -0
  5. package/dist/array.mjs.map +1 -0
  6. package/dist/async.cjs +219 -0
  7. package/dist/async.cjs.map +1 -0
  8. package/dist/async.d.ts +137 -0
  9. package/dist/async.mjs +219 -0
  10. package/dist/async.mjs.map +1 -0
  11. package/dist/base64.cjs +16 -0
  12. package/dist/base64.cjs.map +1 -0
  13. package/dist/base64.d.ts +7 -0
  14. package/dist/base64.mjs +16 -0
  15. package/dist/base64.mjs.map +1 -0
  16. package/dist/cache.cjs +79 -0
  17. package/dist/cache.cjs.map +1 -0
  18. package/dist/cache.d.ts +90 -0
  19. package/dist/cache.mjs +79 -0
  20. package/dist/cache.mjs.map +1 -0
  21. package/dist/color/contrast.d.ts +10 -0
  22. package/dist/color/distance.d.ts +8 -0
  23. package/dist/color/helpers.d.ts +2 -0
  24. package/dist/color/hex-hsl.d.ts +3 -0
  25. package/dist/color/hex-hsv.d.ts +20 -0
  26. package/dist/color/hex-hwb.d.ts +23 -0
  27. package/dist/color/hex-rgb.d.ts +18 -0
  28. package/dist/color/hsl-lighten.d.ts +10 -0
  29. package/dist/color/hsv-brighten.d.ts +12 -0
  30. package/dist/color/luminance.d.ts +10 -0
  31. package/dist/color/mix.d.ts +18 -0
  32. package/dist/color/rgb-hsl.d.ts +23 -0
  33. package/dist/color/rgb-hsv.d.ts +25 -0
  34. package/dist/color/rgb-hwb.d.ts +29 -0
  35. package/dist/color/rgb-lab.d.ts +25 -0
  36. package/dist/color/rgb-whiter.d.ts +12 -0
  37. package/dist/color/rgb-xyz.d.ts +22 -0
  38. package/dist/color/types.d.ts +83 -0
  39. package/dist/color/xyz-lab.d.ts +25 -0
  40. package/dist/color.cjs +250 -0
  41. package/dist/color.cjs.map +1 -0
  42. package/dist/color.d.ts +19 -0
  43. package/dist/color.mjs +250 -0
  44. package/dist/color.mjs.map +1 -0
  45. package/dist/const.cjs +14 -0
  46. package/dist/const.cjs.map +1 -0
  47. package/dist/const.mjs +15 -0
  48. package/dist/const.mjs.map +1 -0
  49. package/dist/core.cjs +250 -0
  50. package/dist/core.cjs.map +1 -0
  51. package/dist/core.mjs +251 -0
  52. package/dist/core.mjs.map +1 -0
  53. package/dist/crypto/md5.d.mts +1 -0
  54. package/dist/crypto/sha1.d.mts +1 -0
  55. package/dist/crypto/sha256.d.mts +1 -0
  56. package/dist/crypto/sha512.d.mts +1 -0
  57. package/dist/crypto.cjs +812 -0
  58. package/dist/crypto.cjs.map +1 -0
  59. package/dist/crypto.d.ts +44 -0
  60. package/dist/crypto.mjs +812 -0
  61. package/dist/crypto.mjs.map +1 -0
  62. package/dist/date/const.d.ts +6 -0
  63. package/dist/date/core.d.ts +52 -0
  64. package/dist/date/days.d.ts +23 -0
  65. package/dist/date/is.d.ts +92 -0
  66. package/dist/date/relative.d.ts +44 -0
  67. package/dist/date/start-end.d.ts +73 -0
  68. package/dist/date/timezone.d.ts +67 -0
  69. package/dist/date/weeks.d.ts +72 -0
  70. package/dist/date.cjs +239 -0
  71. package/dist/date.cjs.map +1 -0
  72. package/dist/date.d.ts +8 -0
  73. package/dist/date.mjs +241 -0
  74. package/dist/date.mjs.map +1 -0
  75. package/dist/dict.cjs +2 -0
  76. package/dist/dict.cjs.map +1 -0
  77. package/dist/dict.d.ts +1 -0
  78. package/dist/dict.mjs +2 -0
  79. package/dist/dict.mjs.map +1 -0
  80. package/dist/each.cjs +18 -0
  81. package/dist/each.cjs.map +1 -0
  82. package/dist/each.mjs +19 -0
  83. package/dist/each.mjs.map +1 -0
  84. package/dist/easing.cjs +151 -0
  85. package/dist/easing.cjs.map +1 -0
  86. package/dist/easing.d.ts +46 -0
  87. package/dist/easing.mjs +151 -0
  88. package/dist/easing.mjs.map +1 -0
  89. package/dist/emitter.cjs +94 -0
  90. package/dist/emitter.cjs.map +1 -0
  91. package/dist/emitter.d.ts +68 -0
  92. package/dist/emitter.mjs +94 -0
  93. package/dist/emitter.mjs.map +1 -0
  94. package/dist/enum.cjs +58 -0
  95. package/dist/enum.cjs.map +1 -0
  96. package/dist/enum.d.ts +68 -0
  97. package/dist/enum.mjs +58 -0
  98. package/dist/enum.mjs.map +1 -0
  99. package/dist/env.cjs +28 -0
  100. package/dist/env.cjs.map +1 -0
  101. package/dist/env.d.ts +38 -0
  102. package/dist/env.mjs +28 -0
  103. package/dist/env.mjs.map +1 -0
  104. package/dist/error.cjs +12 -0
  105. package/dist/error.cjs.map +1 -0
  106. package/dist/error.d.ts +22 -0
  107. package/dist/error.mjs +12 -0
  108. package/dist/error.mjs.map +1 -0
  109. package/dist/exception.cjs +22 -0
  110. package/dist/exception.cjs.map +1 -0
  111. package/dist/exception.d.ts +31 -0
  112. package/dist/exception.mjs +22 -0
  113. package/dist/exception.mjs.map +1 -0
  114. package/dist/fn.cjs +76 -0
  115. package/dist/fn.cjs.map +1 -0
  116. package/dist/fn.d.ts +102 -0
  117. package/dist/fn.mjs +76 -0
  118. package/dist/fn.mjs.map +1 -0
  119. package/dist/index.cjs +5 -0
  120. package/dist/index.cjs.map +1 -0
  121. package/dist/index.d.ts +1 -0
  122. package/dist/index.mjs +5 -0
  123. package/dist/index.mjs.map +1 -0
  124. package/dist/merge.cjs +87 -0
  125. package/dist/merge.cjs.map +1 -0
  126. package/dist/merge.mjs +88 -0
  127. package/dist/merge.mjs.map +1 -0
  128. package/dist/number.cjs +11 -0
  129. package/dist/number.cjs.map +1 -0
  130. package/dist/number.d.ts +137 -0
  131. package/dist/number.mjs +11 -0
  132. package/dist/number.mjs.map +1 -0
  133. package/dist/object/each.d.ts +36 -0
  134. package/dist/object/get-set.d.ts +111 -0
  135. package/dist/object/is.d.ts +32 -0
  136. package/dist/object/merge.d.ts +72 -0
  137. package/dist/object/process.d.ts +46 -0
  138. package/dist/object.cjs +130 -0
  139. package/dist/object.cjs.map +1 -0
  140. package/dist/object.d.ts +5 -0
  141. package/dist/object.mjs +130 -0
  142. package/dist/object.mjs.map +1 -0
  143. package/dist/path.cjs +77 -0
  144. package/dist/path.cjs.map +1 -0
  145. package/dist/path.d.ts +82 -0
  146. package/dist/path.mjs +77 -0
  147. package/dist/path.mjs.map +1 -0
  148. package/dist/promise.cjs +62 -0
  149. package/dist/promise.cjs.map +1 -0
  150. package/dist/promise.d.ts +50 -0
  151. package/dist/promise.mjs +62 -0
  152. package/dist/promise.mjs.map +1 -0
  153. package/dist/qs.cjs +47 -0
  154. package/dist/qs.cjs.map +1 -0
  155. package/dist/qs.d.ts +62 -0
  156. package/dist/qs.mjs +47 -0
  157. package/dist/qs.mjs.map +1 -0
  158. package/dist/regexp.cjs +66 -0
  159. package/dist/regexp.cjs.map +1 -0
  160. package/dist/regexp.d.ts +65 -0
  161. package/dist/regexp.mjs +66 -0
  162. package/dist/regexp.mjs.map +1 -0
  163. package/dist/string.cjs +16 -0
  164. package/dist/string.cjs.map +1 -0
  165. package/dist/string.d.ts +80 -0
  166. package/dist/string.mjs +16 -0
  167. package/dist/string.mjs.map +1 -0
  168. package/dist/string2.cjs +147 -0
  169. package/dist/string2.cjs.map +1 -0
  170. package/dist/string2.mjs +148 -0
  171. package/dist/string2.mjs.map +1 -0
  172. package/dist/time/from.d.ts +14 -0
  173. package/dist/time/to.d.ts +38 -0
  174. package/dist/time.cjs +82 -0
  175. package/dist/time.cjs.map +1 -0
  176. package/dist/time.d.ts +2 -0
  177. package/dist/time.mjs +82 -0
  178. package/dist/time.mjs.map +1 -0
  179. package/dist/timer.cjs +119 -0
  180. package/dist/timer.cjs.map +1 -0
  181. package/dist/timer.d.ts +96 -0
  182. package/dist/timer.mjs +119 -0
  183. package/dist/timer.mjs.map +1 -0
  184. package/dist/tree.cjs +125 -0
  185. package/dist/tree.cjs.map +1 -0
  186. package/dist/tree.d.ts +210 -0
  187. package/dist/tree.mjs +125 -0
  188. package/dist/tree.mjs.map +1 -0
  189. package/dist/type.cjs +78 -0
  190. package/dist/type.cjs.map +1 -0
  191. package/dist/type.d.ts +121 -0
  192. package/dist/type.mjs +78 -0
  193. package/dist/type.mjs.map +1 -0
  194. package/dist/types.cjs +2 -0
  195. package/dist/types.cjs.map +1 -0
  196. package/dist/types.d.ts +57 -0
  197. package/dist/types.mjs +2 -0
  198. package/dist/types.mjs.map +1 -0
  199. package/dist/unique.cjs +46 -0
  200. package/dist/unique.cjs.map +1 -0
  201. package/dist/unique.d.ts +22 -0
  202. package/dist/unique.mjs +46 -0
  203. package/dist/unique.mjs.map +1 -0
  204. package/dist/url.cjs +37 -0
  205. package/dist/url.cjs.map +1 -0
  206. package/dist/url.d.ts +53 -0
  207. package/dist/url.mjs +37 -0
  208. package/dist/url.mjs.map +1 -0
  209. package/dist/version.cjs +33 -0
  210. package/dist/version.cjs.map +1 -0
  211. package/dist/version.d.ts +32 -0
  212. package/dist/version.mjs +33 -0
  213. package/dist/version.mjs.map +1 -0
  214. package/package.json +1 -8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.mjs","sources":["../src/crypto/md5.mjs","../src/crypto/sha1.mjs","../src/crypto/sha256.mjs","../src/crypto/sha512.mjs","../src/crypto.ts"],"sourcesContent":["/*\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\n\n/*\n * Configurable variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n */\nvar hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */\nvar b64pad = ''; /* base-64 pad character. \"=\" for strict RFC compliance */\n\n/*\n * These are the functions you'll usually want to call\n * They take string arguments and return either hex or base-64 encoded strings\n */\nexport function hex_md5(s) {\n return rstr2hex(rstr_md5(str2rstr_utf8(s)));\n}\nfunction b64_md5(s) {\n return rstr2b64(rstr_md5(str2rstr_utf8(s)));\n}\nfunction any_md5(s, e) {\n return rstr2any(rstr_md5(str2rstr_utf8(s)), e);\n}\nfunction hex_hmac_md5(k, d) {\n return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)));\n}\nfunction b64_hmac_md5(k, d) {\n return rstr2b64(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)));\n}\nfunction any_hmac_md5(k, d, e) {\n return rstr2any(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)), e);\n}\n\n/*\n * Perform a simple self-test to see if the VM is working\n */\nfunction md5_vm_test() {\n return hex_md5('abc').toLowerCase() == '900150983cd24fb0d6963f7d28e17f72';\n}\n\n/*\n * Calculate the MD5 of a raw string\n */\nfunction rstr_md5(s) {\n return binl2rstr(binl_md5(rstr2binl(s), s.length * 8));\n}\n\n/*\n * Calculate the HMAC-MD5, of a key and some data (raw strings)\n */\nfunction rstr_hmac_md5(key, data) {\n var bkey = rstr2binl(key);\n if (bkey.length > 16) bkey = binl_md5(bkey, key.length * 8);\n\n var ipad = Array(16),\n opad = Array(16);\n for (var i = 0; i < 16; i++) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5c5c5c5c;\n }\n\n var hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n return binl2rstr(binl_md5(opad.concat(hash), 512 + 128));\n}\n\n/*\n * Convert a raw string to a hex string\n */\nfunction rstr2hex(input) {\n try {\n hexcase;\n } catch (e) {\n hexcase = 0;\n }\n var hex_tab = hexcase ? '0123456789ABCDEF' : '0123456789abcdef';\n var output = '';\n var x;\n for (var i = 0; i < input.length; i++) {\n x = input.charCodeAt(i);\n output += hex_tab.charAt((x >>> 4) & 0x0f) + hex_tab.charAt(x & 0x0f);\n }\n return output;\n}\n\n/*\n * Convert a raw string to a base-64 string\n */\nfunction rstr2b64(input) {\n try {\n b64pad;\n } catch (e) {\n b64pad = '';\n }\n var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n var output = '';\n var len = input.length;\n for (var i = 0; i < len; i += 3) {\n var triplet =\n (input.charCodeAt(i) << 16) |\n (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) |\n (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (var j = 0; j < 4; j++) {\n if (i * 8 + j * 6 > input.length * 8) output += b64pad;\n else output += tab.charAt((triplet >>> (6 * (3 - j))) & 0x3f);\n }\n }\n return output;\n}\n\n/*\n * Convert a raw string to an arbitrary string encoding\n */\nfunction rstr2any(input, encoding) {\n var divisor = encoding.length;\n var i, j, q, x, quotient;\n\n /* Convert to an array of 16-bit big-endian values, forming the dividend */\n var dividend = Array(Math.ceil(input.length / 2));\n for (i = 0; i < dividend.length; i++) {\n dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\n }\n\n /*\n * Repeatedly perform a long division. The binary array forms the dividend,\n * the length of the encoding is the divisor. Once computed, the quotient\n * forms the dividend for the next step. All remainders are stored for later\n * use.\n */\n var full_length = Math.ceil((input.length * 8) / (Math.log(encoding.length) / Math.log(2)));\n var remainders = Array(full_length);\n for (j = 0; j < full_length; j++) {\n quotient = Array();\n x = 0;\n for (i = 0; i < dividend.length; i++) {\n x = (x << 16) + dividend[i];\n q = Math.floor(x / divisor);\n x -= q * divisor;\n if (quotient.length > 0 || q > 0) quotient[quotient.length] = q;\n }\n remainders[j] = x;\n dividend = quotient;\n }\n\n /* Convert the remainders to the output string */\n var output = '';\n for (i = remainders.length - 1; i >= 0; i--) output += encoding.charAt(remainders[i]);\n\n return output;\n}\n\n/*\n * Encode a string as utf-8.\n * For efficiency, this assumes the input is valid utf-16.\n */\nfunction str2rstr_utf8(input) {\n var output = '';\n var i = -1;\n var x, y;\n\n while (++i < input.length) {\n /* Decode utf-16 surrogate pairs */\n x = input.charCodeAt(i);\n y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;\n if (0xd800 <= x && x <= 0xdbff && 0xdc00 <= y && y <= 0xdfff) {\n x = 0x10000 + ((x & 0x03ff) << 10) + (y & 0x03ff);\n i++;\n }\n\n /* Encode output as utf-8 */\n if (x <= 0x7f) output += String.fromCharCode(x);\n else if (x <= 0x7ff) output += String.fromCharCode(0xc0 | ((x >>> 6) & 0x1f), 0x80 | (x & 0x3f));\n else if (x <= 0xffff)\n output += String.fromCharCode(0xe0 | ((x >>> 12) & 0x0f), 0x80 | ((x >>> 6) & 0x3f), 0x80 | (x & 0x3f));\n else if (x <= 0x1fffff)\n output += String.fromCharCode(\n 0xf0 | ((x >>> 18) & 0x07),\n 0x80 | ((x >>> 12) & 0x3f),\n 0x80 | ((x >>> 6) & 0x3f),\n 0x80 | (x & 0x3f),\n );\n }\n return output;\n}\n\n/*\n * Encode a string as utf-16\n */\nfunction str2rstr_utf16le(input) {\n var output = '';\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode(input.charCodeAt(i) & 0xff, (input.charCodeAt(i) >>> 8) & 0xff);\n return output;\n}\n\nfunction str2rstr_utf16be(input) {\n var output = '';\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xff, input.charCodeAt(i) & 0xff);\n return output;\n}\n\n/*\n * Convert a raw string to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\nfunction rstr2binl(input) {\n var output = Array(input.length >> 2);\n for (var i = 0; i < output.length; i++) output[i] = 0;\n for (var i = 0; i < input.length * 8; i += 8) output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32);\n return output;\n}\n\n/*\n * Convert an array of little-endian words to a string\n */\nfunction binl2rstr(input) {\n var output = '';\n for (var i = 0; i < input.length * 32; i += 8) output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff);\n return output;\n}\n\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\nfunction binl_md5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << (len % 32);\n x[(((len + 64) >>> 9) << 4) + 14] = len;\n\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n\n a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);\n d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);\n\n a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);\n a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);\n\n a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);\n c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);\n\n a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);\n d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);\n\n a = safe_add(a, olda);\n b = safe_add(b, oldb);\n c = safe_add(c, oldc);\n d = safe_add(d, oldd);\n }\n return Array(a, b, c, d);\n}\n\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\nfunction md5_cmn(q, a, b, x, s, t) {\n return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);\n}\nfunction md5_ff(a, b, c, d, x, s, t) {\n return md5_cmn((b & c) | (~b & d), a, b, x, s, t);\n}\nfunction md5_gg(a, b, c, d, x, s, t) {\n return md5_cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\nfunction md5_hh(a, b, c, d, x, s, t) {\n return md5_cmn(b ^ c ^ d, a, b, x, s, t);\n}\nfunction md5_ii(a, b, c, d, x, s, t) {\n return md5_cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\nfunction safe_add(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xffff);\n}\n\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\nfunction bit_rol(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n}\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS 180-1\n * Version 2.2 Copyright Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\n/*\n * Configurable variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n */\nvar hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */\nvar b64pad = \"\"; /* base-64 pad character. \"=\" for strict RFC compliance */\n\n/*\n * These are the functions you'll usually want to call\n * They take string arguments and return either hex or base-64 encoded strings\n */\nexport function hex_sha1(s) { return rstr2hex(rstr_sha1(str2rstr_utf8(s))); }\nfunction b64_sha1(s) { return rstr2b64(rstr_sha1(str2rstr_utf8(s))); }\nfunction any_sha1(s, e) { return rstr2any(rstr_sha1(str2rstr_utf8(s)), e); }\nfunction hex_hmac_sha1(k, d) { return rstr2hex(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction b64_hmac_sha1(k, d) { return rstr2b64(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction any_hmac_sha1(k, d, e) { return rstr2any(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d)), e); }\n\n/*\n * Perform a simple self-test to see if the VM is working\n */\nfunction sha1_vm_test() {\n return hex_sha1(\"abc\").toLowerCase() == \"a9993e364706816aba3e25717850c26c9cd0d89d\";\n}\n\n/*\n * Calculate the SHA1 of a raw string\n */\nfunction rstr_sha1(s) {\n return binb2rstr(binb_sha1(rstr2binb(s), s.length * 8));\n}\n\n/*\n * Calculate the HMAC-SHA1 of a key and some data (raw strings)\n */\nfunction rstr_hmac_sha1(key, data) {\n var bkey = rstr2binb(key);\n if (bkey.length > 16) bkey = binb_sha1(bkey, key.length * 8);\n\n var ipad = Array(16), opad = Array(16);\n for (var i = 0; i < 16; i++) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n\n var hash = binb_sha1(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\n return binb2rstr(binb_sha1(opad.concat(hash), 512 + 160));\n}\n\n/*\n * Convert a raw string to a hex string\n */\nfunction rstr2hex(input) {\n try { hexcase } catch (e) { hexcase = 0; }\n var hex_tab = hexcase ? \"0123456789ABCDEF\" : \"0123456789abcdef\";\n var output = \"\";\n var x;\n for (var i = 0; i < input.length; i++) {\n x = input.charCodeAt(i);\n output += hex_tab.charAt((x >>> 4) & 0x0F)\n + hex_tab.charAt(x & 0x0F);\n }\n return output;\n}\n\n/*\n * Convert a raw string to a base-64 string\n */\nfunction rstr2b64(input) {\n try { b64pad } catch (e) { b64pad = ''; }\n var tab = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var output = \"\";\n var len = input.length;\n for (var i = 0; i < len; i += 3) {\n var triplet = (input.charCodeAt(i) << 16)\n | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0)\n | (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (var j = 0; j < 4; j++) {\n if (i * 8 + j * 6 > input.length * 8) output += b64pad;\n else output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F);\n }\n }\n return output;\n}\n\n/*\n * Convert a raw string to an arbitrary string encoding\n */\nfunction rstr2any(input, encoding) {\n var divisor = encoding.length;\n var remainders = Array();\n var i, q, x, quotient;\n\n /* Convert to an array of 16-bit big-endian values, forming the dividend */\n var dividend = Array(Math.ceil(input.length / 2));\n for (i = 0; i < dividend.length; i++) {\n dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\n }\n\n /*\n * Repeatedly perform a long division. The binary array forms the dividend,\n * the length of the encoding is the divisor. Once computed, the quotient\n * forms the dividend for the next step. We stop when the dividend is zero.\n * All remainders are stored for later use.\n */\n while (dividend.length > 0) {\n quotient = Array();\n x = 0;\n for (i = 0; i < dividend.length; i++) {\n x = (x << 16) + dividend[i];\n q = Math.floor(x / divisor);\n x -= q * divisor;\n if (quotient.length > 0 || q > 0)\n quotient[quotient.length] = q;\n }\n remainders[remainders.length] = x;\n dividend = quotient;\n }\n\n /* Convert the remainders to the output string */\n var output = \"\";\n for (i = remainders.length - 1; i >= 0; i--)\n output += encoding.charAt(remainders[i]);\n\n /* Append leading zero equivalents */\n var full_length = Math.ceil(input.length * 8 /\n (Math.log(encoding.length) / Math.log(2)))\n for (i = output.length; i < full_length; i++)\n output = encoding[0] + output;\n\n return output;\n}\n\n/*\n * Encode a string as utf-8.\n * For efficiency, this assumes the input is valid utf-16.\n */\nfunction str2rstr_utf8(input) {\n var output = \"\";\n var i = -1;\n var x, y;\n\n while (++i < input.length) {\n /* Decode utf-16 surrogate pairs */\n x = input.charCodeAt(i);\n y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;\n if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {\n x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);\n i++;\n }\n\n /* Encode output as utf-8 */\n if (x <= 0x7F)\n output += String.fromCharCode(x);\n else if (x <= 0x7FF)\n output += String.fromCharCode(0xC0 | ((x >>> 6) & 0x1F),\n 0x80 | (x & 0x3F));\n else if (x <= 0xFFFF)\n output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n else if (x <= 0x1FFFFF)\n output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),\n 0x80 | ((x >>> 12) & 0x3F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n }\n return output;\n}\n\n/*\n * Encode a string as utf-16\n */\nfunction str2rstr_utf16le(input) {\n var output = \"\";\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode(input.charCodeAt(i) & 0xFF,\n (input.charCodeAt(i) >>> 8) & 0xFF);\n return output;\n}\n\nfunction str2rstr_utf16be(input) {\n var output = \"\";\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,\n input.charCodeAt(i) & 0xFF);\n return output;\n}\n\n/*\n * Convert a raw string to an array of big-endian words\n * Characters >255 have their high-byte silently ignored.\n */\nfunction rstr2binb(input) {\n var output = Array(input.length >> 2);\n for (var i = 0; i < output.length; i++)\n output[i] = 0;\n for (var i = 0; i < input.length * 8; i += 8)\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);\n return output;\n}\n\n/*\n * Convert an array of big-endian words to a string\n */\nfunction binb2rstr(input) {\n var output = \"\";\n for (var i = 0; i < input.length * 32; i += 8)\n output += String.fromCharCode((input[i >> 5] >>> (24 - i % 32)) & 0xFF);\n return output;\n}\n\n/*\n * Calculate the SHA-1 of an array of big-endian words, and a bit length\n */\nfunction binb_sha1(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << (24 - len % 32);\n x[((len + 64 >> 9) << 4) + 15] = len;\n\n var w = Array(80);\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n var e = -1009589776;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n var olde = e;\n\n for (var j = 0; j < 80; j++) {\n if (j < 16) w[j] = x[i + j];\n else w[j] = bit_rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);\n var t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)),\n safe_add(safe_add(e, w[j]), sha1_kt(j)));\n e = d;\n d = c;\n c = bit_rol(b, 30);\n b = a;\n a = t;\n }\n\n a = safe_add(a, olda);\n b = safe_add(b, oldb);\n c = safe_add(c, oldc);\n d = safe_add(d, oldd);\n e = safe_add(e, olde);\n }\n return Array(a, b, c, d, e);\n\n}\n\n/*\n * Perform the appropriate triplet combination function for the current\n * iteration\n */\nfunction sha1_ft(t, b, c, d) {\n if (t < 20) return (b & c) | ((~b) & d);\n if (t < 40) return b ^ c ^ d;\n if (t < 60) return (b & c) | (b & d) | (c & d);\n return b ^ c ^ d;\n}\n\n/*\n * Determine the appropriate additive constant for the current iteration\n */\nfunction sha1_kt(t) {\n return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :\n (t < 60) ? -1894007588 : -899497514;\n}\n\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\nfunction safe_add(x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n}\n\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\nfunction bit_rol(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n}\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2 Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n * Also http://anmar.eu.org/projects/jssha2/\n */\n\n/*\n * Configurable variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n */\nvar hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */\nvar b64pad = \"\"; /* base-64 pad character. \"=\" for strict RFC compliance */\n\n/*\n * These are the functions you'll usually want to call\n * They take string arguments and return either hex or base-64 encoded strings\n */\nexport function hex_sha256(s) { return rstr2hex(rstr_sha256(str2rstr_utf8(s))); }\nfunction b64_sha256(s) { return rstr2b64(rstr_sha256(str2rstr_utf8(s))); }\nfunction any_sha256(s, e) { return rstr2any(rstr_sha256(str2rstr_utf8(s)), e); }\nfunction hex_hmac_sha256(k, d) { return rstr2hex(rstr_hmac_sha256(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction b64_hmac_sha256(k, d) { return rstr2b64(rstr_hmac_sha256(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction any_hmac_sha256(k, d, e) { return rstr2any(rstr_hmac_sha256(str2rstr_utf8(k), str2rstr_utf8(d)), e); }\n\n/*\n * Perform a simple self-test to see if the VM is working\n */\nfunction sha256_vm_test() {\n return hex_sha256(\"abc\").toLowerCase() ==\n \"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\";\n}\n\n/*\n * Calculate the sha256 of a raw string\n */\nfunction rstr_sha256(s) {\n return binb2rstr(binb_sha256(rstr2binb(s), s.length * 8));\n}\n\n/*\n * Calculate the HMAC-sha256 of a key and some data (raw strings)\n */\nfunction rstr_hmac_sha256(key, data) {\n var bkey = rstr2binb(key);\n if (bkey.length > 16) bkey = binb_sha256(bkey, key.length * 8);\n\n var ipad = Array(16), opad = Array(16);\n for (var i = 0; i < 16; i++) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n\n var hash = binb_sha256(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\n return binb2rstr(binb_sha256(opad.concat(hash), 512 + 256));\n}\n\n/*\n * Convert a raw string to a hex string\n */\nfunction rstr2hex(input) {\n try { hexcase } catch (e) { hexcase = 0; }\n var hex_tab = hexcase ? \"0123456789ABCDEF\" : \"0123456789abcdef\";\n var output = \"\";\n var x;\n for (var i = 0; i < input.length; i++) {\n x = input.charCodeAt(i);\n output += hex_tab.charAt((x >>> 4) & 0x0F)\n + hex_tab.charAt(x & 0x0F);\n }\n return output;\n}\n\n/*\n * Convert a raw string to a base-64 string\n */\nfunction rstr2b64(input) {\n try { b64pad } catch (e) { b64pad = ''; }\n var tab = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var output = \"\";\n var len = input.length;\n for (var i = 0; i < len; i += 3) {\n var triplet = (input.charCodeAt(i) << 16)\n | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0)\n | (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (var j = 0; j < 4; j++) {\n if (i * 8 + j * 6 > input.length * 8) output += b64pad;\n else output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F);\n }\n }\n return output;\n}\n\n/*\n * Convert a raw string to an arbitrary string encoding\n */\nfunction rstr2any(input, encoding) {\n var divisor = encoding.length;\n var remainders = Array();\n var i, q, x, quotient;\n\n /* Convert to an array of 16-bit big-endian values, forming the dividend */\n var dividend = Array(Math.ceil(input.length / 2));\n for (i = 0; i < dividend.length; i++) {\n dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\n }\n\n /*\n * Repeatedly perform a long division. The binary array forms the dividend,\n * the length of the encoding is the divisor. Once computed, the quotient\n * forms the dividend for the next step. We stop when the dividend is zero.\n * All remainders are stored for later use.\n */\n while (dividend.length > 0) {\n quotient = Array();\n x = 0;\n for (i = 0; i < dividend.length; i++) {\n x = (x << 16) + dividend[i];\n q = Math.floor(x / divisor);\n x -= q * divisor;\n if (quotient.length > 0 || q > 0)\n quotient[quotient.length] = q;\n }\n remainders[remainders.length] = x;\n dividend = quotient;\n }\n\n /* Convert the remainders to the output string */\n var output = \"\";\n for (i = remainders.length - 1; i >= 0; i--)\n output += encoding.charAt(remainders[i]);\n\n /* Append leading zero equivalents */\n var full_length = Math.ceil(input.length * 8 /\n (Math.log(encoding.length) / Math.log(2)))\n for (i = output.length; i < full_length; i++)\n output = encoding[0] + output;\n\n return output;\n}\n\n/*\n * Encode a string as utf-8.\n * For efficiency, this assumes the input is valid utf-16.\n */\nfunction str2rstr_utf8(input) {\n var output = \"\";\n var i = -1;\n var x, y;\n\n while (++i < input.length) {\n /* Decode utf-16 surrogate pairs */\n x = input.charCodeAt(i);\n y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;\n if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {\n x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);\n i++;\n }\n\n /* Encode output as utf-8 */\n if (x <= 0x7F)\n output += String.fromCharCode(x);\n else if (x <= 0x7FF)\n output += String.fromCharCode(0xC0 | ((x >>> 6) & 0x1F),\n 0x80 | (x & 0x3F));\n else if (x <= 0xFFFF)\n output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n else if (x <= 0x1FFFFF)\n output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),\n 0x80 | ((x >>> 12) & 0x3F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n }\n return output;\n}\n\n/*\n * Encode a string as utf-16\n */\nfunction str2rstr_utf16le(input) {\n var output = \"\";\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode(input.charCodeAt(i) & 0xFF,\n (input.charCodeAt(i) >>> 8) & 0xFF);\n return output;\n}\n\nfunction str2rstr_utf16be(input) {\n var output = \"\";\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,\n input.charCodeAt(i) & 0xFF);\n return output;\n}\n\n/*\n * Convert a raw string to an array of big-endian words\n * Characters >255 have their high-byte silently ignored.\n */\nfunction rstr2binb(input) {\n var output = Array(input.length >> 2);\n for (var i = 0; i < output.length; i++)\n output[i] = 0;\n for (var i = 0; i < input.length * 8; i += 8)\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);\n return output;\n}\n\n/*\n * Convert an array of big-endian words to a string\n */\nfunction binb2rstr(input) {\n var output = \"\";\n for (var i = 0; i < input.length * 32; i += 8)\n output += String.fromCharCode((input[i >> 5] >>> (24 - i % 32)) & 0xFF);\n return output;\n}\n\n/*\n * Main sha256 function, with its support functions\n */\nfunction sha256_S(X, n) { return (X >>> n) | (X << (32 - n)); }\nfunction sha256_R(X, n) { return (X >>> n); }\nfunction sha256_Ch(x, y, z) { return ((x & y) ^ ((~x) & z)); }\nfunction sha256_Maj(x, y, z) { return ((x & y) ^ (x & z) ^ (y & z)); }\nfunction sha256_Sigma0256(x) { return (sha256_S(x, 2) ^ sha256_S(x, 13) ^ sha256_S(x, 22)); }\nfunction sha256_Sigma1256(x) { return (sha256_S(x, 6) ^ sha256_S(x, 11) ^ sha256_S(x, 25)); }\nfunction sha256_Gamma0256(x) { return (sha256_S(x, 7) ^ sha256_S(x, 18) ^ sha256_R(x, 3)); }\nfunction sha256_Gamma1256(x) { return (sha256_S(x, 17) ^ sha256_S(x, 19) ^ sha256_R(x, 10)); }\nfunction sha256_Sigma0512(x) { return (sha256_S(x, 28) ^ sha256_S(x, 34) ^ sha256_S(x, 39)); }\nfunction sha256_Sigma1512(x) { return (sha256_S(x, 14) ^ sha256_S(x, 18) ^ sha256_S(x, 41)); }\nfunction sha256_Gamma0512(x) { return (sha256_S(x, 1) ^ sha256_S(x, 8) ^ sha256_R(x, 7)); }\nfunction sha256_Gamma1512(x) { return (sha256_S(x, 19) ^ sha256_S(x, 61) ^ sha256_R(x, 6)); }\n\nvar sha256_K = new Array\n (\n 1116352408, 1899447441, -1245643825, -373957723, 961987163, 1508970993,\n -1841331548, -1424204075, -670586216, 310598401, 607225278, 1426881987,\n 1925078388, -2132889090, -1680079193, -1046744716, -459576895, -272742522,\n 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986,\n -1740746414, -1473132947, -1341970488, -1084653625, -958395405, -710438585,\n 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291,\n 1695183700, 1986661051, -2117940946, -1838011259, -1564481375, -1474664885,\n -1035236496, -949202525, -778901479, -694614492, -200395387, 275423344,\n 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218,\n 1537002063, 1747873779, 1955562222, 2024104815, -2067236844, -1933114872,\n -1866530822, -1538233109, -1090935817, -965641998\n );\n\nfunction binb_sha256(m, l) {\n var HASH = new Array(1779033703, -1150833019, 1013904242, -1521486534,\n 1359893119, -1694144372, 528734635, 1541459225);\n var W = new Array(64);\n var a, b, c, d, e, f, g, h;\n var i, j, T1, T2;\n\n /* append padding */\n m[l >> 5] |= 0x80 << (24 - l % 32);\n m[((l + 64 >> 9) << 4) + 15] = l;\n\n for (i = 0; i < m.length; i += 16) {\n a = HASH[0];\n b = HASH[1];\n c = HASH[2];\n d = HASH[3];\n e = HASH[4];\n f = HASH[5];\n g = HASH[6];\n h = HASH[7];\n\n for (j = 0; j < 64; j++) {\n if (j < 16) W[j] = m[j + i];\n else W[j] = safe_add(safe_add(safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]),\n sha256_Gamma0256(W[j - 15])), W[j - 16]);\n\n T1 = safe_add(safe_add(safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)),\n sha256_K[j]), W[j]);\n T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c));\n h = g;\n g = f;\n f = e;\n e = safe_add(d, T1);\n d = c;\n c = b;\n b = a;\n a = safe_add(T1, T2);\n }\n\n HASH[0] = safe_add(a, HASH[0]);\n HASH[1] = safe_add(b, HASH[1]);\n HASH[2] = safe_add(c, HASH[2]);\n HASH[3] = safe_add(d, HASH[3]);\n HASH[4] = safe_add(e, HASH[4]);\n HASH[5] = safe_add(f, HASH[5]);\n HASH[6] = safe_add(g, HASH[6]);\n HASH[7] = safe_add(h, HASH[7]);\n }\n return HASH;\n}\n\nfunction safe_add(x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n}\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-512, as defined\n * in FIPS 180-2\n * Version 2.2 Copyright Anonymous Contributor, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\n/*\n * Configurable variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n */\nvar hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */\nvar b64pad = \"\"; /* base-64 pad character. \"=\" for strict RFC compliance */\n\n/*\n * These are the functions you'll usually want to call\n * They take string arguments and return either hex or base-64 encoded strings\n */\nexport function hex_sha512(s) { return rstr2hex(rstr_sha512(str2rstr_utf8(s))); }\nfunction b64_sha512(s) { return rstr2b64(rstr_sha512(str2rstr_utf8(s))); }\nfunction any_sha512(s, e) { return rstr2any(rstr_sha512(str2rstr_utf8(s)), e); }\nfunction hex_hmac_sha512(k, d) { return rstr2hex(rstr_hmac_sha512(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction b64_hmac_sha512(k, d) { return rstr2b64(rstr_hmac_sha512(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction any_hmac_sha512(k, d, e) { return rstr2any(rstr_hmac_sha512(str2rstr_utf8(k), str2rstr_utf8(d)), e); }\n\n/*\n * Perform a simple self-test to see if the VM is working\n */\nfunction sha512_vm_test() {\n return hex_sha512(\"abc\").toLowerCase() ==\n \"ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a\" +\n \"2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f\";\n}\n\n/*\n * Calculate the SHA-512 of a raw string\n */\nfunction rstr_sha512(s) {\n return binb2rstr(binb_sha512(rstr2binb(s), s.length * 8));\n}\n\n/*\n * Calculate the HMAC-SHA-512 of a key and some data (raw strings)\n */\nfunction rstr_hmac_sha512(key, data) {\n var bkey = rstr2binb(key);\n if (bkey.length > 32) bkey = binb_sha512(bkey, key.length * 8);\n\n var ipad = Array(32), opad = Array(32);\n for (var i = 0; i < 32; i++) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n\n var hash = binb_sha512(ipad.concat(rstr2binb(data)), 1024 + data.length * 8);\n return binb2rstr(binb_sha512(opad.concat(hash), 1024 + 512));\n}\n\n/*\n * Convert a raw string to a hex string\n */\nfunction rstr2hex(input) {\n try { hexcase } catch (e) { hexcase = 0; }\n var hex_tab = hexcase ? \"0123456789ABCDEF\" : \"0123456789abcdef\";\n var output = \"\";\n var x;\n for (var i = 0; i < input.length; i++) {\n x = input.charCodeAt(i);\n output += hex_tab.charAt((x >>> 4) & 0x0F)\n + hex_tab.charAt(x & 0x0F);\n }\n return output;\n}\n\n/*\n * Convert a raw string to a base-64 string\n */\nfunction rstr2b64(input) {\n try { b64pad } catch (e) { b64pad = ''; }\n var tab = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var output = \"\";\n var len = input.length;\n for (var i = 0; i < len; i += 3) {\n var triplet = (input.charCodeAt(i) << 16)\n | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0)\n | (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (var j = 0; j < 4; j++) {\n if (i * 8 + j * 6 > input.length * 8) output += b64pad;\n else output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F);\n }\n }\n return output;\n}\n\n/*\n * Convert a raw string to an arbitrary string encoding\n */\nfunction rstr2any(input, encoding) {\n var divisor = encoding.length;\n var i, j, q, x, quotient;\n\n /* Convert to an array of 16-bit big-endian values, forming the dividend */\n var dividend = Array(Math.ceil(input.length / 2));\n for (i = 0; i < dividend.length; i++) {\n dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\n }\n\n /*\n * Repeatedly perform a long division. The binary array forms the dividend,\n * the length of the encoding is the divisor. Once computed, the quotient\n * forms the dividend for the next step. All remainders are stored for later\n * use.\n */\n var full_length = Math.ceil(input.length * 8 /\n (Math.log(encoding.length) / Math.log(2)));\n var remainders = Array(full_length);\n for (j = 0; j < full_length; j++) {\n quotient = Array();\n x = 0;\n for (i = 0; i < dividend.length; i++) {\n x = (x << 16) + dividend[i];\n q = Math.floor(x / divisor);\n x -= q * divisor;\n if (quotient.length > 0 || q > 0)\n quotient[quotient.length] = q;\n }\n remainders[j] = x;\n dividend = quotient;\n }\n\n /* Convert the remainders to the output string */\n var output = \"\";\n for (i = remainders.length - 1; i >= 0; i--)\n output += encoding.charAt(remainders[i]);\n\n return output;\n}\n\n/*\n * Encode a string as utf-8.\n * For efficiency, this assumes the input is valid utf-16.\n */\nfunction str2rstr_utf8(input) {\n var output = \"\";\n var i = -1;\n var x, y;\n\n while (++i < input.length) {\n /* Decode utf-16 surrogate pairs */\n x = input.charCodeAt(i);\n y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;\n if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {\n x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);\n i++;\n }\n\n /* Encode output as utf-8 */\n if (x <= 0x7F)\n output += String.fromCharCode(x);\n else if (x <= 0x7FF)\n output += String.fromCharCode(0xC0 | ((x >>> 6) & 0x1F),\n 0x80 | (x & 0x3F));\n else if (x <= 0xFFFF)\n output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n else if (x <= 0x1FFFFF)\n output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),\n 0x80 | ((x >>> 12) & 0x3F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n }\n return output;\n}\n\n/*\n * Encode a string as utf-16\n */\nfunction str2rstr_utf16le(input) {\n var output = \"\";\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode(input.charCodeAt(i) & 0xFF,\n (input.charCodeAt(i) >>> 8) & 0xFF);\n return output;\n}\n\nfunction str2rstr_utf16be(input) {\n var output = \"\";\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,\n input.charCodeAt(i) & 0xFF);\n return output;\n}\n\n/*\n * Convert a raw string to an array of big-endian words\n * Characters >255 have their high-byte silently ignored.\n */\nfunction rstr2binb(input) {\n var output = Array(input.length >> 2);\n for (var i = 0; i < output.length; i++)\n output[i] = 0;\n for (var i = 0; i < input.length * 8; i += 8)\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);\n return output;\n}\n\n/*\n * Convert an array of big-endian words to a string\n */\nfunction binb2rstr(input) {\n var output = \"\";\n for (var i = 0; i < input.length * 32; i += 8)\n output += String.fromCharCode((input[i >> 5] >>> (24 - i % 32)) & 0xFF);\n return output;\n}\n\n/*\n * Calculate the SHA-512 of an array of big-endian dwords, and a bit length\n */\nvar sha512_k;\nfunction binb_sha512(x, len) {\n if (sha512_k == undefined) {\n //SHA512 constants\n sha512_k = new Array(\n new int64(0x428a2f98, -685199838), new int64(0x71374491, 0x23ef65cd),\n new int64(-1245643825, -330482897), new int64(-373957723, -2121671748),\n new int64(0x3956c25b, -213338824), new int64(0x59f111f1, -1241133031),\n new int64(-1841331548, -1357295717), new int64(-1424204075, -630357736),\n new int64(-670586216, -1560083902), new int64(0x12835b01, 0x45706fbe),\n new int64(0x243185be, 0x4ee4b28c), new int64(0x550c7dc3, -704662302),\n new int64(0x72be5d74, -226784913), new int64(-2132889090, 0x3b1696b1),\n new int64(-1680079193, 0x25c71235), new int64(-1046744716, -815192428),\n new int64(-459576895, -1628353838), new int64(-272742522, 0x384f25e3),\n new int64(0xfc19dc6, -1953704523), new int64(0x240ca1cc, 0x77ac9c65),\n new int64(0x2de92c6f, 0x592b0275), new int64(0x4a7484aa, 0x6ea6e483),\n new int64(0x5cb0a9dc, -1119749164), new int64(0x76f988da, -2096016459),\n new int64(-1740746414, -295247957), new int64(-1473132947, 0x2db43210),\n new int64(-1341970488, -1728372417), new int64(-1084653625, -1091629340),\n new int64(-958395405, 0x3da88fc2), new int64(-710438585, -1828018395),\n new int64(0x6ca6351, -536640913), new int64(0x14292967, 0xa0e6e70),\n new int64(0x27b70a85, 0x46d22ffc), new int64(0x2e1b2138, 0x5c26c926),\n new int64(0x4d2c6dfc, 0x5ac42aed), new int64(0x53380d13, -1651133473),\n new int64(0x650a7354, -1951439906), new int64(0x766a0abb, 0x3c77b2a8),\n new int64(-2117940946, 0x47edaee6), new int64(-1838011259, 0x1482353b),\n new int64(-1564481375, 0x4cf10364), new int64(-1474664885, -1136513023),\n new int64(-1035236496, -789014639), new int64(-949202525, 0x654be30),\n new int64(-778901479, -688958952), new int64(-694614492, 0x5565a910),\n new int64(-200395387, 0x5771202a), new int64(0x106aa070, 0x32bbd1b8),\n new int64(0x19a4c116, -1194143544), new int64(0x1e376c08, 0x5141ab53),\n new int64(0x2748774c, -544281703), new int64(0x34b0bcb5, -509917016),\n new int64(0x391c0cb3, -976659869), new int64(0x4ed8aa4a, -482243893),\n new int64(0x5b9cca4f, 0x7763e373), new int64(0x682e6ff3, -692930397),\n new int64(0x748f82ee, 0x5defb2fc), new int64(0x78a5636f, 0x43172f60),\n new int64(-2067236844, -1578062990), new int64(-1933114872, 0x1a6439ec),\n new int64(-1866530822, 0x23631e28), new int64(-1538233109, -561857047),\n new int64(-1090935817, -1295615723), new int64(-965641998, -479046869),\n new int64(-903397682, -366583396), new int64(-779700025, 0x21c0c207),\n new int64(-354779690, -840897762), new int64(-176337025, -294727304),\n new int64(0x6f067aa, 0x72176fba), new int64(0xa637dc5, -1563912026),\n new int64(0x113f9804, -1090974290), new int64(0x1b710b35, 0x131c471b),\n new int64(0x28db77f5, 0x23047d84), new int64(0x32caab7b, 0x40c72493),\n new int64(0x3c9ebe0a, 0x15c9bebc), new int64(0x431d67c4, -1676669620),\n new int64(0x4cc5d4be, -885112138), new int64(0x597f299c, -60457430),\n new int64(0x5fcb6fab, 0x3ad6faec), new int64(0x6c44198c, 0x4a475817));\n }\n\n //Initial hash values\n var H = new Array(\n new int64(0x6a09e667, -205731576),\n new int64(-1150833019, -2067093701),\n new int64(0x3c6ef372, -23791573),\n new int64(-1521486534, 0x5f1d36f1),\n new int64(0x510e527f, -1377402159),\n new int64(-1694144372, 0x2b3e6c1f),\n new int64(0x1f83d9ab, -79577749),\n new int64(0x5be0cd19, 0x137e2179));\n\n var T1 = new int64(0, 0),\n T2 = new int64(0, 0),\n a = new int64(0, 0),\n b = new int64(0, 0),\n c = new int64(0, 0),\n d = new int64(0, 0),\n e = new int64(0, 0),\n f = new int64(0, 0),\n g = new int64(0, 0),\n h = new int64(0, 0),\n //Temporary variables not specified by the document\n s0 = new int64(0, 0),\n s1 = new int64(0, 0),\n Ch = new int64(0, 0),\n Maj = new int64(0, 0),\n r1 = new int64(0, 0),\n r2 = new int64(0, 0),\n r3 = new int64(0, 0);\n var j, i;\n var W = new Array(80);\n for (i = 0; i < 80; i++)\n W[i] = new int64(0, 0);\n\n // append padding to the source string. The format is described in the FIPS.\n x[len >> 5] |= 0x80 << (24 - (len & 0x1f));\n x[((len + 128 >> 10) << 5) + 31] = len;\n\n for (i = 0; i < x.length; i += 32) //32 dwords is the block size\n {\n int64copy(a, H[0]);\n int64copy(b, H[1]);\n int64copy(c, H[2]);\n int64copy(d, H[3]);\n int64copy(e, H[4]);\n int64copy(f, H[5]);\n int64copy(g, H[6]);\n int64copy(h, H[7]);\n\n for (j = 0; j < 16; j++) {\n W[j].h = x[i + 2 * j];\n W[j].l = x[i + 2 * j + 1];\n }\n\n for (j = 16; j < 80; j++) {\n //sigma1\n int64rrot(r1, W[j - 2], 19);\n int64revrrot(r2, W[j - 2], 29);\n int64shr(r3, W[j - 2], 6);\n s1.l = r1.l ^ r2.l ^ r3.l;\n s1.h = r1.h ^ r2.h ^ r3.h;\n //sigma0\n int64rrot(r1, W[j - 15], 1);\n int64rrot(r2, W[j - 15], 8);\n int64shr(r3, W[j - 15], 7);\n s0.l = r1.l ^ r2.l ^ r3.l;\n s0.h = r1.h ^ r2.h ^ r3.h;\n\n int64add4(W[j], s1, W[j - 7], s0, W[j - 16]);\n }\n\n for (j = 0; j < 80; j++) {\n //Ch\n Ch.l = (e.l & f.l) ^ (~e.l & g.l);\n Ch.h = (e.h & f.h) ^ (~e.h & g.h);\n\n //Sigma1\n int64rrot(r1, e, 14);\n int64rrot(r2, e, 18);\n int64revrrot(r3, e, 9);\n s1.l = r1.l ^ r2.l ^ r3.l;\n s1.h = r1.h ^ r2.h ^ r3.h;\n\n //Sigma0\n int64rrot(r1, a, 28);\n int64revrrot(r2, a, 2);\n int64revrrot(r3, a, 7);\n s0.l = r1.l ^ r2.l ^ r3.l;\n s0.h = r1.h ^ r2.h ^ r3.h;\n\n //Maj\n Maj.l = (a.l & b.l) ^ (a.l & c.l) ^ (b.l & c.l);\n Maj.h = (a.h & b.h) ^ (a.h & c.h) ^ (b.h & c.h);\n\n int64add5(T1, h, s1, Ch, sha512_k[j], W[j]);\n int64add(T2, s0, Maj);\n\n int64copy(h, g);\n int64copy(g, f);\n int64copy(f, e);\n int64add(e, d, T1);\n int64copy(d, c);\n int64copy(c, b);\n int64copy(b, a);\n int64add(a, T1, T2);\n }\n int64add(H[0], H[0], a);\n int64add(H[1], H[1], b);\n int64add(H[2], H[2], c);\n int64add(H[3], H[3], d);\n int64add(H[4], H[4], e);\n int64add(H[5], H[5], f);\n int64add(H[6], H[6], g);\n int64add(H[7], H[7], h);\n }\n\n //represent the hash as an array of 32-bit dwords\n var hash = new Array(16);\n for (i = 0; i < 8; i++) {\n hash[2 * i] = H[i].h;\n hash[2 * i + 1] = H[i].l;\n }\n return hash;\n}\n\n//A constructor for 64-bit numbers\nfunction int64(h, l) {\n this.h = h;\n this.l = l;\n //this.toString = int64toString;\n}\n\n//Copies src into dst, assuming both are 64-bit numbers\nfunction int64copy(dst, src) {\n dst.h = src.h;\n dst.l = src.l;\n}\n\n//Right-rotates a 64-bit number by shift\n//Won't handle cases of shift>=32\n//The function revrrot() is for that\nfunction int64rrot(dst, x, shift) {\n dst.l = (x.l >>> shift) | (x.h << (32 - shift));\n dst.h = (x.h >>> shift) | (x.l << (32 - shift));\n}\n\n//Reverses the dwords of the source and then rotates right by shift.\n//This is equivalent to rotation by 32+shift\nfunction int64revrrot(dst, x, shift) {\n dst.l = (x.h >>> shift) | (x.l << (32 - shift));\n dst.h = (x.l >>> shift) | (x.h << (32 - shift));\n}\n\n//Bitwise-shifts right a 64-bit number by shift\n//Won't handle shift>=32, but it's never needed in SHA512\nfunction int64shr(dst, x, shift) {\n dst.l = (x.l >>> shift) | (x.h << (32 - shift));\n dst.h = (x.h >>> shift);\n}\n\n//Adds two 64-bit numbers\n//Like the original implementation, does not rely on 32-bit operations\nfunction int64add(dst, x, y) {\n var w0 = (x.l & 0xffff) + (y.l & 0xffff);\n var w1 = (x.l >>> 16) + (y.l >>> 16) + (w0 >>> 16);\n var w2 = (x.h & 0xffff) + (y.h & 0xffff) + (w1 >>> 16);\n var w3 = (x.h >>> 16) + (y.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n}\n\n//Same, except with 4 addends. Works faster than adding them one by one.\nfunction int64add4(dst, a, b, c, d) {\n var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff);\n var w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (w0 >>> 16);\n var w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (w1 >>> 16);\n var w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n}\n\n//Same, except with 5 addends\nfunction int64add5(dst, a, b, c, d, e) {\n var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff) + (e.l & 0xffff);\n var w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (e.l >>> 16) + (w0 >>> 16);\n var w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (e.h & 0xffff) + (w1 >>> 16);\n var w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (e.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n}\n","import { hex_md5 } from './crypto/md5.mjs';\nimport { hex_sha1 } from './crypto/sha1.mjs';\nimport { hex_sha256 } from './crypto/sha256.mjs';\nimport { hex_sha512 } from './crypto/sha512.mjs';\n\n/**\n * 计算字符串的 MD5 哈希值\n * @param input - 需要计算哈希值的字符串\n * @returns 返回 32 个字符的十六进制 MD5 哈希值\n * @example\n * ```typescript\n * const hash = md5String('hello world');\n * console.log(hash); // '5eb63bbbe01eeed093cb22bb8f5acdc3'\n * ```\n */\nexport function md5String(input: string): string {\n return hex_md5(input);\n}\n\n/**\n * 计算字符串的 SHA1 哈希值\n * @param input - 需要计算哈希值的字符串\n * @returns 返回 40 个字符的十六进制 SHA1 哈希值\n * @example\n * ```typescript\n * const hash = sha1String('hello world');\n * console.log(hash); // '2aae6c35c94fcfb415dbe95f408b9ce91ee846ed'\n * ```\n */\nexport function sha1String(input: string): string {\n return hex_sha1(input);\n}\n\n/**\n * 计算字符串的 SHA256 哈希值\n * @param input - 需要计算哈希值的字符串\n * @returns 返回 64 个字符的十六进制 SHA256 哈希值\n * @example\n * ```typescript\n * const hash = sha256String('hello world');\n * console.log(hash); // 'b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9'\n * ```\n */\nexport function sha256String(input: string): string {\n return hex_sha256(input);\n}\n\n/**\n * 计算字符串的 SHA512 哈希值\n * @param input - 需要计算哈希值的字符串\n * @returns 返回 128 个字符的十六进制 SHA512 哈希值\n * @example\n * ```typescript\n * const hash = sha512String('hello world');\n * console.log(hash); // '309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f'\n * ```\n */\nexport function sha512String(input: string): string {\n return hex_sha512(input);\n}\n"],"names":["hexcase","rstr2hex","str2rstr_utf8","safe_add","bit_rol","binb2rstr","rstr2binb"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare const DATE_SECOND_MS = 1000;
2
+ export declare const DATE_MINUTE_MS: number;
3
+ export declare const DATE_HOUR_MS: number;
4
+ export declare const DATE_DAY_MS: number;
5
+ export declare const DATE_MONTH_MS: number;
6
+ export declare const DATE_YEAR_MS: number;
@@ -0,0 +1,52 @@
1
+ import { TzDate } from './timezone';
2
+ /**
3
+ * 判断一个值是否为有效的日期对象
4
+ * @param unknown - 需要判断的值
5
+ * @returns 如果值是有效的日期对象则返回 true,否则返回 false
6
+ * @example
7
+ * ```typescript
8
+ * isValidDate(new Date()); // true
9
+ * isValidDate('2023-01-01'); // false
10
+ * isValidDate(NaN); // false
11
+ * ```
12
+ */
13
+ export declare function isValidDate(unknown: unknown): unknown is Date | TzDate;
14
+ export type TDateLike = Date | TzDate;
15
+ export type TDateValue = number | string | TDateLike;
16
+ /**
17
+ * 解析为Date对象
18
+ * @param dateValue - 可以是数值、字符串或 Date 对象
19
+ * @returns 解析后的 Date 对象
20
+ * @throws {SyntaxError} 如果无法解析为有效的日期对象,则抛出错误
21
+ * @example
22
+ * ```typescript
23
+ * dateParse('2023-01-01'); // Date对象
24
+ * dateParse(1672531200000); // Date对象
25
+ * dateParse(new Date()); // Date对象
26
+ * dateParse('invalid date'); // 抛出 SyntaxError
27
+ * ```
28
+ */
29
+ export declare function dateParse(dateValue: TDateValue): TDateLike;
30
+ /**
31
+ * 格式化为日期字符串(带自定义格式化模板)
32
+ * @param dateValue - 可以是数值、字符串或 Date 对象
33
+ * @param format - 模板,默认是 'YYYY-MM-DD HH:mm:ss',模板字符:
34
+ * - YYYY:年
35
+ * - yyyy: 年
36
+ * - MM:月
37
+ * - DD:日
38
+ * - dd: 日
39
+ * - HH:时(24 小时制)
40
+ * - hh:时(12 小时制)
41
+ * - mm:分
42
+ * - ss:秒
43
+ * - SSS:毫秒
44
+ * @returns 格式化后的日期字符串
45
+ * @example
46
+ * ```typescript
47
+ * dateFormat(new Date(), 'YYYY-MM-DD'); // '2023-01-01'
48
+ * dateFormat(1672531200000, 'YYYY/MM/DD HH:mm:ss'); // '2023/01/01 00:00:00'
49
+ * dateFormat('2023-01-01', 'YYYY年MM月DD日'); // '2023年01月01日'
50
+ * ```
51
+ */
52
+ export declare function dateFormat(dateValue: TDateValue, format?: string): string;
@@ -0,0 +1,23 @@
1
+ import { TDateValue } from './core';
2
+ /**
3
+ * 计算指定日期所在月份的天数
4
+ * @param dateValue - 可以是数值、字符串或 Date 对象
5
+ * @returns 返回指定日期所在月份的天数
6
+ * @example
7
+ * ```typescript
8
+ * dateDaysInMonth(new Date('2023-02-15')); // 28
9
+ * dateDaysInMonth(new Date('2024-02-15')); // 29 (闰年)
10
+ * ```
11
+ */
12
+ export declare function dateDaysInMonth(dateValue: TDateValue): number;
13
+ /**
14
+ * 计算指定日期所在年份的天数
15
+ * @param dateValue - 可以是数值、字符串或 Date 对象
16
+ * @returns 返回指定日期所在年份的天数
17
+ * @example
18
+ * ```typescript
19
+ * dateDaysInYear(new Date('2023-02-15')); // 365
20
+ * dateDaysInYear(new Date('2024-02-15')); // 366 (闰年)
21
+ * ```
22
+ */
23
+ export declare function dateDaysInYear(dateValue: TDateValue): number;
@@ -0,0 +1,92 @@
1
+ import { TDateValue } from './core';
2
+ /**
3
+ * 判断给定的年份是否为闰年
4
+ * @param year - 需要判断的年份
5
+ * @returns 如果年份是闰年则返回 true,否则返回 false
6
+ * @example
7
+ * ```typescript
8
+ * isLeapYear(2020); // true
9
+ * isLeapYear(2021); // false
10
+ * isLeapYear(2000); // true
11
+ * isLeapYear(1900); // false
12
+ * ```
13
+ */
14
+ export declare function isLeapYear(year: number): boolean;
15
+ /**
16
+ * 比较两个日期的年份是否相同
17
+ * @param date1 - 第一个日期,可以是数值、字符串或 Date 对象
18
+ * @param date2 - 第二个日期,可以是数值、字符串或 Date 对象
19
+ * @returns 如果两个日期的年份相同则返回 true,否则返回 false
20
+ * @example
21
+ * ```typescript
22
+ * const date1 = new Date(2023, 5, 15);
23
+ * const date2 = new Date(2023, 6, 20);
24
+ * isSameDateInYear(date1, date2); // true
25
+ * ```
26
+ */
27
+ export declare function isSameDateInYear(date1: TDateValue, date2: TDateValue): boolean;
28
+ /**
29
+ * 比较两个日期的年份和月份是否相同
30
+ * @param date1 - 第一个日期,可以是数值、字符串或 Date 对象
31
+ * @param date2 - 第二个日期,可以是数值、字符串或 Date 对象
32
+ * @returns 如果两个日期的年份和月份相同则返回 true,否则返回 false
33
+ * @example
34
+ * ```typescript
35
+ * const date1 = new Date(2023, 5, 15);
36
+ * const date2 = new Date(2023, 5, 20);
37
+ * isSameDateInMonth(date1, date2); // true
38
+ * ```
39
+ */
40
+ export declare function isSameDateInMonth(date1: TDateValue, date2: TDateValue): boolean;
41
+ /**
42
+ * 比较两个日期的年份、月份和天数是否相同
43
+ * @param date1 - 第一个日期,可以是数值、字符串或 Date 对象
44
+ * @param date2 - 第二个日期,可以是数值、字符串或 Date 对象
45
+ * @returns 如果两个日期的年份、月份和天数相同则返回 true,否则返回 false
46
+ * @example
47
+ * ```typescript
48
+ * const date1 = new Date(2023, 5, 15);
49
+ * const date2 = new Date(2023, 5, 15);
50
+ * isSameDateInDay(date1, date2); // true
51
+ * ```
52
+ */
53
+ export declare function isSameDateInDay(date1: TDateValue, date2: TDateValue): boolean;
54
+ /**
55
+ * 比较两个日期的年份、月份、天数和小时是否相同
56
+ * @param date1 - 第一个日期,可以是数值、字符串或 Date 对象
57
+ * @param date2 - 第二个日期,可以是数值、字符串或 Date 对象
58
+ * @returns 如果两个日期的年份、月份、天数和小时相同则返回 true,否则返回 false
59
+ * @example
60
+ * ```typescript
61
+ * const date1 = new Date(2023, 5, 15, 12);
62
+ * const date2 = new Date(2023, 5, 15, 12);
63
+ * isSameDateInHour(date1, date2); // true
64
+ * ```
65
+ */
66
+ export declare function isSameDateInHour(date1: TDateValue, date2: TDateValue): boolean;
67
+ /**
68
+ * 比较两个日期的年份、月份、天数、小时和分钟是否相同
69
+ * @param date1 - 第一个日期,可以是数值、字符串或 Date 对象
70
+ * @param date2 - 第二个日期,可以是数值、字符串或 Date 对象
71
+ * @returns 如果两个日期的年份、月份、天数、小时和分钟相同则返回 true,否则返回 false
72
+ * @example
73
+ * ```typescript
74
+ * const date1 = new Date(2023, 5, 15, 12, 30);
75
+ * const date2 = new Date(2023, 5, 15, 12, 30);
76
+ * isSameDateInMinute(date1, date2); // true
77
+ * ```
78
+ */
79
+ export declare function isSameDateInMinute(date1: TDateValue, date2: TDateValue): boolean;
80
+ /**
81
+ * 比较两个日期的年份、月份、天数、小时、分钟和秒数是否相同
82
+ * @param date1 - 第一个日期,可以是数值、字符串或 Date 对象
83
+ * @param date2 - 第二个日期,可以是数值、字符串或 Date 对象
84
+ * @returns 如果两个日期的年份、月份、天数、小时、分钟和秒数相同则返回 true,否则返回 false
85
+ * @example
86
+ * ```typescript
87
+ * const date1 = new Date(2023, 5, 15, 12, 30, 45);
88
+ * const date2 = new Date(2023, 5, 15, 12, 30, 45);
89
+ * isSameDateInSecond(date1, date2); // true
90
+ * ```
91
+ */
92
+ export declare function isSameDateInSecond(date1: TDateValue, date2: TDateValue): boolean;
@@ -0,0 +1,44 @@
1
+ import { TDateValue } from './core';
2
+ export type TDateRelativeTemplate = [
3
+ number,
4
+ number,
5
+ string,
6
+ string?
7
+ ];
8
+ export type TDateRelativeTemplates = TDateRelativeTemplate[];
9
+ /**
10
+ * 相对时间
11
+ * @param {TDateValue} dateValue 比较的时间
12
+ * @param {TDateValue} [refDateValue] 相对的时间,默认为当前
13
+ * @param {TDateRelativeTemplates} [templates] 模板
14
+ * @returns {string} 格式化后的相对时间字符串
15
+ * @example
16
+ * ```typescript
17
+ * // 默认模板
18
+ * dateRelative(new Date('2023-01-01')); // '刚刚'
19
+ * dateRelative(new Date('2023-01-01'), new Date('2023-01-02')); // '昨天'
20
+ * dateRelative(new Date('2023-01-01'), new Date('2023-01-04')); // '3 天前'
21
+ * dateRelative(new Date('2023-01-01'), new Date('2023-02-01')); // '2023年01月01日'
22
+ * ```
23
+ * @example
24
+ * ```typescript
25
+ * // 自定义模板
26
+ * const templates: DateRelativeTemplates = [
27
+ * [0, 10, '刚刚'],
28
+ * [1, 60, '{n} 秒前', '{n} 秒后'],
29
+ * [60, 60 * 60, '{n} 分钟前', '{n} 分钟后'],
30
+ * [60 * 60, 60 * 60 * 24, '{n} 小时前', '{n} 小时后'],
31
+ * [0, 60 * 60 * 24 * 2, '昨天', '明天'],
32
+ * [0, 60 * 60 * 24 * 3, '前天', '后天'],
33
+ * [60 * 60 * 24, 60 * 60 * 24 * 30, '{n} 天前', '{n} 天后'],
34
+ * [0, Number.POSITIVE_INFINITY, 'YYYY年MM月DD日'],
35
+ * ];
36
+ * dateRelative(new Date('2023-01-01'), new Date('2023-01-02'), templates); // '昨天'
37
+ * dateRelative(new Date('2023-01-01'), new Date('2023-01-04'), templates); // '3 天前'
38
+ * dateRelative(new Date('2023-01-01'), new Date('2023-02-01'), templates); // '2023年01月01日'
39
+ * ```
40
+ */
41
+ export declare function dateRelative(dateValue: TDateValue, refDateValue: TDateValue, templates: TDateRelativeTemplates): string;
42
+ export declare function dateRelative(dateValue: TDateValue, refDateValue: TDateValue): string;
43
+ export declare function dateRelative(dateValue: TDateValue, templates: TDateRelativeTemplates): string;
44
+ export declare function dateRelative(dateValue: TDateValue): string;
@@ -0,0 +1,73 @@
1
+ import { TDateLike, TDateValue } from './core';
2
+ /**
3
+ * 返回秒级起始时间
4
+ * @param dateValue - 可以是数值、字符串或 Date 对象
5
+ * @returns 返回秒级起始时间,毫秒部分为 0
6
+ */
7
+ export declare function dateStartInSecond(dateValue: TDateValue): TDateLike;
8
+ /**
9
+ * 返回分钟级起始时间
10
+ * @param dateValue - 可以是数值、字符串或 Date 对象
11
+ * @returns 返回分钟级起始时间,秒和毫秒部分为 0
12
+ */
13
+ export declare function dateStartInMinute(dateValue: TDateValue): TDateLike;
14
+ /**
15
+ * 返回小时级起始时间
16
+ * @param dateValue - 可以是数值、字符串或 Date 对象
17
+ * @returns 返回小时级起始时间,分钟、秒和毫秒部分为 0
18
+ */
19
+ export declare function dateStartInHour(dateValue: TDateValue): TDateLike;
20
+ /**
21
+ * 返回天级起始时间
22
+ * @param dateValue - 可以是数值、字符串或 Date 对象
23
+ * @returns 返回天级起始时间,小时、分钟、秒和毫秒部分为 0
24
+ */
25
+ export declare function dateStartInDay(dateValue: TDateValue): TDateLike;
26
+ /**
27
+ * 返回月级起始时间
28
+ * @param dateValue - 可以是数值、字符串或 Date 对象
29
+ * @returns 返回月级起始时间,日期为当月第一天,时间部分为 0
30
+ */
31
+ export declare function dateStartInMonth(dateValue: TDateValue): TDateLike;
32
+ /**
33
+ * 返回年级起始时间
34
+ * @param dateValue - 可以是数值、字符串或 Date 对象
35
+ * @returns 返回年级起始时间,月份为 1 月,日期为 1 日,时间部分为 0
36
+ */
37
+ export declare function dateStartInYear(dateValue: TDateValue): TDateLike;
38
+ /**
39
+ * 返回秒级结束时间
40
+ * @param dateValue - 可以是数值、字符串或 Date 对象
41
+ * @returns 返回秒级结束时间,毫秒部分为 999
42
+ */
43
+ export declare function dateEndInSecond(dateValue: TDateValue): TDateLike;
44
+ /**
45
+ * 返回分钟级结束时间
46
+ * @param dateValue - 可以是数值、字符串或 Date 对象
47
+ * @returns 返回分钟级结束时间,秒为 59,毫秒为 999
48
+ */
49
+ export declare function dateEndInMinute(dateValue: TDateValue): TDateLike;
50
+ /**
51
+ * 返回小时级结束时间
52
+ * @param dateValue - 可以是数值、字符串或 Date 对象
53
+ * @returns 返回小时级结束时间,分钟为 59,秒为 59,毫秒为 999
54
+ */
55
+ export declare function dateEndInHour(dateValue: TDateValue): TDateLike;
56
+ /**
57
+ * 返回天级结束时间
58
+ * @param dateValue - 可以是数值、字符串或 Date 对象
59
+ * @returns 返回天级结束时间,小时为 23,分钟为 59,秒为 59,毫秒为 999
60
+ */
61
+ export declare function dateEndInDay(dateValue: TDateValue): TDateLike;
62
+ /**
63
+ * 返回月级结束时间
64
+ * @param dateValue - 可以是数值、字符串或 Date 对象
65
+ * @returns 返回月级结束时间,日期为当月最后一天,时间为 23:59:59.999
66
+ */
67
+ export declare function dateEndInMonth(dateValue: TDateValue): TDateLike;
68
+ /**
69
+ * 返回年级结束时间
70
+ * @param dateValue - 可以是数值、字符串或 Date 对象
71
+ * @returns 返回年级结束时间,月份为 12 月,日期为 31 日,时间为 23:59:59.999
72
+ */
73
+ export declare function dateEndInYear(dateValue: TDateValue): TDateLike;
@@ -0,0 +1,67 @@
1
+ export type TTzDateOptions = {
2
+ /**
3
+ * 时间戳
4
+ * @default Date.now()
5
+ */
6
+ timestamp?: number;
7
+ /**
8
+ * 日期值
9
+ */
10
+ value?: readonly [
11
+ year?: number,
12
+ month?: number,
13
+ day?: number,
14
+ hours?: number,
15
+ minutes?: number,
16
+ seconds?: number,
17
+ milliseconds?: number
18
+ ];
19
+ /**
20
+ * 时区偏移量,单位为分钟,默认为当前时区
21
+ */
22
+ offset?: number;
23
+ };
24
+ export declare class TzDate {
25
+ #private;
26
+ constructor(options?: TTzDateOptions | TzDate);
27
+ getTimezoneOffset(): number;
28
+ getTimezoneOrder(): number;
29
+ getFullYear(): number;
30
+ getMonth(): number;
31
+ getDate(): number;
32
+ getHours(): number;
33
+ getMinutes(): number;
34
+ getSeconds(): number;
35
+ getMilliseconds(): number;
36
+ setFullYear(year: number, month?: number, date?: number): number;
37
+ setMonth(month: number, date?: number): number;
38
+ setDate(date: number): number;
39
+ setHours(hours: number, minutes?: number, seconds?: number, milliseconds?: number): number;
40
+ setMinutes(minutes: number, seconds?: number, milliseconds?: number): number;
41
+ setSeconds(seconds: number, milliseconds?: number): number;
42
+ setMilliseconds(milliseconds: number): number;
43
+ getTime(): number;
44
+ getDay(): number;
45
+ toISOString(): string;
46
+ /**
47
+ * 创建一个 TzDate 对象
48
+ * @param td - 需要转换的日期对象
49
+ * @param offset - 目标时区分钟偏移量,默认为当前时区
50
+ * @returns 返回一个 TzDate 对象
51
+ * @example
52
+ * ```js
53
+ * const tzDate = TzDate.from(new TzDate());
54
+ * ```
55
+ */
56
+ static from(td: TzDate, offset?: number): TzDate;
57
+ /**
58
+ * 获取时区序号
59
+ * @param offset - 默认使用当前时区分钟偏移量
60
+ */
61
+ static getOrder(offset?: number): number;
62
+ /**
63
+ * 获取时区分钟偏移量
64
+ * @param gmtOrder - 默认使用当前时区序号
65
+ */
66
+ static getOffset(gmtOrder?: number): number;
67
+ }
@@ -0,0 +1,72 @@
1
+ import { TDateValue } from './core';
2
+ export declare enum EWeekStart {
3
+ /**
4
+ * 周日作为一周的起始日
5
+ */
6
+ sunday = 0,
7
+ /**
8
+ * 周一作为一周的起始日
9
+ */
10
+ monday = 1,
11
+ /**
12
+ * 周二作为一周的起始日
13
+ */
14
+ tuesday = 2,
15
+ /**
16
+ * 周三作为一周的起始日
17
+ */
18
+ wednesday = 3,
19
+ /**
20
+ * 周四作为一周的起始日
21
+ */
22
+ thursday = 4,
23
+ /**
24
+ * 周五作为一周的起始日
25
+ */
26
+ friday = 5,
27
+ /**
28
+ * 周六作为一周的起始日
29
+ */
30
+ saturday = 6
31
+ }
32
+ /**
33
+ * 计算指定日期所在年份或月份的周数
34
+ * @param dateValue - 可以是数值、字符串或 Date 对象
35
+ * @param type - 计算范围,'Y' 表示年份,'M' 表示月份
36
+ * @param weekStart - 一周的起始日,默认为 0(周日)
37
+ * @returns 返回指定日期所在年份或月份的周数
38
+ * @example
39
+ * ```typescript
40
+ * const date = new Date(2023, 0, 1); // 2023-01-01
41
+ * _dateWeeks(date, 'Y'); // 1 (计算年份的周数)
42
+ * _dateWeeks(date, 'M'); // 1 (计算月份的周数)
43
+ * _dateWeeks(date, 'Y', 1); // 1 (周一作为一周的起始日,计算年份的周数)
44
+ * ```
45
+ */
46
+ export declare function _dateWeeks(dateValue: TDateValue, type: 'Y' | 'M', weekStart?: EWeekStart): number;
47
+ /**
48
+ * 计算指定日期所在年份的周数
49
+ * @param dateValue - 可以是数值、字符串或 Date 对象
50
+ * @param weekStart - 一周的起始日,默认为 0(周日)
51
+ * @returns 返回指定日期所在年份的周数
52
+ * @example
53
+ * ```typescript
54
+ * const date = new Date(2023, 0, 1); // 2023-01-01
55
+ * weeksOfYear(date); // 1
56
+ * weeksOfYear(date, 1); // 1 (周一作为一周的起始日)
57
+ * ```
58
+ */
59
+ export declare function weeksOfYear(dateValue: TDateValue, weekStart?: EWeekStart): number;
60
+ /**
61
+ * 计算指定日期所在月份的周数
62
+ * @param dateValue - 可以是数值、字符串或 Date 对象
63
+ * @param weekStart - 一周的起始日,默认为 0(周日)
64
+ * @returns 返回指定日期所在月份的周数
65
+ * @example
66
+ * ```typescript
67
+ * const date = new Date(2023, 0, 1); // 2023-01-01
68
+ * weeksOfMonth(date); // 1
69
+ * weeksOfMonth(date, 1); // 1 (周一作为一周的起始日)
70
+ * ```
71
+ */
72
+ export declare function weeksOfMonth(dateValue: TDateValue, weekStart?: EWeekStart): number;