mirror of
https://github.com/Instadapp/Swap-Aggregator-Subgraph.git
synced 2024-07-29 21:57:12 +00:00
69 lines
1.2 KiB
JavaScript
69 lines
1.2 KiB
JavaScript
|
|
|
|
var tape = require('tape')
|
|
var pull = require('../')
|
|
//var abortable = require('pull-abortable')
|
|
|
|
function hang (values, onAbort) {
|
|
var i = 0
|
|
return function (abort, cb) {
|
|
if(i < values.length)
|
|
cb(null, values[i++])
|
|
else if(!abort)
|
|
_cb = cb
|
|
else {
|
|
_cb(abort)
|
|
cb(abort) //??
|
|
onAbort && onAbort()
|
|
}
|
|
}
|
|
}
|
|
|
|
function abortable () {
|
|
var _read, aborted
|
|
function reader (read) {
|
|
_read = read
|
|
return function (abort, cb) {
|
|
if(abort) aborted = abort
|
|
read(abort, cb)
|
|
}
|
|
}
|
|
|
|
reader.abort = function (cb) {
|
|
cb = cb || function (err) {
|
|
if(err && err !== true) throw err
|
|
}
|
|
if(aborted)
|
|
cb(aborted)
|
|
else _read(true, cb)
|
|
}
|
|
|
|
return reader
|
|
}
|
|
|
|
function test (name, trx) {
|
|
tape('test abort:'+name, function (t) {
|
|
var a = abortable()
|
|
|
|
pull(
|
|
hang([1,2,3], function () {
|
|
t.end()
|
|
}),
|
|
trx,
|
|
a,
|
|
pull.drain(function (e) {
|
|
if(e === 3)
|
|
setImmediate(function () {
|
|
a.abort()
|
|
})
|
|
}, function (err) {
|
|
})
|
|
)
|
|
})
|
|
}
|
|
|
|
test('through', pull.through())
|
|
test('map', pull.map(function (e) { return e }))
|
|
test('take', pull.take(Boolean))
|
|
|