pzp-conductor/test/util.js

61 lines
1.6 KiB
JavaScript

const OS = require('node:os')
const Path = require('node:path')
const rimraf = require('rimraf')
/** @type {string} */
// @ts-ignore
const caps = require('pzp-caps')
const Keypair = require('pzp-keypair')
function createPeer(config) {
if (config.name) {
const name = config.name
const tmp = OS.tmpdir()
config.global ??= {}
config.global.path ??= Path.join(tmp, `pzp-conduct-${name}-${Date.now()}`)
config.global.keypair ??= Keypair.generate('ed25519', name)
delete config.name
}
if (!config.global) {
throw new Error('need config.global in createPeer()')
}
if (!config.global.path) {
throw new Error('need config.global.path in createPeer()')
}
if (!config.global.keypair) {
throw new Error('need config.global.keypair in createPeer()')
}
rimraf.sync(config.global.path)
// @ts-ignore
return require('secret-stack/bare')()
// @ts-ignore
.use(require('secret-stack/plugins/net'))
.use(require('secret-handshake-ext/secret-stack'))
// @ts-ignore
.use(require('ssb-box'))
.use(require('pzp-db'))
.use(require('pzp-set'))
.use(require('pzp-dict'))
.use(require('pzp-goals'))
.use(require('pzp-sync'))
.use(require('pzp-gc'))
.use(require('../lib'))
.call(null, {
shse: { caps },
...config,
global: {
connections: {
incoming: {
net: [{ scope: 'device', transform: 'shse', port: null }],
},
outgoing: {
net: [{ transform: 'shse' }],
},
},
...config.global,
},
})
}
module.exports = { createPeer }