@seedprotocol/sdk 0.3.3 → 0.3.5

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 (392) hide show
  1. package/dist/addModel.js +89 -0
  2. package/dist/addModel.js.map +1 -0
  3. package/dist/bin.js +78 -134
  4. package/dist/bin.js.map +1 -1
  5. package/dist/db/configs/browser.app.db.config.ts +1 -0
  6. package/dist/db/configs/node.app.db.config.ts +1 -0
  7. package/dist/main.js +15 -23
  8. package/dist/main.js.map +1 -1
  9. package/dist/node/codegen/templates/model.njk +14 -0
  10. package/dist/scripts/addModel.d.ts +3 -0
  11. package/dist/scripts/addModel.d.ts.map +1 -0
  12. package/dist/scripts/bin.d.ts.map +1 -1
  13. package/dist/src/Item/BaseItem.js +309 -0
  14. package/dist/src/Item/BaseItem.js.map +1 -0
  15. package/dist/src/Item/index.js +4 -0
  16. package/dist/src/Item/index.js.map +1 -0
  17. package/dist/src/Item/queries.js +94 -0
  18. package/dist/src/Item/queries.js.map +1 -0
  19. package/dist/src/Item/service/actors/fetchDataFromEas.js +74 -0
  20. package/dist/src/Item/service/actors/fetchDataFromEas.js.map +1 -0
  21. package/dist/src/Item/service/actors/hydrateExistingItem.js +119 -0
  22. package/dist/src/Item/service/actors/hydrateExistingItem.js.map +1 -0
  23. package/dist/src/Item/service/actors/hydrateNewItem.js +28 -0
  24. package/dist/src/Item/service/actors/hydrateNewItem.js.map +1 -0
  25. package/dist/src/Item/service/actors/initialize.js +39 -0
  26. package/dist/src/Item/service/actors/initialize.js.map +1 -0
  27. package/dist/src/Item/service/actors/reload.js +26 -0
  28. package/dist/src/Item/service/actors/reload.js.map +1 -0
  29. package/dist/src/Item/service/actors/waitForDb.js +22 -0
  30. package/dist/src/Item/service/actors/waitForDb.js.map +1 -0
  31. package/dist/src/Item/service/itemMachineSingle.js +154 -0
  32. package/dist/src/Item/service/itemMachineSingle.js.map +1 -0
  33. package/dist/src/ItemProperty/BaseItemProperty.js +306 -0
  34. package/dist/src/ItemProperty/BaseItemProperty.js.map +1 -0
  35. package/dist/src/ItemProperty/service/actors/hydrateFromDb.js +196 -0
  36. package/dist/src/ItemProperty/service/actors/hydrateFromDb.js.map +1 -0
  37. package/dist/src/ItemProperty/service/actors/initialize.js +60 -0
  38. package/dist/src/ItemProperty/service/actors/initialize.js.map +1 -0
  39. package/dist/src/ItemProperty/service/actors/resolveRelatedValue.js +317 -0
  40. package/dist/src/ItemProperty/service/actors/resolveRelatedValue.js.map +1 -0
  41. package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.js +62 -0
  42. package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.js.map +1 -0
  43. package/dist/src/ItemProperty/service/actors/saveValueToDb/analyzeInput.js +100 -0
  44. package/dist/src/ItemProperty/service/actors/saveValueToDb/analyzeInput.js.map +1 -0
  45. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveImageSrc.js +178 -0
  46. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveImageSrc.js.map +1 -0
  47. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.js +117 -0
  48. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.js.map +1 -0
  49. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveRelation.js +81 -0
  50. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveRelation.js.map +1 -0
  51. package/dist/src/ItemProperty/service/actors/waitForDb.js +22 -0
  52. package/dist/src/ItemProperty/service/actors/waitForDb.js.map +1 -0
  53. package/dist/src/ItemProperty/service/propertyMachine.js +198 -0
  54. package/dist/src/ItemProperty/service/propertyMachine.js.map +1 -0
  55. package/dist/src/browser/Item/Item.js +11 -0
  56. package/dist/src/browser/Item/Item.js.map +1 -0
  57. package/dist/src/browser/Item/index.js +2 -0
  58. package/dist/src/browser/Item/index.js.map +1 -0
  59. package/dist/src/browser/ItemProperty/ItemProperty.js +11 -0
  60. package/dist/src/browser/ItemProperty/ItemProperty.js.map +1 -0
  61. package/dist/src/browser/db/Db.d.ts +10 -5
  62. package/dist/src/browser/db/Db.d.ts.map +1 -1
  63. package/dist/src/browser/db/Db.js +218 -0
  64. package/dist/src/browser/db/Db.js.map +1 -0
  65. package/dist/src/browser/db/sqlWasmClient.d.ts +0 -12
  66. package/dist/src/browser/db/sqlWasmClient.d.ts.map +1 -1
  67. package/dist/{ArweaveClient-2RMCxfNZ.js → src/browser/helpers/ArweaveClient.js} +3 -3
  68. package/dist/{ArweaveClient-COlwyYTF.js.map → src/browser/helpers/ArweaveClient.js.map} +1 -1
  69. package/dist/src/browser/helpers/FileManager.d.ts.map +1 -1
  70. package/dist/src/browser/helpers/FileManager.js +308 -0
  71. package/dist/src/browser/helpers/FileManager.js.map +1 -0
  72. package/dist/src/browser/helpers/QueryClient.d.ts.map +1 -1
  73. package/dist/{QueryClient-W4slRa7O.js → src/browser/helpers/QueryClient.js} +2 -5
  74. package/dist/src/browser/helpers/QueryClient.js.map +1 -0
  75. package/dist/src/browser/index.d.ts +2 -1
  76. package/dist/src/browser/index.d.ts.map +1 -1
  77. package/dist/src/browser/react/db.js +6 -0
  78. package/dist/src/browser/react/db.js.map +1 -0
  79. package/dist/src/browser/react/item.js +260 -0
  80. package/dist/src/browser/react/item.js.map +1 -0
  81. package/dist/src/browser/react/property.js +107 -0
  82. package/dist/src/browser/react/property.js.map +1 -0
  83. package/dist/src/browser/react/services.d.ts.map +1 -1
  84. package/dist/src/browser/react/services.js +299 -0
  85. package/dist/src/browser/react/services.js.map +1 -0
  86. package/dist/src/browser/react/trash.js +25 -0
  87. package/dist/src/browser/react/trash.js.map +1 -0
  88. package/dist/src/browser/workers/FileDownloader.js +49 -0
  89. package/dist/src/browser/workers/FileDownloader.js.map +1 -0
  90. package/dist/src/browser/workers/ImageResizer.js +62 -0
  91. package/dist/src/browser/workers/ImageResizer.js.map +1 -0
  92. package/dist/src/browser/workers/dbWorker.d.ts +1 -0
  93. package/dist/src/browser/workers/dbWorker.d.ts.map +1 -0
  94. package/dist/src/browser/workers/filesDownload.js +241 -0
  95. package/dist/src/browser/workers/filesDownload.js.map +1 -0
  96. package/dist/src/browser/workers/imageResize.js +379 -0
  97. package/dist/src/browser/workers/imageResize.js.map +1 -0
  98. package/dist/src/client/ClientManager.d.ts +18 -2
  99. package/dist/src/client/ClientManager.d.ts.map +1 -1
  100. package/dist/src/client/ClientManager.js +59 -0
  101. package/dist/src/client/ClientManager.js.map +1 -0
  102. package/dist/src/client/actions/setAddresses.js +19 -0
  103. package/dist/src/client/actions/setAddresses.js.map +1 -0
  104. package/dist/src/client/actors/initialize.d.ts.map +1 -1
  105. package/dist/src/client/actors/initialize.js +84 -0
  106. package/dist/src/client/actors/initialize.js.map +1 -0
  107. package/dist/src/client/actors/saveAppState.js +44 -0
  108. package/dist/src/client/actors/saveAppState.js.map +1 -0
  109. package/dist/src/client/clientManagerMachine.js +61 -0
  110. package/dist/src/client/clientManagerMachine.js.map +1 -0
  111. package/dist/src/db/Db/BaseDb.d.ts +1 -2
  112. package/dist/src/db/Db/BaseDb.d.ts.map +1 -1
  113. package/dist/src/db/Db/BaseDb.js +22 -0
  114. package/dist/src/db/Db/BaseDb.js.map +1 -0
  115. package/dist/src/db/configs/browser.app.db.config.d.ts.map +1 -1
  116. package/dist/src/db/configs/node.app.db.config.d.ts.map +1 -1
  117. package/dist/{seed.schema.config-DmTl3a9U.js → src/db/configs/seed.schema.config.js} +3 -24
  118. package/dist/src/db/configs/seed.schema.config.js.map +1 -0
  119. package/dist/src/db/read/getExistingItem.js +29 -0
  120. package/dist/src/db/read/getExistingItem.js.map +1 -0
  121. package/dist/src/db/read/getItem.js +26 -0
  122. package/dist/src/db/read/getItem.js.map +1 -0
  123. package/dist/src/db/read/getItemData.js +84 -0
  124. package/dist/src/db/read/getItemData.js.map +1 -0
  125. package/dist/src/db/read/getItemProperties.js +49 -0
  126. package/dist/src/db/read/getItemProperties.js.map +1 -0
  127. package/dist/src/db/read/getItemProperty.js +30 -0
  128. package/dist/src/db/read/getItemProperty.js.map +1 -0
  129. package/dist/src/db/read/getItems.js +49 -0
  130. package/dist/src/db/read/getItems.js.map +1 -0
  131. package/dist/src/db/read/getMetadata.js +32 -0
  132. package/dist/src/db/read/getMetadata.js.map +1 -0
  133. package/dist/src/db/read/getModelSchemas.js +69 -0
  134. package/dist/src/db/read/getModelSchemas.js.map +1 -0
  135. package/dist/src/db/read/getPropertyData.js +38 -0
  136. package/dist/src/db/read/getPropertyData.js.map +1 -0
  137. package/dist/src/db/read/getPublishPayload.js +213 -0
  138. package/dist/src/db/read/getPublishPayload.js.map +1 -0
  139. package/dist/src/db/read/getPublishUploads.d.ts.map +1 -1
  140. package/dist/src/db/read/getPublishUploads.js +134 -0
  141. package/dist/src/db/read/getPublishUploads.js.map +1 -0
  142. package/dist/src/db/read/getRelationValueData.js +30 -0
  143. package/dist/src/db/read/getRelationValueData.js.map +1 -0
  144. package/dist/src/db/read/getSchemaUidForModel.js +28 -0
  145. package/dist/src/db/read/getSchemaUidForModel.js.map +1 -0
  146. package/dist/src/db/read/getSeedData.js +28 -0
  147. package/dist/src/db/read/getSeedData.js.map +1 -0
  148. package/dist/src/db/read/getStorageTransactionIdForSeedUid.js +30 -0
  149. package/dist/src/db/read/getStorageTransactionIdForSeedUid.js.map +1 -0
  150. package/dist/src/db/read/getVersionData.js +33 -0
  151. package/dist/src/db/read/getVersionData.js.map +1 -0
  152. package/dist/src/db/read/subqueries/metadataLatest.js +35 -0
  153. package/dist/src/db/read/subqueries/metadataLatest.js.map +1 -0
  154. package/dist/src/db/read/subqueries/versionData.js +27 -0
  155. package/dist/src/db/read/subqueries/versionData.js.map +1 -0
  156. package/dist/src/db/write/createMetadata.js +63 -0
  157. package/dist/src/db/write/createMetadata.js.map +1 -0
  158. package/dist/src/db/write/createNewItem.js +38 -0
  159. package/dist/src/db/write/createNewItem.js.map +1 -0
  160. package/dist/src/db/write/createSeed.js +29 -0
  161. package/dist/src/db/write/createSeed.js.map +1 -0
  162. package/dist/src/db/write/createSeeds.js +25 -0
  163. package/dist/src/db/write/createSeeds.js.map +1 -0
  164. package/dist/src/db/write/createVersion.js +25 -0
  165. package/dist/src/db/write/createVersion.js.map +1 -0
  166. package/dist/src/db/write/deleteItem.js +21 -0
  167. package/dist/src/db/write/deleteItem.js.map +1 -0
  168. package/dist/src/db/write/saveAppState.js +26 -0
  169. package/dist/src/db/write/saveAppState.js.map +1 -0
  170. package/dist/src/db/write/saveMetadata.js +22 -0
  171. package/dist/src/db/write/saveMetadata.js.map +1 -0
  172. package/dist/src/db/write/updateItemPropertyValue.js +161 -0
  173. package/dist/src/db/write/updateItemPropertyValue.js.map +1 -0
  174. package/dist/src/db/write/updateMetadata.js +25 -0
  175. package/dist/src/db/write/updateMetadata.js.map +1 -0
  176. package/dist/src/eventBus.js +6 -0
  177. package/dist/src/eventBus.js.map +1 -0
  178. package/dist/src/events/files/download.js +161 -0
  179. package/dist/src/events/files/download.js.map +1 -0
  180. package/dist/src/events/files/index.d.ts.map +1 -1
  181. package/dist/src/events/files/index.js +61 -0
  182. package/dist/src/events/files/index.js.map +1 -0
  183. package/dist/src/events/index.js +28 -0
  184. package/dist/src/events/index.js.map +1 -0
  185. package/dist/src/events/item/index.js +28 -0
  186. package/dist/src/events/item/index.js.map +1 -0
  187. package/dist/src/events/item/publish.js +19 -0
  188. package/dist/src/events/item/publish.js.map +1 -0
  189. package/dist/src/events/item/syncDbWithEas.js +428 -0
  190. package/dist/src/events/item/syncDbWithEas.js.map +1 -0
  191. package/dist/src/events/services/allItems.js +20 -0
  192. package/dist/src/events/services/allItems.js.map +1 -0
  193. package/dist/src/events/services/index.js +9 -0
  194. package/dist/src/events/services/index.js.map +1 -0
  195. package/dist/src/graphql/gql/gql.js +38 -0
  196. package/dist/src/graphql/gql/gql.js.map +1 -0
  197. package/dist/src/graphql/gql/graphql.js +106 -0
  198. package/dist/src/graphql/gql/graphql.js.map +1 -0
  199. package/dist/src/helpers/ArweaveClient/BaseArweaveClient.js +11 -0
  200. package/dist/src/helpers/ArweaveClient/BaseArweaveClient.js.map +1 -0
  201. package/dist/src/helpers/ArweaveClient/index.js +45 -0
  202. package/dist/src/helpers/ArweaveClient/index.js.map +1 -0
  203. package/dist/src/helpers/ArweaveClient/queries.js +16 -0
  204. package/dist/src/helpers/ArweaveClient/queries.js.map +1 -0
  205. package/dist/src/helpers/EasClient/BaseEasClient.js +14 -0
  206. package/dist/src/helpers/EasClient/BaseEasClient.js.map +1 -0
  207. package/dist/src/helpers/FileManager/BaseFileManager.js +55 -0
  208. package/dist/src/helpers/FileManager/BaseFileManager.js.map +1 -0
  209. package/dist/src/helpers/QueryClient/BaseQueryClient.js +11 -0
  210. package/dist/src/helpers/QueryClient/BaseQueryClient.js.map +1 -0
  211. package/dist/src/helpers/constants.d.ts +1 -0
  212. package/dist/src/helpers/constants.d.ts.map +1 -1
  213. package/dist/src/helpers/constants.js +74 -0
  214. package/dist/src/helpers/constants.js.map +1 -0
  215. package/dist/src/helpers/db.js +43 -0
  216. package/dist/src/helpers/db.js.map +1 -0
  217. package/dist/src/helpers/environment.js +24 -0
  218. package/dist/src/helpers/environment.js.map +1 -0
  219. package/dist/src/helpers/getSchemaForItemProperty.js +51 -0
  220. package/dist/src/helpers/getSchemaForItemProperty.js.map +1 -0
  221. package/dist/src/helpers/getSegmentedItemProperties.js +50 -0
  222. package/dist/src/helpers/getSegmentedItemProperties.js.map +1 -0
  223. package/dist/src/helpers/index.js +101 -0
  224. package/dist/src/helpers/index.js.map +1 -0
  225. package/dist/src/helpers/updateMachineContext.js +20 -0
  226. package/dist/src/helpers/updateMachineContext.js.map +1 -0
  227. package/dist/src/index.d.ts +1 -1
  228. package/dist/src/index.d.ts.map +1 -1
  229. package/dist/src/interfaces/IDb.d.ts.map +1 -1
  230. package/dist/src/node/codegen/drizzle.d.ts +4 -1
  231. package/dist/src/node/codegen/drizzle.d.ts.map +1 -1
  232. package/dist/src/node/codegen/drizzle.js +86 -0
  233. package/dist/src/node/codegen/drizzle.js.map +1 -0
  234. package/dist/src/node/constants.d.ts.map +1 -1
  235. package/dist/src/node/constants.js +37 -0
  236. package/dist/src/node/constants.js.map +1 -0
  237. package/dist/src/node/db/Db.d.ts +5 -6
  238. package/dist/src/node/db/Db.d.ts.map +1 -1
  239. package/dist/{ArweaveClient-COlwyYTF.js → src/node/helpers/ArweaveClient.js} +3 -3
  240. package/dist/{ArweaveClient-2RMCxfNZ.js.map → src/node/helpers/ArweaveClient.js.map} +1 -1
  241. package/dist/{EasClient-CFnb5g-r.js → src/node/helpers/EasClient.js} +3 -3
  242. package/dist/{EasClient-CFnb5g-r.js.map → src/node/helpers/EasClient.js.map} +1 -1
  243. package/dist/src/node/helpers/FileManager.d.ts.map +1 -1
  244. package/dist/{QueryClient-ZUsZ1Qxq.js → src/node/helpers/QueryClient.js} +2 -4
  245. package/dist/{QueryClient-ZUsZ1Qxq.js.map → src/node/helpers/QueryClient.js.map} +1 -1
  246. package/dist/src/node/helpers/index.d.ts.map +1 -1
  247. package/dist/src/node/helpers/index.js +39 -0
  248. package/dist/src/node/helpers/index.js.map +1 -0
  249. package/dist/src/node/seed.d.ts +0 -6
  250. package/dist/src/node/seed.d.ts.map +1 -1
  251. package/dist/src/node/webpack/index.d.ts.map +1 -1
  252. package/dist/src/node/webpack/index.js +96 -0
  253. package/dist/src/node/webpack/index.js.map +1 -0
  254. package/dist/src/schema/file/queries.js +48 -0
  255. package/dist/src/schema/file/queries.js.map +1 -0
  256. package/dist/src/schema/index.d.ts.map +1 -1
  257. package/dist/src/schema/model/index.d.ts +8 -8
  258. package/dist/src/schema/model/index.js +44 -0
  259. package/dist/src/schema/model/index.js.map +1 -0
  260. package/dist/src/schema/property/index.d.ts +58 -32
  261. package/dist/src/schema/property/index.d.ts.map +1 -1
  262. package/dist/src/schema/property/index.js +89 -0
  263. package/dist/src/schema/property/index.js.map +1 -0
  264. package/dist/src/seedSchema/AppStateSchema.js +11 -0
  265. package/dist/src/seedSchema/AppStateSchema.js.map +1 -0
  266. package/dist/src/seedSchema/MetadataSchema.js +29 -0
  267. package/dist/src/seedSchema/MetadataSchema.js.map +1 -0
  268. package/dist/src/seedSchema/ModelSchema.js +33 -0
  269. package/dist/src/seedSchema/ModelSchema.js.map +1 -0
  270. package/dist/src/seedSchema/ModelUidSchema.js +18 -0
  271. package/dist/src/seedSchema/ModelUidSchema.js.map +1 -0
  272. package/dist/src/seedSchema/SeedSchema.js +16 -0
  273. package/dist/src/seedSchema/SeedSchema.js.map +1 -0
  274. package/dist/src/seedSchema/VersionSchema.js +17 -0
  275. package/dist/src/seedSchema/VersionSchema.js.map +1 -0
  276. package/dist/src/services/allItems/actors/fetchDbData.js +13 -0
  277. package/dist/src/services/allItems/actors/fetchDbData.js.map +1 -0
  278. package/dist/src/services/allItems/actors/fetchRelatedItems.js +137 -0
  279. package/dist/src/services/allItems/actors/fetchRelatedItems.js.map +1 -0
  280. package/dist/src/services/allItems/actors/fetchSeeds.js +31 -0
  281. package/dist/src/services/allItems/actors/fetchSeeds.js.map +1 -0
  282. package/dist/src/services/allItems/actors/fetchVersions.js +35 -0
  283. package/dist/src/services/allItems/actors/fetchVersions.js.map +1 -0
  284. package/dist/src/services/allItems/actors/initialize.js +144 -0
  285. package/dist/src/services/allItems/actors/initialize.js.map +1 -0
  286. package/dist/src/services/allItems/actors/processItems.js +55 -0
  287. package/dist/src/services/allItems/actors/processItems.js.map +1 -0
  288. package/dist/src/services/allItems/itemMachineAll.js +153 -0
  289. package/dist/src/services/allItems/itemMachineAll.js.map +1 -0
  290. package/dist/src/services/db/actors/checkStatus.d.ts.map +1 -1
  291. package/dist/src/services/db/actors/checkStatus.js +41 -0
  292. package/dist/src/services/db/actors/checkStatus.js.map +1 -0
  293. package/dist/src/services/db/actors/connectToDb.d.ts.map +1 -1
  294. package/dist/src/services/db/actors/connectToDb.js +31 -0
  295. package/dist/src/services/db/actors/connectToDb.js.map +1 -0
  296. package/dist/src/services/db/actors/migrate.js +40 -0
  297. package/dist/src/services/db/actors/migrate.js.map +1 -0
  298. package/dist/src/services/db/actors/validate.d.ts.map +1 -1
  299. package/dist/src/services/db/actors/validate.js +40 -0
  300. package/dist/src/services/db/actors/validate.js.map +1 -0
  301. package/dist/src/services/db/actors/waitForFiles.js +32 -0
  302. package/dist/src/services/db/actors/waitForFiles.js.map +1 -0
  303. package/dist/src/services/db/dbMachine.d.ts.map +1 -1
  304. package/dist/src/services/db/dbMachine.js +156 -0
  305. package/dist/src/services/db/dbMachine.js.map +1 -0
  306. package/dist/src/services/events.js +15 -0
  307. package/dist/src/services/events.js.map +1 -0
  308. package/dist/src/services/global/actors/addModelsToDb.js +115 -0
  309. package/dist/src/services/global/actors/addModelsToDb.js.map +1 -0
  310. package/dist/src/services/global/actors/getSchemaForModel.js +26 -0
  311. package/dist/src/services/global/actors/getSchemaForModel.js.map +1 -0
  312. package/dist/src/services/global/actors/initialize.d.ts.map +1 -1
  313. package/dist/src/services/global/actors/initialize.js +86 -0
  314. package/dist/src/services/global/actors/initialize.js.map +1 -0
  315. package/dist/src/services/global/actors/savePublishService.js +22 -0
  316. package/dist/src/services/global/actors/savePublishService.js.map +1 -0
  317. package/dist/src/services/global/globalMachine.d.ts +90 -90
  318. package/dist/src/services/global/globalMachine.d.ts.map +1 -1
  319. package/dist/src/services/global/globalMachine.js +246 -0
  320. package/dist/src/services/global/globalMachine.js.map +1 -0
  321. package/dist/src/services/internal/actors/configureFs.js +70 -0
  322. package/dist/src/services/internal/actors/configureFs.js.map +1 -0
  323. package/dist/src/services/internal/actors/loadAppDb.d.ts.map +1 -1
  324. package/dist/src/services/internal/actors/loadAppDb.js +22 -0
  325. package/dist/src/services/internal/actors/loadAppDb.js.map +1 -0
  326. package/dist/src/services/internal/actors/prepareDb.d.ts.map +1 -1
  327. package/dist/src/services/internal/actors/saveConfig.js +88 -0
  328. package/dist/src/services/internal/actors/saveConfig.js.map +1 -0
  329. package/dist/src/services/internal/actors/validateInput.js +34 -0
  330. package/dist/src/services/internal/actors/validateInput.js.map +1 -0
  331. package/dist/src/services/internal/actors/waitForFiles.js +33 -0
  332. package/dist/src/services/internal/actors/waitForFiles.js.map +1 -0
  333. package/dist/src/services/internal/constants.js +85 -0
  334. package/dist/src/services/internal/constants.js.map +1 -0
  335. package/dist/src/services/internal/helpers.js +171 -0
  336. package/dist/src/services/internal/helpers.js.map +1 -0
  337. package/dist/src/services/internal/internalMachine.d.ts +0 -10
  338. package/dist/src/services/internal/internalMachine.d.ts.map +1 -1
  339. package/dist/src/services/internal/internalMachine.js +188 -0
  340. package/dist/src/services/internal/internalMachine.js.map +1 -0
  341. package/dist/src/services/publish/actors/createPublishAttempt.js +14 -0
  342. package/dist/src/services/publish/actors/createPublishAttempt.js.map +1 -0
  343. package/dist/src/services/publish/actors/preparePublishRequestData.js +70 -0
  344. package/dist/src/services/publish/actors/preparePublishRequestData.js.map +1 -0
  345. package/dist/src/services/publish/actors/upload.js +55 -0
  346. package/dist/src/services/publish/actors/upload.js.map +1 -0
  347. package/dist/src/services/publish/actors/validateItemData.js +18 -0
  348. package/dist/src/services/publish/actors/validateItemData.js.map +1 -0
  349. package/dist/src/services/publish/publishMachine.js +71 -0
  350. package/dist/src/services/publish/publishMachine.js.map +1 -0
  351. package/dist/src/stores/eas.js +40 -0
  352. package/dist/src/stores/eas.js.map +1 -0
  353. package/dist/src/stores/modelClass.js +16 -0
  354. package/dist/src/stores/modelClass.js.map +1 -0
  355. package/dist/src/types/index.d.ts.map +1 -1
  356. package/package.json +9 -7
  357. package/dist/Db-CRWMiKY9.js +0 -384
  358. package/dist/Db-CRWMiKY9.js.map +0 -1
  359. package/dist/Db-G5dIgZv-.js +0 -81
  360. package/dist/Db-G5dIgZv-.js.map +0 -1
  361. package/dist/EasClient-CO5puCWa.js +0 -10
  362. package/dist/EasClient-CO5puCWa.js.map +0 -1
  363. package/dist/FileManager-BOixZyex.js +0 -50
  364. package/dist/FileManager-BOixZyex.js.map +0 -1
  365. package/dist/FileManager-gKGTTa4s.js +0 -1045
  366. package/dist/FileManager-gKGTTa4s.js.map +0 -1
  367. package/dist/Item-BD2_tuda.js +0 -34
  368. package/dist/Item-BD2_tuda.js.map +0 -1
  369. package/dist/ItemProperty-CjcrzEmg.js +0 -33
  370. package/dist/ItemProperty-CjcrzEmg.js.map +0 -1
  371. package/dist/QueryClient-W4slRa7O.js.map +0 -1
  372. package/dist/constants-C-6Pg8FW.js +0 -235
  373. package/dist/constants-C-6Pg8FW.js.map +0 -1
  374. package/dist/index-BxAVepOO.js +0 -25
  375. package/dist/index-BxAVepOO.js.map +0 -1
  376. package/dist/index-D-O-gmXo.js +0 -7930
  377. package/dist/index-D-O-gmXo.js.map +0 -1
  378. package/dist/seed.schema.config-DmTl3a9U.js.map +0 -1
  379. package/dist/src/browser/db/index.d.ts +0 -2
  380. package/dist/src/browser/db/index.d.ts.map +0 -1
  381. package/dist/src/db/Db/index.d.ts +0 -5
  382. package/dist/src/db/Db/index.d.ts.map +0 -1
  383. package/dist/src/helpers/EasClient/index.d.ts +0 -5
  384. package/dist/src/helpers/EasClient/index.d.ts.map +0 -1
  385. package/dist/src/helpers/FileManager/index.d.ts +0 -5
  386. package/dist/src/helpers/FileManager/index.d.ts.map +0 -1
  387. package/dist/src/helpers/QueryClient/index.d.ts +0 -5
  388. package/dist/src/helpers/QueryClient/index.d.ts.map +0 -1
  389. package/dist/src/node/index.d.ts +0 -2
  390. package/dist/src/node/index.d.ts.map +0 -1
  391. package/dist/src/services/global/index.d.ts +0 -2
  392. package/dist/src/services/global/index.d.ts.map +0 -1
@@ -0,0 +1,308 @@
1
+ import { BaseFileManager } from '../../helpers/FileManager/BaseFileManager.js';
2
+ import { FileDownloader } from '../workers/FileDownloader.js';
3
+ import { ImageResizer } from '../workers/ImageResizer.js';
4
+ import debug from 'debug';
5
+
6
+ const logger = debug('seedSdk:browser:helpers:FileManager');
7
+ class FileManager extends BaseFileManager {
8
+ static async getFs() {
9
+ const fs = await import('@zenfs/core');
10
+ return fs;
11
+ }
12
+ static async getContentUrlFromPath(path) {
13
+ const fileExists = await this.pathExists(path);
14
+ if (fileExists) {
15
+ const file = await this.readFile(path);
16
+ return URL.createObjectURL(file);
17
+ }
18
+ }
19
+ static async initializeFileSystem() {
20
+ const fs = await this.getFs();
21
+ const { WebAccess } = await import('@zenfs/dom');
22
+ const { configureSingle } = fs;
23
+ const handle = await navigator.storage.getDirectory();
24
+ // await configure({
25
+ // mounts: {
26
+ // '/': {
27
+ // backend: WebAccess,
28
+ // handle,
29
+ // },
30
+ // },
31
+ // disableUpdateOnRead: true,
32
+ // onlySyncOnClose: true,
33
+ // })
34
+ await configureSingle({
35
+ backend: WebAccess,
36
+ handle,
37
+ });
38
+ }
39
+ static async downloadAllFiles({ transactionIds, arweaveHost, excludedTransactions, }) {
40
+ const fileDownloader = new FileDownloader();
41
+ await fileDownloader.downloadAll({ transactionIds, arweaveHost, excludedTransactions });
42
+ }
43
+ static async resizeImage({ filePath, width, height }) {
44
+ const imageResizer = new ImageResizer();
45
+ await imageResizer.resize({ filePath, width, height });
46
+ }
47
+ static async resizeAllImages({ width, height }) {
48
+ const imageResizer = new ImageResizer();
49
+ await imageResizer.resizeAll({ width, height });
50
+ }
51
+ static async pathExists(filePath) {
52
+ try {
53
+ // Access the root directory of OPFS
54
+ const root = await navigator.storage.getDirectory();
55
+ // Split the path into segments
56
+ const parts = filePath.split('/').filter(Boolean);
57
+ let currentDir = root;
58
+ // Traverse each part of the path
59
+ for (let i = 0; i < parts.length; i++) {
60
+ const part = parts[i];
61
+ try {
62
+ const handle = await currentDir.getDirectoryHandle(part, { create: false });
63
+ currentDir = handle; // Move into the directory
64
+ }
65
+ catch (error) {
66
+ try {
67
+ // If it's not a directory, check if it's a file
68
+ await currentDir.getFileHandle(part, { create: false });
69
+ // If we successfully got a file handle and it's the last part, return true
70
+ return i === parts.length - 1;
71
+ }
72
+ catch {
73
+ // Neither a directory nor a file exists
74
+ return false;
75
+ }
76
+ }
77
+ }
78
+ return true; // Directory exists
79
+ }
80
+ catch (error) {
81
+ return false; // Any error means the path does not exist
82
+ }
83
+ }
84
+ static async createDirIfNotExists(filePath) {
85
+ if (!(await this.pathExists(filePath))) {
86
+ try {
87
+ const fs = await this.getFs();
88
+ await fs.promises.mkdir(filePath);
89
+ }
90
+ catch (error) {
91
+ // This is a no-op. We tried to create a directory that already exists.
92
+ logger('Attempted to create a directory that already exists');
93
+ }
94
+ }
95
+ }
96
+ /**
97
+ * Waits for a file to exist at the specified path.
98
+ * @param {string} filePath - The path of the file to check.
99
+ * @param {number} interval - The interval in milliseconds between checks (default: 500ms).
100
+ * @param {number} timeout - The timeout in milliseconds to wait for the file to exist (default: 10s).
101
+ * @returns {Promise<boolean>} - Resolves to true if the file exists within the timeout period, otherwise false.
102
+ */
103
+ static async waitForFile(filePath, interval = 1000, timeout = 60000) {
104
+ const fs = await this.getFs();
105
+ const fsNode = await import('node:fs');
106
+ return new Promise((resolve, reject) => {
107
+ const startTime = Date.now();
108
+ let isBusy = false;
109
+ const cancelableInterval = new CancelableInterval(async (stop) => {
110
+ logger('waitForFile', filePath);
111
+ if (isBusy) {
112
+ return;
113
+ }
114
+ isBusy = true;
115
+ // TODO: Needs to read from OPFS
116
+ if (fs.existsSync(filePath) && fsNode.existsSync(filePath)) {
117
+ stop();
118
+ resolve(true);
119
+ }
120
+ const pathExists = await this.pathExists(filePath);
121
+ if (pathExists) {
122
+ stop();
123
+ resolve(true);
124
+ }
125
+ if (Date.now() - startTime >= timeout) {
126
+ stop();
127
+ reject(new Error('Timeout exceeded while waiting for file'));
128
+ }
129
+ isBusy = false;
130
+ }, interval);
131
+ cancelableInterval.start();
132
+ // const _interval = setInterval(async () => {
133
+ // logger('waitForFile', filePath)
134
+ // if (isBusy) {
135
+ // return
136
+ // }
137
+ // isBusy = true
138
+ // // TODO: Needs to read from OPFS
139
+ // if (fs.existsSync(filePath) && fsNode.existsSync(filePath)) {
140
+ // clearInterval(_interval)
141
+ // resolve(true)
142
+ // }
143
+ // const pathExists = await this.pathExists(filePath)
144
+ // if (pathExists) {
145
+ // clearInterval(_interval)
146
+ // resolve(true)
147
+ // }
148
+ // if (Date.now() - startTime >= timeout) {
149
+ // clearInterval(_interval)
150
+ // reject(new Error('Timeout exceeded while waiting for file'))
151
+ // }
152
+ // isBusy = false
153
+ // }, interval)
154
+ // retry(
155
+ // {
156
+ // times: Math.ceil(timeout / interval),
157
+ // interval: interval,
158
+ // },
159
+ // (callback: Function) => {
160
+ // if (fs.existsSync(filePath) && fsNode.existsSync(filePath)) {
161
+ // return callback(null, true) // File exists, finish with success
162
+ // }
163
+ // if (Date.now() - startTime >= timeout) {
164
+ // return callback(new Error('Timeout exceeded while waiting for file'))
165
+ // }
166
+ // callback(new Error('File does not exist yet')) // Retry with this error
167
+ // },
168
+ // (err: Error, result: boolean) => {
169
+ // if (err) {
170
+ // return resolve(false) // Resolve as false if timeout or error occurs
171
+ // }
172
+ // resolve(result) // Resolve as true if file exists
173
+ // },
174
+ // )
175
+ });
176
+ }
177
+ static async saveFile(filePath, content) {
178
+ try {
179
+ // Get a handle to the OPFS root directory
180
+ const root = await navigator.storage.getDirectory();
181
+ // Split the file path into directory and file name
182
+ const pathParts = filePath.split('/');
183
+ const fileName = pathParts.pop();
184
+ if (!fileName)
185
+ throw new Error('Invalid file path');
186
+ // Traverse directories and create them if they don't exist
187
+ let currentDir = root;
188
+ for (const part of pathParts) {
189
+ if (part !== '') {
190
+ currentDir = await currentDir.getDirectoryHandle(part, { create: true });
191
+ }
192
+ }
193
+ // Get the file handle and create the file if it doesn't exist
194
+ const fileHandle = await currentDir.getFileHandle(fileName, { create: true });
195
+ // Create a writable stream and write the content
196
+ const writable = await fileHandle.createWritable();
197
+ if (typeof content === 'string' || content instanceof Uint8Array) {
198
+ await writable.write(content);
199
+ }
200
+ else if (content instanceof Blob) {
201
+ await writable.write(content);
202
+ }
203
+ else if (content instanceof ArrayBuffer) {
204
+ await writable.write(new Blob([content]));
205
+ }
206
+ else {
207
+ throw new Error('Unsupported content type');
208
+ }
209
+ await writable.close();
210
+ logger(`File written successfully: ${filePath}`);
211
+ }
212
+ catch (error) {
213
+ console.error(`Error writing to OPFS: ${error.message}`);
214
+ }
215
+ }
216
+ static async readFile(filePath) {
217
+ try {
218
+ // Get a handle to the OPFS root directory
219
+ const root = await navigator.storage.getDirectory();
220
+ // Split the file path into directory and file name
221
+ const pathParts = filePath.split('/');
222
+ const fileName = pathParts.pop();
223
+ if (!fileName)
224
+ throw new Error('Invalid file path');
225
+ // Traverse directories to reach the target file
226
+ let currentDir = root;
227
+ for (const part of pathParts) {
228
+ if (part !== '') {
229
+ currentDir = await currentDir.getDirectoryHandle(part, { create: false });
230
+ }
231
+ }
232
+ // Get the file handle
233
+ const fileHandle = await currentDir.getFileHandle(fileName, { create: false });
234
+ // Get the file and read it as an ArrayBuffer
235
+ return await fileHandle.getFile();
236
+ }
237
+ catch (error) {
238
+ console.error(`Error reading from OPFS: ${error.message}`);
239
+ throw error;
240
+ }
241
+ }
242
+ static async readFileAsBuffer(filePath) {
243
+ try {
244
+ // Get the file and read it as an ArrayBuffer
245
+ const file = await this.readFile(filePath);
246
+ const arrayBuffer = await file.arrayBuffer();
247
+ // Convert ArrayBuffer to Buffer
248
+ return Buffer.from(arrayBuffer);
249
+ }
250
+ catch (error) {
251
+ console.error(`Error reading from OPFS: ${error.message}`);
252
+ throw error;
253
+ }
254
+ }
255
+ static async readFileAsString(filePath) {
256
+ const buffer = await this.readFileAsBuffer(filePath);
257
+ return buffer.toString('utf-8');
258
+ }
259
+ }
260
+ class CancelableInterval {
261
+ constructor(task, interval) {
262
+ this.task = task;
263
+ this.interval = interval;
264
+ this.intervalId = null;
265
+ this.currentTaskAbortController = null;
266
+ }
267
+ start() {
268
+ this.intervalId = window.setInterval(async () => {
269
+ if (this.currentTaskAbortController) {
270
+ // Cancel the previous running task
271
+ this.currentTaskAbortController.abort();
272
+ }
273
+ // Create a new abort controller for the current task
274
+ this.currentTaskAbortController = new AbortController();
275
+ const signal = this.currentTaskAbortController.signal;
276
+ try {
277
+ await this.taskWithCancellation(signal);
278
+ }
279
+ catch (error) {
280
+ if (error instanceof DOMException && error.name === 'AbortError') {
281
+ console.log('Previous task was canceled.');
282
+ }
283
+ else {
284
+ console.error('Task error:', error);
285
+ }
286
+ this.stop();
287
+ }
288
+ }, this.interval);
289
+ }
290
+ async taskWithCancellation(signal) {
291
+ await this.task(() => this.stop());
292
+ if (signal.aborted) {
293
+ throw new DOMException('Task was aborted', 'AbortError');
294
+ }
295
+ }
296
+ stop() {
297
+ if (this.intervalId !== null) {
298
+ clearInterval(this.intervalId);
299
+ this.intervalId = null;
300
+ }
301
+ if (this.currentTaskAbortController) {
302
+ this.currentTaskAbortController.abort();
303
+ }
304
+ }
305
+ }
306
+
307
+ export { FileManager };
308
+ //# sourceMappingURL=FileManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileManager.js","sources":["../../../../../src/browser/helpers/FileManager.ts"],"sourcesContent":["import { BaseFileManager } from '@/helpers/FileManager/BaseFileManager'\nimport { FileDownloader } from '../workers/FileDownloader'\nimport { ImageResizer } from '../workers/ImageResizer'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:browser:helpers:FileManager')\n\nclass FileManager extends BaseFileManager {\n\n static async getFs() {\n const fs = await import('@zenfs/core')\n return fs\n }\n\n static async getContentUrlFromPath( path: string ): Promise<string | undefined> {\n\n const fileExists = await this.pathExists(path)\n if ( fileExists ) {\n const file = await this.readFile(path)\n return URL.createObjectURL(file)\n }\n }\n\n static async initializeFileSystem(): Promise<void> {\n\n const fs = await this.getFs()\n const {WebAccess} = await import('@zenfs/dom')\n const {configureSingle} = fs\n\n const handle = await navigator.storage.getDirectory()\n // await configure({\n // mounts: {\n // '/': {\n // backend: WebAccess,\n // handle,\n // },\n // },\n // disableUpdateOnRead: true,\n // onlySyncOnClose: true,\n // })\n await configureSingle({\n backend: WebAccess,\n handle,\n })\n }\n\n static async downloadAllFiles( {\n transactionIds,\n arweaveHost,\n excludedTransactions,\n }: DownloadAllFilesParams ): Promise<void> {\n const fileDownloader = new FileDownloader()\n await fileDownloader.downloadAll({ transactionIds, arweaveHost, excludedTransactions })\n }\n\n static async resizeImage( { filePath, width, height }: ResizeImageParams ): Promise<void> {\n const imageResizer = new ImageResizer()\n await imageResizer.resize({ filePath, width, height })\n }\n\n static async resizeAllImages( { width, height }: ResizeAllImagesParams ): Promise<void> {\n const imageResizer = new ImageResizer()\n await imageResizer.resizeAll({ width, height })\n }\n\n static async pathExists(filePath: string): Promise<boolean> {\n try {\n // Access the root directory of OPFS\n const root = await navigator.storage.getDirectory();\n \n // Split the path into segments\n const parts = filePath.split('/').filter(Boolean);\n let currentDir = root;\n\n // Traverse each part of the path\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n try {\n const handle = await currentDir.getDirectoryHandle(part, { create: false });\n currentDir = handle; // Move into the directory\n } catch (error) {\n try {\n // If it's not a directory, check if it's a file\n await currentDir.getFileHandle(part, { create: false });\n // If we successfully got a file handle and it's the last part, return true\n return i === parts.length - 1;\n } catch {\n // Neither a directory nor a file exists\n return false;\n }\n }\n }\n\n return true; // Directory exists\n } catch (error) {\n return false; // Any error means the path does not exist\n }\n }\n\n static async createDirIfNotExists(filePath: string): Promise<void> {\n if (!(await this.pathExists(filePath))) {\n try {\n const fs = await this.getFs()\n await fs.promises.mkdir(filePath)\n } catch (error) {\n // This is a no-op. We tried to create a directory that already exists.\n logger('Attempted to create a directory that already exists')\n }\n }\n }\n\n /**\n * Waits for a file to exist at the specified path.\n * @param {string} filePath - The path of the file to check.\n * @param {number} interval - The interval in milliseconds between checks (default: 500ms).\n * @param {number} timeout - The timeout in milliseconds to wait for the file to exist (default: 10s).\n * @returns {Promise<boolean>} - Resolves to true if the file exists within the timeout period, otherwise false.\n */\n static async waitForFile(filePath: string, interval: number = 1000, timeout: number = 60000): Promise<boolean> {\n\n const fs = await this.getFs()\n const fsNode = await import('node:fs')\n\n return new Promise((resolve, reject) => {\n const startTime = Date.now()\n \n let isBusy = false\n\n const cancelableInterval = new CancelableInterval(async (stop) => {\n logger('waitForFile', filePath)\n if (isBusy) {\n return\n }\n isBusy = true\n // TODO: Needs to read from OPFS\n if (fs.existsSync(filePath) && fsNode.existsSync(filePath)) {\n stop()\n resolve(true)\n }\n\n const pathExists = await this.pathExists(filePath)\n if (pathExists) {\n stop()\n resolve(true)\n }\n\n if (Date.now() - startTime >= timeout) {\n stop()\n reject(new Error('Timeout exceeded while waiting for file'))\n }\n isBusy = false\n }, interval)\n\n cancelableInterval.start()\n \n // const _interval = setInterval(async () => {\n // logger('waitForFile', filePath)\n // if (isBusy) {\n // return\n // }\n // isBusy = true\n // // TODO: Needs to read from OPFS\n // if (fs.existsSync(filePath) && fsNode.existsSync(filePath)) {\n // clearInterval(_interval)\n // resolve(true)\n // }\n\n // const pathExists = await this.pathExists(filePath)\n // if (pathExists) {\n // clearInterval(_interval)\n // resolve(true)\n // }\n\n // if (Date.now() - startTime >= timeout) {\n // clearInterval(_interval)\n // reject(new Error('Timeout exceeded while waiting for file'))\n // }\n // isBusy = false\n // }, interval)\n \n // retry(\n // {\n // times: Math.ceil(timeout / interval),\n // interval: interval,\n // },\n // (callback: Function) => {\n // if (fs.existsSync(filePath) && fsNode.existsSync(filePath)) {\n // return callback(null, true) // File exists, finish with success\n // }\n // if (Date.now() - startTime >= timeout) {\n // return callback(new Error('Timeout exceeded while waiting for file'))\n // }\n // callback(new Error('File does not exist yet')) // Retry with this error\n // },\n // (err: Error, result: boolean) => {\n // if (err) {\n // return resolve(false) // Resolve as false if timeout or error occurs\n // }\n // resolve(result) // Resolve as true if file exists\n // },\n // )\n })\n }\n\n static async saveFile(filePath: string, content: string | Blob | ArrayBuffer): Promise<void> {\n try {\n // Get a handle to the OPFS root directory\n const root = await navigator.storage.getDirectory();\n \n // Split the file path into directory and file name\n const pathParts = filePath.split('/');\n const fileName = pathParts.pop();\n if (!fileName) throw new Error('Invalid file path');\n\n // Traverse directories and create them if they don't exist\n let currentDir = root;\n for (const part of pathParts) {\n if (part !== '') {\n currentDir = await currentDir.getDirectoryHandle(part, { create: true });\n }\n }\n\n // Get the file handle and create the file if it doesn't exist\n const fileHandle = await currentDir.getFileHandle(fileName, { create: true });\n\n // Create a writable stream and write the content\n const writable = await fileHandle.createWritable();\n \n if (typeof content === 'string' || content instanceof Uint8Array) {\n await writable.write(content);\n } else if (content instanceof Blob) {\n await writable.write(content);\n } else if (content instanceof ArrayBuffer) {\n await writable.write(new Blob([content]));\n } else {\n throw new Error('Unsupported content type');\n }\n\n await writable.close();\n logger(`File written successfully: ${filePath}`);\n } catch (error) {\n console.error(`Error writing to OPFS: ${error.message}`);\n }\n }\n\n static async readFile(filePath: string): Promise<File> {\n try {\n // Get a handle to the OPFS root directory\n const root = await navigator.storage.getDirectory();\n \n // Split the file path into directory and file name\n const pathParts = filePath.split('/');\n const fileName = pathParts.pop();\n if (!fileName) throw new Error('Invalid file path');\n \n // Traverse directories to reach the target file\n let currentDir = root;\n for (const part of pathParts) {\n if (part !== '') {\n currentDir = await currentDir.getDirectoryHandle(part, { create: false });\n }\n }\n \n // Get the file handle\n const fileHandle = await currentDir.getFileHandle(fileName, { create: false });\n \n // Get the file and read it as an ArrayBuffer\n return await fileHandle.getFile();\n } catch (error) {\n console.error(`Error reading from OPFS: ${error.message}`);\n throw error;\n }\n }\n\n static async readFileAsBuffer(filePath: string): Promise<Buffer> {\n try {\n\n // Get the file and read it as an ArrayBuffer\n const file = await this.readFile(filePath)\n const arrayBuffer = await file.arrayBuffer();\n\n // Convert ArrayBuffer to Buffer\n return Buffer.from(arrayBuffer);\n } catch (error) {\n console.error(`Error reading from OPFS: ${error.message}`);\n throw error;\n }\n }\n\n static async readFileAsString(filePath: string): Promise<string> {\n const buffer = await this.readFileAsBuffer(filePath)\n return buffer.toString('utf-8')\n }\n}\n\ntype AsyncTask = (stop: () => void) => Promise<void>\n\n\nclass CancelableInterval {\n private intervalId: number | null = null;\n private currentTaskAbortController: AbortController | null = null;\n\n constructor(private task: AsyncTask, private interval: number) {}\n\n start() {\n this.intervalId = window.setInterval(async () => {\n if (this.currentTaskAbortController) {\n // Cancel the previous running task\n this.currentTaskAbortController.abort();\n }\n\n // Create a new abort controller for the current task\n this.currentTaskAbortController = new AbortController();\n const signal = this.currentTaskAbortController.signal;\n\n try {\n await this.taskWithCancellation(signal);\n } catch (error) {\n if (error instanceof DOMException && error.name === 'AbortError') {\n console.log('Previous task was canceled.');\n } else {\n console.error('Task error:', error);\n }\n this.stop()\n }\n }, this.interval);\n }\n\n private async taskWithCancellation(signal: AbortSignal) {\n await this.task(() => this.stop())\n if (signal.aborted) {\n throw new DOMException('Task was aborted', 'AbortError');\n }\n }\n\n stop() {\n if (this.intervalId !== null) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n if (this.currentTaskAbortController) {\n this.currentTaskAbortController.abort();\n }\n }\n}\n\n\nexport { FileManager }\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"QueryClient.d.ts","sourceRoot":"","sources":["../../../../src/browser/helpers/QueryClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAG,MAAM,uBAAuB,CAAC;AAEzE,cAAM,WAAY,SAAQ,eAAe;IACvC,MAAM,CAAC,cAAc;CAWtB;AAID,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"QueryClient.d.ts","sourceRoot":"","sources":["../../../../src/browser/helpers/QueryClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,OAAO,EAAe,WAAW,IAAI,gBAAgB,EAAG,MAAM,uBAAuB,CAAC;AAEtF,cAAM,WAAY,SAAQ,eAAe;IACvC,MAAM,CAAC,cAAc;CAWtB;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -1,7 +1,5 @@
1
- import { b as BaseQueryClient } from './constants-C-6Pg8FW.js';
1
+ import { BaseQueryClient } from '../../helpers/QueryClient/BaseQueryClient.js';
2
2
  import { QueryClient as QueryClient$1 } from '@tanstack/react-query';
3
- import 'graphql-request';
4
- import '@ethereum-attestation-service/eas-sdk';
5
3
 
6
4
  class QueryClient extends BaseQueryClient {
7
5
  static getQueryClient() {
@@ -16,7 +14,6 @@ class QueryClient extends BaseQueryClient {
16
14
  });
17
15
  }
18
16
  }
19
- BaseQueryClient.setPlatformClass(QueryClient);
20
17
 
21
18
  export { QueryClient };
22
- //# sourceMappingURL=QueryClient-W4slRa7O.js.map
19
+ //# sourceMappingURL=QueryClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryClient.js","sources":["../../../../../src/browser/helpers/QueryClient.ts"],"sourcesContent":["import { BaseQueryClient } from \"@/helpers/QueryClient/BaseQueryClient\";\nimport { ARWEAVE_ENDPOINT } from \"@/services/internal/constants\";\nimport { NetworkMode, QueryClient as ReactQueryClient, } from \"@tanstack/react-query\";\n\nclass QueryClient extends BaseQueryClient {\n static getQueryClient() {\n // Implement the browser-specific logic here\n return new ReactQueryClient({\n defaultOptions: {\n queries: {\n networkMode: 'offlineFirst' as NetworkMode,\n gcTime: 1000 * 60 * 60 * 24, // 24 hours\n },\n },\n })\n }\n}\n\nexport { QueryClient };\n"],"names":["ReactQueryClient"],"mappings":";;;AAIA,MAAM,WAAY,SAAQ,eAAe,CAAA;AACvC,IAAA,OAAO,cAAc,GAAA;;QAEnB,OAAO,IAAIA,aAAgB,CAAC;AAC1B,YAAA,cAAc,EAAE;AACd,gBAAA,OAAO,EAAE;AACP,oBAAA,WAAW,EAAE,cAA6B;oBAC1C,MAAM,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AAC5B,iBAAA;AACF,aAAA;AACF,SAAA,CAAC;;AAEL;;;;"}
@@ -1,4 +1,5 @@
1
- export * from './db';
1
+ export * from './db/Db';
2
+ export * from './db/sqlWasmClient';
2
3
  export * from './react';
3
4
  export * from './Item';
4
5
  export * from './ItemProperty';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"AAGA,cAAc,MAAM,CAAA;AACpB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"AAGA,cAAc,SAAS,CAAA;AACvB,cAAc,oBAAoB,CAAA;AAClC,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,6 @@
1
+ import 'react';
2
+ import '../../services/global/globalMachine.js';
3
+ import debug from 'debug';
4
+
5
+ debug('seedSdk:react:db');
6
+ //# sourceMappingURL=db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sources":["../../../../../src/browser/react/db.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react'\nimport { Subscription } from 'xstate'\nimport { getGlobalService } from '@/services/global/globalMachine'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:react:db')\n\nexport const useDbsAreReady = () => {\n const [dbsAreReady, setDbsAreReady] = useState(false)\n\n const update = useCallback(() => {\n if (dbsAreReady) {\n return\n }\n setDbsAreReady(true)\n }, [])\n\n useEffect(() => {\n let globalSubscription: Subscription | undefined\n let internalSubscription: Subscription | undefined\n\n const _waitForDbs = async (): Promise<void> => {\n const globalService = getGlobalService()\n const internalService =\n globalService.getSnapshot().context.internalService\n if (!internalService) {\n logger('[useDbsAreReady] [useEffect] no internalService')\n\n globalSubscription = globalService.subscribe(({ context }) => {\n if (!internalSubscription && context && context.internalService) {\n globalSubscription?.unsubscribe()\n internalSubscription = context.internalService.subscribe(\n (snapshot) => {\n if (snapshot.value === 'ready') {\n update()\n internalSubscription?.unsubscribe()\n }\n },\n )\n }\n })\n\n return\n }\n const currentState = internalService.getSnapshot().value\n if (currentState === 'ready') {\n update()\n return\n }\n internalSubscription = internalService.subscribe((snapshot) => {\n if (snapshot.value === 'ready') {\n update()\n internalSubscription?.unsubscribe()\n }\n })\n }\n\n _waitForDbs()\n\n return () => {\n if (globalSubscription) {\n globalSubscription.unsubscribe()\n }\n\n if (internalSubscription) {\n internalSubscription.unsubscribe()\n }\n }\n }, [])\n\n return {\n dbsAreReady,\n }\n}\n"],"names":[],"mappings":";;;;AAKe,KAAK,CAAC,kBAAkB"}
@@ -0,0 +1,260 @@
1
+ import { useRef, useCallback, useEffect, useState } from 'react';
2
+ import { createNewItem } from '../../db/write/createNewItem.js';
3
+ import { Item } from '../Item/Item.js';
4
+ import { eventEmitter } from '../../eventBus.js';
5
+ import { useImmer } from 'use-immer';
6
+ import { orderBy } from 'lodash-es';
7
+ import '../../helpers/index.js';
8
+ import { getAreItemEventHandlersReady } from '../../events/item/index.js';
9
+ import debug from 'debug';
10
+ import { useGlobalServiceStatus } from './services.js';
11
+ import { useSelector } from '@xstate/react';
12
+
13
+ const logger = debug('seedSdk:react:item');
14
+ const useItem = ({ modelName, seedLocalId, seedUid }) => {
15
+ // const [itemSubscription, setItemSubscription] = useState<
16
+ // Subscription | undefined
17
+ // >()
18
+ //
19
+ // const queryClient = useQueryClient()
20
+ //
21
+ // const { data: item } = useQuery({
22
+ // queryKey: ['item', modelName, seedLocalId, seedUid],
23
+ // queryFn: async () =>
24
+ // Item.find({
25
+ // modelName,
26
+ // seedLocalId,
27
+ // seedUid,
28
+ // }),
29
+ // networkMode: 'offlineFirst',
30
+ // })
31
+ //
32
+ // const updateItem = async (newItem: Item<any>) => {
33
+ // queryClient.setQueryData(['item', modelName, seedLocalId, seedUid], newItem)
34
+ // }
35
+ //
36
+ // useEffect(() => {
37
+ // if (item && item.subscribe && !itemSubscription) {
38
+ // const subscription = item.subscribe(async (_) => {
39
+ // const newItem = await Item.find({ modelName, seedLocalId, seedUid })
40
+ // if (!newItem) {
41
+ // logger(
42
+ // '[useItem] [itemSubscription] no item found',
43
+ // modelName,
44
+ // seedLocalId,
45
+ // )
46
+ // return
47
+ // }
48
+ // updateItem(newItem)
49
+ // })
50
+ // setItemSubscription(subscription)
51
+ // }
52
+ //
53
+ // return () => {
54
+ // itemSubscription?.unsubscribe()
55
+ // }
56
+ // }, [item, itemSubscription])
57
+ //
58
+ // return {
59
+ // item,
60
+ // itemData: {},
61
+ // itemStatus: undefined,
62
+ // }
63
+ const [itemData, setItemData] = useImmer({});
64
+ const [item, setItem] = useState();
65
+ const [itemSubscription, setItemSubscription] = useState();
66
+ const { status, internalStatus } = useGlobalServiceStatus();
67
+ const isReadingDb = useRef(false);
68
+ const itemStatus = useSelector(item?.getService(), (snapshot) => snapshot?.value);
69
+ const updateItem = useCallback((newItem) => {
70
+ setItemData((draft) => {
71
+ Object.keys(newItem.properties).forEach((propertyName) => {
72
+ const value = newItem[propertyName];
73
+ draft[propertyName] = value;
74
+ });
75
+ });
76
+ }, [setItemData]);
77
+ const readFromDb = useCallback(async () => {
78
+ if (isReadingDb.current ||
79
+ internalStatus !== 'ready' ||
80
+ (!seedUid && !seedLocalId)) {
81
+ return;
82
+ }
83
+ isReadingDb.current = true;
84
+ const foundItem = await Item.find({
85
+ modelName,
86
+ seedLocalId,
87
+ seedUid,
88
+ });
89
+ if (!foundItem) {
90
+ logger('[useItem] [getItemFromDb] no item found', modelName, seedLocalId);
91
+ isReadingDb.current = false;
92
+ return;
93
+ }
94
+ setItem(() => foundItem);
95
+ updateItem(foundItem);
96
+ isReadingDb.current = false;
97
+ }, [internalStatus]);
98
+ const listenerRef = useRef(readFromDb);
99
+ useEffect(() => {
100
+ listenerRef.current = readFromDb;
101
+ }, [readFromDb]);
102
+ useEffect(() => {
103
+ if (internalStatus === 'ready') {
104
+ listenerRef.current();
105
+ }
106
+ }, [internalStatus, status]);
107
+ useEffect(() => {
108
+ if (item && !itemSubscription) {
109
+ const subscription = item.subscribe(async (_) => {
110
+ const newItem = await Item.find({ modelName, seedLocalId, seedUid });
111
+ if (!newItem) {
112
+ logger('[useItem] [itemSubscription] no item found', modelName, seedLocalId);
113
+ return;
114
+ }
115
+ updateItem(newItem);
116
+ setItem(() => newItem);
117
+ });
118
+ setItemSubscription(subscription);
119
+ }
120
+ return () => {
121
+ itemSubscription?.unsubscribe();
122
+ };
123
+ }, [item, itemSubscription]);
124
+ useEffect(() => {
125
+ const seedId = seedUid || seedLocalId;
126
+ eventEmitter.addListener(`item.${modelName}.${seedId}.update`, () => {
127
+ listenerRef.current();
128
+ });
129
+ return () => {
130
+ eventEmitter.removeListener(`item.${modelName}.${seedId}.update`);
131
+ };
132
+ }, []);
133
+ return {
134
+ item,
135
+ itemData,
136
+ itemStatus,
137
+ };
138
+ };
139
+ const useItems = ({ modelName, deleted = false }) => {
140
+ const [items, setItems] = useImmer([]);
141
+ const { status, internalStatus } = useGlobalServiceStatus();
142
+ const modelNameRef = useRef(modelName);
143
+ const isReadingDb = useRef(false);
144
+ const readFromDb = useCallback(async () => {
145
+ if (isReadingDb.current || internalStatus !== 'ready') {
146
+ return;
147
+ }
148
+ isReadingDb.current = true;
149
+ const allItems = await Item.all(modelNameRef.current, deleted);
150
+ setItems(() => []);
151
+ setItems(() => allItems);
152
+ isReadingDb.current = false;
153
+ }, [internalStatus]);
154
+ const listenerRef = useRef(readFromDb);
155
+ useEffect(() => {
156
+ listenerRef.current = readFromDb;
157
+ }, [readFromDb]);
158
+ useEffect(() => {
159
+ if (internalStatus === 'ready') {
160
+ listenerRef.current();
161
+ }
162
+ }, [internalStatus, status]);
163
+ useEffect(() => {
164
+ eventEmitter.addListener('item.requestAll', (event) => {
165
+ if (!event ||
166
+ !event.modelName ||
167
+ event.modelName !== modelNameRef.current) {
168
+ return;
169
+ }
170
+ listenerRef.current();
171
+ });
172
+ readFromDb();
173
+ return () => {
174
+ eventEmitter.removeListener('item.requestAll', readFromDb);
175
+ };
176
+ }, []);
177
+ return {
178
+ items: orderBy(items, [
179
+ (item) => item.lastVersionPublishedAt ||
180
+ item.attestationCreatedAt ||
181
+ item.createdAt,
182
+ ], ['desc']),
183
+ isReadingDb: isReadingDb.current,
184
+ };
185
+ };
186
+ const useItemIsReady = () => {
187
+ const [itemListenersReady, setItemListenersReady] = useState(false);
188
+ const itemEventListenersHandler = useCallback((_) => {
189
+ setItemListenersReady(true);
190
+ }, []);
191
+ useEffect(() => {
192
+ const areReady = getAreItemEventHandlersReady();
193
+ if (areReady) {
194
+ itemEventListenersHandler(true);
195
+ }
196
+ eventEmitter.addListener('item.events.setupAllItemsEventHandlers', itemEventListenersHandler);
197
+ return () => {
198
+ eventEmitter.removeListener('item.events.setupAllItemsEventHandlers');
199
+ };
200
+ }, []);
201
+ return {
202
+ isReady: itemListenersReady,
203
+ };
204
+ };
205
+ const useCreateItem = (modelName) => {
206
+ const [isCreatingItem, setIsCreatingItem] = useState(false);
207
+ const { isReady } = useItemIsReady();
208
+ const createItem = useCallback(async (itemData) => {
209
+ if (!isReady) {
210
+ console.error(`[useCreateItem] [createItem] called before listeners are ready`, itemData);
211
+ return;
212
+ }
213
+ if (isCreatingItem) {
214
+ // TODO: should we setup a queue for this?
215
+ console.error(`[useCreateItem] [createItem] already creating item`, itemData);
216
+ return;
217
+ }
218
+ setIsCreatingItem(true);
219
+ const { seedLocalId } = await createNewItem({ modelName, ...itemData });
220
+ await Item.find({ modelName, seedLocalId });
221
+ eventEmitter.emit('item.requestAll', { modelName });
222
+ setIsCreatingItem(false);
223
+ }, [isCreatingItem, isReady]);
224
+ return {
225
+ createItem,
226
+ isCreatingItem,
227
+ };
228
+ };
229
+ const usePublishItem = () => {
230
+ const [isPublishing, setIsPublishing] = useState(false);
231
+ const isLocked = useRef(false);
232
+ const publishItem = useCallback(async (item, callback) => {
233
+ if (!item || isLocked.current) {
234
+ return;
235
+ }
236
+ isLocked.current = true;
237
+ setIsPublishing(true);
238
+ try {
239
+ const uploads = await item.getPublishUploads();
240
+ const payload = await item.getPublishPayload(uploads);
241
+ if (callback) {
242
+ callback();
243
+ }
244
+ }
245
+ catch (e) {
246
+ if (callback) {
247
+ callback(e);
248
+ }
249
+ }
250
+ setIsPublishing(false);
251
+ isLocked.current = false;
252
+ }, []);
253
+ return {
254
+ publishItem,
255
+ isPublishing,
256
+ };
257
+ };
258
+
259
+ export { useCreateItem, useItem, useItemIsReady, useItems, usePublishItem };
260
+ //# sourceMappingURL=item.js.map