@seedprotocol/sdk 0.6.9 → 0.7.0

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 (382) hide show
  1. package/dist/{BasePathResolver-B6CKqoKw.js → BasePathResolver-ndE8XTpw.js} +36 -2
  2. package/dist/BasePathResolver-ndE8XTpw.js.map +1 -0
  3. package/dist/ClientManager-DLleL_2e.js +4763 -0
  4. package/dist/ClientManager-DLleL_2e.js.map +1 -0
  5. package/dist/{ClientManager-ChcmUL47.js → Item-zBFWQDU9.js} +1119 -5893
  6. package/dist/Item-zBFWQDU9.js.map +1 -0
  7. package/dist/{ModelProperty-D79uV42p.js → ModelProperty-lth9L37R.js} +289 -101
  8. package/dist/ModelProperty-lth9L37R.js.map +1 -0
  9. package/dist/{Schema-a8uO-hIZ.js → Schema-DOhlrQ-N.js} +94 -864
  10. package/dist/Schema-DOhlrQ-N.js.map +1 -0
  11. package/dist/{SchemaValidationService-Y49vqast.js → SchemaValidationService-DDKr5piy.js} +26 -18
  12. package/dist/SchemaValidationService-DDKr5piy.js.map +1 -0
  13. package/dist/{backfillMetadataPropertyIds-CBsf7LnU.js → backfillMetadataPropertyIds-fG3ujaSh.js} +11 -6
  14. package/dist/backfillMetadataPropertyIds-fG3ujaSh.js.map +1 -0
  15. package/dist/cjs/{ModelProperty-D9FGaGuE.js → ModelProperty-BEsIHAjk.js} +260 -81
  16. package/dist/cjs/ModelProperty-BEsIHAjk.js.map +1 -0
  17. package/dist/cjs/{Schema-BiJIPLEL.js → Schema-qEp5mH1N.js} +66 -847
  18. package/dist/cjs/Schema-qEp5mH1N.js.map +1 -0
  19. package/dist/cjs/{SchemaValidationService-DtYs_CNY.js → SchemaValidationService-CWEnZmOH.js} +18 -11
  20. package/dist/cjs/SchemaValidationService-CWEnZmOH.js.map +1 -0
  21. package/dist/cjs/{backfillMetadataPropertyIds-2XaN3b9S.js → backfillMetadataPropertyIds-tw8JGMT0.js} +8 -3
  22. package/dist/cjs/backfillMetadataPropertyIds-tw8JGMT0.js.map +1 -0
  23. package/dist/cjs/{eas-CMNppmGE.js → eas-CLiV2Hmn.js} +4 -4
  24. package/dist/cjs/{eas-CMNppmGE.js.map → eas-CLiV2Hmn.js.map} +1 -1
  25. package/dist/cjs/{getItem-B6jEINjW.js → getItem-DSRtx_68.js} +2 -2
  26. package/dist/cjs/{getItem-B6jEINjW.js.map → getItem-DSRtx_68.js.map} +1 -1
  27. package/dist/cjs/getLatestVersionRow-DVizNNoI.js +59 -0
  28. package/dist/cjs/getLatestVersionRow-DVizNNoI.js.map +1 -0
  29. package/dist/cjs/{getPublishPayload-D5DhLGvN.js → getPublishPayload-D5-dYtNq.js} +249 -60
  30. package/dist/cjs/getPublishPayload-D5-dYtNq.js.map +1 -0
  31. package/dist/cjs/{getPublishUploads-DMhCCKYF.js → getPublishUploads-B5Lq6q-_.js} +20 -13
  32. package/dist/cjs/getPublishUploads-B5Lq6q-_.js.map +1 -0
  33. package/dist/cjs/{getSegmentedItemProperties-CU8rtBAo.js → getSegmentedItemProperties-giHO7R3d.js} +10 -11
  34. package/dist/cjs/getSegmentedItemProperties-giHO7R3d.js.map +1 -0
  35. package/dist/cjs/{index-DPp9rdRL.js → index-B3UDbm1C.js} +3 -3
  36. package/dist/cjs/index-B3UDbm1C.js.map +1 -0
  37. package/dist/cjs/{index-CSNtEnbF.js → index-C66AfYDG.js} +2510 -1694
  38. package/dist/cjs/index-C66AfYDG.js.map +1 -0
  39. package/dist/cjs/{property-DlKiAWt4.js → property-BVJIP7SX.js} +40 -35
  40. package/dist/cjs/property-BVJIP7SX.js.map +1 -0
  41. package/dist/cjs/resetAmbiguousLegacyItemData-BaZqUui9.js +116 -0
  42. package/dist/cjs/resetAmbiguousLegacyItemData-BaZqUui9.js.map +1 -0
  43. package/dist/cjs/resolveModelForSyncedSeed-CC6dQctx.js +49 -0
  44. package/dist/cjs/resolveModelForSyncedSeed-CC6dQctx.js.map +1 -0
  45. package/dist/cjs/syncDbWithEas-Dk96sAG-.js +873 -0
  46. package/dist/cjs/syncDbWithEas-Dk96sAG-.js.map +1 -0
  47. package/dist/{configurePlatform-CE0Vew17.js → configurePlatform-BMoPG9vY.js} +4 -4
  48. package/dist/{configurePlatform-CE0Vew17.js.map → configurePlatform-BMoPG9vY.js.map} +1 -1
  49. package/dist/db/drizzle/0015_add_model_file_id_to_seeds.sql +11 -0
  50. package/dist/db/drizzle/0016_add_revoked_at_to_metadata.sql +1 -0
  51. package/dist/db/drizzle/0017_add_revoked_at_to_versions.sql +1 -0
  52. package/dist/db/drizzle/0018_add_storage_settings_to_properties.sql +53 -0
  53. package/dist/db/drizzle/0019_add_derived_from_uid_to_metadata.sql +35 -0
  54. package/dist/db/drizzle/meta/0011_snapshot.json +1182 -0
  55. package/dist/db/drizzle/meta/0012_snapshot.json +1244 -0
  56. package/dist/db/drizzle/meta/0013_snapshot.json +63 -1
  57. package/dist/db/drizzle/meta/0014_snapshot.json +62 -0
  58. package/dist/db/drizzle/meta/0015_snapshot.json +1338 -0
  59. package/dist/db/drizzle/meta/0016_snapshot.json +1345 -0
  60. package/dist/db/drizzle/meta/0017_snapshot.json +1352 -0
  61. package/dist/db/drizzle/meta/0018_snapshot.json +1373 -0
  62. package/dist/db/drizzle/meta/0019_snapshot.json +1380 -0
  63. package/dist/db/drizzle/meta/_journal.json +35 -0
  64. package/dist/{db-WbrzEf7c.js → db-BJZN0a0a.js} +546 -106
  65. package/dist/db-BJZN0a0a.js.map +1 -0
  66. package/dist/{eas-CfYCu4IX.js → eas-B0hsMLqt.js} +7 -7
  67. package/dist/eas-B0hsMLqt.js.map +1 -0
  68. package/dist/errors-CrBxGWah.js +17 -0
  69. package/dist/errors-CrBxGWah.js.map +1 -0
  70. package/dist/{getItem-Br-bGNFO.js → getItem-DEh4WfHG.js} +8 -10
  71. package/dist/{getItem-Br-bGNFO.js.map → getItem-DEh4WfHG.js.map} +1 -1
  72. package/dist/getLatestVersionRow-Brrl1AnW.js +46 -0
  73. package/dist/getLatestVersionRow-Brrl1AnW.js.map +1 -0
  74. package/dist/{getPublishPayload-BIrTVUxb.js → getPublishPayload-H032DHC7.js} +263 -75
  75. package/dist/getPublishPayload-H032DHC7.js.map +1 -0
  76. package/dist/{getPublishUploads-C6cDeZdz.js → getPublishUploads-CR66RlGJ.js} +25 -17
  77. package/dist/{getPublishUploads-C6cDeZdz.js.map → getPublishUploads-CR66RlGJ.js.map} +1 -1
  78. package/dist/{getSegmentedItemProperties-BmKE71vU.js → getSegmentedItemProperties-C2EJ2G0N.js} +13 -14
  79. package/dist/getSegmentedItemProperties-C2EJ2G0N.js.map +1 -0
  80. package/dist/{index-ClSv5pTA.js → index-6bJuv5Tt.js} +12 -11
  81. package/dist/index-6bJuv5Tt.js.map +1 -0
  82. package/dist/{index-Djd3667v.js → index-B0LgJblD.js} +2 -2
  83. package/dist/index-B0LgJblD.js.map +1 -0
  84. package/dist/{index-HRHkbVQd.js → index-DtfjeuxC.js} +417 -174
  85. package/dist/index-DtfjeuxC.js.map +1 -0
  86. package/dist/index.browser-CNrqhvEA.js +4139 -0
  87. package/dist/index.browser-CNrqhvEA.js.map +1 -0
  88. package/dist/{index.node-DBtQkEfz.js → index.node-DrHiTuOr.js} +9 -4
  89. package/dist/index.node-DrHiTuOr.js.map +1 -0
  90. package/dist/main.cjs +1 -1
  91. package/dist/main.js +771 -521
  92. package/dist/main.js.map +1 -1
  93. package/dist/node.js +19 -15
  94. package/dist/node.js.map +1 -1
  95. package/dist/platform.browser.js +18 -3719
  96. package/dist/platform.browser.js.map +1 -1
  97. package/dist/platform.node.js +3 -3
  98. package/dist/{property-CQjuZ4JW.js → property-D2Nnsmm1.js} +53 -48
  99. package/dist/property-D2Nnsmm1.js.map +1 -0
  100. package/dist/resetAmbiguousLegacyItemData-BqbHNUYk.js +88 -0
  101. package/dist/resetAmbiguousLegacyItemData-BqbHNUYk.js.map +1 -0
  102. package/dist/resolveModelForSyncedSeed-DQK6JfXS.js +46 -0
  103. package/dist/resolveModelForSyncedSeed-DQK6JfXS.js.map +1 -0
  104. package/dist/seedSchema/MetadataSchema.ts +9 -0
  105. package/dist/seedSchema/ModelSchema.ts +5 -0
  106. package/dist/seedSchema/SeedSchema.ts +3 -0
  107. package/dist/seedSchema/VersionSchema.ts +5 -0
  108. package/dist/src/Item/Item.d.ts +10 -0
  109. package/dist/src/Item/Item.d.ts.map +1 -1
  110. package/dist/src/Item/service/actors/loadOrCreateItem.d.ts.map +1 -1
  111. package/dist/src/Item/service/actors/waitForDb.d.ts.map +1 -1
  112. package/dist/src/Item/service/itemMachineSingle.d.ts +3 -29
  113. package/dist/src/Item/service/itemMachineSingle.d.ts.map +1 -1
  114. package/dist/src/ItemProperty/ItemProperty.d.ts +3 -4
  115. package/dist/src/ItemProperty/ItemProperty.d.ts.map +1 -1
  116. package/dist/src/ItemProperty/service/actors/hydrateFromDb.d.ts.map +1 -1
  117. package/dist/src/ItemProperty/service/actors/loadOrCreateProperty.d.ts.map +1 -1
  118. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveFile.d.ts.map +1 -1
  119. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveHtml.d.ts.map +1 -1
  120. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveImage.d.ts.map +1 -1
  121. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.d.ts.map +1 -1
  122. package/dist/src/ItemProperty/service/propertyMachine.d.ts +4 -9
  123. package/dist/src/ItemProperty/service/propertyMachine.d.ts.map +1 -1
  124. package/dist/src/Model/Model.d.ts +37 -0
  125. package/dist/src/Model/Model.d.ts.map +1 -1
  126. package/dist/src/Model/errors.d.ts +10 -0
  127. package/dist/src/Model/errors.d.ts.map +1 -0
  128. package/dist/src/Model/service/actors/createModelProperties.d.ts.map +1 -1
  129. package/dist/src/Model/service/actors/loadOrCreateModel.d.ts.map +1 -1
  130. package/dist/src/Model/service/modelMachine.d.ts +0 -8
  131. package/dist/src/Model/service/modelMachine.d.ts.map +1 -1
  132. package/dist/src/ModelProperty/ModelProperty.d.ts +33 -1
  133. package/dist/src/ModelProperty/ModelProperty.d.ts.map +1 -1
  134. package/dist/src/ModelProperty/service/actors/compareAndMarkDraft.d.ts.map +1 -1
  135. package/dist/src/ModelProperty/service/modelPropertyMachine.d.ts +2 -9
  136. package/dist/src/ModelProperty/service/modelPropertyMachine.d.ts.map +1 -1
  137. package/dist/src/Schema/Schema.d.ts +1 -2
  138. package/dist/src/Schema/Schema.d.ts.map +1 -1
  139. package/dist/src/Schema/service/schemaMachine.d.ts +1 -217
  140. package/dist/src/Schema/service/schemaMachine.d.ts.map +1 -1
  141. package/dist/src/Schema/service/validation/SchemaValidationService.d.ts.map +1 -1
  142. package/dist/src/browser/db/Db.d.ts +3 -0
  143. package/dist/src/browser/db/Db.d.ts.map +1 -1
  144. package/dist/src/browser/db/drizzleFiles.d.ts +7 -2
  145. package/dist/src/browser/db/drizzleFiles.d.ts.map +1 -1
  146. package/dist/src/browser/db/embeddedMigrations.d.ts +11 -2
  147. package/dist/src/browser/db/embeddedMigrations.d.ts.map +1 -1
  148. package/dist/src/browser/db/sqliteBusyRetry.d.ts +14 -0
  149. package/dist/src/browser/db/sqliteBusyRetry.d.ts.map +1 -0
  150. package/dist/src/browser/helpers/FileManager.d.ts +1 -0
  151. package/dist/src/browser/helpers/FileManager.d.ts.map +1 -1
  152. package/dist/src/browser/helpers/QueryClient.d.ts +1 -0
  153. package/dist/src/browser/helpers/QueryClient.d.ts.map +1 -1
  154. package/dist/src/browser/helpers/opfsErrors.d.ts +2 -0
  155. package/dist/src/browser/helpers/opfsErrors.d.ts.map +1 -0
  156. package/dist/src/browser/helpers/tolerantWebAccess.d.ts +47 -0
  157. package/dist/src/browser/helpers/tolerantWebAccess.d.ts.map +1 -0
  158. package/dist/src/browser/workers/FileDownloader.d.ts.map +1 -1
  159. package/dist/src/browser/workers/ImageResizer.d.ts.map +1 -1
  160. package/dist/src/browser/workers/filesDownload.d.ts.map +1 -1
  161. package/dist/src/browser/workers/imageResize.d.ts.map +1 -1
  162. package/dist/src/client/ClientManager.d.ts.map +1 -1
  163. package/dist/src/client/actors/addModelsToDb.d.ts +14 -0
  164. package/dist/src/client/actors/addModelsToDb.d.ts.map +1 -1
  165. package/dist/src/client/actors/platformClassesInit.d.ts.map +1 -1
  166. package/dist/src/client/actors/processSchemaFiles.d.ts.map +1 -1
  167. package/dist/src/client/actors/saveConfig.d.ts +11 -0
  168. package/dist/src/client/actors/saveConfig.d.ts.map +1 -1
  169. package/dist/src/client/constants.d.ts +0 -8
  170. package/dist/src/client/constants.d.ts.map +1 -1
  171. package/dist/src/db/backfillMetadataPropertyIds.d.ts.map +1 -1
  172. package/dist/src/db/configs/{dev.schema.config.d.ts → migrations.config.d.ts} +1 -1
  173. package/dist/src/db/configs/migrations.config.d.ts.map +1 -0
  174. package/dist/src/db/read/batchLatestPublishedVersionBySeedLocalIds.d.ts +1 -1
  175. package/dist/src/db/read/batchLatestPublishedVersionBySeedLocalIds.d.ts.map +1 -1
  176. package/dist/src/db/read/getItemData.d.ts.map +1 -1
  177. package/dist/src/db/read/getItemProperties.d.ts.map +1 -1
  178. package/dist/src/db/read/getItems.d.ts +7 -2
  179. package/dist/src/db/read/getItems.d.ts.map +1 -1
  180. package/dist/src/db/read/getLatestPublishedVersionRow.d.ts +2 -1
  181. package/dist/src/db/read/getLatestPublishedVersionRow.d.ts.map +1 -1
  182. package/dist/src/db/read/getLatestVersionRow.d.ts +13 -0
  183. package/dist/src/db/read/getLatestVersionRow.d.ts.map +1 -0
  184. package/dist/src/db/read/getModelSchemas.d.ts.map +1 -1
  185. package/dist/src/db/read/getPropertyData.d.ts.map +1 -1
  186. package/dist/src/db/read/getPublishPayload.d.ts +9 -11
  187. package/dist/src/db/read/getPublishPayload.d.ts.map +1 -1
  188. package/dist/src/db/read/getPublishPendingDiff.d.ts +2 -1
  189. package/dist/src/db/read/getPublishPendingDiff.d.ts.map +1 -1
  190. package/dist/src/db/read/getPublishUploads.d.ts.map +1 -1
  191. package/dist/src/db/read/getSchemaUidForModel.d.ts.map +1 -1
  192. package/dist/src/db/read/getSeedPublishState.d.ts +8 -2
  193. package/dist/src/db/read/getSeedPublishState.d.ts.map +1 -1
  194. package/dist/src/db/read/isSeedRevoked.d.ts +7 -0
  195. package/dist/src/db/read/isSeedRevoked.d.ts.map +1 -0
  196. package/dist/src/db/read/publishErrors.d.ts +37 -0
  197. package/dist/src/db/read/publishErrors.d.ts.map +1 -0
  198. package/dist/src/db/read/resolveModelForSyncedSeed.d.ts +39 -0
  199. package/dist/src/db/read/resolveModelForSyncedSeed.d.ts.map +1 -0
  200. package/dist/src/db/read/resolveModelRecord.d.ts +69 -0
  201. package/dist/src/db/read/resolveModelRecord.d.ts.map +1 -0
  202. package/dist/src/db/read/resolveRelatedSeedRef.d.ts +34 -0
  203. package/dist/src/db/read/resolveRelatedSeedRef.d.ts.map +1 -0
  204. package/dist/src/db/read/subqueries/liveVersion.d.ts +12 -0
  205. package/dist/src/db/read/subqueries/liveVersion.d.ts.map +1 -0
  206. package/dist/src/db/read/subqueries/metadataLatest.d.ts +4 -0
  207. package/dist/src/db/read/subqueries/metadataLatest.d.ts.map +1 -1
  208. package/dist/src/db/read/subqueries/versionData.d.ts +7 -2
  209. package/dist/src/db/read/subqueries/versionData.d.ts.map +1 -1
  210. package/dist/src/db/read/summarizePublishWork.d.ts +10 -2
  211. package/dist/src/db/read/summarizePublishWork.d.ts.map +1 -1
  212. package/dist/src/db/resetAmbiguousLegacyItemData.d.ts +17 -0
  213. package/dist/src/db/resetAmbiguousLegacyItemData.d.ts.map +1 -0
  214. package/dist/src/db/sqlParamBatches.d.ts +27 -0
  215. package/dist/src/db/sqlParamBatches.d.ts.map +1 -0
  216. package/dist/src/db/write/addExcludedTransactions.d.ts +7 -0
  217. package/dist/src/db/write/addExcludedTransactions.d.ts.map +1 -0
  218. package/dist/src/db/write/applyPropertyAttestationUidsFromPublish.d.ts +6 -0
  219. package/dist/src/db/write/applyPropertyAttestationUidsFromPublish.d.ts.map +1 -1
  220. package/dist/src/db/write/createMetadata.d.ts +2 -0
  221. package/dist/src/db/write/createMetadata.d.ts.map +1 -1
  222. package/dist/src/db/write/createNewItem.d.ts +3 -1
  223. package/dist/src/db/write/createNewItem.d.ts.map +1 -1
  224. package/dist/src/db/write/createSeed.d.ts +2 -1
  225. package/dist/src/db/write/createSeed.d.ts.map +1 -1
  226. package/dist/src/db/write/createSeeds.d.ts +1 -1
  227. package/dist/src/db/write/createSeeds.d.ts.map +1 -1
  228. package/dist/src/db/write/linkModelToSchema.d.ts +12 -0
  229. package/dist/src/db/write/linkModelToSchema.d.ts.map +1 -0
  230. package/dist/src/db/write/updateItemPropertyValue.d.ts.map +1 -1
  231. package/dist/src/db/write/updateMetadata.d.ts.map +1 -1
  232. package/dist/src/db/write/updateSeedRevokedAt.d.ts +11 -1
  233. package/dist/src/db/write/updateSeedRevokedAt.d.ts.map +1 -1
  234. package/dist/src/db/write/updateSeedUid.d.ts.map +1 -1
  235. package/dist/src/db/write/updateVersionUid.d.ts +2 -1
  236. package/dist/src/db/write/updateVersionUid.d.ts.map +1 -1
  237. package/dist/src/events/files/download.d.ts.map +1 -1
  238. package/dist/src/events/item/easSyncManager.d.ts +2 -0
  239. package/dist/src/events/item/easSyncManager.d.ts.map +1 -1
  240. package/dist/src/events/item/index.d.ts.map +1 -1
  241. package/dist/src/events/item/syncDbWithEas.d.ts +16 -0
  242. package/dist/src/events/item/syncDbWithEas.d.ts.map +1 -1
  243. package/dist/src/helpers/FileManager/BaseFileManager.d.ts +1 -0
  244. package/dist/src/helpers/FileManager/BaseFileManager.d.ts.map +1 -1
  245. package/dist/src/helpers/FileManager/IFileManager.d.ts +5 -0
  246. package/dist/src/helpers/FileManager/IFileManager.d.ts.map +1 -1
  247. package/dist/src/helpers/FileManager/errors.d.ts +10 -0
  248. package/dist/src/helpers/FileManager/errors.d.ts.map +1 -0
  249. package/dist/src/helpers/compareMetadataRowsLatestFirst.d.ts +21 -3
  250. package/dist/src/helpers/compareMetadataRowsLatestFirst.d.ts.map +1 -1
  251. package/dist/src/helpers/constants.d.ts +9 -0
  252. package/dist/src/helpers/constants.d.ts.map +1 -1
  253. package/dist/src/helpers/crypto.d.ts +5 -0
  254. package/dist/src/helpers/crypto.d.ts.map +1 -1
  255. package/dist/src/helpers/db.d.ts +25 -5
  256. package/dist/src/helpers/db.d.ts.map +1 -1
  257. package/dist/src/helpers/easPropertyCanonical.d.ts +1 -1
  258. package/dist/src/helpers/easPropertyCanonical.d.ts.map +1 -1
  259. package/dist/src/helpers/entity/entityCommon.d.ts +10 -0
  260. package/dist/src/helpers/entity/entityCommon.d.ts.map +1 -1
  261. package/dist/src/helpers/entity/entityDestroy.d.ts +1 -1
  262. package/dist/src/helpers/entity/entityDestroy.d.ts.map +1 -1
  263. package/dist/src/helpers/entity/entityLiveQuery.d.ts +5 -0
  264. package/dist/src/helpers/entity/entityLiveQuery.d.ts.map +1 -1
  265. package/dist/src/helpers/file/fetchAll/actors.d.ts.map +1 -1
  266. package/dist/src/helpers/getSegmentedItemProperties.d.ts.map +1 -1
  267. package/dist/src/helpers/htmlEmbeddedDataUriPublish.d.ts +6 -0
  268. package/dist/src/helpers/htmlEmbeddedDataUriPublish.d.ts.map +1 -1
  269. package/dist/src/helpers/isPublishedMetadataRow.d.ts +10 -0
  270. package/dist/src/helpers/isPublishedMetadataRow.d.ts.map +1 -0
  271. package/dist/src/helpers/ownership.d.ts.map +1 -1
  272. package/dist/src/helpers/property.d.ts +6 -1
  273. package/dist/src/helpers/property.d.ts.map +1 -1
  274. package/dist/src/helpers/schema.d.ts +14 -4
  275. package/dist/src/helpers/schema.d.ts.map +1 -1
  276. package/dist/src/helpers/tabCoordinator.d.ts +45 -0
  277. package/dist/src/helpers/tabCoordinator.d.ts.map +1 -0
  278. package/dist/src/helpers/tabEvents.d.ts +27 -0
  279. package/dist/src/helpers/tabEvents.d.ts.map +1 -0
  280. package/dist/src/helpers/tabLocks.d.ts +28 -0
  281. package/dist/src/helpers/tabLocks.d.ts.map +1 -0
  282. package/dist/src/helpers/updateSchema.d.ts.map +1 -1
  283. package/dist/src/imports/json.d.ts.map +1 -1
  284. package/dist/src/imports/markdown.d.ts.map +1 -1
  285. package/dist/src/index.d.ts +11 -2
  286. package/dist/src/index.d.ts.map +1 -1
  287. package/dist/src/node/db/Db.d.ts.map +1 -1
  288. package/dist/src/node/helpers/FileManager.d.ts +2 -0
  289. package/dist/src/node/helpers/FileManager.d.ts.map +1 -1
  290. package/dist/src/query/createLocalQueryDataSource.d.ts +4 -0
  291. package/dist/src/query/createLocalQueryDataSource.d.ts.map +1 -1
  292. package/dist/src/seedSchema/MetadataSchema.d.ts +36 -0
  293. package/dist/src/seedSchema/MetadataSchema.d.ts.map +1 -1
  294. package/dist/src/seedSchema/ModelSchema.d.ts +57 -0
  295. package/dist/src/seedSchema/ModelSchema.d.ts.map +1 -1
  296. package/dist/src/seedSchema/SeedSchema.d.ts +19 -0
  297. package/dist/src/seedSchema/SeedSchema.d.ts.map +1 -1
  298. package/dist/src/seedSchema/VersionSchema.d.ts +17 -0
  299. package/dist/src/seedSchema/VersionSchema.d.ts.map +1 -1
  300. package/dist/src/services/write/actors/writeToDatabase.d.ts +5 -0
  301. package/dist/src/services/write/actors/writeToDatabase.d.ts.map +1 -1
  302. package/dist/src/services/write/writeProcessMachine.d.ts.map +1 -1
  303. package/dist/src/stores/eas.d.ts +1 -1
  304. package/dist/src/stores/eas.d.ts.map +1 -1
  305. package/dist/src/types/index.d.ts +7 -0
  306. package/dist/src/types/index.d.ts.map +1 -1
  307. package/dist/src/types/item.d.ts +12 -3
  308. package/dist/src/types/item.d.ts.map +1 -1
  309. package/dist/src/types/property.d.ts +3 -2
  310. package/dist/src/types/property.d.ts.map +1 -1
  311. package/dist/syncDbWithEas-LRKr_NZF.js +855 -0
  312. package/dist/syncDbWithEas-LRKr_NZF.js.map +1 -0
  313. package/dist/{index-280bL-n4.js → tabEvents-DYI2GU7i.js} +231 -68
  314. package/dist/tabEvents-DYI2GU7i.js.map +1 -0
  315. package/dist/tolerantWebAccess-CzOBz5M6.js +160 -0
  316. package/dist/tolerantWebAccess-CzOBz5M6.js.map +1 -0
  317. package/dist/updateSeedRevokedAt-B58ORbY3.js +32 -0
  318. package/dist/updateSeedRevokedAt-B58ORbY3.js.map +1 -0
  319. package/package.json +5 -5
  320. package/dist/BasePathResolver-B6CKqoKw.js.map +0 -1
  321. package/dist/ClientManager-ChcmUL47.js.map +0 -1
  322. package/dist/ModelProperty-D79uV42p.js.map +0 -1
  323. package/dist/Schema-a8uO-hIZ.js.map +0 -1
  324. package/dist/SchemaValidationService-Y49vqast.js.map +0 -1
  325. package/dist/backfillMetadataPropertyIds-CBsf7LnU.js.map +0 -1
  326. package/dist/cjs/ModelProperty-D9FGaGuE.js.map +0 -1
  327. package/dist/cjs/Schema-BiJIPLEL.js.map +0 -1
  328. package/dist/cjs/SchemaValidationService-DtYs_CNY.js.map +0 -1
  329. package/dist/cjs/backfillMetadataPropertyIds-2XaN3b9S.js.map +0 -1
  330. package/dist/cjs/getPublishPayload-D5DhLGvN.js.map +0 -1
  331. package/dist/cjs/getPublishUploads-DMhCCKYF.js.map +0 -1
  332. package/dist/cjs/getSegmentedItemProperties-CU8rtBAo.js.map +0 -1
  333. package/dist/cjs/index-CSNtEnbF.js.map +0 -1
  334. package/dist/cjs/index-DPp9rdRL.js.map +0 -1
  335. package/dist/cjs/property-DlKiAWt4.js.map +0 -1
  336. package/dist/cjs/syncDbWithEas-C6n34o_Q.js +0 -606
  337. package/dist/cjs/syncDbWithEas-C6n34o_Q.js.map +0 -1
  338. package/dist/db-WbrzEf7c.js.map +0 -1
  339. package/dist/eas-CfYCu4IX.js.map +0 -1
  340. package/dist/getPublishPayload-BIrTVUxb.js.map +0 -1
  341. package/dist/getSegmentedItemProperties-BmKE71vU.js.map +0 -1
  342. package/dist/index-280bL-n4.js.map +0 -1
  343. package/dist/index-ClSv5pTA.js.map +0 -1
  344. package/dist/index-Djd3667v.js.map +0 -1
  345. package/dist/index-HRHkbVQd.js.map +0 -1
  346. package/dist/index.node-DBtQkEfz.js.map +0 -1
  347. package/dist/property-CQjuZ4JW.js.map +0 -1
  348. package/dist/src/Item/service/actors/fetchDataFromEas.d.ts +0 -4
  349. package/dist/src/Item/service/actors/fetchDataFromEas.d.ts.map +0 -1
  350. package/dist/src/Item/service/actors/hydrateExistingItem.d.ts +0 -4
  351. package/dist/src/Item/service/actors/hydrateExistingItem.d.ts.map +0 -1
  352. package/dist/src/Item/service/actors/hydrateNewItem.d.ts +0 -4
  353. package/dist/src/Item/service/actors/hydrateNewItem.d.ts.map +0 -1
  354. package/dist/src/Item/service/actors/initialize.d.ts +0 -4
  355. package/dist/src/Item/service/actors/initialize.d.ts.map +0 -1
  356. package/dist/src/Item/service/actors/reload.d.ts +0 -5
  357. package/dist/src/Item/service/actors/reload.d.ts.map +0 -1
  358. package/dist/src/Item/service/actors/saveDataToDb.d.ts +0 -4
  359. package/dist/src/Item/service/actors/saveDataToDb.d.ts.map +0 -1
  360. package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.d.ts +0 -5
  361. package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.d.ts.map +0 -1
  362. package/dist/src/Schema/service/addModelsMachine.d.ts +0 -123
  363. package/dist/src/Schema/service/addModelsMachine.d.ts.map +0 -1
  364. package/dist/src/db/configs/dev.schema.config.d.ts.map +0 -1
  365. package/dist/src/helpers/file/download/actors.d.ts +0 -17
  366. package/dist/src/helpers/file/download/actors.d.ts.map +0 -1
  367. package/dist/src/helpers/file/download/index.d.ts +0 -70
  368. package/dist/src/helpers/file/download/index.d.ts.map +0 -1
  369. package/dist/src/services/publish/actors/createPublishAttempt.d.ts +0 -4
  370. package/dist/src/services/publish/actors/createPublishAttempt.d.ts.map +0 -1
  371. package/dist/src/services/publish/actors/preparePublishRequestData.d.ts +0 -4
  372. package/dist/src/services/publish/actors/preparePublishRequestData.d.ts.map +0 -1
  373. package/dist/src/services/publish/actors/upload.d.ts +0 -4
  374. package/dist/src/services/publish/actors/upload.d.ts.map +0 -1
  375. package/dist/src/services/publish/actors/validateItemData.d.ts +0 -4
  376. package/dist/src/services/publish/actors/validateItemData.d.ts.map +0 -1
  377. package/dist/src/services/publish/publishMachine.d.ts +0 -32
  378. package/dist/src/services/publish/publishMachine.d.ts.map +0 -1
  379. package/dist/syncDbWithEas-CuARXfyN.js +0 -598
  380. package/dist/syncDbWithEas-CuARXfyN.js.map +0 -1
  381. package/dist/updateSeedRevokedAt-CBcLfHWs.js +0 -22
  382. package/dist/updateSeedRevokedAt-CBcLfHWs.js.map +0 -1
@@ -1,22 +1,22 @@
1
1
  'use strict';
2
2
 
3
- var main_cjs = require('./index-CSNtEnbF.js');
3
+ var main_cjs = require('./index-C66AfYDG.js');
4
4
  var easSdk = require('@ethereum-attestation-service/eas-sdk');
5
5
  var casing = require('drizzle-orm/casing');
6
6
  var eas = require('@seedprotocol/eas');
7
- var getSegmentedItemProperties = require('./getSegmentedItemProperties-CU8rtBAo.js');
8
- var property = require('./property-DlKiAWt4.js');
9
- var lodashEs = require('lodash-es');
10
7
  var drizzleOrm = require('drizzle-orm');
8
+ var getSegmentedItemProperties = require('./getSegmentedItemProperties-giHO7R3d.js');
9
+ var property = require('./property-BVJIP7SX.js');
10
+ var lodashEs = require('lodash-es');
11
11
  var debug = require('debug');
12
12
  require('@noble/hashes/sha3');
13
13
  require('@noble/hashes/utils');
14
14
  require('reflect-metadata');
15
+ require('pluralize');
15
16
  require('immer');
16
17
  require('xstate');
17
18
  require('drizzle-orm/sqlite-core');
18
19
  require('@seedprotocol/arweave');
19
- require('pluralize');
20
20
  require('@sinclair/typebox');
21
21
  require('nanoid');
22
22
  require('nanoid-dictionary');
@@ -35,6 +35,25 @@ require('child_process');
35
35
  require('@seedprotocol/arweave/node');
36
36
  require('@seedprotocol/eas/node');
37
37
 
38
+ /**
39
+ * True when the item's seed attestation was revoked (`seeds.revoked_at` set, by unpublish or EAS
40
+ * sync). Such a seed can't take new versions: publishing again creates a new seed attestation
41
+ * (see "Republishing" in docs/ATTESTATION_REVOCATION.md).
42
+ */
43
+ const isSeedRevoked = async (seedLocalId) => {
44
+ if (!seedLocalId)
45
+ return false;
46
+ const appDb = main_cjs.BaseDb.getAppDb();
47
+ if (!appDb)
48
+ return false;
49
+ const [row] = await appDb
50
+ .select({ revokedAt: main_cjs.seeds.revokedAt })
51
+ .from(main_cjs.seeds)
52
+ .where(drizzleOrm.eq(main_cjs.seeds.localId, seedLocalId))
53
+ .limit(1);
54
+ return main_cjs.isVersionRevoked(row?.revokedAt);
55
+ };
56
+
38
57
  /** UTF-8 string to 0x-prefixed bytes32 hex (right-padded with zeros). */
39
58
  function encodeBytes32String(value) {
40
59
  const bytes = new TextEncoder().encode(value);
@@ -47,11 +66,155 @@ function encodeBytes32String(value) {
47
66
  return `0x${hex.padEnd(64, '0')}`;
48
67
  }
49
68
 
50
- // Dynamic import to break circular dependency with getItem -> BaseItem
51
- // import { getItem } from '@/db/read/getItem'
69
+ /** Error thrown when publish validation fails. Includes all validation errors for user to fix. */
70
+ class PublishValidationFailedError extends Error {
71
+ constructor(message, validationErrors) {
72
+ super(message);
73
+ this.validationErrors = validationErrors;
74
+ this.name = 'PublishValidationFailedError';
75
+ }
76
+ }
77
+ /** Validation error code for a relation, list member or image/file ref to an unpublished seed. */
78
+ const RELATED_ITEM_UNPUBLISHED_CODE = 'related_item_unpublished';
79
+ const describeUnpublishedRelatedItem = (r) => `${r.propertyName} -> ${r.modelName} ${r.seedLocalId} (seed ${r.seedUid})`;
80
+ /**
81
+ * Thrown before anything is uploaded or attested when the item references items whose seed was
82
+ * unpublished: the parent would attest a revoked seed uid. Republish those items (which gives
83
+ * them a new seed uid) or remove the references, then publish again.
84
+ * See docs/ATTESTATION_REVOCATION.md ("Republishing").
85
+ *
86
+ * A PublishValidationFailedError, so validateItemForPublish and the publish package's checking
87
+ * step report it as validation errors (code `related_item_unpublished`, one per reference).
88
+ */
89
+ class RelatedItemUnpublishedError extends PublishValidationFailedError {
90
+ constructor(unpublishedRelatedItems, otherValidationErrors = []) {
91
+ const lines = unpublishedRelatedItems.map(describeUnpublishedRelatedItem);
92
+ const message = `Cannot publish: it references ${lines.length} unpublished item${lines.length === 1 ? '' : 's'} ` +
93
+ `(their seed attestations were revoked). Republish them or remove the references, then publish again:\n` +
94
+ lines.join('\n');
95
+ super(message, [
96
+ ...unpublishedRelatedItems.map((r) => ({
97
+ field: r.propertyName,
98
+ message: `${r.propertyName} references unpublished ${r.modelName} ${r.seedLocalId} (seed ${r.seedUid}). ` +
99
+ `Republish it or remove the reference.`,
100
+ code: RELATED_ITEM_UNPUBLISHED_CODE,
101
+ })),
102
+ ...otherValidationErrors,
103
+ ]);
104
+ this.name = 'RelatedItemUnpublishedError';
105
+ this.unpublishedRelatedItems = unpublishedRelatedItems;
106
+ }
107
+ }
108
+
109
+ const selectSeed = {
110
+ seedLocalId: main_cjs.seeds.localId,
111
+ seedUid: main_cjs.seeds.uid,
112
+ revokedAt: main_cjs.seeds.revokedAt,
113
+ type: main_cjs.seeds.type,
114
+ };
115
+ /**
116
+ * The local seed row a relation/list/image ref points at, by local id or uid. A uid that is no
117
+ * seed's current uid can be the old uid of a seed that was unpublished and published again (a new
118
+ * seed attestation, same local seed): its old version rows still record it, so it resolves to that
119
+ * seed. Null when nothing local matches (e.g. a published uid with no local copy).
120
+ */
121
+ const findRelatedSeedRow = async ({ seedLocalId, seedUid, }) => {
122
+ const appDb = main_cjs.BaseDb.getAppDb();
123
+ if (!appDb)
124
+ return null;
125
+ if (seedLocalId) {
126
+ const [row] = await appDb.select(selectSeed).from(main_cjs.seeds).where(drizzleOrm.eq(main_cjs.seeds.localId, seedLocalId)).limit(1);
127
+ if (row?.seedLocalId)
128
+ return row;
129
+ }
130
+ if (!seedUid || seedUid === main_cjs.ZERO_BYTES32)
131
+ return null;
132
+ const [byUid] = await appDb.select(selectSeed).from(main_cjs.seeds).where(drizzleOrm.eq(main_cjs.seeds.uid, seedUid)).limit(1);
133
+ if (byUid?.seedLocalId)
134
+ return byUid;
135
+ const [version] = await appDb
136
+ .select({ seedLocalId: main_cjs.versions.seedLocalId })
137
+ .from(main_cjs.versions)
138
+ .where(drizzleOrm.and(drizzleOrm.eq(main_cjs.versions.seedUid, seedUid), drizzleOrm.isNotNull(main_cjs.versions.seedLocalId)))
139
+ .limit(1);
140
+ if (!version?.seedLocalId)
141
+ return null;
142
+ const [republished] = await appDb
143
+ .select(selectSeed)
144
+ .from(main_cjs.seeds)
145
+ .where(drizzleOrm.eq(main_cjs.seeds.localId, version.seedLocalId))
146
+ .limit(1);
147
+ return republished?.seedLocalId ? republished : null;
148
+ };
149
+ /** The seed is attested and its attestation is live. */
150
+ const isLivePublishedSeed = (row) => !!row?.seedUid && row.seedUid !== main_cjs.ZERO_BYTES32 && !main_cjs.isVersionRevoked(row.revokedAt);
151
+ /** The seed was attested and that attestation was revoked (unpublished). */
152
+ const isUnpublishedSeed = (row) => !!row?.seedUid && row.seedUid !== main_cjs.ZERO_BYTES32 && main_cjs.isVersionRevoked(row.revokedAt);
153
+ /** Model a relation/list/image property points at, from its definition. */
154
+ function relatedModelNameFromDef(propertyDef) {
155
+ const def = propertyDef;
156
+ if (!def)
157
+ return undefined;
158
+ const dataType = main_cjs.normalizeDataType(def.dataType);
159
+ if (dataType === main_cjs.ModelPropertyDataTypes.Image)
160
+ return 'Image';
161
+ if (dataType === main_cjs.ModelPropertyDataTypes.File)
162
+ return 'File';
163
+ if (dataType === main_cjs.ModelPropertyDataTypes.Html)
164
+ return 'Html';
165
+ return def.ref ?? def.refModelName;
166
+ }
167
+ /**
168
+ * Name of the item's Html property whose value is the Html seed `htmlSeedLocalId`: the property
169
+ * that refers to the images embedded in that Html (htmlEmbeddedImageCoPublish rows).
170
+ */
171
+ function htmlPropertyNameForHtmlSeed(item, htmlSeedLocalId) {
172
+ const want = htmlSeedLocalId.trim();
173
+ for (const p of item.properties ?? []) {
174
+ if (main_cjs.normalizeDataType(p.propertyDef?.dataType) !== main_cjs.ModelPropertyDataTypes.Html)
175
+ continue;
176
+ const snap = p.getService().getSnapshot();
177
+ const value = 'context' in snap ? snap.context.propertyValue : undefined;
178
+ if (typeof value === 'string' && value.trim() === want)
179
+ return p.propertyName;
180
+ }
181
+ return 'html';
182
+ }
183
+
52
184
  debug('seedSdk:db:getPublishPayload');
53
185
  /** Case-insensitive dataType match (schema JSON may use "text" vs "Text"). */
54
186
  const matchesDataType = (actual, expected) => main_cjs.normalizeDataType(actual) === expected;
187
+ /**
188
+ * Checks the seed a relation/list/image ref points at. A revoked (unpublished) seed is recorded in
189
+ * `ctx.unpublishedRelatedItems`; a live published one maps the ref to its current uid. Returns
190
+ * true when the caller must not walk into the related item (it is published, live or revoked).
191
+ */
192
+ function noteRelatedSeed(ctx, ref, row, propertyName, modelName) {
193
+ if (isUnpublishedSeed(row)) {
194
+ ctx.unpublishedRelatedItems ?? (ctx.unpublishedRelatedItems = []);
195
+ if (!ctx.unpublishedRelatedItems.some((r) => r.propertyName === propertyName && r.seedLocalId === row.seedLocalId)) {
196
+ ctx.unpublishedRelatedItems.push({
197
+ propertyName,
198
+ modelName: modelName ?? row.type ?? 'unknown',
199
+ seedLocalId: row.seedLocalId,
200
+ seedUid: row.seedUid,
201
+ });
202
+ }
203
+ return true;
204
+ }
205
+ if (isLivePublishedSeed(row)) {
206
+ if (ref !== row.seedUid) {
207
+ ctx.relatedRefUids ?? (ctx.relatedRefUids = new Map());
208
+ ctx.relatedRefUids.set(ref, row.seedUid);
209
+ }
210
+ return true;
211
+ }
212
+ return false;
213
+ }
214
+ /** Current uid for a ref noted by noteRelatedSeed, else the ref itself. */
215
+ function currentRelatedRef(ctx, ref) {
216
+ return ctx.relatedRefUids?.get(ref.trim()) ?? ref;
217
+ }
55
218
  function addValidationError(ctx, message, field, code = 'publish_validation') {
56
219
  // A property can be validated on more than one path (List of Relation: list + basic); report once.
57
220
  if (ctx.errors.some((e) => e.message === message && e.field === (field ?? '')))
@@ -133,7 +296,7 @@ async function resolveVersionUid(seedLocalId, seedUid) {
133
296
  if (published?.uid)
134
297
  return published.uid;
135
298
  try {
136
- const { getItemVersionsFromEas } = await Promise.resolve().then(function () { return require('./eas-CMNppmGE.js'); });
299
+ const { getItemVersionsFromEas } = await Promise.resolve().then(function () { return require('./eas-CLiV2Hmn.js'); });
137
300
  const attestations = await getItemVersionsFromEas({ seedUids: [seedUid] });
138
301
  const latest = attestations?.[0];
139
302
  if (latest?.id)
@@ -193,15 +356,17 @@ const ensurePropertyDefs = async (targetItem) => {
193
356
  (matchesDataType(p.propertyDef?.dataType, main_cjs.ModelPropertyDataTypes.Relation) &&
194
357
  p.propertyDef?.required === undefined)));
195
358
  let schema;
359
+ // Model names are only unique per schema: resolve definitions from this item's own model.
360
+ const targetScope = await main_cjs.getItemModelScope(targetItem);
196
361
  for (const itemProperty of targetItem.properties) {
197
362
  if (!itemProperty.propertyDef && targetItem.modelName) {
198
- schema = await property.getPropertySchema(targetItem.modelName, itemProperty.propertyName);
363
+ schema = await property.getPropertySchema(targetItem.modelName, itemProperty.propertyName, targetScope);
199
364
  if (!schema) {
200
365
  try {
201
- const { Model } = await Promise.resolve().then(function () { return require('./index-CSNtEnbF.js'); }).then(function (n) { return n.Model$1; });
366
+ const { Model } = await Promise.resolve().then(function () { return require('./index-C66AfYDG.js'); }).then(function (n) { return n.Model$1; });
202
367
  const normalizedModelName = lodashEs.upperFirst(lodashEs.camelCase(targetItem.modelName));
203
- let model = Model.getByName(normalizedModelName);
204
- if (!model?.properties?.length) {
368
+ let model = Model.resolve(normalizedModelName, targetScope);
369
+ if (!model?.properties?.length && !targetScope.modelFileId) {
205
370
  model = Model.findByModelType(casing.toSnakeCase(targetItem.modelName));
206
371
  }
207
372
  const modelFound = !!model;
@@ -222,11 +387,8 @@ const ensurePropertyDefs = async (targetItem) => {
222
387
  if (db) {
223
388
  try {
224
389
  const normalizedModelName = lodashEs.upperFirst(lodashEs.camelCase(targetItem.modelName));
225
- const modelRecords = await db
226
- .select({ id: main_cjs.models.id })
227
- .from(main_cjs.models)
228
- .where(drizzleOrm.eq(main_cjs.models.name, normalizedModelName))
229
- .limit(1);
390
+ const modelRecord = await main_cjs.resolveModelRecord(normalizedModelName, targetScope, db);
391
+ const modelRecords = modelRecord ? [modelRecord] : [];
230
392
  if (modelRecords.length > 0 && modelRecords[0].id) {
231
393
  const propertyRecords = await db
232
394
  .select()
@@ -357,13 +519,17 @@ const processBasicProperties = async (itemBasicProperties, itemPublishData, ctx,
357
519
  .map((s) => s.trim())
358
520
  .filter(Boolean);
359
521
  }
522
+ // A ref to a published related item attests that item's current uid.
523
+ if (typeof value === 'string' && (isRelation || isFileImageHtml || isJsonStorage)) {
524
+ value = currentRelatedRef(ctx, value);
525
+ }
360
526
  if (schemaDef.startsWith('bytes32[]') && !Array.isArray(value)) {
361
527
  addValidationError(ctx, `Invalid value for property: ${basicProperty.propertyName}. Expected an array of bytes32, got ${value}.`, basicProperty.propertyName);
362
528
  continue;
363
529
  }
364
530
  // Validate against property validation rules (enum, pattern, minLength, maxLength) before encoding
365
531
  if (propertyDef?.validation) {
366
- const { SchemaValidationService } = await Promise.resolve().then(function () { return require('./SchemaValidationService-DtYs_CNY.js'); });
532
+ const { SchemaValidationService } = await Promise.resolve().then(function () { return require('./SchemaValidationService-CWEnZmOH.js'); });
367
533
  const validationService = new SchemaValidationService();
368
534
  const validationResult = validationService.validatePropertyValue(value, main_cjs.normalizeDataType(propertyDef.dataType), propertyDef.validation, propertyDef.refValueType
369
535
  ? main_cjs.normalizeDataType(propertyDef.refValueType)
@@ -394,7 +560,7 @@ const processBasicProperties = async (itemBasicProperties, itemPublishData, ctx,
394
560
  : '';
395
561
  if (!idStr)
396
562
  continue;
397
- const trimmed = idStr.trim();
563
+ const trimmed = currentRelatedRef(ctx, idStr.trim());
398
564
  if (!trimmed)
399
565
  continue;
400
566
  rawIds.push(trimmed);
@@ -503,7 +669,7 @@ const processRelationOrImageProperty = async (relationOrImageProperty, multiPubl
503
669
  matchesDataType(relationOrImageProperty.propertyDef?.refValueType, main_cjs.ModelPropertyDataTypes.Html) ||
504
670
  matchesDataType(relationOrImageProperty.propertyDef?.refValueType, main_cjs.ModelPropertyDataTypes.Json)));
505
671
  if (isStorageSeed && (context.seedLocalId || context.seedUid)) {
506
- const { getPropertyData: getPropertyDataFromDb } = await Promise.resolve().then(function () { return require('./index-CSNtEnbF.js'); }).then(function (n) { return n.getPropertyData; });
672
+ const { getPropertyData: getPropertyDataFromDb } = await Promise.resolve().then(function () { return require('./index-C66AfYDG.js'); }).then(function (n) { return n.getPropertyData; });
507
673
  const metaRow = await getPropertyDataFromDb({
508
674
  propertyName: relationOrImageProperty.propertyName,
509
675
  seedLocalId: context.seedLocalId,
@@ -525,14 +691,12 @@ const processRelationOrImageProperty = async (relationOrImageProperty, multiPubl
525
691
  let isRequired = propertyDef?.required === true;
526
692
  // Resolve required from schema/DB when propertyDef lacks it
527
693
  if (!isRequired && relationOrImageProperty.modelName) {
528
- let schema = await property.getPropertySchema(relationOrImageProperty.modelName, relationOrImageProperty.propertyName);
694
+ const propertyScope = await main_cjs.getItemModelScope(relationOrImageProperty);
695
+ let schema = await property.getPropertySchema(relationOrImageProperty.modelName, relationOrImageProperty.propertyName, propertyScope);
529
696
  if (!schema && main_cjs.BaseDb.getAppDb()) {
530
697
  const normalizedModelName = lodashEs.upperFirst(lodashEs.camelCase(relationOrImageProperty.modelName));
531
- const modelRecords = await main_cjs.BaseDb.getAppDb()
532
- .select({ id: main_cjs.models.id })
533
- .from(main_cjs.models)
534
- .where(drizzleOrm.eq(main_cjs.models.name, normalizedModelName))
535
- .limit(1);
698
+ const modelRecord = await main_cjs.resolveModelRecord(normalizedModelName, propertyScope);
699
+ const modelRecords = modelRecord ? [modelRecord] : [];
536
700
  if (modelRecords.length > 0 && modelRecords[0].id) {
537
701
  const propertyRecords = await main_cjs.BaseDb.getAppDb()
538
702
  .select()
@@ -588,13 +752,15 @@ const processRelationOrImageProperty = async (relationOrImageProperty, multiPubl
588
752
  }
589
753
  return multiPublishPayload;
590
754
  }
755
+ // The local seed, also when the ref is the old uid of a seed published again since.
756
+ const relatedSeed = await findRelatedSeedRow({ seedLocalId, seedUid });
591
757
  // Use dynamic import to break circular dependency
592
- const getItemMod = await Promise.resolve().then(function () { return require('./getItem-B6jEINjW.js'); });
758
+ const getItemMod = await Promise.resolve().then(function () { return require('./getItem-DSRtx_68.js'); });
593
759
  const { getItem } = getItemMod;
594
- const relatedItem = await getItem({
595
- seedLocalId,
596
- seedUid,
597
- });
760
+ const relatedItem = await getItem(relatedSeed ? { seedLocalId: relatedSeed.seedLocalId } : { seedLocalId, seedUid });
761
+ if (noteRelatedSeed(ctx, normalizedRef, relatedSeed, relationOrImageProperty.propertyName, relatedItem?.modelName ?? relatedModelNameFromDef(relationOrImageProperty.propertyDef))) {
762
+ return multiPublishPayload;
763
+ }
598
764
  // When related item not found (e.g. different DB, not yet created)
599
765
  if (!relatedItem) {
600
766
  // An attested uid with no local copy is already published; the parent attests the uid as-is.
@@ -652,7 +818,12 @@ const processRelationOrImageProperty = async (relationOrImageProperty, multiPubl
652
818
  ],
653
819
  };
654
820
  await ensurePropertyDefs(relatedItem);
655
- const { itemBasicProperties, itemUploadProperties } = await getSegmentedItemProperties.getSegmentedItemProperties(relatedItem);
821
+ const { itemBasicProperties, itemUploadProperties, itemImageProperties: relatedStorageSeedProperties } = await getSegmentedItemProperties.getSegmentedItemProperties(relatedItem);
822
+ // A draft item related to the published one is published with it, including its own
823
+ // Image/File/Html/Json properties and the images embedded in its Html (as for the item itself).
824
+ if (!isStorageSeed) {
825
+ multiPublishPayload = await processRelatedDraftStorageSeeds(relatedItem, relatedStorageSeedProperties, itemBasicProperties, multiPublishPayload, uploadedTransactions, ctx, buildOpts);
826
+ }
656
827
  const relatedStorageUpload = resolveStorageTransactionUploadSlot(relatedItem, itemUploadProperties);
657
828
  if (relatedStorageUpload) {
658
829
  const transactionData = findUploadedTxForSeedLocalId(uploadedTransactions, relatedItem.seedLocalId);
@@ -672,7 +843,7 @@ const processRelationOrImageProperty = async (relationOrImageProperty, multiPubl
672
843
  if (isStorageTransactionPropertyName(p.propertyName) &&
673
844
  !p.propertyDef &&
674
845
  relatedItem.modelName) {
675
- const schema = await property.getPropertySchema(relatedItem.modelName, 'storageTransactionId');
846
+ const schema = await property.getPropertySchema(relatedItem.modelName, 'storageTransactionId', await main_cjs.getItemModelScope(relatedItem));
676
847
  if (schema) {
677
848
  p.getService().send({ type: 'updateContext', propertyRecordSchema: schema });
678
849
  }
@@ -685,6 +856,19 @@ const processRelationOrImageProperty = async (relationOrImageProperty, multiPubl
685
856
  multiPublishPayload.push(publishPayload);
686
857
  return multiPublishPayload;
687
858
  };
859
+ /**
860
+ * Storage-seed properties (Image/File/Html/Json) of a draft item related to the published one, and
861
+ * the images embedded in its Html (htmlEmbeddedImageCoPublish rows it owns): payloads for their seeds,
862
+ * and the properties added to `itemBasicProperties` so the related item attests them. Same handling
863
+ * as the published item's own (see getPublishPayload).
864
+ */
865
+ async function processRelatedDraftStorageSeeds(relatedItem, storageSeedProperties, itemBasicProperties, multiPublishPayload, uploadedTransactions, ctx, buildOpts) {
866
+ for (const storageSeedProperty of storageSeedProperties) {
867
+ multiPublishPayload = await processRelationOrImageProperty(storageSeedProperty, multiPublishPayload, uploadedTransactions, relatedItem.seedLocalId, ctx, buildOpts);
868
+ itemBasicProperties.push(storageSeedProperty);
869
+ }
870
+ return processHtmlEmbeddedCoPublishImagePayloads(relatedItem, multiPublishPayload, uploadedTransactions, relatedItem.seedLocalId, ctx, buildOpts);
871
+ }
688
872
  async function resolveHtmlPropertySchemaUidByHtmlSeed(item, htmlSeedLocalId, ctx) {
689
873
  const want = htmlSeedLocalId.trim();
690
874
  for (const p of item.properties) {
@@ -716,13 +900,19 @@ async function processHtmlEmbeddedCoPublishImagePayloads(item, multiPublishPaylo
716
900
  if (rows.length === 0)
717
901
  return multiPublishPayload;
718
902
  const forceFullSnapshot = buildOpts?.forceFullSnapshot === true;
719
- const getItemMod = await Promise.resolve().then(function () { return require('./getItem-B6jEINjW.js'); });
903
+ const getItemMod = await Promise.resolve().then(function () { return require('./getItem-DSRtx_68.js'); });
720
904
  const { getItem } = getItemMod;
721
905
  const doneImages = new Set();
722
906
  for (const row of rows) {
723
907
  if (doneImages.has(row.imageSeedLocalId))
724
908
  continue;
725
909
  doneImages.add(row.imageSeedLocalId);
910
+ // An embedded image that is already published is not co-published; one whose seed was revoked
911
+ // (unpublished) blocks the publish like an image property pointing at it would.
912
+ const imageSeed = await findRelatedSeedRow({ seedLocalId: row.imageSeedLocalId });
913
+ if (noteRelatedSeed(ctx, row.imageSeedLocalId, imageSeed, htmlPropertyNameForHtmlSeed(item, row.htmlSeedLocalId), 'Image')) {
914
+ continue;
915
+ }
726
916
  const htmlSchemaUid = await resolveHtmlPropertySchemaUidByHtmlSeed(item, row.htmlSeedLocalId, ctx);
727
917
  if (!htmlSchemaUid)
728
918
  continue;
@@ -777,7 +967,7 @@ async function processHtmlEmbeddedCoPublishImagePayloads(item, multiPublishPaylo
777
967
  if (isStorageTransactionPropertyName(p.propertyName) &&
778
968
  !p.propertyDef &&
779
969
  relatedItem.modelName) {
780
- const schema = await property.getPropertySchema(relatedItem.modelName, 'storageTransactionId');
970
+ const schema = await property.getPropertySchema(relatedItem.modelName, 'storageTransactionId', await main_cjs.getItemModelScope(relatedItem));
781
971
  if (schema) {
782
972
  p.getService().send({ type: 'updateContext', propertyRecordSchema: schema });
783
973
  }
@@ -835,13 +1025,14 @@ const processListProperty = async (listProperty, multiPublishPayload, originalSe
835
1025
  const { localId: seedLocalId, uid: seedUid } = main_cjs.getCorrectId(idStr);
836
1026
  if (!seedLocalId && !seedUid)
837
1027
  continue;
1028
+ const relatedSeed = await findRelatedSeedRow({ seedLocalId, seedUid });
838
1029
  // Use dynamic import to break circular dependency
839
- const getItemMod = await Promise.resolve().then(function () { return require('./getItem-B6jEINjW.js'); });
1030
+ const getItemMod = await Promise.resolve().then(function () { return require('./getItem-DSRtx_68.js'); });
840
1031
  const { getItem } = getItemMod;
841
- const relatedItem = await getItem({
842
- seedLocalId,
843
- seedUid,
844
- });
1032
+ const relatedItem = await getItem(relatedSeed ? { seedLocalId: relatedSeed.seedLocalId } : { seedLocalId, seedUid });
1033
+ if (noteRelatedSeed(ctx, idStr.trim(), relatedSeed, listProperty.propertyName, relatedItem?.modelName ?? relatedModelNameFromDef(listProperty.propertyDef))) {
1034
+ continue;
1035
+ }
845
1036
  if (!relatedItem) {
846
1037
  // An attested uid with no local copy is already published; the list attests the uid as-is.
847
1038
  if (!main_cjs.isPublishedSeedRef(idStr)) {
@@ -1031,18 +1222,15 @@ function findUploadedTxForSeedLocalId(uploadedTransactions, seedLocalId) {
1031
1222
  return (uploadedTransactions.find((u) => u.seedLocalId === t) ??
1032
1223
  uploadedTransactions.find((u) => u.seedLocalId != null && u.seedLocalId.trim() === t));
1033
1224
  }
1034
- /** Error thrown when publish validation fails. Includes all validation errors for user to fix. */
1035
- class PublishValidationFailedError extends Error {
1036
- constructor(message, validationErrors) {
1037
- super(message);
1038
- this.validationErrors = validationErrors;
1039
- this.name = 'PublishValidationFailedError';
1040
- }
1041
- }
1042
1225
  const getPublishPayload = async (item, uploadedTransactions, options) => {
1043
1226
  const validationCtx = { errors: [] };
1044
1227
  const publishMode = options?.publishMode ?? 'patch';
1045
- const forceFullSnapshot = publishMode === 'new_version';
1228
+ // A revoked seed can't be published under again: republishing creates a new seed attestation
1229
+ // (new seedUid) and a new version carrying every property (see docs/ATTESTATION_REVOCATION.md).
1230
+ const hasSeedUid = !!item.seedUid && item.seedUid !== main_cjs.ZERO_BYTES32;
1231
+ const republishRevokedSeed = hasSeedUid && (await isSeedRevoked(item.seedLocalId));
1232
+ const rootSeedUid = republishRevokedSeed ? main_cjs.ZERO_BYTES32 : item.seedUid || main_cjs.ZERO_BYTES32;
1233
+ const forceFullSnapshot = publishMode === 'new_version' || republishRevokedSeed;
1046
1234
  if (publishMode === 'new_version' && (!item.seedUid || item.seedUid === main_cjs.ZERO_BYTES32)) {
1047
1235
  addValidationError(validationCtx, 'Publishing as a new version requires the item to already have a published Seed attestation (seed UID).', 'seedUid', 'publish_new_version_requires_seed');
1048
1236
  }
@@ -1063,15 +1251,15 @@ const getPublishPayload = async (item, uploadedTransactions, options) => {
1063
1251
  }
1064
1252
  }
1065
1253
  let versionUid = getVersionUid(item);
1066
- if (versionUid === main_cjs.ZERO_BYTES32 && item.seedUid && item.seedUid !== main_cjs.ZERO_BYTES32) {
1067
- versionUid = await resolveVersionUid(item.seedLocalId, item.seedUid);
1254
+ if (versionUid === main_cjs.ZERO_BYTES32 && rootSeedUid !== main_cjs.ZERO_BYTES32) {
1255
+ versionUid = await resolveVersionUid(item.seedLocalId, rootSeedUid);
1068
1256
  }
1069
- if (forceFullSnapshot && item.seedUid && item.seedUid !== main_cjs.ZERO_BYTES32) {
1257
+ if (forceFullSnapshot && hasSeedUid) {
1070
1258
  versionUid = main_cjs.ZERO_BYTES32;
1071
1259
  }
1072
1260
  let itemPublishData = {
1073
1261
  localId: item.seedLocalId,
1074
- seedUid: item.seedUid || main_cjs.ZERO_BYTES32,
1262
+ seedUid: rootSeedUid,
1075
1263
  seedIsRevocable: true,
1076
1264
  seedSchemaUid: itemSchemaUid,
1077
1265
  versionSchemaUid: main_cjs.VERSION_SCHEMA_UID,
@@ -1093,11 +1281,8 @@ const getPublishPayload = async (item, uploadedTransactions, options) => {
1093
1281
  let isRequired = relProp.propertyDef?.required === true;
1094
1282
  if (!isRequired && main_cjs.BaseDb.getAppDb() && item.modelName) {
1095
1283
  const normalizedModelName = lodashEs.upperFirst(lodashEs.camelCase(item.modelName));
1096
- const modelRows = await main_cjs.BaseDb.getAppDb()
1097
- .select({ id: main_cjs.models.id })
1098
- .from(main_cjs.models)
1099
- .where(drizzleOrm.eq(main_cjs.models.name, normalizedModelName))
1100
- .limit(1);
1284
+ const modelRecord = await main_cjs.resolveModelRecord(normalizedModelName, await main_cjs.getItemModelScope(item));
1285
+ const modelRows = modelRecord ? [modelRecord] : [];
1101
1286
  if (modelRows.length > 0) {
1102
1287
  const propRows = await main_cjs.BaseDb.getAppDb()
1103
1288
  .select({ required: main_cjs.properties.required, refModelId: main_cjs.properties.refModelId })
@@ -1139,7 +1324,7 @@ const getPublishPayload = async (item, uploadedTransactions, options) => {
1139
1324
  }
1140
1325
  for (const p of itemBasicProperties) {
1141
1326
  if (isStorageTransactionPropertyName(p.propertyName) && !p.propertyDef && item.modelName) {
1142
- const schema = await property.getPropertySchema(item.modelName, 'storageTransactionId');
1327
+ const schema = await property.getPropertySchema(item.modelName, 'storageTransactionId', await main_cjs.getItemModelScope(item));
1143
1328
  if (schema) {
1144
1329
  p.getService().send({ type: 'updateContext', propertyRecordSchema: schema });
1145
1330
  }
@@ -1165,6 +1350,10 @@ const getPublishPayload = async (item, uploadedTransactions, options) => {
1165
1350
  'Ensure required fields have values and that publishable properties are present.', 'listOfAttestations', 'publish_new_version_empty_snapshot');
1166
1351
  }
1167
1352
  }
1353
+ // Stop before anything is uploaded or attested: the payload would attest revoked seed uids.
1354
+ if (validationCtx.unpublishedRelatedItems?.length) {
1355
+ throw new RelatedItemUnpublishedError(validationCtx.unpublishedRelatedItems, validationCtx.errors);
1356
+ }
1168
1357
  if (validationCtx.errors.length > 0) {
1169
1358
  const combinedMessage = validationCtx.errors.map((e) => e.message).join('\n');
1170
1359
  throw new PublishValidationFailedError(`Validation failed (${validationCtx.errors.length} error${validationCtx.errors.length === 1 ? '' : 's'}):\n${combinedMessage}`, validationCtx.errors);
@@ -1449,4 +1638,4 @@ exports.PublishValidationFailedError = PublishValidationFailedError;
1449
1638
  exports.getPublishPayload = getPublishPayload;
1450
1639
  exports.resolvePublishPayloadValues = resolvePublishPayloadValues;
1451
1640
  exports.validateItemForPublish = validateItemForPublish;
1452
- //# sourceMappingURL=getPublishPayload-D5DhLGvN.js.map
1641
+ //# sourceMappingURL=getPublishPayload-D5-dYtNq.js.map