@seedprotocol/sdk 0.7.9-next.1189.g5e63267 → 0.7.9

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 (581) hide show
  1. package/dist/BaseFileManager-BAlySv8w.js +650 -0
  2. package/dist/BaseFileManager-BAlySv8w.js.map +1 -0
  3. package/dist/{Item-CG5IhPtL.js → Item-Bf4kWKpH.js} +5576 -6649
  4. package/dist/Item-Bf4kWKpH.js.map +1 -0
  5. package/dist/{ModelProperty-DDD47KVm.js → ModelProperty-BlaEgb_U.js} +345 -709
  6. package/dist/ModelProperty-BlaEgb_U.js.map +1 -0
  7. package/dist/Schema-J_1f6p0c.js +1456 -0
  8. package/dist/Schema-J_1f6p0c.js.map +1 -0
  9. package/dist/{SchemaValidationService-CZzKNL04.js → SchemaValidationService-CnmKyzR-.js} +6 -9
  10. package/dist/{SchemaValidationService-CZzKNL04.js.map → SchemaValidationService-CnmKyzR-.js.map} +1 -1
  11. package/dist/{configurePlatform-Dukm2QwO.js → configurePlatform-CiOJ1R3q.js} +3 -12
  12. package/dist/configurePlatform-CiOJ1R3q.js.map +1 -0
  13. package/dist/db/drizzle/0026_add_content_hash_to_schemas.sql +1 -0
  14. package/dist/db/drizzle/0027_link_metadata_property_ids.sql +74 -0
  15. package/dist/db/drizzle/0028_add_definition_to_properties.sql +17 -0
  16. package/dist/db/drizzle/0029_dedupe_chain_uids_add_unique_indexes.sql +120 -0
  17. package/dist/db/drizzle/meta/0026_snapshot.json +1659 -0
  18. package/dist/db/drizzle/meta/0027_snapshot.json +1659 -0
  19. package/dist/db/drizzle/meta/0028_snapshot.json +1666 -0
  20. package/dist/db/drizzle/meta/0029_snapshot.json +1691 -0
  21. package/dist/db/drizzle/meta/_journal.json +29 -1
  22. package/dist/{detachRowsBeforeDelete-Di1enVUF.js → detachRowsBeforeDelete-sEaUwlOU.js} +2 -13
  23. package/dist/{detachRowsBeforeDelete-Di1enVUF.js.map → detachRowsBeforeDelete-sEaUwlOU.js.map} +1 -1
  24. package/dist/dist/{index-rOTW-2QZ.d.ts → BaseFileManager-BAlySv8w.d.ts} +1407 -2700
  25. package/dist/dist/BaseFileManager-BAlySv8w.d.ts.map +1 -0
  26. package/dist/dist/{configurePlatform-Dukm2QwO.d.ts → configurePlatform-CiOJ1R3q.d.ts} +1 -1
  27. package/dist/dist/configurePlatform-CiOJ1R3q.d.ts.map +1 -0
  28. package/dist/dist/{index-DxHpPNfn.d.ts → index-D0V-mjCV.d.ts} +39 -1
  29. package/dist/dist/{index-DxHpPNfn.d.ts.map → index-D0V-mjCV.d.ts.map} +1 -1
  30. package/dist/dist/{index.node-WsEJCOwC.d.ts → index.node-CYPemH-t.d.ts} +157 -5
  31. package/dist/dist/{index.node-WsEJCOwC.d.ts.map → index.node-CYPemH-t.d.ts.map} +1 -1
  32. package/dist/dist/platform.node.d.ts +2 -2
  33. package/dist/eas-wB_fQ8Tc.js +32 -0
  34. package/dist/eas-wB_fQ8Tc.js.map +1 -0
  35. package/dist/errors-DLSoqSHG.js +6550 -0
  36. package/dist/errors-DLSoqSHG.js.map +1 -0
  37. package/dist/getPublishPayload-BnIwpwz1.js +760 -0
  38. package/dist/getPublishPayload-BnIwpwz1.js.map +1 -0
  39. package/dist/getPublishPendingDiff-D6_-A5ns.js +125 -0
  40. package/dist/getPublishPendingDiff-D6_-A5ns.js.map +1 -0
  41. package/dist/getPublishUploads-sS6JfPgz.js +783 -0
  42. package/dist/getPublishUploads-sS6JfPgz.js.map +1 -0
  43. package/dist/{index-DQoyhp2c.js → index-BVBmz_cc.js} +11 -14
  44. package/dist/index-BVBmz_cc.js.map +1 -0
  45. package/dist/index-CYGWPoOx.js +27 -0
  46. package/dist/index-CYGWPoOx.js.map +1 -0
  47. package/dist/{index-DxHpPNfn.js → index-D0V-mjCV.js} +2 -2
  48. package/dist/index-D0V-mjCV.js.map +1 -0
  49. package/dist/index-DmTtj1nk.js +817 -0
  50. package/dist/index-DmTtj1nk.js.map +1 -0
  51. package/dist/{index.browser-QPWBkLJA.js → index.browser-CUmBVYen.js} +397 -356
  52. package/dist/index.browser-CUmBVYen.js.map +1 -0
  53. package/dist/{index.node-WsEJCOwC.js → index.node-CYPemH-t.js} +10 -10
  54. package/dist/index.node-CYPemH-t.js.map +1 -0
  55. package/dist/main.js +23 -1075
  56. package/dist/main.js.map +1 -1
  57. package/dist/modelPropertyRecordSchemas-C7UgA5TH.js +48 -0
  58. package/dist/modelPropertyRecordSchemas-C7UgA5TH.js.map +1 -0
  59. package/dist/node.js +14 -18
  60. package/dist/node.js.map +1 -1
  61. package/dist/platform.browser.js +8 -13
  62. package/dist/platform.browser.js.map +1 -1
  63. package/dist/platform.node.js +6 -16
  64. package/dist/platform.node.js.map +1 -1
  65. package/dist/property-BxUYznH0.js +87 -0
  66. package/dist/property-BxUYznH0.js.map +1 -0
  67. package/dist/publishGraph-EcB40Uii.js +311 -0
  68. package/dist/publishGraph-EcB40Uii.js.map +1 -0
  69. package/dist/readHtmlBodyForStorageSeed-D6KPtWoR.js +110 -0
  70. package/dist/readHtmlBodyForStorageSeed-D6KPtWoR.js.map +1 -0
  71. package/dist/seedSchema/ModelSchema.ts +4 -0
  72. package/dist/seedSchema/ModelSchemaSchema.ts +5 -2
  73. package/dist/seedSchema/PendingWriteSchema.ts +4 -1
  74. package/dist/seedSchema/SchemaSchema.ts +3 -0
  75. package/dist/seedSchema/SeedSchema.ts +8 -2
  76. package/dist/seedSchema/VersionSchema.ts +7 -2
  77. package/dist/seedSchema/attestedUid.ts +10 -0
  78. package/dist/src/Item/Item.d.ts +32 -30
  79. package/dist/src/Item/Item.d.ts.map +1 -1
  80. package/dist/src/Item/loadItem.d.ts +12 -0
  81. package/dist/src/Item/loadItem.d.ts.map +1 -0
  82. package/dist/src/Item/service/itemMachineSingle.d.ts +2 -13
  83. package/dist/src/Item/service/itemMachineSingle.d.ts.map +1 -1
  84. package/dist/src/ItemProperty/ItemProperty.d.ts +77 -46
  85. package/dist/src/ItemProperty/ItemProperty.d.ts.map +1 -1
  86. package/dist/src/ItemProperty/loadProperty.d.ts +11 -0
  87. package/dist/src/ItemProperty/loadProperty.d.ts.map +1 -0
  88. package/dist/src/ItemProperty/propertyWrite.d.ts +54 -0
  89. package/dist/src/ItemProperty/propertyWrite.d.ts.map +1 -0
  90. package/dist/src/ItemProperty/{service/actors/saveValueToDb/rowContext.d.ts → rowContext.d.ts} +1 -1
  91. package/dist/src/ItemProperty/rowContext.d.ts.map +1 -0
  92. package/dist/src/ItemProperty/service/actors/hydrateFromDb.d.ts +6 -0
  93. package/dist/src/ItemProperty/service/actors/hydrateFromDb.d.ts.map +1 -1
  94. package/dist/src/ItemProperty/service/actors/modelPropertyRecordSchemas.d.ts +5 -15
  95. package/dist/src/ItemProperty/service/actors/modelPropertyRecordSchemas.d.ts.map +1 -1
  96. package/dist/src/ItemProperty/service/propertyMachine.d.ts +4 -50
  97. package/dist/src/ItemProperty/service/propertyMachine.d.ts.map +1 -1
  98. package/dist/src/Model/Model.d.ts +26 -56
  99. package/dist/src/Model/Model.d.ts.map +1 -1
  100. package/dist/src/Model/createModelProperties.d.ts +10 -0
  101. package/dist/src/Model/createModelProperties.d.ts.map +1 -0
  102. package/dist/src/Model/loadModel.d.ts +13 -0
  103. package/dist/src/Model/loadModel.d.ts.map +1 -0
  104. package/dist/src/Model/service/actors/validateModel.d.ts.map +1 -1
  105. package/dist/src/Model/service/modelMachine.d.ts +5 -114
  106. package/dist/src/Model/service/modelMachine.d.ts.map +1 -1
  107. package/dist/src/ModelProperty/ModelProperty.d.ts +44 -37
  108. package/dist/src/ModelProperty/ModelProperty.d.ts.map +1 -1
  109. package/dist/src/ModelProperty/service/actors/compareAndMarkDraft.d.ts.map +1 -1
  110. package/dist/src/ModelProperty/service/actors/validateProperty.d.ts.map +1 -1
  111. package/dist/src/ModelProperty/service/modelPropertyMachine.d.ts +6 -77
  112. package/dist/src/ModelProperty/service/modelPropertyMachine.d.ts.map +1 -1
  113. package/dist/src/Schema/Schema.d.ts +36 -37
  114. package/dist/src/Schema/Schema.d.ts.map +1 -1
  115. package/dist/src/Schema/loadOrCreateSchema.d.ts +21 -0
  116. package/dist/src/Schema/loadOrCreateSchema.d.ts.map +1 -0
  117. package/dist/src/Schema/service/schemaMachine.d.ts +7 -125
  118. package/dist/src/Schema/service/schemaMachine.d.ts.map +1 -1
  119. package/dist/src/browser/db/Db.d.ts.map +1 -1
  120. package/dist/src/browser/db/changeFeed.d.ts +2 -18
  121. package/dist/src/browser/db/changeFeed.d.ts.map +1 -1
  122. package/dist/src/browser/db/drizzleFiles.d.ts +6 -2
  123. package/dist/src/browser/db/drizzleFiles.d.ts.map +1 -1
  124. package/dist/src/browser/workers/filesDownload.d.ts.map +1 -1
  125. package/dist/src/browser/workers/imageResize.d.ts.map +1 -1
  126. package/dist/src/client/ClientManager.d.ts +90 -57
  127. package/dist/src/client/ClientManager.d.ts.map +1 -1
  128. package/dist/src/client/actors/addModelsToDb.d.ts +9 -7
  129. package/dist/src/client/actors/addModelsToDb.d.ts.map +1 -1
  130. package/dist/src/client/actors/dbInit.d.ts +3 -3
  131. package/dist/src/client/actors/dbInit.d.ts.map +1 -1
  132. package/dist/src/client/actors/fileSystemInit.d.ts +3 -3
  133. package/dist/src/client/actors/fileSystemInit.d.ts.map +1 -1
  134. package/dist/src/client/actors/platformClassesInit.d.ts +10 -5
  135. package/dist/src/client/actors/platformClassesInit.d.ts.map +1 -1
  136. package/dist/src/client/actors/processSchemaFiles.d.ts +18 -3
  137. package/dist/src/client/actors/processSchemaFiles.d.ts.map +1 -1
  138. package/dist/src/client/actors/saveConfig.d.ts +6 -3
  139. package/dist/src/client/actors/saveConfig.d.ts.map +1 -1
  140. package/dist/src/client/clientManagerMachine.d.ts +22 -20
  141. package/dist/src/client/clientManagerMachine.d.ts.map +1 -1
  142. package/dist/src/client/constants.d.ts +1 -9
  143. package/dist/src/client/constants.d.ts.map +1 -1
  144. package/dist/src/client/readiness.d.ts +26 -0
  145. package/dist/src/client/readiness.d.ts.map +1 -0
  146. package/dist/src/db/read/currentPropertyRow.d.ts +61 -0
  147. package/dist/src/db/read/currentPropertyRow.d.ts.map +1 -0
  148. package/dist/src/db/read/findSeedRow.d.ts +20 -0
  149. package/dist/src/db/read/findSeedRow.d.ts.map +1 -0
  150. package/dist/src/db/read/findSeedRowsByUid.d.ts +4 -1
  151. package/dist/src/db/read/findSeedRowsByUid.d.ts.map +1 -1
  152. package/dist/src/db/read/getAttesterForSeed.d.ts +1 -1
  153. package/dist/src/db/read/getAttesterForSeed.d.ts.map +1 -1
  154. package/dist/src/db/read/getItemData.d.ts.map +1 -1
  155. package/dist/src/db/read/getItemProperties.d.ts +5 -0
  156. package/dist/src/db/read/getItemProperties.d.ts.map +1 -1
  157. package/dist/src/db/read/getMetadataAttestationUidsForSeedUid.d.ts.map +1 -1
  158. package/dist/src/db/read/getModelSchemas.d.ts +0 -7
  159. package/dist/src/db/read/getModelSchemas.d.ts.map +1 -1
  160. package/dist/src/db/read/getModelsData.d.ts.map +1 -1
  161. package/dist/src/db/read/getPropertyClear.d.ts +5 -1
  162. package/dist/src/db/read/getPropertyClear.d.ts.map +1 -1
  163. package/dist/src/db/read/getPublishPayload.d.ts +35 -40
  164. package/dist/src/db/read/getPublishPayload.d.ts.map +1 -1
  165. package/dist/src/db/read/getPublishPendingDiff.d.ts +2 -2
  166. package/dist/src/db/read/getPublishPendingDiff.d.ts.map +1 -1
  167. package/dist/src/db/read/getPublishUploads.d.ts +59 -28
  168. package/dist/src/db/read/getPublishUploads.d.ts.map +1 -1
  169. package/dist/src/db/read/getSchemaUidForModel.d.ts.map +1 -1
  170. package/dist/src/db/read/getSeedPublishState.d.ts.map +1 -1
  171. package/dist/src/db/read/getSeedPublisher.d.ts.map +1 -1
  172. package/dist/src/db/read/getVersionsForSeedUid.d.ts.map +1 -1
  173. package/dist/src/db/read/isSeedRevoked.d.ts.map +1 -1
  174. package/dist/src/db/read/localModelSchemaLookups.d.ts +8 -0
  175. package/dist/src/db/read/localModelSchemaLookups.d.ts.map +1 -0
  176. package/dist/src/db/read/metadataProperty.d.ts +104 -0
  177. package/dist/src/db/read/metadataProperty.d.ts.map +1 -0
  178. package/dist/src/db/read/publishGraph.d.ts +148 -0
  179. package/dist/src/db/read/publishGraph.d.ts.map +1 -0
  180. package/dist/src/db/read/resolveModelRecord.d.ts +26 -2
  181. package/dist/src/db/read/resolveModelRecord.d.ts.map +1 -1
  182. package/dist/src/db/read/resolveRelatedSeedRef.d.ts +1 -7
  183. package/dist/src/db/read/resolveRelatedSeedRef.d.ts.map +1 -1
  184. package/dist/src/db/read/subqueries/metadataLatest.d.ts +3 -1
  185. package/dist/src/db/read/subqueries/metadataLatest.d.ts.map +1 -1
  186. package/dist/src/db/read/summarizePublishWork.d.ts +13 -5
  187. package/dist/src/db/read/summarizePublishWork.d.ts.map +1 -1
  188. package/dist/src/db/write/applyPropertyAttestationUidsFromPublish.d.ts +20 -21
  189. package/dist/src/db/write/applyPropertyAttestationUidsFromPublish.d.ts.map +1 -1
  190. package/dist/src/db/write/createMetadata.d.ts.map +1 -1
  191. package/dist/src/db/write/createNewItem.d.ts.map +1 -1
  192. package/dist/src/db/write/createSeeds.d.ts +5 -1
  193. package/dist/src/db/write/createSeeds.d.ts.map +1 -1
  194. package/dist/src/db/write/definitions.d.ts +127 -0
  195. package/dist/src/db/write/definitions.d.ts.map +1 -0
  196. package/dist/src/db/write/mergeChainRows.d.ts +22 -0
  197. package/dist/src/db/write/mergeChainRows.d.ts.map +1 -0
  198. package/dist/src/db/write/saveDefinition.d.ts +29 -0
  199. package/dist/src/db/write/saveDefinition.d.ts.map +1 -0
  200. package/dist/src/db/write/updateSeedUid.d.ts +4 -2
  201. package/dist/src/db/write/updateSeedUid.d.ts.map +1 -1
  202. package/dist/src/db/write/updateVersionUid.d.ts +12 -4
  203. package/dist/src/db/write/updateVersionUid.d.ts.map +1 -1
  204. package/dist/src/db/write/writeModelUids.d.ts +10 -0
  205. package/dist/src/db/write/writeModelUids.d.ts.map +1 -0
  206. package/dist/src/eas.d.ts +8 -6
  207. package/dist/src/eas.d.ts.map +1 -1
  208. package/dist/src/events/files/download.d.ts.map +1 -1
  209. package/dist/src/events/item/syncDbWithEas.d.ts.map +1 -1
  210. package/dist/src/helpers/arweaveContentTags.d.ts +1 -1
  211. package/dist/src/helpers/arweaveContentTags.d.ts.map +1 -1
  212. package/dist/src/helpers/compareMetadataRowsLatestFirst.d.ts +18 -3
  213. package/dist/src/helpers/compareMetadataRowsLatestFirst.d.ts.map +1 -1
  214. package/dist/src/helpers/constants.d.ts +5 -2
  215. package/dist/src/helpers/constants.d.ts.map +1 -1
  216. package/dist/src/helpers/dataUrl.d.ts +10 -0
  217. package/dist/src/helpers/dataUrl.d.ts.map +1 -0
  218. package/dist/src/helpers/db.d.ts +54 -105
  219. package/dist/src/helpers/db.d.ts.map +1 -1
  220. package/dist/src/helpers/ensureImageLocal.d.ts.map +1 -1
  221. package/dist/src/helpers/entity/contextUpdate.d.ts +20 -0
  222. package/dist/src/helpers/entity/contextUpdate.d.ts.map +1 -0
  223. package/dist/src/helpers/entity/draftSaveErrors.d.ts +5 -0
  224. package/dist/src/helpers/entity/draftSaveErrors.d.ts.map +1 -1
  225. package/dist/src/helpers/entity/entityCache.d.ts +65 -3
  226. package/dist/src/helpers/entity/entityCache.d.ts.map +1 -1
  227. package/dist/src/helpers/entity/entityCommon.d.ts +0 -22
  228. package/dist/src/helpers/entity/entityCommon.d.ts.map +1 -1
  229. package/dist/src/helpers/entity/entityLifecycle.d.ts +75 -0
  230. package/dist/src/helpers/entity/entityLifecycle.d.ts.map +1 -0
  231. package/dist/src/helpers/entity/entityLiveQuery.d.ts +1 -23
  232. package/dist/src/helpers/entity/entityLiveQuery.d.ts.map +1 -1
  233. package/dist/src/helpers/htmlEmbeddedDataUriPublish.d.ts +4 -9
  234. package/dist/src/helpers/htmlEmbeddedDataUriPublish.d.ts.map +1 -1
  235. package/dist/src/helpers/index.d.ts +2 -24
  236. package/dist/src/helpers/index.d.ts.map +1 -1
  237. package/dist/src/helpers/localImageBlobUrl.d.ts +7 -0
  238. package/dist/src/helpers/localImageBlobUrl.d.ts.map +1 -0
  239. package/dist/src/helpers/mediaRef.d.ts +3 -70
  240. package/dist/src/helpers/mediaRef.d.ts.map +1 -1
  241. package/dist/src/helpers/metadataPropertyNames.d.ts +34 -26
  242. package/dist/src/helpers/metadataPropertyNames.d.ts.map +1 -1
  243. package/dist/src/helpers/mimeTypes.d.ts +2 -1
  244. package/dist/src/helpers/mimeTypes.d.ts.map +1 -1
  245. package/dist/src/helpers/model.d.ts.map +1 -1
  246. package/dist/src/helpers/ownership.d.ts.map +1 -1
  247. package/dist/src/helpers/property.d.ts +21 -26
  248. package/dist/src/helpers/property.d.ts.map +1 -1
  249. package/dist/src/helpers/propertyDefinition.d.ts +59 -0
  250. package/dist/src/helpers/propertyDefinition.d.ts.map +1 -0
  251. package/dist/src/helpers/readHtmlBodyForStorageSeed.d.ts.map +1 -1
  252. package/dist/src/helpers/relationSeedRef.d.ts +0 -7
  253. package/dist/src/helpers/relationSeedRef.d.ts.map +1 -1
  254. package/dist/src/helpers/schema.d.ts +24 -38
  255. package/dist/src/helpers/schema.d.ts.map +1 -1
  256. package/dist/src/helpers/schemaApply.d.ts +135 -0
  257. package/dist/src/helpers/schemaApply.d.ts.map +1 -0
  258. package/dist/src/helpers/tabEvents.d.ts.map +1 -1
  259. package/dist/src/helpers/updateSchema.d.ts +2 -18
  260. package/dist/src/helpers/updateSchema.d.ts.map +1 -1
  261. package/dist/src/imports/index.d.ts +1 -1
  262. package/dist/src/imports/index.d.ts.map +1 -1
  263. package/dist/src/imports/json.d.ts +8 -78
  264. package/dist/src/imports/json.d.ts.map +1 -1
  265. package/dist/src/index.d.ts +13 -13
  266. package/dist/src/index.d.ts.map +1 -1
  267. package/dist/src/interfaces/IItem.d.ts +5 -0
  268. package/dist/src/interfaces/IItem.d.ts.map +1 -1
  269. package/dist/src/interfaces/IItemProperty.d.ts +9 -7
  270. package/dist/src/interfaces/IItemProperty.d.ts.map +1 -1
  271. package/dist/src/node/db/Db.d.ts.map +1 -1
  272. package/dist/src/node/index.d.ts +2 -1
  273. package/dist/src/node/index.d.ts.map +1 -1
  274. package/dist/src/outbox/conflicts.d.ts +2 -0
  275. package/dist/src/outbox/conflicts.d.ts.map +1 -1
  276. package/dist/src/outbox/itemAppliers.d.ts +63 -14
  277. package/dist/src/outbox/itemAppliers.d.ts.map +1 -1
  278. package/dist/src/outbox/outbox.d.ts +14 -3
  279. package/dist/src/outbox/outbox.d.ts.map +1 -1
  280. package/dist/src/outbox/pendingValues.d.ts +3 -1
  281. package/dist/src/outbox/pendingValues.d.ts.map +1 -1
  282. package/dist/src/outbox/storageValueRow.d.ts +7 -0
  283. package/dist/src/outbox/storageValueRow.d.ts.map +1 -0
  284. package/dist/src/platform/configurePlatform.d.ts.map +1 -1
  285. package/dist/src/platform/index.browser.d.ts.map +1 -1
  286. package/dist/src/platform/index.node.d.ts.map +1 -1
  287. package/dist/src/seedSchema/ModelSchema.d.ts +19 -0
  288. package/dist/src/seedSchema/ModelSchema.d.ts.map +1 -1
  289. package/dist/src/seedSchema/ModelSchemaSchema.d.ts.map +1 -1
  290. package/dist/src/seedSchema/PendingWriteSchema.d.ts.map +1 -1
  291. package/dist/src/seedSchema/SchemaSchema.d.ts +19 -0
  292. package/dist/src/seedSchema/SchemaSchema.d.ts.map +1 -1
  293. package/dist/src/seedSchema/SeedSchema.d.ts.map +1 -1
  294. package/dist/src/seedSchema/VersionSchema.d.ts.map +1 -1
  295. package/dist/src/seedSchema/attestedUid.d.ts +9 -0
  296. package/dist/src/seedSchema/attestedUid.d.ts.map +1 -0
  297. package/dist/src/storageValue/content.d.ts +45 -0
  298. package/dist/src/storageValue/content.d.ts.map +1 -0
  299. package/dist/src/storageValue/findFile.d.ts +7 -0
  300. package/dist/src/storageValue/findFile.d.ts.map +1 -0
  301. package/dist/src/storageValue/resolve.d.ts +71 -0
  302. package/dist/src/storageValue/resolve.d.ts.map +1 -0
  303. package/dist/src/storageValue/save.d.ts +24 -0
  304. package/dist/src/storageValue/save.d.ts.map +1 -0
  305. package/dist/src/storageValue/stage.d.ts +22 -0
  306. package/dist/src/storageValue/stage.d.ts.map +1 -0
  307. package/dist/src/types/db.d.ts +0 -14
  308. package/dist/src/types/db.d.ts.map +1 -1
  309. package/dist/src/types/index.d.ts +3 -3
  310. package/dist/src/types/index.d.ts.map +1 -1
  311. package/dist/src/types/machines.d.ts +1 -1
  312. package/dist/src/types/machines.d.ts.map +1 -1
  313. package/dist/src/types/property.d.ts +9 -24
  314. package/dist/src/types/property.d.ts.map +1 -1
  315. package/dist/src/types/publish.d.ts +1 -1
  316. package/dist/src/types/publish.d.ts.map +1 -1
  317. package/dist/{syncDbWithEas-BMHoou6X.js → syncDbWithEas-CA7PvBgu.js} +112 -162
  318. package/dist/syncDbWithEas-CA7PvBgu.js.map +1 -0
  319. package/dist/tabEvents-CaVmngqr.js +3804 -0
  320. package/dist/tabEvents-CaVmngqr.js.map +1 -0
  321. package/dist/{tolerantWebAccess-BHndShch.js → tolerantWebAccess-BJqViq08.js} +10 -15
  322. package/dist/{tolerantWebAccess-BHndShch.js.map → tolerantWebAccess-BJqViq08.js.map} +1 -1
  323. package/dist/{resolveModelForSyncedSeed-fIURvYRV.js → updateSeedRevokedAt-BL9Bg-G7.js} +30 -4
  324. package/dist/updateSeedRevokedAt-BL9Bg-G7.js.map +1 -0
  325. package/package.json +6 -6
  326. package/dist/ClientManager-DqL0q_eu.js +0 -5292
  327. package/dist/ClientManager-DqL0q_eu.js.map +0 -1
  328. package/dist/Item-CG5IhPtL.js.map +0 -1
  329. package/dist/ModelProperty-DDD47KVm.js.map +0 -1
  330. package/dist/Schema-BS8oR7QV.js +0 -4370
  331. package/dist/Schema-BS8oR7QV.js.map +0 -1
  332. package/dist/backfillMetadataPropertyIds-C7P7FL6F.js +0 -72
  333. package/dist/backfillMetadataPropertyIds-C7P7FL6F.js.map +0 -1
  334. package/dist/changeFeed-M8sGbOrW.js +0 -726
  335. package/dist/changeFeed-M8sGbOrW.js.map +0 -1
  336. package/dist/configurePlatform-Dukm2QwO.js.map +0 -1
  337. package/dist/dist/ClientManager-DqL0q_eu.d.ts +0 -952
  338. package/dist/dist/ClientManager-DqL0q_eu.d.ts.map +0 -1
  339. package/dist/dist/Item-CG5IhPtL.d.ts +0 -1115
  340. package/dist/dist/Item-CG5IhPtL.d.ts.map +0 -1
  341. package/dist/dist/ModelProperty-DDD47KVm.d.ts +0 -315
  342. package/dist/dist/ModelProperty-DDD47KVm.d.ts.map +0 -1
  343. package/dist/dist/Schema-BS8oR7QV.d.ts +0 -432
  344. package/dist/dist/Schema-BS8oR7QV.d.ts.map +0 -1
  345. package/dist/dist/SchemaValidationService-CZzKNL04.d.ts +0 -118
  346. package/dist/dist/SchemaValidationService-CZzKNL04.d.ts.map +0 -1
  347. package/dist/dist/backfillMetadataPropertyIds-C7P7FL6F.d.ts +0 -7
  348. package/dist/dist/backfillMetadataPropertyIds-C7P7FL6F.d.ts.map +0 -1
  349. package/dist/dist/changeFeed-M8sGbOrW.d.ts +0 -160
  350. package/dist/dist/changeFeed-M8sGbOrW.d.ts.map +0 -1
  351. package/dist/dist/configurePlatform-Dukm2QwO.d.ts.map +0 -1
  352. package/dist/dist/detachRowsBeforeDelete-Di1enVUF.d.ts +0 -13
  353. package/dist/dist/detachRowsBeforeDelete-Di1enVUF.d.ts.map +0 -1
  354. package/dist/dist/eas-B5VJolSj.d.ts +0 -12
  355. package/dist/dist/eas-B5VJolSj.d.ts.map +0 -1
  356. package/dist/dist/errors-C1qUEZ7A.d.ts +0 -25
  357. package/dist/dist/errors-C1qUEZ7A.d.ts.map +0 -1
  358. package/dist/dist/errors-CS3nDpUU.d.ts +0 -515
  359. package/dist/dist/errors-CS3nDpUU.d.ts.map +0 -1
  360. package/dist/dist/eventBus-7vxTCc3a.d.ts +0 -18
  361. package/dist/dist/eventBus-7vxTCc3a.d.ts.map +0 -1
  362. package/dist/dist/findSeedRowsByUid-CuQmK7An.d.ts +0 -13
  363. package/dist/dist/findSeedRowsByUid-CuQmK7An.d.ts.map +0 -1
  364. package/dist/dist/getItem-Uha3_H0t.d.ts +0 -6
  365. package/dist/dist/getItem-Uha3_H0t.d.ts.map +0 -1
  366. package/dist/dist/getPublishPayload-pbin4lk8.d.ts +0 -65
  367. package/dist/dist/getPublishPayload-pbin4lk8.d.ts.map +0 -1
  368. package/dist/dist/getPublishPendingDiff-ByIaPvCn.d.ts +0 -18
  369. package/dist/dist/getPublishPendingDiff-ByIaPvCn.d.ts.map +0 -1
  370. package/dist/dist/getPublishUploads-BBqiowVc.d.ts +0 -89
  371. package/dist/dist/getPublishUploads-BBqiowVc.d.ts.map +0 -1
  372. package/dist/dist/index-DQoyhp2c.d.ts +0 -6
  373. package/dist/dist/index-DQoyhp2c.d.ts.map +0 -1
  374. package/dist/dist/index-njjjo74v.d.ts +0 -14
  375. package/dist/dist/index-njjjo74v.d.ts.map +0 -1
  376. package/dist/dist/index-rOTW-2QZ.d.ts.map +0 -1
  377. package/dist/dist/index.browser-QPWBkLJA.d.ts +0 -9959
  378. package/dist/dist/index.browser-QPWBkLJA.d.ts.map +0 -1
  379. package/dist/dist/mimeTypes-C9r76DCH.d.ts +0 -30
  380. package/dist/dist/mimeTypes-C9r76DCH.d.ts.map +0 -1
  381. package/dist/dist/model-oHA3YhOd.d.ts +0 -6
  382. package/dist/dist/model-oHA3YhOd.d.ts.map +0 -1
  383. package/dist/dist/modelPropertyRecordSchemas-onFOG2x6.d.ts +0 -7
  384. package/dist/dist/modelPropertyRecordSchemas-onFOG2x6.d.ts.map +0 -1
  385. package/dist/dist/platform.browser.d.ts +0 -3
  386. package/dist/dist/platform.browser.d.ts.map +0 -1
  387. package/dist/dist/property-C85DCD7K.d.ts +0 -37
  388. package/dist/dist/property-C85DCD7K.d.ts.map +0 -1
  389. package/dist/dist/propertyValidationRules-CjUPOFeu.d.ts +0 -13
  390. package/dist/dist/propertyValidationRules-CjUPOFeu.d.ts.map +0 -1
  391. package/dist/dist/publishDraftGraph-DBWAN72w.d.ts +0 -93
  392. package/dist/dist/publishDraftGraph-DBWAN72w.d.ts.map +0 -1
  393. package/dist/dist/resolveModelForSyncedSeed-fIURvYRV.d.ts +0 -21
  394. package/dist/dist/resolveModelForSyncedSeed-fIURvYRV.d.ts.map +0 -1
  395. package/dist/dist/syncDbWithEas-BMHoou6X.d.ts +0 -13
  396. package/dist/dist/syncDbWithEas-BMHoou6X.d.ts.map +0 -1
  397. package/dist/dist/tolerantWebAccess-BHndShch.d.ts +0 -113
  398. package/dist/dist/tolerantWebAccess-BHndShch.d.ts.map +0 -1
  399. package/dist/dist/updateSeedRevokedAt-DpfG6ztE.d.ts +0 -11
  400. package/dist/dist/updateSeedRevokedAt-DpfG6ztE.d.ts.map +0 -1
  401. package/dist/eas-B5VJolSj.js +0 -67
  402. package/dist/eas-B5VJolSj.js.map +0 -1
  403. package/dist/errors-CS3nDpUU.js +0 -4006
  404. package/dist/errors-CS3nDpUU.js.map +0 -1
  405. package/dist/eventBus-7vxTCc3a.js +0 -64
  406. package/dist/eventBus-7vxTCc3a.js.map +0 -1
  407. package/dist/findSeedRowsByUid-CuQmK7An.js +0 -47
  408. package/dist/findSeedRowsByUid-CuQmK7An.js.map +0 -1
  409. package/dist/getItem-Uha3_H0t.js +0 -45
  410. package/dist/getItem-Uha3_H0t.js.map +0 -1
  411. package/dist/getPublishPayload-pbin4lk8.js +0 -1736
  412. package/dist/getPublishPayload-pbin4lk8.js.map +0 -1
  413. package/dist/getPublishPendingDiff-ByIaPvCn.js +0 -118
  414. package/dist/getPublishPendingDiff-ByIaPvCn.js.map +0 -1
  415. package/dist/getPublishUploads-BBqiowVc.js +0 -1080
  416. package/dist/getPublishUploads-BBqiowVc.js.map +0 -1
  417. package/dist/index-DQoyhp2c.js.map +0 -1
  418. package/dist/index-DxHpPNfn.js.map +0 -1
  419. package/dist/index-njjjo74v.js +0 -29
  420. package/dist/index-njjjo74v.js.map +0 -1
  421. package/dist/index-rOTW-2QZ.js +0 -4760
  422. package/dist/index-rOTW-2QZ.js.map +0 -1
  423. package/dist/index.browser-QPWBkLJA.js.map +0 -1
  424. package/dist/index.node-WsEJCOwC.js.map +0 -1
  425. package/dist/mimeTypes-C9r76DCH.js +0 -209
  426. package/dist/mimeTypes-C9r76DCH.js.map +0 -1
  427. package/dist/model-oHA3YhOd.js +0 -29
  428. package/dist/model-oHA3YhOd.js.map +0 -1
  429. package/dist/modelPropertyRecordSchemas-onFOG2x6.js +0 -94
  430. package/dist/modelPropertyRecordSchemas-onFOG2x6.js.map +0 -1
  431. package/dist/property-C85DCD7K.js +0 -289
  432. package/dist/property-C85DCD7K.js.map +0 -1
  433. package/dist/propertyValidationRules-CjUPOFeu.js +0 -73
  434. package/dist/propertyValidationRules-CjUPOFeu.js.map +0 -1
  435. package/dist/publishDraftGraph-DBWAN72w.js +0 -505
  436. package/dist/publishDraftGraph-DBWAN72w.js.map +0 -1
  437. package/dist/resolveModelForSyncedSeed-fIURvYRV.js.map +0 -1
  438. package/dist/src/Item/service/actors/loadOrCreateItem.d.ts +0 -5
  439. package/dist/src/Item/service/actors/loadOrCreateItem.d.ts.map +0 -1
  440. package/dist/src/Item/service/actors/waitForDb.d.ts +0 -4
  441. package/dist/src/Item/service/actors/waitForDb.d.ts.map +0 -1
  442. package/dist/src/ItemProperty/service/actors/loadOrCreateProperty.d.ts +0 -5
  443. package/dist/src/ItemProperty/service/actors/loadOrCreateProperty.d.ts.map +0 -1
  444. package/dist/src/ItemProperty/service/actors/saveValueToDb/analyzeInput.d.ts +0 -5
  445. package/dist/src/ItemProperty/service/actors/saveValueToDb/analyzeInput.d.ts.map +0 -1
  446. package/dist/src/ItemProperty/service/actors/saveValueToDb/index.d.ts +0 -6
  447. package/dist/src/ItemProperty/service/actors/saveValueToDb/index.d.ts.map +0 -1
  448. package/dist/src/ItemProperty/service/actors/saveValueToDb/rowContext.d.ts.map +0 -1
  449. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveFile.d.ts +0 -24
  450. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveFile.d.ts.map +0 -1
  451. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveHtml.d.ts +0 -5
  452. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveHtml.d.ts.map +0 -1
  453. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveImage.d.ts +0 -5
  454. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveImage.d.ts.map +0 -1
  455. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.d.ts +0 -10
  456. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.d.ts.map +0 -1
  457. package/dist/src/ItemProperty/service/actors/saveValueToDb/storageValue.d.ts +0 -22
  458. package/dist/src/ItemProperty/service/actors/saveValueToDb/storageValue.d.ts.map +0 -1
  459. package/dist/src/ItemProperty/service/actors/waitForDb.d.ts +0 -4
  460. package/dist/src/ItemProperty/service/actors/waitForDb.d.ts.map +0 -1
  461. package/dist/src/Model/service/actors/createModelProperties.d.ts +0 -9
  462. package/dist/src/Model/service/actors/createModelProperties.d.ts.map +0 -1
  463. package/dist/src/Model/service/actors/loadOrCreateModel.d.ts +0 -5
  464. package/dist/src/Model/service/actors/loadOrCreateModel.d.ts.map +0 -1
  465. package/dist/src/Schema/service/actors/checkExistingSchema.d.ts +0 -5
  466. package/dist/src/Schema/service/actors/checkExistingSchema.d.ts.map +0 -1
  467. package/dist/src/Schema/service/actors/createModelInstances.d.ts +0 -11
  468. package/dist/src/Schema/service/actors/createModelInstances.d.ts.map +0 -1
  469. package/dist/src/Schema/service/actors/createPropertyInstances.d.ts +0 -12
  470. package/dist/src/Schema/service/actors/createPropertyInstances.d.ts.map +0 -1
  471. package/dist/src/Schema/service/actors/validateSchema.d.ts +0 -5
  472. package/dist/src/Schema/service/actors/validateSchema.d.ts.map +0 -1
  473. package/dist/src/Schema/service/actors/verifyModelInstancesInCache.d.ts +0 -6
  474. package/dist/src/Schema/service/actors/verifyModelInstancesInCache.d.ts.map +0 -1
  475. package/dist/src/Schema/service/actors/verifyModelsInDb.d.ts +0 -7
  476. package/dist/src/Schema/service/actors/verifyModelsInDb.d.ts.map +0 -1
  477. package/dist/src/Schema/service/actors/verifyPropertiesInDb.d.ts +0 -8
  478. package/dist/src/Schema/service/actors/verifyPropertiesInDb.d.ts.map +0 -1
  479. package/dist/src/Schema/service/actors/verifyPropertyInstancesInCache.d.ts +0 -6
  480. package/dist/src/Schema/service/actors/verifyPropertyInstancesInCache.d.ts.map +0 -1
  481. package/dist/src/Schema/service/actors/verifySchemaInDb.d.ts +0 -7
  482. package/dist/src/Schema/service/actors/verifySchemaInDb.d.ts.map +0 -1
  483. package/dist/src/Schema/service/actors/writeModelsToDb.d.ts +0 -9
  484. package/dist/src/Schema/service/actors/writeModelsToDb.d.ts.map +0 -1
  485. package/dist/src/Schema/service/actors/writePropertiesToDb.d.ts +0 -10
  486. package/dist/src/Schema/service/actors/writePropertiesToDb.d.ts.map +0 -1
  487. package/dist/src/Schema/service/actors/writeSchemaToDb.d.ts +0 -11
  488. package/dist/src/Schema/service/actors/writeSchemaToDb.d.ts.map +0 -1
  489. package/dist/src/browser/helpers/ArweaveClient.d.ts +0 -14
  490. package/dist/src/browser/helpers/ArweaveClient.d.ts.map +0 -1
  491. package/dist/src/browser/helpers/EasClient.d.ts +0 -10
  492. package/dist/src/browser/helpers/EasClient.d.ts.map +0 -1
  493. package/dist/src/browser/helpers/QueryClient.d.ts +0 -9
  494. package/dist/src/browser/helpers/QueryClient.d.ts.map +0 -1
  495. package/dist/src/client/actors/addModelsToStore.d.ts +0 -4
  496. package/dist/src/client/actors/addModelsToStore.d.ts.map +0 -1
  497. package/dist/src/db/backfillMetadataPropertyIds.d.ts +0 -7
  498. package/dist/src/db/backfillMetadataPropertyIds.d.ts.map +0 -1
  499. package/dist/src/db/read/getItem.d.ts +0 -3
  500. package/dist/src/db/read/getItem.d.ts.map +0 -1
  501. package/dist/src/db/read/getPropertyData.d.ts +0 -4
  502. package/dist/src/db/read/getPropertyData.d.ts.map +0 -1
  503. package/dist/src/db/read/getRelatedItemsForPublish.d.ts +0 -10
  504. package/dist/src/db/read/getRelatedItemsForPublish.d.ts.map +0 -1
  505. package/dist/src/db/read/getSeedData.d.ts +0 -12
  506. package/dist/src/db/read/getSeedData.d.ts.map +0 -1
  507. package/dist/src/db/read/itemLoads.d.ts +0 -20
  508. package/dist/src/db/read/itemLoads.d.ts.map +0 -1
  509. package/dist/src/db/read/publishDraftGraph.d.ts +0 -64
  510. package/dist/src/db/read/publishDraftGraph.d.ts.map +0 -1
  511. package/dist/src/db/write/linkModelToSchema.d.ts +0 -12
  512. package/dist/src/db/write/linkModelToSchema.d.ts.map +0 -1
  513. package/dist/src/helpers/ArweaveClient/BaseArweaveClient.d.ts +0 -2
  514. package/dist/src/helpers/ArweaveClient/BaseArweaveClient.d.ts.map +0 -1
  515. package/dist/src/helpers/ArweaveClient/arweaveL1UploadApi.d.ts +0 -2
  516. package/dist/src/helpers/ArweaveClient/arweaveL1UploadApi.d.ts.map +0 -1
  517. package/dist/src/helpers/ArweaveClient/selectReadGateway.d.ts +0 -2
  518. package/dist/src/helpers/ArweaveClient/selectReadGateway.d.ts.map +0 -1
  519. package/dist/src/helpers/ArweaveClient/uploadApiVerification.d.ts +0 -2
  520. package/dist/src/helpers/ArweaveClient/uploadApiVerification.d.ts.map +0 -1
  521. package/dist/src/helpers/EasClient/BaseEasClient.d.ts +0 -2
  522. package/dist/src/helpers/EasClient/BaseEasClient.d.ts.map +0 -1
  523. package/dist/src/helpers/QueryClient/BaseQueryClient.d.ts +0 -2
  524. package/dist/src/helpers/QueryClient/BaseQueryClient.d.ts.map +0 -1
  525. package/dist/src/helpers/easUid.d.ts +0 -2
  526. package/dist/src/helpers/easUid.d.ts.map +0 -1
  527. package/dist/src/helpers/entity/entityDestroy.d.ts +0 -49
  528. package/dist/src/helpers/entity/entityDestroy.d.ts.map +0 -1
  529. package/dist/src/helpers/entity/entityFind.d.ts +0 -52
  530. package/dist/src/helpers/entity/entityFind.d.ts.map +0 -1
  531. package/dist/src/helpers/entity/entityState.d.ts +0 -28
  532. package/dist/src/helpers/entity/entityState.d.ts.map +0 -1
  533. package/dist/src/helpers/entity/entityUnload.d.ts +0 -56
  534. package/dist/src/helpers/entity/entityUnload.d.ts.map +0 -1
  535. package/dist/src/helpers/entity/evictionEpoch.d.ts +0 -43
  536. package/dist/src/helpers/entity/evictionEpoch.d.ts.map +0 -1
  537. package/dist/src/helpers/entity/index.d.ts +0 -12
  538. package/dist/src/helpers/entity/index.d.ts.map +0 -1
  539. package/dist/src/helpers/gateway/gatewayState.d.ts +0 -2
  540. package/dist/src/helpers/gateway/gatewayState.d.ts.map +0 -1
  541. package/dist/src/helpers/gateway/resolveSeedGatewayEndpoints.d.ts +0 -2
  542. package/dist/src/helpers/gateway/resolveSeedGatewayEndpoints.d.ts.map +0 -1
  543. package/dist/src/helpers/gateway/seedGatewayConfig.d.ts +0 -2
  544. package/dist/src/helpers/gateway/seedGatewayConfig.d.ts.map +0 -1
  545. package/dist/src/helpers/getSchemaForItemProperty.d.ts +0 -15
  546. package/dist/src/helpers/getSchemaForItemProperty.d.ts.map +0 -1
  547. package/dist/src/helpers/getSegmentedItemProperties.d.ts +0 -10
  548. package/dist/src/helpers/getSegmentedItemProperties.d.ts.map +0 -1
  549. package/dist/src/helpers/isSqliteUniqueConstraintError.d.ts +0 -7
  550. package/dist/src/helpers/isSqliteUniqueConstraintError.d.ts.map +0 -1
  551. package/dist/src/helpers/propertyValidationRules.d.ts +0 -20
  552. package/dist/src/helpers/propertyValidationRules.d.ts.map +0 -1
  553. package/dist/src/helpers/propertyWriteTickets.d.ts +0 -11
  554. package/dist/src/helpers/propertyWriteTickets.d.ts.map +0 -1
  555. package/dist/src/helpers/reconcilePropertyDraftRows.d.ts +0 -10
  556. package/dist/src/helpers/reconcilePropertyDraftRows.d.ts.map +0 -1
  557. package/dist/src/helpers/waitForEntityIdle.d.ts +0 -21
  558. package/dist/src/helpers/waitForEntityIdle.d.ts.map +0 -1
  559. package/dist/src/interfaces/IQueryClient.d.ts +0 -15
  560. package/dist/src/interfaces/IQueryClient.d.ts.map +0 -1
  561. package/dist/src/node/helpers/ArweaveClient.d.ts +0 -5
  562. package/dist/src/node/helpers/ArweaveClient.d.ts.map +0 -1
  563. package/dist/src/node/helpers/EasClient.d.ts +0 -5
  564. package/dist/src/node/helpers/EasClient.d.ts.map +0 -1
  565. package/dist/src/node/helpers/QueryClient.d.ts +0 -5
  566. package/dist/src/node/helpers/QueryClient.d.ts.map +0 -1
  567. package/dist/src/services/write/actors/validateEntity.d.ts +0 -6
  568. package/dist/src/services/write/actors/validateEntity.d.ts.map +0 -1
  569. package/dist/src/services/write/actors/writeToDatabase.d.ts +0 -14
  570. package/dist/src/services/write/actors/writeToDatabase.d.ts.map +0 -1
  571. package/dist/src/services/write/writeProcessMachine.d.ts +0 -56
  572. package/dist/src/services/write/writeProcessMachine.d.ts.map +0 -1
  573. package/dist/src/stores/eas.d.ts +0 -2
  574. package/dist/src/stores/eas.d.ts.map +0 -1
  575. package/dist/src/types/arweave.d.ts +0 -57
  576. package/dist/src/types/arweave.d.ts.map +0 -1
  577. package/dist/src/types/gateway.d.ts +0 -2
  578. package/dist/src/types/gateway.d.ts.map +0 -1
  579. package/dist/syncDbWithEas-BMHoou6X.js.map +0 -1
  580. package/dist/updateSeedRevokedAt-DpfG6ztE.js +0 -31
  581. package/dist/updateSeedRevokedAt-DpfG6ztE.js.map +0 -1
@@ -1,1080 +0,0 @@
1
- import { M as ModelPropertyDataTypes, Q as BaseFileManager, L as BaseDb, x as htmlEmbeddedImageCoPublish, r as resolveSeedIdsFromRefString, q as normalizeRelationPropertyValue, V as INTERNAL_STORAGE_MODEL_FILE_IDS, l as isPublishedSeedRef, i as isDataType, W as getStorageDirForDataType, X as getContentSha256, Y as buildArweaveContentTags, Z as getItemStorageSubdir, _ as getItemStorageLocalFileName, m as metadata } from './index-rOTW-2QZ.js';
2
- import { getPublicArweaveRawUrl, BaseArweaveClient } from '@seedprotocol/arweave';
3
- import { w as withItemLoads, g as getPublishDraftGraph, a as getSegmentedItemProperties } from './publishDraftGraph-DBWAN72w.js';
4
- import debug from 'debug';
5
- import { parseFragment } from 'parse5';
6
- import { eq, and } from 'drizzle-orm';
7
- import { n as getContentHash } from './ClientManager-DqL0q_eu.js';
8
- import { I as Item, F as waitForEntityIdle, y as compareMetadataRowsLatestFirst } from './Item-CG5IhPtL.js';
9
- import 'pluralize';
10
- import '@seedprotocol/eas';
11
- import { g as getExtensionForMimeType, r as resolveUploadMimeType } from './mimeTypes-C9r76DCH.js';
12
-
13
- const HTML_EMBEDDED_MAX_IMAGES_PER_DOC = 50;
14
- const HTML_EMBEDDED_MAX_IMAGE_BYTES = 5 * 1024 * 1024;
15
- const HTML_EMBEDDED_MAX_TOTAL_BYTES = 25 * 1024 * 1024;
16
- const DATA_URI_IMAGE = /^data:(image\/[a-zA-Z0-9.+-]+);base64,([\s\S]*)$/i;
17
- const MIME_NORMALIZE = {
18
- 'image/jpg': 'image/jpeg',
19
- };
20
- function normalizeMime(m) {
21
- const lower = m.toLowerCase().trim();
22
- return MIME_NORMALIZE[lower] ?? lower;
23
- }
24
- const ALLOWED_MIMES = new Set([
25
- 'image/png',
26
- 'image/jpeg',
27
- 'image/webp',
28
- 'image/gif',
29
- 'image/svg+xml',
30
- ]);
31
- class HtmlEmbeddedDataUriLimitError extends Error {
32
- constructor(message) {
33
- super(message);
34
- this.name = 'HtmlEmbeddedDataUriLimitError';
35
- }
36
- }
37
- function resolveEffectiveHtmlEmbeddedDataUriPolicy(propertyDef, publishLevel) {
38
- const fromProp = propertyDef?.htmlEmbeddedDataUriPolicy;
39
- if (fromProp === 'materialize' || fromProp === 'preserve')
40
- return fromProp;
41
- if (publishLevel === 'materialize' || publishLevel === 'preserve')
42
- return publishLevel;
43
- return 'materialize';
44
- }
45
- function getAttr(node, name) {
46
- const a = node.attrs?.find((x) => x.name === name);
47
- return a?.value;
48
- }
49
- /**
50
- * Walk fragment tree; collect unique data:image base64 URIs with limits.
51
- */
52
- async function extractDataUriImagesFromHtml(html) {
53
- const fragment = parseFragment(html);
54
- const found = [];
55
- const seenUris = new Set();
56
- let totalBytes = 0;
57
- const walk = async (node) => {
58
- if (node.nodeName === '#text' || node.nodeName === '#comment')
59
- return;
60
- const el = node;
61
- if (el.tagName === 'img') {
62
- const src = getAttr(el, 'src')?.trim();
63
- if (src && src.startsWith('data:image/')) {
64
- const m = DATA_URI_IMAGE.exec(src);
65
- if (m) {
66
- const mimeRaw = normalizeMime(m[1]);
67
- if (!ALLOWED_MIMES.has(mimeRaw)) {
68
- throw new HtmlEmbeddedDataUriLimitError(`Unsupported embedded image type: ${mimeRaw}. Allowed: ${[...ALLOWED_MIMES].join(', ')}`);
69
- }
70
- let binary;
71
- try {
72
- const b64 = m[2].replace(/\s/g, '');
73
- binary = Uint8Array.from(atob(b64), (c) => c.charCodeAt(0));
74
- }
75
- catch {
76
- throw new HtmlEmbeddedDataUriLimitError('Invalid base64 in embedded image data URI');
77
- }
78
- const byteLength = binary.byteLength;
79
- if (byteLength > HTML_EMBEDDED_MAX_IMAGE_BYTES) {
80
- throw new HtmlEmbeddedDataUriLimitError(`Embedded image exceeds max size (${HTML_EMBEDDED_MAX_IMAGE_BYTES} bytes)`);
81
- }
82
- totalBytes += byteLength;
83
- if (totalBytes > HTML_EMBEDDED_MAX_TOTAL_BYTES) {
84
- throw new HtmlEmbeddedDataUriLimitError(`Total embedded image size exceeds max (${HTML_EMBEDDED_MAX_TOTAL_BYTES} bytes)`);
85
- }
86
- if (!seenUris.has(src)) {
87
- if (seenUris.size >= HTML_EMBEDDED_MAX_IMAGES_PER_DOC) {
88
- throw new HtmlEmbeddedDataUriLimitError(`Too many distinct embedded images (max ${HTML_EMBEDDED_MAX_IMAGES_PER_DOC})`);
89
- }
90
- seenUris.add(src);
91
- const stableKey = await getContentHash(binary);
92
- found.push({ dataUri: src, stableKey, byteLength, mimeType: mimeRaw, bytes: binary });
93
- }
94
- }
95
- }
96
- }
97
- const parent = el;
98
- if (parent.childNodes) {
99
- for (const c of parent.childNodes)
100
- await walk(c);
101
- }
102
- };
103
- for (const c of fragment.childNodes)
104
- await walk(c);
105
- return found;
106
- }
107
- function escapeAttributeValue(value) {
108
- return value.replace(/&/g, '&').replace(/"/g, '"');
109
- }
110
- /**
111
- * Rewrite attribute values of `html` by splicing each new value into the original string: every
112
- * byte other than the rewritten attributes stays as written. Re-serializing the parsed tree would
113
- * not round-trip (parse5 drops the newline the parser eats after `<pre>`/`<textarea>`/`<listing>`,
114
- * a fragment parse drops doctype/html/head/body, and quoting, case and line endings are normalized),
115
- * and sealed Html must not change with the serializer.
116
- *
117
- * `rewrite` gets each attribute's (entity-decoded) value and returns its new value, or undefined to
118
- * leave it. A rewritten attribute is written as `name="value"`.
119
- */
120
- function rewriteHtmlAttributes(html, rewrite) {
121
- const fragment = parseFragment(html, { sourceCodeLocationInfo: true });
122
- const edits = [];
123
- const walk = (node) => {
124
- if (node.nodeName === '#text' || node.nodeName === '#comment')
125
- return;
126
- const el = node;
127
- if (el.attrs?.length) {
128
- for (const attr of el.attrs) {
129
- if (attr.prefix)
130
- continue;
131
- const next = rewrite(el, attr.name, attr.value);
132
- const location = el.sourceCodeLocation?.attrs?.[attr.name];
133
- if (next === undefined || !location)
134
- continue;
135
- edits.push({
136
- start: location.startOffset,
137
- end: location.endOffset,
138
- text: `${attr.name}="${escapeAttributeValue(next)}"`,
139
- });
140
- }
141
- }
142
- const parent = el;
143
- if (parent.childNodes) {
144
- for (const c of parent.childNodes)
145
- walk(c);
146
- }
147
- };
148
- for (const c of fragment.childNodes)
149
- walk(c);
150
- let out = html;
151
- for (const edit of edits.sort((a, b) => b.start - a.start)) {
152
- out = out.slice(0, edit.start) + edit.text + out.slice(edit.end);
153
- }
154
- return out;
155
- }
156
- /**
157
- * Replace `data:image/...` `<img src>` values with Arweave URLs (keyed by data URI). Only those
158
- * `src` attributes change; the rest of the Html is kept byte for byte.
159
- */
160
- function replaceDataUrisInParsedHtml(html, replacements) {
161
- if (replacements.size === 0)
162
- return html;
163
- return rewriteHtmlAttributes(html, (el, attrName, value) => {
164
- if (el.tagName !== 'img' || attrName !== 'src')
165
- return undefined;
166
- return replacements.get(value.trim());
167
- });
168
- }
169
- /**
170
- * `seed:property/<propertyName>` in Html stands for the Arweave URL of the same item's
171
- * `<propertyName>` storage property (Image, File or Json). Publish uploads that property first,
172
- * then rewrites the placeholder to its gateway URL before the Html is uploaded, so Html can show a
173
- * file published alongside it without embedding it (e.g. `<img class="u-featured"
174
- * src="seed:property/featureImage">`).
175
- */
176
- const SEED_PROPERTY_REF_PREFIX = 'seed:property/';
177
- const SEED_PROPERTY_REF = /^seed:property\/([A-Za-z_$][A-Za-z0-9_$]*)$/;
178
- /** Attributes whose whole (trimmed) value may be a `seed:property/` placeholder. */
179
- const SEED_PROPERTY_REF_ATTRIBUTES = new Set(['src', 'href', 'poster']);
180
- const seedPropertyRefName = (attrName, value) => SEED_PROPERTY_REF_ATTRIBUTES.has(attrName) ? SEED_PROPERTY_REF.exec(value.trim())?.[1] : undefined;
181
- /** A `seed:property/` placeholder that names no usable property, or whose upload is unknown. */
182
- class HtmlSeedPropertyRefError extends Error {
183
- constructor(message) {
184
- super(message);
185
- this.name = 'HtmlSeedPropertyRefError';
186
- }
187
- }
188
- /** Property names referenced by `seed:property/<name>` placeholders in `html`, each once. */
189
- function findSeedPropertyRefsInHtml(html) {
190
- if (!html.includes(SEED_PROPERTY_REF_PREFIX))
191
- return [];
192
- const names = new Set();
193
- rewriteHtmlAttributes(html, (_el, attrName, value) => {
194
- const name = seedPropertyRefName(attrName, value);
195
- if (name)
196
- names.add(name);
197
- return undefined;
198
- });
199
- return [...names];
200
- }
201
- /** Replace `seed:property/<name>` placeholders with `urlByPropertyName.get(name)`; other bytes are kept. */
202
- function replaceSeedPropertyRefsInHtml(html, urlByPropertyName) {
203
- if (urlByPropertyName.size === 0)
204
- return html;
205
- return rewriteHtmlAttributes(html, (_el, attrName, value) => {
206
- const name = seedPropertyRefName(attrName, value);
207
- return name ? urlByPropertyName.get(name) : undefined;
208
- });
209
- }
210
- const SEED_PROPERTY_REF_DATA_TYPES = [
211
- ModelPropertyDataTypes.Image,
212
- ModelPropertyDataTypes.File,
213
- ModelPropertyDataTypes.Json,
214
- ];
215
- /**
216
- * The storage property of `item` a `seed:property/<name>` placeholder names, and the seed it holds.
217
- * Html properties are refused: an Html seed may itself be deferred to after the rewrite.
218
- */
219
- function resolveSeedPropertyRefTarget(item, propertyName) {
220
- const property = item.properties.find((p) => p.propertyName === propertyName || p.propertyName === `${propertyName}Id`);
221
- const def = property?.propertyDef;
222
- if (!property || !def) {
223
- throw new HtmlSeedPropertyRefError(`Html references ${SEED_PROPERTY_REF_PREFIX}${propertyName}, but ${item.modelName} has no property ${propertyName}`);
224
- }
225
- const dataType = normalizeDataTypeLocal(def.dataType);
226
- const storageType = dataType === ModelPropertyDataTypes.Relation ? normalizeDataTypeLocal(def.refValueType) : dataType;
227
- if (!SEED_PROPERTY_REF_DATA_TYPES.includes(storageType)) {
228
- throw new HtmlSeedPropertyRefError(`Html references ${SEED_PROPERTY_REF_PREFIX}${propertyName}, but ${propertyName} is ${def.dataType}; ` +
229
- `only Image, File and Json properties can be referenced`);
230
- }
231
- const snap = property.getService().getSnapshot();
232
- const ctx = 'context' in snap ? snap.context : null;
233
- const ids = resolveSeedIdsFromRefString(normalizeRelationPropertyValue(ctx?.propertyValue) ?? '');
234
- if (!ids.seedLocalId && !ids.seedUid) {
235
- throw new HtmlSeedPropertyRefError(`Html references ${SEED_PROPERTY_REF_PREFIX}${propertyName}, but ${propertyName} has no value`);
236
- }
237
- return ids;
238
- }
239
- const ARWEAVE_TX_ID = /^[a-z0-9_-]{43}$/i;
240
- /**
241
- * The Arweave tx of the storage seed a placeholder names: uploaded in this publish's phase 1, or,
242
- * when not uploaded now, the transaction it was published with (its storageTransactionId).
243
- */
244
- async function resolveSeedPropertyRefTxId(item, propertyName, txBySeedLocalId, loads) {
245
- const { seedLocalId, seedUid } = resolveSeedPropertyRefTarget(item, propertyName);
246
- const uploaded = seedLocalId ? txBySeedLocalId.get(seedLocalId) : undefined;
247
- if (uploaded)
248
- return uploaded;
249
- const storageItem = await loads.find({ seedLocalId, seedUid });
250
- const st = storageItem?.internalProperties['storageTransactionId'] ??
251
- storageItem?.allProperties['storageTransactionId'];
252
- const stSnap = st?.getService().getSnapshot();
253
- const stValue = stSnap && 'context' in stSnap ? stSnap.context.propertyValue : undefined;
254
- if (typeof stValue === 'string' && ARWEAVE_TX_ID.test(stValue.trim()))
255
- return stValue.trim();
256
- throw new HtmlSeedPropertyRefError(`Html references ${SEED_PROPERTY_REF_PREFIX}${propertyName}, but ${propertyName} was not uploaded ` +
257
- `in this publish and has no published transaction`);
258
- }
259
- async function deleteCoPublishRowsForParent(appDb, parentSeedLocalId) {
260
- if (!appDb)
261
- return;
262
- await appDb.delete(htmlEmbeddedImageCoPublish).where(eq(htmlEmbeddedImageCoPublish.parentSeedLocalId, parentSeedLocalId));
263
- }
264
- /**
265
- * Name of the file holding an embedded image's bytes in the images folder: `<imageSeedLocalId>.<ext>`,
266
- * the extension following the image's MIME type (one of {@link ALLOWED_MIMES}).
267
- */
268
- function embeddedImageFileName(imageSeedLocalId, mimeType) {
269
- return `${imageSeedLocalId}.${getExtensionForMimeType(mimeType) ?? 'bin'}`;
270
- }
271
- /** Path of the file {@link createImageItemFromBytes} wrote for an Image seed, or undefined if there is none. */
272
- async function findEmbeddedImageFilePath(imageSeedLocalId) {
273
- for (const mimeType of ALLOWED_MIMES) {
274
- const filePath = BaseFileManager.getFilesPath('images', embeddedImageFileName(imageSeedLocalId, mimeType));
275
- if (await BaseFileManager.pathExists(filePath))
276
- return filePath;
277
- }
278
- return undefined;
279
- }
280
- /**
281
- * Create an Image item for an embedded image and write its bytes to the images folder, where publish
282
- * reads them for upload ({@link findEmbeddedImageFilePath}). Its storageTransactionId stays empty
283
- * until the upload writes the transaction id, as for any other storage seed.
284
- */
285
- async function createImageItemFromBytes(bytes, mimeType) {
286
- const imageItem = await Item.create({
287
- modelName: 'Image',
288
- modelFileId: INTERNAL_STORAGE_MODEL_FILE_IDS.image,
289
- });
290
- await waitForEntityIdle(imageItem, { timeout: 60000 });
291
- const filePath = BaseFileManager.getFilesPath('images', embeddedImageFileName(imageItem.seedLocalId, mimeType));
292
- await BaseFileManager.createDirIfNotExists(BaseFileManager.getFilesPath('images'));
293
- const data = bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
294
- try {
295
- await BaseFileManager.saveFile(filePath, data);
296
- }
297
- catch {
298
- const fs = await BaseFileManager.getFs();
299
- fs.writeFileSync(filePath, bytes);
300
- }
301
- const { seedLocalId } = imageItem;
302
- // Publish loads the image again when it uploads and attests it
303
- imageItem.unload();
304
- return { seedLocalId };
305
- }
306
- /**
307
- * Scan Html storage properties, materialize embedded images as Image items, insert co-publish rows.
308
- * Call before phase-1 Arweave tx build. Does not rewrite Html files yet.
309
- */
310
- async function prepareHtmlEmbeddedImagesForPublish(item, publishPolicy) {
311
- const appDb = BaseDb.getAppDb();
312
- if (!appDb) {
313
- return { deferredHtmlSeedLocalIds: [] };
314
- }
315
- const deferred = new Set();
316
- // The item's own Html, and the Html of the draft items published with it: each gets its embedded
317
- // images materialized and co-published (rows keyed by the item owning the Html property).
318
- await withItemLoads(undefined, async (loads) => {
319
- for (const parent of [item, ...(await getRelatedDraftsCoPublishedWith(item, loads))]) {
320
- await prepareHtmlEmbeddedImagesOfItem(appDb, parent, publishPolicy, deferred);
321
- }
322
- });
323
- return { deferredHtmlSeedLocalIds: [...deferred] };
324
- }
325
- /**
326
- * Draft items (no seed uid yet) that a publish of `item` publishes with it: every draft reachable
327
- * through relation and list properties, as getPublishPayload and getPublishUploads walk them
328
- * (publishDraftGraph.ts). Html-embedded images of these items are co-published with `item` like its own.
329
- */
330
- async function getRelatedDraftsCoPublishedWith(item, loads) {
331
- const _mod_0 = await import('./publishDraftGraph-DBWAN72w.js');
332
- const _ns_0 = _mod_0.p;
333
- const { getPublishDraftGraph } = _ns_0;
334
- const { drafts } = await getPublishDraftGraph(item, { loads });
335
- return drafts.map((d) => d.item);
336
- }
337
- async function prepareHtmlEmbeddedImagesOfItem(appDb, item, publishPolicy, deferred) {
338
- await deleteCoPublishRowsForParent(appDb, item.seedLocalId);
339
- for (const p of item.properties) {
340
- const def = p.propertyDef;
341
- if (!def || normalizeDataTypeLocal(def.dataType) !== ModelPropertyDataTypes.Html)
342
- continue;
343
- const snap = p.getService().getSnapshot();
344
- const ctx = 'context' in snap ? snap.context : null;
345
- const htmlSeedLocalId = typeof ctx?.propertyValue === 'string' ? ctx.propertyValue : '';
346
- const refResolved = ctx?.refResolvedValue;
347
- if (!htmlSeedLocalId?.trim() || !refResolved)
348
- continue;
349
- const filePath = `${BaseFileManager.getFilesPath('html')}/${refResolved}`;
350
- const exists = await BaseFileManager.pathExists(filePath);
351
- if (!exists)
352
- continue;
353
- let html;
354
- try {
355
- html = await BaseFileManager.readFileAsString(filePath);
356
- }
357
- catch {
358
- const buf = await BaseFileManager.readFileAsBuffer(filePath);
359
- if (typeof Buffer !== 'undefined' && Buffer.isBuffer(buf)) {
360
- html = buf.toString('utf-8');
361
- }
362
- else if (typeof Blob !== 'undefined' && buf instanceof Blob) {
363
- html = await buf.text();
364
- }
365
- else if (buf instanceof ArrayBuffer) {
366
- html = new TextDecoder('utf-8', { fatal: false }).decode(buf);
367
- }
368
- else {
369
- const v = buf;
370
- html = new TextDecoder('utf-8', { fatal: false }).decode(new Uint8Array(v.buffer, v.byteOffset, v.byteLength));
371
- }
372
- }
373
- // seed:property/ placeholders are filled in after phase 1 whatever the data URI policy. A
374
- // placeholder naming no usable property fails here, before anything is uploaded.
375
- const refs = findSeedPropertyRefsInHtml(html);
376
- for (const name of refs)
377
- resolveSeedPropertyRefTarget(item, name);
378
- if (refs.length > 0)
379
- deferred.add(htmlSeedLocalId.trim());
380
- const policy = resolveEffectiveHtmlEmbeddedDataUriPolicy(def, publishPolicy);
381
- if (policy !== 'materialize')
382
- continue;
383
- const extracted = await extractDataUriImagesFromHtml(html);
384
- if (extracted.length === 0)
385
- continue;
386
- deferred.add(htmlSeedLocalId.trim());
387
- for (const ent of extracted) {
388
- const { seedLocalId: imageSeedLocalId } = await createImageItemFromBytes(ent.bytes, ent.mimeType);
389
- const now = Date.now();
390
- await appDb.insert(htmlEmbeddedImageCoPublish).values({
391
- parentSeedLocalId: item.seedLocalId,
392
- htmlSeedLocalId: htmlSeedLocalId.trim(),
393
- imageSeedLocalId,
394
- stableKey: ent.stableKey,
395
- createdAt: now,
396
- }).onConflictDoNothing();
397
- }
398
- }
399
- }
400
- function normalizeDataTypeLocal(dt) {
401
- if (!dt)
402
- return '';
403
- return dt.charAt(0).toUpperCase() + dt.slice(1).toLowerCase();
404
- }
405
- /**
406
- * After phase-1 uploads, rewrite Html files on disk: data URI → Arweave gateway URL, and
407
- * `seed:property/<name>` → the gateway URL of that property's upload.
408
- *
409
- * `deferredHtmlSeedLocalIds` (from {@link prepareHtmlEmbeddedImagesForPublish}) limits the rewrite to
410
- * the Html held back from phase 1; without it, every Html of the item and its co-published drafts is
411
- * considered.
412
- */
413
- async function rewriteHtmlEmbeddedImagesOnDisk(parentSeedLocalId, uploadedTransactions, deferredHtmlSeedLocalIds) {
414
- const appDb = BaseDb.getAppDb();
415
- if (!appDb)
416
- return;
417
- await withItemLoads(undefined, async (loads) => {
418
- const parentItem = await loads.find({ seedLocalId: parentSeedLocalId });
419
- if (!parentItem)
420
- return;
421
- await rewriteHtmlEmbeddedImagesOfItemAndDrafts(appDb, parentItem, uploadedTransactions, deferredHtmlSeedLocalIds, loads);
422
- });
423
- }
424
- async function rewriteHtmlEmbeddedImagesOfItemAndDrafts(appDb, parentItem, uploadedTransactions, deferredHtmlSeedLocalIds, loads) {
425
- const txBySeedLocalId = new Map();
426
- for (const u of uploadedTransactions) {
427
- if (u.seedLocalId && u.txId) {
428
- txBySeedLocalId.set(u.seedLocalId.trim(), u.txId.trim());
429
- }
430
- }
431
- const deferred = deferredHtmlSeedLocalIds
432
- ? new Set(deferredHtmlSeedLocalIds.map((id) => id.trim()))
433
- : undefined;
434
- // The parent's Html and that of the draft items published with it (see prepareHtmlEmbeddedImagesForPublish).
435
- for (const item of [parentItem, ...(await getRelatedDraftsCoPublishedWith(parentItem, loads))]) {
436
- await rewriteHtmlEmbeddedImagesOfItem(appDb, item, txBySeedLocalId, deferred, loads);
437
- }
438
- }
439
- async function rewriteHtmlEmbeddedImagesOfItem(appDb, parentItem, txBySeedLocalId, deferred, loads) {
440
- const rows = await appDb
441
- .select()
442
- .from(htmlEmbeddedImageCoPublish)
443
- .where(eq(htmlEmbeddedImageCoPublish.parentSeedLocalId, parentItem.seedLocalId));
444
- for (const p of parentItem.properties) {
445
- const def = p.propertyDef;
446
- if (!def || normalizeDataTypeLocal(def.dataType) !== ModelPropertyDataTypes.Html)
447
- continue;
448
- const snap = p.getService().getSnapshot();
449
- const ctx = 'context' in snap ? snap.context : null;
450
- const htmlSeedLocalId = typeof ctx?.propertyValue === 'string' ? ctx.propertyValue.trim() : '';
451
- const refResolved = ctx?.refResolvedValue;
452
- if (!htmlSeedLocalId || !refResolved)
453
- continue;
454
- if (deferred && !deferred.has(htmlSeedLocalId))
455
- continue;
456
- const htmlRows = rows.filter((r) => String(r.htmlSeedLocalId).trim() === htmlSeedLocalId);
457
- const filePath = `${BaseFileManager.getFilesPath('html')}/${refResolved}`;
458
- if (!(await BaseFileManager.pathExists(filePath)))
459
- continue;
460
- const html = await BaseFileManager.readFileAsString(filePath);
461
- const replacements = new Map();
462
- for (const r of htmlRows) {
463
- const txId = txBySeedLocalId.get(r.imageSeedLocalId.trim());
464
- if (!txId)
465
- continue;
466
- const dataUri = await findDataUriForStableKey(html, r.stableKey);
467
- if (dataUri)
468
- replacements.set(dataUri, getPublicArweaveRawUrl(txId));
469
- }
470
- const urlByPropertyName = new Map();
471
- for (const name of findSeedPropertyRefsInHtml(html)) {
472
- const txId = await resolveSeedPropertyRefTxId(parentItem, name, txBySeedLocalId, loads);
473
- urlByPropertyName.set(name, getPublicArweaveRawUrl(txId));
474
- }
475
- const newHtml = replaceSeedPropertyRefsInHtml(replaceDataUrisInParsedHtml(html, replacements), urlByPropertyName);
476
- if (newHtml === html)
477
- continue;
478
- try {
479
- await BaseFileManager.saveFile(filePath, newHtml);
480
- }
481
- catch {
482
- const fs = await BaseFileManager.getFs();
483
- fs.writeFileSync(filePath, newHtml);
484
- }
485
- p.getService().send({
486
- type: 'updateContext',
487
- renderValue: newHtml,
488
- });
489
- }
490
- }
491
- async function findDataUriForStableKey(html, stableKey) {
492
- const entries = await extractDataUriImagesFromHtml(html);
493
- const hit = entries.find((e) => e.stableKey === stableKey);
494
- return hit?.dataUri;
495
- }
496
- /**
497
- * Remove co-publish rows after a successful publish for this parent seed.
498
- */
499
- async function clearHtmlEmbeddedImageCoPublishRows(parentSeedLocalId) {
500
- const appDb = BaseDb.getAppDb();
501
- if (!appDb || !parentSeedLocalId)
502
- return;
503
- await appDb
504
- .delete(htmlEmbeddedImageCoPublish)
505
- .where(eq(htmlEmbeddedImageCoPublish.parentSeedLocalId, parentSeedLocalId.trim()));
506
- }
507
-
508
- /**
509
- * `Promise.all(items.map(fn))` with at most `limit` calls in flight. Results keep the input order.
510
- * Rejects with the first error (by time); after that no new calls start, though calls already in
511
- * flight run to completion.
512
- */
513
- async function mapWithConcurrency(items, limit, fn) {
514
- const results = new Array(items.length);
515
- const workerCount = Math.max(1, Math.min(Math.floor(limit) || 1, items.length));
516
- let next = 0;
517
- let failed = false;
518
- const worker = async () => {
519
- while (!failed && next < items.length) {
520
- const index = next++;
521
- try {
522
- results[index] = await fn(items[index], index);
523
- }
524
- catch (error) {
525
- failed = true;
526
- throw error;
527
- }
528
- }
529
- };
530
- await Promise.all(Array.from({ length: workerCount }, worker));
531
- return results;
532
- }
533
-
534
- /**
535
- * Composite uploads: several ItemStorage files of one item in a single Arweave transaction.
536
- *
537
- * Producer: `getPublishUploads.ts` (`processUploadPropertyData`), for an item with a
538
- * `storageTransactionId` property and ItemStorage properties (e.g. a Post's `html` and `json`).
539
- * Consumer: the download worker (`browser/workers/filesDownload.ts`), which keeps its own copy of
540
- * {@link decodeCompositeUpload} because it runs from a string; a test keeps the two in step.
541
- *
542
- * Format (unchanged for text children, so composites already on Arweave still read):
543
- *
544
- * ===FILE_SEPARATOR===<name>===FILE_SEPARATOR===<utf-8 text> (repeated per child)
545
- *
546
- * A child that is not valid UTF-8 text (or whose text contains the separator) is written as
547
- * base64 under the name `<name>;base64`. Composites written before this suffix existed converted
548
- * every child to text, which corrupted binary children; those bytes cannot be recovered.
549
- */
550
- const COMPOSITE_SEPARATOR = '===FILE_SEPARATOR===';
551
- const COMPOSITE_BASE64_SUFFIX = ';base64';
552
- const bytesToBase64 = (bytes) => {
553
- let binary = '';
554
- const chunk = 0x8000;
555
- for (let i = 0; i < bytes.length; i += chunk) {
556
- binary += String.fromCharCode(...bytes.subarray(i, i + chunk));
557
- }
558
- return btoa(binary);
559
- };
560
- /** The child's text when it can travel as text: valid UTF-8, no NUL bytes, no separator. */
561
- const childAsText = (bytes) => {
562
- if (bytes.includes(0))
563
- return undefined;
564
- let text;
565
- try {
566
- text = new TextDecoder('utf-8', { fatal: true }).decode(bytes);
567
- }
568
- catch {
569
- return undefined;
570
- }
571
- return text.includes(COMPOSITE_SEPARATOR) ? undefined : text;
572
- };
573
- const encodeCompositeUpload = (children) => {
574
- let composite = '';
575
- for (const { name, bytes } of children) {
576
- const text = childAsText(bytes);
577
- composite +=
578
- text !== undefined
579
- ? `${COMPOSITE_SEPARATOR}${name}${COMPOSITE_SEPARATOR}${text}`
580
- : `${COMPOSITE_SEPARATOR}${name}${COMPOSITE_BASE64_SUFFIX}${COMPOSITE_SEPARATOR}${bytesToBase64(bytes)}`;
581
- }
582
- return new TextEncoder().encode(composite);
583
- };
584
- new TextEncoder().encode(COMPOSITE_SEPARATOR);
585
-
586
- const logger = debug('seedSdk:item:getPublishUploads');
587
- /** L1 transactions {@link getPublishUploads} creates at once (each asks the gateway for price and anchor). */
588
- const CREATE_TRANSACTION_CONCURRENCY = 4;
589
- const toUint8Array = async (data) => {
590
- if (typeof Blob !== 'undefined' && data instanceof Blob) {
591
- return new Uint8Array(await data.arrayBuffer());
592
- }
593
- return new Uint8Array(data);
594
- };
595
- /** A local file's bytes plus its MIME type: the Blob's own type, else the name's extension, else a sniff of the bytes. */
596
- const readUploadFile = async (filePath, fileName = filePath) => {
597
- const data = await BaseFileManager.readFileAsBuffer(filePath);
598
- const bytes = await toUint8Array(data);
599
- const sourceType = typeof Blob !== 'undefined' && data instanceof Blob ? data.type : undefined;
600
- return { bytes, contentType: resolveUploadMimeType({ sourceType, fileName, bytes }) };
601
- };
602
- /**
603
- * The one place an upload's bytes become a {@link PublishUploadData}: everything after this
604
- * (Content-SHA-256, tags, the L1 transaction or the bundler DataItem, signing) works from what it
605
- * returns. A future private-publish option that encrypts content belongs here, before the hash and
606
- * tags are computed, so both publish paths pick it up.
607
- */
608
- const buildPublishUploadData = (data, contentType, target, options) => {
609
- const contentHash = getContentSha256(data);
610
- return {
611
- data,
612
- contentHash,
613
- contentType,
614
- tags: buildArweaveContentTags(contentHash, contentType, options?.arweaveUploadTags),
615
- ...target,
616
- };
617
- };
618
- const getStorageSeedUploadData = async (itemStorageSeedProperties, options) => {
619
- const uploads = [];
620
- for (const itemProperty of itemStorageSeedProperties) {
621
- const snapshot = itemProperty.getService().getSnapshot();
622
- const context = 'context' in snapshot ? snapshot.context : null;
623
- if (!context) {
624
- continue;
625
- }
626
- const propertyValue = context.propertyValue;
627
- const refResolvedValue = context.refResolvedValue;
628
- if (!refResolvedValue) {
629
- continue;
630
- }
631
- // propertyValue is the storage seed's seedLocalId; use it for the upload so processRelationOrImageProperty can match
632
- const { seedLocalId } = resolveSeedIdsFromRefString(normalizeRelationPropertyValue(propertyValue) ?? '');
633
- if (!seedLocalId) {
634
- continue;
635
- }
636
- const dataType = itemProperty.propertyDef?.refValueType ??
637
- itemProperty.propertyDef?.dataType ??
638
- 'Image';
639
- if (isDataType(dataType, ModelPropertyDataTypes.Html)) {
640
- if (options?.deferHtmlStorageSeedLocalIds?.includes(seedLocalId)) {
641
- continue;
642
- }
643
- if (options?.onlyHtmlStorageSeedLocalIds?.length &&
644
- !options.onlyHtmlStorageSeedLocalIds.includes(seedLocalId)) {
645
- continue;
646
- }
647
- }
648
- else if (options?.onlyHtmlStorageSeedLocalIds?.length) {
649
- continue;
650
- }
651
- const baseDir = getStorageDirForDataType(dataType);
652
- const filePath = `${baseDir}/${refResolvedValue}`;
653
- const exists = await BaseFileManager.pathExists(filePath);
654
- if (!exists) {
655
- continue;
656
- }
657
- const { bytes: fileContents, contentType } = await readUploadFile(filePath, refResolvedValue);
658
- uploads.push(buildPublishUploadData(fileContents, contentType, {
659
- itemPropertyName: itemProperty.propertyName,
660
- itemPropertyLocalId: itemProperty.localId,
661
- seedLocalId,
662
- versionLocalId: itemProperty.versionLocalId,
663
- }, options));
664
- }
665
- return uploads;
666
- };
667
- async function appendCoPublishedImageUploadData(item, uploads, loads, options) {
668
- const appDb = BaseDb.getAppDb();
669
- if (!appDb || options?.onlyHtmlStorageSeedLocalIds?.length)
670
- return uploads;
671
- const rows = await appDb
672
- .select()
673
- .from(htmlEmbeddedImageCoPublish)
674
- .where(eq(htmlEmbeddedImageCoPublish.parentSeedLocalId, item.seedLocalId));
675
- const seen = new Set(uploads.map((u) => u.seedLocalId));
676
- for (const row of rows) {
677
- if (seen.has(row.imageSeedLocalId))
678
- continue;
679
- const imageItem = await loads.find({ seedLocalId: row.imageSeedLocalId, modelName: 'Image' });
680
- if (!imageItem)
681
- continue;
682
- const st = imageItem.internalProperties['storageTransactionId'] ??
683
- imageItem.allProperties['storageTransactionId'];
684
- const filePath = await findEmbeddedImageFilePath(imageItem.seedLocalId);
685
- const more = [];
686
- if (filePath && st && st.localId && st.versionLocalId) {
687
- const { bytes, contentType } = await readUploadFile(filePath);
688
- more.push(buildPublishUploadData(bytes, contentType, {
689
- itemPropertyName: st.propertyName,
690
- itemPropertyLocalId: st.localId,
691
- seedLocalId: imageItem.seedLocalId,
692
- versionLocalId: st.versionLocalId,
693
- }, options));
694
- }
695
- for (const u of more) {
696
- if (!seen.has(u.seedLocalId)) {
697
- uploads.push(u);
698
- seen.add(u.seedLocalId);
699
- }
700
- }
701
- }
702
- return uploads;
703
- }
704
- const isUsablePath = (filePath) => !!filePath && !filePath.endsWith('undefined') && !filePath.endsWith('null');
705
- /** The newest metadata row of an ItemStorage property, read from the DB (not the live query). */
706
- const getLatestItemStorageRow = async (childProperty) => {
707
- const appDb = BaseDb.getAppDb();
708
- const seedLocalId = childProperty.seedLocalId;
709
- const propertyName = childProperty.storagePropertyName || childProperty.propertyName;
710
- if (!appDb || !seedLocalId || !propertyName)
711
- return undefined;
712
- const where = [eq(metadata.seedLocalId, seedLocalId), eq(metadata.propertyName, propertyName)];
713
- if (childProperty.versionLocalId)
714
- where.push(eq(metadata.versionLocalId, childProperty.versionLocalId));
715
- const rows = await appDb.select().from(metadata).where(and(...where));
716
- return [...rows].sort(compareMetadataRowsLatestFirst)[0];
717
- };
718
- /**
719
- * Local file of one ItemStorage child of a composite upload. Tries, in order: the property's
720
- * localStoragePath (context set by save / hydration / the live query), its newest metadata row's
721
- * refResolvedValue + localStorageDir, then (for a local draft, or no row) the name
722
- * saveItemStorage gives a new file (`<seedUid or seedLocalId><extension>` in the model's storage
723
- * directory). A published or derived row is never swapped for a local file of another name: that
724
- * file would be older content.
725
- *
726
- * `missingLocalEdit` lists the paths tried when nothing exists although the newest row is a saved
727
- * local edit (no attestation uid, not derived from one, refResolvedValue set by saveItemStorage):
728
- * that edit's file should be there. A published or derived row without a file (e.g. content not
729
- * downloaded, or a property the composite never had) is skipped as before.
730
- */
731
- const resolveItemStorageChildFile = async (childProperty) => {
732
- const tried = [];
733
- const tryPath = async (filePath) => {
734
- if (!isUsablePath(filePath) || tried.includes(filePath))
735
- return undefined;
736
- tried.push(filePath);
737
- return (await BaseFileManager.pathExists(filePath)) ? filePath : undefined;
738
- };
739
- const fromContext = await tryPath(childProperty.localStoragePath);
740
- if (fromContext)
741
- return { filePath: fromContext };
742
- const row = await getLatestItemStorageRow(childProperty).catch((error) => {
743
- logger('resolveItemStorageChildFile: metadata lookup failed', error);
744
- return undefined;
745
- });
746
- const propertyDef = childProperty.propertyDef;
747
- const dir = getItemStorageSubdir(propertyDef?.localStorageDir || row?.localStorageDir);
748
- if (row?.refResolvedValue) {
749
- const fromRow = await tryPath(BaseFileManager.getFilesPath(dir, row.refResolvedValue));
750
- if (fromRow)
751
- return { filePath: fromRow };
752
- }
753
- const isLocalDraft = !!row && !row.uid && row.derivedFromUid == null;
754
- const suffix = propertyDef?.filenameSuffix;
755
- const seedIds = !row || isLocalDraft
756
- ? [row?.seedUid, childProperty.seedUid, row?.seedLocalId, childProperty.seedLocalId]
757
- : [];
758
- for (const seedId of seedIds) {
759
- if (!seedId)
760
- continue;
761
- const derived = await tryPath(BaseFileManager.getFilesPath(dir, getItemStorageLocalFileName(seedId, suffix)));
762
- if (derived)
763
- return { filePath: derived };
764
- }
765
- // saveItemStorage sets refResolvedValue on the draft row once the file is written. A draft row
766
- // without one is the empty row createNewItem makes for every model property: nothing to upload.
767
- return isLocalDraft && !!row?.refResolvedValue ? { missingLocalEdit: tried } : {};
768
- };
769
- /**
770
- * True if publish would include at least one Arweave upload (local file / storage seed present).
771
- * Does not create Arweave transactions or hit the network — use for routing (e.g. skip EAS-only)
772
- * when {@link getPublishUploads} would fail early (e.g. gateway unreachable during tx creation).
773
- */
774
- async function storageSeedHasUploadCandidates(itemStorageSeedProperties) {
775
- for (const itemProperty of itemStorageSeedProperties) {
776
- const snapshot = itemProperty.getService().getSnapshot();
777
- const context = 'context' in snapshot ? snapshot.context : null;
778
- if (!context) {
779
- continue;
780
- }
781
- const propertyValue = context.propertyValue;
782
- const refResolvedValue = context.refResolvedValue;
783
- if (!refResolvedValue) {
784
- continue;
785
- }
786
- const { seedLocalId } = resolveSeedIdsFromRefString(normalizeRelationPropertyValue(propertyValue) ?? '');
787
- if (!seedLocalId) {
788
- continue;
789
- }
790
- const dataType = itemProperty.propertyDef?.refValueType ??
791
- itemProperty.propertyDef?.dataType ??
792
- 'Image';
793
- const baseDir = getStorageDirForDataType(dataType);
794
- const filePath = `${baseDir}/${refResolvedValue}`;
795
- if (await BaseFileManager.pathExists(filePath)) {
796
- return true;
797
- }
798
- }
799
- return false;
800
- }
801
- async function uploadPropertyWouldUpload(uploadProperty, relatedItemProperty) {
802
- for (const childProperty of uploadProperty.childProperties) {
803
- // Not strict: a local edit whose file is missing still means "would upload", so the publish
804
- // goes ahead and fails loudly in processUploadPropertyData instead of skipping the upload.
805
- const resolved = await resolveItemStorageChildFile(childProperty);
806
- if (resolved.filePath || resolved.missingLocalEdit) {
807
- return true;
808
- }
809
- }
810
- if (relatedItemProperty && relatedItemProperty.localStoragePath) {
811
- const filePath = relatedItemProperty.localStoragePath;
812
- if (!filePath || filePath.endsWith('undefined')) {
813
- return false;
814
- }
815
- return await BaseFileManager.pathExists(filePath);
816
- }
817
- return false;
818
- }
819
- async function itemOwnUploadCandidates(item, relatedItemProperty, recurseStorageRelations, loads) {
820
- const { itemUploadProperties, itemRelationProperties, itemImageProperties } = await getSegmentedItemProperties(item);
821
- for (const uploadProperty of itemUploadProperties) {
822
- if (await uploadPropertyWouldUpload(uploadProperty, relatedItemProperty)) {
823
- return true;
824
- }
825
- }
826
- if (await storageSeedHasUploadCandidates(itemImageProperties)) {
827
- return true;
828
- }
829
- if (!recurseStorageRelations)
830
- return false;
831
- const storageProperties = new Set(itemImageProperties);
832
- for (const relationProperty of itemRelationProperties) {
833
- if (!storageProperties.has(relationProperty))
834
- continue;
835
- const snapshot = relationProperty.getService().getSnapshot();
836
- const context = 'context' in snapshot ? snapshot.context : null;
837
- if (!context) {
838
- continue;
839
- }
840
- const propertyValue = context.propertyValue;
841
- if (!propertyValue || relationProperty.uid) {
842
- continue;
843
- }
844
- const { seedLocalId, seedUid } = resolveSeedIdsFromRefString(normalizeRelationPropertyValue(propertyValue) ?? '');
845
- if (!seedLocalId && !seedUid) {
846
- throw new Error(`Invalid relation value for ${relationProperty.propertyName}: expected local seed id or 0x uid`);
847
- }
848
- const relatedItem = await loads.find({
849
- seedLocalId,
850
- seedUid,
851
- });
852
- if (!relatedItem) {
853
- // Related seed referenced by attested uid with no local copy: already published, nothing to upload.
854
- if (isPublishedSeedRef(propertyValue))
855
- continue;
856
- throw new Error(`No relatedItem found for ${relationProperty.propertyName}`);
857
- }
858
- if (await itemOwnUploadCandidates(relatedItem, relationProperty, false, loads)) {
859
- return true;
860
- }
861
- }
862
- return false;
863
- }
864
- /** Same walk as getPublishUploads: the item and the draft items its publish carries along. */
865
- async function itemHasPublishUploadCandidates(item, relatedItemProperty) {
866
- return withItemLoads(undefined, async (loads) => {
867
- if (await itemOwnUploadCandidates(item, relatedItemProperty, true, loads))
868
- return true;
869
- const { drafts } = await getPublishDraftGraph(item, { strict: true, loads });
870
- for (const { item: draft, via, viaList } of drafts) {
871
- if (await itemOwnUploadCandidates(draft, viaList ? undefined : via, true, loads))
872
- return true;
873
- }
874
- return false;
875
- });
876
- }
877
- const processUploadPropertyData = async (uploadProperty, uploads, relatedItemProperty, options) => {
878
- const itemProperty = uploadProperty.itemProperty;
879
- const childUploads = [];
880
- for (const childProperty of uploadProperty.childProperties) {
881
- const { filePath, missingLocalEdit } = await resolveItemStorageChildFile(childProperty);
882
- if (!filePath) {
883
- if (missingLocalEdit) {
884
- // Uploading without it would publish a composite that silently lacks this edit.
885
- throw new Error(`Cannot publish ${itemProperty.seedLocalId}: the local file for ${childProperty.propertyName} ` +
886
- `was not found (looked in ${missingLocalEdit.join(', ')})`);
887
- }
888
- continue;
889
- }
890
- childUploads.push({
891
- propertyName: childProperty.propertyName,
892
- localStoragePath: filePath,
893
- });
894
- }
895
- let fileContents;
896
- let fileContentType;
897
- if (!childUploads || childUploads.length === 0) {
898
- if (relatedItemProperty && relatedItemProperty.localStoragePath) {
899
- const filePath = relatedItemProperty.localStoragePath;
900
- if (!filePath || filePath.endsWith('undefined')) {
901
- return uploads;
902
- }
903
- const exists = await BaseFileManager.pathExists(filePath);
904
- if (!exists) {
905
- return uploads;
906
- }
907
- try {
908
- const read = await readUploadFile(filePath);
909
- fileContents = read.bytes;
910
- fileContentType = read.contentType;
911
- }
912
- catch {
913
- const fs = await BaseFileManager.getFs();
914
- fileContents = await toUint8Array(fs.readFileSync(filePath));
915
- fileContentType = resolveUploadMimeType({ fileName: filePath, bytes: fileContents });
916
- }
917
- }
918
- if (!fileContents) {
919
- return uploads;
920
- }
921
- }
922
- if (childUploads.length > 0) {
923
- // Composite of the item's ItemStorage files; see helpers/compositeUpload.ts for the format.
924
- // Children are read as bytes: a binary child is base64-framed instead of decoded as text.
925
- const children = [];
926
- const fs = await BaseFileManager.getFs();
927
- for (const childUpload of childUploads) {
928
- let childUploadContents;
929
- try {
930
- childUploadContents = await fs.promises.readFile(childUpload.localStoragePath);
931
- }
932
- catch {
933
- childUploadContents = fs.readFileSync(childUpload.localStoragePath);
934
- }
935
- children.push({
936
- name: childUpload.propertyName,
937
- bytes: typeof childUploadContents === 'string'
938
- ? new TextEncoder().encode(childUploadContents)
939
- : new Uint8Array(childUploadContents),
940
- });
941
- }
942
- fileContents = encodeCompositeUpload(children);
943
- }
944
- if (!fileContents) {
945
- throw new Error(`No file contents found for ${itemProperty.propertyName}`);
946
- }
947
- const uint8Array = new Uint8Array(fileContents);
948
- let contentType;
949
- if (childUploads.length === 0 && relatedItemProperty?.localStoragePath) {
950
- contentType = fileContentType;
951
- }
952
- else if (childUploads.length > 0) {
953
- contentType = 'application/octet-stream';
954
- }
955
- const itemPropertyLocalId = relatedItemProperty
956
- ? relatedItemProperty.localId
957
- : itemProperty.localId;
958
- const itemPropertyName = relatedItemProperty
959
- ? relatedItemProperty.propertyName
960
- : itemProperty.propertyName;
961
- uploads.push(buildPublishUploadData(uint8Array, contentType, {
962
- itemPropertyName,
963
- itemPropertyLocalId,
964
- seedLocalId: itemProperty.seedLocalId,
965
- versionLocalId: itemProperty.versionLocalId,
966
- }, options));
967
- return uploads;
968
- };
969
- /** No seed uid yet: a related item in this state is published together with the item. */
970
- const isDraftItem = (item) => !item.seedUid || item.seedUid === '0x' + '0'.repeat(64);
971
- /** One item's own uploads: its files, storage seeds, Html-embedded images, and the items its storage relations point at. */
972
- const getItemOwnPublishUploadData = async (item, uploads, relatedItemProperty, options, loads) => {
973
- const { itemUploadProperties, itemRelationProperties, itemImageProperties } = await getSegmentedItemProperties(item);
974
- // Phase 2 of an embedded-image publish: only the deferred Html storage seeds, of this item and of
975
- // the related items published with it (whose Html can embed images too).
976
- const onlyDeferredHtml = !!options?.onlyHtmlStorageSeedLocalIds?.length;
977
- if (onlyDeferredHtml) {
978
- const storageSeedUploads = await getStorageSeedUploadData(itemImageProperties, options);
979
- uploads.push(...storageSeedUploads);
980
- }
981
- else {
982
- for (const uploadProperty of itemUploadProperties) {
983
- uploads = await processUploadPropertyData(uploadProperty, uploads, relatedItemProperty, options);
984
- }
985
- const storageSeedUploads = await getStorageSeedUploadData(itemImageProperties, options);
986
- uploads.push(...storageSeedUploads);
987
- // Images embedded in this item's Html: the published item's, and a related draft's published with it.
988
- if (!relatedItemProperty || isDraftItem(item)) {
989
- uploads = await appendCoPublishedImageUploadData(item, uploads, loads, options);
990
- }
991
- }
992
- if (options?.skipRelationRecursion) {
993
- return uploads;
994
- }
995
- // Relations to Image/File/Html/Json items: their file, read through the relation property.
996
- const storageProperties = new Set(itemImageProperties);
997
- for (const relationProperty of itemRelationProperties) {
998
- if (!storageProperties.has(relationProperty))
999
- continue;
1000
- const snapshot = relationProperty.getService().getSnapshot();
1001
- const context = 'context' in snapshot ? snapshot.context : null;
1002
- if (!context) {
1003
- continue;
1004
- }
1005
- const propertyValue = context.propertyValue;
1006
- if (!propertyValue || relationProperty.uid) {
1007
- continue;
1008
- }
1009
- const { seedLocalId, seedUid } = resolveSeedIdsFromRefString(normalizeRelationPropertyValue(propertyValue) ?? '');
1010
- if (!seedLocalId && !seedUid) {
1011
- throw new Error(`Invalid relation value for ${relationProperty.propertyName}: expected local seed id or 0x uid`);
1012
- }
1013
- const relatedItem = await loads.find({
1014
- seedLocalId,
1015
- seedUid,
1016
- });
1017
- if (!relatedItem) {
1018
- // Related seed referenced by attested uid with no local copy: already published, nothing to upload.
1019
- if (isPublishedSeedRef(propertyValue))
1020
- continue;
1021
- throw new Error(`No relatedItem found for ${relationProperty.propertyName}`);
1022
- }
1023
- uploads = await getItemOwnPublishUploadData(relatedItem, uploads, relationProperty, { ...options, skipRelationRecursion: true }, loads);
1024
- }
1025
- return uploads;
1026
- };
1027
- /**
1028
- * Upload data for a publish of `item`: its own, and that of every draft item the publish carries
1029
- * along (reachable through relation and list properties, see publishDraftGraph.ts). Raw bytes plus
1030
- * Content-SHA-256 / Content-Type / configured tags; no Arweave transaction is created, so this
1031
- * does not touch the network. The bundler path in `@seedprotocol/publish` signs these as
1032
- * DataItems; {@link getPublishUploads} turns them into L1 transactions.
1033
- */
1034
- const getPublishUploadData = async (item, uploads = [], relatedItemProperty, options) => {
1035
- return withItemLoads(undefined, async (loads) => {
1036
- uploads = await getItemOwnPublishUploadData(item, uploads, relatedItemProperty, options, loads);
1037
- if (options?.skipRelationRecursion) {
1038
- return uploads;
1039
- }
1040
- const { drafts } = await getPublishDraftGraph(item, { strict: true, loads });
1041
- for (const { item: draft, via, viaList } of drafts) {
1042
- uploads = await getItemOwnPublishUploadData(draft, uploads, viaList ? undefined : via, options, loads);
1043
- }
1044
- return uploads;
1045
- });
1046
- };
1047
- /**
1048
- * Arweave L1 transactions for a publish of `item`: {@link getPublishUploadData}, each made into an
1049
- * unsigned transaction carrying the same tags.
1050
- */
1051
- const getPublishUploads = async (item, uploads = [], relatedItemProperty, options) => {
1052
- // Every edit made before publishing is in `metadata` and its files first (ADR 0019)
1053
- const { waitForPendingOutboxOps } = await import('./index-njjjo74v.js');
1054
- await waitForPendingOutboxOps();
1055
- const uploadData = await getPublishUploadData(item, [], relatedItemProperty, options);
1056
- // Each createTransaction fetches the price / anchor from the gateway: run a few at once.
1057
- const created = await mapWithConcurrency(uploadData, CREATE_TRANSACTION_CONCURRENCY, async (upload) => ({
1058
- itemPropertyName: upload.itemPropertyName,
1059
- itemPropertyLocalId: upload.itemPropertyLocalId,
1060
- seedLocalId: upload.seedLocalId,
1061
- versionLocalId: upload.versionLocalId,
1062
- transactionToSign: await BaseArweaveClient.createTransaction(upload.data, {
1063
- tags: upload.tags.length ? upload.tags : undefined,
1064
- }),
1065
- }));
1066
- uploads.push(...created);
1067
- return uploads;
1068
- };
1069
-
1070
- var getPublishUploads$1 = /*#__PURE__*/Object.freeze({
1071
- __proto__: null,
1072
- CREATE_TRANSACTION_CONCURRENCY: CREATE_TRANSACTION_CONCURRENCY,
1073
- getPublishUploadData: getPublishUploadData,
1074
- getPublishUploads: getPublishUploads,
1075
- itemHasPublishUploadCandidates: itemHasPublishUploadCandidates,
1076
- resolveItemStorageChildFile: resolveItemStorageChildFile
1077
- });
1078
-
1079
- export { HTML_EMBEDDED_MAX_IMAGES_PER_DOC as H, SEED_PROPERTY_REF_PREFIX as S, HTML_EMBEDDED_MAX_IMAGE_BYTES as a, HTML_EMBEDDED_MAX_TOTAL_BYTES as b, HtmlEmbeddedDataUriLimitError as c, HtmlSeedPropertyRefError as d, clearHtmlEmbeddedImageCoPublishRows as e, findEmbeddedImageFilePath as f, getRelatedDraftsCoPublishedWith as g, extractDataUriImagesFromHtml as h, findSeedPropertyRefsInHtml as i, getPublishUploadData as j, itemHasPublishUploadCandidates as k, replaceSeedPropertyRefsInHtml as l, resolveEffectiveHtmlEmbeddedDataUriPolicy as m, rewriteHtmlEmbeddedImagesOnDisk as n, getPublishUploads$1 as o, prepareHtmlEmbeddedImagesForPublish as p, replaceDataUrisInParsedHtml as r };
1080
- //# sourceMappingURL=getPublishUploads-BBqiowVc.js.map