@labacacia/nps-sdk 1.0.0-alpha.1 → 1.0.0-alpha.13

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 (452) hide show
  1. package/CHANGELOG.cn.md +181 -0
  2. package/CHANGELOG.md +234 -0
  3. package/LICENSE +0 -0
  4. package/NOTICE +0 -0
  5. package/README.cn.md +163 -0
  6. package/README.md +16 -6
  7. package/dist/core/anchor-cache.d.ts +0 -0
  8. package/dist/core/anchor-cache.d.ts.map +0 -0
  9. package/dist/core/anchor-cache.js +0 -0
  10. package/dist/core/anchor-cache.js.map +0 -0
  11. package/dist/core/cache.d.ts +0 -0
  12. package/dist/core/cache.d.ts.map +0 -0
  13. package/dist/core/cache.js +0 -0
  14. package/dist/core/cache.js.map +0 -0
  15. package/dist/core/canonical-json.d.ts +0 -0
  16. package/dist/core/canonical-json.d.ts.map +0 -0
  17. package/dist/core/canonical-json.js +0 -0
  18. package/dist/core/canonical-json.js.map +0 -0
  19. package/dist/core/codec.d.ts +0 -0
  20. package/dist/core/codec.d.ts.map +0 -0
  21. package/dist/core/codec.js +0 -0
  22. package/dist/core/codec.js.map +0 -0
  23. package/dist/core/codecs/index.d.ts +0 -0
  24. package/dist/core/codecs/index.d.ts.map +0 -0
  25. package/dist/core/codecs/index.js +0 -0
  26. package/dist/core/codecs/index.js.map +0 -0
  27. package/dist/core/codecs/ncp-codec.d.ts +0 -0
  28. package/dist/core/codecs/ncp-codec.d.ts.map +0 -0
  29. package/dist/core/codecs/ncp-codec.js +0 -0
  30. package/dist/core/codecs/ncp-codec.js.map +0 -0
  31. package/dist/core/codecs/tier1-json-codec.d.ts +0 -0
  32. package/dist/core/codecs/tier1-json-codec.d.ts.map +0 -0
  33. package/dist/core/codecs/tier1-json-codec.js +0 -0
  34. package/dist/core/codecs/tier1-json-codec.js.map +0 -0
  35. package/dist/core/codecs/tier2-msgpack-codec.d.ts +0 -0
  36. package/dist/core/codecs/tier2-msgpack-codec.d.ts.map +0 -0
  37. package/dist/core/codecs/tier2-msgpack-codec.js +0 -0
  38. package/dist/core/codecs/tier2-msgpack-codec.js.map +0 -0
  39. package/dist/core/crypto-provider.d.ts +0 -0
  40. package/dist/core/crypto-provider.d.ts.map +0 -0
  41. package/dist/core/crypto-provider.js +0 -0
  42. package/dist/core/crypto-provider.js.map +0 -0
  43. package/dist/core/exceptions.d.ts +0 -0
  44. package/dist/core/exceptions.d.ts.map +0 -0
  45. package/dist/core/exceptions.js +0 -0
  46. package/dist/core/exceptions.js.map +0 -0
  47. package/dist/core/frame-header.d.ts +1 -0
  48. package/dist/core/frame-header.d.ts.map +1 -1
  49. package/dist/core/frame-header.js +1 -0
  50. package/dist/core/frame-header.js.map +1 -1
  51. package/dist/core/frame-registry.d.ts +0 -0
  52. package/dist/core/frame-registry.d.ts.map +1 -1
  53. package/dist/core/frame-registry.js +1 -0
  54. package/dist/core/frame-registry.js.map +1 -1
  55. package/dist/core/frames.d.ts +3 -0
  56. package/dist/core/frames.d.ts.map +1 -1
  57. package/dist/core/frames.js +3 -0
  58. package/dist/core/frames.js.map +1 -1
  59. package/dist/core/index.d.ts +6 -4
  60. package/dist/core/index.d.ts.map +1 -1
  61. package/dist/core/index.js +17 -5
  62. package/dist/core/index.js.map +1 -1
  63. package/dist/core/registry.d.ts +0 -0
  64. package/dist/core/registry.d.ts.map +0 -0
  65. package/dist/core/registry.js +0 -0
  66. package/dist/core/registry.js.map +0 -0
  67. package/dist/core/status-codes.d.ts +20 -0
  68. package/dist/core/status-codes.d.ts.map +1 -1
  69. package/dist/core/status-codes.js +51 -0
  70. package/dist/core/status-codes.js.map +1 -1
  71. package/dist/index.d.ts +1 -1
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +1 -1
  74. package/dist/index.js.map +1 -1
  75. package/dist/ncp/frames/anchor-frame.d.ts +0 -0
  76. package/dist/ncp/frames/anchor-frame.d.ts.map +0 -0
  77. package/dist/ncp/frames/anchor-frame.js +0 -0
  78. package/dist/ncp/frames/anchor-frame.js.map +0 -0
  79. package/dist/ncp/frames/caps-frame.d.ts +0 -0
  80. package/dist/ncp/frames/caps-frame.d.ts.map +0 -0
  81. package/dist/ncp/frames/caps-frame.js +0 -0
  82. package/dist/ncp/frames/caps-frame.js.map +0 -0
  83. package/dist/ncp/frames/diff-frame.d.ts +0 -0
  84. package/dist/ncp/frames/diff-frame.d.ts.map +0 -0
  85. package/dist/ncp/frames/diff-frame.js +0 -0
  86. package/dist/ncp/frames/diff-frame.js.map +0 -0
  87. package/dist/ncp/frames/error-frame.d.ts +0 -0
  88. package/dist/ncp/frames/error-frame.d.ts.map +0 -0
  89. package/dist/ncp/frames/error-frame.js +0 -0
  90. package/dist/ncp/frames/error-frame.js.map +0 -0
  91. package/dist/ncp/frames/hello-frame.d.ts +0 -0
  92. package/dist/ncp/frames/hello-frame.d.ts.map +0 -0
  93. package/dist/ncp/frames/hello-frame.js +0 -0
  94. package/dist/ncp/frames/hello-frame.js.map +0 -0
  95. package/dist/ncp/frames/stream-frame.d.ts +0 -0
  96. package/dist/ncp/frames/stream-frame.d.ts.map +0 -0
  97. package/dist/ncp/frames/stream-frame.js +0 -0
  98. package/dist/ncp/frames/stream-frame.js.map +0 -0
  99. package/dist/ncp/frames.d.ts +25 -0
  100. package/dist/ncp/frames.d.ts.map +1 -1
  101. package/dist/ncp/frames.js +61 -0
  102. package/dist/ncp/frames.js.map +1 -1
  103. package/dist/ncp/handshake.d.ts +0 -0
  104. package/dist/ncp/handshake.d.ts.map +0 -0
  105. package/dist/ncp/handshake.js +0 -0
  106. package/dist/ncp/handshake.js.map +0 -0
  107. package/dist/ncp/index.d.ts +1 -0
  108. package/dist/ncp/index.d.ts.map +1 -1
  109. package/dist/ncp/index.js +1 -0
  110. package/dist/ncp/index.js.map +1 -1
  111. package/dist/ncp/ncp-error-codes.d.ts +5 -0
  112. package/dist/ncp/ncp-error-codes.d.ts.map +1 -1
  113. package/dist/ncp/ncp-error-codes.js +27 -0
  114. package/dist/ncp/ncp-error-codes.js.map +1 -1
  115. package/dist/ncp/ncp-patch-format.d.ts +0 -0
  116. package/dist/ncp/ncp-patch-format.d.ts.map +0 -0
  117. package/dist/ncp/ncp-patch-format.js +0 -0
  118. package/dist/ncp/ncp-patch-format.js.map +0 -0
  119. package/dist/ncp/preamble.d.ts +47 -0
  120. package/dist/ncp/preamble.d.ts.map +1 -0
  121. package/dist/ncp/preamble.js +74 -0
  122. package/dist/ncp/preamble.js.map +1 -0
  123. package/dist/ncp/registry.d.ts +0 -0
  124. package/dist/ncp/registry.d.ts.map +1 -1
  125. package/dist/ncp/registry.js +2 -1
  126. package/dist/ncp/registry.js.map +1 -1
  127. package/dist/ncp/stream-manager.d.ts +0 -0
  128. package/dist/ncp/stream-manager.d.ts.map +0 -0
  129. package/dist/ncp/stream-manager.js +0 -0
  130. package/dist/ncp/stream-manager.js.map +0 -0
  131. package/dist/ndp/dns-txt.d.ts +35 -0
  132. package/dist/ndp/dns-txt.d.ts.map +1 -0
  133. package/dist/ndp/dns-txt.js +67 -0
  134. package/dist/ndp/dns-txt.js.map +1 -0
  135. package/dist/ndp/frames.d.ts +34 -9
  136. package/dist/ndp/frames.d.ts.map +1 -1
  137. package/dist/ndp/frames.js +54 -15
  138. package/dist/ndp/frames.js.map +1 -1
  139. package/dist/ndp/index.d.ts +3 -0
  140. package/dist/ndp/index.d.ts.map +1 -1
  141. package/dist/ndp/index.js +3 -0
  142. package/dist/ndp/index.js.map +1 -1
  143. package/dist/ndp/ndp-error-codes.d.ts +25 -0
  144. package/dist/ndp/ndp-error-codes.d.ts.map +1 -0
  145. package/dist/ndp/ndp-error-codes.js +48 -0
  146. package/dist/ndp/ndp-error-codes.js.map +1 -0
  147. package/dist/ndp/ndp-registry.d.ts +2 -0
  148. package/dist/ndp/ndp-registry.d.ts.map +1 -1
  149. package/dist/ndp/ndp-registry.js +25 -0
  150. package/dist/ndp/ndp-registry.js.map +1 -1
  151. package/dist/ndp/registry.d.ts +0 -0
  152. package/dist/ndp/registry.d.ts.map +0 -0
  153. package/dist/ndp/registry.js +0 -0
  154. package/dist/ndp/registry.js.map +0 -0
  155. package/dist/ndp/security.d.ts +8 -0
  156. package/dist/ndp/security.d.ts.map +1 -0
  157. package/dist/ndp/security.js +9 -0
  158. package/dist/ndp/security.js.map +1 -0
  159. package/dist/ndp/validator.d.ts +0 -0
  160. package/dist/ndp/validator.d.ts.map +0 -0
  161. package/dist/ndp/validator.js +0 -0
  162. package/dist/ndp/validator.js.map +0 -0
  163. package/dist/nip/acme/client.d.ts +31 -0
  164. package/dist/nip/acme/client.d.ts.map +1 -0
  165. package/dist/nip/acme/client.js +136 -0
  166. package/dist/nip/acme/client.js.map +1 -0
  167. package/dist/nip/acme/index.d.ts +6 -0
  168. package/dist/nip/acme/index.d.ts.map +1 -0
  169. package/dist/nip/acme/index.js +8 -0
  170. package/dist/nip/acme/index.js.map +1 -0
  171. package/dist/nip/acme/jws.d.ts +31 -0
  172. package/dist/nip/acme/jws.d.ts.map +1 -0
  173. package/dist/nip/acme/jws.js +76 -0
  174. package/dist/nip/acme/jws.js.map +1 -0
  175. package/dist/nip/acme/messages.d.ts +71 -0
  176. package/dist/nip/acme/messages.d.ts.map +1 -0
  177. package/dist/nip/acme/messages.js +4 -0
  178. package/dist/nip/acme/messages.js.map +1 -0
  179. package/dist/nip/acme/server.d.ts +41 -0
  180. package/dist/nip/acme/server.d.ts.map +1 -0
  181. package/dist/nip/acme/server.js +458 -0
  182. package/dist/nip/acme/server.js.map +1 -0
  183. package/dist/nip/acme/wire.d.ts +19 -0
  184. package/dist/nip/acme/wire.d.ts.map +1 -0
  185. package/dist/nip/acme/wire.js +21 -0
  186. package/dist/nip/acme/wire.js.map +1 -0
  187. package/dist/nip/assurance-level.d.ts +19 -0
  188. package/dist/nip/assurance-level.d.ts.map +1 -0
  189. package/dist/nip/assurance-level.js +38 -0
  190. package/dist/nip/assurance-level.js.map +1 -0
  191. package/dist/nip/cert-format.d.ts +5 -0
  192. package/dist/nip/cert-format.d.ts.map +1 -0
  193. package/dist/nip/cert-format.js +6 -0
  194. package/dist/nip/cert-format.js.map +1 -0
  195. package/dist/nip/error-codes.d.ts +44 -0
  196. package/dist/nip/error-codes.d.ts.map +1 -0
  197. package/dist/nip/error-codes.js +97 -0
  198. package/dist/nip/error-codes.js.map +1 -0
  199. package/dist/nip/frames.d.ts +19 -1
  200. package/dist/nip/frames.d.ts.map +1 -1
  201. package/dist/nip/frames.js +39 -4
  202. package/dist/nip/frames.js.map +1 -1
  203. package/dist/nip/identity.d.ts +0 -0
  204. package/dist/nip/identity.d.ts.map +0 -0
  205. package/dist/nip/identity.js +0 -0
  206. package/dist/nip/identity.js.map +0 -0
  207. package/dist/nip/index.d.ts +7 -0
  208. package/dist/nip/index.d.ts.map +1 -1
  209. package/dist/nip/index.js +9 -0
  210. package/dist/nip/index.js.map +1 -1
  211. package/dist/nip/registry.d.ts +0 -0
  212. package/dist/nip/registry.d.ts.map +0 -0
  213. package/dist/nip/registry.js +0 -0
  214. package/dist/nip/registry.js.map +0 -0
  215. package/dist/nip/reputation-client.d.ts +116 -0
  216. package/dist/nip/reputation-client.d.ts.map +1 -0
  217. package/dist/nip/reputation-client.js +261 -0
  218. package/dist/nip/reputation-client.js.map +1 -0
  219. package/dist/nip/verifier.d.ts +23 -0
  220. package/dist/nip/verifier.d.ts.map +1 -0
  221. package/dist/nip/verifier.js +90 -0
  222. package/dist/nip/verifier.js.map +1 -0
  223. package/dist/nip/x509/builder.d.ts +35 -0
  224. package/dist/nip/x509/builder.d.ts.map +1 -0
  225. package/dist/nip/x509/builder.js +59 -0
  226. package/dist/nip/x509/builder.js.map +1 -0
  227. package/dist/nip/x509/index.d.ts +4 -0
  228. package/dist/nip/x509/index.d.ts.map +1 -0
  229. package/dist/nip/x509/index.js +6 -0
  230. package/dist/nip/x509/index.js.map +1 -0
  231. package/dist/nip/x509/oids.d.ts +16 -0
  232. package/dist/nip/x509/oids.d.ts.map +1 -0
  233. package/dist/nip/x509/oids.js +22 -0
  234. package/dist/nip/x509/oids.js.map +1 -0
  235. package/dist/nip/x509/verifier.d.ts +26 -0
  236. package/dist/nip/x509/verifier.d.ts.map +1 -0
  237. package/dist/nip/x509/verifier.js +171 -0
  238. package/dist/nip/x509/verifier.js.map +1 -0
  239. package/dist/nop/client.d.ts +0 -0
  240. package/dist/nop/client.d.ts.map +0 -0
  241. package/dist/nop/client.js +0 -0
  242. package/dist/nop/client.js.map +1 -1
  243. package/dist/nop/dag-validator.d.ts +15 -0
  244. package/dist/nop/dag-validator.d.ts.map +1 -0
  245. package/dist/nop/dag-validator.js +91 -0
  246. package/dist/nop/dag-validator.js.map +1 -0
  247. package/dist/nop/frames.d.ts +8 -3
  248. package/dist/nop/frames.d.ts.map +1 -1
  249. package/dist/nop/frames.js +21 -6
  250. package/dist/nop/frames.js.map +1 -1
  251. package/dist/nop/index.d.ts +3 -0
  252. package/dist/nop/index.d.ts.map +1 -1
  253. package/dist/nop/index.js +3 -0
  254. package/dist/nop/index.js.map +1 -1
  255. package/dist/nop/models.d.ts +13 -2
  256. package/dist/nop/models.d.ts.map +1 -1
  257. package/dist/nop/models.js +9 -0
  258. package/dist/nop/models.js.map +1 -1
  259. package/dist/nop/nop-error-codes.d.ts +31 -0
  260. package/dist/nop/nop-error-codes.d.ts.map +1 -0
  261. package/dist/nop/nop-error-codes.js +61 -0
  262. package/dist/nop/nop-error-codes.js.map +1 -0
  263. package/dist/nop/nop-types.d.ts +0 -0
  264. package/dist/nop/nop-types.d.ts.map +0 -0
  265. package/dist/nop/nop-types.js +0 -0
  266. package/dist/nop/nop-types.js.map +0 -0
  267. package/dist/nop/orchestrator.d.ts +66 -0
  268. package/dist/nop/orchestrator.d.ts.map +1 -0
  269. package/dist/nop/orchestrator.js +229 -0
  270. package/dist/nop/orchestrator.js.map +1 -0
  271. package/dist/nop/registry.d.ts +0 -0
  272. package/dist/nop/registry.d.ts.map +0 -0
  273. package/dist/nop/registry.js +0 -0
  274. package/dist/nop/registry.js.map +0 -0
  275. package/dist/nwp/anchor-client.d.ts +109 -0
  276. package/dist/nwp/anchor-client.d.ts.map +1 -0
  277. package/dist/nwp/anchor-client.js +279 -0
  278. package/dist/nwp/anchor-client.js.map +1 -0
  279. package/dist/nwp/anchor-server.d.ts +127 -0
  280. package/dist/nwp/anchor-server.d.ts.map +1 -0
  281. package/dist/nwp/anchor-server.js +649 -0
  282. package/dist/nwp/anchor-server.js.map +1 -0
  283. package/dist/nwp/bridge.d.ts +24 -0
  284. package/dist/nwp/bridge.d.ts.map +1 -0
  285. package/dist/nwp/bridge.js +26 -0
  286. package/dist/nwp/bridge.js.map +1 -0
  287. package/dist/nwp/cgn.d.ts +19 -0
  288. package/dist/nwp/cgn.d.ts.map +1 -0
  289. package/dist/nwp/cgn.js +29 -0
  290. package/dist/nwp/cgn.js.map +1 -0
  291. package/dist/nwp/client.d.ts +10 -3
  292. package/dist/nwp/client.d.ts.map +1 -1
  293. package/dist/nwp/client.js +58 -7
  294. package/dist/nwp/client.js.map +1 -1
  295. package/dist/nwp/frames.d.ts +56 -2
  296. package/dist/nwp/frames.d.ts.map +1 -1
  297. package/dist/nwp/frames.js +86 -4
  298. package/dist/nwp/frames.js.map +1 -1
  299. package/dist/nwp/http-headers.d.ts +24 -0
  300. package/dist/nwp/http-headers.d.ts.map +1 -0
  301. package/dist/nwp/http-headers.js +29 -0
  302. package/dist/nwp/http-headers.js.map +1 -0
  303. package/dist/nwp/index.d.ts +9 -0
  304. package/dist/nwp/index.d.ts.map +1 -1
  305. package/dist/nwp/index.js +9 -0
  306. package/dist/nwp/index.js.map +1 -1
  307. package/dist/nwp/manifest.d.ts +75 -0
  308. package/dist/nwp/manifest.d.ts.map +1 -0
  309. package/dist/nwp/manifest.js +5 -0
  310. package/dist/nwp/manifest.js.map +1 -0
  311. package/dist/nwp/memory-node-server.d.ts +70 -0
  312. package/dist/nwp/memory-node-server.d.ts.map +1 -0
  313. package/dist/nwp/memory-node-server.js +315 -0
  314. package/dist/nwp/memory-node-server.js.map +1 -0
  315. package/dist/nwp/nwp-error-codes.d.ts +48 -0
  316. package/dist/nwp/nwp-error-codes.d.ts.map +1 -0
  317. package/dist/nwp/nwp-error-codes.js +108 -0
  318. package/dist/nwp/nwp-error-codes.js.map +1 -0
  319. package/dist/nwp/registry.d.ts +0 -0
  320. package/dist/nwp/registry.d.ts.map +0 -0
  321. package/dist/nwp/registry.js +0 -0
  322. package/dist/nwp/registry.js.map +0 -0
  323. package/dist/nwp/reputation.d.ts +37 -0
  324. package/dist/nwp/reputation.d.ts.map +1 -0
  325. package/dist/nwp/reputation.js +118 -0
  326. package/dist/nwp/reputation.js.map +1 -0
  327. package/dist/setup.d.ts +0 -0
  328. package/dist/setup.d.ts.map +0 -0
  329. package/dist/setup.js +0 -0
  330. package/dist/setup.js.map +0 -0
  331. package/doc/nps-sdk.core.cn.md +321 -0
  332. package/doc/nps-sdk.core.md +326 -0
  333. package/doc/nps-sdk.ncp.cn.md +270 -0
  334. package/doc/nps-sdk.ncp.md +276 -0
  335. package/doc/nps-sdk.ndp.cn.md +267 -0
  336. package/doc/nps-sdk.ndp.md +273 -0
  337. package/doc/nps-sdk.nip.cn.md +265 -0
  338. package/doc/nps-sdk.nip.md +272 -0
  339. package/doc/nps-sdk.nop.cn.md +329 -0
  340. package/doc/nps-sdk.nop.md +332 -0
  341. package/doc/nps-sdk.nwp.cn.md +288 -0
  342. package/doc/nps-sdk.nwp.md +295 -0
  343. package/doc/overview.cn.md +149 -0
  344. package/doc/overview.md +153 -0
  345. package/package.json +33 -4
  346. package/CONTRIBUTING.md +0 -33
  347. package/dist/codec-CmHeovTV.d.cts +0 -120
  348. package/dist/codec-CmHeovTV.d.ts +0 -120
  349. package/dist/core/index.cjs +0 -371
  350. package/dist/core/index.cjs.map +0 -1
  351. package/dist/core/index.d.cts +0 -41
  352. package/dist/frames-B3qLdl_g.d.cts +0 -77
  353. package/dist/frames-Ff7-ZPUl.d.ts +0 -77
  354. package/dist/index.cjs +0 -1556
  355. package/dist/index.cjs.map +0 -1
  356. package/dist/index.d.cts +0 -21
  357. package/dist/ncp/index.cjs +0 -188
  358. package/dist/ncp/index.cjs.map +0 -1
  359. package/dist/ncp/index.d.cts +0 -6
  360. package/dist/ndp/index.cjs +0 -252
  361. package/dist/ndp/index.cjs.map +0 -1
  362. package/dist/ndp/index.d.cts +0 -86
  363. package/dist/nip/index.cjs +0 -214
  364. package/dist/nip/index.cjs.map +0 -1
  365. package/dist/nip/index.d.cts +0 -65
  366. package/dist/nop/index.cjs +0 -762
  367. package/dist/nop/index.cjs.map +0 -1
  368. package/dist/nop/index.d.cts +0 -155
  369. package/dist/nwp/index.cjs +0 -658
  370. package/dist/nwp/index.cjs.map +0 -1
  371. package/dist/nwp/index.d.cts +0 -65
  372. package/nip-ca-server/Dockerfile +0 -27
  373. package/nip-ca-server/README.md +0 -45
  374. package/nip-ca-server/db/001_init.sql +0 -25
  375. package/nip-ca-server/docker-compose.yml +0 -29
  376. package/nip-ca-server/package.json +0 -23
  377. package/nip-ca-server/src/ca.ts +0 -155
  378. package/nip-ca-server/src/db.ts +0 -104
  379. package/nip-ca-server/src/index.ts +0 -157
  380. package/nip-ca-server/tsconfig.json +0 -13
  381. package/src/core/anchor-cache.ts +0 -129
  382. package/src/core/cache.ts +0 -93
  383. package/src/core/canonical-json.ts +0 -50
  384. package/src/core/codec.ts +0 -158
  385. package/src/core/codecs/index.ts +0 -5
  386. package/src/core/codecs/ncp-codec.ts +0 -170
  387. package/src/core/codecs/tier1-json-codec.ts +0 -33
  388. package/src/core/codecs/tier2-msgpack-codec.ts +0 -30
  389. package/src/core/crypto-provider.ts +0 -47
  390. package/src/core/exceptions.ts +0 -57
  391. package/src/core/frame-header.ts +0 -282
  392. package/src/core/frame-registry.ts +0 -91
  393. package/src/core/frames.ts +0 -183
  394. package/src/core/index.ts +0 -10
  395. package/src/core/registry.ts +0 -28
  396. package/src/core/status-codes.ts +0 -46
  397. package/src/index.ts +0 -10
  398. package/src/ncp/frames/anchor-frame.ts +0 -87
  399. package/src/ncp/frames/caps-frame.ts +0 -59
  400. package/src/ncp/frames/diff-frame.ts +0 -69
  401. package/src/ncp/frames/error-frame.ts +0 -26
  402. package/src/ncp/frames/hello-frame.ts +0 -50
  403. package/src/ncp/frames/stream-frame.ts +0 -35
  404. package/src/ncp/frames.ts +0 -199
  405. package/src/ncp/handshake.ts +0 -95
  406. package/src/ncp/index.ts +0 -12
  407. package/src/ncp/ncp-error-codes.ts +0 -34
  408. package/src/ncp/ncp-patch-format.ts +0 -16
  409. package/src/ncp/registry.ts +0 -14
  410. package/src/ncp/stream-manager.ts +0 -212
  411. package/src/ndp/frames.ts +0 -124
  412. package/src/ndp/index.ts +0 -7
  413. package/src/ndp/ndp-registry.ts +0 -82
  414. package/src/ndp/registry.ts +0 -12
  415. package/src/ndp/validator.ts +0 -64
  416. package/src/nip/frames.ts +0 -106
  417. package/src/nip/identity.ts +0 -113
  418. package/src/nip/index.ts +0 -6
  419. package/src/nip/registry.ts +0 -12
  420. package/src/nop/client.ts +0 -103
  421. package/src/nop/frames.ts +0 -181
  422. package/src/nop/index.ts +0 -7
  423. package/src/nop/models.ts +0 -79
  424. package/src/nop/nop-types.ts +0 -208
  425. package/src/nop/registry.ts +0 -13
  426. package/src/nwp/client.ts +0 -114
  427. package/src/nwp/frames.ts +0 -116
  428. package/src/nwp/index.ts +0 -6
  429. package/src/nwp/registry.ts +0 -11
  430. package/src/setup.ts +0 -32
  431. package/tests/core/anchor-cache.test.ts +0 -242
  432. package/tests/core/codec.test.ts +0 -205
  433. package/tests/core/frame-registry.test.ts +0 -46
  434. package/tests/core.test.ts +0 -327
  435. package/tests/ncp/diff-binary-bitset.test.ts +0 -107
  436. package/tests/ncp/e2e-enc-reject.test.ts +0 -93
  437. package/tests/ncp/err-error-frame.test.ts +0 -152
  438. package/tests/ncp/frames.test.ts +0 -359
  439. package/tests/ncp/framing.test.ts +0 -233
  440. package/tests/ncp/hello-frame.test.ts +0 -122
  441. package/tests/ncp/inline-anchor.test.ts +0 -88
  442. package/tests/ncp/security.test.ts +0 -184
  443. package/tests/ncp/stream-window.test.ts +0 -167
  444. package/tests/ncp/stream.test.ts +0 -242
  445. package/tests/ncp/version-negotiation.test.ts +0 -123
  446. package/tests/ndp.test.ts +0 -271
  447. package/tests/nip.test.ts +0 -184
  448. package/tests/nop.test.ts +0 -344
  449. package/tests/nwp.test.ts +0 -237
  450. package/tsconfig.json +0 -20
  451. package/tsup.config.ts +0 -20
  452. package/vitest.config.ts +0 -10
@@ -1,170 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
3
- //
4
- // NCP Codec — Top-level encode/decode dispatcher
5
- // Routes to Tier-1 JSON or Tier-2 MsgPack based on frame header flags.
6
-
7
- import {
8
- parseFrameHeader,
9
- writeFrameHeader,
10
- buildFlags,
11
- EncodingTier,
12
- NcpError,
13
- DEFAULT_MAX_PAYLOAD,
14
- type FrameHeader,
15
- } from "../frame-header.js";
16
- import { encodeJson, decodeJson } from "./tier1-json-codec.js";
17
- import { encodeMsgPack, decodeMsgPack } from "./tier2-msgpack-codec.js";
18
-
19
- // ---------------------------------------------------------------------------
20
- // Types
21
- // ---------------------------------------------------------------------------
22
-
23
- export interface DecodeResult {
24
- /** Parsed frame header. */
25
- header: FrameHeader;
26
- /** Decoded payload object. */
27
- payload: unknown;
28
- /** Total bytes consumed (header + payload). */
29
- bytesConsumed: number;
30
- }
31
-
32
- export interface EncodeOptions {
33
- /** Frame type byte. */
34
- frameType: number;
35
- /** Encoding tier (default: JSON). */
36
- tier?: EncodingTier;
37
- /** Set FINAL flag. */
38
- final?: boolean;
39
- /** Set ENC flag. */
40
- encrypted?: boolean;
41
- /** Use extended header (for payloads > 64KB). */
42
- extended?: boolean;
43
- }
44
-
45
- export interface CodecOptions {
46
- /** Maximum frame payload in bytes (negotiated via CapsFrame). Default: 65535. */
47
- maxFramePayload?: number;
48
- }
49
-
50
- // ---------------------------------------------------------------------------
51
- // Decode
52
- // ---------------------------------------------------------------------------
53
-
54
- /**
55
- * Decode a complete NCP frame from a buffer.
56
- *
57
- * @returns Decoded header + payload + bytes consumed.
58
- * @throws {NcpError} NCP-ENCODING-UNSUPPORTED for reserved tiers.
59
- * @throws {NcpError} NCP-FRAME-PAYLOAD-TOO-LARGE if payload exceeds max.
60
- * @throws {NcpError} NCP-FRAME-INCOMPLETE if buffer doesn't have enough data.
61
- */
62
- export function decodeFrame(
63
- buffer: Uint8Array,
64
- options?: CodecOptions,
65
- ): DecodeResult {
66
- const header = parseFrameHeader(buffer);
67
- const maxPayload = options?.maxFramePayload ?? DEFAULT_MAX_PAYLOAD;
68
-
69
- // NCP-F-09: Validate against negotiated max_frame_payload
70
- if (header.payloadLength > maxPayload) {
71
- throw new NcpError(
72
- "NCP-FRAME-PAYLOAD-TOO-LARGE",
73
- `Payload ${header.payloadLength} exceeds max_frame_payload ${maxPayload}`,
74
- );
75
- }
76
-
77
- const totalSize = header.headerSize + header.payloadLength;
78
-
79
- // NCP-F-05: Buffer underrun — not enough data for payload
80
- if (buffer.length < totalSize) {
81
- throw new NcpError(
82
- "NCP-FRAME-INCOMPLETE",
83
- `Buffer has ${buffer.length} bytes but frame needs ${totalSize}`,
84
- );
85
- }
86
-
87
- // Extract payload bytes
88
- const payloadBytes = buffer.subarray(
89
- header.headerSize,
90
- header.headerSize + header.payloadLength,
91
- );
92
-
93
- // Route to codec by tier
94
- let payload: unknown;
95
- switch (header.tier) {
96
- case EncodingTier.Json:
97
- payload = decodeJson(payloadBytes);
98
- break;
99
- case EncodingTier.MsgPack:
100
- payload = decodeMsgPack(payloadBytes);
101
- break;
102
- default:
103
- // NCP-E-05: Reserved tiers (0x02, 0x03)
104
- throw new NcpError(
105
- "NCP-ENCODING-UNSUPPORTED",
106
- `Unsupported encoding tier: 0x${(header.tier as number).toString(16).padStart(2, "0")}`,
107
- );
108
- }
109
-
110
- return { header, payload, bytesConsumed: totalSize };
111
- }
112
-
113
- // ---------------------------------------------------------------------------
114
- // Encode
115
- // ---------------------------------------------------------------------------
116
-
117
- /**
118
- * Encode a payload into a complete NCP frame (header + payload bytes).
119
- */
120
- export function encodeFrame(
121
- payload: unknown,
122
- options: EncodeOptions,
123
- ): Uint8Array {
124
- const tier = options.tier ?? EncodingTier.Json;
125
-
126
- // Encode payload
127
- let payloadBytes: Uint8Array;
128
- switch (tier) {
129
- case EncodingTier.Json:
130
- payloadBytes = encodeJson(payload);
131
- break;
132
- case EncodingTier.MsgPack:
133
- payloadBytes = encodeMsgPack(payload);
134
- break;
135
- default:
136
- throw new NcpError(
137
- "NCP-ENCODING-UNSUPPORTED",
138
- `Unsupported encoding tier for encode: ${tier}`,
139
- );
140
- }
141
-
142
- // Determine if extended header is needed
143
- const needsExtended =
144
- options.extended || payloadBytes.length > DEFAULT_MAX_PAYLOAD;
145
-
146
- const flags = buildFlags({
147
- tier,
148
- final: options.final,
149
- encrypted: options.encrypted,
150
- extended: needsExtended,
151
- });
152
-
153
- const header: FrameHeader = {
154
- frameType: options.frameType,
155
- flags,
156
- payloadLength: payloadBytes.length,
157
- tier,
158
- isFinal: options.final ?? false,
159
- isEncrypted: options.encrypted ?? false,
160
- isExtended: needsExtended,
161
- headerSize: needsExtended ? 8 : 4,
162
- };
163
-
164
- // Write frame
165
- const frame = new Uint8Array(header.headerSize + payloadBytes.length);
166
- writeFrameHeader(header, frame);
167
- frame.set(payloadBytes, header.headerSize);
168
-
169
- return frame;
170
- }
@@ -1,33 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
3
- //
4
- // Tier-1 JSON Codec — UTF-8 JSON encode/decode
5
- // NPS-1 §8
6
-
7
- import { NcpError } from "../frame-header.js";
8
-
9
- const encoder = new TextEncoder();
10
- const decoder = new TextDecoder();
11
-
12
- /**
13
- * Encode a frame payload to Tier-1 JSON bytes.
14
- */
15
- export function encodeJson(payload: unknown): Uint8Array {
16
- return encoder.encode(JSON.stringify(payload));
17
- }
18
-
19
- /**
20
- * Decode Tier-1 JSON bytes to a parsed object.
21
- * @throws {NcpError} NPS-CLIENT-BAD-FRAME on malformed JSON.
22
- */
23
- export function decodeJson(bytes: Uint8Array): unknown {
24
- const text = decoder.decode(bytes);
25
- try {
26
- return JSON.parse(text) as unknown;
27
- } catch {
28
- throw new NcpError(
29
- "NPS-CLIENT-BAD-FRAME",
30
- "Malformed JSON payload",
31
- );
32
- }
33
- }
@@ -1,30 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
3
- //
4
- // Tier-2 MsgPack Codec — Binary encode/decode
5
- // NPS-1 §8
6
-
7
- import { encode, decode } from "@msgpack/msgpack";
8
- import { NcpError } from "../frame-header.js";
9
-
10
- /**
11
- * Encode a frame payload to Tier-2 MsgPack bytes.
12
- */
13
- export function encodeMsgPack(payload: unknown): Uint8Array {
14
- return encode(payload);
15
- }
16
-
17
- /**
18
- * Decode Tier-2 MsgPack bytes to a parsed object.
19
- * @throws {NcpError} NPS-CLIENT-BAD-FRAME on malformed MsgPack.
20
- */
21
- export function decodeMsgPack(bytes: Uint8Array): unknown {
22
- try {
23
- return decode(bytes) as unknown;
24
- } catch {
25
- throw new NcpError(
26
- "NPS-CLIENT-BAD-FRAME",
27
- "Malformed MsgPack payload",
28
- );
29
- }
30
- }
@@ -1,47 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
3
- //
4
- // CryptoProvider interface — async crypto abstraction for Node + browser.
5
- // NPS-3 §10 / Q10 resolution in nps-ts-sdk-step7-plan.
6
- //
7
- // Implementations (NodeCryptoProvider, WebCryptoProvider) land at P3
8
- // alongside NIP tests. This file is structural scaffold only.
9
-
10
- /**
11
- * Async crypto operations used across NPS protocols.
12
- * All keys, IVs, and byte payloads are Uint8Array.
13
- */
14
- export interface CryptoProvider {
15
- /** Generate cryptographically secure random bytes. */
16
- randomBytes(n: number): Uint8Array;
17
-
18
- /** Generate an Ed25519 keypair. */
19
- ed25519GenerateKeyPair(): Promise<{ publicKey: Uint8Array; privateKey: Uint8Array }>;
20
-
21
- /** Sign data with an Ed25519 private key. Returns 64-byte signature. */
22
- ed25519Sign(privateKey: Uint8Array, data: Uint8Array): Promise<Uint8Array>;
23
-
24
- /** Verify an Ed25519 signature. */
25
- ed25519Verify(publicKey: Uint8Array, data: Uint8Array, sig: Uint8Array): Promise<boolean>;
26
-
27
- /**
28
- * AES-256-GCM encrypt.
29
- * Returns ciphertext || 16-byte tag (single contiguous buffer, matching
30
- * Web Crypto subtle.encrypt output and Python pycryptodome layout).
31
- */
32
- aesGcmEncrypt(key: Uint8Array, iv: Uint8Array, plaintext: Uint8Array): Promise<Uint8Array>;
33
-
34
- /**
35
- * AES-256-GCM decrypt.
36
- * Input is ciphertext || 16-byte tag (same layout as aesGcmEncrypt output).
37
- */
38
- aesGcmDecrypt(key: Uint8Array, iv: Uint8Array, ciphertextAndTag: Uint8Array): Promise<Uint8Array>;
39
-
40
- /** PBKDF2-SHA256 key derivation. */
41
- pbkdf2Sha256(
42
- passphrase: Uint8Array,
43
- salt: Uint8Array,
44
- iterations: number,
45
- keyLen: number,
46
- ): Promise<Uint8Array>;
47
- }
@@ -1,57 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
3
- //
4
- // NPS exception hierarchy — ported from nps_sdk/core/exceptions.py
5
- // NPS-1 §6
6
-
7
- /** Base class for all NPS SDK errors. */
8
- export class NpsError extends Error {
9
- constructor(message: string) {
10
- super(message);
11
- this.name = "NpsError";
12
- }
13
- }
14
-
15
- /** Frame parse or structural error. */
16
- export class NpsFrameError extends NpsError {
17
- constructor(message: string) {
18
- super(message);
19
- this.name = "NpsFrameError";
20
- }
21
- }
22
-
23
- /** Encode or decode error. */
24
- export class NpsCodecError extends NpsError {
25
- constructor(message: string) {
26
- super(message);
27
- this.name = "NpsCodecError";
28
- }
29
- }
30
-
31
- /** Anchor cache miss — requested anchor ID not found. */
32
- export class NpsAnchorNotFoundError extends NpsError {
33
- readonly anchorId: string;
34
- constructor(anchorId: string, message?: string) {
35
- super(message ?? `Anchor not found: ${anchorId}`);
36
- this.name = "NpsAnchorNotFoundError";
37
- this.anchorId = anchorId;
38
- }
39
- }
40
-
41
- /** Anchor ID collision — same ID but different schema content. */
42
- export class NpsAnchorPoisonError extends NpsError {
43
- readonly anchorId: string;
44
- constructor(anchorId: string, message?: string) {
45
- super(message ?? `Anchor poison detected: ${anchorId}`);
46
- this.name = "NpsAnchorPoisonError";
47
- this.anchorId = anchorId;
48
- }
49
- }
50
-
51
- /** Stream-level error (sequence gap, unknown stream ID, etc.). */
52
- export class NpsStreamError extends NpsError {
53
- constructor(message: string) {
54
- super(message);
55
- this.name = "NpsStreamError";
56
- }
57
- }
@@ -1,282 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // Copyright (c) 2026 LabAcacia / INNO LOTUS PTY LTD
3
- //
4
- // NCP Frame Header — Binary parse/write for NPS wire format
5
- // NPS-1 Neural Communication Protocol §3.1, §3.2
6
-
7
- // ---------------------------------------------------------------------------
8
- // Enums
9
- // ---------------------------------------------------------------------------
10
-
11
- /** Wire encoding tier (NPS-1 §3.2, flags bits 0-1). */
12
- export enum EncodingTier {
13
- /** Tier-1: UTF-8 JSON — development & compatibility. */
14
- Json = 0x00,
15
- /** Tier-2: MessagePack binary — production (~60% compression). */
16
- MsgPack = 0x01,
17
- // 0x02 = Reserved
18
- // 0x03 = Reserved
19
- }
20
-
21
- /** Unified frame type namespace for the full NPS suite (NPS-0 §9). */
22
- export enum FrameType {
23
- // NCP 0x01–0x0F
24
- Anchor = 0x01,
25
- Diff = 0x02,
26
- Stream = 0x03,
27
- Caps = 0x04,
28
- Align = 0x05, // deprecated — use AlignStream (0x43)
29
- Hello = 0x06,
30
- // NWP 0x10–0x1F
31
- Query = 0x10,
32
- Action = 0x11,
33
- Subscribe = 0x12,
34
- // NIP 0x20–0x2F
35
- Ident = 0x20,
36
- Trust = 0x21,
37
- Revoke = 0x22,
38
- // NDP 0x30–0x3F
39
- Announce = 0x30,
40
- Resolve = 0x31,
41
- Graph = 0x32,
42
- // NOP 0x40–0x4F
43
- Task = 0x40,
44
- Delegate = 0x41,
45
- Sync = 0x42,
46
- AlignStream = 0x43,
47
- // System 0xF0–0xFF
48
- Error = 0xfe,
49
- }
50
-
51
- // ---------------------------------------------------------------------------
52
- // Constants
53
- // ---------------------------------------------------------------------------
54
-
55
- /** Default (compact) header size in bytes. */
56
- export const DEFAULT_HEADER_SIZE = 4;
57
-
58
- /** Extended header size in bytes (EXT=1). */
59
- export const EXTENDED_HEADER_SIZE = 8;
60
-
61
- /** Maximum payload in default mode (64 KiB − 1). */
62
- export const DEFAULT_MAX_PAYLOAD = 0xffff;
63
-
64
- /** Maximum payload in extended mode (4 GiB − 1). */
65
- export const EXTENDED_MAX_PAYLOAD = 0xffffffff;
66
-
67
- // Flag bit positions (NPS-1 §3.2)
68
- const TIER_MASK = 0x03; // bits 0-1
69
- const FINAL_BIT = 0x04; // bit 2
70
- const ENC_BIT = 0x08; // bit 3
71
- const RESERVED_MASK = 0x70; // bits 4-6
72
- const EXT_BIT = 0x80; // bit 7
73
-
74
- // ---------------------------------------------------------------------------
75
- // Error
76
- // ---------------------------------------------------------------------------
77
-
78
- /** NCP protocol error with machine-readable error code. */
79
- export class NcpError extends Error {
80
- // `code` accepts NcpErrorCode constants (preferred) as well as NPS status
81
- // strings that are not NCP-prefixed (e.g. "NPS-CLIENT-CONFLICT") for cases
82
- // where the spec delegates to NPS-level codes without assigning an NCP code.
83
- constructor(
84
- public readonly code: string,
85
- message: string,
86
- ) {
87
- super(message);
88
- this.name = "NcpError";
89
- }
90
- }
91
-
92
- // ---------------------------------------------------------------------------
93
- // Parsed header
94
- // ---------------------------------------------------------------------------
95
-
96
- /** Parsed frame header. */
97
- export interface FrameHeader {
98
- /** Raw frame type byte. */
99
- frameType: number;
100
- /** Raw flags byte. */
101
- flags: number;
102
- /** Payload length in bytes. */
103
- payloadLength: number;
104
- /** Encoding tier extracted from flags bits 0-1. */
105
- tier: EncodingTier;
106
- /** True when FINAL flag (bit 2) is set. */
107
- isFinal: boolean;
108
- /** True when ENC flag (bit 3) is set. */
109
- isEncrypted: boolean;
110
- /** True when EXT flag (bit 7) is set — 8-byte header. */
111
- isExtended: boolean;
112
- /** Header size in bytes (4 or 8). */
113
- headerSize: number;
114
- }
115
-
116
- // ---------------------------------------------------------------------------
117
- // Parse
118
- // ---------------------------------------------------------------------------
119
-
120
- /**
121
- * Parse a frame header from the start of the buffer.
122
- * Reads 2 bytes first to determine EXT, then reads remaining bytes.
123
- *
124
- * @throws {NcpError} NCP-FRAME-FLAGS-INVALID if reserved bits 4-6 are non-zero.
125
- * @throws {NcpError} NCP-FRAME-PARSE-ERROR if buffer is too small.
126
- * @throws {NcpError} NCP-FRAME-PAYLOAD-TOO-LARGE if opts.max_frame_payload is set and exceeded.
127
- */
128
- export function parseFrameHeader(
129
- buffer: Uint8Array,
130
- opts?: { max_frame_payload?: number },
131
- ): FrameHeader {
132
- if (buffer.length < 2) {
133
- throw new NcpError(
134
- "NCP-FRAME-PARSE-ERROR",
135
- `Buffer too small to read frame type and flags: need >= 2 bytes, got ${buffer.length}`,
136
- );
137
- }
138
-
139
- const frameType = buffer[0]!;
140
- const flags = buffer[1]!;
141
-
142
- // Validate reserved bits (NPS-1 §3.2: bits 4-6 MUST be 0)
143
- if ((flags & RESERVED_MASK) !== 0) {
144
- throw new NcpError(
145
- "NCP-FRAME-FLAGS-INVALID",
146
- "Reserved flag bits 4-6 must be zero",
147
- );
148
- }
149
-
150
- const isExtended = (flags & EXT_BIT) !== 0;
151
-
152
- if (isExtended) {
153
- if (buffer.length < EXTENDED_HEADER_SIZE) {
154
- throw new NcpError(
155
- "NCP-FRAME-PARSE-ERROR",
156
- `Buffer too small for extended header: need ${EXTENDED_HEADER_SIZE} bytes, got ${buffer.length}`,
157
- );
158
- }
159
-
160
- const view = new DataView(
161
- buffer.buffer,
162
- buffer.byteOffset,
163
- buffer.byteLength,
164
- );
165
- const payloadLength = view.getUint32(2, false); // big-endian
166
-
167
- if (
168
- opts?.max_frame_payload !== undefined &&
169
- payloadLength > opts.max_frame_payload
170
- ) {
171
- throw new NcpError(
172
- "NCP-FRAME-PAYLOAD-TOO-LARGE",
173
- `Payload length ${payloadLength} exceeds max_frame_payload ${opts.max_frame_payload}`,
174
- );
175
- }
176
-
177
- return {
178
- frameType,
179
- flags,
180
- payloadLength,
181
- tier: (flags & TIER_MASK) as EncodingTier,
182
- isFinal: (flags & FINAL_BIT) !== 0,
183
- isEncrypted: (flags & ENC_BIT) !== 0,
184
- isExtended: true,
185
- headerSize: EXTENDED_HEADER_SIZE,
186
- };
187
- }
188
-
189
- // Default 4-byte header
190
- if (buffer.length < DEFAULT_HEADER_SIZE) {
191
- throw new NcpError(
192
- "NCP-FRAME-PARSE-ERROR",
193
- `Buffer too small for header: need ${DEFAULT_HEADER_SIZE} bytes, got ${buffer.length}`,
194
- );
195
- }
196
-
197
- const view = new DataView(
198
- buffer.buffer,
199
- buffer.byteOffset,
200
- buffer.byteLength,
201
- );
202
- const payloadLength = view.getUint16(2, false); // big-endian
203
-
204
- if (
205
- opts?.max_frame_payload !== undefined &&
206
- payloadLength > opts.max_frame_payload
207
- ) {
208
- throw new NcpError(
209
- "NCP-FRAME-PAYLOAD-TOO-LARGE",
210
- `Payload length ${payloadLength} exceeds max_frame_payload ${opts.max_frame_payload}`,
211
- );
212
- }
213
-
214
- return {
215
- frameType,
216
- flags,
217
- payloadLength,
218
- tier: (flags & TIER_MASK) as EncodingTier,
219
- isFinal: (flags & FINAL_BIT) !== 0,
220
- isEncrypted: (flags & ENC_BIT) !== 0,
221
- isExtended: false,
222
- headerSize: DEFAULT_HEADER_SIZE,
223
- };
224
- }
225
-
226
- // ---------------------------------------------------------------------------
227
- // Write
228
- // ---------------------------------------------------------------------------
229
-
230
- /**
231
- * Write a frame header into the buffer.
232
- * @returns Number of bytes written (4 or 8).
233
- * @throws {Error} if buffer is too small.
234
- */
235
- export function writeFrameHeader(
236
- header: FrameHeader,
237
- buffer: Uint8Array,
238
- ): number {
239
- const size = header.isExtended ? EXTENDED_HEADER_SIZE : DEFAULT_HEADER_SIZE;
240
- if (buffer.length < size) {
241
- throw new Error(
242
- `Destination buffer must be at least ${size} bytes, got ${buffer.length}`,
243
- );
244
- }
245
-
246
- buffer[0] = header.frameType;
247
- buffer[1] = header.flags;
248
-
249
- const view = new DataView(
250
- buffer.buffer,
251
- buffer.byteOffset,
252
- buffer.byteLength,
253
- );
254
-
255
- if (header.isExtended) {
256
- view.setUint32(2, header.payloadLength, false); // big-endian
257
- buffer[6] = 0; // reserved
258
- buffer[7] = 0; // reserved
259
- } else {
260
- view.setUint16(2, header.payloadLength, false); // big-endian
261
- }
262
-
263
- return size;
264
- }
265
-
266
- // ---------------------------------------------------------------------------
267
- // Helpers
268
- // ---------------------------------------------------------------------------
269
-
270
- /** Build a flags byte from individual options. */
271
- export function buildFlags(options: {
272
- tier?: EncodingTier;
273
- final?: boolean;
274
- encrypted?: boolean;
275
- extended?: boolean;
276
- }): number {
277
- let flags = (options.tier ?? EncodingTier.Json) & TIER_MASK;
278
- if (options.final) flags |= FINAL_BIT;
279
- if (options.encrypted) flags |= ENC_BIT;
280
- if (options.extended) flags |= EXT_BIT;
281
- return flags;
282
- }