@enbox/dwn-server 0.0.2 → 0.0.4

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 (309) hide show
  1. package/LICENSE +3 -2
  2. package/README.md +115 -215
  3. package/dist/esm/src/admin/activity-log.d.ts +44 -0
  4. package/dist/esm/src/admin/activity-log.d.ts.map +1 -0
  5. package/dist/esm/src/admin/activity-log.js +85 -0
  6. package/dist/esm/src/admin/activity-log.js.map +1 -0
  7. package/dist/esm/src/admin/admin-api.d.ts +61 -0
  8. package/dist/esm/src/admin/admin-api.d.ts.map +1 -0
  9. package/dist/esm/src/admin/admin-api.js +1047 -0
  10. package/dist/esm/src/admin/admin-api.js.map +1 -0
  11. package/dist/esm/src/admin/admin-auth.d.ts +9 -0
  12. package/dist/esm/src/admin/admin-auth.d.ts.map +1 -0
  13. package/dist/esm/src/admin/admin-auth.js +45 -0
  14. package/dist/esm/src/admin/admin-auth.js.map +1 -0
  15. package/dist/esm/src/admin/admin-store.d.ts +111 -0
  16. package/dist/esm/src/admin/admin-store.d.ts.map +1 -0
  17. package/dist/esm/src/admin/admin-store.js +376 -0
  18. package/dist/esm/src/admin/admin-store.js.map +1 -0
  19. package/dist/esm/src/admin/audit-log.d.ts +94 -0
  20. package/dist/esm/src/admin/audit-log.d.ts.map +1 -0
  21. package/dist/esm/src/admin/audit-log.js +220 -0
  22. package/dist/esm/src/admin/audit-log.js.map +1 -0
  23. package/dist/esm/src/admin/index.d.ts +10 -0
  24. package/dist/esm/src/admin/index.d.ts.map +1 -0
  25. package/dist/esm/src/admin/index.js +7 -0
  26. package/dist/esm/src/admin/index.js.map +1 -0
  27. package/dist/esm/src/admin/types.d.ts +306 -0
  28. package/dist/esm/src/admin/types.d.ts.map +1 -0
  29. package/dist/esm/src/admin/types.js +2 -0
  30. package/dist/esm/src/admin/types.js.map +1 -0
  31. package/dist/esm/src/admin/webhook-manager.d.ts +55 -0
  32. package/dist/esm/src/admin/webhook-manager.d.ts.map +1 -0
  33. package/dist/esm/src/admin/webhook-manager.js +184 -0
  34. package/dist/esm/src/admin/webhook-manager.js.map +1 -0
  35. package/dist/esm/src/config.d.ts +124 -9
  36. package/dist/esm/src/config.d.ts.map +1 -1
  37. package/dist/esm/src/config.js +155 -13
  38. package/dist/esm/src/config.js.map +1 -1
  39. package/dist/esm/src/connection/connection-manager.d.ts +32 -9
  40. package/dist/esm/src/connection/connection-manager.d.ts.map +1 -1
  41. package/dist/esm/src/connection/connection-manager.js +38 -5
  42. package/dist/esm/src/connection/connection-manager.js.map +1 -1
  43. package/dist/esm/src/connection/flow-controller.d.ts +53 -0
  44. package/dist/esm/src/connection/flow-controller.d.ts.map +1 -0
  45. package/dist/esm/src/connection/flow-controller.js +101 -0
  46. package/dist/esm/src/connection/flow-controller.js.map +1 -0
  47. package/dist/esm/src/connection/socket-connection.d.ts +54 -18
  48. package/dist/esm/src/connection/socket-connection.d.ts.map +1 -1
  49. package/dist/esm/src/connection/socket-connection.js +102 -40
  50. package/dist/esm/src/connection/socket-connection.js.map +1 -1
  51. package/dist/esm/src/delivery-service.d.ts +43 -0
  52. package/dist/esm/src/delivery-service.d.ts.map +1 -0
  53. package/dist/esm/src/delivery-service.js +574 -0
  54. package/dist/esm/src/delivery-service.js.map +1 -0
  55. package/dist/esm/src/dwn-error.d.ts +10 -1
  56. package/dist/esm/src/dwn-error.d.ts.map +1 -1
  57. package/dist/esm/src/dwn-error.js +9 -0
  58. package/dist/esm/src/dwn-error.js.map +1 -1
  59. package/dist/esm/src/dwn-server.d.ts +13 -6
  60. package/dist/esm/src/dwn-server.d.ts.map +1 -1
  61. package/dist/esm/src/dwn-server.js +199 -24
  62. package/dist/esm/src/dwn-server.js.map +1 -1
  63. package/dist/esm/src/http-api.d.ts +28 -13
  64. package/dist/esm/src/http-api.d.ts.map +1 -1
  65. package/dist/esm/src/http-api.js +649 -374
  66. package/dist/esm/src/http-api.js.map +1 -1
  67. package/dist/esm/src/index.d.ts +6 -2
  68. package/dist/esm/src/index.d.ts.map +1 -1
  69. package/dist/esm/src/index.js +4 -1
  70. package/dist/esm/src/index.js.map +1 -1
  71. package/dist/esm/src/json-rpc-api.js +2 -1
  72. package/dist/esm/src/json-rpc-api.js.map +1 -1
  73. package/dist/esm/src/json-rpc-handlers/dwn/process-message.d.ts.map +1 -1
  74. package/dist/esm/src/json-rpc-handlers/dwn/process-message.js +109 -7
  75. package/dist/esm/src/json-rpc-handlers/dwn/process-message.js.map +1 -1
  76. package/dist/esm/src/json-rpc-handlers/subscription/ack.d.ts +20 -0
  77. package/dist/esm/src/json-rpc-handlers/subscription/ack.d.ts.map +1 -0
  78. package/dist/esm/src/json-rpc-handlers/subscription/ack.js +41 -0
  79. package/dist/esm/src/json-rpc-handlers/subscription/ack.js.map +1 -0
  80. package/dist/esm/src/json-rpc-handlers/subscription/close.d.ts.map +1 -1
  81. package/dist/esm/src/json-rpc-handlers/subscription/close.js +1 -1
  82. package/dist/esm/src/json-rpc-handlers/subscription/close.js.map +1 -1
  83. package/dist/esm/src/json-rpc-handlers/subscription/index.d.ts +1 -0
  84. package/dist/esm/src/json-rpc-handlers/subscription/index.d.ts.map +1 -1
  85. package/dist/esm/src/json-rpc-handlers/subscription/index.js +1 -0
  86. package/dist/esm/src/json-rpc-handlers/subscription/index.js.map +1 -1
  87. package/dist/esm/src/lib/json-rpc-router.d.ts +25 -8
  88. package/dist/esm/src/lib/json-rpc-router.d.ts.map +1 -1
  89. package/dist/esm/src/lib/json-rpc-router.js.map +1 -1
  90. package/dist/esm/src/lib/sql-utils.d.ts +6 -0
  91. package/dist/esm/src/lib/sql-utils.d.ts.map +1 -0
  92. package/dist/esm/src/lib/sql-utils.js +8 -0
  93. package/dist/esm/src/lib/sql-utils.js.map +1 -0
  94. package/dist/esm/src/main.js +0 -6
  95. package/dist/esm/src/main.js.map +1 -1
  96. package/dist/esm/src/message-processed-hook.d.ts +35 -0
  97. package/dist/esm/src/message-processed-hook.d.ts.map +1 -0
  98. package/dist/esm/src/message-processed-hook.js +2 -0
  99. package/dist/esm/src/message-processed-hook.js.map +1 -0
  100. package/dist/esm/src/metrics.d.ts +14 -2
  101. package/dist/esm/src/metrics.d.ts.map +1 -1
  102. package/dist/esm/src/metrics.js +41 -1
  103. package/dist/esm/src/metrics.js.map +1 -1
  104. package/dist/esm/src/plugins/event-log-nats.d.ts +25 -0
  105. package/dist/esm/src/plugins/event-log-nats.d.ts.map +1 -0
  106. package/dist/esm/src/plugins/event-log-nats.js +379 -0
  107. package/dist/esm/src/plugins/event-log-nats.js.map +1 -0
  108. package/dist/esm/src/rate-limiter.d.ts +60 -0
  109. package/dist/esm/src/rate-limiter.d.ts.map +1 -0
  110. package/dist/esm/src/rate-limiter.js +116 -0
  111. package/dist/esm/src/rate-limiter.js.map +1 -0
  112. package/dist/esm/src/registration/jwt-provider-auth-plugin.d.ts +53 -0
  113. package/dist/esm/src/registration/jwt-provider-auth-plugin.d.ts.map +1 -0
  114. package/dist/esm/src/registration/jwt-provider-auth-plugin.js +90 -0
  115. package/dist/esm/src/registration/jwt-provider-auth-plugin.js.map +1 -0
  116. package/dist/esm/src/registration/open-auth-handler.d.ts +37 -0
  117. package/dist/esm/src/registration/open-auth-handler.d.ts.map +1 -0
  118. package/dist/esm/src/registration/open-auth-handler.js +214 -0
  119. package/dist/esm/src/registration/open-auth-handler.js.map +1 -0
  120. package/dist/esm/src/registration/proof-of-work-manager.d.ts +1 -1
  121. package/dist/esm/src/registration/proof-of-work-manager.d.ts.map +1 -1
  122. package/dist/esm/src/registration/proof-of-work-manager.js +3 -3
  123. package/dist/esm/src/registration/proof-of-work-manager.js.map +1 -1
  124. package/dist/esm/src/registration/provider-auth-plugin.d.ts +46 -0
  125. package/dist/esm/src/registration/provider-auth-plugin.d.ts.map +1 -0
  126. package/dist/esm/src/registration/provider-auth-plugin.js +29 -0
  127. package/dist/esm/src/registration/provider-auth-plugin.js.map +1 -0
  128. package/dist/esm/src/registration/registration-manager.d.ts +28 -5
  129. package/dist/esm/src/registration/registration-manager.d.ts.map +1 -1
  130. package/dist/esm/src/registration/registration-manager.js +83 -12
  131. package/dist/esm/src/registration/registration-manager.js.map +1 -1
  132. package/dist/esm/src/registration/registration-store.d.ts +83 -3
  133. package/dist/esm/src/registration/registration-store.d.ts.map +1 -1
  134. package/dist/esm/src/registration/registration-store.js +248 -11
  135. package/dist/esm/src/registration/registration-store.js.map +1 -1
  136. package/dist/esm/src/storage.d.ts +5 -5
  137. package/dist/esm/src/storage.d.ts.map +1 -1
  138. package/dist/esm/src/storage.js +105 -24
  139. package/dist/esm/src/storage.js.map +1 -1
  140. package/dist/esm/src/web5-connect/sql-ttl-cache.d.ts.map +1 -1
  141. package/dist/esm/src/web5-connect/sql-ttl-cache.js +11 -3
  142. package/dist/esm/src/web5-connect/sql-ttl-cache.js.map +1 -1
  143. package/dist/esm/src/web5-connect/web5-connect-server.d.ts.map +1 -1
  144. package/dist/esm/src/web5-connect/web5-connect-server.js +2 -2
  145. package/dist/esm/src/web5-connect/web5-connect-server.js.map +1 -1
  146. package/dist/esm/src/ws-api.d.ts +18 -4
  147. package/dist/esm/src/ws-api.d.ts.map +1 -1
  148. package/dist/esm/src/ws-api.js +12 -16
  149. package/dist/esm/src/ws-api.js.map +1 -1
  150. package/package.json +34 -53
  151. package/src/admin/activity-log.ts +100 -0
  152. package/src/admin/admin-api.ts +1308 -0
  153. package/src/admin/admin-auth.ts +56 -0
  154. package/src/admin/admin-store.ts +515 -0
  155. package/src/admin/audit-log.ts +327 -0
  156. package/src/admin/index.ts +34 -0
  157. package/src/admin/types.ts +352 -0
  158. package/src/admin/webhook-manager.ts +245 -0
  159. package/src/config.ts +190 -22
  160. package/src/connection/connection-manager.ts +67 -17
  161. package/src/connection/flow-controller.ts +117 -0
  162. package/src/connection/socket-connection.ts +144 -67
  163. package/src/delivery-service.ts +740 -0
  164. package/src/dwn-error.ts +11 -2
  165. package/src/dwn-server.ts +254 -39
  166. package/src/http-api.ts +736 -392
  167. package/src/index.ts +13 -2
  168. package/src/json-rpc-api.ts +2 -1
  169. package/src/json-rpc-handlers/dwn/process-message.ts +149 -15
  170. package/src/json-rpc-handlers/subscription/ack.ts +63 -0
  171. package/src/json-rpc-handlers/subscription/close.ts +5 -9
  172. package/src/json-rpc-handlers/subscription/index.ts +1 -0
  173. package/src/lib/json-rpc-router.ts +26 -11
  174. package/src/lib/sql-utils.ts +7 -0
  175. package/src/main.ts +0 -8
  176. package/src/message-processed-hook.ts +33 -0
  177. package/src/metrics.ts +57 -8
  178. package/src/plugins/event-log-nats.ts +466 -0
  179. package/src/process-handlers.ts +5 -5
  180. package/src/rate-limiter.ts +143 -0
  181. package/src/registration/jwt-provider-auth-plugin.ts +119 -0
  182. package/src/registration/open-auth-handler.ts +263 -0
  183. package/src/registration/proof-of-work-manager.ts +11 -10
  184. package/src/registration/provider-auth-plugin.ts +84 -0
  185. package/src/registration/registration-manager.ts +129 -31
  186. package/src/registration/registration-store.ts +332 -22
  187. package/src/storage.ts +136 -40
  188. package/src/web5-connect/sql-ttl-cache.ts +12 -5
  189. package/src/web5-connect/web5-connect-server.ts +9 -8
  190. package/src/ws-api.ts +39 -26
  191. package/dist/cjs/index.js +0 -6811
  192. package/dist/cjs/package.json +0 -1
  193. package/dist/esm/src/json-rpc-socket.d.ts +0 -39
  194. package/dist/esm/src/json-rpc-socket.d.ts.map +0 -1
  195. package/dist/esm/src/json-rpc-socket.js +0 -125
  196. package/dist/esm/src/json-rpc-socket.js.map +0 -1
  197. package/dist/esm/src/lib/http-server-shutdown-handler.d.ts +0 -10
  198. package/dist/esm/src/lib/http-server-shutdown-handler.d.ts.map +0 -1
  199. package/dist/esm/src/lib/http-server-shutdown-handler.js +0 -65
  200. package/dist/esm/src/lib/http-server-shutdown-handler.js.map +0 -1
  201. package/dist/esm/src/lib/json-rpc.d.ts +0 -54
  202. package/dist/esm/src/lib/json-rpc.d.ts.map +0 -1
  203. package/dist/esm/src/lib/json-rpc.js +0 -60
  204. package/dist/esm/src/lib/json-rpc.js.map +0 -1
  205. package/dist/esm/src/registration/proof-of-work-types.d.ts +0 -8
  206. package/dist/esm/src/registration/proof-of-work-types.d.ts.map +0 -1
  207. package/dist/esm/src/registration/proof-of-work-types.js +0 -2
  208. package/dist/esm/src/registration/proof-of-work-types.js.map +0 -1
  209. package/dist/esm/src/registration/registration-types.d.ts +0 -18
  210. package/dist/esm/src/registration/registration-types.d.ts.map +0 -1
  211. package/dist/esm/src/registration/registration-types.js +0 -2
  212. package/dist/esm/src/registration/registration-types.js.map +0 -1
  213. package/dist/esm/tests/common-scenario-validator.d.ts +0 -11
  214. package/dist/esm/tests/common-scenario-validator.d.ts.map +0 -1
  215. package/dist/esm/tests/common-scenario-validator.js +0 -114
  216. package/dist/esm/tests/common-scenario-validator.js.map +0 -1
  217. package/dist/esm/tests/connection/connection-manager.spec.d.ts +0 -2
  218. package/dist/esm/tests/connection/connection-manager.spec.d.ts.map +0 -1
  219. package/dist/esm/tests/connection/connection-manager.spec.js +0 -47
  220. package/dist/esm/tests/connection/connection-manager.spec.js.map +0 -1
  221. package/dist/esm/tests/connection/socket-connection.spec.d.ts +0 -2
  222. package/dist/esm/tests/connection/socket-connection.spec.d.ts.map +0 -1
  223. package/dist/esm/tests/connection/socket-connection.spec.js +0 -125
  224. package/dist/esm/tests/connection/socket-connection.spec.js.map +0 -1
  225. package/dist/esm/tests/cors/http-api.browser.d.ts +0 -2
  226. package/dist/esm/tests/cors/http-api.browser.d.ts.map +0 -1
  227. package/dist/esm/tests/cors/http-api.browser.js +0 -60
  228. package/dist/esm/tests/cors/http-api.browser.js.map +0 -1
  229. package/dist/esm/tests/cors/ping.browser.d.ts +0 -2
  230. package/dist/esm/tests/cors/ping.browser.d.ts.map +0 -1
  231. package/dist/esm/tests/cors/ping.browser.js +0 -7
  232. package/dist/esm/tests/cors/ping.browser.js.map +0 -1
  233. package/dist/esm/tests/dwn-process-message.spec.d.ts +0 -2
  234. package/dist/esm/tests/dwn-process-message.spec.d.ts.map +0 -1
  235. package/dist/esm/tests/dwn-process-message.spec.js +0 -172
  236. package/dist/esm/tests/dwn-process-message.spec.js.map +0 -1
  237. package/dist/esm/tests/dwn-server.spec.d.ts +0 -2
  238. package/dist/esm/tests/dwn-server.spec.d.ts.map +0 -1
  239. package/dist/esm/tests/dwn-server.spec.js +0 -49
  240. package/dist/esm/tests/dwn-server.spec.js.map +0 -1
  241. package/dist/esm/tests/http-api.spec.d.ts +0 -2
  242. package/dist/esm/tests/http-api.spec.d.ts.map +0 -1
  243. package/dist/esm/tests/http-api.spec.js +0 -775
  244. package/dist/esm/tests/http-api.spec.js.map +0 -1
  245. package/dist/esm/tests/json-rpc-socket.spec.d.ts +0 -2
  246. package/dist/esm/tests/json-rpc-socket.spec.d.ts.map +0 -1
  247. package/dist/esm/tests/json-rpc-socket.spec.js +0 -225
  248. package/dist/esm/tests/json-rpc-socket.spec.js.map +0 -1
  249. package/dist/esm/tests/plugins/data-store-sqlite.d.ts +0 -17
  250. package/dist/esm/tests/plugins/data-store-sqlite.d.ts.map +0 -1
  251. package/dist/esm/tests/plugins/data-store-sqlite.js +0 -23
  252. package/dist/esm/tests/plugins/data-store-sqlite.js.map +0 -1
  253. package/dist/esm/tests/plugins/event-log-sqlite.d.ts +0 -17
  254. package/dist/esm/tests/plugins/event-log-sqlite.d.ts.map +0 -1
  255. package/dist/esm/tests/plugins/event-log-sqlite.js +0 -23
  256. package/dist/esm/tests/plugins/event-log-sqlite.js.map +0 -1
  257. package/dist/esm/tests/plugins/event-stream-in-memory.d.ts +0 -17
  258. package/dist/esm/tests/plugins/event-stream-in-memory.d.ts.map +0 -1
  259. package/dist/esm/tests/plugins/event-stream-in-memory.js +0 -21
  260. package/dist/esm/tests/plugins/event-stream-in-memory.js.map +0 -1
  261. package/dist/esm/tests/plugins/message-store-sqlite.d.ts +0 -17
  262. package/dist/esm/tests/plugins/message-store-sqlite.d.ts.map +0 -1
  263. package/dist/esm/tests/plugins/message-store-sqlite.js +0 -23
  264. package/dist/esm/tests/plugins/message-store-sqlite.js.map +0 -1
  265. package/dist/esm/tests/plugins/resumable-task-store-sqlite.d.ts +0 -17
  266. package/dist/esm/tests/plugins/resumable-task-store-sqlite.d.ts.map +0 -1
  267. package/dist/esm/tests/plugins/resumable-task-store-sqlite.js +0 -23
  268. package/dist/esm/tests/plugins/resumable-task-store-sqlite.js.map +0 -1
  269. package/dist/esm/tests/process-handler.spec.d.ts +0 -2
  270. package/dist/esm/tests/process-handler.spec.d.ts.map +0 -1
  271. package/dist/esm/tests/process-handler.spec.js +0 -60
  272. package/dist/esm/tests/process-handler.spec.js.map +0 -1
  273. package/dist/esm/tests/registration/proof-of-work-manager.spec.d.ts +0 -2
  274. package/dist/esm/tests/registration/proof-of-work-manager.spec.d.ts.map +0 -1
  275. package/dist/esm/tests/registration/proof-of-work-manager.spec.js +0 -157
  276. package/dist/esm/tests/registration/proof-of-work-manager.spec.js.map +0 -1
  277. package/dist/esm/tests/rpc-subscribe-close.spec.d.ts +0 -2
  278. package/dist/esm/tests/rpc-subscribe-close.spec.d.ts.map +0 -1
  279. package/dist/esm/tests/rpc-subscribe-close.spec.js +0 -81
  280. package/dist/esm/tests/rpc-subscribe-close.spec.js.map +0 -1
  281. package/dist/esm/tests/scenarios/dynamic-plugin-loading.spec.d.ts +0 -2
  282. package/dist/esm/tests/scenarios/dynamic-plugin-loading.spec.d.ts.map +0 -1
  283. package/dist/esm/tests/scenarios/dynamic-plugin-loading.spec.js +0 -73
  284. package/dist/esm/tests/scenarios/dynamic-plugin-loading.spec.js.map +0 -1
  285. package/dist/esm/tests/scenarios/registration.spec.d.ts +0 -2
  286. package/dist/esm/tests/scenarios/registration.spec.d.ts.map +0 -1
  287. package/dist/esm/tests/scenarios/registration.spec.js +0 -507
  288. package/dist/esm/tests/scenarios/registration.spec.js.map +0 -1
  289. package/dist/esm/tests/scenarios/web5-connect.spec.d.ts +0 -2
  290. package/dist/esm/tests/scenarios/web5-connect.spec.d.ts.map +0 -1
  291. package/dist/esm/tests/scenarios/web5-connect.spec.js +0 -137
  292. package/dist/esm/tests/scenarios/web5-connect.spec.js.map +0 -1
  293. package/dist/esm/tests/test-dwn.d.ts +0 -7
  294. package/dist/esm/tests/test-dwn.d.ts.map +0 -1
  295. package/dist/esm/tests/test-dwn.js +0 -34
  296. package/dist/esm/tests/test-dwn.js.map +0 -1
  297. package/dist/esm/tests/utils.d.ts +0 -46
  298. package/dist/esm/tests/utils.d.ts.map +0 -1
  299. package/dist/esm/tests/utils.js +0 -116
  300. package/dist/esm/tests/utils.js.map +0 -1
  301. package/dist/esm/tests/ws-api.spec.d.ts +0 -2
  302. package/dist/esm/tests/ws-api.spec.d.ts.map +0 -1
  303. package/dist/esm/tests/ws-api.spec.js +0 -327
  304. package/dist/esm/tests/ws-api.spec.js.map +0 -1
  305. package/src/json-rpc-socket.ts +0 -155
  306. package/src/lib/http-server-shutdown-handler.ts +0 -79
  307. package/src/lib/json-rpc.ts +0 -126
  308. package/src/registration/proof-of-work-types.ts +0 -7
  309. package/src/registration/registration-types.ts +0 -18
@@ -1 +0,0 @@
1
- {"type": "commonjs"}
@@ -1,39 +0,0 @@
1
- import type { JsonRpcRequest, JsonRpcResponse } from "./lib/json-rpc.js";
2
- export interface JsonRpcSocketOptions {
3
- /** socket connection timeout in milliseconds */
4
- connectTimeout?: number;
5
- /** response timeout for rpc requests in milliseconds */
6
- responseTimeout?: number;
7
- /** optional connection close handler */
8
- onclose?: () => void;
9
- /** optional socket error handler */
10
- onerror?: (error?: any) => void;
11
- }
12
- /**
13
- * JSON RPC Socket Client for WebSocket request/response and long-running subscriptions.
14
- */
15
- export declare class JsonRpcSocket {
16
- private socket;
17
- private responseTimeout;
18
- private constructor();
19
- static connect(url: string, options?: JsonRpcSocketOptions): Promise<JsonRpcSocket>;
20
- close(): void;
21
- /**
22
- * Sends a JSON-RPC request through the socket and waits for a single response.
23
- */
24
- request(request: JsonRpcRequest): Promise<JsonRpcResponse>;
25
- /**
26
- * Sends a JSON-RPC request through the socket and keeps a listener open to read associated responses as they arrive.
27
- * Returns a close method to clean up the listener.
28
- */
29
- subscribe(request: JsonRpcRequest, listener: (response: JsonRpcResponse) => void): Promise<{
30
- response: JsonRpcResponse;
31
- close?: () => Promise<void>;
32
- }>;
33
- private closeSubscription;
34
- /**
35
- * Sends a JSON-RPC request through the socket. You must subscribe to a message listener separately to capture the response.
36
- */
37
- send(request: JsonRpcRequest): void;
38
- }
39
- //# sourceMappingURL=json-rpc-socket.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json-rpc-socket.d.ts","sourceRoot":"","sources":["../../../src/json-rpc-socket.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAa,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAOpF,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,oCAAoC;IACpC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CACjC;AAED;;GAEG;AACH,qBAAa,aAAa;IACJ,OAAO,CAAC,MAAM;IAAa,OAAO,CAAC,eAAe;IAAtE,OAAO;WAEM,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,aAAa,CAAC;IAkC7F,KAAK,IAAI,IAAI;IAIb;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAwBhE;;;OAGG;IACG,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC;QAC/F,QAAQ,EAAE,eAAe,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5B,CAAC;IA0CH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,cAAc,GAAE,IAAI;CAGnC"}
@@ -1,125 +0,0 @@
1
- import log from 'loglevel';
2
- import { v4 as uuidv4 } from 'uuid';
3
- import WebSocket from 'ws';
4
- import { createJsonRpcSubscriptionRequest } from "./lib/json-rpc.js";
5
- // These were arbitrarily chosen, but can be modified via connect options
6
- const CONNECT_TIMEOUT = 3_000;
7
- const RESPONSE_TIMEOUT = 30_000;
8
- /**
9
- * JSON RPC Socket Client for WebSocket request/response and long-running subscriptions.
10
- */
11
- export class JsonRpcSocket {
12
- socket;
13
- responseTimeout;
14
- constructor(socket, responseTimeout) {
15
- this.socket = socket;
16
- this.responseTimeout = responseTimeout;
17
- }
18
- static async connect(url, options = {}) {
19
- const { connectTimeout = CONNECT_TIMEOUT, responseTimeout = RESPONSE_TIMEOUT, onclose, onerror } = options;
20
- const socket = new WebSocket(url);
21
- if (!onclose) {
22
- socket.onclose = () => {
23
- log.info(`JSON RPC Socket close ${url}`);
24
- };
25
- }
26
- else {
27
- socket.onclose = onclose;
28
- }
29
- if (!onerror) {
30
- socket.onerror = (error) => {
31
- log.error(`JSON RPC Socket error ${url}`, error);
32
- };
33
- }
34
- else {
35
- socket.onerror = onerror;
36
- }
37
- return new Promise((resolve, reject) => {
38
- socket.addEventListener('open', () => {
39
- resolve(new JsonRpcSocket(socket, responseTimeout));
40
- });
41
- socket.addEventListener('error', (error) => {
42
- reject(error);
43
- });
44
- setTimeout(() => reject, connectTimeout);
45
- });
46
- }
47
- close() {
48
- this.socket.close();
49
- }
50
- /**
51
- * Sends a JSON-RPC request through the socket and waits for a single response.
52
- */
53
- async request(request) {
54
- return new Promise((resolve, reject) => {
55
- request.id ??= uuidv4();
56
- const handleResponse = (event) => {
57
- const jsonRpsResponse = JSON.parse(event.data);
58
- if (jsonRpsResponse.id === request.id) {
59
- // if the incoming response id matches the request id, we will remove the listener and resolve the response
60
- this.socket.removeEventListener('message', handleResponse);
61
- return resolve(jsonRpsResponse);
62
- }
63
- };
64
- // subscribe to the listener before sending the request
65
- this.socket.addEventListener('message', handleResponse);
66
- this.send(request);
67
- // reject this promise if we don't receive any response back within the timeout period
68
- setTimeout(() => {
69
- this.socket.removeEventListener('message', handleResponse);
70
- reject(new Error('request timed out'));
71
- }, this.responseTimeout);
72
- });
73
- }
74
- /**
75
- * Sends a JSON-RPC request through the socket and keeps a listener open to read associated responses as they arrive.
76
- * Returns a close method to clean up the listener.
77
- */
78
- async subscribe(request, listener) {
79
- if (!request.method.startsWith('rpc.subscribe.')) {
80
- throw new Error('subscribe rpc requests must include the `rpc.subscribe` prefix');
81
- }
82
- if (!request.subscription) {
83
- throw new Error('subscribe rpc requests must include subscribe options');
84
- }
85
- const subscriptionId = request.subscription.id;
86
- const socketEventListener = (event) => {
87
- const jsonRpcResponse = JSON.parse(event.data.toString());
88
- if (jsonRpcResponse.id === subscriptionId) {
89
- if (jsonRpcResponse.error !== undefined) {
90
- // remove the event listener upon receipt of a JSON RPC Error.
91
- this.socket.removeEventListener('message', socketEventListener);
92
- this.closeSubscription(subscriptionId);
93
- }
94
- listener(jsonRpcResponse);
95
- }
96
- };
97
- this.socket.addEventListener('message', socketEventListener);
98
- const response = await this.request(request);
99
- if (response.error) {
100
- this.socket.removeEventListener('message', socketEventListener);
101
- return { response };
102
- }
103
- // clean up listener and create a `rpc.subscribe.close` message to use when closing this JSON RPC subscription
104
- const close = async () => {
105
- this.socket.removeEventListener('message', socketEventListener);
106
- await this.closeSubscription(subscriptionId);
107
- };
108
- return {
109
- response,
110
- close
111
- };
112
- }
113
- closeSubscription(id) {
114
- const requestId = uuidv4();
115
- const request = createJsonRpcSubscriptionRequest(requestId, 'rpc.subscribe.close', {}, id);
116
- return this.request(request);
117
- }
118
- /**
119
- * Sends a JSON-RPC request through the socket. You must subscribe to a message listener separately to capture the response.
120
- */
121
- send(request) {
122
- this.socket.send(JSON.stringify(request));
123
- }
124
- }
125
- //# sourceMappingURL=json-rpc-socket.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json-rpc-socket.js","sourceRoot":"","sources":["../../../src/json-rpc-socket.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,SAAS,MAAM,IAAI,CAAC;AAG3B,OAAO,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAC;AAErE,yEAAyE;AACzE,MAAM,eAAe,GAAG,KAAK,CAAC;AAC9B,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAahC;;GAEG;AACH,MAAM,OAAO,aAAa;IACI;IAA2B;IAAvD,YAA4B,MAAiB,EAAU,eAAuB;QAAlD,WAAM,GAAN,MAAM,CAAW;QAAU,oBAAe,GAAf,eAAe,CAAQ;IAAG,CAAC;IAElF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,UAAgC,EAAE;QAClE,MAAM,EAAE,cAAc,GAAG,eAAe,EAAE,eAAe,GAAG,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAE3G,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,OAAO,GAAG,GAAQ,EAAE;gBACzB,GAAG,CAAC,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;YAC3C,CAAC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,OAAO,GAAG,CAAC,KAAW,EAAO,EAAE;gBACpC,GAAG,CAAC,KAAK,CAAC,yBAAyB,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;YACnD,CAAC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3B,CAAC;QAED,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpD,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;gBACnC,OAAO,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACzC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,OAAO,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;YAExB,MAAM,cAAc,GAAG,CAAC,KAAoB,EAAO,EAAE;gBACnD,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAoB,CAAC;gBAClE,IAAI,eAAe,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC;oBACtC,2GAA2G;oBAC3G,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;oBAC3D,OAAO,OAAO,CAAC,eAAe,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC,CAAC;YACF,uDAAuD;YACvD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEnB,sFAAsF;YACtF,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;gBAC3D,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACzC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,OAAuB,EAAE,QAA6C;QAKpF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/C,MAAM,mBAAmB,GAAG,CAAC,KAAoB,EAAO,EAAE;YACxD,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAoB,CAAC;YAC7E,IAAI,eAAe,CAAC,EAAE,KAAK,cAAc,EAAE,CAAC;gBAC1C,IAAI,eAAe,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxC,8DAA8D;oBAC9D,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;oBAChE,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;gBACzC,CAAC;gBACD,QAAQ,CAAC,eAAe,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAE7D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;YAChE,OAAO,EAAE,QAAQ,EAAE,CAAC;QACtB,CAAC;QAED,8GAA8G;QAC9G,MAAM,KAAK,GAAG,KAAK,IAAmB,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;YAChE,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEF,OAAO;YACL,QAAQ;YACR,KAAK;SACN,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,EAAa;QACrC,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,gCAAgC,CAAC,SAAS,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3F,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAuB;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5C,CAAC;CACF"}
@@ -1,10 +0,0 @@
1
- import type { Server } from 'http';
2
- export declare class HttpServerShutdownHandler {
3
- private tcpSockets;
4
- private tcpSocketId;
5
- private server;
6
- private stopping;
7
- constructor(server: Server);
8
- stop(callback: any): void;
9
- }
10
- //# sourceMappingURL=http-server-shutdown-handler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-server-shutdown-handler.d.ts","sourceRoot":"","sources":["../../../../src/lib/http-server-shutdown-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC,qBAAa,yBAAyB;IACpC,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAU;gBAEd,MAAM,EAAE,MAAM;IA4C1B,IAAI,CAAC,QAAQ,KAAA,GAAG,IAAI;CAuBrB"}
@@ -1,65 +0,0 @@
1
- const SOCKET_IDLE_SYMBOL = Symbol('idle');
2
- export class HttpServerShutdownHandler {
3
- tcpSockets;
4
- tcpSocketId;
5
- server;
6
- stopping;
7
- constructor(server) {
8
- this.tcpSockets = {};
9
- this.tcpSocketId = 1;
10
- this.server = server;
11
- this.stopping = false;
12
- // This event is emitted when a new TCP stream is established
13
- this.server.on('connection', (socket) => {
14
- // set socket to idle. this same socket will be accessible within the `http.on('request', (req, res))` event listener
15
- // as `request.connection`
16
- socket[SOCKET_IDLE_SYMBOL] = true;
17
- const tcpSocketId = this.tcpSocketId++;
18
- this.tcpSockets[tcpSocketId] = socket;
19
- // This event is emitted when a tcp stream is `destroy`ed
20
- socket.on('close', () => {
21
- delete this.tcpSockets[tcpSocketId];
22
- });
23
- });
24
- // Emitted each time there is a request. There may be multiple requests
25
- // per connection (in the case of HTTP Keep-Alive connections).
26
- this.server.on('request', (request, response) => {
27
- const { socket } = request;
28
- // set __idle to false because this socket is being used for an incoming request
29
- socket[SOCKET_IDLE_SYMBOL] = false;
30
- // Emitted when the response has been sent. More specifically, this event is emitted
31
- // when the last segment of the response headers and body have been handed off to the
32
- // operating system for transmission over the network.
33
- // It does not imply that the client has received anything yet.
34
- response.on('finish', () => {
35
- // set __idle back to true because the socket has finished facilitating a request. This socket may be used again without being
36
- // destroyed if keep-alive is being leveraged
37
- socket[SOCKET_IDLE_SYMBOL] = true;
38
- if (this.stopping) {
39
- socket.destroy();
40
- }
41
- });
42
- });
43
- }
44
- stop(callback) {
45
- this.stopping = true;
46
- // Stops the server from accepting new connections and keeps existing connections. This function is asynchronous,
47
- // the server is finally closed when all connections are ended and the server emits a 'close' event.
48
- // The optional callback will be called once the 'close' event occurs.
49
- // The callback will be called with an Error as its only argument if the server was not open when close is called.
50
- this.server.close(() => {
51
- this.tcpSocketId = 0;
52
- this.stopping = false;
53
- callback();
54
- });
55
- // close all idle sockets. the remaining sockets facilitating active requests
56
- // will be closed after they've served responses back.
57
- for (const tcpSocketId in this.tcpSockets) {
58
- const socket = this.tcpSockets[tcpSocketId];
59
- if (socket[SOCKET_IDLE_SYMBOL]) {
60
- socket.destroy();
61
- }
62
- }
63
- }
64
- }
65
- //# sourceMappingURL=http-server-shutdown-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-server-shutdown-handler.js","sourceRoot":"","sources":["../../../../src/lib/http-server-shutdown-handler.ts"],"names":[],"mappings":"AAGA,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAE1C,MAAM,OAAO,yBAAyB;IAC5B,UAAU,CAAiC;IAC3C,WAAW,CAAS;IACpB,MAAM,CAAS;IACf,QAAQ,CAAU;IAE1B,YAAY,MAAc;QACxB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEtB,6DAA6D;QAC7D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE;YACtC,qHAAqH;YACrH,0BAA0B;YAC1B,MAAM,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;YAClC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;YAEtC,yDAAyD;YACzD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACtB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,uEAAuE;QACvE,+DAA+D;QAC/D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;YAC9C,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;YAE3B,gFAAgF;YAChF,MAAM,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC;YAEnC,oFAAoF;YACpF,qFAAqF;YACrF,sDAAsD;YACtD,+DAA+D;YAC/D,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACzB,8HAA8H;gBAC9H,6CAA6C;gBAC7C,MAAM,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;gBAElC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,QAAQ;QACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,iHAAiH;QACjH,oGAAoG;QACpG,sEAAsE;QACtE,kHAAkH;QAClH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,QAAQ,EAAE,CAAC;QACb,CAAC,CAAC,CAAC;QAEH,6EAA6E;QAC7E,sDAAsD;QACtD,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAE5C,IAAI,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -1,54 +0,0 @@
1
- export type JsonRpcId = string | number | null;
2
- export type JsonRpcVersion = '2.0';
3
- export interface JsonRpcRequest {
4
- jsonrpc: JsonRpcVersion;
5
- id?: JsonRpcId;
6
- method: string;
7
- params?: any;
8
- /** JSON RPC Subscription Extension Parameters */
9
- subscription?: {
10
- id: JsonRpcId;
11
- };
12
- }
13
- export interface JsonRpcError {
14
- code: JsonRpcErrorCodes;
15
- message: string;
16
- data?: any;
17
- }
18
- export interface JsonRpcSubscription {
19
- /** JSON RPC Id of the Subscription Request */
20
- id: JsonRpcId;
21
- close: () => Promise<void>;
22
- }
23
- export declare enum JsonRpcErrorCodes {
24
- InvalidRequest = -32600,
25
- MethodNotFound = -32601,
26
- InvalidParams = -32602,
27
- InternalError = -32603,
28
- ParseError = -32700,
29
- /** App defined error equivalent to HTTP Status 400 */
30
- BadRequest = -50400,
31
- /** App defined error equivalent to HTTP Status 401 */
32
- Unauthorized = -50401,
33
- /** App defined error equivalent to HTTP Status 403 */
34
- Forbidden = -50403
35
- }
36
- export type JsonRpcResponse = JsonRpcSuccessResponse | JsonRpcErrorResponse;
37
- export interface JsonRpcSuccessResponse {
38
- jsonrpc: JsonRpcVersion;
39
- id: JsonRpcId;
40
- result: any;
41
- error?: never;
42
- }
43
- export interface JsonRpcErrorResponse {
44
- jsonrpc: JsonRpcVersion;
45
- id: JsonRpcId;
46
- result?: never;
47
- error: JsonRpcError;
48
- }
49
- export declare const createJsonRpcErrorResponse: (id: JsonRpcId, code: JsonRpcErrorCodes, message: string, data?: any) => JsonRpcErrorResponse;
50
- export declare const createJsonRpcNotification: (method: string, params?: any) => JsonRpcRequest;
51
- export declare const createJsonRpcSubscriptionRequest: (id: JsonRpcId, method: string, params?: any, subscriptionId?: JsonRpcId) => JsonRpcRequest;
52
- export declare const createJsonRpcRequest: (id: JsonRpcId, method: string, params?: any) => JsonRpcRequest;
53
- export declare const createJsonRpcSuccessResponse: (id: JsonRpcId, result?: any) => JsonRpcSuccessResponse;
54
- //# sourceMappingURL=json-rpc.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json-rpc.d.ts","sourceRoot":"","sources":["../../../../src/lib/json-rpc.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAC/C,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC;AAEnC,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,CAAC;IACxB,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,iDAAiD;IACjD,YAAY,CAAC,EAAE;QACb,EAAE,EAAE,SAAS,CAAA;KACd,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,EAAE,EAAE,SAAS,CAAC;IACd,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,oBAAY,iBAAiB;IAE3B,cAAc,SAAS;IACvB,cAAc,SAAS;IACvB,aAAa,SAAS;IACtB,aAAa,SAAS;IACtB,UAAU,SAAS;IAEnB,sDAAsD;IACtD,UAAU,SAAS;IACnB,sDAAsD;IACtD,YAAY,SAAS;IACrB,sDAAsD;IACtD,SAAS,SAAS;CACnB;AAED,MAAM,MAAM,eAAe,GAAG,sBAAsB,GAAG,oBAAoB,CAAC;AAE5E,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,cAAc,CAAC;IACxB,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,EAAE,GAAG,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,eAAO,MAAM,0BAA0B,OACjC,SAAS,QACP,iBAAiB,WACd,MAAM,SACR,GAAG,KACT,oBAUF,CAAC;AAEF,eAAO,MAAM,yBAAyB,WAC5B,MAAM,WACL,GAAG,KACX,cAMF,CAAC;AAEF,eAAO,MAAM,gCAAgC,OACvC,SAAS,UACL,MAAM,WACL,GAAG,mBACK,SAAS,KACzB,cAUF,CAAA;AAED,eAAO,MAAM,oBAAoB,OAC3B,SAAS,UACL,MAAM,WACL,GAAG,KACX,cAOF,CAAC;AAEF,eAAO,MAAM,4BAA4B,OACnC,SAAS,WACJ,GAAG,KACX,sBAMF,CAAC"}
@@ -1,60 +0,0 @@
1
- export var JsonRpcErrorCodes;
2
- (function (JsonRpcErrorCodes) {
3
- // JSON-RPC 2.0 pre-defined errors
4
- JsonRpcErrorCodes[JsonRpcErrorCodes["InvalidRequest"] = -32600] = "InvalidRequest";
5
- JsonRpcErrorCodes[JsonRpcErrorCodes["MethodNotFound"] = -32601] = "MethodNotFound";
6
- JsonRpcErrorCodes[JsonRpcErrorCodes["InvalidParams"] = -32602] = "InvalidParams";
7
- JsonRpcErrorCodes[JsonRpcErrorCodes["InternalError"] = -32603] = "InternalError";
8
- JsonRpcErrorCodes[JsonRpcErrorCodes["ParseError"] = -32700] = "ParseError";
9
- /** App defined error equivalent to HTTP Status 400 */
10
- JsonRpcErrorCodes[JsonRpcErrorCodes["BadRequest"] = -50400] = "BadRequest";
11
- /** App defined error equivalent to HTTP Status 401 */
12
- JsonRpcErrorCodes[JsonRpcErrorCodes["Unauthorized"] = -50401] = "Unauthorized";
13
- /** App defined error equivalent to HTTP Status 403 */
14
- JsonRpcErrorCodes[JsonRpcErrorCodes["Forbidden"] = -50403] = "Forbidden";
15
- })(JsonRpcErrorCodes || (JsonRpcErrorCodes = {}));
16
- export const createJsonRpcErrorResponse = (id, code, message, data) => {
17
- const error = { code, message };
18
- if (data != undefined) {
19
- error.data = data;
20
- }
21
- return {
22
- jsonrpc: '2.0',
23
- id,
24
- error,
25
- };
26
- };
27
- export const createJsonRpcNotification = (method, params) => {
28
- return {
29
- jsonrpc: '2.0',
30
- method,
31
- params,
32
- };
33
- };
34
- export const createJsonRpcSubscriptionRequest = (id, method, params, subscriptionId) => {
35
- return {
36
- jsonrpc: '2.0',
37
- id,
38
- method,
39
- params,
40
- subscription: {
41
- id: subscriptionId,
42
- }
43
- };
44
- };
45
- export const createJsonRpcRequest = (id, method, params) => {
46
- return {
47
- jsonrpc: '2.0',
48
- id,
49
- method,
50
- params,
51
- };
52
- };
53
- export const createJsonRpcSuccessResponse = (id, result) => {
54
- return {
55
- jsonrpc: '2.0',
56
- id,
57
- result: result ?? null,
58
- };
59
- };
60
- //# sourceMappingURL=json-rpc.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json-rpc.js","sourceRoot":"","sources":["../../../../src/lib/json-rpc.ts"],"names":[],"mappings":"AA0BA,MAAM,CAAN,IAAY,iBAcX;AAdD,WAAY,iBAAiB;IAC3B,kCAAkC;IAClC,kFAAuB,CAAA;IACvB,kFAAuB,CAAA;IACvB,gFAAsB,CAAA;IACtB,gFAAsB,CAAA;IACtB,0EAAmB,CAAA;IAEnB,sDAAsD;IACtD,0EAAmB,CAAA;IACnB,sDAAsD;IACtD,8EAAqB,CAAA;IACrB,sDAAsD;IACtD,wEAAkB,CAAA;AACpB,CAAC,EAdW,iBAAiB,KAAjB,iBAAiB,QAc5B;AAkBD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,EAAa,EACb,IAAuB,EACvB,OAAe,EACf,IAAU,EACY,EAAE;IACxB,MAAM,KAAK,GAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC9C,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IACpB,CAAC;IACD,OAAO;QACL,OAAO,EAAE,KAAK;QACd,EAAE;QACF,KAAK;KACN,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,MAAc,EACd,MAAY,EACI,EAAE;IAClB,OAAO;QACL,OAAO,EAAE,KAAK;QACd,MAAM;QACN,MAAM;KACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,EAAa,EACb,MAAc,EACd,MAAY,EACZ,cAA0B,EACV,EAAE;IAClB,OAAO;QACL,OAAO,EAAE,KAAK;QACd,EAAE;QACF,MAAM;QACN,MAAM;QACN,YAAY,EAAE;YACZ,EAAE,EAAE,cAAc;SACnB;KACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,EAAa,EACb,MAAc,EACd,MAAY,EACI,EAAE;IAClB,OAAO;QACL,OAAO,EAAE,KAAK;QACd,EAAE;QACF,MAAM;QACN,MAAM;KACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,EAAa,EACb,MAAY,EACY,EAAE;IAC1B,OAAO;QACL,OAAO,EAAE,KAAK;QACd,EAAE;QACF,MAAM,EAAE,MAAM,IAAI,IAAI;KACvB,CAAC;AACJ,CAAC,CAAC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Proof-of-work challenge model returned by the /registration/proof-of-work API.
3
- */
4
- export type ProofOfWorkChallengeModel = {
5
- challengeNonce: string;
6
- maximumAllowedHashValue: string;
7
- };
8
- //# sourceMappingURL=proof-of-work-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"proof-of-work-types.d.ts","sourceRoot":"","sources":["../../../../src/registration/proof-of-work-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,uBAAuB,EAAE,MAAM,CAAC;CACjC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=proof-of-work-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"proof-of-work-types.js","sourceRoot":"","sources":["../../../../src/registration/proof-of-work-types.ts"],"names":[],"mappings":""}
@@ -1,18 +0,0 @@
1
- /**
2
- * Registration data model to be included as a parameter in the /registration POST request.
3
- */
4
- export type RegistrationData = {
5
- did: string;
6
- termsOfServiceHash: string;
7
- };
8
- /**
9
- * Registration request model of the /registration POST API.
10
- */
11
- export type RegistrationRequest = {
12
- proofOfWork: {
13
- challengeNonce: string;
14
- responseNonce: string;
15
- };
16
- registrationData: RegistrationData;
17
- };
18
- //# sourceMappingURL=registration-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registration-types.d.ts","sourceRoot":"","sources":["../../../../src/registration/registration-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE;QACX,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,gBAAgB,EAAE,gBAAgB,CAAA;CACnC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=registration-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registration-types.js","sourceRoot":"","sources":["../../../../src/registration/registration-types.ts"],"names":[],"mappings":""}
@@ -1,11 +0,0 @@
1
- import type { Persona } from '@enbox/dwn-sdk-js';
2
- /**
3
- * Validator of common scenarios.
4
- */
5
- export default class CommonScenarioValidator {
6
- /**
7
- * Sanity test RecordsWrite and RecordsRead on the DWN instance.
8
- */
9
- static sanityTestDwnReadWrite(dwnUrl: string, persona?: Persona): Promise<void>;
10
- }
11
- //# sourceMappingURL=common-scenario-validator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"common-scenario-validator.d.ts","sourceRoot":"","sources":["../../../tests/common-scenario-validator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAsBjD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAuB;IAC1C;;OAEG;WACiB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CA+G7F"}
@@ -1,114 +0,0 @@
1
- import chaiAsPromised from 'chai-as-promised';
2
- import chai, { expect } from 'chai';
3
- import fetch from 'node-fetch';
4
- import { createJsonRpcRequest } from '../src/lib/json-rpc.js';
5
- import { getFileAsReadStream } from './utils.js';
6
- import { v4 as uuidv4 } from 'uuid';
7
- import { webcrypto } from 'node:crypto';
8
- import { Cid, DwnConstant, Jws, ProtocolsConfigure, RecordsRead, RecordsWrite, TestDataGenerator } from '@enbox/dwn-sdk-js';
9
- // node.js 18 and earlier needs globalThis.crypto polyfill
10
- if (!globalThis.crypto) {
11
- // @ts-ignore
12
- globalThis.crypto = webcrypto;
13
- }
14
- chai.use(chaiAsPromised);
15
- /**
16
- * Validator of common scenarios.
17
- */
18
- export default class CommonScenarioValidator {
19
- /**
20
- * Sanity test RecordsWrite and RecordsRead on the DWN instance.
21
- */
22
- static async sanityTestDwnReadWrite(dwnUrl, persona) {
23
- const alice = persona || await TestDataGenerator.generateDidKeyPersona();
24
- const aliceSigner = Jws.createSigner(alice);
25
- // install minimal protocol on Alice's DWN
26
- const protocolDefinition = {
27
- protocol: 'http://minimal.xyz',
28
- published: false,
29
- types: {
30
- foo: {}
31
- },
32
- structure: {
33
- foo: {}
34
- }
35
- };
36
- const protocolsConfig = await ProtocolsConfigure.create({
37
- signer: aliceSigner,
38
- definition: protocolDefinition
39
- });
40
- const protocolConfigureRequestId = uuidv4();
41
- const protocolConfigureRequest = createJsonRpcRequest(protocolConfigureRequestId, 'dwn.processMessage', {
42
- target: alice.did,
43
- message: protocolsConfig.message,
44
- });
45
- const protocolConfigureResponse = await fetch(dwnUrl, {
46
- method: 'POST',
47
- headers: {
48
- 'dwn-request': JSON.stringify(protocolConfigureRequest),
49
- }
50
- });
51
- const protocolConfigureResponseBody = await protocolConfigureResponse.json();
52
- expect(protocolConfigureResponse.status).to.equal(200);
53
- expect(protocolConfigureResponseBody.result.reply.status.code).to.equal(202);
54
- // Alice writing a file larger than max data size allowed to be encoded directly in the DWN Message Store.
55
- const filePath = './fixtures/test.jpeg';
56
- const { cid: dataCid, size: dataSize, stream } = await getFileAsReadStream(filePath);
57
- expect(dataSize).to.be.greaterThan(DwnConstant.maxDataSizeAllowedToBeEncoded);
58
- const recordsWrite = await RecordsWrite.create({
59
- signer: aliceSigner,
60
- dataFormat: 'image/jpeg',
61
- dataCid,
62
- dataSize
63
- });
64
- const recordsWriteRequestId = uuidv4();
65
- const recordsWriteRequest = createJsonRpcRequest(recordsWriteRequestId, 'dwn.processMessage', {
66
- target: alice.did,
67
- message: recordsWrite.message,
68
- });
69
- const recordsWriteResponse = await fetch(dwnUrl, {
70
- method: 'POST',
71
- headers: {
72
- 'dwn-request': JSON.stringify(recordsWriteRequest),
73
- },
74
- body: stream
75
- });
76
- const recordsWriteResponseBody = await recordsWriteResponse.json();
77
- expect(recordsWriteResponse.status).to.equal(200);
78
- expect(recordsWriteResponseBody.result.reply.status.code).to.equal(202);
79
- // Alice reading the file back out.
80
- const recordsRead = await RecordsRead.create({
81
- signer: aliceSigner,
82
- filter: {
83
- recordId: recordsWrite.message.recordId,
84
- },
85
- });
86
- const recordsReadRequestId = uuidv4();
87
- const recordsReadRequest = createJsonRpcRequest(recordsReadRequestId, 'dwn.processMessage', {
88
- target: alice.did,
89
- message: recordsRead.message
90
- });
91
- const recordsReadResponse = await fetch(dwnUrl, {
92
- method: 'POST',
93
- headers: {
94
- 'dwn-request': JSON.stringify(recordsReadRequest),
95
- },
96
- });
97
- expect(recordsReadResponse.status).to.equal(200);
98
- const { headers } = recordsReadResponse;
99
- const contentType = headers.get('content-type');
100
- expect(contentType).to.not.be.undefined;
101
- expect(contentType).to.equal('application/octet-stream');
102
- const recordsReadDwnResponse = headers.get('dwn-response');
103
- expect(recordsReadDwnResponse).to.not.be.undefined;
104
- const recordsReadJsonRpcResponse = JSON.parse(recordsReadDwnResponse);
105
- expect(recordsReadJsonRpcResponse.id).to.equal(recordsReadRequestId);
106
- expect(recordsReadJsonRpcResponse.error).to.not.exist;
107
- expect(recordsReadJsonRpcResponse.result.reply.status.code).to.equal(200);
108
- expect(recordsReadJsonRpcResponse.result.reply.entry.recordsWrite).to.exist;
109
- // can't get response as stream from supertest :(
110
- const cid = await Cid.computeDagPbCidFromStream(recordsReadResponse.body);
111
- expect(cid).to.equal(dataCid);
112
- }
113
- }
114
- //# sourceMappingURL=common-scenario-validator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"common-scenario-validator.js","sourceRoot":"","sources":["../../../tests/common-scenario-validator.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=connection-manager.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connection-manager.spec.d.ts","sourceRoot":"","sources":["../../../../tests/connection/connection-manager.spec.ts"],"names":[],"mappings":""}
@@ -1,47 +0,0 @@
1
- import chaiAsPromised from 'chai-as-promised';
2
- import chai, { expect } from 'chai';
3
- import sinon from 'sinon';
4
- import { getTestDwn } from '../test-dwn.js';
5
- import { InMemoryConnectionManager } from '../../src/connection/connection-manager.js';
6
- import { config } from '../../src/config.js';
7
- import { WsApi } from '../../src/ws-api.js';
8
- import { HttpApi } from '../../src/http-api.js';
9
- import { JsonRpcSocket } from '../../src/json-rpc-socket.js';
10
- chai.use(chaiAsPromised);
11
- describe('InMemoryConnectionManager', () => {
12
- let dwn;
13
- let connectionManager;
14
- let httpApi;
15
- let wsApi;
16
- beforeEach(async () => {
17
- dwn = await getTestDwn({ withEvents: true });
18
- connectionManager = new InMemoryConnectionManager(dwn);
19
- httpApi = await HttpApi.create(config, dwn);
20
- await httpApi.start(9002);
21
- wsApi = new WsApi(httpApi.server, dwn, connectionManager);
22
- wsApi.start();
23
- });
24
- afterEach(async () => {
25
- await connectionManager.closeAll();
26
- await dwn.close();
27
- await httpApi.close();
28
- await wsApi.close();
29
- sinon.restore();
30
- });
31
- it('adds connection to the connections and removes it if that connection is closed', async () => {
32
- const connection = await JsonRpcSocket.connect('ws://127.0.0.1:9002');
33
- expect(connectionManager.connections.size).to.equal(1);
34
- connection.close();
35
- await new Promise((resolve) => setTimeout(resolve, 5)); // wait for close event to be fired
36
- expect(connectionManager.connections.size).to.equal(0);
37
- });
38
- it('closes all connections on `closeAll`', async () => {
39
- await JsonRpcSocket.connect('ws://127.0.0.1:9002');
40
- expect(connectionManager.connections.size).to.equal(1);
41
- await JsonRpcSocket.connect('ws://127.0.0.1:9002');
42
- expect(connectionManager.connections.size).to.equal(2);
43
- await connectionManager.closeAll();
44
- expect(connectionManager.connections.size).to.equal(0);
45
- });
46
- });
47
- //# sourceMappingURL=connection-manager.spec.js.map