@super-protocol/sdk-js 2.2.0-beta.12 → 2.2.0-beta.120

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 (244) hide show
  1. package/dist/cjs/RIGenerator.d.ts +2 -0
  2. package/dist/cjs/RIGenerator.js +6 -4
  3. package/dist/cjs/TIIGenerator.d.ts +2 -1
  4. package/dist/cjs/TIIGenerator.js +13 -3
  5. package/dist/cjs/TeeInputGeneratorBase.d.ts +1 -1
  6. package/dist/cjs/TeeInputGeneratorBase.js +20 -32
  7. package/dist/cjs/analytics/eventProviders/BrowserEventProvider.d.ts +1 -0
  8. package/dist/cjs/analytics/eventProviders/BrowserEventProvider.js +3 -3
  9. package/dist/cjs/analytics/transports/AxiosTransport.js +1 -1
  10. package/dist/cjs/config.d.ts +0 -1
  11. package/dist/cjs/config.js +1 -2
  12. package/dist/cjs/constants.d.ts +5 -4
  13. package/dist/cjs/constants.js +31 -7
  14. package/dist/cjs/contracts/abi.d.ts +929 -122
  15. package/dist/cjs/contracts/abi.js +1168 -134
  16. package/dist/cjs/crypto/index.d.ts +1 -0
  17. package/dist/cjs/crypto/index.js +16 -1
  18. package/dist/cjs/errors/base.error.d.ts +3 -0
  19. package/dist/cjs/errors/base.error.js +19 -0
  20. package/dist/cjs/errors/index.d.ts +2 -0
  21. package/dist/cjs/errors/index.js +8 -0
  22. package/dist/cjs/errors/not-found.error.d.ts +3 -0
  23. package/dist/cjs/errors/not-found.error.js +8 -0
  24. package/dist/cjs/errors/utils.d.ts +1 -0
  25. package/dist/cjs/errors/utils.js +25 -0
  26. package/dist/cjs/index.d.ts +11 -1
  27. package/dist/cjs/index.js +19 -2
  28. package/dist/cjs/models/Offer.d.ts +48 -6
  29. package/dist/cjs/models/Offer.js +159 -16
  30. package/dist/cjs/models/Order.d.ts +2 -90
  31. package/dist/cjs/models/Order.js +20 -91
  32. package/dist/cjs/models/Provider.js +1 -1
  33. package/dist/cjs/models/TCB.js +13 -5
  34. package/dist/cjs/models/TeeOffer.d.ts +35 -13
  35. package/dist/cjs/models/TeeOffer.js +119 -44
  36. package/dist/cjs/proto/Compression.d.ts +1 -1
  37. package/dist/cjs/proto/TRI.d.ts +41 -6
  38. package/dist/cjs/proto/TRI.js +18 -1
  39. package/dist/cjs/proto/TeeProperties.d.ts +5 -5
  40. package/dist/cjs/providers/storage/IStorageProvider.d.ts +1 -1
  41. package/dist/cjs/providers/storage/S3StorageProvider.d.ts +8 -7
  42. package/dist/cjs/providers/storage/S3StorageProvider.js +77 -38
  43. package/dist/cjs/providers/storage/StorageAdapter.d.ts +9 -7
  44. package/dist/cjs/providers/storage/StorageAdapter.js +27 -29
  45. package/dist/cjs/providers/storage/StorageContentWriter.d.ts +2 -2
  46. package/dist/cjs/providers/storage/StorageContentWriter.js +5 -5
  47. package/dist/cjs/providers/storage/StorageKeyValueAdapter.d.ts +8 -5
  48. package/dist/cjs/providers/storage/StorageKeyValueAdapter.js +30 -16
  49. package/dist/cjs/providers/storage/StorjAdapter.d.ts +5 -4
  50. package/dist/cjs/providers/storage/StorjAdapter.js +15 -9
  51. package/dist/cjs/providers/storage/StorjCredentialsManager.d.ts +24 -0
  52. package/dist/cjs/providers/storage/StorjCredentialsManager.js +109 -0
  53. package/dist/cjs/providers/storage/StorjStorageProvider.js +26 -3
  54. package/dist/cjs/providers/storage/fs-storage-provider.d.ts +19 -0
  55. package/dist/cjs/providers/storage/fs-storage-provider.js +143 -0
  56. package/dist/cjs/providers/storage/getStorageProvider.js +4 -1
  57. package/dist/cjs/providers/storage/parseStorageCredentials.d.ts +5 -0
  58. package/dist/cjs/providers/storage/parseStorageCredentials.js +21 -0
  59. package/dist/cjs/providers/storage/types.d.ts +22 -0
  60. package/dist/cjs/staticModels/Consensus.d.ts +3 -2
  61. package/dist/cjs/staticModels/Consensus.js +22 -11
  62. package/dist/cjs/staticModels/LoaderSecretsPublicKeys.js +3 -3
  63. package/dist/cjs/staticModels/LoaderSessions.d.ts +2 -2
  64. package/dist/cjs/staticModels/LoaderSessions.js +5 -5
  65. package/dist/cjs/staticModels/OfferResources.d.ts +3 -1
  66. package/dist/cjs/staticModels/OfferResources.js +33 -8
  67. package/dist/cjs/staticModels/Offers.js +10 -2
  68. package/dist/cjs/staticModels/OffersStorageAllocated.d.ts +1 -2
  69. package/dist/cjs/staticModels/OffersStorageAllocated.js +10 -10
  70. package/dist/cjs/staticModels/OffersStorageRequests.js +4 -3
  71. package/dist/cjs/staticModels/Orders.d.ts +5 -4
  72. package/dist/cjs/staticModels/Orders.js +7 -6
  73. package/dist/cjs/staticModels/SecretRequests.d.ts +1 -1
  74. package/dist/cjs/staticModels/SecretRequests.js +14 -7
  75. package/dist/cjs/staticModels/TeeOffers.d.ts +0 -2
  76. package/dist/cjs/staticModels/TeeOffers.js +5 -38
  77. package/dist/cjs/tee/QuoteParser.d.ts +61 -6
  78. package/dist/cjs/tee/QuoteParser.js +251 -30
  79. package/dist/cjs/tee/QuoteValidator.d.ts +13 -0
  80. package/dist/cjs/tee/QuoteValidator.js +149 -35
  81. package/dist/cjs/tee/TcbSerializer.d.ts +20 -0
  82. package/dist/cjs/tee/TcbSerializer.js +27 -0
  83. package/dist/cjs/tee/TeeBlockVerifier.d.ts +1 -6
  84. package/dist/cjs/tee/TeeBlockVerifier.js +5 -52
  85. package/dist/cjs/tee/TeeCertificateService.d.ts +13 -0
  86. package/dist/cjs/tee/TeeCertificateService.js +42 -0
  87. package/dist/cjs/tee/errors.d.ts +6 -3
  88. package/dist/cjs/tee/errors.js +9 -5
  89. package/dist/cjs/tee/helpers.d.ts +1 -1
  90. package/dist/cjs/tee/helpers.js +2 -7
  91. package/dist/cjs/tee/types.d.ts +50 -9
  92. package/dist/cjs/tee/types.js +32 -1
  93. package/dist/cjs/types/DistributedSecretStorage.d.ts +7 -0
  94. package/dist/cjs/types/Offer.d.ts +33 -7
  95. package/dist/cjs/types/Offer.js +17 -2
  96. package/dist/cjs/types/OfferVersion.d.ts +13 -0
  97. package/dist/cjs/types/OfferVersion.js +9 -0
  98. package/dist/cjs/types/Order.d.ts +8 -2
  99. package/dist/cjs/types/Order.js +3 -1
  100. package/dist/cjs/types/SlotInfo.d.ts +1 -0
  101. package/dist/cjs/types/Superpro.d.ts +2 -1
  102. package/dist/cjs/types/Superpro.js +2 -1
  103. package/dist/cjs/types/TeeOfferInfo.d.ts +2 -1
  104. package/dist/cjs/types/index.d.ts +1 -0
  105. package/dist/cjs/types/index.js +2 -1
  106. package/dist/cjs/types/storage/StorageAccess.d.ts +3 -3
  107. package/dist/cjs/utils/CryptoKeysTransformer.d.ts +6 -1
  108. package/dist/cjs/utils/CryptoKeysTransformer.js +48 -3
  109. package/dist/cjs/utils/NonceTracker.js +1 -1
  110. package/dist/cjs/utils/helper.d.ts +7 -1
  111. package/dist/cjs/utils/helper.js +87 -2
  112. package/dist/cjs/utils/helpers/OrderArgsHelper.d.ts +17 -0
  113. package/dist/cjs/utils/helpers/OrderArgsHelper.js +87 -0
  114. package/dist/cjs/utils/helpers/index.d.ts +2 -0
  115. package/dist/cjs/utils/helpers/index.js +3 -1
  116. package/dist/cjs/utils/helpers/uploadObjectToStorage.d.ts +13 -0
  117. package/dist/cjs/utils/helpers/uploadObjectToStorage.js +55 -0
  118. package/dist/cjs/utils/schema-validators/index.d.ts +1 -0
  119. package/dist/cjs/utils/schema-validators/index.js +6 -0
  120. package/dist/cjs/utils/schema-validators/validator.d.ts +7 -0
  121. package/dist/cjs/utils/schema-validators/validator.js +49 -0
  122. package/dist/mjs/RIGenerator.d.ts +2 -0
  123. package/dist/mjs/RIGenerator.js +6 -4
  124. package/dist/mjs/TIIGenerator.d.ts +2 -1
  125. package/dist/mjs/TIIGenerator.js +13 -3
  126. package/dist/mjs/TeeInputGeneratorBase.d.ts +1 -1
  127. package/dist/mjs/TeeInputGeneratorBase.js +20 -32
  128. package/dist/mjs/analytics/eventProviders/BrowserEventProvider.d.ts +1 -0
  129. package/dist/mjs/analytics/eventProviders/BrowserEventProvider.js +3 -3
  130. package/dist/mjs/analytics/transports/AxiosTransport.js +1 -1
  131. package/dist/mjs/config.d.ts +0 -1
  132. package/dist/mjs/config.js +1 -2
  133. package/dist/mjs/constants.d.ts +5 -4
  134. package/dist/mjs/constants.js +30 -6
  135. package/dist/mjs/contracts/abi.d.ts +929 -122
  136. package/dist/mjs/contracts/abi.js +1166 -132
  137. package/dist/mjs/crypto/index.d.ts +1 -0
  138. package/dist/mjs/crypto/index.js +2 -1
  139. package/dist/mjs/errors/base.error.d.ts +3 -0
  140. package/dist/mjs/errors/base.error.js +15 -0
  141. package/dist/mjs/errors/index.d.ts +2 -0
  142. package/dist/mjs/errors/index.js +3 -0
  143. package/dist/mjs/errors/not-found.error.d.ts +3 -0
  144. package/dist/mjs/errors/not-found.error.js +4 -0
  145. package/dist/mjs/errors/utils.d.ts +1 -0
  146. package/dist/mjs/errors/utils.js +18 -0
  147. package/dist/mjs/index.d.ts +11 -1
  148. package/dist/mjs/index.js +11 -2
  149. package/dist/mjs/models/Offer.d.ts +48 -6
  150. package/dist/mjs/models/Offer.js +161 -18
  151. package/dist/mjs/models/Order.d.ts +2 -90
  152. package/dist/mjs/models/Order.js +20 -91
  153. package/dist/mjs/models/Provider.js +1 -1
  154. package/dist/mjs/models/TCB.js +13 -5
  155. package/dist/mjs/models/TeeOffer.d.ts +35 -13
  156. package/dist/mjs/models/TeeOffer.js +115 -40
  157. package/dist/mjs/proto/Compression.d.ts +1 -1
  158. package/dist/mjs/proto/TRI.d.ts +41 -6
  159. package/dist/mjs/proto/TRI.js +18 -1
  160. package/dist/mjs/proto/TeeProperties.d.ts +5 -5
  161. package/dist/mjs/providers/storage/IStorageProvider.d.ts +1 -1
  162. package/dist/mjs/providers/storage/S3StorageProvider.d.ts +8 -7
  163. package/dist/mjs/providers/storage/S3StorageProvider.js +74 -38
  164. package/dist/mjs/providers/storage/StorageAdapter.d.ts +9 -7
  165. package/dist/mjs/providers/storage/StorageAdapter.js +27 -29
  166. package/dist/mjs/providers/storage/StorageContentWriter.d.ts +2 -2
  167. package/dist/mjs/providers/storage/StorageContentWriter.js +5 -5
  168. package/dist/mjs/providers/storage/StorageKeyValueAdapter.d.ts +8 -5
  169. package/dist/mjs/providers/storage/StorageKeyValueAdapter.js +30 -16
  170. package/dist/mjs/providers/storage/StorjAdapter.d.ts +5 -4
  171. package/dist/mjs/providers/storage/StorjAdapter.js +15 -9
  172. package/dist/mjs/providers/storage/StorjCredentialsManager.d.ts +24 -0
  173. package/dist/mjs/providers/storage/StorjCredentialsManager.js +82 -0
  174. package/dist/mjs/providers/storage/StorjStorageProvider.js +3 -3
  175. package/dist/mjs/providers/storage/fs-storage-provider.d.ts +19 -0
  176. package/dist/mjs/providers/storage/fs-storage-provider.js +113 -0
  177. package/dist/mjs/providers/storage/getStorageProvider.js +4 -1
  178. package/dist/mjs/providers/storage/parseStorageCredentials.d.ts +5 -0
  179. package/dist/mjs/providers/storage/parseStorageCredentials.js +17 -0
  180. package/dist/mjs/providers/storage/types.d.ts +22 -0
  181. package/dist/mjs/staticModels/Consensus.d.ts +3 -2
  182. package/dist/mjs/staticModels/Consensus.js +22 -11
  183. package/dist/mjs/staticModels/LoaderSecretsPublicKeys.js +4 -4
  184. package/dist/mjs/staticModels/LoaderSessions.d.ts +2 -2
  185. package/dist/mjs/staticModels/LoaderSessions.js +6 -6
  186. package/dist/mjs/staticModels/OfferResources.d.ts +3 -1
  187. package/dist/mjs/staticModels/OfferResources.js +34 -9
  188. package/dist/mjs/staticModels/Offers.js +10 -2
  189. package/dist/mjs/staticModels/OffersStorageAllocated.d.ts +1 -2
  190. package/dist/mjs/staticModels/OffersStorageAllocated.js +11 -11
  191. package/dist/mjs/staticModels/OffersStorageRequests.js +5 -4
  192. package/dist/mjs/staticModels/Orders.d.ts +5 -4
  193. package/dist/mjs/staticModels/Orders.js +7 -6
  194. package/dist/mjs/staticModels/SecretRequests.d.ts +1 -1
  195. package/dist/mjs/staticModels/SecretRequests.js +15 -8
  196. package/dist/mjs/staticModels/TeeOffers.d.ts +0 -2
  197. package/dist/mjs/staticModels/TeeOffers.js +5 -38
  198. package/dist/mjs/store.js +2 -2
  199. package/dist/mjs/tee/QuoteParser.d.ts +61 -6
  200. package/dist/mjs/tee/QuoteParser.js +248 -29
  201. package/dist/mjs/tee/QuoteValidator.d.ts +13 -0
  202. package/dist/mjs/tee/QuoteValidator.js +149 -35
  203. package/dist/mjs/tee/TcbSerializer.d.ts +20 -0
  204. package/dist/mjs/tee/TcbSerializer.js +23 -0
  205. package/dist/mjs/tee/TeeBlockVerifier.d.ts +1 -6
  206. package/dist/mjs/tee/TeeBlockVerifier.js +5 -52
  207. package/dist/mjs/tee/TeeCertificateService.d.ts +13 -0
  208. package/dist/mjs/tee/TeeCertificateService.js +35 -0
  209. package/dist/mjs/tee/errors.d.ts +6 -3
  210. package/dist/mjs/tee/errors.js +7 -4
  211. package/dist/mjs/tee/helpers.d.ts +1 -1
  212. package/dist/mjs/tee/helpers.js +2 -7
  213. package/dist/mjs/tee/types.d.ts +50 -9
  214. package/dist/mjs/tee/types.js +28 -2
  215. package/dist/mjs/types/DistributedSecretStorage.d.ts +7 -0
  216. package/dist/mjs/types/Offer.d.ts +33 -7
  217. package/dist/mjs/types/Offer.js +16 -1
  218. package/dist/mjs/types/OfferVersion.d.ts +13 -0
  219. package/dist/mjs/types/OfferVersion.js +6 -0
  220. package/dist/mjs/types/Order.d.ts +8 -2
  221. package/dist/mjs/types/Order.js +3 -1
  222. package/dist/mjs/types/SlotInfo.d.ts +1 -0
  223. package/dist/mjs/types/Superpro.d.ts +2 -1
  224. package/dist/mjs/types/Superpro.js +2 -1
  225. package/dist/mjs/types/TeeOfferInfo.d.ts +2 -1
  226. package/dist/mjs/types/index.d.ts +1 -0
  227. package/dist/mjs/types/index.js +2 -1
  228. package/dist/mjs/types/storage/StorageAccess.d.ts +3 -3
  229. package/dist/mjs/utils/CryptoKeysTransformer.d.ts +6 -1
  230. package/dist/mjs/utils/CryptoKeysTransformer.js +48 -3
  231. package/dist/mjs/utils/NonceTracker.js +1 -1
  232. package/dist/mjs/utils/helper.d.ts +7 -1
  233. package/dist/mjs/utils/helper.js +80 -1
  234. package/dist/mjs/utils/helpers/OrderArgsHelper.d.ts +17 -0
  235. package/dist/mjs/utils/helpers/OrderArgsHelper.js +80 -0
  236. package/dist/mjs/utils/helpers/index.d.ts +2 -0
  237. package/dist/mjs/utils/helpers/index.js +3 -1
  238. package/dist/mjs/utils/helpers/uploadObjectToStorage.d.ts +13 -0
  239. package/dist/mjs/utils/helpers/uploadObjectToStorage.js +48 -0
  240. package/dist/mjs/utils/schema-validators/index.d.ts +1 -0
  241. package/dist/mjs/utils/schema-validators/index.js +2 -0
  242. package/dist/mjs/utils/schema-validators/validator.d.ts +7 -0
  243. package/dist/mjs/utils/schema-validators/validator.js +45 -0
  244. package/package.json +7 -6
@@ -1,6 +1,7 @@
1
1
  import store from '../store.js';
2
2
  import { Monitoring } from './Monitoring.js';
3
3
  import { BLOCKCHAIN_BATCH_REQUEST_TIMEOUT } from '../constants.js';
4
+ import { ethers } from 'ethers';
4
5
  /**
5
6
  * Function for checking if provider action account initialized (required for set methods)
6
7
  * Used in all set methods
@@ -118,6 +119,82 @@ export function convertTeeOfferOptionFromRaw(option) {
118
119
  usage: formatUsage(option.usage),
119
120
  };
120
121
  }
122
+ function transformPublicKeyFromRaw(publicKey) {
123
+ return {
124
+ ...publicKey,
125
+ pointX: typeof publicKey.pointX === 'string'
126
+ ? ethers.utils.arrayify(publicKey.pointX)
127
+ : publicKey.pointX,
128
+ pointY: typeof publicKey.pointY === 'string'
129
+ ? ethers.utils.arrayify(publicKey.pointY)
130
+ : publicKey.pointY,
131
+ };
132
+ }
133
+ function transformSignatureFromRaw(signature) {
134
+ return {
135
+ ...signature,
136
+ r: typeof signature.r === 'string' ? ethers.utils.arrayify(signature.r) : signature.r,
137
+ s: typeof signature.s === 'string' ? ethers.utils.arrayify(signature.s) : signature.s,
138
+ };
139
+ }
140
+ export function convertLoaderSecretPublicKeyFromRaw(loaderSecretPublicKeyRaw) {
141
+ const loaderSecretPublicKey = cleanWeb3Data({ ...loaderSecretPublicKeyRaw });
142
+ const secretPublicKey = transformPublicKeyFromRaw(loaderSecretPublicKey.secretPublicKey);
143
+ const signature = transformSignatureFromRaw(loaderSecretPublicKey.signature);
144
+ return {
145
+ ...loaderSecretPublicKey,
146
+ secretPublicKey,
147
+ signature,
148
+ signedTime: Number(loaderSecretPublicKey.signedTime),
149
+ timestamp: Number(loaderSecretPublicKey.timestamp),
150
+ };
151
+ }
152
+ export function convertLoaderSessionFromRaw(loaderSessionRaw) {
153
+ const loaderSession = cleanWeb3Data({ ...loaderSessionRaw });
154
+ const sessionPublicKey = transformPublicKeyFromRaw(loaderSession.sessionPublicKey);
155
+ return {
156
+ ...loaderSession,
157
+ sessionPublicKey,
158
+ signedTime: Number(loaderSession.signedTime),
159
+ timestamp: Number(loaderSession.timestamp),
160
+ };
161
+ }
162
+ export function convertOfferResourceFromRaw(offerResourceRaw) {
163
+ const offerResource = cleanWeb3Data({ ...offerResourceRaw });
164
+ const signature = transformSignatureFromRaw(offerResource.signature);
165
+ return {
166
+ ...offerResource,
167
+ signature,
168
+ offerVersion: Number(offerResource.offerVersion),
169
+ signedTime: Number(offerResource.signedTime),
170
+ timestamp: Number(offerResource.timestamp),
171
+ };
172
+ }
173
+ export function convertSecretRequestFromRaw(secretRequestRaw) {
174
+ const secretRequest = cleanWeb3Data({ ...secretRequestRaw });
175
+ return {
176
+ ...secretRequest,
177
+ offerVersion: Number(secretRequest.offerVersion),
178
+ timestamp: Number(secretRequest.timestamp),
179
+ };
180
+ }
181
+ export function convertOfferStorageAllocatedFromRaw(offerStorageAllocatedRaw) {
182
+ const offerStorageAllocated = cleanWeb3Data({ ...offerStorageAllocatedRaw });
183
+ return {
184
+ ...offerStorageAllocated,
185
+ distributionReplicationFactor: Number(offerStorageAllocated.distributionReplicationFactor),
186
+ timestamp: Number(offerStorageAllocated.timestamp),
187
+ };
188
+ }
189
+ export function convertOfferStorageRequestFromRaw(offerStorageRequestRaw) {
190
+ const offerStorageRequest = cleanWeb3Data({ ...offerStorageRequestRaw });
191
+ return {
192
+ ...offerStorageRequest,
193
+ replicationFactor: Number(offerStorageRequest.replicationFactor),
194
+ offerVersion: Number(offerStorageRequest.offerVersion),
195
+ timestamp: Number(offerStorageRequest.timestamp),
196
+ };
197
+ }
121
198
  export function formatTcbPublicData(unparsedPublicData) {
122
199
  const response = [];
123
200
  for (const data of unparsedPublicData) {
@@ -179,6 +256,7 @@ export function unpackSlotInfo(slotInfo, coresDenominator) {
179
256
  ram: Number(slotInfo.ram),
180
257
  diskUsage: Number(slotInfo.diskUsage),
181
258
  gpuCores: Number(slotInfo.gpuCores) / coresDenominator,
259
+ vram: Number(slotInfo.vram),
182
260
  };
183
261
  }
184
262
  export function packSlotInfo(slotInfo, coresDenominator) {
@@ -187,6 +265,7 @@ export function packSlotInfo(slotInfo, coresDenominator) {
187
265
  ram: slotInfo.ram,
188
266
  diskUsage: slotInfo.diskUsage,
189
267
  gpuCores: slotInfo.gpuCores * coresDenominator,
268
+ vram: slotInfo.vram,
190
269
  };
191
270
  }
192
271
  export function isValidBytes32Hex(data) {
@@ -255,4 +334,4 @@ export const executeBatchAsync = async (batch, timeout = BLOCKCHAIN_BATCH_REQUES
255
334
  export const preparePrivateKey = (pk) => {
256
335
  return pk.startsWith('0x') ? pk : '0x' + pk;
257
336
  };
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxhQUFhLENBQUM7QUFJaEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBZ0I3QyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVuRTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxDQUFDLGtCQUF1QyxFQUFRLEVBQUU7SUFDL0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJO1FBQ25ELE1BQU0sSUFBSSxLQUFLLENBQ2Isd0lBQXdJLENBQ3pJLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLENBQzVDLGtCQUF1QyxFQUM5QixFQUFFO0lBQ1gsK0hBQStIO0lBQy9ILE9BQU8sQ0FBQyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQztBQUNwQyxDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQVUsRUFBbUIsRUFBRTtJQUN6RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDaEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsR0FBVyxFQUFVLEVBQUU7SUFDekUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FB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
337
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxhQUFhLENBQUM7QUFJaEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBd0I3QyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWhDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLENBQUMsa0JBQXVDLEVBQVEsRUFBRTtJQUMvRixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUk7UUFDbkQsTUFBTSxJQUFJLEtBQUssQ0FDYix3SUFBd0ksQ0FDekksQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsQ0FDNUMsa0JBQXVDLEVBQzlCLEVBQUU7SUFDWCwrSEFBK0g7SUFDL0gsT0FBTyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDO0FBQ3BDLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBVSxFQUFtQixFQUFFO0lBQ3pELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNoQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEdBQVcsRUFBRSxHQUFXLEVBQVUsRUFBRTtJQUN6RSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENB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
@@ -0,0 +1,17 @@
1
+ import { Encryption, Hash, StorageProviderResource, TeeOrderEncryptedArgs } from '@super-protocol/dto-js';
2
+ import StorageAccess from '../../types/storage/StorageAccess.js';
3
+ export declare class OrderArgsHelper {
4
+ static decryptOrderArgs<T>(encryptedArgs: string, ecdhPrivateKey: string): Promise<T | undefined>;
5
+ static encryptOrderArgs(args: unknown, encryption: Encryption): Promise<string>;
6
+ static isMoreThanGivenSize(args: Record<string, unknown>, sizeInBytes?: number): boolean;
7
+ static uploadToStorage(params: {
8
+ args: TeeOrderEncryptedArgs;
9
+ key: string;
10
+ access: {
11
+ read: StorageAccess;
12
+ write: StorageAccess;
13
+ };
14
+ encryption: Encryption;
15
+ }): Promise<StorageProviderResource>;
16
+ static calculateArgsHash(args: TeeOrderEncryptedArgs): Promise<Hash>;
17
+ }
@@ -0,0 +1,80 @@
1
+ import _ from 'lodash';
2
+ import { Encoding, HashAlgorithm, } from '@super-protocol/dto-js';
3
+ import Crypto from '../../crypto/index.js';
4
+ import { uploadObjectToStorage } from './uploadObjectToStorage.js';
5
+ const isStringArray = (item) => Array.isArray(item) && item.every(_.isString);
6
+ const isEncryptedData = (arg) => {
7
+ if (!_.isString(arg)) {
8
+ return false;
9
+ }
10
+ try {
11
+ const encryption = JSON.parse(arg);
12
+ return Boolean(encryption.encoding && encryption.algo && encryption.ciphertext);
13
+ }
14
+ catch {
15
+ return false;
16
+ }
17
+ };
18
+ const isEncryptedArgs = (arg) => Boolean(_.isPlainObject(arg) &&
19
+ isStringArray(arg.data) &&
20
+ isStringArray(arg.image) &&
21
+ isStringArray(arg.solution) &&
22
+ (!arg.configuration || isEncryptedData(arg.configuration)));
23
+ const sortArrayByHash = async (array) => {
24
+ const elementsWithHashes = await Promise.all(array.map(async (element) => {
25
+ const hashObj = await Crypto.createHash(Buffer.from(element), {
26
+ algo: HashAlgorithm.SHA256,
27
+ encoding: Encoding.hex,
28
+ });
29
+ return { element, hash: hashObj.hash };
30
+ }));
31
+ return _.chain(elementsWithHashes).sortBy(['hash']).map('element').value();
32
+ };
33
+ export class OrderArgsHelper {
34
+ static async decryptOrderArgs(encryptedArgs, ecdhPrivateKey) {
35
+ if (!encryptedArgs) {
36
+ return;
37
+ }
38
+ const encrypted = JSON.parse(encryptedArgs);
39
+ encrypted.key = ecdhPrivateKey;
40
+ const decryptedArgsStr = await Crypto.decrypt(encrypted);
41
+ const orderArguments = JSON.parse(decryptedArgsStr);
42
+ return orderArguments;
43
+ }
44
+ static async encryptOrderArgs(args, encryption) {
45
+ const encryptedArgs = await Crypto.encrypt(JSON.stringify(args), encryption);
46
+ return JSON.stringify(encryptedArgs);
47
+ }
48
+ static isMoreThanGivenSize(args, sizeInBytes = 2.5 * 1024) {
49
+ const serializedData = JSON.stringify(args);
50
+ const encoder = new TextEncoder();
51
+ const data = encoder.encode(serializedData);
52
+ return data.length > sizeInBytes;
53
+ }
54
+ static uploadToStorage(params) {
55
+ const { access, args, key, encryption } = params;
56
+ if (!isEncryptedArgs(args)) {
57
+ throw new Error('Invalid args for uploading');
58
+ }
59
+ return uploadObjectToStorage({
60
+ data: args,
61
+ filepath: key,
62
+ access,
63
+ encryption,
64
+ });
65
+ }
66
+ static async calculateArgsHash(args) {
67
+ const entries = Object.entries(args);
68
+ const resultObject = {};
69
+ for (const [key, value] of _.sortBy(entries, [0])) {
70
+ if (isStringArray(value) && value.length > 1) {
71
+ resultObject[key] = await sortArrayByHash(value);
72
+ }
73
+ }
74
+ return Crypto.createHash(Buffer.from(JSON.stringify(resultObject)), {
75
+ algo: HashAlgorithm.SHA256,
76
+ encoding: Encoding.hex,
77
+ });
78
+ }
79
+ }
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3JkZXJBcmdzSGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL2hlbHBlcnMvT3JkZXJBcmdzSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQ0wsUUFBUSxFQUdSLGFBQWEsR0FHZCxNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sTUFBTSxNQUFNLHVCQUF1QixDQUFDO0FBRTNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRW5FLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBYSxFQUFvQixFQUFFLENBQ3hELEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFaEQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFZLEVBQVcsRUFBRTtJQUNoRCxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sVUFBVSxHQUFlLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFL0MsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsSUFBSSxVQUFVLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUF5QyxFQUFXLEVBQUUsQ0FDN0UsT0FBTyxDQUNMLENBQUMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDO0lBQ2xCLGFBQWEsQ0FBQyxHQUFHLENBQUMs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
@@ -1 +1,3 @@
1
1
  export * from './tryWithInterval.js';
2
+ export * from './OrderArgsHelper.js';
3
+ export * from './uploadObjectToStorage.js';
@@ -1,2 +1,4 @@
1
1
  export * from './tryWithInterval.js';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDIn0=
2
+ export * from './OrderArgsHelper.js';
3
+ export * from './uploadObjectToStorage.js';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw0QkFBNEIsQ0FBQyJ9
@@ -0,0 +1,13 @@
1
+ import { Encryption, StorageProviderResource } from '@super-protocol/dto-js';
2
+ import { StorageAccess } from '../../index.js';
3
+ export type ReadWriteStorageAccess = {
4
+ read: StorageAccess;
5
+ write: StorageAccess;
6
+ };
7
+ export type UploadObjectToStoragePrams = {
8
+ data: Record<string, unknown>;
9
+ filepath: string;
10
+ access: ReadWriteStorageAccess;
11
+ encryption?: Encryption;
12
+ };
13
+ export declare const uploadObjectToStorage: (params: UploadObjectToStoragePrams) => Promise<StorageProviderResource>;
@@ -0,0 +1,48 @@
1
+ import _ from 'lodash';
2
+ import { Readable } from 'stream';
3
+ import { ResourceType } from '@super-protocol/dto-js';
4
+ import { getStorageProvider } from '../../index.js';
5
+ import { isNodeJS } from '../helper.js';
6
+ import { OrderArgsHelper } from './OrderArgsHelper.js';
7
+ const string2Stream = (data) => {
8
+ const buffer = Buffer.from(data);
9
+ if (isNodeJS()) {
10
+ const stream = new Readable();
11
+ stream.push(buffer);
12
+ stream.push(null);
13
+ return {
14
+ stream,
15
+ size: buffer.length,
16
+ };
17
+ }
18
+ else {
19
+ const blob = new Blob([buffer]);
20
+ return {
21
+ stream: blob,
22
+ size: blob.size,
23
+ };
24
+ }
25
+ };
26
+ export const uploadObjectToStorage = async (params) => {
27
+ const { data, access, filepath, encryption } = params;
28
+ if (access.read.storageType !== access.write.storageType ||
29
+ access.read.credentials.bucket !== access.write.credentials.bucket ||
30
+ access.read.credentials.prefix !== access.write.credentials.prefix) {
31
+ throw new Error('Invalid storage access configuration');
32
+ }
33
+ if (!_.isPlainObject(params.data)) {
34
+ throw new Error('Invalid input data to upload to storage');
35
+ }
36
+ const dataToUpload = encryption
37
+ ? await OrderArgsHelper.encryptOrderArgs(data, encryption)
38
+ : JSON.stringify(data);
39
+ const dataForUpload = string2Stream(dataToUpload);
40
+ const storageProvider = getStorageProvider(access.write);
41
+ await storageProvider.uploadFile(dataForUpload.stream, filepath, dataForUpload.size);
42
+ return {
43
+ ...access.read,
44
+ type: ResourceType.StorageProvider,
45
+ filepath,
46
+ };
47
+ };
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkT2JqZWN0VG9TdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL2hlbHBlcnMvdXBsb2FkT2JqZWN0VG9TdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBYyxZQUFZLEVBQTJCLE1BQU0sd0JBQXdCLENBQUM7QUFDM0YsT0FBTyxFQUFpQixrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBY3ZELE1BQU0sYUFBYSxHQUFHLENBQ3BCLElBQVksRUFJWixFQUFFO0lBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVqQyxJQUFJLFFBQVEsRUFBRSxFQUFFLENBQUM7UUFDZixNQUFNLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsQixPQUFPO1lBQ0wsTUFBTTtZQUNOLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTTtTQUNwQixDQUFDO0lBQ0osQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFaEMsT0FBTztZQUNMLE1BQU0sRUFBRSxJQUFJO1lBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2hCLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsS0FBSyxFQUN4QyxNQUFrQyxFQUNBLEVBQUU7SUFDcEMsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUN0RCxJQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVztRQUNwRCxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTTtRQUNsRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUNsRSxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLFVBQVU7UUFDN0IsQ0FBQyxDQUFDLE1BQU0sZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7UUFDMUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xELE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RCxNQUFNLGVBQWUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXJGLE9BQU87UUFDTCxHQUFHLE1BQU0sQ0FBQyxJQUFJO1FBQ2QsSUFBSSxFQUFFLFlBQVksQ0FBQyxlQUFlO1FBQ2xDLFFBQVE7S0FDVCxDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
@@ -0,0 +1 @@
1
+ export { validateBySchema } from './validator.js';
@@ -0,0 +1,2 @@
1
+ export { validateBySchema } from './validator.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvc2NoZW1hLXZhbGlkYXRvcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUMifQ==
@@ -0,0 +1,7 @@
1
+ import { TSchema } from '@sinclair/typebox';
2
+ export declare const validateBySchema: <T extends TSchema>(data: Record<string, unknown>, schema: T, options?: {
3
+ allErrors: boolean;
4
+ }) => {
5
+ isValid: boolean;
6
+ errors?: string[] | undefined;
7
+ };
@@ -0,0 +1,45 @@
1
+ import { TypeCompiler } from '@sinclair/typebox/compiler';
2
+ import { createHash } from 'crypto';
3
+ import { Encoding, HashAlgorithm } from '@super-protocol/dto-js';
4
+ const schemaCache = new Map();
5
+ const compileSchema = (schema) => {
6
+ const schemaHash = createHash(HashAlgorithm.SHA256)
7
+ .update(JSON.stringify(schema))
8
+ .digest(Encoding.hex);
9
+ if (!schemaCache.has(schemaHash)) {
10
+ const compiledSchema = TypeCompiler.Compile(schema);
11
+ schemaCache.set(schemaHash, compiledSchema);
12
+ }
13
+ return schemaCache.get(schemaHash);
14
+ };
15
+ const enhanceErrorMessage = (error) => {
16
+ const { path, value, schema } = error;
17
+ const descriptions = (schema.anyOf || [])
18
+ .map((subSchema) => subSchema.description)
19
+ .filter(Boolean);
20
+ const specificError = descriptions.length > 0
21
+ ? descriptions.join('; ')
22
+ : schema.errorMessage?.type ?? 'Invalid value';
23
+ return `Validation error at ${path}: ${error.message}\nvalue: ${JSON.stringify(value)}\ndetailed info: ${specificError}`;
24
+ };
25
+ export const validateBySchema = (data, schema, options) => {
26
+ const validator = compileSchema(schema);
27
+ const isValid = validator.Check(data);
28
+ const allErrors = options?.allErrors ?? false;
29
+ let errors;
30
+ if (!isValid) {
31
+ const errorsIterator = validator.Errors(data);
32
+ if (allErrors) {
33
+ errors = [...errorsIterator].map(enhanceErrorMessage);
34
+ }
35
+ else {
36
+ const firstError = errorsIterator.First();
37
+ errors = firstError ? [enhanceErrorMessage(firstError)] : undefined;
38
+ }
39
+ }
40
+ return {
41
+ isValid,
42
+ ...(errors && { errors }),
43
+ };
44
+ };
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3NjaGVtYS12YWxpZGF0b3JzL3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsWUFBWSxFQUFjLE1BQU0sNEJBQTRCLENBQUM7QUFFakYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpFLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO0FBRTFELE1BQU0sYUFBYSxHQUFHLENBQW9CLE1BQVMsRUFBZ0IsRUFBRTtJQUNuRSxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztTQUNoRCxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM5QixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDakMsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRCxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBaUIsQ0FBQztBQUNyRCxDQUFDLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBaUIsRUFBVSxFQUFFO0lBQ3hELE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztJQUN0QyxNQUFNLFlBQVksR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1NBQ3RDLEdBQUcsQ0FBQyxDQUFDLFNBQWtCLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7U0FDbEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25CLE1BQU0sYUFBYSxHQUNqQixZQUFZLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDckIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxlQUFlLENBQUM7SUFFbkQsT0FBTyx1QkFBdUIsSUFBSSxLQUFLLEtBQUssQ0FBQyxPQUFPLFlBQVksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLGFBQWEsRUFBRSxDQUFDO0FBQzNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQzlCLElBQTZCLEVBQzdCLE1BQVMsRUFDVCxPQUFnQyxFQUloQyxFQUFFO0lBQ0YsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFJLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxFQUFFLFNBQVMsSUFBSSxLQUFLLENBQUM7SUFDOUMsSUFBSSxNQUE0QixDQUFDO0lBRWpDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLE1BQU0sR0FBRyxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDeEQsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDdEUsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTztRQUNQLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztLQUMxQixDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@super-protocol/sdk-js",
3
- "version": "2.2.0-beta.12",
3
+ "version": "2.2.0-beta.120",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/mjs/index.js",
6
6
  "exports": {
@@ -20,7 +20,7 @@
20
20
  "lint:fix": "eslint --ext .ts . --fix",
21
21
  "build:cjs": "tsc -p ./tsconfig.cjs.json && echo '{\"type\": \"commonjs\"}' > dist/cjs/package.json",
22
22
  "build:mjs": "tsc -p ./tsconfig.mjs.json && echo '{\"type\": \"module\"}' > dist/mjs/package.json",
23
- "build": "rm -rf ./build && npm run build:cjs && npm run build:mjs",
23
+ "build": "rm -rf ./dist && npm run build:cjs && npm run build:mjs",
24
24
  "prepare": "npm run build",
25
25
  "docs": "typedoc src/index.ts --excludePrivate --plugin typedoc-plugin-markdown --out ./auto-docs",
26
26
  "docs-cleanup": "rm -rf auto-docs",
@@ -37,7 +37,7 @@
37
37
  "dto:generate": "cd ./dto/src && protoc --plugin=../../node_modules/.bin/protoc-gen-ts_proto --ts_proto_opt=esModuleInterop=true --ts_proto_opt=importSuffix=.js --ts_proto_opt=unrecognizedEnum=false --ts_proto_out=../../src/proto ./*"
38
38
  },
39
39
  "devDependencies": {
40
- "@super-protocol/eslint-config-typescript": "2.0.0",
40
+ "@super-protocol/eslint-config-typescript": "2.0.1",
41
41
  "@types/elliptic": "^6.4.18",
42
42
  "@types/jest": "^27.0.3",
43
43
  "@types/lodash": "^4.14.176",
@@ -58,9 +58,10 @@
58
58
  "dependencies": {
59
59
  "@aws-sdk/client-s3": "^3.470.0",
60
60
  "@fidm/x509": "^1.2.1",
61
- "@super-protocol/dto-js": "0.0.36",
62
- "@super-protocol/tee-lib": "^0.1.2",
63
- "@super-protocol/uplink-nodejs": "1.2.19",
61
+ "@msgpack/msgpack": "^2.8.0",
62
+ "@sinclair/typebox": "0.33.17",
63
+ "@super-protocol/dto-js": "0.1.12",
64
+ "@super-protocol/uplink-nodejs": "^1.2.20",
64
65
  "asn1js": "^3.0.5",
65
66
  "axios": "^1.5.1",
66
67
  "bottleneck": "^2.19.5",