From 0cf3d1c70ac6618ffffe6a908b620789f30b19ca Mon Sep 17 00:00:00 2001 From: saul Date: Tue, 4 Apr 2023 09:58:25 +1200 Subject: [PATCH 1/9] Refactor EventEmitter to EventTarget. --- src/access-controllers/orbitdb.js | 11 ++++------- src/database.js | 11 +++++------ src/db/keyvalue-persisted.js | 6 +++--- src/sync.js | 17 ++++++++--------- 4 files changed, 20 insertions(+), 25 deletions(-) diff --git a/src/access-controllers/orbitdb.js b/src/access-controllers/orbitdb.js index 30d55a6f0..4d1d47c92 100644 --- a/src/access-controllers/orbitdb.js +++ b/src/access-controllers/orbitdb.js @@ -1,11 +1,10 @@ -import { EventEmitter } from 'events' import ensureACAddress from '../utils/ensure-ac-address.js' import IPFSAccessController from './ipfs.js' const type = 'orbitdb' const OrbitDBAccessController = ({ write } = {}) => async ({ orbitdb, identities, address }) => { - const events = new EventEmitter() + const events = new EventTarget() address = address || 'default-access-controller' write = write || [orbitdb.identity.id] @@ -14,11 +13,9 @@ const OrbitDBAccessController = ({ write } = {}) => async ({ orbitdb, identities const db = await orbitdb.open(ensureACAddress(address), { type: 'keyvalue', AccessController: IPFSAccessController({ write }) }) address = db.address - const onUpdate = (entry) => { - events.emit('update', entry) - } - - db.events.on('update', onUpdate) + db.events.addEventListener('update', event => { + events.dispatchEvent(new CustomEvent('update', { detail: event.detail })) + }) // Return true if entry is allowed to be added to the database const canAppend = async (entry) => { diff --git a/src/database.js b/src/database.js index 1fcd9a95f..8c388122a 100644 --- a/src/database.js +++ b/src/database.js @@ -1,4 +1,3 @@ -import { EventEmitter } from 'events' import PQueue from 'p-queue' import Sync from './sync.js' import { ComposedStorage, LRUStorage, IPFSBlockStorage, LevelStorage } from './storage/index.js' @@ -31,14 +30,14 @@ const Database = async ({ OpLog, ipfs, identity, address, name, access, director const log = await Log(identity, { logId: address, access, entryStorage, headsStorage, indexStorage }) - const events = new EventEmitter() + const events = new EventTarget() const queue = new PQueue({ concurrency: 1 }) const addOperation = async (op) => { const task = async () => { const entry = await log.append(op, { referencesCount }) await sync.add(entry) - events.emit('update', entry) + events.dispatchEvent(new CustomEvent('update', { detail: entry })) return entry.hash } const hash = await queue.add(task) @@ -52,7 +51,7 @@ const Database = async ({ OpLog, ipfs, identity, address, name, access, director if (entry) { const updated = await log.joinEntry(entry) if (updated) { - events.emit('update', entry) + events.dispatchEvent(new CustomEvent('update', { detail: entry })) } } } @@ -63,13 +62,13 @@ const Database = async ({ OpLog, ipfs, identity, address, name, access, director await sync.stop() await queue.onIdle() await log.close() - events.emit('close') + events.dispatchEvent(new Event('close')) } const drop = async () => { await queue.onIdle() await log.clear() - events.emit('drop') + events.dispatchEvent(new Event('drop')) } // Start the Sync protocol diff --git a/src/db/keyvalue-persisted.js b/src/db/keyvalue-persisted.js index 08c6bc549..386f27c95 100644 --- a/src/db/keyvalue-persisted.js +++ b/src/db/keyvalue-persisted.js @@ -54,7 +54,7 @@ const KeyValuePersisted = async ({ OpLog, Database, ipfs, identity, address, nam } const close = async () => { - events.off('update', task) + events.removeEventListener('update', task) await queue.onIdle() await index.close() await keyValueStore.close() @@ -62,14 +62,14 @@ const KeyValuePersisted = async ({ OpLog, Database, ipfs, identity, address, nam // TOD: rename to clear() const drop = async () => { - events.off('update', task) + events.removeEventListener('update', task) await queue.onIdle() await index.clear() await keyValueStore.drop() } // Listen for update events from the database and update the index on every update - events.on('update', task) + events.addEventListener('update', task) return { ...keyValueStore, diff --git a/src/sync.js b/src/sync.js index 676674961..bed85157f 100644 --- a/src/sync.js +++ b/src/sync.js @@ -1,6 +1,5 @@ import { pipe } from 'it-pipe' import PQueue from 'p-queue' -import { EventEmitter } from 'events' import { TimeoutController } from 'timeout-abort-controller' import pathJoin from './utils/path-join.js' @@ -33,8 +32,8 @@ const DefaultTimeout = 30000 // 30 seconds * @param {Object} params One or more parameters for configuring Sync. * @param {IPFS} params.ipfs An IPFS instance. Used for synchronizing peers. * @param {Log} params.log The Log instance to sync. - * @param {Object} params.events An event emitter. Defaults to an instance of - * EventEmitter. Events emitted are 'join', 'error' and 'leave'. + * @param {Object} params.events An event target. Defaults to an instance of + * EventTarget. Events emitted are 'join', 'error' and 'leave'. * @param {Function} params.onSynced A function that is called after the peer * has received heads from another peer. * @param {Boolean} params.start True if sync should start automatically, false @@ -51,14 +50,14 @@ const Sync = async ({ ipfs, log, events, onSynced, start, timeout }) => { const queue = new PQueue({ concurrency: 1 }) const peers = new Set() - events = events || new EventEmitter() + events = events || new EventTarget() timeout = timeout || DefaultTimeout let started = false const onPeerJoined = async (peerId) => { const heads = await log.heads() - events.emit('join', peerId, heads) + events.dispatchEvent(new CustomEvent('join', { detail: { peerId, heads } })) } const sendHeads = async (source) => { @@ -87,7 +86,7 @@ const Sync = async ({ ipfs, log, events, onSynced, start, timeout }) => { await pipe(stream, receiveHeads(peerId), sendHeads, stream) } catch (e) { peers.delete(peerId) - events.emit('error', e) + events.dispatchEvent(new CustomEvent('error', { detail: e })) } } @@ -114,7 +113,7 @@ const Sync = async ({ ipfs, log, events, onSynced, start, timeout }) => { // Skip peer, they don't have this database currently } else { peers.delete(peerId) - events.emit('error', e) + events.dispatchEvent(new CustomEvent('error', { detail: e })) } } finally { if (timeoutController) { @@ -123,7 +122,7 @@ const Sync = async ({ ipfs, log, events, onSynced, start, timeout }) => { } } else { peers.delete(peerId) - events.emit('leave', peerId) + events.dispatchEvent(new CustomEvent('leave', { detail: peerId })) } } queue.add(task) @@ -139,7 +138,7 @@ const Sync = async ({ ipfs, log, events, onSynced, start, timeout }) => { await onSynced(message.data) } } catch (e) { - events.emit('error', e) + events.dispatchEvent(new CustomEvent('error', { detail: e })) } } queue.add(task) From 19bd679d0b48598b13eae69101d0ab7f56bdfbd7 Mon Sep 17 00:00:00 2001 From: saul Date: Tue, 4 Apr 2023 10:31:16 +1200 Subject: [PATCH 2/9] Refactor the tests to use the EventTarget methods. --- .../orbit-db-access-controller.test.js | 4 +- test/database-replication.test.js | 48 +++++++++---------- test/database.test.js | 4 +- test/db/replication/document-store.test.js | 8 ++-- test/db/replication/event-store.test.js | 20 ++++---- .../db/replication/keyvalue-persisted.test.js | 20 ++++---- test/db/replication/keyvalue.test.js | 22 ++++----- test/orbitdb-multiple-databases.test.js | 8 ++-- test/orbitdb-open.test.js | 8 ++-- test/orbitdb-replication.test.js | 10 ++-- test/orbitdb-write-access.test.js | 26 +++++----- test/sync.test.js | 30 ++++++------ 12 files changed, 104 insertions(+), 104 deletions(-) diff --git a/test/access-controllers/orbit-db-access-controller.test.js b/test/access-controllers/orbit-db-access-controller.test.js index df26908bf..e5d08b2aa 100644 --- a/test/access-controllers/orbit-db-access-controller.test.js +++ b/test/access-controllers/orbit-db-access-controller.test.js @@ -135,7 +135,7 @@ describe('OrbitDBAccessController', function () { update = true } - accessController.events.on('update', onUpdate) + accessController.events.addEventListener('update', event => onUpdate(event.detail)) await accessController.grant('read', 'AXES') @@ -265,7 +265,7 @@ describe('OrbitDBAccessController', function () { update = true } - accessController.events.on('update', onUpdate) + accessController.events.addEventListener('update', event => onUpdate(event.detail)) await accessController.revoke('admin', 'cats') diff --git a/test/database-replication.test.js b/test/database-replication.test.js index edd2f2c7a..df31555b2 100644 --- a/test/database-replication.test.js +++ b/test/database-replication.test.js @@ -86,7 +86,7 @@ describe('Database - Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = (peerId, heads) => { + const onConnected = ({peerId, heads}) => { replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) } @@ -94,8 +94,8 @@ describe('Database - Replication', function () { replicated = expectedEntryHash !== null && entry.hash === expectedEntryHash } - db2.events.on('join', onConnected) - db2.events.on('update', onUpdate) + db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('update', event => onUpdate(event.detail)) await db1.addOperation({ op: 'PUT', key: 1, value: 'record 1 on db 1' }) await db1.addOperation({ op: 'PUT', key: 2, value: 'record 2 on db 1' }) @@ -121,7 +121,7 @@ describe('Database - Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = (peerId, heads) => { + const onConnected = ({peerId, heads}) => { replicated = expectedEntryHash && heads.map(e => e.hash).includes(expectedEntryHash) } @@ -129,8 +129,8 @@ describe('Database - Replication', function () { replicated = expectedEntryHash && entry.hash === expectedEntryHash } - db2.events.on('join', onConnected) - db2.events.on('update', onUpdate) + db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('update', event => onUpdate(event.detail)) await db1.addOperation({ op: 'PUT', key: 1, value: 'record 1 on db 1' }) @@ -165,7 +165,7 @@ describe('Database - Replication', function () { it('adds an operation before db2 is instantiated', async () => { let connected = false - const onConnected = (peerId, heads) => { + const onConnected = ({peerId, heads}) => { connected = true } @@ -178,7 +178,7 @@ describe('Database - Replication', function () { db2 = await Database({ OpLog, ipfs: ipfs2, identity: testIdentity2, address: databaseId, accessController, directory: './orbitdb2' }) - db2.events.on('join', onConnected) + db2.events.addEventListener('join', event => onConnected(event.detail)) await waitFor(() => connected, () => true) @@ -206,16 +206,16 @@ describe('Database - Replication', function () { let connected1 = false let connected2 = false - const onConnected1 = (peerId, heads) => { + const onConnected1 = ({peerId, heads}) => { connected1 = true } - const onConnected2 = (peerId, heads) => { + const onConnected2 = ({peerId, heads}) => { connected2 = true } - db1.events.on('join', onConnected1) - db2.events.on('join', onConnected2) + db1.events.addEventListener('join', event => onConnected1(event.detail)) + db2.events.addEventListener('join', event => onConnected2(event.detail)) await db1.addOperation({ op: 'PUT', key: 1, value: 'record 1 on db 1' }) await db1.addOperation({ op: 'PUT', key: 2, value: 'record 2 on db 1' }) @@ -252,11 +252,11 @@ describe('Database - Replication', function () { let updateCount1 = 0 let updateCount2 = 0 - const onConnected1 = (peerId, heads) => { + const onConnected1 = ({peerId, heads}) => { connected1 = true } - const onConnected2 = (peerId, heads) => { + const onConnected2 = ({peerId, heads}) => { connected2 = true } @@ -268,10 +268,10 @@ describe('Database - Replication', function () { ++updateCount2 } - db1.events.on('join', onConnected1) - db2.events.on('join', onConnected2) - db1.events.on('update', onUpdate1) - db2.events.on('update', onUpdate2) + db1.events.addEventListener('join', event => onConnected1(event.detail)) + db2.events.addEventListener('join', event => onConnected2(event.detail)) + db1.events.addEventListener('update', event => onUpdate1(event.detail)) + db2.events.addEventListener('update', event => onUpdate2(event.detail)) await waitFor(() => connected1, () => true) await waitFor(() => connected2, () => true) @@ -292,11 +292,11 @@ describe('Database - Replication', function () { let updateCount1 = 0 let updateCount2 = 0 - const onConnected1 = async (peerId, heads) => { + const onConnected1 = async ({peerId, heads}) => { connected1 = true } - const onConnected2 = async (peerId, heads) => { + const onConnected2 = async ({peerId, heads}) => { connected2 = true } @@ -308,10 +308,10 @@ describe('Database - Replication', function () { ++updateCount2 } - db1.events.on('join', onConnected1) - db2.events.on('join', onConnected2) - db1.events.on('update', onUpdate1) - db2.events.on('update', onUpdate2) + db1.events.addEventListener('join', event => onConnected1(event.detail)) + db2.events.addEventListener('join', event => onConnected2(event.detail)) + db1.events.addEventListener('update', event => onUpdate1(event.detail)) + db2.events.addEventListener('update', event => onUpdate2(event.detail)) await waitFor(() => connected1, () => true) await waitFor(() => connected2, () => true) diff --git a/test/database.test.js b/test/database.test.js index ef59d0ed8..423c7d7d7 100644 --- a/test/database.test.js +++ b/test/database.test.js @@ -144,7 +144,7 @@ describe('Database', function () { closed = true } - db.events.on('close', onClose) + db.events.addEventListener('close', onClose) await db.close() @@ -157,7 +157,7 @@ describe('Database', function () { dropped = true } - db.events.on('drop', onDrop) + db.events.addEventListener('drop', onDrop) await db.drop() diff --git a/test/db/replication/document-store.test.js b/test/db/replication/document-store.test.js index 83dbcd72a..b5bc1dbe4 100644 --- a/test/db/replication/document-store.test.js +++ b/test/db/replication/document-store.test.js @@ -83,16 +83,16 @@ describe('Documents Database Replication', function () { let connected1 = false let connected2 = false - const onConnected1 = async (peerId, heads) => { + const onConnected1 = async ({peerId, heads}) => { connected1 = true } - const onConnected2 = async (peerId, heads) => { + const onConnected2 = async ({peerId, heads}) => { connected2 = true } - db1.events.on('join', onConnected1) - db2.events.on('join', onConnected2) + db1.events.addEventListener('join', event => onConnected1(event.detail)) + db2.events.addEventListener('join', event => onConnected2(event.detail)) await db1.put({ _id: 1, msg: 'record 1 on db 1' }) await db2.put({ _id: 2, msg: 'record 2 on db 2' }) diff --git a/test/db/replication/event-store.test.js b/test/db/replication/event-store.test.js index 8485f67b1..59bbf675d 100644 --- a/test/db/replication/event-store.test.js +++ b/test/db/replication/event-store.test.js @@ -88,7 +88,7 @@ describe('Events Database Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = (peerId, heads) => { + const onConnected = ({peerId, heads}) => { replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) } @@ -103,11 +103,11 @@ describe('Events Database Replication', function () { db1 = await EventStore({ OpLog, Database, ipfs: ipfs1, identity: testIdentity1, address: databaseId, accessController, directory: './orbitdb1' }) db2 = await EventStore({ OpLog, Database, ipfs: ipfs2, identity: testIdentity2, address: databaseId, accessController, directory: './orbitdb2' }) - db2.events.on('join', onConnected) - db2.events.on('update', onUpdate) + db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('update', event => onUpdate(event.detail)) - db2.events.on('error', onError) - db1.events.on('error', onError) + db1.events.addEventListener('error', event => onError(event.detail)) + db2.events.addEventListener('error', event => onError(event.detail)) await db1.add(expected[0]) await db1.add(expected[1]) @@ -137,7 +137,7 @@ describe('Events Database Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = (peerId, heads) => { + const onConnected = ({peerId, heads}) => { replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) } @@ -149,11 +149,11 @@ describe('Events Database Replication', function () { console.error(err) } - db2.events.on('join', onConnected) - db2.events.on('update', onUpdate) + db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('update', event => onUpdate(event.detail)) - db2.events.on('error', onError) - db1.events.on('error', onError) + db1.events.addEventListener('error', event => onError(event.detail)) + db2.events.addEventListener('error', event => onError(event.detail)) await db1.add(expected[0]) await db1.add(expected[1]) diff --git a/test/db/replication/keyvalue-persisted.test.js b/test/db/replication/keyvalue-persisted.test.js index 255e6cee5..c1e6181a3 100644 --- a/test/db/replication/keyvalue-persisted.test.js +++ b/test/db/replication/keyvalue-persisted.test.js @@ -77,7 +77,7 @@ describe('KeyValue-persisted Database Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = (peerId, heads) => { + const onConnected = ({peerId, heads}) => { replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) } @@ -92,11 +92,11 @@ describe('KeyValue-persisted Database Replication', function () { kv1 = await KeyValuePersisted({ KeyValue, OpLog, Database, ipfs: ipfs1, identity: testIdentity1, address: databaseId, accessController, directory: './orbitdb1' }) kv2 = await KeyValuePersisted({ KeyValue, OpLog, Database, ipfs: ipfs2, identity: testIdentity2, address: databaseId, accessController, directory: './orbitdb2' }) - kv2.events.on('join', onConnected) - kv2.events.on('update', onUpdate) + kv2.events.addEventListener('join', event => onConnected(event.detail)) + kv2.events.addEventListener('update', event => onUpdate(event.detail)) - kv2.events.on('error', onError) - kv1.events.on('error', onError) + kv1.events.addEventListener('error', event => onError(event.detail)) + kv2.events.addEventListener('error', event => onError(event.detail)) await kv1.set('init', true) await kv1.set('hello', 'friend') @@ -144,7 +144,7 @@ describe('KeyValue-persisted Database Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = (peerId, heads) => { + const onConnected = ({peerId, heads}) => { replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) } @@ -159,11 +159,11 @@ describe('KeyValue-persisted Database Replication', function () { kv1 = await KeyValuePersisted({ KeyValue, OpLog, Database, ipfs: ipfs1, identity: testIdentity1, address: databaseId, accessController, directory: './orbitdb1' }) kv2 = await KeyValuePersisted({ KeyValue, OpLog, Database, ipfs: ipfs2, identity: testIdentity2, address: databaseId, accessController, directory: './orbitdb2' }) - kv2.events.on('join', onConnected) - kv2.events.on('update', onUpdate) + kv2.events.addEventListener('join', event => onConnected(event.detail)) + kv2.events.addEventListener('update', event => onUpdate(event.detail)) - kv2.events.on('error', onError) - kv1.events.on('error', onError) + kv1.events.addEventListener('error', event => onError(event.detail)) + kv2.events.addEventListener('error', event => onError(event.detail)) await kv1.set('init', true) await kv1.set('hello', 'friend') diff --git a/test/db/replication/keyvalue.test.js b/test/db/replication/keyvalue.test.js index c62606eb8..b148d5cd9 100644 --- a/test/db/replication/keyvalue.test.js +++ b/test/db/replication/keyvalue.test.js @@ -77,7 +77,7 @@ describe('KeyValue Database Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = (peerId, heads) => { + const onConnected = ({peerId, heads}) => { replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) } @@ -92,11 +92,11 @@ describe('KeyValue Database Replication', function () { kv1 = await KeyValue({ OpLog, Database, ipfs: ipfs1, identity: testIdentity1, address: databaseId, accessController, directory: './orbitdb1' }) kv2 = await KeyValue({ OpLog, Database, ipfs: ipfs2, identity: testIdentity2, address: databaseId, accessController, directory: './orbitdb2' }) - kv2.events.on('join', onConnected) - kv2.events.on('update', onUpdate) + kv2.events.addEventListener('join', event => onConnected(event.detail)) + kv2.events.addEventListener('update', event => onUpdate(event.detail)) - kv2.events.on('error', onError) - kv1.events.on('error', onError) + kv1.events.addEventListener('error', event => onError(event.detail)) + kv2.events.addEventListener('error', event => onError(event.detail)) await kv1.set('init', true) await kv1.set('hello', 'friend') @@ -144,7 +144,7 @@ describe('KeyValue Database Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = (peerId, heads) => { + const onConnected = ({peerId, heads}) => { replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) } @@ -159,11 +159,11 @@ describe('KeyValue Database Replication', function () { kv1 = await KeyValue({ OpLog, Database, ipfs: ipfs1, identity: testIdentity1, address: databaseId, accessController, directory: './orbitdb1' }) kv2 = await KeyValue({ OpLog, Database, ipfs: ipfs2, identity: testIdentity2, address: databaseId, accessController, directory: './orbitdb2' }) - kv2.events.on('join', onConnected) - kv1.events.on('join', onConnected) - kv2.events.on('update', onUpdate) - kv2.events.on('error', onError) - kv1.events.on('error', onError) + kv1.events.addEventListener('join', event => onConnected(event.detail)) + kv2.events.addEventListener('join', event => onConnected(event.detail)) + kv2.events.addEventListener('update', event => onUpdate(event.detail)) + kv1.events.addEventListener('error', event => onError(event.detail)) + kv2.events.addEventListener('error', event => onError(event.detail)) await kv1.set('init', true) await kv1.set('hello', 'friend') diff --git a/test/orbitdb-multiple-databases.test.js b/test/orbitdb-multiple-databases.test.js index e6e153c7d..e5b82cc4a 100644 --- a/test/orbitdb-multiple-databases.test.js +++ b/test/orbitdb-multiple-databases.test.js @@ -90,11 +90,11 @@ describe('orbit-db - Multiple Databases', function () { let connected1Count = 0 let connected2Count = 0 - const onConnected1 = async (peerId, heads) => { + const onConnected1 = async ({peerId, heads}) => { ++connected1Count } - const onConnected2 = async (peerId, heads) => { + const onConnected2 = async ({peerId, heads}) => { ++connected2Count } @@ -106,14 +106,14 @@ describe('orbit-db - Multiple Databases', function () { // Open the databases on the first node for (const dbInterface of databaseInterfaces) { const db = await dbInterface.open(orbitdb1, dbInterface.name, options) - db.events.on('join', onConnected1) + db.events.addEventListener('join', event => onConnected1(event.detail)) localDatabases.push(db) } for (const [index, dbInterface] of databaseInterfaces.entries()) { const address = localDatabases[index].address.toString() const db = await dbInterface.open(orbitdb2, address, options) - db.events.on('join', onConnected2) + db.events.addEventListener('join', event => onConnected2(event.detail)) remoteDatabases.push(db) } diff --git a/test/orbitdb-open.test.js b/test/orbitdb-open.test.js index 8e9f037ca..f55b10244 100644 --- a/test/orbitdb-open.test.js +++ b/test/orbitdb-open.test.js @@ -309,7 +309,7 @@ describe('Open databases', function () { console.error(err) } - const onConnected = async (peerId, heads) => { + const onConnected = async ({peerId, heads}) => { connected = true } @@ -319,9 +319,9 @@ describe('Open databases', function () { db2 = await orbitdb2.open(address) - db2.events.on('error', onError) - db2.events.on('update', onUpdate) - db2.events.on('join', onConnected) + db2.events.addEventListener('error', event => onError(event.detail)) + db2.events.addEventListener('update', event => onUpdate(event.detail)) + db2.events.addEventListener('join', event => onConnected(event.detail)) await waitFor(() => connected, () => true) await waitFor(() => updateCount > 0, () => true) diff --git a/test/orbitdb-replication.test.js b/test/orbitdb-replication.test.js index d9629a07c..80c508071 100644 --- a/test/orbitdb-replication.test.js +++ b/test/orbitdb-replication.test.js @@ -61,7 +61,7 @@ describe('Replicating databases', function () { let replicated = false - const onJoin = async (peerId, heads) => { + const onJoin = async ({peerId, heads}) => { const head = (await db2.log.heads())[0] if (head && head.clock.time === amount) { replicated = true @@ -80,10 +80,10 @@ describe('Replicating databases', function () { db2 = await orbitdb2.open(db1.address) - db2.events.on('join', onJoin) - db2.events.on('update', onUpdated) - db2.events.on('error', onError) - db1.events.on('error', onError) + db2.events.addEventListener('join', event => onJoin(event.detail)) + db2.events.addEventListener('update', event => onUpdated(event.detail)) + db1.events.addEventListener('error', event => onError(event.detail)) + db2.events.addEventListener('error', event => onError(event.detail)) await waitFor(() => replicated, () => true) diff --git a/test/orbitdb-write-access.test.js b/test/orbitdb-write-access.test.js index 7715407ce..8e438bf70 100644 --- a/test/orbitdb-write-access.test.js +++ b/test/orbitdb-write-access.test.js @@ -52,14 +52,14 @@ describe('Write Permissions', function () { let err let connected = false - const onConnected = async (peerId, heads) => { + const onConnected = async ({peerId, heads}) => { connected = true } const db1 = await orbitdb1.open('write-test') const db2 = await orbitdb2.open(db1.address) - db2.events.on('join', onConnected) + db2.events.addEventListener('join', event => onConnected(event.detail)) await waitFor(() => connected, () => true) @@ -81,7 +81,7 @@ describe('Write Permissions', function () { let connected = false let updateCount = 0 - const onConnected = async (peerId, heads) => { + const onConnected = async ({peerId, heads}) => { connected = true } @@ -92,8 +92,8 @@ describe('Write Permissions', function () { const db1 = await orbitdb1.open('write-test', { AccessController: IPFSAccessController({ write: ['*'] }) }) const db2 = await orbitdb2.open(db1.address) - db2.events.on('join', onConnected) - db2.events.on('update', onUpdate) + db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('update', event => onUpdate(event.detail)) await waitFor(() => connected, () => true) @@ -121,7 +121,7 @@ describe('Write Permissions', function () { ] }) } - const onConnected = async (peerId, heads) => { + const onConnected = async ({peerId, heads}) => { connected = true } @@ -132,8 +132,8 @@ describe('Write Permissions', function () { const db1 = await orbitdb1.open('write-test', options) const db2 = await orbitdb2.open(db1.address) - db2.events.on('join', onConnected) - db2.events.on('update', onUpdate) + db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('update', event => onUpdate(event.detail)) await waitFor(() => connected, () => true) @@ -160,14 +160,14 @@ describe('Write Permissions', function () { }) } - const onConnected = async (peerId, heads) => { + const onConnected = async ({peerId, heads}) => { connected = true } const db1 = await orbitdb1.open('write-test', options) const db2 = await orbitdb2.open(db1.address) - db2.events.on('join', onConnected) + db2.events.addEventListener('join', event => onConnected(event.detail)) await waitFor(() => connected, () => true) @@ -189,7 +189,7 @@ describe('Write Permissions', function () { let connected = false let updateCount = 0 - const onConnected = async (peerId, heads) => { + const onConnected = async ({peerId, heads}) => { connected = true } @@ -200,8 +200,8 @@ describe('Write Permissions', function () { const db1 = await orbitdb1.open('write-test', { AccessController: OrbitDBAccessController() }) const db2 = await orbitdb2.open(db1.address, { AccessController: OrbitDBAccessController() }) - db2.events.on('join', onConnected) - db2.events.on('update', onUpdate) + db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('update', event => onUpdate(event.detail)) await waitFor(() => connected, () => true) diff --git a/test/sync.test.js b/test/sync.test.js index 03dbf63c0..d26711d05 100644 --- a/test/sync.test.js +++ b/test/sync.test.js @@ -148,7 +148,7 @@ describe('Sync protocol', function () { } } - const onJoin = (peerId, heads) => { + const onJoin = ({peerId, heads}) => { joinEventFired = true } @@ -157,8 +157,8 @@ describe('Sync protocol', function () { sync1 = await Sync({ ipfs: ipfs1, log: log1, onSynced: () => {} }) sync2 = await Sync({ ipfs: ipfs2, log: log2, onSynced }) - sync1.events.on('join', onJoin) - sync2.events.on('join', onJoin) + sync1.events.addEventListener('join', event => onJoin(event.detail)) + sync2.events.addEventListener('join', event => onJoin(event.detail)) await waitFor(() => joinEventFired, () => true) await waitFor(() => syncedEventFired, () => true) @@ -210,15 +210,15 @@ describe('Sync protocol', function () { } } - const onJoin = (peerId, heads) => { + const onJoin = ({peerId, heads}) => { joinEventFired = true } sync1 = await Sync({ ipfs: ipfs1, log: log1, onSynced: () => {} }) sync2 = await Sync({ ipfs: ipfs2, log: log2, onSynced }) - sync1.events.on('join', onJoin) - sync2.events.on('join', onJoin) + sync1.events.addEventListener('join', event => onJoin(event.detail)) + sync2.events.addEventListener('join', event => onJoin(event.detail)) await waitFor(() => joinEventFired, () => true) }) @@ -347,7 +347,7 @@ describe('Sync protocol', function () { sync1 = await Sync({ ipfs: ipfs1, log: log1 }) sync2 = await Sync({ ipfs: ipfs2, log: log2, onSynced }) - sync1.events.on('leave', onLeave) + sync1.events.addEventListener('leave', event => onLeave(event.detail)) await sync1.add(await log1.append('hello1')) await sync1.add(await log1.append('hello2')) @@ -426,7 +426,7 @@ describe('Sync protocol', function () { sync1 = await Sync({ ipfs: ipfs1, log: log1 }) sync2 = await Sync({ ipfs: ipfs2, log: log2, onSynced }) - sync2.events.on('leave', onLeave) + sync2.events.addEventListener('leave', event => onLeave(event.detail)) await sync1.add(await log1.append('hello1')) await sync1.add(await log1.append('hello2')) @@ -577,8 +577,8 @@ describe('Sync protocol', function () { err = error } - sync1.events.on('error', onError) - sync2.events.on('error', onError) + sync1.events.addEventListener('error', event => onError(event.detail)) + sync2.events.addEventListener('error', event => onError(event.detail)) await sync2.start() @@ -604,7 +604,7 @@ describe('Sync protocol', function () { const log1 = await Log(testIdentity1, { logId: 'synclog3' }) const log2 = await Log(testIdentity2, { logId: 'synclog3' }) - const onJoin = (peerId, heads) => { + const onJoin = ({peerId, heads}) => { joinEventFired = true joiningPeerId = peerId receivedHeads = heads @@ -621,16 +621,16 @@ describe('Sync protocol', function () { } const onSynced = (bytes) => { - sync2.events.emit('error', new Error('Sync Error')) + sync2.events.dispatchEvent(new CustomEvent('error', { detail: new Error('Sync Error') })) } await log1.append('hello!') sync1 = await Sync({ ipfs: ipfs1, log: log1, onSynced }) sync2 = await Sync({ ipfs: ipfs2, log: log2, onSynced }) - sync1.events.on('join', onJoin) - sync1.events.on('leave', onLeave) - sync2.events.on('error', onError) + sync1.events.addEventListener('join', event => onJoin(event.detail)) + sync1.events.addEventListener('leave', event => onLeave(event.detail)) + sync2.events.addEventListener('error', event => onError(event.detail)) await waitFor(() => joinEventFired, () => true) await waitFor(() => errorEventFired, () => true) From ec7829287069c50d9e3fc7f41a1649e94dfcf9ae Mon Sep 17 00:00:00 2001 From: saul Date: Tue, 4 Apr 2023 10:31:56 +1200 Subject: [PATCH 3/9] Fix missed EventTarget on close call. --- src/OrbitDB.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/OrbitDB.js b/src/OrbitDB.js index ceabf5e5b..bbdb8ba16 100644 --- a/src/OrbitDB.js +++ b/src/OrbitDB.js @@ -115,7 +115,7 @@ const OrbitDB = async ({ ipfs, id, identity, keystore, directory } = {}) => { const db = await DatabaseModel({ OpLog, Database, ipfs, identity, address: address.toString(), name, access: accessController, directory, meta, syncAutomatically: sync != null ? sync : true }) - db.events.on('close', onDatabaseClosed(address.toString())) + db.events.addEventListener('close', onDatabaseClosed(address.toString())) databases[address.toString()] = db From 80fb9782032c7697f250304ccdacd9ad0cb62c75 Mon Sep 17 00:00:00 2001 From: saul Date: Tue, 4 Apr 2023 10:47:20 +1200 Subject: [PATCH 4/9] Linting. --- src/db/keyvalue-persisted.js | 2 +- .../orbit-db-access-controller.test.js | 2 +- test/database-replication.test.js | 42 +++++++++---------- test/database.test.js | 4 +- test/db/replication/document-store.test.js | 8 ++-- test/db/replication/event-store.test.js | 18 ++++---- .../db/replication/keyvalue-persisted.test.js | 20 ++++----- test/db/replication/keyvalue.test.js | 22 +++++----- test/orbitdb-multiple-databases.test.js | 8 ++-- test/orbitdb-open.test.js | 8 ++-- test/orbitdb-replication.test.js | 10 ++--- test/orbitdb-write-access.test.js | 26 ++++++------ test/sync.test.js | 28 ++++++------- 13 files changed, 99 insertions(+), 99 deletions(-) diff --git a/src/db/keyvalue-persisted.js b/src/db/keyvalue-persisted.js index 386f27c95..21212eb6f 100644 --- a/src/db/keyvalue-persisted.js +++ b/src/db/keyvalue-persisted.js @@ -69,7 +69,7 @@ const KeyValuePersisted = async ({ OpLog, Database, ipfs, identity, address, nam } // Listen for update events from the database and update the index on every update - events.addEventListener('update', task) + events.addEventListener('update', task) return { ...keyValueStore, diff --git a/test/access-controllers/orbit-db-access-controller.test.js b/test/access-controllers/orbit-db-access-controller.test.js index e5d08b2aa..a67a1d72f 100644 --- a/test/access-controllers/orbit-db-access-controller.test.js +++ b/test/access-controllers/orbit-db-access-controller.test.js @@ -265,7 +265,7 @@ describe('OrbitDBAccessController', function () { update = true } - accessController.events.addEventListener('update', event => onUpdate(event.detail)) + accessController.events.addEventListener('update', event => onUpdate(event.detail)) await accessController.revoke('admin', 'cats') diff --git a/test/database-replication.test.js b/test/database-replication.test.js index df31555b2..04024ac0b 100644 --- a/test/database-replication.test.js +++ b/test/database-replication.test.js @@ -86,7 +86,7 @@ describe('Database - Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = ({peerId, heads}) => { + const onConnected = ({ peerId, heads }) => { replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) } @@ -121,7 +121,7 @@ describe('Database - Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = ({peerId, heads}) => { + const onConnected = ({ peerId, heads }) => { replicated = expectedEntryHash && heads.map(e => e.hash).includes(expectedEntryHash) } @@ -129,8 +129,8 @@ describe('Database - Replication', function () { replicated = expectedEntryHash && entry.hash === expectedEntryHash } - db2.events.addEventListener('join', event => onConnected(event.detail)) - db2.events.addEventListener('update', event => onUpdate(event.detail)) + db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('update', event => onUpdate(event.detail)) await db1.addOperation({ op: 'PUT', key: 1, value: 'record 1 on db 1' }) @@ -165,7 +165,7 @@ describe('Database - Replication', function () { it('adds an operation before db2 is instantiated', async () => { let connected = false - const onConnected = ({peerId, heads}) => { + const onConnected = ({ peerId, heads }) => { connected = true } @@ -206,16 +206,16 @@ describe('Database - Replication', function () { let connected1 = false let connected2 = false - const onConnected1 = ({peerId, heads}) => { + const onConnected1 = ({ peerId, heads }) => { connected1 = true } - const onConnected2 = ({peerId, heads}) => { + const onConnected2 = ({ peerId, heads }) => { connected2 = true } - db1.events.addEventListener('join', event => onConnected1(event.detail)) - db2.events.addEventListener('join', event => onConnected2(event.detail)) + db1.events.addEventListener('join', event => onConnected1(event.detail)) + db2.events.addEventListener('join', event => onConnected2(event.detail)) await db1.addOperation({ op: 'PUT', key: 1, value: 'record 1 on db 1' }) await db1.addOperation({ op: 'PUT', key: 2, value: 'record 2 on db 1' }) @@ -252,11 +252,11 @@ describe('Database - Replication', function () { let updateCount1 = 0 let updateCount2 = 0 - const onConnected1 = ({peerId, heads}) => { + const onConnected1 = ({ peerId, heads }) => { connected1 = true } - const onConnected2 = ({peerId, heads}) => { + const onConnected2 = ({ peerId, heads }) => { connected2 = true } @@ -268,10 +268,10 @@ describe('Database - Replication', function () { ++updateCount2 } - db1.events.addEventListener('join', event => onConnected1(event.detail)) - db2.events.addEventListener('join', event => onConnected2(event.detail)) - db1.events.addEventListener('update', event => onUpdate1(event.detail)) - db2.events.addEventListener('update', event => onUpdate2(event.detail)) + db1.events.addEventListener('join', event => onConnected1(event.detail)) + db2.events.addEventListener('join', event => onConnected2(event.detail)) + db1.events.addEventListener('update', event => onUpdate1(event.detail)) + db2.events.addEventListener('update', event => onUpdate2(event.detail)) await waitFor(() => connected1, () => true) await waitFor(() => connected2, () => true) @@ -292,11 +292,11 @@ describe('Database - Replication', function () { let updateCount1 = 0 let updateCount2 = 0 - const onConnected1 = async ({peerId, heads}) => { + const onConnected1 = async ({ peerId, heads }) => { connected1 = true } - const onConnected2 = async ({peerId, heads}) => { + const onConnected2 = async ({ peerId, heads }) => { connected2 = true } @@ -308,10 +308,10 @@ describe('Database - Replication', function () { ++updateCount2 } - db1.events.addEventListener('join', event => onConnected1(event.detail)) - db2.events.addEventListener('join', event => onConnected2(event.detail)) - db1.events.addEventListener('update', event => onUpdate1(event.detail)) - db2.events.addEventListener('update', event => onUpdate2(event.detail)) + db1.events.addEventListener('join', event => onConnected1(event.detail)) + db2.events.addEventListener('join', event => onConnected2(event.detail)) + db1.events.addEventListener('update', event => onUpdate1(event.detail)) + db2.events.addEventListener('update', event => onUpdate2(event.detail)) await waitFor(() => connected1, () => true) await waitFor(() => connected2, () => true) diff --git a/test/database.test.js b/test/database.test.js index 423c7d7d7..56cd6d3e9 100644 --- a/test/database.test.js +++ b/test/database.test.js @@ -144,7 +144,7 @@ describe('Database', function () { closed = true } - db.events.addEventListener('close', onClose) + db.events.addEventListener('close', onClose) await db.close() @@ -157,7 +157,7 @@ describe('Database', function () { dropped = true } - db.events.addEventListener('drop', onDrop) + db.events.addEventListener('drop', onDrop) await db.drop() diff --git a/test/db/replication/document-store.test.js b/test/db/replication/document-store.test.js index b5bc1dbe4..905c0eb0e 100644 --- a/test/db/replication/document-store.test.js +++ b/test/db/replication/document-store.test.js @@ -83,16 +83,16 @@ describe('Documents Database Replication', function () { let connected1 = false let connected2 = false - const onConnected1 = async ({peerId, heads}) => { + const onConnected1 = async ({ peerId, heads }) => { connected1 = true } - const onConnected2 = async ({peerId, heads}) => { + const onConnected2 = async ({ peerId, heads }) => { connected2 = true } - db1.events.addEventListener('join', event => onConnected1(event.detail)) - db2.events.addEventListener('join', event => onConnected2(event.detail)) + db1.events.addEventListener('join', event => onConnected1(event.detail)) + db2.events.addEventListener('join', event => onConnected2(event.detail)) await db1.put({ _id: 1, msg: 'record 1 on db 1' }) await db2.put({ _id: 2, msg: 'record 2 on db 2' }) diff --git a/test/db/replication/event-store.test.js b/test/db/replication/event-store.test.js index 59bbf675d..b5d423197 100644 --- a/test/db/replication/event-store.test.js +++ b/test/db/replication/event-store.test.js @@ -88,7 +88,7 @@ describe('Events Database Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = ({peerId, heads}) => { + const onConnected = ({ peerId, heads }) => { replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) } @@ -103,11 +103,11 @@ describe('Events Database Replication', function () { db1 = await EventStore({ OpLog, Database, ipfs: ipfs1, identity: testIdentity1, address: databaseId, accessController, directory: './orbitdb1' }) db2 = await EventStore({ OpLog, Database, ipfs: ipfs2, identity: testIdentity2, address: databaseId, accessController, directory: './orbitdb2' }) - db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('join', event => onConnected(event.detail)) db2.events.addEventListener('update', event => onUpdate(event.detail)) - db1.events.addEventListener('error', event => onError(event.detail)) - db2.events.addEventListener('error', event => onError(event.detail)) + db1.events.addEventListener('error', event => onError(event.detail)) + db2.events.addEventListener('error', event => onError(event.detail)) await db1.add(expected[0]) await db1.add(expected[1]) @@ -137,7 +137,7 @@ describe('Events Database Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = ({peerId, heads}) => { + const onConnected = ({ peerId, heads }) => { replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) } @@ -149,11 +149,11 @@ describe('Events Database Replication', function () { console.error(err) } - db2.events.addEventListener('join', event => onConnected(event.detail)) - db2.events.addEventListener('update', event => onUpdate(event.detail)) + db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('update', event => onUpdate(event.detail)) - db1.events.addEventListener('error', event => onError(event.detail)) - db2.events.addEventListener('error', event => onError(event.detail)) + db1.events.addEventListener('error', event => onError(event.detail)) + db2.events.addEventListener('error', event => onError(event.detail)) await db1.add(expected[0]) await db1.add(expected[1]) diff --git a/test/db/replication/keyvalue-persisted.test.js b/test/db/replication/keyvalue-persisted.test.js index c1e6181a3..e6cf907b3 100644 --- a/test/db/replication/keyvalue-persisted.test.js +++ b/test/db/replication/keyvalue-persisted.test.js @@ -77,7 +77,7 @@ describe('KeyValue-persisted Database Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = ({peerId, heads}) => { + const onConnected = ({ peerId, heads }) => { replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) } @@ -92,11 +92,11 @@ describe('KeyValue-persisted Database Replication', function () { kv1 = await KeyValuePersisted({ KeyValue, OpLog, Database, ipfs: ipfs1, identity: testIdentity1, address: databaseId, accessController, directory: './orbitdb1' }) kv2 = await KeyValuePersisted({ KeyValue, OpLog, Database, ipfs: ipfs2, identity: testIdentity2, address: databaseId, accessController, directory: './orbitdb2' }) - kv2.events.addEventListener('join', event => onConnected(event.detail)) - kv2.events.addEventListener('update', event => onUpdate(event.detail)) + kv2.events.addEventListener('join', event => onConnected(event.detail)) + kv2.events.addEventListener('update', event => onUpdate(event.detail)) - kv1.events.addEventListener('error', event => onError(event.detail)) - kv2.events.addEventListener('error', event => onError(event.detail)) + kv1.events.addEventListener('error', event => onError(event.detail)) + kv2.events.addEventListener('error', event => onError(event.detail)) await kv1.set('init', true) await kv1.set('hello', 'friend') @@ -144,7 +144,7 @@ describe('KeyValue-persisted Database Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = ({peerId, heads}) => { + const onConnected = ({ peerId, heads }) => { replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) } @@ -159,11 +159,11 @@ describe('KeyValue-persisted Database Replication', function () { kv1 = await KeyValuePersisted({ KeyValue, OpLog, Database, ipfs: ipfs1, identity: testIdentity1, address: databaseId, accessController, directory: './orbitdb1' }) kv2 = await KeyValuePersisted({ KeyValue, OpLog, Database, ipfs: ipfs2, identity: testIdentity2, address: databaseId, accessController, directory: './orbitdb2' }) - kv2.events.addEventListener('join', event => onConnected(event.detail)) - kv2.events.addEventListener('update', event => onUpdate(event.detail)) + kv2.events.addEventListener('join', event => onConnected(event.detail)) + kv2.events.addEventListener('update', event => onUpdate(event.detail)) - kv1.events.addEventListener('error', event => onError(event.detail)) - kv2.events.addEventListener('error', event => onError(event.detail)) + kv1.events.addEventListener('error', event => onError(event.detail)) + kv2.events.addEventListener('error', event => onError(event.detail)) await kv1.set('init', true) await kv1.set('hello', 'friend') diff --git a/test/db/replication/keyvalue.test.js b/test/db/replication/keyvalue.test.js index b148d5cd9..1b140c217 100644 --- a/test/db/replication/keyvalue.test.js +++ b/test/db/replication/keyvalue.test.js @@ -77,7 +77,7 @@ describe('KeyValue Database Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = ({peerId, heads}) => { + const onConnected = ({ peerId, heads }) => { replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) } @@ -92,11 +92,11 @@ describe('KeyValue Database Replication', function () { kv1 = await KeyValue({ OpLog, Database, ipfs: ipfs1, identity: testIdentity1, address: databaseId, accessController, directory: './orbitdb1' }) kv2 = await KeyValue({ OpLog, Database, ipfs: ipfs2, identity: testIdentity2, address: databaseId, accessController, directory: './orbitdb2' }) - kv2.events.addEventListener('join', event => onConnected(event.detail)) - kv2.events.addEventListener('update', event => onUpdate(event.detail)) + kv2.events.addEventListener('join', event => onConnected(event.detail)) + kv2.events.addEventListener('update', event => onUpdate(event.detail)) - kv1.events.addEventListener('error', event => onError(event.detail)) - kv2.events.addEventListener('error', event => onError(event.detail)) + kv1.events.addEventListener('error', event => onError(event.detail)) + kv2.events.addEventListener('error', event => onError(event.detail)) await kv1.set('init', true) await kv1.set('hello', 'friend') @@ -144,7 +144,7 @@ describe('KeyValue Database Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = ({peerId, heads}) => { + const onConnected = ({ peerId, heads }) => { replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) } @@ -159,11 +159,11 @@ describe('KeyValue Database Replication', function () { kv1 = await KeyValue({ OpLog, Database, ipfs: ipfs1, identity: testIdentity1, address: databaseId, accessController, directory: './orbitdb1' }) kv2 = await KeyValue({ OpLog, Database, ipfs: ipfs2, identity: testIdentity2, address: databaseId, accessController, directory: './orbitdb2' }) - kv1.events.addEventListener('join', event => onConnected(event.detail)) - kv2.events.addEventListener('join', event => onConnected(event.detail)) - kv2.events.addEventListener('update', event => onUpdate(event.detail)) - kv1.events.addEventListener('error', event => onError(event.detail)) - kv2.events.addEventListener('error', event => onError(event.detail)) + kv1.events.addEventListener('join', event => onConnected(event.detail)) + kv2.events.addEventListener('join', event => onConnected(event.detail)) + kv2.events.addEventListener('update', event => onUpdate(event.detail)) + kv1.events.addEventListener('error', event => onError(event.detail)) + kv2.events.addEventListener('error', event => onError(event.detail)) await kv1.set('init', true) await kv1.set('hello', 'friend') diff --git a/test/orbitdb-multiple-databases.test.js b/test/orbitdb-multiple-databases.test.js index e5b82cc4a..050610200 100644 --- a/test/orbitdb-multiple-databases.test.js +++ b/test/orbitdb-multiple-databases.test.js @@ -90,11 +90,11 @@ describe('orbit-db - Multiple Databases', function () { let connected1Count = 0 let connected2Count = 0 - const onConnected1 = async ({peerId, heads}) => { + const onConnected1 = async ({ peerId, heads }) => { ++connected1Count } - const onConnected2 = async ({peerId, heads}) => { + const onConnected2 = async ({ peerId, heads }) => { ++connected2Count } @@ -106,14 +106,14 @@ describe('orbit-db - Multiple Databases', function () { // Open the databases on the first node for (const dbInterface of databaseInterfaces) { const db = await dbInterface.open(orbitdb1, dbInterface.name, options) - db.events.addEventListener('join', event => onConnected1(event.detail)) + db.events.addEventListener('join', event => onConnected1(event.detail)) localDatabases.push(db) } for (const [index, dbInterface] of databaseInterfaces.entries()) { const address = localDatabases[index].address.toString() const db = await dbInterface.open(orbitdb2, address, options) - db.events.addEventListener('join', event => onConnected2(event.detail)) + db.events.addEventListener('join', event => onConnected2(event.detail)) remoteDatabases.push(db) } diff --git a/test/orbitdb-open.test.js b/test/orbitdb-open.test.js index f55b10244..345050078 100644 --- a/test/orbitdb-open.test.js +++ b/test/orbitdb-open.test.js @@ -309,7 +309,7 @@ describe('Open databases', function () { console.error(err) } - const onConnected = async ({peerId, heads}) => { + const onConnected = async ({ peerId, heads }) => { connected = true } @@ -319,9 +319,9 @@ describe('Open databases', function () { db2 = await orbitdb2.open(address) - db2.events.addEventListener('error', event => onError(event.detail)) - db2.events.addEventListener('update', event => onUpdate(event.detail)) - db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('error', event => onError(event.detail)) + db2.events.addEventListener('update', event => onUpdate(event.detail)) + db2.events.addEventListener('join', event => onConnected(event.detail)) await waitFor(() => connected, () => true) await waitFor(() => updateCount > 0, () => true) diff --git a/test/orbitdb-replication.test.js b/test/orbitdb-replication.test.js index 80c508071..aefd97f13 100644 --- a/test/orbitdb-replication.test.js +++ b/test/orbitdb-replication.test.js @@ -61,7 +61,7 @@ describe('Replicating databases', function () { let replicated = false - const onJoin = async ({peerId, heads}) => { + const onJoin = async ({ peerId, heads }) => { const head = (await db2.log.heads())[0] if (head && head.clock.time === amount) { replicated = true @@ -80,10 +80,10 @@ describe('Replicating databases', function () { db2 = await orbitdb2.open(db1.address) - db2.events.addEventListener('join', event => onJoin(event.detail)) - db2.events.addEventListener('update', event => onUpdated(event.detail)) - db1.events.addEventListener('error', event => onError(event.detail)) - db2.events.addEventListener('error', event => onError(event.detail)) + db2.events.addEventListener('join', event => onJoin(event.detail)) + db2.events.addEventListener('update', event => onUpdated(event.detail)) + db1.events.addEventListener('error', event => onError(event.detail)) + db2.events.addEventListener('error', event => onError(event.detail)) await waitFor(() => replicated, () => true) diff --git a/test/orbitdb-write-access.test.js b/test/orbitdb-write-access.test.js index 8e438bf70..cfd8fed35 100644 --- a/test/orbitdb-write-access.test.js +++ b/test/orbitdb-write-access.test.js @@ -52,14 +52,14 @@ describe('Write Permissions', function () { let err let connected = false - const onConnected = async ({peerId, heads}) => { + const onConnected = async ({ peerId, heads }) => { connected = true } const db1 = await orbitdb1.open('write-test') const db2 = await orbitdb2.open(db1.address) - db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('join', event => onConnected(event.detail)) await waitFor(() => connected, () => true) @@ -81,7 +81,7 @@ describe('Write Permissions', function () { let connected = false let updateCount = 0 - const onConnected = async ({peerId, heads}) => { + const onConnected = async ({ peerId, heads }) => { connected = true } @@ -92,8 +92,8 @@ describe('Write Permissions', function () { const db1 = await orbitdb1.open('write-test', { AccessController: IPFSAccessController({ write: ['*'] }) }) const db2 = await orbitdb2.open(db1.address) - db2.events.addEventListener('join', event => onConnected(event.detail)) - db2.events.addEventListener('update', event => onUpdate(event.detail)) + db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('update', event => onUpdate(event.detail)) await waitFor(() => connected, () => true) @@ -121,7 +121,7 @@ describe('Write Permissions', function () { ] }) } - const onConnected = async ({peerId, heads}) => { + const onConnected = async ({ peerId, heads }) => { connected = true } @@ -132,8 +132,8 @@ describe('Write Permissions', function () { const db1 = await orbitdb1.open('write-test', options) const db2 = await orbitdb2.open(db1.address) - db2.events.addEventListener('join', event => onConnected(event.detail)) - db2.events.addEventListener('update', event => onUpdate(event.detail)) + db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('update', event => onUpdate(event.detail)) await waitFor(() => connected, () => true) @@ -160,14 +160,14 @@ describe('Write Permissions', function () { }) } - const onConnected = async ({peerId, heads}) => { + const onConnected = async ({ peerId, heads }) => { connected = true } const db1 = await orbitdb1.open('write-test', options) const db2 = await orbitdb2.open(db1.address) - db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('join', event => onConnected(event.detail)) await waitFor(() => connected, () => true) @@ -189,7 +189,7 @@ describe('Write Permissions', function () { let connected = false let updateCount = 0 - const onConnected = async ({peerId, heads}) => { + const onConnected = async ({ peerId, heads }) => { connected = true } @@ -200,8 +200,8 @@ describe('Write Permissions', function () { const db1 = await orbitdb1.open('write-test', { AccessController: OrbitDBAccessController() }) const db2 = await orbitdb2.open(db1.address, { AccessController: OrbitDBAccessController() }) - db2.events.addEventListener('join', event => onConnected(event.detail)) - db2.events.addEventListener('update', event => onUpdate(event.detail)) + db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('update', event => onUpdate(event.detail)) await waitFor(() => connected, () => true) diff --git a/test/sync.test.js b/test/sync.test.js index d26711d05..921d23b3b 100644 --- a/test/sync.test.js +++ b/test/sync.test.js @@ -148,7 +148,7 @@ describe('Sync protocol', function () { } } - const onJoin = ({peerId, heads}) => { + const onJoin = ({ peerId, heads }) => { joinEventFired = true } @@ -157,8 +157,8 @@ describe('Sync protocol', function () { sync1 = await Sync({ ipfs: ipfs1, log: log1, onSynced: () => {} }) sync2 = await Sync({ ipfs: ipfs2, log: log2, onSynced }) - sync1.events.addEventListener('join', event => onJoin(event.detail)) - sync2.events.addEventListener('join', event => onJoin(event.detail)) + sync1.events.addEventListener('join', event => onJoin(event.detail)) + sync2.events.addEventListener('join', event => onJoin(event.detail)) await waitFor(() => joinEventFired, () => true) await waitFor(() => syncedEventFired, () => true) @@ -210,15 +210,15 @@ describe('Sync protocol', function () { } } - const onJoin = ({peerId, heads}) => { + const onJoin = ({ peerId, heads }) => { joinEventFired = true } sync1 = await Sync({ ipfs: ipfs1, log: log1, onSynced: () => {} }) sync2 = await Sync({ ipfs: ipfs2, log: log2, onSynced }) - sync1.events.addEventListener('join', event => onJoin(event.detail)) - sync2.events.addEventListener('join', event => onJoin(event.detail)) + sync1.events.addEventListener('join', event => onJoin(event.detail)) + sync2.events.addEventListener('join', event => onJoin(event.detail)) await waitFor(() => joinEventFired, () => true) }) @@ -347,7 +347,7 @@ describe('Sync protocol', function () { sync1 = await Sync({ ipfs: ipfs1, log: log1 }) sync2 = await Sync({ ipfs: ipfs2, log: log2, onSynced }) - sync1.events.addEventListener('leave', event => onLeave(event.detail)) + sync1.events.addEventListener('leave', event => onLeave(event.detail)) await sync1.add(await log1.append('hello1')) await sync1.add(await log1.append('hello2')) @@ -426,7 +426,7 @@ describe('Sync protocol', function () { sync1 = await Sync({ ipfs: ipfs1, log: log1 }) sync2 = await Sync({ ipfs: ipfs2, log: log2, onSynced }) - sync2.events.addEventListener('leave', event => onLeave(event.detail)) + sync2.events.addEventListener('leave', event => onLeave(event.detail)) await sync1.add(await log1.append('hello1')) await sync1.add(await log1.append('hello2')) @@ -577,8 +577,8 @@ describe('Sync protocol', function () { err = error } - sync1.events.addEventListener('error', event => onError(event.detail)) - sync2.events.addEventListener('error', event => onError(event.detail)) + sync1.events.addEventListener('error', event => onError(event.detail)) + sync2.events.addEventListener('error', event => onError(event.detail)) await sync2.start() @@ -604,7 +604,7 @@ describe('Sync protocol', function () { const log1 = await Log(testIdentity1, { logId: 'synclog3' }) const log2 = await Log(testIdentity2, { logId: 'synclog3' }) - const onJoin = ({peerId, heads}) => { + const onJoin = ({ peerId, heads }) => { joinEventFired = true joiningPeerId = peerId receivedHeads = heads @@ -628,9 +628,9 @@ describe('Sync protocol', function () { sync1 = await Sync({ ipfs: ipfs1, log: log1, onSynced }) sync2 = await Sync({ ipfs: ipfs2, log: log2, onSynced }) - sync1.events.addEventListener('join', event => onJoin(event.detail)) - sync1.events.addEventListener('leave', event => onLeave(event.detail)) - sync2.events.addEventListener('error', event => onError(event.detail)) + sync1.events.addEventListener('join', event => onJoin(event.detail)) + sync1.events.addEventListener('leave', event => onLeave(event.detail)) + sync2.events.addEventListener('error', event => onError(event.detail)) await waitFor(() => joinEventFired, () => true) await waitFor(() => errorEventFired, () => true) From 612a88a502a12649bed42f672a48544000ccf511 Mon Sep 17 00:00:00 2001 From: saul Date: Tue, 4 Apr 2023 10:48:32 +1200 Subject: [PATCH 5/9] Add CustomEvent to the linter globals. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index cb108cc87..d3703fc5f 100644 --- a/package.json +++ b/package.json @@ -69,8 +69,8 @@ "build:docs/toc": "echo 'TODO'", "build:tests": "rm -f test/browser/bundle.js* && webpack --config ./conf/webpack.tests.config.js", "prepublishOnly": "npm run build", - "lint": "standard --env=mocha", - "lint:fix": "standard --fix", + "lint": "standard --env=mocha --globals=CustomEvent", + "lint:fix": "standard --fix --globals=CustomEvent", "webrtc": "webrtc-star --port=12345", "webrtc:background": "webrtc-star --port=12345 &" }, From ba8ba428e5d0824294b1c672cfb0e5564dce10d0 Mon Sep 17 00:00:00 2001 From: saul Date: Tue, 4 Apr 2023 11:21:59 +1200 Subject: [PATCH 6/9] Only run the close event once. --- src/OrbitDB.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/OrbitDB.js b/src/OrbitDB.js index bbdb8ba16..8747fe704 100644 --- a/src/OrbitDB.js +++ b/src/OrbitDB.js @@ -115,7 +115,7 @@ const OrbitDB = async ({ ipfs, id, identity, keystore, directory } = {}) => { const db = await DatabaseModel({ OpLog, Database, ipfs, identity, address: address.toString(), name, access: accessController, directory, meta, syncAutomatically: sync != null ? sync : true }) - db.events.addEventListener('close', onDatabaseClosed(address.toString())) + db.events.addEventListener('close', onDatabaseClosed(address.toString()), { once: true }) databases[address.toString()] = db From b8030137dd52264cae9e0dbda9024dff273e006c Mon Sep 17 00:00:00 2001 From: saul Date: Tue, 4 Apr 2023 12:00:32 +1200 Subject: [PATCH 7/9] Cleanup event listeners in tests. --- .../orbit-db-access-controller.test.js | 8 +-- test/database-replication.test.js | 68 +++++++++---------- test/db/replication/document-store.test.js | 8 +-- test/db/replication/event-store.test.js | 40 +++++------ .../db/replication/keyvalue-persisted.test.js | 40 +++++------ test/db/replication/keyvalue.test.js | 42 ++++++------ test/orbitdb-multiple-databases.test.js | 8 +-- test/orbitdb-open.test.js | 14 ++-- test/orbitdb-replication.test.js | 18 ++--- test/orbitdb-write-access.test.js | 32 ++++----- test/sync.test.js | 50 +++++++------- 11 files changed, 164 insertions(+), 164 deletions(-) diff --git a/test/access-controllers/orbit-db-access-controller.test.js b/test/access-controllers/orbit-db-access-controller.test.js index a67a1d72f..f7ce6940e 100644 --- a/test/access-controllers/orbit-db-access-controller.test.js +++ b/test/access-controllers/orbit-db-access-controller.test.js @@ -131,11 +131,11 @@ describe('OrbitDBAccessController', function () { it('emit \'update\' event when a capability was added', async () => { let update = false - const onUpdate = (entry) => { + const onUpdate = () => { update = true } - accessController.events.addEventListener('update', event => onUpdate(event.detail)) + accessController.events.addEventListener('update', onUpdate) await accessController.grant('read', 'AXES') @@ -261,11 +261,11 @@ describe('OrbitDBAccessController', function () { await accessController.grant('admin', 'dogs') let update = false - const onUpdate = (entry) => { + const onUpdate = () => { update = true } - accessController.events.addEventListener('update', event => onUpdate(event.detail)) + accessController.events.addEventListener('update', onUpdate) await accessController.revoke('admin', 'cats') diff --git a/test/database-replication.test.js b/test/database-replication.test.js index 04024ac0b..1dc0ccb70 100644 --- a/test/database-replication.test.js +++ b/test/database-replication.test.js @@ -86,16 +86,16 @@ describe('Database - Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = ({ peerId, heads }) => { - replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) + const onConnected = (event) => { + replicated = expectedEntryHash !== null && event.detail.heads.map(e => e.hash).includes(expectedEntryHash) } - const onUpdate = (entry) => { - replicated = expectedEntryHash !== null && entry.hash === expectedEntryHash + const onUpdate = (event) => { + replicated = expectedEntryHash !== null && event.detail.hash === expectedEntryHash } - db2.events.addEventListener('join', event => onConnected(event.detail)) - db2.events.addEventListener('update', event => onUpdate(event.detail)) + db2.events.addEventListener('join', onConnected) + db2.events.addEventListener('update', onUpdate) await db1.addOperation({ op: 'PUT', key: 1, value: 'record 1 on db 1' }) await db1.addOperation({ op: 'PUT', key: 2, value: 'record 2 on db 1' }) @@ -121,16 +121,16 @@ describe('Database - Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = ({ peerId, heads }) => { - replicated = expectedEntryHash && heads.map(e => e.hash).includes(expectedEntryHash) + const onConnected = (event) => { + replicated = expectedEntryHash && event.detail.heads.map(e => e.hash).includes(expectedEntryHash) } - const onUpdate = (entry) => { - replicated = expectedEntryHash && entry.hash === expectedEntryHash + const onUpdate = (event) => { + replicated = expectedEntryHash && event.detail.hash === expectedEntryHash } - db2.events.addEventListener('join', event => onConnected(event.detail)) - db2.events.addEventListener('update', event => onUpdate(event.detail)) + db2.events.addEventListener('join', onConnected) + db2.events.addEventListener('update', onUpdate) await db1.addOperation({ op: 'PUT', key: 1, value: 'record 1 on db 1' }) @@ -165,7 +165,7 @@ describe('Database - Replication', function () { it('adds an operation before db2 is instantiated', async () => { let connected = false - const onConnected = ({ peerId, heads }) => { + const onConnected = () => { connected = true } @@ -178,7 +178,7 @@ describe('Database - Replication', function () { db2 = await Database({ OpLog, ipfs: ipfs2, identity: testIdentity2, address: databaseId, accessController, directory: './orbitdb2' }) - db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('join', onConnected) await waitFor(() => connected, () => true) @@ -206,16 +206,16 @@ describe('Database - Replication', function () { let connected1 = false let connected2 = false - const onConnected1 = ({ peerId, heads }) => { + const onConnected1 = () => { connected1 = true } - const onConnected2 = ({ peerId, heads }) => { + const onConnected2 = () => { connected2 = true } - db1.events.addEventListener('join', event => onConnected1(event.detail)) - db2.events.addEventListener('join', event => onConnected2(event.detail)) + db1.events.addEventListener('join', onConnected1) + db2.events.addEventListener('join', onConnected2) await db1.addOperation({ op: 'PUT', key: 1, value: 'record 1 on db 1' }) await db1.addOperation({ op: 'PUT', key: 2, value: 'record 2 on db 1' }) @@ -252,26 +252,26 @@ describe('Database - Replication', function () { let updateCount1 = 0 let updateCount2 = 0 - const onConnected1 = ({ peerId, heads }) => { + const onConnected1 = () => { connected1 = true } - const onConnected2 = ({ peerId, heads }) => { + const onConnected2 = () => { connected2 = true } - const onUpdate1 = async (entry) => { + const onUpdate1 = () => { ++updateCount1 } - const onUpdate2 = async (entry) => { + const onUpdate2 = () => { ++updateCount2 } - db1.events.addEventListener('join', event => onConnected1(event.detail)) - db2.events.addEventListener('join', event => onConnected2(event.detail)) - db1.events.addEventListener('update', event => onUpdate1(event.detail)) - db2.events.addEventListener('update', event => onUpdate2(event.detail)) + db1.events.addEventListener('join', onConnected1) + db2.events.addEventListener('join', onConnected2) + db1.events.addEventListener('update', onUpdate1) + db2.events.addEventListener('update', onUpdate2) await waitFor(() => connected1, () => true) await waitFor(() => connected2, () => true) @@ -292,26 +292,26 @@ describe('Database - Replication', function () { let updateCount1 = 0 let updateCount2 = 0 - const onConnected1 = async ({ peerId, heads }) => { + const onConnected1 = () => { connected1 = true } - const onConnected2 = async ({ peerId, heads }) => { + const onConnected2 = () => { connected2 = true } - const onUpdate1 = async (entry) => { + const onUpdate1 = () => { ++updateCount1 } - const onUpdate2 = async (entry) => { + const onUpdate2 = () => { ++updateCount2 } - db1.events.addEventListener('join', event => onConnected1(event.detail)) - db2.events.addEventListener('join', event => onConnected2(event.detail)) - db1.events.addEventListener('update', event => onUpdate1(event.detail)) - db2.events.addEventListener('update', event => onUpdate2(event.detail)) + db1.events.addEventListener('join', onConnected1) + db2.events.addEventListener('join', onConnected2) + db1.events.addEventListener('update', onUpdate1) + db2.events.addEventListener('update', onUpdate2) await waitFor(() => connected1, () => true) await waitFor(() => connected2, () => true) diff --git a/test/db/replication/document-store.test.js b/test/db/replication/document-store.test.js index 905c0eb0e..3bc3a7c9d 100644 --- a/test/db/replication/document-store.test.js +++ b/test/db/replication/document-store.test.js @@ -83,16 +83,16 @@ describe('Documents Database Replication', function () { let connected1 = false let connected2 = false - const onConnected1 = async ({ peerId, heads }) => { + const onConnected1 = async () => { connected1 = true } - const onConnected2 = async ({ peerId, heads }) => { + const onConnected2 = async () => { connected2 = true } - db1.events.addEventListener('join', event => onConnected1(event.detail)) - db2.events.addEventListener('join', event => onConnected2(event.detail)) + db1.events.addEventListener('join', onConnected1) + db2.events.addEventListener('join', onConnected2) await db1.put({ _id: 1, msg: 'record 1 on db 1' }) await db2.put({ _id: 2, msg: 'record 2 on db 2' }) diff --git a/test/db/replication/event-store.test.js b/test/db/replication/event-store.test.js index b5d423197..a842b3675 100644 --- a/test/db/replication/event-store.test.js +++ b/test/db/replication/event-store.test.js @@ -88,26 +88,26 @@ describe('Events Database Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = ({ peerId, heads }) => { - replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) + const onConnected = (event) => { + replicated = expectedEntryHash !== null && event.detail.heads.map(e => e.hash).includes(expectedEntryHash) } - const onUpdate = (entry) => { - replicated = expectedEntryHash !== null && entry.hash === expectedEntryHash + const onUpdate = (event) => { + replicated = expectedEntryHash !== null && event.detail.hash === expectedEntryHash } - const onError = (err) => { - console.error(err) + const onError = (event) => { + console.error(event.detail) } db1 = await EventStore({ OpLog, Database, ipfs: ipfs1, identity: testIdentity1, address: databaseId, accessController, directory: './orbitdb1' }) db2 = await EventStore({ OpLog, Database, ipfs: ipfs2, identity: testIdentity2, address: databaseId, accessController, directory: './orbitdb2' }) - db2.events.addEventListener('join', event => onConnected(event.detail)) - db2.events.addEventListener('update', event => onUpdate(event.detail)) + db2.events.addEventListener('join', onConnected) + db2.events.addEventListener('update', onUpdate) - db1.events.addEventListener('error', event => onError(event.detail)) - db2.events.addEventListener('error', event => onError(event.detail)) + db1.events.addEventListener('error', onError) + db2.events.addEventListener('error', onError) await db1.add(expected[0]) await db1.add(expected[1]) @@ -137,23 +137,23 @@ describe('Events Database Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = ({ peerId, heads }) => { - replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) + const onConnected = (event) => { + replicated = expectedEntryHash !== null && event.detail.heads.map(e => e.hash).includes(expectedEntryHash) } - const onUpdate = (entry) => { - replicated = expectedEntryHash !== null && entry.hash === expectedEntryHash + const onUpdate = (event) => { + replicated = expectedEntryHash !== null && event.detail.hash === expectedEntryHash } - const onError = (err) => { - console.error(err) + const onError = (event) => { + console.error(event.detail) } - db2.events.addEventListener('join', event => onConnected(event.detail)) - db2.events.addEventListener('update', event => onUpdate(event.detail)) + db2.events.addEventListener('join', onConnected) + db2.events.addEventListener('update', onUpdate) - db1.events.addEventListener('error', event => onError(event.detail)) - db2.events.addEventListener('error', event => onError(event.detail)) + db1.events.addEventListener('error', onError) + db2.events.addEventListener('error', onError) await db1.add(expected[0]) await db1.add(expected[1]) diff --git a/test/db/replication/keyvalue-persisted.test.js b/test/db/replication/keyvalue-persisted.test.js index e6cf907b3..fd3f58104 100644 --- a/test/db/replication/keyvalue-persisted.test.js +++ b/test/db/replication/keyvalue-persisted.test.js @@ -77,26 +77,26 @@ describe('KeyValue-persisted Database Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = ({ peerId, heads }) => { - replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) + const onConnected = (event) => { + replicated = expectedEntryHash !== null && event.detail.heads.map(e => e.hash).includes(expectedEntryHash) } - const onUpdate = (entry) => { - replicated = expectedEntryHash !== null && entry.hash === expectedEntryHash + const onUpdate = (event) => { + replicated = expectedEntryHash !== null && event.detail.hash === expectedEntryHash } - const onError = (err) => { - console.error(err) + const onError = (event) => { + console.error(event.detail) } kv1 = await KeyValuePersisted({ KeyValue, OpLog, Database, ipfs: ipfs1, identity: testIdentity1, address: databaseId, accessController, directory: './orbitdb1' }) kv2 = await KeyValuePersisted({ KeyValue, OpLog, Database, ipfs: ipfs2, identity: testIdentity2, address: databaseId, accessController, directory: './orbitdb2' }) - kv2.events.addEventListener('join', event => onConnected(event.detail)) - kv2.events.addEventListener('update', event => onUpdate(event.detail)) + kv2.events.addEventListener('join', onConnected) + kv2.events.addEventListener('update', onUpdate) - kv1.events.addEventListener('error', event => onError(event.detail)) - kv2.events.addEventListener('error', event => onError(event.detail)) + kv1.events.addEventListener('error', onError) + kv2.events.addEventListener('error', onError) await kv1.set('init', true) await kv1.set('hello', 'friend') @@ -144,26 +144,26 @@ describe('KeyValue-persisted Database Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = ({ peerId, heads }) => { - replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) + const onConnected = (event) => { + replicated = expectedEntryHash !== null && event.detail.heads.map(e => e.hash).includes(expectedEntryHash) } - const onUpdate = (entry) => { - replicated = expectedEntryHash !== null && entry.hash === expectedEntryHash + const onUpdate = (event) => { + replicated = expectedEntryHash !== null && event.detail.hash === expectedEntryHash } - const onError = (err) => { - console.error(err) + const onError = (event) => { + console.error(event.detail) } kv1 = await KeyValuePersisted({ KeyValue, OpLog, Database, ipfs: ipfs1, identity: testIdentity1, address: databaseId, accessController, directory: './orbitdb1' }) kv2 = await KeyValuePersisted({ KeyValue, OpLog, Database, ipfs: ipfs2, identity: testIdentity2, address: databaseId, accessController, directory: './orbitdb2' }) - kv2.events.addEventListener('join', event => onConnected(event.detail)) - kv2.events.addEventListener('update', event => onUpdate(event.detail)) + kv2.events.addEventListener('join', onConnected) + kv2.events.addEventListener('update', onUpdate) - kv1.events.addEventListener('error', event => onError(event.detail)) - kv2.events.addEventListener('error', event => onError(event.detail)) + kv1.events.addEventListener('error', onError) + kv2.events.addEventListener('error', onError) await kv1.set('init', true) await kv1.set('hello', 'friend') diff --git a/test/db/replication/keyvalue.test.js b/test/db/replication/keyvalue.test.js index 1b140c217..ab39ccd77 100644 --- a/test/db/replication/keyvalue.test.js +++ b/test/db/replication/keyvalue.test.js @@ -77,26 +77,26 @@ describe('KeyValue Database Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = ({ peerId, heads }) => { - replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) + const onConnected = (event) => { + replicated = expectedEntryHash !== null && event.detail.heads.map(e => e.hash).includes(expectedEntryHash) } - const onUpdate = (entry) => { - replicated = expectedEntryHash !== null && entry.hash === expectedEntryHash + const onUpdate = (event) => { + replicated = expectedEntryHash !== null && event.detail.hash === expectedEntryHash } - const onError = (err) => { - console.error(err) + const onError = (event) => { + console.error(event.detail) } kv1 = await KeyValue({ OpLog, Database, ipfs: ipfs1, identity: testIdentity1, address: databaseId, accessController, directory: './orbitdb1' }) kv2 = await KeyValue({ OpLog, Database, ipfs: ipfs2, identity: testIdentity2, address: databaseId, accessController, directory: './orbitdb2' }) - kv2.events.addEventListener('join', event => onConnected(event.detail)) - kv2.events.addEventListener('update', event => onUpdate(event.detail)) + kv2.events.addEventListener('join', onConnected) + kv2.events.addEventListener('update', onUpdate) - kv1.events.addEventListener('error', event => onError(event.detail)) - kv2.events.addEventListener('error', event => onError(event.detail)) + kv1.events.addEventListener('error', onError) + kv2.events.addEventListener('error', onError) await kv1.set('init', true) await kv1.set('hello', 'friend') @@ -144,26 +144,26 @@ describe('KeyValue Database Replication', function () { let replicated = false let expectedEntryHash = null - const onConnected = ({ peerId, heads }) => { - replicated = expectedEntryHash !== null && heads.map(e => e.hash).includes(expectedEntryHash) + const onConnected = (event) => { + replicated = expectedEntryHash !== null && event.detail.heads.map(e => e.hash).includes(expectedEntryHash) } - const onUpdate = (entry) => { - replicated = expectedEntryHash !== null && entry.hash === expectedEntryHash + const onUpdate = (event) => { + replicated = expectedEntryHash !== null && event.detail.hash === expectedEntryHash } - const onError = (err) => { - console.error(err) + const onError = (event) => { + console.error(event.detail) } kv1 = await KeyValue({ OpLog, Database, ipfs: ipfs1, identity: testIdentity1, address: databaseId, accessController, directory: './orbitdb1' }) kv2 = await KeyValue({ OpLog, Database, ipfs: ipfs2, identity: testIdentity2, address: databaseId, accessController, directory: './orbitdb2' }) - kv1.events.addEventListener('join', event => onConnected(event.detail)) - kv2.events.addEventListener('join', event => onConnected(event.detail)) - kv2.events.addEventListener('update', event => onUpdate(event.detail)) - kv1.events.addEventListener('error', event => onError(event.detail)) - kv2.events.addEventListener('error', event => onError(event.detail)) + kv1.events.addEventListener('join', onConnected) + kv2.events.addEventListener('join', onConnected) + kv2.events.addEventListener('update', onUpdate) + kv1.events.addEventListener('error', onError) + kv2.events.addEventListener('error', onError) await kv1.set('init', true) await kv1.set('hello', 'friend') diff --git a/test/orbitdb-multiple-databases.test.js b/test/orbitdb-multiple-databases.test.js index 050610200..48c9f654e 100644 --- a/test/orbitdb-multiple-databases.test.js +++ b/test/orbitdb-multiple-databases.test.js @@ -90,11 +90,11 @@ describe('orbit-db - Multiple Databases', function () { let connected1Count = 0 let connected2Count = 0 - const onConnected1 = async ({ peerId, heads }) => { + const onConnected1 = () => { ++connected1Count } - const onConnected2 = async ({ peerId, heads }) => { + const onConnected2 = () => { ++connected2Count } @@ -106,14 +106,14 @@ describe('orbit-db - Multiple Databases', function () { // Open the databases on the first node for (const dbInterface of databaseInterfaces) { const db = await dbInterface.open(orbitdb1, dbInterface.name, options) - db.events.addEventListener('join', event => onConnected1(event.detail)) + db.events.addEventListener('join', onConnected1) localDatabases.push(db) } for (const [index, dbInterface] of databaseInterfaces.entries()) { const address = localDatabases[index].address.toString() const db = await dbInterface.open(orbitdb2, address, options) - db.events.addEventListener('join', event => onConnected2(event.detail)) + db.events.addEventListener('join', onConnected2) remoteDatabases.push(db) } diff --git a/test/orbitdb-open.test.js b/test/orbitdb-open.test.js index 345050078..e5d7ee22d 100644 --- a/test/orbitdb-open.test.js +++ b/test/orbitdb-open.test.js @@ -305,23 +305,23 @@ describe('Open databases', function () { let updateCount = 0 let connected = false - const onError = (err) => { - console.error(err) + const onError = (event) => { + console.error(event.detail) } - const onConnected = async ({ peerId, heads }) => { + const onConnected = () => { connected = true } - const onUpdate = (entry) => { + const onUpdate = () => { ++updateCount } db2 = await orbitdb2.open(address) - db2.events.addEventListener('error', event => onError(event.detail)) - db2.events.addEventListener('update', event => onUpdate(event.detail)) - db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('error', onError) + db2.events.addEventListener('update', onUpdate) + db2.events.addEventListener('join', onConnected) await waitFor(() => connected, () => true) await waitFor(() => updateCount > 0, () => true) diff --git a/test/orbitdb-replication.test.js b/test/orbitdb-replication.test.js index aefd97f13..7c65c54e6 100644 --- a/test/orbitdb-replication.test.js +++ b/test/orbitdb-replication.test.js @@ -61,29 +61,29 @@ describe('Replicating databases', function () { let replicated = false - const onJoin = async ({ peerId, heads }) => { + const onJoin = async () => { const head = (await db2.log.heads())[0] if (head && head.clock.time === amount) { replicated = true } } - const onUpdated = (entry) => { - if (entry.clock.time === amount) { + const onUpdated = (event) => { + if (event.detail.clock.time === amount) { replicated = true } } - const onError = (err) => { - console.error(err) + const onError = (event) => { + console.error(event.detail) } db2 = await orbitdb2.open(db1.address) - db2.events.addEventListener('join', event => onJoin(event.detail)) - db2.events.addEventListener('update', event => onUpdated(event.detail)) - db1.events.addEventListener('error', event => onError(event.detail)) - db2.events.addEventListener('error', event => onError(event.detail)) + db2.events.addEventListener('join', onJoin) + db2.events.addEventListener('update', onUpdated) + db1.events.addEventListener('error', onError) + db2.events.addEventListener('error', onError) await waitFor(() => replicated, () => true) diff --git a/test/orbitdb-write-access.test.js b/test/orbitdb-write-access.test.js index cfd8fed35..4aec1c5cc 100644 --- a/test/orbitdb-write-access.test.js +++ b/test/orbitdb-write-access.test.js @@ -52,14 +52,14 @@ describe('Write Permissions', function () { let err let connected = false - const onConnected = async ({ peerId, heads }) => { + const onConnected = async () => { connected = true } const db1 = await orbitdb1.open('write-test') const db2 = await orbitdb2.open(db1.address) - db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('join', onConnected) await waitFor(() => connected, () => true) @@ -81,19 +81,19 @@ describe('Write Permissions', function () { let connected = false let updateCount = 0 - const onConnected = async ({ peerId, heads }) => { + const onConnected = () => { connected = true } - const onUpdate = async (entry) => { + const onUpdate = () => { ++updateCount } const db1 = await orbitdb1.open('write-test', { AccessController: IPFSAccessController({ write: ['*'] }) }) const db2 = await orbitdb2.open(db1.address) - db2.events.addEventListener('join', event => onConnected(event.detail)) - db2.events.addEventListener('update', event => onUpdate(event.detail)) + db2.events.addEventListener('join', onConnected) + db2.events.addEventListener('update', onUpdate) await waitFor(() => connected, () => true) @@ -121,19 +121,19 @@ describe('Write Permissions', function () { ] }) } - const onConnected = async ({ peerId, heads }) => { + const onConnected = () => { connected = true } - const onUpdate = async (entry) => { + const onUpdate = () => { ++updateCount } const db1 = await orbitdb1.open('write-test', options) const db2 = await orbitdb2.open(db1.address) - db2.events.addEventListener('join', event => onConnected(event.detail)) - db2.events.addEventListener('update', event => onUpdate(event.detail)) + db2.events.addEventListener('join', onConnected) + db2.events.addEventListener('update', onUpdate) await waitFor(() => connected, () => true) @@ -160,14 +160,14 @@ describe('Write Permissions', function () { }) } - const onConnected = async ({ peerId, heads }) => { + const onConnected = () => { connected = true } const db1 = await orbitdb1.open('write-test', options) const db2 = await orbitdb2.open(db1.address) - db2.events.addEventListener('join', event => onConnected(event.detail)) + db2.events.addEventListener('join', onConnected) await waitFor(() => connected, () => true) @@ -189,19 +189,19 @@ describe('Write Permissions', function () { let connected = false let updateCount = 0 - const onConnected = async ({ peerId, heads }) => { + const onConnected = () => { connected = true } - const onUpdate = async (entry) => { + const onUpdate = () => { ++updateCount } const db1 = await orbitdb1.open('write-test', { AccessController: OrbitDBAccessController() }) const db2 = await orbitdb2.open(db1.address, { AccessController: OrbitDBAccessController() }) - db2.events.addEventListener('join', event => onConnected(event.detail)) - db2.events.addEventListener('update', event => onUpdate(event.detail)) + db2.events.addEventListener('join', onConnected) + db2.events.addEventListener('update', onUpdate) await waitFor(() => connected, () => true) diff --git a/test/sync.test.js b/test/sync.test.js index 921d23b3b..c1958f774 100644 --- a/test/sync.test.js +++ b/test/sync.test.js @@ -148,7 +148,7 @@ describe('Sync protocol', function () { } } - const onJoin = ({ peerId, heads }) => { + const onJoin = () => { joinEventFired = true } @@ -157,8 +157,8 @@ describe('Sync protocol', function () { sync1 = await Sync({ ipfs: ipfs1, log: log1, onSynced: () => {} }) sync2 = await Sync({ ipfs: ipfs2, log: log2, onSynced }) - sync1.events.addEventListener('join', event => onJoin(event.detail)) - sync2.events.addEventListener('join', event => onJoin(event.detail)) + sync1.events.addEventListener('join', onJoin) + sync2.events.addEventListener('join', onJoin) await waitFor(() => joinEventFired, () => true) await waitFor(() => syncedEventFired, () => true) @@ -210,15 +210,15 @@ describe('Sync protocol', function () { } } - const onJoin = ({ peerId, heads }) => { + const onJoin = () => { joinEventFired = true } sync1 = await Sync({ ipfs: ipfs1, log: log1, onSynced: () => {} }) sync2 = await Sync({ ipfs: ipfs2, log: log2, onSynced }) - sync1.events.addEventListener('join', event => onJoin(event.detail)) - sync2.events.addEventListener('join', event => onJoin(event.detail)) + sync1.events.addEventListener('join', onJoin) + sync2.events.addEventListener('join', onJoin) await waitFor(() => joinEventFired, () => true) }) @@ -339,15 +339,15 @@ describe('Sync protocol', function () { } } - const onLeave = (peerId) => { + const onLeave = (event) => { leaveEventFired = true - leavingPeerId = peerId + leavingPeerId = event.detail } sync1 = await Sync({ ipfs: ipfs1, log: log1 }) sync2 = await Sync({ ipfs: ipfs2, log: log2, onSynced }) - sync1.events.addEventListener('leave', event => onLeave(event.detail)) + sync1.events.addEventListener('leave', onLeave) await sync1.add(await log1.append('hello1')) await sync1.add(await log1.append('hello2')) @@ -419,14 +419,14 @@ describe('Sync protocol', function () { } } - const onLeave = (peerId) => { + const onLeave = () => { leaveEventFired = true } sync1 = await Sync({ ipfs: ipfs1, log: log1 }) sync2 = await Sync({ ipfs: ipfs2, log: log2, onSynced }) - sync2.events.addEventListener('leave', event => onLeave(event.detail)) + sync2.events.addEventListener('leave', onLeave) await sync1.add(await log1.append('hello1')) await sync1.add(await log1.append('hello2')) @@ -573,12 +573,12 @@ describe('Sync protocol', function () { it('emits an error when connecting to peer was cancelled due to timeout', async () => { let err = null - const onError = (error) => { - err = error + const onError = (event) => { + err = event.detail } - sync1.events.addEventListener('error', event => onError(event.detail)) - sync2.events.addEventListener('error', event => onError(event.detail)) + sync1.events.addEventListener('error', onError) + sync2.events.addEventListener('error', onError) await sync2.start() @@ -604,20 +604,20 @@ describe('Sync protocol', function () { const log1 = await Log(testIdentity1, { logId: 'synclog3' }) const log2 = await Log(testIdentity2, { logId: 'synclog3' }) - const onJoin = ({ peerId, heads }) => { + const onJoin = (event) => { joinEventFired = true - joiningPeerId = peerId - receivedHeads = heads + joiningPeerId = event.detail.peerId + receivedHeads = event.detail.heads } - const onLeave = (peerId) => { + const onLeave = (event) => { leaveEventFired = true - leavingPeerId = peerId + leavingPeerId = event.detail } - const onError = (e) => { + const onError = (event) => { errorEventFired = true - err = e.toString() + err = event.detail.toString() } const onSynced = (bytes) => { @@ -628,9 +628,9 @@ describe('Sync protocol', function () { sync1 = await Sync({ ipfs: ipfs1, log: log1, onSynced }) sync2 = await Sync({ ipfs: ipfs2, log: log2, onSynced }) - sync1.events.addEventListener('join', event => onJoin(event.detail)) - sync1.events.addEventListener('leave', event => onLeave(event.detail)) - sync2.events.addEventListener('error', event => onError(event.detail)) + sync1.events.addEventListener('join', onJoin) + sync1.events.addEventListener('leave', onLeave) + sync2.events.addEventListener('error', onError) await waitFor(() => joinEventFired, () => true) await waitFor(() => errorEventFired, () => true) From 827e8c8f78c840593098d2f28b4e85173b746237 Mon Sep 17 00:00:00 2001 From: saul Date: Tue, 4 Apr 2023 12:04:27 +1200 Subject: [PATCH 8/9] Improve reliability of the write access test. --- test/orbitdb-write-access.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/orbitdb-write-access.test.js b/test/orbitdb-write-access.test.js index 4aec1c5cc..ccc942e22 100644 --- a/test/orbitdb-write-access.test.js +++ b/test/orbitdb-write-access.test.js @@ -93,7 +93,7 @@ describe('Write Permissions', function () { const db2 = await orbitdb2.open(db1.address) db2.events.addEventListener('join', onConnected) - db2.events.addEventListener('update', onUpdate) + db1.events.addEventListener('update', onUpdate) await waitFor(() => connected, () => true) From 9413dd5d42fe843b95c76a3971ad3ecdf872a6e9 Mon Sep 17 00:00:00 2001 From: saul Date: Tue, 4 Apr 2023 12:42:35 +1200 Subject: [PATCH 9/9] Add custom events flag to mocha. --- test/.mocharc.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/.mocharc.json b/test/.mocharc.json index f865e34f9..83c8c0902 100644 --- a/test/.mocharc.json +++ b/test/.mocharc.json @@ -4,5 +4,6 @@ "recursive": true, "exit": true, "slow": 1000, - "exclude": ["test/browser/**/*.js"] -} \ No newline at end of file + "exclude": ["test/browser/**/*.js"], + "node-option": ["experimental-global-customevent"] +}