UNPKG

flashmagic.js

Version:
70 lines (69 loc) 2.09 kB
"use strict"; var Symbol = require('es6-symbol'); var _checksumSym = Symbol(); var UUDecoder = (function () { function UUDecoder() { this[_checksumSym] = 0; } Object.defineProperty(UUDecoder.prototype, "checksum", { get: function () { return this[_checksumSym]; }, enumerable: true, configurable: true }); UUDecoder.prototype.reset = function () { this[_checksumSym] = 0; }; UUDecoder.prototype.decode = function (data) { var length = decodeSingle(data.charCodeAt(0)); var out = new Buffer(length); var sum = 0; length -= 3; var i = 0, j = 1; while (i < length) { var a = data.charCodeAt(j++); var b = data.charCodeAt(j++); var c = data.charCodeAt(j++); var d = data.charCodeAt(j++); var _a = decodeQuad(a, b, c, d), x = _a[0], y = _a[1], z = _a[2]; sum += x + y + z; out[i++] = x; out[i++] = y; out[i++] = z; } if (i < out.length) { var a = data.charCodeAt(j++); var b = data.charCodeAt(j++); var c = data.charCodeAt(j++); var d = data.charCodeAt(j++); var _b = decodeQuad(a, b, c, d), x = _b[0], y = _b[1], z = _b[2]; sum += x; out[i++] = x; if (i < out.length) { sum += y; out[i++] = y; if (i < out.length) { sum += z; out[i++] = z; } } } this[_checksumSym] += sum; return out; }; return UUDecoder; }()); exports.UUDecoder = UUDecoder; function decodeSingle(c) { return c === 0x60 ? 0 : (c - 32); } function decodeQuad(a, b, c, d) { a = decodeSingle(a); b = decodeSingle(b); c = decodeSingle(c); d = decodeSingle(d); return [((a & 0x3F) << 2) | ((b & 0x30) >>> 4), ((b & 0x0F) << 4) | ((c & 0x3C) >>> 2), ((c & 0x03) << 6) | (d & 0x3F)]; }