@docknetwork/wallet-sdk-wasm 1.7.7-alpha.0 → 1.9.0

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 (327) hide show
  1. package/package.json +7 -20
  2. package/rollup.config.mjs +1 -0
  3. package/src/globals.d.ts +4 -1
  4. package/src/services/blockchain/cached-did-resolver.ts +4 -3
  5. package/src/services/blockchain/normalize-did-document.ts +73 -0
  6. package/src/services/blockchain/service.ts +0 -2
  7. package/src/services/credential/bbs-revocation.test.js +147 -0
  8. package/src/services/credential/bbs-revocation.ts +65 -18
  9. package/src/services/credential/config.ts +7 -0
  10. package/src/services/credential/index.test.js +261 -17
  11. package/src/services/credential/oid4vci.js +44 -0
  12. package/src/services/credential/oid4vci.test.js +162 -0
  13. package/src/services/credential/pex-helpers.js +77 -31
  14. package/src/services/credential/pex-helpers.test.js +4 -4
  15. package/src/services/credential/sd-jwt.ts +41 -5
  16. package/src/services/credential/service-rpc.js +6 -0
  17. package/src/services/credential/service.ts +171 -16
  18. package/src/services/credential/utils.js +3 -5
  19. package/src/services/delegation/index.android.js +3 -0
  20. package/src/services/delegation/index.ios.js +3 -0
  21. package/src/services/delegation/index.ts +1 -0
  22. package/src/services/delegation/service-rpc.ts +21 -0
  23. package/src/services/delegation/service.ts +59 -0
  24. package/src/services/edv/service-rpc.js +18 -2
  25. package/src/services/edv/service.test.js +327 -0
  26. package/src/services/edv/service.ts +103 -13
  27. package/src/services/index.js +2 -0
  28. package/src/wallet/rpc-storage-interface.js +9 -4
  29. package/lib/core/crypto.js +0 -45
  30. package/lib/core/crypto.mjs +0 -33
  31. package/lib/core/format-utils.js +0 -51
  32. package/lib/core/format-utils.mjs +0 -42
  33. package/lib/core/keychain.js +0 -61
  34. package/lib/core/keychain.mjs +0 -37
  35. package/lib/core/logger.js +0 -13
  36. package/lib/core/logger.mjs +0 -9
  37. package/lib/core/storage.js +0 -14
  38. package/lib/core/storage.mjs +0 -9
  39. package/lib/core/validation.js +0 -29
  40. package/lib/core/validation.mjs +0 -16
  41. package/lib/core/webview-logger.js +0 -49
  42. package/lib/core/webview-logger.mjs +0 -41
  43. package/lib/errors.js +0 -17
  44. package/lib/errors.mjs +0 -12
  45. package/lib/events.js +0 -18
  46. package/lib/events.mjs +0 -13
  47. package/lib/index.js +0 -146
  48. package/lib/index.mjs +0 -144
  49. package/lib/logger.js +0 -22
  50. package/lib/logger.mjs +0 -17
  51. package/lib/modules/event-manager.js +0 -46
  52. package/lib/modules/event-manager.mjs +0 -37
  53. package/lib/modules/network-manager.js +0 -80
  54. package/lib/modules/network-manager.mjs +0 -71
  55. package/lib/mrklt.js +0 -2
  56. package/lib/mrklt.mjs +0 -1
  57. package/lib/rpc-client.js +0 -83
  58. package/lib/rpc-client.mjs +0 -73
  59. package/lib/rpc-server.js +0 -97
  60. package/lib/rpc-server.mjs +0 -95
  61. package/lib/rpc-util.js +0 -113
  62. package/lib/rpc-util.mjs +0 -103
  63. package/lib/sandbox-rpc-server.js +0 -28
  64. package/lib/sandbox-rpc-server.mjs +0 -26
  65. package/lib/sandbox.js +0 -102
  66. package/lib/sandbox.mjs +0 -100
  67. package/lib/services/blockchain/cached-did-resolver.js +0 -113
  68. package/lib/services/blockchain/cached-did-resolver.mjs +0 -109
  69. package/lib/services/blockchain/configs.js +0 -7
  70. package/lib/services/blockchain/configs.mjs +0 -3
  71. package/lib/services/blockchain/index.android.js +0 -18
  72. package/lib/services/blockchain/index.android.mjs +0 -14
  73. package/lib/services/blockchain/index.ios.js +0 -18
  74. package/lib/services/blockchain/index.ios.mjs +0 -14
  75. package/lib/services/blockchain/index.js +0 -36
  76. package/lib/services/blockchain/index.mjs +0 -28
  77. package/lib/services/blockchain/service-rpc.js +0 -72
  78. package/lib/services/blockchain/service-rpc.mjs +0 -68
  79. package/lib/services/blockchain/service.js +0 -312
  80. package/lib/services/blockchain/service.mjs +0 -306
  81. package/lib/services/credential/bbs-revocation.js +0 -92
  82. package/lib/services/credential/bbs-revocation.mjs +0 -87
  83. package/lib/services/credential/bound-check.js +0 -77
  84. package/lib/services/credential/bound-check.mjs +0 -64
  85. package/lib/services/credential/config.js +0 -56
  86. package/lib/services/credential/config.mjs +0 -47
  87. package/lib/services/credential/delegatable-credentials.js +0 -300
  88. package/lib/services/credential/delegatable-credentials.mjs +0 -263
  89. package/lib/services/credential/index.android.js +0 -19
  90. package/lib/services/credential/index.android.mjs +0 -15
  91. package/lib/services/credential/index.ios.js +0 -19
  92. package/lib/services/credential/index.ios.mjs +0 -15
  93. package/lib/services/credential/index.js +0 -106
  94. package/lib/services/credential/index.mjs +0 -67
  95. package/lib/services/credential/pex-helpers.js +0 -333
  96. package/lib/services/credential/pex-helpers.mjs +0 -319
  97. package/lib/services/credential/range-proofs-example.js +0 -107
  98. package/lib/services/credential/range-proofs-example.mjs +0 -103
  99. package/lib/services/credential/sd-jwt.js +0 -214
  100. package/lib/services/credential/sd-jwt.mjs +0 -200
  101. package/lib/services/credential/service-rpc.js +0 -61
  102. package/lib/services/credential/service-rpc.mjs +0 -57
  103. package/lib/services/credential/service.js +0 -683
  104. package/lib/services/credential/service.mjs +0 -672
  105. package/lib/services/credential/utils.js +0 -103
  106. package/lib/services/credential/utils.mjs +0 -78
  107. package/lib/services/dids/config.js +0 -40
  108. package/lib/services/dids/config.mjs +0 -31
  109. package/lib/services/dids/index.android.js +0 -19
  110. package/lib/services/dids/index.android.mjs +0 -15
  111. package/lib/services/dids/index.ios.js +0 -19
  112. package/lib/services/dids/index.ios.mjs +0 -15
  113. package/lib/services/dids/index.js +0 -23
  114. package/lib/services/dids/index.mjs +0 -19
  115. package/lib/services/dids/keypair-utils.js +0 -142
  116. package/lib/services/dids/keypair-utils.mjs +0 -113
  117. package/lib/services/dids/service-rpc.js +0 -37
  118. package/lib/services/dids/service-rpc.mjs +0 -33
  119. package/lib/services/dids/service.js +0 -100
  120. package/lib/services/dids/service.mjs +0 -92
  121. package/lib/services/edv/configs.js +0 -25
  122. package/lib/services/edv/configs.mjs +0 -16
  123. package/lib/services/edv/hmac.js +0 -88
  124. package/lib/services/edv/hmac.mjs +0 -63
  125. package/lib/services/edv/index.android.js +0 -19
  126. package/lib/services/edv/index.android.mjs +0 -15
  127. package/lib/services/edv/index.ios.js +0 -19
  128. package/lib/services/edv/index.ios.mjs +0 -15
  129. package/lib/services/edv/index.js +0 -32
  130. package/lib/services/edv/index.mjs +0 -24
  131. package/lib/services/edv/service-rpc.js +0 -78
  132. package/lib/services/edv/service-rpc.mjs +0 -74
  133. package/lib/services/edv/service.js +0 -370
  134. package/lib/services/edv/service.mjs +0 -357
  135. package/lib/services/index.js +0 -94
  136. package/lib/services/index.mjs +0 -92
  137. package/lib/services/pex/config.js +0 -29
  138. package/lib/services/pex/config.mjs +0 -20
  139. package/lib/services/pex/index.android.js +0 -19
  140. package/lib/services/pex/index.android.mjs +0 -15
  141. package/lib/services/pex/index.ios.js +0 -19
  142. package/lib/services/pex/index.ios.mjs +0 -15
  143. package/lib/services/pex/index.js +0 -12
  144. package/lib/services/pex/index.mjs +0 -4
  145. package/lib/services/pex/service-rpc.js +0 -39
  146. package/lib/services/pex/service-rpc.mjs +0 -35
  147. package/lib/services/pex/service.js +0 -91
  148. package/lib/services/pex/service.mjs +0 -86
  149. package/lib/services/pex/tests/jest.config.js +0 -25
  150. package/lib/services/pex/tests/jest.config.mjs +0 -23
  151. package/lib/services/relay-service/configs.js +0 -45
  152. package/lib/services/relay-service/configs.mjs +0 -36
  153. package/lib/services/relay-service/index.android.js +0 -21
  154. package/lib/services/relay-service/index.android.mjs +0 -17
  155. package/lib/services/relay-service/index.ios.js +0 -21
  156. package/lib/services/relay-service/index.ios.mjs +0 -17
  157. package/lib/services/relay-service/index.js +0 -14
  158. package/lib/services/relay-service/index.mjs +0 -6
  159. package/lib/services/relay-service/service-rpc.js +0 -47
  160. package/lib/services/relay-service/service-rpc.mjs +0 -43
  161. package/lib/services/relay-service/service.js +0 -181
  162. package/lib/services/relay-service/service.mjs +0 -173
  163. package/lib/services/rpc-service-client.js +0 -36
  164. package/lib/services/rpc-service-client.mjs +0 -28
  165. package/lib/services/sandbox.js +0 -10
  166. package/lib/services/sandbox.mjs +0 -8
  167. package/lib/services/storage/configs.js +0 -7
  168. package/lib/services/storage/configs.mjs +0 -3
  169. package/lib/services/storage/index.android.js +0 -18
  170. package/lib/services/storage/index.android.mjs +0 -14
  171. package/lib/services/storage/index.ios.js +0 -18
  172. package/lib/services/storage/index.ios.mjs +0 -14
  173. package/lib/services/storage/index.js +0 -26
  174. package/lib/services/storage/index.mjs +0 -24
  175. package/lib/services/storage/service-rpc.js +0 -37
  176. package/lib/services/storage/service-rpc.mjs +0 -33
  177. package/lib/services/storage/service.js +0 -32
  178. package/lib/services/storage/service.mjs +0 -27
  179. package/lib/services/test-utils.js +0 -98
  180. package/lib/services/test-utils.mjs +0 -84
  181. package/lib/services/util-crypto/configs.js +0 -23
  182. package/lib/services/util-crypto/configs.mjs +0 -15
  183. package/lib/services/util-crypto/index.android.js +0 -19
  184. package/lib/services/util-crypto/index.android.mjs +0 -15
  185. package/lib/services/util-crypto/index.ios.js +0 -19
  186. package/lib/services/util-crypto/index.ios.mjs +0 -15
  187. package/lib/services/util-crypto/index.js +0 -14
  188. package/lib/services/util-crypto/index.mjs +0 -6
  189. package/lib/services/util-crypto/service-rpc.js +0 -42
  190. package/lib/services/util-crypto/service-rpc.mjs +0 -38
  191. package/lib/services/util-crypto/service.js +0 -108
  192. package/lib/services/util-crypto/service.mjs +0 -83
  193. package/lib/services/wallet/configs.js +0 -32
  194. package/lib/services/wallet/configs.mjs +0 -23
  195. package/lib/services/wallet/index.android.js +0 -21
  196. package/lib/services/wallet/index.android.mjs +0 -17
  197. package/lib/services/wallet/index.ios.js +0 -21
  198. package/lib/services/wallet/index.ios.mjs +0 -17
  199. package/lib/services/wallet/index.js +0 -17
  200. package/lib/services/wallet/index.mjs +0 -9
  201. package/lib/services/wallet/service-rpc.js +0 -33
  202. package/lib/services/wallet/service-rpc.mjs +0 -29
  203. package/lib/services/wallet/service.js +0 -62
  204. package/lib/services/wallet/service.mjs +0 -57
  205. package/lib/setup-nodejs.js +0 -93
  206. package/lib/setup-nodejs.mjs +0 -91
  207. package/lib/setup-tests.js +0 -92
  208. package/lib/setup-tests.mjs +0 -90
  209. package/lib/src/core/crypto.d.ts +0 -8
  210. package/lib/src/core/crypto.d.ts.map +0 -1
  211. package/lib/src/core/format-utils.d.ts +0 -26
  212. package/lib/src/core/format-utils.d.ts.map +0 -1
  213. package/lib/src/core/logger.d.ts +0 -3
  214. package/lib/src/core/logger.d.ts.map +0 -1
  215. package/lib/src/core/storage.d.ts +0 -8
  216. package/lib/src/core/storage.d.ts.map +0 -1
  217. package/lib/src/core/validation.d.ts +0 -6
  218. package/lib/src/core/validation.d.ts.map +0 -1
  219. package/lib/src/errors.d.ts +0 -7
  220. package/lib/src/errors.d.ts.map +0 -1
  221. package/lib/src/logger.d.ts +0 -5
  222. package/lib/src/logger.d.ts.map +0 -1
  223. package/lib/src/modules/event-manager.d.ts +0 -12
  224. package/lib/src/modules/event-manager.d.ts.map +0 -1
  225. package/lib/src/modules/network-manager.d.ts +0 -32
  226. package/lib/src/modules/network-manager.d.ts.map +0 -1
  227. package/lib/src/rpc-client.d.ts +0 -4
  228. package/lib/src/rpc-client.d.ts.map +0 -1
  229. package/lib/src/rpc-util.d.ts +0 -11
  230. package/lib/src/rpc-util.d.ts.map +0 -1
  231. package/lib/src/services/blockchain/cached-did-resolver.d.ts +0 -28
  232. package/lib/src/services/blockchain/cached-did-resolver.d.ts.map +0 -1
  233. package/lib/src/services/blockchain/cached-did-resolver.test.d.ts +0 -2
  234. package/lib/src/services/blockchain/cached-did-resolver.test.d.ts.map +0 -1
  235. package/lib/src/services/blockchain/configs.d.ts +0 -7
  236. package/lib/src/services/blockchain/configs.d.ts.map +0 -1
  237. package/lib/src/services/blockchain/service.d.ts +0 -155
  238. package/lib/src/services/blockchain/service.d.ts.map +0 -1
  239. package/lib/src/services/credential/bbs-revocation.d.ts +0 -10
  240. package/lib/src/services/credential/bbs-revocation.d.ts.map +0 -1
  241. package/lib/src/services/credential/bound-check.d.ts +0 -61
  242. package/lib/src/services/credential/bound-check.d.ts.map +0 -1
  243. package/lib/src/services/credential/bound-check.test.d.ts +0 -2
  244. package/lib/src/services/credential/bound-check.test.d.ts.map +0 -1
  245. package/lib/src/services/credential/config.d.ts +0 -10
  246. package/lib/src/services/credential/config.d.ts.map +0 -1
  247. package/lib/src/services/credential/delegatable-credentials.d.ts +0 -272
  248. package/lib/src/services/credential/delegatable-credentials.d.ts.map +0 -1
  249. package/lib/src/services/credential/index.d.ts +0 -35
  250. package/lib/src/services/credential/index.d.ts.map +0 -1
  251. package/lib/src/services/credential/pex-helpers.d.ts +0 -23
  252. package/lib/src/services/credential/pex-helpers.d.ts.map +0 -1
  253. package/lib/src/services/credential/range-proofs-example.d.ts +0 -2
  254. package/lib/src/services/credential/range-proofs-example.d.ts.map +0 -1
  255. package/lib/src/services/credential/sd-jwt.test.d.ts +0 -2
  256. package/lib/src/services/credential/sd-jwt.test.d.ts.map +0 -1
  257. package/lib/src/services/credential/service.d.ts +0 -313
  258. package/lib/src/services/credential/service.d.ts.map +0 -1
  259. package/lib/src/services/credential/utils.d.ts +0 -3
  260. package/lib/src/services/credential/utils.d.ts.map +0 -1
  261. package/lib/src/services/dids/config.d.ts +0 -24
  262. package/lib/src/services/dids/config.d.ts.map +0 -1
  263. package/lib/src/services/dids/keypair-utils.d.ts +0 -15
  264. package/lib/src/services/dids/keypair-utils.d.ts.map +0 -1
  265. package/lib/src/services/dids/service-rpc.d.ts +0 -11
  266. package/lib/src/services/dids/service-rpc.d.ts.map +0 -1
  267. package/lib/src/services/dids/service.d.ts +0 -70
  268. package/lib/src/services/dids/service.d.ts.map +0 -1
  269. package/lib/src/services/edv/configs.d.ts +0 -12
  270. package/lib/src/services/edv/configs.d.ts.map +0 -1
  271. package/lib/src/services/edv/hmac.d.ts +0 -29
  272. package/lib/src/services/edv/hmac.d.ts.map +0 -1
  273. package/lib/src/services/edv/service.d.ts +0 -229
  274. package/lib/src/services/edv/service.d.ts.map +0 -1
  275. package/lib/src/services/pex/config.d.ts +0 -21
  276. package/lib/src/services/pex/config.d.ts.map +0 -1
  277. package/lib/src/services/pex/service.d.ts +0 -21
  278. package/lib/src/services/pex/service.d.ts.map +0 -1
  279. package/lib/src/services/relay-service/configs.d.ts +0 -35
  280. package/lib/src/services/relay-service/configs.d.ts.map +0 -1
  281. package/lib/src/services/relay-service/service-rpc.d.ts +0 -12
  282. package/lib/src/services/relay-service/service-rpc.d.ts.map +0 -1
  283. package/lib/src/services/relay-service/service.d.ts +0 -159
  284. package/lib/src/services/relay-service/service.d.ts.map +0 -1
  285. package/lib/src/services/rpc-service-client.d.ts +0 -7
  286. package/lib/src/services/rpc-service-client.d.ts.map +0 -1
  287. package/lib/src/services/storage/configs.d.ts +0 -2
  288. package/lib/src/services/storage/configs.d.ts.map +0 -1
  289. package/lib/src/services/storage/index.d.ts +0 -2
  290. package/lib/src/services/storage/index.d.ts.map +0 -1
  291. package/lib/src/services/storage/service-rpc.d.ts +0 -9
  292. package/lib/src/services/storage/service-rpc.d.ts.map +0 -1
  293. package/lib/src/services/storage/service.d.ts +0 -10
  294. package/lib/src/services/storage/service.d.ts.map +0 -1
  295. package/lib/src/services/util-crypto/configs.d.ts +0 -5
  296. package/lib/src/services/util-crypto/configs.d.ts.map +0 -1
  297. package/lib/src/services/util-crypto/index.d.ts +0 -2
  298. package/lib/src/services/util-crypto/index.d.ts.map +0 -1
  299. package/lib/src/services/util-crypto/service.d.ts +0 -10
  300. package/lib/src/services/util-crypto/service.d.ts.map +0 -1
  301. package/lib/src/services/wallet/configs.d.ts +0 -13
  302. package/lib/src/services/wallet/configs.d.ts.map +0 -1
  303. package/lib/src/services/wallet/service.d.ts +0 -13
  304. package/lib/src/services/wallet/service.d.ts.map +0 -1
  305. package/lib/src/types.d.ts +0 -12
  306. package/lib/src/types.d.ts.map +0 -1
  307. package/lib/src/wallet/memory-storage-interface.d.ts +0 -31
  308. package/lib/src/wallet/memory-storage-interface.d.ts.map +0 -1
  309. package/lib/src/wallet/memory-storage-wallet.d.ts +0 -6
  310. package/lib/src/wallet/memory-storage-wallet.d.ts.map +0 -1
  311. package/lib/src/wallet/rpc-storage-interface.d.ts +0 -32
  312. package/lib/src/wallet/rpc-storage-interface.d.ts.map +0 -1
  313. package/lib/src/wallet/rpc-storage-wallet.d.ts +0 -6
  314. package/lib/src/wallet/rpc-storage-wallet.d.ts.map +0 -1
  315. package/lib/test-utils.js +0 -46
  316. package/lib/test-utils.mjs +0 -38
  317. package/lib/tsconfig.tsbuildinfo +0 -1
  318. package/lib/types.js +0 -7
  319. package/lib/types.mjs +0 -3
  320. package/lib/wallet/memory-storage-interface.js +0 -101
  321. package/lib/wallet/memory-storage-interface.mjs +0 -95
  322. package/lib/wallet/memory-storage-wallet.js +0 -30
  323. package/lib/wallet/memory-storage-wallet.mjs +0 -24
  324. package/lib/wallet/rpc-storage-interface.js +0 -134
  325. package/lib/wallet/rpc-storage-interface.mjs +0 -128
  326. package/lib/wallet/rpc-storage-wallet.js +0 -46
  327. package/lib/wallet/rpc-storage-wallet.mjs +0 -40
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@docknetwork/wallet-sdk-wasm",
3
- "version": "1.7.7-alpha.0",
3
+ "version": "1.9.0",
4
4
  "license": "https://github.com/docknetwork/wallet-sdk/LICENSE",
5
5
  "repository": {
6
6
  "type": "git",
@@ -8,7 +8,6 @@
8
8
  "directory": "packages/wasm"
9
9
  },
10
10
  "scripts": {
11
- "prepublishOnly": "npm run build",
12
11
  "build:babel": "rm -rf lib && NODE_ENV=production babel src/ --out-dir lib --copy-files",
13
12
  "build": "rm -rf lib && rollup -c && node ../../scripts/fix-build-imports.js ./lib",
14
13
  "docs": "node generate-docs.js",
@@ -21,12 +20,12 @@
21
20
  "@astronautlabs/jsonpath": "^1.1.2",
22
21
  "@cedar-policy/cedar-wasm": "^4.5.0",
23
22
  "@cosmjs/proto-signing": "^0.32.4",
24
- "@docknetwork/cheqd-blockchain-api": "4.1.1",
25
- "@docknetwork/cheqd-blockchain-modules": "4.0.8",
26
- "@docknetwork/credential-sdk": "0.54.16",
23
+ "@docknetwork/cheqd-blockchain-api": "4.2.2",
24
+ "@docknetwork/cheqd-blockchain-modules": "4.0.9",
25
+ "@docknetwork/credential-sdk": "0.54.19",
27
26
  "@docknetwork/universal-wallet": "^2.0.1",
28
- "@docknetwork/vc-delegation-engine": "1.0.3",
29
- "@docknetwork/wallet-sdk-dids": "^1.7.7-alpha.0",
27
+ "@docknetwork/vc-delegation-engine": "1.0.4",
28
+ "@docknetwork/wallet-sdk-dids": "^1.9.0",
30
29
  "@noble/hashes": "1.8.0",
31
30
  "@scure/bip39": "^1.6.0",
32
31
  "@sd-jwt/crypto-nodejs": "^0.15.0",
@@ -53,19 +52,7 @@
53
52
  "typescript": "^5.0.4"
54
53
  },
55
54
  "overrides": {
56
- "@digitalbazaar/minimal-cipher": "5.1.1",
57
- "@digitalbazaar/did-io": "2.1.0",
58
- "@digitalbazaar/did-method-key": "3.0.0",
59
- "@digitalbazaar/ed25519-verification-key-2018": "4.0.0",
60
- "@digitalbazaar/ed25519-verification-key-2020": "4.1.0",
61
- "@digitalbazaar/edv-client": "16.3.0",
62
- "@digitalbazaar/http-client": "4.3.0",
63
- "@digitalbazaar/http-digest-header": "2.3.0",
64
- "@digitalbazaar/http-signature-zcap-invoke": "6.1.0",
65
- "@digitalbazaar/lru-memoize": "4.0.0",
66
- "@digitalbazaar/security-document-loader": "3.2.0",
67
- "@digitalbazaar/x25519-key-agreement-key-2019": "6.0.0",
68
- "@digitalbazaar/x25519-key-agreement-key-2020": "3.0.1",
55
+ "@digitalbazaar/http-client": "^3.4.1",
69
56
  "base58-universal": "2.0.0"
70
57
  }
71
58
  }
package/rollup.config.mjs CHANGED
@@ -20,6 +20,7 @@ export default async function () {
20
20
  typescript(),
21
21
  ],
22
22
  input: ['src/**/*.ts', 'src/**/*.js', '!src/**/*.test.ts', '!src/**/*.test.js', '!src/**/*.d.ts'],
23
+ external: ['assert'],
23
24
  output: [
24
25
  {
25
26
  dir: 'lib',
package/src/globals.d.ts CHANGED
@@ -1,3 +1,6 @@
1
1
  // CryptoKey is available globally in Node.js 15+ but TypeScript needs
2
2
  // the DOM lib to recognize it. Declare it here to avoid pulling in all DOM types.
3
- type CryptoKey = import('crypto').webcrypto.CryptoKey;
3
+ declare global {
4
+ type CryptoKey = import('crypto').webcrypto.CryptoKey;
5
+ }
6
+ export {};
@@ -1,4 +1,5 @@
1
1
  import { storageService } from '../storage';
2
+ import { normalizeDIDDocument } from './normalize-did-document';
2
3
 
3
4
  interface CacheEntry {
4
5
  value: any;
@@ -76,7 +77,7 @@ export class CachedDIDResolver {
76
77
  }
77
78
 
78
79
  console.log('Cache miss, resolving:', did);
79
- const result = await this.router.resolve(did);
80
+ const result = normalizeDIDDocument(await this.router.resolve(did));
80
81
 
81
82
  await this.setCacheEntry(result.id, {
82
83
  value: result,
@@ -90,8 +91,8 @@ export class CachedDIDResolver {
90
91
  private async refreshInBackground(did: string): Promise<void> {
91
92
  try {
92
93
  console.log('Refreshing cache in background for:', did);
93
- const result = await this.router.resolve(did);
94
-
94
+ const result = normalizeDIDDocument(await this.router.resolve(did));
95
+
95
96
  await this.setCacheEntry(did, {
96
97
  value: result,
97
98
  id: did,
@@ -0,0 +1,73 @@
1
+ // The universal resolver returns cheqd offchain (BBS+) keys as stringified
2
+ // blobs in the relationship arrays instead of objects in verificationMethod,
3
+ // leaving publicKeyBase58 unreachable. Lift them out, matching the on-chain
4
+ // resolver's CheqdDIDDocument.toDIDDocument behaviour.
5
+
6
+ const RELATIONSHIP_PROPS = [
7
+ 'assertionMethod',
8
+ 'authentication',
9
+ 'capabilityInvocation',
10
+ 'capabilityDelegation',
11
+ 'keyAgreement',
12
+ ] as const;
13
+
14
+ function parseInlineVerificationMethod(entry: string): any | null {
15
+ let parsed: unknown = entry;
16
+
17
+ // cheqd offchain keys are double-JSON-stringified, so unwrap up to twice.
18
+ for (let i = 0; i < 2 && typeof parsed === 'string'; i++) {
19
+ try {
20
+ parsed = JSON.parse(parsed);
21
+ } catch {
22
+ return null;
23
+ }
24
+ }
25
+
26
+ if (parsed && typeof parsed === 'object' && typeof (parsed as any).id === 'string') {
27
+ return parsed;
28
+ }
29
+
30
+ return null;
31
+ }
32
+
33
+ export function normalizeDIDDocument(doc: any): any {
34
+ if (!doc || typeof doc !== 'object') {
35
+ return doc;
36
+ }
37
+
38
+ const liftedMethods: any[] = [];
39
+
40
+ for (const prop of RELATIONSHIP_PROPS) {
41
+ if (!Array.isArray(doc[prop])) {
42
+ continue;
43
+ }
44
+
45
+ doc[prop] = doc[prop].map((entry: any) => {
46
+ if (typeof entry !== 'string') {
47
+ return entry;
48
+ }
49
+
50
+ const method = parseInlineVerificationMethod(entry);
51
+ if (!method) {
52
+ return entry;
53
+ }
54
+
55
+ liftedMethods.push(method);
56
+ return method.id;
57
+ });
58
+ }
59
+
60
+ if (liftedMethods.length) {
61
+ const existing = Array.isArray(doc.verificationMethod)
62
+ ? doc.verificationMethod
63
+ : [];
64
+ const existingIds = new Set(existing.map((method: any) => method?.id));
65
+ const newMethods = liftedMethods.filter(
66
+ method => !existingIds.has(method.id),
67
+ );
68
+
69
+ doc.verificationMethod = [...existing, ...newMethods];
70
+ }
71
+
72
+ return doc;
73
+ }
@@ -236,11 +236,9 @@ export class BlockchainService {
236
236
  });
237
237
  Logger.info(`Cheqd initialized at: ${checkdApiUrl}`);
238
238
  } catch (err) {
239
- debugger
240
239
  Logger.error(`Failed to initialize cheqd at: ${checkdApiUrl}`, err);
241
240
  }
242
241
 
243
-
244
242
  // Re-create the resolver with the new blockchain connection
245
243
  this._resolver = this.createDIDResolver(true);
246
244
 
@@ -0,0 +1,147 @@
1
+ import {initializeWasm} from '@docknetwork/crypto-wasm-ts/lib/index';
2
+
3
+ const {blockchainService} = require('../blockchain/service');
4
+ const {
5
+ getWitnessDetails,
6
+ clearWitnessCache,
7
+ getWitnessCacheTTL,
8
+ setWitnessCacheTTL,
9
+ } = require('./bbs-revocation');
10
+
11
+ const mockAccumulatorResult = {
12
+ accumulated: {bytes: new Uint8Array([1, 2, 3])},
13
+ keyRef: ['key1', 1],
14
+ lastModified: 100,
15
+ };
16
+
17
+ const mockPublicKeyResult = {
18
+ bytes: new Uint8Array([4, 5, 6]),
19
+ };
20
+
21
+ const mockHistoryResult = {
22
+ updates: [{id: {toString: () => '1'}}],
23
+ };
24
+
25
+ const createCredential = (statusId = 'dock:accumulator:test-registry-1') => ({
26
+ credentialStatus: {
27
+ id: statusId,
28
+ revocationId: '42',
29
+ },
30
+ });
31
+
32
+ const membershipWitness = JSON.stringify({
33
+ witness: '0xaabbcc',
34
+ blockNo: '1',
35
+ });
36
+
37
+ describe('bbs-revocation witness cache', () => {
38
+ let originalModules;
39
+ let originalGetTypes;
40
+
41
+ beforeAll(async () => {
42
+ await initializeWasm();
43
+ originalModules = blockchainService.modules;
44
+ originalGetTypes = blockchainService.getTypesForDIDOrAccumulator;
45
+ });
46
+
47
+ afterAll(() => {
48
+ blockchainService.modules = originalModules;
49
+ blockchainService.getTypesForDIDOrAccumulator = originalGetTypes;
50
+ });
51
+
52
+ beforeEach(() => {
53
+ clearWitnessCache();
54
+ setWitnessCacheTTL(120_000); // Enable cache for unit tests
55
+
56
+ blockchainService.modules = {
57
+ accumulator: {
58
+ getAccumulator: jest.fn().mockResolvedValue(mockAccumulatorResult),
59
+ getPublicKey: jest.fn().mockResolvedValue(mockPublicKeyResult),
60
+ accumulatorHistory: jest.fn().mockResolvedValue(mockHistoryResult),
61
+ },
62
+ };
63
+
64
+ blockchainService.getTypesForDIDOrAccumulator = jest.fn().mockReturnValue({
65
+ AccumulatorId: {from: jest.fn().mockReturnValue('acc-id')},
66
+ });
67
+ });
68
+
69
+ it('should call blockchain on first request', async () => {
70
+ const credential = createCredential();
71
+ await getWitnessDetails(credential, membershipWitness);
72
+
73
+ expect(
74
+ blockchainService.modules.accumulator.getAccumulator,
75
+ ).toHaveBeenCalledTimes(1);
76
+ expect(
77
+ blockchainService.modules.accumulator.getPublicKey,
78
+ ).toHaveBeenCalledTimes(1);
79
+ });
80
+
81
+ it('should return cached result on second call with same credential', async () => {
82
+ const credential = createCredential();
83
+
84
+ const result1 = await getWitnessDetails(credential, membershipWitness);
85
+ const result2 = await getWitnessDetails(credential, membershipWitness);
86
+
87
+ expect(result1).toEqual(result2);
88
+ expect(
89
+ blockchainService.modules.accumulator.getAccumulator,
90
+ ).toHaveBeenCalledTimes(1);
91
+ expect(
92
+ blockchainService.modules.accumulator.getPublicKey,
93
+ ).toHaveBeenCalledTimes(1);
94
+ });
95
+
96
+ it('should not share cache between different credentials', async () => {
97
+ const credential1 = createCredential('dock:accumulator:registry-1');
98
+ const credential2 = createCredential('dock:accumulator:registry-2');
99
+
100
+ await getWitnessDetails(credential1, membershipWitness);
101
+ await getWitnessDetails(credential2, membershipWitness);
102
+
103
+ expect(
104
+ blockchainService.modules.accumulator.getAccumulator,
105
+ ).toHaveBeenCalledTimes(2);
106
+ });
107
+
108
+ it('should refresh cache after TTL expires', async () => {
109
+ const credential = createCredential();
110
+ const originalTTL = getWitnessCacheTTL();
111
+
112
+ await getWitnessDetails(credential, membershipWitness);
113
+
114
+ setWitnessCacheTTL(0); // expire immediately
115
+
116
+ await getWitnessDetails(credential, membershipWitness);
117
+
118
+ expect(
119
+ blockchainService.modules.accumulator.getAccumulator,
120
+ ).toHaveBeenCalledTimes(2);
121
+
122
+ setWitnessCacheTTL(originalTTL);
123
+ });
124
+
125
+ it('should clear cache when clearWitnessCache is called', async () => {
126
+ const credential = createCredential();
127
+
128
+ await getWitnessDetails(credential, membershipWitness);
129
+ clearWitnessCache();
130
+ await getWitnessDetails(credential, membershipWitness);
131
+
132
+ expect(
133
+ blockchainService.modules.accumulator.getAccumulator,
134
+ ).toHaveBeenCalledTimes(2);
135
+ });
136
+
137
+ it('should bypass cache when credential has no credentialStatus.id', async () => {
138
+ const credential = {credentialStatus: {id: undefined, revocationId: '42'}};
139
+
140
+ await getWitnessDetails(credential, membershipWitness);
141
+ await getWitnessDetails(credential, membershipWitness);
142
+
143
+ expect(
144
+ blockchainService.modules.accumulator.getAccumulator,
145
+ ).toHaveBeenCalledTimes(2);
146
+ });
147
+ });
@@ -22,7 +22,14 @@ const trimHexID = id => {
22
22
  return id.substr(2);
23
23
  };
24
24
 
25
- export const getWitnessDetails = async (credential, _membershipWitness) => {
25
+ const blockchainCache = new Map<string, {data: any; timestamp: number}>();
26
+ let WITNESS_CACHE_TTL = 0; // Disabled — accumulator can change between cache time and verification
27
+
28
+ export const getWitnessCacheTTL = () => WITNESS_CACHE_TTL;
29
+ export const setWitnessCacheTTL = (ms: number) => { WITNESS_CACHE_TTL = ms; };
30
+ export const clearWitnessCache = () => blockchainCache.clear();
31
+
32
+ async function fetchBlockchainData(credential, _membershipWitness) {
26
33
  let witness = _membershipWitness;
27
34
  let blockNo;
28
35
 
@@ -34,7 +41,6 @@ export const getWitnessDetails = async (credential, _membershipWitness) => {
34
41
 
35
42
  const {credentialStatus} = credential;
36
43
  const registryId = credentialStatus?.id;
37
- const revocationIndex = credentialStatus.revocationId;
38
44
 
39
45
  const queriedAccumulator =
40
46
  await blockchainService.modules.accumulator.getAccumulator(
@@ -46,22 +52,12 @@ export const getWitnessDetails = async (credential, _membershipWitness) => {
46
52
  throw new Error('Accumulator not found');
47
53
  }
48
54
 
49
- const accumulator = PositiveAccumulator.fromAccumulated(
50
- queriedAccumulator.accumulated.bytes,
51
- );
52
-
53
- const encodedRevId = Encoder.defaultEncodeFunc()(revocationIndex.toString());
54
-
55
55
  const publicKey = await blockchainService.modules.accumulator.getPublicKey(
56
56
  queriedAccumulator.keyRef[0],
57
57
  queriedAccumulator.keyRef[1],
58
58
  );
59
59
 
60
- const params = dockAccumulatorParams();
61
- const pk = new AccumulatorPublicKey(publicKey.bytes);
62
-
63
- const membershipWitness = new VBMembershipWitness(hexToU8a(witness));
64
-
60
+ let updatedWitness = witness;
65
61
  try {
66
62
  const credentialStatusId = credential.credentialStatus.id;
67
63
  const accumulatorId = blockchainService
@@ -80,6 +76,10 @@ export const getWitnessDetails = async (credential, _membershipWitness) => {
80
76
  const nextBlockNo = history.updates[blockNoIndex + 1]?.id?.toString();
81
77
 
82
78
  if (nextBlockNo) {
79
+ const revocationIndex = credentialStatus.revocationId;
80
+ const encodedRevId = Encoder.defaultEncodeFunc()(revocationIndex.toString());
81
+ const membershipWitness = new VBMembershipWitness(hexToU8a(witness));
82
+
83
83
  await blockchainService.modules.accumulator.updateWitness(
84
84
  registryId,
85
85
  encodedRevId,
@@ -87,20 +87,67 @@ export const getWitnessDetails = async (credential, _membershipWitness) => {
87
87
  nextBlockNo,
88
88
  queriedAccumulator.lastModified,
89
89
  );
90
+ updatedWitness = witness;
90
91
  }
91
92
  } catch (err) {
92
93
  console.error(err);
93
94
  }
94
95
 
95
96
  return {
96
- encodedRevId,
97
- membershipWitness,
98
- pk,
99
- params,
100
- accumulator,
97
+ accumulatedBytes: queriedAccumulator.accumulated.bytes,
98
+ publicKeyBytes: publicKey.bytes,
99
+ witness: updatedWitness,
100
+ };
101
+ }
102
+
103
+ export const getWitnessDetails = async (credential, _membershipWitness) => {
104
+ const cacheKey = credential?.credentialStatus?.id;
105
+ let rawData;
106
+
107
+ if (cacheKey) {
108
+ const cached = blockchainCache.get(cacheKey);
109
+ if (cached) {
110
+ if (Date.now() - cached.timestamp < WITNESS_CACHE_TTL) {
111
+ rawData = cached.data;
112
+ } else {
113
+ blockchainCache.delete(cacheKey);
114
+ }
115
+ }
116
+ }
117
+
118
+ if (!rawData) {
119
+ rawData = await fetchBlockchainData(credential, _membershipWitness);
120
+ if (cacheKey) {
121
+ blockchainCache.set(cacheKey, {data: rawData, timestamp: Date.now()});
122
+ }
123
+ }
124
+
125
+ const {credentialStatus} = credential;
126
+ const revocationIndex = credentialStatus.revocationId;
127
+
128
+ return {
129
+ encodedRevId: Encoder.defaultEncodeFunc()(revocationIndex.toString()),
130
+ membershipWitness: new VBMembershipWitness(hexToU8a(rawData.witness)),
131
+ pk: new AccumulatorPublicKey(rawData.publicKeyBytes),
132
+ params: dockAccumulatorParams(),
133
+ accumulator: PositiveAccumulator.fromAccumulated(rawData.accumulatedBytes),
101
134
  };
102
135
  };
103
136
 
137
+ export const prefetchWitnessCache = async (credential, _membershipWitness) => {
138
+ const cacheKey = credential?.credentialStatus?.id;
139
+ if (!cacheKey || !_membershipWitness) {
140
+ return;
141
+ }
142
+
143
+ try {
144
+ const rawData = await fetchBlockchainData(credential, _membershipWitness);
145
+ blockchainCache.set(cacheKey, {data: rawData, timestamp: Date.now()});
146
+ } catch (err) {
147
+ console.warn('Failed to prefetch witness cache:', err.message);
148
+ }
149
+ };
150
+
104
151
  export const getIsRevoked = async (credential, _membershipWitness) => {
105
152
  const {encodedRevId, membershipWitness, pk, params, accumulator} =
106
153
  await getWitnessDetails(credential, _membershipWitness);
@@ -40,6 +40,13 @@ export const validation = {
40
40
  'publicKeyBase58 is not present',
41
41
  );
42
42
  },
43
+ generatePresentationFromPex: params => {
44
+ const {credentials, pexRequest, challenge} = params;
45
+ assert(Array.isArray(credentials), 'invalid credentials');
46
+ assert(credentials.length > 0, 'no credential found');
47
+ assert(pexRequest, 'pexRequest is required');
48
+ assert(challenge, 'challenge is required');
49
+ },
43
50
  createPresentation: params => {
44
51
  const {credentials, keyDoc, challenge, id} = params;
45
52
  assert(typeof id === 'string', 'invalid id');