@@ -10,16 +10,15 @@ const Multihashes = require('ipfs-core-utils/src/multihashes')
10
10
const Multibases = require ( 'ipfs-core-utils/src/multibases' )
11
11
const dagPb = require ( '@ipld/dag-pb' )
12
12
const dagCbor = require ( '@ipld/dag-cbor' )
13
- const raw = require ( 'multiformats/codecs/raw' )
14
- const json = require ( 'multiformats/codecs/json' )
15
- const { sha256, sha512 } = require ( 'multiformats/hashes/sha2' )
16
13
const { identity } = require ( 'multiformats/hashes/identity' )
17
- const { base58btc } = require ( 'multiformats/bases/base58 ' )
14
+ const { bases , hashes , codecs } = require ( 'multiformats/basics ' )
18
15
19
16
/**
20
17
* @typedef {import('./types').EndpointConfig } EndpointConfig
21
18
* @typedef {import('./types').Options } Options
22
19
* @typedef {import('multiformats/codecs/interface').BlockCodec<any, any> } BlockCodec
20
+ * @typedef {import('multiformats/hashes/interface').MultihashHasher } MultihashHasher
21
+ * @typedef {import('multiformats/bases/interface').MultibaseCodec<any> } MultibaseCodec
23
22
* @typedef {import('./types').IPFSHTTPClient } IPFSHTTPClient
24
23
*/
25
24
@@ -37,16 +36,33 @@ function create (options = {}) {
37
36
decode : ( id ) => id
38
37
}
39
38
40
- const bases = new Multibases ( {
41
- bases : [ base58btc ] . concat ( options . ipld && options . ipld . bases ? options . ipld . bases : [ ] ) ,
39
+ /** @type {MultibaseCodec[] } */
40
+ const multibaseCodecs = Object . values ( bases ) ;
41
+
42
+ ( options . ipld && options . ipld . bases ? options . ipld . bases : [ ] ) . forEach ( base => multibaseCodecs . push ( base ) )
43
+
44
+ const multibases = new Multibases ( {
45
+ bases : multibaseCodecs ,
42
46
loadBase : options . ipld && options . ipld . loadBase
43
47
} )
44
- const codecs = new Multicodecs ( {
45
- codecs : [ dagPb , dagCbor , raw , json , id ] . concat ( options . ipld ?. codecs || [ ] ) ,
48
+
49
+ /** @type {BlockCodec[] } */
50
+ const blockCodecs = Object . values ( codecs ) ;
51
+
52
+ [ dagPb , dagCbor , id ] . concat ( ( options . ipld && options . ipld . codecs ) || [ ] ) . forEach ( codec => blockCodecs . push ( codec ) )
53
+
54
+ const multicodecs = new Multicodecs ( {
55
+ codecs : blockCodecs ,
46
56
loadCodec : options . ipld && options . ipld . loadCodec
47
57
} )
48
- const hashers = new Multihashes ( {
49
- hashers : [ sha256 , sha512 , identity ] . concat ( options . ipld && options . ipld . hashers ? options . ipld . hashers : [ ] ) ,
58
+
59
+ /** @type {MultihashHasher[] } */
60
+ const multihashHashers = Object . values ( hashes ) ;
61
+
62
+ ( options . ipld && options . ipld . hashers ? options . ipld . hashers : [ ] ) . forEach ( hasher => multihashHashers . push ( hasher ) )
63
+
64
+ const multihashes = new Multihashes ( {
65
+ hashers : multihashHashers ,
50
66
loadHasher : options . ipld && options . ipld . loadHasher
51
67
} )
52
68
@@ -60,7 +76,7 @@ function create (options = {}) {
60
76
cat : require ( './cat' ) ( options ) ,
61
77
commands : require ( './commands' ) ( options ) ,
62
78
config : require ( './config' ) ( options ) ,
63
- dag : require ( './dag' ) ( codecs , options ) ,
79
+ dag : require ( './dag' ) ( multicodecs , options ) ,
64
80
dht : require ( './dht' ) ( options ) ,
65
81
diag : require ( './diag' ) ( options ) ,
66
82
dns : require ( './dns' ) ( options ) ,
@@ -74,7 +90,7 @@ function create (options = {}) {
74
90
ls : require ( './ls' ) ( options ) ,
75
91
mount : require ( './mount' ) ( options ) ,
76
92
name : require ( './name' ) ( options ) ,
77
- object : require ( './object' ) ( codecs , options ) ,
93
+ object : require ( './object' ) ( multicodecs , options ) ,
78
94
pin : require ( './pin' ) ( options ) ,
79
95
ping : require ( './ping' ) ( options ) ,
80
96
pubsub : require ( './pubsub' ) ( options ) ,
@@ -86,9 +102,9 @@ function create (options = {}) {
86
102
stop : require ( './stop' ) ( options ) ,
87
103
swarm : require ( './swarm' ) ( options ) ,
88
104
version : require ( './version' ) ( options ) ,
89
- bases,
90
- codecs,
91
- hashers
105
+ bases : multibases ,
106
+ codecs : multicodecs ,
107
+ hashers : multihashes
92
108
}
93
109
94
110
return client
0 commit comments