UNPKG

@coolwallet/doge

Version:
92 lines (83 loc) 9.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.decode = decode; exports.encode = encode; exports.encodingLength = encodingLength; // Number.MAX_SAFE_INTEGER var MAX_SAFE_INTEGER = 9007199254740991; function checkUInt53(n) { if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0) throw new RangeError('value out of range'); } function encodingLength(n) { var num = n; checkUInt53(num); return ( // eslint-disable-next-line no-nested-ternary num < 0xfd ? 1 : num <= 0xffff ? 3 : num <= 0xffffffff ? 5 : 9 ); } function encode(n, buf, off) { var num = n; var buffer = buf; var offset = off; checkUInt53(num); if (!buffer) buffer = Buffer.allocUnsafe(encodingLength(num)); if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance'); if (!offset) offset = 0; // 8 bit if (num < 0xfd) { buffer.writeUInt8(num, offset); // encode.bytes = 1; // 16 bit } else if (num <= 0xffff) { buffer.writeUInt8(0xfd, offset); buffer.writeUInt16LE(num, offset + 1); // encode.bytes = 3; // 32 bit } else if (num <= 0xffffffff) { buffer.writeUInt8(0xfe, offset); buffer.writeUInt32LE(num, offset + 1); // encode.bytes = 5; // 64 bit } else { buffer.writeUInt8(0xff, offset); // eslint-disable-next-line no-bitwise buffer.writeUInt32LE(num >>> 0, offset + 1); // eslint-disable-next-line no-bitwise buffer.writeUInt32LE(num / 0x100000000 | 0, offset + 5); // encode.bytes = 9; } return buffer; } function decode(buf, off) { var buffer = buf; var offset = off; if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance'); if (!offset) offset = 0; var first = buffer.readUInt8(offset); // 8 bit if (first < 0xfd) { // decode.bytes = 1; return first; // 16 bit // eslint-disable-next-line no-else-return } else if (first === 0xfd) { // decode.bytes = 3; return buffer.readUInt16LE(offset + 1); // 32 bit } else if (first === 0xfe) { // decode.bytes = 5; return buffer.readUInt32LE(offset + 1); // 64 bit } else { // decode.bytes = 9; var lo = buffer.readUInt32LE(offset + 1); var hi = buffer.readUInt32LE(offset + 5); var num = hi * 0x0100000000 + lo; checkUInt53(num); return num; } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVhfU0FGRV9JTlRFR0VSIiwiY2hlY2tVSW50NTMiLCJuIiwiUmFuZ2VFcnJvciIsImVuY29kaW5nTGVuZ3RoIiwibnVtIiwiZW5jb2RlIiwiYnVmIiwib2ZmIiwiYnVmZmVyIiwib2Zmc2V0IiwiQnVmZmVyIiwiYWxsb2NVbnNhZmUiLCJpc0J1ZmZlciIsIlR5cGVFcnJvciIsIndyaXRlVUludDgiLCJ3cml0ZVVJbnQxNkxFIiwid3JpdGVVSW50MzJMRSIsImRlY29kZSIsImZpcnN0IiwicmVhZFVJbnQ4IiwicmVhZFVJbnQxNkxFIiwicmVhZFVJbnQzMkxFIiwibG8iLCJoaSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy92YXJ1aW50VXRpbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxuY29uc3QgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbmZ1bmN0aW9uIGNoZWNrVUludDUzKG46IG51bWJlcikge1xuICBpZiAobiA8IDAgfHwgbiA+IE1BWF9TQUZFX0lOVEVHRVIgfHwgbiAlIDEgIT09IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCd2YWx1ZSBvdXQgb2YgcmFuZ2UnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kaW5nTGVuZ3RoKG46IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IG51bSA9IG47XG4gIGNoZWNrVUludDUzKG51bSk7XG5cbiAgcmV0dXJuIChcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmVzdGVkLXRlcm5hcnlcbiAgICBudW0gPCAweGZkID8gMSA6IG51bSA8PSAweGZmZmYgPyAzIDogbnVtIDw9IDB4ZmZmZmZmZmYgPyA1IDogOVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlKG46IG51bWJlciwgYnVmPzogQnVmZmVyLCBvZmY/OiBudW1iZXIpOiBCdWZmZXIge1xuICBjb25zdCBudW0gPSBuO1xuICBsZXQgYnVmZmVyID0gYnVmO1xuICBsZXQgb2Zmc2V0ID0gb2ZmO1xuICBjaGVja1VJbnQ1MyhudW0pO1xuXG4gIGlmICghYnVmZmVyKSBidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUoZW5jb2RpbmdMZW5ndGgobnVtKSk7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZmZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2J1ZmZlciBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7XG4gIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwO1xuXG4gIC8vIDggYml0XG4gIGlmIChudW0gPCAweGZkKSB7XG4gICAgYnVmZmVyLndyaXRlVUludDgobnVtLCBvZmZzZXQpO1xuICAgIC8vIGVuY29kZS5ieXRlcyA9IDE7XG5cbiAgICAvLyAxNiBiaXRcbiAgfSBlbHNlIGlmIChudW0gPD0gMHhmZmZmKSB7XG4gICAgYnVmZmVyLndyaXRlVUludDgoMHhmZCwgb2Zmc2V0KTtcbiAgICBidWZmZXIud3JpdGVVSW50MTZMRShudW0sIG9mZnNldCArIDEpO1xuICAgIC8vIGVuY29kZS5ieXRlcyA9IDM7XG5cbiAgICAvLyAzMiBiaXRcbiAgfSBlbHNlIGlmIChudW0gPD0gMHhmZmZmZmZmZikge1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KDB4ZmUsIG9mZnNldCk7XG4gICAgYnVmZmVyLndyaXRlVUludDMyTEUobnVtLCBvZmZzZXQgKyAxKTtcbiAgICAvLyBlbmNvZGUuYnl0ZXMgPSA1O1xuXG4gICAgLy8gNjQgYml0XG4gIH0gZWxzZSB7XG4gICAgYnVmZmVyLndyaXRlVUludDgoMHhmZiwgb2Zmc2V0KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZVxuICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKG51bSA+Pj4gMCwgb2Zmc2V0ICsgMSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2VcbiAgICBidWZmZXIud3JpdGVVSW50MzJMRSgobnVtIC8gMHgxMDAwMDAwMDApIHwgMCwgb2Zmc2V0ICsgNSk7XG4gICAgLy8gZW5jb2RlLmJ5dGVzID0gOTtcbiAgfVxuXG4gIHJldHVybiBidWZmZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGUoYnVmOiBCdWZmZXIsIG9mZj86IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IGJ1ZmZlciA9IGJ1ZjtcbiAgbGV0IG9mZnNldCA9IG9mZjtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmZmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignYnVmZmVyIG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtcbiAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDA7XG5cbiAgY29uc3QgZmlyc3QgPSBidWZmZXIucmVhZFVJbnQ4KG9mZnNldCk7XG5cbiAgLy8gOCBiaXRcbiAgaWYgKGZpcnN0IDwgMHhmZCkge1xuICAgIC8vIGRlY29kZS5ieXRlcyA9IDE7XG4gICAgcmV0dXJuIGZpcnN0O1xuXG4gICAgLy8gMTYgYml0XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVsc2UtcmV0dXJuXG4gIH0gZWxzZSBpZiAoZmlyc3QgPT09IDB4ZmQpIHtcbiAgICAvLyBkZWNvZGUuYnl0ZXMgPSAzO1xuICAgIHJldHVybiBidWZmZXIucmVhZFVJbnQxNkxFKG9mZnNldCArIDEpO1xuXG4gICAgLy8gMzIgYml0XG4gIH0gZWxzZSBpZiAoZmlyc3QgPT09IDB4ZmUpIHtcbiAgICAvLyBkZWNvZGUuYnl0ZXMgPSA1O1xuICAgIHJldHVybiBidWZmZXIucmVhZFVJbnQzMkxFKG9mZnNldCArIDEpO1xuXG4gICAgLy8gNjQgYml0XG4gIH0gZWxzZSB7XG4gICAgLy8gZGVjb2RlLmJ5dGVzID0gOTtcbiAgICBjb25zdCBsbyA9IGJ1ZmZlci5yZWFkVUludDMyTEUob2Zmc2V0ICsgMSk7XG4gICAgY29uc3QgaGkgPSBidWZmZXIucmVhZFVJbnQzMkxFKG9mZnNldCArIDUpO1xuICAgIGNvbnN0IG51bSA9IGhpICogMHgwMTAwMDAwMDAwICsgbG87XG4gICAgY2hlY2tVSW50NTMobnVtKTtcblxuICAgIHJldHVybiBudW07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBLElBQU1BLGdCQUFnQixHQUFHLGdCQUFnQjtBQUV6QyxTQUFTQyxXQUFXQSxDQUFDQyxDQUFTLEVBQUU7RUFDOUIsSUFBSUEsQ0FBQyxHQUFHLENBQUMsSUFBSUEsQ0FBQyxHQUFHRixnQkFBZ0IsSUFBSUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxJQUFJQyxVQUFVLENBQUMsb0JBQW9CLENBQUM7QUFDOUY7QUFFTyxTQUFTQyxjQUFjQSxDQUFDRixDQUFTLEVBQVU7RUFDaEQsSUFBTUcsR0FBRyxHQUFHSCxDQUFDO0VBQ2JELFdBQVcsQ0FBQ0ksR0FBRyxDQUFDO0VBRWhCO0lBQ0U7SUFDQUEsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUdBLEdBQUcsSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHQSxHQUFHLElBQUksVUFBVSxHQUFHLENBQUMsR0FBRztFQUFDO0FBRWxFO0FBRU8sU0FBU0MsTUFBTUEsQ0FBQ0osQ0FBUyxFQUFFSyxHQUFZLEVBQUVDLEdBQVksRUFBVTtFQUNwRSxJQUFNSCxHQUFHLEdBQUdILENBQUM7RUFDYixJQUFJTyxNQUFNLEdBQUdGLEdBQUc7RUFDaEIsSUFBSUcsTUFBTSxHQUFHRixHQUFHO0VBQ2hCUCxXQUFXLENBQUNJLEdBQUcsQ0FBQztFQUVoQixJQUFJLENBQUNJLE1BQU0sRUFBRUEsTUFBTSxHQUFHRSxNQUFNLENBQUNDLFdBQVcsQ0FBQ1IsY0FBYyxDQUFDQyxHQUFHLENBQUMsQ0FBQztFQUM3RCxJQUFJLENBQUNNLE1BQU0sQ0FBQ0UsUUFBUSxDQUFDSixNQUFNLENBQUMsRUFBRSxNQUFNLElBQUlLLFNBQVMsQ0FBQyxrQ0FBa0MsQ0FBQztFQUNyRixJQUFJLENBQUNKLE1BQU0sRUFBRUEsTUFBTSxHQUFHLENBQUM7O0VBRXZCO0VBQ0EsSUFBSUwsR0FBRyxHQUFHLElBQUksRUFBRTtJQUNkSSxNQUFNLENBQUNNLFVBQVUsQ0FBQ1YsR0FBRyxFQUFFSyxNQUFNLENBQUM7SUFDOUI7O0lBRUE7RUFDRixDQUFDLE1BQU0sSUFBSUwsR0FBRyxJQUFJLE1BQU0sRUFBRTtJQUN4QkksTUFBTSxDQUFDTSxVQUFVLENBQUMsSUFBSSxFQUFFTCxNQUFNLENBQUM7SUFDL0JELE1BQU0sQ0FBQ08sYUFBYSxDQUFDWCxHQUFHLEVBQUVLLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDckM7O0lBRUE7RUFDRixDQUFDLE1BQU0sSUFBSUwsR0FBRyxJQUFJLFVBQVUsRUFBRTtJQUM1QkksTUFBTSxDQUFDTSxVQUFVLENBQUMsSUFBSSxFQUFFTCxNQUFNLENBQUM7SUFDL0JELE1BQU0sQ0FBQ1EsYUFBYSxDQUFDWixHQUFHLEVBQUVLLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDckM7O0lBRUE7RUFDRixDQUFDLE1BQU07SUFDTEQsTUFBTSxDQUFDTSxVQUFVLENBQUMsSUFBSSxFQUFFTCxNQUFNLENBQUM7SUFDL0I7SUFDQUQsTUFBTSxDQUFDUSxhQUFhLENBQUNaLEdBQUcsS0FBSyxDQUFDLEVBQUVLLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDM0M7SUFDQUQsTUFBTSxDQUFDUSxhQUFhLENBQUVaLEdBQUcsR0FBRyxXQUFXLEdBQUksQ0FBQyxFQUFFSyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3pEO0VBQ0Y7RUFFQSxPQUFPRCxNQUFNO0FBQ2Y7QUFFTyxTQUFTUyxNQUFNQSxDQUFDWCxHQUFXLEVBQUVDLEdBQVksRUFBVTtFQUN4RCxJQUFNQyxNQUFNLEdBQUdGLEdBQUc7RUFDbEIsSUFBSUcsTUFBTSxHQUFHRixHQUFHO0VBQ2hCLElBQUksQ0FBQ0csTUFBTSxDQUFDRSxRQUFRLENBQUNKLE1BQU0sQ0FBQyxFQUFFLE1BQU0sSUFBSUssU0FBUyxDQUFDLGtDQUFrQyxDQUFDO0VBQ3JGLElBQUksQ0FBQ0osTUFBTSxFQUFFQSxNQUFNLEdBQUcsQ0FBQztFQUV2QixJQUFNUyxLQUFLLEdBQUdWLE1BQU0sQ0FBQ1csU0FBUyxDQUFDVixNQUFNLENBQUM7O0VBRXRDO0VBQ0EsSUFBSVMsS0FBSyxHQUFHLElBQUksRUFBRTtJQUNoQjtJQUNBLE9BQU9BLEtBQUs7O0lBRVo7SUFDQTtFQUNGLENBQUMsTUFBTSxJQUFJQSxLQUFLLEtBQUssSUFBSSxFQUFFO0lBQ3pCO0lBQ0EsT0FBT1YsTUFBTSxDQUFDWSxZQUFZLENBQUNYLE1BQU0sR0FBRyxDQUFDLENBQUM7O0lBRXRDO0VBQ0YsQ0FBQyxNQUFNLElBQUlTLEtBQUssS0FBSyxJQUFJLEVBQUU7SUFDekI7SUFDQSxPQUFPVixNQUFNLENBQUNhLFlBQVksQ0FBQ1osTUFBTSxHQUFHLENBQUMsQ0FBQzs7SUFFdEM7RUFDRixDQUFDLE1BQU07SUFDTDtJQUNBLElBQU1hLEVBQUUsR0FBR2QsTUFBTSxDQUFDYSxZQUFZLENBQUNaLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDMUMsSUFBTWMsRUFBRSxHQUFHZixNQUFNLENBQUNhLFlBQVksQ0FBQ1osTUFBTSxHQUFHLENBQUMsQ0FBQztJQUMxQyxJQUFNTCxHQUFHLEdBQUdtQixFQUFFLEdBQUcsWUFBWSxHQUFHRCxFQUFFO0lBQ2xDdEIsV0FBVyxDQUFDSSxHQUFHLENBQUM7SUFFaEIsT0FBT0EsR0FBRztFQUNaO0FBQ0YiLCJpZ25vcmVMaXN0IjpbXX0=