@super-protocol/swarm-contracts-sdk 0.0.1-beta.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 (629) hide show
  1. package/LICENSE +66 -0
  2. package/README.md +52 -0
  3. package/dist/cjs/analytics/Analytics.d.ts +17 -0
  4. package/dist/cjs/analytics/Analytics.js +84 -0
  5. package/dist/cjs/analytics/AnalyticsError.d.ts +7 -0
  6. package/dist/cjs/analytics/AnalyticsError.js +12 -0
  7. package/dist/cjs/analytics/eventProviders/BrowserEventProvider.d.ts +19 -0
  8. package/dist/cjs/analytics/eventProviders/BrowserEventProvider.js +38 -0
  9. package/dist/cjs/analytics/eventProviders/EventProvider.d.ts +24 -0
  10. package/dist/cjs/analytics/eventProviders/EventProvider.js +25 -0
  11. package/dist/cjs/analytics/eventProviders/NodeEventProvider.d.ts +22 -0
  12. package/dist/cjs/analytics/eventProviders/NodeEventProvider.js +56 -0
  13. package/dist/cjs/analytics/transports/AxiosTransport.d.ts +4 -0
  14. package/dist/cjs/analytics/transports/AxiosTransport.js +60 -0
  15. package/dist/cjs/analytics/transports/FetchTransport.d.ts +4 -0
  16. package/dist/cjs/analytics/transports/FetchTransport.js +31 -0
  17. package/dist/cjs/analytics/types.d.ts +26 -0
  18. package/dist/cjs/analytics/types.js +3 -0
  19. package/dist/cjs/certificates/binary-splitter.d.ts +27 -0
  20. package/dist/cjs/certificates/binary-splitter.js +279 -0
  21. package/dist/cjs/certificates/crl.d.ts +6 -0
  22. package/dist/cjs/certificates/crl.js +66 -0
  23. package/dist/cjs/certificates/generator.d.ts +38 -0
  24. package/dist/cjs/certificates/generator.js +262 -0
  25. package/dist/cjs/certificates/helper.d.ts +29 -0
  26. package/dist/cjs/certificates/helper.js +216 -0
  27. package/dist/cjs/certificates/index.d.ts +5 -0
  28. package/dist/cjs/certificates/index.js +22 -0
  29. package/dist/cjs/certificates/ocsp.d.ts +14 -0
  30. package/dist/cjs/certificates/ocsp.js +320 -0
  31. package/dist/cjs/certificates/serializer.d.ts +13 -0
  32. package/dist/cjs/certificates/serializer.js +142 -0
  33. package/dist/cjs/certificates/setup-crypto.d.ts +3 -0
  34. package/dist/cjs/certificates/setup-crypto.js +48 -0
  35. package/dist/cjs/certificates/types.d.ts +122 -0
  36. package/dist/cjs/certificates/types.js +10 -0
  37. package/dist/cjs/config.d.ts +3 -0
  38. package/dist/cjs/config.js +7 -0
  39. package/dist/cjs/connectors/BaseConnector.d.ts +52 -0
  40. package/dist/cjs/connectors/BaseConnector.js +61 -0
  41. package/dist/cjs/connectors/BlockchainConnector.d.ts +78 -0
  42. package/dist/cjs/connectors/BlockchainConnector.js +325 -0
  43. package/dist/cjs/connectors/BlockchainEventsListener.d.ts +33 -0
  44. package/dist/cjs/connectors/BlockchainEventsListener.js +283 -0
  45. package/dist/cjs/connectors/index.d.ts +2 -0
  46. package/dist/cjs/connectors/index.js +11 -0
  47. package/dist/cjs/constants.d.ts +48 -0
  48. package/dist/cjs/constants.js +683 -0
  49. package/dist/cjs/contracts/SuperProtocolToken.d.ts +300 -0
  50. package/dist/cjs/contracts/SuperProtocolToken.js +3 -0
  51. package/dist/cjs/contracts/SuperProtocolToken__factory.d.ts +393 -0
  52. package/dist/cjs/contracts/SuperProtocolToken__factory.js +521 -0
  53. package/dist/cjs/contracts/typechain-types/common.d.ts +50 -0
  54. package/dist/cjs/contracts/typechain-types/common.js +3 -0
  55. package/dist/cjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/App__factory.d.ts +3340 -0
  56. package/dist/cjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/App__factory.js +4335 -0
  57. package/dist/cjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/index.d.ts +1 -0
  58. package/dist/cjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/index.js +10 -0
  59. package/dist/cjs/contracts/typechain-types/factories/hardhat-diamond-abi/index.d.ts +1 -0
  60. package/dist/cjs/contracts/typechain-types/factories/hardhat-diamond-abi/index.js +32 -0
  61. package/dist/cjs/contracts/typechain-types/factories/index.d.ts +1 -0
  62. package/dist/cjs/contracts/typechain-types/factories/index.js +32 -0
  63. package/dist/cjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/App.d.ts +2299 -0
  64. package/dist/cjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/App.js +3 -0
  65. package/dist/cjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/index.d.ts +1 -0
  66. package/dist/cjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/index.js +3 -0
  67. package/dist/cjs/contracts/typechain-types/hardhat-diamond-abi/index.d.ts +2 -0
  68. package/dist/cjs/contracts/typechain-types/hardhat-diamond-abi/index.js +3 -0
  69. package/dist/cjs/contracts/typechain-types/index.d.ts +5 -0
  70. package/dist/cjs/contracts/typechain-types/index.js +34 -0
  71. package/dist/cjs/crypto/Crypto.d.ts +70 -0
  72. package/dist/cjs/crypto/Crypto.js +137 -0
  73. package/dist/cjs/crypto/index.d.ts +4 -0
  74. package/dist/cjs/crypto/index.js +37 -0
  75. package/dist/cjs/crypto/nodejs/AES.d.ts +25 -0
  76. package/dist/cjs/crypto/nodejs/AES.js +105 -0
  77. package/dist/cjs/crypto/nodejs/ARIA.d.ts +23 -0
  78. package/dist/cjs/crypto/nodejs/ARIA.js +77 -0
  79. package/dist/cjs/crypto/nodejs/ECIES.d.ts +10 -0
  80. package/dist/cjs/crypto/nodejs/ECIES.js +107 -0
  81. package/dist/cjs/crypto/nodejs/NativeCrypto.d.ts +46 -0
  82. package/dist/cjs/crypto/nodejs/NativeCrypto.js +154 -0
  83. package/dist/cjs/crypto/nodejs/RSA-Hybrid.d.ts +15 -0
  84. package/dist/cjs/crypto/nodejs/RSA-Hybrid.js +94 -0
  85. package/dist/cjs/crypto/types.d.ts +10 -0
  86. package/dist/cjs/crypto/types.js +3 -0
  87. package/dist/cjs/crypto/utils.d.ts +15 -0
  88. package/dist/cjs/crypto/utils.js +94 -0
  89. package/dist/cjs/crypto/utils.spec.d.ts +1 -0
  90. package/dist/cjs/crypto/utils.spec.js +221 -0
  91. package/dist/cjs/errors/base.error.d.ts +3 -0
  92. package/dist/cjs/errors/base.error.js +19 -0
  93. package/dist/cjs/errors/index.d.ts +3 -0
  94. package/dist/cjs/errors/index.js +10 -0
  95. package/dist/cjs/errors/insufficient-funds.error.d.ts +19 -0
  96. package/dist/cjs/errors/insufficient-funds.error.js +57 -0
  97. package/dist/cjs/errors/not-found.error.d.ts +3 -0
  98. package/dist/cjs/errors/not-found.error.js +8 -0
  99. package/dist/cjs/errors/utils.d.ts +2 -0
  100. package/dist/cjs/errors/utils.js +30 -0
  101. package/dist/cjs/index.d.ts +58 -0
  102. package/dist/cjs/index.js +119 -0
  103. package/dist/cjs/logger.d.ts +7 -0
  104. package/dist/cjs/logger.js +12 -0
  105. package/dist/cjs/models/EtlModel.d.ts +34 -0
  106. package/dist/cjs/models/EtlModel.js +125 -0
  107. package/dist/cjs/models/index.d.ts +1 -0
  108. package/dist/cjs/models/index.js +9 -0
  109. package/dist/cjs/package.json +1 -0
  110. package/dist/cjs/polyfills.d.ts +4 -0
  111. package/dist/cjs/polyfills.js +8 -0
  112. package/dist/cjs/proto/AmdSevSnp.d.ts +194 -0
  113. package/dist/cjs/proto/AmdSevSnp.js +358 -0
  114. package/dist/cjs/proto/Compression.d.ts +43 -0
  115. package/dist/cjs/proto/Compression.js +133 -0
  116. package/dist/cjs/proto/Hash.d.ts +37 -0
  117. package/dist/cjs/proto/Hash.js +104 -0
  118. package/dist/cjs/proto/Nvtrust.d.ts +116 -0
  119. package/dist/cjs/proto/Nvtrust.js +159 -0
  120. package/dist/cjs/proto/OrderReport.d.ts +730 -0
  121. package/dist/cjs/proto/OrderReport.js +466 -0
  122. package/dist/cjs/proto/TRI.d.ts +215 -0
  123. package/dist/cjs/proto/TRI.js +318 -0
  124. package/dist/cjs/providers/storage/ChunksDownloadDecorator.d.ts +36 -0
  125. package/dist/cjs/providers/storage/ChunksDownloadDecorator.js +145 -0
  126. package/dist/cjs/providers/storage/IStorageProvider.d.ts +15 -0
  127. package/dist/cjs/providers/storage/IStorageProvider.js +3 -0
  128. package/dist/cjs/providers/storage/S3StorageProvider.d.ts +26 -0
  129. package/dist/cjs/providers/storage/S3StorageProvider.js +210 -0
  130. package/dist/cjs/providers/storage/StorageAdapter.d.ts +62 -0
  131. package/dist/cjs/providers/storage/StorageAdapter.js +300 -0
  132. package/dist/cjs/providers/storage/StorageContentWriter.d.ts +46 -0
  133. package/dist/cjs/providers/storage/StorageContentWriter.js +168 -0
  134. package/dist/cjs/providers/storage/StorageKeyValueAdapter.d.ts +26 -0
  135. package/dist/cjs/providers/storage/StorageKeyValueAdapter.js +139 -0
  136. package/dist/cjs/providers/storage/StorageMetadataReader.d.ts +20 -0
  137. package/dist/cjs/providers/storage/StorageMetadataReader.js +56 -0
  138. package/dist/cjs/providers/storage/StorjAdapter.d.ts +20 -0
  139. package/dist/cjs/providers/storage/StorjAdapter.js +60 -0
  140. package/dist/cjs/providers/storage/StorjCredentialsManager.d.ts +24 -0
  141. package/dist/cjs/providers/storage/StorjCredentialsManager.js +114 -0
  142. package/dist/cjs/providers/storage/StorjStorageProvider.d.ts +29 -0
  143. package/dist/cjs/providers/storage/StorjStorageProvider.js +146 -0
  144. package/dist/cjs/providers/storage/fs-storage-provider.d.ts +19 -0
  145. package/dist/cjs/providers/storage/fs-storage-provider.js +162 -0
  146. package/dist/cjs/providers/storage/getStorageProvider.d.ts +4 -0
  147. package/dist/cjs/providers/storage/getStorageProvider.js +23 -0
  148. package/dist/cjs/providers/storage/parseStorageCredentials.d.ts +4 -0
  149. package/dist/cjs/providers/storage/parseStorageCredentials.js +21 -0
  150. package/dist/cjs/providers/storage/types.d.ts +29 -0
  151. package/dist/cjs/providers/storage/types.js +3 -0
  152. package/dist/cjs/staticModels/Deposits.d.ts +85 -0
  153. package/dist/cjs/staticModels/Deposits.js +268 -0
  154. package/dist/cjs/staticModels/Diamond.d.ts +6 -0
  155. package/dist/cjs/staticModels/Diamond.js +22 -0
  156. package/dist/cjs/staticModels/ModelPackager.d.ts +18 -0
  157. package/dist/cjs/staticModels/ModelPackager.js +49 -0
  158. package/dist/cjs/staticModels/ProviderRewards.d.ts +5 -0
  159. package/dist/cjs/staticModels/ProviderRewards.js +81 -0
  160. package/dist/cjs/staticModels/StaticModel.d.ts +6 -0
  161. package/dist/cjs/staticModels/StaticModel.js +43 -0
  162. package/dist/cjs/staticModels/Superpro.d.ts +18 -0
  163. package/dist/cjs/staticModels/Superpro.js +47 -0
  164. package/dist/cjs/staticModels/SuperproToken.d.ts +113 -0
  165. package/dist/cjs/staticModels/SuperproToken.js +333 -0
  166. package/dist/cjs/store.d.ts +17 -0
  167. package/dist/cjs/store.js +19 -0
  168. package/dist/cjs/tee/OrderReportService.d.ts +9 -0
  169. package/dist/cjs/tee/OrderReportService.js +104 -0
  170. package/dist/cjs/tee/QuoteParser.d.ts +82 -0
  171. package/dist/cjs/tee/QuoteParser.js +410 -0
  172. package/dist/cjs/tee/TeeCertificateService.d.ts +20 -0
  173. package/dist/cjs/tee/TeeCertificateService.js +143 -0
  174. package/dist/cjs/tee/TeeSignatureVerifier.d.ts +24 -0
  175. package/dist/cjs/tee/TeeSignatureVerifier.js +118 -0
  176. package/dist/cjs/tee/errors.d.ts +11 -0
  177. package/dist/cjs/tee/errors.js +20 -0
  178. package/dist/cjs/tee/helpers.d.ts +14 -0
  179. package/dist/cjs/tee/helpers.js +115 -0
  180. package/dist/cjs/tee/interface.d.ts +63 -0
  181. package/dist/cjs/tee/interface.js +3 -0
  182. package/dist/cjs/tee/statuses.d.ts +14 -0
  183. package/dist/cjs/tee/statuses.js +20 -0
  184. package/dist/cjs/tee/types.d.ts +126 -0
  185. package/dist/cjs/tee/types.js +34 -0
  186. package/dist/cjs/types/Compressor.d.ts +5 -0
  187. package/dist/cjs/types/Compressor.js +3 -0
  188. package/dist/cjs/types/Consensus.d.ts +52 -0
  189. package/dist/cjs/types/Consensus.js +11 -0
  190. package/dist/cjs/types/DepositInfo.d.ts +6 -0
  191. package/dist/cjs/types/DepositInfo.js +3 -0
  192. package/dist/cjs/types/DistributedSecretStorage.d.ts +68 -0
  193. package/dist/cjs/types/DistributedSecretStorage.js +3 -0
  194. package/dist/cjs/types/EtlModel.d.ts +2 -0
  195. package/dist/cjs/types/EtlModel.js +3 -0
  196. package/dist/cjs/types/Events.d.ts +34 -0
  197. package/dist/cjs/types/Events.js +3 -0
  198. package/dist/cjs/types/HardwareInfo.d.ts +10 -0
  199. package/dist/cjs/types/HardwareInfo.js +3 -0
  200. package/dist/cjs/types/Marks.d.ts +9 -0
  201. package/dist/cjs/types/Marks.js +10 -0
  202. package/dist/cjs/types/Offer.d.ts +76 -0
  203. package/dist/cjs/types/Offer.js +32 -0
  204. package/dist/cjs/types/OfferVersion.d.ts +30 -0
  205. package/dist/cjs/types/OfferVersion.js +9 -0
  206. package/dist/cjs/types/OptionInfo.d.ts +8 -0
  207. package/dist/cjs/types/OptionInfo.js +3 -0
  208. package/dist/cjs/types/Order.d.ts +144 -0
  209. package/dist/cjs/types/Order.js +100 -0
  210. package/dist/cjs/types/OrderUsage.d.ts +28 -0
  211. package/dist/cjs/types/OrderUsage.js +3 -0
  212. package/dist/cjs/types/Origins.d.ts +6 -0
  213. package/dist/cjs/types/Origins.js +3 -0
  214. package/dist/cjs/types/Provider.d.ts +7 -0
  215. package/dist/cjs/types/Provider.js +3 -0
  216. package/dist/cjs/types/ProviderRewards.d.ts +5 -0
  217. package/dist/cjs/types/ProviderRewards.js +3 -0
  218. package/dist/cjs/types/ResourceLoader.d.ts +28 -0
  219. package/dist/cjs/types/ResourceLoader.js +3 -0
  220. package/dist/cjs/types/SlotInfo.d.ts +7 -0
  221. package/dist/cjs/types/SlotInfo.js +3 -0
  222. package/dist/cjs/types/SlotUsage.d.ts +11 -0
  223. package/dist/cjs/types/SlotUsage.js +9 -0
  224. package/dist/cjs/types/Superpro.d.ts +9 -0
  225. package/dist/cjs/types/Superpro.js +14 -0
  226. package/dist/cjs/types/TeeOfferInfo.d.ts +38 -0
  227. package/dist/cjs/types/TeeOfferInfo.js +3 -0
  228. package/dist/cjs/types/TeeOfferOption.d.ts +13 -0
  229. package/dist/cjs/types/TeeOfferOption.js +3 -0
  230. package/dist/cjs/types/TeeOfferSlot.d.ts +8 -0
  231. package/dist/cjs/types/TeeOfferSlot.js +3 -0
  232. package/dist/cjs/types/ValueOfferSlot.d.ts +18 -0
  233. package/dist/cjs/types/ValueOfferSlot.js +3 -0
  234. package/dist/cjs/types/Web3.d.ts +30 -0
  235. package/dist/cjs/types/Web3.js +3 -0
  236. package/dist/cjs/types/blockchainConnector/StorageAccess.d.ts +8 -0
  237. package/dist/cjs/types/blockchainConnector/StorageAccess.js +3 -0
  238. package/dist/cjs/types/index.d.ts +25 -0
  239. package/dist/cjs/types/index.js +42 -0
  240. package/dist/cjs/types/storage/StorageAccess.d.ts +7 -0
  241. package/dist/cjs/types/storage/StorageAccess.js +3 -0
  242. package/dist/cjs/types/storage/StorageFileAccess.d.ts +5 -0
  243. package/dist/cjs/types/storage/StorageFileAccess.js +3 -0
  244. package/dist/cjs/types/storage/StorageObject.d.ts +8 -0
  245. package/dist/cjs/types/storage/StorageObject.js +3 -0
  246. package/dist/cjs/utils/CryptoKeysTransformer.d.ts +42 -0
  247. package/dist/cjs/utils/CryptoKeysTransformer.js +247 -0
  248. package/dist/cjs/utils/Monitoring.d.ts +11 -0
  249. package/dist/cjs/utils/Monitoring.js +51 -0
  250. package/dist/cjs/utils/NonceTracker.d.ts +20 -0
  251. package/dist/cjs/utils/NonceTracker.js +82 -0
  252. package/dist/cjs/utils/PubSub.d.ts +9 -0
  253. package/dist/cjs/utils/PubSub.js +35 -0
  254. package/dist/cjs/utils/TxManager.d.ts +28 -0
  255. package/dist/cjs/utils/TxManager.js +285 -0
  256. package/dist/cjs/utils/cache/index.d.ts +2 -0
  257. package/dist/cjs/utils/cache/index.js +21 -0
  258. package/dist/cjs/utils/cache/memory.d.ts +19 -0
  259. package/dist/cjs/utils/cache/memory.js +66 -0
  260. package/dist/cjs/utils/cache/memory.spec.d.ts +1 -0
  261. package/dist/cjs/utils/cache/memory.spec.js +91 -0
  262. package/dist/cjs/utils/cache/types.d.ts +17 -0
  263. package/dist/cjs/utils/cache/types.js +3 -0
  264. package/dist/cjs/utils/compressors/GzipCompressor.d.ts +8 -0
  265. package/dist/cjs/utils/compressors/GzipCompressor.js +22 -0
  266. package/dist/cjs/utils/compressors/UncompressedCompressor.d.ts +8 -0
  267. package/dist/cjs/utils/compressors/UncompressedCompressor.js +17 -0
  268. package/dist/cjs/utils/compressors/index.d.ts +2 -0
  269. package/dist/cjs/utils/compressors/index.js +19 -0
  270. package/dist/cjs/utils/helper.d.ts +87 -0
  271. package/dist/cjs/utils/helper.js +576 -0
  272. package/dist/cjs/utils/helpers/calculateObjectHash.d.ts +8 -0
  273. package/dist/cjs/utils/helpers/calculateObjectHash.js +25 -0
  274. package/dist/cjs/utils/helpers/getRawRpc.d.ts +2 -0
  275. package/dist/cjs/utils/helpers/getRawRpc.js +19 -0
  276. package/dist/cjs/utils/helpers/getStreamChunks.d.ts +9 -0
  277. package/dist/cjs/utils/helpers/getStreamChunks.js +35 -0
  278. package/dist/cjs/utils/helpers/index.d.ts +5 -0
  279. package/dist/cjs/utils/helpers/index.js +22 -0
  280. package/dist/cjs/utils/helpers/promise.d.ts +2 -0
  281. package/dist/cjs/utils/helpers/promise.js +10 -0
  282. package/dist/cjs/utils/helpers/streamToBuffer.d.ts +4 -0
  283. package/dist/cjs/utils/helpers/streamToBuffer.js +13 -0
  284. package/dist/cjs/utils/helpers/tryWithInterval.d.ts +13 -0
  285. package/dist/cjs/utils/helpers/tryWithInterval.js +39 -0
  286. package/dist/cjs/utils/rent-calculator/index.d.ts +2 -0
  287. package/dist/cjs/utils/rent-calculator/index.js +19 -0
  288. package/dist/cjs/utils/rent-calculator/rent-calculator.d.ts +14 -0
  289. package/dist/cjs/utils/rent-calculator/rent-calculator.js +114 -0
  290. package/dist/cjs/utils/rent-calculator/types.d.ts +14 -0
  291. package/dist/cjs/utils/rent-calculator/types.js +3 -0
  292. package/dist/cjs/utils/resourceLoaders/BaseResourceLoader.d.ts +10 -0
  293. package/dist/cjs/utils/resourceLoaders/BaseResourceLoader.js +14 -0
  294. package/dist/cjs/utils/resourceLoaders/StorageProviderLoader.d.ts +18 -0
  295. package/dist/cjs/utils/resourceLoaders/StorageProviderLoader.js +60 -0
  296. package/dist/cjs/utils/resourceLoaders/UrlResourceLoader.d.ts +9 -0
  297. package/dist/cjs/utils/resourceLoaders/UrlResourceLoader.js +51 -0
  298. package/dist/cjs/utils/resourceLoaders/getResourceLoader.d.ts +5 -0
  299. package/dist/cjs/utils/resourceLoaders/getResourceLoader.js +15 -0
  300. package/dist/cjs/utils/resourceLoaders/index.d.ts +1 -0
  301. package/dist/cjs/utils/resourceLoaders/index.js +18 -0
  302. package/dist/cjs/utils/schema-utils/index.d.ts +2 -0
  303. package/dist/cjs/utils/schema-utils/index.js +9 -0
  304. package/dist/cjs/utils/schema-utils/serializer.d.ts +3 -0
  305. package/dist/cjs/utils/schema-utils/serializer.js +31 -0
  306. package/dist/cjs/utils/schema-utils/validator.d.ts +7 -0
  307. package/dist/cjs/utils/schema-utils/validator.js +49 -0
  308. package/dist/cjs/utils/tcb.d.ts +2 -0
  309. package/dist/cjs/utils/tcb.js +13 -0
  310. package/dist/cjs/utils/tokens/get-tokens-info.d.ts +8 -0
  311. package/dist/cjs/utils/tokens/get-tokens-info.js +32 -0
  312. package/dist/cjs/utils/tokens/index.d.ts +1 -0
  313. package/dist/cjs/utils/tokens/index.js +18 -0
  314. package/dist/cjs/utils/types.d.ts +13 -0
  315. package/dist/cjs/utils/types.js +3 -0
  316. package/dist/mjs/analytics/Analytics.d.ts +17 -0
  317. package/dist/mjs/analytics/Analytics.js +78 -0
  318. package/dist/mjs/analytics/AnalyticsError.d.ts +7 -0
  319. package/dist/mjs/analytics/AnalyticsError.js +8 -0
  320. package/dist/mjs/analytics/eventProviders/BrowserEventProvider.d.ts +19 -0
  321. package/dist/mjs/analytics/eventProviders/BrowserEventProvider.js +32 -0
  322. package/dist/mjs/analytics/eventProviders/EventProvider.d.ts +24 -0
  323. package/dist/mjs/analytics/eventProviders/EventProvider.js +22 -0
  324. package/dist/mjs/analytics/eventProviders/NodeEventProvider.d.ts +22 -0
  325. package/dist/mjs/analytics/eventProviders/NodeEventProvider.js +50 -0
  326. package/dist/mjs/analytics/transports/AxiosTransport.d.ts +4 -0
  327. package/dist/mjs/analytics/transports/AxiosTransport.js +31 -0
  328. package/dist/mjs/analytics/transports/FetchTransport.d.ts +4 -0
  329. package/dist/mjs/analytics/transports/FetchTransport.js +28 -0
  330. package/dist/mjs/analytics/types.d.ts +26 -0
  331. package/dist/mjs/analytics/types.js +2 -0
  332. package/dist/mjs/certificates/binary-splitter.d.ts +27 -0
  333. package/dist/mjs/certificates/binary-splitter.js +275 -0
  334. package/dist/mjs/certificates/crl.d.ts +6 -0
  335. package/dist/mjs/certificates/crl.js +39 -0
  336. package/dist/mjs/certificates/generator.d.ts +38 -0
  337. package/dist/mjs/certificates/generator.js +255 -0
  338. package/dist/mjs/certificates/helper.d.ts +29 -0
  339. package/dist/mjs/certificates/helper.js +186 -0
  340. package/dist/mjs/certificates/index.d.ts +5 -0
  341. package/dist/mjs/certificates/index.js +6 -0
  342. package/dist/mjs/certificates/ocsp.d.ts +14 -0
  343. package/dist/mjs/certificates/ocsp.js +290 -0
  344. package/dist/mjs/certificates/serializer.d.ts +13 -0
  345. package/dist/mjs/certificates/serializer.js +135 -0
  346. package/dist/mjs/certificates/setup-crypto.d.ts +3 -0
  347. package/dist/mjs/certificates/setup-crypto.js +22 -0
  348. package/dist/mjs/certificates/types.d.ts +122 -0
  349. package/dist/mjs/certificates/types.js +7 -0
  350. package/dist/mjs/config.d.ts +3 -0
  351. package/dist/mjs/config.js +4 -0
  352. package/dist/mjs/connectors/BaseConnector.d.ts +52 -0
  353. package/dist/mjs/connectors/BaseConnector.js +54 -0
  354. package/dist/mjs/connectors/BlockchainConnector.d.ts +78 -0
  355. package/dist/mjs/connectors/BlockchainConnector.js +320 -0
  356. package/dist/mjs/connectors/BlockchainEventsListener.d.ts +33 -0
  357. package/dist/mjs/connectors/BlockchainEventsListener.js +254 -0
  358. package/dist/mjs/connectors/index.d.ts +2 -0
  359. package/dist/mjs/connectors/index.js +3 -0
  360. package/dist/mjs/constants.d.ts +48 -0
  361. package/dist/mjs/constants.js +680 -0
  362. package/dist/mjs/contracts/SuperProtocolToken.d.ts +300 -0
  363. package/dist/mjs/contracts/SuperProtocolToken.js +2 -0
  364. package/dist/mjs/contracts/SuperProtocolToken__factory.d.ts +393 -0
  365. package/dist/mjs/contracts/SuperProtocolToken__factory.js +517 -0
  366. package/dist/mjs/contracts/typechain-types/common.d.ts +50 -0
  367. package/dist/mjs/contracts/typechain-types/common.js +2 -0
  368. package/dist/mjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/App__factory.d.ts +3340 -0
  369. package/dist/mjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/App__factory.js +4331 -0
  370. package/dist/mjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/index.d.ts +1 -0
  371. package/dist/mjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/index.js +6 -0
  372. package/dist/mjs/contracts/typechain-types/factories/hardhat-diamond-abi/index.d.ts +1 -0
  373. package/dist/mjs/contracts/typechain-types/factories/hardhat-diamond-abi/index.js +6 -0
  374. package/dist/mjs/contracts/typechain-types/factories/index.d.ts +1 -0
  375. package/dist/mjs/contracts/typechain-types/factories/index.js +6 -0
  376. package/dist/mjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/App.d.ts +2299 -0
  377. package/dist/mjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/App.js +2 -0
  378. package/dist/mjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/index.d.ts +1 -0
  379. package/dist/mjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/index.js +2 -0
  380. package/dist/mjs/contracts/typechain-types/hardhat-diamond-abi/index.d.ts +2 -0
  381. package/dist/mjs/contracts/typechain-types/hardhat-diamond-abi/index.js +2 -0
  382. package/dist/mjs/contracts/typechain-types/index.d.ts +5 -0
  383. package/dist/mjs/contracts/typechain-types/index.js +7 -0
  384. package/dist/mjs/crypto/Crypto.d.ts +70 -0
  385. package/dist/mjs/crypto/Crypto.js +132 -0
  386. package/dist/mjs/crypto/index.d.ts +4 -0
  387. package/dist/mjs/crypto/index.js +5 -0
  388. package/dist/mjs/crypto/nodejs/AES.d.ts +25 -0
  389. package/dist/mjs/crypto/nodejs/AES.js +77 -0
  390. package/dist/mjs/crypto/nodejs/ARIA.d.ts +23 -0
  391. package/dist/mjs/crypto/nodejs/ARIA.js +72 -0
  392. package/dist/mjs/crypto/nodejs/ECIES.d.ts +10 -0
  393. package/dist/mjs/crypto/nodejs/ECIES.js +82 -0
  394. package/dist/mjs/crypto/nodejs/NativeCrypto.d.ts +46 -0
  395. package/dist/mjs/crypto/nodejs/NativeCrypto.js +152 -0
  396. package/dist/mjs/crypto/nodejs/RSA-Hybrid.d.ts +15 -0
  397. package/dist/mjs/crypto/nodejs/RSA-Hybrid.js +89 -0
  398. package/dist/mjs/crypto/types.d.ts +10 -0
  399. package/dist/mjs/crypto/types.js +2 -0
  400. package/dist/mjs/crypto/utils.d.ts +15 -0
  401. package/dist/mjs/crypto/utils.js +81 -0
  402. package/dist/mjs/crypto/utils.spec.d.ts +1 -0
  403. package/dist/mjs/crypto/utils.spec.js +219 -0
  404. package/dist/mjs/errors/base.error.d.ts +3 -0
  405. package/dist/mjs/errors/base.error.js +15 -0
  406. package/dist/mjs/errors/index.d.ts +3 -0
  407. package/dist/mjs/errors/index.js +4 -0
  408. package/dist/mjs/errors/insufficient-funds.error.d.ts +19 -0
  409. package/dist/mjs/errors/insufficient-funds.error.js +53 -0
  410. package/dist/mjs/errors/not-found.error.d.ts +3 -0
  411. package/dist/mjs/errors/not-found.error.js +4 -0
  412. package/dist/mjs/errors/utils.d.ts +2 -0
  413. package/dist/mjs/errors/utils.js +22 -0
  414. package/dist/mjs/index.d.ts +58 -0
  415. package/dist/mjs/index.js +53 -0
  416. package/dist/mjs/logger.d.ts +7 -0
  417. package/dist/mjs/logger.js +7 -0
  418. package/dist/mjs/models/EtlModel.d.ts +34 -0
  419. package/dist/mjs/models/EtlModel.js +96 -0
  420. package/dist/mjs/models/index.d.ts +1 -0
  421. package/dist/mjs/models/index.js +2 -0
  422. package/dist/mjs/package.json +1 -0
  423. package/dist/mjs/polyfills.d.ts +4 -0
  424. package/dist/mjs/polyfills.js +8 -0
  425. package/dist/mjs/proto/AmdSevSnp.d.ts +194 -0
  426. package/dist/mjs/proto/AmdSevSnp.js +348 -0
  427. package/dist/mjs/proto/Compression.d.ts +43 -0
  428. package/dist/mjs/proto/Compression.js +125 -0
  429. package/dist/mjs/proto/Hash.d.ts +37 -0
  430. package/dist/mjs/proto/Hash.js +98 -0
  431. package/dist/mjs/proto/Nvtrust.d.ts +116 -0
  432. package/dist/mjs/proto/Nvtrust.js +153 -0
  433. package/dist/mjs/proto/OrderReport.d.ts +730 -0
  434. package/dist/mjs/proto/OrderReport.js +460 -0
  435. package/dist/mjs/proto/TRI.d.ts +215 -0
  436. package/dist/mjs/proto/TRI.js +312 -0
  437. package/dist/mjs/providers/storage/ChunksDownloadDecorator.d.ts +36 -0
  438. package/dist/mjs/providers/storage/ChunksDownloadDecorator.js +139 -0
  439. package/dist/mjs/providers/storage/IStorageProvider.d.ts +15 -0
  440. package/dist/mjs/providers/storage/IStorageProvider.js +2 -0
  441. package/dist/mjs/providers/storage/S3StorageProvider.d.ts +26 -0
  442. package/dist/mjs/providers/storage/S3StorageProvider.js +203 -0
  443. package/dist/mjs/providers/storage/StorageAdapter.d.ts +62 -0
  444. package/dist/mjs/providers/storage/StorageAdapter.js +270 -0
  445. package/dist/mjs/providers/storage/StorageContentWriter.d.ts +46 -0
  446. package/dist/mjs/providers/storage/StorageContentWriter.js +161 -0
  447. package/dist/mjs/providers/storage/StorageKeyValueAdapter.d.ts +26 -0
  448. package/dist/mjs/providers/storage/StorageKeyValueAdapter.js +133 -0
  449. package/dist/mjs/providers/storage/StorageMetadataReader.d.ts +20 -0
  450. package/dist/mjs/providers/storage/StorageMetadataReader.js +50 -0
  451. package/dist/mjs/providers/storage/StorjAdapter.d.ts +20 -0
  452. package/dist/mjs/providers/storage/StorjAdapter.js +54 -0
  453. package/dist/mjs/providers/storage/StorjCredentialsManager.d.ts +24 -0
  454. package/dist/mjs/providers/storage/StorjCredentialsManager.js +84 -0
  455. package/dist/mjs/providers/storage/StorjStorageProvider.d.ts +29 -0
  456. package/dist/mjs/providers/storage/StorjStorageProvider.js +140 -0
  457. package/dist/mjs/providers/storage/fs-storage-provider.d.ts +19 -0
  458. package/dist/mjs/providers/storage/fs-storage-provider.js +132 -0
  459. package/dist/mjs/providers/storage/getStorageProvider.d.ts +4 -0
  460. package/dist/mjs/providers/storage/getStorageProvider.js +18 -0
  461. package/dist/mjs/providers/storage/parseStorageCredentials.d.ts +4 -0
  462. package/dist/mjs/providers/storage/parseStorageCredentials.js +17 -0
  463. package/dist/mjs/providers/storage/types.d.ts +29 -0
  464. package/dist/mjs/providers/storage/types.js +2 -0
  465. package/dist/mjs/staticModels/Deposits.d.ts +85 -0
  466. package/dist/mjs/staticModels/Deposits.js +263 -0
  467. package/dist/mjs/staticModels/Diamond.d.ts +6 -0
  468. package/dist/mjs/staticModels/Diamond.js +17 -0
  469. package/dist/mjs/staticModels/ModelPackager.d.ts +18 -0
  470. package/dist/mjs/staticModels/ModelPackager.js +45 -0
  471. package/dist/mjs/staticModels/ProviderRewards.d.ts +5 -0
  472. package/dist/mjs/staticModels/ProviderRewards.js +76 -0
  473. package/dist/mjs/staticModels/StaticModel.d.ts +6 -0
  474. package/dist/mjs/staticModels/StaticModel.js +38 -0
  475. package/dist/mjs/staticModels/Superpro.d.ts +18 -0
  476. package/dist/mjs/staticModels/Superpro.js +45 -0
  477. package/dist/mjs/staticModels/SuperproToken.d.ts +113 -0
  478. package/dist/mjs/staticModels/SuperproToken.js +328 -0
  479. package/dist/mjs/store.d.ts +17 -0
  480. package/dist/mjs/store.js +17 -0
  481. package/dist/mjs/tee/OrderReportService.d.ts +9 -0
  482. package/dist/mjs/tee/OrderReportService.js +97 -0
  483. package/dist/mjs/tee/QuoteParser.d.ts +82 -0
  484. package/dist/mjs/tee/QuoteParser.js +381 -0
  485. package/dist/mjs/tee/TeeCertificateService.d.ts +20 -0
  486. package/dist/mjs/tee/TeeCertificateService.js +139 -0
  487. package/dist/mjs/tee/TeeSignatureVerifier.d.ts +24 -0
  488. package/dist/mjs/tee/TeeSignatureVerifier.js +111 -0
  489. package/dist/mjs/tee/errors.d.ts +11 -0
  490. package/dist/mjs/tee/errors.js +12 -0
  491. package/dist/mjs/tee/helpers.d.ts +14 -0
  492. package/dist/mjs/tee/helpers.js +110 -0
  493. package/dist/mjs/tee/interface.d.ts +63 -0
  494. package/dist/mjs/tee/interface.js +2 -0
  495. package/dist/mjs/tee/statuses.d.ts +14 -0
  496. package/dist/mjs/tee/statuses.js +17 -0
  497. package/dist/mjs/tee/types.d.ts +126 -0
  498. package/dist/mjs/tee/types.js +28 -0
  499. package/dist/mjs/types/Compressor.d.ts +5 -0
  500. package/dist/mjs/types/Compressor.js +2 -0
  501. package/dist/mjs/types/Consensus.d.ts +52 -0
  502. package/dist/mjs/types/Consensus.js +8 -0
  503. package/dist/mjs/types/DepositInfo.d.ts +6 -0
  504. package/dist/mjs/types/DepositInfo.js +2 -0
  505. package/dist/mjs/types/DistributedSecretStorage.d.ts +68 -0
  506. package/dist/mjs/types/DistributedSecretStorage.js +2 -0
  507. package/dist/mjs/types/EtlModel.d.ts +2 -0
  508. package/dist/mjs/types/EtlModel.js +2 -0
  509. package/dist/mjs/types/Events.d.ts +34 -0
  510. package/dist/mjs/types/Events.js +2 -0
  511. package/dist/mjs/types/HardwareInfo.d.ts +10 -0
  512. package/dist/mjs/types/HardwareInfo.js +2 -0
  513. package/dist/mjs/types/Marks.d.ts +9 -0
  514. package/dist/mjs/types/Marks.js +7 -0
  515. package/dist/mjs/types/Offer.d.ts +76 -0
  516. package/dist/mjs/types/Offer.js +29 -0
  517. package/dist/mjs/types/OfferVersion.d.ts +30 -0
  518. package/dist/mjs/types/OfferVersion.js +6 -0
  519. package/dist/mjs/types/OptionInfo.d.ts +8 -0
  520. package/dist/mjs/types/OptionInfo.js +2 -0
  521. package/dist/mjs/types/Order.d.ts +144 -0
  522. package/dist/mjs/types/Order.js +91 -0
  523. package/dist/mjs/types/OrderUsage.d.ts +28 -0
  524. package/dist/mjs/types/OrderUsage.js +2 -0
  525. package/dist/mjs/types/Origins.d.ts +6 -0
  526. package/dist/mjs/types/Origins.js +2 -0
  527. package/dist/mjs/types/Provider.d.ts +7 -0
  528. package/dist/mjs/types/Provider.js +2 -0
  529. package/dist/mjs/types/ProviderRewards.d.ts +5 -0
  530. package/dist/mjs/types/ProviderRewards.js +2 -0
  531. package/dist/mjs/types/ResourceLoader.d.ts +28 -0
  532. package/dist/mjs/types/ResourceLoader.js +2 -0
  533. package/dist/mjs/types/SlotInfo.d.ts +7 -0
  534. package/dist/mjs/types/SlotInfo.js +2 -0
  535. package/dist/mjs/types/SlotUsage.d.ts +11 -0
  536. package/dist/mjs/types/SlotUsage.js +6 -0
  537. package/dist/mjs/types/Superpro.d.ts +9 -0
  538. package/dist/mjs/types/Superpro.js +11 -0
  539. package/dist/mjs/types/TeeOfferInfo.d.ts +38 -0
  540. package/dist/mjs/types/TeeOfferInfo.js +2 -0
  541. package/dist/mjs/types/TeeOfferOption.d.ts +13 -0
  542. package/dist/mjs/types/TeeOfferOption.js +2 -0
  543. package/dist/mjs/types/TeeOfferSlot.d.ts +8 -0
  544. package/dist/mjs/types/TeeOfferSlot.js +2 -0
  545. package/dist/mjs/types/ValueOfferSlot.d.ts +18 -0
  546. package/dist/mjs/types/ValueOfferSlot.js +2 -0
  547. package/dist/mjs/types/Web3.d.ts +30 -0
  548. package/dist/mjs/types/Web3.js +2 -0
  549. package/dist/mjs/types/blockchainConnector/StorageAccess.d.ts +8 -0
  550. package/dist/mjs/types/blockchainConnector/StorageAccess.js +2 -0
  551. package/dist/mjs/types/index.d.ts +25 -0
  552. package/dist/mjs/types/index.js +26 -0
  553. package/dist/mjs/types/storage/StorageAccess.d.ts +7 -0
  554. package/dist/mjs/types/storage/StorageAccess.js +2 -0
  555. package/dist/mjs/types/storage/StorageFileAccess.d.ts +5 -0
  556. package/dist/mjs/types/storage/StorageFileAccess.js +2 -0
  557. package/dist/mjs/types/storage/StorageObject.d.ts +8 -0
  558. package/dist/mjs/types/storage/StorageObject.js +2 -0
  559. package/dist/mjs/utils/CryptoKeysTransformer.d.ts +42 -0
  560. package/dist/mjs/utils/CryptoKeysTransformer.js +240 -0
  561. package/dist/mjs/utils/Monitoring.d.ts +11 -0
  562. package/dist/mjs/utils/Monitoring.js +44 -0
  563. package/dist/mjs/utils/NonceTracker.d.ts +20 -0
  564. package/dist/mjs/utils/NonceTracker.js +77 -0
  565. package/dist/mjs/utils/PubSub.d.ts +9 -0
  566. package/dist/mjs/utils/PubSub.js +32 -0
  567. package/dist/mjs/utils/TxManager.d.ts +28 -0
  568. package/dist/mjs/utils/TxManager.js +278 -0
  569. package/dist/mjs/utils/cache/index.d.ts +2 -0
  570. package/dist/mjs/utils/cache/index.js +3 -0
  571. package/dist/mjs/utils/cache/memory.d.ts +19 -0
  572. package/dist/mjs/utils/cache/memory.js +61 -0
  573. package/dist/mjs/utils/cache/memory.spec.d.ts +1 -0
  574. package/dist/mjs/utils/cache/memory.spec.js +89 -0
  575. package/dist/mjs/utils/cache/types.d.ts +17 -0
  576. package/dist/mjs/utils/cache/types.js +2 -0
  577. package/dist/mjs/utils/compressors/GzipCompressor.d.ts +8 -0
  578. package/dist/mjs/utils/compressors/GzipCompressor.js +15 -0
  579. package/dist/mjs/utils/compressors/UncompressedCompressor.d.ts +8 -0
  580. package/dist/mjs/utils/compressors/UncompressedCompressor.js +13 -0
  581. package/dist/mjs/utils/compressors/index.d.ts +2 -0
  582. package/dist/mjs/utils/compressors/index.js +3 -0
  583. package/dist/mjs/utils/helper.d.ts +87 -0
  584. package/dist/mjs/utils/helper.js +526 -0
  585. package/dist/mjs/utils/helpers/calculateObjectHash.d.ts +8 -0
  586. package/dist/mjs/utils/helpers/calculateObjectHash.js +18 -0
  587. package/dist/mjs/utils/helpers/getRawRpc.d.ts +2 -0
  588. package/dist/mjs/utils/helpers/getRawRpc.js +15 -0
  589. package/dist/mjs/utils/helpers/getStreamChunks.d.ts +9 -0
  590. package/dist/mjs/utils/helpers/getStreamChunks.js +31 -0
  591. package/dist/mjs/utils/helpers/index.d.ts +5 -0
  592. package/dist/mjs/utils/helpers/index.js +6 -0
  593. package/dist/mjs/utils/helpers/promise.d.ts +2 -0
  594. package/dist/mjs/utils/helpers/promise.js +5 -0
  595. package/dist/mjs/utils/helpers/streamToBuffer.d.ts +4 -0
  596. package/dist/mjs/utils/helpers/streamToBuffer.js +9 -0
  597. package/dist/mjs/utils/helpers/tryWithInterval.d.ts +13 -0
  598. package/dist/mjs/utils/helpers/tryWithInterval.js +35 -0
  599. package/dist/mjs/utils/rent-calculator/index.d.ts +2 -0
  600. package/dist/mjs/utils/rent-calculator/index.js +3 -0
  601. package/dist/mjs/utils/rent-calculator/rent-calculator.d.ts +14 -0
  602. package/dist/mjs/utils/rent-calculator/rent-calculator.js +110 -0
  603. package/dist/mjs/utils/rent-calculator/types.d.ts +14 -0
  604. package/dist/mjs/utils/rent-calculator/types.js +2 -0
  605. package/dist/mjs/utils/resourceLoaders/BaseResourceLoader.d.ts +10 -0
  606. package/dist/mjs/utils/resourceLoaders/BaseResourceLoader.js +10 -0
  607. package/dist/mjs/utils/resourceLoaders/StorageProviderLoader.d.ts +18 -0
  608. package/dist/mjs/utils/resourceLoaders/StorageProviderLoader.js +53 -0
  609. package/dist/mjs/utils/resourceLoaders/UrlResourceLoader.d.ts +9 -0
  610. package/dist/mjs/utils/resourceLoaders/UrlResourceLoader.js +44 -0
  611. package/dist/mjs/utils/resourceLoaders/getResourceLoader.d.ts +5 -0
  612. package/dist/mjs/utils/resourceLoaders/getResourceLoader.js +11 -0
  613. package/dist/mjs/utils/resourceLoaders/index.d.ts +1 -0
  614. package/dist/mjs/utils/resourceLoaders/index.js +2 -0
  615. package/dist/mjs/utils/schema-utils/index.d.ts +2 -0
  616. package/dist/mjs/utils/schema-utils/index.js +3 -0
  617. package/dist/mjs/utils/schema-utils/serializer.d.ts +3 -0
  618. package/dist/mjs/utils/schema-utils/serializer.js +26 -0
  619. package/dist/mjs/utils/schema-utils/validator.d.ts +7 -0
  620. package/dist/mjs/utils/schema-utils/validator.js +45 -0
  621. package/dist/mjs/utils/tcb.d.ts +2 -0
  622. package/dist/mjs/utils/tcb.js +9 -0
  623. package/dist/mjs/utils/tokens/get-tokens-info.d.ts +8 -0
  624. package/dist/mjs/utils/tokens/get-tokens-info.js +25 -0
  625. package/dist/mjs/utils/tokens/index.d.ts +1 -0
  626. package/dist/mjs/utils/tokens/index.js +2 -0
  627. package/dist/mjs/utils/types.d.ts +13 -0
  628. package/dist/mjs/utils/types.js +2 -0
  629. package/package.json +103 -0
@@ -0,0 +1,133 @@
1
+ import { Readable } from 'stream';
2
+ import { CryptoAlgorithm, Encoding, Cipher } from '@super-protocol/dto-js';
3
+ import getStorageProvider from './getStorageProvider.js';
4
+ import logger from '../../logger.js';
5
+ import Crypto from '../../crypto/Crypto.js';
6
+ export default class StorageKeyValueAdapter {
7
+ hasEncryption;
8
+ storageProvider;
9
+ logger;
10
+ constructor(storageAccess, config) {
11
+ if (!storageAccess?.credentials) {
12
+ throw new Error('Credentials is empty');
13
+ }
14
+ const { showLogs = true, hasEncryption = true } = config || {};
15
+ this.hasEncryption = hasEncryption;
16
+ this.logger = showLogs ? logger.child({ class: StorageKeyValueAdapter.name }) : null;
17
+ this.storageProvider = getStorageProvider(storageAccess);
18
+ }
19
+ async decrypt(encryption, key) {
20
+ if (!encryption) {
21
+ return null;
22
+ }
23
+ if (!key) {
24
+ throw new Error('Key cannot be empty!');
25
+ }
26
+ encryption.key = key;
27
+ return JSON.parse(await Crypto.decrypt(encryption));
28
+ }
29
+ encrypt(data, key) {
30
+ if (data === undefined) {
31
+ throw new Error('Data cannot be empty!');
32
+ }
33
+ if (!key) {
34
+ throw new Error('Private cannot be empty!');
35
+ }
36
+ return Crypto.encrypt(JSON.stringify(data), {
37
+ algo: CryptoAlgorithm.AES,
38
+ encoding: Encoding.base64,
39
+ key,
40
+ cipher: Cipher.AES_256_GCM,
41
+ });
42
+ }
43
+ async downloadFromStorage(filepath) {
44
+ const downloadStream = await this.storageProvider.downloadFile(filepath, {});
45
+ return this.streamToString(downloadStream);
46
+ }
47
+ streamToString(stream) {
48
+ const chunks = [];
49
+ return new Promise((resolve, reject) => {
50
+ stream.on('data', (chunk) => {
51
+ chunks.push(Buffer.from(chunk));
52
+ });
53
+ stream.on('error', (err) => reject(err));
54
+ stream.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
55
+ });
56
+ }
57
+ async storageUpload(key, value, privateKey) {
58
+ if (this.hasEncryption && !privateKey) {
59
+ throw new Error('Invalid private key');
60
+ }
61
+ try {
62
+ const encryptedValue = this.hasEncryption && privateKey ? await this.encrypt(value, privateKey) : value;
63
+ const buffer = Buffer.from(JSON.stringify(encryptedValue));
64
+ await this.storageProvider.uploadFile(Readable.from(buffer), key, buffer.byteLength);
65
+ this.logger?.trace({ data: key }, 'Success uploading to storage');
66
+ }
67
+ catch (err) {
68
+ this.logger?.error({ err }, 'Error uploading to storage');
69
+ throw err;
70
+ }
71
+ }
72
+ async storageDelete(key) {
73
+ try {
74
+ await this.storageProvider.deleteObject(key);
75
+ this.logger?.trace({ data: key }, 'Success deleting from storage');
76
+ }
77
+ catch (err) {
78
+ this.logger?.trace({ err }, 'Error deleting from storage');
79
+ throw err;
80
+ }
81
+ }
82
+ async storageDownload(key, privateKey) {
83
+ if (this.hasEncryption && !privateKey) {
84
+ throw new Error('Invalid private key');
85
+ }
86
+ try {
87
+ const downloaded = await this.downloadFromStorage(key);
88
+ this.logger?.trace({ key }, 'Success download data from storage');
89
+ if (!downloaded) {
90
+ return null;
91
+ }
92
+ const value = JSON.parse(downloaded);
93
+ return this.hasEncryption && privateKey ? await this.decrypt(value, privateKey) : value;
94
+ }
95
+ catch (err) {
96
+ this.logger?.trace({
97
+ err,
98
+ key,
99
+ }, 'Error download data from storage');
100
+ throw err;
101
+ }
102
+ }
103
+ async storageListFiles(key) {
104
+ try {
105
+ const listObjects = await this.storageProvider.listObjects(key);
106
+ this.logger?.trace({
107
+ data: listObjects,
108
+ key,
109
+ }, 'Success list objects from storage');
110
+ return listObjects.filter((obj) => !obj.isFolder);
111
+ }
112
+ catch (err) {
113
+ this.logger?.trace({
114
+ err,
115
+ key,
116
+ }, 'Error list objects from storage');
117
+ throw err;
118
+ }
119
+ }
120
+ set(key, value, privateKey) {
121
+ return this.storageUpload(key, value, privateKey);
122
+ }
123
+ delete(key) {
124
+ return this.storageDelete(key);
125
+ }
126
+ get(key, privateKey) {
127
+ return this.storageDownload(key, privateKey);
128
+ }
129
+ listFiles(key) {
130
+ return this.storageListFiles(key);
131
+ }
132
+ }
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RvcmFnZUtleVZhbHVlQWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvc3RvcmFnZS9TdG9yYWdlS2V5VmFsdWVBZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbEMsT0FBTyxFQUFjLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHdkYsT0FBTyxrQkFBa0IsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RCxPQUFPLE1BQWtCLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxNQUFNLE1BQU0sd0JBQXdCLENBQUM7QUFRNUMsTUFBTSxDQUFDLE9BQU8sT0FBTyxzQkFBc0I7SUFHeEIsYUFBYSxDQUFVO0lBQ3ZCLGVBQWUsQ0FBbUI7SUFDbEMsTUFBTSxDQUFpQjtJQUV4QyxZQUFZLGFBQTRCLEVBQUUsTUFBcUM7UUFDN0UsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELE1BQU0sRUFBRSxRQUFRLEdBQUcsSUFBSSxFQUFFLGFBQWEsR0FBRyxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQy9ELElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNyRixJQUFJLENBQUMsZUFBZSxHQUFHLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFUyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQXNCLEVBQUUsR0FBVztRQUN6RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxVQUFVLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUVyQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVTLE9BQU8sQ0FBQyxJQUFjLEVBQUUsR0FBVztRQUMzQyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDMUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxHQUFHO1lBQ3pCLFFBQVEsRUFBRSxRQUFRLENBQUMsTUFBTTtZQUN6QixHQUFHO1lBQ0gsTUFBTSxFQUFFLE1BQU0sQ0FBQyxXQUFXO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxLQUFLLENBQUMsbUJBQW1CLENBQUMsUUFBZ0I7UUFDaEQsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFN0UsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTyxjQUFjLENBQUMsTUFBZ0I7UUFDckMsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBRTVCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQVcsRUFBRSxLQUFlLEVBQUUsVUFBbUI7UUFDM0UsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDSCxNQUFNLGNBQWMsR0FDbEIsSUFBSSxDQUFDLGFBQWEsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNuRixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUMzRCxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyRixJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO1lBQzFELE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQVc7UUFDckMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1lBQzNELE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQVcsRUFBRSxVQUFtQjtRQUM1RCxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsb0NBQW9DLENBQUMsQ0FBQztZQUVsRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFckMsT0FBTyxJQUFJLENBQUMsYUFBYSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzFGLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQ2hCO2dCQUNFLEdBQUc7Z0JBQ0gsR0FBRzthQUNKLEVBQ0Qsa0NBQWtDLENBQ25DLENBQUM7WUFDRixNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQVc7UUFDeEMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FDaEI7Z0JBQ0UsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLEdBQUc7YUFDSixFQUNELG1DQUFtQyxDQUNwQyxDQUFDO1lBRUYsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUNoQjtnQkFDRSxHQUFHO2dCQUNILEdBQUc7YUFDSixFQUNELGlDQUFpQyxDQUNsQyxDQUFDO1lBQ0YsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBZSxFQUFFLFVBQW1CO1FBQ25ELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxNQUFNLENBQUMsR0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFXLEVBQUUsVUFBbUI7UUFDbEMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVc7UUFDbkIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNGIn0=
@@ -0,0 +1,20 @@
1
+ import StorageObject from '../../types/storage/StorageObject.js';
2
+ import { CacheRecord } from './types.js';
3
+ import StorageKeyValueAdapter from './StorageKeyValueAdapter.js';
4
+ export interface InstancesUpdates {
5
+ updated: Map<string, StorageObject>;
6
+ deleted: Set<string>;
7
+ }
8
+ export interface StorageMetadataReaderConfig<V extends object> {
9
+ storageKeyValueAdapter: StorageKeyValueAdapter<V>;
10
+ objectDeletedFlag: string;
11
+ showLogs?: boolean;
12
+ }
13
+ export default class StorageMetadataReader<K extends string, V extends object> {
14
+ private readonly logger?;
15
+ private readonly storageKeyValueAdapter;
16
+ private readonly objectDeletedFlag;
17
+ constructor(config: StorageMetadataReaderConfig<V>);
18
+ private listInstances;
19
+ fetchInstancesUpdates(key: K, currentInstances: Map<string, CacheRecord<V>>): Promise<InstancesUpdates>;
20
+ }
@@ -0,0 +1,50 @@
1
+ import logger from '../../logger.js';
2
+ export default class StorageMetadataReader {
3
+ logger;
4
+ storageKeyValueAdapter;
5
+ objectDeletedFlag;
6
+ constructor(config) {
7
+ const { showLogs = true, objectDeletedFlag, storageKeyValueAdapter } = config;
8
+ this.logger = showLogs ? logger.child({ class: StorageMetadataReader.name }) : null;
9
+ this.storageKeyValueAdapter = storageKeyValueAdapter;
10
+ this.objectDeletedFlag = objectDeletedFlag;
11
+ }
12
+ async listInstances(key) {
13
+ const objects = await this.storageKeyValueAdapter.listFiles(`${key}/`);
14
+ return new Map(objects.map((obj) => [obj.name.split('/')?.pop() || obj.name, obj]));
15
+ }
16
+ async fetchInstancesUpdates(key, currentInstances) {
17
+ const result = {
18
+ updated: new Map(),
19
+ deleted: new Set(),
20
+ };
21
+ try {
22
+ const directoryInstances = await this.listInstances(key);
23
+ if (directoryInstances.has(this.objectDeletedFlag)) {
24
+ result.deleted.add(key);
25
+ return result;
26
+ }
27
+ directoryInstances.forEach((instance, instanceId) => {
28
+ const currentInstance = currentInstances.get(instanceId);
29
+ if (!currentInstance || currentInstance.modifiedTs < instance.createdAt.getTime()) {
30
+ result.updated.set(instanceId, instance);
31
+ }
32
+ });
33
+ currentInstances.forEach((_, instanceId) => {
34
+ if (!directoryInstances.has(instanceId)) {
35
+ result.deleted.add(instanceId);
36
+ }
37
+ });
38
+ this.logger?.trace({
39
+ updated: result.updated.size,
40
+ deleted: result.deleted.size,
41
+ }, 'Check result');
42
+ return result;
43
+ }
44
+ catch (error) {
45
+ this.logger?.error({ error }, 'Error fetching remote copy');
46
+ return result;
47
+ }
48
+ }
49
+ }
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RvcmFnZU1ldGFkYXRhUmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9zdG9yYWdlL1N0b3JhZ2VNZXRhZGF0YVJlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLE1BQWtCLE1BQU0saUJBQWlCLENBQUM7QUFlakQsTUFBTSxDQUFDLE9BQU8sT0FBTyxxQkFBcUI7SUFDdkIsTUFBTSxDQUFpQjtJQUN2QixzQkFBc0IsQ0FBNEI7SUFDbEQsaUJBQWlCLENBQVM7SUFFM0MsWUFBWSxNQUFzQztRQUNoRCxNQUFNLEVBQUUsUUFBUSxHQUFHLElBQUksRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUM5RSxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDcEYsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHNCQUFzQixDQUFDO1FBQ3JELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztJQUM3QyxDQUFDO0lBRU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFNO1FBQ2hDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDdkUsT0FBTyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxLQUFLLENBQUMscUJBQXFCLENBQ3pCLEdBQU0sRUFDTixnQkFBNkM7UUFFN0MsTUFBTSxNQUFNLEdBQXFCO1lBQy9CLE9BQU8sRUFBRSxJQUFJLEdBQUcsRUFBRTtZQUNsQixPQUFPLEVBQUUsSUFBSSxHQUFHLEVBQUU7U0FDbkIsQ0FBQztRQUVGLElBQUksQ0FBQztZQUNILE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXpELElBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7Z0JBQ25ELE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUV4QixPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1lBRUQsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxFQUFFO2dCQUNsRCxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxlQUFlLElBQUksZUFBZSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7b0JBQ2xGLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFO2dCQUN6QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7b0JBQ3hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNqQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FDaEI7Z0JBQ0UsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSTtnQkFDNUIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSTthQUM3QixFQUNELGNBQWMsQ0FDZixDQUFDO1lBRUYsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLDRCQUE0QixDQUFDLENBQUM7WUFFNUQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7Q0FDRiJ9
@@ -0,0 +1,20 @@
1
+ /// <reference types="node" />
2
+ import StorageAccess from '../../types/storage/StorageAccess.js';
3
+ import { StorageAdapterConfig, CacheEvents } from './StorageAdapter.js';
4
+ import { StorjCredentials } from '@super-protocol/dto-js';
5
+ export type StorjConfig = StorageAdapterConfig;
6
+ export default class StorjAdapter<V extends object> {
7
+ private storageAdapter;
8
+ private readonly logger?;
9
+ constructor(storageAccess: StorageAccess<StorjCredentials>, config: StorjConfig);
10
+ subscribe(cb: (props: {
11
+ type: CacheEvents;
12
+ message: unknown;
13
+ }) => void): () => void;
14
+ get(key: string, encryptionKey: Buffer): Promise<(V | null)[] | null>;
15
+ has(key: string): Promise<boolean>;
16
+ set(key: string, value: V, encryptionKey: Buffer): void;
17
+ del(key: string): void;
18
+ stop(): void;
19
+ shutdown(): Promise<void>;
20
+ }
@@ -0,0 +1,54 @@
1
+ import logger from '../../logger.js';
2
+ import StorageAdapter from './StorageAdapter.js';
3
+ export default class StorjAdapter {
4
+ storageAdapter;
5
+ logger;
6
+ constructor(storageAccess, config) {
7
+ const { showLogs = true } = config || {};
8
+ this.logger = showLogs ? logger.child({ class: StorjAdapter.name }) : null;
9
+ this.storageAdapter = new StorageAdapter(storageAccess, config);
10
+ this.storageAdapter.run();
11
+ }
12
+ subscribe(cb) {
13
+ return this.storageAdapter?.subscribe(cb);
14
+ }
15
+ async get(key, encryptionKey) {
16
+ try {
17
+ return await this.storageAdapter.get(key, encryptionKey);
18
+ }
19
+ catch (err) {
20
+ const message = err.message?.toLowerCase() || '';
21
+ if (message.includes('object not found') || message.includes('object has been deleted')) {
22
+ this.logger?.info({ key }, 'Object not found');
23
+ return null;
24
+ }
25
+ throw err;
26
+ }
27
+ }
28
+ has(key) {
29
+ return this.storageAdapter.has(key);
30
+ }
31
+ set(key, value, encryptionKey) {
32
+ try {
33
+ this.storageAdapter.set(key, value, encryptionKey);
34
+ }
35
+ catch (err) {
36
+ const message = err.message?.toLowerCase() || '';
37
+ if (message.includes('object has been deleted')) {
38
+ this.logger?.info({ key }, 'Object has been deleted');
39
+ return;
40
+ }
41
+ throw err;
42
+ }
43
+ }
44
+ del(key) {
45
+ this.storageAdapter.delete(key);
46
+ }
47
+ stop() {
48
+ this.storageAdapter.stop();
49
+ }
50
+ async shutdown() {
51
+ await this.storageAdapter.shutdown();
52
+ }
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RvcmpBZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9zdG9yYWdlL1N0b3JqQWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLE1BQWtCLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxjQUFxRCxNQUFNLHFCQUFxQixDQUFDO0FBS3hGLE1BQU0sQ0FBQyxPQUFPLE9BQU8sWUFBWTtJQUN2QixjQUFjLENBQW9CO0lBQ3pCLE1BQU0sQ0FBaUI7SUFFeEMsWUFBWSxhQUE4QyxFQUFFLE1BQW1CO1FBQzdFLE1BQU0sRUFBRSxRQUFRLEdBQUcsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzNFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFNBQVMsQ0FBQyxFQUE0RDtRQUNwRSxPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQVcsRUFBRSxhQUFxQjtRQUMxQyxJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsTUFBTSxPQUFPLEdBQUksR0FBYSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDNUQsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hGLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztnQkFFL0MsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFRLEVBQUUsYUFBcUI7UUFDOUMsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE1BQU0sT0FBTyxHQUFJLEdBQWEsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQzVELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUseUJBQXlCLENBQUMsQ0FBQztnQkFFdEQsT0FBTztZQUNULENBQUM7WUFDRCxNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQVc7UUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7Q0FDRiJ9
@@ -0,0 +1,24 @@
1
+ import { S3Credentials, StorjCredentials, StringifiedCredentials } from '@super-protocol/dto-js';
2
+ export declare enum CredentialsPermissions {
3
+ read = 0,
4
+ write = 1,
5
+ list = 2,
6
+ delete = 3
7
+ }
8
+ export declare class StorjCredentialsManager {
9
+ private accessToken;
10
+ private bucket;
11
+ private access?;
12
+ private project?;
13
+ constructor(storageConfig: Pick<StorjCredentials, 'token' | 'bucket'>);
14
+ getStorageId(entity: string, entityId: string): string;
15
+ create(): Promise<void>;
16
+ acquireCredentials(permissions: CredentialsPermissions[], prefix: string): Promise<StringifiedCredentials<StorjCredentials>>;
17
+ acquireS3Credentials(permissions: CredentialsPermissions[], prefix: string): Promise<S3Credentials>;
18
+ getS3Credentials(stringifiedCredentials: StringifiedCredentials): Promise<S3Credentials>;
19
+ getS3Credentials(storjCredentials: StorjCredentials): Promise<S3Credentials>;
20
+ revokeCredentials(credentialString: StringifiedCredentials<StorjCredentials>): Promise<void>;
21
+ private lazyStorj;
22
+ private lazyAccess;
23
+ private lazyProject;
24
+ }
@@ -0,0 +1,84 @@
1
+ import path from 'path';
2
+ export var CredentialsPermissions;
3
+ (function (CredentialsPermissions) {
4
+ CredentialsPermissions[CredentialsPermissions["read"] = 0] = "read";
5
+ CredentialsPermissions[CredentialsPermissions["write"] = 1] = "write";
6
+ CredentialsPermissions[CredentialsPermissions["list"] = 2] = "list";
7
+ CredentialsPermissions[CredentialsPermissions["delete"] = 3] = "delete";
8
+ })(CredentialsPermissions || (CredentialsPermissions = {}));
9
+ export class StorjCredentialsManager {
10
+ accessToken;
11
+ bucket;
12
+ access;
13
+ project;
14
+ constructor(storageConfig) {
15
+ this.accessToken = storageConfig.token;
16
+ this.bucket = storageConfig.bucket;
17
+ }
18
+ getStorageId(entity, entityId) {
19
+ return `${entity}_${entityId}`;
20
+ }
21
+ async create() {
22
+ const project = await this.lazyProject();
23
+ await project.ensureBucket(this.bucket);
24
+ }
25
+ async acquireCredentials(permissions, prefix) {
26
+ const readPerm = permissions.includes(CredentialsPermissions.read), writePerm = permissions.includes(CredentialsPermissions.write), listPerm = permissions.includes(CredentialsPermissions.list), deletePerm = permissions.includes(CredentialsPermissions.delete);
27
+ const storj = await this.lazyStorj();
28
+ const perm = new storj.Permission(readPerm, writePerm, listPerm, deletePerm, 0, 0);
29
+ const preparedPrefix = path.posix.join(prefix, '/');
30
+ const sharePrefix = new storj.SharePrefix(this.bucket, preparedPrefix);
31
+ const access = await this.lazyAccess();
32
+ const share = await access.share(perm, [sharePrefix], 1);
33
+ return JSON.stringify({
34
+ bucket: this.bucket,
35
+ prefix: preparedPrefix,
36
+ token: await share.serialize(),
37
+ });
38
+ }
39
+ async acquireS3Credentials(permissions, prefix) {
40
+ const storjCreds = await this.acquireCredentials(permissions, prefix);
41
+ return this.getS3Credentials(storjCreds);
42
+ }
43
+ async getS3Credentials(creds) {
44
+ const storjCredentials = typeof creds === 'string' ? JSON.parse(creds) : creds;
45
+ const access = await this.lazyAccess();
46
+ const s3Credentials = await access.registerS3Credentials(storjCredentials.token);
47
+ return {
48
+ accessKeyId: s3Credentials.accessKeyId,
49
+ secretKey: s3Credentials.secretKey,
50
+ endpoint: s3Credentials.endpoint,
51
+ bucket: storjCredentials.bucket,
52
+ prefix: storjCredentials.prefix,
53
+ };
54
+ }
55
+ async revokeCredentials(credentialString) {
56
+ const credentials = JSON.parse(credentialString);
57
+ const storj = await this.lazyStorj();
58
+ const uplink = new storj.Uplink();
59
+ const access = await uplink.parseAccess(credentials.token);
60
+ const project = await this.lazyProject();
61
+ await project.revokeAccess(access);
62
+ }
63
+ async lazyStorj() {
64
+ return await import('@super-protocol/uplink-nodejs');
65
+ }
66
+ async lazyAccess() {
67
+ if (this.access) {
68
+ return this.access;
69
+ }
70
+ const storj = await this.lazyStorj();
71
+ const uplink = new storj.Uplink();
72
+ this.access = await uplink.parseAccess(this.accessToken);
73
+ return this.access;
74
+ }
75
+ async lazyProject() {
76
+ if (this.project) {
77
+ return this.project;
78
+ }
79
+ const access = await this.lazyAccess();
80
+ this.project = await access.openProject();
81
+ return this.project;
82
+ }
83
+ }
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RvcmpDcmVkZW50aWFsc01hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3N0b3JhZ2UvU3RvcmpDcmVkZW50aWFsc01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRXhCLE1BQU0sQ0FBTixJQUFZLHNCQUtYO0FBTEQsV0FBWSxzQkFBc0I7SUFDaEMsbUVBQUksQ0FBQTtJQUNKLHFFQUFLLENBQUE7SUFDTCxtRUFBSSxDQUFBO0lBQ0osdUVBQU0sQ0FBQTtBQUNSLENBQUMsRUFMVyxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBS2pDO0FBRUQsTUFBTSxPQUFPLHVCQUF1QjtJQUMxQixXQUFXLENBQVM7SUFDcEIsTUFBTSxDQUFTO0lBQ2YsTUFBTSxDQUFVO0lBQ2hCLE9BQU8sQ0FBVztJQUUxQixZQUFZLGFBQXlEO1FBQ25FLElBQUksQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7SUFDckMsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFjLEVBQUUsUUFBZ0I7UUFDM0MsT0FBTyxHQUFHLE1BQU0sSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU07UUFDVixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QyxNQUFNLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQ3RCLFdBQXFDLEVBQ3JDLE1BQWM7UUFFZCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxFQUNoRSxTQUFTLEdBQUcsV0FBVyxDQUFD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
@@ -0,0 +1,29 @@
1
+ /// <reference types="node" />
2
+ import { StorjCredentials } from '@super-protocol/dto-js';
3
+ import IStorageProvider, { DownloadConfig } from './IStorageProvider.js';
4
+ import StorageObject from '../../types/storage/StorageObject.js';
5
+ import stream from 'stream';
6
+ type StorjCredentialsWithLegacyStorageId = StorjCredentials & {
7
+ storageId?: string;
8
+ };
9
+ export default class StorJStorageProvider implements IStorageProvider {
10
+ static DOWNLOAD_BUFFER_SIZE: number;
11
+ private bucket;
12
+ private prefix;
13
+ private accessToken;
14
+ private _access?;
15
+ private _project?;
16
+ private _storj?;
17
+ private maximumConcurrent?;
18
+ constructor(credentials: StorjCredentialsWithLegacyStorageId, maximumConcurrent?: number);
19
+ uploadFile(inputStream: stream.Readable, remotePath: string, contentLength: number, progressListener?: (total: number, current: number) => void): Promise<void>;
20
+ downloadFile(remotePath: string, config: DownloadConfig, progressListener?: (total: number, current: number) => void): Promise<stream.Readable>;
21
+ deleteObject(remotePath: string): Promise<void>;
22
+ listObjects(remotePath: string): Promise<StorageObject[]>;
23
+ getObjectSize(remotePath: string): Promise<number>;
24
+ getLastModified(remotePath: string): Promise<Date>;
25
+ private lazyStorj;
26
+ private lazyAccess;
27
+ private lazyProject;
28
+ }
29
+ export {};
@@ -0,0 +1,140 @@
1
+ import { Buffer } from 'buffer';
2
+ import { isNodeJS } from '../../utils/helper.js';
3
+ import stream from 'stream';
4
+ import logger from '../../logger.js';
5
+ export default class StorJStorageProvider {
6
+ static DOWNLOAD_BUFFER_SIZE = 4194304; // 4mb
7
+ bucket;
8
+ prefix;
9
+ accessToken;
10
+ _access;
11
+ _project;
12
+ _storj;
13
+ maximumConcurrent;
14
+ constructor(credentials, maximumConcurrent) {
15
+ if (!isNodeJS()) {
16
+ throw Error('StorageProvider: StorJ is supported only in the node.js execution environment');
17
+ }
18
+ this.bucket = '';
19
+ this.prefix = '';
20
+ if (credentials.bucket) {
21
+ this.bucket = credentials.bucket;
22
+ this.prefix = credentials.prefix ?? '';
23
+ }
24
+ else if (credentials.storageId) {
25
+ // back compatibility
26
+ this.bucket = credentials.storageId;
27
+ }
28
+ this.accessToken = credentials.token ?? '';
29
+ this.maximumConcurrent = maximumConcurrent;
30
+ }
31
+ async uploadFile(inputStream, remotePath, contentLength, progressListener) {
32
+ const storj = await this.lazyStorj();
33
+ const options = new storj.UploadOptions();
34
+ const project = await this.lazyProject();
35
+ const uploader = await project.uploadObject(this.bucket, this.prefix + remotePath, options);
36
+ let totalWritten = 0;
37
+ try {
38
+ for await (const buffer of inputStream) {
39
+ await uploader.write(buffer, buffer.length);
40
+ totalWritten += buffer.length;
41
+ if (!!progressListener) {
42
+ progressListener(contentLength, totalWritten);
43
+ }
44
+ }
45
+ await uploader.commit();
46
+ }
47
+ catch (uploadingError) {
48
+ try {
49
+ await uploader.abort();
50
+ }
51
+ catch (abortingError) {
52
+ logger.error({ err: abortingError }, 'Failed to abort file uploading');
53
+ }
54
+ throw uploadingError;
55
+ }
56
+ }
57
+ async downloadFile(remotePath, config, progressListener) {
58
+ const storj = await this.lazyStorj();
59
+ const project = await this.lazyProject();
60
+ const length = config.length || (await this.getObjectSize(remotePath));
61
+ const options = new storj.DownloadOptions(config.offset || 0, length);
62
+ const downloader = await project.downloadObject(this.bucket, this.prefix + remotePath, options);
63
+ const loader = async function* () {
64
+ const readBuffer = Buffer.alloc(StorJStorageProvider.DOWNLOAD_BUFFER_SIZE);
65
+ let current = 0;
66
+ while (current < length) {
67
+ const downloadResult = (await downloader.read(readBuffer, readBuffer.length));
68
+ const bytesRead = downloadResult.bytes_read;
69
+ current += bytesRead;
70
+ yield readBuffer.subarray(0, bytesRead);
71
+ if (!!progressListener) {
72
+ progressListener(length, current);
73
+ }
74
+ }
75
+ };
76
+ return stream.Readable.from(loader()).on('close', async () => {
77
+ await downloader.close();
78
+ });
79
+ }
80
+ async deleteObject(remotePath) {
81
+ const project = await this.lazyProject();
82
+ await project.deleteObject(this.bucket, this.prefix + remotePath);
83
+ }
84
+ async listObjects(remotePath) {
85
+ const project = await this.lazyProject();
86
+ const objects = await project.listObjects(this.bucket, {
87
+ recursive: true,
88
+ cursor: '',
89
+ prefix: this.prefix + remotePath,
90
+ system: true,
91
+ custom: true,
92
+ });
93
+ const result = [];
94
+ for (const key in Object.keys(objects)) {
95
+ const value = objects[key];
96
+ result.push({
97
+ name: value.key.substring(this.prefix.length),
98
+ size: value.system.content_length,
99
+ isFolder: value.is_prefix == 1,
100
+ childrenCount: value.custom.count,
101
+ createdAt: new Date(value.system.created * 1000), // TODO: check timezone
102
+ });
103
+ }
104
+ return result;
105
+ }
106
+ async getObjectSize(remotePath) {
107
+ const project = await this.lazyProject();
108
+ const objectInfo = await project.statObject(this.bucket, this.prefix + remotePath);
109
+ return objectInfo.system.content_length;
110
+ }
111
+ async getLastModified(remotePath) {
112
+ const project = await this.lazyProject();
113
+ const objectInfo = await project.statObject(this.bucket, this.prefix + remotePath);
114
+ return new Date(objectInfo.system.created * 1000);
115
+ }
116
+ async lazyStorj() {
117
+ if (!this._storj) {
118
+ // Keep lazy loading to avoid pulling uplink in browser bundles.
119
+ const dynamicImport = new Function('modulePath', 'return import(modulePath);');
120
+ this._storj = await dynamicImport('@super-protocol/uplink-nodejs');
121
+ }
122
+ return this._storj;
123
+ }
124
+ async lazyAccess() {
125
+ if (!this._access) {
126
+ const storj = await this.lazyStorj();
127
+ const uplink = new storj.Uplink();
128
+ this._access = await uplink.parseAccess(this.accessToken);
129
+ }
130
+ return this._access;
131
+ }
132
+ async lazyProject() {
133
+ if (!this._project) {
134
+ const access = await this.lazyAccess();
135
+ this._project = await access.openProject(this.maximumConcurrent);
136
+ }
137
+ return this._project;
138
+ }
139
+ }
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RvcmpTdG9yYWdlUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3N0b3JhZ2UvU3RvcmpTdG9yYWdlUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVoQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFakQsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBY3JDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sb0JBQW9CO0lBQ3ZDLE1BQU0sQ0FBQyxvQkFBb0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxNQUFNO0lBRXJDLE1BQU0sQ0FBUztJQUNmLE1BQU0sQ0FBUztJQUNmLFdBQVcsQ0FBUztJQUNwQixPQUFPLENBQVU7SUFDakIsUUFBUSxDQUFXO0lBQ25CLE1BQU0sQ0FBZTtJQUNyQixpQkFBaUIsQ0FBVTtJQUVuQyxZQUFZLFdBQWdELEVBQUUsaUJBQTBCO1FBQ3RGLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sS0FBSyxDQUFDLCtFQUErRSxDQUFDLENBQUM7UUFDL0YsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWpCLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztZQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ3pDLENBQUM7YUFBTSxJQUFJLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQyxxQkFBcUI7WUFDckIsSUFBSSxDQUFDLE1BQU0s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
@@ -0,0 +1,19 @@
1
+ /// <reference types="node" />
2
+ import stream from 'stream';
3
+ import StorageObject from '../../types/storage/StorageObject.js';
4
+ import IStorageProvider, { DownloadConfig } from './IStorageProvider.js';
5
+ import { FSCredentials } from '@super-protocol/dto-js';
6
+ export declare class FSStorageProvider implements IStorageProvider {
7
+ private readonly bucket;
8
+ private readonly prefix;
9
+ constructor(credentials: FSCredentials);
10
+ private getFullPath;
11
+ private writeWithProgress;
12
+ uploadFile(inputStream: stream.Readable, remotePath: string, contentLength: number, progressListener?: ((total: number, current: number) => void) | undefined): Promise<void>;
13
+ downloadFile(remotePath: string, config: DownloadConfig, progressListener?: ((total: number, current: number) => void) | undefined): Promise<stream.Readable>;
14
+ deleteObject(remotePath: string): Promise<void>;
15
+ private ensureDirectoryExists;
16
+ listObjects(remotePath: string): Promise<StorageObject[]>;
17
+ getObjectSize(remotePath: string): Promise<number>;
18
+ getLastModified(remotePath: string): Promise<Date | null>;
19
+ }