Skip to content
This repository has been archived by the owner on Mar 10, 2020. It is now read-only.

refactor: async iterables #1174

Closed
wants to merge 41 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
f281b20
refactor: convert key API to async/await
alanshaw Nov 19, 2019
acf2233
refactor: convert log API to async/await
alanshaw Nov 19, 2019
0ad3897
fix: tests
alanshaw Nov 19, 2019
e0a4ffd
fix: tests
alanshaw Nov 19, 2019
cdf9390
refactor: convert name API to async/await
alanshaw Nov 19, 2019
2895384
fix: tests
alanshaw Nov 19, 2019
96b86f5
refactor: convert misc root level APIs to async/await
alanshaw Nov 19, 2019
8638f9c
Merge branch 'master' into refactor/key-async-await
alanshaw Nov 19, 2019
aa33b9a
Merge branch 'master' into refactor/log-async-await
alanshaw Nov 19, 2019
2c110a5
Merge branch 'master' into refactor/name-async-await
alanshaw Nov 19, 2019
e673f91
Merge branch 'master' into refactor/key-async-await
alanshaw Nov 20, 2019
373d1e0
Merge branch 'master' into refactor/log-async-await
alanshaw Nov 20, 2019
f4476cc
Merge branch 'master' into refactor/name-async-await
alanshaw Nov 20, 2019
29cce3a
refactor: convert repo API to async await
alanshaw Nov 20, 2019
a891032
refactor: convert stats API to async/await
alanshaw Nov 21, 2019
a88767f
refactor: convert swarm API to async/await
alanshaw Nov 21, 2019
1363199
fix: tests
alanshaw Nov 21, 2019
c3cd680
refactor: convert mount API to async/await
alanshaw Nov 21, 2019
e011c8e
fix: load mount
alanshaw Nov 21, 2019
4186327
fix: post all the things
alanshaw Nov 21, 2019
2281599
refactor: convert version API to async/await
alanshaw Nov 21, 2019
d8da835
refactor: convert ping API to async/await
alanshaw Nov 21, 2019
aa83f91
refactor: convert update API to async/await
alanshaw Nov 21, 2019
f0d2aca
Merge branch 'master' into refactor/misc-async-await
alanshaw Nov 21, 2019
09afe67
fix: remove tests for go-ipfs 0.4.4 peer response
alanshaw Nov 21, 2019
3840f40
fix: ping sub modules test
alanshaw Nov 21, 2019
1980530
Merge branch 'refactor/log-async-await' into refactor/async-await-rou…
alanshaw Nov 21, 2019
81e72b3
Merge branch 'refactor/name-async-await' into refactor/async-await-ro…
alanshaw Nov 21, 2019
12ff0d8
Merge branch 'refactor/misc-async-await' into refactor/async-await-ro…
alanshaw Nov 21, 2019
6ecf79b
Merge branch 'refactor/repo-async-await' into refactor/async-await-ro…
alanshaw Nov 21, 2019
d2beb18
Merge branch 'refactor/swarm-async-await' into refactor/async-await-r…
alanshaw Nov 21, 2019
78b430a
refactor: move loadCommands into index and remove unused code
alanshaw Nov 21, 2019
d7adafc
fix: browser and Node.js configuration
alanshaw Nov 21, 2019
ec0e66c
fix: dev dependencies
alanshaw Nov 21, 2019
b9d6d1b
fix: post all the things so not more breaking changes
alanshaw Nov 21, 2019
31881e5
fix: inconsistent error message in browsers
alanshaw Nov 21, 2019
b7717bc
refactor: async iterators wip
alanshaw Nov 21, 2019
c9d530b
feat: use ipfs-utils without node/pull streams
alanshaw Nov 21, 2019
be6641e
feat: remove peer-info and peer-id
alanshaw Nov 22, 2019
c86dcae
Merge branch 'master' into refactor/async-iterables
alanshaw Nov 22, 2019
4fb1b8c
Merge branch 'master' into refactor/async-iterables
alanshaw Nov 27, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 2 additions & 10 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,27 +42,22 @@
},
"dependencies": {
"abort-controller": "^3.0.0",
"async-iterator-all": "^1.0.0",
"async-iterator-to-pull-stream": "^1.3.0",
"bignumber.js": "^9.0.0",
"bl": "^4.0.0",
"bs58": "^4.0.1",
"buffer": "^5.4.2",
"callbackify": "^1.1.0",
"cids": "~0.7.1",
"debug": "^4.1.0",
"err-code": "^2.0.0",
"explain-error": "^1.0.4",
"form-data": "^3.0.0",
"ipfs-block": "~0.8.1",
"ipfs-utils": "^0.4.0",
"ipfs-utils": "github:ipfs/js-ipfs-utils#refactor/async-iterators",
"ipld-dag-cbor": "~0.15.0",
"ipld-dag-pb": "^0.18.1",
"ipld-raw": "^4.0.0",
"is-ipfs": "~0.6.1",
"it-glob": "0.0.7",
"it-tar": "^1.1.1",
"it-to-stream": "^0.1.1",
"iterable-ndjson": "^1.1.0",
"ky": "^0.15.0",
"ky-universal": "^0.3.0",
Expand All @@ -72,10 +67,7 @@
"multibase": "~0.6.0",
"multicodec": "~0.5.1",
"multihashes": "~0.4.14",
"parse-duration": "^0.1.1",
"peer-id": "~0.12.3",
"peer-info": "~0.15.1",
"promise-nodeify": "^3.0.1"
"parse-duration": "^0.1.1"
},
"devDependencies": {
"aegir": "^20.4.1",
Expand Down
10 changes: 4 additions & 6 deletions src/bitswap/index.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
'use strict'

const callbackify = require('callbackify')

module.exports = (config) => ({
wantlist: callbackify.variadic(require('./wantlist')(config)),
stat: callbackify.variadic(require('./stat')(config)),
unwant: callbackify.variadic(require('./unwant')(config))
module.exports = config => ({
wantlist: require('./wantlist')(config),
stat: require('./stat')(config),
unwant: require('./unwant')(config)
})
27 changes: 6 additions & 21 deletions src/block/index.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,8 @@
'use strict'

const nodeify = require('promise-nodeify')
const callbackify = require('callbackify')
const { collectify } = require('../lib/converters')

module.exports = config => {
const rm = require('./rm-async-iterator')(config)

return {
get: callbackify.variadic(require('./get')(config)),
stat: callbackify.variadic(require('./stat')(config)),
put: callbackify.variadic(require('./put')(config)),
rm: (input, options, callback) => {
if (typeof options === 'function') {
callback = options
options = {}
}
return nodeify(collectify(rm)(input, options), callback)
},
_rmAsyncIterator: rm
}
}
module.exports = config => ({
get: require('./get')(config),
stat: require('./stat')(config),
put: require('./put')(config),
rm: require('./rm')(config)
})
File renamed without changes.
8 changes: 3 additions & 5 deletions src/bootstrap/index.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
'use strict'

const callbackify = require('callbackify')

module.exports = config => ({
add: callbackify.variadic(require('./add')(config)),
rm: callbackify.variadic(require('./rm')(config)),
list: callbackify.variadic(require('./list')(config))
add: require('./add')(config),
rm: require('./rm')(config),
list: require('./list')(config)
})
8 changes: 3 additions & 5 deletions src/config/index.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
'use strict'

const callbackify = require('callbackify')

module.exports = config => ({
get: callbackify.variadic(require('./get')(config)),
set: callbackify.variadic(require('./set')(config)),
replace: callbackify.variadic(require('./replace')(config)),
get: require('./get')(config),
set: require('./set')(config),
replace: require('./replace')(config),
profiles: require('./profiles')(config)
})
6 changes: 2 additions & 4 deletions src/config/profiles/index.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
'use strict'

const callbackify = require('callbackify')

module.exports = config => ({
apply: callbackify.variadic(require('./apply')(config)),
list: callbackify.variadic(require('./list')(config))
apply: require('./apply')(config),
list: require('./list')(config)
})
8 changes: 3 additions & 5 deletions src/dag/index.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
'use strict'

const callbackify = require('callbackify')

module.exports = config => ({
get: callbackify.variadic(require('./get')(config)),
put: callbackify.variadic(require('./put')(config)),
resolve: callbackify.variadic(require('./resolve')(config))
get: require('./get')(config),
put: require('./put')(config),
resolve: require('./resolve')(config)
})
10 changes: 5 additions & 5 deletions src/dht/find-peer.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
'use strict'

const PeerId = require('peer-id')
const PeerInfo = require('peer-info')
const CID = require('cids')
const multiaddr = require('multiaddr')
const ndjson = require('iterable-ndjson')
const configure = require('../lib/configure')
Expand All @@ -27,9 +26,10 @@ module.exports = configure(({ ky }) => {
// https://github.com/libp2p/go-libp2p-core/blob/6e566d10f4a5447317a66d64c7459954b969bdab/routing/query.go#L18
if (message.Type === 2 && message.Responses) {
for (const { ID, Addrs } of message.Responses) {
const peerInfo = new PeerInfo(PeerId.createFromB58String(ID))
if (Addrs) Addrs.forEach(a => peerInfo.multiaddrs.add(multiaddr(a)))
yield peerInfo
yield {
id: new CID(ID),
addrs: (Addrs || []).map(a => multiaddr(a))
}
}
}
}
Expand Down
10 changes: 5 additions & 5 deletions src/dht/find-provs.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
'use strict'

const PeerId = require('peer-id')
const PeerInfo = require('peer-info')
const CID = require('cids')
const multiaddr = require('multiaddr')
const ndjson = require('iterable-ndjson')
const configure = require('../lib/configure')
Expand All @@ -28,9 +27,10 @@ module.exports = configure(({ ky }) => {
// https://github.com/libp2p/go-libp2p-core/blob/6e566d10f4a5447317a66d64c7459954b969bdab/routing/query.go#L20
if (message.Type === 4 && message.Responses) {
for (const { ID, Addrs } of message.Responses) {
const peerInfo = new PeerInfo(PeerId.createFromB58String(ID))
if (Addrs) Addrs.forEach(a => peerInfo.multiaddrs.add(multiaddr(a)))
yield peerInfo
yield {
id: new CID(ID),
addrs: (Addrs || []).map(a => multiaddr(a))
}
}
}
}
Expand Down
37 changes: 9 additions & 28 deletions src/dht/index.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,11 @@
'use strict'

const callbackify = require('callbackify')
const errCode = require('err-code')
const { collectify } = require('../lib/converters')

module.exports = config => {
const get = require('./get')(config)
const findPeer = require('./find-peer')(config)

return {
get: callbackify.variadic(async (key, options) => {
for await (const value of get(key, options)) {
return value
}
throw errCode(new Error('value not found'), 'ERR_TYPE_5_NOT_FOUND')
}),
put: callbackify.variadic(collectify(require('./put')(config))),
findProvs: callbackify.variadic(collectify(require('./find-provs')(config))),
findPeer: callbackify.variadic(async (peerId, options) => {
for await (const peerInfo of findPeer(peerId, options)) {
return peerInfo
}
throw errCode(new Error('final peer not found'), 'ERR_TYPE_2_NOT_FOUND')
}),
provide: callbackify.variadic(collectify(require('./provide')(config))),
// find closest peerId to given peerId
query: callbackify.variadic(collectify(require('./query')(config)))
}
}
module.exports = config => ({
get: require('./get')(config),
put: require('./put')(config),
findProvs: require('./find-provs')(config),
findPeer: require('./find-peer')(config),
provide: require('./provide')(config),
// find closest peerId to given peerId
query: require('./query')(config)
})
12 changes: 5 additions & 7 deletions src/dht/provide.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
'use strict'

const PeerId = require('peer-id')
const PeerInfo = require('peer-info')
const CID = require('cids')
const multiaddr = require('multiaddr')
const ndjson = require('iterable-ndjson')
const configure = require('../lib/configure')
Expand All @@ -28,11 +27,10 @@ module.exports = configure(({ ky }) => {
for await (let message of ndjson(toIterable(res.body))) {
message = toCamel(message)
if (message.responses) {
message.responses = message.responses.map(({ ID, Addrs }) => {
const peerInfo = new PeerInfo(PeerId.createFromB58String(ID))
if (Addrs) Addrs.forEach(a => peerInfo.multiaddrs.add(multiaddr(a)))
return peerInfo
})
message.responses = message.responses.map(({ ID, Addrs }) => ({
id: new CID(ID),
addrs: (Addrs || []).map(a => multiaddr(a))
}))
}
yield message
}
Expand Down
12 changes: 5 additions & 7 deletions src/dht/put.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
'use strict'

const PeerId = require('peer-id')
const PeerInfo = require('peer-info')
const CID = require('cids')
const multiaddr = require('multiaddr')
const ndjson = require('iterable-ndjson')
const configure = require('../lib/configure')
Expand Down Expand Up @@ -29,11 +28,10 @@ module.exports = configure(({ ky }) => {
for await (let message of ndjson(toIterable(res.body))) {
message = toCamel(message)
if (message.responses) {
message.responses = message.responses.map(({ ID, Addrs }) => {
const peerInfo = new PeerInfo(PeerId.createFromB58String(ID))
if (Addrs) Addrs.forEach(a => peerInfo.multiaddrs.add(multiaddr(a)))
return peerInfo
})
message.responses = message.responses.map(({ ID, Addrs }) => ({
id: new CID(ID),
addrs: (Addrs || []).map(a => multiaddr(a))
}))
}
yield message
}
Expand Down
8 changes: 5 additions & 3 deletions src/dht/query.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
'use strict'

const PeerId = require('peer-id')
const PeerInfo = require('peer-info')
const CID = require('cids')
const ndjson = require('iterable-ndjson')
const configure = require('../lib/configure')
const toIterable = require('../lib/stream-to-iterable')
Expand All @@ -22,7 +21,10 @@ module.exports = configure(({ ky }) => {
})

for await (const message of ndjson(toIterable(res.body))) {
yield new PeerInfo(PeerId.createFromB58String(message.ID))
yield {
id: new CID(message.ID),
addrs: []
}
}
}
})
8 changes: 3 additions & 5 deletions src/diag/index.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
'use strict'

const callbackify = require('callbackify')

module.exports = config => ({
net: callbackify.variadic(require('./net')(config)),
sys: callbackify.variadic(require('./sys')(config)),
cmds: callbackify.variadic(require('./cmds')(config))
net: require('./net')(config),
sys: require('./sys')(config),
cmds: require('./cmds')(config)
})
34 changes: 11 additions & 23 deletions src/files/index.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,13 @@
'use strict'

const callbackify = require('callbackify')
const { collectify, streamify, pullify, concatify } = require('../lib/converters')

module.exports = config => {
const ls = require('./ls')(config)
const read = require('./read')(config)

return {
cp: callbackify.variadic(require('./cp')(config)),
mkdir: callbackify.variadic(require('./mkdir')(config)),
flush: callbackify.variadic(require('./flush')(config)),
stat: callbackify.variadic(require('./stat')(config)),
rm: callbackify.variadic(require('./rm')(config)),
ls: callbackify.variadic(collectify(ls)),
lsReadableStream: streamify.readable(ls),
lsPullStream: pullify.source(ls),
read: callbackify.variadic(concatify(read)),
readReadableStream: streamify.readable(read),
readPullStream: pullify.source(read),
write: callbackify.variadic(require('./write')(config)),
mv: callbackify.variadic(require('./mv')(config))
}
}
module.exports = config => ({
cp: require('./cp')(config),
mkdir: require('./mkdir')(config),
flush: require('./flush')(config),
stat: require('./stat')(config),
rm: require('./rm')(config),
ls: require('./ls')(config),
read: require('./read')(config),
write: require('./write')(config),
mv: require('./mv')(config)
})
Loading