-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Replace node Buffers with Uint8Arrays #3220
Description
In order to treat browsers as first-class citizens, we should not use modules from node core unless we can absolutely guarantee that the code we are writing will not run in a browser.
The next generation of multiformats & IPLD modules will also be Uint8Arrays all the way down so embracing more modern formats will mean the upgrade path easier to follow when they are ready for use.
Modern JavaScript runtimes have TypedArrays such as Uint8Array backed by ArrayBuffers, as well as DataViews that wrap an ArrayBuffer and allow you to do bit-twiddly operations like writing little endian 32 bit floats at arbitrary offsets, etc.
Node's Buffer module pre-dates all of this but since node v3 it extends the Uint8Array class, so we should be able to treat Buffers as Uint8Arrays internally in our stack, though some dependencies may require Buffers as input until they too can be refactored.
PRs to modules
IPFS
- chore: update deps js-ipfsd-ctl#531
- fix: replace node buffers with uint8arrays js-ipfs-block-service#105
- chore: update repo migrations dep js-ipfs-repo#253
- fix: replace node buffers with uint8arrays js-ipfs-repo-migrations#25
- fix: replace node buffers with uint8arrays js-ipfs-unixfs#69
- fix: replace node buffers with uint8arrays js-ipfs-bitswap#251
- fix: replace node buffers with uint8arrays js-ipns#67
- fix: replace node buffers with uint8arrays js-ipfs-http-response#55
- refactor: update to [email protected] with Uint8Arrays interop#107
- feat: store pins in datastore instead of a DAG #2771
- chore: libp2p 0.29 integration #3237
IPLD
- fix: convert output of multihash.decode to buffer ipld/js-ipld-git#71
- fix: create buffers from decoded multihash digests ipld/js-ipld#287
- fix: replace node buffers with uint8arrays ipld/ipld-in-memory#18
- fix: update all deps to versions that return uint8arrays ipld/js-ipld#286
- fix: replace node buffers with uint8arrays ipld/js-ipld-block#54
- fix: update to latest cids and uint8array compatible deps ipld/js-ipld-zcash#60
- fix: replace node buffers with uint8arrays ipld/js-ipld-git#70
- fix: replace node buffers with uint8arrays ipld/js-ipld-ethereum#69
- fix: replace node buffers with uint8array ipld/js-ipld-bitcoin#65
- docs: replace node buffers with uint8arrays ipld/interface-ipld-format#55
- fix: replace node buffers with uint8arrays ipld/js-ipld-dag-cbor#134
libp2p
- fix: replace node buffers with uint8arrays libp2p/js-libp2p-mplex#114
- chore: update deps libp2p/js-libp2p-tcp#135
- fix: replace node buffers with uint8arrays libp2p/js-libp2p-bootstrap#106
- fix: replace node buffers with uint8arrays libp2p/js-libp2p-secio#124
- chore: update deps libp2p/js-libp2p-record#24
- chore: update deps libp2p/js-libp2p-tcp#134
- chore: update deps libp2p/js-libp2p-utils#9
- chore: update deps libp2p/js-libp2p-interfaces#57
- fix: replace node buffers with uint8arrays libp2p/js-libp2p-kad-dht#202
- fix: replace node buffers with uint8arrays libp2p/js-peer-id#127
- fix: replace node buffers with uint8arrays libp2p/js-libp2p-crypto#180
- fix: replace node buffers with uint8arrays libp2p/js-libp2p-floodsub#109
- fix: replace node buffers with uint8arrays libp2p/js-libp2p-pubsub#70
- fix: replace node buffers with uint8arrays ChainSafe/js-libp2p-gossipsub#118
- chore: upgrade deps libp2p/js-libp2p-mdns#97
- fix: replace node buffers with uint8arrays libp2p/js-libp2p-webrtc-star#244
- fix: replace node buffers with uint8arrays libp2p/js-libp2p-websockets#115
- chore: update libp2p-tcp libp2p/js-libp2p-interfaces#59
- chore: update deps to latest versions ChainSafe/js-libp2p-noise#70
- chore: update deps libp2p/js-libp2p-secio#125
- chore: update deps libp2p/js-libp2p-bootstrap#107
- chore: update deps libp2p/js-libp2p-kad-dht#203
- chore: update deps libp2p/js-libp2p-tcp#136
- fix: replace node buffers with uint8arrays libp2p/js-libp2p-delegated-content-routing#42
- chore: update deps libp2p/js-libp2p-delegated-peer-routing#35
- fix: replace node buffers with uint8arrays libp2p/js-libp2p#730
- fix: replace node buffers with uint8arrays libp2p/js-libp2p-daemon#41
- fix: replace node buffers with uint8arrays libp2p/js-libp2p-daemon-client#42
- fix: replace node buffers with uint8arrays libp2p/interop#42
Multiformats
- fix: replace node buffers with uint8arrays multiformats/js-cid#117
- chore: update deps multiformats/js-multiaddr-to-uri#45
- fix: replace node buffers with uint8arrays multiformats/js-mafmt#59
- fix: replace node buffers with uint8arrays multiformats/js-multiaddr#140
- fix: replace node buffers with uint8arrays multiformats/js-multicodec#63
- fix: replace node buffers with uint8arrays multiformats/js-multihashing-async#78
- fix: replace node buffers with uint8arrays multiformats/js-multihash#92
- fix: replace node buffers with uint8arrays multiformats/js-multistream-select#90
- chore: update deps multiformats/js-uri-to-multiaddr#12
- fix: replace node buffers with uint8arrays multiformats/js-cid-tool#10