@seedprotocol/sdk 0.4.14 → 0.4.15

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 (363) hide show
  1. package/dist/{ArweaveClient-D6E8xe3J.js → ArweaveClient-DPeCeRMF.js} +21 -18
  2. package/dist/ArweaveClient-DPeCeRMF.js.map +1 -0
  3. package/dist/{ArweaveClient-DElJwN08.js → ArweaveClient-Zz6VwCkj.js} +21 -18
  4. package/dist/ArweaveClient-Zz6VwCkj.js.map +1 -0
  5. package/dist/{Db-De4o7jww.js → Db-Cvoi9q3N.js} +8 -5
  6. package/dist/Db-Cvoi9q3N.js.map +1 -0
  7. package/dist/{Db-DW1Un2jz.js → Db-DsFElL33.js} +356 -52
  8. package/dist/Db-DsFElL33.js.map +1 -0
  9. package/dist/{EasClient-BpGDIkmb.js → EasClient-B2N8bc3C.js} +6 -5
  10. package/dist/{EasClient-DGY_mkrd.js.map → EasClient-B2N8bc3C.js.map} +1 -1
  11. package/dist/{EasClient-DGY_mkrd.js → EasClient-D5Nn1WBF.js} +6 -5
  12. package/dist/{EasClient-BpGDIkmb.js.map → EasClient-D5Nn1WBF.js.map} +1 -1
  13. package/dist/{FileManager-DrHQbmYj.js → FileManager-Bk-JeMoA.js} +48 -11
  14. package/dist/FileManager-Bk-JeMoA.js.map +1 -0
  15. package/dist/{FileManager-Cw8mOIqZ.js → FileManager-Cqy_Lq46.js} +12 -8
  16. package/dist/FileManager-Cqy_Lq46.js.map +1 -0
  17. package/dist/{ModelProperty-D8d25NtC.js → ModelProperty-CkQaEsBu.js} +30 -28
  18. package/dist/ModelProperty-CkQaEsBu.js.map +1 -0
  19. package/dist/{PathResolver-D1k3dZg5.js → PathResolver-C3sdR5LL.js} +6 -5
  20. package/dist/{PathResolver-D1k3dZg5.js.map → PathResolver-C3sdR5LL.js.map} +1 -1
  21. package/dist/{PathResolver-BHj0UZTj.js → PathResolver-DF1QFI1d.js} +6 -5
  22. package/dist/{PathResolver-BHj0UZTj.js.map → PathResolver-DF1QFI1d.js.map} +1 -1
  23. package/dist/{QueryClient-BCVom0BA.js → QueryClient-CnONLIkA.js} +6 -5
  24. package/dist/{QueryClient-BCVom0BA.js.map → QueryClient-CnONLIkA.js.map} +1 -1
  25. package/dist/{QueryClient-D4974vvo.js → QueryClient-Ctgd0tDn.js} +6 -5
  26. package/dist/{QueryClient-D4974vvo.js.map → QueryClient-Ctgd0tDn.js.map} +1 -1
  27. package/dist/{Schema-CLlE7onI.js → Schema-Bnim4hAF.js} +90 -57
  28. package/dist/Schema-Bnim4hAF.js.map +1 -0
  29. package/dist/{SchemaValidationService-CwKY3QlY.js → SchemaValidationService-DXxRk-9Q.js} +138 -38
  30. package/dist/SchemaValidationService-DXxRk-9Q.js.map +1 -0
  31. package/dist/backfillMetadataPropertyIds-dzwzz4dA.js +67 -0
  32. package/dist/backfillMetadataPropertyIds-dzwzz4dA.js.map +1 -0
  33. package/dist/cjs/{ModelProperty-CgQ3zR-u.js → ModelProperty-C80601ai.js} +23 -21
  34. package/dist/cjs/ModelProperty-C80601ai.js.map +1 -0
  35. package/dist/cjs/{Schema-B0D7LgYb.js → Schema-6BQKp7hO.js} +60 -39
  36. package/dist/cjs/Schema-6BQKp7hO.js.map +1 -0
  37. package/dist/cjs/{SchemaValidationService-DUIOUvC_.js → SchemaValidationService-BySF1P0v.js} +138 -38
  38. package/dist/cjs/SchemaValidationService-BySF1P0v.js.map +1 -0
  39. package/dist/cjs/backfillMetadataPropertyIds-D9uzW5bW.js +84 -0
  40. package/dist/cjs/backfillMetadataPropertyIds-D9uzW5bW.js.map +1 -0
  41. package/dist/cjs/{getItem-BP4BYB4Z.js → getItem-Dj49AjWB.js} +5 -4
  42. package/dist/cjs/{getItem-BP4BYB4Z.js.map → getItem-Dj49AjWB.js.map} +1 -1
  43. package/dist/cjs/getPublishPayload-dR9co4rH.js +888 -0
  44. package/dist/cjs/getPublishPayload-dR9co4rH.js.map +1 -0
  45. package/dist/cjs/{getPublishUploads-D4DMfuOm.js → getPublishUploads-g61mgXaA.js} +111 -35
  46. package/dist/cjs/getPublishUploads-g61mgXaA.js.map +1 -0
  47. package/dist/cjs/getSegmentedItemProperties-NFvOHlAi.js +146 -0
  48. package/dist/cjs/getSegmentedItemProperties-NFvOHlAi.js.map +1 -0
  49. package/dist/cjs/{index-CUd7xS2i.js → index-9O_Ji1kY.js} +3332 -1367
  50. package/dist/cjs/index-9O_Ji1kY.js.map +1 -0
  51. package/dist/cjs/{index-BM8CSlnN.js → index-ud9i9fpp.js} +15 -7
  52. package/dist/cjs/index-ud9i9fpp.js.map +1 -0
  53. package/dist/cjs/{ownership-D3npAPnx.js → ownership-CyLRNReQ.js} +24 -7
  54. package/dist/cjs/ownership-CyLRNReQ.js.map +1 -0
  55. package/dist/cjs/property-Hj-RhQVX.js +318 -0
  56. package/dist/cjs/property-Hj-RhQVX.js.map +1 -0
  57. package/dist/db/drizzle/drizzle/0005_bright_lily_hollister.sql +27 -0
  58. package/dist/db/drizzle/drizzle/0006_add_publisher_to_versions_and_metadata.sql +3 -0
  59. package/dist/db/drizzle/drizzle/0007_add_required_to_properties.sql +1 -0
  60. package/dist/db/drizzle/drizzle/0008_add_revoked_at_to_seeds.sql +1 -0
  61. package/dist/db/drizzle/drizzle/0009_happy_namor.sql +14 -0
  62. package/dist/db/drizzle/drizzle/meta/0005_snapshot.json +1031 -0
  63. package/dist/db/drizzle/drizzle/meta/0006_snapshot.json +1045 -0
  64. package/dist/db/drizzle/drizzle/meta/0007_snapshot.json +1052 -0
  65. package/dist/db/drizzle/drizzle/meta/0008_snapshot.json +1059 -0
  66. package/dist/db/drizzle/drizzle/meta/0009_snapshot.json +1080 -0
  67. package/dist/db/drizzle/drizzle/meta/_journal.json +35 -0
  68. package/dist/{getItem-B_IP-uNX.js → getItem-ClK0UZqi.js} +5 -4
  69. package/dist/{getItem-B_IP-uNX.js.map → getItem-ClK0UZqi.js.map} +1 -1
  70. package/dist/getPublishPayload-CdfPTl8l.js +875 -0
  71. package/dist/getPublishPayload-CdfPTl8l.js.map +1 -0
  72. package/dist/{getPublishUploads-DPk5RcAG.js → getPublishUploads-CGBky9q9.js} +109 -15
  73. package/dist/getPublishUploads-CGBky9q9.js.map +1 -0
  74. package/dist/getSegmentedItemProperties-CJWdYH9W.js +144 -0
  75. package/dist/getSegmentedItemProperties-CJWdYH9W.js.map +1 -0
  76. package/dist/{index-DbmqfO-Q.js → index-C74KrwXN.js} +4 -2
  77. package/dist/index-C74KrwXN.js.map +1 -0
  78. package/dist/index-CgmWq1sF.js +19 -0
  79. package/dist/index-CgmWq1sF.js.map +1 -0
  80. package/dist/{index-Dh_gxItx.js → index-uPXtq2cf.js} +3321 -1376
  81. package/dist/index-uPXtq2cf.js.map +1 -0
  82. package/dist/main.cjs +7 -4
  83. package/dist/main.cjs.map +1 -1
  84. package/dist/main.js +138 -2218
  85. package/dist/main.js.map +1 -1
  86. package/dist/node.js +13 -12
  87. package/dist/node.js.map +1 -1
  88. package/dist/{ownership-CEv7BhIh.js → ownership-QK5haR3-.js} +24 -7
  89. package/dist/ownership-QK5haR3-.js.map +1 -0
  90. package/dist/{property-CppuVi-i.js → property-Dt0U3UXJ.js} +26 -6
  91. package/dist/property-Dt0U3UXJ.js.map +1 -0
  92. package/dist/{queries-B1vaglQW.js → queries-BUB-vUBm.js} +2 -2
  93. package/dist/{queries-B1vaglQW.js.map → queries-BUB-vUBm.js.map} +1 -1
  94. package/dist/seedSchema/AppStateSchema.d.ts +82 -0
  95. package/dist/seedSchema/AppStateSchema.d.ts.map +1 -0
  96. package/dist/seedSchema/ConfigSchema.d.ts +101 -0
  97. package/dist/seedSchema/ConfigSchema.d.ts.map +1 -0
  98. package/dist/seedSchema/MetadataSchema.d.ts +422 -0
  99. package/dist/seedSchema/MetadataSchema.d.ts.map +1 -0
  100. package/dist/seedSchema/MetadataSchema.ts +4 -1
  101. package/dist/seedSchema/ModelSchema.d.ts +243 -0
  102. package/dist/seedSchema/ModelSchema.d.ts.map +1 -0
  103. package/dist/seedSchema/ModelSchema.ts +1 -0
  104. package/dist/seedSchema/ModelSchemaSchema.d.ts +61 -0
  105. package/dist/seedSchema/ModelSchemaSchema.d.ts.map +1 -0
  106. package/dist/seedSchema/ModelUidSchema.d.ts +64 -0
  107. package/dist/seedSchema/ModelUidSchema.d.ts.map +1 -0
  108. package/dist/seedSchema/PropertyUidSchema.d.ts +64 -0
  109. package/dist/seedSchema/PropertyUidSchema.d.ts.map +1 -0
  110. package/dist/seedSchema/PropertyUidSchema.ts +2 -2
  111. package/dist/seedSchema/PublishProcessSchema.ts +22 -0
  112. package/dist/seedSchema/SchemaSchema.d.ts +169 -0
  113. package/dist/seedSchema/SchemaSchema.d.ts.map +1 -0
  114. package/dist/seedSchema/SeedSchema.d.ts +192 -0
  115. package/dist/seedSchema/SeedSchema.d.ts.map +1 -0
  116. package/dist/seedSchema/SeedSchema.ts +1 -0
  117. package/dist/seedSchema/UploadProcessSchema.ts +14 -0
  118. package/dist/seedSchema/VersionSchema.d.ts +194 -0
  119. package/dist/seedSchema/VersionSchema.d.ts.map +1 -0
  120. package/dist/seedSchema/VersionSchema.ts +1 -0
  121. package/dist/seedSchema/index.d.ts +11 -0
  122. package/dist/seedSchema/index.d.ts.map +1 -0
  123. package/dist/seedSchema/index.ts +2 -0
  124. package/dist/src/Item/Item.d.ts +5 -1
  125. package/dist/src/Item/Item.d.ts.map +1 -1
  126. package/dist/src/Item/queries.d.ts.map +1 -1
  127. package/dist/src/Item/service/actors/loadOrCreateItem.d.ts.map +1 -1
  128. package/dist/src/Item/service/actors/saveDataToDb.d.ts.map +1 -1
  129. package/dist/src/Item/service/itemMachineSingle.d.ts.map +1 -1
  130. package/dist/src/ItemProperty/ItemProperty.d.ts +4 -0
  131. package/dist/src/ItemProperty/ItemProperty.d.ts.map +1 -1
  132. package/dist/src/ItemProperty/service/actors/hydrateFromDb.d.ts.map +1 -1
  133. package/dist/src/ItemProperty/service/actors/loadOrCreateProperty.d.ts.map +1 -1
  134. package/dist/src/ItemProperty/service/actors/resolveRelatedValue.d.ts.map +1 -1
  135. package/dist/src/ItemProperty/service/actors/saveValueToDb/analyzeInput.d.ts.map +1 -1
  136. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveFile.d.ts.map +1 -1
  137. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveHtml.d.ts.map +1 -1
  138. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveImage.d.ts.map +1 -1
  139. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.d.ts.map +1 -1
  140. package/dist/src/ItemProperty/service/propertyMachine.d.ts.map +1 -1
  141. package/dist/src/Model/index.d.ts +1 -0
  142. package/dist/src/Model/index.d.ts.map +1 -1
  143. package/dist/src/Model/service/actors/createModelProperties.d.ts.map +1 -1
  144. package/dist/src/Model/service/modelMachine.d.ts +2 -2
  145. package/dist/src/ModelProperty/ModelProperty.d.ts +1 -1
  146. package/dist/src/ModelProperty/ModelProperty.d.ts.map +1 -1
  147. package/dist/src/ModelProperty/service/modelPropertyMachine.d.ts +17 -17
  148. package/dist/src/Schema/Schema.d.ts +1 -0
  149. package/dist/src/Schema/Schema.d.ts.map +1 -1
  150. package/dist/src/Schema/service/actors/loadOrCreateSchema.d.ts.map +1 -1
  151. package/dist/src/Schema/service/addModelsMachine.d.ts +14 -14
  152. package/dist/src/Schema/service/addModelsMachine.d.ts.map +1 -1
  153. package/dist/src/Schema/service/schemaMachine.d.ts +87 -87
  154. package/dist/src/Schema/service/validation/SchemaValidationService.d.ts +5 -1
  155. package/dist/src/Schema/service/validation/SchemaValidationService.d.ts.map +1 -1
  156. package/dist/src/Schema/validation.d.ts +2 -0
  157. package/dist/src/Schema/validation.d.ts.map +1 -1
  158. package/dist/src/browser/db/Db.d.ts +3 -1
  159. package/dist/src/browser/db/Db.d.ts.map +1 -1
  160. package/dist/src/browser/db/drizzleFiles.d.ts +7 -2
  161. package/dist/src/browser/db/drizzleFiles.d.ts.map +1 -1
  162. package/dist/src/browser/helpers/ArweaveClient.d.ts.map +1 -1
  163. package/dist/src/browser/helpers/FileManager.d.ts +1 -0
  164. package/dist/src/browser/helpers/FileManager.d.ts.map +1 -1
  165. package/dist/src/browser/index.d.ts +0 -1
  166. package/dist/src/browser/index.d.ts.map +1 -1
  167. package/dist/src/browser/workers/ImageResizer.d.ts.map +1 -1
  168. package/dist/src/browser/workers/imageResize.d.ts.map +1 -1
  169. package/dist/src/client/ClientManager.d.ts +11 -0
  170. package/dist/src/client/ClientManager.d.ts.map +1 -1
  171. package/dist/src/client/actors/addModelsToDb.d.ts.map +1 -1
  172. package/dist/src/client/actors/dbInit.d.ts.map +1 -1
  173. package/dist/src/client/actors/platformClassesInit.d.ts.map +1 -1
  174. package/dist/src/client/actors/processSchemaFiles.d.ts.map +1 -1
  175. package/dist/src/client/clientManagerMachine.d.ts.map +1 -1
  176. package/dist/src/db/Db/BaseDb.d.ts.map +1 -1
  177. package/dist/src/db/backfillMetadataPropertyIds.d.ts +7 -0
  178. package/dist/src/db/backfillMetadataPropertyIds.d.ts.map +1 -0
  179. package/dist/src/db/configs/dev.schema.config.d.ts.map +1 -1
  180. package/dist/src/db/read/getAttesterForSeed.d.ts +13 -0
  181. package/dist/src/db/read/getAttesterForSeed.d.ts.map +1 -0
  182. package/dist/src/db/read/getItemData.d.ts.map +1 -1
  183. package/dist/src/db/read/getItems.d.ts.map +1 -1
  184. package/dist/src/db/read/getMetadataAttestationUidsForSeedUid.d.ts +9 -0
  185. package/dist/src/db/read/getMetadataAttestationUidsForSeedUid.d.ts.map +1 -0
  186. package/dist/src/db/read/getPropertyData.d.ts +1 -1
  187. package/dist/src/db/read/getPropertyData.d.ts.map +1 -1
  188. package/dist/src/db/read/getPublishPayload.d.ts +26 -2
  189. package/dist/src/db/read/getPublishPayload.d.ts.map +1 -1
  190. package/dist/src/db/read/getPublishUploads.d.ts +1 -0
  191. package/dist/src/db/read/getPublishUploads.d.ts.map +1 -1
  192. package/dist/src/db/read/getRelatedItemsForPublish.d.ts.map +1 -1
  193. package/dist/src/db/read/getVersionsForSeedUid.d.ts +4 -0
  194. package/dist/src/db/read/getVersionsForSeedUid.d.ts.map +1 -0
  195. package/dist/src/db/read/subqueries/metadataLatest.d.ts.map +1 -1
  196. package/dist/src/db/write/createMetadata.d.ts +15 -1
  197. package/dist/src/db/write/createMetadata.d.ts.map +1 -1
  198. package/dist/src/db/write/createNewItem.d.ts.map +1 -1
  199. package/dist/src/db/write/createSeed.d.ts.map +1 -1
  200. package/dist/src/db/write/createVersion.d.ts.map +1 -1
  201. package/dist/src/db/write/updateItemPropertyValue.d.ts +2 -0
  202. package/dist/src/db/write/updateItemPropertyValue.d.ts.map +1 -1
  203. package/dist/src/db/write/updateMetadata.d.ts.map +1 -1
  204. package/dist/src/db/write/updateSeedRevokedAt.d.ts +10 -0
  205. package/dist/src/db/write/updateSeedRevokedAt.d.ts.map +1 -0
  206. package/dist/src/db/write/updateSeedUid.d.ts +6 -1
  207. package/dist/src/db/write/updateSeedUid.d.ts.map +1 -1
  208. package/dist/src/db/write/updateVersionUid.d.ts +13 -0
  209. package/dist/src/db/write/updateVersionUid.d.ts.map +1 -0
  210. package/dist/src/eas.d.ts +5 -2
  211. package/dist/src/eas.d.ts.map +1 -1
  212. package/dist/src/events/item/syncDbWithEas.d.ts +10 -0
  213. package/dist/src/events/item/syncDbWithEas.d.ts.map +1 -1
  214. package/dist/src/graphql/gql/gql.d.ts +2 -7
  215. package/dist/src/graphql/gql/gql.d.ts.map +1 -1
  216. package/dist/src/graphql/gql/graphql.d.ts +2 -16
  217. package/dist/src/graphql/gql/graphql.d.ts.map +1 -1
  218. package/dist/src/helpers/ArweaveClient/BaseArweaveClient.d.ts +22 -8
  219. package/dist/src/helpers/ArweaveClient/BaseArweaveClient.d.ts.map +1 -1
  220. package/dist/src/helpers/ArweaveClient/index.d.ts.map +1 -1
  221. package/dist/src/helpers/ArweaveClient/uploadApiVerification.d.ts +19 -0
  222. package/dist/src/helpers/ArweaveClient/uploadApiVerification.d.ts.map +1 -0
  223. package/dist/src/helpers/FileManager/BaseFileManager.d.ts +4 -0
  224. package/dist/src/helpers/FileManager/BaseFileManager.d.ts.map +1 -1
  225. package/dist/src/helpers/constants.d.ts.map +1 -1
  226. package/dist/src/helpers/crypto.d.ts +6 -0
  227. package/dist/src/helpers/crypto.d.ts.map +1 -1
  228. package/dist/src/helpers/db.d.ts +25 -0
  229. package/dist/src/helpers/db.d.ts.map +1 -1
  230. package/dist/src/helpers/easRevokedFilter.d.ts +10 -0
  231. package/dist/src/helpers/easRevokedFilter.d.ts.map +1 -0
  232. package/dist/src/helpers/file/queries.d.ts.map +1 -1
  233. package/dist/src/helpers/getSegmentedItemProperties.d.ts +2 -2
  234. package/dist/src/helpers/getSegmentedItemProperties.d.ts.map +1 -1
  235. package/dist/src/helpers/index.d.ts +3 -0
  236. package/dist/src/helpers/index.d.ts.map +1 -1
  237. package/dist/src/helpers/listPropertyValueFromStorage.d.ts +5 -0
  238. package/dist/src/helpers/listPropertyValueFromStorage.d.ts.map +1 -0
  239. package/dist/src/helpers/metadataPropertyNames.d.ts +50 -0
  240. package/dist/src/helpers/metadataPropertyNames.d.ts.map +1 -0
  241. package/dist/src/helpers/model.d.ts.map +1 -1
  242. package/dist/src/helpers/ownership.d.ts +2 -0
  243. package/dist/src/helpers/ownership.d.ts.map +1 -1
  244. package/dist/src/helpers/property/index.d.ts +24 -12
  245. package/dist/src/helpers/property/index.d.ts.map +1 -1
  246. package/dist/src/helpers/property.d.ts.map +1 -1
  247. package/dist/src/helpers/publishConfig.d.ts +36 -0
  248. package/dist/src/helpers/publishConfig.d.ts.map +1 -1
  249. package/dist/src/helpers/schema.d.ts.map +1 -1
  250. package/dist/src/helpers/updateSchema.d.ts +2 -5
  251. package/dist/src/helpers/updateSchema.d.ts.map +1 -1
  252. package/dist/src/imports/index.d.ts +1 -1
  253. package/dist/src/imports/index.d.ts.map +1 -1
  254. package/dist/src/imports/json.d.ts +16 -1
  255. package/dist/src/imports/json.d.ts.map +1 -1
  256. package/dist/src/index.d.ts +33 -8
  257. package/dist/src/index.d.ts.map +1 -1
  258. package/dist/src/interfaces/IItem.d.ts +5 -1
  259. package/dist/src/interfaces/IItem.d.ts.map +1 -1
  260. package/dist/src/interfaces/IItemProperty.d.ts +3 -0
  261. package/dist/src/interfaces/IItemProperty.d.ts.map +1 -1
  262. package/dist/src/node/db/Db.d.ts.map +1 -1
  263. package/dist/src/node/helpers/ArweaveClient.d.ts.map +1 -1
  264. package/dist/src/node/helpers/FileManager.d.ts +1 -0
  265. package/dist/src/node/helpers/FileManager.d.ts.map +1 -1
  266. package/dist/src/seedSchema/MetadataSchema.d.ts +36 -0
  267. package/dist/src/seedSchema/MetadataSchema.d.ts.map +1 -1
  268. package/dist/src/seedSchema/ModelSchema.d.ts +17 -0
  269. package/dist/src/seedSchema/ModelSchema.d.ts.map +1 -1
  270. package/dist/src/seedSchema/PublishProcessSchema.d.ts +285 -0
  271. package/dist/src/seedSchema/PublishProcessSchema.d.ts.map +1 -0
  272. package/dist/src/seedSchema/SeedSchema.d.ts +17 -0
  273. package/dist/src/seedSchema/SeedSchema.d.ts.map +1 -1
  274. package/dist/src/seedSchema/UploadProcessSchema.d.ts +135 -0
  275. package/dist/src/seedSchema/UploadProcessSchema.d.ts.map +1 -0
  276. package/dist/src/seedSchema/VersionSchema.d.ts +19 -0
  277. package/dist/src/seedSchema/VersionSchema.d.ts.map +1 -1
  278. package/dist/src/seedSchema/index.d.ts +2 -0
  279. package/dist/src/seedSchema/index.d.ts.map +1 -1
  280. package/dist/src/services/write/writeProcessMachine.d.ts +1 -1
  281. package/dist/src/types/arweave.d.ts +2 -1
  282. package/dist/src/types/arweave.d.ts.map +1 -1
  283. package/dist/src/types/db.d.ts +2 -0
  284. package/dist/src/types/db.d.ts.map +1 -1
  285. package/dist/src/types/import.d.ts +3 -0
  286. package/dist/src/types/import.d.ts.map +1 -1
  287. package/dist/src/types/index.d.ts +9 -0
  288. package/dist/src/types/index.d.ts.map +1 -1
  289. package/dist/src/types/item.d.ts +13 -0
  290. package/dist/src/types/item.d.ts.map +1 -1
  291. package/dist/src/types/machines.d.ts +1 -0
  292. package/dist/src/types/machines.d.ts.map +1 -1
  293. package/dist/src/types/property.d.ts +11 -2
  294. package/dist/src/types/property.d.ts.map +1 -1
  295. package/dist/src/vite/index.d.ts.map +1 -1
  296. package/dist/vite.cjs +2 -127
  297. package/dist/vite.cjs.map +1 -1
  298. package/dist/vite.js +2 -127
  299. package/dist/vite.js.map +1 -1
  300. package/package.json +4 -11
  301. package/dist/ArweaveClient-D6E8xe3J.js.map +0 -1
  302. package/dist/ArweaveClient-DElJwN08.js.map +0 -1
  303. package/dist/Db-DW1Un2jz.js.map +0 -1
  304. package/dist/Db-De4o7jww.js.map +0 -1
  305. package/dist/FileManager-Cw8mOIqZ.js.map +0 -1
  306. package/dist/FileManager-DrHQbmYj.js.map +0 -1
  307. package/dist/ModelProperty-D8d25NtC.js.map +0 -1
  308. package/dist/Schema-CLlE7onI.js.map +0 -1
  309. package/dist/SchemaValidationService-CwKY3QlY.js.map +0 -1
  310. package/dist/cjs/ModelProperty-CgQ3zR-u.js.map +0 -1
  311. package/dist/cjs/Schema-B0D7LgYb.js.map +0 -1
  312. package/dist/cjs/SchemaValidationService-DUIOUvC_.js.map +0 -1
  313. package/dist/cjs/getPublishPayload-B90BFd8m.js +0 -520
  314. package/dist/cjs/getPublishPayload-B90BFd8m.js.map +0 -1
  315. package/dist/cjs/getPublishUploads-D4DMfuOm.js.map +0 -1
  316. package/dist/cjs/getSegmentedItemProperties-KdudlzXm.js +0 -71
  317. package/dist/cjs/getSegmentedItemProperties-KdudlzXm.js.map +0 -1
  318. package/dist/cjs/index-BM8CSlnN.js.map +0 -1
  319. package/dist/cjs/index-CUd7xS2i.js.map +0 -1
  320. package/dist/cjs/ownership-D3npAPnx.js.map +0 -1
  321. package/dist/getPublishPayload-BekDN5Ti.js +0 -503
  322. package/dist/getPublishPayload-BekDN5Ti.js.map +0 -1
  323. package/dist/getPublishUploads-DPk5RcAG.js.map +0 -1
  324. package/dist/getSegmentedItemProperties-DfQNbOpb.js +0 -69
  325. package/dist/getSegmentedItemProperties-DfQNbOpb.js.map +0 -1
  326. package/dist/index-DbmqfO-Q.js.map +0 -1
  327. package/dist/index-Dh_gxItx.js.map +0 -1
  328. package/dist/index-XBnjc_SF.js +0 -18
  329. package/dist/index-XBnjc_SF.js.map +0 -1
  330. package/dist/ownership-CEv7BhIh.js.map +0 -1
  331. package/dist/property-CppuVi-i.js.map +0 -1
  332. package/dist/src/browser/react/OPFSImage.d.ts +0 -7
  333. package/dist/src/browser/react/OPFSImage.d.ts.map +0 -1
  334. package/dist/src/browser/react/SeedImage.d.ts +0 -11
  335. package/dist/src/browser/react/SeedImage.d.ts.map +0 -1
  336. package/dist/src/browser/react/SeedProvider.d.ts +0 -30
  337. package/dist/src/browser/react/SeedProvider.d.ts.map +0 -1
  338. package/dist/src/browser/react/client.d.ts +0 -2
  339. package/dist/src/browser/react/client.d.ts.map +0 -1
  340. package/dist/src/browser/react/db.d.ts +0 -4
  341. package/dist/src/browser/react/db.d.ts.map +0 -1
  342. package/dist/src/browser/react/index.d.ts +0 -14
  343. package/dist/src/browser/react/index.d.ts.map +0 -1
  344. package/dist/src/browser/react/item.d.ts +0 -44
  345. package/dist/src/browser/react/item.d.ts.map +0 -1
  346. package/dist/src/browser/react/itemProperty.d.ts +0 -93
  347. package/dist/src/browser/react/itemProperty.d.ts.map +0 -1
  348. package/dist/src/browser/react/liveQuery.d.ts +0 -29
  349. package/dist/src/browser/react/liveQuery.d.ts.map +0 -1
  350. package/dist/src/browser/react/model.d.ts +0 -48
  351. package/dist/src/browser/react/model.d.ts.map +0 -1
  352. package/dist/src/browser/react/modelProperty.d.ts +0 -82
  353. package/dist/src/browser/react/modelProperty.d.ts.map +0 -1
  354. package/dist/src/browser/react/queryClient.d.ts +0 -28
  355. package/dist/src/browser/react/queryClient.d.ts.map +0 -1
  356. package/dist/src/browser/react/schema.d.ts +0 -45
  357. package/dist/src/browser/react/schema.d.ts.map +0 -1
  358. package/dist/src/browser/react/services.d.ts +0 -24
  359. package/dist/src/browser/react/services.d.ts.map +0 -1
  360. package/dist/src/browser/react/trash.d.ts +0 -9
  361. package/dist/src/browser/react/trash.d.ts.map +0 -1
  362. package/dist/src/browser/react/useImageFiles.d.ts +0 -19
  363. package/dist/src/browser/react/useImageFiles.d.ts.map +0 -1
@@ -0,0 +1,875 @@
1
+ import { w as getEasSchemaUidForModel, Z as ZERO_BYTES32, o as BaseDb, x as models, y as properties, V as VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA, z as versions, A as modelPropertiesToObject, b as ModelPropertyDataTypes, q as getCorrectId, C as parseListPropertyValueFromStorage, E as INTERNAL_PROPERTY_NAMES, G as defaultAttestationData, H as INTERNAL_DATA_TYPES, K as toSnakeCase$1, O as getEasSchemaUidForSchemaDefinition, Q as getEasSchemaForItemProperty } from './index-uPXtq2cf.js';
2
+ import { toSnakeCase } from 'drizzle-orm/casing';
3
+ import pluralize from 'pluralize';
4
+ import { g as getSegmentedItemProperties } from './getSegmentedItemProperties-CJWdYH9W.js';
5
+ import { getPropertySchema } from './property-Dt0U3UXJ.js';
6
+ import { upperFirst, camelCase } from 'lodash-es';
7
+ import { eq, and, desc } from 'drizzle-orm';
8
+ import debug from 'debug';
9
+ import { ethers } from 'ethers';
10
+ import 'reflect-metadata';
11
+ import 'xstate';
12
+ import 'drizzle-orm/sqlite-core';
13
+ import 'nanoid';
14
+ import 'nanoid-dictionary';
15
+ import '@sinclair/typebox';
16
+ import 'rxjs';
17
+ import 'eventemitter3';
18
+ import 'arweave';
19
+ import 'js-sha3';
20
+
21
+ // Dynamic import to break circular dependency with getItem -> BaseItem
22
+ // import { getItem } from '@/db/read/getItem'
23
+ debug('seedSdk:db:getPublishPayload');
24
+ function addValidationError(ctx, message, field, code = 'publish_validation') {
25
+ ctx.errors.push({ field: field ?? '', message, code });
26
+ }
27
+ const getVersionUid = (item) => {
28
+ const latestVersion = item.latestVersionUid;
29
+ if (latestVersion && typeof latestVersion === 'object' && latestVersion.uid) {
30
+ return latestVersion.uid;
31
+ }
32
+ if (latestVersion && typeof latestVersion === 'string') {
33
+ return latestVersion;
34
+ }
35
+ return ZERO_BYTES32;
36
+ };
37
+ /**
38
+ * Resolve versionUid when item.latestVersionUid is empty but item has been published (has seedUid).
39
+ * Tries DB first, then EAS. The contract path never calls updateVersionUid, so the versions table
40
+ * may have uid=NULL. EAS fallback queries attestations where refUID=seedUid (Version attestations).
41
+ */
42
+ async function resolveVersionUid(seedLocalId, seedUid) {
43
+ if (!seedLocalId || !seedUid || seedUid === ZERO_BYTES32)
44
+ return ZERO_BYTES32;
45
+ const appDb = BaseDb.getAppDb();
46
+ if (appDb) {
47
+ const rows = await appDb
48
+ .select({ uid: versions.uid })
49
+ .from(versions)
50
+ .where(eq(versions.seedLocalId, seedLocalId))
51
+ .orderBy(desc(versions.createdAt))
52
+ .limit(1);
53
+ const uid = rows[0]?.uid;
54
+ if (uid && uid !== '' && uid !== 'NULL')
55
+ return uid;
56
+ }
57
+ try {
58
+ const _mod_0 = await import('./index-uPXtq2cf.js');
59
+ const _ns_0 = _mod_0.br;
60
+ const { getItemVersionsFromEas } = _ns_0;
61
+ const attestations = await getItemVersionsFromEas({ seedUids: [seedUid] });
62
+ const latest = attestations?.[0];
63
+ if (latest?.id)
64
+ return latest.id;
65
+ }
66
+ catch {
67
+ // EAS client may not be initialized or network error
68
+ }
69
+ return ZERO_BYTES32;
70
+ }
71
+ const getPropertyData = async (itemProperty, ctx) => {
72
+ const dataType = itemProperty.propertyDef?.dataType;
73
+ const entry = dataType != null ? INTERNAL_DATA_TYPES[dataType] : undefined;
74
+ const easDataType = entry?.eas;
75
+ if (!easDataType) {
76
+ if (ctx) {
77
+ addValidationError(ctx, `Unknown or unsupported property data type "${dataType ?? 'undefined'}" for property: ${itemProperty.propertyName}. Supported types: ${Object.keys(INTERNAL_DATA_TYPES).join(', ')}.`, itemProperty.propertyName);
78
+ }
79
+ return null;
80
+ }
81
+ let schemaUid = itemProperty.schemaUid;
82
+ const ip = itemProperty;
83
+ const nameForEas = ip.storagePropertyName && ip.storagePropertyName.length > 0
84
+ ? ip.storagePropertyName
85
+ : itemProperty.propertyName;
86
+ const propertyNameForSchema = toSnakeCase$1(nameForEas);
87
+ const schemaDef = `${easDataType} ${propertyNameForSchema}`;
88
+ if (!schemaUid) {
89
+ schemaUid = await getEasSchemaUidForSchemaDefinition({ schemaText: schemaDef });
90
+ if (!schemaUid) {
91
+ const schema = await getEasSchemaForItemProperty({
92
+ propertyName: 'version',
93
+ easDataType: 'bytes32',
94
+ });
95
+ if (schema) {
96
+ schemaUid = schema.id;
97
+ }
98
+ }
99
+ }
100
+ return {
101
+ schemaUid,
102
+ easDataType,
103
+ schemaDef,
104
+ propertyNameForSchema,
105
+ };
106
+ };
107
+ /** Resolve propertyDef from Model for properties that lack it (e.g. cached instances
108
+ * created before loadOrCreateProperty was fixed). Ensures both new and existing items get property attestations.
109
+ * Also ensures Relation/Image properties have required from schema when missing (for publish validation). */
110
+ const ensurePropertyDefs = async (targetItem) => {
111
+ targetItem.properties.filter((p) => targetItem.modelName &&
112
+ (!p.propertyDef || (p.propertyDef?.dataType === 'Relation' && p.propertyDef?.required === undefined)));
113
+ let schema;
114
+ for (const itemProperty of targetItem.properties) {
115
+ if (!itemProperty.propertyDef && targetItem.modelName) {
116
+ schema = await getPropertySchema(targetItem.modelName, itemProperty.propertyName);
117
+ if (!schema) {
118
+ try {
119
+ const _mod_1 = await import('./index-uPXtq2cf.js');
120
+ const _ns_1 = _mod_1.bv;
121
+ const { Model } = _ns_1;
122
+ const normalizedModelName = upperFirst(camelCase(targetItem.modelName));
123
+ let model = Model.getByName(normalizedModelName);
124
+ if (!model?.properties?.length) {
125
+ model = Model.findByModelType(toSnakeCase(targetItem.modelName));
126
+ }
127
+ const modelFound = !!model;
128
+ const propsCount = model?.properties?.length ?? 0;
129
+ const schemaKeys = [];
130
+ if (model?.properties?.length) {
131
+ const schemas = modelPropertiesToObject(model.properties);
132
+ schemaKeys.push(...Object.keys(schemas));
133
+ schema = schemas[itemProperty.propertyName];
134
+ }
135
+ }
136
+ catch (err) {
137
+ schema = undefined;
138
+ }
139
+ }
140
+ if (!schema) {
141
+ const db = BaseDb.getAppDb();
142
+ if (db) {
143
+ try {
144
+ const normalizedModelName = upperFirst(camelCase(targetItem.modelName));
145
+ const modelRecords = await db
146
+ .select({ id: models.id })
147
+ .from(models)
148
+ .where(eq(models.name, normalizedModelName))
149
+ .limit(1);
150
+ if (modelRecords.length > 0 && modelRecords[0].id) {
151
+ const propertyRecords = await db
152
+ .select()
153
+ .from(properties)
154
+ .where(and(eq(properties.modelId, modelRecords[0].id), eq(properties.name, itemProperty.propertyName)))
155
+ .limit(1);
156
+ if (propertyRecords.length > 0) {
157
+ const propRecord = propertyRecords[0];
158
+ let refModelName;
159
+ if (propRecord.refModelId != null) {
160
+ const refModelRows = await db
161
+ .select({ name: models.name })
162
+ .from(models)
163
+ .where(eq(models.id, propRecord.refModelId))
164
+ .limit(1);
165
+ refModelName = refModelRows[0]?.name ?? undefined;
166
+ }
167
+ schema = {
168
+ dataType: propRecord.dataType,
169
+ ref: refModelName ?? undefined,
170
+ refValueType: propRecord.refValueType || undefined,
171
+ storageType: propRecord.storageType || undefined,
172
+ localStorageDir: propRecord.localStorageDir || undefined,
173
+ filenameSuffix: propRecord.filenameSuffix || undefined,
174
+ required: propRecord.required ?? undefined,
175
+ };
176
+ }
177
+ }
178
+ }
179
+ catch {
180
+ schema = undefined;
181
+ }
182
+ }
183
+ }
184
+ if (schema) {
185
+ itemProperty.getService().send({
186
+ type: 'updateContext',
187
+ propertyRecordSchema: schema,
188
+ });
189
+ }
190
+ }
191
+ }
192
+ };
193
+ // Lazy import SchemaEncoder to avoid module resolution issues with ts-import
194
+ let SchemaEncoderClass = null;
195
+ const getSchemaEncoder = async () => {
196
+ if (!SchemaEncoderClass) {
197
+ const easSdk = await import('@ethereum-attestation-service/eas-sdk');
198
+ SchemaEncoderClass = easSdk.SchemaEncoder;
199
+ }
200
+ return SchemaEncoderClass;
201
+ };
202
+ const processBasicProperties = async (itemBasicProperties, itemPublishData, ctx) => {
203
+ for (const basicProperty of itemBasicProperties) {
204
+ // Skip SDK-internal properties (e.g. publisher) - never attest to EAS
205
+ if (INTERNAL_PROPERTY_NAMES.includes(basicProperty.propertyName)) {
206
+ continue;
207
+ }
208
+ const snapshot = basicProperty.getService().getSnapshot();
209
+ const context = 'context' in snapshot ? snapshot.context : null;
210
+ const propertyDef = basicProperty.propertyDef ?? (context ? context.propertyRecordSchema : undefined);
211
+ const isFileImageHtml = propertyDef?.dataType === ModelPropertyDataTypes.File ||
212
+ propertyDef?.dataType === ModelPropertyDataTypes.Image ||
213
+ propertyDef?.dataType === ModelPropertyDataTypes.Html;
214
+ // File/Image/Html must use propertyValue (seed ID), not basicProperty.value which returns
215
+ // renderValue (file content) for File—bytes32 can only hold 31 bytes.
216
+ let value = isFileImageHtml && context
217
+ ? context.propertyValue
218
+ : (basicProperty.value ??
219
+ (context ? context.propertyValue : undefined));
220
+ !!basicProperty.uid;
221
+ if (!context) {
222
+ continue;
223
+ }
224
+ if (!value || basicProperty.uid) {
225
+ continue;
226
+ }
227
+ const propertyData = await getPropertyData(basicProperty, ctx);
228
+ if (!propertyData)
229
+ continue;
230
+ const { schemaUid, easDataType, schemaDef, propertyNameForSchema } = propertyData;
231
+ if (!schemaDef)
232
+ continue;
233
+ // Normalize value: string that parses to array (e.g. from browser storage) -> array
234
+ if (schemaDef.startsWith('bytes32[]') && typeof value === 'string' && value.trim().startsWith('[')) {
235
+ try {
236
+ value = JSON.parse(value);
237
+ }
238
+ catch {
239
+ // fall through to array check
240
+ }
241
+ }
242
+ // Legacy comma-separated ids (pre-JSON List storage)
243
+ if (schemaDef.startsWith('bytes32[]') &&
244
+ typeof value === 'string' &&
245
+ !value.trim().startsWith('[') &&
246
+ value.includes(',')) {
247
+ value = value
248
+ .split(',')
249
+ .map((s) => s.trim())
250
+ .filter(Boolean);
251
+ }
252
+ if (schemaDef.startsWith('bytes32[]') && !Array.isArray(value)) {
253
+ addValidationError(ctx, `Invalid value for property: ${basicProperty.propertyName}. Expected an array of bytes32, got ${value}.`, basicProperty.propertyName);
254
+ continue;
255
+ }
256
+ // Validate against property validation rules (enum, pattern, minLength, maxLength) before encoding
257
+ if (propertyDef?.validation) {
258
+ const { SchemaValidationService } = await import('./SchemaValidationService-DXxRk-9Q.js');
259
+ const validationService = new SchemaValidationService();
260
+ const validationResult = validationService.validatePropertyValue(value, propertyDef.dataType, propertyDef.validation, propertyDef.refValueType);
261
+ if (!validationResult.isValid && validationResult.errors.length > 0) {
262
+ const firstError = validationResult.errors[0];
263
+ addValidationError(ctx, firstError.message, basicProperty.propertyName, firstError.code ?? 'publish_validation');
264
+ continue;
265
+ }
266
+ }
267
+ if (schemaDef.startsWith('bytes32[]')) {
268
+ const newValues = [];
269
+ const iterableValue = Array.isArray(value) ? value
270
+ : value != null && typeof value[Symbol.iterator] === 'function' ? value
271
+ : [];
272
+ for (const seedId of iterableValue) {
273
+ if (seedId.length !== 66 && !seedId.startsWith('0x')) {
274
+ newValues.push(ethers.encodeBytes32String(seedId));
275
+ continue;
276
+ }
277
+ newValues.push(seedId);
278
+ }
279
+ value = newValues;
280
+ }
281
+ // uint256 (Date) must be numeric/BigInt; normalize ISO strings to Unix seconds
282
+ if (easDataType === 'uint256' && (typeof value === 'string' || value instanceof Date)) {
283
+ const ms = value instanceof Date ? value.getTime() : new Date(value).getTime();
284
+ value = BigInt(Math.floor(ms / 1000));
285
+ }
286
+ let data = [
287
+ {
288
+ name: propertyNameForSchema,
289
+ type: easDataType,
290
+ value,
291
+ },
292
+ ];
293
+ let encodedData;
294
+ try {
295
+ const SchemaEncoder = await getSchemaEncoder();
296
+ const dataEncoder = new SchemaEncoder(schemaDef);
297
+ encodedData = dataEncoder.encodeData(data);
298
+ }
299
+ catch (encodeErr) {
300
+ addValidationError(ctx, `Failed to encode property ${basicProperty.propertyName}: ${encodeErr instanceof Error ? encodeErr.message : String(encodeErr)}`, basicProperty.propertyName);
301
+ continue;
302
+ }
303
+ // For storageTransactionId, set refUID to versionUid so it references the Version attestation (contract may use when supported)
304
+ const refUid = basicProperty.propertyName === 'storageTransactionId'
305
+ ? itemPublishData.versionUid
306
+ : defaultAttestationData.refUID;
307
+ const attestationEntry = {
308
+ schema: schemaUid,
309
+ data: [
310
+ {
311
+ ...defaultAttestationData,
312
+ refUID: refUid,
313
+ data: encodedData,
314
+ },
315
+ ],
316
+ };
317
+ // For relation/image properties with seedLocalId, store resolution hints for resolvePublishPayloadValues
318
+ if (typeof value === 'string' &&
319
+ value.length === 10 &&
320
+ (easDataType === 'bytes32' || easDataType === 'string')) {
321
+ attestationEntry._propertyName = basicProperty.propertyName;
322
+ attestationEntry._schemaDef = schemaDef;
323
+ attestationEntry._unresolvedValue = value;
324
+ attestationEntry._easDataType = easDataType;
325
+ }
326
+ itemPublishData.listOfAttestations.push(attestationEntry);
327
+ }
328
+ return itemPublishData;
329
+ };
330
+ const processRelationOrImageProperty = async (relationOrImageProperty, multiPublishPayload, uploadedTransactions, originalSeedLocalId, ctx) => {
331
+ let relationOrImageSchemaUid = relationOrImageProperty.schemaUid;
332
+ if (!relationOrImageSchemaUid && relationOrImageProperty.propertyDef) {
333
+ const propertyData = await getPropertyData(relationOrImageProperty, ctx);
334
+ if (!propertyData)
335
+ return multiPublishPayload;
336
+ relationOrImageSchemaUid = propertyData.schemaUid;
337
+ }
338
+ if (!relationOrImageSchemaUid) {
339
+ addValidationError(ctx, `Schema uid not found for relation or image property: ${relationOrImageProperty.propertyName}`, relationOrImageProperty.propertyName);
340
+ return multiPublishPayload;
341
+ }
342
+ const snapshot = relationOrImageProperty.getService().getSnapshot();
343
+ const context = 'context' in snapshot ? snapshot.context : null;
344
+ if (!context) {
345
+ return multiPublishPayload;
346
+ }
347
+ let value = context.propertyValue;
348
+ // File/Image/Html/Json metadata is stored with Id suffix (e.g. "textId"); context may not have propertyValue
349
+ // if the property was created from schema before metadata loaded. Fallback to metadata lookup.
350
+ const isStorageSeed = relationOrImageProperty.propertyDef?.dataType === ModelPropertyDataTypes.File ||
351
+ relationOrImageProperty.propertyDef?.dataType === ModelPropertyDataTypes.Image ||
352
+ relationOrImageProperty.propertyDef?.dataType === ModelPropertyDataTypes.Html ||
353
+ relationOrImageProperty.propertyDef?.dataType === ModelPropertyDataTypes.Json ||
354
+ (relationOrImageProperty.propertyDef?.dataType === ModelPropertyDataTypes.Relation &&
355
+ (relationOrImageProperty.propertyDef?.refValueType === ModelPropertyDataTypes.File ||
356
+ relationOrImageProperty.propertyDef?.refValueType === ModelPropertyDataTypes.Image ||
357
+ relationOrImageProperty.propertyDef?.refValueType === ModelPropertyDataTypes.Html ||
358
+ relationOrImageProperty.propertyDef?.refValueType === ModelPropertyDataTypes.Json));
359
+ if (!value && isStorageSeed && (context.seedLocalId || context.seedUid)) {
360
+ const _mod_2 = await import('./index-uPXtq2cf.js');
361
+ const _ns_2 = _mod_2.bs;
362
+ const { getPropertyData: getPropertyDataFromDb } = _ns_2;
363
+ const metaRow = await getPropertyDataFromDb({
364
+ propertyName: relationOrImageProperty.propertyName,
365
+ seedLocalId: context.seedLocalId,
366
+ seedUid: context.seedUid,
367
+ });
368
+ const fromMeta = metaRow?.propertyValue;
369
+ if (fromMeta && typeof fromMeta === 'string' && fromMeta.trim() !== '') {
370
+ value = fromMeta;
371
+ }
372
+ }
373
+ const propertyDef = relationOrImageProperty.propertyDef;
374
+ let isRequired = propertyDef?.required === true;
375
+ // Resolve required from schema/DB when propertyDef lacks it
376
+ if (!isRequired && relationOrImageProperty.modelName) {
377
+ let schema = await getPropertySchema(relationOrImageProperty.modelName, relationOrImageProperty.propertyName);
378
+ if (!schema && BaseDb.getAppDb()) {
379
+ const normalizedModelName = upperFirst(camelCase(relationOrImageProperty.modelName));
380
+ const modelRecords = await BaseDb.getAppDb()
381
+ .select({ id: models.id })
382
+ .from(models)
383
+ .where(eq(models.name, normalizedModelName))
384
+ .limit(1);
385
+ if (modelRecords.length > 0 && modelRecords[0].id) {
386
+ const propertyRecords = await BaseDb.getAppDb()
387
+ .select()
388
+ .from(properties)
389
+ .where(and(eq(properties.modelId, modelRecords[0].id), eq(properties.name, relationOrImageProperty.propertyName)))
390
+ .limit(1);
391
+ if (propertyRecords.length > 0) {
392
+ schema = {
393
+ dataType: propertyRecords[0].dataType,
394
+ ref: undefined,
395
+ required: propertyRecords[0].required ?? undefined,
396
+ };
397
+ }
398
+ }
399
+ }
400
+ if (schema?.required === true || schema?.required === 1) {
401
+ isRequired = true;
402
+ }
403
+ }
404
+ // Required relation/image/file/html/json with no value: cannot publish
405
+ if (isRequired && !value) {
406
+ const typeLabel = propertyDef?.dataType === ModelPropertyDataTypes.File ||
407
+ propertyDef?.refValueType === ModelPropertyDataTypes.File
408
+ ? 'file'
409
+ : propertyDef?.dataType === ModelPropertyDataTypes.Image ||
410
+ propertyDef?.refValueType === ModelPropertyDataTypes.Image
411
+ ? 'image'
412
+ : propertyDef?.dataType === ModelPropertyDataTypes.Html ||
413
+ propertyDef?.refValueType === ModelPropertyDataTypes.Html
414
+ ? 'html'
415
+ : propertyDef?.dataType === ModelPropertyDataTypes.Json ||
416
+ propertyDef?.refValueType === ModelPropertyDataTypes.Json
417
+ ? 'json'
418
+ : 'relation';
419
+ const refLabel = propertyDef?.ref ?? propertyDef?.refModelName ?? 'related';
420
+ addValidationError(ctx, `Required ${typeLabel} ${relationOrImageProperty.propertyName} has no value. ` +
421
+ `A value pointing to a valid ${refLabel} item is required to publish.`, relationOrImageProperty.propertyName);
422
+ return multiPublishPayload;
423
+ }
424
+ if (!value || relationOrImageProperty.uid) {
425
+ return multiPublishPayload;
426
+ }
427
+ const { localId: seedLocalId, uid: seedUid } = getCorrectId(value);
428
+ // Value is not a valid seed reference (10-char localId or 66-char uid)
429
+ if (!seedLocalId && !seedUid) {
430
+ if (isRequired) {
431
+ addValidationError(ctx, `Required relation ${relationOrImageProperty.propertyName} has invalid value: ${JSON.stringify(value)}. ` +
432
+ `Value must be a valid seed reference (localId or uid) pointing to a ${propertyDef?.ref ?? propertyDef?.refModelName ?? 'related'} item.`, relationOrImageProperty.propertyName);
433
+ }
434
+ return multiPublishPayload;
435
+ }
436
+ // Use dynamic import to break circular dependency
437
+ const getItemMod = await import('./getItem-ClK0UZqi.js');
438
+ const { getItem } = getItemMod;
439
+ const relatedItem = await getItem({
440
+ seedLocalId,
441
+ seedUid,
442
+ });
443
+ // When related item not found (e.g. different DB, not yet created)
444
+ if (!relatedItem) {
445
+ if (isRequired) {
446
+ addValidationError(ctx, `No related item found for required relation: ${relationOrImageProperty.propertyName}. ` +
447
+ `Value: ${JSON.stringify(value)} (seedLocalId/seedUid). ` +
448
+ `The related item may be missing, in a different database, or the reference may be broken.`, relationOrImageProperty.propertyName);
449
+ }
450
+ return multiPublishPayload;
451
+ }
452
+ // When Image/Relation already has seedUid (published), skip creating its payload—only add the property to parent
453
+ if (relatedItem.seedUid) {
454
+ return multiPublishPayload;
455
+ }
456
+ const versionUid = getVersionUid(relatedItem);
457
+ let modelName;
458
+ if (relationOrImageProperty.propertyDef?.dataType === ModelPropertyDataTypes.Image) {
459
+ modelName = 'Image';
460
+ }
461
+ if (relationOrImageProperty.propertyDef?.dataType === ModelPropertyDataTypes.File) {
462
+ modelName = 'File';
463
+ }
464
+ if (relationOrImageProperty.propertyDef?.dataType === ModelPropertyDataTypes.Html) {
465
+ modelName = 'Html';
466
+ }
467
+ if (relationOrImageProperty.propertyDef?.dataType === ModelPropertyDataTypes.Relation) {
468
+ const def = relationOrImageProperty.propertyDef;
469
+ modelName = def.ref ?? def.refModelName;
470
+ }
471
+ if (!modelName) {
472
+ addValidationError(ctx, `Model name not found for relation or image property: ${relationOrImageProperty.propertyName}`, relationOrImageProperty.propertyName);
473
+ return multiPublishPayload;
474
+ }
475
+ const seedSchemaUid = await getEasSchemaUidForModel(modelName);
476
+ if (!seedSchemaUid) {
477
+ addValidationError(ctx, `Schema UID not found for model: ${modelName}`, relationOrImageProperty.propertyName);
478
+ return multiPublishPayload;
479
+ }
480
+ let publishPayload = {
481
+ localId: relatedItem.seedLocalId,
482
+ seedIsRevocable: true,
483
+ versionSchemaUid: VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA,
484
+ seedUid: seedUid || ZERO_BYTES32,
485
+ seedSchemaUid,
486
+ versionUid,
487
+ listOfAttestations: [],
488
+ propertiesToUpdate: [
489
+ {
490
+ publishLocalId: originalSeedLocalId,
491
+ propertySchemaUid: relationOrImageSchemaUid,
492
+ },
493
+ ],
494
+ };
495
+ await ensurePropertyDefs(relatedItem);
496
+ const { itemBasicProperties, itemUploadProperties } = await getSegmentedItemProperties(relatedItem);
497
+ if (itemUploadProperties.length === 1) {
498
+ const uploadProperty = itemUploadProperties[0];
499
+ const itemProperty = uploadProperty.itemProperty;
500
+ const transactionData = uploadedTransactions.find((transaction) => transaction.seedLocalId === relatedItem.seedLocalId);
501
+ if (transactionData) {
502
+ itemProperty.value = transactionData.txId;
503
+ await itemProperty.save();
504
+ itemBasicProperties.push(itemProperty);
505
+ }
506
+ }
507
+ publishPayload = await processBasicProperties(itemBasicProperties, publishPayload, ctx);
508
+ multiPublishPayload.push(publishPayload);
509
+ return multiPublishPayload;
510
+ };
511
+ const processListProperty = async (listProperty, multiPublishPayload, originalSeedLocalId, ctx) => {
512
+ // processListProperty only handles list-of-relations; list-of-primitives go to itemBasicProperties
513
+ if (!listProperty.propertyDef?.ref) {
514
+ addValidationError(ctx, `processListProperty requires ref (list of relations). List property "${listProperty.propertyName}" has no ref. List-of-primitives should be in itemBasicProperties.`, listProperty.propertyName);
515
+ return multiPublishPayload;
516
+ }
517
+ let listPropertySchemaUid = listProperty.schemaUid;
518
+ if (!listPropertySchemaUid && listProperty.propertyDef) {
519
+ const propertyData = await getPropertyData(listProperty, ctx);
520
+ if (!propertyData)
521
+ return multiPublishPayload;
522
+ listPropertySchemaUid = propertyData.schemaUid;
523
+ }
524
+ if (!listPropertySchemaUid) {
525
+ addValidationError(ctx, `Schema uid not found for list property: ${listProperty.propertyName}`, listProperty.propertyName);
526
+ return multiPublishPayload;
527
+ }
528
+ const snapshot = listProperty.getService().getSnapshot();
529
+ const context = 'context' in snapshot ? snapshot.context : null;
530
+ if (!context) {
531
+ return multiPublishPayload;
532
+ }
533
+ let value = context.propertyValue;
534
+ if (!value || listProperty.uid) {
535
+ return multiPublishPayload;
536
+ }
537
+ const singularPropertyName = pluralize.singular(listProperty.propertyName);
538
+ `${singularPropertyName}${listProperty.propertyDef.ref}Ids`;
539
+ if (typeof value === 'string') {
540
+ value = parseListPropertyValueFromStorage(value);
541
+ }
542
+ const iterableValue = Array.isArray(value)
543
+ ? value
544
+ : value != null
545
+ ? [value]
546
+ : [];
547
+ for (const seedId of iterableValue) {
548
+ const idStr = typeof seedId === 'string'
549
+ ? seedId
550
+ : seedId &&
551
+ typeof seedId === 'object' &&
552
+ (seedId.seedLocalId ?? seedId.seedUid ?? seedId.localId ?? seedId.uid);
553
+ if (!idStr)
554
+ continue;
555
+ const { localId: seedLocalId, uid: seedUid } = getCorrectId(idStr);
556
+ if (!seedLocalId && !seedUid)
557
+ continue;
558
+ // Use dynamic import to break circular dependency
559
+ const getItemMod = await import('./getItem-ClK0UZqi.js');
560
+ const { getItem } = getItemMod;
561
+ const relatedItem = await getItem({
562
+ seedLocalId,
563
+ seedUid,
564
+ });
565
+ if (!relatedItem) {
566
+ console.error(`No related item found for list property: ${listProperty.propertyName}`);
567
+ continue;
568
+ }
569
+ if (relatedItem.seedUid) {
570
+ continue;
571
+ }
572
+ const versionUid = getVersionUid(relatedItem);
573
+ let modelName;
574
+ if (listProperty.propertyDef?.ref || listProperty.propertyDef.refModelName) {
575
+ const def = listProperty.propertyDef;
576
+ modelName = def.ref ?? def.refModelName;
577
+ }
578
+ if (listProperty.propertyDef?.dataType === ModelPropertyDataTypes.Image) {
579
+ modelName = 'Image';
580
+ }
581
+ if (listProperty.propertyDef?.dataType === ModelPropertyDataTypes.File) {
582
+ modelName = 'File';
583
+ }
584
+ if (listProperty.propertyDef?.dataType === ModelPropertyDataTypes.Html) {
585
+ modelName = 'Html';
586
+ }
587
+ if (!modelName) {
588
+ addValidationError(ctx, `Model name not found for list property: ${listProperty.propertyName}`, listProperty.propertyName);
589
+ continue;
590
+ }
591
+ const seedSchemaUid = await getEasSchemaUidForModel(modelName);
592
+ if (!seedSchemaUid) {
593
+ addValidationError(ctx, `Schema UID not found for model: ${modelName}`, listProperty.propertyName);
594
+ continue;
595
+ }
596
+ let publishPayload = {
597
+ localId: relatedItem.seedLocalId,
598
+ seedIsRevocable: true,
599
+ versionSchemaUid: VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA,
600
+ seedUid: seedUid || ZERO_BYTES32,
601
+ seedSchemaUid,
602
+ versionUid,
603
+ listOfAttestations: [],
604
+ propertiesToUpdate: [
605
+ {
606
+ publishLocalId: originalSeedLocalId,
607
+ propertySchemaUid: listPropertySchemaUid,
608
+ },
609
+ ],
610
+ };
611
+ await ensurePropertyDefs(relatedItem);
612
+ const { itemBasicProperties } = await getSegmentedItemProperties(relatedItem);
613
+ publishPayload = await processBasicProperties(itemBasicProperties, publishPayload, ctx);
614
+ multiPublishPayload.push(publishPayload);
615
+ }
616
+ return multiPublishPayload;
617
+ };
618
+ /** Error thrown when publish validation fails. Includes all validation errors for user to fix. */
619
+ class PublishValidationFailedError extends Error {
620
+ constructor(message, validationErrors) {
621
+ super(message);
622
+ this.validationErrors = validationErrors;
623
+ this.name = 'PublishValidationFailedError';
624
+ }
625
+ }
626
+ const getPublishPayload = async (item, uploadedTransactions) => {
627
+ const validationCtx = { errors: [] };
628
+ let multiPublishPayload = [];
629
+ // Each PublishPayload is generated from a Seed that needs publishing
630
+ // First we need to determine all Seeds to publish
631
+ // That means the Seed of the Item, plus any Seeds pointed to by Relations
632
+ // Check if the item has a schema UID
633
+ let itemSchemaUid = item.schemaUid;
634
+ if (!itemSchemaUid) {
635
+ const schemaUid = await getEasSchemaUidForModel(item.modelName);
636
+ if (!schemaUid) {
637
+ addValidationError(validationCtx, `Schema UID not found for model: ${item.modelName}`);
638
+ itemSchemaUid = ZERO_BYTES32; // placeholder so we can continue collecting errors
639
+ }
640
+ else {
641
+ itemSchemaUid = schemaUid;
642
+ }
643
+ }
644
+ let versionUid = getVersionUid(item);
645
+ if (versionUid === ZERO_BYTES32 && item.seedUid && item.seedUid !== ZERO_BYTES32) {
646
+ versionUid = await resolveVersionUid(item.seedLocalId, item.seedUid);
647
+ }
648
+ let itemPublishData = {
649
+ localId: item.seedLocalId,
650
+ seedUid: item.seedUid || ZERO_BYTES32,
651
+ seedIsRevocable: true,
652
+ seedSchemaUid: itemSchemaUid,
653
+ versionSchemaUid: VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA,
654
+ versionUid,
655
+ listOfAttestations: [],
656
+ propertiesToUpdate: [],
657
+ };
658
+ await ensurePropertyDefs(item);
659
+ const { itemBasicProperties, itemListProperties, itemUploadProperties, itemImageProperties, itemRelationProperties, } = await getSegmentedItemProperties(item);
660
+ const relationAndImageProperties = [...itemRelationProperties, ...itemImageProperties];
661
+ // Validate required relations have values before processing
662
+ for (const relProp of itemRelationProperties) {
663
+ const snapshot = relProp.getService().getSnapshot();
664
+ const ctx = 'context' in snapshot ? snapshot.context : null;
665
+ const val = ctx ? ctx.renderValue ?? ctx.propertyValue : undefined;
666
+ if (val != null && typeof val === 'string' && val.trim() !== '')
667
+ continue;
668
+ // No value - check if required from propertyDef or DB
669
+ let isRequired = relProp.propertyDef?.required === true;
670
+ if (!isRequired && BaseDb.getAppDb() && item.modelName) {
671
+ const normalizedModelName = upperFirst(camelCase(item.modelName));
672
+ const modelRows = await BaseDb.getAppDb()
673
+ .select({ id: models.id })
674
+ .from(models)
675
+ .where(eq(models.name, normalizedModelName))
676
+ .limit(1);
677
+ if (modelRows.length > 0) {
678
+ const propRows = await BaseDb.getAppDb()
679
+ .select({ required: properties.required, refModelId: properties.refModelId })
680
+ .from(properties)
681
+ .where(and(eq(properties.modelId, modelRows[0].id), eq(properties.name, relProp.propertyName), eq(properties.dataType, 'Relation')))
682
+ .limit(1);
683
+ if (propRows.length > 0 && (propRows[0].required === true || propRows[0].required === 1)) {
684
+ isRequired = true;
685
+ }
686
+ }
687
+ }
688
+ if (isRequired) {
689
+ const refModel = relProp.propertyDef?.ref ?? relProp.propertyDef?.refModelName ?? 'related';
690
+ addValidationError(validationCtx, `Required relation ${relProp.propertyName} has no value. ` +
691
+ `A value pointing to a valid ${refModel} item is required to publish.`, relProp.propertyName);
692
+ }
693
+ }
694
+ if (itemUploadProperties.length === 1) {
695
+ const uploadProperty = itemUploadProperties[0];
696
+ const itemProperty = uploadProperty.itemProperty;
697
+ const transactionData = uploadedTransactions.find((transaction) => transaction.seedLocalId === item.seedLocalId);
698
+ if (transactionData) {
699
+ itemProperty.value = transactionData.txId;
700
+ await itemProperty.save();
701
+ itemBasicProperties.push(itemProperty);
702
+ }
703
+ }
704
+ for (const relationProperty of relationAndImageProperties) {
705
+ multiPublishPayload = await processRelationOrImageProperty(relationProperty, multiPublishPayload, uploadedTransactions, item.seedLocalId, validationCtx);
706
+ itemBasicProperties.push(relationProperty);
707
+ }
708
+ for (const listProperty of itemListProperties) {
709
+ multiPublishPayload = await processListProperty(listProperty, multiPublishPayload, item.seedLocalId, validationCtx);
710
+ itemBasicProperties.push(listProperty);
711
+ }
712
+ itemPublishData = await processBasicProperties(itemBasicProperties, itemPublishData, validationCtx);
713
+ multiPublishPayload.push(itemPublishData);
714
+ // Ensure requests are ordered so that when A has propertiesToUpdate pointing to B (publishLocalId),
715
+ // A (the updater) is published before B (the updatee). The contract injects A's seedUid into B's
716
+ // attestation before B is sent to EAS.
717
+ multiPublishPayload = orderPayloadByDependencies(multiPublishPayload);
718
+ // Ensure attestations referenced in propertiesToUpdate have at least one data element.
719
+ // The contract writes the seed UID into data[0].data; empty data causes Panic 50.
720
+ multiPublishPayload = ensurePropertiesToUpdateAttestationsHaveData(multiPublishPayload);
721
+ if (validationCtx.errors.length > 0) {
722
+ const combinedMessage = validationCtx.errors.map((e) => e.message).join('\n');
723
+ throw new PublishValidationFailedError(`Validation failed (${validationCtx.errors.length} error${validationCtx.errors.length === 1 ? '' : 's'}):\n${combinedMessage}`, validationCtx.errors);
724
+ }
725
+ return multiPublishPayload;
726
+ };
727
+ /**
728
+ * Validates an item for publishing without performing Arweave or EAS work.
729
+ * Use in the checking step to fail fast before creating transactions.
730
+ * Pass empty array for uploadedTransactions when validating before Arweave upload.
731
+ */
732
+ const validateItemForPublish = async (item, uploadedTransactions = []) => {
733
+ try {
734
+ await getPublishPayload(item, uploadedTransactions);
735
+ return { isValid: true, errors: [] };
736
+ }
737
+ catch (err) {
738
+ if (err instanceof PublishValidationFailedError) {
739
+ return { isValid: false, errors: err.validationErrors };
740
+ }
741
+ throw err;
742
+ }
743
+ };
744
+ /**
745
+ * Normalize a schema UID to 0x-prefixed 64-char hex for comparison.
746
+ */
747
+ function normalizeSchemaUid(v) {
748
+ if (v == null || v === '')
749
+ return '';
750
+ const raw = v.startsWith('0x') ? v.slice(2) : v;
751
+ const hex = raw.replace(/[^0-9a-fA-F]/g, '0').padStart(64, '0').slice(-64);
752
+ return ('0x' + hex).toLowerCase();
753
+ }
754
+ /**
755
+ * Ensure that when request A has propertiesToUpdate with (publishLocalId: B, propertySchemaUid: X),
756
+ * request B has an attestation for schema X with at least one data element. The contract writes
757
+ * the seed UID into data[0].data; empty data causes Panic 50.
758
+ */
759
+ function ensurePropertiesToUpdateAttestationsHaveData(payload) {
760
+ const byLocalId = new Map();
761
+ for (const p of payload) {
762
+ byLocalId.set(p.localId, p);
763
+ }
764
+ const placeholderData = {
765
+ ...defaultAttestationData,
766
+ data: ZERO_BYTES32,
767
+ };
768
+ for (const req of payload) {
769
+ for (const pu of req.propertiesToUpdate ?? []) {
770
+ const targetId = pu.publishLocalId;
771
+ const schemaUid = pu.propertySchemaUid;
772
+ if (!targetId || !schemaUid)
773
+ continue;
774
+ const targetReq = byLocalId.get(targetId);
775
+ if (!targetReq?.listOfAttestations)
776
+ continue;
777
+ const wantSchema = normalizeSchemaUid(schemaUid);
778
+ const att = targetReq.listOfAttestations.find((a) => normalizeSchemaUid(a?.schema) === wantSchema);
779
+ if (!att)
780
+ continue;
781
+ if (!Array.isArray(att.data) || att.data.length === 0) {
782
+ att.data = [placeholderData];
783
+ }
784
+ }
785
+ }
786
+ return payload;
787
+ }
788
+ /**
789
+ * Topological sort: when request A has propertiesToUpdate with publishLocalId B,
790
+ * A (the updater) must appear before B (the updatee). The contract injects A's seedUid
791
+ * into B's attestation before B is sent to EAS; if B is processed first, B's attestation
792
+ * goes out with wrong data (string instead of bytes32).
793
+ */
794
+ function orderPayloadByDependencies(payload) {
795
+ const byLocalId = new Map();
796
+ for (const p of payload) {
797
+ byLocalId.set(p.localId, p);
798
+ }
799
+ const visited = new Set();
800
+ const result = [];
801
+ const visit = (localId) => {
802
+ if (visited.has(localId))
803
+ return;
804
+ visited.add(localId);
805
+ const p = byLocalId.get(localId);
806
+ if (!p)
807
+ return;
808
+ result.push(p);
809
+ for (const u of p.propertiesToUpdate ?? []) {
810
+ const targetId = u.publishLocalId;
811
+ if (targetId && targetId !== localId)
812
+ visit(targetId);
813
+ }
814
+ };
815
+ for (const p of payload) {
816
+ visit(p.localId);
817
+ }
818
+ return result;
819
+ }
820
+ /**
821
+ * Resolves relation/image property values (seedLocalId) to attestation uids after dependent seeds are published.
822
+ * Call after each payload is published, passing the returned attestation uid for that seed's localId.
823
+ * Returns an updated multiPayload with re-encoded attestations where resolution was applied.
824
+ */
825
+ const resolvePublishPayloadValues = async (multiPayload, resolvedUids) => {
826
+ if (Object.keys(resolvedUids).length === 0) {
827
+ return multiPayload;
828
+ }
829
+ const SchemaEncoder = await getSchemaEncoder();
830
+ const result = [];
831
+ for (const payload of multiPayload) {
832
+ const updatedAttestations = [];
833
+ for (const attestation of payload.listOfAttestations) {
834
+ const entry = attestation;
835
+ const resolvedUid = entry._unresolvedValue && resolvedUids[entry._unresolvedValue];
836
+ if (resolvedUid && entry._schemaDef && entry._propertyName) {
837
+ const propertyNameForSchema = toSnakeCase$1(entry._propertyName);
838
+ const dataEncoder = new SchemaEncoder(entry._schemaDef);
839
+ const encodedData = dataEncoder.encodeData([
840
+ {
841
+ name: propertyNameForSchema,
842
+ type: entry._easDataType || 'bytes32',
843
+ value: resolvedUid,
844
+ },
845
+ ]);
846
+ const baseData = Array.isArray(entry.data) ? entry.data[0] : entry.data;
847
+ updatedAttestations.push({
848
+ ...entry,
849
+ data: [
850
+ {
851
+ ...baseData,
852
+ data: encodedData,
853
+ },
854
+ ],
855
+ _unresolvedValue: undefined,
856
+ });
857
+ }
858
+ else {
859
+ const normalizedEntry = {
860
+ ...entry,
861
+ data: Array.isArray(entry.data) ? entry.data : [entry.data],
862
+ };
863
+ updatedAttestations.push(normalizedEntry);
864
+ }
865
+ }
866
+ result.push({
867
+ ...payload,
868
+ listOfAttestations: updatedAttestations,
869
+ });
870
+ }
871
+ return result;
872
+ };
873
+
874
+ export { PublishValidationFailedError, getPublishPayload, resolvePublishPayloadValues, validateItemForPublish };
875
+ //# sourceMappingURL=getPublishPayload-CdfPTl8l.js.map