2019-06-23 18:46:22 +00:00
|
|
|
const ssbClient = require('ssb-client')
|
2019-06-28 16:13:35 +00:00
|
|
|
const secretStack = require('secret-stack')
|
|
|
|
const ssbConfig = require('ssb-config')
|
2019-06-30 20:08:31 +00:00
|
|
|
const debug = require('debug')('oasis')
|
2019-06-23 18:46:22 +00:00
|
|
|
|
2019-06-28 16:13:35 +00:00
|
|
|
const db = {
|
2019-06-23 18:46:22 +00:00
|
|
|
connect: function () {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
ssbClient((err, api) => {
|
|
|
|
if (err) reject(err)
|
|
|
|
resolve(api)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
2019-06-27 20:36:43 +00:00
|
|
|
/**
|
|
|
|
* @param {function} method
|
|
|
|
*/
|
2019-06-23 18:46:22 +00:00
|
|
|
get: function (method, ...opts) {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
method(...opts, (err, val) => {
|
|
|
|
if (err) return reject(err)
|
|
|
|
resolve(val)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
read: function (method, ...args) {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
resolve(method(...args))
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
2019-06-28 16:13:35 +00:00
|
|
|
|
2019-06-30 20:08:31 +00:00
|
|
|
debug.enabled = true
|
2019-06-28 16:13:35 +00:00
|
|
|
db.connect().then(() =>
|
2019-06-30 20:08:31 +00:00
|
|
|
debug('Using pre-existing Scuttlebutt server instead of starting one')
|
2019-06-28 16:13:35 +00:00
|
|
|
).catch(() => {
|
2019-06-30 20:08:31 +00:00
|
|
|
debug('Starting Scuttlebutt server')
|
2019-06-28 16:13:35 +00:00
|
|
|
|
2019-07-01 15:06:27 +00:00
|
|
|
const server = secretStack()
|
|
|
|
|
2019-06-28 16:13:35 +00:00
|
|
|
server
|
|
|
|
.use(require('ssb-db'))
|
2019-07-01 15:06:27 +00:00
|
|
|
.use(require('ssb-onion'))
|
|
|
|
.use(require('ssb-unix-socket'))
|
|
|
|
.use(require('ssb-no-auth'))
|
|
|
|
.use(require('ssb-plugins'))
|
2019-06-28 16:13:35 +00:00
|
|
|
.use(require('ssb-master'))
|
|
|
|
.use(require('ssb-gossip'))
|
|
|
|
.use(require('ssb-replicate'))
|
2019-07-01 15:06:27 +00:00
|
|
|
.use(require('ssb-friends'))
|
2019-06-28 16:13:35 +00:00
|
|
|
.use(require('ssb-blobs'))
|
2019-07-01 15:06:27 +00:00
|
|
|
.use(require('ssb-invite'))
|
|
|
|
.use(require('ssb-local'))
|
|
|
|
.use(require('ssb-logging'))
|
|
|
|
.use(require('ssb-query'))
|
|
|
|
.use(require('ssb-links'))
|
2019-06-28 16:13:35 +00:00
|
|
|
.use(require('ssb-ws'))
|
2019-07-01 15:06:27 +00:00
|
|
|
.use(require('ssb-ebt'))
|
|
|
|
.use(require('ssb-ooo'))
|
|
|
|
.use(require('ssb-backlinks'))
|
|
|
|
.use(require('ssb-about'))
|
|
|
|
|
2019-06-28 16:13:35 +00:00
|
|
|
server(ssbConfig)
|
|
|
|
})
|
|
|
|
|
|
|
|
module.exports = db
|