From 707550e708fca09977e8371a31965d78028c4be1 Mon Sep 17 00:00:00 2001 From: Jacob Karlsson Date: Mon, 20 May 2024 13:41:11 +0200 Subject: [PATCH] Create account when creating peer --- lib/index.js | 16 ++++++++++++++-- test/index.test.js | 31 ++++++++++--------------------- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/lib/index.js b/lib/index.js index e1a6918..dc85f0f 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,5 +1,6 @@ const { join } = require('node:path') const os = require('node:os') +const { promisify: p } = require('node:util') const Keypair = require('pzp-keypair') /** @@ -37,10 +38,10 @@ const Keypair = require('pzp-keypair') * }} Peer */ + /** * * @param {{ path?: string }=} opts - * @returns {Promise} */ async function createPeer(opts) { let { path } = opts ?? {} @@ -97,9 +98,20 @@ async function createPeer(opts) { await peer.db.loaded() + // @ts-ignore + const id = await p(peer.db.account.findOrCreate)({ subdomain: 'person' }) + /** @type {string} */ + const globalAccountID = id + + await p(peer.set.load)(id) + await p(peer.dict.load)(id) + await peer.net.start() - return peer + return { + peer, + account: globalAccountID, + } } module.exports = { diff --git a/test/index.test.js b/test/index.test.js index 732ee09..3a06776 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -1,31 +1,20 @@ const { test } = require('node:test') -const assert = require('node:assert') -const p = require('node:util').promisify const { createPeer } = require('../lib/') test('Basic createPeer', async (t) => { - const peer = await createPeer() + const { peer, account } = await createPeer() - // TODO: getting warning - //Warning: A resource generated asynchronous activity after the test ended. This activity created the error "Error: Cannot call values() before loading" which triggered an uncaughtException event, caught by the test runner. await new Promise((res, rej) => { - peer.db.account.create({ - subdomain: 'account', - _nonce: 'bob', - }, (err, account) => { - assert(!err) + peer.db.feed.publish({ + account, + domain: "post", + data: { + text: 'woo a post' + } + }, (err, rec) => { + if (err) return rej(err) - peer.db.feed.publish({ - account, - domain: "post", - data: { - text: 'woo a post' - } - }, (err, rec) => { - assert(!err) - - peer.close(() => res(null)) - }) + peer.close(() => res(null)) }) }) }) \ No newline at end of file