raptiye 0.1.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 (41) hide show
  1. package/README.md +171 -0
  2. package/bench/bench-batch-curve.js +121 -0
  3. package/bench/bench-event-loop.js +91 -0
  4. package/bench/bench-failover.js +172 -0
  5. package/bench/bench-memory.js +107 -0
  6. package/bench/bench-partition.js +134 -0
  7. package/bench/bench-pipeline.js +94 -0
  8. package/bench/bench-recovery.js +134 -0
  9. package/bench/bench-replication.js +107 -0
  10. package/bench/bench-single-node.js +77 -0
  11. package/bench/bench-slow-follower.js +96 -0
  12. package/bench/harness.js +87 -0
  13. package/bench/run-all.js +83 -0
  14. package/bench-results.json +598 -0
  15. package/index.js +30 -0
  16. package/package.json +24 -0
  17. package/src/core/engine.js +907 -0
  18. package/src/core/invariants.js +146 -0
  19. package/src/node/raptiye.js +296 -0
  20. package/src/node/stats.js +82 -0
  21. package/src/protocol/checksum.js +66 -0
  22. package/src/protocol/wire.js +551 -0
  23. package/src/replication/pipeline.js +235 -0
  24. package/src/sim/cluster.js +316 -0
  25. package/src/sim/prng.js +52 -0
  26. package/src/sim/virtual-clock.js +82 -0
  27. package/src/storage/file-log.js +394 -0
  28. package/src/storage/interface.js +113 -0
  29. package/src/storage/memory-log.js +183 -0
  30. package/src/transport/interface.js +47 -0
  31. package/src/transport/memory-transport.js +67 -0
  32. package/src/transport/tcp-transport.js +200 -0
  33. package/src/types.js +87 -0
  34. package/test/chaos/chaos.test.js +112 -0
  35. package/test/integration/cluster.test.js +192 -0
  36. package/test/integration/node.test.js +78 -0
  37. package/test/integration/replication-pipeline.test.js +45 -0
  38. package/test/unit/core.test.js +163 -0
  39. package/test/unit/protocol.test.js +181 -0
  40. package/test/unit/storage.test.js +127 -0
  41. package/test/unit/transport.test.js +90 -0
@@ -0,0 +1,598 @@
1
+ {
2
+ "environment": {
3
+ "nodeVersion": "v20.19.5",
4
+ "os": "Darwin",
5
+ "platform": "darwin",
6
+ "release": "25.6.0",
7
+ "arch": "arm64",
8
+ "cpuModel": "Apple M2",
9
+ "cpuCores": 8,
10
+ "totalMemoryMB": 16384,
11
+ "date": "2026-09-19T16:12:27.502Z",
12
+ "gitCommit": "unknown"
13
+ },
14
+ "startedAt": "2026-09-19T16:12:27.502Z",
15
+ "benchmarks": {
16
+ "singleNode": {
17
+ "benchmark": "single_node_core_overhead",
18
+ "environment": {
19
+ "nodeVersion": "v20.19.5",
20
+ "os": "Darwin",
21
+ "platform": "darwin",
22
+ "release": "25.6.0",
23
+ "arch": "arm64",
24
+ "cpuModel": "Apple M2",
25
+ "cpuCores": 8,
26
+ "totalMemoryMB": 16384,
27
+ "date": "2026-09-19T16:12:27.624Z",
28
+ "gitCommit": "unknown"
29
+ },
30
+ "iterations": 200000,
31
+ "totalTimeMs": 81.855625,
32
+ "opsPerSec": 2443326,
33
+ "nsPerOp": 409,
34
+ "bytesAllocatedPerOp": 160,
35
+ "heapUsedMB": 37
36
+ },
37
+ "replication": {
38
+ "benchmark": "3_node_replication",
39
+ "environment": {
40
+ "nodeVersion": "v20.19.5",
41
+ "os": "Darwin",
42
+ "platform": "darwin",
43
+ "release": "25.6.0",
44
+ "arch": "arm64",
45
+ "cpuModel": "Apple M2",
46
+ "cpuCores": 8,
47
+ "totalMemoryMB": 16384,
48
+ "date": "2026-09-19T16:12:34.793Z",
49
+ "gitCommit": "unknown"
50
+ },
51
+ "results": [
52
+ {
53
+ "payloadSize": "16 B",
54
+ "bytes": 16,
55
+ "iterations": 10000,
56
+ "opsPerSec": 65633,
57
+ "mbPerSec": 1,
58
+ "commitP50Ms": 0.0124,
59
+ "commitP95Ms": 0.0286,
60
+ "commitP99Ms": 0.0465,
61
+ "copiesPerByte": 0
62
+ },
63
+ {
64
+ "payloadSize": "64 B",
65
+ "bytes": 64,
66
+ "iterations": 10000,
67
+ "opsPerSec": 39358,
68
+ "mbPerSec": 2.4,
69
+ "commitP50Ms": 0.0202,
70
+ "commitP95Ms": 0.0401,
71
+ "commitP99Ms": 0.0913,
72
+ "copiesPerByte": 0
73
+ },
74
+ {
75
+ "payloadSize": "256 B",
76
+ "bytes": 256,
77
+ "iterations": 10000,
78
+ "opsPerSec": 29213,
79
+ "mbPerSec": 7.13,
80
+ "commitP50Ms": 0.0288,
81
+ "commitP95Ms": 0.0538,
82
+ "commitP99Ms": 0.1195,
83
+ "copiesPerByte": 0
84
+ },
85
+ {
86
+ "payloadSize": "1 KB",
87
+ "bytes": 1024,
88
+ "iterations": 8000,
89
+ "opsPerSec": 21015,
90
+ "mbPerSec": 20.52,
91
+ "commitP50Ms": 0.043,
92
+ "commitP95Ms": 0.0615,
93
+ "commitP99Ms": 0.1173,
94
+ "copiesPerByte": 0
95
+ },
96
+ {
97
+ "payloadSize": "4 KB",
98
+ "bytes": 4096,
99
+ "iterations": 5000,
100
+ "opsPerSec": 6967,
101
+ "mbPerSec": 27.21,
102
+ "commitP50Ms": 0.118,
103
+ "commitP95Ms": 0.229,
104
+ "commitP99Ms": 0.4109,
105
+ "copiesPerByte": 0
106
+ },
107
+ {
108
+ "payloadSize": "64 KB",
109
+ "bytes": 65536,
110
+ "iterations": 1000,
111
+ "opsPerSec": 495,
112
+ "mbPerSec": 30.96,
113
+ "commitP50Ms": 1.7322,
114
+ "commitP95Ms": 3.0451,
115
+ "commitP99Ms": 6.7927,
116
+ "copiesPerByte": 0
117
+ },
118
+ {
119
+ "payloadSize": "1 MB",
120
+ "bytes": 1048576,
121
+ "iterations": 100,
122
+ "opsPerSec": 36,
123
+ "mbPerSec": 35.8,
124
+ "commitP50Ms": 27.2697,
125
+ "commitP95Ms": 28.7118,
126
+ "commitP99Ms": 74.791,
127
+ "copiesPerByte": 0
128
+ }
129
+ ]
130
+ },
131
+ "batchCurve": {
132
+ "benchmark": "batch_curve",
133
+ "environment": {
134
+ "nodeVersion": "v20.19.5",
135
+ "os": "Darwin",
136
+ "platform": "darwin",
137
+ "release": "25.6.0",
138
+ "arch": "arm64",
139
+ "cpuModel": "Apple M2",
140
+ "cpuCores": 8,
141
+ "totalMemoryMB": 16384,
142
+ "date": "2026-09-19T16:12:36.532Z",
143
+ "gitCommit": "unknown"
144
+ },
145
+ "results": [
146
+ {
147
+ "maxBatchEntries": 1,
148
+ "opsPerSec": 48573,
149
+ "mbPerSec": 2.96,
150
+ "latencyP50Ms": 0.0124,
151
+ "latencyP99Ms": 0.0945
152
+ },
153
+ {
154
+ "maxBatchEntries": 4,
155
+ "opsPerSec": 73883,
156
+ "mbPerSec": 4.51,
157
+ "latencyP50Ms": 0.0123,
158
+ "latencyP99Ms": 0.0252
159
+ },
160
+ {
161
+ "maxBatchEntries": 16,
162
+ "opsPerSec": 76037,
163
+ "mbPerSec": 4.64,
164
+ "latencyP50Ms": 0.0122,
165
+ "latencyP99Ms": 0.0506
166
+ },
167
+ {
168
+ "maxBatchEntries": 64,
169
+ "opsPerSec": 75374,
170
+ "mbPerSec": 4.6,
171
+ "latencyP50Ms": 0.0123,
172
+ "latencyP99Ms": 0.0257
173
+ },
174
+ {
175
+ "maxBatchEntries": 256,
176
+ "opsPerSec": 75464,
177
+ "mbPerSec": 4.61,
178
+ "latencyP50Ms": 0.0127,
179
+ "latencyP99Ms": 0.0162
180
+ },
181
+ {
182
+ "maxBatchEntries": 1024,
183
+ "opsPerSec": 76381,
184
+ "mbPerSec": 4.66,
185
+ "latencyP50Ms": 0.0131,
186
+ "latencyP99Ms": 0.0134
187
+ },
188
+ {
189
+ "maxBatchEntries": 4096,
190
+ "opsPerSec": 74996,
191
+ "mbPerSec": 4.58,
192
+ "latencyP50Ms": 0.0134,
193
+ "latencyP99Ms": 0.0135
194
+ }
195
+ ]
196
+ },
197
+ "pipeline": {
198
+ "benchmark": "pipeline_depth",
199
+ "environment": {
200
+ "nodeVersion": "v20.19.5",
201
+ "os": "Darwin",
202
+ "platform": "darwin",
203
+ "release": "25.6.0",
204
+ "arch": "arm64",
205
+ "cpuModel": "Apple M2",
206
+ "cpuCores": 8,
207
+ "totalMemoryMB": 16384,
208
+ "date": "2026-09-19T16:12:37.951Z",
209
+ "gitCommit": "unknown"
210
+ },
211
+ "results": [
212
+ {
213
+ "maxInflightBatches": 1,
214
+ "opsPerSec": 64972,
215
+ "p50Ms": 0.014,
216
+ "p95Ms": 0.0165,
217
+ "p99Ms": 0.0219
218
+ },
219
+ {
220
+ "maxInflightBatches": 2,
221
+ "opsPerSec": 62080,
222
+ "p50Ms": 0.014,
223
+ "p95Ms": 0.0212,
224
+ "p99Ms": 0.0347
225
+ },
226
+ {
227
+ "maxInflightBatches": 4,
228
+ "opsPerSec": 64974,
229
+ "p50Ms": 0.014,
230
+ "p95Ms": 0.0166,
231
+ "p99Ms": 0.0317
232
+ },
233
+ {
234
+ "maxInflightBatches": 8,
235
+ "opsPerSec": 60713,
236
+ "p50Ms": 0.0143,
237
+ "p95Ms": 0.022,
238
+ "p99Ms": 0.0427
239
+ },
240
+ {
241
+ "maxInflightBatches": 16,
242
+ "opsPerSec": 55857,
243
+ "p50Ms": 0.0145,
244
+ "p95Ms": 0.0284,
245
+ "p99Ms": 0.0629
246
+ },
247
+ {
248
+ "maxInflightBatches": 32,
249
+ "opsPerSec": 57719,
250
+ "p50Ms": 0.0143,
251
+ "p95Ms": 0.0241,
252
+ "p99Ms": 0.0628
253
+ }
254
+ ]
255
+ },
256
+ "slowFollower": {
257
+ "benchmark": "slow_follower_isolation",
258
+ "environment": {
259
+ "nodeVersion": "v20.19.5",
260
+ "os": "Darwin",
261
+ "platform": "darwin",
262
+ "release": "25.6.0",
263
+ "arch": "arm64",
264
+ "cpuModel": "Apple M2",
265
+ "cpuCores": 8,
266
+ "totalMemoryMB": 16384,
267
+ "date": "2026-09-19T16:12:38.394Z",
268
+ "gitCommit": "unknown"
269
+ },
270
+ "fastPeerRttMs": 2,
271
+ "slowPeerRttMs": 200,
272
+ "commandsSubmitted": 500,
273
+ "quorumOpsPerSec": 333,
274
+ "leaderCommit": 501,
275
+ "fastPeerMatch": 501,
276
+ "slowPeerMatch": 358,
277
+ "quorumHealthy": true
278
+ },
279
+ "failover": {
280
+ "benchmark": "failover_timeline",
281
+ "environment": {
282
+ "nodeVersion": "v20.19.5",
283
+ "os": "Darwin",
284
+ "platform": "darwin",
285
+ "release": "25.6.0",
286
+ "arch": "arm64",
287
+ "cpuModel": "Apple M2",
288
+ "cpuCores": 8,
289
+ "totalMemoryMB": 16384,
290
+ "date": "2026-09-19T16:12:38.442Z",
291
+ "gitCommit": "unknown"
292
+ },
293
+ "iterations": 50,
294
+ "metrics": {
295
+ "headlineMetric": "leader_death_to_first_newly_committed_command",
296
+ "totalWriteUnavailability": {
297
+ "p50": 133,
298
+ "p90": 187,
299
+ "p95": 194,
300
+ "p99": 208,
301
+ "max": 208,
302
+ "mean": 145.3111111111111
303
+ },
304
+ "detectionLatency": {
305
+ "p50": 115,
306
+ "p90": 168,
307
+ "p95": 172,
308
+ "p99": 188,
309
+ "max": 188,
310
+ "mean": 126.22222222222223
311
+ },
312
+ "electionLatency": {
313
+ "p50": 12,
314
+ "p90": 15,
315
+ "p95": 19,
316
+ "p99": 52,
317
+ "max": 52,
318
+ "mean": 13.355555555555556
319
+ },
320
+ "activationAndCommitLatency": {
321
+ "p50": 6,
322
+ "p90": 9,
323
+ "p95": 10,
324
+ "p99": 10,
325
+ "max": 10,
326
+ "mean": 5.733333333333333
327
+ }
328
+ },
329
+ "sampleTimelines": [
330
+ {
331
+ "iteration": 1,
332
+ "T0": 420,
333
+ "T1": 587,
334
+ "T2": 587,
335
+ "T3": 594,
336
+ "T4": 601,
337
+ "T5": 601,
338
+ "T6": 607,
339
+ "T7": 607,
340
+ "detectionMs": 167,
341
+ "electionMs": 14,
342
+ "totalUnavailabilityMs": 187
343
+ },
344
+ {
345
+ "iteration": 2,
346
+ "T0": 420,
347
+ "T1": 526,
348
+ "T2": 526,
349
+ "T3": 532,
350
+ "T4": 537,
351
+ "T5": 537,
352
+ "T6": 542,
353
+ "T7": 542,
354
+ "detectionMs": 106,
355
+ "electionMs": 11,
356
+ "totalUnavailabilityMs": 122
357
+ },
358
+ {
359
+ "iteration": 3,
360
+ "T0": 420,
361
+ "T1": 508,
362
+ "T2": 508,
363
+ "T3": 513,
364
+ "T4": 519,
365
+ "T5": 519,
366
+ "T6": 523,
367
+ "T7": 523,
368
+ "detectionMs": 88,
369
+ "electionMs": 11,
370
+ "totalUnavailabilityMs": 103
371
+ },
372
+ {
373
+ "iteration": 4,
374
+ "T0": 420,
375
+ "T1": 562,
376
+ "T2": 562,
377
+ "T3": 567,
378
+ "T4": 574,
379
+ "T5": 574,
380
+ "T6": 580,
381
+ "T7": 580,
382
+ "detectionMs": 142,
383
+ "electionMs": 12,
384
+ "totalUnavailabilityMs": 160
385
+ },
386
+ {
387
+ "iteration": 5,
388
+ "T0": 420,
389
+ "T1": 535,
390
+ "T2": 535,
391
+ "T3": 542,
392
+ "T4": 544,
393
+ "T5": 544,
394
+ "T6": 547,
395
+ "T7": 547,
396
+ "detectionMs": 115,
397
+ "electionMs": 9,
398
+ "totalUnavailabilityMs": 127
399
+ }
400
+ ]
401
+ },
402
+ "partition": {
403
+ "benchmark": "partition_and_split_brain_safety",
404
+ "environment": {
405
+ "nodeVersion": "v20.19.5",
406
+ "os": "Darwin",
407
+ "platform": "darwin",
408
+ "release": "25.6.0",
409
+ "arch": "arm64",
410
+ "cpuModel": "Apple M2",
411
+ "cpuCores": 8,
412
+ "totalMemoryMB": 16384,
413
+ "date": "2026-09-19T16:12:38.470Z",
414
+ "gitCommit": "unknown"
415
+ },
416
+ "scenarios": [
417
+ {
418
+ "scenario": "Leader Isolated & Heal",
419
+ "isolatedCommitted": false,
420
+ "majorityCommitted": true,
421
+ "oldLeaderDemoted": true,
422
+ "splitBrainPrevented": true,
423
+ "passed": true
424
+ },
425
+ {
426
+ "scenario": "Single Follower Isolated & Rejoin",
427
+ "isolatedCommitted": false,
428
+ "majorityCommitted": true,
429
+ "oldLeaderDemoted": false,
430
+ "splitBrainPrevented": true,
431
+ "passed": true
432
+ }
433
+ ]
434
+ },
435
+ "recovery": {
436
+ "benchmark": "follower_recovery",
437
+ "environment": {
438
+ "nodeVersion": "v20.19.5",
439
+ "os": "Darwin",
440
+ "platform": "darwin",
441
+ "release": "25.6.0",
442
+ "arch": "arm64",
443
+ "cpuModel": "Apple M2",
444
+ "cpuCores": 8,
445
+ "totalMemoryMB": 16384,
446
+ "date": "2026-09-19T16:12:38.609Z",
447
+ "gitCommit": "unknown"
448
+ },
449
+ "results": [
450
+ {
451
+ "entriesBehind": 1000,
452
+ "roundtrips": 1,
453
+ "timeToReadyMs": 0.99,
454
+ "entriesPerSec": 1011250,
455
+ "mbPerSec": 61.72,
456
+ "heapUsedMB": 39,
457
+ "rssMB": 368
458
+ },
459
+ {
460
+ "entriesBehind": 100000,
461
+ "roundtrips": 98,
462
+ "timeToReadyMs": 65.23,
463
+ "entriesPerSec": 1533023,
464
+ "mbPerSec": 93.57,
465
+ "heapUsedMB": 32,
466
+ "rssMB": 372
467
+ }
468
+ ]
469
+ },
470
+ "eventLoop": {
471
+ "benchmark": "event_loop_health",
472
+ "environment": {
473
+ "nodeVersion": "v20.19.5",
474
+ "os": "Darwin",
475
+ "platform": "darwin",
476
+ "release": "25.6.0",
477
+ "arch": "arm64",
478
+ "cpuModel": "Apple M2",
479
+ "cpuCores": 8,
480
+ "totalMemoryMB": 16384,
481
+ "date": "2026-09-19T16:12:39.223Z",
482
+ "gitCommit": "unknown"
483
+ },
484
+ "workload": "4850 commands (256 B)",
485
+ "eventLoopLagMs": {
486
+ "p50": 0.0133,
487
+ "p90": 0.0146,
488
+ "p95": 0.015,
489
+ "p99": 0.0244,
490
+ "max": 1.614
491
+ }
492
+ },
493
+ "memorySoak": {
494
+ "benchmark": "memory_stability_soak",
495
+ "environment": {
496
+ "nodeVersion": "v20.19.5",
497
+ "os": "Darwin",
498
+ "platform": "darwin",
499
+ "release": "25.6.0",
500
+ "arch": "arm64",
501
+ "cpuModel": "Apple M2",
502
+ "cpuCores": 8,
503
+ "totalMemoryMB": 16384,
504
+ "date": "2026-09-19T16:12:40.019Z",
505
+ "gitCommit": "unknown"
506
+ },
507
+ "totalCommands": 50000,
508
+ "opsPerSec": 72227,
509
+ "initialHeapMB": 47,
510
+ "finalHeapMB": 77,
511
+ "memoryGrowthMB": 30,
512
+ "memoryBounded": false,
513
+ "checkpoints": [
514
+ {
515
+ "iteration": 5000,
516
+ "rssMB": 370,
517
+ "heapUsedMB": 47,
518
+ "heapTotalMB": 72,
519
+ "externalMB": 7,
520
+ "retainedEntries": 1000
521
+ },
522
+ {
523
+ "iteration": 10000,
524
+ "rssMB": 371,
525
+ "heapUsedMB": 50,
526
+ "heapTotalMB": 72,
527
+ "externalMB": 8,
528
+ "retainedEntries": 1000
529
+ },
530
+ {
531
+ "iteration": 15000,
532
+ "rssMB": 373,
533
+ "heapUsedMB": 52,
534
+ "heapTotalMB": 74,
535
+ "externalMB": 9,
536
+ "retainedEntries": 1000
537
+ },
538
+ {
539
+ "iteration": 20000,
540
+ "rssMB": 373,
541
+ "heapUsedMB": 54,
542
+ "heapTotalMB": 78,
543
+ "externalMB": 11,
544
+ "retainedEntries": 1000
545
+ },
546
+ {
547
+ "iteration": 25000,
548
+ "rssMB": 377,
549
+ "heapUsedMB": 55,
550
+ "heapTotalMB": 81,
551
+ "externalMB": 12,
552
+ "retainedEntries": 1000
553
+ },
554
+ {
555
+ "iteration": 30000,
556
+ "rssMB": 376,
557
+ "heapUsedMB": 57,
558
+ "heapTotalMB": 85,
559
+ "externalMB": 13,
560
+ "retainedEntries": 1000
561
+ },
562
+ {
563
+ "iteration": 35000,
564
+ "rssMB": 380,
565
+ "heapUsedMB": 58,
566
+ "heapTotalMB": 89,
567
+ "externalMB": 15,
568
+ "retainedEntries": 1000
569
+ },
570
+ {
571
+ "iteration": 40000,
572
+ "rssMB": 381,
573
+ "heapUsedMB": 60,
574
+ "heapTotalMB": 92,
575
+ "externalMB": 16,
576
+ "retainedEntries": 1000
577
+ },
578
+ {
579
+ "iteration": 45000,
580
+ "rssMB": 384,
581
+ "heapUsedMB": 76,
582
+ "heapTotalMB": 96,
583
+ "externalMB": 18,
584
+ "retainedEntries": 1000
585
+ },
586
+ {
587
+ "iteration": 50000,
588
+ "rssMB": 387,
589
+ "heapUsedMB": 77,
590
+ "heapTotalMB": 99,
591
+ "externalMB": 19,
592
+ "retainedEntries": 1000
593
+ }
594
+ ]
595
+ }
596
+ },
597
+ "completedAt": "2026-09-19T16:12:40.019Z"
598
+ }
package/index.js ADDED
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Raptiye: High-performance, byte-first replicated-log and consensus core for Node.js.
3
+ */
4
+
5
+ export { Raptiye } from './src/node/raptiye.js';
6
+ export { ConsensusEngine } from './src/core/engine.js';
7
+ export { ClusterInvariants } from './src/core/invariants.js';
8
+
9
+ // Storage
10
+ export { LogStorage } from './src/storage/interface.js';
11
+ export { MemoryLog } from './src/storage/memory-log.js';
12
+ export { FileLog } from './src/storage/file-log.js';
13
+
14
+ // Transport
15
+ export { Transport } from './src/transport/interface.js';
16
+ export { MemoryNetwork, MemoryTransport } from './src/transport/memory-transport.js';
17
+ export { TCPTransport } from './src/transport/tcp-transport.js';
18
+
19
+ // Simulation & Testing
20
+ export { ClusterSimulator, SimulatedNode } from './src/sim/cluster.js';
21
+ export { VirtualClock } from './src/sim/virtual-clock.js';
22
+ export { PRNG } from './src/sim/prng.js';
23
+
24
+ // Protocol & Types
25
+ export { Role, RoleName, MessageType, MessageTypeName, EntryType, EventType, EffectType } from './src/types.js';
26
+ export { encodeMessage, decodeMessage, flattenChunks, globalWireMetrics, WireMetrics } from './src/protocol/wire.js';
27
+ export { crc32, crc32Buffers } from './src/protocol/checksum.js';
28
+
29
+ // Replication & Delivery
30
+ export { ReplicationPipeline, BatchReceipt } from './src/replication/pipeline.js';
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "raptiye",
3
+ "version": "0.1.0",
4
+ "description": "High-performance, byte-first replicated-log and consensus core for JavaScript/Node.js",
5
+ "type": "module",
6
+ "main": "index.js",
7
+ "scripts": {
8
+ "test": "node --test test/**/*.test.js",
9
+ "bench": "node bench/run-all.js"
10
+ },
11
+ "keywords": [
12
+ "raft",
13
+ "consensus",
14
+ "replicated-log",
15
+ "distributed-systems",
16
+ "high-performance",
17
+ "zero-copy",
18
+ "deterministic"
19
+ ],
20
+ "author": "",
21
+ "license": "Apache-2.0",
22
+ "dependencies": {},
23
+ "devDependencies": {}
24
+ }