@peerbit/shared-log 12.3.5 → 13.0.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.
Files changed (37) hide show
  1. package/dist/benchmark/sync-batch-sweep.d.ts +2 -0
  2. package/dist/benchmark/sync-batch-sweep.d.ts.map +1 -0
  3. package/dist/benchmark/sync-batch-sweep.js +305 -0
  4. package/dist/benchmark/sync-batch-sweep.js.map +1 -0
  5. package/dist/src/fanout-envelope.d.ts +18 -0
  6. package/dist/src/fanout-envelope.d.ts.map +1 -0
  7. package/dist/src/fanout-envelope.js +85 -0
  8. package/dist/src/fanout-envelope.js.map +1 -0
  9. package/dist/src/index.d.ts +55 -6
  10. package/dist/src/index.d.ts.map +1 -1
  11. package/dist/src/index.js +1595 -339
  12. package/dist/src/index.js.map +1 -1
  13. package/dist/src/pid.d.ts.map +1 -1
  14. package/dist/src/pid.js +21 -5
  15. package/dist/src/pid.js.map +1 -1
  16. package/dist/src/ranges.d.ts +3 -1
  17. package/dist/src/ranges.d.ts.map +1 -1
  18. package/dist/src/ranges.js +14 -5
  19. package/dist/src/ranges.js.map +1 -1
  20. package/dist/src/sync/index.d.ts +45 -1
  21. package/dist/src/sync/index.d.ts.map +1 -1
  22. package/dist/src/sync/rateless-iblt.d.ts +13 -2
  23. package/dist/src/sync/rateless-iblt.d.ts.map +1 -1
  24. package/dist/src/sync/rateless-iblt.js +194 -3
  25. package/dist/src/sync/rateless-iblt.js.map +1 -1
  26. package/dist/src/sync/simple.d.ts +24 -3
  27. package/dist/src/sync/simple.d.ts.map +1 -1
  28. package/dist/src/sync/simple.js +330 -32
  29. package/dist/src/sync/simple.js.map +1 -1
  30. package/package.json +16 -16
  31. package/src/fanout-envelope.ts +27 -0
  32. package/src/index.ts +2162 -691
  33. package/src/pid.ts +22 -4
  34. package/src/ranges.ts +14 -4
  35. package/src/sync/index.ts +53 -1
  36. package/src/sync/rateless-iblt.ts +237 -4
  37. package/src/sync/simple.ts +427 -41
@@ -162,6 +162,22 @@ const getHashesFromSymbols = async (symbols, entryIndex, coordinateToHash) => {
162
162
  await handleBatch(true);
163
163
  return results;
164
164
  };
165
+ const DEFAULT_CONVERGENT_REPAIR_TIMEOUT_MS = 30_000;
166
+ const DEFAULT_CONVERGENT_RETRY_INTERVALS_MS = [0, 1_000, 3_000, 7_000];
167
+ const DEFAULT_BEST_EFFORT_RETRY_INTERVALS_MS = [0];
168
+ const SESSION_POLL_INTERVAL_MS = 100;
169
+ const DEFAULT_MAX_HASHES_PER_MESSAGE = 1_024;
170
+ const DEFAULT_MAX_COORDINATES_PER_MESSAGE = 1_024;
171
+ const DEFAULT_MAX_CONVERGENT_TRACKED_HASHES = 4_096;
172
+ const createDeferred = () => {
173
+ let resolve;
174
+ let reject;
175
+ const promise = new Promise((res, rej) => {
176
+ resolve = res;
177
+ reject = rej;
178
+ });
179
+ return { promise, resolve, reject };
180
+ };
165
181
  export class SimpleSyncronizer {
166
182
  // map of hash to public keys that we can ask for entries
167
183
  syncInFlightQueue;
@@ -173,6 +189,8 @@ export class SimpleSyncronizer {
173
189
  entryIndex;
174
190
  coordinateToHash;
175
191
  syncOptions;
192
+ repairSessionCounter;
193
+ repairSessions;
176
194
  // Syncing and dedeplucation work
177
195
  syncMoreInterval;
178
196
  closed;
@@ -185,32 +203,292 @@ export class SimpleSyncronizer {
185
203
  this.entryIndex = properties.entryIndex;
186
204
  this.coordinateToHash = properties.coordinateToHash;
187
205
  this.syncOptions = properties.sync;
206
+ this.repairSessionCounter = 0;
207
+ this.repairSessions = new Map();
188
208
  }
189
- onMaybeMissingEntries(properties) {
190
- let hashes;
209
+ getPrioritizedHashes(entries) {
191
210
  const priorityFn = this.syncOptions?.priority;
192
- if (priorityFn) {
193
- let index = 0;
194
- const scored = [];
195
- for (const [hash, entry] of properties.entries) {
196
- const priorityValue = priorityFn(entry);
197
- scored.push({
198
- hash,
199
- index,
200
- priority: Number.isFinite(priorityValue) ? priorityValue : 0,
211
+ if (!priorityFn) {
212
+ return [...entries.keys()];
213
+ }
214
+ let index = 0;
215
+ const scored = [];
216
+ for (const [hash, entry] of entries) {
217
+ const priorityValue = priorityFn(entry);
218
+ scored.push({
219
+ hash,
220
+ index,
221
+ priority: Number.isFinite(priorityValue) ? priorityValue : 0,
222
+ });
223
+ index += 1;
224
+ }
225
+ scored.sort((a, b) => b.priority - a.priority || a.index - b.index);
226
+ return scored.map((x) => x.hash);
227
+ }
228
+ normalizeRetryIntervals(mode, retryIntervalsMs) {
229
+ const defaults = mode === "convergent"
230
+ ? DEFAULT_CONVERGENT_RETRY_INTERVALS_MS
231
+ : DEFAULT_BEST_EFFORT_RETRY_INTERVALS_MS;
232
+ if (!retryIntervalsMs || retryIntervalsMs.length === 0) {
233
+ return [...defaults];
234
+ }
235
+ return [...retryIntervalsMs]
236
+ .map((x) => Math.max(0, Math.floor(x)))
237
+ .filter((x, i, arr) => arr.indexOf(x) === i)
238
+ .sort((a, b) => a - b);
239
+ }
240
+ get maxHashesPerMessage() {
241
+ const value = this.syncOptions?.maxSimpleHashesPerMessage;
242
+ return value && Number.isFinite(value) && value > 0
243
+ ? Math.floor(value)
244
+ : DEFAULT_MAX_HASHES_PER_MESSAGE;
245
+ }
246
+ get maxCoordinatesPerMessage() {
247
+ const value = this.syncOptions?.maxSimpleCoordinatesPerMessage;
248
+ return value && Number.isFinite(value) && value > 0
249
+ ? Math.floor(value)
250
+ : DEFAULT_MAX_COORDINATES_PER_MESSAGE;
251
+ }
252
+ get maxConvergentTrackedHashes() {
253
+ const value = this.syncOptions?.maxConvergentTrackedHashes;
254
+ return value && Number.isFinite(value) && value > 0
255
+ ? Math.floor(value)
256
+ : DEFAULT_MAX_CONVERGENT_TRACKED_HASHES;
257
+ }
258
+ chunk(values, size) {
259
+ if (values.length === 0) {
260
+ return [];
261
+ }
262
+ const out = [];
263
+ for (let i = 0; i < values.length; i += size) {
264
+ out.push(values.slice(i, i + size));
265
+ }
266
+ return out;
267
+ }
268
+ isRepairSessionComplete(session) {
269
+ for (const state of session.targets.values()) {
270
+ if (state.unresolved.size > 0) {
271
+ return false;
272
+ }
273
+ }
274
+ return true;
275
+ }
276
+ buildRepairSessionResult(session, completed) {
277
+ const durationMs = Date.now() - session.startedAt;
278
+ const out = [];
279
+ for (const [target, state] of session.targets) {
280
+ const unresolved = [...state.unresolved];
281
+ out.push({
282
+ target,
283
+ requested: state.requestedCount,
284
+ resolved: state.requestedCount - unresolved.length,
285
+ unresolved,
286
+ attempts: state.attempts,
287
+ durationMs,
288
+ completed,
289
+ requestedTotal: state.requestedTotalCount,
290
+ truncated: session.truncated,
291
+ });
292
+ }
293
+ return out;
294
+ }
295
+ finalizeRepairSession(sessionId, completed) {
296
+ const session = this.repairSessions.get(sessionId);
297
+ if (!session) {
298
+ return;
299
+ }
300
+ this.repairSessions.delete(sessionId);
301
+ session.cancelled = true;
302
+ if (session.timer) {
303
+ clearTimeout(session.timer);
304
+ }
305
+ session.deferred.resolve(this.buildRepairSessionResult(session, completed));
306
+ }
307
+ async refreshRepairSessionState(sessionId) {
308
+ const session = this.repairSessions.get(sessionId);
309
+ if (!session) {
310
+ return;
311
+ }
312
+ for (const state of session.targets.values()) {
313
+ for (const hash of [...state.unresolved]) {
314
+ if (await this.log.has(hash)) {
315
+ state.unresolved.delete(hash);
316
+ }
317
+ }
318
+ }
319
+ }
320
+ markRepairSessionResolvedHashes(hashes) {
321
+ if (hashes.length === 0 || this.repairSessions.size === 0) {
322
+ return;
323
+ }
324
+ for (const [sessionId, session] of this.repairSessions) {
325
+ for (const state of session.targets.values()) {
326
+ for (const hash of hashes) {
327
+ state.unresolved.delete(hash);
328
+ }
329
+ }
330
+ if (this.isRepairSessionComplete(session)) {
331
+ this.finalizeRepairSession(sessionId, true);
332
+ }
333
+ }
334
+ }
335
+ async runRepairSession(sessionId) {
336
+ const session = this.repairSessions.get(sessionId);
337
+ if (!session) {
338
+ return;
339
+ }
340
+ let previousDelay = 0;
341
+ for (const delayMs of session.retryIntervalsMs) {
342
+ if (!this.repairSessions.has(sessionId) || this.closed) {
343
+ return;
344
+ }
345
+ const waitMs = Math.max(0, delayMs - previousDelay);
346
+ previousDelay = delayMs;
347
+ if (waitMs > 0) {
348
+ await new Promise((resolve) => {
349
+ const timer = setTimeout(resolve, waitMs);
350
+ timer.unref?.();
201
351
  });
202
- index += 1;
203
352
  }
204
- scored.sort((a, b) => b.priority - a.priority || a.index - b.index);
205
- hashes = scored.map((x) => x.hash);
353
+ if (!this.repairSessions.has(sessionId) || this.closed) {
354
+ return;
355
+ }
356
+ await this.refreshRepairSessionState(sessionId);
357
+ const current = this.repairSessions.get(sessionId);
358
+ if (!current) {
359
+ return;
360
+ }
361
+ if (this.isRepairSessionComplete(current)) {
362
+ this.finalizeRepairSession(sessionId, true);
363
+ return;
364
+ }
365
+ for (const [target, state] of current.targets) {
366
+ if (state.unresolved.size === 0) {
367
+ continue;
368
+ }
369
+ state.attempts += 1;
370
+ try {
371
+ await this.requestSync([...state.unresolved], [target]);
372
+ }
373
+ catch {
374
+ // Best-effort: keep unresolved and let retries/timeout determine outcome.
375
+ }
376
+ }
377
+ await this.refreshRepairSessionState(sessionId);
378
+ const afterSend = this.repairSessions.get(sessionId);
379
+ if (!afterSend) {
380
+ return;
381
+ }
382
+ if (this.isRepairSessionComplete(afterSend)) {
383
+ this.finalizeRepairSession(sessionId, true);
384
+ return;
385
+ }
386
+ if (afterSend.mode === "best-effort") {
387
+ this.finalizeRepairSession(sessionId, false);
388
+ return;
389
+ }
206
390
  }
207
- else {
208
- hashes = [...properties.entries.keys()];
391
+ for (;;) {
392
+ if (!this.repairSessions.has(sessionId) || this.closed) {
393
+ return;
394
+ }
395
+ await this.refreshRepairSessionState(sessionId);
396
+ const current = this.repairSessions.get(sessionId);
397
+ if (!current) {
398
+ return;
399
+ }
400
+ if (this.isRepairSessionComplete(current)) {
401
+ this.finalizeRepairSession(sessionId, true);
402
+ return;
403
+ }
404
+ await new Promise((resolve) => {
405
+ const timer = setTimeout(resolve, SESSION_POLL_INTERVAL_MS);
406
+ timer.unref?.();
407
+ });
209
408
  }
210
- return this.rpc.send(new RequestMaybeSync({ hashes }), {
211
- priority: 1,
212
- mode: new SilentDelivery({ to: properties.targets, redundancy: 1 }),
409
+ }
410
+ startRepairSession(properties) {
411
+ const mode = properties.mode ?? "best-effort";
412
+ const startedAt = Date.now();
413
+ const timeoutMs = Math.max(1, Math.floor(properties.timeoutMs ??
414
+ (mode === "convergent"
415
+ ? DEFAULT_CONVERGENT_REPAIR_TIMEOUT_MS
416
+ : DEFAULT_CONVERGENT_REPAIR_TIMEOUT_MS)));
417
+ const retryIntervalsMs = this.normalizeRetryIntervals(mode, properties.retryIntervalsMs);
418
+ const allHashes = this.getPrioritizedHashes(properties.entries);
419
+ const trackedHashes = mode === "convergent" && allHashes.length > this.maxConvergentTrackedHashes
420
+ ? allHashes.slice(0, this.maxConvergentTrackedHashes)
421
+ : allHashes;
422
+ const truncated = trackedHashes.length < allHashes.length;
423
+ const targets = [...new Set(properties.targets)];
424
+ const id = `repair-${++this.repairSessionCounter}`;
425
+ const deferred = createDeferred();
426
+ const targetStates = new Map();
427
+ for (const target of targets) {
428
+ targetStates.set(target, {
429
+ unresolved: new Set(trackedHashes),
430
+ requestedCount: trackedHashes.length,
431
+ requestedTotalCount: allHashes.length,
432
+ attempts: 0,
433
+ });
434
+ }
435
+ const session = {
436
+ id,
437
+ mode,
438
+ startedAt,
439
+ timeoutMs,
440
+ retryIntervalsMs,
441
+ targets: targetStates,
442
+ truncated,
443
+ deferred,
444
+ cancelled: false,
445
+ };
446
+ if (allHashes.length === 0 || targets.length === 0) {
447
+ deferred.resolve(this.buildRepairSessionResult(session, true));
448
+ return {
449
+ id,
450
+ done: deferred.promise,
451
+ cancel: () => {
452
+ // no-op
453
+ },
454
+ };
455
+ }
456
+ // For capped convergent sessions, still dispatch the full set once so large
457
+ // repairs are not limited to tracked hashes.
458
+ if (mode === "convergent" && truncated) {
459
+ void this.onMaybeMissingEntries({
460
+ entries: properties.entries,
461
+ targets,
462
+ }).catch(() => {
463
+ // Best-effort: retries on tracked hashes continue via runRepairSession.
464
+ });
465
+ }
466
+ session.timer = setTimeout(() => {
467
+ this.finalizeRepairSession(id, false);
468
+ }, timeoutMs);
469
+ session.timer.unref?.();
470
+ this.repairSessions.set(id, session);
471
+ void this.runRepairSession(id).catch(() => {
472
+ this.finalizeRepairSession(id, false);
213
473
  });
474
+ return {
475
+ id,
476
+ done: deferred.promise,
477
+ cancel: () => {
478
+ this.finalizeRepairSession(id, false);
479
+ },
480
+ };
481
+ }
482
+ onMaybeMissingEntries(properties) {
483
+ const hashes = this.getPrioritizedHashes(properties.entries);
484
+ const chunks = this.chunk(hashes, this.maxHashesPerMessage);
485
+ return chunks.reduce((promise, chunk) => promise.then(() => this.rpc.send(new RequestMaybeSync({ hashes: chunk }), {
486
+ priority: 1,
487
+ mode: new SilentDelivery({
488
+ to: properties.targets,
489
+ redundancy: 1,
490
+ }),
491
+ })), Promise.resolve());
214
492
  }
215
493
  async onMessage(msg, context) {
216
494
  const from = context.from;
@@ -243,7 +521,9 @@ export class SimpleSyncronizer {
243
521
  }
244
522
  }
245
523
  onReceivedEntries(properties) {
524
+ const resolvedHashes = [];
246
525
  for (const entry of properties.entries) {
526
+ resolvedHashes.push(entry.entry.hash);
247
527
  const set = this.syncInFlight.get(properties.from.hashcode());
248
528
  if (set) {
249
529
  set.delete(entry.entry.hash);
@@ -252,6 +532,7 @@ export class SimpleSyncronizer {
252
532
  }
253
533
  }
254
534
  }
535
+ this.markRepairSessionResolvedHashes(resolvedHashes);
255
536
  }
256
537
  async queueSync(keys, from, options) {
257
538
  const requestHashes = [];
@@ -295,12 +576,24 @@ export class SimpleSyncronizer {
295
576
  }
296
577
  }
297
578
  const isBigInt = typeof hashes[0] === "bigint";
298
- await this.rpc.send(isBigInt
299
- ? new RequestMaybeSyncCoordinate({ hashNumbers: hashes })
300
- : new ResponseMaybeSync({ hashes: hashes }), {
301
- mode: new SilentDelivery({ to, redundancy: 1 }),
302
- priority: 1,
303
- });
579
+ if (isBigInt) {
580
+ const chunks = this.chunk(hashes, this.maxCoordinatesPerMessage);
581
+ for (const chunk of chunks) {
582
+ await this.rpc.send(new RequestMaybeSyncCoordinate({ hashNumbers: chunk }), {
583
+ mode: new SilentDelivery({ to, redundancy: 1 }),
584
+ priority: 1,
585
+ });
586
+ }
587
+ }
588
+ else {
589
+ const chunks = this.chunk(hashes, this.maxHashesPerMessage);
590
+ for (const chunk of chunks) {
591
+ await this.rpc.send(new ResponseMaybeSync({ hashes: chunk }), {
592
+ mode: new SilentDelivery({ to, redundancy: 1 }),
593
+ priority: 1,
594
+ });
595
+ }
596
+ }
304
597
  }
305
598
  async checkHasCoordinateOrHash(key) {
306
599
  return typeof key === "bigint"
@@ -373,10 +666,14 @@ export class SimpleSyncronizer {
373
666
  this.syncInFlightQueue.clear();
374
667
  this.syncInFlightQueueInverted.clear();
375
668
  this.syncInFlight.clear();
669
+ for (const sessionId of [...this.repairSessions.keys()]) {
670
+ this.finalizeRepairSession(sessionId, false);
671
+ }
376
672
  clearTimeout(this.syncMoreInterval);
377
673
  }
378
674
  onEntryAdded(entry) {
379
- return this.clearSyncProcess(entry.hash);
675
+ this.clearSyncProcess(entry.hash);
676
+ this.markRepairSessionResolvedHashes([entry.hash]);
380
677
  }
381
678
  onEntryRemoved(hash) {
382
679
  return this.clearSyncProcess(hash);
@@ -397,16 +694,17 @@ export class SimpleSyncronizer {
397
694
  }
398
695
  }
399
696
  onPeerDisconnected(key) {
400
- return this.clearSyncProcessPublicKey(key);
697
+ const publicKeyHash = typeof key === "string" ? key : key.hashcode();
698
+ return this.clearSyncProcessPublicKeyHash(publicKeyHash);
401
699
  }
402
- clearSyncProcessPublicKey(publicKey) {
403
- this.syncInFlight.delete(publicKey.hashcode());
404
- const map = this.syncInFlightQueueInverted.get(publicKey.hashcode());
700
+ clearSyncProcessPublicKeyHash(publicKeyHash) {
701
+ this.syncInFlight.delete(publicKeyHash);
702
+ const map = this.syncInFlightQueueInverted.get(publicKeyHash);
405
703
  if (map) {
406
704
  for (const hash of map) {
407
705
  const arr = this.syncInFlightQueue.get(hash);
408
706
  if (arr) {
409
- const filtered = arr.filter((x) => !x.equals(publicKey));
707
+ const filtered = arr.filter((x) => x.hashcode() !== publicKeyHash);
410
708
  if (filtered.length > 0) {
411
709
  this.syncInFlightQueue.set(hash, filtered);
412
710
  }
@@ -415,7 +713,7 @@ export class SimpleSyncronizer {
415
713
  }
416
714
  }
417
715
  }
418
- this.syncInFlightQueueInverted.delete(publicKey.hashcode());
716
+ this.syncInFlightQueueInverted.delete(publicKeyHash);
419
717
  }
420
718
  }
421
719
  get pending() {
@@ -1 +1 @@
1
- {"version":3,"file":"simple.js","sourceRoot":"","sources":["../../../src/sync/simple.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simple.js","sourceRoot":"","sources":["../../../src/sync/simple.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/shared-log",
3
- "version": "12.3.5",
3
+ "version": "13.0.0",
4
4
  "description": "Shared log",
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -61,28 +61,28 @@
61
61
  "pidusage": "^4.0.1",
62
62
  "pino": "^9.4.0",
63
63
  "uint8arrays": "^5.1.0",
64
- "@peerbit/log": "5.0.10",
65
64
  "@peerbit/logger": "2.0.0",
66
- "@peerbit/program": "5.6.3",
65
+ "@peerbit/log": "6.0.0",
66
+ "@peerbit/program": "6.0.0",
67
67
  "@peerbit/riblt": "1.2.0",
68
- "@peerbit/rpc": "5.4.20",
69
- "@peerbit/any-store": "2.2.4",
70
- "@peerbit/blocks": "3.1.8",
71
- "@peerbit/blocks-interface": "1.5.2",
72
- "@peerbit/cache": "2.2.0",
73
- "@peerbit/crypto": "2.4.1",
74
- "@peerbit/indexer-interface": "2.1.1",
75
- "@peerbit/indexer-sqlite3": "2.1.2",
76
- "@peerbit/stream-interface": "5.4.0",
77
- "@peerbit/time": "2.3.0",
78
- "@peerbit/pubsub-interface": "4.1.2",
79
- "@peerbit/pubsub": "4.1.4"
68
+ "@peerbit/rpc": "6.0.0",
69
+ "@peerbit/blocks-interface": "2.0.0",
70
+ "@peerbit/any-store": "2.2.5",
71
+ "@peerbit/blocks": "4.0.0",
72
+ "@peerbit/crypto": "3.0.0",
73
+ "@peerbit/cache": "3.0.0",
74
+ "@peerbit/indexer-interface": "3.0.0",
75
+ "@peerbit/indexer-sqlite3": "3.0.0",
76
+ "@peerbit/pubsub": "5.0.0",
77
+ "@peerbit/pubsub-interface": "5.0.0",
78
+ "@peerbit/time": "3.0.0",
79
+ "@peerbit/stream-interface": "6.0.0"
80
80
  },
81
81
  "devDependencies": {
82
82
  "@types/libsodium-wrappers": "^0.7.14",
83
83
  "@types/pidusage": "^2.0.5",
84
84
  "uuid": "^10.0.0",
85
- "@peerbit/test-utils": "2.3.19"
85
+ "@peerbit/test-utils": "3.0.0"
86
86
  },
87
87
  "scripts": {
88
88
  "clean": "aegir clean",
@@ -0,0 +1,27 @@
1
+ import { field, variant } from "@dao-xyz/borsh";
2
+
3
+ /**
4
+ * Application-level envelope for fanout-delivered shared-log messages.
5
+ *
6
+ * FanoutTree's data-plane forwarding makes the root the transport-level origin
7
+ * when proxy-publishing. Shared-log needs a stable publisher identity and
8
+ * timestamp regardless of which overlay hop forwarded the bytes.
9
+ */
10
+ @variant(0)
11
+ export class FanoutEnvelope {
12
+ @field({ type: "string" })
13
+ from: string; // publisher publicKey hash
14
+
15
+ @field({ type: "u64" })
16
+ timestamp: bigint; // publisher-supplied timestamp
17
+
18
+ @field({ type: Uint8Array })
19
+ payload: Uint8Array; // serialized TransportMessage
20
+
21
+ constructor(props: { from: string; timestamp: bigint; payload: Uint8Array }) {
22
+ this.from = props.from;
23
+ this.timestamp = props.timestamp;
24
+ this.payload = props.payload;
25
+ }
26
+ }
27
+