@enbox/agent 0.0.1

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 (348) hide show
  1. package/dist/browser.js +2215 -0
  2. package/dist/browser.js.map +7 -0
  3. package/dist/browser.mjs +2215 -0
  4. package/dist/browser.mjs.map +7 -0
  5. package/dist/cjs/index.js +8530 -0
  6. package/dist/cjs/index.js.map +7 -0
  7. package/dist/cjs/package.json +1 -0
  8. package/dist/esm/agent-did-resolver-cache.js +87 -0
  9. package/dist/esm/agent-did-resolver-cache.js.map +1 -0
  10. package/dist/esm/bearer-identity.js +41 -0
  11. package/dist/esm/bearer-identity.js.map +1 -0
  12. package/dist/esm/connect.js +191 -0
  13. package/dist/esm/connect.js.map +1 -0
  14. package/dist/esm/crypto-api.js +346 -0
  15. package/dist/esm/crypto-api.js.map +1 -0
  16. package/dist/esm/did-api.js +278 -0
  17. package/dist/esm/did-api.js.map +1 -0
  18. package/dist/esm/dwn-api.js +336 -0
  19. package/dist/esm/dwn-api.js.map +1 -0
  20. package/dist/esm/dwn-registrar.js +120 -0
  21. package/dist/esm/dwn-registrar.js.map +1 -0
  22. package/dist/esm/hd-identity-vault.js +729 -0
  23. package/dist/esm/hd-identity-vault.js.map +1 -0
  24. package/dist/esm/identity-api.js +262 -0
  25. package/dist/esm/identity-api.js.map +1 -0
  26. package/dist/esm/index.js +23 -0
  27. package/dist/esm/index.js.map +1 -0
  28. package/dist/esm/local-key-manager.js +498 -0
  29. package/dist/esm/local-key-manager.js.map +1 -0
  30. package/dist/esm/oidc.js +507 -0
  31. package/dist/esm/oidc.js.map +1 -0
  32. package/dist/esm/permissions-api.js +322 -0
  33. package/dist/esm/permissions-api.js.map +1 -0
  34. package/dist/esm/prototyping/clients/dwn-rpc-types.js +2 -0
  35. package/dist/esm/prototyping/clients/dwn-rpc-types.js.map +1 -0
  36. package/dist/esm/prototyping/clients/dwn-server-info-cache-memory.js +74 -0
  37. package/dist/esm/prototyping/clients/dwn-server-info-cache-memory.js.map +1 -0
  38. package/dist/esm/prototyping/clients/http-dwn-rpc-client.js +105 -0
  39. package/dist/esm/prototyping/clients/http-dwn-rpc-client.js.map +1 -0
  40. package/dist/esm/prototyping/clients/json-rpc-socket.js +150 -0
  41. package/dist/esm/prototyping/clients/json-rpc-socket.js.map +1 -0
  42. package/dist/esm/prototyping/clients/json-rpc.js +58 -0
  43. package/dist/esm/prototyping/clients/json-rpc.js.map +1 -0
  44. package/dist/esm/prototyping/clients/server-info-types.js +2 -0
  45. package/dist/esm/prototyping/clients/server-info-types.js.map +1 -0
  46. package/dist/esm/prototyping/clients/web-socket-clients.js +90 -0
  47. package/dist/esm/prototyping/clients/web-socket-clients.js.map +1 -0
  48. package/dist/esm/prototyping/common/object.js +14 -0
  49. package/dist/esm/prototyping/common/object.js.map +1 -0
  50. package/dist/esm/prototyping/common/type-utils.js +2 -0
  51. package/dist/esm/prototyping/common/type-utils.js.map +1 -0
  52. package/dist/esm/prototyping/crypto/algorithms/aes-gcm.js +147 -0
  53. package/dist/esm/prototyping/crypto/algorithms/aes-gcm.js.map +1 -0
  54. package/dist/esm/prototyping/crypto/algorithms/aes-kw.js +137 -0
  55. package/dist/esm/prototyping/crypto/algorithms/aes-kw.js.map +1 -0
  56. package/dist/esm/prototyping/crypto/algorithms/ecdsa.js +307 -0
  57. package/dist/esm/prototyping/crypto/algorithms/ecdsa.js.map +1 -0
  58. package/dist/esm/prototyping/crypto/algorithms/eddsa.js +264 -0
  59. package/dist/esm/prototyping/crypto/algorithms/eddsa.js.map +1 -0
  60. package/dist/esm/prototyping/crypto/algorithms/hkdf.js +39 -0
  61. package/dist/esm/prototyping/crypto/algorithms/hkdf.js.map +1 -0
  62. package/dist/esm/prototyping/crypto/algorithms/pbkdf2.js +41 -0
  63. package/dist/esm/prototyping/crypto/algorithms/pbkdf2.js.map +1 -0
  64. package/dist/esm/prototyping/crypto/crypto-error.js +41 -0
  65. package/dist/esm/prototyping/crypto/crypto-error.js.map +1 -0
  66. package/dist/esm/prototyping/crypto/dsa.js +236 -0
  67. package/dist/esm/prototyping/crypto/dsa.js.map +1 -0
  68. package/dist/esm/prototyping/crypto/jose/jwe-compact.js +130 -0
  69. package/dist/esm/prototyping/crypto/jose/jwe-compact.js.map +1 -0
  70. package/dist/esm/prototyping/crypto/jose/jwe-flattened.js +294 -0
  71. package/dist/esm/prototyping/crypto/jose/jwe-flattened.js.map +1 -0
  72. package/dist/esm/prototyping/crypto/jose/jwe.js +308 -0
  73. package/dist/esm/prototyping/crypto/jose/jwe.js.map +1 -0
  74. package/dist/esm/prototyping/crypto/primitives/aes-gcm.js +352 -0
  75. package/dist/esm/prototyping/crypto/primitives/aes-gcm.js.map +1 -0
  76. package/dist/esm/prototyping/crypto/primitives/aes-kw.js +247 -0
  77. package/dist/esm/prototyping/crypto/primitives/aes-kw.js.map +1 -0
  78. package/dist/esm/prototyping/crypto/primitives/hkdf.js +80 -0
  79. package/dist/esm/prototyping/crypto/primitives/hkdf.js.map +1 -0
  80. package/dist/esm/prototyping/crypto/primitives/pbkdf2.js +85 -0
  81. package/dist/esm/prototyping/crypto/primitives/pbkdf2.js.map +1 -0
  82. package/dist/esm/prototyping/crypto/types/cipher.js +2 -0
  83. package/dist/esm/prototyping/crypto/types/cipher.js.map +1 -0
  84. package/dist/esm/prototyping/crypto/types/crypto-api.js +2 -0
  85. package/dist/esm/prototyping/crypto/types/crypto-api.js.map +1 -0
  86. package/dist/esm/prototyping/crypto/types/key-converter.js +2 -0
  87. package/dist/esm/prototyping/crypto/types/key-converter.js.map +1 -0
  88. package/dist/esm/prototyping/crypto/types/key-deriver.js +2 -0
  89. package/dist/esm/prototyping/crypto/types/key-deriver.js.map +1 -0
  90. package/dist/esm/prototyping/crypto/types/key-io.js +2 -0
  91. package/dist/esm/prototyping/crypto/types/key-io.js.map +1 -0
  92. package/dist/esm/prototyping/crypto/types/key-manager.js +2 -0
  93. package/dist/esm/prototyping/crypto/types/key-manager.js.map +1 -0
  94. package/dist/esm/prototyping/crypto/types/key-wrapper.js +2 -0
  95. package/dist/esm/prototyping/crypto/types/key-wrapper.js.map +1 -0
  96. package/dist/esm/prototyping/crypto/types/params-direct.js +2 -0
  97. package/dist/esm/prototyping/crypto/types/params-direct.js.map +1 -0
  98. package/dist/esm/prototyping/crypto/types/params-kms.js +2 -0
  99. package/dist/esm/prototyping/crypto/types/params-kms.js.map +1 -0
  100. package/dist/esm/prototyping/crypto/utils.js +19 -0
  101. package/dist/esm/prototyping/crypto/utils.js.map +1 -0
  102. package/dist/esm/prototyping/dids/resolver-cache-memory.js +77 -0
  103. package/dist/esm/prototyping/dids/resolver-cache-memory.js.map +1 -0
  104. package/dist/esm/prototyping/dids/utils.js +9 -0
  105. package/dist/esm/prototyping/dids/utils.js.map +1 -0
  106. package/dist/esm/rpc-client.js +123 -0
  107. package/dist/esm/rpc-client.js.map +1 -0
  108. package/dist/esm/store-data-protocols.js +38 -0
  109. package/dist/esm/store-data-protocols.js.map +1 -0
  110. package/dist/esm/store-data.js +320 -0
  111. package/dist/esm/store-data.js.map +1 -0
  112. package/dist/esm/store-did.js +136 -0
  113. package/dist/esm/store-did.js.map +1 -0
  114. package/dist/esm/store-identity.js +140 -0
  115. package/dist/esm/store-identity.js.map +1 -0
  116. package/dist/esm/store-key.js +136 -0
  117. package/dist/esm/store-key.js.map +1 -0
  118. package/dist/esm/sync-api.js +61 -0
  119. package/dist/esm/sync-api.js.map +1 -0
  120. package/dist/esm/sync-engine-level.js +618 -0
  121. package/dist/esm/sync-engine-level.js.map +1 -0
  122. package/dist/esm/test-harness.js +239 -0
  123. package/dist/esm/test-harness.js.map +1 -0
  124. package/dist/esm/types/agent.js +2 -0
  125. package/dist/esm/types/agent.js.map +1 -0
  126. package/dist/esm/types/dwn.js +31 -0
  127. package/dist/esm/types/dwn.js.map +1 -0
  128. package/dist/esm/types/identity-vault.js +2 -0
  129. package/dist/esm/types/identity-vault.js.map +1 -0
  130. package/dist/esm/types/identity.js +2 -0
  131. package/dist/esm/types/identity.js.map +1 -0
  132. package/dist/esm/types/key-manager.js +2 -0
  133. package/dist/esm/types/key-manager.js.map +1 -0
  134. package/dist/esm/types/permissions.js +2 -0
  135. package/dist/esm/types/permissions.js.map +1 -0
  136. package/dist/esm/types/sync.js +2 -0
  137. package/dist/esm/types/sync.js.map +1 -0
  138. package/dist/esm/types/vc.js +5 -0
  139. package/dist/esm/types/vc.js.map +1 -0
  140. package/dist/esm/utils-internal.js +147 -0
  141. package/dist/esm/utils-internal.js.map +1 -0
  142. package/dist/esm/utils.js +161 -0
  143. package/dist/esm/utils.js.map +1 -0
  144. package/dist/types/agent-did-resolver-cache.d.ts +30 -0
  145. package/dist/types/agent-did-resolver-cache.d.ts.map +1 -0
  146. package/dist/types/bearer-identity.d.ts +31 -0
  147. package/dist/types/bearer-identity.d.ts.map +1 -0
  148. package/dist/types/connect.d.ts +88 -0
  149. package/dist/types/connect.d.ts.map +1 -0
  150. package/dist/types/crypto-api.d.ts +286 -0
  151. package/dist/types/crypto-api.d.ts.map +1 -0
  152. package/dist/types/did-api.d.ts +119 -0
  153. package/dist/types/did-api.d.ts.map +1 -0
  154. package/dist/types/dwn-api.d.ts +66 -0
  155. package/dist/types/dwn-api.d.ts.map +1 -0
  156. package/dist/types/dwn-registrar.d.ts +29 -0
  157. package/dist/types/dwn-registrar.d.ts.map +1 -0
  158. package/dist/types/hd-identity-vault.d.ts +306 -0
  159. package/dist/types/hd-identity-vault.d.ts.map +1 -0
  160. package/dist/types/identity-api.d.ts +107 -0
  161. package/dist/types/identity-api.d.ts.map +1 -0
  162. package/dist/types/index.d.ts +30 -0
  163. package/dist/types/index.d.ts.map +1 -0
  164. package/dist/types/local-key-manager.d.ts +311 -0
  165. package/dist/types/local-key-manager.d.ts.map +1 -0
  166. package/dist/types/oidc.d.ts +247 -0
  167. package/dist/types/oidc.d.ts.map +1 -0
  168. package/dist/types/permissions-api.d.ts +35 -0
  169. package/dist/types/permissions-api.d.ts.map +1 -0
  170. package/dist/types/prototyping/clients/dwn-rpc-types.d.ts +45 -0
  171. package/dist/types/prototyping/clients/dwn-rpc-types.d.ts.map +1 -0
  172. package/dist/types/prototyping/clients/dwn-server-info-cache-memory.d.ts +57 -0
  173. package/dist/types/prototyping/clients/dwn-server-info-cache-memory.d.ts.map +1 -0
  174. package/dist/types/prototyping/clients/http-dwn-rpc-client.d.ts +13 -0
  175. package/dist/types/prototyping/clients/http-dwn-rpc-client.d.ts.map +1 -0
  176. package/dist/types/prototyping/clients/json-rpc-socket.d.ts +43 -0
  177. package/dist/types/prototyping/clients/json-rpc-socket.d.ts.map +1 -0
  178. package/dist/types/prototyping/clients/json-rpc.d.ts +49 -0
  179. package/dist/types/prototyping/clients/json-rpc.d.ts.map +1 -0
  180. package/dist/types/prototyping/clients/server-info-types.d.ts +20 -0
  181. package/dist/types/prototyping/clients/server-info-types.d.ts.map +1 -0
  182. package/dist/types/prototyping/clients/web-socket-clients.d.ts +10 -0
  183. package/dist/types/prototyping/clients/web-socket-clients.d.ts.map +1 -0
  184. package/dist/types/prototyping/common/object.d.ts +2 -0
  185. package/dist/types/prototyping/common/object.d.ts.map +1 -0
  186. package/dist/types/prototyping/common/type-utils.d.ts +7 -0
  187. package/dist/types/prototyping/common/type-utils.d.ts.map +1 -0
  188. package/dist/types/prototyping/crypto/algorithms/aes-gcm.d.ts +151 -0
  189. package/dist/types/prototyping/crypto/algorithms/aes-gcm.d.ts.map +1 -0
  190. package/dist/types/prototyping/crypto/algorithms/aes-kw.d.ts +109 -0
  191. package/dist/types/prototyping/crypto/algorithms/aes-kw.d.ts.map +1 -0
  192. package/dist/types/prototyping/crypto/algorithms/ecdsa.d.ts +160 -0
  193. package/dist/types/prototyping/crypto/algorithms/ecdsa.d.ts.map +1 -0
  194. package/dist/types/prototyping/crypto/algorithms/eddsa.d.ts +157 -0
  195. package/dist/types/prototyping/crypto/algorithms/eddsa.d.ts.map +1 -0
  196. package/dist/types/prototyping/crypto/algorithms/hkdf.d.ts +21 -0
  197. package/dist/types/prototyping/crypto/algorithms/hkdf.d.ts.map +1 -0
  198. package/dist/types/prototyping/crypto/algorithms/pbkdf2.d.ts +21 -0
  199. package/dist/types/prototyping/crypto/algorithms/pbkdf2.d.ts.map +1 -0
  200. package/dist/types/prototyping/crypto/crypto-error.d.ts +29 -0
  201. package/dist/types/prototyping/crypto/crypto-error.d.ts.map +1 -0
  202. package/dist/types/prototyping/crypto/dsa.d.ts +169 -0
  203. package/dist/types/prototyping/crypto/dsa.d.ts.map +1 -0
  204. package/dist/types/prototyping/crypto/jose/jwe-compact.d.ts +135 -0
  205. package/dist/types/prototyping/crypto/jose/jwe-compact.d.ts.map +1 -0
  206. package/dist/types/prototyping/crypto/jose/jwe-flattened.d.ts +134 -0
  207. package/dist/types/prototyping/crypto/jose/jwe-flattened.d.ts.map +1 -0
  208. package/dist/types/prototyping/crypto/jose/jwe.d.ts +378 -0
  209. package/dist/types/prototyping/crypto/jose/jwe.d.ts.map +1 -0
  210. package/dist/types/prototyping/crypto/primitives/aes-gcm.d.ts +245 -0
  211. package/dist/types/prototyping/crypto/primitives/aes-gcm.d.ts.map +1 -0
  212. package/dist/types/prototyping/crypto/primitives/aes-kw.d.ts +103 -0
  213. package/dist/types/prototyping/crypto/primitives/aes-kw.d.ts.map +1 -0
  214. package/dist/types/prototyping/crypto/primitives/hkdf.d.ts +90 -0
  215. package/dist/types/prototyping/crypto/primitives/hkdf.d.ts.map +1 -0
  216. package/dist/types/prototyping/crypto/primitives/pbkdf2.d.ts +84 -0
  217. package/dist/types/prototyping/crypto/primitives/pbkdf2.d.ts.map +1 -0
  218. package/dist/types/prototyping/crypto/types/cipher.d.ts +14 -0
  219. package/dist/types/prototyping/crypto/types/cipher.d.ts.map +1 -0
  220. package/dist/types/prototyping/crypto/types/crypto-api.d.ts +35 -0
  221. package/dist/types/prototyping/crypto/types/crypto-api.d.ts.map +1 -0
  222. package/dist/types/prototyping/crypto/types/key-converter.d.ts +49 -0
  223. package/dist/types/prototyping/crypto/types/key-converter.d.ts.map +1 -0
  224. package/dist/types/prototyping/crypto/types/key-deriver.d.ts +50 -0
  225. package/dist/types/prototyping/crypto/types/key-deriver.d.ts.map +1 -0
  226. package/dist/types/prototyping/crypto/types/key-io.d.ts +49 -0
  227. package/dist/types/prototyping/crypto/types/key-io.d.ts.map +1 -0
  228. package/dist/types/prototyping/crypto/types/key-manager.d.ts +69 -0
  229. package/dist/types/prototyping/crypto/types/key-manager.d.ts.map +1 -0
  230. package/dist/types/prototyping/crypto/types/key-wrapper.d.ts +14 -0
  231. package/dist/types/prototyping/crypto/types/key-wrapper.d.ts.map +1 -0
  232. package/dist/types/prototyping/crypto/types/params-direct.d.ts +75 -0
  233. package/dist/types/prototyping/crypto/types/params-direct.d.ts.map +1 -0
  234. package/dist/types/prototyping/crypto/types/params-kms.d.ts +63 -0
  235. package/dist/types/prototyping/crypto/types/params-kms.d.ts.map +1 -0
  236. package/dist/types/prototyping/crypto/utils.d.ts +7 -0
  237. package/dist/types/prototyping/crypto/utils.d.ts.map +1 -0
  238. package/dist/types/prototyping/dids/resolver-cache-memory.d.ts +57 -0
  239. package/dist/types/prototyping/dids/resolver-cache-memory.d.ts.map +1 -0
  240. package/dist/types/prototyping/dids/utils.d.ts +3 -0
  241. package/dist/types/prototyping/dids/utils.d.ts.map +1 -0
  242. package/dist/types/rpc-client.d.ts +51 -0
  243. package/dist/types/rpc-client.d.ts.map +1 -0
  244. package/dist/types/store-data-protocols.d.ts +4 -0
  245. package/dist/types/store-data-protocols.d.ts.map +1 -0
  246. package/dist/types/store-data.d.ts +95 -0
  247. package/dist/types/store-data.d.ts.map +1 -0
  248. package/dist/types/store-did.d.ts +33 -0
  249. package/dist/types/store-did.d.ts.map +1 -0
  250. package/dist/types/store-identity.d.ts +34 -0
  251. package/dist/types/store-identity.d.ts.map +1 -0
  252. package/dist/types/store-key.d.ts +32 -0
  253. package/dist/types/store-key.d.ts.map +1 -0
  254. package/dist/types/sync-api.d.ts +41 -0
  255. package/dist/types/sync-api.d.ts.map +1 -0
  256. package/dist/types/sync-engine-level.d.ts +85 -0
  257. package/dist/types/sync-engine-level.d.ts.map +1 -0
  258. package/dist/types/test-harness.d.ts +69 -0
  259. package/dist/types/test-harness.d.ts.map +1 -0
  260. package/dist/types/types/agent.d.ts +172 -0
  261. package/dist/types/types/agent.d.ts.map +1 -0
  262. package/dist/types/types/dwn.d.ts +178 -0
  263. package/dist/types/types/dwn.d.ts.map +1 -0
  264. package/dist/types/types/identity-vault.d.ts +129 -0
  265. package/dist/types/types/identity-vault.d.ts.map +1 -0
  266. package/dist/types/types/identity.d.ts +16 -0
  267. package/dist/types/types/identity.d.ts.map +1 -0
  268. package/dist/types/types/key-manager.d.ts +9 -0
  269. package/dist/types/types/key-manager.d.ts.map +1 -0
  270. package/dist/types/types/permissions.d.ts +98 -0
  271. package/dist/types/types/permissions.d.ts.map +1 -0
  272. package/dist/types/types/sync.d.ts +66 -0
  273. package/dist/types/types/sync.d.ts.map +1 -0
  274. package/dist/types/types/vc.d.ts +7 -0
  275. package/dist/types/types/vc.d.ts.map +1 -0
  276. package/dist/types/utils-internal.d.ts +50 -0
  277. package/dist/types/utils-internal.d.ts.map +1 -0
  278. package/dist/types/utils.d.ts +37 -0
  279. package/dist/types/utils.d.ts.map +1 -0
  280. package/package.json +112 -0
  281. package/src/agent-did-resolver-cache.ts +95 -0
  282. package/src/bearer-identity.ts +42 -0
  283. package/src/connect.ts +296 -0
  284. package/src/crypto-api.ts +593 -0
  285. package/src/did-api.ts +429 -0
  286. package/src/dwn-api.ts +462 -0
  287. package/src/dwn-registrar.ts +127 -0
  288. package/src/hd-identity-vault.ts +853 -0
  289. package/src/identity-api.ts +324 -0
  290. package/src/index.ts +30 -0
  291. package/src/local-key-manager.ts +672 -0
  292. package/src/oidc.ts +857 -0
  293. package/src/permissions-api.ts +408 -0
  294. package/src/prototyping/clients/dwn-rpc-types.ts +55 -0
  295. package/src/prototyping/clients/dwn-server-info-cache-memory.ts +79 -0
  296. package/src/prototyping/clients/http-dwn-rpc-client.ts +110 -0
  297. package/src/prototyping/clients/json-rpc-socket.ts +169 -0
  298. package/src/prototyping/clients/json-rpc.ts +113 -0
  299. package/src/prototyping/clients/server-info-types.ts +21 -0
  300. package/src/prototyping/clients/web-socket-clients.ts +100 -0
  301. package/src/prototyping/common/object.ts +15 -0
  302. package/src/prototyping/common/type-utils.ts +6 -0
  303. package/src/prototyping/crypto/algorithms/aes-gcm.ts +211 -0
  304. package/src/prototyping/crypto/algorithms/aes-kw.ts +164 -0
  305. package/src/prototyping/crypto/algorithms/ecdsa.ts +365 -0
  306. package/src/prototyping/crypto/algorithms/eddsa.ts +310 -0
  307. package/src/prototyping/crypto/algorithms/hkdf.ts +40 -0
  308. package/src/prototyping/crypto/algorithms/pbkdf2.ts +44 -0
  309. package/src/prototyping/crypto/crypto-error.ts +45 -0
  310. package/src/prototyping/crypto/dsa.ts +367 -0
  311. package/src/prototyping/crypto/jose/jwe-compact.ts +225 -0
  312. package/src/prototyping/crypto/jose/jwe-flattened.ts +459 -0
  313. package/src/prototyping/crypto/jose/jwe.ts +653 -0
  314. package/src/prototyping/crypto/primitives/aes-gcm.ts +374 -0
  315. package/src/prototyping/crypto/primitives/aes-kw.ts +271 -0
  316. package/src/prototyping/crypto/primitives/hkdf.ts +121 -0
  317. package/src/prototyping/crypto/primitives/pbkdf2.ts +116 -0
  318. package/src/prototyping/crypto/types/cipher.ts +17 -0
  319. package/src/prototyping/crypto/types/crypto-api.ts +78 -0
  320. package/src/prototyping/crypto/types/key-converter.ts +53 -0
  321. package/src/prototyping/crypto/types/key-deriver.ts +56 -0
  322. package/src/prototyping/crypto/types/key-io.ts +51 -0
  323. package/src/prototyping/crypto/types/key-manager.ts +83 -0
  324. package/src/prototyping/crypto/types/key-wrapper.ts +17 -0
  325. package/src/prototyping/crypto/types/params-direct.ts +95 -0
  326. package/src/prototyping/crypto/types/params-kms.ts +76 -0
  327. package/src/prototyping/crypto/utils.ts +41 -0
  328. package/src/prototyping/dids/resolver-cache-memory.ts +83 -0
  329. package/src/prototyping/dids/utils.ts +10 -0
  330. package/src/rpc-client.ts +162 -0
  331. package/src/store-data-protocols.ts +40 -0
  332. package/src/store-data.ts +400 -0
  333. package/src/store-did.ts +105 -0
  334. package/src/store-identity.ts +109 -0
  335. package/src/store-key.ts +104 -0
  336. package/src/sync-api.ts +71 -0
  337. package/src/sync-engine-level.ts +714 -0
  338. package/src/test-harness.ts +330 -0
  339. package/src/types/agent.ts +195 -0
  340. package/src/types/dwn.ts +278 -0
  341. package/src/types/identity-vault.ts +137 -0
  342. package/src/types/identity.ts +18 -0
  343. package/src/types/key-manager.ts +15 -0
  344. package/src/types/permissions.ts +115 -0
  345. package/src/types/sync.ts +58 -0
  346. package/src/types/vc.ts +7 -0
  347. package/src/utils-internal.ts +157 -0
  348. package/src/utils.ts +181 -0
@@ -0,0 +1,336 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { Cid, DataStoreLevel, Dwn, DwnInterfaceName, DwnMethodName, EventEmitterStream, EventLogLevel, Message, MessageStoreLevel, ResumableTaskStoreLevel } from '@enbox/dwn-sdk-js';
11
+ import { NodeStream } from '@enbox/common';
12
+ import { CryptoUtils } from '@enbox/crypto';
13
+ import { DidDht, DidJwk, DidResolverCacheLevel, UniversalResolver } from '@enbox/dids';
14
+ import { DwnInterface, dwnMessageConstructors } from './types/dwn.js';
15
+ import { blobToIsomorphicNodeReadable, getDwnServiceEndpointUrls, isRecordsWrite, webReadableToIsomorphicNodeReadable } from './utils.js';
16
+ export function isDwnRequest(dwnRequest, messageType) {
17
+ return dwnRequest.messageType === messageType;
18
+ }
19
+ export function isDwnMessage(messageType, message) {
20
+ const incomingMessageInterfaceName = message.descriptor.interface + message.descriptor.method;
21
+ return incomingMessageInterfaceName === messageType;
22
+ }
23
+ export function isRecordsType(messageType) {
24
+ return messageType === DwnInterface.RecordsDelete ||
25
+ messageType === DwnInterface.RecordsQuery ||
26
+ messageType === DwnInterface.RecordsRead ||
27
+ messageType === DwnInterface.RecordsSubscribe ||
28
+ messageType === DwnInterface.RecordsWrite;
29
+ }
30
+ export function isRecordPermissionScope(scope) {
31
+ return scope.interface === DwnInterfaceName.Records;
32
+ }
33
+ export function isMessagesPermissionScope(scope) {
34
+ return scope.interface === DwnInterfaceName.Messages;
35
+ }
36
+ export class AgentDwnApi {
37
+ constructor({ agent, dwn }) {
38
+ // If an agent is provided, set it as the execution context for this API.
39
+ this._agent = agent;
40
+ // Set the DWN instance for this API.
41
+ this._dwn = dwn;
42
+ }
43
+ /**
44
+ * Retrieves the `Web5PlatformAgent` execution context.
45
+ *
46
+ * @returns The `Web5PlatformAgent` instance that represents the current execution context.
47
+ * @throws Will throw an error if the `agent` instance property is undefined.
48
+ */
49
+ get agent() {
50
+ if (this._agent === undefined) {
51
+ throw new Error('AgentDwnApi: Unable to determine agent execution context.');
52
+ }
53
+ return this._agent;
54
+ }
55
+ set agent(agent) {
56
+ this._agent = agent;
57
+ }
58
+ /**
59
+ * Public getter for the DWN instance used by this API.
60
+ *
61
+ * Notes:
62
+ * - This getter is public to allow advanced developers to access the DWN instance directly.
63
+ * However, it is recommended to use the `processRequest` method to interact with the DWN
64
+ * instance to ensure that the DWN message is constructed correctly.
65
+ * - The getter is named `node` to avoid confusion with the `dwn` property of the
66
+ * `Web5PlatformAgent`. In other words, so that a developer can call `agent.dwn.node` to access
67
+ * the DWN instance and not `agent.dwn.dwn`.
68
+ */
69
+ get node() {
70
+ return this._dwn;
71
+ }
72
+ static createDwn({ dataPath, dataStore, didResolver, eventLog, eventStream, messageStore, tenantGate, resumableTaskStore }) {
73
+ return __awaiter(this, void 0, void 0, function* () {
74
+ dataStore !== null && dataStore !== void 0 ? dataStore : (dataStore = new DataStoreLevel({ blockstoreLocation: `${dataPath}/DWN_DATASTORE` }));
75
+ didResolver !== null && didResolver !== void 0 ? didResolver : (didResolver = new UniversalResolver({
76
+ didResolvers: [DidDht, DidJwk],
77
+ cache: new DidResolverCacheLevel({ location: `${dataPath}/DID_RESOLVERCACHE` }),
78
+ }));
79
+ eventLog !== null && eventLog !== void 0 ? eventLog : (eventLog = new EventLogLevel({ location: `${dataPath}/DWN_EVENTLOG` }));
80
+ messageStore !== null && messageStore !== void 0 ? messageStore : (messageStore = new MessageStoreLevel(({
81
+ blockstoreLocation: `${dataPath}/DWN_MESSAGESTORE`,
82
+ indexLocation: `${dataPath}/DWN_MESSAGEINDEX`
83
+ })));
84
+ resumableTaskStore !== null && resumableTaskStore !== void 0 ? resumableTaskStore : (resumableTaskStore = new ResumableTaskStoreLevel({ location: `${dataPath}/DWN_RESUMABLETASKSTORE` }));
85
+ eventStream !== null && eventStream !== void 0 ? eventStream : (eventStream = new EventEmitterStream());
86
+ return yield Dwn.create({ dataStore, didResolver, eventLog, eventStream, messageStore, tenantGate, resumableTaskStore });
87
+ });
88
+ }
89
+ processRequest(request) {
90
+ return __awaiter(this, void 0, void 0, function* () {
91
+ // Constructs a DWN message. and if there is a data payload, transforms the data to a Node
92
+ // Readable stream.
93
+ const { message, dataStream } = yield this.constructDwnMessage({ request });
94
+ // Extracts the optional subscription handler from the request to pass into `processMessage.
95
+ const { subscriptionHandler } = request;
96
+ // Conditionally processes the message with the DWN instance:
97
+ // - If `store` is not explicitly set to false, it sends the message to the DWN node for
98
+ // processing, passing along the target DID, the message, and any associated data stream.
99
+ // - If `store` is set to false, it immediately returns a simulated 'accepted' status without
100
+ // storing the message/data in the DWN node.
101
+ const reply = (request.store !== false)
102
+ ? yield this._dwn.processMessage(request.target, message, { dataStream: dataStream, subscriptionHandler })
103
+ : { status: { code: 202, detail: 'Accepted' } };
104
+ // Returns an object containing the reply from processing the message, the original message,
105
+ // and the content identifier (CID) of the message.
106
+ return {
107
+ reply,
108
+ message,
109
+ messageCid: yield Message.getCid(message),
110
+ };
111
+ });
112
+ }
113
+ sendRequest(request) {
114
+ return __awaiter(this, void 0, void 0, function* () {
115
+ // First, confirm the target DID can be dereferenced and extract the DWN service endpoint URLs.
116
+ const dwnEndpointUrls = yield getDwnServiceEndpointUrls(request.target, this.agent.did);
117
+ if (dwnEndpointUrls.length === 0) {
118
+ throw new Error(`AgentDwnApi: DID Service is missing or malformed: ${request.target}#dwn`);
119
+ }
120
+ let messageCid;
121
+ let message;
122
+ let data;
123
+ let subscriptionHandler;
124
+ // If `messageCid` is given, retrieve message and data, if any.
125
+ if ('messageCid' in request) {
126
+ ({ message, data } = yield this.getDwnMessage({
127
+ author: request.author,
128
+ messageCid: request.messageCid,
129
+ messageType: request.messageType
130
+ }));
131
+ messageCid = request.messageCid;
132
+ }
133
+ else {
134
+ // Otherwise, construct a new message.
135
+ ({ message } = yield this.constructDwnMessage({ request }));
136
+ if (request.dataStream && !(request.dataStream instanceof Blob)) {
137
+ throw new Error('AgentDwnApi: DataStream must be provided as a Blob');
138
+ }
139
+ data = request.dataStream;
140
+ subscriptionHandler = request.subscriptionHandler;
141
+ }
142
+ // Send the RPC request to the target DID's DWN service endpoint using the Agent's RPC client.
143
+ const reply = yield this.sendDwnRpcRequest({
144
+ targetDid: request.target,
145
+ dwnEndpointUrls,
146
+ message,
147
+ data,
148
+ subscriptionHandler
149
+ });
150
+ // If the message CID was not given in the `request`, compute it.
151
+ messageCid !== null && messageCid !== void 0 ? messageCid : (messageCid = yield Message.getCid(message));
152
+ // Returns an object containing the reply from processing the message, the original message,
153
+ // and the content identifier (CID) of the message.
154
+ return { reply, message, messageCid };
155
+ });
156
+ }
157
+ sendDwnRpcRequest({ targetDid, dwnEndpointUrls, message, data, subscriptionHandler }) {
158
+ return __awaiter(this, void 0, void 0, function* () {
159
+ const errorMessages = [];
160
+ if (message.descriptor.method === DwnMethodName.Subscribe && subscriptionHandler === undefined) {
161
+ throw new Error('AgentDwnApi: Subscription handler is required for subscription requests.');
162
+ }
163
+ // Try sending to author's publicly addressable DWNs until the first request succeeds.
164
+ for (let dwnUrl of dwnEndpointUrls) {
165
+ try {
166
+ if (subscriptionHandler !== undefined) {
167
+ // we get the server info to check if the server supports WebSocket for subscription requests
168
+ const serverInfo = yield this.agent.rpc.getServerInfo(dwnUrl);
169
+ if (!serverInfo.webSocketSupport) {
170
+ // If the server does not support WebSocket, add an error message and continue to the next URL.
171
+ errorMessages.push({
172
+ url: dwnUrl,
173
+ message: 'WebSocket support is not enabled on the server.'
174
+ });
175
+ continue;
176
+ }
177
+ // If the server supports WebSocket, replace the subscription URL with a socket transport.
178
+ // For `http` we use the unsecured `ws` protocol, and for `https` we use the secured `wss` protocol.
179
+ const parsedUrl = new URL(dwnUrl);
180
+ parsedUrl.protocol = parsedUrl.protocol === 'http:' ? 'ws:' : 'wss:';
181
+ dwnUrl = parsedUrl.toString();
182
+ }
183
+ const dwnReply = yield this.agent.rpc.sendDwnRequest({
184
+ dwnUrl,
185
+ targetDid,
186
+ message,
187
+ data,
188
+ subscriptionHandler
189
+ });
190
+ return dwnReply;
191
+ }
192
+ catch (error) {
193
+ errorMessages.push({
194
+ url: dwnUrl,
195
+ message: (error instanceof Error) ? error.message : 'Unknown error',
196
+ });
197
+ }
198
+ }
199
+ throw new Error(`Failed to send DWN RPC request: ${JSON.stringify(errorMessages)}`);
200
+ });
201
+ }
202
+ constructDwnMessage({ request }) {
203
+ var _a;
204
+ return __awaiter(this, void 0, void 0, function* () {
205
+ // if the request has a granteeDid, ensure the messageParams include the proper grant parameters
206
+ if (request.granteeDid && !this.hasGrantParams(request.messageParams)) {
207
+ throw new Error('AgentDwnApi: Requested to sign with a permission but no grant messageParams were provided in the request');
208
+ }
209
+ const rawMessage = request.rawMessage;
210
+ let readableStream;
211
+ // TODO: Consider refactoring to move data transformations imposed by fetch() limitations to the HTTP transport-related methods.
212
+ // if the request is a RecordsWrite message, we need to handle the data stream and update the messageParams accordingly
213
+ if (isDwnRequest(request, DwnInterface.RecordsWrite)) {
214
+ const messageParams = request.messageParams;
215
+ if (request.dataStream && !(messageParams === null || messageParams === void 0 ? void 0 : messageParams.data)) {
216
+ const { dataStream } = request;
217
+ let isomorphicNodeReadable;
218
+ if (dataStream instanceof Blob) {
219
+ isomorphicNodeReadable = blobToIsomorphicNodeReadable(dataStream);
220
+ readableStream = blobToIsomorphicNodeReadable(dataStream);
221
+ }
222
+ else if (dataStream instanceof ReadableStream) {
223
+ const [forCid, forProcessMessage] = dataStream.tee();
224
+ isomorphicNodeReadable = webReadableToIsomorphicNodeReadable(forCid);
225
+ readableStream = webReadableToIsomorphicNodeReadable(forProcessMessage);
226
+ }
227
+ if (!rawMessage) {
228
+ // @ts-ignore
229
+ messageParams.dataCid = yield Cid.computeDagPbCidFromStream(isomorphicNodeReadable);
230
+ // @ts-ignore
231
+ (_a = messageParams.dataSize) !== null && _a !== void 0 ? _a : (messageParams.dataSize = isomorphicNodeReadable['bytesRead']);
232
+ }
233
+ }
234
+ }
235
+ let dwnMessage;
236
+ const dwnMessageConstructor = dwnMessageConstructors[request.messageType];
237
+ // if there is no raw message provided, we need to create the dwn message
238
+ if (!rawMessage) {
239
+ // If we need to sign as an author delegate or with permissions we need to get the grantee's signer
240
+ // The messageParams should include either a permissionGrantId, or a delegatedGrant message
241
+ const signer = request.granteeDid ?
242
+ yield this.getSigner(request.granteeDid) :
243
+ yield this.getSigner(request.author);
244
+ dwnMessage = yield dwnMessageConstructor.create(Object.assign(Object.assign({}, request.messageParams), { signer }));
245
+ }
246
+ else {
247
+ dwnMessage = yield dwnMessageConstructor.parse(rawMessage);
248
+ if (isRecordsWrite(dwnMessage) && request.signAsOwner) {
249
+ // if we are signing as owner, we use the author's signer
250
+ const signer = yield this.getSigner(request.author);
251
+ yield dwnMessage.signAsOwner(signer);
252
+ }
253
+ else if (request.granteeDid && isRecordsWrite(dwnMessage) && request.signAsOwnerDelegate) {
254
+ // if we are signing as owner delegate, we use the grantee's signer and the provided delegated grant
255
+ const signer = yield this.getSigner(request.granteeDid);
256
+ //if we have reached here, the presence of the grant params has already been checked
257
+ const messageParams = request.messageParams;
258
+ yield dwnMessage.signAsOwnerDelegate(signer, messageParams.delegatedGrant);
259
+ }
260
+ }
261
+ return { message: dwnMessage.message, dataStream: readableStream };
262
+ });
263
+ }
264
+ hasGrantParams(params) {
265
+ return params !== undefined &&
266
+ (('permissionGrantId' in params && params.permissionGrantId !== undefined) ||
267
+ ('delegatedGrant' in params && params.delegatedGrant !== undefined));
268
+ }
269
+ getSigner(author) {
270
+ return __awaiter(this, void 0, void 0, function* () {
271
+ // If the author is the Agent's DID, use the Agent's signer.
272
+ if (author === this.agent.agentDid.uri) {
273
+ const signer = yield this.agent.agentDid.getSigner();
274
+ return {
275
+ algorithm: signer.algorithm,
276
+ keyId: signer.keyId,
277
+ sign: (data) => __awaiter(this, void 0, void 0, function* () {
278
+ return yield signer.sign({ data });
279
+ })
280
+ };
281
+ }
282
+ else {
283
+ // Otherwise, use the author's DID to determine the signing method.
284
+ try {
285
+ const signingMethod = yield this.agent.did.getSigningMethod({ didUri: author });
286
+ if (!signingMethod.publicKeyJwk) {
287
+ throw new Error(`Verification method '${signingMethod.id}' does not contain a public key in JWK format`);
288
+ }
289
+ // Compute the key URI of the verification method's public key.
290
+ const keyUri = yield this.agent.keyManager.getKeyUri({ key: signingMethod.publicKeyJwk });
291
+ // Verify that the key is present in the key manager. If not, an error is thrown.
292
+ const publicKey = yield this.agent.keyManager.getPublicKey({ keyUri });
293
+ // Bind the Agent's Key Manager to the signer.
294
+ const keyManager = this.agent.keyManager;
295
+ return {
296
+ algorithm: CryptoUtils.getJoseSignatureAlgorithmFromPublicKey(publicKey),
297
+ keyId: signingMethod.id,
298
+ sign: (data) => __awaiter(this, void 0, void 0, function* () {
299
+ return yield keyManager.sign({ data, keyUri: keyUri });
300
+ })
301
+ };
302
+ }
303
+ catch (error) {
304
+ throw new Error(`AgentDwnApi: Unable to get signer for author '${author}': ${error.message}`);
305
+ }
306
+ }
307
+ });
308
+ }
309
+ /**
310
+ * FURTHER REFACTORING NEEDED BELOW THIS LINE
311
+ */
312
+ getDwnMessage({ author, messageCid }) {
313
+ return __awaiter(this, void 0, void 0, function* () {
314
+ const signer = yield this.getSigner(author);
315
+ // Construct a MessagesRead message to fetch the message.
316
+ const messagesRead = yield dwnMessageConstructors[DwnInterface.MessagesRead].create({
317
+ messageCid: messageCid,
318
+ signer
319
+ });
320
+ const result = yield this._dwn.processMessage(author, messagesRead.message);
321
+ if (result.status.code !== 200) {
322
+ throw new Error(`AgentDwnApi: Failed to read message, response status: ${result.status.code} - ${result.status.detail}`);
323
+ }
324
+ const messageEntry = result.entry;
325
+ const message = messageEntry.message;
326
+ let dwnMessageWithBlob = { message };
327
+ // If the message is a RecordsWrite, data will be present in the form of a stream
328
+ if (isRecordsWrite(messageEntry) && messageEntry.data) {
329
+ const dataBytes = yield NodeStream.consumeToBytes({ readable: messageEntry.data });
330
+ dwnMessageWithBlob.data = new Blob([dataBytes], { type: messageEntry.message.descriptor.dataFormat });
331
+ }
332
+ return dwnMessageWithBlob;
333
+ });
334
+ }
335
+ }
336
+ //# sourceMappingURL=dwn-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dwn-api.js","sourceRoot":"","sources":["../../src/dwn-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { Sha256, CryptoUtils } from '@enbox/crypto';
11
+ import { concatenateUrl } from './utils.js';
12
+ import { Convert } from '@enbox/common';
13
+ /**
14
+ * A client for registering tenants with a DWN.
15
+ */
16
+ export class DwnRegistrar {
17
+ /**
18
+ * Registers a new tenant with the given DWN.
19
+ * NOTE: Assumes the user has already accepted the terms of service.
20
+ * NOTE: Currently the DWN Server from `dwn-server` does not require user signature.
21
+ * TODO: bring in types from `dwn-server`.
22
+ */
23
+ static registerTenant(dwnEndpoint, did) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ const registrationEndpoint = concatenateUrl(dwnEndpoint, 'registration');
26
+ const termsOfUseEndpoint = concatenateUrl(registrationEndpoint, 'terms-of-service');
27
+ const proofOfWorkEndpoint = concatenateUrl(registrationEndpoint, 'proof-of-work');
28
+ // fetch the terms-of-service
29
+ const termsOfServiceGetResponse = yield fetch(termsOfUseEndpoint, {
30
+ method: 'GET',
31
+ });
32
+ if (termsOfServiceGetResponse.status !== 200) {
33
+ const statusCode = termsOfServiceGetResponse.status;
34
+ const statusText = termsOfServiceGetResponse.statusText;
35
+ const errorText = yield termsOfServiceGetResponse.text();
36
+ throw new Error(`Failed fetching terms-of-service: ${statusCode} ${statusText}: ${errorText}`);
37
+ }
38
+ const termsOfServiceFetched = yield termsOfServiceGetResponse.text();
39
+ // fetch the proof-of-work challenge
40
+ const proofOfWorkChallengeGetResponse = yield fetch(proofOfWorkEndpoint, {
41
+ method: 'GET',
42
+ });
43
+ const { challengeNonce, maximumAllowedHashValue } = yield proofOfWorkChallengeGetResponse.json();
44
+ // create registration data based on the hash of the terms-of-service and the DID
45
+ const registrationData = {
46
+ did,
47
+ termsOfServiceHash: yield DwnRegistrar.hashAsHexString(termsOfServiceFetched),
48
+ };
49
+ // compute the proof-of-work response nonce based on the the proof-of-work challenge and the registration data.
50
+ const responseNonce = yield DwnRegistrar.findQualifiedResponseNonce({
51
+ challengeNonce,
52
+ maximumAllowedHashValue,
53
+ requestData: JSON.stringify(registrationData),
54
+ });
55
+ // send the registration request to the server
56
+ const registrationRequest = {
57
+ registrationData,
58
+ proofOfWork: {
59
+ challengeNonce,
60
+ responseNonce,
61
+ },
62
+ };
63
+ const registrationResponse = yield fetch(registrationEndpoint, {
64
+ method: 'POST',
65
+ headers: { 'Content-Type': 'application/json' },
66
+ body: JSON.stringify(registrationRequest),
67
+ });
68
+ if (registrationResponse.status !== 200) {
69
+ const statusCode = registrationResponse.status;
70
+ const statusText = registrationResponse.statusText;
71
+ const errorText = yield registrationResponse.text();
72
+ throw new Error(`Registration failed: ${statusCode} ${statusText}: ${errorText}`);
73
+ }
74
+ });
75
+ }
76
+ /**
77
+ * Computes the SHA-256 hash of the given array of strings.
78
+ */
79
+ static hashAsHexString(input) {
80
+ return __awaiter(this, void 0, void 0, function* () {
81
+ const hashAsBytes = yield Sha256.digest({ data: Convert.string(input).toUint8Array() });
82
+ const hashAsHex = Convert.uint8Array(hashAsBytes).toHex();
83
+ return hashAsHex;
84
+ });
85
+ }
86
+ /**
87
+ * Finds a response nonce that qualifies the difficulty requirement for the given proof-of-work challenge and request data.
88
+ */
89
+ static findQualifiedResponseNonce(input) {
90
+ return __awaiter(this, void 0, void 0, function* () {
91
+ const startTime = Date.now();
92
+ const { maximumAllowedHashValue, challengeNonce, requestData } = input;
93
+ const maximumAllowedHashValueAsBigInt = BigInt(`0x${maximumAllowedHashValue}`);
94
+ let iterations = 1;
95
+ let responseNonce;
96
+ let qualifiedSolutionNonceFound = false;
97
+ do {
98
+ responseNonce = yield this.generateNonce();
99
+ const computedHash = yield DwnRegistrar.hashAsHexString(challengeNonce + responseNonce + requestData);
100
+ const computedHashAsBigInt = BigInt(`0x${computedHash}`);
101
+ qualifiedSolutionNonceFound = computedHashAsBigInt <= maximumAllowedHashValueAsBigInt;
102
+ iterations++;
103
+ } while (!qualifiedSolutionNonceFound);
104
+ // Log final/successful iteration.
105
+ console.log(`iterations: ${iterations}, time lapsed: ${Date.now() - startTime} ms`);
106
+ return responseNonce;
107
+ });
108
+ }
109
+ /**
110
+ * Generates 32 random bytes expressed as a HEX string.
111
+ */
112
+ static generateNonce() {
113
+ return __awaiter(this, void 0, void 0, function* () {
114
+ const randomBytes = CryptoUtils.randomBytes(32);
115
+ const hexString = Convert.uint8Array(randomBytes).toHex().toUpperCase();
116
+ return hexString;
117
+ });
118
+ }
119
+ }
120
+ //# sourceMappingURL=dwn-registrar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dwn-registrar.js","sourceRoot":"","sources":["../../src/dwn-registrar.ts"],"names":[],"mappings":"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"}