1 | const lodash = require('lodash');
|
2 | const { WORD_BYTES } = require('../CONST');
|
3 |
|
4 | function 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 |
|
15 |
|
16 |
|
17 |
|
18 | function 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 |
|
29 | function 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 |
|
37 | module.exports = {
|
38 | assert,
|
39 | alignBuffer,
|
40 | awaitTimeout,
|
41 | };
|