@coolwallet/doge
Version:
Coolwallet Dogecoin sdk
92 lines (83 loc) • 9.22 kB
JavaScript
;
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=