@swal/edge-mesh 0.0.0-stage → 0.1.1
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 +128 -0
- package/NOTICE +37 -0
- package/README.md +470 -2
- package/dist/adapters/gpu-agent/index.d.ts +61 -0
- package/dist/adapters/gpu-agent/index.d.ts.map +1 -0
- package/dist/adapters/gpu-agent/index.js +364 -0
- package/dist/adapters/gpu-agent/index.js.map +1 -0
- package/dist/adapters/maloca-salud/citas-distribuidas.d.ts +19 -0
- package/dist/adapters/maloca-salud/citas-distribuidas.d.ts.map +1 -0
- package/dist/adapters/maloca-salud/citas-distribuidas.js +51 -0
- package/dist/adapters/maloca-salud/citas-distribuidas.js.map +1 -0
- package/dist/adapters/maloca-salud/eps-bridge.d.ts +15 -0
- package/dist/adapters/maloca-salud/eps-bridge.d.ts.map +1 -0
- package/dist/adapters/maloca-salud/eps-bridge.js +27 -0
- package/dist/adapters/maloca-salud/eps-bridge.js.map +1 -0
- package/dist/adapters/maloca-salud/patient-profile.d.ts +20 -0
- package/dist/adapters/maloca-salud/patient-profile.d.ts.map +1 -0
- package/dist/adapters/maloca-salud/patient-profile.js +36 -0
- package/dist/adapters/maloca-salud/patient-profile.js.map +1 -0
- package/dist/adapters/maloca-salud/types.d.ts +40 -0
- package/dist/adapters/maloca-salud/types.d.ts.map +1 -0
- package/dist/adapters/maloca-salud/types.js +2 -0
- package/dist/adapters/maloca-salud/types.js.map +1 -0
- package/dist/adapters/maloca-veeduria/contract-bridge.d.ts +31 -0
- package/dist/adapters/maloca-veeduria/contract-bridge.d.ts.map +1 -0
- package/dist/adapters/maloca-veeduria/contract-bridge.js +103 -0
- package/dist/adapters/maloca-veeduria/contract-bridge.js.map +1 -0
- package/dist/adapters/maloca-veeduria/evidentia-veeduria.d.ts +14 -0
- package/dist/adapters/maloca-veeduria/evidentia-veeduria.d.ts.map +1 -0
- package/dist/adapters/maloca-veeduria/evidentia-veeduria.js +40 -0
- package/dist/adapters/maloca-veeduria/evidentia-veeduria.js.map +1 -0
- package/dist/adapters/maloca-veeduria/licitante-profile.d.ts +21 -0
- package/dist/adapters/maloca-veeduria/licitante-profile.d.ts.map +1 -0
- package/dist/adapters/maloca-veeduria/licitante-profile.js +58 -0
- package/dist/adapters/maloca-veeduria/licitante-profile.js.map +1 -0
- package/dist/adapters/maloca-veeduria/types.d.ts +30 -0
- package/dist/adapters/maloca-veeduria/types.d.ts.map +1 -0
- package/dist/adapters/maloca-veeduria/types.js +2 -0
- package/dist/adapters/maloca-veeduria/types.js.map +1 -0
- package/dist/adapters/maloca-xavier/agent-profile.d.ts +32 -0
- package/dist/adapters/maloca-xavier/agent-profile.d.ts.map +1 -0
- package/dist/adapters/maloca-xavier/agent-profile.js +56 -0
- package/dist/adapters/maloca-xavier/agent-profile.js.map +1 -0
- package/dist/adapters/maloca-xavier/codegraph-bridge.d.ts +27 -0
- package/dist/adapters/maloca-xavier/codegraph-bridge.d.ts.map +1 -0
- package/dist/adapters/maloca-xavier/codegraph-bridge.js +58 -0
- package/dist/adapters/maloca-xavier/codegraph-bridge.js.map +1 -0
- package/dist/adapters/maloca-xavier/llm-router.d.ts +25 -0
- package/dist/adapters/maloca-xavier/llm-router.d.ts.map +1 -0
- package/dist/adapters/maloca-xavier/llm-router.js +58 -0
- package/dist/adapters/maloca-xavier/llm-router.js.map +1 -0
- package/dist/authz/index.d.ts +81 -0
- package/dist/authz/index.d.ts.map +1 -0
- package/dist/authz/index.js +271 -0
- package/dist/authz/index.js.map +1 -0
- package/dist/chat/index.d.ts +138 -0
- package/dist/chat/index.d.ts.map +1 -0
- package/dist/chat/index.js +394 -0
- package/dist/chat/index.js.map +1 -0
- package/dist/chat/offline-queue.d.ts +32 -0
- package/dist/chat/offline-queue.d.ts.map +1 -0
- package/dist/chat/offline-queue.js +93 -0
- package/dist/chat/offline-queue.js.map +1 -0
- package/dist/core/DefaultEdgeMeshNode.d.ts +17 -0
- package/dist/core/DefaultEdgeMeshNode.d.ts.map +1 -0
- package/dist/core/DefaultEdgeMeshNode.js +57 -0
- package/dist/core/DefaultEdgeMeshNode.js.map +1 -0
- package/dist/core/node.d.ts +26 -0
- package/dist/core/node.d.ts.map +1 -0
- package/dist/core/node.js +16 -0
- package/dist/core/node.js.map +1 -0
- package/dist/edge-mesh.d.ts +139 -0
- package/dist/edge-mesh.d.ts.map +1 -0
- package/dist/edge-mesh.js +1146 -0
- package/dist/edge-mesh.js.map +1 -0
- package/dist/gos/GosBridge.d.ts +49 -0
- package/dist/gos/GosBridge.d.ts.map +1 -0
- package/dist/gos/GosBridge.js +133 -0
- package/dist/gos/GosBridge.js.map +1 -0
- package/dist/governance/authority.d.ts +44 -0
- package/dist/governance/authority.d.ts.map +1 -0
- package/dist/governance/authority.js +123 -0
- package/dist/governance/authority.js.map +1 -0
- package/dist/governance/index.d.ts +66 -0
- package/dist/governance/index.d.ts.map +1 -0
- package/dist/governance/index.js +210 -0
- package/dist/governance/index.js.map +1 -0
- package/dist/governance/merge.d.ts +31 -0
- package/dist/governance/merge.d.ts.map +1 -0
- package/dist/governance/merge.js +167 -0
- package/dist/governance/merge.js.map +1 -0
- package/dist/identity/index.d.ts +199 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +415 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/index.d.ts +71 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +56 -0
- package/dist/index.js.map +1 -0
- package/dist/maloca/backoffice.d.ts +31 -0
- package/dist/maloca/backoffice.d.ts.map +1 -0
- package/dist/maloca/backoffice.js +40 -0
- package/dist/maloca/backoffice.js.map +1 -0
- package/dist/maloca/event-bus.d.ts +60 -0
- package/dist/maloca/event-bus.d.ts.map +1 -0
- package/dist/maloca/event-bus.js +175 -0
- package/dist/maloca/event-bus.js.map +1 -0
- package/dist/maloca/evidentia.d.ts +136 -0
- package/dist/maloca/evidentia.d.ts.map +1 -0
- package/dist/maloca/evidentia.js +447 -0
- package/dist/maloca/evidentia.js.map +1 -0
- package/dist/maloca/gateway/api.d.ts +146 -0
- package/dist/maloca/gateway/api.d.ts.map +1 -0
- package/dist/maloca/gateway/api.js +228 -0
- package/dist/maloca/gateway/api.js.map +1 -0
- package/dist/maloca/gateway/auth.d.ts +20 -0
- package/dist/maloca/gateway/auth.d.ts.map +1 -0
- package/dist/maloca/gateway/auth.js +115 -0
- package/dist/maloca/gateway/auth.js.map +1 -0
- package/dist/maloca/gateway/dashboard.d.ts +42 -0
- package/dist/maloca/gateway/dashboard.d.ts.map +1 -0
- package/dist/maloca/gateway/dashboard.js +67 -0
- package/dist/maloca/gateway/dashboard.js.map +1 -0
- package/dist/maloca/gateway/websocket.d.ts +34 -0
- package/dist/maloca/gateway/websocket.d.ts.map +1 -0
- package/dist/maloca/gateway/websocket.js +71 -0
- package/dist/maloca/gateway/websocket.js.map +1 -0
- package/dist/maloca/karma.d.ts +165 -0
- package/dist/maloca/karma.d.ts.map +1 -0
- package/dist/maloca/karma.js +307 -0
- package/dist/maloca/karma.js.map +1 -0
- package/dist/maloca/kernel.d.ts +20 -0
- package/dist/maloca/kernel.d.ts.map +1 -0
- package/dist/maloca/kernel.js +76 -0
- package/dist/maloca/kernel.js.map +1 -0
- package/dist/maloca/metadata.d.ts +30 -0
- package/dist/maloca/metadata.d.ts.map +1 -0
- package/dist/maloca/metadata.js +80 -0
- package/dist/maloca/metadata.js.map +1 -0
- package/dist/maloca/perfil.d.ts +57 -0
- package/dist/maloca/perfil.d.ts.map +1 -0
- package/dist/maloca/perfil.js +113 -0
- package/dist/maloca/perfil.js.map +1 -0
- package/dist/maloca/plugin-registry.d.ts +27 -0
- package/dist/maloca/plugin-registry.d.ts.map +1 -0
- package/dist/maloca/plugin-registry.js +76 -0
- package/dist/maloca/plugin-registry.js.map +1 -0
- package/dist/maloca/polygon-bridge.d.ts +63 -0
- package/dist/maloca/polygon-bridge.d.ts.map +1 -0
- package/dist/maloca/polygon-bridge.js +198 -0
- package/dist/maloca/polygon-bridge.js.map +1 -0
- package/dist/maloca/types.d.ts +44 -0
- package/dist/maloca/types.d.ts.map +1 -0
- package/dist/maloca/types.js +2 -0
- package/dist/maloca/types.js.map +1 -0
- package/dist/medico/aval.d.ts +149 -0
- package/dist/medico/aval.d.ts.map +1 -0
- package/dist/medico/aval.js +281 -0
- package/dist/medico/aval.js.map +1 -0
- package/dist/medico/canonica.d.ts +96 -0
- package/dist/medico/canonica.d.ts.map +1 -0
- package/dist/medico/canonica.js +148 -0
- package/dist/medico/canonica.js.map +1 -0
- package/dist/medico/credencial.d.ts +160 -0
- package/dist/medico/credencial.d.ts.map +1 -0
- package/dist/medico/credencial.js +240 -0
- package/dist/medico/credencial.js.map +1 -0
- package/dist/medico/index.d.ts +36 -0
- package/dist/medico/index.d.ts.map +1 -0
- package/dist/medico/index.js +39 -0
- package/dist/medico/index.js.map +1 -0
- package/dist/medico/malla.d.ts +218 -0
- package/dist/medico/malla.d.ts.map +1 -0
- package/dist/medico/malla.js +347 -0
- package/dist/medico/malla.js.map +1 -0
- package/dist/medico/registro-profesional.d.ts +84 -0
- package/dist/medico/registro-profesional.d.ts.map +1 -0
- package/dist/medico/registro-profesional.js +135 -0
- package/dist/medico/registro-profesional.js.map +1 -0
- package/dist/medico/registro.d.ts +149 -0
- package/dist/medico/registro.d.ts.map +1 -0
- package/dist/medico/registro.js +173 -0
- package/dist/medico/registro.js.map +1 -0
- package/dist/medico/types.d.ts +287 -0
- package/dist/medico/types.d.ts.map +1 -0
- package/dist/medico/types.js +135 -0
- package/dist/medico/types.js.map +1 -0
- package/dist/medico/verificacion-registro.d.ts +300 -0
- package/dist/medico/verificacion-registro.d.ts.map +1 -0
- package/dist/medico/verificacion-registro.js +319 -0
- package/dist/medico/verificacion-registro.js.map +1 -0
- package/dist/mesh/index.d.ts +457 -0
- package/dist/mesh/index.d.ts.map +1 -0
- package/dist/mesh/index.js +929 -0
- package/dist/mesh/index.js.map +1 -0
- package/dist/namespaces/encrypted-plugin.d.ts +56 -0
- package/dist/namespaces/encrypted-plugin.d.ts.map +1 -0
- package/dist/namespaces/encrypted-plugin.js +173 -0
- package/dist/namespaces/encrypted-plugin.js.map +1 -0
- package/dist/namespaces/index.d.ts +52 -0
- package/dist/namespaces/index.d.ts.map +1 -0
- package/dist/namespaces/index.js +134 -0
- package/dist/namespaces/index.js.map +1 -0
- package/dist/namespaces/ivn-proofs.d.ts +54 -0
- package/dist/namespaces/ivn-proofs.d.ts.map +1 -0
- package/dist/namespaces/ivn-proofs.js +162 -0
- package/dist/namespaces/ivn-proofs.js.map +1 -0
- package/dist/namespaces/offers-gossip.d.ts +95 -0
- package/dist/namespaces/offers-gossip.d.ts.map +1 -0
- package/dist/namespaces/offers-gossip.js +213 -0
- package/dist/namespaces/offers-gossip.js.map +1 -0
- package/dist/node-memory/idb-store.d.ts +22 -0
- package/dist/node-memory/idb-store.d.ts.map +1 -0
- package/dist/node-memory/idb-store.js +157 -0
- package/dist/node-memory/idb-store.js.map +1 -0
- package/dist/node-memory/index.d.ts +14 -0
- package/dist/node-memory/index.d.ts.map +1 -0
- package/dist/node-memory/index.js +159 -0
- package/dist/node-memory/index.js.map +1 -0
- package/dist/node-memory/sync-flush.d.ts +11 -0
- package/dist/node-memory/sync-flush.d.ts.map +1 -0
- package/dist/node-memory/sync-flush.js +37 -0
- package/dist/node-memory/sync-flush.js.map +1 -0
- package/dist/node-memory/types.d.ts +34 -0
- package/dist/node-memory/types.d.ts.map +1 -0
- package/dist/node-memory/types.js +2 -0
- package/dist/node-memory/types.js.map +1 -0
- package/dist/node-memory/xavier-store.d.ts +12 -0
- package/dist/node-memory/xavier-store.d.ts.map +1 -0
- package/dist/node-memory/xavier-store.js +75 -0
- package/dist/node-memory/xavier-store.js.map +1 -0
- package/dist/op-log/index.d.ts +49 -0
- package/dist/op-log/index.d.ts.map +1 -0
- package/dist/op-log/index.js +190 -0
- package/dist/op-log/index.js.map +1 -0
- package/dist/presence/health.d.ts +54 -0
- package/dist/presence/health.d.ts.map +1 -0
- package/dist/presence/health.js +139 -0
- package/dist/presence/health.js.map +1 -0
- package/dist/presence/index.d.ts +85 -0
- package/dist/presence/index.d.ts.map +1 -0
- package/dist/presence/index.js +255 -0
- package/dist/presence/index.js.map +1 -0
- package/dist/presence/peer-health.d.ts +40 -0
- package/dist/presence/peer-health.d.ts.map +1 -0
- package/dist/presence/peer-health.js +118 -0
- package/dist/presence/peer-health.js.map +1 -0
- package/dist/protocol/canonical.d.ts +10 -0
- package/dist/protocol/canonical.d.ts.map +1 -0
- package/dist/protocol/canonical.js +32 -0
- package/dist/protocol/canonical.js.map +1 -0
- package/dist/protocol/crypto.d.ts +299 -0
- package/dist/protocol/crypto.d.ts.map +1 -0
- package/dist/protocol/crypto.js +739 -0
- package/dist/protocol/crypto.js.map +1 -0
- package/dist/protocol/index.d.ts +30 -0
- package/dist/protocol/index.d.ts.map +1 -0
- package/dist/protocol/index.js +116 -0
- package/dist/protocol/index.js.map +1 -0
- package/dist/protocol/utils.d.ts +5 -0
- package/dist/protocol/utils.d.ts.map +1 -0
- package/dist/protocol/utils.js +27 -0
- package/dist/protocol/utils.js.map +1 -0
- package/dist/salones/manager.d.ts +100 -0
- package/dist/salones/manager.d.ts.map +1 -0
- package/dist/salones/manager.js +240 -0
- package/dist/salones/manager.js.map +1 -0
- package/dist/security/rate-limiter.d.ts +13 -0
- package/dist/security/rate-limiter.d.ts.map +1 -0
- package/dist/security/rate-limiter.js +32 -0
- package/dist/security/rate-limiter.js.map +1 -0
- package/dist/snapshot/index.d.ts +90 -0
- package/dist/snapshot/index.d.ts.map +1 -0
- package/dist/snapshot/index.js +189 -0
- package/dist/snapshot/index.js.map +1 -0
- package/dist/storage/index.d.ts +49 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +192 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/optimizer.d.ts +28 -0
- package/dist/storage/optimizer.d.ts.map +1 -0
- package/dist/storage/optimizer.js +71 -0
- package/dist/storage/optimizer.js.map +1 -0
- package/dist/storage/ydoc-persistence.d.ts +27 -0
- package/dist/storage/ydoc-persistence.d.ts.map +1 -0
- package/dist/storage/ydoc-persistence.js +128 -0
- package/dist/storage/ydoc-persistence.js.map +1 -0
- package/dist/sync/ChunkSyncManager.d.ts +41 -0
- package/dist/sync/ChunkSyncManager.d.ts.map +1 -0
- package/dist/sync/ChunkSyncManager.js +115 -0
- package/dist/sync/ChunkSyncManager.js.map +1 -0
- package/dist/sync/conflict-resolver.d.ts +33 -0
- package/dist/sync/conflict-resolver.d.ts.map +1 -0
- package/dist/sync/conflict-resolver.js +54 -0
- package/dist/sync/conflict-resolver.js.map +1 -0
- package/dist/sync/engine.d.ts +168 -0
- package/dist/sync/engine.d.ts.map +1 -0
- package/dist/sync/engine.js +315 -0
- package/dist/sync/engine.js.map +1 -0
- package/dist/sync/index.d.ts +3 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +3 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/transport/TorTransportAdapter.d.ts +70 -0
- package/dist/transport/TorTransportAdapter.d.ts.map +1 -0
- package/dist/transport/TorTransportAdapter.js +192 -0
- package/dist/transport/TorTransportAdapter.js.map +1 -0
- package/dist/transport/memory.d.ts +31 -0
- package/dist/transport/memory.d.ts.map +1 -0
- package/dist/transport/memory.js +114 -0
- package/dist/transport/memory.js.map +1 -0
- package/dist/transport/peerjs.d.ts +52 -0
- package/dist/transport/peerjs.d.ts.map +1 -0
- package/dist/transport/peerjs.js +336 -0
- package/dist/transport/peerjs.js.map +1 -0
- package/dist/transport/pqc-handshake.d.ts +72 -0
- package/dist/transport/pqc-handshake.d.ts.map +1 -0
- package/dist/transport/pqc-handshake.js +129 -0
- package/dist/transport/pqc-handshake.js.map +1 -0
- package/dist/transport/relay-config.d.ts +11 -0
- package/dist/transport/relay-config.d.ts.map +1 -0
- package/dist/transport/relay-config.js +48 -0
- package/dist/transport/relay-config.js.map +1 -0
- package/dist/transport/relay-server.d.ts +37 -0
- package/dist/transport/relay-server.d.ts.map +1 -0
- package/dist/transport/relay-server.js +246 -0
- package/dist/transport/relay-server.js.map +1 -0
- package/dist/transport/tor.d.ts +47 -0
- package/dist/transport/tor.d.ts.map +1 -0
- package/dist/transport/tor.js +158 -0
- package/dist/transport/tor.js.map +1 -0
- package/dist/transport/types.d.ts +34 -0
- package/dist/transport/types.d.ts.map +1 -0
- package/dist/transport/types.js +2 -0
- package/dist/transport/types.js.map +1 -0
- package/dist/types/index.d.ts +293 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +73 -0
- package/dist/types/index.js.map +1 -0
- package/dist/web/admission.d.ts +24 -0
- package/dist/web/admission.d.ts.map +1 -0
- package/dist/web/admission.js +41 -0
- package/dist/web/admission.js.map +1 -0
- package/dist/web/crypto.d.ts +18 -0
- package/dist/web/crypto.d.ts.map +1 -0
- package/dist/web/crypto.js +78 -0
- package/dist/web/crypto.js.map +1 -0
- package/dist/web/exchange.d.ts +23 -0
- package/dist/web/exchange.d.ts.map +1 -0
- package/dist/web/exchange.js +54 -0
- package/dist/web/exchange.js.map +1 -0
- package/dist/web/fragment.d.ts +58 -0
- package/dist/web/fragment.d.ts.map +1 -0
- package/dist/web/fragment.js +198 -0
- package/dist/web/fragment.js.map +1 -0
- package/dist/web/index.d.ts +25 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +14 -0
- package/dist/web/index.js.map +1 -0
- package/dist/web/merge/index.d.ts +104 -0
- package/dist/web/merge/index.d.ts.map +1 -0
- package/dist/web/merge/index.js +236 -0
- package/dist/web/merge/index.js.map +1 -0
- package/dist/web/oplog/hlc.d.ts +19 -0
- package/dist/web/oplog/hlc.d.ts.map +1 -0
- package/dist/web/oplog/hlc.js +39 -0
- package/dist/web/oplog/hlc.js.map +1 -0
- package/dist/web/oplog/index.d.ts +10 -0
- package/dist/web/oplog/index.d.ts.map +1 -0
- package/dist/web/oplog/index.js +6 -0
- package/dist/web/oplog/index.js.map +1 -0
- package/dist/web/oplog/log.d.ts +182 -0
- package/dist/web/oplog/log.d.ts.map +1 -0
- package/dist/web/oplog/log.js +693 -0
- package/dist/web/oplog/log.js.map +1 -0
- package/dist/web/oplog/store.d.ts +40 -0
- package/dist/web/oplog/store.d.ts.map +1 -0
- package/dist/web/oplog/store.js +85 -0
- package/dist/web/oplog/store.js.map +1 -0
- package/dist/web/oplog/sync.d.ts +54 -0
- package/dist/web/oplog/sync.d.ts.map +1 -0
- package/dist/web/oplog/sync.js +162 -0
- package/dist/web/oplog/sync.js.map +1 -0
- package/dist/web/oplog/types.d.ts +119 -0
- package/dist/web/oplog/types.d.ts.map +1 -0
- package/dist/web/oplog/types.js +2 -0
- package/dist/web/oplog/types.js.map +1 -0
- package/dist/web/pairing.d.ts +186 -0
- package/dist/web/pairing.d.ts.map +1 -0
- package/dist/web/pairing.js +395 -0
- package/dist/web/pairing.js.map +1 -0
- package/dist/web/pq.d.ts +36 -0
- package/dist/web/pq.d.ts.map +1 -0
- package/dist/web/pq.js +59 -0
- package/dist/web/pq.js.map +1 -0
- package/dist/web/provider.d.ts +188 -0
- package/dist/web/provider.d.ts.map +1 -0
- package/dist/web/provider.js +2042 -0
- package/dist/web/provider.js.map +1 -0
- package/dist/web/rooms.d.ts +20 -0
- package/dist/web/rooms.d.ts.map +1 -0
- package/dist/web/rooms.js +51 -0
- package/dist/web/rooms.js.map +1 -0
- package/dist/web/rotation.d.ts +73 -0
- package/dist/web/rotation.d.ts.map +1 -0
- package/dist/web/rotation.js +130 -0
- package/dist/web/rotation.js.map +1 -0
- package/dist/web/secstate.d.ts +213 -0
- package/dist/web/secstate.d.ts.map +1 -0
- package/dist/web/secstate.js +789 -0
- package/dist/web/secstate.js.map +1 -0
- package/dist/web/store.d.ts +9 -0
- package/dist/web/store.d.ts.map +1 -0
- package/dist/web/store.js +32 -0
- package/dist/web/store.js.map +1 -0
- package/dist/web/transports/loopback.d.ts +11 -0
- package/dist/web/transports/loopback.d.ts.map +1 -0
- package/dist/web/transports/loopback.js +97 -0
- package/dist/web/transports/loopback.js.map +1 -0
- package/dist/web/transports/qr-sdp.d.ts +27 -0
- package/dist/web/transports/qr-sdp.d.ts.map +1 -0
- package/dist/web/transports/qr-sdp.js +131 -0
- package/dist/web/transports/qr-sdp.js.map +1 -0
- package/dist/web/transports/ws.d.ts +12 -0
- package/dist/web/transports/ws.d.ts.map +1 -0
- package/dist/web/transports/ws.js +139 -0
- package/dist/web/transports/ws.js.map +1 -0
- package/dist/web/trust/canonical.d.ts +8 -0
- package/dist/web/trust/canonical.d.ts.map +1 -0
- package/dist/web/trust/canonical.js +27 -0
- package/dist/web/trust/canonical.js.map +1 -0
- package/dist/web/trust/docs.d.ts +51 -0
- package/dist/web/trust/docs.d.ts.map +1 -0
- package/dist/web/trust/docs.js +170 -0
- package/dist/web/trust/docs.js.map +1 -0
- package/dist/web/trust/index.d.ts +10 -0
- package/dist/web/trust/index.d.ts.map +1 -0
- package/dist/web/trust/index.js +7 -0
- package/dist/web/trust/index.js.map +1 -0
- package/dist/web/trust/keys.d.ts +37 -0
- package/dist/web/trust/keys.d.ts.map +1 -0
- package/dist/web/trust/keys.js +75 -0
- package/dist/web/trust/keys.js.map +1 -0
- package/dist/web/trust/store.d.ts +150 -0
- package/dist/web/trust/store.d.ts.map +1 -0
- package/dist/web/trust/store.js +587 -0
- package/dist/web/trust/store.js.map +1 -0
- package/dist/web/trust/types.d.ts +134 -0
- package/dist/web/trust/types.d.ts.map +1 -0
- package/dist/web/trust/types.js +4 -0
- package/dist/web/trust/types.js.map +1 -0
- package/dist/web/types.d.ts +115 -0
- package/dist/web/types.d.ts.map +1 -0
- package/dist/web/types.js +2 -0
- package/dist/web/types.js.map +1 -0
- package/dist/web/util.d.ts +12 -0
- package/dist/web/util.d.ts.map +1 -0
- package/dist/web/util.js +54 -0
- package/dist/web/util.js.map +1 -0
- package/dist/web/webrtc.d.ts +35 -0
- package/dist/web/webrtc.d.ts.map +1 -0
- package/dist/web/webrtc.js +304 -0
- package/dist/web/webrtc.js.map +1 -0
- package/package.json +139 -4
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
export declare const TIPO_MENSAJE: {
|
|
2
|
+
readonly SYNC: "sync";
|
|
3
|
+
readonly ACK: "ack";
|
|
4
|
+
readonly HEARTBEAT: "heartbeat";
|
|
5
|
+
readonly HALLAZGO: "hallazgo";
|
|
6
|
+
readonly VOTACION: "votacion";
|
|
7
|
+
readonly SNAPSHOT: "snapshot";
|
|
8
|
+
readonly OP_LOG: "op_log";
|
|
9
|
+
readonly AUTHZ: "authz";
|
|
10
|
+
readonly NAMESPACE: "namespace";
|
|
11
|
+
readonly GOVERNANCE: "governance";
|
|
12
|
+
readonly IDENTITY: "identity";
|
|
13
|
+
readonly ERROR: "error";
|
|
14
|
+
/** Presentación, solicitud y respuesta de una `CredencialMedica`. */
|
|
15
|
+
readonly CREDENCIAL: "credencial";
|
|
16
|
+
/** Aval de un par (`Aval`) y su revocación. */
|
|
17
|
+
readonly AVAL: "aval";
|
|
18
|
+
/** Instantánea de un registro nacional, direccionada por hash. */
|
|
19
|
+
readonly REGISTRO: "registro";
|
|
20
|
+
readonly PQC_HANDSHAKE: "pqc_handshake";
|
|
21
|
+
readonly KEM_REPLY: "kem_reply";
|
|
22
|
+
readonly PQC_ACK: "pqc_ack";
|
|
23
|
+
readonly PEER_LIST_UPDATE: "peer_list_update";
|
|
24
|
+
readonly GOSSIP: "gossip";
|
|
25
|
+
};
|
|
26
|
+
export type TipoMensaje = (typeof TIPO_MENSAJE)[keyof typeof TIPO_MENSAJE];
|
|
27
|
+
export declare const ESTADO_NODO: {
|
|
28
|
+
readonly OFFLINE: "offline";
|
|
29
|
+
readonly CONECTANDO: "conectando";
|
|
30
|
+
readonly ONLINE: "online";
|
|
31
|
+
readonly SUSPENDIDO: "suspendido";
|
|
32
|
+
readonly RECONECTANDO: "reconectando";
|
|
33
|
+
readonly ELIMINADO: "eliminado";
|
|
34
|
+
};
|
|
35
|
+
export type EstadoNodo = (typeof ESTADO_NODO)[keyof typeof ESTADO_NODO];
|
|
36
|
+
export declare const ESTADO_SALUD: {
|
|
37
|
+
readonly SALUDABLE: "saludable";
|
|
38
|
+
readonly LENTO: "lento";
|
|
39
|
+
readonly FALLANDO: "fallando";
|
|
40
|
+
readonly DESCONOCIDO: "desconocido";
|
|
41
|
+
};
|
|
42
|
+
export type EstadoSalud = (typeof ESTADO_SALUD)[keyof typeof ESTADO_SALUD];
|
|
43
|
+
export declare const POLITICA_GOBERNANZA: {
|
|
44
|
+
readonly DEMOCRATICA: "democratica";
|
|
45
|
+
readonly AUTORITARIA: "autoritaria";
|
|
46
|
+
readonly CONSENSO: "consenso";
|
|
47
|
+
readonly PLURALIDAD: "pluralidad";
|
|
48
|
+
};
|
|
49
|
+
export type PoliticaGobernanza = (typeof POLITICA_GOBERNANZA)[keyof typeof POLITICA_GOBERNANZA];
|
|
50
|
+
export declare const TIPO_TRANSPORTE: {
|
|
51
|
+
readonly PEERJS: "peerjs";
|
|
52
|
+
readonly WEBSOCKET: "websocket";
|
|
53
|
+
readonly MEMORIA: "memoria";
|
|
54
|
+
readonly TOR: "tor";
|
|
55
|
+
};
|
|
56
|
+
export type TipoTransporte = (typeof TIPO_TRANSPORTE)[keyof typeof TIPO_TRANSPORTE];
|
|
57
|
+
export declare function isTipoMensaje(valor: unknown): valor is TipoMensaje;
|
|
58
|
+
export declare function isEstadoNodo(valor: unknown): valor is EstadoNodo;
|
|
59
|
+
export type NodoId = string & {
|
|
60
|
+
readonly __brand: "NodoId";
|
|
61
|
+
};
|
|
62
|
+
export type ParPublico = Uint8Array;
|
|
63
|
+
export interface Envolvente {
|
|
64
|
+
readonly id: string;
|
|
65
|
+
readonly tipo: TipoMensaje;
|
|
66
|
+
readonly origen: NodoId;
|
|
67
|
+
readonly destino: NodoId | "*";
|
|
68
|
+
readonly timestamp: number;
|
|
69
|
+
readonly firma: Uint8Array | null;
|
|
70
|
+
readonly payload: unknown;
|
|
71
|
+
readonly version: number;
|
|
72
|
+
readonly nonce: string;
|
|
73
|
+
}
|
|
74
|
+
export type PayloadSync = {
|
|
75
|
+
readonly tipoSync: "estado" | "delta" | "solicitud";
|
|
76
|
+
readonly docId: string;
|
|
77
|
+
readonly datos: Uint8Array;
|
|
78
|
+
readonly clock: number;
|
|
79
|
+
};
|
|
80
|
+
export type PayloadHeartbeat = {
|
|
81
|
+
readonly nodoId: NodoId;
|
|
82
|
+
readonly timestamp: number;
|
|
83
|
+
readonly secuencia: number;
|
|
84
|
+
};
|
|
85
|
+
export type PayloadHallazgo = {
|
|
86
|
+
readonly id: string;
|
|
87
|
+
readonly tipo: string;
|
|
88
|
+
readonly datos: unknown;
|
|
89
|
+
readonly nodoOrigen: NodoId;
|
|
90
|
+
readonly ttl: number;
|
|
91
|
+
};
|
|
92
|
+
export type PayloadVotacion = {
|
|
93
|
+
readonly propuesta: string;
|
|
94
|
+
readonly voto: "a_favor" | "en_contra" | "abstencion";
|
|
95
|
+
readonly nodoId: NodoId;
|
|
96
|
+
readonly peso: number;
|
|
97
|
+
readonly justificacion: string | null;
|
|
98
|
+
readonly firma?: Uint8Array | number[] | string | null;
|
|
99
|
+
readonly timestamp?: number;
|
|
100
|
+
};
|
|
101
|
+
export interface VerificadorVotos {
|
|
102
|
+
obtenerClavePublica(nodoId: NodoId): ParPublico | Uint8Array | undefined | null;
|
|
103
|
+
verificarFirma(mensaje: Uint8Array, firma: Uint8Array, clave: ParPublico | Uint8Array): boolean | Promise<boolean>;
|
|
104
|
+
}
|
|
105
|
+
export type PayloadSnapshot = {
|
|
106
|
+
readonly docId: string;
|
|
107
|
+
readonly version: number;
|
|
108
|
+
readonly datos: Uint8Array;
|
|
109
|
+
readonly nodosConfirmados: readonly NodoId[];
|
|
110
|
+
};
|
|
111
|
+
export type PayloadOpLog = {
|
|
112
|
+
readonly docId: string;
|
|
113
|
+
readonly operaciones: readonly Operacion[];
|
|
114
|
+
readonly desde: number;
|
|
115
|
+
readonly hasta: number;
|
|
116
|
+
};
|
|
117
|
+
export type PayloadAuthz = {
|
|
118
|
+
readonly accion: "conceder" | "revocar" | "verificar";
|
|
119
|
+
readonly espacio: string;
|
|
120
|
+
readonly sujeto: NodoId;
|
|
121
|
+
readonly capacidad: string;
|
|
122
|
+
};
|
|
123
|
+
export type PayloadNamespace = {
|
|
124
|
+
readonly accion: "crear" | "unir" | "abandonar" | "listar";
|
|
125
|
+
readonly espacio: string;
|
|
126
|
+
readonly nodoId: NodoId;
|
|
127
|
+
};
|
|
128
|
+
export type PayloadIdentity = {
|
|
129
|
+
readonly nodoId: NodoId;
|
|
130
|
+
readonly parPublico: ParPublico;
|
|
131
|
+
readonly algoritmo: string;
|
|
132
|
+
readonly prueba: Uint8Array;
|
|
133
|
+
};
|
|
134
|
+
export type PayloadError = {
|
|
135
|
+
readonly codigo: number;
|
|
136
|
+
readonly mensaje: string;
|
|
137
|
+
readonly origen: NodoId | null;
|
|
138
|
+
readonly idMensajeOriginal: string | null;
|
|
139
|
+
};
|
|
140
|
+
export interface Operacion {
|
|
141
|
+
readonly id: string;
|
|
142
|
+
readonly tipo: string;
|
|
143
|
+
readonly datos: unknown;
|
|
144
|
+
readonly timestamp: number;
|
|
145
|
+
readonly autor: NodoId;
|
|
146
|
+
readonly secuencia: number;
|
|
147
|
+
}
|
|
148
|
+
export interface GovernancePolicy {
|
|
149
|
+
readonly politica: PoliticaGobernanza;
|
|
150
|
+
readonly umbral: number;
|
|
151
|
+
readonly ventanaMs: number;
|
|
152
|
+
readonly pesoNodo: Readonly<Record<string, number>>;
|
|
153
|
+
readonly reglas: readonly string[];
|
|
154
|
+
}
|
|
155
|
+
export interface NamespacePartition {
|
|
156
|
+
readonly id: string;
|
|
157
|
+
readonly nombre: string;
|
|
158
|
+
readonly nodos: readonly NodoId[];
|
|
159
|
+
readonly fechaCreacion: number;
|
|
160
|
+
readonly metadatos: Readonly<Record<string, string>>;
|
|
161
|
+
}
|
|
162
|
+
export interface NamespaceCapabilityGrant {
|
|
163
|
+
readonly id: string;
|
|
164
|
+
readonly espacio: string;
|
|
165
|
+
readonly sujeto: NodoId;
|
|
166
|
+
readonly capacidad: string;
|
|
167
|
+
readonly fechaEmision: number;
|
|
168
|
+
readonly fechaExpiracion: number;
|
|
169
|
+
readonly firma: Uint8Array;
|
|
170
|
+
}
|
|
171
|
+
export interface HealthStatus {
|
|
172
|
+
readonly nodoId: NodoId;
|
|
173
|
+
readonly estado: EstadoSalud;
|
|
174
|
+
readonly ultimoHeartbeat: number;
|
|
175
|
+
readonly latenciaMs: number;
|
|
176
|
+
readonly fallosConsecutivos: number;
|
|
177
|
+
}
|
|
178
|
+
export interface EdgeMeshEventMap {
|
|
179
|
+
nodoConectado: CustomEvent<{
|
|
180
|
+
readonly nodoId: NodoId;
|
|
181
|
+
}>;
|
|
182
|
+
nodoDesconectado: CustomEvent<{
|
|
183
|
+
readonly nodoId: NodoId;
|
|
184
|
+
}>;
|
|
185
|
+
mensajeRecibido: CustomEvent<{
|
|
186
|
+
readonly envolvente: Envolvente;
|
|
187
|
+
}>;
|
|
188
|
+
syncCompletado: CustomEvent<{
|
|
189
|
+
readonly docId: string;
|
|
190
|
+
readonly clock: number;
|
|
191
|
+
}>;
|
|
192
|
+
error: CustomEvent<{
|
|
193
|
+
readonly mensaje: string;
|
|
194
|
+
readonly error?: Error;
|
|
195
|
+
}>;
|
|
196
|
+
estadoCambiado: CustomEvent<{
|
|
197
|
+
readonly estadoAnterior: EstadoNodo;
|
|
198
|
+
readonly estadoNuevo: EstadoNodo;
|
|
199
|
+
}>;
|
|
200
|
+
hallazgoRecibido: CustomEvent<{
|
|
201
|
+
readonly hallazgo: PayloadHallazgo;
|
|
202
|
+
}>;
|
|
203
|
+
votacionRecibida: CustomEvent<{
|
|
204
|
+
readonly votacion: PayloadVotacion;
|
|
205
|
+
}>;
|
|
206
|
+
saludCambiada: CustomEvent<{
|
|
207
|
+
readonly nodoId: NodoId;
|
|
208
|
+
readonly salud: EstadoSalud;
|
|
209
|
+
}>;
|
|
210
|
+
failover: CustomEvent<{
|
|
211
|
+
readonly antiguoMaster: NodoId | null;
|
|
212
|
+
readonly nuevoMaster: NodoId;
|
|
213
|
+
readonly razon: "timeout" | "forced" | "manual";
|
|
214
|
+
}>;
|
|
215
|
+
}
|
|
216
|
+
export type EdgeMeshEvent = EdgeMeshEventMap[keyof EdgeMeshEventMap];
|
|
217
|
+
export interface StorageEntry<T = unknown> {
|
|
218
|
+
readonly key: string;
|
|
219
|
+
readonly valor: T;
|
|
220
|
+
readonly timestamp: number;
|
|
221
|
+
readonly version: number;
|
|
222
|
+
}
|
|
223
|
+
export type StorageFilter = {
|
|
224
|
+
readonly prefijo?: string;
|
|
225
|
+
readonly desde?: number;
|
|
226
|
+
readonly hasta?: number;
|
|
227
|
+
readonly limite?: number;
|
|
228
|
+
};
|
|
229
|
+
export interface EdgeMeshConfig {
|
|
230
|
+
readonly nodoId: NodoId;
|
|
231
|
+
/**
|
|
232
|
+
* When set, EdgeMesh opens its own PeerJS transport with this id.
|
|
233
|
+
* Prefer omitting this when the host app already owns PeerJS (e.g. Shelf p2p-mesh-core).
|
|
234
|
+
*/
|
|
235
|
+
readonly peerId?: string;
|
|
236
|
+
/** Serialized keypair bytes from `serializeKeypair`, not a raw private key. */
|
|
237
|
+
readonly identitySecret?: Uint8Array;
|
|
238
|
+
readonly heartbeatIntervalMs?: number;
|
|
239
|
+
readonly heartbeatTimeoutMs?: number;
|
|
240
|
+
readonly snapshotInterval?: number;
|
|
241
|
+
readonly snapshotConfig?: any;
|
|
242
|
+
readonly storagePrefix?: string;
|
|
243
|
+
readonly storageBackend?: "mem" | "idb";
|
|
244
|
+
readonly governancePolicy?: GovernancePolicy;
|
|
245
|
+
readonly transportConfig?: Record<string, unknown>;
|
|
246
|
+
readonly maxReconnectAttempts?: number;
|
|
247
|
+
readonly logLevel?: "debug" | "info" | "warn" | "error";
|
|
248
|
+
/**
|
|
249
|
+
* When true (default), remote SYNC requires write/sync capability for the origin peer.
|
|
250
|
+
* Remote AUTHZ grants require a valid signature from a registered admin/master key.
|
|
251
|
+
*/
|
|
252
|
+
readonly requireAuthz?: boolean;
|
|
253
|
+
/**
|
|
254
|
+
* When true (default), remote SYNC/AUTHZ envelopes must carry a verifiable ML-DSA signature from a peer
|
|
255
|
+
* key registered with `registrarClavePublica`. Set to false only for legacy/unsigned deployments.
|
|
256
|
+
*/
|
|
257
|
+
readonly requireSignedEnvelopes?: boolean;
|
|
258
|
+
/**
|
|
259
|
+
* Namespace used when authorizing generic CRDT sync writes.
|
|
260
|
+
* Defaults to "global".
|
|
261
|
+
*/
|
|
262
|
+
readonly defaultSyncNamespace?: string;
|
|
263
|
+
/**
|
|
264
|
+
* Optional external Yjs document (Phase B: share host app CRDT doc).
|
|
265
|
+
* When provided, EdgeMesh does **not** destroy it on `detener()`.
|
|
266
|
+
* Use a structural type to avoid forcing yjs types on pure type consumers.
|
|
267
|
+
*/
|
|
268
|
+
readonly yDoc?: {
|
|
269
|
+
on: (...args: never[]) => unknown;
|
|
270
|
+
off: (...args: never[]) => unknown;
|
|
271
|
+
getMap: (name: string) => unknown;
|
|
272
|
+
destroy: () => void;
|
|
273
|
+
[key: string]: unknown;
|
|
274
|
+
};
|
|
275
|
+
/**
|
|
276
|
+
* When true, local Yjs updates are relayed over the attached ITransport.
|
|
277
|
+
* Default: `false` if `yDoc` is provided (host app owns YJS broadcast, e.g. p2pManager),
|
|
278
|
+
* otherwise `true`.
|
|
279
|
+
*/
|
|
280
|
+
readonly relayLocalYjs?: boolean;
|
|
281
|
+
/**
|
|
282
|
+
* When true (or omitted/undefined), PQC Handshake and encryption on SYNC path are enabled.
|
|
283
|
+
* Set to false to disable/simulate fallback behavior.
|
|
284
|
+
*/
|
|
285
|
+
readonly enablePqcEncryption?: boolean;
|
|
286
|
+
readonly initialMaster?: NodoId;
|
|
287
|
+
readonly authorityTimeoutMs?: number;
|
|
288
|
+
readonly sybilThreshold?: number;
|
|
289
|
+
readonly requireSignedVotes?: boolean;
|
|
290
|
+
readonly gossipFanOut?: number;
|
|
291
|
+
readonly gossipTTL?: number;
|
|
292
|
+
}
|
|
293
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// ─── CONST OBJECT PATTERNS ────────────────────────────────────────────────
|
|
2
|
+
export const TIPO_MENSAJE = {
|
|
3
|
+
SYNC: "sync",
|
|
4
|
+
ACK: "ack",
|
|
5
|
+
HEARTBEAT: "heartbeat",
|
|
6
|
+
// La clave estaba mal escrita (`HALLazGO`); el valor de cable nunca lo estuvo,
|
|
7
|
+
// así que corregirla no rompe a ningún par. Se renombra porque una clave de enum
|
|
8
|
+
// mal escrita es la clase de defecto que sobrevive años y luego alguien
|
|
9
|
+
// empareja mal contra ella.
|
|
10
|
+
HALLAZGO: "hallazgo",
|
|
11
|
+
VOTACION: "votacion",
|
|
12
|
+
SNAPSHOT: "snapshot",
|
|
13
|
+
OP_LOG: "op_log",
|
|
14
|
+
AUTHZ: "authz",
|
|
15
|
+
NAMESPACE: "namespace",
|
|
16
|
+
GOVERNANCE: "governance",
|
|
17
|
+
IDENTITY: "identity",
|
|
18
|
+
ERROR: "error",
|
|
19
|
+
// ── CAPA MÉDICA (docs/medico/protocolo.md §7) ──
|
|
20
|
+
//
|
|
21
|
+
// El tráfico de credenciales NO pasa por AUTHZ a propósito: una concesión
|
|
22
|
+
// authz es estado de *capacidad local*, mientras que una credencial es una
|
|
23
|
+
// *afirmación replicada*. Confundirlas vuelve ambas inauditables — una
|
|
24
|
+
// concesión se puede revocar sin tocar el registro que la replicó, y un
|
|
25
|
+
// registro parece revocable cuando no lo es.
|
|
26
|
+
/** Presentación, solicitud y respuesta de una `CredencialMedica`. */
|
|
27
|
+
CREDENCIAL: "credencial",
|
|
28
|
+
/** Aval de un par (`Aval`) y su revocación. */
|
|
29
|
+
AVAL: "aval",
|
|
30
|
+
/** Instantánea de un registro nacional, direccionada por hash. */
|
|
31
|
+
REGISTRO: "registro",
|
|
32
|
+
PQC_HANDSHAKE: "pqc_handshake",
|
|
33
|
+
KEM_REPLY: "kem_reply",
|
|
34
|
+
PQC_ACK: "pqc_ack",
|
|
35
|
+
PEER_LIST_UPDATE: "peer_list_update",
|
|
36
|
+
GOSSIP: "gossip",
|
|
37
|
+
};
|
|
38
|
+
export const ESTADO_NODO = {
|
|
39
|
+
OFFLINE: "offline",
|
|
40
|
+
CONECTANDO: "conectando",
|
|
41
|
+
ONLINE: "online",
|
|
42
|
+
SUSPENDIDO: "suspendido",
|
|
43
|
+
RECONECTANDO: "reconectando",
|
|
44
|
+
ELIMINADO: "eliminado",
|
|
45
|
+
};
|
|
46
|
+
export const ESTADO_SALUD = {
|
|
47
|
+
SALUDABLE: "saludable",
|
|
48
|
+
LENTO: "lento",
|
|
49
|
+
FALLANDO: "fallando",
|
|
50
|
+
DESCONOCIDO: "desconocido",
|
|
51
|
+
};
|
|
52
|
+
export const POLITICA_GOBERNANZA = {
|
|
53
|
+
DEMOCRATICA: "democratica",
|
|
54
|
+
AUTORITARIA: "autoritaria",
|
|
55
|
+
CONSENSO: "consenso",
|
|
56
|
+
PLURALIDAD: "pluralidad",
|
|
57
|
+
};
|
|
58
|
+
export const TIPO_TRANSPORTE = {
|
|
59
|
+
PEERJS: "peerjs",
|
|
60
|
+
WEBSOCKET: "websocket",
|
|
61
|
+
MEMORIA: "memoria",
|
|
62
|
+
TOR: "tor",
|
|
63
|
+
};
|
|
64
|
+
// ─── TYPE GUARDS ───────────────────────────────────────────────────────────
|
|
65
|
+
export function isTipoMensaje(valor) {
|
|
66
|
+
return (typeof valor === "string" &&
|
|
67
|
+
Object.values(TIPO_MENSAJE).includes(valor));
|
|
68
|
+
}
|
|
69
|
+
export function isEstadoNodo(valor) {
|
|
70
|
+
return (typeof valor === "string" &&
|
|
71
|
+
Object.values(ESTADO_NODO).includes(valor));
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,MAAM,CAAC,MAAM,YAAY,GAAG;IAC3B,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,SAAS,EAAE,WAAW;IACtB,+EAA+E;IAC/E,iFAAiF;IACjF,wEAAwE;IACxE,4BAA4B;IAC5B,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,OAAO;IACd,kDAAkD;IAClD,EAAE;IACF,0EAA0E;IAC1E,2EAA2E;IAC3E,uEAAuE;IACvE,wEAAwE;IACxE,6CAA6C;IAC7C,qEAAqE;IACrE,UAAU,EAAE,YAAY;IACxB,+CAA+C;IAC/C,IAAI,EAAE,MAAM;IACZ,kEAAkE;IAClE,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,eAAe;IAC9B,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,gBAAgB,EAAE,kBAAkB;IACpC,MAAM,EAAE,QAAQ;CACP,CAAC;AAIX,MAAM,CAAC,MAAM,WAAW,GAAG;IAC1B,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,YAAY;IACxB,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,WAAW;CACb,CAAC;AAIX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC3B,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,aAAa;CACjB,CAAC;AAIX,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAClC,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;CACf,CAAC;AAKX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC9B,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,GAAG,EAAE,KAAK;CACD,CAAC;AAKX,8EAA8E;AAE9E,MAAM,UAAU,aAAa,CAAC,KAAc;IAC3C,OAAO,CACN,OAAO,KAAK,KAAK,QAAQ;QACzB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAoB,CAAC,CAC1D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IAC1C,OAAO,CACN,OAAO,KAAK,KAAK,QAAQ;QACzB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAmB,CAAC,CACxD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** A deviceId is the fingerprint of the device's ML-DSA-65 identity key (`deviceIdOf`): 43 base64url characters. */
|
|
2
|
+
export declare const DEVICE_ID_RE: RegExp;
|
|
3
|
+
export declare const isDeviceId: (x: unknown) => x is string;
|
|
4
|
+
/** True iff `deviceId` is the fingerprint of the base64url identity key `pub` (the binding every check relies on). */
|
|
5
|
+
export declare function idMatchesPub(deviceId: string, pub: string): Promise<boolean>;
|
|
6
|
+
/**
|
|
7
|
+
* Mesh role of a device: the root of the mesh's web/trust store is the owner; a grant that may delegate
|
|
8
|
+
* (`delegate >= 1`) makes an admin; any other grant a member.
|
|
9
|
+
*/
|
|
10
|
+
export type Role = "owner" | "admin" | "member";
|
|
11
|
+
/** The locally pinned trust anchor (never read from the shared doc): the mesh owner's identity. */
|
|
12
|
+
export interface TrustRoot {
|
|
13
|
+
mid: string;
|
|
14
|
+
deviceId: string;
|
|
15
|
+
pub: string;
|
|
16
|
+
}
|
|
17
|
+
/** SF1: epochs stay far below any integer edge (u32 on the wire, safe integers in JS). */
|
|
18
|
+
export declare const MAX_EPOCH: number;
|
|
19
|
+
/** SF1: a received rotation may skip at most this many epochs ahead of the local one. */
|
|
20
|
+
export declare const MAX_EPOCH_SKIP = 8;
|
|
21
|
+
export declare const isEpoch: (x: unknown) => x is number;
|
|
22
|
+
/** Who may admit whom: the owner admits admins and members, an admin admits members, members admit nobody. */
|
|
23
|
+
export declare function canIssue(issuer: Role, subject: Role): boolean;
|
|
24
|
+
//# sourceMappingURL=admission.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../../src/web/admission.ts"],"names":[],"mappings":"AAKA,oHAAoH;AACpH,eAAO,MAAM,YAAY,QAAwB,CAAC;AAClD,eAAO,MAAM,UAAU,MAAO,OAAO,KAAG,CAAC,IAAI,MACC,CAAC;AAG/C,sHAAsH;AACtH,wBAAsB,YAAY,CACjC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,GACT,OAAO,CAAC,OAAO,CAAC,CAelB;AAED;;;GAGG;AACH,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhD,mGAAmG;AACnG,MAAM,WAAW,SAAS;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,0FAA0F;AAC1F,eAAO,MAAM,SAAS,QAAc,CAAC;AACrC,yFAAyF;AACzF,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,OAAO,MAAO,OAAO,KAAG,CAAC,IAAI,MACmC,CAAC;AAE9E,8GAA8G;AAC9G,wBAAgB,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAI7D"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Identity of mesh devices and the trust anchor. Membership and authority themselves live in web/trust (signed
|
|
2
|
+
// grants and revocations, see `secstate.ts`): this module only keeps what every layer shares.
|
|
3
|
+
import { deviceIdOf } from "./pq.js";
|
|
4
|
+
import { b64uDecode, isCanonicalB64u } from "./util.js";
|
|
5
|
+
/** A deviceId is the fingerprint of the device's ML-DSA-65 identity key (`deviceIdOf`): 43 base64url characters. */
|
|
6
|
+
export const DEVICE_ID_RE = /^[A-Za-z0-9_-]{43}$/;
|
|
7
|
+
export const isDeviceId = (x) => typeof x === "string" && DEVICE_ID_RE.test(x);
|
|
8
|
+
const fpCache = new Map();
|
|
9
|
+
/** True iff `deviceId` is the fingerprint of the base64url identity key `pub` (the binding every check relies on). */
|
|
10
|
+
export async function idMatchesPub(deviceId, pub) {
|
|
11
|
+
// R4-N3: a key is accepted only in its canonical encoding (the string is what web/trust documents carry)
|
|
12
|
+
if (!isDeviceId(deviceId) || typeof pub !== "string" || !isCanonicalB64u(pub))
|
|
13
|
+
return false;
|
|
14
|
+
let fp = fpCache.get(pub);
|
|
15
|
+
if (fp === undefined) {
|
|
16
|
+
try {
|
|
17
|
+
fp = await deviceIdOf(b64uDecode(pub));
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
if (fpCache.size >= 4096)
|
|
23
|
+
fpCache.clear();
|
|
24
|
+
fpCache.set(pub, fp);
|
|
25
|
+
}
|
|
26
|
+
return fp === deviceId;
|
|
27
|
+
}
|
|
28
|
+
/** SF1: epochs stay far below any integer edge (u32 on the wire, safe integers in JS). */
|
|
29
|
+
export const MAX_EPOCH = 2 ** 31 - 1;
|
|
30
|
+
/** SF1: a received rotation may skip at most this many epochs ahead of the local one. */
|
|
31
|
+
export const MAX_EPOCH_SKIP = 8;
|
|
32
|
+
export const isEpoch = (x) => typeof x === "number" && Number.isSafeInteger(x) && x >= 0 && x <= MAX_EPOCH;
|
|
33
|
+
/** Who may admit whom: the owner admits admins and members, an admin admits members, members admit nobody. */
|
|
34
|
+
export function canIssue(issuer, subject) {
|
|
35
|
+
if (subject === "owner")
|
|
36
|
+
return false;
|
|
37
|
+
if (issuer === "owner")
|
|
38
|
+
return true;
|
|
39
|
+
return issuer === "admin" && subject === "member";
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=admission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admission.js","sourceRoot":"","sources":["../../src/web/admission.ts"],"names":[],"mappings":"AAAA,+GAA+G;AAC/G,8FAA8F;AAC9F,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAExD,oHAAoH;AACpH,MAAM,CAAC,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAClD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAU,EAAe,EAAE,CACrD,OAAO,CAAC,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC1C,sHAAsH;AACtH,MAAM,CAAC,KAAK,UAAU,YAAY,CACjC,QAAgB,EAChB,GAAW;IAEX,yGAAyG;IACzG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;QAC5E,OAAO,KAAK,CAAC;IACd,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACtB,IAAI,CAAC;YACJ,EAAE,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI;YAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,EAAE,KAAK,QAAQ,CAAC;AACxB,CAAC;AAeD,0FAA0F;AAC1F,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACrC,yFAAyF;AACzF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAChC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAU,EAAe,EAAE,CAClD,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;AAE9E,8GAA8G;AAC9G,MAAM,UAAU,QAAQ,CAAC,MAAY,EAAE,OAAa;IACnD,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,MAAM,KAAK,OAAO,IAAI,OAAO,KAAK,QAAQ,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { equalBytes } from "./util.js";
|
|
2
|
+
export declare const NONCE_LEN = 12;
|
|
3
|
+
export declare function hkdf(ikm: Uint8Array, info: string, salt?: Uint8Array): Promise<Uint8Array>;
|
|
4
|
+
export declare function importAesKey(raw: Uint8Array): Promise<CryptoKey>;
|
|
5
|
+
/** Doc material = HKDF(meshKey, "swal-doc/v1|" + topic) (32 raw bytes). Never used directly to seal. */
|
|
6
|
+
export declare function deriveDocMaterial(meshKey: Uint8Array, topicName: string): Promise<Uint8Array>;
|
|
7
|
+
/** Sender key = HKDF(docMaterial, "swal-doc/v1|" + topic + "|sender|" + deviceId) -> AES-256-GCM. Each sender seals under its own key. */
|
|
8
|
+
export declare function deriveSenderKey(docMaterial: Uint8Array, topicName: string, deviceId: string): Promise<CryptoKey>;
|
|
9
|
+
/** Convenience (single-writer use / tests): the topic-level key without a sender component. */
|
|
10
|
+
export declare function deriveDocKey(meshKey: Uint8Array, topicName: string): Promise<CryptoKey>;
|
|
11
|
+
/** Test hook: position the counter of `key` (e.g. right before the wrap). */
|
|
12
|
+
export declare function __setNonceCounter(key: CryptoKey, n: number): void;
|
|
13
|
+
/** Returns nonce(12) | ciphertext+tag. */
|
|
14
|
+
export declare function sealUpdate(docKey: CryptoKey, bytes: Uint8Array, aad?: Uint8Array | string): Promise<Uint8Array>;
|
|
15
|
+
/** Throws on tampering / wrong key / wrong aad. */
|
|
16
|
+
export declare function openUpdate(docKey: CryptoKey, sealed: Uint8Array, aad?: Uint8Array | string): Promise<Uint8Array>;
|
|
17
|
+
export { equalBytes };
|
|
18
|
+
//# sourceMappingURL=crypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/web/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,UAAU,EAAqB,MAAM,WAAW,CAAC;AAEtE,eAAO,MAAM,SAAS,KAAK,CAAC;AAE5B,wBAAsB,IAAI,CACzB,GAAG,EAAE,UAAU,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,UAA+B,GACnC,OAAO,CAAC,UAAU,CAAC,CAUrB;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAKtE;AAED,wGAAwG;AACxG,wBAAsB,iBAAiB,CACtC,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC,CAErB;AAED,0IAA0I;AAC1I,wBAAsB,eAAe,CACpC,WAAW,EAAE,UAAU,EACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,SAAS,CAAC,CAIpB;AAED,+FAA+F;AAC/F,wBAAsB,YAAY,CACjC,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,CAAC,CAEpB;AAwBD,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAOjE;AAED,0CAA0C;AAC1C,wBAAsB,UAAU,CAC/B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,UAAU,EACjB,GAAG,GAAE,UAAU,GAAG,MAA0B,GAC1C,OAAO,CAAC,UAAU,CAAC,CASrB;AAED,mDAAmD;AACnD,wBAAsB,UAAU,CAC/B,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,EAClB,GAAG,GAAE,UAAU,GAAG,MAA0B,GAC1C,OAAO,CAAC,UAAU,CAAC,CAcrB;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { bs, concat, equalBytes, randomBytes, utf8 } from "./util.js";
|
|
2
|
+
export const NONCE_LEN = 12;
|
|
3
|
+
export async function hkdf(ikm, info, salt = new Uint8Array(32)) {
|
|
4
|
+
const k = await crypto.subtle.importKey("raw", bs(ikm), "HKDF", false, [
|
|
5
|
+
"deriveBits",
|
|
6
|
+
]);
|
|
7
|
+
const bits = await crypto.subtle.deriveBits({ name: "HKDF", hash: "SHA-256", salt: bs(salt), info: bs(utf8(info)) }, k, 256);
|
|
8
|
+
return new Uint8Array(bits);
|
|
9
|
+
}
|
|
10
|
+
export async function importAesKey(raw) {
|
|
11
|
+
return crypto.subtle.importKey("raw", bs(raw), "AES-GCM", false, [
|
|
12
|
+
"encrypt",
|
|
13
|
+
"decrypt",
|
|
14
|
+
]);
|
|
15
|
+
}
|
|
16
|
+
/** Doc material = HKDF(meshKey, "swal-doc/v1|" + topic) (32 raw bytes). Never used directly to seal. */
|
|
17
|
+
export async function deriveDocMaterial(meshKey, topicName) {
|
|
18
|
+
return hkdf(meshKey, `swal-doc/v1|${topicName}`);
|
|
19
|
+
}
|
|
20
|
+
/** Sender key = HKDF(docMaterial, "swal-doc/v1|" + topic + "|sender|" + deviceId) -> AES-256-GCM. Each sender seals under its own key. */
|
|
21
|
+
export async function deriveSenderKey(docMaterial, topicName, deviceId) {
|
|
22
|
+
return importAesKey(await hkdf(docMaterial, `swal-doc/v1|${topicName}|sender|${deviceId}`));
|
|
23
|
+
}
|
|
24
|
+
/** Convenience (single-writer use / tests): the topic-level key without a sender component. */
|
|
25
|
+
export async function deriveDocKey(meshKey, topicName) {
|
|
26
|
+
return importAesKey(await deriveDocMaterial(meshKey, topicName));
|
|
27
|
+
}
|
|
28
|
+
// Nonce = 8B random prefix | 4B big-endian counter. A sealing key is already unique per
|
|
29
|
+
// sender (see deriveSenderKey); the random prefix additionally separates sessions/reloads
|
|
30
|
+
// of the same sender, and the prefix is regenerated before the 32-bit counter can wrap.
|
|
31
|
+
const COUNTER_MAX = 0xffffffff;
|
|
32
|
+
const counters = new WeakMap();
|
|
33
|
+
function nextNonce(key) {
|
|
34
|
+
let st = counters.get(key);
|
|
35
|
+
if (!st) {
|
|
36
|
+
st = { prefix: randomBytes(8), n: 0 };
|
|
37
|
+
counters.set(key, st);
|
|
38
|
+
}
|
|
39
|
+
if (st.n >= COUNTER_MAX) {
|
|
40
|
+
st.prefix = randomBytes(8);
|
|
41
|
+
st.n = 0;
|
|
42
|
+
}
|
|
43
|
+
st.n += 1;
|
|
44
|
+
const nonce = new Uint8Array(NONCE_LEN);
|
|
45
|
+
nonce.set(st.prefix, 0);
|
|
46
|
+
new DataView(nonce.buffer).setUint32(8, st.n, false);
|
|
47
|
+
return nonce;
|
|
48
|
+
}
|
|
49
|
+
/** Test hook: position the counter of `key` (e.g. right before the wrap). */
|
|
50
|
+
export function __setNonceCounter(key, n) {
|
|
51
|
+
let st = counters.get(key);
|
|
52
|
+
if (!st) {
|
|
53
|
+
st = { prefix: randomBytes(8), n: 0 };
|
|
54
|
+
counters.set(key, st);
|
|
55
|
+
}
|
|
56
|
+
st.n = n;
|
|
57
|
+
}
|
|
58
|
+
/** Returns nonce(12) | ciphertext+tag. */
|
|
59
|
+
export async function sealUpdate(docKey, bytes, aad = new Uint8Array(0)) {
|
|
60
|
+
const nonce = nextNonce(docKey);
|
|
61
|
+
const additionalData = typeof aad === "string" ? utf8(aad) : aad;
|
|
62
|
+
const ct = await crypto.subtle.encrypt({ name: "AES-GCM", iv: bs(nonce), additionalData: bs(additionalData) }, docKey, bs(bytes));
|
|
63
|
+
return concat(nonce, new Uint8Array(ct));
|
|
64
|
+
}
|
|
65
|
+
/** Throws on tampering / wrong key / wrong aad. */
|
|
66
|
+
export async function openUpdate(docKey, sealed, aad = new Uint8Array(0)) {
|
|
67
|
+
if (sealed.length < NONCE_LEN + 16)
|
|
68
|
+
throw new Error("sealed payload too short");
|
|
69
|
+
const additionalData = typeof aad === "string" ? utf8(aad) : aad;
|
|
70
|
+
const pt = await crypto.subtle.decrypt({
|
|
71
|
+
name: "AES-GCM",
|
|
72
|
+
iv: bs(sealed.subarray(0, NONCE_LEN)),
|
|
73
|
+
additionalData: bs(additionalData),
|
|
74
|
+
}, docKey, bs(sealed.subarray(NONCE_LEN)));
|
|
75
|
+
return new Uint8Array(pt);
|
|
76
|
+
}
|
|
77
|
+
export { equalBytes };
|
|
78
|
+
//# sourceMappingURL=crypto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/web/crypto.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Mesh } from "./provider.js";
|
|
2
|
+
export declare const HEALTH_SCHEMA_PREFIX = "swal.health/v1";
|
|
3
|
+
export interface HealthRecord {
|
|
4
|
+
/** e.g. "swal.health/v1" or "swal.health/v1.weight" */
|
|
5
|
+
schema: string;
|
|
6
|
+
[k: string]: unknown;
|
|
7
|
+
}
|
|
8
|
+
export declare function isHealthRecord(r: unknown): r is HealthRecord;
|
|
9
|
+
/** Topic carrying cross-app health records for one subject (`subj_<ULID>`). */
|
|
10
|
+
export declare const exchangeTopic: (subject: string) => string;
|
|
11
|
+
export interface Exchange {
|
|
12
|
+
topic: string;
|
|
13
|
+
send(record: HealthRecord): string;
|
|
14
|
+
onReceive(cb: (record: HealthRecord) => void): () => void;
|
|
15
|
+
destroy(): void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Cross-app exchange over a dedicated mesh (created with topic = exchangeTopic(subject)).
|
|
19
|
+
* Records live in an append-only Y.Array 'records'; receivers see only entries added remotely
|
|
20
|
+
* (or by any writer after subscription), de-duplicated by record id.
|
|
21
|
+
*/
|
|
22
|
+
export declare function exchange(mesh: Mesh, doc: import("yjs").Doc, subject: string): Exchange;
|
|
23
|
+
//# sourceMappingURL=exchange.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exchange.d.ts","sourceRoot":"","sources":["../../src/web/exchange.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAErD,MAAM,WAAW,YAAY;IAC5B,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACrB;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAO5D;AAED,+EAA+E;AAC/E,eAAO,MAAM,aAAa,YAAa,MAAM,WACR,CAAC;AAEtC,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC;IACnC,SAAS,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC1D,OAAO,IAAI,IAAI,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CACvB,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,OAAO,KAAK,EAAE,GAAG,EACtB,OAAO,EAAE,MAAM,GACb,QAAQ,CAyCV"}
|