@peerbit/shared-log-proxy 0.0.0-e209d2e
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/LICENSE +202 -0
- package/dist/src/auto.d.ts +18 -0
- package/dist/src/auto.d.ts.map +1 -0
- package/dist/src/auto.js +34 -0
- package/dist/src/auto.js.map +1 -0
- package/dist/src/client.d.ts +40 -0
- package/dist/src/client.d.ts.map +1 -0
- package/dist/src/client.js +457 -0
- package/dist/src/client.js.map +1 -0
- package/dist/src/host.d.ts +19 -0
- package/dist/src/host.d.ts.map +1 -0
- package/dist/src/host.js +384 -0
- package/dist/src/host.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/protocol.d.ts +223 -0
- package/dist/src/protocol.d.ts.map +1 -0
- package/dist/src/protocol.js +1017 -0
- package/dist/src/protocol.js.map +1 -0
- package/package.json +100 -0
- package/src/auto.ts +40 -0
- package/src/client.ts +639 -0
- package/src/host.ts +472 -0
- package/src/index.ts +1 -0
- package/src/protocol.ts +617 -0
|
@@ -0,0 +1,457 @@
|
|
|
1
|
+
import { deserialize, serialize } from "@dao-xyz/borsh";
|
|
2
|
+
import { createProxyFromService } from "@dao-xyz/borsh-rpc";
|
|
3
|
+
import { createMessagePortTransport, } from "@peerbit/canonical-client";
|
|
4
|
+
import { IdKey, toQuery, toSort, } from "@peerbit/indexer-interface";
|
|
5
|
+
import { Entry, NO_ENCODING } from "@peerbit/log";
|
|
6
|
+
import { ReplicationRangeIndexableU32, ReplicationRangeIndexableU64, } from "@peerbit/shared-log";
|
|
7
|
+
import { OpenSharedLogRequest, SharedLogBytes, SharedLogCoverageRequest, SharedLogEntriesBatch, SharedLogEntriesIteratorService, SharedLogEvent, SharedLogReplicateBool, SharedLogReplicateFactor, SharedLogReplicateFixed, SharedLogReplicateFixedList, SharedLogReplicateRequest, SharedLogReplicateValue, SharedLogReplicationBatch, SharedLogReplicationCountRequest, SharedLogReplicationIterateRequest, SharedLogReplicationIteratorService, SharedLogReplicationRange, SharedLogService, SharedLogUnreplicateRequest, SharedLogWaitForReplicatorRequest, SharedLogWaitForReplicatorsRequest, } from "./protocol.js";
|
|
8
|
+
const ensureCustomEvent = () => {
|
|
9
|
+
if (typeof globalThis.CustomEvent === "function") {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
class CustomEventPolyfill extends Event {
|
|
13
|
+
detail;
|
|
14
|
+
constructor(type, params) {
|
|
15
|
+
super(type, params);
|
|
16
|
+
this.detail = params?.detail;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
globalThis.CustomEvent = CustomEventPolyfill;
|
|
20
|
+
};
|
|
21
|
+
const toHex = (bytes) => {
|
|
22
|
+
let out = "";
|
|
23
|
+
for (const b of bytes)
|
|
24
|
+
out += b.toString(16).padStart(2, "0");
|
|
25
|
+
return out;
|
|
26
|
+
};
|
|
27
|
+
const toNumber = (value) => {
|
|
28
|
+
return typeof value === "bigint" ? Number(value) : value;
|
|
29
|
+
};
|
|
30
|
+
const decodeEntry = (bytes) => {
|
|
31
|
+
const entry = deserialize(bytes.value, Entry);
|
|
32
|
+
return entry.init({ encoding: NO_ENCODING });
|
|
33
|
+
};
|
|
34
|
+
const toReplicationRange = (value) => {
|
|
35
|
+
const factor = value.factor;
|
|
36
|
+
if (factor === "all" || factor === "right") {
|
|
37
|
+
return new SharedLogReplicationRange({
|
|
38
|
+
id: value.id,
|
|
39
|
+
factorMode: factor,
|
|
40
|
+
offset: value.offset,
|
|
41
|
+
normalized: value.normalized,
|
|
42
|
+
strict: value.strict,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
if (typeof factor === "string") {
|
|
46
|
+
throw new Error(`Unsupported replication factor '${factor}'`);
|
|
47
|
+
}
|
|
48
|
+
if (typeof factor === "bigint") {
|
|
49
|
+
return new SharedLogReplicationRange({
|
|
50
|
+
id: value.id,
|
|
51
|
+
factor: Number(factor),
|
|
52
|
+
offset: value.offset != null ? Number(value.offset) : undefined,
|
|
53
|
+
normalized: value.normalized,
|
|
54
|
+
strict: value.strict,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return new SharedLogReplicationRange({
|
|
58
|
+
id: value.id,
|
|
59
|
+
factor: factor,
|
|
60
|
+
offset: value.offset,
|
|
61
|
+
normalized: value.normalized,
|
|
62
|
+
strict: value.strict,
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
const toReplicateValue = (input) => {
|
|
66
|
+
if (input === undefined)
|
|
67
|
+
return undefined;
|
|
68
|
+
if (typeof input === "boolean") {
|
|
69
|
+
return new SharedLogReplicateBool(input);
|
|
70
|
+
}
|
|
71
|
+
if (typeof input === "number") {
|
|
72
|
+
return new SharedLogReplicateFactor(input);
|
|
73
|
+
}
|
|
74
|
+
if (Array.isArray(input)) {
|
|
75
|
+
return new SharedLogReplicateFixedList(input.map((range) => toReplicationRange(range)));
|
|
76
|
+
}
|
|
77
|
+
if (input?.type === "resume") {
|
|
78
|
+
return toReplicateValue(input.default);
|
|
79
|
+
}
|
|
80
|
+
const fixed = input;
|
|
81
|
+
if (fixed.factor == null && fixed.factorMode == null) {
|
|
82
|
+
throw new Error("Replication options missing factor");
|
|
83
|
+
}
|
|
84
|
+
return new SharedLogReplicateFixed(toReplicationRange(fixed));
|
|
85
|
+
};
|
|
86
|
+
export const createSharedLogProxyFromService = async (raw) => {
|
|
87
|
+
ensureCustomEvent();
|
|
88
|
+
const randomId = () => {
|
|
89
|
+
if (typeof crypto !== "undefined" &&
|
|
90
|
+
typeof crypto.randomUUID === "function") {
|
|
91
|
+
return crypto.randomUUID();
|
|
92
|
+
}
|
|
93
|
+
return `${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
94
|
+
};
|
|
95
|
+
const abortError = () => new Error("AbortError");
|
|
96
|
+
const resolution = (await raw.resolution());
|
|
97
|
+
const decodeRange = (bytes) => {
|
|
98
|
+
if (resolution === "u32") {
|
|
99
|
+
return deserialize(bytes.value, ReplicationRangeIndexableU32);
|
|
100
|
+
}
|
|
101
|
+
return deserialize(bytes.value, ReplicationRangeIndexableU64);
|
|
102
|
+
};
|
|
103
|
+
const publicKey = await raw.publicKey();
|
|
104
|
+
const node = { identity: { publicKey } };
|
|
105
|
+
let length = toNumber(await raw.logLength());
|
|
106
|
+
let closed = false;
|
|
107
|
+
const events = new EventTarget();
|
|
108
|
+
const eventTypes = [
|
|
109
|
+
"join",
|
|
110
|
+
"leave",
|
|
111
|
+
"replicator:join",
|
|
112
|
+
"replicator:leave",
|
|
113
|
+
"replicator:mature",
|
|
114
|
+
"replication:change",
|
|
115
|
+
];
|
|
116
|
+
const eventHandlers = [];
|
|
117
|
+
for (const type of eventTypes) {
|
|
118
|
+
const handler = (event) => {
|
|
119
|
+
const detail = event?.detail?.publicKey;
|
|
120
|
+
if (!detail)
|
|
121
|
+
return;
|
|
122
|
+
const payload = type === "join" || type === "leave" ? detail : { publicKey: detail };
|
|
123
|
+
events.dispatchEvent(new CustomEvent(type, { detail: payload }));
|
|
124
|
+
};
|
|
125
|
+
raw.events.addEventListener(type, handler);
|
|
126
|
+
eventHandlers.push(() => raw.events.removeEventListener(type, handler));
|
|
127
|
+
}
|
|
128
|
+
const createEntriesIterator = (service) => {
|
|
129
|
+
let done = false;
|
|
130
|
+
const iterator = {
|
|
131
|
+
next: async (amount) => {
|
|
132
|
+
const batch = (await service.next(amount));
|
|
133
|
+
done = batch.done;
|
|
134
|
+
return (batch.entries ?? []).map(decodeEntry);
|
|
135
|
+
},
|
|
136
|
+
done: () => done,
|
|
137
|
+
all: async () => {
|
|
138
|
+
const out = [];
|
|
139
|
+
while (!done) {
|
|
140
|
+
const next = await iterator.next(10);
|
|
141
|
+
out.push(...next);
|
|
142
|
+
}
|
|
143
|
+
return out;
|
|
144
|
+
},
|
|
145
|
+
close: async () => {
|
|
146
|
+
done = true;
|
|
147
|
+
await service.close();
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
return iterator;
|
|
151
|
+
};
|
|
152
|
+
const log = {
|
|
153
|
+
get: async (hash) => {
|
|
154
|
+
const bytes = await raw.logGet(hash);
|
|
155
|
+
return bytes ? decodeEntry(bytes) : undefined;
|
|
156
|
+
},
|
|
157
|
+
has: async (hash) => {
|
|
158
|
+
return raw.logHas(hash);
|
|
159
|
+
},
|
|
160
|
+
getHeads: () => {
|
|
161
|
+
const servicePromise = raw.logGetHeads();
|
|
162
|
+
let iterator;
|
|
163
|
+
iterator = {
|
|
164
|
+
next: async (amount) => {
|
|
165
|
+
const service = await servicePromise;
|
|
166
|
+
Object.assign(iterator, createEntriesIterator(service));
|
|
167
|
+
return iterator.next(amount);
|
|
168
|
+
},
|
|
169
|
+
done: () => false,
|
|
170
|
+
all: async () => {
|
|
171
|
+
const service = await servicePromise;
|
|
172
|
+
Object.assign(iterator, createEntriesIterator(service));
|
|
173
|
+
return iterator.all();
|
|
174
|
+
},
|
|
175
|
+
close: async () => {
|
|
176
|
+
const service = await servicePromise;
|
|
177
|
+
Object.assign(iterator, createEntriesIterator(service));
|
|
178
|
+
return iterator.close();
|
|
179
|
+
},
|
|
180
|
+
};
|
|
181
|
+
return iterator;
|
|
182
|
+
},
|
|
183
|
+
toArray: async () => {
|
|
184
|
+
const items = await raw.logToArray();
|
|
185
|
+
length = items.length;
|
|
186
|
+
return items.map(decodeEntry);
|
|
187
|
+
},
|
|
188
|
+
blocks: {
|
|
189
|
+
has: async (hash) => {
|
|
190
|
+
return raw.logBlockHas(hash);
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
get length() {
|
|
194
|
+
return length;
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
const createReplicationIterator = (service) => {
|
|
198
|
+
let done = false;
|
|
199
|
+
const iterator = {
|
|
200
|
+
next: async (amount) => {
|
|
201
|
+
const batch = (await service.next(amount));
|
|
202
|
+
done = batch.done;
|
|
203
|
+
return (batch.results ?? []).map((result) => ({
|
|
204
|
+
id: result.id,
|
|
205
|
+
value: decodeRange(result.value),
|
|
206
|
+
}));
|
|
207
|
+
},
|
|
208
|
+
done: () => done,
|
|
209
|
+
all: async () => {
|
|
210
|
+
const out = [];
|
|
211
|
+
while (!done) {
|
|
212
|
+
const next = await iterator.next(10);
|
|
213
|
+
out.push(...next);
|
|
214
|
+
}
|
|
215
|
+
return out;
|
|
216
|
+
},
|
|
217
|
+
pending: async () => {
|
|
218
|
+
const pending = await service.pending();
|
|
219
|
+
return pending != null ? Number(pending) : 0;
|
|
220
|
+
},
|
|
221
|
+
close: async () => {
|
|
222
|
+
done = true;
|
|
223
|
+
await service.close();
|
|
224
|
+
},
|
|
225
|
+
};
|
|
226
|
+
return iterator;
|
|
227
|
+
};
|
|
228
|
+
const replicationIndex = {
|
|
229
|
+
iterate: (request) => {
|
|
230
|
+
const query = toQuery(request?.query);
|
|
231
|
+
const sort = toSort(request?.sort);
|
|
232
|
+
const iterateRequest = new SharedLogReplicationIterateRequest({
|
|
233
|
+
query,
|
|
234
|
+
sort,
|
|
235
|
+
});
|
|
236
|
+
const servicePromise = raw.replicationIterate(iterateRequest);
|
|
237
|
+
let iterator;
|
|
238
|
+
iterator = {
|
|
239
|
+
next: async (amount) => {
|
|
240
|
+
const service = await servicePromise;
|
|
241
|
+
Object.assign(iterator, createReplicationIterator(service));
|
|
242
|
+
return iterator.next(amount);
|
|
243
|
+
},
|
|
244
|
+
done: () => false,
|
|
245
|
+
all: async () => {
|
|
246
|
+
const service = await servicePromise;
|
|
247
|
+
Object.assign(iterator, createReplicationIterator(service));
|
|
248
|
+
return iterator.all();
|
|
249
|
+
},
|
|
250
|
+
pending: async () => {
|
|
251
|
+
const service = await servicePromise;
|
|
252
|
+
Object.assign(iterator, createReplicationIterator(service));
|
|
253
|
+
return iterator.pending();
|
|
254
|
+
},
|
|
255
|
+
close: async () => {
|
|
256
|
+
const service = await servicePromise;
|
|
257
|
+
Object.assign(iterator, createReplicationIterator(service));
|
|
258
|
+
return iterator.close();
|
|
259
|
+
},
|
|
260
|
+
};
|
|
261
|
+
return iterator;
|
|
262
|
+
},
|
|
263
|
+
count: async (request) => {
|
|
264
|
+
const query = toQuery(request?.query);
|
|
265
|
+
const count = await raw.replicationCount(new SharedLogReplicationCountRequest({ query }));
|
|
266
|
+
return toNumber(count);
|
|
267
|
+
},
|
|
268
|
+
getSize: async () => {
|
|
269
|
+
const count = await raw.replicationCount(new SharedLogReplicationCountRequest({ query: [] }));
|
|
270
|
+
return toNumber(count);
|
|
271
|
+
},
|
|
272
|
+
};
|
|
273
|
+
const getReplicators = async () => {
|
|
274
|
+
const replicators = await raw.getReplicators();
|
|
275
|
+
return new Set(replicators);
|
|
276
|
+
};
|
|
277
|
+
const waitForReplicator = async (publicKey, options) => {
|
|
278
|
+
if (options?.signal?.aborted) {
|
|
279
|
+
throw new Error("AbortError");
|
|
280
|
+
}
|
|
281
|
+
const signal = options?.signal;
|
|
282
|
+
const requestId = signal ? randomId() : undefined;
|
|
283
|
+
const request = new SharedLogWaitForReplicatorRequest({
|
|
284
|
+
publicKey,
|
|
285
|
+
eager: options?.eager,
|
|
286
|
+
timeoutMs: options?.timeout,
|
|
287
|
+
roleAgeMs: options?.roleAge,
|
|
288
|
+
requestId,
|
|
289
|
+
});
|
|
290
|
+
const call = raw.waitForReplicator(request);
|
|
291
|
+
if (!signal || !requestId) {
|
|
292
|
+
await call;
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
return new Promise((resolve, reject) => {
|
|
296
|
+
const cleanup = () => {
|
|
297
|
+
signal.removeEventListener("abort", onAbort);
|
|
298
|
+
};
|
|
299
|
+
const onAbort = () => {
|
|
300
|
+
cleanup();
|
|
301
|
+
void raw.cancelWait(requestId).catch(() => { });
|
|
302
|
+
reject(abortError());
|
|
303
|
+
};
|
|
304
|
+
if (signal.aborted) {
|
|
305
|
+
onAbort();
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
309
|
+
call.then(() => {
|
|
310
|
+
cleanup();
|
|
311
|
+
resolve();
|
|
312
|
+
}, (error) => {
|
|
313
|
+
cleanup();
|
|
314
|
+
reject(error);
|
|
315
|
+
});
|
|
316
|
+
});
|
|
317
|
+
};
|
|
318
|
+
const waitForReplicators = async (options) => {
|
|
319
|
+
if (options?.signal?.aborted) {
|
|
320
|
+
throw new Error("AbortError");
|
|
321
|
+
}
|
|
322
|
+
const signal = options?.signal;
|
|
323
|
+
const requestId = signal ? randomId() : undefined;
|
|
324
|
+
const request = new SharedLogWaitForReplicatorsRequest({
|
|
325
|
+
timeoutMs: options?.timeout,
|
|
326
|
+
roleAgeMs: options?.roleAge,
|
|
327
|
+
coverageThreshold: options?.coverageThreshold,
|
|
328
|
+
waitForNewPeers: options?.waitForNewPeers,
|
|
329
|
+
requestId,
|
|
330
|
+
});
|
|
331
|
+
const call = raw.waitForReplicators(request);
|
|
332
|
+
if (!signal || !requestId) {
|
|
333
|
+
await call;
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
return new Promise((resolve, reject) => {
|
|
337
|
+
const cleanup = () => {
|
|
338
|
+
signal.removeEventListener("abort", onAbort);
|
|
339
|
+
};
|
|
340
|
+
const onAbort = () => {
|
|
341
|
+
cleanup();
|
|
342
|
+
void raw.cancelWait(requestId).catch(() => { });
|
|
343
|
+
reject(abortError());
|
|
344
|
+
};
|
|
345
|
+
if (signal.aborted) {
|
|
346
|
+
onAbort();
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
350
|
+
call.then(() => {
|
|
351
|
+
cleanup();
|
|
352
|
+
resolve();
|
|
353
|
+
}, (error) => {
|
|
354
|
+
cleanup();
|
|
355
|
+
reject(error);
|
|
356
|
+
});
|
|
357
|
+
});
|
|
358
|
+
};
|
|
359
|
+
const replicate = async (input, options) => {
|
|
360
|
+
const value = toReplicateValue(input);
|
|
361
|
+
const request = value || options
|
|
362
|
+
? new SharedLogReplicateRequest({
|
|
363
|
+
value,
|
|
364
|
+
reset: options?.reset,
|
|
365
|
+
checkDuplicates: options?.checkDuplicates,
|
|
366
|
+
rebalance: options?.rebalance,
|
|
367
|
+
mergeSegments: options?.mergeSegments,
|
|
368
|
+
})
|
|
369
|
+
: undefined;
|
|
370
|
+
await raw.replicate(request);
|
|
371
|
+
};
|
|
372
|
+
const unreplicate = async (ranges) => {
|
|
373
|
+
const request = ranges
|
|
374
|
+
? new SharedLogUnreplicateRequest({ ids: ranges.map((r) => r.id) })
|
|
375
|
+
: undefined;
|
|
376
|
+
await raw.unreplicate(request);
|
|
377
|
+
};
|
|
378
|
+
const calculateCoverage = async (options) => {
|
|
379
|
+
const request = options
|
|
380
|
+
? new SharedLogCoverageRequest({
|
|
381
|
+
start: options.start != null ? Number(options.start) : undefined,
|
|
382
|
+
end: options.end != null ? Number(options.end) : undefined,
|
|
383
|
+
roleAgeMs: options.roleAge,
|
|
384
|
+
})
|
|
385
|
+
: undefined;
|
|
386
|
+
return raw.calculateCoverage(request);
|
|
387
|
+
};
|
|
388
|
+
const getMyReplicationSegments = async () => {
|
|
389
|
+
const ranges = await raw.getMyReplicationSegments();
|
|
390
|
+
return ranges.map(decodeRange);
|
|
391
|
+
};
|
|
392
|
+
const getAllReplicationSegments = async () => {
|
|
393
|
+
const ranges = await raw.getAllReplicationSegments();
|
|
394
|
+
return ranges.map(decodeRange);
|
|
395
|
+
};
|
|
396
|
+
const close = async () => {
|
|
397
|
+
if (closed)
|
|
398
|
+
return;
|
|
399
|
+
closed = true;
|
|
400
|
+
for (const off of eventHandlers)
|
|
401
|
+
off();
|
|
402
|
+
await raw.close();
|
|
403
|
+
};
|
|
404
|
+
const proxy = {
|
|
405
|
+
raw,
|
|
406
|
+
node,
|
|
407
|
+
events,
|
|
408
|
+
log,
|
|
409
|
+
replicationIndex,
|
|
410
|
+
getReplicators,
|
|
411
|
+
waitForReplicator,
|
|
412
|
+
waitForReplicators,
|
|
413
|
+
replicate,
|
|
414
|
+
unreplicate,
|
|
415
|
+
calculateCoverage,
|
|
416
|
+
getMyReplicationSegments,
|
|
417
|
+
getAllReplicationSegments,
|
|
418
|
+
close,
|
|
419
|
+
};
|
|
420
|
+
Object.defineProperty(proxy, "closed", {
|
|
421
|
+
get: () => closed,
|
|
422
|
+
set: (value) => {
|
|
423
|
+
closed = value;
|
|
424
|
+
},
|
|
425
|
+
enumerable: true,
|
|
426
|
+
});
|
|
427
|
+
return proxy;
|
|
428
|
+
};
|
|
429
|
+
export const openSharedLog = async (properties) => {
|
|
430
|
+
const channel = await properties.client.openPort("@peerbit/shared-log", serialize(new OpenSharedLogRequest({ id: properties.id })));
|
|
431
|
+
const transport = createMessagePortTransport(channel, {
|
|
432
|
+
requestTimeoutMs: (method) => {
|
|
433
|
+
if (method === "waitForReplicator" || method === "waitForReplicators") {
|
|
434
|
+
return undefined;
|
|
435
|
+
}
|
|
436
|
+
return 30_000;
|
|
437
|
+
},
|
|
438
|
+
});
|
|
439
|
+
const raw = createProxyFromService(SharedLogService, transport);
|
|
440
|
+
const proxy = await createSharedLogProxyFromService(raw);
|
|
441
|
+
const rawClose = proxy.close.bind(proxy);
|
|
442
|
+
proxy.close = async () => {
|
|
443
|
+
try {
|
|
444
|
+
await rawClose();
|
|
445
|
+
}
|
|
446
|
+
finally {
|
|
447
|
+
channel.close?.();
|
|
448
|
+
}
|
|
449
|
+
};
|
|
450
|
+
return proxy;
|
|
451
|
+
};
|
|
452
|
+
export const createSharedLogCacheKey = (logId) => {
|
|
453
|
+
if (!logId)
|
|
454
|
+
return undefined;
|
|
455
|
+
return toHex(logId);
|
|
456
|
+
};
|
|
457
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type CanonicalModule } from "@peerbit/canonical-host";
|
|
2
|
+
import { SharedLog } from "@peerbit/shared-log";
|
|
3
|
+
import { SharedLogService } from "./protocol.js";
|
|
4
|
+
export type SharedLogModuleStats = {
|
|
5
|
+
total: number;
|
|
6
|
+
entries: Array<{
|
|
7
|
+
key: string;
|
|
8
|
+
refs: number;
|
|
9
|
+
}>;
|
|
10
|
+
};
|
|
11
|
+
export declare const getSharedLogModuleStats: () => SharedLogModuleStats;
|
|
12
|
+
export declare const createSharedLogService: (log: SharedLog<any>, options?: {
|
|
13
|
+
onClose?: () => Promise<void> | void;
|
|
14
|
+
}) => SharedLogService;
|
|
15
|
+
export declare const sharedLogModule: CanonicalModule;
|
|
16
|
+
export declare const installSharedLogModule: (host: {
|
|
17
|
+
registerModule: (module: CanonicalModule) => void;
|
|
18
|
+
}) => CanonicalModule;
|
|
19
|
+
//# sourceMappingURL=host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/host.ts"],"names":[],"mappings":"AAEA,OAAO,EAGN,KAAK,eAAe,EAEpB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAGN,SAAS,EAET,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAmBN,gBAAgB,EAIhB,MAAM,eAAe,CAAC;AA2BvB,MAAM,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9C,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAO,oBAQ1C,CAAC;AAwEF,eAAO,MAAM,sBAAsB,GAClC,KAAK,SAAS,CAAC,GAAG,CAAC,EACnB,UAAU;IAAE,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAAE,KAChD,gBA0RF,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,eA0B7B,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,MAAM;IAC5C,cAAc,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;CAClD,KAAG,eAGH,CAAC"}
|