UNPKG

1.03 kBJavaScriptView Raw
1const lodash = require('lodash');
2const { WORD_BYTES } = require('../CONST');
3
4function assert(bool, value) {
5 if (!bool) {
6 if (lodash.isPlainObject(value)) {
7 value = JSON.stringify(value);
8 }
9 throw new Error(value);
10 }
11}
12
13/**
14 * @param buffer {Buffer}
15 * @param alignLeft {boolean}
16 * @return {Buffer}
17 */
18function alignBuffer(buffer, alignLeft = false) {
19 const count = WORD_BYTES - (buffer.length % WORD_BYTES);
20 if (0 < count && count < WORD_BYTES) {
21 buffer = alignLeft
22 ? Buffer.concat([buffer, Buffer.alloc(count)])
23 : Buffer.concat([Buffer.alloc(count), buffer]);
24 }
25
26 return buffer;
27}
28
29function awaitTimeout(promise, timeout) {
30 return new Promise((resolve, reject) => {
31 const error = new Error(`Timeout after ${timeout} ms`);
32 const timer = setTimeout(() => reject(error), timeout);
33 promise.then(resolve).catch(reject).finally(() => clearTimeout(timer));
34 });
35}
36
37module.exports = {
38 assert,
39 alignBuffer,
40 awaitTimeout,
41};