Skip to content

Commit 71e7fbe

Browse files
XmaderGozalaachingbrain
authored
feat: add typescript support (#3267)
TypeScript support for `ipfs` and `ipfs-http-client` Refs: #2945 Refs: #1166 Co-authored-by: Irakli Gozalishvili <[email protected]> Co-authored-by: Alex Potsides <[email protected]>
1 parent 4eddfed commit 71e7fbe

23 files changed

+121
-26
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@
185185
"shunkin <[email protected]>",
186186
"victorbjelkholm <[email protected]>",
187187
"Łukasz Magiera <[email protected]>",
188-
"Łukasz Magiera <[email protected]>"
188+
"Łukasz Magiera <[email protected]>",
189+
"Xmader <[email protected]>"
189190
]
190191
}

src/add-all.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,14 @@ const configure = require('./lib/configure')
66
const multipartRequest = require('./lib/multipart-request')
77
const toUrlSearchParams = require('./lib/to-url-search-params')
88
const anySignal = require('any-signal')
9-
const AbortController = require('abort-controller')
9+
const AbortController = require('abort-controller').default
1010

1111
module.exports = configure((api) => {
12-
return async function * addAll (input, options = {}) {
12+
// eslint-disable-next-line valid-jsdoc
13+
/**
14+
* @type {import('../../ipfs/src/core/components/add-all').AddAll<import('.').HttpOptions>}
15+
*/
16+
async function * addAll (input, options = {}) {
1317
const progressFn = options.progress
1418

1519
// allow aborting requests on body errors
@@ -39,8 +43,16 @@ module.exports = configure((api) => {
3943
}
4044
}
4145
}
46+
return addAll
4247
})
4348

49+
/**
50+
* @typedef {import('../../ipfs/src/core/components/add-all').UnixFSEntry} UnixFSEntry
51+
*/
52+
53+
/**
54+
* @returns {UnixFSEntry}
55+
*/
4456
function toCoreInterface ({ name, hash, size, mode, mtime, mtimeNsecs }) {
4557
const output = {
4658
path: name,
@@ -59,5 +71,6 @@ function toCoreInterface ({ name, hash, size, mode, mtime, mtimeNsecs }) {
5971
}
6072
}
6173

74+
// @ts-ignore
6275
return output
6376
}

src/add.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,26 @@ const addAll = require('./add-all')
44
const last = require('it-last')
55
const configure = require('./lib/configure')
66

7+
/**
8+
* @typedef {import("./lib/core").ClientOptions} ClientOptions
9+
*/
10+
11+
// eslint-disable-next-line valid-jsdoc
12+
/**
13+
* @param {ClientOptions} options
14+
*/
715
module.exports = (options) => {
816
const all = addAll(options)
917

1018
return configure(() => {
11-
return async function add (input, options = {}) { // eslint-disable-line require-await
19+
// eslint-disable-next-line valid-jsdoc
20+
/**
21+
* @type {import('../../ipfs/src/core/components/add').Add<import('.').HttpOptions>}
22+
*/
23+
async function add (input, options = {}) { // eslint-disable-line require-await
24+
// @ts-ignore
1225
return last(all(input, options))
1326
}
27+
return add
1428
})(options)
1529
}

src/bitswap/stat.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@ const configure = require('../lib/configure')
66
const toUrlSearchParams = require('../lib/to-url-search-params')
77

88
module.exports = configure(api => {
9-
return async (options = {}) => {
9+
// eslint-disable-next-line valid-jsdoc
10+
/**
11+
* @type {import('../../../ipfs/src/core/components/bitswap/stat').Stat<import('..').HttpOptions>}
12+
*/
13+
async function stat (options = {}) {
1014
const res = await api.post('bitswap/stat', {
1115
searchParams: toUrlSearchParams(options),
1216
timeout: options.timeout,
@@ -16,6 +20,7 @@ module.exports = configure(api => {
1620

1721
return toCoreInterface(await res.json())
1822
}
23+
return stat
1924
})
2025

2126
function toCoreInterface (res) {

src/bitswap/unwant.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@ const configure = require('../lib/configure')
55
const toUrlSearchParams = require('../lib/to-url-search-params')
66

77
module.exports = configure(api => {
8-
return async (cid, options = {}) => {
8+
// eslint-disable-next-line valid-jsdoc
9+
/**
10+
* @type {import('../../../ipfs/src/core/components/bitswap/unwant').Unwant<import('..').HttpOptions>}
11+
*/
12+
async function unwant (cid, options = {}) {
913
const res = await api.post('bitswap/unwant', {
1014
timeout: options.timeout,
1115
signal: options.signal,
@@ -18,4 +22,5 @@ module.exports = configure(api => {
1822

1923
return res.json()
2024
}
25+
return unwant
2126
})

src/bitswap/wantlist-for-peer.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@ const configure = require('../lib/configure')
55
const toUrlSearchParams = require('../lib/to-url-search-params')
66

77
module.exports = configure(api => {
8-
return async (peerId, options = {}) => {
8+
// eslint-disable-next-line valid-jsdoc
9+
/**
10+
* @type {import('../../../ipfs/src/core/components/bitswap/wantlist-for-peer').WantlistForPeer<import('..').HttpOptions>}
11+
*/
12+
async function wantlistForPeer (peerId, options = {}) {
913
peerId = typeof peerId === 'string' ? peerId : new CID(peerId).toString()
1014

1115
const res = await (await api.post('bitswap/wantlist', {
@@ -20,4 +24,5 @@ module.exports = configure(api => {
2024

2125
return (res.Keys || []).map(k => new CID(k['/']))
2226
}
27+
return wantlistForPeer
2328
})

src/bitswap/wantlist.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@ const configure = require('../lib/configure')
55
const toUrlSearchParams = require('../lib/to-url-search-params')
66

77
module.exports = configure(api => {
8-
return async (options = {}) => {
8+
// eslint-disable-next-line valid-jsdoc
9+
/**
10+
* @type {import('../../../ipfs/src/core/components/bitswap/wantlist').WantlistFn<import('..').HttpOptions>}
11+
*/
12+
async function wantlist (options = {}) {
913
const res = await (await api.post('bitswap/wantlist', {
1014
timeout: options.timeout,
1115
signal: options.signal,
@@ -15,4 +19,5 @@ module.exports = configure(api => {
1519

1620
return (res.Keys || []).map(k => new CID(k['/']))
1721
}
22+
return wantlist
1823
})

src/block/get.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@ const configure = require('../lib/configure')
66
const toUrlSearchParams = require('../lib/to-url-search-params')
77

88
module.exports = configure(api => {
9-
return async (cid, options = {}) => {
9+
// eslint-disable-next-line valid-jsdoc
10+
/**
11+
* @type {import('../../../ipfs/src/core/components/block/get').BlockGet<import('..').HttpOptions>}
12+
*/
13+
async function get (cid, options = {}) {
1014
cid = new CID(cid)
1115

1216
const res = await api.post('block/get', {
@@ -21,4 +25,5 @@ module.exports = configure(api => {
2125

2226
return new Block(new Uint8Array(await res.arrayBuffer()), cid)
2327
}
28+
return get
2429
})

src/block/put.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,13 @@ const multipartRequest = require('../lib/multipart-request')
77
const configure = require('../lib/configure')
88
const toUrlSearchParams = require('../lib/to-url-search-params')
99
const anySignal = require('any-signal')
10-
const AbortController = require('abort-controller')
10+
const AbortController = require('abort-controller').default
1111

1212
module.exports = configure(api => {
13+
// eslint-disable-next-line valid-jsdoc
14+
/**
15+
* @type {import('../../../ipfs/src/core/components/block/put').BlockPut<import('..').HttpOptions>}
16+
*/
1317
async function put (data, options = {}) {
1418
if (Block.isBlock(data)) {
1519
const { name, length } = multihash.decode(data.cid.multihash)

src/config/replace.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const multipartRequest = require('../lib/multipart-request')
55
const configure = require('../lib/configure')
66
const toUrlSearchParams = require('../lib/to-url-search-params')
77
const anySignal = require('any-signal')
8-
const AbortController = require('abort-controller')
8+
const AbortController = require('abort-controller').default
99

1010
module.exports = configure(api => {
1111
return async (config, options = {}) => {

0 commit comments

Comments
 (0)