@seedprotocol/sdk 0.4.32 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/dist/BasePathResolver-BDgc7c4T.js +485 -0
  2. package/dist/BasePathResolver-BDgc7c4T.js.map +1 -0
  3. package/dist/{ModelProperty-e_hXSFvf.js → ModelProperty-D-ysg8zA.js} +37 -43
  4. package/dist/ModelProperty-D-ysg8zA.js.map +1 -0
  5. package/dist/{Schema-DonRkUOJ.js → Schema-CyCftnKI.js} +40 -40
  6. package/dist/{Schema-DonRkUOJ.js.map → Schema-CyCftnKI.js.map} +1 -1
  7. package/dist/{SchemaValidationService-DcmfhQae.js → SchemaValidationService-POM6jHbJ.js} +9 -5
  8. package/dist/{SchemaValidationService-DcmfhQae.js.map → SchemaValidationService-POM6jHbJ.js.map} +1 -1
  9. package/dist/{backfillMetadataPropertyIds-CKTfvFgQ.js → backfillMetadataPropertyIds-DzZw57iJ.js} +3 -11
  10. package/dist/{backfillMetadataPropertyIds-CKTfvFgQ.js.map → backfillMetadataPropertyIds-DzZw57iJ.js.map} +1 -1
  11. package/dist/cjs/{ModelProperty-BQYU5hPQ.js → ModelProperty-CmuGJvyi.js} +25 -26
  12. package/dist/cjs/{ModelProperty-BQYU5hPQ.js.map → ModelProperty-CmuGJvyi.js.map} +1 -1
  13. package/dist/cjs/{Schema-BcRHcQ0W.js → Schema-gpFnZMhB.js} +28 -29
  14. package/dist/cjs/{Schema-BcRHcQ0W.js.map → Schema-gpFnZMhB.js.map} +1 -1
  15. package/dist/cjs/{SchemaValidationService-CQNDgyZl.js → SchemaValidationService-E3xTSRai.js} +9 -10
  16. package/dist/cjs/{SchemaValidationService-CQNDgyZl.js.map → SchemaValidationService-E3xTSRai.js.map} +1 -1
  17. package/dist/cjs/{backfillMetadataPropertyIds-Dn4oVmEv.js → backfillMetadataPropertyIds-_bivrvRs.js} +11 -12
  18. package/dist/cjs/{backfillMetadataPropertyIds-Dn4oVmEv.js.map → backfillMetadataPropertyIds-_bivrvRs.js.map} +1 -1
  19. package/dist/cjs/eas-BwDKJmlb.js +112 -0
  20. package/dist/cjs/eas-BwDKJmlb.js.map +1 -0
  21. package/dist/cjs/{getItem-DpnPrzl3.js → getItem-MShQw3sz.js} +11 -12
  22. package/dist/cjs/{getItem-DpnPrzl3.js.map → getItem-MShQw3sz.js.map} +1 -1
  23. package/dist/cjs/{getPublishPayload-CGKMEL3H.js → getPublishPayload-C1nOOXp_.js} +93 -83
  24. package/dist/cjs/getPublishPayload-C1nOOXp_.js.map +1 -0
  25. package/dist/cjs/{getPublishUploads-DeI0f2UN.js → getPublishUploads-BjgxgrKD.js} +17 -18
  26. package/dist/cjs/{getPublishUploads-DeI0f2UN.js.map → getPublishUploads-BjgxgrKD.js.map} +1 -1
  27. package/dist/cjs/{getSegmentedItemProperties-BgS_FhAx.js → getSegmentedItemProperties-Cuw7wcxb.js} +64 -15
  28. package/dist/cjs/getSegmentedItemProperties-Cuw7wcxb.js.map +1 -0
  29. package/dist/cjs/{index-BnAqr2le.js → index-9Z2FOvLD.js} +12 -13
  30. package/dist/cjs/index-9Z2FOvLD.js.map +1 -0
  31. package/dist/cjs/{index-ByozbTn_.js → index-vk2DeF2D.js} +1237 -3235
  32. package/dist/cjs/index-vk2DeF2D.js.map +1 -0
  33. package/dist/cjs/index.browser-BSf8HpnU.js +22 -0
  34. package/dist/cjs/index.browser-BSf8HpnU.js.map +1 -0
  35. package/dist/cjs/{ownership-CsWuaNfH.js → ownership-DhWda0J9.js} +11 -25
  36. package/dist/cjs/{ownership-CsWuaNfH.js.map → ownership-DhWda0J9.js.map} +1 -1
  37. package/dist/cjs/{property-CeR45LMx.js → property-D3Ww2_Qh.js} +13 -14
  38. package/dist/cjs/{property-CeR45LMx.js.map → property-D3Ww2_Qh.js.map} +1 -1
  39. package/dist/cjs/{syncDbWithEas-CA2Lum5V.js → syncDbWithEas-Dht3_7UD.js} +26 -39
  40. package/dist/cjs/syncDbWithEas-Dht3_7UD.js.map +1 -0
  41. package/dist/configurePlatform-R5neRbQ9.js +27 -0
  42. package/dist/configurePlatform-R5neRbQ9.js.map +1 -0
  43. package/dist/constants-B5S5JPDK.js +660 -0
  44. package/dist/constants-B5S5JPDK.js.map +1 -0
  45. package/dist/constants-DMHTYMgJ.js +120 -0
  46. package/dist/constants-DMHTYMgJ.js.map +1 -0
  47. package/dist/db-Cvh84NY7.js +1972 -0
  48. package/dist/db-Cvh84NY7.js.map +1 -0
  49. package/dist/eas-D9b7z2Wn.js +68 -0
  50. package/dist/eas-D9b7z2Wn.js.map +1 -0
  51. package/dist/{getItem-GOXWo_Iy.js → getItem-B81V3m4S.js} +10 -6
  52. package/dist/{getItem-GOXWo_Iy.js.map → getItem-B81V3m4S.js.map} +1 -1
  53. package/dist/{getPublishPayload-D16enahU.js → getPublishPayload-CNYsn8-6.js} +87 -74
  54. package/dist/getPublishPayload-CNYsn8-6.js.map +1 -0
  55. package/dist/{getPublishUploads-wGqH19UY.js → getPublishUploads-D9rPHkB7.js} +14 -10
  56. package/dist/{getPublishUploads-wGqH19UY.js.map → getPublishUploads-D9rPHkB7.js.map} +1 -1
  57. package/dist/{getSegmentedItemProperties-Be3kYWY3.js → getSegmentedItemProperties-Bg3_b-b1.js} +18 -15
  58. package/dist/getSegmentedItemProperties-Bg3_b-b1.js.map +1 -0
  59. package/dist/{index-BcXKZQpX.js → index--F3Wolt5.js} +1171 -5452
  60. package/dist/index--F3Wolt5.js.map +1 -0
  61. package/dist/{index-BFyMxc7e.js → index-QMrBK-L3.js} +2 -2
  62. package/dist/index-QMrBK-L3.js.map +1 -0
  63. package/dist/index-oi4roUVf.js +22 -0
  64. package/dist/index-oi4roUVf.js.map +1 -0
  65. package/dist/index.node-Bow8kHew.js +503 -0
  66. package/dist/index.node-Bow8kHew.js.map +1 -0
  67. package/dist/main.cjs +16 -15
  68. package/dist/main.cjs.map +1 -1
  69. package/dist/main.js +31 -22
  70. package/dist/main.js.map +1 -1
  71. package/dist/node.js +37 -363
  72. package/dist/node.js.map +1 -1
  73. package/dist/{ownership-C17YhE7J.js → ownership-BF_ZUKIp.js} +13 -9
  74. package/dist/{ownership-C17YhE7J.js.map → ownership-BF_ZUKIp.js.map} +1 -1
  75. package/dist/platform.browser.js +3499 -0
  76. package/dist/platform.browser.js.map +1 -0
  77. package/dist/platform.node.js +19 -0
  78. package/dist/platform.node.js.map +1 -0
  79. package/dist/{property-CRAau-Q-.js → property-BdyDfcSc.js} +14 -11
  80. package/dist/property-BdyDfcSc.js.map +1 -0
  81. package/dist/src/Item/Item.d.ts.map +1 -1
  82. package/dist/src/Item/service/actors/fetchDataFromEas.d.ts.map +1 -1
  83. package/dist/src/Model/service/actors/createModelProperties.d.ts.map +1 -1
  84. package/dist/src/Model/service/modelMachine.d.ts +1 -1
  85. package/dist/src/browser/db/Db.d.ts +17 -18
  86. package/dist/src/browser/db/Db.d.ts.map +1 -1
  87. package/dist/src/browser/helpers/ArweaveClient.d.ts +10 -27
  88. package/dist/src/browser/helpers/ArweaveClient.d.ts.map +1 -1
  89. package/dist/src/browser/helpers/EasClient.d.ts +6 -4
  90. package/dist/src/browser/helpers/EasClient.d.ts.map +1 -1
  91. package/dist/src/browser/helpers/FileManager.d.ts +27 -26
  92. package/dist/src/browser/helpers/FileManager.d.ts.map +1 -1
  93. package/dist/src/browser/helpers/PathResolver.d.ts +6 -5
  94. package/dist/src/browser/helpers/PathResolver.d.ts.map +1 -1
  95. package/dist/src/browser/helpers/QueryClient.d.ts +6 -5
  96. package/dist/src/browser/helpers/QueryClient.d.ts.map +1 -1
  97. package/dist/src/browser/workers/filesDownload.d.ts.map +1 -1
  98. package/dist/src/client/actors/platformClassesInit.d.ts.map +1 -1
  99. package/dist/src/client/actors/processSchemaFiles.d.ts.map +1 -1
  100. package/dist/src/client/actors/saveConfig.d.ts.map +1 -1
  101. package/dist/src/db/Db/BaseDb.d.ts +6 -26
  102. package/dist/src/db/Db/BaseDb.d.ts.map +1 -1
  103. package/dist/src/db/read/getPublishPayload.d.ts.map +1 -1
  104. package/dist/src/db/write/createMetadata.d.ts.map +1 -1
  105. package/dist/src/db/write/updateMetadata.d.ts.map +1 -1
  106. package/dist/src/eas.d.ts +4 -37
  107. package/dist/src/eas.d.ts.map +1 -1
  108. package/dist/src/helpers/ArweaveClient/BaseArweaveClient.d.ts +1 -101
  109. package/dist/src/helpers/ArweaveClient/BaseArweaveClient.d.ts.map +1 -1
  110. package/dist/src/helpers/ArweaveClient/arweaveL1UploadApi.d.ts +1 -51
  111. package/dist/src/helpers/ArweaveClient/arweaveL1UploadApi.d.ts.map +1 -1
  112. package/dist/src/helpers/ArweaveClient/index.d.ts +2 -2
  113. package/dist/src/helpers/ArweaveClient/index.d.ts.map +1 -1
  114. package/dist/src/helpers/ArweaveClient/selectReadGateway.d.ts +1 -15
  115. package/dist/src/helpers/ArweaveClient/selectReadGateway.d.ts.map +1 -1
  116. package/dist/src/helpers/ArweaveClient/uploadApiVerification.d.ts +1 -22
  117. package/dist/src/helpers/ArweaveClient/uploadApiVerification.d.ts.map +1 -1
  118. package/dist/src/helpers/EasClient/BaseEasClient.d.ts +1 -9
  119. package/dist/src/helpers/EasClient/BaseEasClient.d.ts.map +1 -1
  120. package/dist/src/helpers/FileManager/BaseFileManager.d.ts +4 -2
  121. package/dist/src/helpers/FileManager/BaseFileManager.d.ts.map +1 -1
  122. package/dist/src/helpers/FileManager/IFileManager.d.ts +44 -0
  123. package/dist/src/helpers/FileManager/IFileManager.d.ts.map +1 -0
  124. package/dist/src/helpers/PathResolver/BasePathResolver.d.ts +16 -12
  125. package/dist/src/helpers/PathResolver/BasePathResolver.d.ts.map +1 -1
  126. package/dist/src/helpers/PathResolver/IPathResolver.d.ts +16 -0
  127. package/dist/src/helpers/PathResolver/IPathResolver.d.ts.map +1 -0
  128. package/dist/src/helpers/QueryClient/BaseQueryClient.d.ts +1 -6
  129. package/dist/src/helpers/QueryClient/BaseQueryClient.d.ts.map +1 -1
  130. package/dist/src/helpers/constants.d.ts +4 -22
  131. package/dist/src/helpers/constants.d.ts.map +1 -1
  132. package/dist/src/helpers/db.d.ts.map +1 -1
  133. package/dist/src/helpers/easPropertyCanonical.d.ts +1 -14
  134. package/dist/src/helpers/easPropertyCanonical.d.ts.map +1 -1
  135. package/dist/src/helpers/easRevokedFilter.d.ts +1 -9
  136. package/dist/src/helpers/easRevokedFilter.d.ts.map +1 -1
  137. package/dist/src/helpers/easUid.d.ts +1 -12
  138. package/dist/src/helpers/easUid.d.ts.map +1 -1
  139. package/dist/src/helpers/ethereumUtils.d.ts +5 -0
  140. package/dist/src/helpers/ethereumUtils.d.ts.map +1 -0
  141. package/dist/src/helpers/file/fetchAll/index.d.ts +1 -1
  142. package/dist/src/helpers/file/fetchAll/index.d.ts.map +1 -1
  143. package/dist/src/helpers/gateway/gatewayState.d.ts +2 -0
  144. package/dist/src/helpers/gateway/gatewayState.d.ts.map +1 -0
  145. package/dist/src/helpers/gateway/resolveSeedGatewayEndpoints.d.ts +2 -0
  146. package/dist/src/helpers/gateway/resolveSeedGatewayEndpoints.d.ts.map +1 -0
  147. package/dist/src/helpers/gateway/seedGatewayConfig.d.ts +2 -0
  148. package/dist/src/helpers/gateway/seedGatewayConfig.d.ts.map +1 -0
  149. package/dist/src/helpers/generateId.d.ts +2 -0
  150. package/dist/src/helpers/generateId.d.ts.map +1 -0
  151. package/dist/src/helpers/getSchemaForItemProperty.d.ts +1 -1
  152. package/dist/src/helpers/getSchemaForItemProperty.d.ts.map +1 -1
  153. package/dist/src/helpers/getSegmentedItemProperties.d.ts.map +1 -1
  154. package/dist/src/helpers/index.d.ts +15 -10
  155. package/dist/src/helpers/index.d.ts.map +1 -1
  156. package/dist/src/helpers/isSqliteUniqueConstraintError.d.ts +7 -0
  157. package/dist/src/helpers/isSqliteUniqueConstraintError.d.ts.map +1 -0
  158. package/dist/src/helpers/mediaRef.d.ts.map +1 -1
  159. package/dist/src/helpers/property/index.d.ts.map +1 -1
  160. package/dist/src/index.d.ts +9 -7
  161. package/dist/src/index.d.ts.map +1 -1
  162. package/dist/src/interfaces/IDb.d.ts +11 -0
  163. package/dist/src/interfaces/IDb.d.ts.map +1 -1
  164. package/dist/src/node/db/Db.d.ts +22 -37
  165. package/dist/src/node/db/Db.d.ts.map +1 -1
  166. package/dist/src/node/helpers/ArweaveClient.d.ts +4 -30
  167. package/dist/src/node/helpers/ArweaveClient.d.ts.map +1 -1
  168. package/dist/src/node/helpers/EasClient.d.ts +4 -6
  169. package/dist/src/node/helpers/EasClient.d.ts.map +1 -1
  170. package/dist/src/node/helpers/FileManager.d.ts +26 -25
  171. package/dist/src/node/helpers/FileManager.d.ts.map +1 -1
  172. package/dist/src/node/helpers/PathResolver.d.ts +6 -5
  173. package/dist/src/node/helpers/PathResolver.d.ts.map +1 -1
  174. package/dist/src/node/helpers/QueryClient.d.ts +4 -6
  175. package/dist/src/node/helpers/QueryClient.d.ts.map +1 -1
  176. package/dist/src/node/helpers/scripts.d.ts +5 -7
  177. package/dist/src/node/helpers/scripts.d.ts.map +1 -1
  178. package/dist/src/node/index.d.ts +2 -9
  179. package/dist/src/node/index.d.ts.map +1 -1
  180. package/dist/src/node/webpack/index.d.ts +1 -1
  181. package/dist/src/node/webpack/index.d.ts.map +1 -1
  182. package/dist/src/platform/configurePlatform.d.ts +6 -0
  183. package/dist/src/platform/configurePlatform.d.ts.map +1 -0
  184. package/dist/src/platform/index.browser.d.ts +3 -0
  185. package/dist/src/platform/index.browser.d.ts.map +1 -0
  186. package/dist/src/platform/index.d.ts +9 -0
  187. package/dist/src/platform/index.d.ts.map +1 -0
  188. package/dist/src/platform/index.node.d.ts +3 -0
  189. package/dist/src/platform/index.node.d.ts.map +1 -0
  190. package/dist/src/platform/types.d.ts +14 -0
  191. package/dist/src/platform/types.d.ts.map +1 -0
  192. package/dist/src/stores/eas.d.ts +1 -18
  193. package/dist/src/stores/eas.d.ts.map +1 -1
  194. package/dist/src/testing/platformTestHandle.d.ts +8 -0
  195. package/dist/src/testing/platformTestHandle.d.ts.map +1 -0
  196. package/dist/src/types/gateway.d.ts +2 -0
  197. package/dist/src/types/gateway.d.ts.map +1 -0
  198. package/dist/src/types/index.d.ts +5 -0
  199. package/dist/src/types/index.d.ts.map +1 -1
  200. package/dist/src/types/item.d.ts +1 -1
  201. package/dist/src/types/item.d.ts.map +1 -1
  202. package/dist/src/types/machines.d.ts +10 -0
  203. package/dist/src/types/machines.d.ts.map +1 -1
  204. package/dist/src/types/seedProtocol.d.ts +1 -1
  205. package/dist/src/types/seedProtocol.d.ts.map +1 -1
  206. package/dist/src/vite/index.d.ts +2 -47
  207. package/dist/src/vite/index.d.ts.map +1 -1
  208. package/dist/{syncDbWithEas-CB5aXPtf.js → syncDbWithEas-DMOJHtkP.js} +20 -15
  209. package/dist/syncDbWithEas-DMOJHtkP.js.map +1 -0
  210. package/dist/{updateSeedRevokedAt-BIu5Q4Po.js → updateSeedRevokedAt-Ba0OhDQj.js} +2 -2
  211. package/dist/{updateSeedRevokedAt-BIu5Q4Po.js.map → updateSeedRevokedAt-Ba0OhDQj.js.map} +1 -1
  212. package/dist/vite.cjs +5 -481
  213. package/dist/vite.cjs.map +1 -1
  214. package/dist/vite.js +1 -483
  215. package/dist/vite.js.map +1 -1
  216. package/package.json +42 -37
  217. package/dist/ArweaveClient-CZpZgmR2.js +0 -204
  218. package/dist/ArweaveClient-CZpZgmR2.js.map +0 -1
  219. package/dist/ArweaveClient-Cs7AL9dp.js +0 -204
  220. package/dist/ArweaveClient-Cs7AL9dp.js.map +0 -1
  221. package/dist/Db-CF6R7HIy.js +0 -2098
  222. package/dist/Db-CF6R7HIy.js.map +0 -1
  223. package/dist/Db-CZkONsdT.js +0 -248
  224. package/dist/Db-CZkONsdT.js.map +0 -1
  225. package/dist/EasClient-PXOzSzPG.js +0 -29
  226. package/dist/EasClient-PXOzSzPG.js.map +0 -1
  227. package/dist/EasClient-qfTiM2we.js +0 -29
  228. package/dist/EasClient-qfTiM2we.js.map +0 -1
  229. package/dist/FileManager-5GkHtxF7.js +0 -1256
  230. package/dist/FileManager-5GkHtxF7.js.map +0 -1
  231. package/dist/FileManager-jORQ8Bb6.js +0 -177
  232. package/dist/FileManager-jORQ8Bb6.js.map +0 -1
  233. package/dist/ModelProperty-e_hXSFvf.js.map +0 -1
  234. package/dist/PathResolver-B4_X69Rd.js +0 -204
  235. package/dist/PathResolver-B4_X69Rd.js.map +0 -1
  236. package/dist/PathResolver-Dz0RVGIz.js +0 -78
  237. package/dist/PathResolver-Dz0RVGIz.js.map +0 -1
  238. package/dist/QueryClient-CXHZ239d.js +0 -51
  239. package/dist/QueryClient-CXHZ239d.js.map +0 -1
  240. package/dist/QueryClient-D_UK4YLm.js +0 -35
  241. package/dist/QueryClient-D_UK4YLm.js.map +0 -1
  242. package/dist/arweave-default-shim.js +0 -6
  243. package/dist/cjs/getPublishPayload-CGKMEL3H.js.map +0 -1
  244. package/dist/cjs/getSegmentedItemProperties-BgS_FhAx.js.map +0 -1
  245. package/dist/cjs/index-BnAqr2le.js.map +0 -1
  246. package/dist/cjs/index-ByozbTn_.js.map +0 -1
  247. package/dist/cjs/syncDbWithEas-CA2Lum5V.js.map +0 -1
  248. package/dist/debug-default-shim.js +0 -27
  249. package/dist/getPublishPayload-D16enahU.js.map +0 -1
  250. package/dist/getSegmentedItemProperties-Be3kYWY3.js.map +0 -1
  251. package/dist/index-BFyMxc7e.js.map +0 -1
  252. package/dist/index-BcXKZQpX.js.map +0 -1
  253. package/dist/index-C9p-skT3.js +0 -18
  254. package/dist/index-C9p-skT3.js.map +0 -1
  255. package/dist/property-CRAau-Q-.js.map +0 -1
  256. package/dist/queries-Ct7CcQ3g.js +0 -16
  257. package/dist/queries-Ct7CcQ3g.js.map +0 -1
  258. package/dist/src/Item/queries.d.ts +0 -27
  259. package/dist/src/Item/queries.d.ts.map +0 -1
  260. package/dist/src/graphql/fragments/Attestation.d.ts +0 -2
  261. package/dist/src/graphql/fragments/Attestation.d.ts.map +0 -1
  262. package/dist/src/graphql/fragments/Schema.d.ts +0 -2
  263. package/dist/src/graphql/fragments/Schema.d.ts.map +0 -1
  264. package/dist/src/graphql/fragments/index.d.ts +0 -3
  265. package/dist/src/graphql/fragments/index.d.ts.map +0 -1
  266. package/dist/src/graphql/gql/fragment-masking.d.ts +0 -20
  267. package/dist/src/graphql/gql/fragment-masking.d.ts.map +0 -1
  268. package/dist/src/graphql/gql/gql.d.ts +0 -107
  269. package/dist/src/graphql/gql/gql.d.ts.map +0 -1
  270. package/dist/src/graphql/gql/graphql.d.ts +0 -2969
  271. package/dist/src/graphql/gql/graphql.d.ts.map +0 -1
  272. package/dist/src/graphql/gql/index.d.ts +0 -3
  273. package/dist/src/graphql/gql/index.d.ts.map +0 -1
  274. package/dist/src/helpers/ArweaveClient/queries.d.ts +0 -13
  275. package/dist/src/helpers/ArweaveClient/queries.d.ts.map +0 -1
  276. package/dist/src/helpers/file/queries.d.ts +0 -9
  277. package/dist/src/helpers/file/queries.d.ts.map +0 -1
  278. package/dist/src/helpers/image/queries.d.ts +0 -7
  279. package/dist/src/helpers/image/queries.d.ts.map +0 -1
  280. package/dist/src/node/codegen/drizzle.d.ts +0 -5
  281. package/dist/src/node/codegen/drizzle.d.ts.map +0 -1
  282. package/dist/src/node/codegen/index.d.ts +0 -2
  283. package/dist/src/node/codegen/index.d.ts.map +0 -1
  284. package/dist/src/node/codegen/ts-to-proto.d.ts +0 -9
  285. package/dist/src/node/codegen/ts-to-proto.d.ts.map +0 -1
  286. package/dist/src/node/db/node.app.db.config.d.ts +0 -4
  287. package/dist/src/node/db/node.app.db.config.d.ts.map +0 -1
  288. package/dist/src/node/helpers/index.d.ts +0 -3
  289. package/dist/src/node/helpers/index.d.ts.map +0 -1
  290. package/dist/src/vite/arweave-default-shim.d.ts +0 -4
  291. package/dist/src/vite/arweave-default-shim.d.ts.map +0 -1
  292. package/dist/src/vite/debug-default-shim.d.ts +0 -3
  293. package/dist/src/vite/debug-default-shim.d.ts.map +0 -1
  294. package/dist/src/vite/easFix.d.ts +0 -2
  295. package/dist/src/vite/easFix.d.ts.map +0 -1
  296. package/dist/syncDbWithEas-CB5aXPtf.js.map +0 -1
  297. /package/dist/db/drizzle/{drizzle/0000_married_malice.sql → 0000_married_malice.sql} +0 -0
  298. /package/dist/db/drizzle/{drizzle/0001_sweet_bruce_banner.sql → 0001_sweet_bruce_banner.sql} +0 -0
  299. /package/dist/db/drizzle/{drizzle/0002_bitter_proudstar.sql → 0002_bitter_proudstar.sql} +0 -0
  300. /package/dist/db/drizzle/{drizzle/0003_cultured_senator_kelly.sql → 0003_cultured_senator_kelly.sql} +0 -0
  301. /package/dist/db/drizzle/{drizzle/0004_add_publisher_to_seeds.sql → 0004_add_publisher_to_seeds.sql} +0 -0
  302. /package/dist/db/drizzle/{drizzle/0005_bright_lily_hollister.sql → 0005_bright_lily_hollister.sql} +0 -0
  303. /package/dist/db/drizzle/{drizzle/0006_add_publisher_to_versions_and_metadata.sql → 0006_add_publisher_to_versions_and_metadata.sql} +0 -0
  304. /package/dist/db/drizzle/{drizzle/0007_add_required_to_properties.sql → 0007_add_required_to_properties.sql} +0 -0
  305. /package/dist/db/drizzle/{drizzle/0008_add_revoked_at_to_seeds.sql → 0008_add_revoked_at_to_seeds.sql} +0 -0
  306. /package/dist/db/drizzle/{drizzle/0009_happy_namor.sql → 0009_happy_namor.sql} +0 -0
  307. /package/dist/db/drizzle/{drizzle/0010_add_arweave_l1_finalize_jobs.sql → 0010_add_arweave_l1_finalize_jobs.sql} +0 -0
  308. /package/dist/db/drizzle/{drizzle/0011_normalize_placeholder_uids.sql → 0011_normalize_placeholder_uids.sql} +0 -0
  309. /package/dist/db/drizzle/{drizzle/0012_html_embedded_image_co_publish.sql → 0012_html_embedded_image_co_publish.sql} +0 -0
  310. /package/dist/db/drizzle/{drizzle/0013_eas_sync_processes.sql → 0013_eas_sync_processes.sql} +0 -0
  311. /package/dist/db/drizzle/{drizzle/meta → meta}/0000_snapshot.json +0 -0
  312. /package/dist/db/drizzle/{drizzle/meta → meta}/0001_snapshot.json +0 -0
  313. /package/dist/db/drizzle/{drizzle/meta → meta}/0002_snapshot.json +0 -0
  314. /package/dist/db/drizzle/{drizzle/meta → meta}/0003_snapshot.json +0 -0
  315. /package/dist/db/drizzle/{drizzle/meta → meta}/0004_snapshot.json +0 -0
  316. /package/dist/db/drizzle/{drizzle/meta → meta}/0005_snapshot.json +0 -0
  317. /package/dist/db/drizzle/{drizzle/meta → meta}/0006_snapshot.json +0 -0
  318. /package/dist/db/drizzle/{drizzle/meta → meta}/0007_snapshot.json +0 -0
  319. /package/dist/db/drizzle/{drizzle/meta → meta}/0008_snapshot.json +0 -0
  320. /package/dist/db/drizzle/{drizzle/meta → meta}/0009_snapshot.json +0 -0
  321. /package/dist/db/drizzle/{drizzle/meta → meta}/0010_snapshot.json +0 -0
  322. /package/dist/db/drizzle/{drizzle/meta → meta}/0013_snapshot.json +0 -0
  323. /package/dist/db/drizzle/{drizzle/meta → meta}/_journal.json +0 -0
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ var PathResolver = require('@/browser/helpers/PathResolver');
4
+ var FileManager = require('@/browser/helpers/FileManager');
5
+ var Db = require('@/browser/db/Db');
6
+ var ArweaveClient = require('@/browser/helpers/ArweaveClient');
7
+ var EasClient = require('@/browser/helpers/EasClient');
8
+ var QueryClient = require('@/browser/helpers/QueryClient');
9
+
10
+ function createPlatformServices() {
11
+ return {
12
+ pathResolver: new PathResolver.BrowserPathResolver(),
13
+ fileManager: new FileManager.BrowserFileManager(),
14
+ db: new Db.BrowserDb(),
15
+ arweaveClient: new ArweaveClient.BrowserArweaveClient(),
16
+ easClient: new EasClient.BrowserEasClient(),
17
+ queryClient: new QueryClient.BrowserQueryClient(),
18
+ };
19
+ }
20
+
21
+ exports.createPlatformServices = createPlatformServices;
22
+ //# sourceMappingURL=index.browser-BSf8HpnU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.browser-BSf8HpnU.js","sources":["../../../src/platform/index.browser.ts"],"sourcesContent":["import { BrowserPathResolver } from '@/browser/helpers/PathResolver'\nimport { BrowserFileManager } from '@/browser/helpers/FileManager'\nimport { BrowserDb } from '@/browser/db/Db'\nimport { BrowserArweaveClient } from '@/browser/helpers/ArweaveClient'\nimport { BrowserEasClient } from '@/browser/helpers/EasClient'\nimport { BrowserQueryClient } from '@/browser/helpers/QueryClient'\nimport type { PlatformServices } from './types'\n\nexport function createPlatformServices(): PlatformServices {\n return {\n pathResolver: new BrowserPathResolver(),\n fileManager: new BrowserFileManager(),\n db: new BrowserDb(),\n arweaveClient: new BrowserArweaveClient(),\n easClient: new BrowserEasClient(),\n queryClient: new BrowserQueryClient(),\n }\n}\n"],"names":["BrowserPathResolver","BrowserFileManager","BrowserDb","BrowserArweaveClient","BrowserEasClient","BrowserQueryClient"],"mappings":";;;;;;;;;SAQgB,sBAAsB,GAAA;IACpC,OAAO;QACL,YAAY,EAAE,IAAIA,gCAAmB,EAAE;QACvC,WAAW,EAAE,IAAIC,8BAAkB,EAAE;QACrC,EAAE,EAAE,IAAIC,YAAS,EAAE;QACnB,aAAa,EAAE,IAAIC,kCAAoB,EAAE;QACzC,SAAS,EAAE,IAAIC,0BAAgB,EAAE;QACjC,WAAW,EAAE,IAAIC,8BAAkB,EAAE;KACtC;AACH;;;;"}
@@ -1,35 +1,34 @@
1
1
  'use strict';
2
2
 
3
- var main_cjs = require('./index-ByozbTn_.js');
3
+ var main_cjs = require('./index-vk2DeF2D.js');
4
4
  var drizzleOrm = require('drizzle-orm');
5
5
  require('immer');
6
6
  require('reflect-metadata');
7
7
  require('xstate');
8
8
  require('drizzle-orm/sqlite-core');
9
- require('nanoid');
10
- require('nanoid-dictionary');
11
9
  require('debug');
12
- require('ethers');
10
+ require('@seedprotocol/arweave');
11
+ require('@seedprotocol/eas');
13
12
  require('pluralize');
14
13
  require('@sinclair/typebox');
14
+ require('nanoid');
15
+ require('nanoid-dictionary');
15
16
  require('drizzle-orm/casing');
16
17
  require('lodash-es');
17
18
  require('rxjs');
18
- require('arweave');
19
19
  require('js-sha3');
20
20
  require('fs/promises');
21
21
  require('fs');
22
22
  require('path');
23
+ require('node:url');
23
24
  require('@libsql/client');
24
25
  require('drizzle-orm/libsql');
25
- require('drizzle-kit/api');
26
+ require('drizzle-orm/libsql/migrator');
26
27
  require('js-yaml');
27
- require('ts-import');
28
- require('glob');
29
- require('rimraf');
28
+ require('@seedprotocol/webpack');
30
29
  require('child_process');
31
- require('url');
32
- require('graphql-request');
30
+ require('@seedprotocol/arweave/node');
31
+ require('@seedprotocol/eas/node');
33
32
 
34
33
  const READ_ONLY_ERROR = 'Item is read-only: you do not own this item';
35
34
  async function getSeedRowForItem(item) {
@@ -88,19 +87,6 @@ async function isItemOwned(item) {
88
87
  return false;
89
88
  }
90
89
  let addressesToCheck = await main_cjs.getOwnedAddressesFromDb();
91
- const additionalGetter = main_cjs.getGetAdditionalSyncAddresses();
92
- if (additionalGetter) {
93
- const additional = await additionalGetter();
94
- if (additional?.length) {
95
- const seen = new Set(addressesToCheck.map((a) => a.toLowerCase()));
96
- for (const addr of additional) {
97
- if (addr && !seen.has(addr.toLowerCase())) {
98
- seen.add(addr.toLowerCase());
99
- addressesToCheck = [...addressesToCheck, addr];
100
- }
101
- }
102
- }
103
- }
104
90
  const ownedSet = new Set(addressesToCheck.map((a) => a.toLowerCase()));
105
91
  return ownedSet.has(publisher.toLowerCase());
106
92
  }
@@ -116,4 +102,4 @@ async function assertItemOwned(item) {
116
102
 
117
103
  exports.assertItemOwned = assertItemOwned;
118
104
  exports.isItemOwned = isItemOwned;
119
- //# sourceMappingURL=ownership-CsWuaNfH.js.map
105
+ //# sourceMappingURL=ownership-DhWda0J9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ownership-CsWuaNfH.js","sources":["../../../src/helpers/ownership.ts"],"sourcesContent":["import type { IItem } from '@/interfaces/IItem'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { seeds } from '@/seedSchema'\nimport { eq, or } from 'drizzle-orm'\nimport { getOwnedAddressesFromDb } from '@/helpers/db'\nimport { getGetAdditionalSyncAddresses } from '@/helpers/publishConfig'\n\nconst READ_ONLY_ERROR = 'Item is read-only: you do not own this item'\n\ntype ItemLike = { seedLocalId?: string; seedUid?: string }\n\ntype SeedRow = { publisher: string | null; attestationRaw: string | null; uid: string | null }\n\nasync function getSeedRowForItem(item: ItemLike): Promise<SeedRow | null> {\n const appDb = BaseDb.getAppDb()\n if (!appDb) return null\n\n const conditions = []\n if (item.seedLocalId) conditions.push(eq(seeds.localId, item.seedLocalId))\n if (item.seedUid) conditions.push(eq(seeds.uid, item.seedUid))\n if (conditions.length === 0) return null\n\n const seedRows = await appDb\n .select({\n publisher: seeds.publisher,\n attestationRaw: seeds.attestationRaw,\n uid: seeds.uid,\n })\n .from(seeds)\n .where(conditions.length === 1 ? conditions[0] : (or(...conditions) as any))\n .limit(1)\n\n if (!seedRows || seedRows.length === 0) return null\n return seedRows[0]\n}\n\nfunction getPublisherFromRow(row: SeedRow): string | null {\n if (row.publisher) return row.publisher\n if (row.attestationRaw) {\n try {\n const parsed = JSON.parse(row.attestationRaw) as { attester?: string }\n return parsed.attester ?? null\n } catch {\n return null\n }\n }\n return null\n}\n\n/**\n * Checks if the current user owns the item (publisher is in owned addresses).\n * Locally created items (no publisher, no attestationRaw) are considered owned.\n * Includes getAdditionalSyncAddresses (e.g. `modularAccountModuleContract` when configured)\n * so ownership aligns with EAS sync when the publisher/attester matches those addresses.\n */\nexport async function isItemOwned(item: ItemLike | IItem<any>): Promise<boolean> {\n const row = await getSeedRowForItem(item)\n if (!row) return false\n\n const publisher = getPublisherFromRow(row)\n if (!publisher) {\n if (!row.uid && !row.attestationRaw) {\n return true\n }\n return false\n }\n\n let addressesToCheck = await getOwnedAddressesFromDb()\n const additionalGetter = getGetAdditionalSyncAddresses()\n if (additionalGetter) {\n const additional = await additionalGetter()\n if (additional?.length) {\n const seen = new Set(addressesToCheck.map((a) => a.toLowerCase()))\n for (const addr of additional) {\n if (addr && !seen.has(addr.toLowerCase())) {\n seen.add(addr.toLowerCase())\n addressesToCheck = [...addressesToCheck, addr]\n }\n }\n }\n }\n\n const ownedSet = new Set(addressesToCheck.map((a) => a.toLowerCase()))\n return ownedSet.has(publisher.toLowerCase())\n}\n\n/**\n * Throws if the item is not owned. Use before write operations (publish, save, destroy).\n */\nexport async function assertItemOwned(item: ItemLike | IItem<any>): Promise<void> {\n const owned = await isItemOwned(item)\n if (!owned) {\n throw new Error(READ_ONLY_ERROR)\n }\n}\n"],"names":["BaseDb","eq","seeds","or","getOwnedAddressesFromDb","getGetAdditionalSyncAddresses"],"mappings":"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"}
1
+ {"version":3,"file":"ownership-DhWda0J9.js","sources":["../../../src/helpers/ownership.ts"],"sourcesContent":["import type { IItem } from '@/interfaces/IItem'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { seeds } from '@/seedSchema'\nimport { eq, or } from 'drizzle-orm'\nimport { getOwnedAddressesFromDb } from '@/helpers/db'\nimport { getGetAdditionalSyncAddresses } from '@/helpers/publishConfig'\n\nconst READ_ONLY_ERROR = 'Item is read-only: you do not own this item'\n\ntype ItemLike = { seedLocalId?: string; seedUid?: string }\n\ntype SeedRow = { publisher: string | null; attestationRaw: string | null; uid: string | null }\n\nasync function getSeedRowForItem(item: ItemLike): Promise<SeedRow | null> {\n const appDb = BaseDb.getAppDb()\n if (!appDb) return null\n\n const conditions = []\n if (item.seedLocalId) conditions.push(eq(seeds.localId, item.seedLocalId))\n if (item.seedUid) conditions.push(eq(seeds.uid, item.seedUid))\n if (conditions.length === 0) return null\n\n const seedRows = await appDb\n .select({\n publisher: seeds.publisher,\n attestationRaw: seeds.attestationRaw,\n uid: seeds.uid,\n })\n .from(seeds)\n .where(conditions.length === 1 ? conditions[0] : (or(...conditions) as any))\n .limit(1)\n\n if (!seedRows || seedRows.length === 0) return null\n return seedRows[0]\n}\n\nfunction getPublisherFromRow(row: SeedRow): string | null {\n if (row.publisher) return row.publisher\n if (row.attestationRaw) {\n try {\n const parsed = JSON.parse(row.attestationRaw) as { attester?: string }\n return parsed.attester ?? null\n } catch {\n return null\n }\n }\n return null\n}\n\n/**\n * Checks if the current user owns the item (publisher is in owned addresses).\n * Locally created items (no publisher, no attestationRaw) are considered owned.\n * Includes getAdditionalSyncAddresses (e.g. `modularAccountModuleContract` when configured)\n * so ownership aligns with EAS sync when the publisher/attester matches those addresses.\n */\nexport async function isItemOwned(item: ItemLike | IItem<any>): Promise<boolean> {\n const row = await getSeedRowForItem(item)\n if (!row) return false\n\n const publisher = getPublisherFromRow(row)\n if (!publisher) {\n if (!row.uid && !row.attestationRaw) {\n return true\n }\n return false\n }\n\n let addressesToCheck = await getOwnedAddressesFromDb()\n const additionalGetter = getGetAdditionalSyncAddresses()\n if (additionalGetter) {\n const additional = await additionalGetter()\n if (additional?.length) {\n const seen = new Set(addressesToCheck.map((a) => a.toLowerCase()))\n for (const addr of additional) {\n if (addr && !seen.has(addr.toLowerCase())) {\n seen.add(addr.toLowerCase())\n addressesToCheck = [...addressesToCheck, addr]\n }\n }\n }\n }\n\n const ownedSet = new Set(addressesToCheck.map((a) => a.toLowerCase()))\n return ownedSet.has(publisher.toLowerCase())\n}\n\n/**\n * Throws if the item is not owned. Use before write operations (publish, save, destroy).\n */\nexport async function assertItemOwned(item: ItemLike | IItem<any>): Promise<void> {\n const owned = await isItemOwned(item)\n if (!owned) {\n throw new Error(READ_ONLY_ERROR)\n }\n}\n"],"names":["BaseDb","eq","seeds","or","getOwnedAddressesFromDb"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,eAAe,GAAG,6CAA6C;AAMrE,eAAe,iBAAiB,CAAC,IAAc,EAAA;AAC7C,IAAA,MAAM,KAAK,GAAGA,eAAM,CAAC,QAAQ,EAAE;AAC/B,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,IAAI;IAEvB,MAAM,UAAU,GAAG,EAAE;IACrB,IAAI,IAAI,CAAC,WAAW;AAAE,QAAA,UAAU,CAAC,IAAI,CAACC,aAAE,CAACC,cAAK,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1E,IAAI,IAAI,CAAC,OAAO;AAAE,QAAA,UAAU,CAAC,IAAI,CAACD,aAAE,CAACC,cAAK,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9D,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI;IAExC,MAAM,QAAQ,GAAG,MAAM;AACpB,SAAA,MAAM,CAAC;QACN,SAAS,EAAEA,cAAK,CAAC,SAAS;QAC1B,cAAc,EAAEA,cAAK,CAAC,cAAc;QACpC,GAAG,EAAEA,cAAK,CAAC,GAAG;KACf;SACA,IAAI,CAACA,cAAK;SACV,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAIC,aAAE,CAAC,GAAG,UAAU,CAAS;SAC1E,KAAK,CAAC,CAAC,CAAC;AAEX,IAAA,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI;AACnD,IAAA,OAAO,QAAQ,CAAC,CAAC,CAAC;AACpB;AAEA,SAAS,mBAAmB,CAAC,GAAY,EAAA;IACvC,IAAI,GAAG,CAAC,SAAS;QAAE,OAAO,GAAG,CAAC,SAAS;AACvC,IAAA,IAAI,GAAG,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAA0B;AACtE,YAAA,OAAO,MAAM,CAAC,QAAQ,IAAI,IAAI;QAChC;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,IAAI;QACb;IACF;AACA,IAAA,OAAO,IAAI;AACb;AAEA;;;;;AAKG;AACI,eAAe,WAAW,CAAC,IAA2B,EAAA;AAC3D,IAAA,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC;AACzC,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,KAAK;AAEtB,IAAA,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC;IAC1C,IAAI,CAAC,SAAS,EAAE;QACd,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE;AACnC,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,gBAAgB,GAAG,MAAMC,gCAAuB,EAAE;IAetD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACtE,OAAO,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;AAC9C;AAEA;;AAEG;AACI,eAAe,eAAe,CAAC,IAA2B,EAAA;AAC/D,IAAA,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC;IACrC,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC;IAClC;AACF;;;;;"}
@@ -1,35 +1,34 @@
1
1
  'use strict';
2
2
 
3
3
  var pluralize = require('pluralize');
4
- var main_cjs = require('./index-ByozbTn_.js');
4
+ var main_cjs = require('./index-vk2DeF2D.js');
5
5
  var drizzleOrm = require('drizzle-orm');
6
6
  require('immer');
7
7
  require('reflect-metadata');
8
8
  require('xstate');
9
9
  require('drizzle-orm/sqlite-core');
10
- require('nanoid');
11
- require('nanoid-dictionary');
12
10
  require('debug');
13
- require('ethers');
11
+ require('@seedprotocol/arweave');
12
+ require('@seedprotocol/eas');
14
13
  require('@sinclair/typebox');
14
+ require('nanoid');
15
+ require('nanoid-dictionary');
15
16
  require('drizzle-orm/casing');
16
17
  require('lodash-es');
17
18
  require('rxjs');
18
- require('arweave');
19
19
  require('js-sha3');
20
20
  require('fs/promises');
21
21
  require('fs');
22
22
  require('path');
23
+ require('node:url');
23
24
  require('@libsql/client');
24
25
  require('drizzle-orm/libsql');
25
- require('drizzle-kit/api');
26
+ require('drizzle-orm/libsql/migrator');
26
27
  require('js-yaml');
27
- require('ts-import');
28
- require('glob');
29
- require('rimraf');
28
+ require('@seedprotocol/webpack');
30
29
  require('child_process');
31
- require('url');
32
- require('graphql-request');
30
+ require('@seedprotocol/arweave/node');
31
+ require('@seedprotocol/eas/node');
33
32
 
34
33
  // Dynamic import to break circular dependency: Model -> ... -> helpers/property -> Model
35
34
  // import { Model } from '@/Model/Model'
@@ -67,9 +66,9 @@ require('graphql-request');
67
66
  */
68
67
  const getPropertySchema = async (modelName, propertyName) => {
69
68
  // Dynamic import to break circular dependency
70
- const modelMod = await Promise.resolve().then(function () { return require('./index-ByozbTn_.js'); }).then(function (n) { return n.Model$1; });
69
+ const modelMod = await Promise.resolve().then(function () { return require('./index-vk2DeF2D.js'); }).then(function (n) { return n.Model$1; });
71
70
  const { Model } = modelMod;
72
- const schemaMod = await Promise.resolve().then(function () { return require('./Schema-BcRHcQ0W.js'); });
71
+ const schemaMod = await Promise.resolve().then(function () { return require('./Schema-gpFnZMhB.js'); });
73
72
  const { Schema } = schemaMod;
74
73
  const model = await Model.getByNameAsync(modelName);
75
74
  if (!model) {
@@ -316,4 +315,4 @@ exports.TStorageType = main_cjs.TStorageType;
316
315
  exports.Text = main_cjs.Text;
317
316
  exports.normalizeDataType = main_cjs.normalizeDataType;
318
317
  exports.getPropertySchema = getPropertySchema;
319
- //# sourceMappingURL=property-CeR45LMx.js.map
318
+ //# sourceMappingURL=property-D3Ww2_Qh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"property-CeR45LMx.js","sources":["../../../src/helpers/property.ts"],"sourcesContent":["import { Static } from '@sinclair/typebox'\nimport { TProperty } from '@/Schema'\n// Dynamic import to break circular dependency: Model -> ... -> helpers/property -> Model\n// import { Model } from '@/Model/Model'\nimport pluralize from 'pluralize'\nimport { resolveStorageNameToSchemaName } from '@/helpers/metadataPropertyNames'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { models as modelsTable, properties, PropertyType } from '@/seedSchema'\nimport { eq, and } from 'drizzle-orm'\nimport { modelPropertiesToObject } from '@/helpers/model'\n\n// Re-export everything from property/index.ts to make it available when importing from helpers/property\nexport * from './property/index'\n\n/**\n * Gets the propertyRecordSchema object for a given model and property name.\n * \n * The propertyRecordSchema is the property definition object that contains\n * information about the property's data type, storage configuration, and\n * relationship details (for Relation and List types).\n * \n * This function first checks the database for property definitions (which may\n * have been edited), then falls back to schema files. This ensures that\n * edited properties persist across page reloads.\n * \n * This function handles property names that end with 'Id' or 'Ids' by automatically\n * looking up the base property name in the schema (e.g., 'authorId' -> 'author',\n * 'tagIds' -> 'tags').\n * \n * @param modelName - The name of the model (e.g., 'Article', 'Author')\n * @param propertyName - The name of the property (e.g., 'title', 'author', 'authorId', 'tags', 'tagIds')\n * @returns The propertyRecordSchema object (TProperty with optional _propertyFileId) or undefined if not found\n * \n * @example\n * ```typescript\n * const schema = await getPropertySchema('Article', 'title')\n * // Returns: { dataType: 'Text', ... }\n * \n * const relationSchema = await getPropertySchema('Article', 'author')\n * // Returns: { dataType: 'Relation', ref: 'Author', ... }\n * \n * // Also works with Id/Ids suffixes\n * const relationSchemaById = await getPropertySchema('Article', 'authorId')\n * // Returns: { dataType: 'Relation', ref: 'Author', ... }\n * ```\n */\nexport const getPropertySchema = async (\n modelName: string,\n propertyName: string,\n): Promise<(Static<typeof TProperty> & { _propertyFileId?: string }) | undefined> => {\n // Dynamic import to break circular dependency\n const modelMod = await import('../Model/Model')\n const { Model } = modelMod\n const schemaMod = await import('../Schema/Schema')\n const { Schema } = schemaMod\n const model = await Model.getByNameAsync(modelName)\n\n if (!model) {\n return undefined\n }\n \n // Get the original schema from Schema instance context (has ref fields from schema file)\n // This is more reliable than modelPropertiesToObject which depends on ModelProperty instances\n let schema: { [propertyName: string]: any } = {}\n try {\n const schemaName = model.schemaName\n if (schemaName) {\n const schemaInstance = Schema.create(schemaName, {\n waitForReady: false,\n }) as import('@/Schema/Schema').Schema\n const schemaContext = schemaInstance.getService().getSnapshot().context\n if (schemaContext.models && schemaContext.models[modelName]) {\n // Get properties from Schema context (original schema file data)\n const modelDef = schemaContext.models[modelName]\n schema = modelDef.properties || {}\n }\n }\n } catch (error) {\n // Fall through to modelPropertiesToObject\n }\n \n // Fallback to modelPropertiesToObject if Schema context doesn't have the data\n if (Object.keys(schema).length === 0) {\n const properties = model.properties || []\n if (properties.length === 0) {\n return undefined\n }\n schema = modelPropertiesToObject(properties)\n }\n \n // Helper to resolve property name (handles Id/Ids suffixes)\n const resolvePropertyName = (propName: string): string | undefined => {\n // First, try direct lookup\n if (schema[propName]) {\n return propName\n }\n\n // List-of-relation storage name (e.g. authorIdentityIds) -> schema key (authors)\n const listSchemaKey = resolveStorageNameToSchemaName(schema, propName)\n if (listSchemaKey && schema[listSchemaKey]) {\n return listSchemaKey\n }\n\n // Handle properties ending with 'Id' or 'Ids'\n let propertyNameWithoutId: string | undefined\n \n if (propName.endsWith('Id')) {\n propertyNameWithoutId = propName.slice(0, -2)\n } else if (propName.endsWith('Ids')) {\n propertyNameWithoutId = propName.slice(0, -3)\n propertyNameWithoutId = pluralize(propertyNameWithoutId)\n }\n \n if (propertyNameWithoutId && schema[propertyNameWithoutId]) {\n return propertyNameWithoutId\n }\n \n return undefined\n }\n \n const resolvedPropertyName = resolvePropertyName(propertyName)\n if (!resolvedPropertyName) {\n return undefined\n }\n \n // Try to get property from database first (may have edited values)\n try {\n const db = BaseDb.getAppDb()\n if (db) {\n // Find the model in the database\n const modelRecords = await db\n .select()\n .from(modelsTable)\n .where(eq(modelsTable.name, modelName))\n .limit(1)\n \n if (modelRecords.length > 0) {\n const modelRecord = modelRecords[0]\n \n // Find the property in the database by name\n let propertyRecords = await db\n .select()\n .from(properties)\n .where(\n and(\n eq(properties.name, resolvedPropertyName),\n eq(properties.modelId, modelRecord.id!),\n ),\n )\n .limit(1)\n \n // If not found by name, check for renamed properties (orphaned DB properties)\n if (propertyRecords.length === 0) {\n // Get all properties for this model\n const allDbProperties = await db\n .select()\n .from(properties)\n .where(eq(properties.modelId, modelRecord.id!))\n \n // Get all schema property names to identify orphaned properties\n const schemaPropertyNames = new Set(Object.keys(schema))\n \n // Get the schema property definition to match characteristics\n const schemaPropertyDef = schema[resolvedPropertyName]\n \n if (schemaPropertyDef) {\n // Find orphaned properties (don't match any schema property name) that match characteristics\n const orphanedProperties = allDbProperties.filter((p: PropertyType) => \n !schemaPropertyNames.has(p.name) && // Doesn't match any schema property name\n p.dataType === schemaPropertyDef.dataType // Same dataType\n )\n \n // If there's exactly one orphaned property with matching characteristics, it's likely the renamed property\n // We can also match by refModelId if it's a relation\n if (orphanedProperties.length > 0) {\n let matchedProperty = orphanedProperties[0]\n \n // If it's a relation, try to match by refModelId\n if (schemaPropertyDef.ref) {\n const refModelRecords = await db\n .select()\n .from(modelsTable)\n .where(eq(modelsTable.name, schemaPropertyDef.ref))\n .limit(1)\n \n if (refModelRecords.length > 0) {\n const expectedRefModelId = refModelRecords[0].id\n const matchingByRef = orphanedProperties.find((p: PropertyType) => p.refModelId === expectedRefModelId)\n if (matchingByRef) {\n matchedProperty = matchingByRef\n }\n }\n } else {\n // For non-relation properties, prefer ones without refModelId\n const withoutRef = orphanedProperties.find((p: PropertyType) => p.refModelId === null)\n if (withoutRef) {\n matchedProperty = withoutRef\n }\n }\n \n propertyRecords = [matchedProperty]\n }\n }\n }\n \n if (propertyRecords.length > 0) {\n const propertyRecord = propertyRecords[0]\n \n // Get the base schema from file to merge with database values\n // Use the schema object created earlier, not model.schema (which doesn't exist)\n const schemaFromFile = schema[resolvedPropertyName]\n \n // Build property schema from database, merging with file schema for fields not in DB\n // Use the schema property name (resolvedPropertyName) even if DB has different name (renamed)\n const propertySchema: Static<typeof TProperty> & { _propertyFileId?: string; _dbId?: number } = {\n ...schemaFromFile, // Start with file schema (has all fields like storageType, etc.)\n id: propertyRecord.schemaFileId || propertyRecord.id?.toString(), // id should be schemaFileId (string), not database ID\n _dbId: propertyRecord.id, // Store database integer ID separately\n name: resolvedPropertyName, // Use schema name, not DB name (for renamed properties)\n dataType: propertyRecord.dataType as any,\n modelId: propertyRecord.modelId,\n modelName,\n refModelId: propertyRecord.refModelId || undefined,\n refValueType: (propertyRecord.refValueType as any) || undefined,\n required: (propertyRecord as { required?: boolean }).required ?? undefined,\n // Include schemaFileId from database as _propertyFileId for ModelProperty.create()\n _propertyFileId: propertyRecord.schemaFileId || undefined,\n }\n \n // If refModelId is set, try to get the refModelName\n if (propertyRecord.refModelId) {\n const refModelRecords = await db\n .select()\n .from(modelsTable)\n .where(eq(modelsTable.id, propertyRecord.refModelId))\n .limit(1)\n \n if (refModelRecords.length > 0) {\n propertySchema.refModelName = refModelRecords[0].name\n propertySchema.ref = refModelRecords[0].name\n }\n } else if (schemaFromFile?.ref) {\n // If refModelId is not set but schema file has ref, resolve it from the database\n // This handles cases where the property was just created and refModelId hasn't been set yet\n propertySchema.ref = schemaFromFile.ref\n propertySchema.refModelName = schemaFromFile.ref\n \n // Try to resolve refModelId from the database using the model name\n try {\n const refModelRecords = await db\n .select()\n .from(modelsTable)\n .where(eq(modelsTable.name, schemaFromFile.ref))\n .limit(1)\n \n if (refModelRecords.length > 0 && refModelRecords[0].id) {\n propertySchema.refModelId = refModelRecords[0].id\n }\n } catch (error) {\n // Ignore errors - model might not exist yet\n }\n }\n \n return propertySchema\n }\n }\n }\n } catch (error) {\n // Database not available or error - fall through to schema file lookup\n }\n \n // Fall back to schema file lookup\n const schemaFromFile = schema[resolvedPropertyName]\n if (schemaFromFile) {\n const propertySchema: Static<typeof TProperty> & { _propertyFileId?: string } = { ...schemaFromFile, name: resolvedPropertyName }\n \n // If schema file has id as a string (propertyFileId), set it as _propertyFileId\n // This handles cases where the property hasn't been saved to the database yet\n if (typeof schemaFromFile.id === 'string') {\n propertySchema._propertyFileId = schemaFromFile.id\n }\n \n // If the schema file has ref but no refModelId, try to resolve it from the database\n if (schemaFromFile.ref && !propertySchema.refModelId) {\n try {\n const db = BaseDb.getAppDb()\n if (db) {\n const refModelRecords = await db\n .select()\n .from(modelsTable)\n .where(eq(modelsTable.name, schemaFromFile.ref))\n .limit(1)\n \n if (refModelRecords.length > 0 && refModelRecords[0].id) {\n propertySchema.refModelId = refModelRecords[0].id\n propertySchema.refModelName = schemaFromFile.ref\n }\n }\n } catch (error) {\n // Ignore errors - model might not exist yet or database not available\n }\n }\n \n return propertySchema\n }\n return undefined\n}\n"],"names":["modelPropertiesToObject","resolveStorageNameToSchemaName","BaseDb","modelsTable","eq","properties","and"],"mappings":"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"}
1
+ {"version":3,"file":"property-D3Ww2_Qh.js","sources":["../../../src/helpers/property.ts"],"sourcesContent":["import { Static } from '@sinclair/typebox'\nimport { TProperty } from '@/Schema'\n// Dynamic import to break circular dependency: Model -> ... -> helpers/property -> Model\n// import { Model } from '@/Model/Model'\nimport pluralize from 'pluralize'\nimport { resolveStorageNameToSchemaName } from '@/helpers/metadataPropertyNames'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { models as modelsTable, properties, PropertyType } from '@/seedSchema'\nimport { eq, and } from 'drizzle-orm'\nimport { modelPropertiesToObject } from '@/helpers/model'\n\n// Re-export everything from property/index.ts to make it available when importing from helpers/property\nexport * from './property/index'\n\n/**\n * Gets the propertyRecordSchema object for a given model and property name.\n * \n * The propertyRecordSchema is the property definition object that contains\n * information about the property's data type, storage configuration, and\n * relationship details (for Relation and List types).\n * \n * This function first checks the database for property definitions (which may\n * have been edited), then falls back to schema files. This ensures that\n * edited properties persist across page reloads.\n * \n * This function handles property names that end with 'Id' or 'Ids' by automatically\n * looking up the base property name in the schema (e.g., 'authorId' -> 'author',\n * 'tagIds' -> 'tags').\n * \n * @param modelName - The name of the model (e.g., 'Article', 'Author')\n * @param propertyName - The name of the property (e.g., 'title', 'author', 'authorId', 'tags', 'tagIds')\n * @returns The propertyRecordSchema object (TProperty with optional _propertyFileId) or undefined if not found\n * \n * @example\n * ```typescript\n * const schema = await getPropertySchema('Article', 'title')\n * // Returns: { dataType: 'Text', ... }\n * \n * const relationSchema = await getPropertySchema('Article', 'author')\n * // Returns: { dataType: 'Relation', ref: 'Author', ... }\n * \n * // Also works with Id/Ids suffixes\n * const relationSchemaById = await getPropertySchema('Article', 'authorId')\n * // Returns: { dataType: 'Relation', ref: 'Author', ... }\n * ```\n */\nexport const getPropertySchema = async (\n modelName: string,\n propertyName: string,\n): Promise<(Static<typeof TProperty> & { _propertyFileId?: string }) | undefined> => {\n // Dynamic import to break circular dependency\n const modelMod = await import('../Model/Model')\n const { Model } = modelMod\n const schemaMod = await import('../Schema/Schema')\n const { Schema } = schemaMod\n const model = await Model.getByNameAsync(modelName)\n\n if (!model) {\n return undefined\n }\n \n // Get the original schema from Schema instance context (has ref fields from schema file)\n // This is more reliable than modelPropertiesToObject which depends on ModelProperty instances\n let schema: { [propertyName: string]: any } = {}\n try {\n const schemaName = model.schemaName\n if (schemaName) {\n const schemaInstance = Schema.create(schemaName, {\n waitForReady: false,\n }) as import('@/Schema/Schema').Schema\n const schemaContext = schemaInstance.getService().getSnapshot().context\n if (schemaContext.models && schemaContext.models[modelName]) {\n // Get properties from Schema context (original schema file data)\n const modelDef = schemaContext.models[modelName]\n schema = modelDef.properties || {}\n }\n }\n } catch (error) {\n // Fall through to modelPropertiesToObject\n }\n \n // Fallback to modelPropertiesToObject if Schema context doesn't have the data\n if (Object.keys(schema).length === 0) {\n const properties = model.properties || []\n if (properties.length === 0) {\n return undefined\n }\n schema = modelPropertiesToObject(properties)\n }\n \n // Helper to resolve property name (handles Id/Ids suffixes)\n const resolvePropertyName = (propName: string): string | undefined => {\n // First, try direct lookup\n if (schema[propName]) {\n return propName\n }\n\n // List-of-relation storage name (e.g. authorIdentityIds) -> schema key (authors)\n const listSchemaKey = resolveStorageNameToSchemaName(schema, propName)\n if (listSchemaKey && schema[listSchemaKey]) {\n return listSchemaKey\n }\n\n // Handle properties ending with 'Id' or 'Ids'\n let propertyNameWithoutId: string | undefined\n \n if (propName.endsWith('Id')) {\n propertyNameWithoutId = propName.slice(0, -2)\n } else if (propName.endsWith('Ids')) {\n propertyNameWithoutId = propName.slice(0, -3)\n propertyNameWithoutId = pluralize(propertyNameWithoutId)\n }\n \n if (propertyNameWithoutId && schema[propertyNameWithoutId]) {\n return propertyNameWithoutId\n }\n \n return undefined\n }\n \n const resolvedPropertyName = resolvePropertyName(propertyName)\n if (!resolvedPropertyName) {\n return undefined\n }\n \n // Try to get property from database first (may have edited values)\n try {\n const db = BaseDb.getAppDb()\n if (db) {\n // Find the model in the database\n const modelRecords = await db\n .select()\n .from(modelsTable)\n .where(eq(modelsTable.name, modelName))\n .limit(1)\n \n if (modelRecords.length > 0) {\n const modelRecord = modelRecords[0]\n \n // Find the property in the database by name\n let propertyRecords = await db\n .select()\n .from(properties)\n .where(\n and(\n eq(properties.name, resolvedPropertyName),\n eq(properties.modelId, modelRecord.id!),\n ),\n )\n .limit(1)\n \n // If not found by name, check for renamed properties (orphaned DB properties)\n if (propertyRecords.length === 0) {\n // Get all properties for this model\n const allDbProperties = await db\n .select()\n .from(properties)\n .where(eq(properties.modelId, modelRecord.id!))\n \n // Get all schema property names to identify orphaned properties\n const schemaPropertyNames = new Set(Object.keys(schema))\n \n // Get the schema property definition to match characteristics\n const schemaPropertyDef = schema[resolvedPropertyName]\n \n if (schemaPropertyDef) {\n // Find orphaned properties (don't match any schema property name) that match characteristics\n const orphanedProperties = allDbProperties.filter((p: PropertyType) => \n !schemaPropertyNames.has(p.name) && // Doesn't match any schema property name\n p.dataType === schemaPropertyDef.dataType // Same dataType\n )\n \n // If there's exactly one orphaned property with matching characteristics, it's likely the renamed property\n // We can also match by refModelId if it's a relation\n if (orphanedProperties.length > 0) {\n let matchedProperty = orphanedProperties[0]\n \n // If it's a relation, try to match by refModelId\n if (schemaPropertyDef.ref) {\n const refModelRecords = await db\n .select()\n .from(modelsTable)\n .where(eq(modelsTable.name, schemaPropertyDef.ref))\n .limit(1)\n \n if (refModelRecords.length > 0) {\n const expectedRefModelId = refModelRecords[0].id\n const matchingByRef = orphanedProperties.find((p: PropertyType) => p.refModelId === expectedRefModelId)\n if (matchingByRef) {\n matchedProperty = matchingByRef\n }\n }\n } else {\n // For non-relation properties, prefer ones without refModelId\n const withoutRef = orphanedProperties.find((p: PropertyType) => p.refModelId === null)\n if (withoutRef) {\n matchedProperty = withoutRef\n }\n }\n \n propertyRecords = [matchedProperty]\n }\n }\n }\n \n if (propertyRecords.length > 0) {\n const propertyRecord = propertyRecords[0]\n \n // Get the base schema from file to merge with database values\n // Use the schema object created earlier, not model.schema (which doesn't exist)\n const schemaFromFile = schema[resolvedPropertyName]\n \n // Build property schema from database, merging with file schema for fields not in DB\n // Use the schema property name (resolvedPropertyName) even if DB has different name (renamed)\n const propertySchema: Static<typeof TProperty> & { _propertyFileId?: string; _dbId?: number } = {\n ...schemaFromFile, // Start with file schema (has all fields like storageType, etc.)\n id: propertyRecord.schemaFileId || propertyRecord.id?.toString(), // id should be schemaFileId (string), not database ID\n _dbId: propertyRecord.id, // Store database integer ID separately\n name: resolvedPropertyName, // Use schema name, not DB name (for renamed properties)\n dataType: propertyRecord.dataType as any,\n modelId: propertyRecord.modelId,\n modelName,\n refModelId: propertyRecord.refModelId || undefined,\n refValueType: (propertyRecord.refValueType as any) || undefined,\n required: (propertyRecord as { required?: boolean }).required ?? undefined,\n // Include schemaFileId from database as _propertyFileId for ModelProperty.create()\n _propertyFileId: propertyRecord.schemaFileId || undefined,\n }\n \n // If refModelId is set, try to get the refModelName\n if (propertyRecord.refModelId) {\n const refModelRecords = await db\n .select()\n .from(modelsTable)\n .where(eq(modelsTable.id, propertyRecord.refModelId))\n .limit(1)\n \n if (refModelRecords.length > 0) {\n propertySchema.refModelName = refModelRecords[0].name\n propertySchema.ref = refModelRecords[0].name\n }\n } else if (schemaFromFile?.ref) {\n // If refModelId is not set but schema file has ref, resolve it from the database\n // This handles cases where the property was just created and refModelId hasn't been set yet\n propertySchema.ref = schemaFromFile.ref\n propertySchema.refModelName = schemaFromFile.ref\n \n // Try to resolve refModelId from the database using the model name\n try {\n const refModelRecords = await db\n .select()\n .from(modelsTable)\n .where(eq(modelsTable.name, schemaFromFile.ref))\n .limit(1)\n \n if (refModelRecords.length > 0 && refModelRecords[0].id) {\n propertySchema.refModelId = refModelRecords[0].id\n }\n } catch (error) {\n // Ignore errors - model might not exist yet\n }\n }\n \n return propertySchema\n }\n }\n }\n } catch (error) {\n // Database not available or error - fall through to schema file lookup\n }\n \n // Fall back to schema file lookup\n const schemaFromFile = schema[resolvedPropertyName]\n if (schemaFromFile) {\n const propertySchema: Static<typeof TProperty> & { _propertyFileId?: string } = { ...schemaFromFile, name: resolvedPropertyName }\n \n // If schema file has id as a string (propertyFileId), set it as _propertyFileId\n // This handles cases where the property hasn't been saved to the database yet\n if (typeof schemaFromFile.id === 'string') {\n propertySchema._propertyFileId = schemaFromFile.id\n }\n \n // If the schema file has ref but no refModelId, try to resolve it from the database\n if (schemaFromFile.ref && !propertySchema.refModelId) {\n try {\n const db = BaseDb.getAppDb()\n if (db) {\n const refModelRecords = await db\n .select()\n .from(modelsTable)\n .where(eq(modelsTable.name, schemaFromFile.ref))\n .limit(1)\n \n if (refModelRecords.length > 0 && refModelRecords[0].id) {\n propertySchema.refModelId = refModelRecords[0].id\n propertySchema.refModelName = schemaFromFile.ref\n }\n }\n } catch (error) {\n // Ignore errors - model might not exist yet or database not available\n }\n }\n \n return propertySchema\n }\n return undefined\n}\n"],"names":["modelPropertiesToObject","resolveStorageNameToSchemaName","BaseDb","modelsTable","eq","properties","and"],"mappings":"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"}
@@ -1,42 +1,42 @@
1
1
  'use strict';
2
2
 
3
3
  var lodashEs = require('lodash-es');
4
- var main_cjs = require('./index-ByozbTn_.js');
4
+ var main_cjs = require('./index-vk2DeF2D.js');
5
5
  var drizzleOrm = require('drizzle-orm');
6
+ var eas$1 = require('@seedprotocol/eas');
6
7
  var pluralize = require('pluralize');
8
+ var eas = require('./eas-BwDKJmlb.js');
7
9
  require('immer');
8
10
  require('reflect-metadata');
9
11
  require('xstate');
10
12
  require('drizzle-orm/sqlite-core');
11
- require('nanoid');
12
- require('nanoid-dictionary');
13
13
  require('debug');
14
- require('ethers');
14
+ require('@seedprotocol/arweave');
15
15
  require('@sinclair/typebox');
16
+ require('nanoid');
17
+ require('nanoid-dictionary');
16
18
  require('drizzle-orm/casing');
17
19
  require('rxjs');
18
- require('arweave');
19
20
  require('js-sha3');
20
21
  require('fs/promises');
21
22
  require('fs');
22
23
  require('path');
24
+ require('node:url');
23
25
  require('@libsql/client');
24
26
  require('drizzle-orm/libsql');
25
- require('drizzle-kit/api');
27
+ require('drizzle-orm/libsql/migrator');
26
28
  require('js-yaml');
27
- require('ts-import');
28
- require('glob');
29
- require('rimraf');
29
+ require('@seedprotocol/webpack');
30
30
  require('child_process');
31
- require('url');
32
- require('graphql-request');
31
+ require('@seedprotocol/arweave/node');
32
+ require('@seedprotocol/eas/node');
33
33
 
34
34
  // Dynamic import to break circular dependency: Model -> BaseItem -> ... -> getModelSchemas -> Model
35
35
  // import { Model } from '@/Model/Model'
36
36
  const schemaStringToModelRecord = new Map();
37
37
  const getModelSchemas = async () => {
38
38
  // Dynamic import to break circular dependency
39
- const modelMod = await Promise.resolve().then(function () { return require('./index-ByozbTn_.js'); }).then(function (n) { return n.Model$1; });
39
+ const modelMod = await Promise.resolve().then(function () { return require('./index-vk2DeF2D.js'); }).then(function (n) { return n.Model$1; });
40
40
  const { Model } = modelMod;
41
41
  const allModels = await Model.all();
42
42
  const modelRecords = [];
@@ -314,7 +314,7 @@ let saveEasPropertiesDbChain = Promise.resolve();
314
314
  const saveEasPropertiesToDbBody = async ({ itemProperties, itemSeeds, }) => {
315
315
  const propertyUids = itemProperties.map((property) => property.id);
316
316
  // Dynamic import to break circular dependency
317
- const modelMod = await Promise.resolve().then(function () { return require('./index-ByozbTn_.js'); }).then(function (n) { return n.Model$1; });
317
+ const modelMod = await Promise.resolve().then(function () { return require('./index-vk2DeF2D.js'); }).then(function (n) { return n.Model$1; });
318
318
  const { Model } = modelMod;
319
319
  const allModels = await Model.all();
320
320
  const models = Object.fromEntries(allModels.map(m => [m.modelName, m]));
@@ -377,7 +377,7 @@ const saveEasPropertiesToDbBody = async ({ itemProperties, itemSeeds, }) => {
377
377
  let refSchemaUid;
378
378
  let isList = false;
379
379
  const schemaUid = property.schemaId;
380
- main_cjs.setSchemaUidForSchemaDefinition({
380
+ eas$1.setSchemaUidForSchemaDefinition({
381
381
  text: propertyNameSnake,
382
382
  schemaUid,
383
383
  });
@@ -478,9 +478,9 @@ const saveEasPropertiesToDb = (params) => {
478
478
  return next;
479
479
  };
480
480
  const getRelatedSeedsAndVersions = async () => {
481
- main_cjs.BaseQueryClient.getQueryClient();
482
- const easClient = main_cjs.BaseEasClient.getEasClient();
483
- const { itemSeeds } = await easClient.request(main_cjs.GET_SEEDS, {
481
+ eas$1.BaseQueryClient.getQueryClient();
482
+ const easClient = eas$1.BaseEasClient.getEasClient();
483
+ const { itemSeeds } = await easClient.request(eas$1.GET_SEEDS, {
484
484
  where: {
485
485
  id: {
486
486
  in: Array.from(relatedSeedUids),
@@ -488,7 +488,7 @@ const getRelatedSeedsAndVersions = async () => {
488
488
  },
489
489
  });
490
490
  await saveEasSeedsToDb({ itemSeeds });
491
- const { itemVersions } = await easClient.request(main_cjs.GET_VERSIONS, {
491
+ const { itemVersions } = await easClient.request(eas$1.GET_VERSIONS, {
492
492
  where: {
493
493
  refUID: {
494
494
  in: Array.from(relatedSeedUids),
@@ -497,7 +497,7 @@ const getRelatedSeedsAndVersions = async () => {
497
497
  });
498
498
  await saveEasVersionsToDb({ itemVersions });
499
499
  const relatedVersionUids = itemVersions.map((v) => v.id);
500
- const { itemProperties } = await easClient.request(main_cjs.GET_PROPERTIES, {
500
+ const { itemProperties } = await easClient.request(eas$1.GET_PROPERTIES, {
501
501
  where: {
502
502
  refUID: {
503
503
  in: relatedVersionUids,
@@ -516,25 +516,12 @@ const getRelatedSeedsAndVersions = async () => {
516
516
  */
517
517
  const runSyncFromEas = async (options) => {
518
518
  let addresses = options?.addresses ?? (await main_cjs.getAllAddressesFromDb());
519
- const additionalGetter = main_cjs.getGetAdditionalSyncAddresses();
520
- if (additionalGetter) {
521
- const additional = await additionalGetter();
522
- if (additional?.length) {
523
- const seen = new Set(addresses.map((a) => a.toLowerCase()));
524
- for (const addr of additional) {
525
- if (addr && !seen.has(addr.toLowerCase())) {
526
- seen.add(addr.toLowerCase());
527
- addresses = [...addresses, addr];
528
- }
529
- }
530
- }
531
- }
532
519
  if (!addresses || addresses.length === 0) {
533
520
  return;
534
521
  }
535
522
  const appDb = main_cjs.BaseDb.getAppDb();
536
523
  const { schemaStringToModelRecord } = await getModelSchemas();
537
- const modelSchemas = await main_cjs.getModelSchemasFromEas();
524
+ const modelSchemas = await eas.getModelSchemasFromEas();
538
525
  const schemaUids = [];
539
526
  for (const modelSchema of modelSchemas) {
540
527
  const foundModel = schemaStringToModelRecord.get(modelSchema.schema);
@@ -569,7 +556,7 @@ const runSyncFromEas = async (options) => {
569
556
  if (schemaUids.length === 0) {
570
557
  return;
571
558
  }
572
- const itemSeeds = await main_cjs.getSeedsFromSchemaUids({
559
+ const itemSeeds = await eas$1.getSeedsFromSchemaUids({
573
560
  schemaUids,
574
561
  addresses,
575
562
  excludeRevoked: false,
@@ -577,18 +564,18 @@ const runSyncFromEas = async (options) => {
577
564
  const { seedUids } = await saveEasSeedsToDb({
578
565
  itemSeeds,
579
566
  });
580
- const itemVersions = await main_cjs.getItemVersionsFromEas({
567
+ const itemVersions = await eas$1.getItemVersionsFromEas({
581
568
  seedUids,
582
569
  excludeRevoked: false,
583
570
  });
584
571
  const { versionUids } = await saveEasVersionsToDb({
585
572
  itemVersions,
586
573
  });
587
- const rawProperties = await main_cjs.getItemPropertiesFromEas({
574
+ const rawProperties = await eas$1.getItemPropertiesFromEas({
588
575
  versionUids,
589
576
  excludeRevoked: false,
590
577
  });
591
- const itemProperties = main_cjs.pickLatestPropertyAttestationsByRefAndSchema(rawProperties);
578
+ const itemProperties = eas$1.pickLatestPropertyAttestationsByRefAndSchema(rawProperties);
592
579
  await saveEasPropertiesToDb({
593
580
  itemProperties,
594
581
  itemSeeds,
@@ -596,7 +583,7 @@ const runSyncFromEas = async (options) => {
596
583
  await getRelatedSeedsAndVersions();
597
584
  main_cjs.scheduleBulkFilesDownloadFromEasSync(addresses);
598
585
  try {
599
- const itemMod = await Promise.resolve().then(function () { return require('./index-ByozbTn_.js'); }).then(function (n) { return n.Item$1; });
586
+ const itemMod = await Promise.resolve().then(function () { return require('./index-vk2DeF2D.js'); }).then(function (n) { return n.Item$1; });
600
587
  await itemMod.Item.rehydrateCachedItemsFromDbAfterEasSync();
601
588
  }
602
589
  catch (err) {
@@ -606,4 +593,4 @@ const runSyncFromEas = async (options) => {
606
593
  };
607
594
 
608
595
  exports.runSyncFromEas = runSyncFromEas;
609
- //# sourceMappingURL=syncDbWithEas-CA2Lum5V.js.map
596
+ //# sourceMappingURL=syncDbWithEas-Dht3_7UD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncDbWithEas-Dht3_7UD.js","sources":["../../../src/db/read/getModelSchemas.ts","../../../src/db/write/createSeeds.ts","../../../src/db/write/updateSeedRevokedAt.ts","../../../src/events/item/syncDbWithEas.ts"],"sourcesContent":["// Dynamic import to break circular dependency: Model -> BaseItem -> ... -> getModelSchemas -> Model\n// import { Model } from '@/Model/Model'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { models as modelsTable, modelUids } from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\nimport pluralize from 'pluralize'\nimport { toSnakeCase } from '@/helpers'\n\ntype ModelRecord = {\n id: number\n name: string\n uid: string | null\n tableName?: string\n}\n\nconst schemaStringToModelRecord = new Map<string, ModelRecord>()\n\ntype GetModelSchemasReturn = {\n schemaStringToModelRecord: Map<string, ModelRecord>\n modelRecords: ModelRecord[]\n}\n\ntype GetModelSchemas = () => Promise<GetModelSchemasReturn>\n\nexport const getModelSchemas: GetModelSchemas = async () => {\n // Dynamic import to break circular dependency\n const modelMod = await import('../../Model/Model')\n const { Model } = modelMod\n const allModels = await Model.all()\n const modelRecords: ModelRecord[] = []\n\n const appDb = BaseDb.getAppDb()\n\n for (const model of allModels) {\n const modelName = model.modelName\n if (!modelName) continue\n const foundModelQuery = await appDb\n .select({\n id: modelsTable.id,\n name: modelsTable.name,\n uid: modelUids.uid,\n })\n .from(modelsTable)\n .leftJoin(modelUids, eq(modelsTable.id, modelUids.modelId))\n .where(eq(modelsTable.name, modelName))\n .limit(1)\n\n if (!foundModelQuery[0]) {\n console.error(\n `[item/events] [syncDbWithEas] model ${modelName} not found in SDK DB`,\n )\n continue\n }\n\n const foundModel: ModelRecord = {\n id: foundModelQuery[0].id,\n name: foundModelQuery[0].name,\n uid: foundModelQuery[0].uid,\n tableName: pluralize(foundModelQuery[0].name).toLowerCase(),\n }\n\n modelRecords.push(foundModel)\n\n if (modelName === 'Seed') {\n continue\n }\n\n const schemaString = `bytes32 ${toSnakeCase(modelName)}`\n\n schemaStringToModelRecord.set(schemaString, foundModel)\n }\n\n return {\n schemaStringToModelRecord,\n modelRecords,\n }\n}\n","import { seeds, SeedType } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\ntype CreateSeeds = (newSeeds: Partial<SeedType>[]) => Promise<string[]>\n\nexport const createSeeds: CreateSeeds = async (\n newSeeds: Partial<SeedType>[],\n) => {\n const appDb = BaseDb.getAppDb()\n\n const results = await appDb\n .insert(seeds)\n .values(newSeeds)\n .returning({ uid: seeds.uid })\n\n const newUids = results.reduce((acc: string[], result: { uid: string | null }) => {\n if (result.uid) {\n acc.push(result.uid)\n }\n return acc\n }, [] as string[])\n\n return newUids\n}\n","import { BaseDb } from '@/db/Db/BaseDb'\nimport { seeds } from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\n\ntype UpdateSeedRevokedAtProps = {\n seedLocalId: string\n revokedAt: number\n}\n\n/**\n * Sets revokedAt timestamp on a seed record after attestations have been revoked on EAS.\n */\nexport const updateSeedRevokedAt = async ({\n seedLocalId,\n revokedAt,\n}: UpdateSeedRevokedAtProps): Promise<void> => {\n if (!seedLocalId) {\n return\n }\n\n const appDb = BaseDb.getAppDb()\n\n await appDb\n .update(seeds)\n .set({\n revokedAt,\n updatedAt: Date.now(),\n })\n .where(eq(seeds.localId, seedLocalId))\n}\n","import { camelCase, startCase } from 'lodash-es'\nimport { Attestation, SchemaWhereInput } from '@seedprotocol/eas'\nimport {\n metadata,\n MetadataType,\n modelUids,\n seeds,\n SeedType,\n versions,\n} from '@/seedSchema'\nimport { and, eq, inArray, sql } from 'drizzle-orm'\nimport {\n generateId,\n parseEasRelationPropertyName,\n} from '@/helpers'\nimport { modelPropertiesToObject } from '@/helpers/model'\nimport {\n GET_PROPERTIES,\n GET_SEEDS,\n GET_VERSIONS,\n} from '@seedprotocol/eas'\nimport { escapeSqliteString, getAllAddressesFromDb, getPropertyIdForModelAndName } from '@/helpers/db'\n// Dynamic import to break circular dependency: Model -> BaseItem -> ... -> syncDbWithEas -> Model\n// import { Model } from '@/Model/Model'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getModelSchemas } from '@/db/read/getModelSchemas'\nimport { ModelSchema, PropertyType } from '@/types'\nimport { createSeeds } from '@/db/write/createSeeds'\nimport { updateSeedRevokedAt } from '@/db/write/updateSeedRevokedAt'\nimport { setSchemaUidForSchemaDefinition } from '@/stores/eas'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\nimport {\n getItemPropertiesFromEas,\n getItemVersionsFromEas,\n getModelSchemasFromEas,\n getSeedsFromSchemaUids,\n} from '@/eas'\nimport { pickLatestPropertyAttestationsByRefAndSchema } from '@/helpers/easPropertyCanonical'\nimport { getGetAdditionalSyncAddresses } from '@/helpers/publishConfig'\nimport { scheduleBulkFilesDownloadFromEasSync } from '@/events/files/download'\nimport { eventEmitter } from '@/eventBus'\nimport { EAS_SEED_DATA_SYNCED_TO_DB_EVENT } from '@/helpers/constants'\n\nconst relationValuesToExclude = [\n '0x0000000000000000000000000000000000000000000000000000000000000020',\n]\n\n\nconst seedUidToLocalId = new Map<string, string>()\nconst seedUidToModelType = new Map<string, string>()\nconst relatedSeedUids = new Set<string>()\n\nconst versionUidToLocalId = new Map<string, string>()\nconst versionUidToSeedUid = new Map<string, string>()\n\nconst propertyUidToLocalId = new Map<string, string>()\n\ntype SaveEasSeedsToDbProps = {\n itemSeeds: Attestation[]\n}\n\ntype SaveEasSeedsToDbReturn = {\n seedUids: string[]\n}\n\ntype SaveEasSeedsToDb = (\n props: SaveEasSeedsToDbProps,\n) => Promise<SaveEasSeedsToDbReturn>\n\nconst saveEasSeedsToDb: SaveEasSeedsToDb = async ({ itemSeeds }) => {\n const appDb = BaseDb.getAppDb()\n\n const seedUids = itemSeeds.map((seed) => seed.id)\n\n const existingSeedRecordsRows: SeedType[] = await appDb\n .select()\n .from(seeds)\n .where(inArray(seeds.uid, seedUids))\n\n const existingSeedUids = new Set<string>()\n\n if (existingSeedRecordsRows && existingSeedRecordsRows.length > 0) {\n for (const row of existingSeedRecordsRows) {\n if (row.uid) {\n existingSeedUids.add(row.uid)\n if (row.localId) {\n seedUidToLocalId.set(row.uid, row.localId)\n }\n if (row.type) {\n seedUidToModelType.set(row.uid, row.type)\n }\n }\n }\n }\n\n const newSeeds = itemSeeds.filter((seed) => !existingSeedUids.has(seed.id))\n\n // Update existing seeds when attestations are revoked on EAS\n const seedByUid = new Map(itemSeeds.map((s) => [s.id, s]))\n for (const row of existingSeedRecordsRows) {\n if (!row.uid || !row.localId) continue\n const attestation = seedByUid.get(row.uid)\n if (!attestation?.revoked) continue\n if (row.revokedAt != null) continue\n const revokedAt =\n attestation.revocationTime > 0\n ? attestation.revocationTime\n : Math.floor(Date.now() / 1000)\n await updateSeedRevokedAt({ seedLocalId: row.localId, revokedAt })\n }\n\n if (newSeeds.length === 0) {\n return { seedUidToLocalId, seedUids }\n }\n\n const newSeedsData: Partial<SeedType>[] = []\n\n for (let i = 0; i < newSeeds.length; i++) {\n const seed = newSeeds[i]\n seedUidToModelType.set(seed.id, seed.schema.schemaNames[0].name)\n const seedLocalId = generateId()\n seedUidToLocalId.set(seed.id, seedLocalId)\n\n const attestationRaw = escapeSqliteString(JSON.stringify(seed))\n const revokedAt =\n seed.revoked && seed.revocationTime != null && seed.revocationTime > 0\n ? seed.revocationTime\n : seed.revoked\n ? Math.floor(Date.now() / 1000)\n : undefined\n\n newSeedsData.push({\n localId: seedLocalId,\n uid: seed.id,\n schemaUid: seed.schemaId,\n type: seed.schema.schemaNames[0].name,\n publisher: seed.attester,\n createdAt: Date.now(),\n attestationCreatedAt: seed.timeCreated * 1000,\n attestationRaw,\n ...(revokedAt !== undefined && { revokedAt }),\n })\n\n seedUidToLocalId.set(seed.id, seedLocalId)\n }\n\n const newSeedUids = await createSeeds(newSeedsData)\n\n return { seedUids: newSeedUids }\n}\n\ntype SaveEasVersionsToDbParams = {\n itemVersions: Attestation[]\n}\n\ntype SaveEasVersionsToDb = (\n props: SaveEasVersionsToDbParams,\n) => Promise<SaveEasVersionsToDbReturn>\n\ntype SaveEasVersionsToDbReturn = {\n versionUids: string[]\n}\n\nconst saveEasVersionsToDb: SaveEasVersionsToDb = async ({ itemVersions }) => {\n const versionUids = itemVersions.map((version) => version.id)\n\n const appDb = BaseDb.getAppDb()\n\n const existingVersionRecordsRows: MetadataType[] = await appDb\n .select()\n .from(versions)\n .where(inArray(versions.uid, versionUids))\n\n const existingVersionUids = new Set<string>()\n\n if (existingVersionRecordsRows && existingVersionRecordsRows.length > 0) {\n for (const row of existingVersionRecordsRows) {\n if (row.uid) {\n existingVersionUids.add(row.uid)\n if (row.localId) {\n versionUidToLocalId.set(row.uid, row.localId)\n }\n if (row.seedUid) {\n versionUidToSeedUid.set(row.uid, row.seedUid)\n }\n }\n }\n }\n\n const newVersions = itemVersions.filter(\n (version) => !existingVersionUids.has(version.id),\n )\n\n if (newVersions.length === 0) {\n return { versionUidToLocalId, versionUids }\n }\n\n let insertVersionsQuery = `INSERT INTO versions (local_id, uid, seed_uid, seed_local_id, seed_type, created_at,\n attestation_created_at,\n attestation_raw, publisher)\n VALUES `\n\n for (let i = 0; i < newVersions.length; i++) {\n const version = newVersions[i]\n versionUidToSeedUid.set(version.id, version.refUID)\n const versionLocalId = generateId()\n versionUidToLocalId.set(version.id, versionLocalId)\n\n const seedUid = versionUidToSeedUid.get(version.id)\n const seedLocalId = seedUidToLocalId.get(seedUid!)\n const seedType = seedUidToModelType.get(seedUid!)\n const attestationRaw = escapeSqliteString(JSON.stringify(version))\n const publisher = escapeSqliteString(version.attester ?? '')\n\n const valuesString = `('${versionLocalId}', '${version.id}', '${seedUid}', '${seedLocalId}', '${seedType}', ${Date.now()}, ${version.timeCreated * 1000}, '${attestationRaw}', '${publisher}')`\n\n if (i < newVersions.length - 1) {\n insertVersionsQuery += valuesString + ', '\n }\n\n if (i === newVersions.length - 1) {\n insertVersionsQuery += valuesString + ';'\n }\n\n versionUidToLocalId.set(version.id, versionLocalId)\n }\n\n await appDb.run(sql.raw(insertVersionsQuery))\n\n return { versionUids }\n}\n\nconst createMetadataRecordsForStorageTransactionId = async (\n storageTransactionIdProperty: Attestation,\n modelSchema: ModelSchema | undefined,\n) => {\n // Early return if modelSchema is not provided\n if (!modelSchema) {\n console.warn(\n '[item/events] [syncDbWithEas] modelSchema is undefined for storageTransactionIdProperty: ',\n storageTransactionIdProperty.id,\n )\n return\n }\n\n // Validate and parse decodedDataJson\n if (!storageTransactionIdProperty.decodedDataJson || storageTransactionIdProperty.decodedDataJson.trim() === '') {\n console.warn(\n '[item/events] [syncDbWithEas] empty decodedDataJson for storageTransactionIdProperty: ',\n storageTransactionIdProperty.id,\n )\n return\n }\n\n let parsedData\n try {\n parsedData = JSON.parse(storageTransactionIdProperty.decodedDataJson)\n } catch (error) {\n console.warn(\n '[item/events] [syncDbWithEas] failed to parse decodedDataJson for storageTransactionIdProperty: ',\n storageTransactionIdProperty.id,\n error,\n )\n return\n }\n\n if (!Array.isArray(parsedData) || parsedData.length === 0 || !parsedData[0]?.value) {\n console.warn(\n '[item/events] [syncDbWithEas] invalid decodedDataJson structure for storageTransactionIdProperty: ',\n storageTransactionIdProperty.id,\n )\n return\n }\n\n const attestationData = parsedData[0].value\n const propertyName = camelCase(attestationData.name)\n const propertyValue = attestationData.value\n\n const itemStorageProperties = new Map<string, PropertyType>()\n\n for (const [_propertyName, propertyDef] of Object.entries(modelSchema)) {\n if (propertyDef?.storageType && propertyDef.storageType === 'ItemStorage') {\n itemStorageProperties.set(_propertyName, propertyDef)\n }\n }\n\n if (itemStorageProperties.size === 0) {\n return\n }\n\n const appDb = BaseDb.getAppDb()\n\n for (const [_propertyName, propertyDef] of itemStorageProperties.entries()) {\n const existingMetadataRecordRows = await appDb\n .select()\n .from(metadata)\n .where(\n and(\n eq(metadata.propertyName, _propertyName),\n eq(metadata.propertyValue, propertyValue),\n eq(metadata.versionUid, storageTransactionIdProperty.refUID),\n ),\n )\n\n if (existingMetadataRecordRows && existingMetadataRecordRows.length > 0) {\n continue\n }\n\n const seedUid = versionUidToSeedUid.get(\n storageTransactionIdProperty.refUID,\n ) as string\n const seedLocalId = seedUidToLocalId.get(seedUid)\n const versionUid = storageTransactionIdProperty.refUID\n const versionLocalId = versionUidToLocalId.get(versionUid)\n const modelType = seedUidToModelType.get(seedUid)\n const propertyId =\n modelType != null\n ? await getPropertyIdForModelAndName(modelType, _propertyName)\n : null\n\n const propertyLocalId = generateId()\n await appDb.insert(metadata).values({\n localId: propertyLocalId,\n propertyId: propertyId ?? undefined,\n propertyName: _propertyName,\n propertyValue,\n localStorageDir: propertyDef.localStorageDir,\n seedLocalId,\n seedUid,\n versionLocalId,\n versionUid,\n refValueType: 'file',\n refResolvedValue: `${propertyValue}${propertyDef.filenameSuffix}`,\n modelType: seedUidToModelType.get(seedUid),\n createdAt: Date.now(),\n updatedAt: Date.now(),\n })\n }\n}\n\ntype SaveEasPropertiesToDbParams = {\n itemProperties: Attestation[]\n itemSeeds: Attestation[]\n}\n\ntype SaveEasPropertiesToDbReturn = {\n propertyUids: string[]\n propertyUidToLocalId?: Map<string, string>\n}\n\ntype SaveEasPropertiesToDb = (\n props: SaveEasPropertiesToDbParams,\n) => Promise<SaveEasPropertiesToDbReturn>\n\n/** Serialize property saves: concurrent `runSyncFromEas` used to hit `isSavingToDb` and return `{}` with no insert. */\nlet saveEasPropertiesDbChain: Promise<unknown> = Promise.resolve()\n\nconst saveEasPropertiesToDbBody = async ({\n itemProperties,\n itemSeeds,\n}: SaveEasPropertiesToDbParams): Promise<SaveEasPropertiesToDbReturn> => {\n const propertyUids = itemProperties.map((property) => property.id)\n\n // Dynamic import to break circular dependency\n const modelMod = await import('../../Model/Model')\n const { Model } = modelMod\n const allModels = await Model.all()\n const models = Object.fromEntries(allModels.map(m => [m.modelName!, m]))\n\n const appDb = BaseDb.getAppDb()\n\n const existingMetadataRecordsRows: MetadataType[] = await appDb\n .select()\n .from(metadata)\n .where(inArray(metadata.uid, propertyUids))\n\n const existingPropertyRecordsUids = new Set<string>()\n\n if (existingMetadataRecordsRows && existingMetadataRecordsRows.length > 0) {\n for (const row of existingMetadataRecordsRows) {\n if (row.uid) {\n existingPropertyRecordsUids.add(row.uid)\n if (row.localId) {\n propertyUidToLocalId.set(row.uid, row.localId)\n }\n }\n }\n }\n\n const newProperties = itemProperties.filter(\n (property) => !existingPropertyRecordsUids.has(property.id),\n )\n\n if (newProperties.length === 0) {\n return { propertyUidToLocalId, propertyUids }\n }\n\n let insertPropertiesQuery = `INSERT INTO metadata (local_id, uid, schema_uid, property_id, property_name, property_value,\n eas_data_type, version_uid, version_local_id, seed_uid,\n seed_local_id, model_type, ref_value_type, ref_seed_type,\n ref_schema_uid,\n created_at, attestation_created_at, attestation_raw,\n local_storage_dir, ref_resolved_value, publisher)\n VALUES `\n\n for (let i = 0; i < newProperties.length; i++) {\n const property = newProperties[i]\n const propertyLocalId = generateId()\n \n // Validate and parse decodedDataJson\n if (!property.decodedDataJson || property.decodedDataJson.trim() === '') {\n console.warn(\n '[item/events] [syncDbWithEas] empty decodedDataJson for property: ',\n property.id,\n )\n continue\n }\n\n let parsedData\n try {\n parsedData = JSON.parse(property.decodedDataJson)\n } catch (error) {\n console.warn(\n '[item/events] [syncDbWithEas] failed to parse decodedDataJson for property: ',\n property.id,\n error,\n )\n continue\n }\n\n if (!Array.isArray(parsedData) || parsedData.length === 0 || !parsedData[0]?.value) {\n console.warn(\n '[item/events] [syncDbWithEas] invalid decodedDataJson structure for property: ',\n property.id,\n )\n continue\n }\n\n const metadata = parsedData[0].value\n\n let propertyNameSnake = metadata.name\n\n if (!propertyNameSnake) {\n console.warn(\n '[item/events] [syncDbWithEas] no propertyName found for property: ',\n property,\n )\n continue\n }\n\n let isRelation = false\n let refValueType\n let refSeedType\n let refSchemaUid\n let refResolvedValue\n let isList = false\n const schemaUid = property.schemaId\n\n setSchemaUidForSchemaDefinition({\n text: propertyNameSnake,\n schemaUid,\n })\n\n if (\n (propertyNameSnake.endsWith('_id') ||\n propertyNameSnake.endsWith('_ids')) &&\n propertyNameSnake !== 'storage_transaction_id' &&\n propertyNameSnake !== 'storage_provider_transaction_id'\n ) {\n isRelation = true\n\n if (Array.isArray(metadata.value)) {\n isList = true\n refValueType = 'list'\n\n const result = parseEasRelationPropertyName(propertyNameSnake)\n\n if (result) {\n propertyNameSnake = result.propertyName\n refSeedType = result.modelName\n }\n\n metadata.value.forEach((value: string) => {\n relatedSeedUids.add(value)\n })\n }\n\n if (!isList) {\n if (relationValuesToExclude.includes(metadata.value)) {\n continue\n }\n relatedSeedUids.add(metadata.value)\n }\n }\n\n let propertyValue = metadata.value\n\n if (typeof propertyValue !== 'string') {\n propertyValue = JSON.stringify(propertyValue)\n }\n\n if (isRelation && !isList) {\n const relatedSeed = itemSeeds.find(\n (seed: Attestation) => seed.id === metadata.value,\n )\n if (relatedSeed && relatedSeed.schema && relatedSeed.schema.schemaNames) {\n refSeedType = relatedSeed.schema.schemaNames[0].name\n refSchemaUid = relatedSeed.schemaId\n }\n }\n\n if (isRelation && isList) {\n const relatedSeeds = itemSeeds.filter((seed: Attestation) =>\n metadata.value.includes(seed.id),\n )\n if (relatedSeeds && relatedSeeds.length > 0) {\n refSeedType = relatedSeeds[0].schema.schemaNames[0].name\n refSchemaUid = relatedSeeds[0].schemaId\n }\n }\n\n const propertyName = camelCase(propertyNameSnake)\n propertyValue = escapeSqliteString(propertyValue)\n const easDataType = metadata.type\n const versionUid = property.refUID\n const versionLocalId = versionUidToLocalId.get(versionUid)\n const attestationCreatedAt = property.timeCreated * 1000\n const attestationRaw = escapeSqliteString(JSON.stringify(property))\n const seedUid = versionUidToSeedUid.get(versionUid)\n const seedLocalId = seedUidToLocalId.get(seedUid!)\n const modelType = seedUidToModelType.get(seedUid!)\n\n let localStorageDir\n const modelName = startCase(modelType)\n const model = models[modelName]\n const modelSchema = model?.properties ? modelPropertiesToObject(model.properties) : undefined\n\n if (propertyNameSnake === 'storage_transaction_id') {\n await createMetadataRecordsForStorageTransactionId(property, modelSchema)\n }\n\n const propertyId =\n modelType != null\n ? await getPropertyIdForModelAndName(modelType, propertyName)\n : null\n const propertyIdSql = propertyId != null ? String(propertyId) : 'NULL'\n\n const publisher = escapeSqliteString(property.attester ?? '')\n const valuesString = `('${propertyLocalId}', '${property.id}', \n '${property.schemaId}', ${propertyIdSql}, '${propertyName}', \n '${propertyValue}', '${easDataType}', '${versionUid}', \n '${versionLocalId}', '${seedUid}', '${seedLocalId}', \n '${modelType}', ${refValueType ? `'${refValueType}'` : 'NULL'}, \n ${refSeedType ? `'${refSeedType}'` : 'NULL'},\n ${refSchemaUid ? `'${refSchemaUid}'` : 'NULL'},\n ${Date.now()}, ${attestationCreatedAt}, '${attestationRaw}',\n ${localStorageDir ? `'${localStorageDir}'` : 'NULL'},\n ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'},\n '${publisher}')`\n\n if (i < newProperties.length - 1) {\n insertPropertiesQuery += valuesString + ', '\n }\n\n if (i === newProperties.length - 1) {\n insertPropertiesQuery += valuesString + ';'\n }\n\n propertyUidToLocalId.set(property.id, propertyLocalId)\n }\n\n if (insertPropertiesQuery.endsWith('VALUES ')) {\n return { propertyUids }\n }\n\n if (insertPropertiesQuery.endsWith(', ')) {\n insertPropertiesQuery = insertPropertiesQuery.slice(0, -2) + ';'\n }\n\n await appDb.run(sql.raw(insertPropertiesQuery))\n\n return { propertyUids }\n}\n\nconst saveEasPropertiesToDb: SaveEasPropertiesToDb = (params) => {\n const next = saveEasPropertiesDbChain.then(() => saveEasPropertiesToDbBody(params))\n saveEasPropertiesDbChain = next.then(\n () => undefined,\n () => undefined,\n )\n return next\n}\n\nconst getRelatedSeedsAndVersions = async () => {\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemSeeds } = await easClient.request(GET_SEEDS, {\n where: {\n id: {\n in: Array.from(relatedSeedUids),\n },\n },\n })\n\n await saveEasSeedsToDb({ itemSeeds })\n\n const { itemVersions } = await easClient.request(GET_VERSIONS, {\n where: {\n refUID: {\n in: Array.from(relatedSeedUids),\n },\n },\n })\n\n await saveEasVersionsToDb({ itemVersions })\n\n const relatedVersionUids = itemVersions.map((v) => v.id)\n\n const { itemProperties } = await easClient.request(GET_PROPERTIES, {\n where: {\n refUID: {\n in: relatedVersionUids,\n },\n },\n })\n\n await saveEasPropertiesToDb({\n itemProperties,\n itemSeeds,\n })\n}\n\nexport type SyncFromEasOptions = {\n /** Override addresses to sync. Default: owned + watched from DB. */\n addresses?: string[]\n}\n\n/**\n * Core sync logic: fetches item attestations from EAS for configured models and given addresses,\n * then saves seeds, versions, and properties to the local DB.\n * Uses owned + watched addresses from DB when addresses are not provided.\n */\nexport const runSyncFromEas = async (options?: SyncFromEasOptions): Promise<void> => {\n let addresses = options?.addresses ?? (await getAllAddressesFromDb())\n const additionalGetter = getGetAdditionalSyncAddresses()\n if (additionalGetter) {\n const additional = await additionalGetter()\n if (additional?.length) {\n const seen = new Set(addresses.map((a) => a.toLowerCase()))\n for (const addr of additional) {\n if (addr && !seen.has(addr.toLowerCase())) {\n seen.add(addr.toLowerCase())\n addresses = [...addresses, addr]\n }\n }\n }\n }\n if (!addresses || addresses.length === 0) {\n return\n }\n\n const appDb = BaseDb.getAppDb()\n\n const { schemaStringToModelRecord } = await getModelSchemas()\n\n const modelSchemas = await getModelSchemasFromEas()\n\n const schemaUids: string[] = []\n\n for (const modelSchema of modelSchemas) {\n const foundModel = schemaStringToModelRecord.get(modelSchema.schema)\n\n if (!foundModel) {\n // Skip schemas that don't have a corresponding model in the user's config\n // This can happen with \"bytes32 image\" if there's no Image model defined\n console.warn(\n `[item/events] [syncDbWithEas] Model not found for schema ${modelSchema.schema}, skipping`\n )\n continue\n }\n\n try {\n await appDb\n .insert(modelUids)\n .values({\n modelId: foundModel.id,\n uid: modelSchema.id,\n })\n .onConflictDoNothing()\n } catch (err: unknown) {\n // Model may have been deleted by test teardown or another process; skip to avoid unhandled rejection\n const e = err as { code?: string; rawCode?: number; cause?: { code?: string; rawCode?: number } }\n const code = e?.code ?? e?.rawCode ?? e?.cause?.code ?? e?.cause?.rawCode\n if (code === 'SQLITE_CONSTRAINT_FOREIGNKEY' || code === 787) {\n continue\n }\n throw err\n }\n\n schemaUids.push(modelSchema.id)\n }\n\n // If no schemas were found, skip the rest of the sync process\n // This can happen when models exist but don't have schemas registered in EAS yet\n if (schemaUids.length === 0) {\n return\n }\n\n const itemSeeds = await getSeedsFromSchemaUids({\n schemaUids,\n addresses,\n excludeRevoked: false,\n })\n\n const { seedUids } = await saveEasSeedsToDb({\n itemSeeds,\n })\n\n const itemVersions = await getItemVersionsFromEas({\n seedUids,\n excludeRevoked: false,\n })\n\n const { versionUids } = await saveEasVersionsToDb({\n itemVersions,\n })\n\n const rawProperties = await getItemPropertiesFromEas({\n versionUids,\n excludeRevoked: false,\n })\n const itemProperties = pickLatestPropertyAttestationsByRefAndSchema(rawProperties)\n\n await saveEasPropertiesToDb({\n itemProperties,\n itemSeeds,\n })\n\n await getRelatedSeedsAndVersions()\n scheduleBulkFilesDownloadFromEasSync(addresses)\n\n try {\n const itemMod = await import('../../Item/Item')\n await itemMod.Item.rehydrateCachedItemsFromDbAfterEasSync()\n } catch (err) {\n console.warn('[item/events] [syncDbWithEas] rehydrateCachedItemsFromDbAfterEasSync:', err)\n }\n eventEmitter.emit(EAS_SEED_DATA_SYNCED_TO_DB_EVENT)\n}\n\n"],"names":["BaseDb","modelsTable","modelUids","eq","toSnakeCase","seeds","inArray","generateId","escapeSqliteString","versions","sql","camelCase","metadata","and","getPropertyIdForModelAndName","setSchemaUidForSchemaDefinition","parseEasRelationPropertyName","startCase","modelPropertiesToObject","BaseQueryClient","BaseEasClient","GET_SEEDS","GET_VERSIONS","GET_PROPERTIES","getAllAddressesFromDb","getModelSchemasFromEas","getSeedsFromSchemaUids","getItemVersionsFromEas","getItemPropertiesFromEas","pickLatestPropertyAttestationsByRefAndSchema","scheduleBulkFilesDownloadFromEasSync","eventEmitter","EAS_SEED_DATA_SYNCED_TO_DB_EVENT"],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { t as BasePathResolver, a as BaseFileManager, B as BaseDb } from './BasePathResolver-BDgc7c4T.js';
2
+ import './constants-B5S5JPDK.js';
3
+ import { BaseEasClient, BaseQueryClient } from '@seedprotocol/eas';
4
+ import { BaseArweaveClient } from '@seedprotocol/arweave';
5
+ import 'drizzle-orm/sqlite-core';
6
+ import 'drizzle-orm';
7
+ import 'debug';
8
+ import 'xstate';
9
+ import 'pluralize';
10
+ import '@sinclair/typebox';
11
+ import 'nanoid';
12
+ import 'nanoid-dictionary';
13
+
14
+ /**
15
+ * Wire all platform facades to the given service instances.
16
+ */
17
+ function configurePlatform(services) {
18
+ BasePathResolver.configure(services.pathResolver);
19
+ BaseFileManager.configure(services.fileManager);
20
+ BaseDb.configure(services.db);
21
+ BaseArweaveClient.configure(services.arweaveClient);
22
+ BaseEasClient.configure(services.easClient);
23
+ BaseQueryClient.configure(services.queryClient);
24
+ }
25
+
26
+ export { configurePlatform };
27
+ //# sourceMappingURL=configurePlatform-R5neRbQ9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configurePlatform-R5neRbQ9.js","sources":["../../src/platform/configurePlatform.ts"],"sourcesContent":["import { BasePathResolver } from '@/helpers/PathResolver/BasePathResolver'\nimport { BaseFileManager } from '@/helpers/FileManager/BaseFileManager'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { BaseArweaveClient } from '@/helpers'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\nimport type { PlatformServices } from './types'\n\n/**\n * Wire all platform facades to the given service instances.\n */\nexport function configurePlatform(services: PlatformServices): void {\n BasePathResolver.configure(services.pathResolver)\n BaseFileManager.configure(services.fileManager)\n BaseDb.configure(services.db)\n BaseArweaveClient.configure(services.arweaveClient)\n BaseEasClient.configure(services.easClient)\n BaseQueryClient.configure(services.queryClient)\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AAQA;;AAEG;AACG,SAAU,iBAAiB,CAAC,QAA0B,EAAA;AAC1D,IAAA,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;AACjD,IAAA,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC/C,IAAA,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC7B,IAAA,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC;AACnD,IAAA,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC3C,IAAA,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;AACjD;;;;"}