@opendatalabs/vana-sdk 2.2.3 → 3.0.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 (622) hide show
  1. package/README.md +76 -92
  2. package/dist/auth/errors.cjs +54 -0
  3. package/dist/auth/errors.cjs.map +1 -0
  4. package/dist/auth/errors.d.ts +26 -0
  5. package/dist/auth/errors.js +28 -0
  6. package/dist/auth/errors.js.map +1 -0
  7. package/dist/auth/pkce.cjs +100 -0
  8. package/dist/auth/pkce.cjs.map +1 -0
  9. package/dist/auth/pkce.d.ts +55 -0
  10. package/dist/auth/pkce.js +71 -0
  11. package/dist/auth/pkce.js.map +1 -0
  12. package/dist/auth/token-store.cjs +59 -0
  13. package/dist/auth/token-store.cjs.map +1 -0
  14. package/dist/auth/token-store.d.ts +61 -0
  15. package/dist/auth/token-store.js +35 -0
  16. package/dist/auth/token-store.js.map +1 -0
  17. package/dist/auth/web3-signed-builder.cjs +70 -0
  18. package/dist/auth/web3-signed-builder.cjs.map +1 -0
  19. package/dist/auth/web3-signed-builder.d.ts +47 -0
  20. package/dist/auth/web3-signed-builder.js +45 -0
  21. package/dist/auth/web3-signed-builder.js.map +1 -0
  22. package/dist/auth/web3-signed.cjs +125 -0
  23. package/dist/auth/web3-signed.cjs.map +1 -0
  24. package/dist/auth/web3-signed.d.ts +59 -0
  25. package/dist/auth/web3-signed.js +104 -0
  26. package/dist/auth/web3-signed.js.map +1 -0
  27. package/dist/chains/definitions.cjs +2 -6
  28. package/dist/chains/definitions.cjs.map +1 -1
  29. package/dist/chains/definitions.d.ts +1 -7
  30. package/dist/chains/definitions.js +2 -6
  31. package/dist/chains/definitions.js.map +1 -1
  32. package/dist/config/chains.d.ts +18 -0
  33. package/dist/config/contracts.config.cjs +7 -95
  34. package/dist/config/contracts.config.cjs.map +1 -1
  35. package/dist/config/contracts.config.d.ts +0 -54
  36. package/dist/config/contracts.config.js +6 -93
  37. package/dist/config/contracts.config.js.map +1 -1
  38. package/dist/config/default-services.cjs +0 -10
  39. package/dist/config/default-services.cjs.map +1 -1
  40. package/dist/config/default-services.d.ts +1 -20
  41. package/dist/config/default-services.js +0 -9
  42. package/dist/config/default-services.js.map +1 -1
  43. package/dist/crypto/ecies/interface.cjs +2 -0
  44. package/dist/crypto/ecies/interface.cjs.map +1 -1
  45. package/dist/crypto/ecies/interface.js +2 -0
  46. package/dist/crypto/ecies/interface.js.map +1 -1
  47. package/dist/crypto/envelope/openpgp.cjs +59 -0
  48. package/dist/crypto/envelope/openpgp.cjs.map +1 -0
  49. package/dist/crypto/envelope/openpgp.d.ts +28 -0
  50. package/dist/crypto/envelope/openpgp.js +24 -0
  51. package/dist/crypto/envelope/openpgp.js.map +1 -0
  52. package/dist/crypto/keys/derive.cjs +65 -0
  53. package/dist/crypto/keys/derive.cjs.map +1 -0
  54. package/dist/crypto/keys/derive.d.ts +45 -0
  55. package/dist/crypto/keys/derive.js +38 -0
  56. package/dist/crypto/keys/derive.js.map +1 -0
  57. package/dist/errors.cjs +10 -0
  58. package/dist/errors.cjs.map +1 -1
  59. package/dist/errors.js +10 -0
  60. package/dist/errors.js.map +1 -1
  61. package/dist/generated/abi/VanaPoolEntityImplementation.cjs +65 -0
  62. package/dist/generated/abi/VanaPoolEntityImplementation.cjs.map +1 -1
  63. package/dist/generated/abi/VanaPoolEntityImplementation.d.ts +51 -0
  64. package/dist/generated/abi/VanaPoolEntityImplementation.js +65 -0
  65. package/dist/generated/abi/VanaPoolEntityImplementation.js.map +1 -1
  66. package/dist/generated/abi/VanaPoolStakingImplementation.cjs +187 -19
  67. package/dist/generated/abi/VanaPoolStakingImplementation.cjs.map +1 -1
  68. package/dist/generated/abi/VanaPoolStakingImplementation.d.ts +144 -14
  69. package/dist/generated/abi/VanaPoolStakingImplementation.js +187 -19
  70. package/dist/generated/abi/VanaPoolStakingImplementation.js.map +1 -1
  71. package/dist/generated/abi/index.cjs +2 -37
  72. package/dist/generated/abi/index.cjs.map +1 -1
  73. package/dist/generated/abi/index.d.ts +2687 -9119
  74. package/dist/generated/abi/index.js +2 -29
  75. package/dist/generated/abi/index.js.map +1 -1
  76. package/dist/generated/addresses.cjs +5 -107
  77. package/dist/generated/addresses.cjs.map +1 -1
  78. package/dist/generated/addresses.d.ts +5 -99
  79. package/dist/generated/addresses.js +5 -105
  80. package/dist/generated/addresses.js.map +1 -1
  81. package/dist/index.browser.d.ts +23 -138
  82. package/dist/index.browser.js +32090 -112
  83. package/dist/index.browser.js.map +7 -1
  84. package/dist/index.node.cjs +32809 -157
  85. package/dist/index.node.cjs.map +7 -1
  86. package/dist/index.node.d.ts +22 -208
  87. package/dist/index.node.js +32716 -131
  88. package/dist/index.node.js.map +7 -1
  89. package/dist/protocol/data-file.cjs +56 -0
  90. package/dist/protocol/data-file.cjs.map +1 -0
  91. package/dist/protocol/data-file.d.ts +20 -0
  92. package/dist/protocol/data-file.js +30 -0
  93. package/dist/protocol/data-file.js.map +1 -0
  94. package/dist/protocol/eip712.cjs +123 -0
  95. package/dist/protocol/eip712.cjs.map +1 -0
  96. package/dist/protocol/eip712.d.ts +117 -0
  97. package/dist/protocol/eip712.js +90 -0
  98. package/dist/protocol/eip712.js.map +1 -0
  99. package/dist/protocol/gateway.cjs +226 -0
  100. package/dist/protocol/gateway.cjs.map +1 -0
  101. package/dist/protocol/gateway.d.ts +120 -0
  102. package/dist/protocol/gateway.js +202 -0
  103. package/dist/protocol/gateway.js.map +1 -0
  104. package/dist/protocol/scopes.cjs +78 -0
  105. package/dist/protocol/scopes.cjs.map +1 -0
  106. package/dist/protocol/scopes.d.ts +13 -0
  107. package/dist/protocol/scopes.js +50 -0
  108. package/dist/protocol/scopes.js.map +1 -0
  109. package/dist/{types/atomicStore.cjs → storage/default.cjs} +9 -8
  110. package/dist/storage/default.cjs.map +1 -0
  111. package/dist/storage/default.d.ts +4 -0
  112. package/dist/storage/default.js +8 -0
  113. package/dist/storage/default.js.map +1 -0
  114. package/dist/storage/index.cjs +11 -2
  115. package/dist/storage/index.cjs.map +1 -1
  116. package/dist/storage/index.d.ts +9 -0
  117. package/dist/storage/index.js +7 -1
  118. package/dist/storage/index.js.map +1 -1
  119. package/dist/storage/providers/callback-storage.cjs +1 -0
  120. package/dist/storage/providers/callback-storage.cjs.map +1 -1
  121. package/dist/storage/providers/callback-storage.js +1 -0
  122. package/dist/storage/providers/callback-storage.js.map +1 -1
  123. package/dist/storage/providers/dropbox.cjs +1 -0
  124. package/dist/storage/providers/dropbox.cjs.map +1 -1
  125. package/dist/storage/providers/dropbox.js +1 -0
  126. package/dist/storage/providers/dropbox.js.map +1 -1
  127. package/dist/storage/providers/google-drive.cjs +1 -0
  128. package/dist/storage/providers/google-drive.cjs.map +1 -1
  129. package/dist/storage/providers/google-drive.js +1 -0
  130. package/dist/storage/providers/google-drive.js.map +1 -1
  131. package/dist/storage/providers/ipfs.cjs +1 -0
  132. package/dist/storage/providers/ipfs.cjs.map +1 -1
  133. package/dist/storage/providers/ipfs.js +1 -0
  134. package/dist/storage/providers/ipfs.js.map +1 -1
  135. package/dist/storage/providers/pinata.cjs +1 -0
  136. package/dist/storage/providers/pinata.cjs.map +1 -1
  137. package/dist/storage/providers/pinata.js +1 -0
  138. package/dist/storage/providers/pinata.js.map +1 -1
  139. package/dist/storage/providers/r2.cjs +376 -0
  140. package/dist/storage/providers/r2.cjs.map +1 -0
  141. package/dist/storage/providers/r2.d.ts +91 -0
  142. package/dist/storage/providers/r2.js +354 -0
  143. package/dist/storage/providers/r2.js.map +1 -0
  144. package/dist/storage/providers/vana-storage.cjs +251 -0
  145. package/dist/storage/providers/vana-storage.cjs.map +1 -0
  146. package/dist/storage/providers/vana-storage.d.ts +100 -0
  147. package/dist/storage/providers/vana-storage.js +231 -0
  148. package/dist/storage/providers/vana-storage.js.map +1 -0
  149. package/dist/types/config.cjs +0 -34
  150. package/dist/types/config.cjs.map +1 -1
  151. package/dist/types/config.d.ts +1 -607
  152. package/dist/types/config.js +0 -22
  153. package/dist/types/config.js.map +1 -1
  154. package/dist/types/contracts.cjs.map +1 -1
  155. package/dist/types/contracts.d.ts +1 -1
  156. package/dist/types/index.cjs +2 -33
  157. package/dist/types/index.cjs.map +1 -1
  158. package/dist/types/index.d.ts +2 -33
  159. package/dist/types/index.js +1 -35
  160. package/dist/types/index.js.map +1 -1
  161. package/dist/types/ps-errors.cjs +66 -0
  162. package/dist/types/ps-errors.cjs.map +1 -0
  163. package/dist/types/ps-errors.d.ts +25 -0
  164. package/dist/types/ps-errors.js +41 -0
  165. package/dist/types/ps-errors.js.map +1 -0
  166. package/dist/types.cjs.map +1 -1
  167. package/dist/types.d.ts +0 -29
  168. package/dist/types.js.map +1 -1
  169. package/package.json +7 -25
  170. package/dist/client/enhancedResponse.cjs +0 -164
  171. package/dist/client/enhancedResponse.cjs.map +0 -1
  172. package/dist/client/enhancedResponse.d.ts +0 -120
  173. package/dist/client/enhancedResponse.js +0 -138
  174. package/dist/client/enhancedResponse.js.map +0 -1
  175. package/dist/controllers/__tests__/data-consistency-integration.test.d.ts +0 -7
  176. package/dist/controllers/base.cjs +0 -116
  177. package/dist/controllers/base.cjs.map +0 -1
  178. package/dist/controllers/base.d.ts +0 -94
  179. package/dist/controllers/base.js +0 -92
  180. package/dist/controllers/base.js.map +0 -1
  181. package/dist/controllers/data.cjs +0 -2633
  182. package/dist/controllers/data.cjs.map +0 -1
  183. package/dist/controllers/data.d.ts +0 -1067
  184. package/dist/controllers/data.js +0 -2626
  185. package/dist/controllers/data.js.map +0 -1
  186. package/dist/controllers/operations.cjs +0 -430
  187. package/dist/controllers/operations.cjs.map +0 -1
  188. package/dist/controllers/operations.d.ts +0 -229
  189. package/dist/controllers/operations.js +0 -406
  190. package/dist/controllers/operations.js.map +0 -1
  191. package/dist/controllers/permissions.cjs +0 -4368
  192. package/dist/controllers/permissions.cjs.map +0 -1
  193. package/dist/controllers/permissions.d.ts +0 -1411
  194. package/dist/controllers/permissions.js +0 -4344
  195. package/dist/controllers/permissions.js.map +0 -1
  196. package/dist/controllers/protocol.cjs +0 -183
  197. package/dist/controllers/protocol.cjs.map +0 -1
  198. package/dist/controllers/protocol.d.ts +0 -138
  199. package/dist/controllers/protocol.js +0 -163
  200. package/dist/controllers/protocol.js.map +0 -1
  201. package/dist/controllers/schemas.cjs +0 -678
  202. package/dist/controllers/schemas.cjs.map +0 -1
  203. package/dist/controllers/schemas.d.ts +0 -293
  204. package/dist/controllers/schemas.js +0 -654
  205. package/dist/controllers/schemas.js.map +0 -1
  206. package/dist/controllers/server.cjs +0 -643
  207. package/dist/controllers/server.cjs.map +0 -1
  208. package/dist/controllers/server.d.ts +0 -322
  209. package/dist/controllers/server.js +0 -624
  210. package/dist/controllers/server.js.map +0 -1
  211. package/dist/core/__tests__/pollingManager.test.d.ts +0 -4
  212. package/dist/core/apiClient.cjs +0 -378
  213. package/dist/core/apiClient.cjs.map +0 -1
  214. package/dist/core/apiClient.d.ts +0 -286
  215. package/dist/core/apiClient.js +0 -359
  216. package/dist/core/apiClient.js.map +0 -1
  217. package/dist/core/generics.cjs +0 -417
  218. package/dist/core/generics.cjs.map +0 -1
  219. package/dist/core/generics.d.ts +0 -205
  220. package/dist/core/generics.js +0 -386
  221. package/dist/core/generics.js.map +0 -1
  222. package/dist/core/health.cjs +0 -289
  223. package/dist/core/health.cjs.map +0 -1
  224. package/dist/core/health.d.ts +0 -143
  225. package/dist/core/health.js +0 -265
  226. package/dist/core/health.js.map +0 -1
  227. package/dist/core/inMemoryNonceManager.cjs +0 -138
  228. package/dist/core/inMemoryNonceManager.cjs.map +0 -1
  229. package/dist/core/inMemoryNonceManager.d.ts +0 -69
  230. package/dist/core/inMemoryNonceManager.js +0 -114
  231. package/dist/core/inMemoryNonceManager.js.map +0 -1
  232. package/dist/core/nonceManager.cjs +0 -304
  233. package/dist/core/nonceManager.cjs.map +0 -1
  234. package/dist/core/nonceManager.d.ts +0 -116
  235. package/dist/core/nonceManager.js +0 -280
  236. package/dist/core/nonceManager.js.map +0 -1
  237. package/dist/core/pollingManager.cjs +0 -292
  238. package/dist/core/pollingManager.cjs.map +0 -1
  239. package/dist/core/pollingManager.d.ts +0 -120
  240. package/dist/core/pollingManager.js +0 -268
  241. package/dist/core/pollingManager.js.map +0 -1
  242. package/dist/core.cjs +0 -777
  243. package/dist/core.cjs.map +0 -1
  244. package/dist/core.d.ts +0 -493
  245. package/dist/core.js +0 -752
  246. package/dist/core.js.map +0 -1
  247. package/dist/diagnostics.cjs +0 -37
  248. package/dist/diagnostics.cjs.map +0 -1
  249. package/dist/diagnostics.d.ts +0 -24
  250. package/dist/diagnostics.js +0 -13
  251. package/dist/diagnostics.js.map +0 -1
  252. package/dist/diagnostics.test.d.ts +0 -1
  253. package/dist/generated/abi/DLPPerformanceImplementation.cjs +0 -1202
  254. package/dist/generated/abi/DLPPerformanceImplementation.cjs.map +0 -1
  255. package/dist/generated/abi/DLPPerformanceImplementation.d.ts +0 -914
  256. package/dist/generated/abi/DLPPerformanceImplementation.js +0 -1178
  257. package/dist/generated/abi/DLPPerformanceImplementation.js.map +0 -1
  258. package/dist/generated/abi/DLPRewardDeployerImplementation.cjs +0 -1112
  259. package/dist/generated/abi/DLPRewardDeployerImplementation.cjs.map +0 -1
  260. package/dist/generated/abi/DLPRewardDeployerImplementation.d.ts +0 -840
  261. package/dist/generated/abi/DLPRewardDeployerImplementation.js +0 -1088
  262. package/dist/generated/abi/DLPRewardDeployerImplementation.js.map +0 -1
  263. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.cjs +0 -612
  264. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.cjs.map +0 -1
  265. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.d.ts +0 -451
  266. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.js +0 -588
  267. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.js.map +0 -1
  268. package/dist/generated/abi/DLPRewardSwapImplementation.cjs +0 -939
  269. package/dist/generated/abi/DLPRewardSwapImplementation.cjs.map +0 -1
  270. package/dist/generated/abi/DLPRewardSwapImplementation.d.ts +0 -705
  271. package/dist/generated/abi/DLPRewardSwapImplementation.js +0 -915
  272. package/dist/generated/abi/DLPRewardSwapImplementation.js.map +0 -1
  273. package/dist/generated/abi/DLPRootImplementation.cjs +0 -1644
  274. package/dist/generated/abi/DLPRootImplementation.cjs.map +0 -1
  275. package/dist/generated/abi/DLPRootImplementation.d.ts +0 -1246
  276. package/dist/generated/abi/DLPRootImplementation.js +0 -1620
  277. package/dist/generated/abi/DLPRootImplementation.js.map +0 -1
  278. package/dist/generated/abi/DataLiquidityPoolImplementation.cjs +0 -985
  279. package/dist/generated/abi/DataLiquidityPoolImplementation.cjs.map +0 -1
  280. package/dist/generated/abi/DataLiquidityPoolImplementation.d.ts +0 -735
  281. package/dist/generated/abi/DataLiquidityPoolImplementation.js +0 -961
  282. package/dist/generated/abi/DataLiquidityPoolImplementation.js.map +0 -1
  283. package/dist/generated/abi/SwapHelperImplementation.cjs +0 -976
  284. package/dist/generated/abi/SwapHelperImplementation.cjs.map +0 -1
  285. package/dist/generated/abi/SwapHelperImplementation.d.ts +0 -728
  286. package/dist/generated/abi/SwapHelperImplementation.js +0 -952
  287. package/dist/generated/abi/SwapHelperImplementation.js.map +0 -1
  288. package/dist/generated/abi/TeePoolImplementation.cjs +0 -1313
  289. package/dist/generated/abi/TeePoolImplementation.cjs.map +0 -1
  290. package/dist/generated/abi/TeePoolImplementation.d.ts +0 -992
  291. package/dist/generated/abi/TeePoolImplementation.js +0 -1289
  292. package/dist/generated/abi/TeePoolImplementation.js.map +0 -1
  293. package/dist/generated/event-types.cjs +0 -17
  294. package/dist/generated/event-types.cjs.map +0 -1
  295. package/dist/generated/event-types.d.ts +0 -809
  296. package/dist/generated/event-types.js +0 -1
  297. package/dist/generated/event-types.js.map +0 -1
  298. package/dist/generated/eventRegistry.cjs +0 -4470
  299. package/dist/generated/eventRegistry.cjs.map +0 -1
  300. package/dist/generated/eventRegistry.d.ts +0 -14
  301. package/dist/generated/eventRegistry.js +0 -4445
  302. package/dist/generated/eventRegistry.js.map +0 -1
  303. package/dist/generated/server/server-exports.cjs +0 -45
  304. package/dist/generated/server/server-exports.cjs.map +0 -1
  305. package/dist/generated/server/server-exports.d.ts +0 -36
  306. package/dist/generated/server/server-exports.js +0 -19
  307. package/dist/generated/server/server-exports.js.map +0 -1
  308. package/dist/generated/server/server.cjs +0 -17
  309. package/dist/generated/server/server.cjs.map +0 -1
  310. package/dist/generated/server/server.d.ts +0 -907
  311. package/dist/generated/server/server.js +0 -1
  312. package/dist/generated/server/server.js.map +0 -1
  313. package/dist/generated/subgraph.cjs +0 -1440
  314. package/dist/generated/subgraph.cjs.map +0 -1
  315. package/dist/generated/subgraph.d.ts +0 -6113
  316. package/dist/generated/subgraph.js +0 -1404
  317. package/dist/generated/subgraph.js.map +0 -1
  318. package/dist/lib/__tests__/redisAtomicStore.test.d.ts +0 -1
  319. package/dist/lib/redisAtomicStore.cjs +0 -201
  320. package/dist/lib/redisAtomicStore.cjs.map +0 -1
  321. package/dist/lib/redisAtomicStore.d.ts +0 -120
  322. package/dist/lib/redisAtomicStore.js +0 -177
  323. package/dist/lib/redisAtomicStore.js.map +0 -1
  324. package/dist/server/relayerHandler.cjs +0 -452
  325. package/dist/server/relayerHandler.cjs.map +0 -1
  326. package/dist/server/relayerHandler.d.ts +0 -69
  327. package/dist/server/relayerHandler.js +0 -428
  328. package/dist/server/relayerHandler.js.map +0 -1
  329. package/dist/tests/abi.test.d.ts +0 -1
  330. package/dist/tests/chains-definitions.test.d.ts +0 -1
  331. package/dist/tests/core-encryption.test.d.ts +0 -1
  332. package/dist/tests/core-extended.test.d.ts +0 -1
  333. package/dist/tests/core-generics-coverage.test.d.ts +0 -1
  334. package/dist/tests/coverage-boost.test.d.ts +0 -1
  335. package/dist/tests/crypto-cross-platform-compatibility.test.d.ts +0 -1
  336. package/dist/tests/data-addfile-permissions-schema.test.d.ts +0 -1
  337. package/dist/tests/data-additional-methods.test.d.ts +0 -1
  338. package/dist/tests/data-controller-edge-cases.test.d.ts +0 -1
  339. package/dist/tests/data-ipfs-gateways.test.d.ts +0 -1
  340. package/dist/tests/data-relayer.test.d.ts +0 -1
  341. package/dist/tests/data-schema-validation.test.d.ts +0 -1
  342. package/dist/tests/data-simple-methods.test.d.ts +0 -1
  343. package/dist/tests/data-upload-owner-validation.test.d.ts +0 -1
  344. package/dist/tests/data.test.d.ts +0 -1
  345. package/dist/tests/demo-integration.test.d.ts +0 -1
  346. package/dist/tests/demo-trusted-server-integration.test.d.ts +0 -1
  347. package/dist/tests/download-relayer.test.d.ts +0 -1
  348. package/dist/tests/dual-mode-permissions.test.d.ts +0 -1
  349. package/dist/tests/dual-mode-trusted-servers.test.d.ts +0 -1
  350. package/dist/tests/encryption-correct-implementation.test.d.ts +0 -1
  351. package/dist/tests/encryption-coverage.test.d.ts +0 -1
  352. package/dist/tests/encryption-edge-cases.test.d.ts +0 -1
  353. package/dist/tests/encryption-utils-updated.test.d.ts +0 -1
  354. package/dist/tests/errors-coverage.test.d.ts +0 -1
  355. package/dist/tests/factories/mockFactory.d.ts +0 -316
  356. package/dist/tests/fakes/FakeStorageManager.d.ts +0 -200
  357. package/dist/tests/fakes/FakeStorageManager.test.d.ts +0 -1
  358. package/dist/tests/fakes/FakeWaitForTransactionEvents.d.ts +0 -170
  359. package/dist/tests/fakes/FakeWaitForTransactionEvents.test.d.ts +0 -1
  360. package/dist/tests/fakes/fake-pgp-port.d.ts +0 -13
  361. package/dist/tests/grantValidation-edge-cases.test.d.ts +0 -1
  362. package/dist/tests/grantValidation-unreachable-branch.test.d.ts +0 -1
  363. package/dist/tests/helper-methods.test.d.ts +0 -1
  364. package/dist/tests/helpers/typedMocks.d.ts +0 -64
  365. package/dist/tests/index-browser.test.d.ts +0 -1
  366. package/dist/tests/index-node.test.d.ts +0 -1
  367. package/dist/tests/index.test.d.ts +0 -1
  368. package/dist/tests/mocks/platformAdapter.d.ts +0 -12
  369. package/dist/tests/new-permissions-methods.test.d.ts +0 -1
  370. package/dist/tests/no-buffer-browser.test.d.ts +0 -1
  371. package/dist/tests/permissions-grantee.test.d.ts +0 -1
  372. package/dist/tests/permissions-revoke-relayer.test.d.ts +0 -1
  373. package/dist/tests/permissions-schema-validation.test.d.ts +0 -1
  374. package/dist/tests/permissions-server-files.test.d.ts +0 -1
  375. package/dist/tests/permissions-transaction-options.test.d.ts +0 -1
  376. package/dist/tests/permissions-trust-servers.test.d.ts +0 -1
  377. package/dist/tests/permissions.test.d.ts +0 -1
  378. package/dist/tests/personal.test.d.ts +0 -1
  379. package/dist/tests/platform-browser.test.d.ts +0 -1
  380. package/dist/tests/platform-crypto-expanded.test.d.ts +0 -1
  381. package/dist/tests/platform-crypto.test.d.ts +0 -1
  382. package/dist/tests/platform-index.test.d.ts +0 -1
  383. package/dist/tests/platform-node.test.d.ts +0 -1
  384. package/dist/tests/platform-shared-utils.test.d.ts +0 -1
  385. package/dist/tests/platform-updated.test.d.ts +0 -1
  386. package/dist/tests/protocol-additional-methods.test.d.ts +0 -1
  387. package/dist/tests/protocol.test.d.ts +0 -1
  388. package/dist/tests/read-only-mode.test.d.ts +0 -1
  389. package/dist/tests/relayer-integration.test.d.ts +0 -1
  390. package/dist/tests/relayer-unified.test.d.ts +0 -1
  391. package/dist/tests/schemas.test.d.ts +0 -1
  392. package/dist/tests/server-relayer-handler.test.d.ts +0 -1
  393. package/dist/tests/signatureFormatter.test.d.ts +0 -1
  394. package/dist/tests/trusted-server-queries.test.d.ts +0 -1
  395. package/dist/tests/typedDataConverter.test.d.ts +0 -1
  396. package/dist/tests/types-contracts.test.d.ts +0 -1
  397. package/dist/tests/types-data.test.d.ts +0 -1
  398. package/dist/tests/types-external-apis.test.d.ts +0 -1
  399. package/dist/tests/types-generics.test.d.ts +0 -1
  400. package/dist/tests/types-permissions.test.d.ts +0 -1
  401. package/dist/tests/types-upload-params.test.d.ts +0 -1
  402. package/dist/tests/types.test.d.ts +0 -1
  403. package/dist/tests/utils-formatters.test.d.ts +0 -1
  404. package/dist/tests/utils-grantFiles-edge-cases.test.d.ts +0 -1
  405. package/dist/tests/utils-grantFiles-validation.test.d.ts +0 -1
  406. package/dist/tests/utils-grantFiles.test.d.ts +0 -1
  407. package/dist/tests/utils-grantValidation-consolidated.test.d.ts +0 -1
  408. package/dist/tests/utils-grants.test.d.ts +0 -1
  409. package/dist/tests/utils-ipfs-additional.test.d.ts +0 -1
  410. package/dist/tests/utils-ipfs.test.d.ts +0 -4
  411. package/dist/tests/utils-schemaValidation.test.d.ts +0 -1
  412. package/dist/tests/vana.test.d.ts +0 -1
  413. package/dist/tests/wallet-crypto-compatibility.test.d.ts +0 -1
  414. package/dist/types/atomicStore.cjs.map +0 -1
  415. package/dist/types/atomicStore.d.ts +0 -236
  416. package/dist/types/atomicStore.js +0 -7
  417. package/dist/types/atomicStore.js.map +0 -1
  418. package/dist/types/blockchain.cjs +0 -17
  419. package/dist/types/blockchain.cjs.map +0 -1
  420. package/dist/types/blockchain.d.ts +0 -85
  421. package/dist/types/blockchain.js +0 -1
  422. package/dist/types/blockchain.js.map +0 -1
  423. package/dist/types/controller-context.cjs +0 -17
  424. package/dist/types/controller-context.cjs.map +0 -1
  425. package/dist/types/controller-context.d.ts +0 -68
  426. package/dist/types/controller-context.js +0 -1
  427. package/dist/types/controller-context.js.map +0 -1
  428. package/dist/types/data.cjs +0 -17
  429. package/dist/types/data.cjs.map +0 -1
  430. package/dist/types/data.d.ts +0 -763
  431. package/dist/types/data.js +0 -1
  432. package/dist/types/data.js.map +0 -1
  433. package/dist/types/external-apis.cjs +0 -61
  434. package/dist/types/external-apis.cjs.map +0 -1
  435. package/dist/types/external-apis.d.ts +0 -184
  436. package/dist/types/external-apis.js +0 -34
  437. package/dist/types/external-apis.js.map +0 -1
  438. package/dist/types/generics.cjs +0 -17
  439. package/dist/types/generics.cjs.map +0 -1
  440. package/dist/types/generics.d.ts +0 -518
  441. package/dist/types/generics.js +0 -1
  442. package/dist/types/generics.js.map +0 -1
  443. package/dist/types/operationStore.cjs +0 -17
  444. package/dist/types/operationStore.cjs.map +0 -1
  445. package/dist/types/operationStore.d.ts +0 -171
  446. package/dist/types/operationStore.js +0 -1
  447. package/dist/types/operationStore.js.map +0 -1
  448. package/dist/types/operations.cjs +0 -53
  449. package/dist/types/operations.cjs.map +0 -1
  450. package/dist/types/operations.d.ts +0 -204
  451. package/dist/types/operations.js +0 -26
  452. package/dist/types/operations.js.map +0 -1
  453. package/dist/types/options.cjs +0 -17
  454. package/dist/types/options.cjs.map +0 -1
  455. package/dist/types/options.d.ts +0 -308
  456. package/dist/types/options.js +0 -1
  457. package/dist/types/options.js.map +0 -1
  458. package/dist/types/permissions.cjs +0 -17
  459. package/dist/types/permissions.cjs.map +0 -1
  460. package/dist/types/permissions.d.ts +0 -955
  461. package/dist/types/permissions.js +0 -1
  462. package/dist/types/permissions.js.map +0 -1
  463. package/dist/types/personal.cjs +0 -17
  464. package/dist/types/personal.cjs.map +0 -1
  465. package/dist/types/personal.d.ts +0 -174
  466. package/dist/types/personal.js +0 -1
  467. package/dist/types/personal.js.map +0 -1
  468. package/dist/types/relayer.cjs +0 -17
  469. package/dist/types/relayer.cjs.map +0 -1
  470. package/dist/types/relayer.d.ts +0 -552
  471. package/dist/types/relayer.js +0 -1
  472. package/dist/types/relayer.js.map +0 -1
  473. package/dist/types/transactionResults.cjs +0 -17
  474. package/dist/types/transactionResults.cjs.map +0 -1
  475. package/dist/types/transactionResults.d.ts +0 -193
  476. package/dist/types/transactionResults.js +0 -1
  477. package/dist/types/transactionResults.js.map +0 -1
  478. package/dist/types/utils.cjs +0 -17
  479. package/dist/types/utils.cjs.map +0 -1
  480. package/dist/types/utils.d.ts +0 -771
  481. package/dist/types/utils.js +0 -1
  482. package/dist/types/utils.js.map +0 -1
  483. package/dist/utils/__tests__/chainQuery.test.d.ts +0 -1
  484. package/dist/utils/__tests__/parseTransaction.test.d.ts +0 -1
  485. package/dist/utils/__tests__/pojo-serialization.test.d.ts +0 -1
  486. package/dist/utils/__tests__/signatureCache.test.d.ts +0 -1
  487. package/dist/utils/__tests__/subgraphConsistency.test.d.ts +0 -4
  488. package/dist/utils/__tests__/subgraphPagination.test.d.ts +0 -4
  489. package/dist/utils/__tests__/transaction-edge-cases.test.d.ts +0 -1
  490. package/dist/utils/__tests__/transactionHelpers.test.d.ts +0 -1
  491. package/dist/utils/__tests__/urlResolver.test.d.ts +0 -4
  492. package/dist/utils/blockchain/registry.cjs +0 -81
  493. package/dist/utils/blockchain/registry.cjs.map +0 -1
  494. package/dist/utils/blockchain/registry.d.ts +0 -32
  495. package/dist/utils/blockchain/registry.js +0 -56
  496. package/dist/utils/blockchain/registry.js.map +0 -1
  497. package/dist/utils/blockchain/registry.test.d.ts +0 -1
  498. package/dist/utils/chainQuery.cjs +0 -107
  499. package/dist/utils/chainQuery.cjs.map +0 -1
  500. package/dist/utils/chainQuery.d.ts +0 -31
  501. package/dist/utils/chainQuery.js +0 -82
  502. package/dist/utils/chainQuery.js.map +0 -1
  503. package/dist/utils/download.cjs +0 -69
  504. package/dist/utils/download.cjs.map +0 -1
  505. package/dist/utils/download.d.ts +0 -40
  506. package/dist/utils/download.js +0 -45
  507. package/dist/utils/download.js.map +0 -1
  508. package/dist/utils/encryption.cjs +0 -176
  509. package/dist/utils/encryption.cjs.map +0 -1
  510. package/dist/utils/encryption.d.ts +0 -271
  511. package/dist/utils/encryption.js +0 -142
  512. package/dist/utils/encryption.js.map +0 -1
  513. package/dist/utils/formatters.cjs +0 -55
  514. package/dist/utils/formatters.cjs.map +0 -1
  515. package/dist/utils/formatters.d.ts +0 -118
  516. package/dist/utils/formatters.js +0 -28
  517. package/dist/utils/formatters.js.map +0 -1
  518. package/dist/utils/grantFiles.cjs +0 -181
  519. package/dist/utils/grantFiles.cjs.map +0 -1
  520. package/dist/utils/grantFiles.d.ts +0 -172
  521. package/dist/utils/grantFiles.js +0 -143
  522. package/dist/utils/grantFiles.js.map +0 -1
  523. package/dist/utils/grantValidation.cjs +0 -243
  524. package/dist/utils/grantValidation.cjs.map +0 -1
  525. package/dist/utils/grantValidation.d.ts +0 -226
  526. package/dist/utils/grantValidation.js +0 -201
  527. package/dist/utils/grantValidation.js.map +0 -1
  528. package/dist/utils/grants.cjs +0 -108
  529. package/dist/utils/grants.cjs.map +0 -1
  530. package/dist/utils/grants.d.ts +0 -148
  531. package/dist/utils/grants.js +0 -82
  532. package/dist/utils/grants.js.map +0 -1
  533. package/dist/utils/ipfs.cjs +0 -128
  534. package/dist/utils/ipfs.cjs.map +0 -1
  535. package/dist/utils/ipfs.d.ts +0 -88
  536. package/dist/utils/ipfs.js +0 -97
  537. package/dist/utils/ipfs.js.map +0 -1
  538. package/dist/utils/multicall.cjs +0 -233
  539. package/dist/utils/multicall.cjs.map +0 -1
  540. package/dist/utils/multicall.d.ts +0 -126
  541. package/dist/utils/multicall.js +0 -208
  542. package/dist/utils/multicall.js.map +0 -1
  543. package/dist/utils/parseTransactionPojo.cjs +0 -87
  544. package/dist/utils/parseTransactionPojo.cjs.map +0 -1
  545. package/dist/utils/parseTransactionPojo.d.ts +0 -31
  546. package/dist/utils/parseTransactionPojo.js +0 -63
  547. package/dist/utils/parseTransactionPojo.js.map +0 -1
  548. package/dist/utils/schemaValidation.cjs +0 -258
  549. package/dist/utils/schemaValidation.cjs.map +0 -1
  550. package/dist/utils/schemaValidation.d.ts +0 -168
  551. package/dist/utils/schemaValidation.js +0 -219
  552. package/dist/utils/schemaValidation.js.map +0 -1
  553. package/dist/utils/signatureCache.cjs +0 -192
  554. package/dist/utils/signatureCache.cjs.map +0 -1
  555. package/dist/utils/signatureCache.d.ts +0 -172
  556. package/dist/utils/signatureCache.js +0 -167
  557. package/dist/utils/signatureCache.js.map +0 -1
  558. package/dist/utils/signatureFormatter.cjs +0 -42
  559. package/dist/utils/signatureFormatter.cjs.map +0 -1
  560. package/dist/utils/signatureFormatter.d.ts +0 -36
  561. package/dist/utils/signatureFormatter.js +0 -18
  562. package/dist/utils/signatureFormatter.js.map +0 -1
  563. package/dist/utils/subgraphConsistency.cjs +0 -184
  564. package/dist/utils/subgraphConsistency.cjs.map +0 -1
  565. package/dist/utils/subgraphConsistency.d.ts +0 -65
  566. package/dist/utils/subgraphConsistency.js +0 -155
  567. package/dist/utils/subgraphConsistency.js.map +0 -1
  568. package/dist/utils/subgraphMetaCache.cjs +0 -101
  569. package/dist/utils/subgraphMetaCache.cjs.map +0 -1
  570. package/dist/utils/subgraphMetaCache.d.ts +0 -56
  571. package/dist/utils/subgraphMetaCache.js +0 -76
  572. package/dist/utils/subgraphMetaCache.js.map +0 -1
  573. package/dist/utils/subgraphPagination.cjs +0 -104
  574. package/dist/utils/subgraphPagination.cjs.map +0 -1
  575. package/dist/utils/subgraphPagination.d.ts +0 -78
  576. package/dist/utils/subgraphPagination.js +0 -78
  577. package/dist/utils/subgraphPagination.js.map +0 -1
  578. package/dist/utils/tests/multicall.test.d.ts +0 -1
  579. package/dist/utils/transactionHelpers.cjs +0 -54
  580. package/dist/utils/transactionHelpers.cjs.map +0 -1
  581. package/dist/utils/transactionHelpers.d.ts +0 -80
  582. package/dist/utils/transactionHelpers.js +0 -29
  583. package/dist/utils/transactionHelpers.js.map +0 -1
  584. package/dist/utils/typeGuards.cjs +0 -109
  585. package/dist/utils/typeGuards.cjs.map +0 -1
  586. package/dist/utils/typeGuards.d.ts +0 -138
  587. package/dist/utils/typeGuards.js +0 -74
  588. package/dist/utils/typeGuards.js.map +0 -1
  589. package/dist/utils/typedDataConverter.cjs +0 -43
  590. package/dist/utils/typedDataConverter.cjs.map +0 -1
  591. package/dist/utils/typedDataConverter.d.ts +0 -46
  592. package/dist/utils/typedDataConverter.js +0 -19
  593. package/dist/utils/typedDataConverter.js.map +0 -1
  594. package/dist/utils/urlResolver.cjs +0 -62
  595. package/dist/utils/urlResolver.cjs.map +0 -1
  596. package/dist/utils/urlResolver.d.ts +0 -56
  597. package/dist/utils/urlResolver.js +0 -37
  598. package/dist/utils/urlResolver.js.map +0 -1
  599. package/dist/utils/wallet.cjs +0 -63
  600. package/dist/utils/wallet.cjs.map +0 -1
  601. package/dist/utils/wallet.d.ts +0 -94
  602. package/dist/utils/wallet.js +0 -37
  603. package/dist/utils/wallet.js.map +0 -1
  604. package/dist/utils/withEvents.cjs +0 -44
  605. package/dist/utils/withEvents.cjs.map +0 -1
  606. package/dist/utils/withEvents.d.ts +0 -56
  607. package/dist/utils/withEvents.js +0 -18
  608. package/dist/utils/withEvents.js.map +0 -1
  609. /package/dist/{__tests__/waitForTransactionEvents.test.d.ts → auth/pkce.test.d.ts} +0 -0
  610. /package/dist/{client/__tests__/enhancedResponse.test.d.ts → auth/token-store.test.d.ts} +0 -0
  611. /package/dist/{controllers/__tests__/operations.processQueue.test.d.ts → auth/web3-signed.test.d.ts} +0 -0
  612. /package/dist/{controllers/__tests__/schemas-edge-cases.test.d.ts → crypto/envelope/openpgp.test.d.ts} +0 -0
  613. /package/dist/{controllers/data-error-handling.test.d.ts → crypto/keys/derive.test.d.ts} +0 -0
  614. /package/dist/{tests/errors.test.d.ts → errors.test.d.ts} +0 -0
  615. /package/dist/{controllers/server-additional.test.d.ts → protocol/data-file.test.d.ts} +0 -0
  616. /package/dist/{core/__tests__/health.test.d.ts → protocol/eip712.test.d.ts} +0 -0
  617. /package/dist/{core/__tests__/inMemoryNonceManager.test.d.ts → protocol/gateway.test.d.ts} +0 -0
  618. /package/dist/{core/__tests__/nonceManager.test.d.ts → protocol/scopes.test.d.ts} +0 -0
  619. /package/dist/{core/core.test.d.ts → storage/tests/defaultStorage.test.d.ts} +0 -0
  620. /package/dist/{core/tests/apiClient.test.d.ts → storage/tests/r2Storage.test.d.ts} +0 -0
  621. /package/dist/{core/tests/client.test.d.ts → storage/tests/vanaStorage.test.d.ts} +0 -0
  622. /package/dist/{core/tests/generics.test.d.ts → types/ps-errors.test.d.ts} +0 -0
package/README.md CHANGED
@@ -1,122 +1,106 @@
1
1
  # Vana SDK
2
2
 
3
- Build user-owned data applications with gasless permissions, encrypted data management, and privacy-preserving infrastructure.
3
+ TypeScript primitives for building on Vana smart-contract bindings, ECIES
4
+ encryption, storage providers, and a shared isomorphic platform layer.
4
5
 
5
6
  [![npm version](https://img.shields.io/npm/v/@opendatalabs/vana-sdk)](https://www.npmjs.com/package/@opendatalabs/vana-sdk)
6
7
  [![Downloads](https://img.shields.io/npm/dm/@opendatalabs/vana-sdk)](https://www.npmjs.com/package/@opendatalabs/vana-sdk)
7
8
  [![License](https://img.shields.io/npm/l/@opendatalabs/vana-sdk)](https://opensource.org/licenses/ISC)
8
9
 
9
- The SDK is production-ready. APIs may evolve in minor versions as we incorporate feedback and expand functionality.
10
-
11
- ## Get Started
12
-
13
- ### 1. Install
10
+ > **Heads up minimal scaffold.** As of `3.x` the SDK has been pared down
11
+ > to the primitives the new Vana protocol architecture builds on. The
12
+ > previous high-level API (`Vana(...)` factory, `vana.permissions`,
13
+ > `vana.data`, subgraph queries, personal-server client, DLP rewards) is
14
+ > **not part of this release.** If you need that surface, pin to
15
+ > [`@opendatalabs/vana-sdk@^2.3.0`](https://www.npmjs.com/package/@opendatalabs/vana-sdk/v/2.3.0)
16
+ > or check out the [`legacy-pre-unification`](https://github.com/vana-com/vana-sdk/tree/legacy-pre-unification)
17
+ > tag.
18
+
19
+ ## What's in the box
20
+
21
+ - **Smart-contract bindings** — `getContractController`, `getContractInfo`,
22
+ `getAbi`, `getContractAddress`, plus the `CONTRACTS` and `VanaContract`
23
+ registries auto-generated from on-chain discovery.
24
+ - **Chain configurations** — `vanaMainnet`, `mokshaTestnet` (alias `moksha`),
25
+ `getChainConfig`, `getAllChains`, plus the lower-level viem `chains` map.
26
+ - **ECIES crypto** — audited (HashCloak, 2025) ECIES implementation with
27
+ matched browser and Node providers, byte-identical across platforms and
28
+ with strict KDF/MAC validation.
29
+ - **Storage providers** — `StorageManager`, `IpfsStorage`, `PinataStorage`,
30
+ `GoogleDriveStorage`, `DropboxStorage`, `CallbackStorage`.
31
+ - **Platform adapters** — `NodePlatformAdapter` and `BrowserPlatformAdapter`
32
+ with a shared `VanaPlatformAdapter` interface, plus detection helpers
33
+ (`detectPlatform`, `isPlatformSupported`, `createPlatformAdapter`,
34
+ `createPlatformAdapterSafe`).
35
+ - **JSON protocol schemas** — `dataSchema.schema.json` and
36
+ `grantFile.schema.json`, shipped under `dist/schemas/`.
37
+
38
+ ## Install
14
39
 
15
40
  ```bash
16
41
  npm install @opendatalabs/vana-sdk viem
17
42
  ```
18
43
 
19
- ### 2. Set up your client
20
-
21
- Choose the build for your environment:
22
-
23
- **Browser:**
44
+ The SDK ships separate browser and Node bundles. Pick the entry point that
45
+ matches your runtime:
24
46
 
25
47
  ```typescript
26
- import { Vana, mokshaTestnet } from "@opendatalabs/vana-sdk/browser";
27
- import { createWalletClient, custom } from "viem";
48
+ // Browser / web app
49
+ import { BrowserPlatformAdapter } from "@opendatalabs/vana-sdk/browser";
28
50
 
29
- const walletClient = createWalletClient({
30
- chain: mokshaTestnet,
31
- transport: custom(window.ethereum),
32
- });
33
-
34
- const vana = Vana({ walletClient });
51
+ // Node.js / server
52
+ import { NodePlatformAdapter } from "@opendatalabs/vana-sdk/node";
35
53
  ```
36
54
 
37
- **Node.js:**
55
+ The bare `@opendatalabs/vana-sdk` import intentionally throws — it forces a
56
+ deliberate platform choice instead of accidentally pulling Node-only code
57
+ into a browser bundle (or vice versa).
38
58
 
39
- ```typescript
40
- import { Vana, mokshaTestnet } from "@opendatalabs/vana-sdk/node";
41
- import { createWalletClient, http } from "viem";
42
- import { privateKeyToAccount } from "viem/accounts";
43
-
44
- const account = privateKeyToAccount("0x...");
45
- const vana = Vana({
46
- walletClient: createWalletClient({
47
- account,
48
- chain: mokshaTestnet,
49
- transport: http("https://rpc.moksha.vana.org"),
50
- }),
51
- relayerUrl: "https://relayer.moksha.vana.org",
52
- });
53
- ```
59
+ ## Quick examples
54
60
 
55
- ### 3. Use the SDK
61
+ ### Read a Vana contract
56
62
 
57
63
  ```typescript
58
- // Grant gasless data access permission
59
- await vana.permissions.grant({
60
- grantee: "0x742d35Cc6558Fd4D9e9E0E888F0462ef6919Bd36",
61
- operation: "llm_inference",
62
- parameters: {
63
- prompt: "Analyze my data for insights",
64
- maxTokens: 1000,
65
- },
66
- expiresAt: Math.floor(Date.now() / 1000) + 86400,
67
- });
64
+ import { getContractController } from "@opendatalabs/vana-sdk/node";
65
+ import { createPublicClient, http } from "viem";
66
+ import { mokshaTestnet } from "@opendatalabs/vana-sdk/node";
68
67
 
69
- // Upload encrypted file with decryption permissions
70
- await vana.data.upload({
71
- content: "Sensitive user data",
72
- filename: "data.json",
73
- schemaId: 123,
74
- permissions: [
75
- {
76
- account: "0xServerAddress...",
77
- publicKey: "0x04ServerKey...",
78
- },
79
- ],
68
+ const client = createPublicClient({
69
+ chain: mokshaTestnet,
70
+ transport: http(),
80
71
  });
81
72
 
82
- // Query user files
83
- const files = await vana.data.getUserFiles({
84
- owner: "0x742d35Cc6558Fd4D9e9E0E888F0462ef6919Bd36",
85
- });
73
+ const dataRegistry = getContractController("DataRegistry" as const, client);
74
+ const fileCount = await dataRegistry.read.filesCount();
86
75
  ```
87
76
 
88
- ## Features
77
+ ### Encrypt with ECIES (Node)
89
78
 
90
- The SDK provides six main controllers:
79
+ ```typescript
80
+ import { NodeECIESProvider } from "@opendatalabs/vana-sdk/node";
91
81
 
92
- | Controller | Purpose |
93
- | ------------- | -------------------------------------------- |
94
- | `permissions` | Grant and revoke gasless data access |
95
- | `data` | Upload, query, and decrypt encrypted files |
96
- | `schemas` | Validate data against schemas |
97
- | `server` | Interact with trusted servers |
98
- | `protocol` | Direct smart contract access |
99
- | `operations` | Track and poll transaction status |
82
+ const ecies = new NodeECIESProvider();
100
83
 
101
- ## Configuration
84
+ const encrypted = await ecies.encrypt(recipientPublicKey, payload);
85
+ const decrypted = await ecies.decrypt(recipientPrivateKey, encrypted);
86
+ ```
87
+
88
+ The browser entry exposes the same surface as `BrowserECIESProvider`.
102
89
 
103
- Configure storage, relay, and subgraph services:
90
+ ### Upload a file via the storage manager
104
91
 
105
92
  ```typescript
106
93
  import { StorageManager, PinataStorage } from "@opendatalabs/vana-sdk/node";
107
94
 
108
- const vana = Vana({
109
- walletClient,
110
- relayerUrl: "https://relayer.moksha.vana.org",
111
- storageManager: new StorageManager().register(
112
- "ipfs",
113
- new PinataStorage({
114
- apiKey: process.env.PINATA_API_KEY,
115
- secretKey: process.env.PINATA_SECRET_KEY,
116
- })
117
- ),
118
- subgraphUrl: "https://api.thegraph.com/subgraphs/name/vana/moksha",
119
- });
95
+ const storage = new StorageManager();
96
+ storage.register(
97
+ "pinata",
98
+ new PinataStorage({ jwt: process.env.PINATA_JWT! }),
99
+ true, // mark as default
100
+ );
101
+
102
+ const result = await storage.upload(myBlob, "report.json");
103
+ console.log(result.url);
120
104
  ```
121
105
 
122
106
  ## Networks
@@ -126,16 +110,16 @@ const vana = Vana({
126
110
  | Vana Mainnet | 1480 | https://rpc.vana.org |
127
111
  | Moksha Testnet | 14800 | https://rpc.moksha.vana.org |
128
112
 
129
- ## Learn More
113
+ ## Audit
130
114
 
131
- - [Documentation](https://docs.vana.org/docs/sdk) - Comprehensive guides and tutorials
132
- - [API Reference](https://vana-com.github.io/vana-sdk) - Complete TypeScript documentation
133
- - [Examples](https://github.com/vana-com/vana-sdk/tree/main/examples) - Full demo applications
134
- - [Discord](https://discord.gg/vanabuilders) - Community support
115
+ The ECIES implementation under `src/crypto/ecies/` was audited by HashCloak
116
+ in October 2025; the report is in [`audits/`](https://github.com/vana-com/vana-sdk/tree/main/packages/vana-sdk/audits).
135
117
 
136
- ## Support
118
+ ## Learn more
137
119
 
138
- Report issues on [GitHub Issues](https://github.com/vana-com/vana-sdk/issues).
120
+ - [Documentation](https://docs.vana.org/docs/sdk)
121
+ - [API reference](https://vana-com.github.io/vana-sdk)
122
+ - [Discord](https://discord.gg/vanabuilders)
139
123
 
140
124
  ## License
141
125
 
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var errors_exports = {};
20
+ __export(errors_exports, {
21
+ ExpiredTokenError: () => ExpiredTokenError,
22
+ InvalidSignatureError: () => InvalidSignatureError,
23
+ MissingAuthError: () => MissingAuthError
24
+ });
25
+ module.exports = __toCommonJS(errors_exports);
26
+ var import_errors = require("../errors");
27
+ class MissingAuthError extends import_errors.VanaError {
28
+ constructor(message = "Missing authentication", details) {
29
+ super(message, "MISSING_AUTH");
30
+ this.details = details;
31
+ }
32
+ details;
33
+ }
34
+ class InvalidSignatureError extends import_errors.VanaError {
35
+ constructor(details, message = "Invalid signature") {
36
+ super(message, "INVALID_SIGNATURE");
37
+ this.details = details;
38
+ }
39
+ details;
40
+ }
41
+ class ExpiredTokenError extends import_errors.VanaError {
42
+ constructor(details, message = "Token has expired") {
43
+ super(message, "EXPIRED_TOKEN");
44
+ this.details = details;
45
+ }
46
+ details;
47
+ }
48
+ // Annotate the CommonJS export names for ESM import in node:
49
+ 0 && (module.exports = {
50
+ ExpiredTokenError,
51
+ InvalidSignatureError,
52
+ MissingAuthError
53
+ });
54
+ //# sourceMappingURL=errors.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/auth/errors.ts"],"sourcesContent":["/**\n * Auth-specific error classes for Web3Signed verification.\n *\n * @remarks\n * Mirrors the relevant subset of `personal-server-ts` `ProtocolError` so server\n * code that consumes Web3Signed primitives can branch on typed errors. They\n * extend {@link VanaError} so they fit the SDK error hierarchy.\n *\n * @category Error Handling\n */\n\nimport { VanaError } from \"../errors\";\n\n/** Thrown when an Authorization header is missing or empty. */\nexport class MissingAuthError extends VanaError {\n constructor(\n message = \"Missing authentication\",\n public readonly details?: Record<string, unknown>,\n ) {\n super(message, \"MISSING_AUTH\");\n }\n}\n\n/** Thrown when a Web3Signed header is malformed or its signature does not verify. */\nexport class InvalidSignatureError extends VanaError {\n constructor(\n public readonly details?: Record<string, unknown>,\n message = \"Invalid signature\",\n ) {\n super(message, \"INVALID_SIGNATURE\");\n }\n}\n\n/** Thrown when a Web3Signed token is expired or issued too far in the future. */\nexport class ExpiredTokenError extends VanaError {\n constructor(\n public readonly details?: Record<string, unknown>,\n message = \"Token has expired\",\n ) {\n super(message, \"EXPIRED_TOKEN\");\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,oBAA0B;AAGnB,MAAM,yBAAyB,wBAAU;AAAA,EAC9C,YACE,UAAU,0BACM,SAChB;AACA,UAAM,SAAS,cAAc;AAFb;AAAA,EAGlB;AAAA,EAHkB;AAIpB;AAGO,MAAM,8BAA8B,wBAAU;AAAA,EACnD,YACkB,SAChB,UAAU,qBACV;AACA,UAAM,SAAS,mBAAmB;AAHlB;AAAA,EAIlB;AAAA,EAJkB;AAKpB;AAGO,MAAM,0BAA0B,wBAAU;AAAA,EAC/C,YACkB,SAChB,UAAU,qBACV;AACA,UAAM,SAAS,eAAe;AAHd;AAAA,EAIlB;AAAA,EAJkB;AAKpB;","names":[]}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Auth-specific error classes for Web3Signed verification.
3
+ *
4
+ * @remarks
5
+ * Mirrors the relevant subset of `personal-server-ts` `ProtocolError` so server
6
+ * code that consumes Web3Signed primitives can branch on typed errors. They
7
+ * extend {@link VanaError} so they fit the SDK error hierarchy.
8
+ *
9
+ * @category Error Handling
10
+ */
11
+ import { VanaError } from "../errors";
12
+ /** Thrown when an Authorization header is missing or empty. */
13
+ export declare class MissingAuthError extends VanaError {
14
+ readonly details?: Record<string, unknown> | undefined;
15
+ constructor(message?: string, details?: Record<string, unknown> | undefined);
16
+ }
17
+ /** Thrown when a Web3Signed header is malformed or its signature does not verify. */
18
+ export declare class InvalidSignatureError extends VanaError {
19
+ readonly details?: Record<string, unknown> | undefined;
20
+ constructor(details?: Record<string, unknown> | undefined, message?: string);
21
+ }
22
+ /** Thrown when a Web3Signed token is expired or issued too far in the future. */
23
+ export declare class ExpiredTokenError extends VanaError {
24
+ readonly details?: Record<string, unknown> | undefined;
25
+ constructor(details?: Record<string, unknown> | undefined, message?: string);
26
+ }
@@ -0,0 +1,28 @@
1
+ import { VanaError } from "../errors";
2
+ class MissingAuthError extends VanaError {
3
+ constructor(message = "Missing authentication", details) {
4
+ super(message, "MISSING_AUTH");
5
+ this.details = details;
6
+ }
7
+ details;
8
+ }
9
+ class InvalidSignatureError extends VanaError {
10
+ constructor(details, message = "Invalid signature") {
11
+ super(message, "INVALID_SIGNATURE");
12
+ this.details = details;
13
+ }
14
+ details;
15
+ }
16
+ class ExpiredTokenError extends VanaError {
17
+ constructor(details, message = "Token has expired") {
18
+ super(message, "EXPIRED_TOKEN");
19
+ this.details = details;
20
+ }
21
+ details;
22
+ }
23
+ export {
24
+ ExpiredTokenError,
25
+ InvalidSignatureError,
26
+ MissingAuthError
27
+ };
28
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/auth/errors.ts"],"sourcesContent":["/**\n * Auth-specific error classes for Web3Signed verification.\n *\n * @remarks\n * Mirrors the relevant subset of `personal-server-ts` `ProtocolError` so server\n * code that consumes Web3Signed primitives can branch on typed errors. They\n * extend {@link VanaError} so they fit the SDK error hierarchy.\n *\n * @category Error Handling\n */\n\nimport { VanaError } from \"../errors\";\n\n/** Thrown when an Authorization header is missing or empty. */\nexport class MissingAuthError extends VanaError {\n constructor(\n message = \"Missing authentication\",\n public readonly details?: Record<string, unknown>,\n ) {\n super(message, \"MISSING_AUTH\");\n }\n}\n\n/** Thrown when a Web3Signed header is malformed or its signature does not verify. */\nexport class InvalidSignatureError extends VanaError {\n constructor(\n public readonly details?: Record<string, unknown>,\n message = \"Invalid signature\",\n ) {\n super(message, \"INVALID_SIGNATURE\");\n }\n}\n\n/** Thrown when a Web3Signed token is expired or issued too far in the future. */\nexport class ExpiredTokenError extends VanaError {\n constructor(\n public readonly details?: Record<string, unknown>,\n message = \"Token has expired\",\n ) {\n super(message, \"EXPIRED_TOKEN\");\n }\n}\n"],"mappings":"AAWA,SAAS,iBAAiB;AAGnB,MAAM,yBAAyB,UAAU;AAAA,EAC9C,YACE,UAAU,0BACM,SAChB;AACA,UAAM,SAAS,cAAc;AAFb;AAAA,EAGlB;AAAA,EAHkB;AAIpB;AAGO,MAAM,8BAA8B,UAAU;AAAA,EACnD,YACkB,SAChB,UAAU,qBACV;AACA,UAAM,SAAS,mBAAmB;AAHlB;AAAA,EAIlB;AAAA,EAJkB;AAKpB;AAGO,MAAM,0BAA0B,UAAU;AAAA,EAC/C,YACkB,SAChB,UAAU,qBACV;AACA,UAAM,SAAS,eAAe;AAHd;AAAA,EAIlB;AAAA,EAJkB;AAKpB;","names":[]}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var pkce_exports = {};
20
+ __export(pkce_exports, {
21
+ PKCE_CHALLENGE_PATTERN: () => PKCE_CHALLENGE_PATTERN,
22
+ PKCE_VERIFIER_PATTERN: () => PKCE_VERIFIER_PATTERN,
23
+ assertValidPkceVerifier: () => assertValidPkceVerifier,
24
+ computePkceChallenge: () => computePkceChallenge,
25
+ generatePkceVerifier: () => generatePkceVerifier,
26
+ verifyPkceChallenge: () => verifyPkceChallenge
27
+ });
28
+ module.exports = __toCommonJS(pkce_exports);
29
+ const PKCE_VERIFIER_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~";
30
+ const PKCE_VERIFIER_MIN_LENGTH = 43;
31
+ const PKCE_VERIFIER_MAX_LENGTH = 128;
32
+ const PKCE_VERIFIER_DEFAULT_LENGTH = 64;
33
+ const PKCE_VERIFIER_PATTERN = /^[A-Za-z0-9._~-]{43,128}$/;
34
+ const PKCE_CHALLENGE_PATTERN = /^[A-Za-z0-9_-]{43}$/;
35
+ function assertValidPkceVerifier(verifier) {
36
+ if (!PKCE_VERIFIER_PATTERN.test(verifier)) {
37
+ throw new RangeError(
38
+ `PKCE verifier must match RFC 7636 \xA74.1: ${PKCE_VERIFIER_MIN_LENGTH}-${PKCE_VERIFIER_MAX_LENGTH} unreserved chars [A-Za-z0-9._~-]`
39
+ );
40
+ }
41
+ }
42
+ function generatePkceVerifier(length = PKCE_VERIFIER_DEFAULT_LENGTH) {
43
+ if (!Number.isInteger(length) || length < PKCE_VERIFIER_MIN_LENGTH || length > PKCE_VERIFIER_MAX_LENGTH) {
44
+ throw new RangeError(
45
+ `PKCE verifier length must be an integer between ${PKCE_VERIFIER_MIN_LENGTH} and ${PKCE_VERIFIER_MAX_LENGTH}`
46
+ );
47
+ }
48
+ const alphabetLen = PKCE_VERIFIER_ALPHABET.length;
49
+ const acceptCutoff = Math.floor(256 / alphabetLen) * alphabetLen;
50
+ const out = new Array(length);
51
+ let filled = 0;
52
+ const buffer = new Uint8Array(length * 2);
53
+ while (filled < length) {
54
+ crypto.getRandomValues(buffer);
55
+ for (let i = 0; i < buffer.length && filled < length; i++) {
56
+ const byte = buffer[i];
57
+ if (byte < acceptCutoff) {
58
+ out[filled++] = PKCE_VERIFIER_ALPHABET[byte % alphabetLen];
59
+ }
60
+ }
61
+ }
62
+ return out.join("");
63
+ }
64
+ async function computePkceChallenge(verifier) {
65
+ assertValidPkceVerifier(verifier);
66
+ const bytes = new TextEncoder().encode(verifier);
67
+ const digest = await crypto.subtle.digest("SHA-256", bytes);
68
+ return base64UrlEncode(new Uint8Array(digest));
69
+ }
70
+ async function verifyPkceChallenge(verifier, challenge) {
71
+ if (!PKCE_VERIFIER_PATTERN.test(verifier)) return false;
72
+ if (!PKCE_CHALLENGE_PATTERN.test(challenge)) return false;
73
+ const computed = await computePkceChallenge(verifier);
74
+ return constantTimeEqualString(computed, challenge);
75
+ }
76
+ function base64UrlEncode(bytes) {
77
+ let binary = "";
78
+ for (let i = 0; i < bytes.length; i++) {
79
+ binary += String.fromCharCode(bytes[i]);
80
+ }
81
+ return btoa(binary).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
82
+ }
83
+ function constantTimeEqualString(a, b) {
84
+ if (a.length !== b.length) return false;
85
+ let result = 0;
86
+ for (let i = 0; i < a.length; i++) {
87
+ result |= a.charCodeAt(i) ^ b.charCodeAt(i);
88
+ }
89
+ return result === 0;
90
+ }
91
+ // Annotate the CommonJS export names for ESM import in node:
92
+ 0 && (module.exports = {
93
+ PKCE_CHALLENGE_PATTERN,
94
+ PKCE_VERIFIER_PATTERN,
95
+ assertValidPkceVerifier,
96
+ computePkceChallenge,
97
+ generatePkceVerifier,
98
+ verifyPkceChallenge
99
+ });
100
+ //# sourceMappingURL=pkce.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/auth/pkce.ts"],"sourcesContent":["/**\n * PKCE (Proof Key for Code Exchange) primitives per RFC 7636.\n *\n * @remarks\n * Implements the S256 challenge method only. All functions are pure and\n * isomorphic — they rely on the `crypto.getRandomValues` and\n * `crypto.subtle` Web Crypto APIs available as globals in browsers and\n * Node.js (>= 20).\n *\n * @category Auth\n * @module auth/pkce\n */\n\n// RFC 7636 §4.1 unreserved characters: ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\nconst PKCE_VERIFIER_ALPHABET =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~\";\n\nconst PKCE_VERIFIER_MIN_LENGTH = 43;\nconst PKCE_VERIFIER_MAX_LENGTH = 128;\nconst PKCE_VERIFIER_DEFAULT_LENGTH = 64;\n\n/**\n * RFC 7636 §4.1 verifier shape: 43-128 unreserved chars.\n *\n * @category Auth\n */\nexport const PKCE_VERIFIER_PATTERN = /^[A-Za-z0-9._~-]{43,128}$/;\n\n/**\n * S256 challenge shape: 43-char base64url (SHA-256 = 32 bytes → 43 chars\n * after base64url-no-padding encoding).\n *\n * @category Auth\n */\nexport const PKCE_CHALLENGE_PATTERN = /^[A-Za-z0-9_-]{43}$/;\n\n/**\n * Throws {@link RangeError} unless `verifier` matches RFC 7636 §4.1.\n *\n * @category Auth\n */\nexport function assertValidPkceVerifier(verifier: string): void {\n if (!PKCE_VERIFIER_PATTERN.test(verifier)) {\n throw new RangeError(\n `PKCE verifier must match RFC 7636 §4.1: ${PKCE_VERIFIER_MIN_LENGTH}-${PKCE_VERIFIER_MAX_LENGTH} unreserved chars [A-Za-z0-9._~-]`,\n );\n }\n}\n\n/**\n * Generates a cryptographically random PKCE code verifier.\n *\n * @param length - Verifier length in characters. Must be between 43 and 128\n * (RFC 7636 §4.1). Defaults to 64.\n * @returns A string of the requested length using only the RFC-allowed\n * unreserved alphabet.\n */\nexport function generatePkceVerifier(\n length: number = PKCE_VERIFIER_DEFAULT_LENGTH,\n): string {\n if (\n !Number.isInteger(length) ||\n length < PKCE_VERIFIER_MIN_LENGTH ||\n length > PKCE_VERIFIER_MAX_LENGTH\n ) {\n throw new RangeError(\n `PKCE verifier length must be an integer between ${PKCE_VERIFIER_MIN_LENGTH} and ${PKCE_VERIFIER_MAX_LENGTH}`,\n );\n }\n\n const alphabetLen = PKCE_VERIFIER_ALPHABET.length;\n // Reject-sample to avoid modulo bias from a non-power-of-two alphabet (66).\n const acceptCutoff = Math.floor(256 / alphabetLen) * alphabetLen;\n\n const out = new Array<string>(length);\n let filled = 0;\n const buffer = new Uint8Array(length * 2);\n\n while (filled < length) {\n crypto.getRandomValues(buffer);\n for (let i = 0; i < buffer.length && filled < length; i++) {\n const byte = buffer[i] as number;\n if (byte < acceptCutoff) {\n out[filled++] = PKCE_VERIFIER_ALPHABET[byte % alphabetLen] as string;\n }\n }\n }\n\n return out.join(\"\");\n}\n\n/**\n * Computes the S256 PKCE code challenge for a verifier.\n *\n * @param verifier - The PKCE code verifier.\n * @returns The base64url-encoded SHA-256 hash of the verifier (no padding).\n */\nexport async function computePkceChallenge(verifier: string): Promise<string> {\n assertValidPkceVerifier(verifier);\n const bytes = new TextEncoder().encode(verifier);\n const digest = await crypto.subtle.digest(\"SHA-256\", bytes);\n return base64UrlEncode(new Uint8Array(digest));\n}\n\n/**\n * Verifies that a verifier hashes to the given S256 challenge.\n *\n * @param verifier - The PKCE code verifier presented by the client.\n * @param challenge - The previously stored S256 challenge.\n * @returns `true` when the verifier matches; `false` otherwise.\n */\nexport async function verifyPkceChallenge(\n verifier: string,\n challenge: string,\n): Promise<boolean> {\n if (!PKCE_VERIFIER_PATTERN.test(verifier)) return false;\n if (!PKCE_CHALLENGE_PATTERN.test(challenge)) return false;\n const computed = await computePkceChallenge(verifier);\n return constantTimeEqualString(computed, challenge);\n}\n\nfunction base64UrlEncode(bytes: Uint8Array): string {\n let binary = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i] as number);\n }\n // btoa is available in Node 16+ and all browsers.\n return btoa(binary)\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=+$/, \"\");\n}\n\nfunction constantTimeEqualString(a: string, b: string): boolean {\n if (a.length !== b.length) return false;\n let result = 0;\n for (let i = 0; i < a.length; i++) {\n result |= a.charCodeAt(i) ^ b.charCodeAt(i);\n }\n return result === 0;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcA,MAAM,yBACJ;AAEF,MAAM,2BAA2B;AACjC,MAAM,2BAA2B;AACjC,MAAM,+BAA+B;AAO9B,MAAM,wBAAwB;AAQ9B,MAAM,yBAAyB;AAO/B,SAAS,wBAAwB,UAAwB;AAC9D,MAAI,CAAC,sBAAsB,KAAK,QAAQ,GAAG;AACzC,UAAM,IAAI;AAAA,MACR,8CAA2C,wBAAwB,IAAI,wBAAwB;AAAA,IACjG;AAAA,EACF;AACF;AAUO,SAAS,qBACd,SAAiB,8BACT;AACR,MACE,CAAC,OAAO,UAAU,MAAM,KACxB,SAAS,4BACT,SAAS,0BACT;AACA,UAAM,IAAI;AAAA,MACR,mDAAmD,wBAAwB,QAAQ,wBAAwB;AAAA,IAC7G;AAAA,EACF;AAEA,QAAM,cAAc,uBAAuB;AAE3C,QAAM,eAAe,KAAK,MAAM,MAAM,WAAW,IAAI;AAErD,QAAM,MAAM,IAAI,MAAc,MAAM;AACpC,MAAI,SAAS;AACb,QAAM,SAAS,IAAI,WAAW,SAAS,CAAC;AAExC,SAAO,SAAS,QAAQ;AACtB,WAAO,gBAAgB,MAAM;AAC7B,aAAS,IAAI,GAAG,IAAI,OAAO,UAAU,SAAS,QAAQ,KAAK;AACzD,YAAM,OAAO,OAAO,CAAC;AACrB,UAAI,OAAO,cAAc;AACvB,YAAI,QAAQ,IAAI,uBAAuB,OAAO,WAAW;AAAA,MAC3D;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,KAAK,EAAE;AACpB;AAQA,eAAsB,qBAAqB,UAAmC;AAC5E,0BAAwB,QAAQ;AAChC,QAAM,QAAQ,IAAI,YAAY,EAAE,OAAO,QAAQ;AAC/C,QAAM,SAAS,MAAM,OAAO,OAAO,OAAO,WAAW,KAAK;AAC1D,SAAO,gBAAgB,IAAI,WAAW,MAAM,CAAC;AAC/C;AASA,eAAsB,oBACpB,UACA,WACkB;AAClB,MAAI,CAAC,sBAAsB,KAAK,QAAQ,EAAG,QAAO;AAClD,MAAI,CAAC,uBAAuB,KAAK,SAAS,EAAG,QAAO;AACpD,QAAM,WAAW,MAAM,qBAAqB,QAAQ;AACpD,SAAO,wBAAwB,UAAU,SAAS;AACpD;AAEA,SAAS,gBAAgB,OAA2B;AAClD,MAAI,SAAS;AACb,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,cAAU,OAAO,aAAa,MAAM,CAAC,CAAW;AAAA,EAClD;AAEA,SAAO,KAAK,MAAM,EACf,QAAQ,OAAO,GAAG,EAClB,QAAQ,OAAO,GAAG,EAClB,QAAQ,OAAO,EAAE;AACtB;AAEA,SAAS,wBAAwB,GAAW,GAAoB;AAC9D,MAAI,EAAE,WAAW,EAAE,OAAQ,QAAO;AAClC,MAAI,SAAS;AACb,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,cAAU,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC;AAAA,EAC5C;AACA,SAAO,WAAW;AACpB;","names":[]}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * PKCE (Proof Key for Code Exchange) primitives per RFC 7636.
3
+ *
4
+ * @remarks
5
+ * Implements the S256 challenge method only. All functions are pure and
6
+ * isomorphic — they rely on the `crypto.getRandomValues` and
7
+ * `crypto.subtle` Web Crypto APIs available as globals in browsers and
8
+ * Node.js (>= 20).
9
+ *
10
+ * @category Auth
11
+ * @module auth/pkce
12
+ */
13
+ /**
14
+ * RFC 7636 §4.1 verifier shape: 43-128 unreserved chars.
15
+ *
16
+ * @category Auth
17
+ */
18
+ export declare const PKCE_VERIFIER_PATTERN: RegExp;
19
+ /**
20
+ * S256 challenge shape: 43-char base64url (SHA-256 = 32 bytes → 43 chars
21
+ * after base64url-no-padding encoding).
22
+ *
23
+ * @category Auth
24
+ */
25
+ export declare const PKCE_CHALLENGE_PATTERN: RegExp;
26
+ /**
27
+ * Throws {@link RangeError} unless `verifier` matches RFC 7636 §4.1.
28
+ *
29
+ * @category Auth
30
+ */
31
+ export declare function assertValidPkceVerifier(verifier: string): void;
32
+ /**
33
+ * Generates a cryptographically random PKCE code verifier.
34
+ *
35
+ * @param length - Verifier length in characters. Must be between 43 and 128
36
+ * (RFC 7636 §4.1). Defaults to 64.
37
+ * @returns A string of the requested length using only the RFC-allowed
38
+ * unreserved alphabet.
39
+ */
40
+ export declare function generatePkceVerifier(length?: number): string;
41
+ /**
42
+ * Computes the S256 PKCE code challenge for a verifier.
43
+ *
44
+ * @param verifier - The PKCE code verifier.
45
+ * @returns The base64url-encoded SHA-256 hash of the verifier (no padding).
46
+ */
47
+ export declare function computePkceChallenge(verifier: string): Promise<string>;
48
+ /**
49
+ * Verifies that a verifier hashes to the given S256 challenge.
50
+ *
51
+ * @param verifier - The PKCE code verifier presented by the client.
52
+ * @param challenge - The previously stored S256 challenge.
53
+ * @returns `true` when the verifier matches; `false` otherwise.
54
+ */
55
+ export declare function verifyPkceChallenge(verifier: string, challenge: string): Promise<boolean>;
@@ -0,0 +1,71 @@
1
+ const PKCE_VERIFIER_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~";
2
+ const PKCE_VERIFIER_MIN_LENGTH = 43;
3
+ const PKCE_VERIFIER_MAX_LENGTH = 128;
4
+ const PKCE_VERIFIER_DEFAULT_LENGTH = 64;
5
+ const PKCE_VERIFIER_PATTERN = /^[A-Za-z0-9._~-]{43,128}$/;
6
+ const PKCE_CHALLENGE_PATTERN = /^[A-Za-z0-9_-]{43}$/;
7
+ function assertValidPkceVerifier(verifier) {
8
+ if (!PKCE_VERIFIER_PATTERN.test(verifier)) {
9
+ throw new RangeError(
10
+ `PKCE verifier must match RFC 7636 \xA74.1: ${PKCE_VERIFIER_MIN_LENGTH}-${PKCE_VERIFIER_MAX_LENGTH} unreserved chars [A-Za-z0-9._~-]`
11
+ );
12
+ }
13
+ }
14
+ function generatePkceVerifier(length = PKCE_VERIFIER_DEFAULT_LENGTH) {
15
+ if (!Number.isInteger(length) || length < PKCE_VERIFIER_MIN_LENGTH || length > PKCE_VERIFIER_MAX_LENGTH) {
16
+ throw new RangeError(
17
+ `PKCE verifier length must be an integer between ${PKCE_VERIFIER_MIN_LENGTH} and ${PKCE_VERIFIER_MAX_LENGTH}`
18
+ );
19
+ }
20
+ const alphabetLen = PKCE_VERIFIER_ALPHABET.length;
21
+ const acceptCutoff = Math.floor(256 / alphabetLen) * alphabetLen;
22
+ const out = new Array(length);
23
+ let filled = 0;
24
+ const buffer = new Uint8Array(length * 2);
25
+ while (filled < length) {
26
+ crypto.getRandomValues(buffer);
27
+ for (let i = 0; i < buffer.length && filled < length; i++) {
28
+ const byte = buffer[i];
29
+ if (byte < acceptCutoff) {
30
+ out[filled++] = PKCE_VERIFIER_ALPHABET[byte % alphabetLen];
31
+ }
32
+ }
33
+ }
34
+ return out.join("");
35
+ }
36
+ async function computePkceChallenge(verifier) {
37
+ assertValidPkceVerifier(verifier);
38
+ const bytes = new TextEncoder().encode(verifier);
39
+ const digest = await crypto.subtle.digest("SHA-256", bytes);
40
+ return base64UrlEncode(new Uint8Array(digest));
41
+ }
42
+ async function verifyPkceChallenge(verifier, challenge) {
43
+ if (!PKCE_VERIFIER_PATTERN.test(verifier)) return false;
44
+ if (!PKCE_CHALLENGE_PATTERN.test(challenge)) return false;
45
+ const computed = await computePkceChallenge(verifier);
46
+ return constantTimeEqualString(computed, challenge);
47
+ }
48
+ function base64UrlEncode(bytes) {
49
+ let binary = "";
50
+ for (let i = 0; i < bytes.length; i++) {
51
+ binary += String.fromCharCode(bytes[i]);
52
+ }
53
+ return btoa(binary).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
54
+ }
55
+ function constantTimeEqualString(a, b) {
56
+ if (a.length !== b.length) return false;
57
+ let result = 0;
58
+ for (let i = 0; i < a.length; i++) {
59
+ result |= a.charCodeAt(i) ^ b.charCodeAt(i);
60
+ }
61
+ return result === 0;
62
+ }
63
+ export {
64
+ PKCE_CHALLENGE_PATTERN,
65
+ PKCE_VERIFIER_PATTERN,
66
+ assertValidPkceVerifier,
67
+ computePkceChallenge,
68
+ generatePkceVerifier,
69
+ verifyPkceChallenge
70
+ };
71
+ //# sourceMappingURL=pkce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/auth/pkce.ts"],"sourcesContent":["/**\n * PKCE (Proof Key for Code Exchange) primitives per RFC 7636.\n *\n * @remarks\n * Implements the S256 challenge method only. All functions are pure and\n * isomorphic — they rely on the `crypto.getRandomValues` and\n * `crypto.subtle` Web Crypto APIs available as globals in browsers and\n * Node.js (>= 20).\n *\n * @category Auth\n * @module auth/pkce\n */\n\n// RFC 7636 §4.1 unreserved characters: ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\nconst PKCE_VERIFIER_ALPHABET =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~\";\n\nconst PKCE_VERIFIER_MIN_LENGTH = 43;\nconst PKCE_VERIFIER_MAX_LENGTH = 128;\nconst PKCE_VERIFIER_DEFAULT_LENGTH = 64;\n\n/**\n * RFC 7636 §4.1 verifier shape: 43-128 unreserved chars.\n *\n * @category Auth\n */\nexport const PKCE_VERIFIER_PATTERN = /^[A-Za-z0-9._~-]{43,128}$/;\n\n/**\n * S256 challenge shape: 43-char base64url (SHA-256 = 32 bytes → 43 chars\n * after base64url-no-padding encoding).\n *\n * @category Auth\n */\nexport const PKCE_CHALLENGE_PATTERN = /^[A-Za-z0-9_-]{43}$/;\n\n/**\n * Throws {@link RangeError} unless `verifier` matches RFC 7636 §4.1.\n *\n * @category Auth\n */\nexport function assertValidPkceVerifier(verifier: string): void {\n if (!PKCE_VERIFIER_PATTERN.test(verifier)) {\n throw new RangeError(\n `PKCE verifier must match RFC 7636 §4.1: ${PKCE_VERIFIER_MIN_LENGTH}-${PKCE_VERIFIER_MAX_LENGTH} unreserved chars [A-Za-z0-9._~-]`,\n );\n }\n}\n\n/**\n * Generates a cryptographically random PKCE code verifier.\n *\n * @param length - Verifier length in characters. Must be between 43 and 128\n * (RFC 7636 §4.1). Defaults to 64.\n * @returns A string of the requested length using only the RFC-allowed\n * unreserved alphabet.\n */\nexport function generatePkceVerifier(\n length: number = PKCE_VERIFIER_DEFAULT_LENGTH,\n): string {\n if (\n !Number.isInteger(length) ||\n length < PKCE_VERIFIER_MIN_LENGTH ||\n length > PKCE_VERIFIER_MAX_LENGTH\n ) {\n throw new RangeError(\n `PKCE verifier length must be an integer between ${PKCE_VERIFIER_MIN_LENGTH} and ${PKCE_VERIFIER_MAX_LENGTH}`,\n );\n }\n\n const alphabetLen = PKCE_VERIFIER_ALPHABET.length;\n // Reject-sample to avoid modulo bias from a non-power-of-two alphabet (66).\n const acceptCutoff = Math.floor(256 / alphabetLen) * alphabetLen;\n\n const out = new Array<string>(length);\n let filled = 0;\n const buffer = new Uint8Array(length * 2);\n\n while (filled < length) {\n crypto.getRandomValues(buffer);\n for (let i = 0; i < buffer.length && filled < length; i++) {\n const byte = buffer[i] as number;\n if (byte < acceptCutoff) {\n out[filled++] = PKCE_VERIFIER_ALPHABET[byte % alphabetLen] as string;\n }\n }\n }\n\n return out.join(\"\");\n}\n\n/**\n * Computes the S256 PKCE code challenge for a verifier.\n *\n * @param verifier - The PKCE code verifier.\n * @returns The base64url-encoded SHA-256 hash of the verifier (no padding).\n */\nexport async function computePkceChallenge(verifier: string): Promise<string> {\n assertValidPkceVerifier(verifier);\n const bytes = new TextEncoder().encode(verifier);\n const digest = await crypto.subtle.digest(\"SHA-256\", bytes);\n return base64UrlEncode(new Uint8Array(digest));\n}\n\n/**\n * Verifies that a verifier hashes to the given S256 challenge.\n *\n * @param verifier - The PKCE code verifier presented by the client.\n * @param challenge - The previously stored S256 challenge.\n * @returns `true` when the verifier matches; `false` otherwise.\n */\nexport async function verifyPkceChallenge(\n verifier: string,\n challenge: string,\n): Promise<boolean> {\n if (!PKCE_VERIFIER_PATTERN.test(verifier)) return false;\n if (!PKCE_CHALLENGE_PATTERN.test(challenge)) return false;\n const computed = await computePkceChallenge(verifier);\n return constantTimeEqualString(computed, challenge);\n}\n\nfunction base64UrlEncode(bytes: Uint8Array): string {\n let binary = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i] as number);\n }\n // btoa is available in Node 16+ and all browsers.\n return btoa(binary)\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=+$/, \"\");\n}\n\nfunction constantTimeEqualString(a: string, b: string): boolean {\n if (a.length !== b.length) return false;\n let result = 0;\n for (let i = 0; i < a.length; i++) {\n result |= a.charCodeAt(i) ^ b.charCodeAt(i);\n }\n return result === 0;\n}\n"],"mappings":"AAcA,MAAM,yBACJ;AAEF,MAAM,2BAA2B;AACjC,MAAM,2BAA2B;AACjC,MAAM,+BAA+B;AAO9B,MAAM,wBAAwB;AAQ9B,MAAM,yBAAyB;AAO/B,SAAS,wBAAwB,UAAwB;AAC9D,MAAI,CAAC,sBAAsB,KAAK,QAAQ,GAAG;AACzC,UAAM,IAAI;AAAA,MACR,8CAA2C,wBAAwB,IAAI,wBAAwB;AAAA,IACjG;AAAA,EACF;AACF;AAUO,SAAS,qBACd,SAAiB,8BACT;AACR,MACE,CAAC,OAAO,UAAU,MAAM,KACxB,SAAS,4BACT,SAAS,0BACT;AACA,UAAM,IAAI;AAAA,MACR,mDAAmD,wBAAwB,QAAQ,wBAAwB;AAAA,IAC7G;AAAA,EACF;AAEA,QAAM,cAAc,uBAAuB;AAE3C,QAAM,eAAe,KAAK,MAAM,MAAM,WAAW,IAAI;AAErD,QAAM,MAAM,IAAI,MAAc,MAAM;AACpC,MAAI,SAAS;AACb,QAAM,SAAS,IAAI,WAAW,SAAS,CAAC;AAExC,SAAO,SAAS,QAAQ;AACtB,WAAO,gBAAgB,MAAM;AAC7B,aAAS,IAAI,GAAG,IAAI,OAAO,UAAU,SAAS,QAAQ,KAAK;AACzD,YAAM,OAAO,OAAO,CAAC;AACrB,UAAI,OAAO,cAAc;AACvB,YAAI,QAAQ,IAAI,uBAAuB,OAAO,WAAW;AAAA,MAC3D;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,KAAK,EAAE;AACpB;AAQA,eAAsB,qBAAqB,UAAmC;AAC5E,0BAAwB,QAAQ;AAChC,QAAM,QAAQ,IAAI,YAAY,EAAE,OAAO,QAAQ;AAC/C,QAAM,SAAS,MAAM,OAAO,OAAO,OAAO,WAAW,KAAK;AAC1D,SAAO,gBAAgB,IAAI,WAAW,MAAM,CAAC;AAC/C;AASA,eAAsB,oBACpB,UACA,WACkB;AAClB,MAAI,CAAC,sBAAsB,KAAK,QAAQ,EAAG,QAAO;AAClD,MAAI,CAAC,uBAAuB,KAAK,SAAS,EAAG,QAAO;AACpD,QAAM,WAAW,MAAM,qBAAqB,QAAQ;AACpD,SAAO,wBAAwB,UAAU,SAAS;AACpD;AAEA,SAAS,gBAAgB,OAA2B;AAClD,MAAI,SAAS;AACb,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,cAAU,OAAO,aAAa,MAAM,CAAC,CAAW;AAAA,EAClD;AAEA,SAAO,KAAK,MAAM,EACf,QAAQ,OAAO,GAAG,EAClB,QAAQ,OAAO,GAAG,EAClB,QAAQ,OAAO,EAAE;AACtB;AAEA,SAAS,wBAAwB,GAAW,GAAoB;AAC9D,MAAI,EAAE,WAAW,EAAE,OAAQ,QAAO;AAClC,MAAI,SAAS;AACb,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,cAAU,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC;AAAA,EAC5C;AACA,SAAO,WAAW;AACpB;","names":[]}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var token_store_exports = {};
20
+ __export(token_store_exports, {
21
+ InMemoryTokenStore: () => InMemoryTokenStore
22
+ });
23
+ module.exports = __toCommonJS(token_store_exports);
24
+ class InMemoryTokenStore {
25
+ #records = /* @__PURE__ */ new Map();
26
+ get(key) {
27
+ const record = this.#records.get(key);
28
+ if (record === void 0) return Promise.resolve(null);
29
+ if (record.expiresAt !== void 0 && record.expiresAt <= Math.floor(Date.now() / 1e3)) {
30
+ this.#records.delete(key);
31
+ return Promise.resolve(null);
32
+ }
33
+ return Promise.resolve({ ...record });
34
+ }
35
+ set(key, record) {
36
+ this.#records.set(key, { ...record });
37
+ return Promise.resolve();
38
+ }
39
+ delete(key) {
40
+ this.#records.delete(key);
41
+ return Promise.resolve();
42
+ }
43
+ clear() {
44
+ this.#records.clear();
45
+ return Promise.resolve();
46
+ }
47
+ /**
48
+ * Returns the number of stored entries (including any not yet
49
+ * lazily evicted). Intended for tests and diagnostics.
50
+ */
51
+ get size() {
52
+ return this.#records.size;
53
+ }
54
+ }
55
+ // Annotate the CommonJS export names for ESM import in node:
56
+ 0 && (module.exports = {
57
+ InMemoryTokenStore
58
+ });
59
+ //# sourceMappingURL=token-store.cjs.map