@optimystic/db-p2p 0.9.2 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -6
- package/dist/src/cluster/cluster-repo.d.ts +23 -1
- package/dist/src/cluster/cluster-repo.d.ts.map +1 -1
- package/dist/src/cluster/cluster-repo.js +110 -8
- package/dist/src/cluster/cluster-repo.js.map +1 -1
- package/dist/src/cluster/i-transaction-state-store.d.ts +36 -0
- package/dist/src/cluster/i-transaction-state-store.d.ts.map +1 -0
- package/dist/src/cluster/i-transaction-state-store.js +2 -0
- package/dist/src/cluster/i-transaction-state-store.js.map +1 -0
- package/dist/src/cluster/memory-transaction-state-store.d.ts +19 -0
- package/dist/src/cluster/memory-transaction-state-store.d.ts.map +1 -0
- package/dist/src/cluster/memory-transaction-state-store.js +44 -0
- package/dist/src/cluster/memory-transaction-state-store.js.map +1 -0
- package/dist/src/cluster/persistent-transaction-state-store.d.ts +26 -0
- package/dist/src/cluster/persistent-transaction-state-store.d.ts.map +1 -0
- package/dist/src/cluster/persistent-transaction-state-store.js +79 -0
- package/dist/src/cluster/persistent-transaction-state-store.js.map +1 -0
- package/dist/src/cluster/spread-on-churn.d.ts +67 -0
- package/dist/src/cluster/spread-on-churn.d.ts.map +1 -0
- package/dist/src/cluster/spread-on-churn.js +192 -0
- package/dist/src/cluster/spread-on-churn.js.map +1 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/libp2p-node-base.d.ts +3 -0
- package/dist/src/libp2p-node-base.d.ts.map +1 -1
- package/dist/src/libp2p-node-base.js +16 -2
- package/dist/src/libp2p-node-base.js.map +1 -1
- package/dist/src/network/network-manager-service.d.ts +8 -0
- package/dist/src/network/network-manager-service.d.ts.map +1 -1
- package/dist/src/network/network-manager-service.js +21 -0
- package/dist/src/network/network-manager-service.js.map +1 -1
- package/dist/src/repo/cluster-coordinator.d.ts +12 -1
- package/dist/src/repo/cluster-coordinator.d.ts.map +1 -1
- package/dist/src/repo/cluster-coordinator.js +67 -2
- package/dist/src/repo/cluster-coordinator.js.map +1 -1
- package/dist/src/repo/coordinator-repo.d.ts +5 -2
- package/dist/src/repo/coordinator-repo.d.ts.map +1 -1
- package/dist/src/repo/coordinator-repo.js +8 -4
- package/dist/src/repo/coordinator-repo.js.map +1 -1
- package/dist/src/storage/i-kv-store.d.ts +9 -0
- package/dist/src/storage/i-kv-store.d.ts.map +1 -0
- package/dist/src/storage/i-kv-store.js +2 -0
- package/dist/src/storage/i-kv-store.js.map +1 -0
- package/dist/src/storage/memory-kv-store.d.ts +10 -0
- package/dist/src/storage/memory-kv-store.d.ts.map +1 -0
- package/dist/src/storage/memory-kv-store.js +23 -0
- package/dist/src/storage/memory-kv-store.js.map +1 -0
- package/package.json +2 -2
- package/src/cluster/cluster-repo.ts +112 -8
- package/src/cluster/i-transaction-state-store.ts +43 -0
- package/src/cluster/memory-transaction-state-store.ts +56 -0
- package/src/cluster/persistent-transaction-state-store.ts +92 -0
- package/src/cluster/spread-on-churn.ts +285 -0
- package/src/index.ts +6 -0
- package/src/libp2p-node-base.ts +23 -2
- package/src/network/network-manager-service.ts +32 -0
- package/src/repo/cluster-coordinator.ts +72 -2
- package/src/repo/coordinator-repo.ts +13 -4
- package/src/storage/i-kv-store.ts +8 -0
- package/src/storage/memory-kv-store.ts +28 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ITransactionStateStore backed by an IKVStore for cross-platform persistence.
|
|
3
|
+
*
|
|
4
|
+
* Key namespace:
|
|
5
|
+
* coordinator/{messageHash} → JSON(PersistedCoordinatorState)
|
|
6
|
+
* participant/{messageHash} → JSON(PersistedParticipantState)
|
|
7
|
+
* executed/{messageHash} → JSON({ timestamp: number })
|
|
8
|
+
*/
|
|
9
|
+
export class PersistentTransactionStateStore {
|
|
10
|
+
kv;
|
|
11
|
+
constructor(kv) {
|
|
12
|
+
this.kv = kv;
|
|
13
|
+
}
|
|
14
|
+
// --- Coordinator ---
|
|
15
|
+
async saveCoordinatorState(messageHash, state) {
|
|
16
|
+
await this.kv.set(`coordinator/${messageHash}`, JSON.stringify(state));
|
|
17
|
+
}
|
|
18
|
+
async getCoordinatorState(messageHash) {
|
|
19
|
+
const raw = await this.kv.get(`coordinator/${messageHash}`);
|
|
20
|
+
return raw ? JSON.parse(raw) : undefined;
|
|
21
|
+
}
|
|
22
|
+
async deleteCoordinatorState(messageHash) {
|
|
23
|
+
await this.kv.delete(`coordinator/${messageHash}`);
|
|
24
|
+
}
|
|
25
|
+
async getAllCoordinatorStates() {
|
|
26
|
+
const keys = await this.kv.list('coordinator/');
|
|
27
|
+
const results = [];
|
|
28
|
+
for (const key of keys) {
|
|
29
|
+
const raw = await this.kv.get(key);
|
|
30
|
+
if (raw) {
|
|
31
|
+
results.push(JSON.parse(raw));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return results;
|
|
35
|
+
}
|
|
36
|
+
// --- Participant ---
|
|
37
|
+
async saveParticipantState(messageHash, state) {
|
|
38
|
+
await this.kv.set(`participant/${messageHash}`, JSON.stringify(state));
|
|
39
|
+
}
|
|
40
|
+
async getParticipantState(messageHash) {
|
|
41
|
+
const raw = await this.kv.get(`participant/${messageHash}`);
|
|
42
|
+
return raw ? JSON.parse(raw) : undefined;
|
|
43
|
+
}
|
|
44
|
+
async deleteParticipantState(messageHash) {
|
|
45
|
+
await this.kv.delete(`participant/${messageHash}`);
|
|
46
|
+
}
|
|
47
|
+
async getAllParticipantStates() {
|
|
48
|
+
const keys = await this.kv.list('participant/');
|
|
49
|
+
const results = [];
|
|
50
|
+
for (const key of keys) {
|
|
51
|
+
const raw = await this.kv.get(key);
|
|
52
|
+
if (raw) {
|
|
53
|
+
results.push(JSON.parse(raw));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return results;
|
|
57
|
+
}
|
|
58
|
+
// --- Executed ---
|
|
59
|
+
async markExecuted(messageHash, timestamp) {
|
|
60
|
+
await this.kv.set(`executed/${messageHash}`, JSON.stringify({ timestamp }));
|
|
61
|
+
}
|
|
62
|
+
async wasExecuted(messageHash) {
|
|
63
|
+
const raw = await this.kv.get(`executed/${messageHash}`);
|
|
64
|
+
return raw !== undefined;
|
|
65
|
+
}
|
|
66
|
+
async pruneExecuted(olderThan) {
|
|
67
|
+
const keys = await this.kv.list('executed/');
|
|
68
|
+
for (const key of keys) {
|
|
69
|
+
const raw = await this.kv.get(key);
|
|
70
|
+
if (raw) {
|
|
71
|
+
const { timestamp } = JSON.parse(raw);
|
|
72
|
+
if (timestamp < olderThan) {
|
|
73
|
+
await this.kv.delete(key);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=persistent-transaction-state-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistent-transaction-state-store.js","sourceRoot":"","sources":["../../../src/cluster/persistent-transaction-state-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { Startable, Libp2p } from '@libp2p/interface';
|
|
2
|
+
import type { IRepo, IPeerNetwork } from '@optimystic/db-core';
|
|
3
|
+
import type { FretService } from 'p2p-fret';
|
|
4
|
+
import type { PartitionDetector } from './partition-detector.js';
|
|
5
|
+
export interface SpreadOnChurnConfig {
|
|
6
|
+
/** Enable the churn-resilient spread protocol. Default: true */
|
|
7
|
+
enabled: boolean;
|
|
8
|
+
/** Number of middle-closest peers eligible to spread (d). Default: 3 */
|
|
9
|
+
spreadDistance: number;
|
|
10
|
+
/** Enable dynamic d scaling based on cluster health. Default: true */
|
|
11
|
+
dynamicSpreadDistance: boolean;
|
|
12
|
+
/** Cluster size ratio below which spread becomes more aggressive. Default: 0.6 */
|
|
13
|
+
healthThreshold: number;
|
|
14
|
+
/** Debounce window for departure detection (ms). Default: 5000 */
|
|
15
|
+
departureDebounceMs: number;
|
|
16
|
+
/** Number of peers beyond cluster boundary to target. Default: 4 */
|
|
17
|
+
expansionStep: number;
|
|
18
|
+
}
|
|
19
|
+
export interface SpreadOnChurnDeps {
|
|
20
|
+
libp2p: Libp2p;
|
|
21
|
+
fret: FretService;
|
|
22
|
+
partitionDetector: PartitionDetector;
|
|
23
|
+
repo: IRepo;
|
|
24
|
+
peerNetwork: IPeerNetwork;
|
|
25
|
+
clusterSize: number;
|
|
26
|
+
protocolPrefix?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface SpreadEvent {
|
|
29
|
+
/** Blocks that were spread */
|
|
30
|
+
spread: Array<{
|
|
31
|
+
blockId: string;
|
|
32
|
+
targets: string[];
|
|
33
|
+
succeeded: string[];
|
|
34
|
+
failed: string[];
|
|
35
|
+
}>;
|
|
36
|
+
/** Current effective d */
|
|
37
|
+
effectiveD: number;
|
|
38
|
+
/** Timestamp of the departure that triggered this */
|
|
39
|
+
triggeredAt: number;
|
|
40
|
+
}
|
|
41
|
+
type SpreadHandler = (event: SpreadEvent) => void;
|
|
42
|
+
export declare class SpreadOnChurnMonitor implements Startable {
|
|
43
|
+
private readonly deps;
|
|
44
|
+
private running;
|
|
45
|
+
private readonly trackedBlocks;
|
|
46
|
+
private readonly handlers;
|
|
47
|
+
private debounceTimer;
|
|
48
|
+
private departureTimestamps;
|
|
49
|
+
private departureTimestamp;
|
|
50
|
+
private readonly config;
|
|
51
|
+
private readonly onConnectionClose;
|
|
52
|
+
constructor(deps: SpreadOnChurnDeps, config?: Partial<SpreadOnChurnConfig>);
|
|
53
|
+
start(): Promise<void>;
|
|
54
|
+
stop(): Promise<void>;
|
|
55
|
+
onSpread(handler: SpreadHandler): void;
|
|
56
|
+
trackBlock(blockId: string): void;
|
|
57
|
+
untrackBlock(blockId: string): void;
|
|
58
|
+
getTrackedBlockCount(): number;
|
|
59
|
+
/** Force an immediate spread check (useful for testing). */
|
|
60
|
+
checkNow(): Promise<SpreadEvent | null>;
|
|
61
|
+
private handleDeparture;
|
|
62
|
+
private performSpread;
|
|
63
|
+
private computeEffectiveD;
|
|
64
|
+
private emitEvent;
|
|
65
|
+
}
|
|
66
|
+
export {};
|
|
67
|
+
//# sourceMappingURL=spread-on-churn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spread-on-churn.d.ts","sourceRoot":"","sources":["../../../src/cluster/spread-on-churn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAShE,MAAM,WAAW,mBAAmB;IACnC,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAA;IAChB,wEAAwE;IACxE,cAAc,EAAE,MAAM,CAAA;IACtB,sEAAsE;IACtE,qBAAqB,EAAE,OAAO,CAAA;IAC9B,kFAAkF;IAClF,eAAe,EAAE,MAAM,CAAA;IACvB,kEAAkE;IAClE,mBAAmB,EAAE,MAAM,CAAA;IAC3B,oEAAoE;IACpE,aAAa,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,WAAW,CAAA;IACjB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,IAAI,EAAE,KAAK,CAAA;IACX,WAAW,EAAE,YAAY,CAAA;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,WAAW;IAC3B,8BAA8B;IAC9B,MAAM,EAAE,KAAK,CAAC;QACb,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,EAAE,CAAA;QACjB,SAAS,EAAE,MAAM,EAAE,CAAA;QACnB,MAAM,EAAE,MAAM,EAAE,CAAA;KAChB,CAAC,CAAA;IACF,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAA;CACnB;AAED,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;AAejD,qBAAa,oBAAqB,YAAW,SAAS;IAYpD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAXtB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,aAAa,CAA6C;IAClE,OAAO,CAAC,mBAAmB,CAAe;IAC1C,OAAO,CAAC,kBAAkB,CAAI;IAE9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAY;gBAG5B,IAAI,EAAE,iBAAiB,EACxC,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM;IAQpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAStB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB3B,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAItC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAInC,oBAAoB,IAAI,MAAM;IAI9B,4DAA4D;IACtD,QAAQ,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAM7C,OAAO,CAAC,eAAe;YA2BT,aAAa;IA8E3B,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,SAAS;CASjB"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { hashKey } from 'p2p-fret';
|
|
2
|
+
import { peerIdFromString } from '@libp2p/peer-id';
|
|
3
|
+
import { BlockTransferClient } from './block-transfer-service.js';
|
|
4
|
+
import { createLogger } from '../logger.js';
|
|
5
|
+
const log = createLogger('spread-on-churn');
|
|
6
|
+
const textEncoder = new TextEncoder();
|
|
7
|
+
// ── Defaults ─────────────────────────────────────────────────────────
|
|
8
|
+
const DEFAULT_CONFIG = {
|
|
9
|
+
enabled: true,
|
|
10
|
+
spreadDistance: 3,
|
|
11
|
+
dynamicSpreadDistance: true,
|
|
12
|
+
healthThreshold: 0.6,
|
|
13
|
+
departureDebounceMs: 5000,
|
|
14
|
+
expansionStep: 4,
|
|
15
|
+
};
|
|
16
|
+
// ── Monitor ──────────────────────────────────────────────────────────
|
|
17
|
+
export class SpreadOnChurnMonitor {
|
|
18
|
+
deps;
|
|
19
|
+
running = false;
|
|
20
|
+
trackedBlocks = new Set();
|
|
21
|
+
handlers = [];
|
|
22
|
+
debounceTimer = null;
|
|
23
|
+
departureTimestamps = [];
|
|
24
|
+
departureTimestamp = 0;
|
|
25
|
+
config;
|
|
26
|
+
onConnectionClose;
|
|
27
|
+
constructor(deps, config = {}) {
|
|
28
|
+
this.deps = deps;
|
|
29
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
30
|
+
this.onConnectionClose = () => this.handleDeparture();
|
|
31
|
+
}
|
|
32
|
+
// ── Startable ────────────────────────────────────────────────────
|
|
33
|
+
async start() {
|
|
34
|
+
if (this.running)
|
|
35
|
+
return;
|
|
36
|
+
this.running = true;
|
|
37
|
+
this.deps.libp2p.addEventListener('connection:close', this.onConnectionClose);
|
|
38
|
+
log('started, tracking %d blocks', this.trackedBlocks.size);
|
|
39
|
+
}
|
|
40
|
+
async stop() {
|
|
41
|
+
if (!this.running)
|
|
42
|
+
return;
|
|
43
|
+
this.running = false;
|
|
44
|
+
this.deps.libp2p.removeEventListener('connection:close', this.onConnectionClose);
|
|
45
|
+
if (this.debounceTimer) {
|
|
46
|
+
clearTimeout(this.debounceTimer);
|
|
47
|
+
this.debounceTimer = null;
|
|
48
|
+
}
|
|
49
|
+
log('stopped');
|
|
50
|
+
}
|
|
51
|
+
// ── Public API ───────────────────────────────────────────────────
|
|
52
|
+
onSpread(handler) {
|
|
53
|
+
this.handlers.push(handler);
|
|
54
|
+
}
|
|
55
|
+
trackBlock(blockId) {
|
|
56
|
+
this.trackedBlocks.add(blockId);
|
|
57
|
+
}
|
|
58
|
+
untrackBlock(blockId) {
|
|
59
|
+
this.trackedBlocks.delete(blockId);
|
|
60
|
+
}
|
|
61
|
+
getTrackedBlockCount() {
|
|
62
|
+
return this.trackedBlocks.size;
|
|
63
|
+
}
|
|
64
|
+
/** Force an immediate spread check (useful for testing). */
|
|
65
|
+
async checkNow() {
|
|
66
|
+
return this.performSpread(Date.now());
|
|
67
|
+
}
|
|
68
|
+
// ── Internal ─────────────────────────────────────────────────────
|
|
69
|
+
handleDeparture() {
|
|
70
|
+
if (!this.running)
|
|
71
|
+
return;
|
|
72
|
+
if (!this.config.enabled)
|
|
73
|
+
return;
|
|
74
|
+
if (!this.departureTimestamp) {
|
|
75
|
+
this.departureTimestamp = Date.now();
|
|
76
|
+
}
|
|
77
|
+
// Record for dynamic-d sliding window
|
|
78
|
+
this.departureTimestamps.push(Date.now());
|
|
79
|
+
if (this.debounceTimer) {
|
|
80
|
+
clearTimeout(this.debounceTimer);
|
|
81
|
+
}
|
|
82
|
+
this.debounceTimer = setTimeout(() => {
|
|
83
|
+
this.debounceTimer = null;
|
|
84
|
+
const ts = this.departureTimestamp;
|
|
85
|
+
this.departureTimestamp = 0;
|
|
86
|
+
if (this.running) {
|
|
87
|
+
this.performSpread(ts).catch(err => {
|
|
88
|
+
log('spread error: %O', err);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}, this.config.departureDebounceMs);
|
|
92
|
+
}
|
|
93
|
+
async performSpread(triggeredAt) {
|
|
94
|
+
if (!this.config.enabled)
|
|
95
|
+
return null;
|
|
96
|
+
if (this.deps.partitionDetector.detectPartition()) {
|
|
97
|
+
log('partition detected, suppressing spread');
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
if (this.trackedBlocks.size === 0)
|
|
101
|
+
return null;
|
|
102
|
+
const selfId = this.deps.libp2p.peerId.toString();
|
|
103
|
+
const effectiveD = this.computeEffectiveD();
|
|
104
|
+
const spreadResults = [];
|
|
105
|
+
for (const blockId of this.trackedBlocks) {
|
|
106
|
+
const key = textEncoder.encode(blockId);
|
|
107
|
+
const coord = await hashKey(key);
|
|
108
|
+
// Check eligibility: only middle peers spread
|
|
109
|
+
const rank = this.deps.fret.neighborDistance(selfId, coord, this.deps.clusterSize);
|
|
110
|
+
if (rank >= effectiveD)
|
|
111
|
+
continue;
|
|
112
|
+
// Get current cohort and expansion targets
|
|
113
|
+
const cohort = this.deps.fret.assembleCohort(coord, this.deps.clusterSize);
|
|
114
|
+
const cohortSet = new Set(cohort);
|
|
115
|
+
const expanded = this.deps.fret.expandCohort(cohort, coord, this.config.expansionStep);
|
|
116
|
+
const targets = expanded.filter(id => !cohortSet.has(id) && id !== selfId);
|
|
117
|
+
if (targets.length === 0)
|
|
118
|
+
continue;
|
|
119
|
+
// Read block data from local storage
|
|
120
|
+
const result = await this.deps.repo.get({ blockIds: [blockId] });
|
|
121
|
+
const blockResult = result[blockId];
|
|
122
|
+
if (!blockResult?.block) {
|
|
123
|
+
log('no-local-data block=%s', blockId);
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
const blockData = textEncoder.encode(JSON.stringify(blockResult.block));
|
|
127
|
+
// Push to each target
|
|
128
|
+
const succeeded = [];
|
|
129
|
+
const failed = [];
|
|
130
|
+
for (const targetId of targets) {
|
|
131
|
+
try {
|
|
132
|
+
const peerId = peerIdFromString(targetId);
|
|
133
|
+
const client = new BlockTransferClient(peerId, this.deps.peerNetwork, this.deps.protocolPrefix);
|
|
134
|
+
await client.pushBlocks([blockId], [blockData], 'replication');
|
|
135
|
+
succeeded.push(targetId);
|
|
136
|
+
log('push:ok block=%s target=%s', blockId, targetId);
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
failed.push(targetId);
|
|
140
|
+
log('push:fail block=%s target=%s err=%s', blockId, targetId, err.message);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
spreadResults.push({ blockId, targets, succeeded, failed });
|
|
144
|
+
}
|
|
145
|
+
if (spreadResults.length === 0)
|
|
146
|
+
return null;
|
|
147
|
+
const event = {
|
|
148
|
+
spread: spreadResults,
|
|
149
|
+
effectiveD,
|
|
150
|
+
triggeredAt,
|
|
151
|
+
};
|
|
152
|
+
this.emitEvent(event);
|
|
153
|
+
return event;
|
|
154
|
+
}
|
|
155
|
+
computeEffectiveD() {
|
|
156
|
+
const d = this.config.spreadDistance;
|
|
157
|
+
if (!this.config.dynamicSpreadDistance)
|
|
158
|
+
return d;
|
|
159
|
+
const maxD = Math.max(d, Math.floor(this.deps.clusterSize / 2));
|
|
160
|
+
const windowMs = this.config.departureDebounceMs * 4;
|
|
161
|
+
const now = Date.now();
|
|
162
|
+
// Prune old departure timestamps
|
|
163
|
+
this.departureTimestamps = this.departureTimestamps.filter(ts => now - ts < windowMs);
|
|
164
|
+
// Rapid churn: 3+ departures in window → increase d by 1
|
|
165
|
+
if (this.departureTimestamps.length >= 3) {
|
|
166
|
+
return Math.min(d + 1, maxD);
|
|
167
|
+
}
|
|
168
|
+
// Low cluster health: observed cohort shrunk relative to expected
|
|
169
|
+
// We approximate observed cohort size from FRET diagnostics
|
|
170
|
+
const diag = this.deps.fret.getDiagnostics?.();
|
|
171
|
+
const estimate = diag?.estimate ?? diag?.n;
|
|
172
|
+
if (typeof estimate === 'number' && Number.isFinite(estimate) && estimate > 0) {
|
|
173
|
+
const ratio = estimate / this.deps.clusterSize;
|
|
174
|
+
if (ratio < this.config.healthThreshold) {
|
|
175
|
+
const scaled = Math.ceil(d * (this.deps.clusterSize / estimate));
|
|
176
|
+
return Math.min(scaled, maxD);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return d;
|
|
180
|
+
}
|
|
181
|
+
emitEvent(event) {
|
|
182
|
+
for (const handler of this.handlers) {
|
|
183
|
+
try {
|
|
184
|
+
handler(event);
|
|
185
|
+
}
|
|
186
|
+
catch (err) {
|
|
187
|
+
log('handler error: %O', err);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=spread-on-churn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spread-on-churn.js","sourceRoot":"","sources":["../../../src/cluster/spread-on-churn.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,MAAM,GAAG,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAA;AAC3C,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;AA6CrC,wEAAwE;AAExE,MAAM,cAAc,GAAwB;IAC3C,OAAO,EAAE,IAAI;IACb,cAAc,EAAE,CAAC;IACjB,qBAAqB,EAAE,IAAI;IAC3B,eAAe,EAAE,GAAG;IACpB,mBAAmB,EAAE,IAAI;IACzB,aAAa,EAAE,CAAC;CAChB,CAAA;AAED,wEAAwE;AAExE,MAAM,OAAO,oBAAoB;IAYd;IAXV,OAAO,GAAG,KAAK,CAAA;IACN,aAAa,GAAG,IAAI,GAAG,EAAU,CAAA;IACjC,QAAQ,GAAoB,EAAE,CAAA;IACvC,aAAa,GAAyC,IAAI,CAAA;IAC1D,mBAAmB,GAAa,EAAE,CAAA;IAClC,kBAAkB,GAAG,CAAC,CAAA;IAEb,MAAM,CAAqB;IAC3B,iBAAiB,CAAY;IAE9C,YACkB,IAAuB,EACxC,SAAuC,EAAE;QADxB,SAAI,GAAJ,IAAI,CAAmB;QAGxC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAA;QAC9C,IAAI,CAAC,iBAAiB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAA;IACtD,CAAC;IAED,oEAAoE;IAEpE,KAAK,CAAC,KAAK;QACV,IAAI,IAAI,CAAC,OAAO;YAAE,OAAM;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QAEnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAE7E,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IAC5D,CAAC;IAED,KAAK,CAAC,IAAI;QACT,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAM;QACzB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QAEpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAEhF,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;YAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;QAC1B,CAAC;QAED,GAAG,CAAC,SAAS,CAAC,CAAA;IACf,CAAC;IAED,oEAAoE;IAEpE,QAAQ,CAAC,OAAsB;QAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAED,UAAU,CAAC,OAAe;QACzB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;IAED,YAAY,CAAC,OAAe;QAC3B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC;IAED,oBAAoB;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAA;IAC/B,CAAC;IAED,4DAA4D;IAC5D,KAAK,CAAC,QAAQ;QACb,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IACtC,CAAC;IAED,oEAAoE;IAE5D,eAAe;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAM;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAM;QAEhC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACrC,CAAC;QAED,sCAAsC;QACtC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QAEzC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACjC,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;YACpC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;YACzB,MAAM,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAA;YAClC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAA;YAC3B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBAClC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAA;gBAC7B,CAAC,CAAC,CAAA;YACH,CAAC;QACF,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;IACpC,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,WAAmB;QAC9C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,IAAI,CAAA;QAErC,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,EAAE,CAAC;YACnD,GAAG,CAAC,wCAAwC,CAAC,CAAA;YAC7C,OAAO,IAAI,CAAA;QACZ,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QAE9C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC3C,MAAM,aAAa,GAA0B,EAAE,CAAA;QAE/C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACvC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;YAEhC,8CAA8C;YAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAClF,IAAI,IAAI,IAAI,UAAU;gBAAE,SAAQ;YAEhC,2CAA2C;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAC1E,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAC3C,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CACxC,CAAA;YACD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC,CAAA;YAC1E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAQ;YAElC,qCAAqC;YACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAChE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;YACnC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;gBACzB,GAAG,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAA;gBACtC,SAAQ;YACT,CAAC;YAED,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAA;YAEvE,sBAAsB;YACtB,MAAM,SAAS,GAAa,EAAE,CAAA;YAC9B,MAAM,MAAM,GAAa,EAAE,CAAA;YAE3B,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;gBAChC,IAAI,CAAC;oBACJ,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;oBACzC,MAAM,MAAM,GAAG,IAAI,mBAAmB,CACrC,MAAM,EACN,IAAI,CAAC,IAAI,CAAC,WAAW,EACrB,IAAI,CAAC,IAAI,CAAC,cAAc,CACxB,CAAA;oBACD,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,CAAA;oBAC9D,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;oBACxB,GAAG,CAAC,4BAA4B,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;gBACrD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;oBACrB,GAAG,CAAC,qCAAqC,EACxC,OAAO,EAAE,QAAQ,EAAG,GAAa,CAAC,OAAO,CAAC,CAAA;gBAC5C,CAAC;YACF,CAAC;YAED,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAA;QAC5D,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QAE3C,MAAM,KAAK,GAAgB;YAC1B,MAAM,EAAE,aAAa;YACrB,UAAU;YACV,WAAW;SACX,CAAA;QAED,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACrB,OAAO,KAAK,CAAA;IACb,CAAC;IAEO,iBAAiB;QACxB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAA;QACpC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB;YAAE,OAAO,CAAC,CAAA;QAEhD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAA;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,GAAG,CAAC,CAAA;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAEtB,iCAAiC;QACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CACzD,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,QAAQ,CACzB,CAAA;QAED,yDAAyD;QACzD,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QAC7B,CAAC;QAED,kEAAkE;QAClE,4DAA4D;QAC5D,MAAM,IAAI,GAAS,IAAI,CAAC,IAAI,CAAC,IAAY,CAAC,cAAc,EAAE,EAAE,CAAA;QAC5D,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAA;QAC1C,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YAC/E,MAAM,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAA;YAC9C,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAA;gBAChE,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC9B,CAAC;QACF,CAAC;QAED,OAAO,CAAC,CAAA;IACT,CAAC;IAEO,SAAS,CAAC,KAAkB;QACnC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC;gBACJ,OAAO,CAAC,KAAK,CAAC,CAAA;YACf,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,GAAG,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAA;YAC9B,CAAC;QACF,CAAC;IACF,CAAC;CACD"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from "./cluster/client.js";
|
|
|
2
2
|
export * from "./cluster/cluster-repo.js";
|
|
3
3
|
export * from "./cluster/service.js";
|
|
4
4
|
export * from "./cluster/rebalance-monitor.js";
|
|
5
|
+
export * from "./cluster/spread-on-churn.js";
|
|
5
6
|
export * from "./cluster/block-transfer.js";
|
|
6
7
|
export * from "./cluster/block-transfer-service.js";
|
|
7
8
|
export * from "./protocol-client.js";
|
|
@@ -31,4 +32,9 @@ export * from "./network/network-manager-service.js";
|
|
|
31
32
|
export * from "./network/get-network-manager.js";
|
|
32
33
|
export * from "./reputation/index.js";
|
|
33
34
|
export * from "./dispute/index.js";
|
|
35
|
+
export * from "./cluster/i-transaction-state-store.js";
|
|
36
|
+
export * from "./cluster/memory-transaction-state-store.js";
|
|
37
|
+
export * from "./cluster/persistent-transaction-state-store.js";
|
|
38
|
+
export * from "./storage/i-kv-store.js";
|
|
39
|
+
export * from "./storage/memory-kv-store.js";
|
|
34
40
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yCAAyC,CAAC;AACxD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yCAAyC,CAAC;AACxD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iDAAiD,CAAC;AAChE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -2,6 +2,7 @@ export * from "./cluster/client.js";
|
|
|
2
2
|
export * from "./cluster/cluster-repo.js";
|
|
3
3
|
export * from "./cluster/service.js";
|
|
4
4
|
export * from "./cluster/rebalance-monitor.js";
|
|
5
|
+
export * from "./cluster/spread-on-churn.js";
|
|
5
6
|
export * from "./cluster/block-transfer.js";
|
|
6
7
|
export * from "./cluster/block-transfer-service.js";
|
|
7
8
|
export * from "./protocol-client.js";
|
|
@@ -31,4 +32,9 @@ export * from "./network/network-manager-service.js";
|
|
|
31
32
|
export * from "./network/get-network-manager.js";
|
|
32
33
|
export * from "./reputation/index.js";
|
|
33
34
|
export * from "./dispute/index.js";
|
|
35
|
+
export * from "./cluster/i-transaction-state-store.js";
|
|
36
|
+
export * from "./cluster/memory-transaction-state-store.js";
|
|
37
|
+
export * from "./cluster/persistent-transaction-state-store.js";
|
|
38
|
+
export * from "./storage/i-kv-store.js";
|
|
39
|
+
export * from "./storage/memory-kv-store.js";
|
|
34
40
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yCAAyC,CAAC;AACxD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yCAAyC,CAAC;AACxD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iDAAiD,CAAC;AAChE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { createLibp2p, type Libp2p } from 'libp2p';
|
|
|
2
2
|
import type { IRawStorage } from './storage/i-raw-storage.js';
|
|
3
3
|
import { type NetworkStatePersistence } from './libp2p-key-network.js';
|
|
4
4
|
import type { ITransactionValidator } from '@optimystic/db-core';
|
|
5
|
+
import type { ITransactionStateStore } from './cluster/i-transaction-state-store.js';
|
|
5
6
|
import type { StorageMonitorConfig } from './storage/storage-monitor.js';
|
|
6
7
|
import type { DisputeConfig } from './dispute/types.js';
|
|
7
8
|
type Libp2pInit = NonNullable<Parameters<typeof createLibp2p>[0]>;
|
|
@@ -50,6 +51,8 @@ export type NodeOptions = {
|
|
|
50
51
|
persistence?: NetworkStatePersistence;
|
|
51
52
|
/** Dispute protocol configuration */
|
|
52
53
|
dispute?: Partial<DisputeConfig>;
|
|
54
|
+
/** Optional persistent store for 2PC transaction state (enables crash recovery) */
|
|
55
|
+
transactionStateStore?: ITransactionStateStore;
|
|
53
56
|
};
|
|
54
57
|
export declare function createLibp2pNodeBase(options: NodeOptions, defaults: {
|
|
55
58
|
listenAddrs: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p-node-base.d.ts","sourceRoot":"","sources":["../../src/libp2p-node-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAenD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG9D,OAAO,EAA0C,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAE/G,OAAO,KAAK,EAAmB,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"libp2p-node-base.d.ts","sourceRoot":"","sources":["../../src/libp2p-node-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAenD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG9D,OAAO,EAA0C,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAE/G,OAAO,KAAK,EAAmB,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AASrF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAUzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,KAAK,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;AAErE,4DAA4D;AAC5D,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,CAAC,MAAM,WAAW,CAAC,CAAC;AAEnE,MAAM,MAAM,WAAW,GAAG;IACzB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6HAA6H;IAC7H,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE;QACf,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;KAChC,CAAC;IAEF,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,kCAAkC;IAClC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,sCAAsC;IACtC,SAAS,CAAC,EAAE;QACX,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,OAAO,CAAC,EAAE,oBAAoB,CAAC;KAC/B,CAAC;IAEF,kDAAkD;IAClD,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAElC,+EAA+E;IAC/E,WAAW,CAAC,EAAE,uBAAuB,CAAC;IAEtC,qCAAqC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAEjC,mFAAmF;IACnF,qBAAqB,CAAC,EAAE,sBAAsB,CAAC;CAC/C,CAAC;AASF,wBAAsB,oBAAoB,CACzC,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE;IACT,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,gBAAgB,CAAC;CAC7B,GACC,OAAO,CAAC,MAAM,CAAC,CAoWjB"}
|
|
@@ -219,12 +219,13 @@ export async function createLibp2pNodeBase(options, defaults) {
|
|
|
219
219
|
fretService: fretSvc,
|
|
220
220
|
validator: options.validator,
|
|
221
221
|
reputation,
|
|
222
|
-
consensusConfig
|
|
222
|
+
consensusConfig,
|
|
223
|
+
stateStore: options.transactionStateStore
|
|
223
224
|
});
|
|
224
225
|
const coordinatorRepoFactory = coordinatorRepo(keyNetwork, createClusterClient, {
|
|
225
226
|
clusterSize: options.clusterSize ?? 10,
|
|
226
227
|
...consensusConfig
|
|
227
|
-
}, fretSvc, reputation);
|
|
228
|
+
}, fretSvc, reputation, options.transactionStateStore);
|
|
228
229
|
// Create callback for querying cluster peers for their latest block revision
|
|
229
230
|
const clusterLatestCallback = async (peerId, blockId, _context) => {
|
|
230
231
|
const syncClient = new SyncClient(peerId, keyNetwork, protocolPrefix);
|
|
@@ -252,6 +253,11 @@ export async function createLibp2pNodeBase(options, defaults) {
|
|
|
252
253
|
localPeerId: node.peerId,
|
|
253
254
|
clusterLatestCallback
|
|
254
255
|
});
|
|
256
|
+
// Recover persisted transaction state before accepting new requests
|
|
257
|
+
if (options.transactionStateStore) {
|
|
258
|
+
await clusterImpl.recoverTransactions();
|
|
259
|
+
await coordinatedRepo.recoverTransactions();
|
|
260
|
+
}
|
|
255
261
|
// Initialize Arachnode ring membership and restoration
|
|
256
262
|
const enableArachnode = options.arachnode?.enableRingZulu ?? true;
|
|
257
263
|
if (enableArachnode) {
|
|
@@ -334,6 +340,14 @@ export async function createLibp2pNodeBase(options, defaults) {
|
|
|
334
340
|
},
|
|
335
341
|
});
|
|
336
342
|
}
|
|
343
|
+
// Cleanup cluster member intervals on node stop
|
|
344
|
+
{
|
|
345
|
+
const previousStop = node.stop.bind(node);
|
|
346
|
+
node.stop = async () => {
|
|
347
|
+
clusterImpl.dispose();
|
|
348
|
+
await previousStop();
|
|
349
|
+
};
|
|
350
|
+
}
|
|
337
351
|
// Expose coordinated repo and storage for external use
|
|
338
352
|
node.coordinatedRepo = coordinatedRepo;
|
|
339
353
|
node.storageRepo = storageRepo;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p-node-base.js","sourceRoot":"","sources":["../../src/libp2p-node-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAe,MAAM,QAAQ,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAkD,MAAM,yBAAyB,CAAC;AAC/G,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAqB,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAG3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AA6DpD,SAAS,cAAc,CAAC,QAAwC;IAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,IAAI,gBAAgB,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,OAAoB,EACpB,QAGC;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAEnD,2EAA2E;IAC3E,IAAI,eAAe,GAAoB,KAAK,EAAE,QAAQ,EAAE,IAAK,EAAE,EAAE;QAChE,OAAO,SAAS,CAAC;IAClB,CAAC,CAAC;IAEF,yDAAyD;IACzD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,CAAC,OAAO,EAAE,EAAE,CAC/C,IAAI,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC,CACtD,CAAC;IAEF,IAAI,WAAiC,CAAC;IACtC,IAAI,eAAkC,CAAC;IAEvC,MAAM,YAAY,GAAa;QAC9B,KAAK,CAAC,MAAM,CAAC,MAAM;YAClB,IAAI,CAAC,WAAW,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAClD,CAAC;YACD,OAAO,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;KACD,CAAC;IAEF,MAAM,SAAS,GAAU;QACxB,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO;YAC3B,MAAM,MAAM,GAAG,eAAe,IAAI,WAAW,CAAC;YAC9C,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO;YAC1B,MAAM,MAAM,GAAG,eAAe,IAAI,WAAW,CAAC;YAC9C,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;YAC3B,MAAM,MAAM,GAAG,eAAe,IAAI,WAAW,CAAC;YAC9C,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO;YAC5B,MAAM,MAAM,GAAG,eAAe,IAAI,WAAW,CAAC;YAC9C,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;KACD,CAAC;IAEF,mDAAmD;IACnD,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;IAExD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC;IAChE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC;IAE7D,MAAM,aAAa,GAAY;QAC9B,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,cAAc;QAC1B,SAAS,EAAE;YACV,MAAM,EAAE,WAAW;SACnB;QACD,iBAAiB,EAAE;YAClB,QAAQ,EAAE,IAAI;YACd,cAAc,EAAE,CAAC;YACjB,cAAc,EAAE,EAAE;YAClB,+BAA+B,EAAE,MAAM;YACvC,SAAS,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;SAC1C;QACD,UAAU;QACV,oBAAoB,EAAE,CAAC,KAAK,EAAE,CAAC;QAC/B,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;QACvB,QAAQ,EAAE;YACT,QAAQ,EAAE,QAAQ,CAAC;gBAClB,cAAc,EAAE,eAAe,OAAO,CAAC,WAAW,EAAE;aACpD,CAAC;YACF,IAAI,EAAE,IAAI,EAAE;YACZ,MAAM,EAAE,SAAS,CAAC;gBACjB,4BAA4B,EAAE,IAAI;gBAClC,iBAAiB,EAAE,IAAI;aACvB,CAAC;YACF,gFAAgF;YAChF,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAEzD,sEAAsE;YACtE,OAAO,EAAE,CAAC,UAAe,EAAE,EAAE;gBAC5B,MAAM,cAAc,GAAG,cAAc,CAAC;oBACrC,cAAc,EAAE,eAAe,OAAO,CAAC,WAAW,EAAE;oBACpD,qBAAqB,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;oBAChD,oBAAoB,EAAE,OAAO,CAAC,aAAa,EAAE,aAAa,IAAI,IAAI;oBAClE,oBAAoB,EAAE,OAAO,CAAC,aAAa,EAAE,aAAa,IAAI,GAAG;oBACjE,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,CAAC;iBAC7C,CAAC,CAAC;gBACH,OAAO,cAAc,CAAC;oBACrB,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,SAAS,EAAE,UAAU,CAAC,SAAS;oBAC/B,OAAO,EAAE,YAAY;iBACrB,CAAC,CAAC;YACJ,CAAC;YAED,IAAI,EAAE,CAAC,UAAe,EAAE,EAAE;gBACzB,MAAM,cAAc,GAAG,WAAW,CAAC;oBAClC,cAAc,EAAE,eAAe,OAAO,CAAC,WAAW,EAAE;oBACpD,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,CAAC;iBAC7C,CAAC,CAAC;gBACH,OAAO,cAAc,CAAC;oBACrB,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,SAAS,EAAE,UAAU,CAAC,SAAS;oBAC/B,IAAI,EAAE,SAAS;iBACf,CAAC,CAAC;YACJ,CAAC;YAED,IAAI,EAAE,CAAC,UAAe,EAAE,EAAE;gBACzB,MAAM,cAAc,GAAG,WAAW,CAAC;oBAClC,cAAc,EAAE,eAAe,OAAO,CAAC,WAAW,EAAE;iBACpD,CAAC,CAAC;gBACH,OAAO,cAAc,CAAC;oBACrB,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,SAAS,EAAE,UAAU,CAAC,SAAS;oBAC/B,IAAI,EAAE,SAAS;iBACf,CAAC,CAAC;YACJ,CAAC;YAED,cAAc,EAAE,CAAC,UAAe,EAAE,EAAE;gBACnC,MAAM,UAAU,GAAG,qBAAqB,CAAC;oBACxC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;oBACtC,eAAe,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;oBAC1D,oBAAoB,EAAE,OAAO,CAAC,aAAa,EAAE,aAAa,IAAI,IAAI;oBAClE,oBAAoB,EAAE,OAAO,CAAC,aAAa,EAAE,aAAa,IAAI,GAAG;iBACjE,CAAC,CAAC;gBACH,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;gBACnC,IAAI,CAAC;oBAAE,GAAW,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,CAAC;gBAC9D,OAAO,GAAG,CAAC;YACZ,CAAC;YACD,IAAI,EAAE,CAAC,UAAe,EAAE,EAAE;gBACzB,MAAM,UAAU,GAAG,WAAW,CAAC;oBAC9B,CAAC,EAAE,EAAE;oBACL,CAAC,EAAE,CAAC;oBACJ,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC7F,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,UAAU,EAAE,OAAO,CAAC,cAAc,IAAI,EAAE;iBACxC,CAAC,CAAC;gBACH,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAsB,CAAC;gBACxD,IAAI,CAAC;oBAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,CAAC;gBACnD,OAAO,GAAG,CAAC;YACZ,CAAC;SACD;QACD,gCAAgC;QAChC,aAAa,EAAE;YACd,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACxF;KACD,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,aAAoB,CAAC,CAAC;IAEtD,kEAAkE;IAClE,IAAI,CAAC;QAAG,IAAY,CAAC,QAAQ,EAAE,IAAY,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,IAAI,CAAC;QAAG,IAAY,CAAC,QAAQ,EAAE,cAAsB,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,CAAC;IAErF,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IAEnB,qCAAqC;IACrC,MAAM,UAAU,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAE/C,6CAA6C;IAC7C,MAAM,WAAW,GAAgB,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACnG,MAAM,UAAU,GAAG,IAAI,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAChI,MAAM,UAAU,CAAC,sBAAsB,EAAE,CAAC;IAC1C,MAAM,cAAc,GAAG,eAAe,OAAO,CAAC,WAAW,EAAE,CAAC;IAC5D,MAAM,mBAAmB,GAAG,CAAC,MAAW,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;IAEtG,+CAA+C;IAC/C,IAAI,CAAC;QAAG,IAAY,CAAC,QAAQ,EAAE,cAAsB,EAAE,aAAa,EAAE,CAAC,UAAU,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,CAAC;IAE/F,iDAAiD;IACjD,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAClD,MAAM,OAAO,GAAI,IAAY,CAAC,QAAQ,EAAE,IAA+B,CAAC;IAExE,MAAM,eAAe,GAAG;QACvB,sBAAsB,EAAE,OAAO,CAAC,aAAa,EAAE,sBAAsB,IAAI,IAAI;QAC7E,uBAAuB,EAAE,IAAI;QAC7B,sBAAsB,EAAE,CAAC;QACzB,oBAAoB,EAAE,OAAO,CAAC,aAAa,EAAE,aAAa,IAAI,IAAI;QAClE,oBAAoB,EAAE,OAAO,CAAC,aAAa,EAAE,aAAa,IAAI,GAAG;QACjE,wBAAwB,EAAE,KAAK;KAC/B,CAAC;IAEF,WAAW,GAAG,aAAa,CAAC;QAC3B,WAAW;QACX,WAAW,EAAE,UAAU;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,UAAU,EAAE,cAAc;QAC1B,cAAc;QACd,iBAAiB;QACjB,WAAW,EAAE,OAAO;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU;QACV,eAAe;KACf,CAAC,CAAC;IAEH,MAAM,sBAAsB,GAAG,eAAe,CAC7C,UAAU,EACV,mBAAmB,EACnB;QACC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;QACtC,GAAG,eAAe;KAClB,EACD,OAAO,EACP,UAAU,CACV,CAAC;IAEF,6EAA6E;IAC7E,MAAM,qBAAqB,GAA0B,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAS,EAAE,EAAE;QACzF,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;QACtE,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;YAC5E,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACtE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;oBACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBACxD,IAAI,YAAY,EAAE,MAAM,EAAE,CAAC;wBAC1B,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;oBAChE,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QAAC,MAAM,CAAC;YACR,+DAA+D;QAChE,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC,CAAC;IAEF,eAAe,GAAG,sBAAsB,CAAC;QACxC,WAAW;QACX,YAAY,EAAE,WAAW;QACzB,WAAW,EAAE,IAAI,CAAC,MAAM;QACxB,qBAAqB;KACrB,CAAC,CAAC;IAEH,uDAAuD;IACvD,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,cAAc,IAAI,IAAI,CAAC;IAClE,IAAI,eAAe,EAAE,CAAC;QACrB,MAAM,GAAG,GAAI,IAAY,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,kBAAkB,CAAC,CAAC;QACrE,MAAM,IAAI,GAAI,IAAY,CAAC,QAAQ,EAAE,IAAW,CAAC;QAEjD,IAAI,IAAI,EAAE,CAAC;YACV,MAAM,WAAW,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAEnD,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;YACxF,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,WAAW,EAAE,cAAc,EAAE;gBAClE,WAAW,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;gBAC9B,UAAU,EAAE;oBACX,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE,IAAI;iBACZ;aACD,CAAC,CAAC;YAEH,yCAAyC;YACzC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACrE,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YAE5C,GAAG,EAAE,CAAC,yCAAyC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;YAE1E,kDAAkD;YAClD,MAAM,wBAAwB,GAAG,IAAI,sBAAsB,CAC1D,WAAW,EACX,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAA8C,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAC7G,eAAe,OAAO,CAAC,WAAW,EAAE,CACpC,CAAC;YAEF,iDAAiD;YACjD,MAAM,kBAAkB,GAAoB,KAAK,EAAE,OAAO,EAAE,GAAI,EAAE,EAAE;gBACnE,OAAO,MAAM,wBAAwB,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC7D,CAAC,CAAC;YAEF,wEAAwE;YACvE,WAAmB,CAAC,kBAAkB,GAAG,CAAC,OAAe,EAAE,EAAE,CAC7D,IAAI,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;YAE3D,gDAAgD;YAChD,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;gBAC9C,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,gBAAgB,EAAE,CAAC;gBACzD,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;oBAC3B,GAAG,EAAE,CAAC,8CAA8C,EAAE,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;oBAErG,sCAAsC;oBACtC,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;oBACnE,WAAW,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;gBAC3C,CAAC;YACF,CAAC,EAAE,MAAM,CAAC,CAAC;YAEX,uBAAuB;YACvB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI,GAAG,KAAK,IAAI,EAAE;gBACtB,aAAa,CAAC,eAAe,CAAC,CAAC;gBAC/B,MAAM,YAAY,EAAE,CAAC;YACtB,CAAC,CAAC;QACH,CAAC;aAAM,CAAC;YACP,GAAG,EAAE,CAAC,gDAAgD,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;IAED,wCAAwC;IACxC,IAAI,sBAAkD,CAAC;IACvD,IAAI,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC;QACrC,MAAM,mBAAmB,GAAG,CAAC,MAAW,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;QACtG,sBAAsB,GAAG,IAAI,cAAc,CAAC;YAC3C,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,cAAc;YAC1B,WAAW,EAAE,UAAU;YACvB,mBAAmB;YACnB,UAAU;YACV,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,OAAO;YACvB,iBAAiB,EAAE,KAAK,EAAE,OAAe,EAAE,YAAsB,EAAE,KAAa,EAAE,EAAE;gBACnF,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC1D,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACvD,MAAM,IAAI,GAAI,IAAY,CAAC,QAAQ,EAAE,IAA+B,CAAC;gBACrE,IAAI,CAAC,IAAI;oBAAE,OAAO,EAAE,CAAC;gBACrB,6DAA6D;gBAC7D,MAAM,UAAU,GAAG,KAAK,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;gBACnD,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,CAAC;gBACpD,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,CAAa,CAAC;gBAC/E,gEAAgE;gBAChE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;gBACzC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACvC,MAAM,iBAAiB,GAAG,aAAa;qBACrC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;qBACnC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;qBACf,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpC,OAAO,iBAAiB,CAAC;YAC1B,CAAC;SACD,CAAC,CAAC;IACJ,CAAC;IAED,uDAAuD;IACtD,IAAY,CAAC,eAAe,GAAG,eAAe,CAAC;IAC/C,IAAY,CAAC,WAAW,GAAG,WAAW,CAAC;IACvC,IAAY,CAAC,UAAU,GAAG,UAAU,CAAC;IACrC,IAAY,CAAC,UAAU,GAAG,UAAU,CAAC;IACrC,IAAY,CAAC,cAAc,GAAG,sBAAsB,CAAC;IAEtD,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"libp2p-node-base.js","sourceRoot":"","sources":["../../src/libp2p-node-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import type { Startable, Logger, PeerId, Libp2p } from '@libp2p/interface';
|
|
|
2
2
|
import type { IPeerReputation } from '../reputation/types.js';
|
|
3
3
|
import { PenaltyReason } from '../reputation/types.js';
|
|
4
4
|
import { RebalanceMonitor, type RebalanceMonitorConfig } from '../cluster/rebalance-monitor.js';
|
|
5
|
+
import { SpreadOnChurnMonitor, type SpreadOnChurnConfig, type SpreadOnChurnDeps } from '../cluster/spread-on-churn.js';
|
|
5
6
|
import type { PartitionDetector } from '../cluster/partition-detector.js';
|
|
6
7
|
import type { ArachnodeFretAdapter } from '../storage/arachnode-fret-adapter.js';
|
|
7
8
|
export type NetworkManagerServiceInit = {
|
|
@@ -47,6 +48,7 @@ export declare class NetworkManagerService implements Startable {
|
|
|
47
48
|
private reputation?;
|
|
48
49
|
private libp2pRef;
|
|
49
50
|
private rebalanceMonitor?;
|
|
51
|
+
private spreadOnChurnMonitor?;
|
|
50
52
|
constructor(components: Components, init?: NetworkManagerServiceInit);
|
|
51
53
|
setLibp2p(libp2p: Libp2p): void;
|
|
52
54
|
setReputation(reputation: IPeerReputation): void;
|
|
@@ -55,6 +57,12 @@ export declare class NetworkManagerService implements Startable {
|
|
|
55
57
|
*/
|
|
56
58
|
initRebalanceMonitor(partitionDetector: PartitionDetector, fretAdapter: ArachnodeFretAdapter, config?: RebalanceMonitorConfig): RebalanceMonitor;
|
|
57
59
|
getRebalanceMonitor(): RebalanceMonitor | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* Initialize the spread-on-churn monitor. Call after libp2p, FRET are available.
|
|
62
|
+
* Caller provides repo and peerNetwork (not held by NetworkManagerService directly).
|
|
63
|
+
*/
|
|
64
|
+
initSpreadOnChurnMonitor(partitionDetector: PartitionDetector, repo: SpreadOnChurnDeps['repo'], peerNetwork: SpreadOnChurnDeps['peerNetwork'], clusterSize: number, config?: Partial<SpreadOnChurnConfig>): SpreadOnChurnMonitor;
|
|
65
|
+
getSpreadOnChurnMonitor(): SpreadOnChurnMonitor | undefined;
|
|
58
66
|
private getLibp2p;
|
|
59
67
|
private getFret;
|
|
60
68
|
get [Symbol.toStringTag](): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-manager-service.d.ts","sourceRoot":"","sources":["../../../src/network/network-manager-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAK1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AAC/F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAEhF,MAAM,MAAM,yBAAyB,GAAG;IACvC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAA;IACvB,UAAU,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/E,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IACnD,SAAS,CAAC,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IACxD,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED,KAAK,UAAU,GAAG;IACjB,MAAM,EAAE;QAAE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;KAAE,CAAC;IACnD,SAAS,EAAE;QAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IACtG,MAAM,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAMD,qBAAa,qBAAsB,YAAW,SAAS;
|
|
1
|
+
{"version":3,"file":"network-manager-service.d.ts","sourceRoot":"","sources":["../../../src/network/network-manager-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAK1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AAC/F,OAAO,EAAE,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACtH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAEhF,MAAM,MAAM,yBAAyB,GAAG;IACvC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAA;IACvB,UAAU,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/E,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IACnD,SAAS,CAAC,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IACxD,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED,KAAK,UAAU,GAAG;IACjB,MAAM,EAAE;QAAE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;KAAE,CAAC;IACnD,SAAS,EAAE;QAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IACtG,MAAM,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAMD,qBAAa,qBAAsB,YAAW,SAAS;IAa1C,OAAO,CAAC,QAAQ,CAAC,UAAU;IAZvC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqC;IACzD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqD;IACtF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwD;IACrF,OAAO,CAAC,YAAY,CAAsE;IAC1F,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,gBAAgB,CAAC,CAAkB;IAC3C,OAAO,CAAC,oBAAoB,CAAC,CAAsB;gBAEtB,UAAU,EAAE,UAAU,EAAE,IAAI,GAAE,yBAA8B;IAczF,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,aAAa,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI;IAIhD;;OAEG;IACH,oBAAoB,CACnB,iBAAiB,EAAE,iBAAiB,EACpC,WAAW,EAAE,oBAAoB,EACjC,MAAM,CAAC,EAAE,sBAAsB,GAC7B,gBAAgB;IAanB,mBAAmB,IAAI,gBAAgB,GAAG,SAAS;IAInD;;;OAGG;IACH,wBAAwB,CACvB,iBAAiB,EAAE,iBAAiB,EACpC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAC/B,WAAW,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAC7C,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACnC,oBAAoB;IAavB,uBAAuB,IAAI,oBAAoB,GAAG,SAAS;IAI3D,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,OAAO;IAQf,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAqC;IAEjE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAed,OAAO;IASrB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,aAAa;IAarB,SAAS,IAAI;QAAE,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE;IAatE,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2B3E;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,aAA+C,GAAG,IAAI;IAI5F,OAAO,CAAC,aAAa;IAIrB,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAKxD;;;OAGG;YACW,oBAAoB;IAsClC;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmD9C,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBtD,OAAO,CAAC,GAAG;IAWX,OAAO,CAAC,OAAO;CAUf;AAED,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,yBAA8B,IACjE,YAAY,UAAU,2BAC9B"}
|