refactor(export-mesh): extract gossip-wait options builder (Phase 936)

Centralize buildGuildExportMeshGossipWaitOptions in a dedicated module;
gossip-wait-build composes entry-bound callbacks; mixin-fetch-once imports
options instead of inlining wait config. No observable behavior change.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Raven Scott
2026-06-04 22:09:18 -04:00
co-authored by Cursor
parent a40ea74e29
commit 7bbc4168a9
5 changed files with 35 additions and 19 deletions
+2
View File
@@ -178,6 +178,8 @@ Application facade: one `PearcordPlatform` class that wires identity, database,
**Phase 881 (v0.8.848):** Split `gossip-rpc-pull.js` into peer/session/validators/orchestrators/view-snapshot modules; barrel export unchanged. Bundle: `npm run test:ci-phase881`.
**Phase 936 (v0.8.903):** Export mesh gossip-wait options builder + mixin-fetch-once deps split (non-breaking). Bundle: `npm run test:ci-phase936`.
**Phase 935 (v0.8.902):** Export mesh format audit/digest local helpers + validators facade (non-breaking). Bundle: `npm run test:ci-phase935`.
**Phase 934 (v0.8.901):** Export mesh registry-entry field groups + clone helper extract (non-breaking). Bundle: `npm run test:ci-phase934`.
+8 -7
View File
@@ -1,8 +1,6 @@
'use strict'
const { awaitGuildExportMeshGossipWait } = require('./gossip-rpc-export-mesh-gossip-wait')
/** Base fields for export mesh gossip request payloads (Phase 898). */
const { buildGuildExportMeshGossipWaitOptions } = require('./gossip-rpc-export-mesh-gossip-wait-options')
function buildGuildExportMeshGossipRequestBase (platform, opts = {}, requestId) {
return {
guildId: platform.guild.guild.id,
@@ -12,13 +10,16 @@ function buildGuildExportMeshGossipRequestBase (platform, opts = {}, requestId)
at: Date.now()
}
}
/** Factory for meshGossipWait callbacks passed to fetchGuildExportMeshResourceOnce (Phase 898). */
function buildGuildExportMeshGossipWaitCallback (config) {
return () => awaitGuildExportMeshGossipWait(config)
}
function buildGuildExportMeshGossipWaitCallbackForEntry (platform, entry, resourceId, opts = {}) {
return buildGuildExportMeshGossipWaitCallback(
buildGuildExportMeshGossipWaitOptions(platform, entry, resourceId, opts)
)
}
module.exports = {
buildGuildExportMeshGossipRequestBase,
buildGuildExportMeshGossipWaitCallback
buildGuildExportMeshGossipWaitCallback,
buildGuildExportMeshGossipWaitCallbackForEntry
}
@@ -0,0 +1,19 @@
'use strict'
/** Build awaitGuildExportMeshGossipWait config from registry entry + platform (Phase 936). */
function buildGuildExportMeshGossipWaitOptions (platform, entry, resourceId, opts = {}) {
return {
resourceId,
opts,
waiters: platform[entry.waitersKey],
waiterMode: entry.waiterMode,
timeoutErrorMessage: entry.timeoutErrorMessage,
notFoundMessage: entry.notFoundMessage,
sendGossipRequest: (requestId) => entry.sendGossipRequest(platform, resourceId, opts, requestId),
refetchLocal: () => entry.getLocalRow(platform, resourceId),
validateLocal: entry.validateLocal,
formatResult: (fetched) => entry.formatGossipResult(platform, resourceId, opts, fetched)
}
}
module.exports = { buildGuildExportMeshGossipWaitOptions }
+4 -12
View File
@@ -1,5 +1,6 @@
'use strict'
const { buildGuildExportMeshGossipWaitOptions } = require('./gossip-rpc-export-mesh-gossip-wait-options')
const { buildGuildExportMeshGossipWaitCallback } = require('./gossip-rpc-export-mesh-gossip-wait-build')
const { fetchGuildExportMeshResourceOnce } = require('./gossip-rpc-export-mesh-fetch-once')
@@ -15,18 +16,9 @@ function buildGuildExportMeshFetchOnceMethod (entry) {
tryRpc: () => entry.tryRpc(platform, resourceId, opts),
ingestRpc: (rpc) => entry.ingestRpc(platform, rpc),
formatRpcHit: (rpc) => entry.formatRpcHit(platform, resourceId, opts, rpc),
meshGossipWait: buildGuildExportMeshGossipWaitCallback({
resourceId,
opts,
waiters: platform[entry.waitersKey],
waiterMode: entry.waiterMode,
timeoutErrorMessage: entry.timeoutErrorMessage,
notFoundMessage: entry.notFoundMessage,
sendGossipRequest: (requestId) => entry.sendGossipRequest(platform, resourceId, opts, requestId),
refetchLocal: () => entry.getLocalRow(platform, resourceId),
validateLocal: entry.validateLocal,
formatResult: (fetched) => entry.formatGossipResult(platform, resourceId, opts, fetched)
})
meshGossipWait: buildGuildExportMeshGossipWaitCallback(
buildGuildExportMeshGossipWaitOptions(platform, entry, resourceId, opts)
)
})
}
}
+2
View File
@@ -4,6 +4,7 @@
const attempt = require('./gossip-rpc-export-mesh-attempt')
const retry = require('./gossip-rpc-export-mesh-retry')
const gossipWait = require('./gossip-rpc-export-mesh-gossip-wait')
const gossipWaitOptions = require('./gossip-rpc-export-mesh-gossip-wait-options')
const gossipWaitBuild = require('./gossip-rpc-export-mesh-gossip-wait-build')
const fetchOnce = require('./gossip-rpc-export-mesh-fetch-once')
const waiterResolve = require('./gossip-rpc-export-mesh-waiter-resolve')
@@ -75,6 +76,7 @@ module.exports = {
...attempt,
...retry,
...gossipWait,
...gossipWaitOptions,
...gossipWaitBuild,
...fetchOnce,
...waiterResolve,