Skip to content

Commit 3062ac3

Browse files
committed
feat: making NodeManager use a generic manifest
1 parent 748d85a commit 3062ac3

29 files changed

+163
-123
lines changed

src/PolykeyAgent.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ class PolykeyAgent {
182182
let nodeConnectionManager:
183183
| NodeConnectionManager<AgentClientManifest>
184184
| undefined;
185-
let nodeManager: NodeManager | undefined;
185+
let nodeManager: NodeManager<AgentClientManifest> | undefined;
186186
let discovery: Discovery | undefined;
187187
let notificationsManager: NotificationsManager | undefined;
188188
let vaultManager: VaultManager | undefined;
@@ -475,7 +475,7 @@ class PolykeyAgent {
475475
public readonly nodeGraph: NodeGraph;
476476
public readonly taskManager: TaskManager;
477477
public readonly nodeConnectionManager: NodeConnectionManager<AgentClientManifest>;
478-
public readonly nodeManager: NodeManager;
478+
public readonly nodeManager: NodeManager<AgentClientManifest>;
479479
public readonly discovery: Discovery;
480480
public readonly vaultManager: VaultManager;
481481
public readonly notificationsManager: NotificationsManager;
@@ -546,7 +546,7 @@ class PolykeyAgent {
546546
nodeGraph: NodeGraph;
547547
taskManager: TaskManager;
548548
nodeConnectionManager: NodeConnectionManager<AgentClientManifest>;
549-
nodeManager: NodeManager;
549+
nodeManager: NodeManager<AgentClientManifest>;
550550
discovery: Discovery;
551551
vaultManager: VaultManager;
552552
notificationsManager: NotificationsManager;

src/bootstrap/utils.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import type {
55
PasswordOpsLimit,
66
PasswordMemLimit,
77
} from '../keys/types.js';
8+
import type { AgentClientManifest } from '#nodes/agent/callers/index.js';
89
import path from 'node:path';
910
import Logger from '@matrixai/logger';
1011
import { DB } from '@matrixai/db';
@@ -168,7 +169,7 @@ async function bootstrapState({
168169
logger: logger.getChild(NodeGraph.name),
169170
});
170171

171-
const nodeManager = new NodeManager({
172+
const nodeManager = new NodeManager<AgentClientManifest>({
172173
db,
173174
keyRing,
174175
nodeGraph,

src/client/handlers/NodesAdd.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import type {
99
import type { NodeId } from '../../ids/index.js';
1010
import type { Host, Port } from '../../network/types.js';
1111
import type NodeManager from '../../nodes/NodeManager.js';
12+
import type { AgentClientManifest } from '#nodes/agent/callers/index.js';
1213
import { UnaryHandler } from '@matrixai/rpc';
1314
import { matchSync } from '../../utils/index.js';
1415
import { validateSync } from '../../validation/index.js';
@@ -19,7 +20,7 @@ import * as nodeErrors from '../../nodes/errors.js';
1920
class NodesAdd extends UnaryHandler<
2021
{
2122
db: DB;
22-
nodeManager: NodeManager;
23+
nodeManager: NodeManager<AgentClientManifest>;
2324
},
2425
ClientRPCRequestParams<NodesAddMessage>,
2526
ClientRPCResponseResult
@@ -30,7 +31,10 @@ class NodesAdd extends UnaryHandler<
3031
_meta: Record<string, JSONValue>,
3132
ctx: ContextTimed,
3233
): Promise<ClientRPCResponseResult> => {
33-
const { db, nodeManager }: { db: DB; nodeManager: NodeManager } =
34+
const {
35+
db,
36+
nodeManager,
37+
}: { db: DB; nodeManager: NodeManager<AgentClientManifest> } =
3438
this.container;
3539
const {
3640
nodeId,

src/client/handlers/NodesClaim.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import type {
77
} from '../types.js';
88
import type { NodeId } from '../../ids/index.js';
99
import type NodeManager from '../../nodes/NodeManager.js';
10+
import type { AgentClientManifest } from '#nodes/agent/callers/index.js';
1011
import { UnaryHandler } from '@matrixai/rpc';
1112
import * as ids from '../../ids/index.js';
1213
import { matchSync } from '../../utils/index.js';
@@ -15,15 +16,18 @@ import { validateSync } from '../../validation/index.js';
1516
class NodesClaim extends UnaryHandler<
1617
{
1718
db: DB;
18-
nodeManager: NodeManager;
19+
nodeManager: NodeManager<AgentClientManifest>;
1920
},
2021
ClientRPCRequestParams<ClaimNodeMessage>,
2122
ClientRPCResponseResult<SuccessMessage>
2223
> {
2324
public handle = async (
2425
input: ClientRPCRequestParams<ClaimNodeMessage>,
2526
): Promise<ClientRPCResponseResult<SuccessMessage>> => {
26-
const { db, nodeManager }: { db: DB; nodeManager: NodeManager } =
27+
const {
28+
db,
29+
nodeManager,
30+
}: { db: DB; nodeManager: NodeManager<AgentClientManifest> } =
2731
this.container;
2832
const {
2933
nodeId,

src/client/handlers/NodesFind.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import type {
88
} from '../types.js';
99
import type { NodeId } from '../../ids/index.js';
1010
import type NodeManager from '../../nodes/NodeManager.js';
11+
import type { AgentClientManifest } from '#nodes/agent/callers/index.js';
1112
import { UnaryHandler } from '@matrixai/rpc';
1213
import { validateSync } from '../../validation/index.js';
1314
import { matchSync } from '../../utils/index.js';
@@ -16,7 +17,7 @@ import * as nodesErrors from '../../nodes/errors.js';
1617

1718
class NodesFind extends UnaryHandler<
1819
{
19-
nodeManager: NodeManager;
20+
nodeManager: NodeManager<AgentClientManifest>;
2021
},
2122
ClientRPCRequestParams<NodeIdMessage>,
2223
ClientRPCResponseResult<NodesFindMessage>
@@ -27,7 +28,8 @@ class NodesFind extends UnaryHandler<
2728
_meta: Record<string, JSONValue>,
2829
ctx: ContextTimed,
2930
): Promise<ClientRPCResponseResult<NodesFindMessage>> => {
30-
const { nodeManager }: { nodeManager: NodeManager } = this.container;
31+
const { nodeManager }: { nodeManager: NodeManager<AgentClientManifest> } =
32+
this.container;
3133
const {
3234
nodeId,
3335
}: {

src/client/handlers/NodesPing.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,24 @@ import type {
66
} from '../types.js';
77
import type { NodeId } from '../../ids/index.js';
88
import type NodeManager from '../../nodes/NodeManager.js';
9+
import type { AgentClientManifest } from '#nodes/agent/callers/index.js';
910
import { UnaryHandler } from '@matrixai/rpc';
1011
import * as ids from '../../ids/index.js';
1112
import { validateSync } from '../../validation/index.js';
1213
import { matchSync } from '../../utils/index.js';
1314

1415
class NodesPing extends UnaryHandler<
1516
{
16-
nodeManager: NodeManager;
17+
nodeManager: NodeManager<AgentClientManifest>;
1718
},
1819
ClientRPCRequestParams<NodeIdMessage>,
1920
ClientRPCResponseResult<SuccessMessage>
2021
> {
2122
public handle = async (
2223
input: ClientRPCRequestParams<NodeIdMessage>,
2324
): Promise<ClientRPCResponseResult<SuccessMessage>> => {
24-
const { nodeManager }: { nodeManager: NodeManager } = this.container;
25+
const { nodeManager }: { nodeManager: NodeManager<AgentClientManifest> } =
26+
this.container;
2527
const {
2628
nodeId,
2729
}: {

src/client/handlers/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ const serverManifest = (container: {
108108
acl: ACL;
109109
audit: Audit;
110110
notificationsManager: NotificationsManager;
111-
nodeManager: NodeManager;
111+
nodeManager: NodeManager<AgentClientManifest>;
112112
nodeConnectionManager: NodeConnectionManager<AgentClientManifest>;
113113
nodeGraph: NodeGraph;
114114
vaultManager: VaultManager;

src/discovery/Discovery.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import type {
2828
ClaimLinkNode,
2929
} from '../claims/payloads/index.js';
3030
import type { DiscoveryQueueInfo } from './types.js';
31+
import type { AgentClientManifest } from '#nodes/agent/callers/index.js';
3132
import Logger from '@matrixai/logger';
3233
import { createDestroyStartStop } from '@matrixai/async-init';
3334
import { decorators } from '@matrixai/contexts';
@@ -90,7 +91,7 @@ class Discovery {
9091
keyRing: KeyRing;
9192
gestaltGraph: GestaltGraph;
9293
identitiesManager: IdentitiesManager;
93-
nodeManager: NodeManager;
94+
nodeManager: NodeManager<AgentClientManifest>;
9495
taskManager: TaskManager;
9596
discoverVertexTimeoutTime?: number;
9697
rediscoverCheckIntervalTime?: number;
@@ -125,7 +126,7 @@ class Discovery {
125126
protected keyRing: KeyRing;
126127
protected gestaltGraph: GestaltGraph;
127128
protected identitiesManager: IdentitiesManager;
128-
protected nodeManager: NodeManager;
129+
protected nodeManager: NodeManager<AgentClientManifest>;
129130
protected taskManager: TaskManager;
130131
protected discoverVertexTimeoutTime: number;
131132
/**
@@ -242,7 +243,7 @@ class Discovery {
242243
keyRing: KeyRing;
243244
gestaltGraph: GestaltGraph;
244245
identitiesManager: IdentitiesManager;
245-
nodeManager: NodeManager;
246+
nodeManager: NodeManager<AgentClientManifest>;
246247
taskManager: TaskManager;
247248
discoverVertexTimeoutTime: number;
248249
rediscoverCheckIntervalTime: number;

src/nodes/NodeConnectionManager.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import type {
1717
SuccessMessage,
1818
} from './agent/types.js';
1919
import type { AgentServerManifest } from './agent/handlers/index.js';
20-
import type { AgentClientManifestCore } from './agent/callers/index.js';
20+
import type { AgentClientManifestNodeConnectionManager } from './agent/callers/index.js';
2121
import type KeyRing from '../keys/KeyRing.js';
2222
import type { CertificatePEM } from '../keys/types.js';
2323
import type {
@@ -125,16 +125,19 @@ const rpcMethodsWhitelist = ['nodesAuthenticateConnection'];
125125
* The NodeConnectionManager encapsulates `QUICServer`.
126126
* While the NodeConnection encapsulates `QUICClient`.
127127
*/
128-
// eslint-disable-next-line
129-
interface NodeConnectionManager<Manifest extends AgentClientManifestCore>
130-
extends startStop.StartStop {}
128+
interface NodeConnectionManager<
129+
// eslint-disable-next-line
130+
Manifest extends AgentClientManifestNodeConnectionManager,
131+
> extends startStop.StartStop {}
131132
@startStop.StartStop({
132133
eventStart: nodesEvents.EventNodeConnectionManagerStart,
133134
eventStarted: nodesEvents.EventNodeConnectionManagerStarted,
134135
eventStop: nodesEvents.EventNodeConnectionManagerStop,
135136
eventStopped: nodesEvents.EventNodeConnectionManagerStopped,
136137
})
137-
class NodeConnectionManager<Manifest extends AgentClientManifestCore> {
138+
class NodeConnectionManager<
139+
Manifest extends AgentClientManifestNodeConnectionManager,
140+
> {
138141
/**
139142
* Alpha constant for kademlia
140143
* The number of the closest nodes to contact initially

0 commit comments

Comments
 (0)