@airgap/coinlib-core
Version:
The @airgap/coinlib-core is a protocol agnostic library to prepare, sign and broadcast cryptocurrency transactions.
49 lines (38 loc) • 984 B
JavaScript
const _has = (obj, key) => {
return Object.prototype.hasOwnProperty.call(obj, key)
}
module.exports.assign = function (obj /*from1, from2, from3, ...*/) {
const sources = Array.prototype.slice.call(arguments, 1)
while (sources.length) {
const source = sources.shift()
if (!source) {
continue
}
if (typeof source !== 'object') {
throw new TypeError(source + 'must be non-object')
}
for (const p in source) {
if (_has(source, p)) {
obj[p] = source[p]
}
}
}
return obj
}
// Join array of chunks to single array.
module.exports.flattenChunks = (chunks) => {
// calculate data length
let len = 0
for (let i = 0, l = chunks.length; i < l; i++) {
len += chunks[i].length
}
// join chunks
const result = new Uint8Array(len)
for (let i = 0, pos = 0, l = chunks.length; i < l; i++) {
let chunk = chunks[i]
result.set(chunk, pos)
pos += chunk.length
}
return result
}