diff --git a/lib/index.js b/lib/index.js index f3b92ad..5212ed5 100644 --- a/lib/index.js +++ b/lib/index.js @@ -12,55 +12,15 @@ const MsgV4 = require('ppppp-db/msg-v4') * @typedef {`${string}@${GoalDSL}`} Rule * @typedef {[Array, Array]} Rules * @typedef {{ - * db: PPPPPDB | null, - * goals: PPPPPGoal | null, - * set: PPPPPSet | null, - * dict: PPPPPDict | null, - * sync: PPPPPSync | null, - * gc: PPPPPGC | null, - * }} UnknownPeer + * db: PPPPPDB, + * goals: PPPPPGoal, + * set: PPPPPSet, + * dict: PPPPPDict, + * sync: PPPPPSync, + * gc: PPPPPGC, + * }} Peer */ -/** - * @param {{ db: PPPPPDB | null }} peer - * @returns {asserts peer is { db: PPPPPDB }} - */ -function assertDBPlugin(peer) { - if (!peer.db) throw new Error('"conductor" plugin requires "db" plugin') -} - -/** - * @param {{ goals: PPPPPGoal | null }} peer - * @returns {asserts peer is { goals: PPPPPGoal }} - */ -function assertGoalsPlugin(peer) { - if (!peer.goals) throw new Error('"conductor" plugin requires "goals" plugin') -} - -/** - * @param {{ set: PPPPPSet | null }} peer - * @returns {asserts peer is { set: PPPPPSet }} - */ -function assertSetPlugin(peer) { - if (!peer.set) throw new Error('"conductor" plugin requires "set" plugin') -} - -/** - * @param {{ gc: PPPPPGC | null }} peer - * @returns {asserts peer is { gc: PPPPPGC }} - */ -function assertGCPlugin(peer) { - if (!peer.gc) throw new Error('"conductor" plugin requires "gc" plugin') -} - -/** - * @param {{ sync: PPPPPSync | null }} peer - * @returns {asserts peer is { sync: PPPPPSync }} - */ -function assertSyncPlugin(peer) { - if (!peer.sync) throw new Error('"conductor" plugin requires "sync" plugin') -} - /** * @param {any} rule * @returns {[string, GoalDSL]} @@ -76,16 +36,10 @@ function parseRule(rule) { } /** - * @param {UnknownPeer} peer + * @param {Peer} peer * @param {unknown} config */ function initConductor(peer, config) { - assertDBPlugin(peer) - assertGoalsPlugin(peer) - assertSetPlugin(peer) - assertGCPlugin(peer) - assertSyncPlugin(peer) - /** * How many bytes does a single msg ID take up */ @@ -140,7 +94,6 @@ function initConductor(peer, config) { * @param {Rule} rule */ function getRealisticCount(rule) { - assertGoalsPlugin(peer) const [, goalDSL] = parseRule(rule) const { count } = peer.goals.parse(goalDSL) const realisticCount = isFinite(count) @@ -159,8 +112,6 @@ function initConductor(peer, config) { * @returns {[Array, Array]} */ function validateRules(rules, numFollowed, maxBytes) { - assertGoalsPlugin(peer) - const [myRules, theirRules] = rules let estimateMsgCount = @@ -198,10 +149,6 @@ function initConductor(peer, config) { * @param {Array} rules list of feed domains of interest */ function setupAccountGoals(accountID, rules) { - assertDBPlugin(peer) - assertSetPlugin(peer) - assertGoalsPlugin(peer) - peer.goals.set(accountID, 'all') const followDomain = peer.set.getDomain('follow') @@ -227,10 +174,6 @@ function initConductor(peer, config) { * @param {Array} rules */ function teardownAccountGoals(accountID, rules) { - assertDBPlugin(peer) - assertSetPlugin(peer) - assertGoalsPlugin(peer) - peer.goals.set(accountID, 'none') const followDomain = peer.set.getDomain('follow') @@ -260,18 +203,15 @@ function initConductor(peer, config) { * @param {number} maxBytes */ function start(myID, rules, maxBytes) { - assertDBPlugin(peer) - assertSetPlugin(peer) - assertGoalsPlugin(peer) - assertGCPlugin(peer) - assertSyncPlugin(peer) - if (maxBytes < MIN_MAXBYTES) { // prettier-ignore throw new Error(`ppppp-conductor maxBytes must be at least ${MIN_MAXBYTES} bytes, got ${maxBytes}`) } if (maxBytes > MAX_RECOMMENDED_MAXBYTES) { - debug('WARNING. maxBytes is too big, we recommend at most %s bytes', MAX_RECOMMENDED_MAXBYTES) + debug( + 'WARNING. maxBytes is too big, we recommend at most %s bytes', + MAX_RECOMMENDED_MAXBYTES + ) } const followedAccounts = peer.set.values('follow') @@ -317,4 +257,5 @@ function initConductor(peer, config) { } exports.name = 'conductor' +exports.needs = ['db', 'goals', 'set', 'gc', 'sync'] exports.init = initConductor diff --git a/package.json b/package.json index de14042..45d31a1 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "pretty-quick": "^3.1.3", "rimraf": "^4.4.0", "secret-handshake-ext": "~0.0.11", - "secret-stack": "~8.0.0", + "secret-stack": "~8.1.0", "ssb-box": "^1.0.1" }, "scripts": {