@opendatalabs/vana-sdk 0.1.0-alpha.7ee7635 → 0.1.0-alpha.80df35f

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 (633) hide show
  1. package/dist/__tests__/waitForTransactionEvents.test.d.ts +1 -0
  2. package/dist/browser.d.ts +4 -2
  3. package/dist/chains/definitions.cjs +9 -6
  4. package/dist/chains/definitions.cjs.map +1 -1
  5. package/dist/chains/definitions.d.ts +9 -11
  6. package/dist/chains/definitions.js +9 -6
  7. package/dist/chains/definitions.js.map +1 -1
  8. package/dist/chains/index.d.ts +5 -2
  9. package/dist/chains.browser.d.ts +8 -2
  10. package/dist/chains.d.ts +8 -2
  11. package/dist/chains.node.d.ts +8 -2
  12. package/dist/config/addresses.d.ts +8 -45
  13. package/dist/config/chains.d.ts +9 -13
  14. package/dist/config/default-services.cjs +60 -0
  15. package/dist/config/default-services.cjs.map +1 -0
  16. package/dist/config/default-services.d.ts +46 -0
  17. package/dist/config/default-services.js +33 -0
  18. package/dist/config/default-services.js.map +1 -0
  19. package/dist/config/default-services.test.d.ts +1 -0
  20. package/dist/config/features.d.ts +1 -3
  21. package/dist/config/tests/addresses.test.d.ts +1 -0
  22. package/dist/contracts/contractController.cjs +3 -3
  23. package/dist/contracts/contractController.cjs.map +1 -1
  24. package/dist/contracts/contractController.d.ts +11 -49
  25. package/dist/contracts/contractController.js +4 -7
  26. package/dist/contracts/contractController.js.map +1 -1
  27. package/dist/contracts/tests/contractController.test.d.ts +1 -0
  28. package/dist/controllers/__tests__/schemas-edge-cases.test.d.ts +1 -0
  29. package/dist/controllers/base.cjs +83 -0
  30. package/dist/controllers/base.cjs.map +1 -0
  31. package/dist/controllers/base.d.ts +84 -0
  32. package/dist/controllers/base.js +59 -0
  33. package/dist/controllers/base.js.map +1 -0
  34. package/dist/controllers/data-error-handling.test.d.ts +1 -0
  35. package/dist/controllers/data.cjs +338 -107
  36. package/dist/controllers/data.cjs.map +1 -1
  37. package/dist/controllers/data.d.ts +145 -46
  38. package/dist/controllers/data.js +338 -107
  39. package/dist/controllers/data.js.map +1 -1
  40. package/dist/controllers/permissions.cjs +162 -223
  41. package/dist/controllers/permissions.cjs.map +1 -1
  42. package/dist/controllers/permissions.d.ts +24 -78
  43. package/dist/controllers/permissions.js +162 -223
  44. package/dist/controllers/permissions.js.map +1 -1
  45. package/dist/controllers/protocol.cjs +15 -11
  46. package/dist/controllers/protocol.cjs.map +1 -1
  47. package/dist/controllers/protocol.d.ts +7 -56
  48. package/dist/controllers/protocol.js +15 -14
  49. package/dist/controllers/protocol.js.map +1 -1
  50. package/dist/controllers/schemas.cjs +29 -36
  51. package/dist/controllers/schemas.cjs.map +1 -1
  52. package/dist/controllers/schemas.d.ts +8 -23
  53. package/dist/controllers/schemas.js +29 -36
  54. package/dist/controllers/schemas.js.map +1 -1
  55. package/dist/controllers/server-additional.test.d.ts +1 -0
  56. package/dist/controllers/server.cjs +15 -10
  57. package/dist/controllers/server.cjs.map +1 -1
  58. package/dist/controllers/server.d.ts +7 -20
  59. package/dist/controllers/server.js +15 -10
  60. package/dist/controllers/server.js.map +1 -1
  61. package/dist/core/apiClient.cjs +15 -12
  62. package/dist/core/apiClient.cjs.map +1 -1
  63. package/dist/core/apiClient.d.ts +5 -9
  64. package/dist/core/apiClient.js +19 -19
  65. package/dist/core/apiClient.js.map +1 -1
  66. package/dist/core/client.cjs +7 -7
  67. package/dist/core/client.cjs.map +1 -1
  68. package/dist/core/client.d.ts +6 -9
  69. package/dist/core/client.js +7 -7
  70. package/dist/core/client.js.map +1 -1
  71. package/dist/core/core.test.d.ts +1 -0
  72. package/dist/core/generics.cjs +11 -9
  73. package/dist/core/generics.cjs.map +1 -1
  74. package/dist/core/generics.d.ts +9 -13
  75. package/dist/core/generics.js +22 -29
  76. package/dist/core/generics.js.map +1 -1
  77. package/dist/core/tests/apiClient.test.d.ts +1 -0
  78. package/dist/core/tests/client.test.d.ts +1 -0
  79. package/dist/core/tests/generics.test.d.ts +1 -0
  80. package/dist/core.cjs +82 -34
  81. package/dist/core.cjs.map +1 -1
  82. package/dist/core.d.ts +21 -73
  83. package/dist/core.js +105 -60
  84. package/dist/core.js.map +1 -1
  85. package/dist/crypto/ecies/__tests__/base.test.d.ts +4 -0
  86. package/dist/crypto/ecies/__tests__/compatibility.test.d.ts +8 -0
  87. package/dist/crypto/ecies/__tests__/constants.test.d.ts +4 -0
  88. package/dist/crypto/ecies/__tests__/native-parity.test.d.ts +7 -0
  89. package/dist/crypto/ecies/__tests__/normalization.test.d.ts +1 -0
  90. package/dist/crypto/ecies/__tests__/test-vectors.d.ts +2 -4
  91. package/dist/crypto/ecies/base.cjs +4 -3
  92. package/dist/crypto/ecies/base.cjs.map +1 -1
  93. package/dist/crypto/ecies/base.d.ts +2 -5
  94. package/dist/crypto/ecies/base.js +12 -15
  95. package/dist/crypto/ecies/base.js.map +1 -1
  96. package/dist/crypto/ecies/browser.cjs +2 -1
  97. package/dist/crypto/ecies/browser.cjs.map +1 -1
  98. package/dist/crypto/ecies/browser.d.ts +2 -7
  99. package/dist/crypto/ecies/browser.js +2 -1
  100. package/dist/crypto/ecies/browser.js.map +1 -1
  101. package/dist/crypto/ecies/constants.d.ts +7 -9
  102. package/dist/crypto/ecies/index.d.ts +8 -1
  103. package/dist/crypto/ecies/interface.cjs +4 -5
  104. package/dist/crypto/ecies/interface.cjs.map +1 -1
  105. package/dist/crypto/ecies/interface.d.ts +9 -11
  106. package/dist/crypto/ecies/interface.js +4 -5
  107. package/dist/crypto/ecies/interface.js.map +1 -1
  108. package/dist/crypto/ecies/node.cjs +3 -2
  109. package/dist/crypto/ecies/node.cjs.map +1 -1
  110. package/dist/crypto/ecies/node.d.ts +2 -7
  111. package/dist/crypto/ecies/node.js +11 -16
  112. package/dist/crypto/ecies/node.js.map +1 -1
  113. package/dist/crypto/ecies/utils.cjs +2 -41
  114. package/dist/crypto/ecies/utils.cjs.map +1 -1
  115. package/dist/crypto/ecies/utils.d.ts +3 -40
  116. package/dist/crypto/ecies/utils.js +1 -35
  117. package/dist/crypto/ecies/utils.js.map +1 -1
  118. package/dist/crypto/services/WalletKeyEncryptionService.cjs +2 -2
  119. package/dist/crypto/services/WalletKeyEncryptionService.cjs.map +1 -1
  120. package/dist/crypto/services/WalletKeyEncryptionService.d.ts +3 -7
  121. package/dist/crypto/services/WalletKeyEncryptionService.js +5 -9
  122. package/dist/crypto/services/WalletKeyEncryptionService.js.map +1 -1
  123. package/dist/crypto/services/WalletKeyEncryptionService.test.d.ts +1 -0
  124. package/dist/diagnostics.d.ts +1 -3
  125. package/dist/diagnostics.test.d.ts +1 -0
  126. package/dist/errors.cjs +16 -0
  127. package/dist/errors.cjs.map +1 -1
  128. package/dist/errors.d.ts +53 -15
  129. package/dist/errors.js +18 -6
  130. package/dist/errors.js.map +1 -1
  131. package/dist/generated/abi/ComputeEngineImplementation.d.ts +2 -3
  132. package/dist/generated/abi/ComputeInstructionRegistryImplementation.cjs.map +1 -1
  133. package/dist/generated/abi/ComputeInstructionRegistryImplementation.d.ts +2 -3
  134. package/dist/generated/abi/ComputeInstructionRegistryImplementation.js.map +1 -1
  135. package/dist/generated/abi/DATFactoryImplementation.d.ts +2 -3
  136. package/dist/generated/abi/DATImplementation.d.ts +2 -3
  137. package/dist/generated/abi/DATPausableImplementation.d.ts +2 -3
  138. package/dist/generated/abi/DATVotesImplementation.d.ts +2 -3
  139. package/dist/generated/abi/DLPPerformanceImplementation.d.ts +2 -3
  140. package/dist/generated/abi/DLPRegistryImplementation.d.ts +2 -3
  141. package/dist/generated/abi/DLPRegistryTreasuryImplementation.d.ts +2 -3
  142. package/dist/generated/abi/DLPRewardDeployerImplementation.d.ts +2 -3
  143. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.d.ts +2 -3
  144. package/dist/generated/abi/DLPRewardSwapImplementation.d.ts +2 -3
  145. package/dist/generated/abi/DLPRootImplementation.d.ts +1 -3
  146. package/dist/generated/abi/DLPTreasuryImplementation.d.ts +2 -3
  147. package/dist/generated/abi/DataLiquidityPoolImplementation.d.ts +1 -3
  148. package/dist/generated/abi/DataPortabilityGranteesImplementation.d.ts +2 -3
  149. package/dist/generated/abi/DataPortabilityPermissionsImplementation.cjs.map +1 -1
  150. package/dist/generated/abi/DataPortabilityPermissionsImplementation.d.ts +2 -3
  151. package/dist/generated/abi/DataPortabilityPermissionsImplementation.js.map +1 -1
  152. package/dist/generated/abi/DataPortabilityServersImplementation.cjs.map +1 -1
  153. package/dist/generated/abi/DataPortabilityServersImplementation.d.ts +2 -3
  154. package/dist/generated/abi/DataPortabilityServersImplementation.js.map +1 -1
  155. package/dist/generated/abi/DataRefinerRegistryImplementation.d.ts +2 -3
  156. package/dist/generated/abi/DataRegistryImplementation.d.ts +2 -3
  157. package/dist/generated/abi/QueryEngineImplementation.d.ts +2 -3
  158. package/dist/generated/abi/SwapHelperImplementation.d.ts +2 -3
  159. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.d.ts +2 -3
  160. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.d.ts +2 -3
  161. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.d.ts +2 -3
  162. package/dist/generated/abi/TeePoolImplementation.d.ts +2 -3
  163. package/dist/generated/abi/TeePoolPersistentGpuImplementation.d.ts +2 -3
  164. package/dist/generated/abi/TeePoolPersistentStandardImplementation.d.ts +2 -3
  165. package/dist/generated/abi/TeePoolPhalaImplementation.d.ts +2 -3
  166. package/dist/generated/abi/VanaEpochImplementation.d.ts +2 -3
  167. package/dist/generated/abi/VanaPoolEntityImplementation.d.ts +2 -3
  168. package/dist/generated/abi/VanaPoolStakingImplementation.d.ts +2 -3
  169. package/dist/generated/abi/VanaPoolTreasuryImplementation.d.ts +2 -3
  170. package/dist/generated/abi/index.d.ts +37 -39
  171. package/dist/generated/event-types.d.ts +9 -10
  172. package/dist/generated/eventRegistry.d.ts +3 -7
  173. package/dist/generated/server/server-exports.d.ts +19 -21
  174. package/dist/generated/server/server.cjs.map +1 -1
  175. package/dist/generated/server/server.d.ts +113 -87
  176. package/dist/generated/subgraph.d.ts +329 -332
  177. package/dist/index.browser.d.ts +47 -96
  178. package/dist/index.browser.js +12 -0
  179. package/dist/index.browser.js.map +1 -1
  180. package/dist/index.cjs +3 -1
  181. package/dist/index.cjs.map +1 -1
  182. package/dist/index.d.ts +0 -2
  183. package/dist/index.js +3 -1
  184. package/dist/index.js.map +1 -1
  185. package/dist/index.node.cjs +9 -0
  186. package/dist/index.node.cjs.map +1 -1
  187. package/dist/index.node.d.ts +181 -87
  188. package/dist/index.node.js +10 -0
  189. package/dist/index.node.js.map +1 -1
  190. package/dist/node.d.ts +4 -2
  191. package/dist/platform/browser-only.d.ts +5 -8
  192. package/dist/platform/browser-only.test.d.ts +1 -0
  193. package/dist/platform/browser-safe.d.ts +6 -9
  194. package/dist/platform/browser-safe.test.d.ts +1 -0
  195. package/dist/platform/browser.cjs +7 -6
  196. package/dist/platform/browser.cjs.map +1 -1
  197. package/dist/platform/browser.d.ts +3 -6
  198. package/dist/platform/browser.js +19 -27
  199. package/dist/platform/browser.js.map +1 -1
  200. package/dist/platform/browser.test.d.ts +1 -0
  201. package/dist/platform/index.d.ts +11 -5
  202. package/dist/platform/interface.d.ts +6 -8
  203. package/dist/platform/node.d.ts +3 -7
  204. package/dist/platform/node.js +12 -19
  205. package/dist/platform/node.js.map +1 -1
  206. package/dist/platform/ports/openpgp-port.cjs +74 -0
  207. package/dist/platform/ports/openpgp-port.cjs.map +1 -0
  208. package/dist/platform/ports/openpgp-port.d.ts +13 -0
  209. package/dist/platform/ports/openpgp-port.js +59 -0
  210. package/dist/platform/ports/openpgp-port.js.map +1 -0
  211. package/dist/platform/ports/pgp-port.cjs +17 -0
  212. package/dist/platform/ports/pgp-port.cjs.map +1 -0
  213. package/dist/platform/ports/pgp-port.d.ts +35 -0
  214. package/dist/platform/ports/pgp-port.js +1 -0
  215. package/dist/platform/ports/pgp-port.js.map +1 -0
  216. package/dist/platform/shared/error-utils.d.ts +2 -4
  217. package/dist/platform/shared/pgp-utils.cjs +2 -2
  218. package/dist/platform/shared/pgp-utils.cjs.map +1 -1
  219. package/dist/platform/shared/pgp-utils.d.ts +3 -5
  220. package/dist/platform/shared/pgp-utils.js +2 -2
  221. package/dist/platform/shared/pgp-utils.js.map +1 -1
  222. package/dist/platform/shared/stream-utils.d.ts +1 -3
  223. package/dist/platform/utils.d.ts +6 -10
  224. package/dist/platform/utils.test.d.ts +1 -0
  225. package/dist/platform.browser.d.ts +9 -4
  226. package/dist/platform.d.ts +11 -5
  227. package/dist/platform.node.d.ts +10 -5
  228. package/dist/server/handler.cjs.map +1 -1
  229. package/dist/server/handler.d.ts +8 -227
  230. package/dist/server/handler.js.map +1 -1
  231. package/dist/storage/index.d.ts +56 -10
  232. package/dist/storage/manager.cjs +2 -2
  233. package/dist/storage/manager.cjs.map +1 -1
  234. package/dist/storage/manager.d.ts +2 -5
  235. package/dist/storage/manager.js +5 -12
  236. package/dist/storage/manager.js.map +1 -1
  237. package/dist/storage/providers/callback-storage.cjs +3 -3
  238. package/dist/storage/providers/callback-storage.cjs.map +1 -1
  239. package/dist/storage/providers/callback-storage.d.ts +3 -9
  240. package/dist/storage/providers/callback-storage.js +3 -3
  241. package/dist/storage/providers/callback-storage.js.map +1 -1
  242. package/dist/storage/providers/google-drive.cjs +2 -2
  243. package/dist/storage/providers/google-drive.cjs.map +1 -1
  244. package/dist/storage/providers/google-drive.d.ts +3 -7
  245. package/dist/storage/providers/google-drive.js +4 -7
  246. package/dist/storage/providers/google-drive.js.map +1 -1
  247. package/dist/storage/providers/google-drive.test.d.ts +1 -0
  248. package/dist/storage/providers/ipfs.cjs +5 -5
  249. package/dist/storage/providers/ipfs.cjs.map +1 -1
  250. package/dist/storage/providers/ipfs.d.ts +3 -6
  251. package/dist/storage/providers/ipfs.js +7 -10
  252. package/dist/storage/providers/ipfs.js.map +1 -1
  253. package/dist/storage/providers/pinata.cjs +6 -6
  254. package/dist/storage/providers/pinata.cjs.map +1 -1
  255. package/dist/storage/providers/pinata.d.ts +5 -8
  256. package/dist/storage/providers/pinata.js +8 -11
  257. package/dist/storage/providers/pinata.js.map +1 -1
  258. package/dist/storage/tests/callbackStorage.test.d.ts +1 -0
  259. package/dist/storage/tests/googleDriveStorage.test.d.ts +1 -0
  260. package/dist/storage/tests/ipfsStorage.test.d.ts +1 -0
  261. package/dist/storage/tests/pinataStorage.test.d.ts +1 -0
  262. package/dist/storage/tests/storageManager.test.d.ts +1 -0
  263. package/dist/tests/abi.test.d.ts +1 -0
  264. package/dist/tests/chains-definitions.test.d.ts +1 -0
  265. package/dist/tests/core-encryption.test.d.ts +1 -0
  266. package/dist/tests/core-extended.test.d.ts +1 -0
  267. package/dist/tests/core-generics-coverage.test.d.ts +1 -0
  268. package/dist/tests/coverage-boost.test.d.ts +1 -0
  269. package/dist/tests/crypto-cross-platform-compatibility.test.d.ts +1 -0
  270. package/dist/tests/data-addfile-permissions-schema.test.d.ts +1 -0
  271. package/dist/tests/data-additional-methods.test.d.ts +1 -0
  272. package/dist/tests/data-controller-edge-cases.test.d.ts +1 -0
  273. package/dist/tests/data-ipfs-gateways.test.d.ts +1 -0
  274. package/dist/tests/data-relayer.test.d.ts +1 -0
  275. package/dist/tests/data-schema-validation.test.d.ts +1 -0
  276. package/dist/tests/data-simple-methods.test.d.ts +1 -0
  277. package/dist/tests/data.test.d.ts +1 -0
  278. package/dist/tests/demo-integration.test.d.ts +1 -0
  279. package/dist/tests/demo-trusted-server-integration.test.d.ts +1 -0
  280. package/dist/tests/download-relayer.test.d.ts +1 -0
  281. package/dist/tests/dual-mode-permissions.test.d.ts +1 -0
  282. package/dist/tests/dual-mode-trusted-servers.test.d.ts +1 -0
  283. package/dist/tests/encryption-correct-implementation.test.d.ts +1 -0
  284. package/dist/tests/encryption-coverage.test.d.ts +1 -0
  285. package/dist/tests/encryption-edge-cases.test.d.ts +1 -0
  286. package/dist/tests/encryption-utils-updated.test.d.ts +1 -0
  287. package/dist/tests/errors-coverage.test.d.ts +1 -0
  288. package/dist/tests/errors.test.d.ts +1 -0
  289. package/dist/tests/factories/mockFactory.d.ts +316 -0
  290. package/dist/tests/fakes/FakeStorageManager.d.ts +200 -0
  291. package/dist/tests/fakes/FakeStorageManager.test.d.ts +1 -0
  292. package/dist/tests/fakes/FakeWaitForTransactionEvents.d.ts +170 -0
  293. package/dist/tests/fakes/FakeWaitForTransactionEvents.test.d.ts +1 -0
  294. package/dist/tests/fakes/fake-pgp-port.d.ts +13 -0
  295. package/dist/tests/grantValidation-edge-cases.test.d.ts +1 -0
  296. package/dist/tests/grantValidation-unreachable-branch.test.d.ts +1 -0
  297. package/dist/tests/helper-methods.test.d.ts +1 -0
  298. package/dist/tests/helpers/platformTestHelpers.d.ts +106 -0
  299. package/dist/tests/helpers/typedMocks.d.ts +64 -0
  300. package/dist/tests/index-browser.test.d.ts +1 -0
  301. package/dist/tests/index-node.test.d.ts +1 -0
  302. package/dist/tests/index.test.d.ts +1 -0
  303. package/dist/tests/mocks/platformAdapter.d.ts +12 -0
  304. package/dist/tests/new-permissions-methods.test.d.ts +1 -0
  305. package/dist/tests/no-buffer-browser.test.d.ts +1 -0
  306. package/dist/tests/permissions-grantee.test.d.ts +1 -0
  307. package/dist/tests/permissions-schema-validation.test.d.ts +1 -0
  308. package/dist/tests/permissions-server-files.test.d.ts +1 -0
  309. package/dist/tests/permissions-trust-servers.test.d.ts +1 -0
  310. package/dist/tests/permissions.test.d.ts +1 -0
  311. package/dist/tests/personal.test.d.ts +1 -0
  312. package/dist/tests/platform-browser.test.d.ts +1 -0
  313. package/dist/tests/platform-crypto-expanded.test.d.ts +1 -0
  314. package/dist/tests/platform-crypto.test.d.ts +1 -0
  315. package/dist/tests/platform-index.test.d.ts +1 -0
  316. package/dist/tests/platform-node.test.d.ts +1 -0
  317. package/dist/tests/platform-shared-utils.test.d.ts +1 -0
  318. package/dist/tests/platform-updated.test.d.ts +1 -0
  319. package/dist/tests/protocol-additional-methods.test.d.ts +1 -0
  320. package/dist/tests/protocol.test.d.ts +1 -0
  321. package/dist/tests/read-only-mode.test.d.ts +1 -0
  322. package/dist/tests/schemas.test.d.ts +1 -0
  323. package/dist/tests/server-handler.test.d.ts +1 -0
  324. package/dist/tests/setup.d.ts +7 -0
  325. package/dist/tests/signatureFormatter.test.d.ts +1 -0
  326. package/dist/tests/trusted-server-queries.test.d.ts +1 -0
  327. package/dist/tests/typedDataConverter.test.d.ts +1 -0
  328. package/dist/tests/types-contracts.test.d.ts +1 -0
  329. package/dist/tests/types-data.test.d.ts +1 -0
  330. package/dist/tests/types-external-apis.test.d.ts +1 -0
  331. package/dist/tests/types-generics.test.d.ts +1 -0
  332. package/dist/tests/types-permissions.test.d.ts +1 -0
  333. package/dist/tests/types-upload-params.test.d.ts +1 -0
  334. package/dist/tests/types.test.d.ts +1 -0
  335. package/dist/tests/utils-formatters.test.d.ts +1 -0
  336. package/dist/tests/utils-grantFiles-edge-cases.test.d.ts +1 -0
  337. package/dist/tests/utils-grantFiles-validation.test.d.ts +1 -0
  338. package/dist/tests/utils-grantFiles.test.d.ts +1 -0
  339. package/dist/tests/utils-grantValidation-consolidated.test.d.ts +1 -0
  340. package/dist/tests/utils-grants.test.d.ts +1 -0
  341. package/dist/tests/utils-ipfs-additional.test.d.ts +1 -0
  342. package/dist/tests/utils-ipfs.test.d.ts +4 -0
  343. package/dist/tests/utils-schemaValidation.test.d.ts +1 -0
  344. package/dist/tests/vana.test.d.ts +1 -0
  345. package/dist/tests/wallet-crypto-compatibility.test.d.ts +1 -0
  346. package/dist/types/blockchain.cjs.map +1 -1
  347. package/dist/types/blockchain.d.ts +13 -8
  348. package/dist/types/chains-additional.test.d.ts +1 -0
  349. package/dist/types/chains.d.ts +6 -9
  350. package/dist/types/config.cjs +10 -0
  351. package/dist/types/config.cjs.map +1 -1
  352. package/dist/types/config.d.ts +161 -54
  353. package/dist/types/config.js +8 -0
  354. package/dist/types/config.js.map +1 -1
  355. package/dist/types/contracts.cjs.map +1 -1
  356. package/dist/types/contracts.d.ts +8 -11
  357. package/dist/types/controller-context.cjs.map +1 -1
  358. package/dist/types/controller-context.d.ts +13 -20
  359. package/dist/types/data.cjs.map +1 -1
  360. package/dist/types/data.d.ts +107 -39
  361. package/dist/types/external-apis.d.ts +10 -12
  362. package/dist/types/generics.d.ts +35 -38
  363. package/dist/types/index.cjs +5 -4
  364. package/dist/types/index.cjs.map +1 -1
  365. package/dist/types/index.d.ts +20 -22
  366. package/dist/types/index.js +9 -2
  367. package/dist/types/index.js.map +1 -1
  368. package/dist/types/operations.cjs +2 -2
  369. package/dist/types/operations.cjs.map +1 -1
  370. package/dist/types/operations.d.ts +13 -17
  371. package/dist/types/operations.js +2 -2
  372. package/dist/types/operations.js.map +1 -1
  373. package/dist/types/permissions.d.ts +55 -58
  374. package/dist/types/personal.cjs.map +1 -1
  375. package/dist/types/personal.d.ts +6 -8
  376. package/dist/types/relayer.d.ts +15 -18
  377. package/dist/types/storage.d.ts +6 -8
  378. package/dist/types/storage.js +2 -5
  379. package/dist/types/storage.js.map +1 -1
  380. package/dist/types/transactionResults.d.ts +16 -18
  381. package/dist/types/utils.d.ts +21 -24
  382. package/dist/types.d.ts +4 -28
  383. package/dist/utils/__tests__/parseTransaction.test.d.ts +1 -0
  384. package/dist/utils/__tests__/pojo-serialization.test.d.ts +1 -0
  385. package/dist/utils/__tests__/signatureCache.test.d.ts +1 -0
  386. package/dist/utils/__tests__/transaction-edge-cases.test.d.ts +1 -0
  387. package/dist/utils/__tests__/transactionHelpers.test.d.ts +1 -0
  388. package/dist/utils/__tests__/urlResolver.test.d.ts +4 -0
  389. package/dist/utils/blockchain/registry.cjs +2 -2
  390. package/dist/utils/blockchain/registry.cjs.map +1 -1
  391. package/dist/utils/blockchain/registry.d.ts +6 -8
  392. package/dist/utils/blockchain/registry.js +2 -2
  393. package/dist/utils/blockchain/registry.js.map +1 -1
  394. package/dist/utils/blockchain/registry.test.d.ts +1 -0
  395. package/dist/utils/crypto-utils.cjs +0 -12
  396. package/dist/utils/crypto-utils.cjs.map +1 -1
  397. package/dist/utils/crypto-utils.d.ts +9 -27
  398. package/dist/utils/crypto-utils.js +0 -11
  399. package/dist/utils/crypto-utils.js.map +1 -1
  400. package/dist/utils/crypto-utils.test.d.ts +1 -0
  401. package/dist/utils/download.cjs +3 -3
  402. package/dist/utils/download.cjs.map +1 -1
  403. package/dist/utils/download.d.ts +13 -14
  404. package/dist/utils/download.js +2 -2
  405. package/dist/utils/download.js.map +1 -1
  406. package/dist/utils/encoding.cjs +1 -1
  407. package/dist/utils/encoding.cjs.map +1 -1
  408. package/dist/utils/encoding.d.ts +4 -6
  409. package/dist/utils/encoding.js +1 -1
  410. package/dist/utils/encoding.js.map +1 -1
  411. package/dist/utils/encoding.test.d.ts +1 -0
  412. package/dist/utils/encryption.cjs +16 -10
  413. package/dist/utils/encryption.cjs.map +1 -1
  414. package/dist/utils/encryption.d.ts +13 -17
  415. package/dist/utils/encryption.js +16 -10
  416. package/dist/utils/encryption.js.map +1 -1
  417. package/dist/utils/formatters.cjs +4 -2
  418. package/dist/utils/formatters.cjs.map +1 -1
  419. package/dist/utils/formatters.d.ts +4 -6
  420. package/dist/utils/formatters.js +4 -2
  421. package/dist/utils/formatters.js.map +1 -1
  422. package/dist/utils/grantFiles.cjs +7 -4
  423. package/dist/utils/grantFiles.cjs.map +1 -1
  424. package/dist/utils/grantFiles.d.ts +6 -10
  425. package/dist/utils/grantFiles.js +7 -4
  426. package/dist/utils/grantFiles.js.map +1 -1
  427. package/dist/utils/grantValidation.cjs +1 -1
  428. package/dist/utils/grantValidation.cjs.map +1 -1
  429. package/dist/utils/grantValidation.d.ts +14 -17
  430. package/dist/utils/grantValidation.js +1 -1
  431. package/dist/utils/grantValidation.js.map +1 -1
  432. package/dist/utils/grants.cjs +1 -1
  433. package/dist/utils/grants.cjs.map +1 -1
  434. package/dist/utils/grants.d.ts +10 -13
  435. package/dist/utils/grants.js +1 -1
  436. package/dist/utils/grants.js.map +1 -1
  437. package/dist/utils/ipfs.d.ts +8 -10
  438. package/dist/utils/lazy-import.cjs +4 -6
  439. package/dist/utils/lazy-import.cjs.map +1 -1
  440. package/dist/utils/lazy-import.d.ts +1 -3
  441. package/dist/utils/lazy-import.js +4 -6
  442. package/dist/utils/lazy-import.js.map +1 -1
  443. package/dist/utils/multicall.cjs +4 -2
  444. package/dist/utils/multicall.cjs.map +1 -1
  445. package/dist/utils/multicall.d.ts +5 -8
  446. package/dist/utils/multicall.js +4 -2
  447. package/dist/utils/multicall.js.map +1 -1
  448. package/dist/utils/parseTransactionPojo.cjs.map +1 -1
  449. package/dist/utils/parseTransactionPojo.d.ts +4 -10
  450. package/dist/utils/parseTransactionPojo.js.map +1 -1
  451. package/dist/utils/schemaValidation.cjs +5 -5
  452. package/dist/utils/schemaValidation.cjs.map +1 -1
  453. package/dist/utils/schemaValidation.d.ts +8 -12
  454. package/dist/utils/schemaValidation.js +7 -10
  455. package/dist/utils/schemaValidation.js.map +1 -1
  456. package/dist/utils/signatureCache.cjs +1 -2
  457. package/dist/utils/signatureCache.cjs.map +1 -1
  458. package/dist/utils/signatureCache.d.ts +4 -7
  459. package/dist/utils/signatureCache.js +4 -8
  460. package/dist/utils/signatureCache.js.map +1 -1
  461. package/dist/utils/signatureFormatter.cjs +6 -9
  462. package/dist/utils/signatureFormatter.cjs.map +1 -1
  463. package/dist/utils/signatureFormatter.d.ts +2 -5
  464. package/dist/utils/signatureFormatter.js +6 -9
  465. package/dist/utils/signatureFormatter.js.map +1 -1
  466. package/dist/utils/tests/multicall.test.d.ts +1 -0
  467. package/dist/utils/transactionHelpers.cjs.map +1 -1
  468. package/dist/utils/transactionHelpers.d.ts +5 -11
  469. package/dist/utils/transactionHelpers.js.map +1 -1
  470. package/dist/utils/typeGuards.cjs +109 -0
  471. package/dist/utils/typeGuards.cjs.map +1 -0
  472. package/dist/utils/typeGuards.d.ts +138 -0
  473. package/dist/utils/typeGuards.js +74 -0
  474. package/dist/utils/typeGuards.js.map +1 -0
  475. package/dist/utils/typedDataConverter.d.ts +3 -6
  476. package/dist/utils/urlResolver.cjs +1 -1
  477. package/dist/utils/urlResolver.cjs.map +1 -1
  478. package/dist/utils/urlResolver.d.ts +2 -4
  479. package/dist/utils/urlResolver.js +2 -2
  480. package/dist/utils/urlResolver.js.map +1 -1
  481. package/dist/utils/wallet.cjs +62 -0
  482. package/dist/utils/wallet.cjs.map +1 -0
  483. package/dist/utils/wallet.d.ts +32 -0
  484. package/dist/utils/wallet.js +36 -0
  485. package/dist/utils/wallet.js.map +1 -0
  486. package/dist/utils/withEvents.cjs.map +1 -1
  487. package/dist/utils/withEvents.d.ts +5 -12
  488. package/dist/utils/withEvents.js.map +1 -1
  489. package/package.json +22 -16
  490. package/dist/browser.d.cts +0 -2
  491. package/dist/chains/definitions.d.cts +0 -53
  492. package/dist/chains/index.d.cts +0 -2
  493. package/dist/chains.browser.cjs +0 -37
  494. package/dist/chains.browser.cjs.map +0 -1
  495. package/dist/chains.browser.d.cts +0 -2
  496. package/dist/chains.d.cts +0 -2
  497. package/dist/chains.node.d.cts +0 -2
  498. package/dist/config/addresses.d.cts +0 -401
  499. package/dist/config/chains.d.cts +0 -85
  500. package/dist/config/features.d.cts +0 -64
  501. package/dist/contracts/contractController.d.cts +0 -117
  502. package/dist/controllers/data.d.cts +0 -915
  503. package/dist/controllers/permissions.d.cts +0 -1383
  504. package/dist/controllers/protocol.d.cts +0 -188
  505. package/dist/controllers/schemas.d.cts +0 -260
  506. package/dist/controllers/server.d.cts +0 -230
  507. package/dist/core/apiClient.d.cts +0 -165
  508. package/dist/core/client.d.cts +0 -92
  509. package/dist/core/generics.d.cts +0 -120
  510. package/dist/core.d.cts +0 -493
  511. package/dist/crypto/ecies/__tests__/test-vectors.d.cts +0 -40
  512. package/dist/crypto/ecies/base.d.cts +0 -143
  513. package/dist/crypto/ecies/browser.d.cts +0 -48
  514. package/dist/crypto/ecies/constants.d.cts +0 -122
  515. package/dist/crypto/ecies/index.d.cts +0 -1
  516. package/dist/crypto/ecies/interface.d.cts +0 -176
  517. package/dist/crypto/ecies/node.d.cts +0 -50
  518. package/dist/crypto/ecies/test-vectors/eccrypto-vectors.d.cts +0 -76
  519. package/dist/crypto/ecies/test-vectors/eccrypto-vectors.d.ts +0 -76
  520. package/dist/crypto/ecies/utils.d.cts +0 -67
  521. package/dist/crypto/services/WalletKeyEncryptionService.d.cts +0 -92
  522. package/dist/diagnostics.d.cts +0 -26
  523. package/dist/errors.d.cts +0 -350
  524. package/dist/generated/abi/ComputeEngineImplementation.d.cts +0 -996
  525. package/dist/generated/abi/ComputeInstructionRegistryImplementation.d.cts +0 -545
  526. package/dist/generated/abi/DATFactoryImplementation.d.cts +0 -661
  527. package/dist/generated/abi/DATImplementation.d.cts +0 -693
  528. package/dist/generated/abi/DATPausableImplementation.d.cts +0 -1145
  529. package/dist/generated/abi/DATVotesImplementation.d.cts +0 -1095
  530. package/dist/generated/abi/DLPPerformanceImplementation.d.cts +0 -883
  531. package/dist/generated/abi/DLPRegistryImplementation.d.cts +0 -1123
  532. package/dist/generated/abi/DLPRegistryTreasuryImplementation.d.cts +0 -452
  533. package/dist/generated/abi/DLPRewardDeployerImplementation.d.cts +0 -714
  534. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.d.cts +0 -452
  535. package/dist/generated/abi/DLPRewardSwapImplementation.d.cts +0 -706
  536. package/dist/generated/abi/DLPRootImplementation.d.cts +0 -1248
  537. package/dist/generated/abi/DLPTreasuryImplementation.d.cts +0 -452
  538. package/dist/generated/abi/DataLiquidityPoolImplementation.d.cts +0 -737
  539. package/dist/generated/abi/DataPortabilityGranteesImplementation.d.cts +0 -661
  540. package/dist/generated/abi/DataPortabilityPermissionsImplementation.d.cts +0 -989
  541. package/dist/generated/abi/DataPortabilityServersImplementation.d.cts +0 -1086
  542. package/dist/generated/abi/DataRefinerRegistryImplementation.d.cts +0 -737
  543. package/dist/generated/abi/DataRegistryImplementation.d.cts +0 -1014
  544. package/dist/generated/abi/QueryEngineImplementation.d.cts +0 -1001
  545. package/dist/generated/abi/SwapHelperImplementation.d.cts +0 -764
  546. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.d.cts +0 -701
  547. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.d.cts +0 -701
  548. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.d.cts +0 -701
  549. package/dist/generated/abi/TeePoolImplementation.d.cts +0 -993
  550. package/dist/generated/abi/TeePoolPersistentGpuImplementation.d.cts +0 -701
  551. package/dist/generated/abi/TeePoolPersistentStandardImplementation.d.cts +0 -701
  552. package/dist/generated/abi/TeePoolPhalaImplementation.d.cts +0 -993
  553. package/dist/generated/abi/VanaEpochImplementation.d.cts +0 -900
  554. package/dist/generated/abi/VanaPoolEntityImplementation.d.cts +0 -934
  555. package/dist/generated/abi/VanaPoolStakingImplementation.d.cts +0 -693
  556. package/dist/generated/abi/VanaPoolTreasuryImplementation.d.cts +0 -394
  557. package/dist/generated/abi/index.d.cts +0 -26547
  558. package/dist/generated/event-types.d.cts +0 -855
  559. package/dist/generated/eventRegistry.d.cts +0 -18
  560. package/dist/generated/server/server-exports.d.cts +0 -21
  561. package/dist/generated/server/server.d.cts +0 -512
  562. package/dist/generated/subgraph.d.cts +0 -5981
  563. package/dist/index.browser.cjs +0 -151
  564. package/dist/index.browser.cjs.map +0 -1
  565. package/dist/index.browser.d.cts +0 -201
  566. package/dist/index.d.cts +0 -2
  567. package/dist/index.node.d.cts +0 -87
  568. package/dist/node.d.cts +0 -2
  569. package/dist/platform/browser-only.d.cts +0 -25
  570. package/dist/platform/browser-safe.d.cts +0 -32
  571. package/dist/platform/browser.d.cts +0 -74
  572. package/dist/platform/index.d.cts +0 -5
  573. package/dist/platform/interface.d.cts +0 -218
  574. package/dist/platform/node.d.cts +0 -27
  575. package/dist/platform/shared/error-utils.d.cts +0 -25
  576. package/dist/platform/shared/pgp-utils.d.cts +0 -61
  577. package/dist/platform/shared/stream-utils.d.cts +0 -16
  578. package/dist/platform/utils.d.cts +0 -53
  579. package/dist/platform.browser.cjs +0 -41
  580. package/dist/platform.browser.cjs.map +0 -1
  581. package/dist/platform.browser.d.cts +0 -4
  582. package/dist/platform.d.cts +0 -5
  583. package/dist/platform.node.d.cts +0 -5
  584. package/dist/schemas/dataSchema.schema.d.cts +0 -88
  585. package/dist/schemas/dataSchema.schema.d.ts +0 -88
  586. package/dist/schemas/grantFile.schema.d.cts +0 -57
  587. package/dist/schemas/grantFile.schema.d.ts +0 -57
  588. package/dist/server/handler.d.cts +0 -306
  589. package/dist/storage/index.d.cts +0 -10
  590. package/dist/storage/manager.d.cts +0 -150
  591. package/dist/storage/providers/callback-storage.d.cts +0 -100
  592. package/dist/storage/providers/google-drive.d.cts +0 -156
  593. package/dist/storage/providers/ipfs.d.cts +0 -163
  594. package/dist/storage/providers/pinata.d.cts +0 -173
  595. package/dist/types/blockchain.d.cts +0 -52
  596. package/dist/types/chains.d.cts +0 -34
  597. package/dist/types/config.d.cts +0 -726
  598. package/dist/types/contracts.d.cts +0 -68
  599. package/dist/types/controller-context.d.cts +0 -71
  600. package/dist/types/data.d.cts +0 -694
  601. package/dist/types/eccrypto-js.d.d.cts +0 -13
  602. package/dist/types/eccrypto-js.d.d.ts +0 -13
  603. package/dist/types/external-apis.d.cts +0 -186
  604. package/dist/types/generics.d.cts +0 -450
  605. package/dist/types/index.d.cts +0 -22
  606. package/dist/types/operations.d.cts +0 -116
  607. package/dist/types/permissions.d.cts +0 -957
  608. package/dist/types/personal.d.cts +0 -40
  609. package/dist/types/relayer.d.cts +0 -284
  610. package/dist/types/storage.d.cts +0 -131
  611. package/dist/types/transactionResults.d.cts +0 -195
  612. package/dist/types/utils.d.cts +0 -819
  613. package/dist/types.d.cts +0 -54
  614. package/dist/utils/blockchain/registry.d.cts +0 -34
  615. package/dist/utils/crypto-utils.d.cts +0 -118
  616. package/dist/utils/download.d.cts +0 -41
  617. package/dist/utils/encoding.d.cts +0 -54
  618. package/dist/utils/encryption.d.cts +0 -275
  619. package/dist/utils/formatters.d.cts +0 -120
  620. package/dist/utils/grantFiles.d.cts +0 -186
  621. package/dist/utils/grantValidation.d.cts +0 -150
  622. package/dist/utils/grants.d.cts +0 -70
  623. package/dist/utils/ipfs.d.cts +0 -90
  624. package/dist/utils/lazy-import.d.cts +0 -20
  625. package/dist/utils/multicall.d.cts +0 -129
  626. package/dist/utils/parseTransactionPojo.d.cts +0 -37
  627. package/dist/utils/schemaValidation.d.cts +0 -172
  628. package/dist/utils/signatureCache.d.cts +0 -134
  629. package/dist/utils/signatureFormatter.d.cts +0 -39
  630. package/dist/utils/transactionHelpers.d.cts +0 -86
  631. package/dist/utils/typedDataConverter.d.cts +0 -13
  632. package/dist/utils/urlResolver.d.cts +0 -40
  633. package/dist/utils/withEvents.d.cts +0 -63
@@ -1,10 +1,8 @@
1
- import { ControllerContext, Controller, GenericRequest, Middleware, GenericResponse, RetryConfig, RateLimiterConfig, Cache, Observable, Observer } from '../types/generics.js';
2
- import 'viem';
3
-
1
+ import type { Controller, ControllerContext, GenericRequest, GenericResponse, RetryConfig, RateLimiterConfig, Middleware, Cache, Observer, Observable } from "../types/generics";
4
2
  /**
5
3
  * Base controller class with common functionality
6
4
  */
7
- declare abstract class BaseController<TContext extends ControllerContext = ControllerContext> implements Controller<TContext> {
5
+ export declare abstract class BaseController<TContext extends ControllerContext = ControllerContext> implements Controller<TContext> {
8
6
  readonly context: TContext;
9
7
  constructor(context: TContext);
10
8
  /**
@@ -28,14 +26,14 @@ declare abstract class BaseController<TContext extends ControllerContext = Contr
28
26
  /**
29
27
  * Generic retry utility with exponential backoff
30
28
  */
31
- declare class RetryUtility {
29
+ export declare class RetryUtility {
32
30
  private static delay;
33
31
  static withRetry<T>(operation: () => Promise<T>, config: RetryConfig): Promise<T>;
34
32
  }
35
33
  /**
36
34
  * Generic rate limiter
37
35
  */
38
- declare class RateLimiter {
36
+ export declare class RateLimiter {
39
37
  private config;
40
38
  private requests;
41
39
  constructor(config: RateLimiterConfig);
@@ -47,7 +45,7 @@ declare class RateLimiter {
47
45
  /**
48
46
  * Generic in-memory cache implementation
49
47
  */
50
- declare class MemoryCache<TKey = string, TValue = unknown> implements Cache<TKey, TValue> {
48
+ export declare class MemoryCache<TKey = string, TValue = unknown> implements Cache<TKey, TValue> {
51
49
  private cache;
52
50
  get(key: TKey): Promise<TValue | undefined>;
53
51
  set(key: TKey, value: TValue, ttl?: number): Promise<void>;
@@ -60,7 +58,7 @@ declare class MemoryCache<TKey = string, TValue = unknown> implements Cache<TKey
60
58
  /**
61
59
  * Generic event emitter implementation
62
60
  */
63
- declare class EventEmitter<TEvent = unknown> implements Observable<TEvent> {
61
+ export declare class EventEmitter<TEvent = unknown> implements Observable<TEvent> {
64
62
  private observers;
65
63
  subscribe(observer: Observer<TEvent>): () => void;
66
64
  unsubscribe(observer: Observer<TEvent>): void;
@@ -71,7 +69,7 @@ declare class EventEmitter<TEvent = unknown> implements Observable<TEvent> {
71
69
  /**
72
70
  * Generic middleware pipeline
73
71
  */
74
- declare class MiddlewarePipeline {
72
+ export declare class MiddlewarePipeline {
75
73
  private middleware;
76
74
  use(middleware: Middleware<any, any>): void;
77
75
  processRequest<TRequest>(request: TRequest): Promise<TRequest>;
@@ -83,7 +81,7 @@ declare class MiddlewarePipeline {
83
81
  /**
84
82
  * Generic async queue for managing concurrent operations
85
83
  */
86
- declare class AsyncQueue<T = unknown> {
84
+ export declare class AsyncQueue<T = unknown> {
87
85
  private concurrency;
88
86
  private queue;
89
87
  private running;
@@ -98,7 +96,7 @@ declare class AsyncQueue<T = unknown> {
98
96
  /**
99
97
  * Generic circuit breaker pattern
100
98
  */
101
- declare class CircuitBreaker {
99
+ export declare class CircuitBreaker {
102
100
  private config;
103
101
  private state;
104
102
  private failures;
@@ -116,5 +114,3 @@ declare class CircuitBreaker {
116
114
  getFailures(): number;
117
115
  reset(): void;
118
116
  }
119
-
120
- export { AsyncQueue, BaseController, CircuitBreaker, EventEmitter, MemoryCache, MiddlewarePipeline, RateLimiter, RetryUtility };
@@ -1,9 +1,6 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
1
  class BaseController {
2
+ context;
5
3
  constructor(context) {
6
- __publicField(this, "context");
7
4
  this.context = context;
8
5
  }
9
6
  /**
@@ -47,6 +44,9 @@ class BaseController {
47
44
  }
48
45
  }
49
46
  return {
47
+ // TODO(TYPES): undefined coerced to TResponse for error case.
48
+ // Future improvement: Use discriminated union with success: false
49
+ // to properly type data as undefined when error occurs.
50
50
  data: void 0,
51
51
  success: false,
52
52
  error: {
@@ -87,9 +87,9 @@ class RetryUtility {
87
87
  if (attempt === config.maxAttempts) {
88
88
  break;
89
89
  }
90
- const baseDelay = config.baseDelay * Math.pow(config.backoffMultiplier || 2, attempt - 1);
91
- const maxDelay = config.maxDelay || 3e4;
92
- const jitter = config.jitter || 0;
90
+ const baseDelay = config.baseDelay * Math.pow(config.backoffMultiplier ?? 2, attempt - 1);
91
+ const maxDelay = config.maxDelay ?? 3e4;
92
+ const jitter = config.jitter ?? 0;
93
93
  let delay = Math.min(baseDelay, maxDelay);
94
94
  if (jitter > 0) {
95
95
  delay += Math.random() * jitter * delay;
@@ -97,14 +97,14 @@ class RetryUtility {
97
97
  await this.delay(delay);
98
98
  }
99
99
  }
100
- throw lastError || new Error("Operation failed after retries");
100
+ throw lastError ?? new Error("Operation failed after retries");
101
101
  }
102
102
  }
103
103
  class RateLimiter {
104
104
  constructor(config) {
105
105
  this.config = config;
106
- __publicField(this, "requests", []);
107
106
  }
107
+ requests = [];
108
108
  async checkLimit() {
109
109
  const now = Date.now();
110
110
  const windowStart = now - this.config.windowMs;
@@ -132,9 +132,7 @@ class RateLimiter {
132
132
  }
133
133
  }
134
134
  class MemoryCache {
135
- constructor() {
136
- __publicField(this, "cache", /* @__PURE__ */ new Map());
137
- }
135
+ cache = /* @__PURE__ */ new Map();
138
136
  async get(key) {
139
137
  const item = this.cache.get(key);
140
138
  if (!item) return void 0;
@@ -172,12 +170,12 @@ class MemoryCache {
172
170
  }
173
171
  }
174
172
  class EventEmitter {
175
- constructor() {
176
- __publicField(this, "observers", []);
177
- }
173
+ observers = [];
178
174
  subscribe(observer) {
179
175
  this.observers.push(observer);
180
- return () => this.unsubscribe(observer);
176
+ return () => {
177
+ this.unsubscribe(observer);
178
+ };
181
179
  }
182
180
  unsubscribe(observer) {
183
181
  const index = this.observers.indexOf(observer);
@@ -207,11 +205,7 @@ class EventEmitter {
207
205
  }
208
206
  }
209
207
  class MiddlewarePipeline {
210
- constructor() {
211
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
212
- __publicField(this, "middleware", []);
213
- }
214
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
208
+ middleware = [];
215
209
  use(middleware) {
216
210
  this.middleware.push(middleware);
217
211
  }
@@ -243,7 +237,6 @@ class MiddlewarePipeline {
243
237
  }
244
238
  }
245
239
  }
246
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
247
240
  getMiddleware() {
248
241
  return [...this.middleware];
249
242
  }
@@ -254,9 +247,9 @@ class MiddlewarePipeline {
254
247
  class AsyncQueue {
255
248
  constructor(concurrency = 1) {
256
249
  this.concurrency = concurrency;
257
- __publicField(this, "queue", []);
258
- __publicField(this, "running", 0);
259
250
  }
251
+ queue = [];
252
+ running = 0;
260
253
  async add(operation) {
261
254
  return new Promise((resolve, reject) => {
262
255
  this.queue.push(async () => {
@@ -301,11 +294,11 @@ class AsyncQueue {
301
294
  class CircuitBreaker {
302
295
  constructor(config) {
303
296
  this.config = config;
304
- __publicField(this, "state", "closed");
305
- __publicField(this, "failures", 0);
306
- __publicField(this, "lastFailureTime", 0);
307
- __publicField(this, "successes", 0);
308
297
  }
298
+ state = "closed";
299
+ failures = 0;
300
+ lastFailureTime = 0;
301
+ successes = 0;
309
302
  async execute(operation) {
310
303
  if (this.state === "open") {
311
304
  if (Date.now() - this.lastFailureTime > this.config.recoveryTimeout) {
@@ -328,7 +321,7 @@ class CircuitBreaker {
328
321
  this.failures = 0;
329
322
  if (this.state === "half-open") {
330
323
  this.successes++;
331
- if (this.successes >= (this.config.halfOpenMaxAttempts || 1)) {
324
+ if (this.successes >= (this.config.halfOpenMaxAttempts ?? 1)) {
332
325
  this.state = "closed";
333
326
  }
334
327
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/generics.ts"],"sourcesContent":["import type {\n Controller,\n ControllerContext,\n GenericRequest,\n GenericResponse,\n RetryConfig,\n RateLimiterConfig,\n Middleware,\n Cache,\n Observer,\n Observable,\n} from \"../types/generics\";\n\n/**\n * Base controller class with common functionality\n */\nexport abstract class BaseController<\n TContext extends ControllerContext = ControllerContext,\n> implements Controller<TContext>\n{\n public readonly context: TContext;\n\n constructor(context: TContext) {\n this.context = context;\n }\n\n /**\n * Execute a request with optional middleware pipeline\n *\n * @param request - The generic request object containing parameters and metadata\n * @param handler - The function that processes the request parameters\n * @param middleware - Optional array of middleware functions to apply\n * @returns Promise resolving to a generic response object\n */\n protected async executeRequest<TParams, TResponse>(\n request: GenericRequest<TParams>,\n handler: (params: TParams) => Promise<TResponse>,\n middleware: Middleware[] = [],\n ): Promise<GenericResponse<TResponse>> {\n try {\n // Apply request middleware\n let processedRequest = request;\n for (const mw of middleware) {\n if (mw.request) {\n processedRequest = (await mw.request(\n processedRequest,\n )) as GenericRequest<TParams>;\n }\n }\n\n // Execute handler\n let response = await handler(processedRequest.params);\n\n // Apply response middleware\n for (const mw of middleware.reverse()) {\n if (mw.response) {\n response = (await mw.response(response)) as Awaited<TResponse>;\n }\n }\n\n return {\n data: response,\n success: true,\n };\n } catch (error) {\n // Handle errors with middleware\n for (const mw of middleware) {\n if (mw.error) {\n const handled = await mw.error(error as Error, request);\n if (handled) {\n return {\n data: handled as TResponse,\n success: true,\n };\n }\n }\n }\n\n return {\n data: undefined as unknown as TResponse,\n success: false,\n error: {\n code: \"EXECUTION_ERROR\",\n message: error instanceof Error ? error.message : \"Unknown error\",\n details: error,\n },\n };\n }\n }\n\n /**\n * Validate parameters with optional custom validator\n *\n * @param params - The parameters to validate\n * @param validator - Optional function to validate parameter types\n * @throws Error if validation fails, asserts type if successful\n */\n protected validateParams<T>(\n params: unknown,\n validator?: (params: unknown) => params is T,\n ): asserts params is T {\n if (validator && !validator(params)) {\n throw new Error(\"Invalid parameters\");\n }\n }\n}\n\n/**\n * Generic retry utility with exponential backoff\n */\nexport class RetryUtility {\n private static async delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n static async withRetry<T>(\n operation: () => Promise<T>,\n config: RetryConfig,\n ): Promise<T> {\n let lastError: Error | undefined;\n\n for (let attempt = 1; attempt <= config.maxAttempts; attempt++) {\n try {\n return await operation();\n } catch (error) {\n lastError = error as Error;\n\n // Check if we should retry\n if (config.shouldRetry && !config.shouldRetry(lastError, attempt)) {\n throw lastError;\n }\n\n // Don't delay on the last attempt\n if (attempt === config.maxAttempts) {\n break;\n }\n\n // Calculate delay with exponential backoff and jitter\n const baseDelay =\n config.baseDelay *\n Math.pow(config.backoffMultiplier || 2, attempt - 1);\n const maxDelay = config.maxDelay || 30000;\n const jitter = config.jitter || 0;\n\n let delay = Math.min(baseDelay, maxDelay);\n\n if (jitter > 0) {\n delay += Math.random() * jitter * delay;\n }\n\n await this.delay(delay);\n }\n }\n\n throw lastError || new Error(\"Operation failed after retries\");\n }\n}\n\n/**\n * Generic rate limiter\n */\nexport class RateLimiter {\n private requests: number[] = [];\n\n constructor(private config: RateLimiterConfig) {}\n\n async checkLimit(): Promise<boolean> {\n const now = Date.now();\n const windowStart = now - this.config.windowMs;\n\n // Remove requests outside the window\n this.requests = this.requests.filter((time) => time > windowStart);\n\n // Check if we can make a request\n if (this.requests.length < this.config.requestsPerWindow) {\n this.requests.push(now);\n return true;\n }\n\n return false;\n }\n\n async waitForSlot(): Promise<void> {\n while (!(await this.checkLimit())) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n }\n\n getRemainingRequests(): number {\n const now = Date.now();\n const windowStart = now - this.config.windowMs;\n const activeRequests = this.requests.filter((time) => time > windowStart);\n return Math.max(0, this.config.requestsPerWindow - activeRequests.length);\n }\n\n getResetTime(): number {\n if (this.requests.length === 0) return 0;\n return Math.max(0, this.requests[0] + this.config.windowMs - Date.now());\n }\n}\n\n/**\n * Generic in-memory cache implementation\n */\nexport class MemoryCache<TKey = string, TValue = unknown>\n implements Cache<TKey, TValue>\n{\n private cache = new Map<TKey, { value: TValue; expiry?: number }>();\n\n async get(key: TKey): Promise<TValue | undefined> {\n const item = this.cache.get(key);\n\n if (!item) return undefined;\n\n // Check if expired\n if (item.expiry && Date.now() > item.expiry) {\n this.cache.delete(key);\n return undefined;\n }\n\n return item.value;\n }\n\n async set(key: TKey, value: TValue, ttl?: number): Promise<void> {\n const expiry = ttl ? Date.now() + ttl : undefined;\n this.cache.set(key, { value, expiry });\n }\n\n async delete(key: TKey): Promise<boolean> {\n return this.cache.delete(key);\n }\n\n async clear(): Promise<void> {\n this.cache.clear();\n }\n\n async has(key: TKey): Promise<boolean> {\n const exists = this.cache.has(key);\n if (!exists) return false;\n\n // Check expiry\n const item = this.cache.get(key);\n if (item?.expiry && Date.now() > item.expiry) {\n this.cache.delete(key);\n return false;\n }\n\n return true;\n }\n\n size(): number {\n return this.cache.size;\n }\n\n keys(): TKey[] {\n return Array.from(this.cache.keys());\n }\n}\n\n/**\n * Generic event emitter implementation\n */\nexport class EventEmitter<TEvent = unknown> implements Observable<TEvent> {\n private observers: Observer<TEvent>[] = [];\n\n subscribe(observer: Observer<TEvent>): () => void {\n this.observers.push(observer);\n\n return () => this.unsubscribe(observer);\n }\n\n unsubscribe(observer: Observer<TEvent>): void {\n const index = this.observers.indexOf(observer);\n if (index > -1) {\n this.observers.splice(index, 1);\n }\n }\n\n emit(event: TEvent): void {\n for (const observer of this.observers) {\n try {\n const result = observer.notify(event);\n if (result instanceof Promise) {\n result.catch((error) => {\n console.error(\"Observer error:\", error);\n });\n }\n } catch (error) {\n console.error(\"Observer error:\", error);\n }\n }\n }\n\n getObserverCount(): number {\n return this.observers.length;\n }\n\n removeAllObservers(): void {\n this.observers = [];\n }\n}\n\n/**\n * Generic middleware pipeline\n */\nexport class MiddlewarePipeline {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private middleware: Middleware<any, any>[] = [];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n use(middleware: Middleware<any, any>): void {\n this.middleware.push(middleware);\n }\n\n async processRequest<TRequest>(request: TRequest): Promise<TRequest> {\n let processed = request;\n\n for (const mw of this.middleware) {\n if (mw.request) {\n processed = await mw.request(processed);\n }\n }\n\n return processed;\n }\n\n async processResponse<TResponse>(response: TResponse): Promise<TResponse> {\n let processed = response;\n\n // Process in reverse order\n for (const mw of this.middleware.slice().reverse()) {\n if (mw.response) {\n processed = await mw.response(processed);\n }\n }\n\n return processed;\n }\n\n async handleError<TRequest, TResponse>(\n error: Error,\n request: TRequest,\n ): Promise<TResponse | void> {\n for (const mw of this.middleware) {\n if (mw.error) {\n const result = await mw.error(error, request);\n if (result) {\n return result;\n }\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getMiddleware(): Middleware<any, any>[] {\n return [...this.middleware];\n }\n\n clear(): void {\n this.middleware = [];\n }\n}\n\n/**\n * Generic async queue for managing concurrent operations\n */\nexport class AsyncQueue<T = unknown> {\n private queue: Array<() => Promise<T>> = [];\n private running = 0;\n\n constructor(private concurrency = 1) {}\n\n async add<R>(operation: () => Promise<R>): Promise<R> {\n return new Promise((resolve, reject) => {\n this.queue.push(async () => {\n try {\n const result = await operation();\n resolve(result as unknown as R);\n return result as unknown as T;\n } catch (error) {\n reject(error);\n throw error;\n } finally {\n this.running--;\n this.processQueue();\n }\n });\n\n this.processQueue();\n });\n }\n\n private processQueue(): void {\n while (this.running < this.concurrency && this.queue.length > 0) {\n const operation = this.queue.shift();\n if (operation) {\n this.running++;\n operation().catch(() => {\n // Error already handled in add method\n });\n }\n }\n }\n\n get pending(): number {\n return this.queue.length;\n }\n\n get active(): number {\n return this.running;\n }\n\n get size(): number {\n return this.queue.length + this.running;\n }\n\n clear(): void {\n this.queue = [];\n }\n}\n\n/**\n * Generic circuit breaker pattern\n */\nexport class CircuitBreaker {\n private state: \"closed\" | \"open\" | \"half-open\" = \"closed\";\n private failures = 0;\n private lastFailureTime = 0;\n private successes = 0;\n\n constructor(\n private config: {\n failureThreshold: number;\n recoveryTimeout: number;\n halfOpenMaxAttempts?: number;\n },\n ) {}\n\n async execute<TResult>(operation: () => Promise<TResult>): Promise<TResult> {\n if (this.state === \"open\") {\n if (Date.now() - this.lastFailureTime > this.config.recoveryTimeout) {\n this.state = \"half-open\";\n this.successes = 0;\n } else {\n throw new Error(\"Circuit breaker is open\");\n }\n }\n\n try {\n const result = await operation();\n this.onSuccess();\n return result;\n } catch (error) {\n this.onFailure();\n throw error;\n }\n }\n\n private onSuccess(): void {\n this.failures = 0;\n\n if (this.state === \"half-open\") {\n this.successes++;\n if (this.successes >= (this.config.halfOpenMaxAttempts || 1)) {\n this.state = \"closed\";\n }\n }\n }\n\n private onFailure(): void {\n this.failures++;\n this.lastFailureTime = Date.now();\n\n if (this.failures >= this.config.failureThreshold) {\n this.state = \"open\";\n }\n }\n\n getState(): string {\n return this.state;\n }\n\n getFailures(): number {\n return this.failures;\n }\n\n reset(): void {\n this.state = \"closed\";\n this.failures = 0;\n this.successes = 0;\n this.lastFailureTime = 0;\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/core/generics.ts"],"sourcesContent":["import type {\n Controller,\n ControllerContext,\n GenericRequest,\n GenericResponse,\n RetryConfig,\n RateLimiterConfig,\n Middleware,\n Cache,\n Observer,\n Observable,\n} from \"../types/generics\";\n\n/**\n * Base controller class with common functionality\n */\nexport abstract class BaseController<\n TContext extends ControllerContext = ControllerContext,\n> implements Controller<TContext>\n{\n public readonly context: TContext;\n\n constructor(context: TContext) {\n this.context = context;\n }\n\n /**\n * Execute a request with optional middleware pipeline\n *\n * @param request - The generic request object containing parameters and metadata\n * @param handler - The function that processes the request parameters\n * @param middleware - Optional array of middleware functions to apply\n * @returns Promise resolving to a generic response object\n */\n protected async executeRequest<TParams, TResponse>(\n request: GenericRequest<TParams>,\n handler: (params: TParams) => Promise<TResponse>,\n middleware: Middleware[] = [],\n ): Promise<GenericResponse<TResponse>> {\n try {\n // Apply request middleware\n let processedRequest = request;\n for (const mw of middleware) {\n if (mw.request) {\n processedRequest = (await mw.request(\n processedRequest,\n )) as GenericRequest<TParams>;\n }\n }\n\n // Execute handler\n let response = await handler(processedRequest.params);\n\n // Apply response middleware\n for (const mw of middleware.reverse()) {\n if (mw.response) {\n response = (await mw.response(response)) as Awaited<TResponse>;\n }\n }\n\n return {\n data: response,\n success: true,\n };\n } catch (error) {\n // Handle errors with middleware\n for (const mw of middleware) {\n if (mw.error) {\n const handled = await mw.error(error as Error, request);\n if (handled) {\n return {\n data: handled as TResponse,\n success: true,\n };\n }\n }\n }\n\n return {\n // TODO(TYPES): undefined coerced to TResponse for error case.\n // Future improvement: Use discriminated union with success: false\n // to properly type data as undefined when error occurs.\n data: undefined as unknown as TResponse,\n success: false,\n error: {\n code: \"EXECUTION_ERROR\",\n message: error instanceof Error ? error.message : \"Unknown error\",\n details: error,\n },\n };\n }\n }\n\n /**\n * Validate parameters with optional custom validator\n *\n * @param params - The parameters to validate\n * @param validator - Optional function to validate parameter types\n * @throws Error if validation fails, asserts type if successful\n */\n protected validateParams<T>(\n params: unknown,\n validator?: (params: unknown) => params is T,\n ): asserts params is T {\n if (validator && !validator(params)) {\n throw new Error(\"Invalid parameters\");\n }\n }\n}\n\n/**\n * Generic retry utility with exponential backoff\n */\nexport class RetryUtility {\n private static async delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n static async withRetry<T>(\n operation: () => Promise<T>,\n config: RetryConfig,\n ): Promise<T> {\n let lastError: Error | undefined;\n\n for (let attempt = 1; attempt <= config.maxAttempts; attempt++) {\n try {\n return await operation();\n } catch (error) {\n lastError = error as Error;\n\n // Check if we should retry\n if (config.shouldRetry && !config.shouldRetry(lastError, attempt)) {\n throw lastError;\n }\n\n // Don't delay on the last attempt\n if (attempt === config.maxAttempts) {\n break;\n }\n\n // Calculate delay with exponential backoff and jitter\n const baseDelay =\n config.baseDelay *\n Math.pow(config.backoffMultiplier ?? 2, attempt - 1);\n const maxDelay = config.maxDelay ?? 30000;\n const jitter = config.jitter ?? 0;\n\n let delay = Math.min(baseDelay, maxDelay);\n\n if (jitter > 0) {\n delay += Math.random() * jitter * delay;\n }\n\n await this.delay(delay);\n }\n }\n\n throw lastError ?? new Error(\"Operation failed after retries\");\n }\n}\n\n/**\n * Generic rate limiter\n */\nexport class RateLimiter {\n private requests: number[] = [];\n\n constructor(private config: RateLimiterConfig) {}\n\n async checkLimit(): Promise<boolean> {\n const now = Date.now();\n const windowStart = now - this.config.windowMs;\n\n // Remove requests outside the window\n this.requests = this.requests.filter((time) => time > windowStart);\n\n // Check if we can make a request\n if (this.requests.length < this.config.requestsPerWindow) {\n this.requests.push(now);\n return true;\n }\n\n return false;\n }\n\n async waitForSlot(): Promise<void> {\n while (!(await this.checkLimit())) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n }\n\n getRemainingRequests(): number {\n const now = Date.now();\n const windowStart = now - this.config.windowMs;\n const activeRequests = this.requests.filter((time) => time > windowStart);\n return Math.max(0, this.config.requestsPerWindow - activeRequests.length);\n }\n\n getResetTime(): number {\n if (this.requests.length === 0) return 0;\n return Math.max(0, this.requests[0] + this.config.windowMs - Date.now());\n }\n}\n\n/**\n * Generic in-memory cache implementation\n */\nexport class MemoryCache<TKey = string, TValue = unknown>\n implements Cache<TKey, TValue>\n{\n private cache = new Map<TKey, { value: TValue; expiry?: number }>();\n\n async get(key: TKey): Promise<TValue | undefined> {\n const item = this.cache.get(key);\n\n if (!item) return undefined;\n\n // Check if expired\n if (item.expiry && Date.now() > item.expiry) {\n this.cache.delete(key);\n return undefined;\n }\n\n return item.value;\n }\n\n async set(key: TKey, value: TValue, ttl?: number): Promise<void> {\n const expiry = ttl ? Date.now() + ttl : undefined;\n this.cache.set(key, { value, expiry });\n }\n\n async delete(key: TKey): Promise<boolean> {\n return this.cache.delete(key);\n }\n\n async clear(): Promise<void> {\n this.cache.clear();\n }\n\n async has(key: TKey): Promise<boolean> {\n const exists = this.cache.has(key);\n if (!exists) return false;\n\n // Check expiry\n const item = this.cache.get(key);\n if (item?.expiry && Date.now() > item.expiry) {\n this.cache.delete(key);\n return false;\n }\n\n return true;\n }\n\n size(): number {\n return this.cache.size;\n }\n\n keys(): TKey[] {\n return Array.from(this.cache.keys());\n }\n}\n\n/**\n * Generic event emitter implementation\n */\nexport class EventEmitter<TEvent = unknown> implements Observable<TEvent> {\n private observers: Observer<TEvent>[] = [];\n\n subscribe(observer: Observer<TEvent>): () => void {\n this.observers.push(observer);\n\n return () => {\n this.unsubscribe(observer);\n };\n }\n\n unsubscribe(observer: Observer<TEvent>): void {\n const index = this.observers.indexOf(observer);\n if (index > -1) {\n this.observers.splice(index, 1);\n }\n }\n\n emit(event: TEvent): void {\n for (const observer of this.observers) {\n try {\n const result = observer.notify(event);\n if (result instanceof Promise) {\n result.catch((error) => {\n console.error(\"Observer error:\", error);\n });\n }\n } catch (error) {\n console.error(\"Observer error:\", error);\n }\n }\n }\n\n getObserverCount(): number {\n return this.observers.length;\n }\n\n removeAllObservers(): void {\n this.observers = [];\n }\n}\n\n/**\n * Generic middleware pipeline\n */\nexport class MiddlewarePipeline {\n private middleware: Middleware<any, any>[] = [];\n\n use(middleware: Middleware<any, any>): void {\n this.middleware.push(middleware);\n }\n\n async processRequest<TRequest>(request: TRequest): Promise<TRequest> {\n let processed = request;\n\n for (const mw of this.middleware) {\n if (mw.request) {\n processed = await mw.request(processed);\n }\n }\n\n return processed;\n }\n\n async processResponse<TResponse>(response: TResponse): Promise<TResponse> {\n let processed = response;\n\n // Process in reverse order\n for (const mw of this.middleware.slice().reverse()) {\n if (mw.response) {\n processed = await mw.response(processed);\n }\n }\n\n return processed;\n }\n\n async handleError<TRequest, TResponse>(\n error: Error,\n request: TRequest,\n ): Promise<TResponse | void> {\n for (const mw of this.middleware) {\n if (mw.error) {\n const result = await mw.error(error, request);\n if (result) {\n return result;\n }\n }\n }\n }\n\n getMiddleware(): Middleware<any, any>[] {\n return [...this.middleware];\n }\n\n clear(): void {\n this.middleware = [];\n }\n}\n\n/**\n * Generic async queue for managing concurrent operations\n */\nexport class AsyncQueue<T = unknown> {\n private queue: Array<() => Promise<T>> = [];\n private running = 0;\n\n constructor(private concurrency = 1) {}\n\n async add<R>(operation: () => Promise<R>): Promise<R> {\n return new Promise((resolve, reject) => {\n this.queue.push(async () => {\n try {\n const result = await operation();\n resolve(result as unknown as R);\n return result as unknown as T;\n } catch (error) {\n reject(error);\n throw error;\n } finally {\n this.running--;\n this.processQueue();\n }\n });\n\n this.processQueue();\n });\n }\n\n private processQueue(): void {\n while (this.running < this.concurrency && this.queue.length > 0) {\n const operation = this.queue.shift();\n if (operation) {\n this.running++;\n operation().catch(() => {\n // Error already handled in add method\n });\n }\n }\n }\n\n get pending(): number {\n return this.queue.length;\n }\n\n get active(): number {\n return this.running;\n }\n\n get size(): number {\n return this.queue.length + this.running;\n }\n\n clear(): void {\n this.queue = [];\n }\n}\n\n/**\n * Generic circuit breaker pattern\n */\nexport class CircuitBreaker {\n private state: \"closed\" | \"open\" | \"half-open\" = \"closed\";\n private failures = 0;\n private lastFailureTime = 0;\n private successes = 0;\n\n constructor(\n private config: {\n failureThreshold: number;\n recoveryTimeout: number;\n halfOpenMaxAttempts?: number;\n },\n ) {}\n\n async execute<TResult>(operation: () => Promise<TResult>): Promise<TResult> {\n if (this.state === \"open\") {\n if (Date.now() - this.lastFailureTime > this.config.recoveryTimeout) {\n this.state = \"half-open\";\n this.successes = 0;\n } else {\n throw new Error(\"Circuit breaker is open\");\n }\n }\n\n try {\n const result = await operation();\n this.onSuccess();\n return result;\n } catch (error) {\n this.onFailure();\n throw error;\n }\n }\n\n private onSuccess(): void {\n this.failures = 0;\n\n if (this.state === \"half-open\") {\n this.successes++;\n if (this.successes >= (this.config.halfOpenMaxAttempts ?? 1)) {\n this.state = \"closed\";\n }\n }\n }\n\n private onFailure(): void {\n this.failures++;\n this.lastFailureTime = Date.now();\n\n if (this.failures >= this.config.failureThreshold) {\n this.state = \"open\";\n }\n }\n\n getState(): string {\n return this.state;\n }\n\n getFailures(): number {\n return this.failures;\n }\n\n reset(): void {\n this.state = \"closed\";\n this.failures = 0;\n this.successes = 0;\n this.lastFailureTime = 0;\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
package/dist/core.cjs CHANGED
@@ -41,6 +41,7 @@ var import_server = require("./controllers/server");
41
41
  var import_protocol = require("./controllers/protocol");
42
42
  var import_storage = require("./storage");
43
43
  var import_viem = require("viem");
44
+ var import_wallet = require("./utils/wallet");
44
45
  var import_chains = require("./config/chains");
45
46
  var import_chains2 = require("./chains");
46
47
  var import_encryption = require("./utils/encryption");
@@ -103,9 +104,10 @@ class VanaCore {
103
104
  storageManager;
104
105
  hasRequiredStorage;
105
106
  ipfsGateways;
106
- defaultPersonalServerUrl;
107
107
  publicClient;
108
108
  walletClient;
109
+ _staticUserAddress;
110
+ // For read-only mode
109
111
  /**
110
112
  * Initializes a new VanaCore client instance with the provided configuration.
111
113
  *
@@ -133,17 +135,12 @@ class VanaCore {
133
135
  this.relayerCallbacks = config.relayerCallbacks;
134
136
  this.downloadRelayer = config.downloadRelayer;
135
137
  this.ipfsGateways = config.ipfsGateways;
136
- this.defaultPersonalServerUrl = config.defaultPersonalServerUrl;
137
138
  this.hasRequiredStorage = (0, import_types.hasStorageConfig)(config);
138
139
  if (config.storage?.providers) {
139
140
  this.storageManager = new import_storage.StorageManager();
140
141
  for (const [name, provider] of Object.entries(config.storage.providers)) {
141
142
  const isDefault = name === config.storage.defaultProvider;
142
- this.storageManager.register(
143
- name,
144
- provider,
145
- isDefault
146
- );
143
+ this.storageManager.register(name, provider, isDefault);
147
144
  }
148
145
  if (!config.storage.defaultProvider && Object.keys(config.storage.providers).length > 0) {
149
146
  const firstProviderName = Object.keys(config.storage.providers)[0];
@@ -151,8 +148,34 @@ class VanaCore {
151
148
  }
152
149
  }
153
150
  let walletClient;
151
+ let publicClient;
152
+ let staticUserAddress;
153
+ let chainToUse;
154
154
  if ((0, import_types.isWalletConfig)(config)) {
155
155
  walletClient = config.walletClient;
156
+ chainToUse = walletClient.chain ?? import_chains2.vanaMainnet;
157
+ staticUserAddress = void 0;
158
+ if ("publicClient" in config && config.publicClient) {
159
+ publicClient = config.publicClient;
160
+ } else {
161
+ publicClient = (0, import_viem.createPublicClient)({
162
+ chain: chainToUse,
163
+ transport: (0, import_viem.http)()
164
+ });
165
+ }
166
+ } else if ((0, import_types.isReadOnlyConfig)(config)) {
167
+ walletClient = void 0;
168
+ publicClient = config.publicClient;
169
+ staticUserAddress = config.address;
170
+ chainToUse = config.publicClient.chain ?? import_chains2.vanaMainnet;
171
+ } else if ((0, import_types.isAddressOnlyConfig)(config)) {
172
+ walletClient = void 0;
173
+ staticUserAddress = config.address;
174
+ chainToUse = config.chain ?? import_chains2.vanaMainnet;
175
+ publicClient = (0, import_viem.createPublicClient)({
176
+ chain: chainToUse,
177
+ transport: (0, import_viem.http)()
178
+ });
156
179
  } else if ((0, import_types.isChainConfig)(config)) {
157
180
  if (!config.account) {
158
181
  throw new import_errors.InvalidConfigurationError(
@@ -165,27 +188,35 @@ class VanaCore {
165
188
  `Unsupported chain ID: ${config.chainId}`
166
189
  );
167
190
  }
191
+ chainToUse = chain;
168
192
  walletClient = (0, import_viem.createWalletClient)({
169
193
  chain,
170
- transport: (0, import_viem.http)(config.rpcUrl || chain.rpcUrls.default.http[0]),
194
+ transport: (0, import_viem.http)(config.rpcUrl ?? chain.rpcUrls.default.http[0]),
171
195
  account: config.account
172
196
  });
197
+ staticUserAddress = void 0;
198
+ publicClient = (0, import_viem.createPublicClient)({
199
+ chain,
200
+ transport: (0, import_viem.http)()
201
+ });
173
202
  } else {
174
203
  throw new import_errors.InvalidConfigurationError(
175
- "Invalid configuration: must be either WalletConfig or ChainConfig"
204
+ "Invalid configuration: must provide either walletClient, publicClient + address, or address alone"
176
205
  );
177
206
  }
178
- const publicClient = (0, import_viem.createPublicClient)({
179
- chain: walletClient.chain,
180
- transport: (0, import_viem.http)()
181
- });
182
207
  this.publicClient = publicClient;
183
208
  this.walletClient = walletClient;
184
- const chainConfig = (0, import_chains2.getChainConfig)(walletClient.chain.id);
185
- const subgraphUrl = config.subgraphUrl || chainConfig?.subgraphUrl;
209
+ this._staticUserAddress = staticUserAddress;
210
+ const chainConfig = (0, import_chains2.getChainConfig)(chainToUse.id);
211
+ const subgraphUrl = config.subgraphUrl ?? chainConfig?.subgraphUrl;
212
+ const personalServerUrl = config.defaultPersonalServerUrl ?? chainConfig?.personalServerUrl;
213
+ const self = this;
186
214
  const sharedContext = {
187
215
  walletClient,
188
216
  publicClient,
217
+ get userAddress() {
218
+ return self.userAddress;
219
+ },
189
220
  applicationClient: walletClient,
190
221
  // Using same wallet for now
191
222
  relayerCallbacks: this.relayerCallbacks,
@@ -197,7 +228,7 @@ class VanaCore {
197
228
  validateStorageRequired: this.validateStorageRequired.bind(this),
198
229
  hasStorage: this.hasStorage.bind(this),
199
230
  ipfsGateways: this.ipfsGateways,
200
- defaultPersonalServerUrl: this.defaultPersonalServerUrl,
231
+ defaultPersonalServerUrl: personalServerUrl,
201
232
  waitForTransactionEvents: this.waitForTransactionEvents.bind(this),
202
233
  waitForOperation: this.waitForOperation.bind(this)
203
234
  };
@@ -316,13 +347,13 @@ class VanaCore {
316
347
  }
317
348
  if (!(0, import_types.isVanaChainId)(config.walletClient.chain.id)) {
318
349
  throw new import_errors.InvalidConfigurationError(
319
- `Unsupported chain ID: ${config.walletClient.chain.id}. Supported chains: 14800 (Moksha testnet), 1480 (Vana mainnet)`
350
+ `Unsupported chain ID: ${String(config.walletClient.chain.id)}. Supported chains: 14800 (Moksha testnet), 1480 (Vana mainnet)`
320
351
  );
321
352
  }
322
353
  } else if ((0, import_types.isChainConfig)(config)) {
323
354
  if (!(0, import_types.isVanaChainId)(config.chainId)) {
324
355
  throw new import_errors.InvalidConfigurationError(
325
- `Unsupported chain ID: ${config.chainId}. Supported chains: 14800 (Moksha testnet), 1480 (Vana mainnet)`
356
+ `Unsupported chain ID: ${String(config.chainId)}. Supported chains: 14800 (Moksha testnet), 1480 (Vana mainnet)`
326
357
  );
327
358
  }
328
359
  if (config.rpcUrl) {
@@ -345,9 +376,26 @@ class VanaCore {
345
376
  );
346
377
  }
347
378
  }
379
+ } else if ((0, import_types.isReadOnlyConfig)(config)) {
380
+ if (!config.publicClient) {
381
+ throw new import_errors.InvalidConfigurationError(
382
+ "publicClient is required for read-only configuration"
383
+ );
384
+ }
385
+ if (!config.address) {
386
+ throw new import_errors.InvalidConfigurationError(
387
+ "address is required for read-only configuration"
388
+ );
389
+ }
390
+ } else if ((0, import_types.isAddressOnlyConfig)(config)) {
391
+ if (!config.address) {
392
+ throw new import_errors.InvalidConfigurationError(
393
+ "address is required for address-only configuration"
394
+ );
395
+ }
348
396
  } else {
349
397
  throw new import_errors.InvalidConfigurationError(
350
- "Configuration must be either WalletConfig or ChainConfig"
398
+ "Invalid configuration: must provide either walletClient, publicClient + address, or address alone"
351
399
  );
352
400
  }
353
401
  }
@@ -378,27 +426,24 @@ class VanaCore {
378
426
  return this.protocol.getChainName();
379
427
  }
380
428
  /**
381
- * Retrieves the user's wallet address from the connected client.
429
+ * The user's wallet address.
430
+ * In wallet mode, this always returns the current wallet account address.
431
+ * In read-only mode, this returns the static address provided during initialization.
382
432
  *
383
- * @returns A Promise that resolves to the user's Ethereum address
384
433
  * @example
385
434
  * ```typescript
386
- * const address = await vana.getUserAddress();
435
+ * const address = vana.userAddress;
387
436
  * console.log(`User address: ${address}`); // e.g., "User address: 0x742d35..."
388
437
  * ```
389
438
  */
390
- async getUserAddress() {
391
- if (!this.walletClient.account) {
392
- throw new Error("No wallet account connected");
439
+ get userAddress() {
440
+ if (this.walletClient?.account) {
441
+ return (0, import_wallet.extractAddress)(this.walletClient.account);
393
442
  }
394
- const account = this.walletClient.account;
395
- if (typeof account === "string") {
396
- return account;
443
+ if (this._staticUserAddress) {
444
+ return this._staticUserAddress;
397
445
  }
398
- if (typeof account === "object" && account.address) {
399
- return account.address;
400
- }
401
- throw new Error("Unable to determine wallet address");
446
+ throw new Error("No user address available");
402
447
  }
403
448
  /**
404
449
  * Retrieves comprehensive runtime configuration information.
@@ -416,7 +461,7 @@ class VanaCore {
416
461
  chainId: this.chainId,
417
462
  chainName: this.chainName,
418
463
  relayerCallbacks: this.relayerCallbacks,
419
- storageProviders: this.storageManager?.getStorageProviders() || [],
464
+ storageProviders: this.storageManager?.getStorageProviders() ?? [],
420
465
  defaultStorageProvider: this.storageManager?.getDefaultStorageProvider()
421
466
  };
422
467
  }
@@ -645,7 +690,10 @@ class VanaCore {
645
690
  */
646
691
  async waitForTransactionEvents(transaction, options) {
647
692
  const { parseTransaction } = await import("./utils/parseTransactionPojo");
648
- const receipt = await this.waitForTransactionReceipt(transaction.hash, options);
693
+ const receipt = await this.waitForTransactionReceipt(
694
+ transaction.hash,
695
+ options
696
+ );
649
697
  const result = parseTransaction(transaction, receipt);
650
698
  return result;
651
699
  }