@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,134 @@
1
+ import type { SigAlg } from "./keys.js";
2
+ /** Per-module access level. Ordered: ver < editar < administrar. */
3
+ export type Level = "ver" | "editar" | "administrar";
4
+ export declare const LEVELS: readonly Level[];
5
+ export declare const levelRank: (l: Level | undefined) => number;
6
+ export declare const isLevel: (x: unknown) => x is Level;
7
+ /** Resolved permissions: module -> level. Missing module = no access. */
8
+ export type Permissions = Readonly<Record<string, Level>>;
9
+ export interface RolePreset {
10
+ permissions: Permissions;
11
+ /** Delegation budget (see Grant.delegate). Default 0. */
12
+ delegate?: number;
13
+ }
14
+ /** App-defined schema: the core never hard-codes modules or roles. */
15
+ export interface TrustSchema {
16
+ /** Every module a grant may name. Grants naming other modules are rejected. */
17
+ modules: readonly string[];
18
+ /** Role templates (label -> permissions). Grants store resolved permissions, not the template. */
19
+ roles?: Readonly<Record<string, RolePreset>>;
20
+ /** Level an op `action` needs in `module` (web/oplog gate). Default: "editar". */
21
+ actionLevel?: (module: string, action: string) => Level;
22
+ /** Max chain length root -> ... -> device grant. Default 2 (owner/root -> admin -> staff). */
23
+ maxDepth?: number;
24
+ }
25
+ export interface DeviceRef {
26
+ /** fingerprint of `pub` (verified on ingest) */
27
+ fp: string;
28
+ /** public signing key (ECDSA P-256 JWK) */
29
+ /** base64url ML-DSA-65 public signing key */
30
+ pub: string;
31
+ /** optional raw P-256 ECDH public key (base64url) for module-key wraps (web/keyring, T5) */
32
+ ecdh?: string;
33
+ /** optional base64url ML-KEM-768 encapsulation key (hybrid key wraps) */
34
+ kem?: string;
35
+ }
36
+ export interface GrantBody {
37
+ t: "grant";
38
+ v: 1;
39
+ alg: SigAlg;
40
+ /** instance / tenant id (e.g. Fize `local-<fp>`): docs of another instance are rejected */
41
+ inst: string;
42
+ subject: DeviceRef;
43
+ /** display name, informational */
44
+ name?: string;
45
+ /** role label, informational (permissions are what counts) */
46
+ role: string;
47
+ permissions: Permissions;
48
+ /**
49
+ * Delegation budget. 0 = cannot issue grants. A child grant must have `delegate < issuer.delegate` and
50
+ * `permissions ⊆ issuer.permissions`. Root-issued grants may have at most `maxDepth - 1`.
51
+ * (`canGrant` ≡ `delegate > 0`.) With the default depth 2: root(owner) -> admin(1) -> staff(0).
52
+ */
53
+ delegate: number;
54
+ /** ms; compared with the op's HLC wall time, never with the receiver's clock */
55
+ notBefore: number;
56
+ /** ms (exclusive). Soft control: the hard cut is a revocation. */
57
+ expiresAt?: number;
58
+ /** this grant authorizes only ops with `seq <= seqCutoff` of the subject's log */
59
+ seqCutoff?: number;
60
+ /** issuer fingerprint: the root fp or the subject fp of `parent` */
61
+ issuer: string;
62
+ /** grant id of the issuer's own grant; absent iff issued by the root */
63
+ parent?: string;
64
+ /** ms, informational; makes re-issued grants distinct */
65
+ issuedAt: number;
66
+ /**
67
+ * web/provider: the mesh key epoch the issuer handed over with this grant when pairing the subject (absent when no
68
+ * key was handed over, e.g. a re-anchored grant). Lets the owner see who still needs the current key.
69
+ */
70
+ epoch?: number;
71
+ }
72
+ export interface Grant extends GrantBody {
73
+ /** base64url(SHA-256(canonicalJson(body))) */
74
+ id: string;
75
+ /** ML-DSA-65 over canonicalJson(body) by the issuer key, base64url */
76
+ sig: string;
77
+ }
78
+ export interface RevocationBody {
79
+ t: "revoke";
80
+ v: 1;
81
+ alg: SigAlg;
82
+ inst: string;
83
+ /** grant id being revoked. Always cascades to the grants issued under it. */
84
+ target: string;
85
+ /** ops of the target's subject with seq > lastSeq are no longer authorized by the target grant */
86
+ lastSeq: number;
87
+ /**
88
+ * S3: id of the subject's op at `lastSeq` (the revoker's head). Receivers then accept the subject's ops <= lastSeq
89
+ * only if their hash chain ends at this op: a revoked key cannot fork its own history to replicas that had not seen
90
+ * it. Omitted = no anchor (weaker; `prepareRevocation` fills it when given op ids).
91
+ */
92
+ lastId?: string;
93
+ /**
94
+ * Cut-offs of the cascaded (descendant) grants, by GRANT ID (S2): only grants that existed when the revocation was
95
+ * signed can keep history. A descendant grant missing here (e.g. one the revoked issuer mints afterwards, even
96
+ * backdated, for a subject listed before) is cut at 0. Fill it with `TrustStore.prepareRevocation` from your log
97
+ * heads.
98
+ */
99
+ upTo?: Readonly<Record<string, number>>;
100
+ /** S3: anchor op id at `upTo[grantId]` for each cascaded grant's subject (same role as `lastId`) */
101
+ upToIds?: Readonly<Record<string, string>>;
102
+ reason?: string;
103
+ issuer: string;
104
+ /** issuer's grant id; absent iff issued by the root */
105
+ parent?: string;
106
+ issuedAt: number;
107
+ }
108
+ export interface Revocation extends RevocationBody {
109
+ id: string;
110
+ sig: string;
111
+ }
112
+ export type TrustDoc = Grant | Revocation;
113
+ /** Point at which an authorization question is asked: an op's seq in its author's log and its HLC wall time. */
114
+ export interface At {
115
+ /** omitted = "now/next": only grants not cut by any revocation count */
116
+ seq?: number;
117
+ /** ms; omitted = TrustStore clock */
118
+ time?: number;
119
+ }
120
+ export type AddStatus = "accepted" | "duplicate" | "pending" | "rejected";
121
+ export interface AddResult {
122
+ status: AddStatus;
123
+ id?: string;
124
+ reason?: string;
125
+ }
126
+ export type Decision = {
127
+ ok: true;
128
+ grant: Grant;
129
+ } | {
130
+ ok: false;
131
+ reason: DenyReason;
132
+ };
133
+ export type DenyReason = "no-grant" | "invalid-chain" | "revoked" | "not-yet-valid" | "expired" | "insufficient-level";
134
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/web/trust/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export const LEVELS = ["ver", "editar", "administrar"];
2
+ export const levelRank = (l) => l ? LEVELS.indexOf(l) + 1 : 0;
3
+ export const isLevel = (x) => typeof x === "string" && LEVELS.includes(x);
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/web/trust/types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,MAAM,GAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAoB,EAAU,EAAE,CACzD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAU,EAAc,EAAE,CACjD,OAAO,CAAC,KAAK,QAAQ,IAAK,MAA4B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,115 @@
1
+ import type { Role } from "./admission.js";
2
+ import type { MeshStore } from "./store.js";
3
+ /** Minimal vault contract. An adapter comes from @swal/vault/web (not a dependency here). */
4
+ export interface VaultClient {
5
+ /** `deviceIdOf(devicePublicKey)` (web/pq): 43 base64url characters. */
6
+ readonly deviceId: string;
7
+ /** ML-DSA-65 public identity key of this device (raw, 1952 bytes). Any other algorithm is refused. */
8
+ readonly devicePublicKey: Uint8Array;
9
+ getOrCreateMeshKey(): Promise<Uint8Array>;
10
+ setMeshKey(raw: Uint8Array): Promise<void>;
11
+ /** ML-DSA-65 signature (FIPS 204, pure, empty context; 3309 bytes) of `data` with the identity key. */
12
+ sign(data: Uint8Array): Promise<Uint8Array>;
13
+ /**
14
+ * Ignored since the ML-DSA-65 migration: the mesh verifies every identity signature itself (`identityVerify`),
15
+ * so a vault can no longer widen what is accepted. Kept optional for source compatibility.
16
+ * @deprecated
17
+ */
18
+ verify?(publicKey: Uint8Array, data: Uint8Array, signature: Uint8Array): Promise<boolean>;
19
+ /**
20
+ * Optional: persistent static P-256 ECDH key of this device (non-extractable private key + raw public key),
21
+ * used to wrap rotated mesh keys pairwise. Without it the mesh keeps an in-memory key for the session only,
22
+ * so a device that reloads while peers hold wraps for its old key cannot catch up: provide it in production.
23
+ */
24
+ getEcdhIdentity?(): Promise<{
25
+ privateKey: CryptoKey;
26
+ publicKey: Uint8Array;
27
+ }>;
28
+ /**
29
+ * Optional: persistent static ML-KEM-768 key pair of this device (raw bytes: encapsulation key 1184 B,
30
+ * decapsulation key 2400 B), the post-quantum half of the hybrid rotation wraps (AGENTS.md §2). Keep the
31
+ * decapsulation key encrypted at rest. Without it the mesh keeps an in-memory key for the session only (same
32
+ * caveat as `getEcdhIdentity`).
33
+ */
34
+ getKemIdentity?(): Promise<{
35
+ publicKey: Uint8Array;
36
+ secretKey: Uint8Array;
37
+ }>;
38
+ /**
39
+ * Optional: persist the rotation epoch (otherwise it lives in the mesh's device-local store). The epoch is never
40
+ * taken from the shared doc.
41
+ */
42
+ getEpoch?(): Promise<number> | number;
43
+ setEpoch?(epoch: number): Promise<void> | void;
44
+ /**
45
+ * Optional: persistent, device-local key/value store for the mesh's trust state (pinned root, verified
46
+ * admissions, revocations). Used when MeshOptions.store is not given. Without either (and without
47
+ * persist:'idb') that state lives in memory only and a reloaded device must be paired again.
48
+ */
49
+ store?: MeshStore;
50
+ }
51
+ /** A bidirectional message pipe to one remote peer (WebRTC data channel, loopback, ...). */
52
+ export interface PeerLink {
53
+ readonly id: string;
54
+ send(data: Uint8Array): void;
55
+ onMessage(cb: (data: Uint8Array) => void): void;
56
+ onClose(cb: () => void): void;
57
+ close(): void;
58
+ /**
59
+ * Optional backpressure (BL3): resolves when the link's own send queue is low again. The mesh awaits it before
60
+ * handing over each frame, so a large message is paced by the peer instead of piling up in memory.
61
+ */
62
+ drain?(): Promise<void>;
63
+ /**
64
+ * Optional (finding 4): send ahead of the link's own queued data, at the next message boundary. Used for control
65
+ * frames (rotations, link handshake), so they never wait behind bulk data towards a slow peer.
66
+ */
67
+ sendPriority?(data: Uint8Array): void;
68
+ }
69
+ /** Wire message of the signaling protocol (see docs/SIGNALING-PROTOCOL.md). */
70
+ export interface SigMessage {
71
+ type: "join" | "signal" | "leave";
72
+ rid: string;
73
+ from: string;
74
+ to?: string;
75
+ /** opaque, base64url, encrypted client-side; the server never parses it */
76
+ payload?: string;
77
+ }
78
+ /** A signaling server/channel: peers exchange SigMessages, we build WebRTC links on top. */
79
+ export interface SignalingChannel {
80
+ readonly kind: "signal";
81
+ readonly name: string;
82
+ join(rid: string, selfId: string): Promise<void>;
83
+ send(msg: SigMessage): void;
84
+ onMessage(cb: (msg: SigMessage) => void): () => void;
85
+ leave(rid: string): void;
86
+ close(): void;
87
+ }
88
+ /** A transport that hands out ready PeerLinks itself (qr-sdp, in-memory loopback). `rid` is '' when room-less. */
89
+ export interface LinkTransport {
90
+ readonly kind: "link";
91
+ readonly name: string;
92
+ join(rid: string, selfId: string): Promise<void>;
93
+ onLink(cb: (link: PeerLink, rid: string) => void): () => void;
94
+ leave(rid: string): void;
95
+ close(): void;
96
+ }
97
+ export type SigTransport = SignalingChannel | LinkTransport;
98
+ export interface Device {
99
+ deviceId: string;
100
+ /** base64url identity public key */
101
+ pub: string;
102
+ name: string;
103
+ addedAt: number;
104
+ /** Role from the device's verified admission (set by `Mesh.devices()`). */
105
+ role?: Role;
106
+ /** deviceId of the admitting device (set by `Mesh.devices()`). */
107
+ admittedBy?: string;
108
+ }
109
+ export interface RtcOptions {
110
+ /** Default [] = host candidates only (no public STUN). */
111
+ iceServers?: RTCIceServer[];
112
+ /** Injectable for tests / non-browser runtimes. */
113
+ RTCPeerConnection?: typeof RTCPeerConnection;
114
+ }
115
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/web/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/web/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ export declare const utf8: (s: string) => Uint8Array;
2
+ export declare const fromUtf8: (b: Uint8Array) => string;
3
+ export declare function b64uEncode(bytes: Uint8Array): string;
4
+ export declare function b64uDecode(str: string): Uint8Array;
5
+ /** R4-N3: the one encoding of some bytes (no padding, no stray bits in the last character, no '+'/'/'). */
6
+ export declare function isCanonicalB64u(s: string): boolean;
7
+ export declare function concat(...parts: Uint8Array[]): Uint8Array;
8
+ export declare function randomBytes(n: number): Uint8Array;
9
+ export declare function equalBytes(a: Uint8Array, b: Uint8Array): boolean;
10
+ /** WebCrypto wants BufferSource; TS 5.7+/7 types Uint8Array<ArrayBufferLike> strictly. */
11
+ export declare const bs: (b: Uint8Array) => BufferSource;
12
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/web/util.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,IAAI,MAAO,MAAM,KAAG,UAA2B,CAAC;AAC7D,eAAO,MAAM,QAAQ,MAAO,UAAU,KAAG,MAAuB,CAAC;AAEjE,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAMpD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAMlD;AAED,2GAA2G;AAC3G,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAOlD;AAED,wBAAgB,MAAM,CAAC,GAAG,KAAK,EAAE,UAAU,EAAE,GAAG,UAAU,CAQzD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAEjD;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAKhE;AAED,0FAA0F;AAC1F,eAAO,MAAM,EAAE,MAAO,UAAU,KAAG,YAA4C,CAAC"}
@@ -0,0 +1,54 @@
1
+ // Browser-safe byte helpers (no Buffer, no node:*).
2
+ const enc = new TextEncoder();
3
+ const dec = new TextDecoder();
4
+ export const utf8 = (s) => enc.encode(s);
5
+ export const fromUtf8 = (b) => dec.decode(b);
6
+ export function b64uEncode(bytes) {
7
+ let s = "";
8
+ for (let i = 0; i < bytes.length; i += 0x8000) {
9
+ s += String.fromCharCode(...bytes.subarray(i, i + 0x8000));
10
+ }
11
+ return btoa(s).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
12
+ }
13
+ export function b64uDecode(str) {
14
+ const b64 = str.replace(/-/g, "+").replace(/_/g, "/");
15
+ const bin = atob(b64 + "=".repeat((4 - (b64.length % 4)) % 4));
16
+ const out = new Uint8Array(bin.length);
17
+ for (let i = 0; i < bin.length; i++)
18
+ out[i] = bin.charCodeAt(i);
19
+ return out;
20
+ }
21
+ /** R4-N3: the one encoding of some bytes (no padding, no stray bits in the last character, no '+'/'/'). */
22
+ export function isCanonicalB64u(s) {
23
+ if (!/^[A-Za-z0-9_-]*$/.test(s))
24
+ return false;
25
+ try {
26
+ return b64uEncode(b64uDecode(s)) === s;
27
+ }
28
+ catch {
29
+ return false;
30
+ }
31
+ }
32
+ export function concat(...parts) {
33
+ const out = new Uint8Array(parts.reduce((n, p) => n + p.length, 0));
34
+ let o = 0;
35
+ for (const p of parts) {
36
+ out.set(p, o);
37
+ o += p.length;
38
+ }
39
+ return out;
40
+ }
41
+ export function randomBytes(n) {
42
+ return crypto.getRandomValues(new Uint8Array(n));
43
+ }
44
+ export function equalBytes(a, b) {
45
+ if (a.length !== b.length)
46
+ return false;
47
+ let d = 0;
48
+ for (let i = 0; i < a.length; i++)
49
+ d |= a[i] ^ b[i];
50
+ return d === 0;
51
+ }
52
+ /** WebCrypto wants BufferSource; TS 5.7+/7 types Uint8Array<ArrayBufferLike> strictly. */
53
+ export const bs = (b) => b;
54
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/web/util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { PeerLink, RtcOptions, SignalingChannel } from "./types.js";
2
+ /**
3
+ * S5/BL3: bytes waiting in OUR queue (above SCTP's buffer). Exceeding it is fine while the peer keeps draining (a
4
+ * legit message may be up to 64 MiB); a link that is over it AND made no progress for `stallMs` is closed.
5
+ */
6
+ export declare const MAX_SEND_QUEUE: number;
7
+ export interface DataChannelLinkOptions {
8
+ /** clock for stall detection. Default Date.now */
9
+ now?: () => number;
10
+ /** a link above MAX_SEND_QUEUE without any drain progress for this long is closed. Default 15 s */
11
+ stallMs?: number;
12
+ }
13
+ /**
14
+ * Wrap an RTCDataChannel as a PeerLink, chunking messages (1 flag byte: 1 = more follows). Reassembly is bounded
15
+ * (a peer streaming "more follows" forever gets the link closed) and sends respect `bufferedAmount`, so a burst
16
+ * of large messages never overflows the browser's send queue (which would close the channel).
17
+ */
18
+ export declare function dataChannelLink(id: string, dc: RTCDataChannel, o?: DataChannelLinkOptions): PeerLink;
19
+ export declare function resolveRtc(o: RtcOptions | undefined): typeof RTCPeerConnection;
20
+ export interface SignalingConnectOptions {
21
+ rid: string;
22
+ selfId: string;
23
+ /** AES key protecting signal payloads (SDP/ICE) end-to-end, so the server sees opaque bytes. */
24
+ key: CryptoKey;
25
+ rtc?: RtcOptions;
26
+ gatherTimeoutMs?: number;
27
+ onLink(link: PeerLink): void;
28
+ onError?(e: unknown): void;
29
+ }
30
+ /**
31
+ * Establishes WebRTC data channels to every peer present in `rid`, using `channel` for
32
+ * signaling. The peer with the lexicographically smaller id sends the offer.
33
+ */
34
+ export declare function connectViaSignaling(channel: SignalingChannel, o: SignalingConnectOptions): Promise<() => void>;
35
+ //# sourceMappingURL=webrtc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webrtc.d.ts","sourceRoot":"","sources":["../../src/web/webrtc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AASzE;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAmB,CAAC;AAK/C,MAAM,WAAW,sBAAsB;IACtC,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,mGAAmG;IACnG,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC9B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,cAAc,EAClB,CAAC,GAAE,sBAA2B,GAC5B,QAAQ,CAuIV;AAED,wBAAgB,UAAU,CACzB,CAAC,EAAE,UAAU,GAAG,SAAS,GACvB,OAAO,iBAAiB,CAQ1B;AAED,MAAM,WAAW,uBAAuB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,gGAAgG;IAChG,GAAG,EAAE,SAAS,CAAC;IACf,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC3B;AAID;;;GAGG;AACH,wBAAsB,mBAAmB,CACxC,OAAO,EAAE,gBAAgB,EACzB,CAAC,EAAE,uBAAuB,GACxB,OAAO,CAAC,MAAM,IAAI,CAAC,CAsIrB"}