@swal/edge-mesh 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (464) hide show
  1. package/LICENSE +128 -0
  2. package/NOTICE +37 -0
  3. package/README.md +470 -2
  4. package/dist/adapters/gpu-agent/index.d.ts +61 -0
  5. package/dist/adapters/gpu-agent/index.d.ts.map +1 -0
  6. package/dist/adapters/gpu-agent/index.js +364 -0
  7. package/dist/adapters/gpu-agent/index.js.map +1 -0
  8. package/dist/adapters/maloca-salud/citas-distribuidas.d.ts +19 -0
  9. package/dist/adapters/maloca-salud/citas-distribuidas.d.ts.map +1 -0
  10. package/dist/adapters/maloca-salud/citas-distribuidas.js +51 -0
  11. package/dist/adapters/maloca-salud/citas-distribuidas.js.map +1 -0
  12. package/dist/adapters/maloca-salud/eps-bridge.d.ts +15 -0
  13. package/dist/adapters/maloca-salud/eps-bridge.d.ts.map +1 -0
  14. package/dist/adapters/maloca-salud/eps-bridge.js +27 -0
  15. package/dist/adapters/maloca-salud/eps-bridge.js.map +1 -0
  16. package/dist/adapters/maloca-salud/patient-profile.d.ts +20 -0
  17. package/dist/adapters/maloca-salud/patient-profile.d.ts.map +1 -0
  18. package/dist/adapters/maloca-salud/patient-profile.js +36 -0
  19. package/dist/adapters/maloca-salud/patient-profile.js.map +1 -0
  20. package/dist/adapters/maloca-salud/types.d.ts +40 -0
  21. package/dist/adapters/maloca-salud/types.d.ts.map +1 -0
  22. package/dist/adapters/maloca-salud/types.js +2 -0
  23. package/dist/adapters/maloca-salud/types.js.map +1 -0
  24. package/dist/adapters/maloca-veeduria/contract-bridge.d.ts +31 -0
  25. package/dist/adapters/maloca-veeduria/contract-bridge.d.ts.map +1 -0
  26. package/dist/adapters/maloca-veeduria/contract-bridge.js +103 -0
  27. package/dist/adapters/maloca-veeduria/contract-bridge.js.map +1 -0
  28. package/dist/adapters/maloca-veeduria/evidentia-veeduria.d.ts +14 -0
  29. package/dist/adapters/maloca-veeduria/evidentia-veeduria.d.ts.map +1 -0
  30. package/dist/adapters/maloca-veeduria/evidentia-veeduria.js +40 -0
  31. package/dist/adapters/maloca-veeduria/evidentia-veeduria.js.map +1 -0
  32. package/dist/adapters/maloca-veeduria/licitante-profile.d.ts +21 -0
  33. package/dist/adapters/maloca-veeduria/licitante-profile.d.ts.map +1 -0
  34. package/dist/adapters/maloca-veeduria/licitante-profile.js +58 -0
  35. package/dist/adapters/maloca-veeduria/licitante-profile.js.map +1 -0
  36. package/dist/adapters/maloca-veeduria/types.d.ts +30 -0
  37. package/dist/adapters/maloca-veeduria/types.d.ts.map +1 -0
  38. package/dist/adapters/maloca-veeduria/types.js +2 -0
  39. package/dist/adapters/maloca-veeduria/types.js.map +1 -0
  40. package/dist/adapters/maloca-xavier/agent-profile.d.ts +32 -0
  41. package/dist/adapters/maloca-xavier/agent-profile.d.ts.map +1 -0
  42. package/dist/adapters/maloca-xavier/agent-profile.js +56 -0
  43. package/dist/adapters/maloca-xavier/agent-profile.js.map +1 -0
  44. package/dist/adapters/maloca-xavier/codegraph-bridge.d.ts +27 -0
  45. package/dist/adapters/maloca-xavier/codegraph-bridge.d.ts.map +1 -0
  46. package/dist/adapters/maloca-xavier/codegraph-bridge.js +58 -0
  47. package/dist/adapters/maloca-xavier/codegraph-bridge.js.map +1 -0
  48. package/dist/adapters/maloca-xavier/llm-router.d.ts +25 -0
  49. package/dist/adapters/maloca-xavier/llm-router.d.ts.map +1 -0
  50. package/dist/adapters/maloca-xavier/llm-router.js +58 -0
  51. package/dist/adapters/maloca-xavier/llm-router.js.map +1 -0
  52. package/dist/authz/index.d.ts +81 -0
  53. package/dist/authz/index.d.ts.map +1 -0
  54. package/dist/authz/index.js +271 -0
  55. package/dist/authz/index.js.map +1 -0
  56. package/dist/chat/index.d.ts +138 -0
  57. package/dist/chat/index.d.ts.map +1 -0
  58. package/dist/chat/index.js +394 -0
  59. package/dist/chat/index.js.map +1 -0
  60. package/dist/chat/offline-queue.d.ts +32 -0
  61. package/dist/chat/offline-queue.d.ts.map +1 -0
  62. package/dist/chat/offline-queue.js +93 -0
  63. package/dist/chat/offline-queue.js.map +1 -0
  64. package/dist/core/DefaultEdgeMeshNode.d.ts +17 -0
  65. package/dist/core/DefaultEdgeMeshNode.d.ts.map +1 -0
  66. package/dist/core/DefaultEdgeMeshNode.js +57 -0
  67. package/dist/core/DefaultEdgeMeshNode.js.map +1 -0
  68. package/dist/core/node.d.ts +26 -0
  69. package/dist/core/node.d.ts.map +1 -0
  70. package/dist/core/node.js +16 -0
  71. package/dist/core/node.js.map +1 -0
  72. package/dist/edge-mesh.d.ts +139 -0
  73. package/dist/edge-mesh.d.ts.map +1 -0
  74. package/dist/edge-mesh.js +1146 -0
  75. package/dist/edge-mesh.js.map +1 -0
  76. package/dist/gos/GosBridge.d.ts +49 -0
  77. package/dist/gos/GosBridge.d.ts.map +1 -0
  78. package/dist/gos/GosBridge.js +133 -0
  79. package/dist/gos/GosBridge.js.map +1 -0
  80. package/dist/governance/authority.d.ts +44 -0
  81. package/dist/governance/authority.d.ts.map +1 -0
  82. package/dist/governance/authority.js +123 -0
  83. package/dist/governance/authority.js.map +1 -0
  84. package/dist/governance/index.d.ts +66 -0
  85. package/dist/governance/index.d.ts.map +1 -0
  86. package/dist/governance/index.js +210 -0
  87. package/dist/governance/index.js.map +1 -0
  88. package/dist/governance/merge.d.ts +31 -0
  89. package/dist/governance/merge.d.ts.map +1 -0
  90. package/dist/governance/merge.js +167 -0
  91. package/dist/governance/merge.js.map +1 -0
  92. package/dist/identity/index.d.ts +199 -0
  93. package/dist/identity/index.d.ts.map +1 -0
  94. package/dist/identity/index.js +415 -0
  95. package/dist/identity/index.js.map +1 -0
  96. package/dist/index.d.ts +71 -0
  97. package/dist/index.d.ts.map +1 -0
  98. package/dist/index.js +56 -0
  99. package/dist/index.js.map +1 -0
  100. package/dist/maloca/backoffice.d.ts +31 -0
  101. package/dist/maloca/backoffice.d.ts.map +1 -0
  102. package/dist/maloca/backoffice.js +40 -0
  103. package/dist/maloca/backoffice.js.map +1 -0
  104. package/dist/maloca/event-bus.d.ts +60 -0
  105. package/dist/maloca/event-bus.d.ts.map +1 -0
  106. package/dist/maloca/event-bus.js +175 -0
  107. package/dist/maloca/event-bus.js.map +1 -0
  108. package/dist/maloca/evidentia.d.ts +136 -0
  109. package/dist/maloca/evidentia.d.ts.map +1 -0
  110. package/dist/maloca/evidentia.js +447 -0
  111. package/dist/maloca/evidentia.js.map +1 -0
  112. package/dist/maloca/gateway/api.d.ts +146 -0
  113. package/dist/maloca/gateway/api.d.ts.map +1 -0
  114. package/dist/maloca/gateway/api.js +228 -0
  115. package/dist/maloca/gateway/api.js.map +1 -0
  116. package/dist/maloca/gateway/auth.d.ts +20 -0
  117. package/dist/maloca/gateway/auth.d.ts.map +1 -0
  118. package/dist/maloca/gateway/auth.js +115 -0
  119. package/dist/maloca/gateway/auth.js.map +1 -0
  120. package/dist/maloca/gateway/dashboard.d.ts +42 -0
  121. package/dist/maloca/gateway/dashboard.d.ts.map +1 -0
  122. package/dist/maloca/gateway/dashboard.js +67 -0
  123. package/dist/maloca/gateway/dashboard.js.map +1 -0
  124. package/dist/maloca/gateway/websocket.d.ts +34 -0
  125. package/dist/maloca/gateway/websocket.d.ts.map +1 -0
  126. package/dist/maloca/gateway/websocket.js +71 -0
  127. package/dist/maloca/gateway/websocket.js.map +1 -0
  128. package/dist/maloca/karma.d.ts +165 -0
  129. package/dist/maloca/karma.d.ts.map +1 -0
  130. package/dist/maloca/karma.js +307 -0
  131. package/dist/maloca/karma.js.map +1 -0
  132. package/dist/maloca/kernel.d.ts +20 -0
  133. package/dist/maloca/kernel.d.ts.map +1 -0
  134. package/dist/maloca/kernel.js +76 -0
  135. package/dist/maloca/kernel.js.map +1 -0
  136. package/dist/maloca/metadata.d.ts +30 -0
  137. package/dist/maloca/metadata.d.ts.map +1 -0
  138. package/dist/maloca/metadata.js +80 -0
  139. package/dist/maloca/metadata.js.map +1 -0
  140. package/dist/maloca/perfil.d.ts +57 -0
  141. package/dist/maloca/perfil.d.ts.map +1 -0
  142. package/dist/maloca/perfil.js +113 -0
  143. package/dist/maloca/perfil.js.map +1 -0
  144. package/dist/maloca/plugin-registry.d.ts +27 -0
  145. package/dist/maloca/plugin-registry.d.ts.map +1 -0
  146. package/dist/maloca/plugin-registry.js +76 -0
  147. package/dist/maloca/plugin-registry.js.map +1 -0
  148. package/dist/maloca/polygon-bridge.d.ts +63 -0
  149. package/dist/maloca/polygon-bridge.d.ts.map +1 -0
  150. package/dist/maloca/polygon-bridge.js +198 -0
  151. package/dist/maloca/polygon-bridge.js.map +1 -0
  152. package/dist/maloca/types.d.ts +44 -0
  153. package/dist/maloca/types.d.ts.map +1 -0
  154. package/dist/maloca/types.js +2 -0
  155. package/dist/maloca/types.js.map +1 -0
  156. package/dist/medico/aval.d.ts +149 -0
  157. package/dist/medico/aval.d.ts.map +1 -0
  158. package/dist/medico/aval.js +281 -0
  159. package/dist/medico/aval.js.map +1 -0
  160. package/dist/medico/canonica.d.ts +96 -0
  161. package/dist/medico/canonica.d.ts.map +1 -0
  162. package/dist/medico/canonica.js +148 -0
  163. package/dist/medico/canonica.js.map +1 -0
  164. package/dist/medico/credencial.d.ts +160 -0
  165. package/dist/medico/credencial.d.ts.map +1 -0
  166. package/dist/medico/credencial.js +240 -0
  167. package/dist/medico/credencial.js.map +1 -0
  168. package/dist/medico/index.d.ts +36 -0
  169. package/dist/medico/index.d.ts.map +1 -0
  170. package/dist/medico/index.js +39 -0
  171. package/dist/medico/index.js.map +1 -0
  172. package/dist/medico/malla.d.ts +218 -0
  173. package/dist/medico/malla.d.ts.map +1 -0
  174. package/dist/medico/malla.js +347 -0
  175. package/dist/medico/malla.js.map +1 -0
  176. package/dist/medico/registro-profesional.d.ts +84 -0
  177. package/dist/medico/registro-profesional.d.ts.map +1 -0
  178. package/dist/medico/registro-profesional.js +135 -0
  179. package/dist/medico/registro-profesional.js.map +1 -0
  180. package/dist/medico/registro.d.ts +149 -0
  181. package/dist/medico/registro.d.ts.map +1 -0
  182. package/dist/medico/registro.js +173 -0
  183. package/dist/medico/registro.js.map +1 -0
  184. package/dist/medico/types.d.ts +287 -0
  185. package/dist/medico/types.d.ts.map +1 -0
  186. package/dist/medico/types.js +135 -0
  187. package/dist/medico/types.js.map +1 -0
  188. package/dist/medico/verificacion-registro.d.ts +300 -0
  189. package/dist/medico/verificacion-registro.d.ts.map +1 -0
  190. package/dist/medico/verificacion-registro.js +319 -0
  191. package/dist/medico/verificacion-registro.js.map +1 -0
  192. package/dist/mesh/index.d.ts +457 -0
  193. package/dist/mesh/index.d.ts.map +1 -0
  194. package/dist/mesh/index.js +929 -0
  195. package/dist/mesh/index.js.map +1 -0
  196. package/dist/namespaces/encrypted-plugin.d.ts +56 -0
  197. package/dist/namespaces/encrypted-plugin.d.ts.map +1 -0
  198. package/dist/namespaces/encrypted-plugin.js +173 -0
  199. package/dist/namespaces/encrypted-plugin.js.map +1 -0
  200. package/dist/namespaces/index.d.ts +52 -0
  201. package/dist/namespaces/index.d.ts.map +1 -0
  202. package/dist/namespaces/index.js +134 -0
  203. package/dist/namespaces/index.js.map +1 -0
  204. package/dist/namespaces/ivn-proofs.d.ts +54 -0
  205. package/dist/namespaces/ivn-proofs.d.ts.map +1 -0
  206. package/dist/namespaces/ivn-proofs.js +162 -0
  207. package/dist/namespaces/ivn-proofs.js.map +1 -0
  208. package/dist/namespaces/offers-gossip.d.ts +95 -0
  209. package/dist/namespaces/offers-gossip.d.ts.map +1 -0
  210. package/dist/namespaces/offers-gossip.js +213 -0
  211. package/dist/namespaces/offers-gossip.js.map +1 -0
  212. package/dist/node-memory/idb-store.d.ts +22 -0
  213. package/dist/node-memory/idb-store.d.ts.map +1 -0
  214. package/dist/node-memory/idb-store.js +154 -0
  215. package/dist/node-memory/idb-store.js.map +1 -0
  216. package/dist/node-memory/index.d.ts +14 -0
  217. package/dist/node-memory/index.d.ts.map +1 -0
  218. package/dist/node-memory/index.js +159 -0
  219. package/dist/node-memory/index.js.map +1 -0
  220. package/dist/node-memory/sync-flush.d.ts +11 -0
  221. package/dist/node-memory/sync-flush.d.ts.map +1 -0
  222. package/dist/node-memory/sync-flush.js +37 -0
  223. package/dist/node-memory/sync-flush.js.map +1 -0
  224. package/dist/node-memory/types.d.ts +34 -0
  225. package/dist/node-memory/types.d.ts.map +1 -0
  226. package/dist/node-memory/types.js +2 -0
  227. package/dist/node-memory/types.js.map +1 -0
  228. package/dist/node-memory/xavier-store.d.ts +12 -0
  229. package/dist/node-memory/xavier-store.d.ts.map +1 -0
  230. package/dist/node-memory/xavier-store.js +75 -0
  231. package/dist/node-memory/xavier-store.js.map +1 -0
  232. package/dist/op-log/index.d.ts +49 -0
  233. package/dist/op-log/index.d.ts.map +1 -0
  234. package/dist/op-log/index.js +190 -0
  235. package/dist/op-log/index.js.map +1 -0
  236. package/dist/presence/health.d.ts +54 -0
  237. package/dist/presence/health.d.ts.map +1 -0
  238. package/dist/presence/health.js +139 -0
  239. package/dist/presence/health.js.map +1 -0
  240. package/dist/presence/index.d.ts +85 -0
  241. package/dist/presence/index.d.ts.map +1 -0
  242. package/dist/presence/index.js +255 -0
  243. package/dist/presence/index.js.map +1 -0
  244. package/dist/presence/peer-health.d.ts +40 -0
  245. package/dist/presence/peer-health.d.ts.map +1 -0
  246. package/dist/presence/peer-health.js +118 -0
  247. package/dist/presence/peer-health.js.map +1 -0
  248. package/dist/protocol/canonical.d.ts +10 -0
  249. package/dist/protocol/canonical.d.ts.map +1 -0
  250. package/dist/protocol/canonical.js +32 -0
  251. package/dist/protocol/canonical.js.map +1 -0
  252. package/dist/protocol/crypto.d.ts +299 -0
  253. package/dist/protocol/crypto.d.ts.map +1 -0
  254. package/dist/protocol/crypto.js +739 -0
  255. package/dist/protocol/crypto.js.map +1 -0
  256. package/dist/protocol/index.d.ts +30 -0
  257. package/dist/protocol/index.d.ts.map +1 -0
  258. package/dist/protocol/index.js +116 -0
  259. package/dist/protocol/index.js.map +1 -0
  260. package/dist/protocol/utils.d.ts +5 -0
  261. package/dist/protocol/utils.d.ts.map +1 -0
  262. package/dist/protocol/utils.js +27 -0
  263. package/dist/protocol/utils.js.map +1 -0
  264. package/dist/salones/manager.d.ts +100 -0
  265. package/dist/salones/manager.d.ts.map +1 -0
  266. package/dist/salones/manager.js +240 -0
  267. package/dist/salones/manager.js.map +1 -0
  268. package/dist/security/rate-limiter.d.ts +13 -0
  269. package/dist/security/rate-limiter.d.ts.map +1 -0
  270. package/dist/security/rate-limiter.js +32 -0
  271. package/dist/security/rate-limiter.js.map +1 -0
  272. package/dist/snapshot/index.d.ts +90 -0
  273. package/dist/snapshot/index.d.ts.map +1 -0
  274. package/dist/snapshot/index.js +189 -0
  275. package/dist/snapshot/index.js.map +1 -0
  276. package/dist/storage/index.d.ts +49 -0
  277. package/dist/storage/index.d.ts.map +1 -0
  278. package/dist/storage/index.js +176 -0
  279. package/dist/storage/index.js.map +1 -0
  280. package/dist/storage/optimizer.d.ts +28 -0
  281. package/dist/storage/optimizer.d.ts.map +1 -0
  282. package/dist/storage/optimizer.js +50 -0
  283. package/dist/storage/optimizer.js.map +1 -0
  284. package/dist/storage/ydoc-persistence.d.ts +27 -0
  285. package/dist/storage/ydoc-persistence.d.ts.map +1 -0
  286. package/dist/storage/ydoc-persistence.js +128 -0
  287. package/dist/storage/ydoc-persistence.js.map +1 -0
  288. package/dist/sync/ChunkSyncManager.d.ts +41 -0
  289. package/dist/sync/ChunkSyncManager.d.ts.map +1 -0
  290. package/dist/sync/ChunkSyncManager.js +115 -0
  291. package/dist/sync/ChunkSyncManager.js.map +1 -0
  292. package/dist/sync/conflict-resolver.d.ts +33 -0
  293. package/dist/sync/conflict-resolver.d.ts.map +1 -0
  294. package/dist/sync/conflict-resolver.js +54 -0
  295. package/dist/sync/conflict-resolver.js.map +1 -0
  296. package/dist/sync/engine.d.ts +168 -0
  297. package/dist/sync/engine.d.ts.map +1 -0
  298. package/dist/sync/engine.js +315 -0
  299. package/dist/sync/engine.js.map +1 -0
  300. package/dist/sync/index.d.ts +3 -0
  301. package/dist/sync/index.d.ts.map +1 -0
  302. package/dist/sync/index.js +3 -0
  303. package/dist/sync/index.js.map +1 -0
  304. package/dist/transport/TorTransportAdapter.d.ts +70 -0
  305. package/dist/transport/TorTransportAdapter.d.ts.map +1 -0
  306. package/dist/transport/TorTransportAdapter.js +192 -0
  307. package/dist/transport/TorTransportAdapter.js.map +1 -0
  308. package/dist/transport/memory.d.ts +31 -0
  309. package/dist/transport/memory.d.ts.map +1 -0
  310. package/dist/transport/memory.js +114 -0
  311. package/dist/transport/memory.js.map +1 -0
  312. package/dist/transport/peerjs.d.ts +45 -0
  313. package/dist/transport/peerjs.d.ts.map +1 -0
  314. package/dist/transport/peerjs.js +301 -0
  315. package/dist/transport/peerjs.js.map +1 -0
  316. package/dist/transport/pqc-handshake.d.ts +72 -0
  317. package/dist/transport/pqc-handshake.d.ts.map +1 -0
  318. package/dist/transport/pqc-handshake.js +129 -0
  319. package/dist/transport/pqc-handshake.js.map +1 -0
  320. package/dist/transport/relay-config.d.ts +11 -0
  321. package/dist/transport/relay-config.d.ts.map +1 -0
  322. package/dist/transport/relay-config.js +48 -0
  323. package/dist/transport/relay-config.js.map +1 -0
  324. package/dist/transport/relay-server.d.ts +37 -0
  325. package/dist/transport/relay-server.d.ts.map +1 -0
  326. package/dist/transport/relay-server.js +230 -0
  327. package/dist/transport/relay-server.js.map +1 -0
  328. package/dist/transport/tor.d.ts +47 -0
  329. package/dist/transport/tor.d.ts.map +1 -0
  330. package/dist/transport/tor.js +158 -0
  331. package/dist/transport/tor.js.map +1 -0
  332. package/dist/transport/types.d.ts +34 -0
  333. package/dist/transport/types.d.ts.map +1 -0
  334. package/dist/transport/types.js +2 -0
  335. package/dist/transport/types.js.map +1 -0
  336. package/dist/types/index.d.ts +293 -0
  337. package/dist/types/index.d.ts.map +1 -0
  338. package/dist/types/index.js +73 -0
  339. package/dist/types/index.js.map +1 -0
  340. package/dist/web/admission.d.ts +24 -0
  341. package/dist/web/admission.d.ts.map +1 -0
  342. package/dist/web/admission.js +41 -0
  343. package/dist/web/admission.js.map +1 -0
  344. package/dist/web/crypto.d.ts +18 -0
  345. package/dist/web/crypto.d.ts.map +1 -0
  346. package/dist/web/crypto.js +78 -0
  347. package/dist/web/crypto.js.map +1 -0
  348. package/dist/web/exchange.d.ts +23 -0
  349. package/dist/web/exchange.d.ts.map +1 -0
  350. package/dist/web/exchange.js +54 -0
  351. package/dist/web/exchange.js.map +1 -0
  352. package/dist/web/fragment.d.ts +58 -0
  353. package/dist/web/fragment.d.ts.map +1 -0
  354. package/dist/web/fragment.js +198 -0
  355. package/dist/web/fragment.js.map +1 -0
  356. package/dist/web/index.d.ts +25 -0
  357. package/dist/web/index.d.ts.map +1 -0
  358. package/dist/web/index.js +14 -0
  359. package/dist/web/index.js.map +1 -0
  360. package/dist/web/merge/index.d.ts +104 -0
  361. package/dist/web/merge/index.d.ts.map +1 -0
  362. package/dist/web/merge/index.js +236 -0
  363. package/dist/web/merge/index.js.map +1 -0
  364. package/dist/web/oplog/hlc.d.ts +19 -0
  365. package/dist/web/oplog/hlc.d.ts.map +1 -0
  366. package/dist/web/oplog/hlc.js +39 -0
  367. package/dist/web/oplog/hlc.js.map +1 -0
  368. package/dist/web/oplog/index.d.ts +10 -0
  369. package/dist/web/oplog/index.d.ts.map +1 -0
  370. package/dist/web/oplog/index.js +6 -0
  371. package/dist/web/oplog/index.js.map +1 -0
  372. package/dist/web/oplog/log.d.ts +182 -0
  373. package/dist/web/oplog/log.d.ts.map +1 -0
  374. package/dist/web/oplog/log.js +693 -0
  375. package/dist/web/oplog/log.js.map +1 -0
  376. package/dist/web/oplog/store.d.ts +40 -0
  377. package/dist/web/oplog/store.d.ts.map +1 -0
  378. package/dist/web/oplog/store.js +85 -0
  379. package/dist/web/oplog/store.js.map +1 -0
  380. package/dist/web/oplog/sync.d.ts +54 -0
  381. package/dist/web/oplog/sync.d.ts.map +1 -0
  382. package/dist/web/oplog/sync.js +162 -0
  383. package/dist/web/oplog/sync.js.map +1 -0
  384. package/dist/web/oplog/types.d.ts +119 -0
  385. package/dist/web/oplog/types.d.ts.map +1 -0
  386. package/dist/web/oplog/types.js +2 -0
  387. package/dist/web/oplog/types.js.map +1 -0
  388. package/dist/web/pairing.d.ts +186 -0
  389. package/dist/web/pairing.d.ts.map +1 -0
  390. package/dist/web/pairing.js +395 -0
  391. package/dist/web/pairing.js.map +1 -0
  392. package/dist/web/pq.d.ts +36 -0
  393. package/dist/web/pq.d.ts.map +1 -0
  394. package/dist/web/pq.js +59 -0
  395. package/dist/web/pq.js.map +1 -0
  396. package/dist/web/provider.d.ts +188 -0
  397. package/dist/web/provider.d.ts.map +1 -0
  398. package/dist/web/provider.js +2042 -0
  399. package/dist/web/provider.js.map +1 -0
  400. package/dist/web/rooms.d.ts +20 -0
  401. package/dist/web/rooms.d.ts.map +1 -0
  402. package/dist/web/rooms.js +51 -0
  403. package/dist/web/rooms.js.map +1 -0
  404. package/dist/web/rotation.d.ts +73 -0
  405. package/dist/web/rotation.d.ts.map +1 -0
  406. package/dist/web/rotation.js +130 -0
  407. package/dist/web/rotation.js.map +1 -0
  408. package/dist/web/secstate.d.ts +213 -0
  409. package/dist/web/secstate.d.ts.map +1 -0
  410. package/dist/web/secstate.js +789 -0
  411. package/dist/web/secstate.js.map +1 -0
  412. package/dist/web/store.d.ts +9 -0
  413. package/dist/web/store.d.ts.map +1 -0
  414. package/dist/web/store.js +32 -0
  415. package/dist/web/store.js.map +1 -0
  416. package/dist/web/transports/loopback.d.ts +11 -0
  417. package/dist/web/transports/loopback.d.ts.map +1 -0
  418. package/dist/web/transports/loopback.js +97 -0
  419. package/dist/web/transports/loopback.js.map +1 -0
  420. package/dist/web/transports/qr-sdp.d.ts +27 -0
  421. package/dist/web/transports/qr-sdp.d.ts.map +1 -0
  422. package/dist/web/transports/qr-sdp.js +131 -0
  423. package/dist/web/transports/qr-sdp.js.map +1 -0
  424. package/dist/web/transports/ws.d.ts +12 -0
  425. package/dist/web/transports/ws.d.ts.map +1 -0
  426. package/dist/web/transports/ws.js +139 -0
  427. package/dist/web/transports/ws.js.map +1 -0
  428. package/dist/web/trust/canonical.d.ts +8 -0
  429. package/dist/web/trust/canonical.d.ts.map +1 -0
  430. package/dist/web/trust/canonical.js +27 -0
  431. package/dist/web/trust/canonical.js.map +1 -0
  432. package/dist/web/trust/docs.d.ts +51 -0
  433. package/dist/web/trust/docs.d.ts.map +1 -0
  434. package/dist/web/trust/docs.js +170 -0
  435. package/dist/web/trust/docs.js.map +1 -0
  436. package/dist/web/trust/index.d.ts +10 -0
  437. package/dist/web/trust/index.d.ts.map +1 -0
  438. package/dist/web/trust/index.js +7 -0
  439. package/dist/web/trust/index.js.map +1 -0
  440. package/dist/web/trust/keys.d.ts +37 -0
  441. package/dist/web/trust/keys.d.ts.map +1 -0
  442. package/dist/web/trust/keys.js +75 -0
  443. package/dist/web/trust/keys.js.map +1 -0
  444. package/dist/web/trust/store.d.ts +150 -0
  445. package/dist/web/trust/store.d.ts.map +1 -0
  446. package/dist/web/trust/store.js +587 -0
  447. package/dist/web/trust/store.js.map +1 -0
  448. package/dist/web/trust/types.d.ts +134 -0
  449. package/dist/web/trust/types.d.ts.map +1 -0
  450. package/dist/web/trust/types.js +4 -0
  451. package/dist/web/trust/types.js.map +1 -0
  452. package/dist/web/types.d.ts +115 -0
  453. package/dist/web/types.d.ts.map +1 -0
  454. package/dist/web/types.js +2 -0
  455. package/dist/web/types.js.map +1 -0
  456. package/dist/web/util.d.ts +12 -0
  457. package/dist/web/util.d.ts.map +1 -0
  458. package/dist/web/util.js +54 -0
  459. package/dist/web/util.js.map +1 -0
  460. package/dist/web/webrtc.d.ts +35 -0
  461. package/dist/web/webrtc.d.ts.map +1 -0
  462. package/dist/web/webrtc.js +304 -0
  463. package/dist/web/webrtc.js.map +1 -0
  464. package/package.json +138 -4
@@ -0,0 +1,162 @@
1
+ /// <reference types="node" />
2
+ import crypto from "node:crypto";
3
+ import { ml_dsa65 } from "@noble/post-quantum/ml-dsa.js";
4
+ import { ml_kem768 } from "@noble/post-quantum/ml-kem.js";
5
+ import { bytesAHex, hexABytes } from "../protocol/utils.js";
6
+ import { EncryptedChannel } from "./encrypted-plugin.js";
7
+ /**
8
+ * IvnProofs manages E2E Encrypted Identity Verification Network (IVN) proofs.
9
+ * Multi-recipient encryption with ML-KEM-768 + AES-256-GCM under namespace `swal/ivn/proofs/{requestId}`.
10
+ */
11
+ export class IvnProofs {
12
+ proofs = new Map();
13
+ /**
14
+ * Upload an encrypted proof for multiple validator recipients.
15
+ * Payload is encrypted using ML-KEM-768 per validator recipient (E2E multi-recipient).
16
+ * Solicitante signs payload hash with ML-DSA-65 signature.
17
+ */
18
+ async uploadProof(applicantIdentity, validatorPublicKeys, payload, requestId) {
19
+ if (validatorPublicKeys.length === 0) {
20
+ throw new Error("At least one validator public key is required");
21
+ }
22
+ const id = requestId ?? crypto.randomUUID();
23
+ const namespace = `swal/ivn/proofs/${id}`;
24
+ const payloadBytes = typeof payload === "string" ? new TextEncoder().encode(payload) : payload;
25
+ // Hash payload (SHA-256)
26
+ const payloadHashBytes = new Uint8Array(crypto.createHash("sha256").update(payloadBytes).digest());
27
+ const payloadHash = bytesAHex(payloadHashBytes);
28
+ // Solicitante signs payload hash using ML-DSA-65 identity signature
29
+ const signatureBytes = await applicantIdentity.firmar(payloadHashBytes);
30
+ const signature = bytesAHex(signatureBytes);
31
+ const applicantPubKey = bytesAHex(applicantIdentity.exportarPublico());
32
+ // Encrypt payload for each validator recipient using ML-KEM-768
33
+ const recipients = [];
34
+ for (const valPubKey of validatorPublicKeys) {
35
+ const valPubKeyBytes = typeof valPubKey === "string" ? hexABytes(valPubKey) : valPubKey;
36
+ const { sharedSecret, cipherText: kemCipherTextBytes } = ml_kem768.encapsulate(valPubKeyBytes);
37
+ const channel = new EncryptedChannel(sharedSecret);
38
+ const { ciphertext, iv, tag } = channel.encrypt(payloadBytes);
39
+ recipients.push({
40
+ validatorPubKey: bytesAHex(valPubKeyBytes),
41
+ kemCipherText: bytesAHex(kemCipherTextBytes),
42
+ ciphertext: bytesAHex(ciphertext),
43
+ iv: bytesAHex(iv),
44
+ tag: bytesAHex(tag),
45
+ });
46
+ }
47
+ const metadata = {
48
+ requestId: id,
49
+ namespace,
50
+ payloadHash,
51
+ payloadSize: payloadBytes.length,
52
+ validatorCount: validatorPublicKeys.length,
53
+ applicantPubKey,
54
+ signature,
55
+ timestamp: Date.now(),
56
+ };
57
+ const storedProof = {
58
+ metadata,
59
+ recipients,
60
+ };
61
+ this.proofs.set(id, storedProof);
62
+ return storedProof;
63
+ }
64
+ /**
65
+ * Decrypt a stored proof using a validator's ML-KEM-768 secret key.
66
+ * Only the matching validator can decapsulate and decrypt their copy.
67
+ * Also verifies applicant ML-DSA-65 signature on decrypted payload hash.
68
+ */
69
+ async decryptProof(validatorKey, requestId) {
70
+ const proof = this.proofs.get(requestId);
71
+ if (!proof) {
72
+ throw new Error(`Proof record with requestId '${requestId}' not found`);
73
+ }
74
+ let secretKeyBytes;
75
+ let pubKeyHex;
76
+ if (typeof validatorKey === "object" &&
77
+ !(validatorKey instanceof Uint8Array)) {
78
+ secretKeyBytes =
79
+ typeof validatorKey.secretKey === "string"
80
+ ? hexABytes(validatorKey.secretKey)
81
+ : validatorKey.secretKey;
82
+ if (validatorKey.publicKey) {
83
+ pubKeyHex =
84
+ typeof validatorKey.publicKey === "string"
85
+ ? validatorKey.publicKey
86
+ : bytesAHex(validatorKey.publicKey);
87
+ }
88
+ }
89
+ else {
90
+ secretKeyBytes =
91
+ typeof validatorKey === "string"
92
+ ? hexABytes(validatorKey)
93
+ : validatorKey;
94
+ }
95
+ // Find recipient entry
96
+ let recipient;
97
+ if (pubKeyHex) {
98
+ recipient = proof.recipients.find((r) => r.validatorPubKey.toLowerCase() === pubKeyHex.toLowerCase());
99
+ }
100
+ // If public key was not specified or not matched directly, try recipient entries
101
+ if (!recipient) {
102
+ for (const r of proof.recipients) {
103
+ try {
104
+ const kemCipherTextBytes = hexABytes(r.kemCipherText);
105
+ const sharedSecret = ml_kem768.decapsulate(kemCipherTextBytes, secretKeyBytes);
106
+ const channel = new EncryptedChannel(sharedSecret);
107
+ const decrypted = channel.decrypt(hexABytes(r.ciphertext), hexABytes(r.iv), hexABytes(r.tag));
108
+ // Check payload hash
109
+ const hashBytes = new Uint8Array(crypto.createHash("sha256").update(decrypted).digest());
110
+ if (bytesAHex(hashBytes) === proof.metadata.payloadHash) {
111
+ recipient = r;
112
+ // Verify signature
113
+ const applicantPubKeyBytes = hexABytes(proof.metadata.applicantPubKey);
114
+ const signatureBytes = hexABytes(proof.metadata.signature);
115
+ const verified = ml_dsa65.verify(signatureBytes, hashBytes, applicantPubKeyBytes);
116
+ if (!verified) {
117
+ throw new Error("Applicant signature verification failed");
118
+ }
119
+ return decrypted;
120
+ }
121
+ }
122
+ catch {
123
+ // Continue to next recipient if decapsulation/decryption fails
124
+ }
125
+ }
126
+ throw new Error("Unable to decrypt proof: key does not match any recipient");
127
+ }
128
+ // Decapsulate shared secret using recipient's ML-KEM-768 ciphertext & validator's secret key
129
+ const kemCipherTextBytes = hexABytes(recipient.kemCipherText);
130
+ const sharedSecret = ml_kem768.decapsulate(kemCipherTextBytes, secretKeyBytes);
131
+ const channel = new EncryptedChannel(sharedSecret);
132
+ const decryptedPayload = channel.decrypt(hexABytes(recipient.ciphertext), hexABytes(recipient.iv), hexABytes(recipient.tag));
133
+ // Verify hash
134
+ const hashBytes = new Uint8Array(crypto.createHash("sha256").update(decryptedPayload).digest());
135
+ const hashHex = bytesAHex(hashBytes);
136
+ if (hashHex !== proof.metadata.payloadHash) {
137
+ throw new Error("Payload hash mismatch after decryption");
138
+ }
139
+ // Verify applicant ML-DSA-65 signature
140
+ const applicantPubKeyBytes = hexABytes(proof.metadata.applicantPubKey);
141
+ const signatureBytes = hexABytes(proof.metadata.signature);
142
+ const verified = ml_dsa65.verify(signatureBytes, hashBytes, applicantPubKeyBytes);
143
+ if (!verified) {
144
+ throw new Error("Applicant signature verification failed");
145
+ }
146
+ return decryptedPayload;
147
+ }
148
+ /**
149
+ * Get public metadata for a proof record without disclosing encrypted payload.
150
+ */
151
+ getProofMetadata(requestId) {
152
+ const proof = this.proofs.get(requestId);
153
+ return proof ? proof.metadata : null;
154
+ }
155
+ /**
156
+ * Clear all stored proofs in memory.
157
+ */
158
+ clear() {
159
+ this.proofs.clear();
160
+ }
161
+ }
162
+ //# sourceMappingURL=ivn-proofs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ivn-proofs.js","sourceRoot":"","sources":["../../src/namespaces/ivn-proofs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import type { PostQuantumIdentity } from "../identity/index.js";
2
+ import type { Envolvente, ParPublico } from "../types/index.js";
3
+ /**
4
+ * Topic constant for market dataset offers gossip.
5
+ */
6
+ export declare const OFFERS_TOPIC: "swal/data-commons/offers";
7
+ export declare const SWAL_DATA_COMMONS_OFFERS: "swal/data-commons/offers";
8
+ /**
9
+ * DataOffer schema matching docs/SWAL/MARKETPLACE_MALOCA_INTEGRATION.md §5
10
+ */
11
+ export interface DataOffer {
12
+ id: string;
13
+ seller_node: string;
14
+ app_id: string;
15
+ title: string;
16
+ tags: string[];
17
+ price?: number | string;
18
+ price_semantics?: number | string;
19
+ license: string;
20
+ size?: number;
21
+ size_bytes?: number;
22
+ content_hash: string;
23
+ signature: string;
24
+ created_at: number;
25
+ active: boolean;
26
+ }
27
+ export interface OffersGossipConfig {
28
+ identity?: PostQuantumIdentity;
29
+ ttlMs?: number;
30
+ rateLimiterConfig?: {
31
+ tokensPerInterval: number;
32
+ intervalMs: number;
33
+ maxTokens: number;
34
+ };
35
+ getCurrentTime?: () => number;
36
+ }
37
+ /**
38
+ * Returns canonical string representation of offer fields used for signing/verifying.
39
+ */
40
+ export declare function getOfferSigningString(offer: Omit<DataOffer, "signature"> | DataOffer): string;
41
+ /**
42
+ * OffersGossip manages dataset offer publishing, receiving, signature verification (ML-DSA-65),
43
+ * per-node rate limiting, and TTL pruning over the topic `swal/data-commons/offers`.
44
+ */
45
+ export declare class OffersGossip {
46
+ readonly topic: string;
47
+ private readonly identity?;
48
+ private readonly ttlMs;
49
+ private readonly rateLimiter;
50
+ private readonly getCurrentTime;
51
+ private readonly offers;
52
+ private readonly listeners;
53
+ constructor(config?: OffersGossipConfig);
54
+ /**
55
+ * Sign a DataOffer using the provided PostQuantumIdentity (ML-DSA-65).
56
+ */
57
+ static signOffer(offerInput: Omit<DataOffer, "signature">, identity: PostQuantumIdentity): Promise<DataOffer>;
58
+ /**
59
+ * Verify a DataOffer signature using ML-DSA-65 public key.
60
+ */
61
+ static verifyOfferSignature(offer: DataOffer, publicKey: ParPublico | string, identity: PostQuantumIdentity): Promise<boolean>;
62
+ /**
63
+ * Publish a new dataset offer onto the `swal/data-commons/offers` gossip topic.
64
+ */
65
+ publishOffer(offerParams: Omit<DataOffer, "signature" | "created_at" | "seller_node"> & {
66
+ seller_node?: string;
67
+ created_at?: number;
68
+ signature?: string;
69
+ }, overrideIdentity?: PostQuantumIdentity): Promise<{
70
+ offer: DataOffer;
71
+ envelope: Envolvente;
72
+ }>;
73
+ /**
74
+ * Receive and process an incoming envelope on the gossip network.
75
+ */
76
+ receiveOfferEnvelope(envelope: Envolvente, sellerPublicKey?: ParPublico | string, verifierIdentity?: PostQuantumIdentity): Promise<{
77
+ success: boolean;
78
+ offer?: DataOffer;
79
+ reason?: string;
80
+ }>;
81
+ /**
82
+ * Prune offers older than configured TTL or inactive offers.
83
+ * Returns the number of offers removed.
84
+ */
85
+ pruneExpiredOffers(now?: number): number;
86
+ /**
87
+ * Subscribe to incoming valid offer events.
88
+ */
89
+ onOffer(fn: (offer: DataOffer, env: Envolvente) => void): () => void;
90
+ getOffer(id: string): DataOffer | undefined;
91
+ listOffers(): DataOffer[];
92
+ getActiveOffers(now?: number): DataOffer[];
93
+ clear(): void;
94
+ }
95
+ //# sourceMappingURL=offers-gossip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offers-gossip.d.ts","sourceRoot":"","sources":["../../src/namespaces/offers-gossip.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,213 @@
1
+ import { canonicalStringify } from "../protocol/canonical.js";
2
+ import { createEnvelope, signEnvelope, validateEnvelope, verifyEnvelopeSignature, } from "../protocol/index.js";
3
+ import { hexABytes } from "../protocol/utils.js";
4
+ import { TokenBucketRateLimiter } from "../security/rate-limiter.js";
5
+ import { TIPO_MENSAJE } from "../types/index.js";
6
+ /**
7
+ * Topic constant for market dataset offers gossip.
8
+ */
9
+ export const OFFERS_TOPIC = "swal/data-commons/offers";
10
+ export const SWAL_DATA_COMMONS_OFFERS = OFFERS_TOPIC;
11
+ /**
12
+ * Returns canonical string representation of offer fields used for signing/verifying.
13
+ */
14
+ export function getOfferSigningString(offer) {
15
+ const priceVal = offer.price_semantics ?? offer.price ?? 0;
16
+ const sizeVal = offer.size_bytes ?? offer.size ?? 0;
17
+ const payload = {
18
+ active: offer.active,
19
+ app_id: offer.app_id,
20
+ content_hash: offer.content_hash,
21
+ created_at: offer.created_at,
22
+ id: offer.id,
23
+ license: offer.license,
24
+ price_semantics: priceVal,
25
+ seller_node: offer.seller_node,
26
+ size_bytes: sizeVal,
27
+ tags: [...offer.tags].sort(),
28
+ title: offer.title,
29
+ };
30
+ return canonicalStringify(payload);
31
+ }
32
+ /**
33
+ * OffersGossip manages dataset offer publishing, receiving, signature verification (ML-DSA-65),
34
+ * per-node rate limiting, and TTL pruning over the topic `swal/data-commons/offers`.
35
+ */
36
+ export class OffersGossip {
37
+ topic = OFFERS_TOPIC;
38
+ identity;
39
+ ttlMs;
40
+ rateLimiter;
41
+ getCurrentTime;
42
+ offers = new Map();
43
+ listeners = new Set();
44
+ constructor(config = {}) {
45
+ this.identity = config.identity;
46
+ // Default TTL: 7 days
47
+ this.ttlMs = config.ttlMs ?? 7 * 24 * 60 * 60 * 1000;
48
+ this.getCurrentTime = config.getCurrentTime ?? (() => Date.now());
49
+ const rlConfig = config.rateLimiterConfig ?? {
50
+ tokensPerInterval: 10,
51
+ intervalMs: 1000,
52
+ maxTokens: 20,
53
+ };
54
+ this.rateLimiter = new TokenBucketRateLimiter(rlConfig);
55
+ }
56
+ /**
57
+ * Sign a DataOffer using the provided PostQuantumIdentity (ML-DSA-65).
58
+ */
59
+ static async signOffer(offerInput, identity) {
60
+ const signingStr = getOfferSigningString(offerInput);
61
+ const signatureHex = await identity.sign(signingStr);
62
+ return {
63
+ ...offerInput,
64
+ signature: signatureHex,
65
+ };
66
+ }
67
+ /**
68
+ * Verify a DataOffer signature using ML-DSA-65 public key.
69
+ */
70
+ static async verifyOfferSignature(offer, publicKey, identity) {
71
+ if (!offer.signature)
72
+ return false;
73
+ const signingStr = getOfferSigningString(offer);
74
+ const pubKeyBytes = typeof publicKey === "string" ? hexABytes(publicKey) : publicKey;
75
+ return identity.verify(signingStr, offer.signature, pubKeyBytes);
76
+ }
77
+ /**
78
+ * Publish a new dataset offer onto the `swal/data-commons/offers` gossip topic.
79
+ */
80
+ async publishOffer(offerParams, overrideIdentity) {
81
+ const activeIdentity = overrideIdentity ?? this.identity;
82
+ if (!activeIdentity) {
83
+ throw new Error("PostQuantumIdentity is required to publish an offer");
84
+ }
85
+ const sellerNode = offerParams.seller_node ?? activeIdentity.nodoId;
86
+ const createdAt = offerParams.created_at ?? this.getCurrentTime();
87
+ const baseOffer = {
88
+ id: offerParams.id,
89
+ seller_node: sellerNode,
90
+ app_id: offerParams.app_id,
91
+ title: offerParams.title,
92
+ tags: offerParams.tags,
93
+ price: offerParams.price,
94
+ price_semantics: offerParams.price_semantics ?? offerParams.price,
95
+ license: offerParams.license,
96
+ size: offerParams.size,
97
+ size_bytes: offerParams.size_bytes ?? offerParams.size,
98
+ content_hash: offerParams.content_hash,
99
+ created_at: createdAt,
100
+ active: offerParams.active,
101
+ };
102
+ let signedOffer;
103
+ if (offerParams.signature) {
104
+ signedOffer = { ...baseOffer, signature: offerParams.signature };
105
+ }
106
+ else {
107
+ signedOffer = await OffersGossip.signOffer(baseOffer, activeIdentity);
108
+ }
109
+ const payload = {
110
+ topic: OFFERS_TOPIC,
111
+ offer: signedOffer,
112
+ };
113
+ const env = createEnvelope(TIPO_MENSAJE.NAMESPACE, sellerNode, "*", payload);
114
+ const signedEnvelope = await signEnvelope(env, activeIdentity);
115
+ // Store locally
116
+ this.offers.set(signedOffer.id, signedOffer);
117
+ return { offer: signedOffer, envelope: signedEnvelope };
118
+ }
119
+ /**
120
+ * Receive and process an incoming envelope on the gossip network.
121
+ */
122
+ async receiveOfferEnvelope(envelope, sellerPublicKey, verifierIdentity) {
123
+ if (!validateEnvelope(envelope)) {
124
+ return { success: false, reason: "Invalid envelope format" };
125
+ }
126
+ // Check topic match
127
+ const payload = envelope.payload;
128
+ if (!payload || payload.topic !== OFFERS_TOPIC || !payload.offer) {
129
+ return { success: false, reason: "Envelope payload topic mismatch" };
130
+ }
131
+ const offer = payload.offer;
132
+ // Rate limit per origin node
133
+ if (!this.rateLimiter.consume(envelope.origen)) {
134
+ return { success: false, reason: "Rate limit exceeded for origin node" };
135
+ }
136
+ // Verify envelope signature if verifier Identity & seller Public Key are available
137
+ if (verifierIdentity && sellerPublicKey && envelope.firma) {
138
+ const pubKeyBytes = typeof sellerPublicKey === "string"
139
+ ? hexABytes(sellerPublicKey)
140
+ : sellerPublicKey;
141
+ const validEnvSig = await verifyEnvelopeSignature(envelope, pubKeyBytes, verifierIdentity);
142
+ if (!validEnvSig) {
143
+ return {
144
+ success: false,
145
+ reason: "Envelope signature verification failed",
146
+ };
147
+ }
148
+ }
149
+ // Verify DataOffer internal ML-DSA-65 signature if sellerPublicKey & verifierIdentity provided
150
+ if (verifierIdentity && sellerPublicKey) {
151
+ const validOfferSig = await OffersGossip.verifyOfferSignature(offer, sellerPublicKey, verifierIdentity);
152
+ if (!validOfferSig) {
153
+ return {
154
+ success: false,
155
+ reason: "DataOffer signature verification failed",
156
+ };
157
+ }
158
+ }
159
+ // Check TTL expiry
160
+ const now = this.getCurrentTime();
161
+ if (now - offer.created_at > this.ttlMs) {
162
+ return { success: false, reason: "DataOffer has expired (TTL)" };
163
+ }
164
+ // Store offer
165
+ this.offers.set(offer.id, offer);
166
+ // Emit to listeners
167
+ for (const listener of this.listeners) {
168
+ try {
169
+ listener(offer, envelope);
170
+ }
171
+ catch {
172
+ // Prevent listener error from disrupting loop
173
+ }
174
+ }
175
+ return { success: true, offer };
176
+ }
177
+ /**
178
+ * Prune offers older than configured TTL or inactive offers.
179
+ * Returns the number of offers removed.
180
+ */
181
+ pruneExpiredOffers(now = this.getCurrentTime()) {
182
+ let prunedCount = 0;
183
+ for (const [id, offer] of this.offers.entries()) {
184
+ if (!offer.active || now - offer.created_at > this.ttlMs) {
185
+ this.offers.delete(id);
186
+ prunedCount++;
187
+ }
188
+ }
189
+ return prunedCount;
190
+ }
191
+ /**
192
+ * Subscribe to incoming valid offer events.
193
+ */
194
+ onOffer(fn) {
195
+ this.listeners.add(fn);
196
+ return () => {
197
+ this.listeners.delete(fn);
198
+ };
199
+ }
200
+ getOffer(id) {
201
+ return this.offers.get(id);
202
+ }
203
+ listOffers() {
204
+ return Array.from(this.offers.values());
205
+ }
206
+ getActiveOffers(now = this.getCurrentTime()) {
207
+ return Array.from(this.offers.values()).filter((o) => o.active && now - o.created_at <= this.ttlMs);
208
+ }
209
+ clear() {
210
+ this.offers.clear();
211
+ }
212
+ }
213
+ //# sourceMappingURL=offers-gossip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offers-gossip.js","sourceRoot":"","sources":["../../src/namespaces/offers-gossip.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { MemoryRecord } from "./types.js";
2
+ export declare class IdbStore {
3
+ private readonly dbName;
4
+ private readonly storeName;
5
+ private db;
6
+ private initPromise;
7
+ private useInMemory;
8
+ private readonly memoryStore;
9
+ constructor(appId: string, instanceId: string);
10
+ private init;
11
+ saveRecord(record: MemoryRecord): Promise<void>;
12
+ getRecord(id: string): Promise<MemoryRecord | null>;
13
+ getRecordByHash(hash: string): Promise<MemoryRecord | null>;
14
+ hasHash(hash: string): Promise<boolean>;
15
+ getUnsyncedRecords(): Promise<MemoryRecord[]>;
16
+ getAllRecords(): Promise<MemoryRecord[]>;
17
+ deleteRecord(id: string): Promise<void>;
18
+ cleanExpired(ttlMs: number): Promise<void>;
19
+ clearAll(): Promise<void>;
20
+ close(): Promise<void>;
21
+ }
22
+ //# sourceMappingURL=idb-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idb-store.d.ts","sourceRoot":"","sources":["../../src/node-memory/idb-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,qBAAa,QAAQ;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;IACvC,OAAO,CAAC,EAAE,CAA6B;IACvC,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmC;IAE/D,YAAY,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAI5C;YAEa,IAAI;IA4BZ,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAOpD;IAEK,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAQxD;IAEK,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAmBhE;IAEK,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG5C;IAEK,kBAAkB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAYlD;IAEK,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAU7C;IAEK,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO5C;IAEK,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB/C;IAEK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAS9B;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAM3B;CACD"}