@opendatalabs/vana-sdk 2.3.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (623) 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 +150 -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 +129 -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/index.cjs +2 -37
  62. package/dist/generated/abi/index.cjs.map +1 -1
  63. package/dist/generated/abi/index.d.ts +2683 -9296
  64. package/dist/generated/abi/index.js +2 -29
  65. package/dist/generated/abi/index.js.map +1 -1
  66. package/dist/generated/addresses.cjs +5 -107
  67. package/dist/generated/addresses.cjs.map +1 -1
  68. package/dist/generated/addresses.d.ts +5 -99
  69. package/dist/generated/addresses.js +5 -105
  70. package/dist/generated/addresses.js.map +1 -1
  71. package/dist/index.browser.d.ts +24 -140
  72. package/dist/index.browser.js +32258 -114
  73. package/dist/index.browser.js.map +7 -1
  74. package/dist/index.node.cjs +32980 -160
  75. package/dist/index.node.cjs.map +7 -1
  76. package/dist/index.node.d.ts +23 -210
  77. package/dist/index.node.js +32884 -133
  78. package/dist/index.node.js.map +7 -1
  79. package/dist/protocol/data-file.cjs +56 -0
  80. package/dist/protocol/data-file.cjs.map +1 -0
  81. package/dist/protocol/data-file.d.ts +20 -0
  82. package/dist/protocol/data-file.js +30 -0
  83. package/dist/protocol/data-file.js.map +1 -0
  84. package/dist/protocol/eip712.cjs +123 -0
  85. package/dist/protocol/eip712.cjs.map +1 -0
  86. package/dist/protocol/eip712.d.ts +117 -0
  87. package/dist/protocol/eip712.js +90 -0
  88. package/dist/protocol/eip712.js.map +1 -0
  89. package/dist/protocol/gateway.cjs +226 -0
  90. package/dist/protocol/gateway.cjs.map +1 -0
  91. package/dist/protocol/gateway.d.ts +120 -0
  92. package/dist/protocol/gateway.js +202 -0
  93. package/dist/protocol/gateway.js.map +1 -0
  94. package/dist/protocol/grants.cjs +146 -0
  95. package/dist/protocol/grants.cjs.map +1 -0
  96. package/dist/protocol/grants.d.ts +31 -0
  97. package/dist/protocol/grants.js +123 -0
  98. package/dist/protocol/grants.js.map +1 -0
  99. package/dist/protocol/scopes.cjs +78 -0
  100. package/dist/protocol/scopes.cjs.map +1 -0
  101. package/dist/protocol/scopes.d.ts +13 -0
  102. package/dist/protocol/scopes.js +50 -0
  103. package/dist/protocol/scopes.js.map +1 -0
  104. package/dist/{types/atomicStore.cjs → storage/default.cjs} +9 -8
  105. package/dist/storage/default.cjs.map +1 -0
  106. package/dist/storage/default.d.ts +4 -0
  107. package/dist/storage/default.js +8 -0
  108. package/dist/storage/default.js.map +1 -0
  109. package/dist/storage/index.cjs +11 -2
  110. package/dist/storage/index.cjs.map +1 -1
  111. package/dist/storage/index.d.ts +9 -0
  112. package/dist/storage/index.js +7 -1
  113. package/dist/storage/index.js.map +1 -1
  114. package/dist/storage/providers/callback-storage.cjs +1 -0
  115. package/dist/storage/providers/callback-storage.cjs.map +1 -1
  116. package/dist/storage/providers/callback-storage.js +1 -0
  117. package/dist/storage/providers/callback-storage.js.map +1 -1
  118. package/dist/storage/providers/dropbox.cjs +1 -0
  119. package/dist/storage/providers/dropbox.cjs.map +1 -1
  120. package/dist/storage/providers/dropbox.js +1 -0
  121. package/dist/storage/providers/dropbox.js.map +1 -1
  122. package/dist/storage/providers/google-drive.cjs +1 -0
  123. package/dist/storage/providers/google-drive.cjs.map +1 -1
  124. package/dist/storage/providers/google-drive.js +1 -0
  125. package/dist/storage/providers/google-drive.js.map +1 -1
  126. package/dist/storage/providers/ipfs.cjs +1 -0
  127. package/dist/storage/providers/ipfs.cjs.map +1 -1
  128. package/dist/storage/providers/ipfs.js +1 -0
  129. package/dist/storage/providers/ipfs.js.map +1 -1
  130. package/dist/storage/providers/pinata.cjs +1 -0
  131. package/dist/storage/providers/pinata.cjs.map +1 -1
  132. package/dist/storage/providers/pinata.js +1 -0
  133. package/dist/storage/providers/pinata.js.map +1 -1
  134. package/dist/storage/providers/r2.cjs +376 -0
  135. package/dist/storage/providers/r2.cjs.map +1 -0
  136. package/dist/storage/providers/r2.d.ts +91 -0
  137. package/dist/storage/providers/r2.js +354 -0
  138. package/dist/storage/providers/r2.js.map +1 -0
  139. package/dist/storage/providers/vana-storage.cjs +251 -0
  140. package/dist/storage/providers/vana-storage.cjs.map +1 -0
  141. package/dist/storage/providers/vana-storage.d.ts +100 -0
  142. package/dist/storage/providers/vana-storage.js +231 -0
  143. package/dist/storage/providers/vana-storage.js.map +1 -0
  144. package/dist/types/config.cjs +0 -34
  145. package/dist/types/config.cjs.map +1 -1
  146. package/dist/types/config.d.ts +1 -607
  147. package/dist/types/config.js +0 -22
  148. package/dist/types/config.js.map +1 -1
  149. package/dist/types/contracts.cjs.map +1 -1
  150. package/dist/types/contracts.d.ts +1 -1
  151. package/dist/types/index.cjs +2 -33
  152. package/dist/types/index.cjs.map +1 -1
  153. package/dist/types/index.d.ts +2 -33
  154. package/dist/types/index.js +1 -35
  155. package/dist/types/index.js.map +1 -1
  156. package/dist/types/ps-errors.cjs +91 -0
  157. package/dist/types/ps-errors.cjs.map +1 -0
  158. package/dist/types/ps-errors.d.ts +26 -0
  159. package/dist/types/ps-errors.js +66 -0
  160. package/dist/types/ps-errors.js.map +1 -0
  161. package/dist/types.cjs.map +1 -1
  162. package/dist/types.d.ts +0 -29
  163. package/dist/types.js.map +1 -1
  164. package/package.json +7 -25
  165. package/dist/client/enhancedResponse.cjs +0 -164
  166. package/dist/client/enhancedResponse.cjs.map +0 -1
  167. package/dist/client/enhancedResponse.d.ts +0 -120
  168. package/dist/client/enhancedResponse.js +0 -138
  169. package/dist/client/enhancedResponse.js.map +0 -1
  170. package/dist/controllers/__tests__/data-consistency-integration.test.d.ts +0 -7
  171. package/dist/controllers/base.cjs +0 -116
  172. package/dist/controllers/base.cjs.map +0 -1
  173. package/dist/controllers/base.d.ts +0 -94
  174. package/dist/controllers/base.js +0 -92
  175. package/dist/controllers/base.js.map +0 -1
  176. package/dist/controllers/data.cjs +0 -2633
  177. package/dist/controllers/data.cjs.map +0 -1
  178. package/dist/controllers/data.d.ts +0 -1067
  179. package/dist/controllers/data.js +0 -2626
  180. package/dist/controllers/data.js.map +0 -1
  181. package/dist/controllers/operations.cjs +0 -430
  182. package/dist/controllers/operations.cjs.map +0 -1
  183. package/dist/controllers/operations.d.ts +0 -229
  184. package/dist/controllers/operations.js +0 -406
  185. package/dist/controllers/operations.js.map +0 -1
  186. package/dist/controllers/permissions.cjs +0 -4368
  187. package/dist/controllers/permissions.cjs.map +0 -1
  188. package/dist/controllers/permissions.d.ts +0 -1411
  189. package/dist/controllers/permissions.js +0 -4344
  190. package/dist/controllers/permissions.js.map +0 -1
  191. package/dist/controllers/protocol.cjs +0 -183
  192. package/dist/controllers/protocol.cjs.map +0 -1
  193. package/dist/controllers/protocol.d.ts +0 -138
  194. package/dist/controllers/protocol.js +0 -163
  195. package/dist/controllers/protocol.js.map +0 -1
  196. package/dist/controllers/schemas.cjs +0 -678
  197. package/dist/controllers/schemas.cjs.map +0 -1
  198. package/dist/controllers/schemas.d.ts +0 -293
  199. package/dist/controllers/schemas.js +0 -654
  200. package/dist/controllers/schemas.js.map +0 -1
  201. package/dist/controllers/server.cjs +0 -643
  202. package/dist/controllers/server.cjs.map +0 -1
  203. package/dist/controllers/server.d.ts +0 -322
  204. package/dist/controllers/server.js +0 -624
  205. package/dist/controllers/server.js.map +0 -1
  206. package/dist/controllers/staking.cjs +0 -626
  207. package/dist/controllers/staking.cjs.map +0 -1
  208. package/dist/controllers/staking.d.ts +0 -457
  209. package/dist/controllers/staking.js +0 -602
  210. package/dist/controllers/staking.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 -781
  243. package/dist/core.cjs.map +0 -1
  244. package/dist/core.d.ts +0 -496
  245. package/dist/core.js +0 -756
  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/generated/abi/DLPPerformanceImplementation.cjs +0 -1202
  253. package/dist/generated/abi/DLPPerformanceImplementation.cjs.map +0 -1
  254. package/dist/generated/abi/DLPPerformanceImplementation.d.ts +0 -914
  255. package/dist/generated/abi/DLPPerformanceImplementation.js +0 -1178
  256. package/dist/generated/abi/DLPPerformanceImplementation.js.map +0 -1
  257. package/dist/generated/abi/DLPRewardDeployerImplementation.cjs +0 -1112
  258. package/dist/generated/abi/DLPRewardDeployerImplementation.cjs.map +0 -1
  259. package/dist/generated/abi/DLPRewardDeployerImplementation.d.ts +0 -840
  260. package/dist/generated/abi/DLPRewardDeployerImplementation.js +0 -1088
  261. package/dist/generated/abi/DLPRewardDeployerImplementation.js.map +0 -1
  262. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.cjs +0 -612
  263. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.cjs.map +0 -1
  264. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.d.ts +0 -451
  265. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.js +0 -588
  266. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.js.map +0 -1
  267. package/dist/generated/abi/DLPRewardSwapImplementation.cjs +0 -939
  268. package/dist/generated/abi/DLPRewardSwapImplementation.cjs.map +0 -1
  269. package/dist/generated/abi/DLPRewardSwapImplementation.d.ts +0 -705
  270. package/dist/generated/abi/DLPRewardSwapImplementation.js +0 -915
  271. package/dist/generated/abi/DLPRewardSwapImplementation.js.map +0 -1
  272. package/dist/generated/abi/DLPRootImplementation.cjs +0 -1644
  273. package/dist/generated/abi/DLPRootImplementation.cjs.map +0 -1
  274. package/dist/generated/abi/DLPRootImplementation.d.ts +0 -1246
  275. package/dist/generated/abi/DLPRootImplementation.js +0 -1620
  276. package/dist/generated/abi/DLPRootImplementation.js.map +0 -1
  277. package/dist/generated/abi/DataLiquidityPoolImplementation.cjs +0 -985
  278. package/dist/generated/abi/DataLiquidityPoolImplementation.cjs.map +0 -1
  279. package/dist/generated/abi/DataLiquidityPoolImplementation.d.ts +0 -735
  280. package/dist/generated/abi/DataLiquidityPoolImplementation.js +0 -961
  281. package/dist/generated/abi/DataLiquidityPoolImplementation.js.map +0 -1
  282. package/dist/generated/abi/SwapHelperImplementation.cjs +0 -976
  283. package/dist/generated/abi/SwapHelperImplementation.cjs.map +0 -1
  284. package/dist/generated/abi/SwapHelperImplementation.d.ts +0 -728
  285. package/dist/generated/abi/SwapHelperImplementation.js +0 -952
  286. package/dist/generated/abi/SwapHelperImplementation.js.map +0 -1
  287. package/dist/generated/abi/TeePoolImplementation.cjs +0 -1313
  288. package/dist/generated/abi/TeePoolImplementation.cjs.map +0 -1
  289. package/dist/generated/abi/TeePoolImplementation.d.ts +0 -992
  290. package/dist/generated/abi/TeePoolImplementation.js +0 -1289
  291. package/dist/generated/abi/TeePoolImplementation.js.map +0 -1
  292. package/dist/generated/event-types.cjs +0 -17
  293. package/dist/generated/event-types.cjs.map +0 -1
  294. package/dist/generated/event-types.d.ts +0 -816
  295. package/dist/generated/event-types.js +0 -1
  296. package/dist/generated/event-types.js.map +0 -1
  297. package/dist/generated/eventRegistry.cjs +0 -4512
  298. package/dist/generated/eventRegistry.cjs.map +0 -1
  299. package/dist/generated/eventRegistry.d.ts +0 -14
  300. package/dist/generated/eventRegistry.js +0 -4487
  301. package/dist/generated/eventRegistry.js.map +0 -1
  302. package/dist/generated/server/server-exports.cjs +0 -45
  303. package/dist/generated/server/server-exports.cjs.map +0 -1
  304. package/dist/generated/server/server-exports.d.ts +0 -36
  305. package/dist/generated/server/server-exports.js +0 -19
  306. package/dist/generated/server/server-exports.js.map +0 -1
  307. package/dist/generated/server/server.cjs +0 -17
  308. package/dist/generated/server/server.cjs.map +0 -1
  309. package/dist/generated/server/server.d.ts +0 -907
  310. package/dist/generated/server/server.js +0 -1
  311. package/dist/generated/server/server.js.map +0 -1
  312. package/dist/generated/subgraph.cjs +0 -1440
  313. package/dist/generated/subgraph.cjs.map +0 -1
  314. package/dist/generated/subgraph.d.ts +0 -6113
  315. package/dist/generated/subgraph.js +0 -1404
  316. package/dist/generated/subgraph.js.map +0 -1
  317. package/dist/lib/__tests__/redisAtomicStore.test.d.ts +0 -1
  318. package/dist/lib/redisAtomicStore.cjs +0 -201
  319. package/dist/lib/redisAtomicStore.cjs.map +0 -1
  320. package/dist/lib/redisAtomicStore.d.ts +0 -120
  321. package/dist/lib/redisAtomicStore.js +0 -177
  322. package/dist/lib/redisAtomicStore.js.map +0 -1
  323. package/dist/server/relayerHandler.cjs +0 -452
  324. package/dist/server/relayerHandler.cjs.map +0 -1
  325. package/dist/server/relayerHandler.d.ts +0 -69
  326. package/dist/server/relayerHandler.js +0 -428
  327. package/dist/server/relayerHandler.js.map +0 -1
  328. package/dist/tests/abi.test.d.ts +0 -1
  329. package/dist/tests/chains-definitions.test.d.ts +0 -1
  330. package/dist/tests/core-encryption.test.d.ts +0 -1
  331. package/dist/tests/core-extended.test.d.ts +0 -1
  332. package/dist/tests/core-generics-coverage.test.d.ts +0 -1
  333. package/dist/tests/coverage-boost.test.d.ts +0 -1
  334. package/dist/tests/crypto-cross-platform-compatibility.test.d.ts +0 -1
  335. package/dist/tests/data-addfile-permissions-schema.test.d.ts +0 -1
  336. package/dist/tests/data-additional-methods.test.d.ts +0 -1
  337. package/dist/tests/data-controller-edge-cases.test.d.ts +0 -1
  338. package/dist/tests/data-ipfs-gateways.test.d.ts +0 -1
  339. package/dist/tests/data-relayer.test.d.ts +0 -1
  340. package/dist/tests/data-schema-validation.test.d.ts +0 -1
  341. package/dist/tests/data-simple-methods.test.d.ts +0 -1
  342. package/dist/tests/data-upload-owner-validation.test.d.ts +0 -1
  343. package/dist/tests/data.test.d.ts +0 -1
  344. package/dist/tests/demo-integration.test.d.ts +0 -1
  345. package/dist/tests/demo-trusted-server-integration.test.d.ts +0 -1
  346. package/dist/tests/download-relayer.test.d.ts +0 -1
  347. package/dist/tests/dual-mode-permissions.test.d.ts +0 -1
  348. package/dist/tests/dual-mode-trusted-servers.test.d.ts +0 -1
  349. package/dist/tests/encryption-correct-implementation.test.d.ts +0 -1
  350. package/dist/tests/encryption-coverage.test.d.ts +0 -1
  351. package/dist/tests/encryption-edge-cases.test.d.ts +0 -1
  352. package/dist/tests/encryption-utils-updated.test.d.ts +0 -1
  353. package/dist/tests/errors-coverage.test.d.ts +0 -1
  354. package/dist/tests/factories/mockFactory.d.ts +0 -316
  355. package/dist/tests/fakes/FakeStorageManager.d.ts +0 -200
  356. package/dist/tests/fakes/FakeStorageManager.test.d.ts +0 -1
  357. package/dist/tests/fakes/FakeWaitForTransactionEvents.d.ts +0 -170
  358. package/dist/tests/fakes/FakeWaitForTransactionEvents.test.d.ts +0 -1
  359. package/dist/tests/fakes/fake-pgp-port.d.ts +0 -13
  360. package/dist/tests/grantValidation-edge-cases.test.d.ts +0 -1
  361. package/dist/tests/grantValidation-unreachable-branch.test.d.ts +0 -1
  362. package/dist/tests/helper-methods.test.d.ts +0 -1
  363. package/dist/tests/helpers/typedMocks.d.ts +0 -64
  364. package/dist/tests/index-browser.test.d.ts +0 -1
  365. package/dist/tests/index-node.test.d.ts +0 -1
  366. package/dist/tests/index.test.d.ts +0 -1
  367. package/dist/tests/mocks/platformAdapter.d.ts +0 -12
  368. package/dist/tests/new-permissions-methods.test.d.ts +0 -1
  369. package/dist/tests/no-buffer-browser.test.d.ts +0 -1
  370. package/dist/tests/permissions-grantee.test.d.ts +0 -1
  371. package/dist/tests/permissions-revoke-relayer.test.d.ts +0 -1
  372. package/dist/tests/permissions-schema-validation.test.d.ts +0 -1
  373. package/dist/tests/permissions-server-files.test.d.ts +0 -1
  374. package/dist/tests/permissions-transaction-options.test.d.ts +0 -1
  375. package/dist/tests/permissions-trust-servers.test.d.ts +0 -1
  376. package/dist/tests/permissions.test.d.ts +0 -1
  377. package/dist/tests/personal.test.d.ts +0 -1
  378. package/dist/tests/platform-browser.test.d.ts +0 -1
  379. package/dist/tests/platform-crypto-expanded.test.d.ts +0 -1
  380. package/dist/tests/platform-crypto.test.d.ts +0 -1
  381. package/dist/tests/platform-index.test.d.ts +0 -1
  382. package/dist/tests/platform-node.test.d.ts +0 -1
  383. package/dist/tests/platform-shared-utils.test.d.ts +0 -1
  384. package/dist/tests/platform-updated.test.d.ts +0 -1
  385. package/dist/tests/protocol-additional-methods.test.d.ts +0 -1
  386. package/dist/tests/protocol.test.d.ts +0 -1
  387. package/dist/tests/read-only-mode.test.d.ts +0 -1
  388. package/dist/tests/relayer-integration.test.d.ts +0 -1
  389. package/dist/tests/relayer-unified.test.d.ts +0 -1
  390. package/dist/tests/schemas.test.d.ts +0 -1
  391. package/dist/tests/server-relayer-handler.test.d.ts +0 -1
  392. package/dist/tests/signatureFormatter.test.d.ts +0 -1
  393. package/dist/tests/staking.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/grants.test.d.ts} +0 -0
  619. /package/dist/{core/core.test.d.ts → protocol/scopes.test.d.ts} +0 -0
  620. /package/dist/{core/tests/apiClient.test.d.ts → storage/tests/defaultStorage.test.d.ts} +0 -0
  621. /package/dist/{core/tests/client.test.d.ts → storage/tests/r2Storage.test.d.ts} +0 -0
  622. /package/dist/{core/tests/generics.test.d.ts → storage/tests/vanaStorage.test.d.ts} +0 -0
  623. /package/dist/{diagnostics.test.d.ts → types/ps-errors.test.d.ts} +0 -0
@@ -0,0 +1,376 @@
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 r2_exports = {};
20
+ __export(r2_exports, {
21
+ R2Storage: () => R2Storage
22
+ });
23
+ module.exports = __toCommonJS(r2_exports);
24
+ var import_hmac = require("@noble/hashes/hmac");
25
+ var import_sha2 = require("@noble/hashes/sha2");
26
+ var import__ = require("../index");
27
+ const SERVICE = "s3";
28
+ const DEFAULT_REGION = "auto";
29
+ class R2Storage {
30
+ constructor(config) {
31
+ this.config = config;
32
+ if (!config.accessKeyId) {
33
+ throw new import__.StorageError(
34
+ "R2 accessKeyId is required",
35
+ "MISSING_ACCESS_KEY",
36
+ "r2"
37
+ );
38
+ }
39
+ if (!config.secretAccessKey) {
40
+ throw new import__.StorageError(
41
+ "R2 secretAccessKey is required",
42
+ "MISSING_SECRET_KEY",
43
+ "r2"
44
+ );
45
+ }
46
+ if (!config.bucket) {
47
+ throw new import__.StorageError("R2 bucket is required", "MISSING_BUCKET", "r2");
48
+ }
49
+ if (!config.endpoint && !config.accountId) {
50
+ throw new import__.StorageError(
51
+ "R2 endpoint or accountId is required",
52
+ "MISSING_ENDPOINT",
53
+ "r2"
54
+ );
55
+ }
56
+ if (!config.publicUrl && !config.accountId) {
57
+ throw new import__.StorageError(
58
+ "R2 publicUrl is required when accountId is not provided",
59
+ "MISSING_PUBLIC_URL",
60
+ "r2"
61
+ );
62
+ }
63
+ this.bucket = config.bucket;
64
+ this.region = config.region ?? DEFAULT_REGION;
65
+ this.endpoint = (config.endpoint ?? `https://${config.accountId}.r2.cloudflarestorage.com`).replace(/\/$/, "");
66
+ this.publicUrl = (config.publicUrl ?? `https://${config.bucket}.${config.accountId}.r2.dev`).replace(/\/$/, "");
67
+ }
68
+ config;
69
+ endpoint;
70
+ publicUrl;
71
+ region;
72
+ bucket;
73
+ async upload(file, filename) {
74
+ const key = filename ?? `vana-${Date.now()}-${randomSuffix()}.dat`;
75
+ const body = new Uint8Array(await file.arrayBuffer());
76
+ const contentType = file.type !== "" ? file.type : "application/octet-stream";
77
+ try {
78
+ const signed = await this.signRequest({
79
+ method: "PUT",
80
+ path: `/${this.bucket}/${encodePath(key)}`,
81
+ body,
82
+ extraHeaders: { "content-type": contentType }
83
+ });
84
+ const response = await fetch(signed.url, {
85
+ method: "PUT",
86
+ headers: signed.headers,
87
+ body
88
+ });
89
+ if (!response.ok) {
90
+ throw new import__.StorageError(
91
+ `R2 upload failed: ${response.status} ${response.statusText} - ${await safeText(response)}`,
92
+ "UPLOAD_FAILED",
93
+ "r2"
94
+ );
95
+ }
96
+ return {
97
+ url: `${this.publicUrl}/${encodePath(key)}`,
98
+ size: file.size,
99
+ contentType
100
+ };
101
+ } catch (error) {
102
+ throw wrapError(error, "UPLOAD_ERROR", "r2");
103
+ }
104
+ }
105
+ async download(url) {
106
+ const key = this.extractKey(url);
107
+ if (!key) {
108
+ throw new import__.StorageError(
109
+ `Could not extract object key from URL: ${url}`,
110
+ "INVALID_URL",
111
+ "r2"
112
+ );
113
+ }
114
+ try {
115
+ const signed = await this.signRequest({
116
+ method: "GET",
117
+ path: `/${this.bucket}/${encodePath(key)}`
118
+ });
119
+ const response = await fetch(signed.url, {
120
+ method: "GET",
121
+ headers: signed.headers
122
+ });
123
+ if (!response.ok) {
124
+ throw new import__.StorageError(
125
+ `R2 download failed: ${response.status} ${response.statusText}`,
126
+ "DOWNLOAD_FAILED",
127
+ "r2"
128
+ );
129
+ }
130
+ return await response.blob();
131
+ } catch (error) {
132
+ throw wrapError(error, "DOWNLOAD_ERROR", "r2");
133
+ }
134
+ }
135
+ async list(options) {
136
+ try {
137
+ const params = new URLSearchParams({ "list-type": "2" });
138
+ if (options?.namePattern) {
139
+ params.set("prefix", options.namePattern);
140
+ }
141
+ if (options?.limit !== void 0) {
142
+ params.set("max-keys", String(options.limit));
143
+ }
144
+ if (options?.offset !== void 0) {
145
+ params.set("continuation-token", String(options.offset));
146
+ }
147
+ const signed = await this.signRequest({
148
+ method: "GET",
149
+ path: `/${this.bucket}`,
150
+ query: params
151
+ });
152
+ const response = await fetch(signed.url, {
153
+ method: "GET",
154
+ headers: signed.headers
155
+ });
156
+ if (!response.ok) {
157
+ throw new import__.StorageError(
158
+ `R2 list failed: ${response.status} ${response.statusText}`,
159
+ "LIST_FAILED",
160
+ "r2"
161
+ );
162
+ }
163
+ const xml = await response.text();
164
+ return parseListObjects(xml).map((obj) => ({
165
+ id: obj.key,
166
+ name: obj.key,
167
+ url: `${this.publicUrl}/${encodePath(obj.key)}`,
168
+ size: obj.size,
169
+ contentType: "application/octet-stream",
170
+ createdAt: obj.lastModified
171
+ }));
172
+ } catch (error) {
173
+ throw wrapError(error, "LIST_ERROR", "r2");
174
+ }
175
+ }
176
+ async delete(url) {
177
+ const key = this.extractKey(url);
178
+ if (!key) {
179
+ throw new import__.StorageError(
180
+ `Could not extract object key from URL: ${url}`,
181
+ "INVALID_URL",
182
+ "r2"
183
+ );
184
+ }
185
+ try {
186
+ const signed = await this.signRequest({
187
+ method: "DELETE",
188
+ path: `/${this.bucket}/${encodePath(key)}`
189
+ });
190
+ const response = await fetch(signed.url, {
191
+ method: "DELETE",
192
+ headers: signed.headers
193
+ });
194
+ if (!response.ok && response.status !== 204) {
195
+ throw new import__.StorageError(
196
+ `R2 delete failed: ${response.status} ${response.statusText}`,
197
+ "DELETE_FAILED",
198
+ "r2"
199
+ );
200
+ }
201
+ return true;
202
+ } catch (error) {
203
+ throw wrapError(error, "DELETE_ERROR", "r2");
204
+ }
205
+ }
206
+ getConfig() {
207
+ return {
208
+ name: "Cloudflare R2",
209
+ type: "r2",
210
+ requiresAuth: true,
211
+ features: {
212
+ upload: true,
213
+ download: true,
214
+ list: true,
215
+ delete: true
216
+ }
217
+ };
218
+ }
219
+ /**
220
+ * Extract the object key from a URL. Accepts public URLs minted by `upload()`
221
+ * as well as raw keys for callers that already track them out-of-band.
222
+ *
223
+ * @internal
224
+ */
225
+ extractKey(urlOrKey) {
226
+ if (urlOrKey.startsWith(this.publicUrl + "/")) {
227
+ return decodeURIComponent(urlOrKey.slice(this.publicUrl.length + 1));
228
+ }
229
+ if (urlOrKey.startsWith(this.endpoint + "/")) {
230
+ const rest = urlOrKey.slice(this.endpoint.length + 1);
231
+ const slash = rest.indexOf("/");
232
+ return slash === -1 ? null : decodeURIComponent(rest.slice(slash + 1));
233
+ }
234
+ if (!urlOrKey.includes("://")) {
235
+ return urlOrKey;
236
+ }
237
+ return null;
238
+ }
239
+ async signRequest(req) {
240
+ const { host } = new URL(this.endpoint);
241
+ const now = /* @__PURE__ */ new Date();
242
+ const amzDate = formatAmzDate(now);
243
+ const dateStamp = amzDate.slice(0, 8);
244
+ const payloadHash = req.body ? toHex((0, import_sha2.sha256)(req.body)) : EMPTY_PAYLOAD_HASH;
245
+ const canonicalQuery = req.query ? canonicalizeQuery(req.query) : "";
246
+ const headers = {
247
+ host,
248
+ "x-amz-content-sha256": payloadHash,
249
+ "x-amz-date": amzDate,
250
+ ...req.extraHeaders ?? {}
251
+ };
252
+ const sortedHeaderNames = Object.keys(headers).map((h) => h.toLowerCase()).sort();
253
+ const canonicalHeaders = sortedHeaderNames.map((h) => `${h}:${headers[h].trim().replace(/\s+/g, " ")}`).join("\n") + "\n";
254
+ const signedHeaders = sortedHeaderNames.join(";");
255
+ const canonicalRequest = [
256
+ req.method,
257
+ req.path,
258
+ canonicalQuery,
259
+ canonicalHeaders,
260
+ signedHeaders,
261
+ payloadHash
262
+ ].join("\n");
263
+ const credentialScope = `${dateStamp}/${this.region}/${SERVICE}/aws4_request`;
264
+ const stringToSign = [
265
+ "AWS4-HMAC-SHA256",
266
+ amzDate,
267
+ credentialScope,
268
+ toHex((0, import_sha2.sha256)(new TextEncoder().encode(canonicalRequest)))
269
+ ].join("\n");
270
+ const signingKey = deriveSigningKey(
271
+ this.config.secretAccessKey,
272
+ dateStamp,
273
+ this.region,
274
+ SERVICE
275
+ );
276
+ const signature = toHex(
277
+ (0, import_hmac.hmac)(import_sha2.sha256, signingKey, new TextEncoder().encode(stringToSign))
278
+ );
279
+ headers.authorization = `AWS4-HMAC-SHA256 Credential=${this.config.accessKeyId}/${credentialScope}, SignedHeaders=${signedHeaders}, Signature=${signature}`;
280
+ const url = this.endpoint + req.path + (canonicalQuery !== "" ? `?${canonicalQuery}` : "");
281
+ return { url, headers };
282
+ }
283
+ }
284
+ const EMPTY_PAYLOAD_HASH = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";
285
+ function deriveSigningKey(secret, dateStamp, region, service) {
286
+ const enc = new TextEncoder();
287
+ const kDate = (0, import_hmac.hmac)(
288
+ import_sha2.sha256,
289
+ enc.encode(`AWS4${secret}`),
290
+ enc.encode(dateStamp)
291
+ );
292
+ const kRegion = (0, import_hmac.hmac)(import_sha2.sha256, kDate, enc.encode(region));
293
+ const kService = (0, import_hmac.hmac)(import_sha2.sha256, kRegion, enc.encode(service));
294
+ return (0, import_hmac.hmac)(import_sha2.sha256, kService, enc.encode("aws4_request"));
295
+ }
296
+ function formatAmzDate(date) {
297
+ const iso = date.toISOString();
298
+ return iso.replace(/[-:]/g, "").replace(/\.\d+/, "");
299
+ }
300
+ function toHex(bytes) {
301
+ let s = "";
302
+ for (let i = 0; i < bytes.length; i++) {
303
+ s += bytes[i].toString(16).padStart(2, "0");
304
+ }
305
+ return s;
306
+ }
307
+ function rfc3986Encode(value) {
308
+ return encodeURIComponent(value).replace(
309
+ /[!'()*]/g,
310
+ (c) => "%" + c.charCodeAt(0).toString(16).toUpperCase()
311
+ );
312
+ }
313
+ function encodePath(key) {
314
+ return key.split("/").map(rfc3986Encode).join("/");
315
+ }
316
+ function canonicalizeQuery(params) {
317
+ const entries = [];
318
+ for (const [k, v] of params.entries()) {
319
+ entries.push([k, v]);
320
+ }
321
+ entries.sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);
322
+ return entries.map(([k, v]) => `${rfc3986Encode(k)}=${rfc3986Encode(v)}`).join("&");
323
+ }
324
+ function parseListObjects(xml) {
325
+ const out = [];
326
+ const contentsRe = /<Contents>([\s\S]*?)<\/Contents>/g;
327
+ let match;
328
+ while ((match = contentsRe.exec(xml)) !== null) {
329
+ const block = match[1];
330
+ const key = matchTag(block, "Key");
331
+ const size = matchTag(block, "Size");
332
+ const lastModified = matchTag(block, "LastModified");
333
+ if (key === null) {
334
+ continue;
335
+ }
336
+ out.push({
337
+ key: decodeXmlEntities(key),
338
+ size: size !== null ? parseInt(size, 10) || 0 : 0,
339
+ lastModified: lastModified !== null ? new Date(lastModified) : /* @__PURE__ */ new Date(0)
340
+ });
341
+ }
342
+ return out;
343
+ }
344
+ function matchTag(block, tag) {
345
+ const re = new RegExp(`<${tag}>([\\s\\S]*?)<\\/${tag}>`);
346
+ const m = re.exec(block);
347
+ return m === null ? null : m[1];
348
+ }
349
+ function decodeXmlEntities(s) {
350
+ return s.replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, '"').replace(/&apos;/g, "'");
351
+ }
352
+ function randomSuffix() {
353
+ return Math.random().toString(36).slice(2, 10);
354
+ }
355
+ async function safeText(response) {
356
+ try {
357
+ return await response.text();
358
+ } catch {
359
+ return "";
360
+ }
361
+ }
362
+ function wrapError(error, code, provider) {
363
+ if (error instanceof import__.StorageError) {
364
+ return error;
365
+ }
366
+ return new import__.StorageError(
367
+ `R2 error: ${error instanceof Error ? error.message : "Unknown error"}`,
368
+ code,
369
+ provider
370
+ );
371
+ }
372
+ // Annotate the CommonJS export names for ESM import in node:
373
+ 0 && (module.exports = {
374
+ R2Storage
375
+ });
376
+ //# sourceMappingURL=r2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/storage/providers/r2.ts"],"sourcesContent":["import { hmac } from \"@noble/hashes/hmac\";\nimport { sha256 } from \"@noble/hashes/sha2\";\n\nimport {\n StorageError,\n type StorageProvider,\n type StorageUploadResult,\n type StorageFile,\n type StorageListOptions,\n type StorageProviderConfig,\n} from \"../index\";\n\n/**\n * Configuration for {@link R2Storage}.\n *\n * @category Storage\n */\nexport interface R2Config {\n /** Cloudflare account ID. Used to derive the S3 endpoint when `endpoint` is not given. */\n accountId?: string;\n /**\n * Full S3 endpoint URL. Overrides `accountId`.\n *\n * Defaults to `https://{accountId}.r2.cloudflarestorage.com`.\n */\n endpoint?: string;\n /** R2 access key ID. */\n accessKeyId: string;\n /** R2 secret access key. */\n secretAccessKey: string;\n /** Bucket name. */\n bucket: string;\n /**\n * Public URL prefix used when constructing the URL returned by {@link R2Storage.upload}.\n *\n * If unset, defaults to `https://{bucket}.{accountId}.r2.dev` (R2's default public hostname).\n * Set this to a custom domain bound to the bucket if you have one.\n */\n publicUrl?: string;\n /**\n * S3 region. R2 expects `auto`; consumers can override for compatibility with other\n * S3-compatible stores reachable through the same code path.\n */\n region?: string;\n}\n\ninterface SignedRequest {\n url: string;\n headers: Record<string, string>;\n}\n\nconst SERVICE = \"s3\";\nconst DEFAULT_REGION = \"auto\";\n\n/**\n * Cloudflare R2 storage provider.\n *\n * @remarks\n * Uses R2's S3-compatible API with SigV4 signed `fetch` requests, so the same\n * implementation runs in browsers, Node.js, and Workers without pulling in\n * `@aws-sdk/client-s3`. Treats blobs as opaque - encryption, access control,\n * and per-tenant prefixing are out of scope and live in higher layers.\n *\n * The SDK exposes R2 as the recommended default backend. Other providers\n * (Pinata, IPFS, Google Drive, Dropbox, CallbackStorage) remain available for\n * teams that need IPFS semantics or user-owned storage.\n *\n * @category Storage\n *\n * @example\n * ```typescript\n * import { R2Storage, StorageManager } from \"@opendatalabs/vana-sdk/node\";\n *\n * const storage = new StorageManager();\n * storage.register(\n * \"r2\",\n * new R2Storage({\n * accountId: process.env.R2_ACCOUNT_ID!,\n * accessKeyId: process.env.R2_ACCESS_KEY_ID!,\n * secretAccessKey: process.env.R2_SECRET_ACCESS_KEY!,\n * bucket: process.env.R2_BUCKET!,\n * publicUrl: \"https://files.example.com\",\n * }),\n * true,\n * );\n *\n * const result = await storage.upload(myBlob, \"report.json\");\n * console.log(result.url);\n * ```\n */\nexport class R2Storage implements StorageProvider {\n private readonly endpoint: string;\n private readonly publicUrl: string;\n private readonly region: string;\n private readonly bucket: string;\n\n constructor(private readonly config: R2Config) {\n if (!config.accessKeyId) {\n throw new StorageError(\n \"R2 accessKeyId is required\",\n \"MISSING_ACCESS_KEY\",\n \"r2\",\n );\n }\n if (!config.secretAccessKey) {\n throw new StorageError(\n \"R2 secretAccessKey is required\",\n \"MISSING_SECRET_KEY\",\n \"r2\",\n );\n }\n if (!config.bucket) {\n throw new StorageError(\"R2 bucket is required\", \"MISSING_BUCKET\", \"r2\");\n }\n if (!config.endpoint && !config.accountId) {\n throw new StorageError(\n \"R2 endpoint or accountId is required\",\n \"MISSING_ENDPOINT\",\n \"r2\",\n );\n }\n if (!config.publicUrl && !config.accountId) {\n throw new StorageError(\n \"R2 publicUrl is required when accountId is not provided\",\n \"MISSING_PUBLIC_URL\",\n \"r2\",\n );\n }\n\n this.bucket = config.bucket;\n this.region = config.region ?? DEFAULT_REGION;\n this.endpoint = (\n config.endpoint ?? `https://${config.accountId}.r2.cloudflarestorage.com`\n ).replace(/\\/$/, \"\");\n this.publicUrl = (\n config.publicUrl ?? `https://${config.bucket}.${config.accountId}.r2.dev`\n ).replace(/\\/$/, \"\");\n }\n\n async upload(file: Blob, filename?: string): Promise<StorageUploadResult> {\n const key = filename ?? `vana-${Date.now()}-${randomSuffix()}.dat`;\n const body = new Uint8Array(await file.arrayBuffer());\n const contentType =\n file.type !== \"\" ? file.type : \"application/octet-stream\";\n\n try {\n const signed = await this.signRequest({\n method: \"PUT\",\n path: `/${this.bucket}/${encodePath(key)}`,\n body,\n extraHeaders: { \"content-type\": contentType },\n });\n\n const response = await fetch(signed.url, {\n method: \"PUT\",\n headers: signed.headers,\n body,\n });\n\n if (!response.ok) {\n throw new StorageError(\n `R2 upload failed: ${response.status} ${response.statusText} - ${await safeText(response)}`,\n \"UPLOAD_FAILED\",\n \"r2\",\n );\n }\n\n return {\n url: `${this.publicUrl}/${encodePath(key)}`,\n size: file.size,\n contentType,\n };\n } catch (error) {\n throw wrapError(error, \"UPLOAD_ERROR\", \"r2\");\n }\n }\n\n async download(url: string): Promise<Blob> {\n const key = this.extractKey(url);\n if (!key) {\n throw new StorageError(\n `Could not extract object key from URL: ${url}`,\n \"INVALID_URL\",\n \"r2\",\n );\n }\n\n try {\n const signed = await this.signRequest({\n method: \"GET\",\n path: `/${this.bucket}/${encodePath(key)}`,\n });\n\n const response = await fetch(signed.url, {\n method: \"GET\",\n headers: signed.headers,\n });\n\n if (!response.ok) {\n throw new StorageError(\n `R2 download failed: ${response.status} ${response.statusText}`,\n \"DOWNLOAD_FAILED\",\n \"r2\",\n );\n }\n\n return await response.blob();\n } catch (error) {\n throw wrapError(error, \"DOWNLOAD_ERROR\", \"r2\");\n }\n }\n\n async list(options?: StorageListOptions): Promise<StorageFile[]> {\n try {\n const params = new URLSearchParams({ \"list-type\": \"2\" });\n if (options?.namePattern) {\n params.set(\"prefix\", options.namePattern);\n }\n if (options?.limit !== undefined) {\n params.set(\"max-keys\", String(options.limit));\n }\n if (options?.offset !== undefined) {\n params.set(\"continuation-token\", String(options.offset));\n }\n\n const signed = await this.signRequest({\n method: \"GET\",\n path: `/${this.bucket}`,\n query: params,\n });\n\n const response = await fetch(signed.url, {\n method: \"GET\",\n headers: signed.headers,\n });\n\n if (!response.ok) {\n throw new StorageError(\n `R2 list failed: ${response.status} ${response.statusText}`,\n \"LIST_FAILED\",\n \"r2\",\n );\n }\n\n const xml = await response.text();\n return parseListObjects(xml).map((obj) => ({\n id: obj.key,\n name: obj.key,\n url: `${this.publicUrl}/${encodePath(obj.key)}`,\n size: obj.size,\n contentType: \"application/octet-stream\",\n createdAt: obj.lastModified,\n }));\n } catch (error) {\n throw wrapError(error, \"LIST_ERROR\", \"r2\");\n }\n }\n\n async delete(url: string): Promise<boolean> {\n const key = this.extractKey(url);\n if (!key) {\n throw new StorageError(\n `Could not extract object key from URL: ${url}`,\n \"INVALID_URL\",\n \"r2\",\n );\n }\n\n try {\n const signed = await this.signRequest({\n method: \"DELETE\",\n path: `/${this.bucket}/${encodePath(key)}`,\n });\n\n const response = await fetch(signed.url, {\n method: \"DELETE\",\n headers: signed.headers,\n });\n\n if (!response.ok && response.status !== 204) {\n throw new StorageError(\n `R2 delete failed: ${response.status} ${response.statusText}`,\n \"DELETE_FAILED\",\n \"r2\",\n );\n }\n\n return true;\n } catch (error) {\n throw wrapError(error, \"DELETE_ERROR\", \"r2\");\n }\n }\n\n getConfig(): StorageProviderConfig {\n return {\n name: \"Cloudflare R2\",\n type: \"r2\",\n requiresAuth: true,\n features: {\n upload: true,\n download: true,\n list: true,\n delete: true,\n },\n };\n }\n\n /**\n * Extract the object key from a URL. Accepts public URLs minted by `upload()`\n * as well as raw keys for callers that already track them out-of-band.\n *\n * @internal\n */\n private extractKey(urlOrKey: string): string | null {\n if (urlOrKey.startsWith(this.publicUrl + \"/\")) {\n return decodeURIComponent(urlOrKey.slice(this.publicUrl.length + 1));\n }\n if (urlOrKey.startsWith(this.endpoint + \"/\")) {\n const rest = urlOrKey.slice(this.endpoint.length + 1);\n const slash = rest.indexOf(\"/\");\n return slash === -1 ? null : decodeURIComponent(rest.slice(slash + 1));\n }\n if (!urlOrKey.includes(\"://\")) {\n return urlOrKey;\n }\n return null;\n }\n\n private async signRequest(req: {\n method: string;\n path: string;\n query?: URLSearchParams;\n body?: Uint8Array;\n extraHeaders?: Record<string, string>;\n }): Promise<SignedRequest> {\n // SigV4's host header must include the port for non-default ports\n // (e.g. localhost:9000 for S3-compatible test endpoints). URL.host keeps\n // the port; URL.hostname strips it.\n const { host } = new URL(this.endpoint);\n const now = new Date();\n const amzDate = formatAmzDate(now);\n const dateStamp = amzDate.slice(0, 8);\n\n const payloadHash = req.body ? toHex(sha256(req.body)) : EMPTY_PAYLOAD_HASH;\n\n const canonicalQuery = req.query ? canonicalizeQuery(req.query) : \"\";\n\n const headers: Record<string, string> = {\n host,\n \"x-amz-content-sha256\": payloadHash,\n \"x-amz-date\": amzDate,\n ...(req.extraHeaders ?? {}),\n };\n\n const sortedHeaderNames = Object.keys(headers)\n .map((h) => h.toLowerCase())\n .sort();\n const canonicalHeaders =\n sortedHeaderNames\n .map((h) => `${h}:${headers[h].trim().replace(/\\s+/g, \" \")}`)\n .join(\"\\n\") + \"\\n\";\n const signedHeaders = sortedHeaderNames.join(\";\");\n\n const canonicalRequest = [\n req.method,\n req.path,\n canonicalQuery,\n canonicalHeaders,\n signedHeaders,\n payloadHash,\n ].join(\"\\n\");\n\n const credentialScope = `${dateStamp}/${this.region}/${SERVICE}/aws4_request`;\n const stringToSign = [\n \"AWS4-HMAC-SHA256\",\n amzDate,\n credentialScope,\n toHex(sha256(new TextEncoder().encode(canonicalRequest))),\n ].join(\"\\n\");\n\n const signingKey = deriveSigningKey(\n this.config.secretAccessKey,\n dateStamp,\n this.region,\n SERVICE,\n );\n const signature = toHex(\n hmac(sha256, signingKey, new TextEncoder().encode(stringToSign)),\n );\n\n headers.authorization = `AWS4-HMAC-SHA256 Credential=${this.config.accessKeyId}/${credentialScope}, SignedHeaders=${signedHeaders}, Signature=${signature}`;\n\n const url =\n this.endpoint +\n req.path +\n (canonicalQuery !== \"\" ? `?${canonicalQuery}` : \"\");\n\n return { url, headers };\n }\n}\n\nconst EMPTY_PAYLOAD_HASH =\n \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\";\n\nfunction deriveSigningKey(\n secret: string,\n dateStamp: string,\n region: string,\n service: string,\n): Uint8Array {\n const enc = new TextEncoder();\n const kDate = hmac(\n sha256,\n enc.encode(`AWS4${secret}`),\n enc.encode(dateStamp),\n );\n const kRegion = hmac(sha256, kDate, enc.encode(region));\n const kService = hmac(sha256, kRegion, enc.encode(service));\n return hmac(sha256, kService, enc.encode(\"aws4_request\"));\n}\n\nfunction formatAmzDate(date: Date): string {\n // YYYYMMDDTHHMMSSZ\n const iso = date.toISOString();\n return iso.replace(/[-:]/g, \"\").replace(/\\.\\d+/, \"\");\n}\n\nfunction toHex(bytes: Uint8Array): string {\n let s = \"\";\n for (let i = 0; i < bytes.length; i++) {\n s += bytes[i].toString(16).padStart(2, \"0\");\n }\n return s;\n}\n\n/**\n * RFC 3986-compliant percent-encoding. `encodeURIComponent` leaves `! ' ( ) *`\n * unescaped, but AWS SigV4 (and RFC 3986 reserved sub-delims) require them\n * encoded. Used for both path segments and query keys/values.\n */\nfunction rfc3986Encode(value: string): string {\n return encodeURIComponent(value).replace(\n /[!'()*]/g,\n (c) => \"%\" + c.charCodeAt(0).toString(16).toUpperCase(),\n );\n}\n\n/**\n * Encode each path segment per AWS canonical-URI rules. Slashes between segments\n * are preserved; everything else (including `+`, `=`, etc.) is percent-encoded.\n */\nfunction encodePath(key: string): string {\n return key.split(\"/\").map(rfc3986Encode).join(\"/\");\n}\n\nfunction canonicalizeQuery(params: URLSearchParams): string {\n const entries: [string, string][] = [];\n for (const [k, v] of params.entries()) {\n entries.push([k, v]);\n }\n entries.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));\n return entries\n .map(([k, v]) => `${rfc3986Encode(k)}=${rfc3986Encode(v)}`)\n .join(\"&\");\n}\n\ninterface ListObject {\n key: string;\n size: number;\n lastModified: Date;\n}\n\nfunction parseListObjects(xml: string): ListObject[] {\n const out: ListObject[] = [];\n const contentsRe = /<Contents>([\\s\\S]*?)<\\/Contents>/g;\n let match: RegExpExecArray | null;\n while ((match = contentsRe.exec(xml)) !== null) {\n const block = match[1];\n const key = matchTag(block, \"Key\");\n const size = matchTag(block, \"Size\");\n const lastModified = matchTag(block, \"LastModified\");\n if (key === null) {\n continue;\n }\n out.push({\n key: decodeXmlEntities(key),\n size: size !== null ? parseInt(size, 10) || 0 : 0,\n lastModified:\n lastModified !== null ? new Date(lastModified) : new Date(0),\n });\n }\n return out;\n}\n\nfunction matchTag(block: string, tag: string): string | null {\n const re = new RegExp(`<${tag}>([\\\\s\\\\S]*?)<\\\\/${tag}>`);\n const m = re.exec(block);\n return m === null ? null : m[1];\n}\n\nfunction decodeXmlEntities(s: string): string {\n return s\n .replace(/&amp;/g, \"&\")\n .replace(/&lt;/g, \"<\")\n .replace(/&gt;/g, \">\")\n .replace(/&quot;/g, '\"')\n .replace(/&apos;/g, \"'\");\n}\n\nfunction randomSuffix(): string {\n return Math.random().toString(36).slice(2, 10);\n}\n\nasync function safeText(response: Response): Promise<string> {\n try {\n return await response.text();\n } catch {\n return \"\";\n }\n}\n\nfunction wrapError(error: unknown, code: string, provider: string): Error {\n if (error instanceof StorageError) {\n return error;\n }\n return new StorageError(\n `R2 error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n code,\n provider,\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAqB;AACrB,kBAAuB;AAEvB,eAOO;AAyCP,MAAM,UAAU;AAChB,MAAM,iBAAiB;AAsChB,MAAM,UAAqC;AAAA,EAMhD,YAA6B,QAAkB;AAAlB;AAC3B,QAAI,CAAC,OAAO,aAAa;AACvB,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,QAAI,CAAC,OAAO,iBAAiB;AAC3B,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,QAAI,CAAC,OAAO,QAAQ;AAClB,YAAM,IAAI,sBAAa,yBAAyB,kBAAkB,IAAI;AAAA,IACxE;AACA,QAAI,CAAC,OAAO,YAAY,CAAC,OAAO,WAAW;AACzC,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,QAAI,CAAC,OAAO,aAAa,CAAC,OAAO,WAAW;AAC1C,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,SAAK,SAAS,OAAO;AACrB,SAAK,SAAS,OAAO,UAAU;AAC/B,SAAK,YACH,OAAO,YAAY,WAAW,OAAO,SAAS,6BAC9C,QAAQ,OAAO,EAAE;AACnB,SAAK,aACH,OAAO,aAAa,WAAW,OAAO,MAAM,IAAI,OAAO,SAAS,WAChE,QAAQ,OAAO,EAAE;AAAA,EACrB;AAAA,EAzC6B;AAAA,EALZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EA6CjB,MAAM,OAAO,MAAY,UAAiD;AACxE,UAAM,MAAM,YAAY,QAAQ,KAAK,IAAI,CAAC,IAAI,aAAa,CAAC;AAC5D,UAAM,OAAO,IAAI,WAAW,MAAM,KAAK,YAAY,CAAC;AACpD,UAAM,cACJ,KAAK,SAAS,KAAK,KAAK,OAAO;AAEjC,QAAI;AACF,YAAM,SAAS,MAAM,KAAK,YAAY;AAAA,QACpC,QAAQ;AAAA,QACR,MAAM,IAAI,KAAK,MAAM,IAAI,WAAW,GAAG,CAAC;AAAA,QACxC;AAAA,QACA,cAAc,EAAE,gBAAgB,YAAY;AAAA,MAC9C,CAAC;AAED,YAAM,WAAW,MAAM,MAAM,OAAO,KAAK;AAAA,QACvC,QAAQ;AAAA,QACR,SAAS,OAAO;AAAA,QAChB;AAAA,MACF,CAAC;AAED,UAAI,CAAC,SAAS,IAAI;AAChB,cAAM,IAAI;AAAA,UACR,qBAAqB,SAAS,MAAM,IAAI,SAAS,UAAU,MAAM,MAAM,SAAS,QAAQ,CAAC;AAAA,UACzF;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,QACL,KAAK,GAAG,KAAK,SAAS,IAAI,WAAW,GAAG,CAAC;AAAA,QACzC,MAAM,KAAK;AAAA,QACX;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,YAAM,UAAU,OAAO,gBAAgB,IAAI;AAAA,IAC7C;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,KAA4B;AACzC,UAAM,MAAM,KAAK,WAAW,GAAG;AAC/B,QAAI,CAAC,KAAK;AACR,YAAM,IAAI;AAAA,QACR,0CAA0C,GAAG;AAAA,QAC7C;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,QAAI;AACF,YAAM,SAAS,MAAM,KAAK,YAAY;AAAA,QACpC,QAAQ;AAAA,QACR,MAAM,IAAI,KAAK,MAAM,IAAI,WAAW,GAAG,CAAC;AAAA,MAC1C,CAAC;AAED,YAAM,WAAW,MAAM,MAAM,OAAO,KAAK;AAAA,QACvC,QAAQ;AAAA,QACR,SAAS,OAAO;AAAA,MAClB,CAAC;AAED,UAAI,CAAC,SAAS,IAAI;AAChB,cAAM,IAAI;AAAA,UACR,uBAAuB,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,UAC7D;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,aAAO,MAAM,SAAS,KAAK;AAAA,IAC7B,SAAS,OAAO;AACd,YAAM,UAAU,OAAO,kBAAkB,IAAI;AAAA,IAC/C;AAAA,EACF;AAAA,EAEA,MAAM,KAAK,SAAsD;AAC/D,QAAI;AACF,YAAM,SAAS,IAAI,gBAAgB,EAAE,aAAa,IAAI,CAAC;AACvD,UAAI,SAAS,aAAa;AACxB,eAAO,IAAI,UAAU,QAAQ,WAAW;AAAA,MAC1C;AACA,UAAI,SAAS,UAAU,QAAW;AAChC,eAAO,IAAI,YAAY,OAAO,QAAQ,KAAK,CAAC;AAAA,MAC9C;AACA,UAAI,SAAS,WAAW,QAAW;AACjC,eAAO,IAAI,sBAAsB,OAAO,QAAQ,MAAM,CAAC;AAAA,MACzD;AAEA,YAAM,SAAS,MAAM,KAAK,YAAY;AAAA,QACpC,QAAQ;AAAA,QACR,MAAM,IAAI,KAAK,MAAM;AAAA,QACrB,OAAO;AAAA,MACT,CAAC;AAED,YAAM,WAAW,MAAM,MAAM,OAAO,KAAK;AAAA,QACvC,QAAQ;AAAA,QACR,SAAS,OAAO;AAAA,MAClB,CAAC;AAED,UAAI,CAAC,SAAS,IAAI;AAChB,cAAM,IAAI;AAAA,UACR,mBAAmB,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,UACzD;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,YAAM,MAAM,MAAM,SAAS,KAAK;AAChC,aAAO,iBAAiB,GAAG,EAAE,IAAI,CAAC,SAAS;AAAA,QACzC,IAAI,IAAI;AAAA,QACR,MAAM,IAAI;AAAA,QACV,KAAK,GAAG,KAAK,SAAS,IAAI,WAAW,IAAI,GAAG,CAAC;AAAA,QAC7C,MAAM,IAAI;AAAA,QACV,aAAa;AAAA,QACb,WAAW,IAAI;AAAA,MACjB,EAAE;AAAA,IACJ,SAAS,OAAO;AACd,YAAM,UAAU,OAAO,cAAc,IAAI;AAAA,IAC3C;AAAA,EACF;AAAA,EAEA,MAAM,OAAO,KAA+B;AAC1C,UAAM,MAAM,KAAK,WAAW,GAAG;AAC/B,QAAI,CAAC,KAAK;AACR,YAAM,IAAI;AAAA,QACR,0CAA0C,GAAG;AAAA,QAC7C;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,QAAI;AACF,YAAM,SAAS,MAAM,KAAK,YAAY;AAAA,QACpC,QAAQ;AAAA,QACR,MAAM,IAAI,KAAK,MAAM,IAAI,WAAW,GAAG,CAAC;AAAA,MAC1C,CAAC;AAED,YAAM,WAAW,MAAM,MAAM,OAAO,KAAK;AAAA,QACvC,QAAQ;AAAA,QACR,SAAS,OAAO;AAAA,MAClB,CAAC;AAED,UAAI,CAAC,SAAS,MAAM,SAAS,WAAW,KAAK;AAC3C,cAAM,IAAI;AAAA,UACR,qBAAqB,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,UAC3D;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,IACT,SAAS,OAAO;AACd,YAAM,UAAU,OAAO,gBAAgB,IAAI;AAAA,IAC7C;AAAA,EACF;AAAA,EAEA,YAAmC;AACjC,WAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,cAAc;AAAA,MACd,UAAU;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,MAAM;AAAA,QACN,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQQ,WAAW,UAAiC;AAClD,QAAI,SAAS,WAAW,KAAK,YAAY,GAAG,GAAG;AAC7C,aAAO,mBAAmB,SAAS,MAAM,KAAK,UAAU,SAAS,CAAC,CAAC;AAAA,IACrE;AACA,QAAI,SAAS,WAAW,KAAK,WAAW,GAAG,GAAG;AAC5C,YAAM,OAAO,SAAS,MAAM,KAAK,SAAS,SAAS,CAAC;AACpD,YAAM,QAAQ,KAAK,QAAQ,GAAG;AAC9B,aAAO,UAAU,KAAK,OAAO,mBAAmB,KAAK,MAAM,QAAQ,CAAC,CAAC;AAAA,IACvE;AACA,QAAI,CAAC,SAAS,SAAS,KAAK,GAAG;AAC7B,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAc,YAAY,KAMC;AAIzB,UAAM,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,QAAQ;AACtC,UAAM,MAAM,oBAAI,KAAK;AACrB,UAAM,UAAU,cAAc,GAAG;AACjC,UAAM,YAAY,QAAQ,MAAM,GAAG,CAAC;AAEpC,UAAM,cAAc,IAAI,OAAO,UAAM,oBAAO,IAAI,IAAI,CAAC,IAAI;AAEzD,UAAM,iBAAiB,IAAI,QAAQ,kBAAkB,IAAI,KAAK,IAAI;AAElE,UAAM,UAAkC;AAAA,MACtC;AAAA,MACA,wBAAwB;AAAA,MACxB,cAAc;AAAA,MACd,GAAI,IAAI,gBAAgB,CAAC;AAAA,IAC3B;AAEA,UAAM,oBAAoB,OAAO,KAAK,OAAO,EAC1C,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAC1B,KAAK;AACR,UAAM,mBACJ,kBACG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,QAAQ,GAAG,CAAC,EAAE,EAC3D,KAAK,IAAI,IAAI;AAClB,UAAM,gBAAgB,kBAAkB,KAAK,GAAG;AAEhD,UAAM,mBAAmB;AAAA,MACvB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,UAAM,kBAAkB,GAAG,SAAS,IAAI,KAAK,MAAM,IAAI,OAAO;AAC9D,UAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAM,oBAAO,IAAI,YAAY,EAAE,OAAO,gBAAgB,CAAC,CAAC;AAAA,IAC1D,EAAE,KAAK,IAAI;AAEX,UAAM,aAAa;AAAA,MACjB,KAAK,OAAO;AAAA,MACZ;AAAA,MACA,KAAK;AAAA,MACL;AAAA,IACF;AACA,UAAM,YAAY;AAAA,UAChB,kBAAK,oBAAQ,YAAY,IAAI,YAAY,EAAE,OAAO,YAAY,CAAC;AAAA,IACjE;AAEA,YAAQ,gBAAgB,+BAA+B,KAAK,OAAO,WAAW,IAAI,eAAe,mBAAmB,aAAa,eAAe,SAAS;AAEzJ,UAAM,MACJ,KAAK,WACL,IAAI,QACH,mBAAmB,KAAK,IAAI,cAAc,KAAK;AAElD,WAAO,EAAE,KAAK,QAAQ;AAAA,EACxB;AACF;AAEA,MAAM,qBACJ;AAEF,SAAS,iBACP,QACA,WACA,QACA,SACY;AACZ,QAAM,MAAM,IAAI,YAAY;AAC5B,QAAM,YAAQ;AAAA,IACZ;AAAA,IACA,IAAI,OAAO,OAAO,MAAM,EAAE;AAAA,IAC1B,IAAI,OAAO,SAAS;AAAA,EACtB;AACA,QAAM,cAAU,kBAAK,oBAAQ,OAAO,IAAI,OAAO,MAAM,CAAC;AACtD,QAAM,eAAW,kBAAK,oBAAQ,SAAS,IAAI,OAAO,OAAO,CAAC;AAC1D,aAAO,kBAAK,oBAAQ,UAAU,IAAI,OAAO,cAAc,CAAC;AAC1D;AAEA,SAAS,cAAc,MAAoB;AAEzC,QAAM,MAAM,KAAK,YAAY;AAC7B,SAAO,IAAI,QAAQ,SAAS,EAAE,EAAE,QAAQ,SAAS,EAAE;AACrD;AAEA,SAAS,MAAM,OAA2B;AACxC,MAAI,IAAI;AACR,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,SAAK,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAAA,EAC5C;AACA,SAAO;AACT;AAOA,SAAS,cAAc,OAAuB;AAC5C,SAAO,mBAAmB,KAAK,EAAE;AAAA,IAC/B;AAAA,IACA,CAAC,MAAM,MAAM,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,YAAY;AAAA,EACxD;AACF;AAMA,SAAS,WAAW,KAAqB;AACvC,SAAO,IAAI,MAAM,GAAG,EAAE,IAAI,aAAa,EAAE,KAAK,GAAG;AACnD;AAEA,SAAS,kBAAkB,QAAiC;AAC1D,QAAM,UAA8B,CAAC;AACrC,aAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,GAAG;AACrC,YAAQ,KAAK,CAAC,GAAG,CAAC,CAAC;AAAA,EACrB;AACA,UAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAE;AACvD,SAAO,QACJ,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,EAAE,EACzD,KAAK,GAAG;AACb;AAQA,SAAS,iBAAiB,KAA2B;AACnD,QAAM,MAAoB,CAAC;AAC3B,QAAM,aAAa;AACnB,MAAI;AACJ,UAAQ,QAAQ,WAAW,KAAK,GAAG,OAAO,MAAM;AAC9C,UAAM,QAAQ,MAAM,CAAC;AACrB,UAAM,MAAM,SAAS,OAAO,KAAK;AACjC,UAAM,OAAO,SAAS,OAAO,MAAM;AACnC,UAAM,eAAe,SAAS,OAAO,cAAc;AACnD,QAAI,QAAQ,MAAM;AAChB;AAAA,IACF;AACA,QAAI,KAAK;AAAA,MACP,KAAK,kBAAkB,GAAG;AAAA,MAC1B,MAAM,SAAS,OAAO,SAAS,MAAM,EAAE,KAAK,IAAI;AAAA,MAChD,cACE,iBAAiB,OAAO,IAAI,KAAK,YAAY,IAAI,oBAAI,KAAK,CAAC;AAAA,IAC/D,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEA,SAAS,SAAS,OAAe,KAA4B;AAC3D,QAAM,KAAK,IAAI,OAAO,IAAI,GAAG,oBAAoB,GAAG,GAAG;AACvD,QAAM,IAAI,GAAG,KAAK,KAAK;AACvB,SAAO,MAAM,OAAO,OAAO,EAAE,CAAC;AAChC;AAEA,SAAS,kBAAkB,GAAmB;AAC5C,SAAO,EACJ,QAAQ,UAAU,GAAG,EACrB,QAAQ,SAAS,GAAG,EACpB,QAAQ,SAAS,GAAG,EACpB,QAAQ,WAAW,GAAG,EACtB,QAAQ,WAAW,GAAG;AAC3B;AAEA,SAAS,eAAuB;AAC9B,SAAO,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,EAAE;AAC/C;AAEA,eAAe,SAAS,UAAqC;AAC3D,MAAI;AACF,WAAO,MAAM,SAAS,KAAK;AAAA,EAC7B,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,UAAU,OAAgB,MAAc,UAAyB;AACxE,MAAI,iBAAiB,uBAAc;AACjC,WAAO;AAAA,EACT;AACA,SAAO,IAAI;AAAA,IACT,aAAa,iBAAiB,QAAQ,MAAM,UAAU,eAAe;AAAA,IACrE;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,91 @@
1
+ import { type StorageProvider, type StorageUploadResult, type StorageFile, type StorageListOptions, type StorageProviderConfig } from "../index";
2
+ /**
3
+ * Configuration for {@link R2Storage}.
4
+ *
5
+ * @category Storage
6
+ */
7
+ export interface R2Config {
8
+ /** Cloudflare account ID. Used to derive the S3 endpoint when `endpoint` is not given. */
9
+ accountId?: string;
10
+ /**
11
+ * Full S3 endpoint URL. Overrides `accountId`.
12
+ *
13
+ * Defaults to `https://{accountId}.r2.cloudflarestorage.com`.
14
+ */
15
+ endpoint?: string;
16
+ /** R2 access key ID. */
17
+ accessKeyId: string;
18
+ /** R2 secret access key. */
19
+ secretAccessKey: string;
20
+ /** Bucket name. */
21
+ bucket: string;
22
+ /**
23
+ * Public URL prefix used when constructing the URL returned by {@link R2Storage.upload}.
24
+ *
25
+ * If unset, defaults to `https://{bucket}.{accountId}.r2.dev` (R2's default public hostname).
26
+ * Set this to a custom domain bound to the bucket if you have one.
27
+ */
28
+ publicUrl?: string;
29
+ /**
30
+ * S3 region. R2 expects `auto`; consumers can override for compatibility with other
31
+ * S3-compatible stores reachable through the same code path.
32
+ */
33
+ region?: string;
34
+ }
35
+ /**
36
+ * Cloudflare R2 storage provider.
37
+ *
38
+ * @remarks
39
+ * Uses R2's S3-compatible API with SigV4 signed `fetch` requests, so the same
40
+ * implementation runs in browsers, Node.js, and Workers without pulling in
41
+ * `@aws-sdk/client-s3`. Treats blobs as opaque - encryption, access control,
42
+ * and per-tenant prefixing are out of scope and live in higher layers.
43
+ *
44
+ * The SDK exposes R2 as the recommended default backend. Other providers
45
+ * (Pinata, IPFS, Google Drive, Dropbox, CallbackStorage) remain available for
46
+ * teams that need IPFS semantics or user-owned storage.
47
+ *
48
+ * @category Storage
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * import { R2Storage, StorageManager } from "@opendatalabs/vana-sdk/node";
53
+ *
54
+ * const storage = new StorageManager();
55
+ * storage.register(
56
+ * "r2",
57
+ * new R2Storage({
58
+ * accountId: process.env.R2_ACCOUNT_ID!,
59
+ * accessKeyId: process.env.R2_ACCESS_KEY_ID!,
60
+ * secretAccessKey: process.env.R2_SECRET_ACCESS_KEY!,
61
+ * bucket: process.env.R2_BUCKET!,
62
+ * publicUrl: "https://files.example.com",
63
+ * }),
64
+ * true,
65
+ * );
66
+ *
67
+ * const result = await storage.upload(myBlob, "report.json");
68
+ * console.log(result.url);
69
+ * ```
70
+ */
71
+ export declare class R2Storage implements StorageProvider {
72
+ private readonly config;
73
+ private readonly endpoint;
74
+ private readonly publicUrl;
75
+ private readonly region;
76
+ private readonly bucket;
77
+ constructor(config: R2Config);
78
+ upload(file: Blob, filename?: string): Promise<StorageUploadResult>;
79
+ download(url: string): Promise<Blob>;
80
+ list(options?: StorageListOptions): Promise<StorageFile[]>;
81
+ delete(url: string): Promise<boolean>;
82
+ getConfig(): StorageProviderConfig;
83
+ /**
84
+ * Extract the object key from a URL. Accepts public URLs minted by `upload()`
85
+ * as well as raw keys for callers that already track them out-of-band.
86
+ *
87
+ * @internal
88
+ */
89
+ private extractKey;
90
+ private signRequest;
91
+ }