chore(8.0): final pre-RC1 sweep — API consistency, named errors, orphans, zero-cast codebase
This commit is contained in:
parent
970e08c466
commit
1f7e365a4e
237 changed files with 1951 additions and 49413 deletions
|
|
@ -123,12 +123,13 @@ export class DistributedCoordinator extends EventEmitter {
|
|||
*/
|
||||
private setupNetworkHandlers(): void {
|
||||
if (!this.networkTransport) return
|
||||
|
||||
// Register message handlers directly on the messageHandlers map
|
||||
const handlers = (this.networkTransport as any).messageHandlers as Map<string, (msg: NetworkMessage) => Promise<any>>
|
||||
|
||||
|
||||
// Register handlers through the transport's public onMessage(), which
|
||||
// writes to the same messageHandlers map this code used to reach into.
|
||||
const transport = this.networkTransport
|
||||
|
||||
// Handle vote requests
|
||||
handlers.set('requestVote', async (msg: NetworkMessage) => {
|
||||
transport.onMessage('requestVote', async (msg: NetworkMessage) => {
|
||||
const response = await this.handleVoteRequest(msg)
|
||||
// Send response back
|
||||
if (this.networkTransport) {
|
||||
|
|
@ -138,12 +139,12 @@ export class DistributedCoordinator extends EventEmitter {
|
|||
})
|
||||
|
||||
// Handle vote responses
|
||||
handlers.set('voteResponse', async (msg: NetworkMessage) => {
|
||||
transport.onMessage('voteResponse', async (msg: NetworkMessage) => {
|
||||
this.handleVoteResponse(msg)
|
||||
})
|
||||
|
||||
// Handle heartbeats/append entries
|
||||
handlers.set('appendEntries', async (msg: NetworkMessage) => {
|
||||
transport.onMessage('appendEntries', async (msg: NetworkMessage) => {
|
||||
const response = await this.handleAppendEntries(msg)
|
||||
// Send response back
|
||||
if (this.networkTransport) {
|
||||
|
|
@ -153,7 +154,7 @@ export class DistributedCoordinator extends EventEmitter {
|
|||
})
|
||||
|
||||
// Handle append responses
|
||||
handlers.set('appendResponse', async (msg: NetworkMessage) => {
|
||||
transport.onMessage('appendResponse', async (msg: NetworkMessage) => {
|
||||
this.handleAppendResponse(msg)
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,7 +75,12 @@ export class NetworkTransport extends EventEmitter {
|
|||
if (this.isRunning) return
|
||||
|
||||
const ws = await import('ws')
|
||||
WebSocketServer = (ws as any).WebSocketServer || (ws as any).Server || ws.default
|
||||
// The ws package has exported its server class as `WebSocketServer`
|
||||
// (v8+), `Server` (older releases) and via the default export — and the
|
||||
// available type declarations disagree on which of those are value
|
||||
// exports, so probe all three through an optional-keyed module view.
|
||||
const wsModule = ws as typeof ws & { WebSocketServer?: unknown; Server?: unknown }
|
||||
WebSocketServer = wsModule.WebSocketServer || wsModule.Server || ws.default
|
||||
|
||||
await this.startHTTPServer()
|
||||
await this.startWebSocketServer()
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
import { EventEmitter } from 'node:events'
|
||||
import * as os from 'node:os'
|
||||
import { StorageAdapter } from '../coreTypes.js'
|
||||
import { NounMetadata, StorageAdapter } from '../coreTypes.js'
|
||||
|
||||
export interface NodeInfo {
|
||||
id: string
|
||||
|
|
@ -357,7 +357,11 @@ export class StorageDiscovery extends EventEmitter {
|
|||
*/
|
||||
private async loadNodeRegistry(): Promise<string[]> {
|
||||
try {
|
||||
const registry = await this.storage.getMetadata(`${this.CLUSTER_PATH}/registry.json`) as any
|
||||
// The registry document is written by updateNodeRegistry() below with a
|
||||
// `nodes` string-ID array on top of the base NounMetadata shape.
|
||||
const registry = await this.storage.getMetadata(
|
||||
`${this.CLUSTER_PATH}/registry.json`
|
||||
) as (NounMetadata & { nodes?: string[] }) | null
|
||||
return registry?.nodes || []
|
||||
} catch (err) {
|
||||
return []
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue