@ninebix/nmt-system 1.0.2 → 1.0.3
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 +288 -213
- package/dashboard-lite/index.html +1083 -762
- package/dist/bin/nmt.js +171 -40
- package/dist/bin/nmt.js.map +1 -1
- package/dist/src/api/cli-server.d.ts.map +1 -1
- package/dist/src/api/cli-server.js +156 -0
- package/dist/src/api/cli-server.js.map +1 -1
- package/dist/src/core/attractor-model.d.ts +5 -2
- package/dist/src/core/attractor-model.d.ts.map +1 -1
- package/dist/src/core/attractor-model.js +7 -4
- package/dist/src/core/attractor-model.js.map +1 -1
- package/dist/src/core/neuron-graph.d.ts.map +1 -1
- package/dist/src/core/neuron-graph.js +41 -7
- package/dist/src/core/neuron-graph.js.map +1 -1
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +168 -34
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/services/four-stage-learning.d.ts +19 -0
- package/dist/src/services/four-stage-learning.d.ts.map +1 -1
- package/dist/src/services/four-stage-learning.js +113 -17
- package/dist/src/services/four-stage-learning.js.map +1 -1
- package/dist/src/storage/neuron-store.d.ts +2 -0
- package/dist/src/storage/neuron-store.d.ts.map +1 -1
- package/dist/src/storage/neuron-store.js +22 -14
- package/dist/src/storage/neuron-store.js.map +1 -1
- package/package.json +1 -1
- package/dist/api/cli-server.d.ts +0 -83
- package/dist/api/cli-server.d.ts.map +0 -1
- package/dist/api/cli-server.js +0 -597
- package/dist/api/cli-server.js.map +0 -1
- package/dist/api/index.d.ts +0 -6
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js +0 -6
- package/dist/api/index.js.map +0 -1
- package/dist/api/middleware/index.d.ts +0 -12
- package/dist/api/middleware/index.d.ts.map +0 -1
- package/dist/api/middleware/index.js +0 -13
- package/dist/api/middleware/index.js.map +0 -1
- package/dist/api/middleware/logger.d.ts +0 -21
- package/dist/api/middleware/logger.d.ts.map +0 -1
- package/dist/api/middleware/logger.js +0 -134
- package/dist/api/middleware/logger.js.map +0 -1
- package/dist/api/middleware/rate-limit.d.ts +0 -26
- package/dist/api/middleware/rate-limit.d.ts.map +0 -1
- package/dist/api/middleware/rate-limit.js +0 -107
- package/dist/api/middleware/rate-limit.js.map +0 -1
- package/dist/api/middleware/response.d.ts +0 -61
- package/dist/api/middleware/response.d.ts.map +0 -1
- package/dist/api/middleware/response.js +0 -86
- package/dist/api/middleware/response.js.map +0 -1
- package/dist/api/middleware/validation.d.ts +0 -43
- package/dist/api/middleware/validation.d.ts.map +0 -1
- package/dist/api/middleware/validation.js +0 -257
- package/dist/api/middleware/validation.js.map +0 -1
- package/dist/api/server.d.ts +0 -79
- package/dist/api/server.d.ts.map +0 -1
- package/dist/api/server.js +0 -2011
- package/dist/api/server.js.map +0 -1
- package/dist/cli/commands/attractor.d.ts +0 -6
- package/dist/cli/commands/attractor.d.ts.map +0 -1
- package/dist/cli/commands/attractor.js +0 -167
- package/dist/cli/commands/attractor.js.map +0 -1
- package/dist/cli/commands/dimension.d.ts +0 -6
- package/dist/cli/commands/dimension.d.ts.map +0 -1
- package/dist/cli/commands/dimension.js +0 -85
- package/dist/cli/commands/dimension.js.map +0 -1
- package/dist/cli/commands/index.d.ts +0 -11
- package/dist/cli/commands/index.d.ts.map +0 -1
- package/dist/cli/commands/index.js +0 -11
- package/dist/cli/commands/index.js.map +0 -1
- package/dist/cli/commands/infer.d.ts +0 -6
- package/dist/cli/commands/infer.d.ts.map +0 -1
- package/dist/cli/commands/infer.js +0 -139
- package/dist/cli/commands/infer.js.map +0 -1
- package/dist/cli/commands/learn.d.ts +0 -6
- package/dist/cli/commands/learn.d.ts.map +0 -1
- package/dist/cli/commands/learn.js +0 -87
- package/dist/cli/commands/learn.js.map +0 -1
- package/dist/cli/commands/orchestrate.d.ts +0 -6
- package/dist/cli/commands/orchestrate.d.ts.map +0 -1
- package/dist/cli/commands/orchestrate.js +0 -279
- package/dist/cli/commands/orchestrate.js.map +0 -1
- package/dist/cli/commands/prob.d.ts +0 -6
- package/dist/cli/commands/prob.d.ts.map +0 -1
- package/dist/cli/commands/prob.js +0 -256
- package/dist/cli/commands/prob.js.map +0 -1
- package/dist/cli/commands/quantum.d.ts +0 -6
- package/dist/cli/commands/quantum.d.ts.map +0 -1
- package/dist/cli/commands/quantum.js +0 -150
- package/dist/cli/commands/quantum.js.map +0 -1
- package/dist/cli/commands/sync.d.ts +0 -65
- package/dist/cli/commands/sync.d.ts.map +0 -1
- package/dist/cli/commands/sync.js +0 -338
- package/dist/cli/commands/sync.js.map +0 -1
- package/dist/cli/index.d.ts +0 -9
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -9
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/probabilistic-commands.d.ts +0 -39
- package/dist/cli/probabilistic-commands.d.ts.map +0 -1
- package/dist/cli/probabilistic-commands.js +0 -112
- package/dist/cli/probabilistic-commands.js.map +0 -1
- package/dist/cli/types.d.ts +0 -69
- package/dist/cli/types.d.ts.map +0 -1
- package/dist/cli/types.js +0 -5
- package/dist/cli/types.js.map +0 -1
- package/dist/cli/utils/formatters.d.ts +0 -51
- package/dist/cli/utils/formatters.d.ts.map +0 -1
- package/dist/cli/utils/formatters.js +0 -79
- package/dist/cli/utils/formatters.js.map +0 -1
- package/dist/cli/utils/helpers.d.ts +0 -21
- package/dist/cli/utils/helpers.d.ts.map +0 -1
- package/dist/cli/utils/helpers.js +0 -51
- package/dist/cli/utils/helpers.js.map +0 -1
- package/dist/cli/utils/index.d.ts +0 -7
- package/dist/cli/utils/index.d.ts.map +0 -1
- package/dist/cli/utils/index.js +0 -13
- package/dist/cli/utils/index.js.map +0 -1
- package/dist/cli/utils/validators.d.ts +0 -162
- package/dist/cli/utils/validators.d.ts.map +0 -1
- package/dist/cli/utils/validators.js +0 -351
- package/dist/cli/utils/validators.js.map +0 -1
- package/dist/core/advanced-embedding.d.ts +0 -154
- package/dist/core/advanced-embedding.d.ts.map +0 -1
- package/dist/core/advanced-embedding.js +0 -367
- package/dist/core/advanced-embedding.js.map +0 -1
- package/dist/core/attractor-model.d.ts +0 -381
- package/dist/core/attractor-model.d.ts.map +0 -1
- package/dist/core/attractor-model.js +0 -821
- package/dist/core/attractor-model.js.map +0 -1
- package/dist/core/bidirectional-inference.d.ts +0 -143
- package/dist/core/bidirectional-inference.d.ts.map +0 -1
- package/dist/core/bidirectional-inference.js +0 -501
- package/dist/core/bidirectional-inference.js.map +0 -1
- package/dist/core/chunk-engine.d.ts +0 -78
- package/dist/core/chunk-engine.d.ts.map +0 -1
- package/dist/core/chunk-engine.js +0 -192
- package/dist/core/chunk-engine.js.map +0 -1
- package/dist/core/dynamic-embedding.d.ts +0 -327
- package/dist/core/dynamic-embedding.d.ts.map +0 -1
- package/dist/core/dynamic-embedding.js +0 -527
- package/dist/core/dynamic-embedding.js.map +0 -1
- package/dist/core/embedding-similarity.d.ts +0 -68
- package/dist/core/embedding-similarity.d.ts.map +0 -1
- package/dist/core/embedding-similarity.js +0 -291
- package/dist/core/embedding-similarity.js.map +0 -1
- package/dist/core/evolution-scheduler.d.ts +0 -101
- package/dist/core/evolution-scheduler.d.ts.map +0 -1
- package/dist/core/evolution-scheduler.js +0 -235
- package/dist/core/evolution-scheduler.js.map +0 -1
- package/dist/core/hierarchical-chunker.d.ts +0 -108
- package/dist/core/hierarchical-chunker.d.ts.map +0 -1
- package/dist/core/hierarchical-chunker.js +0 -296
- package/dist/core/hierarchical-chunker.js.map +0 -1
- package/dist/core/hnsw-index.d.ts +0 -111
- package/dist/core/hnsw-index.d.ts.map +0 -1
- package/dist/core/hnsw-index.js +0 -466
- package/dist/core/hnsw-index.js.map +0 -1
- package/dist/core/index.d.ts +0 -23
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -25
- package/dist/core/index.js.map +0 -1
- package/dist/core/language-analyzers.d.ts +0 -124
- package/dist/core/language-analyzers.d.ts.map +0 -1
- package/dist/core/language-analyzers.js +0 -365
- package/dist/core/language-analyzers.js.map +0 -1
- package/dist/core/local-embedding.d.ts +0 -109
- package/dist/core/local-embedding.d.ts.map +0 -1
- package/dist/core/local-embedding.js +0 -222
- package/dist/core/local-embedding.js.map +0 -1
- package/dist/core/merkle-engine.d.ts +0 -263
- package/dist/core/merkle-engine.d.ts.map +0 -1
- package/dist/core/merkle-engine.js +0 -528
- package/dist/core/merkle-engine.js.map +0 -1
- package/dist/core/multi-layer-reasoning.d.ts +0 -178
- package/dist/core/multi-layer-reasoning.d.ts.map +0 -1
- package/dist/core/multi-layer-reasoning.js +0 -607
- package/dist/core/multi-layer-reasoning.js.map +0 -1
- package/dist/core/neuron-graph.d.ts +0 -134
- package/dist/core/neuron-graph.d.ts.map +0 -1
- package/dist/core/neuron-graph.js +0 -436
- package/dist/core/neuron-graph.js.map +0 -1
- package/dist/core/probabilistic-neuron.d.ts +0 -251
- package/dist/core/probabilistic-neuron.d.ts.map +0 -1
- package/dist/core/probabilistic-neuron.js +0 -618
- package/dist/core/probabilistic-neuron.js.map +0 -1
- package/dist/core/probabilistic-orchestrator.d.ts +0 -408
- package/dist/core/probabilistic-orchestrator.d.ts.map +0 -1
- package/dist/core/probabilistic-orchestrator.js +0 -798
- package/dist/core/probabilistic-orchestrator.js.map +0 -1
- package/dist/core/semantic-chunker.d.ts +0 -117
- package/dist/core/semantic-chunker.d.ts.map +0 -1
- package/dist/core/semantic-chunker.js +0 -464
- package/dist/core/semantic-chunker.js.map +0 -1
- package/dist/events/event-bus.d.ts +0 -166
- package/dist/events/event-bus.d.ts.map +0 -1
- package/dist/events/event-bus.js +0 -228
- package/dist/events/event-bus.js.map +0 -1
- package/dist/events/index.d.ts +0 -7
- package/dist/events/index.d.ts.map +0 -1
- package/dist/events/index.js +0 -7
- package/dist/events/index.js.map +0 -1
- package/dist/events/progress-tracker.d.ts +0 -150
- package/dist/events/progress-tracker.d.ts.map +0 -1
- package/dist/events/progress-tracker.js +0 -290
- package/dist/events/progress-tracker.js.map +0 -1
- package/dist/extensions/clustering/community-detection.d.ts +0 -90
- package/dist/extensions/clustering/community-detection.d.ts.map +0 -1
- package/dist/extensions/clustering/community-detection.js +0 -470
- package/dist/extensions/clustering/community-detection.js.map +0 -1
- package/dist/extensions/clustering/index.d.ts +0 -114
- package/dist/extensions/clustering/index.d.ts.map +0 -1
- package/dist/extensions/clustering/index.js +0 -468
- package/dist/extensions/clustering/index.js.map +0 -1
- package/dist/extensions/clustering/topic-modeling.d.ts +0 -86
- package/dist/extensions/clustering/topic-modeling.d.ts.map +0 -1
- package/dist/extensions/clustering/topic-modeling.js +0 -355
- package/dist/extensions/clustering/topic-modeling.js.map +0 -1
- package/dist/extensions/distributed/coordinator.d.ts +0 -114
- package/dist/extensions/distributed/coordinator.d.ts.map +0 -1
- package/dist/extensions/distributed/coordinator.js +0 -319
- package/dist/extensions/distributed/coordinator.js.map +0 -1
- package/dist/extensions/distributed/index.d.ts +0 -10
- package/dist/extensions/distributed/index.d.ts.map +0 -1
- package/dist/extensions/distributed/index.js +0 -10
- package/dist/extensions/distributed/index.js.map +0 -1
- package/dist/extensions/distributed/queue.d.ts +0 -157
- package/dist/extensions/distributed/queue.d.ts.map +0 -1
- package/dist/extensions/distributed/queue.js +0 -326
- package/dist/extensions/distributed/queue.js.map +0 -1
- package/dist/extensions/distributed/scheduler.d.ts +0 -107
- package/dist/extensions/distributed/scheduler.d.ts.map +0 -1
- package/dist/extensions/distributed/scheduler.js +0 -301
- package/dist/extensions/distributed/scheduler.js.map +0 -1
- package/dist/extensions/distributed/worker.d.ts +0 -112
- package/dist/extensions/distributed/worker.d.ts.map +0 -1
- package/dist/extensions/distributed/worker.js +0 -260
- package/dist/extensions/distributed/worker.js.map +0 -1
- package/dist/index.d.ts +0 -14
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -20
- package/dist/index.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -43
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js +0 -494
- package/dist/mcp/server.js.map +0 -1
- package/dist/services/adaptive-fallback.d.ts +0 -140
- package/dist/services/adaptive-fallback.d.ts.map +0 -1
- package/dist/services/adaptive-fallback.js +0 -273
- package/dist/services/adaptive-fallback.js.map +0 -1
- package/dist/services/answer-gate.d.ts +0 -112
- package/dist/services/answer-gate.d.ts.map +0 -1
- package/dist/services/answer-gate.js +0 -299
- package/dist/services/answer-gate.js.map +0 -1
- package/dist/services/auto-learning.d.ts +0 -135
- package/dist/services/auto-learning.d.ts.map +0 -1
- package/dist/services/auto-learning.js +0 -413
- package/dist/services/auto-learning.js.map +0 -1
- package/dist/services/context-compressor.d.ts +0 -77
- package/dist/services/context-compressor.d.ts.map +0 -1
- package/dist/services/context-compressor.js +0 -234
- package/dist/services/context-compressor.js.map +0 -1
- package/dist/services/efficient-rag.d.ts +0 -140
- package/dist/services/efficient-rag.d.ts.map +0 -1
- package/dist/services/efficient-rag.js +0 -311
- package/dist/services/efficient-rag.js.map +0 -1
- package/dist/services/embedding-provider.d.ts +0 -72
- package/dist/services/embedding-provider.d.ts.map +0 -1
- package/dist/services/embedding-provider.js +0 -176
- package/dist/services/embedding-provider.js.map +0 -1
- package/dist/services/file-ingestion.d.ts +0 -72
- package/dist/services/file-ingestion.d.ts.map +0 -1
- package/dist/services/file-ingestion.js +0 -237
- package/dist/services/file-ingestion.js.map +0 -1
- package/dist/services/four-stage-learning.d.ts +0 -552
- package/dist/services/four-stage-learning.d.ts.map +0 -1
- package/dist/services/four-stage-learning.js +0 -1110
- package/dist/services/four-stage-learning.js.map +0 -1
- package/dist/services/graph.d.ts +0 -94
- package/dist/services/graph.d.ts.map +0 -1
- package/dist/services/graph.js +0 -292
- package/dist/services/graph.js.map +0 -1
- package/dist/services/index.d.ts +0 -15
- package/dist/services/index.d.ts.map +0 -1
- package/dist/services/index.js +0 -18
- package/dist/services/index.js.map +0 -1
- package/dist/services/ingestion.d.ts +0 -98
- package/dist/services/ingestion.d.ts.map +0 -1
- package/dist/services/ingestion.js +0 -259
- package/dist/services/ingestion.js.map +0 -1
- package/dist/services/learning.d.ts +0 -67
- package/dist/services/learning.d.ts.map +0 -1
- package/dist/services/learning.js +0 -262
- package/dist/services/learning.js.map +0 -1
- package/dist/services/llm-router.d.ts +0 -143
- package/dist/services/llm-router.d.ts.map +0 -1
- package/dist/services/llm-router.js +0 -284
- package/dist/services/llm-router.js.map +0 -1
- package/dist/services/llm.d.ts +0 -86
- package/dist/services/llm.d.ts.map +0 -1
- package/dist/services/llm.js +0 -283
- package/dist/services/llm.js.map +0 -1
- package/dist/services/metrics-dashboard.d.ts +0 -262
- package/dist/services/metrics-dashboard.d.ts.map +0 -1
- package/dist/services/metrics-dashboard.js +0 -417
- package/dist/services/metrics-dashboard.js.map +0 -1
- package/dist/services/neuron-lifecycle.d.ts +0 -137
- package/dist/services/neuron-lifecycle.d.ts.map +0 -1
- package/dist/services/neuron-lifecycle.js +0 -422
- package/dist/services/neuron-lifecycle.js.map +0 -1
- package/dist/services/nmt-pipeline.d.ts +0 -219
- package/dist/services/nmt-pipeline.d.ts.map +0 -1
- package/dist/services/nmt-pipeline.js +0 -449
- package/dist/services/nmt-pipeline.js.map +0 -1
- package/dist/services/query-cache.d.ts +0 -136
- package/dist/services/query-cache.d.ts.map +0 -1
- package/dist/services/query-cache.js +0 -255
- package/dist/services/query-cache.js.map +0 -1
- package/dist/services/query-normalize.d.ts +0 -107
- package/dist/services/query-normalize.d.ts.map +0 -1
- package/dist/services/query-normalize.js +0 -366
- package/dist/services/query-normalize.js.map +0 -1
- package/dist/services/query.d.ts +0 -102
- package/dist/services/query.d.ts.map +0 -1
- package/dist/services/query.js +0 -227
- package/dist/services/query.js.map +0 -1
- package/dist/services/text-embedding.d.ts +0 -183
- package/dist/services/text-embedding.d.ts.map +0 -1
- package/dist/services/text-embedding.js +0 -633
- package/dist/services/text-embedding.js.map +0 -1
- package/dist/services/verification-gate.d.ts +0 -147
- package/dist/services/verification-gate.d.ts.map +0 -1
- package/dist/services/verification-gate.js +0 -344
- package/dist/services/verification-gate.js.map +0 -1
- package/dist/services/verify.d.ts +0 -114
- package/dist/services/verify.d.ts.map +0 -1
- package/dist/services/verify.js +0 -237
- package/dist/services/verify.js.map +0 -1
- package/dist/services/web-search.d.ts +0 -145
- package/dist/services/web-search.d.ts.map +0 -1
- package/dist/services/web-search.js +0 -534
- package/dist/services/web-search.js.map +0 -1
- package/dist/storage/chunk-store.d.ts +0 -107
- package/dist/storage/chunk-store.d.ts.map +0 -1
- package/dist/storage/chunk-store.js +0 -293
- package/dist/storage/chunk-store.js.map +0 -1
- package/dist/storage/hybrid-adapters.d.ts +0 -111
- package/dist/storage/hybrid-adapters.d.ts.map +0 -1
- package/dist/storage/hybrid-adapters.js +0 -223
- package/dist/storage/hybrid-adapters.js.map +0 -1
- package/dist/storage/hybrid-store.d.ts +0 -125
- package/dist/storage/hybrid-store.d.ts.map +0 -1
- package/dist/storage/hybrid-store.js +0 -655
- package/dist/storage/hybrid-store.js.map +0 -1
- package/dist/storage/index-store.d.ts +0 -126
- package/dist/storage/index-store.d.ts.map +0 -1
- package/dist/storage/index-store.js +0 -316
- package/dist/storage/index-store.js.map +0 -1
- package/dist/storage/index.d.ts +0 -45
- package/dist/storage/index.d.ts.map +0 -1
- package/dist/storage/index.js +0 -52
- package/dist/storage/index.js.map +0 -1
- package/dist/storage/neuron-store.d.ts +0 -121
- package/dist/storage/neuron-store.d.ts.map +0 -1
- package/dist/storage/neuron-store.js +0 -466
- package/dist/storage/neuron-store.js.map +0 -1
- package/dist/storage/ontology-store.d.ts +0 -132
- package/dist/storage/ontology-store.d.ts.map +0 -1
- package/dist/storage/ontology-store.js +0 -319
- package/dist/storage/ontology-store.js.map +0 -1
- package/dist/storage/probabilistic-store.d.ts +0 -104
- package/dist/storage/probabilistic-store.d.ts.map +0 -1
- package/dist/storage/probabilistic-store.js +0 -257
- package/dist/storage/probabilistic-store.js.map +0 -1
- package/dist/storage/redis-adapters.d.ts +0 -102
- package/dist/storage/redis-adapters.d.ts.map +0 -1
- package/dist/storage/redis-adapters.js +0 -205
- package/dist/storage/redis-adapters.js.map +0 -1
- package/dist/storage/redis-ontology-store.d.ts +0 -146
- package/dist/storage/redis-ontology-store.d.ts.map +0 -1
- package/dist/storage/redis-ontology-store.js +0 -384
- package/dist/storage/redis-ontology-store.js.map +0 -1
- package/dist/storage/redis-store.d.ts +0 -174
- package/dist/storage/redis-store.d.ts.map +0 -1
- package/dist/storage/redis-store.js +0 -506
- package/dist/storage/redis-store.js.map +0 -1
- package/dist/sync/change-journal.d.ts +0 -171
- package/dist/sync/change-journal.d.ts.map +0 -1
- package/dist/sync/change-journal.js +0 -362
- package/dist/sync/change-journal.js.map +0 -1
- package/dist/sync/index.d.ts +0 -8
- package/dist/sync/index.d.ts.map +0 -1
- package/dist/sync/index.js +0 -8
- package/dist/sync/index.js.map +0 -1
- package/dist/sync/state-sync.d.ts +0 -241
- package/dist/sync/state-sync.d.ts.map +0 -1
- package/dist/sync/state-sync.js +0 -396
- package/dist/sync/state-sync.js.map +0 -1
- package/dist/sync/vector-clock.d.ts +0 -144
- package/dist/sync/vector-clock.d.ts.map +0 -1
- package/dist/sync/vector-clock.js +0 -266
- package/dist/sync/vector-clock.js.map +0 -1
- package/dist/types/index.d.ts +0 -224
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -24
- package/dist/types/index.js.map +0 -1
- package/dist/utils/hash.d.ts +0 -39
- package/dist/utils/hash.d.ts.map +0 -1
- package/dist/utils/hash.js +0 -56
- package/dist/utils/hash.js.map +0 -1
- package/dist/utils/index.d.ts +0 -26
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -50
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -88
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -157
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/metrics.d.ts +0 -232
- package/dist/utils/metrics.d.ts.map +0 -1
- package/dist/utils/metrics.js +0 -387
- package/dist/utils/metrics.js.map +0 -1
- package/dist/utils/similarity.d.ts +0 -64
- package/dist/utils/similarity.d.ts.map +0 -1
- package/dist/utils/similarity.js +0 -151
- package/dist/utils/similarity.js.map +0 -1
- package/dist/utils/uuid.d.ts +0 -23
- package/dist/utils/uuid.d.ts.map +0 -1
- package/dist/utils/uuid.js +0 -29
- package/dist/utils/uuid.js.map +0 -1
|
@@ -1,528 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Merkle Engine - Tree construction and verification
|
|
3
|
-
*
|
|
4
|
-
* Extended features:
|
|
5
|
-
* - Tree diff computation
|
|
6
|
-
* - Batch proofs for multiple leaves
|
|
7
|
-
* - Range proofs for consecutive leaves
|
|
8
|
-
* - Versioned trees
|
|
9
|
-
*
|
|
10
|
-
* @module core/merkle-engine
|
|
11
|
-
*/
|
|
12
|
-
import { hash, hashPair } from '../utils/hash.js';
|
|
13
|
-
/**
|
|
14
|
-
* MerkleEngine class for tree operations
|
|
15
|
-
*/
|
|
16
|
-
export class MerkleEngine {
|
|
17
|
-
/**
|
|
18
|
-
* Build a Merkle tree from leaf hashes
|
|
19
|
-
* @param leaves - Array of leaf hashes
|
|
20
|
-
* @returns Complete Merkle tree structure
|
|
21
|
-
*/
|
|
22
|
-
buildTree(leaves) {
|
|
23
|
-
if (leaves.length === 0) {
|
|
24
|
-
throw new Error('Cannot build Merkle tree from empty leaves');
|
|
25
|
-
}
|
|
26
|
-
const originalLeaves = [...leaves];
|
|
27
|
-
// Pad to power of 2 by duplicating last leaf
|
|
28
|
-
const paddedLeaves = [...leaves];
|
|
29
|
-
while (!this.isPowerOfTwo(paddedLeaves.length)) {
|
|
30
|
-
paddedLeaves.push(paddedLeaves[paddedLeaves.length - 1]);
|
|
31
|
-
}
|
|
32
|
-
// Build levels from bottom to top
|
|
33
|
-
const levels = [paddedLeaves];
|
|
34
|
-
let currentLevel = paddedLeaves;
|
|
35
|
-
while (currentLevel.length > 1) {
|
|
36
|
-
const nextLevel = [];
|
|
37
|
-
for (let i = 0; i < currentLevel.length; i += 2) {
|
|
38
|
-
const left = currentLevel[i];
|
|
39
|
-
const right = currentLevel[i + 1];
|
|
40
|
-
const parent = hashPair(left, right);
|
|
41
|
-
nextLevel.push(parent);
|
|
42
|
-
}
|
|
43
|
-
levels.push(nextLevel);
|
|
44
|
-
currentLevel = nextLevel;
|
|
45
|
-
}
|
|
46
|
-
return {
|
|
47
|
-
root: currentLevel[0],
|
|
48
|
-
levels,
|
|
49
|
-
leafCount: originalLeaves.length,
|
|
50
|
-
originalLeaves
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Build Merkle tree from raw data buffers
|
|
55
|
-
* @param data - Array of data buffers
|
|
56
|
-
* @returns Merkle tree with hashed leaves
|
|
57
|
-
*/
|
|
58
|
-
buildTreeFromData(data) {
|
|
59
|
-
const leaves = data.map(d => hash(d));
|
|
60
|
-
return this.buildTree(leaves);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Generate inclusion proof for a leaf
|
|
64
|
-
* @param tree - Merkle tree
|
|
65
|
-
* @param leafIndex - Index of leaf to prove
|
|
66
|
-
* @returns Merkle proof
|
|
67
|
-
*/
|
|
68
|
-
generateProof(tree, leafIndex) {
|
|
69
|
-
if (leafIndex < 0 || leafIndex >= tree.leafCount) {
|
|
70
|
-
throw new Error(`Invalid leaf index: ${leafIndex}`);
|
|
71
|
-
}
|
|
72
|
-
const siblings = [];
|
|
73
|
-
const directions = [];
|
|
74
|
-
// Handle padding - if index is beyond padded leaves, use last leaf
|
|
75
|
-
let currentIndex = Math.min(leafIndex, tree.levels[0].length - 1);
|
|
76
|
-
// Traverse from leaf to root
|
|
77
|
-
for (let level = 0; level < tree.levels.length - 1; level++) {
|
|
78
|
-
const currentLevel = tree.levels[level];
|
|
79
|
-
const isLeft = currentIndex % 2 === 0;
|
|
80
|
-
const siblingIndex = isLeft ? currentIndex + 1 : currentIndex - 1;
|
|
81
|
-
// Ensure sibling exists
|
|
82
|
-
if (siblingIndex >= 0 && siblingIndex < currentLevel.length) {
|
|
83
|
-
siblings.push(currentLevel[siblingIndex]);
|
|
84
|
-
directions.push(isLeft);
|
|
85
|
-
}
|
|
86
|
-
// Move to parent index
|
|
87
|
-
currentIndex = Math.floor(currentIndex / 2);
|
|
88
|
-
}
|
|
89
|
-
return {
|
|
90
|
-
leaf: tree.levels[0][Math.min(leafIndex, tree.levels[0].length - 1)],
|
|
91
|
-
leafIndex,
|
|
92
|
-
siblings,
|
|
93
|
-
directions,
|
|
94
|
-
root: tree.root
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Verify a Merkle proof
|
|
99
|
-
* @param proof - Proof to verify
|
|
100
|
-
* @returns true if proof is valid
|
|
101
|
-
*/
|
|
102
|
-
verifyProof(proof) {
|
|
103
|
-
let currentHash = proof.leaf;
|
|
104
|
-
for (let i = 0; i < proof.siblings.length; i++) {
|
|
105
|
-
const sibling = proof.siblings[i];
|
|
106
|
-
const isLeft = proof.directions[i];
|
|
107
|
-
if (isLeft) {
|
|
108
|
-
currentHash = hashPair(currentHash, sibling);
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
currentHash = hashPair(sibling, currentHash);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
return currentHash === proof.root;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Verify proof with explicit root and leaf
|
|
118
|
-
* @param proof - Proof structure
|
|
119
|
-
* @param root - Expected root hash
|
|
120
|
-
* @param leaf - Expected leaf hash
|
|
121
|
-
* @returns true if valid
|
|
122
|
-
*/
|
|
123
|
-
verifyProofWithValues(proof, root, leaf) {
|
|
124
|
-
return proof.root === root && proof.leaf === leaf && this.verifyProof(proof);
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Compute the root hash directly from leaves
|
|
128
|
-
* @param leaves - Leaf hashes
|
|
129
|
-
* @returns Root hash
|
|
130
|
-
*/
|
|
131
|
-
computeRoot(leaves) {
|
|
132
|
-
return this.buildTree(leaves).root;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Update a leaf in the tree (returns new tree)
|
|
136
|
-
* @param tree - Original tree
|
|
137
|
-
* @param index - Leaf index to update
|
|
138
|
-
* @param newLeaf - New leaf hash
|
|
139
|
-
* @returns Updated tree
|
|
140
|
-
*/
|
|
141
|
-
updateLeaf(tree, index, newLeaf) {
|
|
142
|
-
if (index < 0 || index >= tree.leafCount) {
|
|
143
|
-
throw new Error(`Invalid leaf index: ${index}`);
|
|
144
|
-
}
|
|
145
|
-
// Create new original leaves array
|
|
146
|
-
const newOriginalLeaves = [...tree.originalLeaves];
|
|
147
|
-
newOriginalLeaves[index] = newLeaf;
|
|
148
|
-
// Rebuild tree with new leaves
|
|
149
|
-
return this.buildTree(newOriginalLeaves);
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Add a new leaf to the tree
|
|
153
|
-
* @param tree - Original tree
|
|
154
|
-
* @param newLeaf - New leaf hash
|
|
155
|
-
* @returns Updated tree
|
|
156
|
-
*/
|
|
157
|
-
addLeaf(tree, newLeaf) {
|
|
158
|
-
const newLeaves = [...tree.originalLeaves, newLeaf];
|
|
159
|
-
return this.buildTree(newLeaves);
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Get the height of the tree
|
|
163
|
-
* @param tree - Merkle tree
|
|
164
|
-
* @returns Tree height (number of levels)
|
|
165
|
-
*/
|
|
166
|
-
getHeight(tree) {
|
|
167
|
-
return tree.levels.length;
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Get all nodes at a specific level
|
|
171
|
-
* @param tree - Merkle tree
|
|
172
|
-
* @param level - Level index (0 = leaves)
|
|
173
|
-
* @returns Array of hashes at that level
|
|
174
|
-
*/
|
|
175
|
-
getLevel(tree, level) {
|
|
176
|
-
if (level < 0 || level >= tree.levels.length) {
|
|
177
|
-
throw new Error(`Invalid level: ${level}`);
|
|
178
|
-
}
|
|
179
|
-
return [...tree.levels[level]];
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Serialize tree to JSON-friendly format
|
|
183
|
-
*/
|
|
184
|
-
serialize(tree) {
|
|
185
|
-
return {
|
|
186
|
-
root: tree.root,
|
|
187
|
-
levels: tree.levels,
|
|
188
|
-
leafCount: tree.leafCount,
|
|
189
|
-
originalLeaves: tree.originalLeaves
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Deserialize tree from JSON
|
|
194
|
-
*/
|
|
195
|
-
deserialize(data) {
|
|
196
|
-
return {
|
|
197
|
-
root: data.root,
|
|
198
|
-
levels: data.levels,
|
|
199
|
-
leafCount: data.leafCount,
|
|
200
|
-
originalLeaves: data.originalLeaves
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
// ==================== EXTENDED FEATURES ====================
|
|
204
|
-
/**
|
|
205
|
-
* Compute the difference between two Merkle trees
|
|
206
|
-
*
|
|
207
|
-
* @param oldTree - Original tree
|
|
208
|
-
* @param newTree - Updated tree
|
|
209
|
-
* @returns TreeDiff with added, removed, and modified leaves
|
|
210
|
-
*
|
|
211
|
-
* @example
|
|
212
|
-
* ```typescript
|
|
213
|
-
* const tree1 = engine.buildTree(['a', 'b', 'c']);
|
|
214
|
-
* const tree2 = engine.buildTree(['a', 'b', 'd']);
|
|
215
|
-
* const diff = engine.computeDiff(tree1, tree2);
|
|
216
|
-
* // diff.modified = [{ index: 2, oldHash: 'c', newHash: 'd' }]
|
|
217
|
-
* ```
|
|
218
|
-
*/
|
|
219
|
-
computeDiff(oldTree, newTree) {
|
|
220
|
-
const added = [];
|
|
221
|
-
const removed = [];
|
|
222
|
-
const modified = [];
|
|
223
|
-
const oldLeaves = oldTree.originalLeaves;
|
|
224
|
-
const newLeaves = newTree.originalLeaves;
|
|
225
|
-
// Find modified and removed
|
|
226
|
-
for (let i = 0; i < oldLeaves.length; i++) {
|
|
227
|
-
if (i < newLeaves.length) {
|
|
228
|
-
if (oldLeaves[i] !== newLeaves[i]) {
|
|
229
|
-
modified.push({
|
|
230
|
-
index: i,
|
|
231
|
-
oldHash: oldLeaves[i],
|
|
232
|
-
newHash: newLeaves[i],
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
else {
|
|
237
|
-
removed.push(oldLeaves[i]);
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
// Find added
|
|
241
|
-
for (let i = oldLeaves.length; i < newLeaves.length; i++) {
|
|
242
|
-
added.push(newLeaves[i]);
|
|
243
|
-
}
|
|
244
|
-
return {
|
|
245
|
-
added,
|
|
246
|
-
removed,
|
|
247
|
-
modified,
|
|
248
|
-
oldRoot: oldTree.root,
|
|
249
|
-
newRoot: newTree.root,
|
|
250
|
-
};
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* Check if two trees have the same content
|
|
254
|
-
*/
|
|
255
|
-
treesEqual(tree1, tree2) {
|
|
256
|
-
return tree1.root === tree2.root;
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Generate a batch proof for multiple leaves at once
|
|
260
|
-
*
|
|
261
|
-
* More efficient than generating individual proofs as siblings are deduplicated.
|
|
262
|
-
*
|
|
263
|
-
* @param tree - Merkle tree
|
|
264
|
-
* @param indices - Array of leaf indices to prove
|
|
265
|
-
* @returns BatchMerkleProof with deduplicated siblings
|
|
266
|
-
*
|
|
267
|
-
* @example
|
|
268
|
-
* ```typescript
|
|
269
|
-
* const batchProof = engine.generateBatchProof(tree, [0, 2, 5]);
|
|
270
|
-
* const valid = engine.verifyBatchProof(batchProof);
|
|
271
|
-
* ```
|
|
272
|
-
*/
|
|
273
|
-
generateBatchProof(tree, indices) {
|
|
274
|
-
if (indices.length === 0) {
|
|
275
|
-
throw new Error('Cannot generate batch proof for empty indices');
|
|
276
|
-
}
|
|
277
|
-
// Validate indices
|
|
278
|
-
for (const index of indices) {
|
|
279
|
-
if (index < 0 || index >= tree.leafCount) {
|
|
280
|
-
throw new Error(`Invalid leaf index: ${index}`);
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
const leaves = [];
|
|
284
|
-
const siblings = {};
|
|
285
|
-
// Collect leaves
|
|
286
|
-
for (const index of indices) {
|
|
287
|
-
const actualIndex = Math.min(index, tree.levels[0].length - 1);
|
|
288
|
-
leaves.push({
|
|
289
|
-
index,
|
|
290
|
-
hash: tree.levels[0][actualIndex],
|
|
291
|
-
});
|
|
292
|
-
}
|
|
293
|
-
// For each level, track which nodes we need vs which we can compute
|
|
294
|
-
const nodesNeeded = new Set();
|
|
295
|
-
// Mark all leaf nodes we have
|
|
296
|
-
for (const index of indices) {
|
|
297
|
-
const actualIndex = Math.min(index, tree.levels[0].length - 1);
|
|
298
|
-
nodesNeeded.add(`0:${actualIndex}`);
|
|
299
|
-
}
|
|
300
|
-
// Traverse up the tree to find all needed siblings
|
|
301
|
-
for (let level = 0; level < tree.levels.length - 1; level++) {
|
|
302
|
-
const currentLevel = tree.levels[level];
|
|
303
|
-
const parentNodesNeeded = new Set();
|
|
304
|
-
// Find siblings we need for this level
|
|
305
|
-
for (const nodeKey of nodesNeeded) {
|
|
306
|
-
const [lvl, idx] = nodeKey.split(':').map(Number);
|
|
307
|
-
if (lvl !== level)
|
|
308
|
-
continue;
|
|
309
|
-
const isLeft = idx % 2 === 0;
|
|
310
|
-
const siblingIndex = isLeft ? idx + 1 : idx - 1;
|
|
311
|
-
// If sibling exists and we don't already have it, add to siblings
|
|
312
|
-
if (siblingIndex >= 0 && siblingIndex < currentLevel.length) {
|
|
313
|
-
const siblingKey = `${level}:${siblingIndex}`;
|
|
314
|
-
if (!nodesNeeded.has(siblingKey)) {
|
|
315
|
-
siblings[siblingKey] = currentLevel[siblingIndex];
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
// Mark parent as needed
|
|
319
|
-
const parentIndex = Math.floor(idx / 2);
|
|
320
|
-
parentNodesNeeded.add(`${level + 1}:${parentIndex}`);
|
|
321
|
-
}
|
|
322
|
-
// Add parent nodes to needed set
|
|
323
|
-
for (const key of parentNodesNeeded) {
|
|
324
|
-
nodesNeeded.add(key);
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
return {
|
|
328
|
-
leaves,
|
|
329
|
-
siblings,
|
|
330
|
-
root: tree.root,
|
|
331
|
-
};
|
|
332
|
-
}
|
|
333
|
-
/**
|
|
334
|
-
* Verify a batch proof
|
|
335
|
-
*
|
|
336
|
-
* @param proof - BatchMerkleProof to verify
|
|
337
|
-
* @returns true if all leaves are proven to be in the tree
|
|
338
|
-
*/
|
|
339
|
-
verifyBatchProof(proof) {
|
|
340
|
-
if (proof.leaves.length === 0) {
|
|
341
|
-
return false;
|
|
342
|
-
}
|
|
343
|
-
// Build a map of known node hashes
|
|
344
|
-
const knownNodes = new Map();
|
|
345
|
-
// Add leaves
|
|
346
|
-
for (const { index, hash } of proof.leaves) {
|
|
347
|
-
knownNodes.set(`0:${index}`, hash);
|
|
348
|
-
}
|
|
349
|
-
// Add siblings
|
|
350
|
-
for (const [key, hash] of Object.entries(proof.siblings)) {
|
|
351
|
-
knownNodes.set(key, hash);
|
|
352
|
-
}
|
|
353
|
-
// Find the maximum level we need to compute
|
|
354
|
-
const maxLevel = Math.ceil(Math.log2(Math.max(...proof.leaves.map(l => l.index + 1)))) + 1;
|
|
355
|
-
// Compute up the tree
|
|
356
|
-
for (let level = 0; level < maxLevel; level++) {
|
|
357
|
-
const indices = new Set();
|
|
358
|
-
for (const key of knownNodes.keys()) {
|
|
359
|
-
const [lvl, idx] = key.split(':').map(Number);
|
|
360
|
-
if (lvl === level) {
|
|
361
|
-
indices.add(Math.floor(idx / 2));
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
for (const parentIndex of indices) {
|
|
365
|
-
const leftKey = `${level}:${parentIndex * 2}`;
|
|
366
|
-
const rightKey = `${level}:${parentIndex * 2 + 1}`;
|
|
367
|
-
const left = knownNodes.get(leftKey);
|
|
368
|
-
const right = knownNodes.get(rightKey);
|
|
369
|
-
if (left && right) {
|
|
370
|
-
const parentHash = hashPair(left, right);
|
|
371
|
-
knownNodes.set(`${level + 1}:${parentIndex}`, parentHash);
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
// Find the root (should be at 0 index of highest level)
|
|
376
|
-
for (const [key, hash] of knownNodes.entries()) {
|
|
377
|
-
if (key.endsWith(':0') && hash === proof.root) {
|
|
378
|
-
return true;
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
return false;
|
|
382
|
-
}
|
|
383
|
-
/**
|
|
384
|
-
* Generate a range proof for consecutive leaves
|
|
385
|
-
*
|
|
386
|
-
* Useful for proving a subset of the tree without full proofs for each leaf.
|
|
387
|
-
*
|
|
388
|
-
* @param tree - Merkle tree
|
|
389
|
-
* @param startIndex - Start index (inclusive)
|
|
390
|
-
* @param endIndex - End index (exclusive)
|
|
391
|
-
* @returns RangeProof
|
|
392
|
-
*/
|
|
393
|
-
generateRangeProof(tree, startIndex, endIndex) {
|
|
394
|
-
if (startIndex < 0 || startIndex >= tree.leafCount) {
|
|
395
|
-
throw new Error(`Invalid start index: ${startIndex}`);
|
|
396
|
-
}
|
|
397
|
-
if (endIndex <= startIndex || endIndex > tree.leafCount) {
|
|
398
|
-
throw new Error(`Invalid end index: ${endIndex}`);
|
|
399
|
-
}
|
|
400
|
-
// Get leaves in range
|
|
401
|
-
const leaves = tree.originalLeaves.slice(startIndex, endIndex);
|
|
402
|
-
// Generate boundary proofs
|
|
403
|
-
const leftProof = startIndex > 0
|
|
404
|
-
? this.generateProof(tree, startIndex)
|
|
405
|
-
: null;
|
|
406
|
-
const rightProof = endIndex < tree.leafCount
|
|
407
|
-
? this.generateProof(tree, endIndex - 1)
|
|
408
|
-
: null;
|
|
409
|
-
return {
|
|
410
|
-
startIndex,
|
|
411
|
-
endIndex,
|
|
412
|
-
leaves,
|
|
413
|
-
leftProof,
|
|
414
|
-
rightProof,
|
|
415
|
-
root: tree.root,
|
|
416
|
-
};
|
|
417
|
-
}
|
|
418
|
-
/**
|
|
419
|
-
* Verify a range proof
|
|
420
|
-
*
|
|
421
|
-
* @param proof - RangeProof to verify
|
|
422
|
-
* @returns true if the range is valid
|
|
423
|
-
*/
|
|
424
|
-
verifyRangeProof(proof) {
|
|
425
|
-
// Verify boundary proofs if they exist
|
|
426
|
-
if (proof.leftProof) {
|
|
427
|
-
if (proof.leftProof.root !== proof.root) {
|
|
428
|
-
return false;
|
|
429
|
-
}
|
|
430
|
-
if (!this.verifyProof(proof.leftProof)) {
|
|
431
|
-
return false;
|
|
432
|
-
}
|
|
433
|
-
// Check that the left boundary leaf matches
|
|
434
|
-
if (proof.leftProof.leaf !== proof.leaves[0]) {
|
|
435
|
-
return false;
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
if (proof.rightProof) {
|
|
439
|
-
if (proof.rightProof.root !== proof.root) {
|
|
440
|
-
return false;
|
|
441
|
-
}
|
|
442
|
-
if (!this.verifyProof(proof.rightProof)) {
|
|
443
|
-
return false;
|
|
444
|
-
}
|
|
445
|
-
// Check that the right boundary leaf matches
|
|
446
|
-
if (proof.rightProof.leaf !== proof.leaves[proof.leaves.length - 1]) {
|
|
447
|
-
return false;
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
// Verify the range is contiguous
|
|
451
|
-
if (proof.endIndex - proof.startIndex !== proof.leaves.length) {
|
|
452
|
-
return false;
|
|
453
|
-
}
|
|
454
|
-
return true;
|
|
455
|
-
}
|
|
456
|
-
/**
|
|
457
|
-
* Create a versioned tree from an existing tree
|
|
458
|
-
*
|
|
459
|
-
* @param tree - Source tree
|
|
460
|
-
* @param parentRoot - Parent version root (null for initial)
|
|
461
|
-
* @returns VersionedMerkleTree
|
|
462
|
-
*/
|
|
463
|
-
createVersion(tree, parentRoot = null) {
|
|
464
|
-
return {
|
|
465
|
-
...tree,
|
|
466
|
-
version: parentRoot ? 1 : 0, // Version increments handled externally
|
|
467
|
-
parentRoot,
|
|
468
|
-
timestamp: new Date().toISOString(),
|
|
469
|
-
};
|
|
470
|
-
}
|
|
471
|
-
/**
|
|
472
|
-
* Create a new version from changes
|
|
473
|
-
*
|
|
474
|
-
* @param currentVersion - Current versioned tree
|
|
475
|
-
* @param newTree - New tree state
|
|
476
|
-
* @returns New VersionedMerkleTree with diff
|
|
477
|
-
*/
|
|
478
|
-
createNewVersion(currentVersion, newTree) {
|
|
479
|
-
const diff = this.computeDiff(currentVersion, newTree);
|
|
480
|
-
return {
|
|
481
|
-
...newTree,
|
|
482
|
-
version: currentVersion.version + 1,
|
|
483
|
-
parentRoot: currentVersion.root,
|
|
484
|
-
timestamp: new Date().toISOString(),
|
|
485
|
-
diff,
|
|
486
|
-
};
|
|
487
|
-
}
|
|
488
|
-
/**
|
|
489
|
-
* Serialize a versioned tree
|
|
490
|
-
*/
|
|
491
|
-
serializeVersioned(tree) {
|
|
492
|
-
return {
|
|
493
|
-
...this.serialize(tree),
|
|
494
|
-
version: tree.version,
|
|
495
|
-
parentRoot: tree.parentRoot,
|
|
496
|
-
timestamp: tree.timestamp,
|
|
497
|
-
diff: tree.diff,
|
|
498
|
-
};
|
|
499
|
-
}
|
|
500
|
-
/**
|
|
501
|
-
* Deserialize a versioned tree
|
|
502
|
-
*/
|
|
503
|
-
deserializeVersioned(data) {
|
|
504
|
-
return {
|
|
505
|
-
root: data.root,
|
|
506
|
-
levels: data.levels,
|
|
507
|
-
leafCount: data.leafCount,
|
|
508
|
-
originalLeaves: data.originalLeaves,
|
|
509
|
-
version: data.version,
|
|
510
|
-
parentRoot: data.parentRoot,
|
|
511
|
-
timestamp: data.timestamp,
|
|
512
|
-
diff: data.diff,
|
|
513
|
-
};
|
|
514
|
-
}
|
|
515
|
-
/**
|
|
516
|
-
* Check if number is power of 2
|
|
517
|
-
*/
|
|
518
|
-
isPowerOfTwo(n) {
|
|
519
|
-
return n > 0 && (n & (n - 1)) === 0;
|
|
520
|
-
}
|
|
521
|
-
}
|
|
522
|
-
/**
|
|
523
|
-
* Create a MerkleEngine instance
|
|
524
|
-
*/
|
|
525
|
-
export function createMerkleEngine() {
|
|
526
|
-
return new MerkleEngine();
|
|
527
|
-
}
|
|
528
|
-
//# sourceMappingURL=merkle-engine.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"merkle-engine.js","sourceRoot":"","sources":["../../src/core/merkle-engine.ts"],"names":[],"mappings":"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"}
|