@seedprotocol/sdk 0.6.10 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/dist/{BasePathResolver-B6CKqoKw.js → BasePathResolver-DRT09oVv.js} +36 -2
  2. package/dist/BasePathResolver-DRT09oVv.js.map +1 -0
  3. package/dist/ClientManager-DngaZdw6.js +4763 -0
  4. package/dist/ClientManager-DngaZdw6.js.map +1 -0
  5. package/dist/{ClientManager-ChcmUL47.js → Item-ZUAmf943.js} +1175 -5903
  6. package/dist/Item-ZUAmf943.js.map +1 -0
  7. package/dist/{ModelProperty-D79uV42p.js → ModelProperty-6llK4MTH.js} +326 -109
  8. package/dist/ModelProperty-6llK4MTH.js.map +1 -0
  9. package/dist/{Schema-a8uO-hIZ.js → Schema-D-Ud-XYw.js} +164 -885
  10. package/dist/Schema-D-Ud-XYw.js.map +1 -0
  11. package/dist/{SchemaValidationService-Y49vqast.js → SchemaValidationService-IoS7JquP.js} +26 -18
  12. package/dist/SchemaValidationService-IoS7JquP.js.map +1 -0
  13. package/dist/{backfillMetadataPropertyIds-CBsf7LnU.js → backfillMetadataPropertyIds-BlVeE7w7.js} +11 -6
  14. package/dist/backfillMetadataPropertyIds-BlVeE7w7.js.map +1 -0
  15. package/dist/cjs/{ModelProperty-D9FGaGuE.js → ModelProperty-Dv7AQfmQ.js} +297 -89
  16. package/dist/cjs/ModelProperty-Dv7AQfmQ.js.map +1 -0
  17. package/dist/cjs/{Schema-BiJIPLEL.js → Schema-BHVp1g-M.js} +136 -868
  18. package/dist/cjs/Schema-BHVp1g-M.js.map +1 -0
  19. package/dist/cjs/{SchemaValidationService-DtYs_CNY.js → SchemaValidationService-BSU9knjf.js} +18 -11
  20. package/dist/cjs/SchemaValidationService-BSU9knjf.js.map +1 -0
  21. package/dist/cjs/{backfillMetadataPropertyIds-2XaN3b9S.js → backfillMetadataPropertyIds-WIovQ_d8.js} +8 -3
  22. package/dist/cjs/backfillMetadataPropertyIds-WIovQ_d8.js.map +1 -0
  23. package/dist/cjs/{eas-CMNppmGE.js → eas-CUYXdr2t.js} +4 -4
  24. package/dist/cjs/{eas-CMNppmGE.js.map → eas-CUYXdr2t.js.map} +1 -1
  25. package/dist/cjs/{getItem-B6jEINjW.js → getItem-z1tHu0hu.js} +2 -2
  26. package/dist/cjs/{getItem-B6jEINjW.js.map → getItem-z1tHu0hu.js.map} +1 -1
  27. package/dist/cjs/getLatestVersionRow-CcaabxIW.js +59 -0
  28. package/dist/cjs/getLatestVersionRow-CcaabxIW.js.map +1 -0
  29. package/dist/cjs/{getPublishPayload-D5DhLGvN.js → getPublishPayload-CEP_e-Kv.js} +283 -138
  30. package/dist/cjs/getPublishPayload-CEP_e-Kv.js.map +1 -0
  31. package/dist/cjs/{getPublishUploads-DMhCCKYF.js → getPublishUploads-Ctn5k1k6.js} +65 -19
  32. package/dist/cjs/getPublishUploads-Ctn5k1k6.js.map +1 -0
  33. package/dist/cjs/{index-CSNtEnbF.js → index-Cvvt0-5B.js} +2698 -1725
  34. package/dist/cjs/index-Cvvt0-5B.js.map +1 -0
  35. package/dist/cjs/{index-DPp9rdRL.js → index-DfGhF1dc.js} +3 -3
  36. package/dist/cjs/index-DfGhF1dc.js.map +1 -0
  37. package/dist/cjs/{property-DlKiAWt4.js → property-DbEPQ1m9.js} +40 -35
  38. package/dist/cjs/property-DbEPQ1m9.js.map +1 -0
  39. package/dist/cjs/publishDraftGraph-C38gf302.js +403 -0
  40. package/dist/cjs/publishDraftGraph-C38gf302.js.map +1 -0
  41. package/dist/cjs/resetAmbiguousLegacyItemData-CfMhRHwK.js +116 -0
  42. package/dist/cjs/resetAmbiguousLegacyItemData-CfMhRHwK.js.map +1 -0
  43. package/dist/cjs/resolveModelForSyncedSeed-CNYaLOir.js +49 -0
  44. package/dist/cjs/resolveModelForSyncedSeed-CNYaLOir.js.map +1 -0
  45. package/dist/cjs/syncDbWithEas-d1iOdTTI.js +886 -0
  46. package/dist/cjs/syncDbWithEas-d1iOdTTI.js.map +1 -0
  47. package/dist/{configurePlatform-CE0Vew17.js → configurePlatform-CZpjyuCo.js} +4 -4
  48. package/dist/{configurePlatform-CE0Vew17.js.map → configurePlatform-CZpjyuCo.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-Lw0KVZmc.js} +546 -106
  65. package/dist/db-Lw0KVZmc.js.map +1 -0
  66. package/dist/{eas-CfYCu4IX.js → eas-CQ-Smzk2.js} +7 -7
  67. package/dist/eas-CQ-Smzk2.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-CSfSok9f.js} +8 -10
  71. package/dist/{getItem-Br-bGNFO.js.map → getItem-CSfSok9f.js.map} +1 -1
  72. package/dist/getLatestVersionRow-72Atl9vB.js +46 -0
  73. package/dist/getLatestVersionRow-72Atl9vB.js.map +1 -0
  74. package/dist/{getPublishPayload-BIrTVUxb.js → getPublishPayload-76_KfB5Y.js} +297 -154
  75. package/dist/getPublishPayload-76_KfB5Y.js.map +1 -0
  76. package/dist/{getPublishUploads-C6cDeZdz.js → getPublishUploads-CqgMBD8f.js} +68 -21
  77. package/dist/getPublishUploads-CqgMBD8f.js.map +1 -0
  78. package/dist/{index-Djd3667v.js → index-5b3JsS55.js} +2 -2
  79. package/dist/index-5b3JsS55.js.map +1 -0
  80. package/dist/{index-ClSv5pTA.js → index-BpgD305l.js} +12 -11
  81. package/dist/index-BpgD305l.js.map +1 -0
  82. package/dist/{index-HRHkbVQd.js → index-Y-yYyRBf.js} +530 -196
  83. package/dist/index-Y-yYyRBf.js.map +1 -0
  84. package/dist/index.browser-DaTzn79x.js +4139 -0
  85. package/dist/index.browser-DaTzn79x.js.map +1 -0
  86. package/dist/{index.node-DBtQkEfz.js → index.node-NYKqFOoe.js} +9 -4
  87. package/dist/index.node-NYKqFOoe.js.map +1 -0
  88. package/dist/main.cjs +1 -1
  89. package/dist/main.js +886 -560
  90. package/dist/main.js.map +1 -1
  91. package/dist/node.js +19 -15
  92. package/dist/node.js.map +1 -1
  93. package/dist/platform.browser.js +18 -3719
  94. package/dist/platform.browser.js.map +1 -1
  95. package/dist/platform.node.js +3 -3
  96. package/dist/{property-CQjuZ4JW.js → property-ByaiSyUK.js} +53 -48
  97. package/dist/property-ByaiSyUK.js.map +1 -0
  98. package/dist/publishDraftGraph-BRm6Pq3Q.js +405 -0
  99. package/dist/publishDraftGraph-BRm6Pq3Q.js.map +1 -0
  100. package/dist/resetAmbiguousLegacyItemData-B4dX6ZA1.js +88 -0
  101. package/dist/resetAmbiguousLegacyItemData-B4dX6ZA1.js.map +1 -0
  102. package/dist/resolveModelForSyncedSeed-B0tco3zG.js +46 -0
  103. package/dist/resolveModelForSyncedSeed-B0tco3zG.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 +21 -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 +13 -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 +52 -2
  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/actors/validateModel.d.ts.map +1 -1
  131. package/dist/src/Model/service/modelMachine.d.ts +0 -8
  132. package/dist/src/Model/service/modelMachine.d.ts.map +1 -1
  133. package/dist/src/ModelProperty/ModelProperty.d.ts +42 -2
  134. package/dist/src/ModelProperty/ModelProperty.d.ts.map +1 -1
  135. package/dist/src/ModelProperty/service/actors/compareAndMarkDraft.d.ts.map +1 -1
  136. package/dist/src/ModelProperty/service/actors/saveToSchema.d.ts.map +1 -1
  137. package/dist/src/ModelProperty/service/actors/validateProperty.d.ts.map +1 -1
  138. package/dist/src/ModelProperty/service/modelPropertyMachine.d.ts +2 -9
  139. package/dist/src/ModelProperty/service/modelPropertyMachine.d.ts.map +1 -1
  140. package/dist/src/Schema/Schema.d.ts +8 -2
  141. package/dist/src/Schema/Schema.d.ts.map +1 -1
  142. package/dist/src/Schema/service/actors/checkExistingSchema.d.ts.map +1 -1
  143. package/dist/src/Schema/service/actors/createModelInstances.d.ts.map +1 -1
  144. package/dist/src/Schema/service/actors/loadOrCreateSchema.d.ts.map +1 -1
  145. package/dist/src/Schema/service/schemaMachine.d.ts +1 -217
  146. package/dist/src/Schema/service/schemaMachine.d.ts.map +1 -1
  147. package/dist/src/Schema/service/validation/SchemaValidationService.d.ts.map +1 -1
  148. package/dist/src/browser/db/Db.d.ts +3 -0
  149. package/dist/src/browser/db/Db.d.ts.map +1 -1
  150. package/dist/src/browser/db/drizzleFiles.d.ts +7 -2
  151. package/dist/src/browser/db/drizzleFiles.d.ts.map +1 -1
  152. package/dist/src/browser/db/embeddedMigrations.d.ts +11 -2
  153. package/dist/src/browser/db/embeddedMigrations.d.ts.map +1 -1
  154. package/dist/src/browser/db/sqliteBusyRetry.d.ts +14 -0
  155. package/dist/src/browser/db/sqliteBusyRetry.d.ts.map +1 -0
  156. package/dist/src/browser/helpers/FileManager.d.ts +1 -0
  157. package/dist/src/browser/helpers/FileManager.d.ts.map +1 -1
  158. package/dist/src/browser/helpers/QueryClient.d.ts +1 -0
  159. package/dist/src/browser/helpers/QueryClient.d.ts.map +1 -1
  160. package/dist/src/browser/helpers/opfsErrors.d.ts +2 -0
  161. package/dist/src/browser/helpers/opfsErrors.d.ts.map +1 -0
  162. package/dist/src/browser/helpers/tolerantWebAccess.d.ts +47 -0
  163. package/dist/src/browser/helpers/tolerantWebAccess.d.ts.map +1 -0
  164. package/dist/src/browser/workers/FileDownloader.d.ts.map +1 -1
  165. package/dist/src/browser/workers/ImageResizer.d.ts.map +1 -1
  166. package/dist/src/browser/workers/filesDownload.d.ts.map +1 -1
  167. package/dist/src/browser/workers/imageResize.d.ts.map +1 -1
  168. package/dist/src/client/ClientManager.d.ts.map +1 -1
  169. package/dist/src/client/actors/addModelsToDb.d.ts +14 -0
  170. package/dist/src/client/actors/addModelsToDb.d.ts.map +1 -1
  171. package/dist/src/client/actors/platformClassesInit.d.ts.map +1 -1
  172. package/dist/src/client/actors/processSchemaFiles.d.ts.map +1 -1
  173. package/dist/src/client/actors/saveConfig.d.ts +11 -0
  174. package/dist/src/client/actors/saveConfig.d.ts.map +1 -1
  175. package/dist/src/client/constants.d.ts +0 -8
  176. package/dist/src/client/constants.d.ts.map +1 -1
  177. package/dist/src/db/backfillMetadataPropertyIds.d.ts.map +1 -1
  178. package/dist/src/db/configs/{dev.schema.config.d.ts → migrations.config.d.ts} +1 -1
  179. package/dist/src/db/configs/migrations.config.d.ts.map +1 -0
  180. package/dist/src/db/read/batchLatestPublishedVersionBySeedLocalIds.d.ts +1 -1
  181. package/dist/src/db/read/batchLatestPublishedVersionBySeedLocalIds.d.ts.map +1 -1
  182. package/dist/src/db/read/getItemData.d.ts.map +1 -1
  183. package/dist/src/db/read/getItemProperties.d.ts.map +1 -1
  184. package/dist/src/db/read/getItems.d.ts +7 -2
  185. package/dist/src/db/read/getItems.d.ts.map +1 -1
  186. package/dist/src/db/read/getLatestPublishedVersionRow.d.ts +2 -1
  187. package/dist/src/db/read/getLatestPublishedVersionRow.d.ts.map +1 -1
  188. package/dist/src/db/read/getLatestVersionRow.d.ts +13 -0
  189. package/dist/src/db/read/getLatestVersionRow.d.ts.map +1 -0
  190. package/dist/src/db/read/getModelSchemas.d.ts.map +1 -1
  191. package/dist/src/db/read/getPropertyData.d.ts.map +1 -1
  192. package/dist/src/db/read/getPublishPayload.d.ts +18 -11
  193. package/dist/src/db/read/getPublishPayload.d.ts.map +1 -1
  194. package/dist/src/db/read/getPublishPendingDiff.d.ts +2 -1
  195. package/dist/src/db/read/getPublishPendingDiff.d.ts.map +1 -1
  196. package/dist/src/db/read/getPublishUploads.d.ts +5 -0
  197. package/dist/src/db/read/getPublishUploads.d.ts.map +1 -1
  198. package/dist/src/db/read/getSchemaUidForModel.d.ts.map +1 -1
  199. package/dist/src/db/read/getSeedPublishState.d.ts +8 -2
  200. package/dist/src/db/read/getSeedPublishState.d.ts.map +1 -1
  201. package/dist/src/db/read/isSeedRevoked.d.ts +7 -0
  202. package/dist/src/db/read/isSeedRevoked.d.ts.map +1 -0
  203. package/dist/src/db/read/publishDraftGraph.d.ts +57 -0
  204. package/dist/src/db/read/publishDraftGraph.d.ts.map +1 -0
  205. package/dist/src/db/read/publishErrors.d.ts +37 -0
  206. package/dist/src/db/read/publishErrors.d.ts.map +1 -0
  207. package/dist/src/db/read/resolveModelForSyncedSeed.d.ts +39 -0
  208. package/dist/src/db/read/resolveModelForSyncedSeed.d.ts.map +1 -0
  209. package/dist/src/db/read/resolveModelRecord.d.ts +69 -0
  210. package/dist/src/db/read/resolveModelRecord.d.ts.map +1 -0
  211. package/dist/src/db/read/resolveRelatedSeedRef.d.ts +34 -0
  212. package/dist/src/db/read/resolveRelatedSeedRef.d.ts.map +1 -0
  213. package/dist/src/db/read/subqueries/liveVersion.d.ts +12 -0
  214. package/dist/src/db/read/subqueries/liveVersion.d.ts.map +1 -0
  215. package/dist/src/db/read/subqueries/metadataLatest.d.ts +4 -0
  216. package/dist/src/db/read/subqueries/metadataLatest.d.ts.map +1 -1
  217. package/dist/src/db/read/subqueries/versionData.d.ts +7 -2
  218. package/dist/src/db/read/subqueries/versionData.d.ts.map +1 -1
  219. package/dist/src/db/read/summarizePublishWork.d.ts +10 -2
  220. package/dist/src/db/read/summarizePublishWork.d.ts.map +1 -1
  221. package/dist/src/db/resetAmbiguousLegacyItemData.d.ts +17 -0
  222. package/dist/src/db/resetAmbiguousLegacyItemData.d.ts.map +1 -0
  223. package/dist/src/db/sqlParamBatches.d.ts +27 -0
  224. package/dist/src/db/sqlParamBatches.d.ts.map +1 -0
  225. package/dist/src/db/write/addExcludedTransactions.d.ts +7 -0
  226. package/dist/src/db/write/addExcludedTransactions.d.ts.map +1 -0
  227. package/dist/src/db/write/applyPropertyAttestationUidsFromPublish.d.ts +6 -0
  228. package/dist/src/db/write/applyPropertyAttestationUidsFromPublish.d.ts.map +1 -1
  229. package/dist/src/db/write/createMetadata.d.ts +2 -0
  230. package/dist/src/db/write/createMetadata.d.ts.map +1 -1
  231. package/dist/src/db/write/createNewItem.d.ts +3 -1
  232. package/dist/src/db/write/createNewItem.d.ts.map +1 -1
  233. package/dist/src/db/write/createSeed.d.ts +2 -1
  234. package/dist/src/db/write/createSeed.d.ts.map +1 -1
  235. package/dist/src/db/write/createSeeds.d.ts +1 -1
  236. package/dist/src/db/write/createSeeds.d.ts.map +1 -1
  237. package/dist/src/db/write/linkModelToSchema.d.ts +12 -0
  238. package/dist/src/db/write/linkModelToSchema.d.ts.map +1 -0
  239. package/dist/src/db/write/updateItemPropertyValue.d.ts.map +1 -1
  240. package/dist/src/db/write/updateMetadata.d.ts.map +1 -1
  241. package/dist/src/db/write/updateSeedRevokedAt.d.ts +11 -1
  242. package/dist/src/db/write/updateSeedRevokedAt.d.ts.map +1 -1
  243. package/dist/src/db/write/updateSeedUid.d.ts.map +1 -1
  244. package/dist/src/db/write/updateVersionUid.d.ts +2 -1
  245. package/dist/src/db/write/updateVersionUid.d.ts.map +1 -1
  246. package/dist/src/events/files/download.d.ts.map +1 -1
  247. package/dist/src/events/item/easSyncManager.d.ts +2 -0
  248. package/dist/src/events/item/easSyncManager.d.ts.map +1 -1
  249. package/dist/src/events/item/index.d.ts.map +1 -1
  250. package/dist/src/events/item/syncDbWithEas.d.ts +16 -0
  251. package/dist/src/events/item/syncDbWithEas.d.ts.map +1 -1
  252. package/dist/src/helpers/FileManager/BaseFileManager.d.ts +1 -0
  253. package/dist/src/helpers/FileManager/BaseFileManager.d.ts.map +1 -1
  254. package/dist/src/helpers/FileManager/IFileManager.d.ts +5 -0
  255. package/dist/src/helpers/FileManager/IFileManager.d.ts.map +1 -1
  256. package/dist/src/helpers/FileManager/errors.d.ts +10 -0
  257. package/dist/src/helpers/FileManager/errors.d.ts.map +1 -0
  258. package/dist/src/helpers/compareMetadataRowsLatestFirst.d.ts +21 -3
  259. package/dist/src/helpers/compareMetadataRowsLatestFirst.d.ts.map +1 -1
  260. package/dist/src/helpers/constants.d.ts +9 -0
  261. package/dist/src/helpers/constants.d.ts.map +1 -1
  262. package/dist/src/helpers/crypto.d.ts +5 -0
  263. package/dist/src/helpers/crypto.d.ts.map +1 -1
  264. package/dist/src/helpers/db.d.ts +25 -5
  265. package/dist/src/helpers/db.d.ts.map +1 -1
  266. package/dist/src/helpers/easPropertyCanonical.d.ts +1 -1
  267. package/dist/src/helpers/easPropertyCanonical.d.ts.map +1 -1
  268. package/dist/src/helpers/entity/entityCommon.d.ts +10 -0
  269. package/dist/src/helpers/entity/entityCommon.d.ts.map +1 -1
  270. package/dist/src/helpers/entity/entityDestroy.d.ts +1 -1
  271. package/dist/src/helpers/entity/entityDestroy.d.ts.map +1 -1
  272. package/dist/src/helpers/entity/entityLiveQuery.d.ts +5 -0
  273. package/dist/src/helpers/entity/entityLiveQuery.d.ts.map +1 -1
  274. package/dist/src/helpers/entity/evictionEpoch.d.ts +18 -0
  275. package/dist/src/helpers/entity/evictionEpoch.d.ts.map +1 -0
  276. package/dist/src/helpers/file/fetchAll/actors.d.ts.map +1 -1
  277. package/dist/src/helpers/getSegmentedItemProperties.d.ts.map +1 -1
  278. package/dist/src/helpers/htmlEmbeddedDataUriPublish.d.ts +31 -3
  279. package/dist/src/helpers/htmlEmbeddedDataUriPublish.d.ts.map +1 -1
  280. package/dist/src/helpers/isPublishedMetadataRow.d.ts +10 -0
  281. package/dist/src/helpers/isPublishedMetadataRow.d.ts.map +1 -0
  282. package/dist/src/helpers/ownership.d.ts.map +1 -1
  283. package/dist/src/helpers/property.d.ts +6 -1
  284. package/dist/src/helpers/property.d.ts.map +1 -1
  285. package/dist/src/helpers/schema.d.ts +14 -4
  286. package/dist/src/helpers/schema.d.ts.map +1 -1
  287. package/dist/src/helpers/tabCoordinator.d.ts +45 -0
  288. package/dist/src/helpers/tabCoordinator.d.ts.map +1 -0
  289. package/dist/src/helpers/tabEvents.d.ts +27 -0
  290. package/dist/src/helpers/tabEvents.d.ts.map +1 -0
  291. package/dist/src/helpers/tabLocks.d.ts +28 -0
  292. package/dist/src/helpers/tabLocks.d.ts.map +1 -0
  293. package/dist/src/helpers/updateSchema.d.ts.map +1 -1
  294. package/dist/src/imports/json.d.ts.map +1 -1
  295. package/dist/src/imports/markdown.d.ts.map +1 -1
  296. package/dist/src/index.d.ts +13 -3
  297. package/dist/src/index.d.ts.map +1 -1
  298. package/dist/src/node/db/Db.d.ts.map +1 -1
  299. package/dist/src/node/helpers/FileManager.d.ts +2 -0
  300. package/dist/src/node/helpers/FileManager.d.ts.map +1 -1
  301. package/dist/src/query/createLocalQueryDataSource.d.ts +4 -0
  302. package/dist/src/query/createLocalQueryDataSource.d.ts.map +1 -1
  303. package/dist/src/seedSchema/MetadataSchema.d.ts +36 -0
  304. package/dist/src/seedSchema/MetadataSchema.d.ts.map +1 -1
  305. package/dist/src/seedSchema/ModelSchema.d.ts +57 -0
  306. package/dist/src/seedSchema/ModelSchema.d.ts.map +1 -1
  307. package/dist/src/seedSchema/SeedSchema.d.ts +19 -0
  308. package/dist/src/seedSchema/SeedSchema.d.ts.map +1 -1
  309. package/dist/src/seedSchema/VersionSchema.d.ts +17 -0
  310. package/dist/src/seedSchema/VersionSchema.d.ts.map +1 -1
  311. package/dist/src/services/write/actors/validateEntity.d.ts.map +1 -1
  312. package/dist/src/services/write/actors/writeToDatabase.d.ts +5 -0
  313. package/dist/src/services/write/actors/writeToDatabase.d.ts.map +1 -1
  314. package/dist/src/services/write/writeProcessMachine.d.ts.map +1 -1
  315. package/dist/src/stores/eas.d.ts +1 -1
  316. package/dist/src/stores/eas.d.ts.map +1 -1
  317. package/dist/src/types/index.d.ts +7 -0
  318. package/dist/src/types/index.d.ts.map +1 -1
  319. package/dist/src/types/item.d.ts +19 -11
  320. package/dist/src/types/item.d.ts.map +1 -1
  321. package/dist/src/types/property.d.ts +3 -2
  322. package/dist/src/types/property.d.ts.map +1 -1
  323. package/dist/syncDbWithEas-BPap9Sru.js +855 -0
  324. package/dist/syncDbWithEas-BPap9Sru.js.map +1 -0
  325. package/dist/{index-280bL-n4.js → tabEvents-C6NXS6Jl.js} +231 -68
  326. package/dist/tabEvents-C6NXS6Jl.js.map +1 -0
  327. package/dist/tolerantWebAccess-NBQ1NB4i.js +160 -0
  328. package/dist/tolerantWebAccess-NBQ1NB4i.js.map +1 -0
  329. package/dist/updateSeedRevokedAt-CYwgVNlM.js +32 -0
  330. package/dist/updateSeedRevokedAt-CYwgVNlM.js.map +1 -0
  331. package/package.json +8 -10
  332. package/dist/BasePathResolver-B6CKqoKw.js.map +0 -1
  333. package/dist/ClientManager-ChcmUL47.js.map +0 -1
  334. package/dist/ModelProperty-D79uV42p.js.map +0 -1
  335. package/dist/Schema-a8uO-hIZ.js.map +0 -1
  336. package/dist/SchemaValidationService-Y49vqast.js.map +0 -1
  337. package/dist/backfillMetadataPropertyIds-CBsf7LnU.js.map +0 -1
  338. package/dist/cjs/ModelProperty-D9FGaGuE.js.map +0 -1
  339. package/dist/cjs/Schema-BiJIPLEL.js.map +0 -1
  340. package/dist/cjs/SchemaValidationService-DtYs_CNY.js.map +0 -1
  341. package/dist/cjs/backfillMetadataPropertyIds-2XaN3b9S.js.map +0 -1
  342. package/dist/cjs/getPublishPayload-D5DhLGvN.js.map +0 -1
  343. package/dist/cjs/getPublishUploads-DMhCCKYF.js.map +0 -1
  344. package/dist/cjs/getSegmentedItemProperties-CU8rtBAo.js +0 -148
  345. package/dist/cjs/getSegmentedItemProperties-CU8rtBAo.js.map +0 -1
  346. package/dist/cjs/index-CSNtEnbF.js.map +0 -1
  347. package/dist/cjs/index-DPp9rdRL.js.map +0 -1
  348. package/dist/cjs/property-DlKiAWt4.js.map +0 -1
  349. package/dist/cjs/syncDbWithEas-C6n34o_Q.js +0 -606
  350. package/dist/cjs/syncDbWithEas-C6n34o_Q.js.map +0 -1
  351. package/dist/db-WbrzEf7c.js.map +0 -1
  352. package/dist/eas-CfYCu4IX.js.map +0 -1
  353. package/dist/getPublishPayload-BIrTVUxb.js.map +0 -1
  354. package/dist/getPublishUploads-C6cDeZdz.js.map +0 -1
  355. package/dist/getSegmentedItemProperties-BmKE71vU.js +0 -148
  356. package/dist/getSegmentedItemProperties-BmKE71vU.js.map +0 -1
  357. package/dist/index-280bL-n4.js.map +0 -1
  358. package/dist/index-ClSv5pTA.js.map +0 -1
  359. package/dist/index-Djd3667v.js.map +0 -1
  360. package/dist/index-HRHkbVQd.js.map +0 -1
  361. package/dist/index.node-DBtQkEfz.js.map +0 -1
  362. package/dist/property-CQjuZ4JW.js.map +0 -1
  363. package/dist/src/Item/service/actors/fetchDataFromEas.d.ts +0 -4
  364. package/dist/src/Item/service/actors/fetchDataFromEas.d.ts.map +0 -1
  365. package/dist/src/Item/service/actors/hydrateExistingItem.d.ts +0 -4
  366. package/dist/src/Item/service/actors/hydrateExistingItem.d.ts.map +0 -1
  367. package/dist/src/Item/service/actors/hydrateNewItem.d.ts +0 -4
  368. package/dist/src/Item/service/actors/hydrateNewItem.d.ts.map +0 -1
  369. package/dist/src/Item/service/actors/initialize.d.ts +0 -4
  370. package/dist/src/Item/service/actors/initialize.d.ts.map +0 -1
  371. package/dist/src/Item/service/actors/reload.d.ts +0 -5
  372. package/dist/src/Item/service/actors/reload.d.ts.map +0 -1
  373. package/dist/src/Item/service/actors/saveDataToDb.d.ts +0 -4
  374. package/dist/src/Item/service/actors/saveDataToDb.d.ts.map +0 -1
  375. package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.d.ts +0 -5
  376. package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.d.ts.map +0 -1
  377. package/dist/src/Schema/service/addModelsMachine.d.ts +0 -123
  378. package/dist/src/Schema/service/addModelsMachine.d.ts.map +0 -1
  379. package/dist/src/browser/helpers/index.d.ts +0 -4
  380. package/dist/src/browser/helpers/index.d.ts.map +0 -1
  381. package/dist/src/db/configs/dev.schema.config.d.ts.map +0 -1
  382. package/dist/src/helpers/file/download/actors.d.ts +0 -17
  383. package/dist/src/helpers/file/download/actors.d.ts.map +0 -1
  384. package/dist/src/helpers/file/download/index.d.ts +0 -70
  385. package/dist/src/helpers/file/download/index.d.ts.map +0 -1
  386. package/dist/src/services/publish/actors/createPublishAttempt.d.ts +0 -4
  387. package/dist/src/services/publish/actors/createPublishAttempt.d.ts.map +0 -1
  388. package/dist/src/services/publish/actors/preparePublishRequestData.d.ts +0 -4
  389. package/dist/src/services/publish/actors/preparePublishRequestData.d.ts.map +0 -1
  390. package/dist/src/services/publish/actors/upload.d.ts +0 -4
  391. package/dist/src/services/publish/actors/upload.d.ts.map +0 -1
  392. package/dist/src/services/publish/actors/validateItemData.d.ts +0 -4
  393. package/dist/src/services/publish/actors/validateItemData.d.ts.map +0 -1
  394. package/dist/src/services/publish/publishMachine.d.ts +0 -32
  395. package/dist/src/services/publish/publishMachine.d.ts.map +0 -1
  396. package/dist/syncDbWithEas-CuARXfyN.js +0 -598
  397. package/dist/syncDbWithEas-CuARXfyN.js.map +0 -1
  398. package/dist/updateSeedRevokedAt-CBcLfHWs.js +0 -22
  399. package/dist/updateSeedRevokedAt-CBcLfHWs.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  require('reflect-metadata');
4
- var main_cjs = require('./index-CSNtEnbF.js');
5
- var property = require('./property-DlKiAWt4.js');
4
+ var main_cjs = require('./index-Cvvt0-5B.js');
5
+ var property = require('./property-DbEPQ1m9.js');
6
6
  require('immer');
7
7
  require('xstate');
8
8
  require('drizzle-orm/sqlite-core');
@@ -67,4 +67,4 @@ exports.isDataType = main_cjs.isDataType;
67
67
  exports.normalizeDataType = main_cjs.normalizeDataType;
68
68
  exports.normalizePropertyRecordSchema = main_cjs.normalizePropertyRecordSchema;
69
69
  exports.getPropertySchema = property.getPropertySchema;
70
- //# sourceMappingURL=index-DPp9rdRL.js.map
70
+ //# sourceMappingURL=index-DfGhF1dc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DfGhF1dc.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var pluralize = require('pluralize');
4
- var main_cjs = require('./index-CSNtEnbF.js');
4
+ var main_cjs = require('./index-Cvvt0-5B.js');
5
5
  var drizzleOrm = require('drizzle-orm');
6
6
  require('immer');
7
7
  require('reflect-metadata');
@@ -66,13 +66,16 @@ require('@seedprotocol/eas/node');
66
66
  * // Returns: { dataType: 'Relation', ref: 'Author', ... }
67
67
  * ```
68
68
  */
69
- const getPropertySchema = async (modelName, propertyName) => {
69
+ const getPropertySchema = async (modelName, propertyName,
70
+ /** Which model is meant when several schemas define one named modelName (Model.id and/or schema). */
71
+ scope = {}) => {
70
72
  // Dynamic import to break circular dependency
71
- const modelMod = await Promise.resolve().then(function () { return require('./index-CSNtEnbF.js'); }).then(function (n) { return n.Model$1; });
73
+ const modelMod = await Promise.resolve().then(function () { return require('./index-Cvvt0-5B.js'); }).then(function (n) { return n.Model$1; });
72
74
  const { Model } = modelMod;
73
- const schemaMod = await Promise.resolve().then(function () { return require('./Schema-BiJIPLEL.js'); });
75
+ const schemaMod = await Promise.resolve().then(function () { return require('./Schema-BHVp1g-M.js'); });
74
76
  const { Schema } = schemaMod;
75
- const model = await Model.getByNameAsync(modelName);
77
+ const { resolveModelRecord } = await Promise.resolve().then(function () { return require('./index-Cvvt0-5B.js'); }).then(function (n) { return n.resolveModelRecord$1; });
78
+ const model = await Model.resolveAsync(modelName, scope);
76
79
  if (!model) {
77
80
  return undefined;
78
81
  }
@@ -97,7 +100,8 @@ const getPropertySchema = async (modelName, propertyName) => {
97
100
  // Fall through to modelPropertiesToObject
98
101
  }
99
102
  // Fallback to modelPropertiesToObject if Schema context doesn't have the data
100
- if (Object.keys(schema).length === 0) {
103
+ const usingModelProperties = Object.keys(schema).length === 0;
104
+ if (usingModelProperties) {
101
105
  const properties = model.properties || [];
102
106
  if (properties.length === 0) {
103
107
  return undefined;
@@ -129,7 +133,20 @@ const getPropertySchema = async (modelName, propertyName) => {
129
133
  }
130
134
  return undefined;
131
135
  };
132
- const resolvedPropertyName = resolvePropertyName(propertyName);
136
+ let resolvedPropertyName = resolvePropertyName(propertyName);
137
+ if (!resolvedPropertyName && !usingModelProperties) {
138
+ // A property added at runtime (ModelProperty.create) to a schema-file model isn't in the
139
+ // Schema context. The schema file's definitions still win.
140
+ const runtimeProperties = model.properties || [];
141
+ if (runtimeProperties.length > 0) {
142
+ schema = { ...main_cjs.modelPropertiesToObject(runtimeProperties), ...schema };
143
+ resolvedPropertyName = resolvePropertyName(propertyName);
144
+ }
145
+ // model.properties can lag behind the properties table (in Node it never follows rows added
146
+ // after the model found its own), so also look for a row with this exact name below.
147
+ if (!resolvedPropertyName)
148
+ resolvedPropertyName = propertyName;
149
+ }
133
150
  if (!resolvedPropertyName) {
134
151
  return undefined;
135
152
  }
@@ -137,12 +154,9 @@ const getPropertySchema = async (modelName, propertyName) => {
137
154
  try {
138
155
  const db = main_cjs.BaseDb.getAppDb();
139
156
  if (db) {
140
- // Find the model in the database
141
- const modelRecords = await db
142
- .select()
143
- .from(main_cjs.models)
144
- .where(drizzleOrm.eq(main_cjs.models.name, modelName))
145
- .limit(1);
157
+ // Find the model in the database (the same row as `model`, not just any model with this name)
158
+ const resolvedModelRecord = await resolveModelRecord(modelName, { modelFileId: model.id ?? scope.modelFileId, schemaName: model.schemaName ?? scope.schemaName }, db);
159
+ const modelRecords = resolvedModelRecord ? [resolvedModelRecord] : [];
146
160
  if (modelRecords.length > 0) {
147
161
  const modelRecord = modelRecords[0];
148
162
  // Find the property in the database by name
@@ -173,13 +187,9 @@ const getPropertySchema = async (modelName, propertyName) => {
173
187
  let matchedProperty = orphanedProperties[0];
174
188
  // If it's a relation, try to match by refModelId
175
189
  if (schemaPropertyDef.ref) {
176
- const refModelRecords = await db
177
- .select()
178
- .from(main_cjs.models)
179
- .where(drizzleOrm.eq(main_cjs.models.name, schemaPropertyDef.ref))
180
- .limit(1);
181
- if (refModelRecords.length > 0) {
182
- const expectedRefModelId = refModelRecords[0].id;
190
+ const refModelRecord = await resolveModelRecord(schemaPropertyDef.ref, { schemaName: model.schemaName }, db);
191
+ if (refModelRecord) {
192
+ const expectedRefModelId = refModelRecord.id;
183
193
  const matchingByRef = orphanedProperties.find((p) => p.refModelId === expectedRefModelId);
184
194
  if (matchingByRef) {
185
195
  matchedProperty = matchingByRef;
@@ -215,6 +225,9 @@ const getPropertySchema = async (modelName, propertyName) => {
215
225
  refModelId: propertyRecord.refModelId || undefined,
216
226
  refValueType: propertyRecord.refValueType || undefined,
217
227
  required: propertyRecord.required ?? undefined,
228
+ storageType: propertyRecord.storageType ?? schemaFromFile?.storageType,
229
+ localStorageDir: propertyRecord.localStorageDir ?? schemaFromFile?.localStorageDir,
230
+ filenameSuffix: propertyRecord.filenameSuffix ?? schemaFromFile?.filenameSuffix,
218
231
  // Include schemaFileId from database as _propertyFileId for ModelProperty.create()
219
232
  _propertyFileId: propertyRecord.schemaFileId || undefined,
220
233
  };
@@ -237,13 +250,9 @@ const getPropertySchema = async (modelName, propertyName) => {
237
250
  propertySchema.refModelName = schemaFromFile.ref;
238
251
  // Try to resolve refModelId from the database using the model name
239
252
  try {
240
- const refModelRecords = await db
241
- .select()
242
- .from(main_cjs.models)
243
- .where(drizzleOrm.eq(main_cjs.models.name, schemaFromFile.ref))
244
- .limit(1);
245
- if (refModelRecords.length > 0 && refModelRecords[0].id) {
246
- propertySchema.refModelId = refModelRecords[0].id;
253
+ const refModelRecord = await resolveModelRecord(schemaFromFile.ref, { schemaName: model.schemaName }, db);
254
+ if (refModelRecord?.id) {
255
+ propertySchema.refModelId = refModelRecord.id;
247
256
  }
248
257
  }
249
258
  catch (error) {
@@ -272,13 +281,9 @@ const getPropertySchema = async (modelName, propertyName) => {
272
281
  try {
273
282
  const db = main_cjs.BaseDb.getAppDb();
274
283
  if (db) {
275
- const refModelRecords = await db
276
- .select()
277
- .from(main_cjs.models)
278
- .where(drizzleOrm.eq(main_cjs.models.name, schemaFromFile.ref))
279
- .limit(1);
280
- if (refModelRecords.length > 0 && refModelRecords[0].id) {
281
- propertySchema.refModelId = refModelRecords[0].id;
284
+ const refModelRecord = await resolveModelRecord(schemaFromFile.ref, { schemaName: model.schemaName }, db);
285
+ if (refModelRecord?.id) {
286
+ propertySchema.refModelId = refModelRecord.id;
282
287
  propertySchema.refModelName = schemaFromFile.ref;
283
288
  }
284
289
  }
@@ -319,4 +324,4 @@ exports.isDataType = main_cjs.isDataType;
319
324
  exports.normalizeDataType = main_cjs.normalizeDataType;
320
325
  exports.normalizePropertyRecordSchema = main_cjs.normalizePropertyRecordSchema;
321
326
  exports.getPropertySchema = getPropertySchema;
322
- //# sourceMappingURL=property-DlKiAWt4.js.map
327
+ //# sourceMappingURL=property-DbEPQ1m9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property-DbEPQ1m9.js","sources":["../../../src/helpers/property.ts"],"sourcesContent":["import { Static } from '@sinclair/typebox'\nimport { TProperty } from '@/Schema'\n// Dynamic import to break circular dependency: Model -> ... -> helpers/property -> Model\n// import { Model } from '@/Model/Model'\nimport pluralize from 'pluralize'\nimport { resolveStorageNameToSchemaName } from '@/helpers/metadataPropertyNames'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { models as modelsTable, properties, PropertyType } from '@/seedSchema'\nimport { eq, and } from 'drizzle-orm'\nimport { modelPropertiesToObject } from '@/helpers/model'\n\n// Re-export everything from property/index.ts to make it available when importing from helpers/property\nexport * from './property/index'\n\n/**\n * Gets the propertyRecordSchema object for a given model and property name.\n * \n * The propertyRecordSchema is the property definition object that contains\n * information about the property's data type, storage configuration, and\n * relationship details (for Relation and List types).\n * \n * This function first checks the database for property definitions (which may\n * have been edited), then falls back to schema files. This ensures that\n * edited properties persist across page reloads.\n * \n * This function handles property names that end with 'Id' or 'Ids' by automatically\n * looking up the base property name in the schema (e.g., 'authorId' -> 'author',\n * 'tagIds' -> 'tags').\n * \n * @param modelName - The name of the model (e.g., 'Article', 'Author')\n * @param propertyName - The name of the property (e.g., 'title', 'author', 'authorId', 'tags', 'tagIds')\n * @returns The propertyRecordSchema object (TProperty with optional _propertyFileId) or undefined if not found\n * \n * @example\n * ```typescript\n * const schema = await getPropertySchema('Article', 'title')\n * // Returns: { dataType: 'Text', ... }\n * \n * const relationSchema = await getPropertySchema('Article', 'author')\n * // Returns: { dataType: 'Relation', ref: 'Author', ... }\n * \n * // Also works with Id/Ids suffixes\n * const relationSchemaById = await getPropertySchema('Article', 'authorId')\n * // Returns: { dataType: 'Relation', ref: 'Author', ... }\n * ```\n */\nexport const getPropertySchema = async (\n modelName: string,\n propertyName: string,\n /** Which model is meant when several schemas define one named modelName (Model.id and/or schema). */\n scope: { modelFileId?: string | null; schemaName?: string | null } = {},\n): Promise<(Static<typeof TProperty> & { _propertyFileId?: string }) | undefined> => {\n // Dynamic import to break circular dependency\n const modelMod = await import('../Model/Model')\n const { Model } = modelMod\n const schemaMod = await import('../Schema/Schema')\n const { Schema } = schemaMod\n const { resolveModelRecord } = await import('../db/read/resolveModelRecord')\n const model = await Model.resolveAsync(modelName, scope)\n\n if (!model) {\n return undefined\n }\n \n // Get the original schema from Schema instance context (has ref fields from schema file)\n // This is more reliable than modelPropertiesToObject which depends on ModelProperty instances\n let schema: { [propertyName: string]: any } = {}\n try {\n const schemaName = model.schemaName\n if (schemaName) {\n const schemaInstance = Schema.create(schemaName, {\n waitForReady: false,\n }) as import('@/Schema/Schema').Schema\n const schemaContext = schemaInstance.getService().getSnapshot().context\n if (schemaContext.models && schemaContext.models[modelName]) {\n // Get properties from Schema context (original schema file data)\n const modelDef = schemaContext.models[modelName]\n schema = modelDef.properties || {}\n }\n }\n } catch (error) {\n // Fall through to modelPropertiesToObject\n }\n \n // Fallback to modelPropertiesToObject if Schema context doesn't have the data\n const usingModelProperties = Object.keys(schema).length === 0\n if (usingModelProperties) {\n const properties = model.properties || []\n if (properties.length === 0) {\n return undefined\n }\n schema = modelPropertiesToObject(properties)\n }\n \n // Helper to resolve property name (handles Id/Ids suffixes)\n const resolvePropertyName = (propName: string): string | undefined => {\n // First, try direct lookup\n if (schema[propName]) {\n return propName\n }\n\n // List-of-relation storage name (e.g. authorIdentityIds) -> schema key (authors)\n const listSchemaKey = resolveStorageNameToSchemaName(schema, propName)\n if (listSchemaKey && schema[listSchemaKey]) {\n return listSchemaKey\n }\n\n // Handle properties ending with 'Id' or 'Ids'\n let propertyNameWithoutId: string | undefined\n \n if (propName.endsWith('Id')) {\n propertyNameWithoutId = propName.slice(0, -2)\n } else if (propName.endsWith('Ids')) {\n propertyNameWithoutId = propName.slice(0, -3)\n propertyNameWithoutId = pluralize(propertyNameWithoutId)\n }\n \n if (propertyNameWithoutId && schema[propertyNameWithoutId]) {\n return propertyNameWithoutId\n }\n \n return undefined\n }\n \n let resolvedPropertyName = resolvePropertyName(propertyName)\n if (!resolvedPropertyName && !usingModelProperties) {\n // A property added at runtime (ModelProperty.create) to a schema-file model isn't in the\n // Schema context. The schema file's definitions still win.\n const runtimeProperties = model.properties || []\n if (runtimeProperties.length > 0) {\n schema = { ...modelPropertiesToObject(runtimeProperties), ...schema }\n resolvedPropertyName = resolvePropertyName(propertyName)\n }\n // model.properties can lag behind the properties table (in Node it never follows rows added\n // after the model found its own), so also look for a row with this exact name below.\n if (!resolvedPropertyName) resolvedPropertyName = propertyName\n }\n if (!resolvedPropertyName) {\n return undefined\n }\n \n // Try to get property from database first (may have edited values)\n try {\n const db = BaseDb.getAppDb()\n if (db) {\n // Find the model in the database (the same row as `model`, not just any model with this name)\n const resolvedModelRecord = await resolveModelRecord(\n modelName,\n { modelFileId: model.id ?? scope.modelFileId, schemaName: model.schemaName ?? scope.schemaName },\n db,\n )\n const modelRecords = resolvedModelRecord ? [resolvedModelRecord] : []\n \n if (modelRecords.length > 0) {\n const modelRecord = modelRecords[0]\n \n // Find the property in the database by name\n let propertyRecords = await db\n .select()\n .from(properties)\n .where(\n and(\n eq(properties.name, resolvedPropertyName),\n eq(properties.modelId, modelRecord.id!),\n ),\n )\n .limit(1)\n \n // If not found by name, check for renamed properties (orphaned DB properties)\n if (propertyRecords.length === 0) {\n // Get all properties for this model\n const allDbProperties = await db\n .select()\n .from(properties)\n .where(eq(properties.modelId, modelRecord.id!))\n \n // Get all schema property names to identify orphaned properties\n const schemaPropertyNames = new Set(Object.keys(schema))\n \n // Get the schema property definition to match characteristics\n const schemaPropertyDef = schema[resolvedPropertyName]\n \n if (schemaPropertyDef) {\n // Find orphaned properties (don't match any schema property name) that match characteristics\n const orphanedProperties = allDbProperties.filter((p: PropertyType) => \n !schemaPropertyNames.has(p.name) && // Doesn't match any schema property name\n p.dataType === schemaPropertyDef.dataType // Same dataType\n )\n \n // If there's exactly one orphaned property with matching characteristics, it's likely the renamed property\n // We can also match by refModelId if it's a relation\n if (orphanedProperties.length > 0) {\n let matchedProperty = orphanedProperties[0]\n \n // If it's a relation, try to match by refModelId\n if (schemaPropertyDef.ref) {\n const refModelRecord = await resolveModelRecord(\n schemaPropertyDef.ref,\n { schemaName: model.schemaName },\n db,\n )\n \n if (refModelRecord) {\n const expectedRefModelId = refModelRecord.id\n const matchingByRef = orphanedProperties.find((p: PropertyType) => p.refModelId === expectedRefModelId)\n if (matchingByRef) {\n matchedProperty = matchingByRef\n }\n }\n } else {\n // For non-relation properties, prefer ones without refModelId\n const withoutRef = orphanedProperties.find((p: PropertyType) => p.refModelId === null)\n if (withoutRef) {\n matchedProperty = withoutRef\n }\n }\n \n propertyRecords = [matchedProperty]\n }\n }\n }\n \n if (propertyRecords.length > 0) {\n const propertyRecord = propertyRecords[0]\n \n // Get the base schema from file to merge with database values\n // Use the schema object created earlier, not model.schema (which doesn't exist)\n const schemaFromFile = schema[resolvedPropertyName]\n \n // Build property schema from database, merging with file schema for fields not in DB\n // Use the schema property name (resolvedPropertyName) even if DB has different name (renamed)\n const propertySchema: Static<typeof TProperty> & { _propertyFileId?: string; _dbId?: number } = {\n ...schemaFromFile, // Start with file schema (has all fields like storageType, etc.)\n id: propertyRecord.schemaFileId || propertyRecord.id?.toString(), // id should be schemaFileId (string), not database ID\n _dbId: propertyRecord.id, // Store database integer ID separately\n name: resolvedPropertyName, // Use schema name, not DB name (for renamed properties)\n dataType: propertyRecord.dataType as any,\n modelId: propertyRecord.modelId,\n modelName,\n refModelId: propertyRecord.refModelId || undefined,\n refValueType: (propertyRecord.refValueType as any) || undefined,\n required: (propertyRecord as { required?: boolean }).required ?? undefined,\n storageType: (propertyRecord.storageType as any) ?? schemaFromFile?.storageType,\n localStorageDir: propertyRecord.localStorageDir ?? schemaFromFile?.localStorageDir,\n filenameSuffix: propertyRecord.filenameSuffix ?? schemaFromFile?.filenameSuffix,\n // Include schemaFileId from database as _propertyFileId for ModelProperty.create()\n _propertyFileId: propertyRecord.schemaFileId || undefined,\n }\n \n // If refModelId is set, try to get the refModelName\n if (propertyRecord.refModelId) {\n const refModelRecords = await db\n .select()\n .from(modelsTable)\n .where(eq(modelsTable.id, propertyRecord.refModelId))\n .limit(1)\n \n if (refModelRecords.length > 0) {\n propertySchema.refModelName = refModelRecords[0].name\n propertySchema.ref = refModelRecords[0].name\n }\n } else if (schemaFromFile?.ref) {\n // If refModelId is not set but schema file has ref, resolve it from the database\n // This handles cases where the property was just created and refModelId hasn't been set yet\n propertySchema.ref = schemaFromFile.ref\n propertySchema.refModelName = schemaFromFile.ref\n \n // Try to resolve refModelId from the database using the model name\n try {\n const refModelRecord = await resolveModelRecord(\n schemaFromFile.ref,\n { schemaName: model.schemaName },\n db,\n )\n \n if (refModelRecord?.id) {\n propertySchema.refModelId = refModelRecord.id\n }\n } catch (error) {\n // Ignore errors - model might not exist yet\n }\n }\n \n return propertySchema\n }\n }\n }\n } catch (error) {\n // Database not available or error - fall through to schema file lookup\n }\n \n // Fall back to schema file lookup\n const schemaFromFile = schema[resolvedPropertyName]\n if (schemaFromFile) {\n const propertySchema: Static<typeof TProperty> & { _propertyFileId?: string } = { ...schemaFromFile, name: resolvedPropertyName }\n \n // If schema file has id as a string (propertyFileId), set it as _propertyFileId\n // This handles cases where the property hasn't been saved to the database yet\n if (typeof schemaFromFile.id === 'string') {\n propertySchema._propertyFileId = schemaFromFile.id\n }\n \n // If the schema file has ref but no refModelId, try to resolve it from the database\n if (schemaFromFile.ref && !propertySchema.refModelId) {\n try {\n const db = BaseDb.getAppDb()\n if (db) {\n const refModelRecord = await resolveModelRecord(\n schemaFromFile.ref,\n { schemaName: model.schemaName },\n db,\n )\n \n if (refModelRecord?.id) {\n propertySchema.refModelId = refModelRecord.id\n propertySchema.refModelName = schemaFromFile.ref\n }\n }\n } catch (error) {\n // Ignore errors - model might not exist yet or database not available\n }\n }\n \n return propertySchema\n }\n return undefined\n}\n"],"names":["modelPropertiesToObject","resolveStorageNameToSchemaName","BaseDb","properties","and","eq","modelsTable"],"mappings":"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"}
@@ -0,0 +1,403 @@
1
+ 'use strict';
2
+
3
+ var main_cjs = require('./index-Cvvt0-5B.js');
4
+ require('reflect-metadata');
5
+ var property = require('./property-DbEPQ1m9.js');
6
+ var drizzleOrm = require('drizzle-orm');
7
+ var lodashEs = require('lodash-es');
8
+ require('pluralize');
9
+
10
+ const matchesDataType = (actual, expected) => main_cjs.normalizeDataType(actual) === expected;
11
+ async function resolvePropertyDef(modelName, propertyName, scope) {
12
+ let schema = await property.getPropertySchema(modelName, propertyName, scope);
13
+ if (schema)
14
+ return schema;
15
+ const db = main_cjs.BaseDb.getAppDb();
16
+ if (!db)
17
+ return undefined;
18
+ try {
19
+ const normalizedModelName = lodashEs.upperFirst(lodashEs.camelCase(modelName));
20
+ const modelRecord = await main_cjs.resolveModelRecord(normalizedModelName, scope, db);
21
+ const modelRecords = modelRecord ? [modelRecord] : [];
22
+ if (modelRecords.length === 0 || !modelRecords[0].id)
23
+ return undefined;
24
+ const propertyRecords = await db
25
+ .select()
26
+ .from(main_cjs.properties)
27
+ .where(drizzleOrm.and(drizzleOrm.eq(main_cjs.properties.modelId, modelRecords[0].id), drizzleOrm.eq(main_cjs.properties.name, propertyName)))
28
+ .limit(1);
29
+ if (propertyRecords.length === 0)
30
+ return undefined;
31
+ const propRecord = propertyRecords[0];
32
+ let refModelName;
33
+ if (propRecord.refModelId != null) {
34
+ const refModelRows = await db
35
+ .select({ name: main_cjs.models.name })
36
+ .from(main_cjs.models)
37
+ .where(drizzleOrm.eq(main_cjs.models.id, propRecord.refModelId))
38
+ .limit(1);
39
+ refModelName = refModelRows[0]?.name ?? undefined;
40
+ }
41
+ return {
42
+ dataType: propRecord.dataType,
43
+ ref: refModelName ?? undefined,
44
+ refValueType: propRecord.refValueType || undefined,
45
+ storageType: propRecord.storageType || undefined,
46
+ localStorageDir: propRecord.localStorageDir || undefined,
47
+ filenameSuffix: propRecord.filenameSuffix || undefined,
48
+ required: propRecord.required ?? undefined,
49
+ };
50
+ }
51
+ catch {
52
+ return undefined;
53
+ }
54
+ }
55
+ const getSegmentedItemProperties = async (item) => {
56
+ const itemBasicProperties = [];
57
+ const itemRelationProperties = [];
58
+ const itemListProperties = [];
59
+ const itemUploadProperties = [];
60
+ const itemImageProperties = [];
61
+ const itemStorageProperties = [];
62
+ let itemStorageTransactionProperty;
63
+ let itemScope;
64
+ for (const itemProperty of item.properties) {
65
+ let propertyDef = itemProperty.propertyDef;
66
+ // When propertyDef is missing (e.g. external app, Model not registered), resolve inline
67
+ // so properties are not skipped and metadata attestations can be created
68
+ if (!propertyDef && item.modelName) {
69
+ itemScope ?? (itemScope = await main_cjs.getItemModelScope(item));
70
+ const resolved = await resolvePropertyDef(item.modelName, itemProperty.propertyName, itemScope);
71
+ if (resolved) {
72
+ itemProperty.getService().send({ type: 'updateContext', propertyRecordSchema: resolved });
73
+ propertyDef = resolved;
74
+ }
75
+ else {
76
+ // Last resort: Model and DB don't have schema. Use Text so property routes to
77
+ // itemBasicProperties and can be attested (covers title, description, etc.)
78
+ const fallbackDef = { dataType: 'Text' };
79
+ itemProperty.getService().send({ type: 'updateContext', propertyRecordSchema: fallbackDef });
80
+ propertyDef = fallbackDef;
81
+ }
82
+ }
83
+ if (!propertyDef) {
84
+ continue;
85
+ }
86
+ const isItemStorage = propertyDef.storageType &&
87
+ propertyDef.storageType === 'ItemStorage';
88
+ const isStorageTransaction = itemProperty.propertyName === 'storageTransactionId' ||
89
+ itemProperty.propertyName === 'storage_transaction_id';
90
+ const isStorageSeedType = matchesDataType(propertyDef.dataType, main_cjs.ModelPropertyDataTypes.Image) ||
91
+ matchesDataType(propertyDef.dataType, main_cjs.ModelPropertyDataTypes.File) ||
92
+ matchesDataType(propertyDef.dataType, main_cjs.ModelPropertyDataTypes.Html) ||
93
+ matchesDataType(propertyDef.dataType, main_cjs.ModelPropertyDataTypes.Json) ||
94
+ (matchesDataType(propertyDef.dataType, main_cjs.ModelPropertyDataTypes.Relation) &&
95
+ (matchesDataType(propertyDef.refValueType, main_cjs.ModelPropertyDataTypes.Image) ||
96
+ matchesDataType(propertyDef.refValueType, main_cjs.ModelPropertyDataTypes.File) ||
97
+ matchesDataType(propertyDef.refValueType, main_cjs.ModelPropertyDataTypes.Html) ||
98
+ matchesDataType(propertyDef.refValueType, main_cjs.ModelPropertyDataTypes.Json)));
99
+ if (isStorageSeedType) {
100
+ itemImageProperties.push(itemProperty);
101
+ if (matchesDataType(propertyDef.dataType, main_cjs.ModelPropertyDataTypes.Relation)) {
102
+ itemRelationProperties.push(itemProperty);
103
+ }
104
+ continue;
105
+ }
106
+ if (matchesDataType(propertyDef.dataType, main_cjs.ModelPropertyDataTypes.Relation)) {
107
+ itemRelationProperties.push(itemProperty);
108
+ continue;
109
+ }
110
+ if (matchesDataType(propertyDef.dataType, main_cjs.ModelPropertyDataTypes.List)) {
111
+ // List-of-relations: ref present, goes to processListProperty
112
+ // List-of-primitives: ref absent, treat as basic property
113
+ const listRef = propertyDef.ref || propertyDef.refModelName;
114
+ if (listRef) {
115
+ itemListProperties.push(itemProperty);
116
+ }
117
+ else {
118
+ itemBasicProperties.push(itemProperty);
119
+ }
120
+ continue;
121
+ }
122
+ if (isItemStorage) {
123
+ itemStorageProperties.push(itemProperty);
124
+ continue;
125
+ }
126
+ if (isStorageTransaction) {
127
+ itemStorageTransactionProperty = { itemProperty, childProperties: [] };
128
+ continue;
129
+ }
130
+ itemBasicProperties.push(itemProperty);
131
+ }
132
+ if (itemStorageTransactionProperty && itemStorageProperties.length > 0) {
133
+ itemStorageTransactionProperty.childProperties = itemStorageProperties;
134
+ }
135
+ if (itemStorageTransactionProperty) {
136
+ itemUploadProperties.push(itemStorageTransactionProperty);
137
+ }
138
+ return {
139
+ itemBasicProperties,
140
+ itemRelationProperties,
141
+ itemListProperties,
142
+ itemUploadProperties,
143
+ itemImageProperties,
144
+ };
145
+ };
146
+
147
+ const selectSeed = {
148
+ seedLocalId: main_cjs.seeds.localId,
149
+ seedUid: main_cjs.seeds.uid,
150
+ revokedAt: main_cjs.seeds.revokedAt,
151
+ type: main_cjs.seeds.type,
152
+ };
153
+ /**
154
+ * The local seed row a relation/list/image ref points at, by local id or uid. A uid that is no
155
+ * seed's current uid can be the old uid of a seed that was unpublished and published again (a new
156
+ * seed attestation, same local seed): its old version rows still record it, so it resolves to that
157
+ * seed. Null when nothing local matches (e.g. a published uid with no local copy).
158
+ */
159
+ const findRelatedSeedRow = async ({ seedLocalId, seedUid, }) => {
160
+ const appDb = main_cjs.BaseDb.getAppDb();
161
+ if (!appDb)
162
+ return null;
163
+ if (seedLocalId) {
164
+ const [row] = await appDb.select(selectSeed).from(main_cjs.seeds).where(drizzleOrm.eq(main_cjs.seeds.localId, seedLocalId)).limit(1);
165
+ if (row?.seedLocalId)
166
+ return row;
167
+ }
168
+ if (!seedUid || seedUid === main_cjs.ZERO_BYTES32)
169
+ return null;
170
+ const [byUid] = await appDb.select(selectSeed).from(main_cjs.seeds).where(drizzleOrm.eq(main_cjs.seeds.uid, seedUid)).limit(1);
171
+ if (byUid?.seedLocalId)
172
+ return byUid;
173
+ const [version] = await appDb
174
+ .select({ seedLocalId: main_cjs.versions.seedLocalId })
175
+ .from(main_cjs.versions)
176
+ .where(drizzleOrm.and(drizzleOrm.eq(main_cjs.versions.seedUid, seedUid), drizzleOrm.isNotNull(main_cjs.versions.seedLocalId)))
177
+ .limit(1);
178
+ if (!version?.seedLocalId)
179
+ return null;
180
+ const [republished] = await appDb
181
+ .select(selectSeed)
182
+ .from(main_cjs.seeds)
183
+ .where(drizzleOrm.eq(main_cjs.seeds.localId, version.seedLocalId))
184
+ .limit(1);
185
+ return republished?.seedLocalId ? republished : null;
186
+ };
187
+ /** The seed is attested and its attestation is live. */
188
+ const isLivePublishedSeed = (row) => !!row?.seedUid && row.seedUid !== main_cjs.ZERO_BYTES32 && !main_cjs.isVersionRevoked(row.revokedAt);
189
+ /** The seed was attested and that attestation was revoked (unpublished). */
190
+ const isUnpublishedSeed = (row) => !!row?.seedUid && row.seedUid !== main_cjs.ZERO_BYTES32 && main_cjs.isVersionRevoked(row.revokedAt);
191
+ /** Model a relation/list/image property points at, from its definition. */
192
+ function relatedModelNameFromDef(propertyDef) {
193
+ const def = propertyDef;
194
+ if (!def)
195
+ return undefined;
196
+ const dataType = main_cjs.normalizeDataType(def.dataType);
197
+ if (dataType === main_cjs.ModelPropertyDataTypes.Image)
198
+ return 'Image';
199
+ if (dataType === main_cjs.ModelPropertyDataTypes.File)
200
+ return 'File';
201
+ if (dataType === main_cjs.ModelPropertyDataTypes.Html)
202
+ return 'Html';
203
+ return def.ref ?? def.refModelName;
204
+ }
205
+ /**
206
+ * Name of the item's Html property whose value is the Html seed `htmlSeedLocalId`: the property
207
+ * that refers to the images embedded in that Html (htmlEmbeddedImageCoPublish rows).
208
+ */
209
+ function htmlPropertyNameForHtmlSeed(item, htmlSeedLocalId) {
210
+ const want = htmlSeedLocalId.trim();
211
+ for (const p of item.properties ?? []) {
212
+ if (main_cjs.normalizeDataType(p.propertyDef?.dataType) !== main_cjs.ModelPropertyDataTypes.Html)
213
+ continue;
214
+ const snap = p.getService().getSnapshot();
215
+ const value = 'context' in snap ? snap.context.propertyValue : undefined;
216
+ if (typeof value === 'string' && value.trim() === want)
217
+ return p.propertyName;
218
+ }
219
+ return 'html';
220
+ }
221
+
222
+ /**
223
+ * True when the item's seed attestation was revoked (`seeds.revoked_at` set, by unpublish or EAS
224
+ * sync). Such a seed can't take new versions: publishing again creates a new seed attestation
225
+ * (see "Republishing" in docs/ATTESTATION_REVOCATION.md).
226
+ */
227
+ const isSeedRevoked = async (seedLocalId) => {
228
+ if (!seedLocalId)
229
+ return false;
230
+ const appDb = main_cjs.BaseDb.getAppDb();
231
+ if (!appDb)
232
+ return false;
233
+ const [row] = await appDb
234
+ .select({ revokedAt: main_cjs.seeds.revokedAt })
235
+ .from(main_cjs.seeds)
236
+ .where(drizzleOrm.eq(main_cjs.seeds.localId, seedLocalId))
237
+ .limit(1);
238
+ return main_cjs.isVersionRevoked(row?.revokedAt);
239
+ };
240
+
241
+ /**
242
+ * The draft items a publish of an item carries along, and how it walks to them.
243
+ *
244
+ * A publish attests the item and every draft item (no seed uid yet) reachable from it through
245
+ * relation and list-of-relation properties, each with its full property set. Already-published
246
+ * targets are referenced by their current uid and not walked into; revoked ones stop the publish
247
+ * (RelatedItemUnpublishedError). getPublishPayload, getPublishUploads, getPublishUploadData (publish
248
+ * package), summarizePublishWork and the Html-embedded image co-publish all walk this graph in the
249
+ * same order: depth first, properties in item order (relations, then lists), list members in order.
250
+ *
251
+ * Cycles: an item can only attest the uid of a seed published before it in the same publish, so a
252
+ * ref back to an item still being walked (an ancestor that gets a new seed in this publish) can't be
253
+ * attested. Such a property is deferred: left out of this publish (it keeps no uid, so the next
254
+ * publish of its item attests it, with the target's uid). For A ↔ B reached from A, A attests B's
255
+ * uid and B's relation to A is deferred.
256
+ */
257
+ /** Relation properties that point at model items (not Image/File/Html/Json storage seeds). */
258
+ function draftWalkProperties(segmented) {
259
+ const storage = new Set(segmented.itemImageProperties);
260
+ return {
261
+ relationProperties: segmented.itemRelationProperties.filter((p) => !storage.has(p)),
262
+ listProperties: segmented.itemListProperties,
263
+ };
264
+ }
265
+ const propertyContext = (prop) => {
266
+ const snapshot = prop.getService().getSnapshot();
267
+ return snapshot && 'context' in snapshot
268
+ ? (snapshot.context ?? null)
269
+ : null;
270
+ };
271
+ /** Seed refs held by a relation property (one) or a list property (each member). */
272
+ function propertySeedRefs(prop, isList) {
273
+ const context = propertyContext(prop);
274
+ if (!context)
275
+ return [];
276
+ let value = context.propertyValue;
277
+ if (isList) {
278
+ if (typeof value === 'string')
279
+ value = main_cjs.parseListPropertyValueFromStorage(value);
280
+ const arr = Array.isArray(value) ? value : value != null ? [value] : [];
281
+ return arr
282
+ .map((v) => v && typeof v === 'object'
283
+ ? main_cjs.normalizeRelationPropertyValue(v.seedLocalId ??
284
+ v.localId ??
285
+ v.seedUid ??
286
+ v.uid)
287
+ : main_cjs.normalizeRelationPropertyValue(v))
288
+ .filter((v) => !!v);
289
+ }
290
+ const ref = main_cjs.normalizeRelationPropertyValue(value);
291
+ return ref ? [ref] : [];
292
+ }
293
+ const isZeroUid = (uid) => !uid || uid === main_cjs.ZERO_BYTES32;
294
+ /** The item gets a new seed attestation in this publish: a draft, or a revoked seed published again. */
295
+ async function getsNewSeed(item) {
296
+ return isZeroUid(item.seedUid) || (await isSeedRevoked(item.seedLocalId));
297
+ }
298
+ /** Would the publish attest this property (so walk its refs)? Same rule as getPublishPayload. */
299
+ function walksProperty(prop, forceFullSnapshot) {
300
+ if (prop.uid && !forceFullSnapshot)
301
+ return false;
302
+ const ctx = propertyContext(prop);
303
+ const value = ctx?.propertyValue;
304
+ return value != null && value !== '' && !(Array.isArray(value) && value.length === 0);
305
+ }
306
+ async function loadItem(seedLocalId) {
307
+ const { getItem } = await Promise.resolve().then(function () { return require('./getItem-z1tHu0hu.js'); });
308
+ try {
309
+ return (await getItem({ seedLocalId })) ?? undefined;
310
+ }
311
+ catch {
312
+ return undefined;
313
+ }
314
+ }
315
+ async function getPublishDraftGraph(root, options) {
316
+ const forceFullSnapshot = options?.forceFullSnapshot === true;
317
+ const strict = options?.strict === true;
318
+ const drafts = [];
319
+ const deferredProperties = new Set();
320
+ const backReferences = new Map();
321
+ const visited = new Set([root.seedLocalId]);
322
+ const inProgress = new Set();
323
+ if (await getsNewSeed(root))
324
+ inProgress.add(root.seedLocalId);
325
+ /** Draft target of a ref, or undefined (published, revoked, unknown). */
326
+ const draftTarget = async (prop, ref, isList) => {
327
+ const { seedLocalId, seedUid } = main_cjs.resolveSeedIdsFromRefString(ref);
328
+ if (!seedLocalId && !seedUid) {
329
+ if (strict && !isList) {
330
+ throw new Error(`Invalid relation value for ${prop.propertyName}: expected local seed id or 0x uid`);
331
+ }
332
+ return undefined;
333
+ }
334
+ const row = await findRelatedSeedRow({ seedLocalId, seedUid });
335
+ const targetLocalId = row?.seedLocalId ?? seedLocalId;
336
+ if (!targetLocalId)
337
+ return undefined;
338
+ // An item getting a new seed in this publish, still being walked (also the root when it is a
339
+ // revoked seed published again): a back edge, whatever its current uid.
340
+ if (inProgress.has(targetLocalId))
341
+ return { seedLocalId: targetLocalId };
342
+ // Published (live or revoked): referenced by uid / reported, never walked into.
343
+ if (row && !isZeroUid(row.seedUid))
344
+ return undefined;
345
+ if (visited.has(targetLocalId))
346
+ return { seedLocalId: targetLocalId };
347
+ const item = await loadItem(targetLocalId);
348
+ if (!item) {
349
+ if (strict && !isList && !main_cjs.isPublishedSeedRef(ref)) {
350
+ throw new Error(`No relatedItem found for ${prop.propertyName}`);
351
+ }
352
+ return undefined;
353
+ }
354
+ if (!isZeroUid(item.seedUid))
355
+ return undefined;
356
+ return { seedLocalId: targetLocalId, item };
357
+ };
358
+ const visit = async (item) => {
359
+ const segmented = await getSegmentedItemProperties(item);
360
+ const { relationProperties, listProperties } = draftWalkProperties(segmented);
361
+ const walk = async (prop, isList) => {
362
+ if (!walksProperty(prop, forceFullSnapshot))
363
+ return;
364
+ const targets = [];
365
+ for (const ref of propertySeedRefs(prop, isList)) {
366
+ const t = await draftTarget(prop, ref, isList);
367
+ if (t)
368
+ targets.push(t);
369
+ }
370
+ const back = targets.filter((t) => inProgress.has(t.seedLocalId)).map((t) => t.seedLocalId);
371
+ if (back.length > 0) {
372
+ deferredProperties.add(prop);
373
+ backReferences.set(prop, new Set(back));
374
+ }
375
+ for (const t of targets) {
376
+ if (!t.item || visited.has(t.seedLocalId))
377
+ continue;
378
+ visited.add(t.seedLocalId);
379
+ inProgress.add(t.seedLocalId);
380
+ await visit(t.item);
381
+ inProgress.delete(t.seedLocalId);
382
+ drafts.push({ item: t.item, via: prop, viaList: isList });
383
+ }
384
+ };
385
+ for (const prop of relationProperties)
386
+ await walk(prop, false);
387
+ for (const prop of listProperties)
388
+ await walk(prop, true);
389
+ };
390
+ await visit(root);
391
+ return { drafts, deferredProperties, backReferences };
392
+ }
393
+
394
+ exports.draftWalkProperties = draftWalkProperties;
395
+ exports.findRelatedSeedRow = findRelatedSeedRow;
396
+ exports.getPublishDraftGraph = getPublishDraftGraph;
397
+ exports.getSegmentedItemProperties = getSegmentedItemProperties;
398
+ exports.htmlPropertyNameForHtmlSeed = htmlPropertyNameForHtmlSeed;
399
+ exports.isLivePublishedSeed = isLivePublishedSeed;
400
+ exports.isSeedRevoked = isSeedRevoked;
401
+ exports.isUnpublishedSeed = isUnpublishedSeed;
402
+ exports.relatedModelNameFromDef = relatedModelNameFromDef;
403
+ //# sourceMappingURL=publishDraftGraph-C38gf302.js.map