@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
@@ -0,0 +1,267 @@
1
+ [English Version](./nps-sdk.ndp.md) | 中文版
2
+
3
+ # `@labacacia/nps-sdk/ndp` — 类与方法参考
4
+
5
+ > 规范:[NPS-4 NDP v0.8](https://github.com/labacacia/NPS-Release/blob/main/spec/NPS-4-NDP.md)
6
+
7
+ NDP 是发现层 —— NPS 对应 DNS 的组件。本模块提供三种 NDP 帧类型、
8
+ 带惰性 TTL 过期的线程安全内存注册表,以及 announce 签名校验器。
9
+
10
+ ---
11
+
12
+ ## 目录
13
+
14
+ - [辅助接口](#辅助接口)
15
+ - [`AnnounceFrame` (0x30)](#announceframe-0x30)
16
+ - [`ResolveFrame` (0x31)](#resolveframe-0x31)
17
+ - [`GraphFrame` (0x32)](#graphframe-0x32)
18
+ - [`InMemoryNdpRegistry`](#inmemoryndpregistry)
19
+ - [`NdpAnnounceValidator`](#ndpannouncevalidator)
20
+ - [`NdpAnnounceResult`](#ndpannounceresult)
21
+
22
+ ---
23
+
24
+ ## 辅助接口
25
+
26
+ ```typescript
27
+ interface NdpAddress {
28
+ host: string;
29
+ port: number;
30
+ protocol: string; // "nwp" | "nwp+tls"
31
+ }
32
+
33
+ interface NdpGraphNode {
34
+ nid: string;
35
+ addresses: readonly NdpAddress[];
36
+ capabilities: readonly string[];
37
+ nodeType?: string; // "memory" | "action" | …
38
+ }
39
+
40
+ interface NdpResolveResult {
41
+ host: string;
42
+ port: number;
43
+ ttl: number; // 秒
44
+ certFingerprint?: string; // "sha256:{hex}"
45
+ }
46
+ ```
47
+
48
+ ---
49
+
50
+ ## `AnnounceFrame` (0x30)
51
+
52
+ 发布节点的物理可达性与 TTL(NPS-4 §3.1)。
53
+
54
+ ```typescript
55
+ class AnnounceFrame {
56
+ readonly frameType: FrameType.ANNOUNCE;
57
+ readonly preferredTier: EncodingTier.MSGPACK;
58
+
59
+ constructor(
60
+ public readonly nid: string,
61
+ public readonly addresses: readonly NdpAddress[],
62
+ public readonly capabilities: readonly string[],
63
+ public readonly ttl: number, // 0 = 有序下线
64
+ public readonly timestamp: string, // ISO 8601 UTC
65
+ public readonly signature: string, // "ed25519:{base64}"
66
+ public readonly nodeType?: string,
67
+ );
68
+
69
+ unsignedDict(): Record<string, unknown>; // 签名 payload(无 signature)
70
+ toDict(): Record<string, unknown>;
71
+
72
+ static fromDict(data: Record<string, unknown>): AnnounceFrame;
73
+ }
74
+ ```
75
+
76
+ 签名流程:
77
+
78
+ 1. 调用 `frame.unsignedDict()` —— 剥离 `signature`。
79
+ 2. 用 `NipIdentity.sign(dict)` 以该 NID 自己的私钥签名(与支持其
80
+ `IdentFrame` 的相同密钥)。
81
+ 3. `ttl = 0` **必须**在有序下线前发布,以便订阅者清除条目。
82
+
83
+ ---
84
+
85
+ ## `ResolveFrame` (0x31)
86
+
87
+ 解析 `nwp://` URL 的请求 / 响应信封。
88
+
89
+ ```typescript
90
+ class ResolveFrame {
91
+ readonly frameType: FrameType.RESOLVE;
92
+ readonly preferredTier: EncodingTier.MSGPACK;
93
+
94
+ constructor(
95
+ public readonly target: string, // "nwp://api.example.com/products"
96
+ public readonly requesterNid?: string,
97
+ public readonly resolved?: NdpResolveResult, // 响应时填充
98
+ );
99
+
100
+ toDict(): Record<string, unknown>;
101
+ static fromDict(data: Record<string, unknown>): ResolveFrame;
102
+ }
103
+ ```
104
+
105
+ Resolve 流量首选 JSON tier —— 量小且便于人类调试。
106
+
107
+ ---
108
+
109
+ ## `GraphFrame` (0x32)
110
+
111
+ 注册表之间的拓扑同步。
112
+
113
+ ```typescript
114
+ class GraphFrame {
115
+ readonly frameType: FrameType.GRAPH;
116
+ readonly preferredTier: EncodingTier.MSGPACK;
117
+
118
+ constructor(
119
+ public readonly seq: number, // 每个发布者严格单调
120
+ public readonly initialSync: boolean,
121
+ public readonly nodes?: readonly NdpGraphNode[], // 全量快照
122
+ public readonly patch?: readonly Record<string, unknown>[], // RFC 6902 JSON Patch
123
+ );
124
+
125
+ toDict(): Record<string, unknown>;
126
+ static fromDict(data: Record<string, unknown>): GraphFrame;
127
+ }
128
+ ```
129
+
130
+ `seq` 跳号**必须**触发重新同步请求,信号为 `NDP-GRAPH-SEQ-GAP`。
131
+
132
+ ---
133
+
134
+ ## `InMemoryNdpRegistry`
135
+
136
+ 线程安全、按 TTL 过期的注册表。过期是在每次读取时**惰性**评估 ——
137
+ 没有后台定时器。
138
+
139
+ ```typescript
140
+ class InMemoryNdpRegistry {
141
+ // 为确定性测试可替换
142
+ clock: () => number;
143
+
144
+ announce(frame: AnnounceFrame): void;
145
+ getByNid(nid: string): AnnounceFrame | undefined;
146
+ resolve(target: string): NdpResolveResult | undefined;
147
+ getAll(): AnnounceFrame[];
148
+
149
+ static nwpTargetMatchesNid(nid: string, target: string): boolean;
150
+ }
151
+ ```
152
+
153
+ ### 行为
154
+
155
+ - `announce` 若 `ttl === 0` 立即清除该 NID;否则以绝对过期
156
+ `clock() + ttl*1000` 插入 / 刷新条目。
157
+ - `resolve` 扫描活跃条目,找到第一个覆盖 `target` 的 NID,返回其
158
+ 第一个广告地址包装为 `NdpResolveResult`。
159
+ - `getByNid` 精确 NID 查询,按需清理。
160
+ - 测试中覆写 `clock`:`registry.clock = () => 1000_000;`
161
+
162
+ ### `nwpTargetMatchesNid(nid, target)` *(静态)*
163
+
164
+ NID ↔ target 覆盖规则:
165
+
166
+ ```
167
+ NID: urn:nps:node:{authority}:{name}
168
+ Target: nwp://{authority}/{name}[/subpath]
169
+ ```
170
+
171
+ 节点 NID 覆盖某 target 的条件:
172
+
173
+ 1. Target scheme 为 `nwp://`。
174
+ 2. NID authority 等于 target authority(精确,区分大小写)。
175
+ 3. Target path 等于 `{name}` 或以 `{name}/` 开头。
176
+
177
+ 输入格式错误时返回 `false` 而非抛异常。
178
+
179
+ ---
180
+
181
+ ## `NdpAnnounceValidator`
182
+
183
+ 使用已注册的 Ed25519 公钥校验 `AnnounceFrame.signature`。
184
+
185
+ ```typescript
186
+ class NdpAnnounceValidator {
187
+ registerPublicKey(nid: string, encodedPubKey: string): void;
188
+ removePublicKey(nid: string): void;
189
+
190
+ readonly knownPublicKeys: ReadonlyMap<string, string>;
191
+
192
+ validate(frame: AnnounceFrame): NdpAnnounceResult;
193
+ }
194
+ ```
195
+
196
+ `validate`(NPS-4 §7.1):
197
+
198
+ 1. 在已注册密钥中查找 `frame.nid`。缺失 →
199
+ `NdpAnnounceResult.fail("NDP-ANNOUNCE-NID-MISMATCH", …)`。期望的
200
+ 工作流程:先校验广告方的 `IdentFrame`,然后把其 `pubKeyString`
201
+ 注册到此处。
202
+ 2. 用键排序规范形式从 `frame.unsignedDict()` 重建签名 payload。
203
+ 3. 运行 Ed25519 verify。
204
+ 4. 成功返回 `NdpAnnounceResult.ok()`;失败返回
205
+ `NdpAnnounceResult.fail("NDP-ANNOUNCE-SIG-INVALID", …)`。
206
+
207
+ 编码后的密钥**必须**使用 `NipIdentity.pubKeyString` 产生的
208
+ `ed25519:{hex}` 形式。
209
+
210
+ ---
211
+
212
+ ## `NdpAnnounceResult`
213
+
214
+ ```typescript
215
+ interface NdpAnnounceResult {
216
+ isValid: boolean;
217
+ errorCode?: string;
218
+ message?: string;
219
+ }
220
+
221
+ const NdpAnnounceResult: {
222
+ ok(): NdpAnnounceResult;
223
+ fail(errorCode: string, message: string): NdpAnnounceResult;
224
+ };
225
+ ```
226
+
227
+ ---
228
+
229
+ ## 端到端示例
230
+
231
+ ```typescript
232
+ import { NipIdentity } from "@labacacia/nps-sdk/nip";
233
+ import {
234
+ AnnounceFrame, InMemoryNdpRegistry, NdpAnnounceValidator,
235
+ } from "@labacacia/nps-sdk/ndp";
236
+
237
+ const id = NipIdentity.generate();
238
+ const nid = "urn:nps:node:api.example.com:products";
239
+
240
+ // 构造并签名 announce
241
+ const unsigned = new AnnounceFrame(
242
+ nid,
243
+ [{ host: "10.0.0.5", port: 17433, protocol: "nwp+tls" }],
244
+ ["nwp:query", "nwp:stream"],
245
+ 300,
246
+ new Date().toISOString(),
247
+ "placeholder",
248
+ "memory",
249
+ );
250
+ const signature = id.sign(unsigned.unsignedDict());
251
+ const signed = new AnnounceFrame(
252
+ unsigned.nid, unsigned.addresses, unsigned.capabilities,
253
+ unsigned.ttl, unsigned.timestamp, signature, unsigned.nodeType,
254
+ );
255
+
256
+ // 校验 + 注册
257
+ const validator = new NdpAnnounceValidator();
258
+ validator.registerPublicKey(nid, id.pubKeyString);
259
+ const result = validator.validate(signed);
260
+ if (!result.isValid) throw new Error(result.errorCode);
261
+
262
+ const registry = new InMemoryNdpRegistry();
263
+ registry.announce(signed);
264
+
265
+ const resolved = registry.resolve("nwp://api.example.com/products/items/42");
266
+ // → { host: "10.0.0.5", port: 17433, ttl: 300 }
267
+ ```
@@ -0,0 +1,273 @@
1
+ English | [中文版](./nps-sdk.ndp.cn.md)
2
+
3
+ # `@labacacia/nps-sdk/ndp` — Class and Method Reference
4
+
5
+ > Spec: [NPS-4 NDP v0.8](https://github.com/labacacia/NPS-Release/blob/main/spec/NPS-4-NDP.md)
6
+
7
+ NDP is the discovery layer — the NPS analogue of DNS. This module provides
8
+ the three NDP frame types, a thread-safe in-memory registry with lazy
9
+ TTL eviction, and an announce-signature validator.
10
+
11
+ ---
12
+
13
+ ## Table of contents
14
+
15
+ - [Supporting interfaces](#supporting-interfaces)
16
+ - [`AnnounceFrame` (0x30)](#announceframe-0x30)
17
+ - [`ResolveFrame` (0x31)](#resolveframe-0x31)
18
+ - [`GraphFrame` (0x32)](#graphframe-0x32)
19
+ - [`InMemoryNdpRegistry`](#inmemoryndpregistry)
20
+ - [`NdpAnnounceValidator`](#ndpannouncevalidator)
21
+ - [`NdpAnnounceResult`](#ndpannounceresult)
22
+
23
+ ---
24
+
25
+ ## Supporting interfaces
26
+
27
+ ```typescript
28
+ interface NdpAddress {
29
+ host: string;
30
+ port: number;
31
+ protocol: string; // "nwp" | "nwp+tls"
32
+ }
33
+
34
+ interface NdpGraphNode {
35
+ nid: string;
36
+ addresses: readonly NdpAddress[];
37
+ capabilities: readonly string[];
38
+ nodeType?: string; // "memory" | "action" | …
39
+ }
40
+
41
+ interface NdpResolveResult {
42
+ host: string;
43
+ port: number;
44
+ ttl: number; // seconds
45
+ certFingerprint?: string; // "sha256:{hex}"
46
+ }
47
+ ```
48
+
49
+ ---
50
+
51
+ ## `AnnounceFrame` (0x30)
52
+
53
+ Publishes a node's physical reachability and TTL (NPS-4 §3.1).
54
+
55
+ ```typescript
56
+ class AnnounceFrame {
57
+ readonly frameType: FrameType.ANNOUNCE;
58
+ readonly preferredTier: EncodingTier.MSGPACK;
59
+
60
+ constructor(
61
+ public readonly nid: string,
62
+ public readonly addresses: readonly NdpAddress[],
63
+ public readonly capabilities: readonly string[],
64
+ public readonly ttl: number, // 0 = orderly shutdown
65
+ public readonly timestamp: string, // ISO 8601 UTC
66
+ public readonly signature: string, // "ed25519:{base64}"
67
+ public readonly nodeType?: string,
68
+ );
69
+
70
+ unsignedDict(): Record<string, unknown>; // signing payload (no signature)
71
+ toDict(): Record<string, unknown>;
72
+
73
+ static fromDict(data: Record<string, unknown>): AnnounceFrame;
74
+ }
75
+ ```
76
+
77
+ Signing workflow:
78
+
79
+ 1. Call `frame.unsignedDict()` — this strips `signature`.
80
+ 2. Sign with `NipIdentity.sign(dict)` using the NID's own private key
81
+ (the same key backing its `IdentFrame`).
82
+ 3. Publishing `ttl = 0` MUST be done before orderly shutdown so that
83
+ subscribers evict the entry.
84
+
85
+ ---
86
+
87
+ ## `ResolveFrame` (0x31)
88
+
89
+ Request / response envelope for resolving an `nwp://` URL.
90
+
91
+ ```typescript
92
+ class ResolveFrame {
93
+ readonly frameType: FrameType.RESOLVE;
94
+ readonly preferredTier: EncodingTier.MSGPACK;
95
+
96
+ constructor(
97
+ public readonly target: string, // "nwp://api.example.com/products"
98
+ public readonly requesterNid?: string,
99
+ public readonly resolved?: NdpResolveResult, // populated on response
100
+ );
101
+
102
+ toDict(): Record<string, unknown>;
103
+ static fromDict(data: Record<string, unknown>): ResolveFrame;
104
+ }
105
+ ```
106
+
107
+ JSON tier is preferred for resolve traffic — it's low-volume and
108
+ human-debugged.
109
+
110
+ ---
111
+
112
+ ## `GraphFrame` (0x32)
113
+
114
+ Topology sync between registries.
115
+
116
+ ```typescript
117
+ class GraphFrame {
118
+ readonly frameType: FrameType.GRAPH;
119
+ readonly preferredTier: EncodingTier.MSGPACK;
120
+
121
+ constructor(
122
+ public readonly seq: number, // strictly monotonic per publisher
123
+ public readonly initialSync: boolean,
124
+ public readonly nodes?: readonly NdpGraphNode[], // full snapshot
125
+ public readonly patch?: readonly Record<string, unknown>[], // RFC 6902 JSON Patch
126
+ );
127
+
128
+ toDict(): Record<string, unknown>;
129
+ static fromDict(data: Record<string, unknown>): GraphFrame;
130
+ }
131
+ ```
132
+
133
+ Gaps in `seq` MUST trigger a re-sync request signalled with
134
+ `NDP-GRAPH-SEQ-GAP`.
135
+
136
+ ---
137
+
138
+ ## `InMemoryNdpRegistry`
139
+
140
+ Thread-safe, TTL-evicting registry. Expiry is evaluated **lazily** on
141
+ every read — there is no background timer.
142
+
143
+ ```typescript
144
+ class InMemoryNdpRegistry {
145
+ // Replaceable for deterministic tests
146
+ clock: () => number;
147
+
148
+ announce(frame: AnnounceFrame): void;
149
+ getByNid(nid: string): AnnounceFrame | undefined;
150
+ resolve(target: string): NdpResolveResult | undefined;
151
+ getAll(): AnnounceFrame[];
152
+
153
+ static nwpTargetMatchesNid(nid: string, target: string): boolean;
154
+ }
155
+ ```
156
+
157
+ ### Behaviour
158
+
159
+ - `announce` with `ttl === 0` immediately evicts the NID; otherwise the
160
+ entry is inserted / refreshed with absolute expiry `clock() + ttl*1000`.
161
+ - `resolve` scans live entries for the first NID covering `target` and
162
+ returns its first advertised address wrapped in `NdpResolveResult`.
163
+ - `getByNid` does exact NID lookup with on-demand purge.
164
+ - Override `clock` in tests: `registry.clock = () => 1000_000;`
165
+
166
+ ### `nwpTargetMatchesNid(nid, target)` *(static)*
167
+
168
+ The NID ↔ target covering rule:
169
+
170
+ ```
171
+ NID: urn:nps:node:{authority}:{name}
172
+ Target: nwp://{authority}/{name}[/subpath]
173
+ ```
174
+
175
+ A node NID covers a target when:
176
+
177
+ 1. The target scheme is `nwp://`.
178
+ 2. The NID authority equals the target authority (exact, case-sensitive).
179
+ 3. The target path equals `{name}` or starts with `{name}/`.
180
+
181
+ Returns `false` for malformed inputs rather than throwing.
182
+
183
+ ---
184
+
185
+ ## `NdpAnnounceValidator`
186
+
187
+ Verifies an `AnnounceFrame.signature` using a registered Ed25519 public
188
+ key.
189
+
190
+ ```typescript
191
+ class NdpAnnounceValidator {
192
+ registerPublicKey(nid: string, encodedPubKey: string): void;
193
+ removePublicKey(nid: string): void;
194
+
195
+ readonly knownPublicKeys: ReadonlyMap<string, string>;
196
+
197
+ validate(frame: AnnounceFrame): NdpAnnounceResult;
198
+ }
199
+ ```
200
+
201
+ `validate` (NPS-4 §7.1):
202
+
203
+ 1. Looks up `frame.nid` in the registered keys. Missing →
204
+ `NdpAnnounceResult.fail("NDP-ANNOUNCE-NID-MISMATCH", …)`. Expected
205
+ workflow: verify the announcer's `IdentFrame` first, then register
206
+ its `pubKeyString` here.
207
+ 2. Rebuilds the signing payload from `frame.unsignedDict()` using the
208
+ sorted-keys canonical form.
209
+ 3. Runs Ed25519 verify.
210
+ 4. Returns `NdpAnnounceResult.ok()` on success, or
211
+ `NdpAnnounceResult.fail("NDP-ANNOUNCE-SIG-INVALID", …)` on failure.
212
+
213
+ The encoded key MUST use the `ed25519:{hex}` form produced by
214
+ `NipIdentity.pubKeyString`.
215
+
216
+ ---
217
+
218
+ ## `NdpAnnounceResult`
219
+
220
+ ```typescript
221
+ interface NdpAnnounceResult {
222
+ isValid: boolean;
223
+ errorCode?: string;
224
+ message?: string;
225
+ }
226
+
227
+ const NdpAnnounceResult: {
228
+ ok(): NdpAnnounceResult;
229
+ fail(errorCode: string, message: string): NdpAnnounceResult;
230
+ };
231
+ ```
232
+
233
+ ---
234
+
235
+ ## End-to-end example
236
+
237
+ ```typescript
238
+ import { NipIdentity } from "@labacacia/nps-sdk/nip";
239
+ import {
240
+ AnnounceFrame, InMemoryNdpRegistry, NdpAnnounceValidator,
241
+ } from "@labacacia/nps-sdk/ndp";
242
+
243
+ const id = NipIdentity.generate();
244
+ const nid = "urn:nps:node:api.example.com:products";
245
+
246
+ // Build & sign the announce
247
+ const unsigned = new AnnounceFrame(
248
+ nid,
249
+ [{ host: "10.0.0.5", port: 17433, protocol: "nwp+tls" }],
250
+ ["nwp:query", "nwp:stream"],
251
+ 300,
252
+ new Date().toISOString(),
253
+ "placeholder",
254
+ "memory",
255
+ );
256
+ const signature = id.sign(unsigned.unsignedDict());
257
+ const signed = new AnnounceFrame(
258
+ unsigned.nid, unsigned.addresses, unsigned.capabilities,
259
+ unsigned.ttl, unsigned.timestamp, signature, unsigned.nodeType,
260
+ );
261
+
262
+ // Validate + register
263
+ const validator = new NdpAnnounceValidator();
264
+ validator.registerPublicKey(nid, id.pubKeyString);
265
+ const result = validator.validate(signed);
266
+ if (!result.isValid) throw new Error(result.errorCode);
267
+
268
+ const registry = new InMemoryNdpRegistry();
269
+ registry.announce(signed);
270
+
271
+ const resolved = registry.resolve("nwp://api.example.com/products/items/42");
272
+ // → { host: "10.0.0.5", port: 17433, ttl: 300 }
273
+ ```