UNPKG

@honor-minigame/cli

Version:

honor minigame pack cli

64 lines (56 loc) 1.61 kB
/* * Copyright (C) 2017, hapjs.org. All rights reserved. */ 'use strict' var Base64 = {} var decoder Base64.decode = function (a) { var i if (decoder === undefined) { var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' var ignore = '= \f\n\r\t\u00A0\u2028\u2029' decoder = [] for (i = 0; i < 64; ++i) { decoder[b64.charAt(i)] = i } for (i = 0; i < ignore.length; ++i) { decoder[ignore.charAt(i)] = -1 } } var out = [] var bits = 0; var charCount = 0 for (i = 0; i < a.length; ++i) { var c = a.charAt(i) if (c === '=') { break } c = decoder[c] if (c === -1) { continue } if (c === undefined) { throw new Error('Illegal character at offset ' + i) } bits |= c if (++charCount >= 4) { out[out.length] = (bits >> 16) out[out.length] = (bits >> 8) & 0xFF out[out.length] = bits & 0xFF bits = 0 charCount = 0 } else { bits <<= 6 } } switch (charCount) { case 1: throw new Error('Base64 encoding incomplete: at least 2 bits missing') case 2: out[out.length] = (bits >> 10) break case 3: out[out.length] = (bits >> 16) out[out.length] = (bits >> 8) & 0xFF break } return out } Base64.re = /-----BEGIN [^-]+-----([A-Za-z0-9+/=\s]+)-----END [^-]+-----|begin-base64[^\n]+\n([A-Za-z0-9+/=\s]+)====/ Base64.unarmor = function (a) { var m = Base64.re.exec(a) if (m) { if (m[1]) { a = m[1] } else if (m[2]) { a = m[2] } else { throw new Error('RegExp out of sync') } } return Base64.decode(a) } export default Base64