mirror of
https://github.com/orbitdb/orbitdb.git
synced 2025-03-30 15:08:28 +00:00
40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
import IPFSFactory from 'ipfsd-ctl'
|
|
import { testAPIs } from './test-apis.js'
|
|
|
|
/**
|
|
* Start an IPFS instance
|
|
* @param {Object} config [IPFS configuration to use]
|
|
* @return {[Promise<IPFS>]} [IPFS instance]
|
|
*/
|
|
export default (type, config = {}) => {
|
|
return new Promise((resolve, reject) => {
|
|
if (!testAPIs[type]) {
|
|
reject(new Error(`Wanted API type ${JSON.stringify(type)} is unknown. Available types: ${Object.keys(testAPIs).join(', ')}`))
|
|
}
|
|
|
|
// If we're starting a process, pass command line arguments to it
|
|
if (!config.args) {
|
|
config.args = ['--enable-pubsub-experiment']
|
|
}
|
|
|
|
// Spawn an IPFS daemon (type defined in)
|
|
IPFSFactory
|
|
.create(testAPIs[type])
|
|
.spawn(config, async (err, ipfsd) => {
|
|
if (err) {
|
|
reject(err)
|
|
}
|
|
|
|
// Monkey patch _peerInfo to the ipfs api/instance
|
|
// to make js-ipfs-api compatible with js-ipfs
|
|
// TODO: Get IPFS id via coherent API call (without it being asynchronous)
|
|
if (!ipfsd.api._peerInfo) {
|
|
const { id } = await ipfsd.api.id()
|
|
ipfsd.api._peerInfo = { id: { _idB58String: id } }
|
|
}
|
|
|
|
resolve(ipfsd)
|
|
})
|
|
})
|
|
}
|