@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,324 @@
1
+ import type { RequireOnly } from '@enbox/common';
2
+
3
+ import type { AgentDataStore } from './store-data.js';
4
+ import type { Web5PlatformAgent } from './types/agent.js';
5
+ import type { DidMethodCreateOptions } from './did-api.js';
6
+ import type { AgentKeyManager } from './types/key-manager.js';
7
+ import type { IdentityMetadata, PortableIdentity } from './types/identity.js';
8
+
9
+ import { BearerIdentity } from './bearer-identity.js';
10
+ import { isPortableDid } from './prototyping/dids/utils.js';
11
+ import { InMemoryIdentityStore } from './store-identity.js';
12
+ import { getDwnServiceEndpointUrls } from './utils.js';
13
+ import { PortableDid } from '@enbox/dids';
14
+
15
+ export interface IdentityApiParams<TKeyManager extends AgentKeyManager> {
16
+ agent?: Web5PlatformAgent<TKeyManager>;
17
+
18
+ store?: AgentDataStore<IdentityMetadata>;
19
+ }
20
+
21
+ export interface IdentityCreateParams<
22
+ TKeyManager = AgentKeyManager,
23
+ TMethod extends keyof DidMethodCreateOptions<TKeyManager> = keyof DidMethodCreateOptions<TKeyManager>
24
+ > {
25
+ metadata: RequireOnly<IdentityMetadata, 'name'>;
26
+ didMethod?: TMethod;
27
+ didOptions?: DidMethodCreateOptions<TKeyManager>[TMethod];
28
+ store?: boolean;
29
+ }
30
+
31
+ export function isPortableIdentity(obj: unknown): obj is PortableIdentity {
32
+ // Validate that the given value is an object that has the necessary properties of PortableIdentity.
33
+ return !(!obj || typeof obj !== 'object' || obj === null)
34
+ && 'did' in obj
35
+ && 'metadata' in obj
36
+ && isPortableDid(obj.did);
37
+ }
38
+
39
+ /**
40
+ * This API is used to manage and interact with Identities within the Web5 Agent framework.
41
+ * An Identity is a DID that is associated with metadata that describes the Identity.
42
+ * Metadata includes A name(label), and whether or not the Identity is connected (delegated to act on the behalf of another DID).
43
+ *
44
+ * A KeyManager is used to manage the cryptographic keys associated with the Identities.
45
+ *
46
+ * The `DidApi` is used internally to create, store, and manage DIDs.
47
+ * When a DWN Data Store is used, the Identity and DID information are stored under the Agent DID's tenant.
48
+ */
49
+ export class AgentIdentityApi<TKeyManager extends AgentKeyManager = AgentKeyManager> {
50
+ /**
51
+ * Holds the instance of a `Web5PlatformAgent` that represents the current execution context for
52
+ * the `AgentIdentityApi`. This agent is used to interact with other Web5 agent components. It's
53
+ * vital to ensure this instance is set to correctly contextualize operations within the broader
54
+ * Web5 Agent framework.
55
+ */
56
+ private _agent?: Web5PlatformAgent<TKeyManager>;
57
+
58
+ private _store: AgentDataStore<IdentityMetadata>;
59
+
60
+ constructor({ agent, store }: IdentityApiParams<TKeyManager> = {}) {
61
+ this._agent = agent;
62
+
63
+ // If `store` is not given, use an in-memory store by default.
64
+ this._store = store ?? new InMemoryIdentityStore();
65
+ }
66
+
67
+ /**
68
+ * Retrieves the `Web5PlatformAgent` execution context.
69
+ *
70
+ * @returns The `Web5PlatformAgent` instance that represents the current execution context.
71
+ * @throws Will throw an error if the `agent` instance property is undefined.
72
+ */
73
+ get agent(): Web5PlatformAgent<TKeyManager> {
74
+ if (this._agent === undefined) {
75
+ throw new Error('AgentIdentityApi: Unable to determine agent execution context.');
76
+ }
77
+
78
+ return this._agent;
79
+ }
80
+
81
+ set agent(agent: Web5PlatformAgent<TKeyManager>) {
82
+ this._agent = agent;
83
+ }
84
+
85
+ get tenant(): string {
86
+ if (!this._agent) {
87
+ throw new Error('AgentIdentityApi: The agent must be set to perform tenant specific actions.');
88
+ }
89
+
90
+ return this._agent.agentDid.uri;
91
+ }
92
+
93
+ public async create({ metadata, didMethod = 'dht', didOptions, store }:
94
+ IdentityCreateParams<TKeyManager>
95
+ ): Promise<BearerIdentity> {
96
+
97
+ const bearerDid = await this.agent.did.create({
98
+ method : didMethod,
99
+ options : didOptions,
100
+ tenant : this.tenant,
101
+ store,
102
+ });
103
+
104
+ // Create the BearerIdentity object.
105
+ const identity = new BearerIdentity({
106
+ did : bearerDid,
107
+ metadata : { ...metadata, uri: bearerDid.uri, tenant: this.tenant }
108
+ });
109
+
110
+ // Persist the Identity to the store, by default, unless the `store` option is set to false.
111
+ if (store ?? true) {
112
+ await this._store.set({
113
+ id : identity.did.uri,
114
+ data : identity.metadata,
115
+ agent : this.agent,
116
+ tenant : identity.metadata.tenant,
117
+ preventDuplicates : false,
118
+ useCache : true
119
+ });
120
+ }
121
+
122
+ return identity;
123
+ }
124
+
125
+ public async export({ didUri }: {
126
+ didUri: string;
127
+ }): Promise<PortableIdentity> {
128
+ const bearerIdentity = await this.get({ didUri });
129
+
130
+ if (!bearerIdentity) {
131
+ throw new Error(`AgentIdentityApi: Failed to export due to Identity not found: ${didUri}`);
132
+ }
133
+
134
+ // If the Identity was found, return the Identity in a portable format, and if supported by the
135
+ // Agent's key manager, the private key material.
136
+ const portableIdentity = await bearerIdentity.export();
137
+
138
+ return portableIdentity;
139
+ }
140
+
141
+ public async get({ didUri }: {
142
+ didUri: string;
143
+ }): Promise<BearerIdentity | undefined> {
144
+ const storedIdentity = await this._store.get({ id: didUri, agent: this.agent, useCache: true });
145
+
146
+ // If the Identity is not found in the store, return undefined.
147
+ if (!storedIdentity) return undefined;
148
+
149
+ // Retrieve the DID from the Agent's DID store using the tenant value from the stored
150
+ // Identity's metadata.
151
+ const storedDid = await this.agent.did.get({ didUri, tenant: storedIdentity.tenant });
152
+
153
+ // If the Identity is present but the DID is not found, throw an error.
154
+ if (!storedDid) {
155
+ throw new Error(`AgentIdentityApi: Identity is present in the store but DID is missing: ${didUri}`);
156
+ }
157
+
158
+ // Create the BearerIdentity object.
159
+ const identity = new BearerIdentity({ did: storedDid, metadata: storedIdentity });
160
+
161
+ return identity;
162
+ }
163
+
164
+ public async import({ portableIdentity }: {
165
+ portableIdentity: PortableIdentity;
166
+ }): Promise<BearerIdentity> {
167
+
168
+ // set the tenant of the portable identity to the agent's tenant
169
+ portableIdentity.metadata.tenant = this.tenant;
170
+
171
+ // Import the PortableDid to the Agent's DID store.
172
+ const storedDid = await this.agent.did.import({
173
+ portableDid : portableIdentity.portableDid,
174
+ tenant : portableIdentity.metadata.tenant
175
+ });
176
+
177
+ // Verify the DID is present in the Agent's DID store.
178
+ if (!storedDid) {
179
+ throw new Error(`AgentIdentityApi: Failed to import Identity: ${portableIdentity.metadata.uri}`);
180
+ }
181
+
182
+ // Create the BearerIdentity object.
183
+ const identity = new BearerIdentity({ did: storedDid, metadata: portableIdentity.metadata });
184
+
185
+ // Store the Identity metadata in the Agent's Identity store.
186
+ await this._store.set({
187
+ id : identity.did.uri,
188
+ data : identity.metadata,
189
+ agent : this.agent,
190
+ tenant : identity.metadata.tenant,
191
+ preventDuplicates : true,
192
+ useCache : true
193
+ });
194
+
195
+ return identity;
196
+ }
197
+
198
+ public async list({ tenant }: {
199
+ tenant?: string;
200
+ } = {}): Promise<BearerIdentity[]> {
201
+ // Retrieve the list of Identities from the Agent's Identity store.
202
+ const storedIdentities = await this._store.list({ agent: this.agent, tenant });
203
+
204
+ const identities = await Promise.all(storedIdentities.map(metadata => this.get({ didUri: metadata.uri })));
205
+
206
+ return identities.filter(identity => typeof identity !== 'undefined') as BearerIdentity[];
207
+ }
208
+
209
+ public async delete({ didUri }:{
210
+ didUri: string;
211
+ }): Promise<void> {
212
+ const storedIdentity = await this._store.get({ id: didUri, agent: this.agent, useCache: true });
213
+ if (!storedIdentity) {
214
+ throw new Error(`AgentIdentityApi: Failed to purge due to Identity not found: ${didUri}`);
215
+ }
216
+
217
+ // Delete the Identity from the Agent's Identity store.
218
+ await this._store.delete({ id: didUri, agent: this.agent });
219
+ }
220
+
221
+ /**
222
+ * Returns the DWN endpoints for the given DID.
223
+ *
224
+ * @param didUri - The DID URI to get the DWN endpoints for.
225
+ * @returns An array of DWN endpoints.
226
+ * @throws An error if the DID is not found, or no DWN service exists.
227
+ */
228
+ public getDwnEndpoints({ didUri }: { didUri: string; }): Promise<string[]> {
229
+ return getDwnServiceEndpointUrls(didUri, this.agent.did);
230
+ }
231
+
232
+ /**
233
+ * Sets the DWN endpoints for the given DID.
234
+ *
235
+ * @param didUri - The DID URI to set the DWN endpoints for.
236
+ * @param endpoints - The array of DWN endpoints to set.
237
+ * @throws An error if the DID is not found, or if an update cannot be performed.
238
+ */
239
+ public async setDwnEndpoints({ didUri, endpoints }: { didUri: string; endpoints: string[] }): Promise<void> {
240
+ const bearerDid = await this.agent.did.get({ didUri });
241
+ if (!bearerDid) {
242
+ throw new Error(`AgentIdentityApi: Failed to set DWN endpoints due to DID not found: ${didUri}`);
243
+ }
244
+
245
+ const portableDid = await bearerDid.export();
246
+ const dwnService = portableDid.document.service?.find(service => service.id.endsWith('dwn'));
247
+ if (dwnService) {
248
+ // Update the existing DWN Service with the provided endpoints
249
+ dwnService.serviceEndpoint = endpoints;
250
+ } else {
251
+
252
+ // create a DWN Service to add to the DID document
253
+ const newDwnService = {
254
+ id : 'dwn',
255
+ type : 'DecentralizedWebNode',
256
+ serviceEndpoint : endpoints,
257
+ enc : '#enc',
258
+ sig : '#sig'
259
+ };
260
+
261
+ // if no other services exist, create a new array with the DWN service
262
+ if (!portableDid.document.service) {
263
+ portableDid.document.service = [newDwnService];
264
+ } else {
265
+ // otherwise, push the new DWN service to the existing services
266
+ portableDid.document.service.push(newDwnService);
267
+ }
268
+ }
269
+
270
+ await this.agent.did.update({ portableDid, tenant: this.agent.agentDid.uri });
271
+ }
272
+
273
+ /**
274
+ * Updates the Identity's metadata name field.
275
+ *
276
+ * @param didUri - The DID URI of the Identity to update.
277
+ * @param name - The new name to set for the Identity.
278
+ *
279
+ * @throws An error if the Identity is not found, name is not provided, or no changes are detected.
280
+ */
281
+ public async setMetadataName({ didUri, name }: { didUri: string; name: string }): Promise<void> {
282
+ if (!name) {
283
+ throw new Error('AgentIdentityApi: Failed to set metadata name due to missing name value.');
284
+ }
285
+
286
+ const identity = await this.get({ didUri });
287
+ if (!identity) {
288
+ throw new Error(`AgentIdentityApi: Failed to set metadata name due to Identity not found: ${didUri}`);
289
+ }
290
+
291
+ if (identity.metadata.name === name) {
292
+ throw new Error('AgentIdentityApi: No changes detected.');
293
+ }
294
+
295
+ // Update the name in the Identity's metadata and store it
296
+ await this._store.set({
297
+ id : identity.did.uri,
298
+ data : { ...identity.metadata, name },
299
+ agent : this.agent,
300
+ tenant : identity.metadata.tenant,
301
+ updateExisting : true,
302
+ useCache : true
303
+ });
304
+ }
305
+
306
+ /**
307
+ * Returns the connected Identity, if one is available.
308
+ *
309
+ * Accepts optional `connectedDid` parameter to filter the a specific connected identity,
310
+ * if none is provided the first connected identity is returned.
311
+ */
312
+ public async connectedIdentity({ connectedDid }:{ connectedDid?: string } = {}): Promise<BearerIdentity | undefined> {
313
+ const identities = await this.list();
314
+ if (identities.length < 1) {
315
+ return undefined;
316
+ }
317
+
318
+ // If a specific connected DID is provided, return the first identity that matches it.
319
+ // Otherwise, return the first connected identity.
320
+ return connectedDid ?
321
+ identities.find(identity => identity.metadata.connectedDid === connectedDid) :
322
+ identities.find(identity => identity.metadata.connectedDid !== undefined);
323
+ }
324
+ }
package/src/index.ts ADDED
@@ -0,0 +1,30 @@
1
+ export type * from './types/agent.js';
2
+ export * from './types/dwn.js';
3
+ export type * from './types/identity.js';
4
+ export type * from './types/identity-vault.js';
5
+ export type * from './types/key-manager.js';
6
+ export type * from './types/permissions.js';
7
+ export type * from './types/sync.js';
8
+ export type * from './types/vc.js';
9
+
10
+ export * from './agent-did-resolver-cache.js';
11
+ export * from './bearer-identity.js';
12
+ export * from './crypto-api.js';
13
+ export * from './did-api.js';
14
+ export * from './dwn-api.js';
15
+ export * from './dwn-registrar.js';
16
+ export * from './hd-identity-vault.js';
17
+ export * from './identity-api.js';
18
+ export * from './local-key-manager.js';
19
+ export * from './permissions-api.js';
20
+ export * from './rpc-client.js';
21
+ export * from './store-data.js';
22
+ export * from './store-did.js';
23
+ export * from './store-identity.js';
24
+ export * from './store-key.js';
25
+ export * from './sync-api.js';
26
+ export * from './sync-engine-level.js';
27
+ export * from './test-harness.js';
28
+ export * from './utils.js';
29
+ export * from './connect.js';
30
+ export * from './oidc.js';