@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,137 +0,0 @@
1
- import fetch from 'node-fetch';
2
- import sinon from 'sinon';
3
- import { config } from '../../src/config.js';
4
- import { DwnServer } from '../../src/dwn-server.js';
5
- import { expect } from 'chai';
6
- import { Poller } from '@enbox/dwn-sdk-js';
7
- import { useFakeTimers } from 'sinon';
8
- import { Web5ConnectServer } from '../../src/web5-connect/web5-connect-server.js';
9
- import { randomUUID, webcrypto } from 'node:crypto';
10
- // node.js 18 and earlier needs globalThis.crypto polyfill
11
- if (!globalThis.crypto) {
12
- // @ts-ignore
13
- globalThis.crypto = webcrypto;
14
- }
15
- describe('Web5 Connect scenarios', function () {
16
- const web5ConnectBaseUrl = 'http://localhost:3000';
17
- let clock;
18
- let dwnServer;
19
- const dwnServerConfig = { ...config }; // not touching the original config
20
- before(async function () {
21
- // NOTE: using SQL to workaround an issue where multiple instances of DwnServer cannot be started using LevelDB in the same test run,
22
- // and dwn-server.spec.ts already uses LevelDB.
23
- dwnServerConfig.messageStore = 'sqlite://',
24
- dwnServerConfig.dataStore = 'sqlite://',
25
- dwnServerConfig.resumableTaskStore = 'sqlite://',
26
- dwnServerConfig.eventLog = 'sqlite://',
27
- dwnServer = new DwnServer({ config: dwnServerConfig });
28
- });
29
- after(async () => {
30
- await dwnServer.stop();
31
- });
32
- beforeEach(async () => {
33
- sinon.restore(); // wipe all previous stubs/spies/mocks/fakes/clock
34
- // IMPORTANT: MUST be called AFTER `sinon.restore()` because `sinon.restore()` resets fake timers
35
- clock = useFakeTimers({ shouldAdvanceTime: true });
36
- await dwnServer.start();
37
- });
38
- afterEach(async () => {
39
- clock.restore();
40
- await dwnServer.stop();
41
- });
42
- it('should be able to set and get Web5 Connect Request & Response objects', async () => {
43
- // Scenario:
44
- // 1. App sends the Web5 Connect Request object to the Web5 Connect server.
45
- // 2. Identity Provider (wallet) fetches the Web5 Connect Request object from the Web5 Connect server.
46
- // 3. Should receive 404 if fetching the same Web5 Connect Request again
47
- // 4. Identity Provider (wallet) should receive 400 if sending an incomplete response.
48
- // 5. Identity Provider (wallet) sends the Web5 Connect Response object to the Web5 Connect server.
49
- // 6. App fetches the Web5 Connect Response object from the Web5 Connect server.
50
- // 7. Should receive 404 if fetching the same Web5 Connect Response object again.
51
- // 1. App sends the Web5 Connect Request object to the Web5 Connect server.
52
- const requestBody = { request: { dummyProperty: 'dummyValue' } };
53
- const postWeb5ConnectRequestResult = await fetch(`${web5ConnectBaseUrl}/connect/par`, {
54
- method: 'POST',
55
- headers: { 'Content-Type': 'application/json' },
56
- body: JSON.stringify(requestBody),
57
- });
58
- expect(postWeb5ConnectRequestResult.status).to.equal(201);
59
- // 2. Identity Provider (wallet) fetches the Web5 Connect Request object from the Web5 Connect server.
60
- const requestUrl = (await postWeb5ConnectRequestResult.json()).request_uri;
61
- const regex = /^http:\/\/localhost:3000\/connect\/authorize\/[a-zA-Z0-9\-]{21,}\.jwt$/;
62
- expect(requestUrl).to.match(regex);
63
- let getWeb5ConnectRequestResult;
64
- await Poller.pollUntilSuccessOrTimeout(async () => {
65
- console.log('Polling for Web5 Connect Request object...');
66
- getWeb5ConnectRequestResult = await fetch(requestUrl, { method: 'GET' });
67
- expect(getWeb5ConnectRequestResult.status).to.equal(200);
68
- });
69
- const fetchedRequest = await getWeb5ConnectRequestResult.json();
70
- expect(fetchedRequest).to.deep.equal(requestBody.request);
71
- // 3. Should receive 404 if fetching the same Web5 Connect Request again
72
- await Poller.pollUntilSuccessOrTimeout(async () => {
73
- const getWeb5ConnectRequestResult2 = await fetch(requestUrl, { method: 'GET' });
74
- expect(getWeb5ConnectRequestResult2.status).to.equal(404);
75
- });
76
- // 4. Identity Provider (wallet) should receive 400 if sending an incomplete response.
77
- const incompleteResponseBody = {
78
- id_token: { dummyToken: 'dummyToken' },
79
- // state : 'dummyState', // intentionally missing
80
- };
81
- const postIncompleteWeb5ConnectResponseResult = await fetch(`${web5ConnectBaseUrl}/connect/callback`, {
82
- method: 'POST',
83
- headers: { 'Content-Type': 'application/json' },
84
- body: JSON.stringify(incompleteResponseBody),
85
- });
86
- expect(postIncompleteWeb5ConnectResponseResult.status).to.equal(400);
87
- const state = `dummyState-${randomUUID()}`;
88
- // 5. Identity Provider (wallet) sends the Web5 Connect Response object to the Web5 Connect server.
89
- const web5ConnectResponseBody = {
90
- id_token: { dummyToken: 'dummyToken' },
91
- state
92
- };
93
- const postWeb5ConnectResponseResult = await fetch(`${web5ConnectBaseUrl}/connect/callback`, {
94
- method: 'POST',
95
- headers: { 'Content-Type': 'application/json' },
96
- body: JSON.stringify(web5ConnectResponseBody),
97
- });
98
- expect(postWeb5ConnectResponseResult.status).to.equal(201);
99
- // 6. App fetches the Web5 Connect Response object from the Web5 Connect server.
100
- const web5ConnectResponseUrl = `${web5ConnectBaseUrl}/connect/token/${web5ConnectResponseBody.state}.jwt`;
101
- let getWeb5ConnectResponseResult;
102
- await Poller.pollUntilSuccessOrTimeout(async () => {
103
- getWeb5ConnectResponseResult = await fetch(web5ConnectResponseUrl, { method: 'GET' });
104
- expect(getWeb5ConnectResponseResult.status).to.equal(200);
105
- });
106
- const fetchedResponse = await getWeb5ConnectResponseResult.json();
107
- expect(fetchedResponse).to.deep.equal(web5ConnectResponseBody.id_token);
108
- // 7. Should receive 404 if fetching the same Web5 Connect Response object again.
109
- await Poller.pollUntilSuccessOrTimeout(async () => {
110
- const getWeb5ConnectResponseResult2 = await fetch(web5ConnectResponseUrl, { method: 'GET' });
111
- expect(getWeb5ConnectResponseResult2.status).to.equal(404);
112
- });
113
- });
114
- it('should clean up objects that are expired', async () => {
115
- // Scenario:
116
- // 1. App sends the Web5 Connect Request object to the Web5 Connect server.
117
- // 2. Time passes and the Web5 Connect Request object is expired.
118
- // 3. Should receive 404 when fetching Web5 Connect Request.
119
- // 1. App sends the Web5 Connect Request object to the Web5 Connect server.
120
- const requestBody = { request: { dummyProperty: 'dummyValue' } };
121
- const postWeb5ConnectRequestResult = await fetch(`${web5ConnectBaseUrl}/connect/par`, {
122
- method: 'POST',
123
- headers: { 'Content-Type': 'application/json' },
124
- body: JSON.stringify(requestBody),
125
- });
126
- expect(postWeb5ConnectRequestResult.status).to.equal(201);
127
- // 2. Time passes and the Web5 Connect Request object is expired.
128
- await clock.tickAsync(Web5ConnectServer.ttlInSeconds * 1000);
129
- // 3. Should receive 404 when fetching the expired Web5 Connect Request.
130
- const requestUrl = (await postWeb5ConnectRequestResult.json()).request_uri;
131
- const getWeb5ConnectRequestResult = await fetch(requestUrl, {
132
- method: 'GET',
133
- });
134
- expect(getWeb5ConnectRequestResult.status).to.equal(404);
135
- });
136
- });
137
- //# sourceMappingURL=web5-connect.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web5-connect.spec.js","sourceRoot":"","sources":["../../../../tests/scenarios/web5-connect.spec.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import type { TenantGate } from '@enbox/dwn-sdk-js';
2
- import { Dwn } from '@enbox/dwn-sdk-js';
3
- export declare function getTestDwn(options?: {
4
- tenantGate?: TenantGate;
5
- withEvents?: boolean;
6
- }): Promise<Dwn>;
7
- //# sourceMappingURL=test-dwn.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-dwn.d.ts","sourceRoot":"","sources":["../../../tests/test-dwn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAUpD,OAAO,EAAE,GAAG,EAAsB,MAAM,mBAAmB,CAAC;AAE5D,wBAAsB,UAAU,CAAC,OAAO,GAAE;IACxC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC,GAAG,CAAC,CA8BpB"}
@@ -1,34 +0,0 @@
1
- import { getDialectFromUrl } from '../src/storage.js';
2
- import { DataStoreSql, EventLogSql, MessageStoreSql, ResumableTaskStoreSql, } from '@enbox/dwn-sql-store';
3
- import { DidDht, DidIon, DidKey, UniversalResolver } from '@enbox/dids';
4
- import { Dwn, EventEmitterStream } from '@enbox/dwn-sdk-js';
5
- export async function getTestDwn(options = {}) {
6
- const { tenantGate, withEvents = false } = options;
7
- const dialect = getDialectFromUrl(new URL('sqlite://'));
8
- const dataStore = new DataStoreSql(dialect);
9
- const eventLog = new EventLogSql(dialect);
10
- const messageStore = new MessageStoreSql(dialect);
11
- const resumableTaskStore = new ResumableTaskStoreSql(dialect);
12
- const eventStream = withEvents ? new EventEmitterStream() : undefined;
13
- // NOTE: no resolver cache used here to avoid locking LevelDB
14
- const didResolver = new UniversalResolver({
15
- didResolvers: [DidDht, DidIon, DidKey],
16
- });
17
- let dwn;
18
- try {
19
- dwn = await Dwn.create({
20
- eventLog,
21
- dataStore,
22
- messageStore,
23
- resumableTaskStore,
24
- eventStream,
25
- tenantGate,
26
- didResolver
27
- });
28
- }
29
- catch (e) {
30
- throw e;
31
- }
32
- return dwn;
33
- }
34
- //# sourceMappingURL=test-dwn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-dwn.js","sourceRoot":"","sources":["../../../tests/test-dwn.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,WAAW,EACX,eAAe,EACf,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,GAAG,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAG7B,EAAE;IACJ,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IACnD,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,kBAAkB,GAAG,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtE,6DAA6D;IAC7D,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC;QACxC,YAAY,EAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KACxC,CAAC,CAAC;IAEH,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC;YACrB,QAAQ;YACR,SAAS;YACT,YAAY;YACZ,kBAAkB;YAClB,WAAW;YACX,UAAU;YACV,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,CAAC;IACV,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,46 +0,0 @@
1
- import type { GenericMessage, Persona, UnionMessageReply } from '@enbox/dwn-sdk-js';
2
- import type { Response } from 'node-fetch';
3
- import { RecordsWrite } from '@enbox/dwn-sdk-js';
4
- import fs from 'node:fs';
5
- import type { Readable } from 'readable-stream';
6
- export type CreateRecordsWriteOverrides = ({
7
- dataCid?: string;
8
- dataSize?: number;
9
- dateCreated?: string;
10
- published?: boolean;
11
- recordId?: string;
12
- protocol?: string;
13
- protocolPath?: string;
14
- } & {
15
- data?: never;
16
- }) | ({
17
- dataCid?: never;
18
- dataSize?: never;
19
- dateCreated?: string;
20
- published?: boolean;
21
- recordId?: string;
22
- protocol?: string;
23
- protocolPath?: string;
24
- } & {
25
- data?: Uint8Array;
26
- });
27
- export type GenerateRecordsWriteOutput = {
28
- recordsWrite: RecordsWrite;
29
- dataStream: Readable | undefined;
30
- };
31
- export declare function createRecordsWriteMessage(signer: Persona, overrides?: CreateRecordsWriteOverrides): Promise<GenerateRecordsWriteOutput>;
32
- export declare function randomBytes(length: number): Uint8Array;
33
- export declare function getFileAsReadStream(filePath: string): Promise<{
34
- stream: fs.ReadStream;
35
- cid: string;
36
- size: number;
37
- }>;
38
- export declare function getDwnResponse(response: Response): UnionMessageReply;
39
- export declare function sendHttpMessage(options: {
40
- url: string;
41
- target: string;
42
- message: GenericMessage;
43
- data?: any;
44
- }): Promise<UnionMessageReply>;
45
- export declare function sendWsMessage(address: string, message: any): Promise<Buffer>;
46
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../tests/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAmB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAWhD,MAAM,MAAM,2BAA2B,GACnC,CAAC;IACC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG;IAAE,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,GACrB,CAAC;IACC,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG;IAAE,IAAI,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC;AAE/B,MAAM,MAAM,0BAA0B,GAAG;IACvC,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAC;CAClC,CAAC;AAEF,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,OAAO,EACf,SAAS,GAAE,2BAAgC,GAC1C,OAAO,CAAC,0BAA0B,CAAC,CAoBrC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAOtD;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB/D;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,iBAAiB,CAEpE;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAoD7B;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,GAAG,GACX,OAAO,CAAC,MAAM,CAAC,CAajB"}
@@ -1,116 +0,0 @@
1
- import { Cid, DataStream, RecordsWrite } from '@enbox/dwn-sdk-js';
2
- import fs from 'node:fs';
3
- import path from 'path';
4
- import { v4 as uuidv4 } from 'uuid';
5
- import fetch from 'node-fetch';
6
- import { fileURLToPath } from 'url';
7
- import { WebSocket } from 'ws';
8
- import { createJsonRpcRequest } from '../src/lib/json-rpc.js';
9
- // __filename and __dirname are not defined in ES module scope
10
- const __filename = fileURLToPath(import.meta.url);
11
- const __dirname = path.dirname(__filename);
12
- export async function createRecordsWriteMessage(signer, overrides = {}) {
13
- if (!overrides.dataCid && !overrides.data) {
14
- overrides.data = randomBytes(32);
15
- }
16
- const recordsWrite = await RecordsWrite.create({
17
- ...overrides,
18
- dataFormat: 'application/json',
19
- signer: signer.signer,
20
- });
21
- let dataStream;
22
- if (overrides.data) {
23
- dataStream = DataStream.fromBytes(overrides.data);
24
- }
25
- return {
26
- recordsWrite,
27
- dataStream,
28
- };
29
- }
30
- export function randomBytes(length) {
31
- const randomBytes = new Uint8Array(length);
32
- for (let i = 0; i < length; i++) {
33
- randomBytes[i] = Math.floor(Math.random() * 256);
34
- }
35
- return randomBytes;
36
- }
37
- export async function getFileAsReadStream(filePath) {
38
- const absoluteFilePath = `${__dirname}/${filePath}`;
39
- let readStream = fs.createReadStream(absoluteFilePath);
40
- const cid = await Cid.computeDagPbCidFromStream(readStream);
41
- let size = 0;
42
- readStream = fs.createReadStream(absoluteFilePath);
43
- readStream.on('data', (chunk) => {
44
- size += chunk['byteLength'];
45
- });
46
- return new Promise((resolve) => {
47
- readStream.on('close', () => {
48
- return resolve({
49
- stream: fs.createReadStream(absoluteFilePath),
50
- cid,
51
- size,
52
- });
53
- });
54
- });
55
- }
56
- export function getDwnResponse(response) {
57
- return JSON.parse(response.headers.get('dwn-response'));
58
- }
59
- export async function sendHttpMessage(options) {
60
- const { url, target, message, data } = options;
61
- // First RecordsWrite that creates the record.
62
- const requestId = uuidv4();
63
- const jsonRpcRequest = createJsonRpcRequest(requestId, 'dwn.processMessage', {
64
- target,
65
- message,
66
- });
67
- const fetchOpts = {
68
- method: 'POST',
69
- headers: {
70
- 'dwn-request': JSON.stringify(jsonRpcRequest)
71
- }
72
- };
73
- if (data !== undefined) {
74
- fetchOpts.headers['content-type'] = 'application/octet-stream';
75
- fetchOpts['body'] = data;
76
- }
77
- const resp = await fetch(url, fetchOpts);
78
- let dwnRpcResponse;
79
- // check to see if response is in header first. if it is, that means the response is a ReadableStream
80
- let dataStream;
81
- const { headers } = resp;
82
- if (headers.has('dwn-response')) {
83
- const jsonRpcResponse = JSON.parse(headers.get('dwn-response'));
84
- if (jsonRpcResponse == null) {
85
- throw new Error(`failed to parse json rpc response. dwn url: ${url}`);
86
- }
87
- dataStream = resp.body;
88
- dwnRpcResponse = jsonRpcResponse;
89
- }
90
- else {
91
- const responseBody = await resp.text();
92
- dwnRpcResponse = JSON.parse(responseBody);
93
- }
94
- if (dwnRpcResponse.error) {
95
- const { code, message } = dwnRpcResponse.error;
96
- throw new Error(`(${code}) - ${message}`);
97
- }
98
- const { reply } = dwnRpcResponse.result;
99
- if (dataStream) {
100
- reply['record']['data'] = dataStream;
101
- }
102
- return reply;
103
- }
104
- export async function sendWsMessage(address, message) {
105
- return new Promise((resolve) => {
106
- const socket = new WebSocket(address);
107
- socket.onopen = (_event) => {
108
- socket.onmessage = (event) => {
109
- socket.terminate();
110
- return resolve(event.data);
111
- };
112
- socket.send(message);
113
- };
114
- });
115
- }
116
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../tests/utils.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ws-api.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ws-api.spec.d.ts","sourceRoot":"","sources":["../../../tests/ws-api.spec.ts"],"names":[],"mappings":""}