@sempdev/semp 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (559) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +59 -0
  3. package/dist/brief/address.d.ts +77 -0
  4. package/dist/brief/address.d.ts.map +1 -0
  5. package/dist/brief/address.js +217 -0
  6. package/dist/brief/address.js.map +1 -0
  7. package/dist/brief/brief.d.ts +75 -0
  8. package/dist/brief/brief.d.ts.map +1 -0
  9. package/dist/brief/brief.js +56 -0
  10. package/dist/brief/brief.js.map +1 -0
  11. package/dist/brief/index.d.ts +11 -0
  12. package/dist/brief/index.d.ts.map +1 -0
  13. package/dist/brief/index.js +11 -0
  14. package/dist/brief/index.js.map +1 -0
  15. package/dist/canonical/index.d.ts +8 -0
  16. package/dist/canonical/index.d.ts.map +1 -0
  17. package/dist/canonical/index.js +8 -0
  18. package/dist/canonical/index.js.map +1 -0
  19. package/dist/canonical/marshal.d.ts +35 -0
  20. package/dist/canonical/marshal.d.ts.map +1 -0
  21. package/dist/canonical/marshal.js +107 -0
  22. package/dist/canonical/marshal.js.map +1 -0
  23. package/dist/clockskew/index.d.ts +52 -0
  24. package/dist/clockskew/index.d.ts.map +1 -0
  25. package/dist/clockskew/index.js +62 -0
  26. package/dist/clockskew/index.js.map +1 -0
  27. package/dist/closure/closure.d.ts +106 -0
  28. package/dist/closure/closure.d.ts.map +1 -0
  29. package/dist/closure/closure.js +152 -0
  30. package/dist/closure/closure.js.map +1 -0
  31. package/dist/closure/driver.d.ts +103 -0
  32. package/dist/closure/driver.d.ts.map +1 -0
  33. package/dist/closure/driver.js +126 -0
  34. package/dist/closure/driver.js.map +1 -0
  35. package/dist/closure/index.d.ts +13 -0
  36. package/dist/closure/index.d.ts.map +1 -0
  37. package/dist/closure/index.js +13 -0
  38. package/dist/closure/index.js.map +1 -0
  39. package/dist/closure/store.d.ts +80 -0
  40. package/dist/closure/store.d.ts.map +1 -0
  41. package/dist/closure/store.js +89 -0
  42. package/dist/closure/store.js.map +1 -0
  43. package/dist/crypto/aead.d.ts +29 -0
  44. package/dist/crypto/aead.d.ts.map +1 -0
  45. package/dist/crypto/aead.js +48 -0
  46. package/dist/crypto/aead.js.map +1 -0
  47. package/dist/crypto/argon2.d.ts +20 -0
  48. package/dist/crypto/argon2.d.ts.map +1 -0
  49. package/dist/crypto/argon2.js +28 -0
  50. package/dist/crypto/argon2.js.map +1 -0
  51. package/dist/crypto/index.d.ts +14 -0
  52. package/dist/crypto/index.d.ts.map +1 -0
  53. package/dist/crypto/index.js +14 -0
  54. package/dist/crypto/index.js.map +1 -0
  55. package/dist/crypto/kdf.d.ts +96 -0
  56. package/dist/crypto/kdf.d.ts.map +1 -0
  57. package/dist/crypto/kdf.js +122 -0
  58. package/dist/crypto/kdf.js.map +1 -0
  59. package/dist/crypto/kem.d.ts +85 -0
  60. package/dist/crypto/kem.d.ts.map +1 -0
  61. package/dist/crypto/kem.js +130 -0
  62. package/dist/crypto/kem.js.map +1 -0
  63. package/dist/crypto/mac.d.ts +19 -0
  64. package/dist/crypto/mac.d.ts.map +1 -0
  65. package/dist/crypto/mac.js +32 -0
  66. package/dist/crypto/mac.js.map +1 -0
  67. package/dist/delivery/ack.d.ts +125 -0
  68. package/dist/delivery/ack.d.ts.map +1 -0
  69. package/dist/delivery/ack.js +141 -0
  70. package/dist/delivery/ack.js.map +1 -0
  71. package/dist/delivery/blocklist.d.ts +87 -0
  72. package/dist/delivery/blocklist.d.ts.map +1 -0
  73. package/dist/delivery/blocklist.js +107 -0
  74. package/dist/delivery/blocklist.js.map +1 -0
  75. package/dist/delivery/cancel.d.ts +60 -0
  76. package/dist/delivery/cancel.d.ts.map +1 -0
  77. package/dist/delivery/cancel.js +43 -0
  78. package/dist/delivery/cancel.js.map +1 -0
  79. package/dist/delivery/disposition.d.ts +106 -0
  80. package/dist/delivery/disposition.d.ts.map +1 -0
  81. package/dist/delivery/disposition.js +105 -0
  82. package/dist/delivery/disposition.js.map +1 -0
  83. package/dist/delivery/fetch.d.ts +59 -0
  84. package/dist/delivery/fetch.d.ts.map +1 -0
  85. package/dist/delivery/fetch.js +47 -0
  86. package/dist/delivery/fetch.js.map +1 -0
  87. package/dist/delivery/forwarder.d.ts +106 -0
  88. package/dist/delivery/forwarder.d.ts.map +1 -0
  89. package/dist/delivery/forwarder.js +251 -0
  90. package/dist/delivery/forwarder.js.map +1 -0
  91. package/dist/delivery/inbox.d.ts +42 -0
  92. package/dist/delivery/inbox.d.ts.map +1 -0
  93. package/dist/delivery/inbox.js +68 -0
  94. package/dist/delivery/inbox.js.map +1 -0
  95. package/dist/delivery/index.d.ts +31 -0
  96. package/dist/delivery/index.d.ts.map +1 -0
  97. package/dist/delivery/index.js +31 -0
  98. package/dist/delivery/index.js.map +1 -0
  99. package/dist/delivery/internalroute.d.ts +50 -0
  100. package/dist/delivery/internalroute.d.ts.map +1 -0
  101. package/dist/delivery/internalroute.js +23 -0
  102. package/dist/delivery/internalroute.js.map +1 -0
  103. package/dist/delivery/pipeline.d.ts +153 -0
  104. package/dist/delivery/pipeline.d.ts.map +1 -0
  105. package/dist/delivery/pipeline.js +356 -0
  106. package/dist/delivery/pipeline.js.map +1 -0
  107. package/dist/delivery/policy_state.d.ts +105 -0
  108. package/dist/delivery/policy_state.d.ts.map +1 -0
  109. package/dist/delivery/policy_state.js +293 -0
  110. package/dist/delivery/policy_state.js.map +1 -0
  111. package/dist/delivery/queue.d.ts +47 -0
  112. package/dist/delivery/queue.d.ts.map +1 -0
  113. package/dist/delivery/queue.js +33 -0
  114. package/dist/delivery/queue.js.map +1 -0
  115. package/dist/delivery/receipt.d.ts +137 -0
  116. package/dist/delivery/receipt.d.ts.map +1 -0
  117. package/dist/delivery/receipt.js +181 -0
  118. package/dist/delivery/receipt.js.map +1 -0
  119. package/dist/delivery/receipt_store.d.ts +81 -0
  120. package/dist/delivery/receipt_store.d.ts.map +1 -0
  121. package/dist/delivery/receipt_store.js +74 -0
  122. package/dist/delivery/receipt_store.js.map +1 -0
  123. package/dist/delivery/retry.d.ts +78 -0
  124. package/dist/delivery/retry.d.ts.map +1 -0
  125. package/dist/delivery/retry.js +132 -0
  126. package/dist/delivery/retry.js.map +1 -0
  127. package/dist/delivery/scheduler.d.ts +156 -0
  128. package/dist/delivery/scheduler.d.ts.map +1 -0
  129. package/dist/delivery/scheduler.js +349 -0
  130. package/dist/delivery/scheduler.js.map +1 -0
  131. package/dist/delivery/stage_partition.d.ts +87 -0
  132. package/dist/delivery/stage_partition.d.ts.map +1 -0
  133. package/dist/delivery/stage_partition.js +122 -0
  134. package/dist/delivery/stage_partition.js.map +1 -0
  135. package/dist/delivery/staged_runner.d.ts +100 -0
  136. package/dist/delivery/staged_runner.d.ts.map +1 -0
  137. package/dist/delivery/staged_runner.js +277 -0
  138. package/dist/delivery/staged_runner.js.map +1 -0
  139. package/dist/delivery/submission.d.ts +72 -0
  140. package/dist/delivery/submission.d.ts.map +1 -0
  141. package/dist/delivery/submission.js +58 -0
  142. package/dist/delivery/submission.js.map +1 -0
  143. package/dist/delivery/sync.d.ts +68 -0
  144. package/dist/delivery/sync.d.ts.map +1 -0
  145. package/dist/delivery/sync.js +99 -0
  146. package/dist/delivery/sync.js.map +1 -0
  147. package/dist/delivery/user_policy.d.ts +74 -0
  148. package/dist/delivery/user_policy.d.ts.map +1 -0
  149. package/dist/delivery/user_policy.js +140 -0
  150. package/dist/delivery/user_policy.js.map +1 -0
  151. package/dist/discovery/cache.d.ts +37 -0
  152. package/dist/discovery/cache.d.ts.map +1 -0
  153. package/dist/discovery/cache.js +45 -0
  154. package/dist/discovery/cache.js.map +1 -0
  155. package/dist/discovery/configuration.d.ts +97 -0
  156. package/dist/discovery/configuration.d.ts.map +1 -0
  157. package/dist/discovery/configuration.js +146 -0
  158. package/dist/discovery/configuration.js.map +1 -0
  159. package/dist/discovery/dns.d.ts +56 -0
  160. package/dist/discovery/dns.d.ts.map +1 -0
  161. package/dist/discovery/dns.js +120 -0
  162. package/dist/discovery/dns.js.map +1 -0
  163. package/dist/discovery/domain_keys.d.ts +62 -0
  164. package/dist/discovery/domain_keys.d.ts.map +1 -0
  165. package/dist/discovery/domain_keys.js +89 -0
  166. package/dist/discovery/domain_keys.js.map +1 -0
  167. package/dist/discovery/index.d.ts +19 -0
  168. package/dist/discovery/index.d.ts.map +1 -0
  169. package/dist/discovery/index.js +19 -0
  170. package/dist/discovery/index.js.map +1 -0
  171. package/dist/discovery/lookup.d.ts +72 -0
  172. package/dist/discovery/lookup.d.ts.map +1 -0
  173. package/dist/discovery/lookup.js +121 -0
  174. package/dist/discovery/lookup.js.map +1 -0
  175. package/dist/discovery/onion.d.ts +34 -0
  176. package/dist/discovery/onion.d.ts.map +1 -0
  177. package/dist/discovery/onion.js +61 -0
  178. package/dist/discovery/onion.js.map +1 -0
  179. package/dist/discovery/partition.d.ts +96 -0
  180. package/dist/discovery/partition.d.ts.map +1 -0
  181. package/dist/discovery/partition.js +247 -0
  182. package/dist/discovery/partition.js.map +1 -0
  183. package/dist/discovery/resolver.d.ts +113 -0
  184. package/dist/discovery/resolver.d.ts.map +1 -0
  185. package/dist/discovery/resolver.js +176 -0
  186. package/dist/discovery/resolver.js.map +1 -0
  187. package/dist/discovery/txt.d.ts +39 -0
  188. package/dist/discovery/txt.d.ts.map +1 -0
  189. package/dist/discovery/txt.js +71 -0
  190. package/dist/discovery/txt.js.map +1 -0
  191. package/dist/enclosure/forwarding.d.ts +128 -0
  192. package/dist/enclosure/forwarding.d.ts.map +1 -0
  193. package/dist/enclosure/forwarding.js +119 -0
  194. package/dist/enclosure/forwarding.js.map +1 -0
  195. package/dist/enclosure/index.d.ts +11 -0
  196. package/dist/enclosure/index.d.ts.map +1 -0
  197. package/dist/enclosure/index.js +11 -0
  198. package/dist/enclosure/index.js.map +1 -0
  199. package/dist/envelope/buckets.d.ts +38 -0
  200. package/dist/envelope/buckets.d.ts.map +1 -0
  201. package/dist/envelope/buckets.js +73 -0
  202. package/dist/envelope/buckets.js.map +1 -0
  203. package/dist/envelope/canonical.d.ts +28 -0
  204. package/dist/envelope/canonical.d.ts.map +1 -0
  205. package/dist/envelope/canonical.js +54 -0
  206. package/dist/envelope/canonical.js.map +1 -0
  207. package/dist/envelope/compose.d.ts +171 -0
  208. package/dist/envelope/compose.d.ts.map +1 -0
  209. package/dist/envelope/compose.js +237 -0
  210. package/dist/envelope/compose.js.map +1 -0
  211. package/dist/envelope/encode.d.ts +41 -0
  212. package/dist/envelope/encode.d.ts.map +1 -0
  213. package/dist/envelope/encode.js +69 -0
  214. package/dist/envelope/encode.js.map +1 -0
  215. package/dist/envelope/index.d.ts +20 -0
  216. package/dist/envelope/index.d.ts.map +1 -0
  217. package/dist/envelope/index.js +20 -0
  218. package/dist/envelope/index.js.map +1 -0
  219. package/dist/envelope/open_any.d.ts +48 -0
  220. package/dist/envelope/open_any.d.ts.map +1 -0
  221. package/dist/envelope/open_any.js +81 -0
  222. package/dist/envelope/open_any.js.map +1 -0
  223. package/dist/envelope/open_verified.d.ts +59 -0
  224. package/dist/envelope/open_verified.d.ts.map +1 -0
  225. package/dist/envelope/open_verified.js +67 -0
  226. package/dist/envelope/open_verified.js.map +1 -0
  227. package/dist/envelope/padding.d.ts +55 -0
  228. package/dist/envelope/padding.d.ts.map +1 -0
  229. package/dist/envelope/padding.js +162 -0
  230. package/dist/envelope/padding.js.map +1 -0
  231. package/dist/envelope/rejection.d.ts +22 -0
  232. package/dist/envelope/rejection.d.ts.map +1 -0
  233. package/dist/envelope/rejection.js +30 -0
  234. package/dist/envelope/rejection.js.map +1 -0
  235. package/dist/envelope/sendtime.d.ts +49 -0
  236. package/dist/envelope/sendtime.d.ts.map +1 -0
  237. package/dist/envelope/sendtime.js +87 -0
  238. package/dist/envelope/sendtime.js.map +1 -0
  239. package/dist/envelope/verify.d.ts +29 -0
  240. package/dist/envelope/verify.d.ts.map +1 -0
  241. package/dist/envelope/verify.js +90 -0
  242. package/dist/envelope/verify.js.map +1 -0
  243. package/dist/extensions/index.d.ts +7 -0
  244. package/dist/extensions/index.d.ts.map +1 -0
  245. package/dist/extensions/index.js +7 -0
  246. package/dist/extensions/index.js.map +1 -0
  247. package/dist/extensions/limits.d.ts +101 -0
  248. package/dist/extensions/limits.d.ts.map +1 -0
  249. package/dist/extensions/limits.js +175 -0
  250. package/dist/extensions/limits.js.map +1 -0
  251. package/dist/handshake/abort.d.ts +49 -0
  252. package/dist/handshake/abort.d.ts.map +1 -0
  253. package/dist/handshake/abort.js +82 -0
  254. package/dist/handshake/abort.js.map +1 -0
  255. package/dist/handshake/capabilities.d.ts +46 -0
  256. package/dist/handshake/capabilities.d.ts.map +1 -0
  257. package/dist/handshake/capabilities.js +114 -0
  258. package/dist/handshake/capabilities.js.map +1 -0
  259. package/dist/handshake/client_state.d.ts +186 -0
  260. package/dist/handshake/client_state.d.ts.map +1 -0
  261. package/dist/handshake/client_state.js +520 -0
  262. package/dist/handshake/client_state.js.map +1 -0
  263. package/dist/handshake/confirm.d.ts +21 -0
  264. package/dist/handshake/confirm.d.ts.map +1 -0
  265. package/dist/handshake/confirm.js +27 -0
  266. package/dist/handshake/confirm.js.map +1 -0
  267. package/dist/handshake/driver.d.ts +126 -0
  268. package/dist/handshake/driver.d.ts.map +1 -0
  269. package/dist/handshake/driver.js +251 -0
  270. package/dist/handshake/driver.js.map +1 -0
  271. package/dist/handshake/federation.d.ts +365 -0
  272. package/dist/handshake/federation.d.ts.map +1 -0
  273. package/dist/handshake/federation.js +664 -0
  274. package/dist/handshake/federation.js.map +1 -0
  275. package/dist/handshake/first_contact.d.ts +57 -0
  276. package/dist/handshake/first_contact.d.ts.map +1 -0
  277. package/dist/handshake/first_contact.js +124 -0
  278. package/dist/handshake/first_contact.js.map +1 -0
  279. package/dist/handshake/identity.d.ts +101 -0
  280. package/dist/handshake/identity.d.ts.map +1 -0
  281. package/dist/handshake/identity.js +117 -0
  282. package/dist/handshake/identity.js.map +1 -0
  283. package/dist/handshake/index.d.ts +21 -0
  284. package/dist/handshake/index.d.ts.map +1 -0
  285. package/dist/handshake/index.js +21 -0
  286. package/dist/handshake/index.js.map +1 -0
  287. package/dist/handshake/messages.d.ts +176 -0
  288. package/dist/handshake/messages.d.ts.map +1 -0
  289. package/dist/handshake/messages.js +125 -0
  290. package/dist/handshake/messages.js.map +1 -0
  291. package/dist/handshake/pow.d.ts +53 -0
  292. package/dist/handshake/pow.d.ts.map +1 -0
  293. package/dist/handshake/pow.js +142 -0
  294. package/dist/handshake/pow.js.map +1 -0
  295. package/dist/handshake/resume_driver.d.ts +56 -0
  296. package/dist/handshake/resume_driver.d.ts.map +1 -0
  297. package/dist/handshake/resume_driver.js +75 -0
  298. package/dist/handshake/resume_driver.js.map +1 -0
  299. package/dist/handshake/server.d.ts +112 -0
  300. package/dist/handshake/server.d.ts.map +1 -0
  301. package/dist/handshake/server.js +247 -0
  302. package/dist/handshake/server.js.map +1 -0
  303. package/dist/handshake/server_state.d.ts +102 -0
  304. package/dist/handshake/server_state.d.ts.map +1 -0
  305. package/dist/handshake/server_state.js +278 -0
  306. package/dist/handshake/server_state.js.map +1 -0
  307. package/dist/index.d.ts +33 -0
  308. package/dist/index.d.ts.map +1 -0
  309. package/dist/index.js +33 -0
  310. package/dist/index.js.map +1 -0
  311. package/dist/keys/compromise.d.ts +118 -0
  312. package/dist/keys/compromise.d.ts.map +1 -0
  313. package/dist/keys/compromise.js +218 -0
  314. package/dist/keys/compromise.js.map +1 -0
  315. package/dist/keys/device_certificate.d.ts +166 -0
  316. package/dist/keys/device_certificate.d.ts.map +1 -0
  317. package/dist/keys/device_certificate.js +328 -0
  318. package/dist/keys/device_certificate.js.map +1 -0
  319. package/dist/keys/device_records.d.ts +175 -0
  320. package/dist/keys/device_records.d.ts.map +1 -0
  321. package/dist/keys/device_records.js +418 -0
  322. package/dist/keys/device_records.js.map +1 -0
  323. package/dist/keys/directory_cache.d.ts +64 -0
  324. package/dist/keys/directory_cache.d.ts.map +1 -0
  325. package/dist/keys/directory_cache.js +98 -0
  326. package/dist/keys/directory_cache.js.map +1 -0
  327. package/dist/keys/directory_state.d.ts +79 -0
  328. package/dist/keys/directory_state.d.ts.map +1 -0
  329. package/dist/keys/directory_state.js +155 -0
  330. package/dist/keys/directory_state.js.map +1 -0
  331. package/dist/keys/index.d.ts +18 -0
  332. package/dist/keys/index.d.ts.map +1 -0
  333. package/dist/keys/index.js +18 -0
  334. package/dist/keys/index.js.map +1 -0
  335. package/dist/keys/key_revocation.d.ts +61 -0
  336. package/dist/keys/key_revocation.d.ts.map +1 -0
  337. package/dist/keys/key_revocation.js +88 -0
  338. package/dist/keys/key_revocation.js.map +1 -0
  339. package/dist/keys/request.d.ts +124 -0
  340. package/dist/keys/request.d.ts.map +1 -0
  341. package/dist/keys/request.js +130 -0
  342. package/dist/keys/request.js.map +1 -0
  343. package/dist/keys/sign.d.ts +49 -0
  344. package/dist/keys/sign.d.ts.map +1 -0
  345. package/dist/keys/sign.js +80 -0
  346. package/dist/keys/sign.js.map +1 -0
  347. package/dist/keys/signed.d.ts +80 -0
  348. package/dist/keys/signed.d.ts.map +1 -0
  349. package/dist/keys/signed.js +138 -0
  350. package/dist/keys/signed.js.map +1 -0
  351. package/dist/keys/store.d.ts +138 -0
  352. package/dist/keys/store.d.ts.map +1 -0
  353. package/dist/keys/store.js +107 -0
  354. package/dist/keys/store.js.map +1 -0
  355. package/dist/largeattachment/crypto.d.ts +47 -0
  356. package/dist/largeattachment/crypto.d.ts.map +1 -0
  357. package/dist/largeattachment/crypto.js +235 -0
  358. package/dist/largeattachment/crypto.js.map +1 -0
  359. package/dist/largeattachment/enclosure.d.ts +48 -0
  360. package/dist/largeattachment/enclosure.d.ts.map +1 -0
  361. package/dist/largeattachment/enclosure.js +102 -0
  362. package/dist/largeattachment/enclosure.js.map +1 -0
  363. package/dist/largeattachment/index.d.ts +15 -0
  364. package/dist/largeattachment/index.d.ts.map +1 -0
  365. package/dist/largeattachment/index.js +15 -0
  366. package/dist/largeattachment/index.js.map +1 -0
  367. package/dist/largeattachment/store.d.ts +36 -0
  368. package/dist/largeattachment/store.d.ts.map +1 -0
  369. package/dist/largeattachment/store.js +37 -0
  370. package/dist/largeattachment/store.js.map +1 -0
  371. package/dist/largeattachment/types.d.ts +56 -0
  372. package/dist/largeattachment/types.d.ts.map +1 -0
  373. package/dist/largeattachment/types.js +31 -0
  374. package/dist/largeattachment/types.js.map +1 -0
  375. package/dist/largeattachment/upload.d.ts +62 -0
  376. package/dist/largeattachment/upload.d.ts.map +1 -0
  377. package/dist/largeattachment/upload.js +166 -0
  378. package/dist/largeattachment/upload.js.map +1 -0
  379. package/dist/migration/index.d.ts +17 -0
  380. package/dist/migration/index.d.ts.map +1 -0
  381. package/dist/migration/index.js +17 -0
  382. package/dist/migration/index.js.map +1 -0
  383. package/dist/migration/lockout.d.ts +48 -0
  384. package/dist/migration/lockout.d.ts.map +1 -0
  385. package/dist/migration/lockout.js +57 -0
  386. package/dist/migration/lockout.js.map +1 -0
  387. package/dist/migration/migration.d.ts +48 -0
  388. package/dist/migration/migration.d.ts.map +1 -0
  389. package/dist/migration/migration.js +58 -0
  390. package/dist/migration/migration.js.map +1 -0
  391. package/dist/migration/notice.d.ts +33 -0
  392. package/dist/migration/notice.d.ts.map +1 -0
  393. package/dist/migration/notice.js +85 -0
  394. package/dist/migration/notice.js.map +1 -0
  395. package/dist/migration/orchestrate.d.ts +109 -0
  396. package/dist/migration/orchestrate.d.ts.map +1 -0
  397. package/dist/migration/orchestrate.js +212 -0
  398. package/dist/migration/orchestrate.js.map +1 -0
  399. package/dist/migration/publication_store.d.ts +34 -0
  400. package/dist/migration/publication_store.d.ts.map +1 -0
  401. package/dist/migration/publication_store.js +44 -0
  402. package/dist/migration/publication_store.js.map +1 -0
  403. package/dist/migration/sign.d.ts +65 -0
  404. package/dist/migration/sign.d.ts.map +1 -0
  405. package/dist/migration/sign.js +331 -0
  406. package/dist/migration/sign.js.map +1 -0
  407. package/dist/migration/types.d.ts +92 -0
  408. package/dist/migration/types.d.ts.map +1 -0
  409. package/dist/migration/types.js +26 -0
  410. package/dist/migration/types.js.map +1 -0
  411. package/dist/reasoncodes.d.ts +42 -0
  412. package/dist/reasoncodes.d.ts.map +1 -0
  413. package/dist/reasoncodes.js +80 -0
  414. package/dist/reasoncodes.js.map +1 -0
  415. package/dist/recovery/bundle.d.ts +34 -0
  416. package/dist/recovery/bundle.d.ts.map +1 -0
  417. package/dist/recovery/bundle.js +144 -0
  418. package/dist/recovery/bundle.js.map +1 -0
  419. package/dist/recovery/bundle_crypto.d.ts +60 -0
  420. package/dist/recovery/bundle_crypto.d.ts.map +1 -0
  421. package/dist/recovery/bundle_crypto.js +179 -0
  422. package/dist/recovery/bundle_crypto.js.map +1 -0
  423. package/dist/recovery/bundle_store.d.ts +57 -0
  424. package/dist/recovery/bundle_store.d.ts.map +1 -0
  425. package/dist/recovery/bundle_store.js +104 -0
  426. package/dist/recovery/bundle_store.js.map +1 -0
  427. package/dist/recovery/index.d.ts +19 -0
  428. package/dist/recovery/index.d.ts.map +1 -0
  429. package/dist/recovery/index.js +19 -0
  430. package/dist/recovery/index.js.map +1 -0
  431. package/dist/recovery/manifest_crosscheck.d.ts +59 -0
  432. package/dist/recovery/manifest_crosscheck.d.ts.map +1 -0
  433. package/dist/recovery/manifest_crosscheck.js +59 -0
  434. package/dist/recovery/manifest_crosscheck.js.map +1 -0
  435. package/dist/recovery/shamir.d.ts +51 -0
  436. package/dist/recovery/shamir.d.ts.map +1 -0
  437. package/dist/recovery/shamir.js +181 -0
  438. package/dist/recovery/shamir.js.map +1 -0
  439. package/dist/recovery/sign.d.ts +61 -0
  440. package/dist/recovery/sign.d.ts.map +1 -0
  441. package/dist/recovery/sign.js +359 -0
  442. package/dist/recovery/sign.js.map +1 -0
  443. package/dist/recovery/types.d.ts +180 -0
  444. package/dist/recovery/types.d.ts.map +1 -0
  445. package/dist/recovery/types.js +31 -0
  446. package/dist/recovery/types.js.map +1 -0
  447. package/dist/reputation/abuse_report.d.ts +62 -0
  448. package/dist/reputation/abuse_report.d.ts.map +1 -0
  449. package/dist/reputation/abuse_report.js +111 -0
  450. package/dist/reputation/abuse_report.js.map +1 -0
  451. package/dist/reputation/bucketize.d.ts +31 -0
  452. package/dist/reputation/bucketize.d.ts.map +1 -0
  453. package/dist/reputation/bucketize.js +77 -0
  454. package/dist/reputation/bucketize.js.map +1 -0
  455. package/dist/reputation/gossip.d.ts +24 -0
  456. package/dist/reputation/gossip.d.ts.map +1 -0
  457. package/dist/reputation/gossip.js +64 -0
  458. package/dist/reputation/gossip.js.map +1 -0
  459. package/dist/reputation/gossip_fetch.d.ts +64 -0
  460. package/dist/reputation/gossip_fetch.d.ts.map +1 -0
  461. package/dist/reputation/gossip_fetch.js +114 -0
  462. package/dist/reputation/gossip_fetch.js.map +1 -0
  463. package/dist/reputation/index.d.ts +20 -0
  464. package/dist/reputation/index.d.ts.map +1 -0
  465. package/dist/reputation/index.js +20 -0
  466. package/dist/reputation/index.js.map +1 -0
  467. package/dist/reputation/observation_store.d.ts +67 -0
  468. package/dist/reputation/observation_store.d.ts.map +1 -0
  469. package/dist/reputation/observation_store.js +171 -0
  470. package/dist/reputation/observation_store.js.map +1 -0
  471. package/dist/reputation/pow.d.ts +91 -0
  472. package/dist/reputation/pow.d.ts.map +1 -0
  473. package/dist/reputation/pow.js +209 -0
  474. package/dist/reputation/pow.js.map +1 -0
  475. package/dist/reputation/sign.d.ts +40 -0
  476. package/dist/reputation/sign.d.ts.map +1 -0
  477. package/dist/reputation/sign.js +202 -0
  478. package/dist/reputation/sign.js.map +1 -0
  479. package/dist/reputation/types.d.ts +133 -0
  480. package/dist/reputation/types.d.ts.map +1 -0
  481. package/dist/reputation/types.js +33 -0
  482. package/dist/reputation/types.js.map +1 -0
  483. package/dist/reputation/whois.d.ts +25 -0
  484. package/dist/reputation/whois.d.ts.map +1 -0
  485. package/dist/reputation/whois.js +20 -0
  486. package/dist/reputation/whois.js.map +1 -0
  487. package/dist/seal/index.d.ts +8 -0
  488. package/dist/seal/index.d.ts.map +1 -0
  489. package/dist/seal/index.js +8 -0
  490. package/dist/seal/index.js.map +1 -0
  491. package/dist/seal/wrap.d.ts +74 -0
  492. package/dist/seal/wrap.d.ts.map +1 -0
  493. package/dist/seal/wrap.js +213 -0
  494. package/dist/seal/wrap.js.map +1 -0
  495. package/dist/session/dispatcher.d.ts +65 -0
  496. package/dist/session/dispatcher.d.ts.map +1 -0
  497. package/dist/session/dispatcher.js +96 -0
  498. package/dist/session/dispatcher.js.map +1 -0
  499. package/dist/session/index.d.ts +15 -0
  500. package/dist/session/index.d.ts.map +1 -0
  501. package/dist/session/index.js +15 -0
  502. package/dist/session/index.js.map +1 -0
  503. package/dist/session/rekey.d.ts +108 -0
  504. package/dist/session/rekey.d.ts.map +1 -0
  505. package/dist/session/rekey.js +207 -0
  506. package/dist/session/rekey.js.map +1 -0
  507. package/dist/session/rekey_seal.d.ts +66 -0
  508. package/dist/session/rekey_seal.d.ts.map +1 -0
  509. package/dist/session/rekey_seal.js +153 -0
  510. package/dist/session/rekey_seal.js.map +1 -0
  511. package/dist/session/resume.d.ts +125 -0
  512. package/dist/session/resume.d.ts.map +1 -0
  513. package/dist/session/resume.js +263 -0
  514. package/dist/session/resume.js.map +1 -0
  515. package/dist/session/session.d.ts +136 -0
  516. package/dist/session/session.d.ts.map +1 -0
  517. package/dist/session/session.js +188 -0
  518. package/dist/session/session.js.map +1 -0
  519. package/dist/transparency/index.d.ts +13 -0
  520. package/dist/transparency/index.d.ts.map +1 -0
  521. package/dist/transparency/index.js +13 -0
  522. package/dist/transparency/index.js.map +1 -0
  523. package/dist/transparency/log.d.ts +61 -0
  524. package/dist/transparency/log.d.ts.map +1 -0
  525. package/dist/transparency/log.js +133 -0
  526. package/dist/transparency/log.js.map +1 -0
  527. package/dist/transparency/merkle.d.ts +59 -0
  528. package/dist/transparency/merkle.d.ts.map +1 -0
  529. package/dist/transparency/merkle.js +314 -0
  530. package/dist/transparency/merkle.js.map +1 -0
  531. package/dist/transparency/sign.d.ts +48 -0
  532. package/dist/transparency/sign.d.ts.map +1 -0
  533. package/dist/transparency/sign.js +140 -0
  534. package/dist/transparency/sign.js.map +1 -0
  535. package/dist/transparency/types.d.ts +97 -0
  536. package/dist/transparency/types.d.ts.map +1 -0
  537. package/dist/transparency/types.js +25 -0
  538. package/dist/transparency/types.js.map +1 -0
  539. package/dist/transport/h2.d.ts +163 -0
  540. package/dist/transport/h2.d.ts.map +1 -0
  541. package/dist/transport/h2.js +397 -0
  542. package/dist/transport/h2.js.map +1 -0
  543. package/dist/transport/index.d.ts +15 -0
  544. package/dist/transport/index.d.ts.map +1 -0
  545. package/dist/transport/index.js +15 -0
  546. package/dist/transport/index.js.map +1 -0
  547. package/dist/transport/memory.d.ts +21 -0
  548. package/dist/transport/memory.d.ts.map +1 -0
  549. package/dist/transport/memory.js +112 -0
  550. package/dist/transport/memory.js.map +1 -0
  551. package/dist/transport/transport.d.ts +54 -0
  552. package/dist/transport/transport.d.ts.map +1 -0
  553. package/dist/transport/transport.js +20 -0
  554. package/dist/transport/transport.js.map +1 -0
  555. package/dist/transport/ws.d.ts +40 -0
  556. package/dist/transport/ws.d.ts.map +1 -0
  557. package/dist/transport/ws.js +204 -0
  558. package/dist/transport/ws.js.map +1 -0
  559. package/package.json +147 -0
@@ -0,0 +1,397 @@
1
+ /**
2
+ * HTTP/2 transport binding per TRANSPORT.md §4.2.
3
+ *
4
+ * Unlike WebSocket — which gives us a single bidirectional pipe —
5
+ * the SEMP HTTP/2 binding is a collection of HTTP endpoints with
6
+ * path-based routing:
7
+ *
8
+ * - `POST /v1/discovery` — discovery lookup
9
+ * - `POST /v1/keys` — key request
10
+ * - `POST /v1/handshake` — handshake step
11
+ * - `POST /v1/envelope` — envelope submit
12
+ * - `POST /v1/session/{id}` — long-lived bidirectional session
13
+ * stream (server pushes via SSE,
14
+ * client posts additional messages
15
+ * to the same URL)
16
+ *
17
+ * This module exposes:
18
+ *
19
+ * - {@link h2Post}: a typed JSON POST helper for the four
20
+ * request/response endpoints. Surfaces the `Semp-Session-Id`
21
+ * response header to the caller.
22
+ * - {@link dialH2Session}: opens a long-lived POST to
23
+ * `/v1/session/{id}` and returns a {@link Transport} whose
24
+ * `receive()` reads SSE events from the open stream and `send()`
25
+ * POSTs additional messages to the same URL.
26
+ * - {@link encodeSSE} / {@link decodeSSE}: encode/decode helpers
27
+ * for callers that want to roll their own.
28
+ *
29
+ * @module
30
+ */
31
+ /** Header name the server sets on its response to handshake init. */
32
+ export const SempSessionIdHeader = "Semp-Session-Id";
33
+ /**
34
+ * POST a SEMP message to one of the request/response endpoints
35
+ * (`/v1/handshake`, `/v1/keys`, `/v1/envelope`, `/v1/discovery`).
36
+ * Resolves with the response body and the `Semp-Session-Id` header.
37
+ *
38
+ * Translates HTTP status codes per §4.2.2:
39
+ * - 2xx: resolves successfully.
40
+ * - 400, 413, 429, 503: rejects with a structured error.
41
+ * - other non-2xx: rejects with the status as the message.
42
+ */
43
+ export async function h2Post(url, message, opts = {}) {
44
+ if (url === "") {
45
+ throw new Error("h2: empty url");
46
+ }
47
+ const fetchImpl = opts.fetchImpl ?? defaultFetch();
48
+ const headers = {
49
+ "Content-Type": "application/json; charset=utf-8",
50
+ Accept: "application/json",
51
+ ...(opts.headers ?? {}),
52
+ };
53
+ if (opts.sessionId !== undefined && opts.sessionId !== "") {
54
+ headers[SempSessionIdHeader] = opts.sessionId;
55
+ }
56
+ const { signal, cleanup } = composeSignal(opts.signal, opts.timeoutMs);
57
+ let resp;
58
+ try {
59
+ resp = await fetchImpl(url, {
60
+ method: "POST",
61
+ headers,
62
+ body: message,
63
+ signal,
64
+ });
65
+ }
66
+ finally {
67
+ cleanup();
68
+ }
69
+ if (!resp.ok) {
70
+ const reason = httpReason(resp.status);
71
+ throw new Error(`h2: POST ${url} ${reason} (${resp.status})`);
72
+ }
73
+ const buf = await resp.arrayBuffer();
74
+ return {
75
+ body: new Uint8Array(buf),
76
+ status: resp.status,
77
+ sessionId: resp.headers.get(SempSessionIdHeader),
78
+ };
79
+ }
80
+ function httpReason(status) {
81
+ switch (status) {
82
+ case 400:
83
+ return "malformed SEMP message";
84
+ case 413:
85
+ return "payload exceeds max_envelope_size";
86
+ case 429:
87
+ return "transport-level rate limit";
88
+ case 503:
89
+ return "server temporarily unavailable";
90
+ default:
91
+ return `HTTP ${status}`;
92
+ }
93
+ }
94
+ /**
95
+ * Open a long-lived POST to the session URL and return a
96
+ * {@link Transport} whose `receive()` reads SSE events from that
97
+ * response and `send()` POSTs additional messages to the same URL.
98
+ *
99
+ * Per TRANSPORT.md §4.2.4: each `data:` line in the response carries
100
+ * a complete SEMP JSON message; blank lines delimit events.
101
+ */
102
+ export async function dialH2Session(opts) {
103
+ if (opts.sessionUrl === "") {
104
+ throw new Error("h2: empty sessionUrl");
105
+ }
106
+ const fetchImpl = opts.fetchImpl ?? defaultFetch();
107
+ const sendController = new AbortController();
108
+ const composed = composeSignal(opts.signal, opts.timeoutMs);
109
+ const headers = {
110
+ "Content-Type": "application/json; charset=utf-8",
111
+ Accept: "text/event-stream",
112
+ };
113
+ let resp;
114
+ try {
115
+ resp = await fetchImpl(opts.sessionUrl, {
116
+ method: "POST",
117
+ headers,
118
+ body: opts.initialBody,
119
+ signal: composed.signal,
120
+ });
121
+ }
122
+ catch (err) {
123
+ composed.cleanup();
124
+ throw err;
125
+ }
126
+ composed.cleanup();
127
+ if (!resp.ok) {
128
+ throw new Error(`h2: session POST ${opts.sessionUrl} ${httpReason(resp.status)} (${resp.status})`);
129
+ }
130
+ if (resp.body === null || resp.body === undefined) {
131
+ throw new Error("h2: session response has no body");
132
+ }
133
+ const eventReader = createEventReader(resp.body);
134
+ let closed = false;
135
+ const url = opts.sessionUrl;
136
+ const transport = {
137
+ async send(message) {
138
+ if (closed) {
139
+ throw new Error("h2: session transport closed");
140
+ }
141
+ const r = await fetchImpl(url, {
142
+ method: "POST",
143
+ headers: {
144
+ "Content-Type": "application/json; charset=utf-8",
145
+ Accept: "application/json",
146
+ },
147
+ body: message,
148
+ signal: sendController.signal,
149
+ });
150
+ if (!r.ok) {
151
+ throw new Error(`h2: session send ${httpReason(r.status)} (${r.status})`);
152
+ }
153
+ // Discard the body; per spec, server-pushed messages arrive on
154
+ // the SSE stream, not on the per-send response.
155
+ await r.arrayBuffer();
156
+ },
157
+ async receive() {
158
+ if (closed) {
159
+ return null;
160
+ }
161
+ const event = await eventReader.read();
162
+ if (event === null) {
163
+ closed = true;
164
+ return null;
165
+ }
166
+ return new TextEncoder().encode(event);
167
+ },
168
+ async close() {
169
+ if (closed) {
170
+ return;
171
+ }
172
+ closed = true;
173
+ sendController.abort();
174
+ eventReader.close();
175
+ },
176
+ };
177
+ return transport;
178
+ }
179
+ // ---------------------------------------------------------------------------
180
+ // SSE encode
181
+ /**
182
+ * Encode a single SEMP message as an SSE event. Each line in the
183
+ * message body produces a `data:` line; the event is terminated with
184
+ * a single blank line.
185
+ *
186
+ * The encoder normalizes CR / CRLF line terminators to LF before
187
+ * emitting each `data:` line. SEMP payloads are JSON documents whose
188
+ * control bytes are escaped (`\r`, `\n`), so the wire form never
189
+ * actually carries a literal CR or LF — but be defensive.
190
+ */
191
+ export function encodeSSE(message) {
192
+ const lines = splitSSELines(message);
193
+ let out = "";
194
+ for (const line of lines) {
195
+ out += "data: " + line + "\n";
196
+ }
197
+ out += "\n";
198
+ return out;
199
+ }
200
+ function splitSSELines(s) {
201
+ if (s === "") {
202
+ return [""];
203
+ }
204
+ const out = [];
205
+ let start = 0;
206
+ for (let i = 0; i < s.length; i++) {
207
+ const c = s.charCodeAt(i);
208
+ if (c !== 0x0d && c !== 0x0a) {
209
+ continue;
210
+ }
211
+ out.push(s.slice(start, i));
212
+ if (c === 0x0d && i + 1 < s.length && s.charCodeAt(i + 1) === 0x0a) {
213
+ i++; // skip LF in CRLF
214
+ }
215
+ start = i + 1;
216
+ }
217
+ out.push(s.slice(start));
218
+ return out;
219
+ }
220
+ // ---------------------------------------------------------------------------
221
+ // SSE decode
222
+ /**
223
+ * Decode SSE events from a string buffer. Each call returns the next
224
+ * complete event's `data` payload (or `null` if no complete event is
225
+ * buffered yet). Stateful — the buffer accumulates partial input.
226
+ */
227
+ export class SSEDecoder {
228
+ buffer = "";
229
+ dataLines = [];
230
+ /** Append more bytes to the buffer. */
231
+ push(chunk) {
232
+ this.buffer += chunk;
233
+ }
234
+ /**
235
+ * Return the data payload of the next complete event, or `null` if
236
+ * none is buffered. Repeatedly call until `null` to drain.
237
+ */
238
+ next() {
239
+ while (true) {
240
+ const lf = this.buffer.indexOf("\n");
241
+ if (lf < 0) {
242
+ return null;
243
+ }
244
+ let line = this.buffer.slice(0, lf);
245
+ this.buffer = this.buffer.slice(lf + 1);
246
+ if (line.endsWith("\r")) {
247
+ line = line.slice(0, -1);
248
+ }
249
+ if (line === "") {
250
+ if (this.dataLines.length > 0) {
251
+ const event = this.dataLines.join("\n");
252
+ this.dataLines = [];
253
+ return event;
254
+ }
255
+ // Empty leading lines (keepalives) — skip.
256
+ continue;
257
+ }
258
+ // Comment lines start with ":" — ignore.
259
+ if (line.startsWith(":")) {
260
+ continue;
261
+ }
262
+ // Field parse: "<field>:<value>" with optional space after colon.
263
+ const colon = line.indexOf(":");
264
+ let field;
265
+ let value;
266
+ if (colon < 0) {
267
+ field = line;
268
+ value = "";
269
+ }
270
+ else {
271
+ field = line.slice(0, colon);
272
+ value = line.slice(colon + 1);
273
+ if (value.startsWith(" ")) {
274
+ value = value.slice(1);
275
+ }
276
+ }
277
+ if (field !== "data") {
278
+ continue;
279
+ }
280
+ this.dataLines.push(value);
281
+ }
282
+ }
283
+ /**
284
+ * Flush any pending data lines as a final event. Called on EOF when
285
+ * the underlying stream ends without a trailing blank line.
286
+ */
287
+ flush() {
288
+ if (this.dataLines.length === 0) {
289
+ return null;
290
+ }
291
+ const event = this.dataLines.join("\n");
292
+ this.dataLines = [];
293
+ return event;
294
+ }
295
+ }
296
+ /** Decode all events present in a complete (already-buffered) SSE blob. */
297
+ export function decodeSSE(blob) {
298
+ const dec = new SSEDecoder();
299
+ dec.push(blob);
300
+ const out = [];
301
+ while (true) {
302
+ const ev = dec.next();
303
+ if (ev === null) {
304
+ break;
305
+ }
306
+ out.push(ev);
307
+ }
308
+ const trailing = dec.flush();
309
+ if (trailing !== null) {
310
+ out.push(trailing);
311
+ }
312
+ return out;
313
+ }
314
+ function createEventReader(body) {
315
+ const decoder = new SSEDecoder();
316
+ const utf8 = new TextDecoder("utf-8");
317
+ let done = false;
318
+ let buffered = null;
319
+ const iter = makeAsyncIterator(body);
320
+ return {
321
+ async read() {
322
+ if (buffered !== null) {
323
+ const out = buffered;
324
+ buffered = null;
325
+ return out;
326
+ }
327
+ while (true) {
328
+ const ev = decoder.next();
329
+ if (ev !== null) {
330
+ return ev;
331
+ }
332
+ if (done) {
333
+ return decoder.flush();
334
+ }
335
+ const result = await iter.next();
336
+ if (result.done === true) {
337
+ done = true;
338
+ continue;
339
+ }
340
+ if (result.value === undefined) {
341
+ continue;
342
+ }
343
+ decoder.push(utf8.decode(result.value, { stream: true }));
344
+ }
345
+ },
346
+ close() {
347
+ done = true;
348
+ iter.return?.();
349
+ },
350
+ };
351
+ }
352
+ function makeAsyncIterator(body) {
353
+ if (typeof body[Symbol.asyncIterator] === "function") {
354
+ const it = body[Symbol.asyncIterator]();
355
+ return it;
356
+ }
357
+ const reader = body.getReader();
358
+ return {
359
+ async next() {
360
+ return reader.read();
361
+ },
362
+ };
363
+ }
364
+ function composeSignal(externalSignal, timeoutMs) {
365
+ const controller = new AbortController();
366
+ const timer = timeoutMs !== undefined && timeoutMs > 0
367
+ ? setTimeout(() => controller.abort(), timeoutMs)
368
+ : undefined;
369
+ const externalListener = () => controller.abort();
370
+ if (externalSignal !== undefined) {
371
+ if (externalSignal.aborted) {
372
+ controller.abort();
373
+ }
374
+ else {
375
+ externalSignal.addEventListener("abort", externalListener, { once: true });
376
+ }
377
+ }
378
+ return {
379
+ signal: controller.signal,
380
+ cleanup() {
381
+ if (timer !== undefined) {
382
+ clearTimeout(timer);
383
+ }
384
+ if (externalSignal !== undefined) {
385
+ externalSignal.removeEventListener("abort", externalListener);
386
+ }
387
+ },
388
+ };
389
+ }
390
+ function defaultFetch() {
391
+ const f = globalThis.fetch;
392
+ if (f === undefined) {
393
+ throw new Error("h2: globalThis.fetch is undefined. Pass a fetchImpl option, or run on Node 22+ / a browser.");
394
+ }
395
+ return f;
396
+ }
397
+ //# sourceMappingURL=h2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"h2.js","sourceRoot":"","sources":["../../src/transport/h2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Transport layer: SEMP runs over WebSocket, HTTP/2, and QUIC per
3
+ * `TRANSPORT.md` §4. Higher layers (handshake driver, session
4
+ * machine) consume the abstract `Transport` interface and are
5
+ * agnostic to the underlying socket.
6
+ *
7
+ * v0.x ships WebSocket and HTTP/2. QUIC comes in a later release.
8
+ *
9
+ * @module
10
+ */
11
+ export { type DialOptions, type Transport } from "./transport.js";
12
+ export { type WSDialOptions, SempSubprotocol, dial as dialWS } from "./ws.js";
13
+ export { newPair as newMemoryPair } from "./memory.js";
14
+ export { type DialH2SessionOptions, type H2FetchLike, type H2PostOptions, type H2PostResult, type H2Response, SSEDecoder, SempSessionIdHeader, decodeSSE, dialH2Session, encodeSSE, h2Post, } from "./h2.js";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,KAAK,aAAa,EAAE,eAAe,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,UAAU,EACV,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,SAAS,EACT,MAAM,GACP,MAAM,SAAS,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Transport layer: SEMP runs over WebSocket, HTTP/2, and QUIC per
3
+ * `TRANSPORT.md` §4. Higher layers (handshake driver, session
4
+ * machine) consume the abstract `Transport` interface and are
5
+ * agnostic to the underlying socket.
6
+ *
7
+ * v0.x ships WebSocket and HTTP/2. QUIC comes in a later release.
8
+ *
9
+ * @module
10
+ */
11
+ export {} from "./transport.js";
12
+ export { SempSubprotocol, dial as dialWS } from "./ws.js";
13
+ export { newPair as newMemoryPair } from "./memory.js";
14
+ export { SSEDecoder, SempSessionIdHeader, decodeSSE, dialH2Session, encodeSSE, h2Post, } from "./h2.js";
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAoC,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAsB,eAAe,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAML,UAAU,EACV,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,SAAS,EACT,MAAM,GACP,MAAM,SAAS,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * In-process loopback transport. Two ends share a pair of FIFO
3
+ * queues; whatever one peer sends, the other receives. Used by
4
+ * tests that exercise the handshake driver, session machine, and
5
+ * client/server orchestration without standing up a real
6
+ * WebSocket / HTTP/2 server.
7
+ *
8
+ * NOT a transport for production traffic. The two peers run in
9
+ * the same process and share memory; there is no encryption,
10
+ * no flow control, no message-size enforcement.
11
+ *
12
+ * @module
13
+ */
14
+ import type { Transport } from "./transport.js";
15
+ /**
16
+ * Construct a connected pair of in-process transports. The two
17
+ * returned ends communicate symmetrically: bytes sent on one are
18
+ * receivable on the other.
19
+ */
20
+ export declare function newPair(): [Transport, Transport];
21
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/transport/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAoGhD;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAMhD"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * In-process loopback transport. Two ends share a pair of FIFO
3
+ * queues; whatever one peer sends, the other receives. Used by
4
+ * tests that exercise the handshake driver, session machine, and
5
+ * client/server orchestration without standing up a real
6
+ * WebSocket / HTTP/2 server.
7
+ *
8
+ * NOT a transport for production traffic. The two peers run in
9
+ * the same process and share memory; there is no encryption,
10
+ * no flow control, no message-size enforcement.
11
+ *
12
+ * @module
13
+ */
14
+ class Endpoint {
15
+ outbox;
16
+ inbox;
17
+ closed = false;
18
+ constructor(outbox, inbox) {
19
+ this.outbox = outbox;
20
+ this.inbox = inbox;
21
+ }
22
+ send(message) {
23
+ if (this.closed) {
24
+ return Promise.reject(new Error("memory transport: send after close"));
25
+ }
26
+ this.outbox.push(message);
27
+ return Promise.resolve();
28
+ }
29
+ receive() {
30
+ return this.inbox.shift();
31
+ }
32
+ close() {
33
+ if (this.closed) {
34
+ return Promise.resolve();
35
+ }
36
+ this.closed = true;
37
+ // Closing one end does NOT immediately drain the other side's
38
+ // outbox — buffered messages from the closed peer are still
39
+ // delivered before the inbox returns null.
40
+ this.outbox.closeWriter();
41
+ this.inbox.closeReader();
42
+ return Promise.resolve();
43
+ }
44
+ }
45
+ /**
46
+ * One-element-at-a-time async queue with closeable writer +
47
+ * closeable reader. Once the writer closes, queued items still
48
+ * drain to readers, then `shift` returns null. Once the reader
49
+ * closes, `shift` rejects on subsequent calls.
50
+ */
51
+ class Queue {
52
+ items = [];
53
+ waiters = [];
54
+ writerClosed = false;
55
+ readerClosed = false;
56
+ push(v) {
57
+ if (this.writerClosed) {
58
+ throw new Error("memory transport: push after writer close");
59
+ }
60
+ const next = this.waiters.shift();
61
+ if (next !== undefined) {
62
+ next.resolve(v);
63
+ }
64
+ else {
65
+ this.items.push(v);
66
+ }
67
+ }
68
+ shift() {
69
+ if (this.readerClosed) {
70
+ return Promise.reject(new Error("memory transport: receive after reader close"));
71
+ }
72
+ const buffered = this.items.shift();
73
+ if (buffered !== undefined) {
74
+ return Promise.resolve(buffered);
75
+ }
76
+ if (this.writerClosed) {
77
+ return Promise.resolve(null);
78
+ }
79
+ return new Promise((resolve, reject) => {
80
+ this.waiters.push({ resolve, reject });
81
+ });
82
+ }
83
+ closeWriter() {
84
+ this.writerClosed = true;
85
+ if (this.items.length === 0) {
86
+ const drained = this.waiters.splice(0);
87
+ for (const w of drained) {
88
+ w.resolve(null);
89
+ }
90
+ }
91
+ }
92
+ closeReader() {
93
+ this.readerClosed = true;
94
+ const drained = this.waiters.splice(0);
95
+ for (const w of drained) {
96
+ w.reject(new Error("memory transport: receiver closed"));
97
+ }
98
+ }
99
+ }
100
+ /**
101
+ * Construct a connected pair of in-process transports. The two
102
+ * returned ends communicate symmetrically: bytes sent on one are
103
+ * receivable on the other.
104
+ */
105
+ export function newPair() {
106
+ const aToB = new Queue();
107
+ const bToA = new Queue();
108
+ const a = new Endpoint(aToB, bToA);
109
+ const b = new Endpoint(bToA, aToB);
110
+ return [a, b];
111
+ }
112
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/transport/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Transport abstraction per `TRANSPORT.md` §2.
3
+ *
4
+ * SEMP messages are exchanged as opaque byte slices over a stream
5
+ * the higher layers treat as bidirectional, ordered, and
6
+ * framed. The handshake driver, session machine, and inbox
7
+ * client all consume this same interface; the choice of
8
+ * underlying transport (WebSocket, HTTP/2, QUIC) is swapped at
9
+ * the boundary.
10
+ *
11
+ * Each `send` writes one SEMP message per spec §4.1.2 (no
12
+ * splitting across frames). Each `receive` returns one complete
13
+ * SEMP message (the underlying transport reassembles fragmented
14
+ * frames before yielding). When the remote side closes,
15
+ * `receive` returns `null`; subsequent calls also return `null`.
16
+ *
17
+ * @module
18
+ */
19
+ /**
20
+ * One direction of a connected SEMP transport. Implementations
21
+ * MUST guarantee message boundary preservation: one `send` on
22
+ * one peer corresponds to exactly one `receive` on the other,
23
+ * with the same byte sequence.
24
+ */
25
+ export interface Transport {
26
+ /** Send one SEMP message. Resolves once the bytes are committed to the underlying transport. */
27
+ send(message: Uint8Array): Promise<void>;
28
+ /**
29
+ * Receive the next SEMP message. Resolves with the message bytes
30
+ * on success; with `null` when the remote side has cleanly closed
31
+ * AND no buffered messages remain.
32
+ *
33
+ * Rejects if the underlying transport surfaces an error (network
34
+ * failure, framing violation, subprotocol mismatch). The caller
35
+ * SHOULD treat any rejection as terminal for the connection.
36
+ */
37
+ receive(): Promise<Uint8Array | null>;
38
+ /** Close the underlying connection. Idempotent. */
39
+ close(code?: number, reason?: string): Promise<void>;
40
+ }
41
+ /** Optional context passed through to dialers. */
42
+ export interface DialOptions {
43
+ /**
44
+ * Abort signal observed by dialers. When fired before connect
45
+ * completes, the returned promise rejects with the abort reason.
46
+ */
47
+ signal?: AbortSignal;
48
+ /**
49
+ * Timeout in milliseconds for the connect handshake. Default: 30s.
50
+ * Ignored if `signal` is also supplied.
51
+ */
52
+ timeoutMs?: number;
53
+ }
54
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/transport/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,gGAAgG;IAChG,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC;;;;;;;;OAQG;IACH,OAAO,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAEtC,mDAAmD;IACnD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AAED,kDAAkD;AAClD,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Transport abstraction per `TRANSPORT.md` §2.
3
+ *
4
+ * SEMP messages are exchanged as opaque byte slices over a stream
5
+ * the higher layers treat as bidirectional, ordered, and
6
+ * framed. The handshake driver, session machine, and inbox
7
+ * client all consume this same interface; the choice of
8
+ * underlying transport (WebSocket, HTTP/2, QUIC) is swapped at
9
+ * the boundary.
10
+ *
11
+ * Each `send` writes one SEMP message per spec §4.1.2 (no
12
+ * splitting across frames). Each `receive` returns one complete
13
+ * SEMP message (the underlying transport reassembles fragmented
14
+ * frames before yielding). When the remote side closes,
15
+ * `receive` returns `null`; subsequent calls also return `null`.
16
+ *
17
+ * @module
18
+ */
19
+ export {};
20
+ //# sourceMappingURL=transport.js.map