@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.
- package/dist/{BasePathResolver-B6CKqoKw.js → BasePathResolver-DRT09oVv.js} +36 -2
- package/dist/BasePathResolver-DRT09oVv.js.map +1 -0
- package/dist/ClientManager-DngaZdw6.js +4763 -0
- package/dist/ClientManager-DngaZdw6.js.map +1 -0
- package/dist/{ClientManager-ChcmUL47.js → Item-ZUAmf943.js} +1175 -5903
- package/dist/Item-ZUAmf943.js.map +1 -0
- package/dist/{ModelProperty-D79uV42p.js → ModelProperty-6llK4MTH.js} +326 -109
- package/dist/ModelProperty-6llK4MTH.js.map +1 -0
- package/dist/{Schema-a8uO-hIZ.js → Schema-D-Ud-XYw.js} +164 -885
- package/dist/Schema-D-Ud-XYw.js.map +1 -0
- package/dist/{SchemaValidationService-Y49vqast.js → SchemaValidationService-IoS7JquP.js} +26 -18
- package/dist/SchemaValidationService-IoS7JquP.js.map +1 -0
- package/dist/{backfillMetadataPropertyIds-CBsf7LnU.js → backfillMetadataPropertyIds-BlVeE7w7.js} +11 -6
- package/dist/backfillMetadataPropertyIds-BlVeE7w7.js.map +1 -0
- package/dist/cjs/{ModelProperty-D9FGaGuE.js → ModelProperty-Dv7AQfmQ.js} +297 -89
- package/dist/cjs/ModelProperty-Dv7AQfmQ.js.map +1 -0
- package/dist/cjs/{Schema-BiJIPLEL.js → Schema-BHVp1g-M.js} +136 -868
- package/dist/cjs/Schema-BHVp1g-M.js.map +1 -0
- package/dist/cjs/{SchemaValidationService-DtYs_CNY.js → SchemaValidationService-BSU9knjf.js} +18 -11
- package/dist/cjs/SchemaValidationService-BSU9knjf.js.map +1 -0
- package/dist/cjs/{backfillMetadataPropertyIds-2XaN3b9S.js → backfillMetadataPropertyIds-WIovQ_d8.js} +8 -3
- package/dist/cjs/backfillMetadataPropertyIds-WIovQ_d8.js.map +1 -0
- package/dist/cjs/{eas-CMNppmGE.js → eas-CUYXdr2t.js} +4 -4
- package/dist/cjs/{eas-CMNppmGE.js.map → eas-CUYXdr2t.js.map} +1 -1
- package/dist/cjs/{getItem-B6jEINjW.js → getItem-z1tHu0hu.js} +2 -2
- package/dist/cjs/{getItem-B6jEINjW.js.map → getItem-z1tHu0hu.js.map} +1 -1
- package/dist/cjs/getLatestVersionRow-CcaabxIW.js +59 -0
- package/dist/cjs/getLatestVersionRow-CcaabxIW.js.map +1 -0
- package/dist/cjs/{getPublishPayload-D5DhLGvN.js → getPublishPayload-CEP_e-Kv.js} +283 -138
- package/dist/cjs/getPublishPayload-CEP_e-Kv.js.map +1 -0
- package/dist/cjs/{getPublishUploads-DMhCCKYF.js → getPublishUploads-Ctn5k1k6.js} +65 -19
- package/dist/cjs/getPublishUploads-Ctn5k1k6.js.map +1 -0
- package/dist/cjs/{index-CSNtEnbF.js → index-Cvvt0-5B.js} +2698 -1725
- package/dist/cjs/index-Cvvt0-5B.js.map +1 -0
- package/dist/cjs/{index-DPp9rdRL.js → index-DfGhF1dc.js} +3 -3
- package/dist/cjs/index-DfGhF1dc.js.map +1 -0
- package/dist/cjs/{property-DlKiAWt4.js → property-DbEPQ1m9.js} +40 -35
- package/dist/cjs/property-DbEPQ1m9.js.map +1 -0
- package/dist/cjs/publishDraftGraph-C38gf302.js +403 -0
- package/dist/cjs/publishDraftGraph-C38gf302.js.map +1 -0
- package/dist/cjs/resetAmbiguousLegacyItemData-CfMhRHwK.js +116 -0
- package/dist/cjs/resetAmbiguousLegacyItemData-CfMhRHwK.js.map +1 -0
- package/dist/cjs/resolveModelForSyncedSeed-CNYaLOir.js +49 -0
- package/dist/cjs/resolveModelForSyncedSeed-CNYaLOir.js.map +1 -0
- package/dist/cjs/syncDbWithEas-d1iOdTTI.js +886 -0
- package/dist/cjs/syncDbWithEas-d1iOdTTI.js.map +1 -0
- package/dist/{configurePlatform-CE0Vew17.js → configurePlatform-CZpjyuCo.js} +4 -4
- package/dist/{configurePlatform-CE0Vew17.js.map → configurePlatform-CZpjyuCo.js.map} +1 -1
- package/dist/db/drizzle/0015_add_model_file_id_to_seeds.sql +11 -0
- package/dist/db/drizzle/0016_add_revoked_at_to_metadata.sql +1 -0
- package/dist/db/drizzle/0017_add_revoked_at_to_versions.sql +1 -0
- package/dist/db/drizzle/0018_add_storage_settings_to_properties.sql +53 -0
- package/dist/db/drizzle/0019_add_derived_from_uid_to_metadata.sql +35 -0
- package/dist/db/drizzle/meta/0011_snapshot.json +1182 -0
- package/dist/db/drizzle/meta/0012_snapshot.json +1244 -0
- package/dist/db/drizzle/meta/0013_snapshot.json +63 -1
- package/dist/db/drizzle/meta/0014_snapshot.json +62 -0
- package/dist/db/drizzle/meta/0015_snapshot.json +1338 -0
- package/dist/db/drizzle/meta/0016_snapshot.json +1345 -0
- package/dist/db/drizzle/meta/0017_snapshot.json +1352 -0
- package/dist/db/drizzle/meta/0018_snapshot.json +1373 -0
- package/dist/db/drizzle/meta/0019_snapshot.json +1380 -0
- package/dist/db/drizzle/meta/_journal.json +35 -0
- package/dist/{db-WbrzEf7c.js → db-Lw0KVZmc.js} +546 -106
- package/dist/db-Lw0KVZmc.js.map +1 -0
- package/dist/{eas-CfYCu4IX.js → eas-CQ-Smzk2.js} +7 -7
- package/dist/eas-CQ-Smzk2.js.map +1 -0
- package/dist/errors-CrBxGWah.js +17 -0
- package/dist/errors-CrBxGWah.js.map +1 -0
- package/dist/{getItem-Br-bGNFO.js → getItem-CSfSok9f.js} +8 -10
- package/dist/{getItem-Br-bGNFO.js.map → getItem-CSfSok9f.js.map} +1 -1
- package/dist/getLatestVersionRow-72Atl9vB.js +46 -0
- package/dist/getLatestVersionRow-72Atl9vB.js.map +1 -0
- package/dist/{getPublishPayload-BIrTVUxb.js → getPublishPayload-76_KfB5Y.js} +297 -154
- package/dist/getPublishPayload-76_KfB5Y.js.map +1 -0
- package/dist/{getPublishUploads-C6cDeZdz.js → getPublishUploads-CqgMBD8f.js} +68 -21
- package/dist/getPublishUploads-CqgMBD8f.js.map +1 -0
- package/dist/{index-Djd3667v.js → index-5b3JsS55.js} +2 -2
- package/dist/index-5b3JsS55.js.map +1 -0
- package/dist/{index-ClSv5pTA.js → index-BpgD305l.js} +12 -11
- package/dist/index-BpgD305l.js.map +1 -0
- package/dist/{index-HRHkbVQd.js → index-Y-yYyRBf.js} +530 -196
- package/dist/index-Y-yYyRBf.js.map +1 -0
- package/dist/index.browser-DaTzn79x.js +4139 -0
- package/dist/index.browser-DaTzn79x.js.map +1 -0
- package/dist/{index.node-DBtQkEfz.js → index.node-NYKqFOoe.js} +9 -4
- package/dist/index.node-NYKqFOoe.js.map +1 -0
- package/dist/main.cjs +1 -1
- package/dist/main.js +886 -560
- package/dist/main.js.map +1 -1
- package/dist/node.js +19 -15
- package/dist/node.js.map +1 -1
- package/dist/platform.browser.js +18 -3719
- package/dist/platform.browser.js.map +1 -1
- package/dist/platform.node.js +3 -3
- package/dist/{property-CQjuZ4JW.js → property-ByaiSyUK.js} +53 -48
- package/dist/property-ByaiSyUK.js.map +1 -0
- package/dist/publishDraftGraph-BRm6Pq3Q.js +405 -0
- package/dist/publishDraftGraph-BRm6Pq3Q.js.map +1 -0
- package/dist/resetAmbiguousLegacyItemData-B4dX6ZA1.js +88 -0
- package/dist/resetAmbiguousLegacyItemData-B4dX6ZA1.js.map +1 -0
- package/dist/resolveModelForSyncedSeed-B0tco3zG.js +46 -0
- package/dist/resolveModelForSyncedSeed-B0tco3zG.js.map +1 -0
- package/dist/seedSchema/MetadataSchema.ts +9 -0
- package/dist/seedSchema/ModelSchema.ts +5 -0
- package/dist/seedSchema/SeedSchema.ts +3 -0
- package/dist/seedSchema/VersionSchema.ts +5 -0
- package/dist/src/Item/Item.d.ts +21 -0
- package/dist/src/Item/Item.d.ts.map +1 -1
- package/dist/src/Item/service/actors/loadOrCreateItem.d.ts.map +1 -1
- package/dist/src/Item/service/actors/waitForDb.d.ts.map +1 -1
- package/dist/src/Item/service/itemMachineSingle.d.ts +3 -29
- package/dist/src/Item/service/itemMachineSingle.d.ts.map +1 -1
- package/dist/src/ItemProperty/ItemProperty.d.ts +13 -4
- package/dist/src/ItemProperty/ItemProperty.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/hydrateFromDb.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/loadOrCreateProperty.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/saveValueToDb/saveFile.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/saveValueToDb/saveHtml.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/saveValueToDb/saveImage.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/propertyMachine.d.ts +4 -9
- package/dist/src/ItemProperty/service/propertyMachine.d.ts.map +1 -1
- package/dist/src/Model/Model.d.ts +52 -2
- package/dist/src/Model/Model.d.ts.map +1 -1
- package/dist/src/Model/errors.d.ts +10 -0
- package/dist/src/Model/errors.d.ts.map +1 -0
- package/dist/src/Model/service/actors/createModelProperties.d.ts.map +1 -1
- package/dist/src/Model/service/actors/loadOrCreateModel.d.ts.map +1 -1
- package/dist/src/Model/service/actors/validateModel.d.ts.map +1 -1
- package/dist/src/Model/service/modelMachine.d.ts +0 -8
- package/dist/src/Model/service/modelMachine.d.ts.map +1 -1
- package/dist/src/ModelProperty/ModelProperty.d.ts +42 -2
- package/dist/src/ModelProperty/ModelProperty.d.ts.map +1 -1
- package/dist/src/ModelProperty/service/actors/compareAndMarkDraft.d.ts.map +1 -1
- package/dist/src/ModelProperty/service/actors/saveToSchema.d.ts.map +1 -1
- package/dist/src/ModelProperty/service/actors/validateProperty.d.ts.map +1 -1
- package/dist/src/ModelProperty/service/modelPropertyMachine.d.ts +2 -9
- package/dist/src/ModelProperty/service/modelPropertyMachine.d.ts.map +1 -1
- package/dist/src/Schema/Schema.d.ts +8 -2
- package/dist/src/Schema/Schema.d.ts.map +1 -1
- package/dist/src/Schema/service/actors/checkExistingSchema.d.ts.map +1 -1
- package/dist/src/Schema/service/actors/createModelInstances.d.ts.map +1 -1
- package/dist/src/Schema/service/actors/loadOrCreateSchema.d.ts.map +1 -1
- package/dist/src/Schema/service/schemaMachine.d.ts +1 -217
- package/dist/src/Schema/service/schemaMachine.d.ts.map +1 -1
- package/dist/src/Schema/service/validation/SchemaValidationService.d.ts.map +1 -1
- package/dist/src/browser/db/Db.d.ts +3 -0
- package/dist/src/browser/db/Db.d.ts.map +1 -1
- package/dist/src/browser/db/drizzleFiles.d.ts +7 -2
- package/dist/src/browser/db/drizzleFiles.d.ts.map +1 -1
- package/dist/src/browser/db/embeddedMigrations.d.ts +11 -2
- package/dist/src/browser/db/embeddedMigrations.d.ts.map +1 -1
- package/dist/src/browser/db/sqliteBusyRetry.d.ts +14 -0
- package/dist/src/browser/db/sqliteBusyRetry.d.ts.map +1 -0
- package/dist/src/browser/helpers/FileManager.d.ts +1 -0
- package/dist/src/browser/helpers/FileManager.d.ts.map +1 -1
- package/dist/src/browser/helpers/QueryClient.d.ts +1 -0
- package/dist/src/browser/helpers/QueryClient.d.ts.map +1 -1
- package/dist/src/browser/helpers/opfsErrors.d.ts +2 -0
- package/dist/src/browser/helpers/opfsErrors.d.ts.map +1 -0
- package/dist/src/browser/helpers/tolerantWebAccess.d.ts +47 -0
- package/dist/src/browser/helpers/tolerantWebAccess.d.ts.map +1 -0
- package/dist/src/browser/workers/FileDownloader.d.ts.map +1 -1
- package/dist/src/browser/workers/ImageResizer.d.ts.map +1 -1
- package/dist/src/browser/workers/filesDownload.d.ts.map +1 -1
- package/dist/src/browser/workers/imageResize.d.ts.map +1 -1
- package/dist/src/client/ClientManager.d.ts.map +1 -1
- package/dist/src/client/actors/addModelsToDb.d.ts +14 -0
- package/dist/src/client/actors/addModelsToDb.d.ts.map +1 -1
- package/dist/src/client/actors/platformClassesInit.d.ts.map +1 -1
- package/dist/src/client/actors/processSchemaFiles.d.ts.map +1 -1
- package/dist/src/client/actors/saveConfig.d.ts +11 -0
- package/dist/src/client/actors/saveConfig.d.ts.map +1 -1
- package/dist/src/client/constants.d.ts +0 -8
- package/dist/src/client/constants.d.ts.map +1 -1
- package/dist/src/db/backfillMetadataPropertyIds.d.ts.map +1 -1
- package/dist/src/db/configs/{dev.schema.config.d.ts → migrations.config.d.ts} +1 -1
- package/dist/src/db/configs/migrations.config.d.ts.map +1 -0
- package/dist/src/db/read/batchLatestPublishedVersionBySeedLocalIds.d.ts +1 -1
- package/dist/src/db/read/batchLatestPublishedVersionBySeedLocalIds.d.ts.map +1 -1
- package/dist/src/db/read/getItemData.d.ts.map +1 -1
- package/dist/src/db/read/getItemProperties.d.ts.map +1 -1
- package/dist/src/db/read/getItems.d.ts +7 -2
- package/dist/src/db/read/getItems.d.ts.map +1 -1
- package/dist/src/db/read/getLatestPublishedVersionRow.d.ts +2 -1
- package/dist/src/db/read/getLatestPublishedVersionRow.d.ts.map +1 -1
- package/dist/src/db/read/getLatestVersionRow.d.ts +13 -0
- package/dist/src/db/read/getLatestVersionRow.d.ts.map +1 -0
- package/dist/src/db/read/getModelSchemas.d.ts.map +1 -1
- package/dist/src/db/read/getPropertyData.d.ts.map +1 -1
- package/dist/src/db/read/getPublishPayload.d.ts +18 -11
- package/dist/src/db/read/getPublishPayload.d.ts.map +1 -1
- package/dist/src/db/read/getPublishPendingDiff.d.ts +2 -1
- package/dist/src/db/read/getPublishPendingDiff.d.ts.map +1 -1
- package/dist/src/db/read/getPublishUploads.d.ts +5 -0
- package/dist/src/db/read/getPublishUploads.d.ts.map +1 -1
- package/dist/src/db/read/getSchemaUidForModel.d.ts.map +1 -1
- package/dist/src/db/read/getSeedPublishState.d.ts +8 -2
- package/dist/src/db/read/getSeedPublishState.d.ts.map +1 -1
- package/dist/src/db/read/isSeedRevoked.d.ts +7 -0
- package/dist/src/db/read/isSeedRevoked.d.ts.map +1 -0
- package/dist/src/db/read/publishDraftGraph.d.ts +57 -0
- package/dist/src/db/read/publishDraftGraph.d.ts.map +1 -0
- package/dist/src/db/read/publishErrors.d.ts +37 -0
- package/dist/src/db/read/publishErrors.d.ts.map +1 -0
- package/dist/src/db/read/resolveModelForSyncedSeed.d.ts +39 -0
- package/dist/src/db/read/resolveModelForSyncedSeed.d.ts.map +1 -0
- package/dist/src/db/read/resolveModelRecord.d.ts +69 -0
- package/dist/src/db/read/resolveModelRecord.d.ts.map +1 -0
- package/dist/src/db/read/resolveRelatedSeedRef.d.ts +34 -0
- package/dist/src/db/read/resolveRelatedSeedRef.d.ts.map +1 -0
- package/dist/src/db/read/subqueries/liveVersion.d.ts +12 -0
- package/dist/src/db/read/subqueries/liveVersion.d.ts.map +1 -0
- package/dist/src/db/read/subqueries/metadataLatest.d.ts +4 -0
- package/dist/src/db/read/subqueries/metadataLatest.d.ts.map +1 -1
- package/dist/src/db/read/subqueries/versionData.d.ts +7 -2
- package/dist/src/db/read/subqueries/versionData.d.ts.map +1 -1
- package/dist/src/db/read/summarizePublishWork.d.ts +10 -2
- package/dist/src/db/read/summarizePublishWork.d.ts.map +1 -1
- package/dist/src/db/resetAmbiguousLegacyItemData.d.ts +17 -0
- package/dist/src/db/resetAmbiguousLegacyItemData.d.ts.map +1 -0
- package/dist/src/db/sqlParamBatches.d.ts +27 -0
- package/dist/src/db/sqlParamBatches.d.ts.map +1 -0
- package/dist/src/db/write/addExcludedTransactions.d.ts +7 -0
- package/dist/src/db/write/addExcludedTransactions.d.ts.map +1 -0
- package/dist/src/db/write/applyPropertyAttestationUidsFromPublish.d.ts +6 -0
- package/dist/src/db/write/applyPropertyAttestationUidsFromPublish.d.ts.map +1 -1
- package/dist/src/db/write/createMetadata.d.ts +2 -0
- package/dist/src/db/write/createMetadata.d.ts.map +1 -1
- package/dist/src/db/write/createNewItem.d.ts +3 -1
- package/dist/src/db/write/createNewItem.d.ts.map +1 -1
- package/dist/src/db/write/createSeed.d.ts +2 -1
- package/dist/src/db/write/createSeed.d.ts.map +1 -1
- package/dist/src/db/write/createSeeds.d.ts +1 -1
- package/dist/src/db/write/createSeeds.d.ts.map +1 -1
- package/dist/src/db/write/linkModelToSchema.d.ts +12 -0
- package/dist/src/db/write/linkModelToSchema.d.ts.map +1 -0
- package/dist/src/db/write/updateItemPropertyValue.d.ts.map +1 -1
- package/dist/src/db/write/updateMetadata.d.ts.map +1 -1
- package/dist/src/db/write/updateSeedRevokedAt.d.ts +11 -1
- package/dist/src/db/write/updateSeedRevokedAt.d.ts.map +1 -1
- package/dist/src/db/write/updateSeedUid.d.ts.map +1 -1
- package/dist/src/db/write/updateVersionUid.d.ts +2 -1
- package/dist/src/db/write/updateVersionUid.d.ts.map +1 -1
- package/dist/src/events/files/download.d.ts.map +1 -1
- package/dist/src/events/item/easSyncManager.d.ts +2 -0
- package/dist/src/events/item/easSyncManager.d.ts.map +1 -1
- package/dist/src/events/item/index.d.ts.map +1 -1
- package/dist/src/events/item/syncDbWithEas.d.ts +16 -0
- package/dist/src/events/item/syncDbWithEas.d.ts.map +1 -1
- package/dist/src/helpers/FileManager/BaseFileManager.d.ts +1 -0
- package/dist/src/helpers/FileManager/BaseFileManager.d.ts.map +1 -1
- package/dist/src/helpers/FileManager/IFileManager.d.ts +5 -0
- package/dist/src/helpers/FileManager/IFileManager.d.ts.map +1 -1
- package/dist/src/helpers/FileManager/errors.d.ts +10 -0
- package/dist/src/helpers/FileManager/errors.d.ts.map +1 -0
- package/dist/src/helpers/compareMetadataRowsLatestFirst.d.ts +21 -3
- package/dist/src/helpers/compareMetadataRowsLatestFirst.d.ts.map +1 -1
- package/dist/src/helpers/constants.d.ts +9 -0
- package/dist/src/helpers/constants.d.ts.map +1 -1
- package/dist/src/helpers/crypto.d.ts +5 -0
- package/dist/src/helpers/crypto.d.ts.map +1 -1
- package/dist/src/helpers/db.d.ts +25 -5
- package/dist/src/helpers/db.d.ts.map +1 -1
- package/dist/src/helpers/easPropertyCanonical.d.ts +1 -1
- package/dist/src/helpers/easPropertyCanonical.d.ts.map +1 -1
- package/dist/src/helpers/entity/entityCommon.d.ts +10 -0
- package/dist/src/helpers/entity/entityCommon.d.ts.map +1 -1
- package/dist/src/helpers/entity/entityDestroy.d.ts +1 -1
- package/dist/src/helpers/entity/entityDestroy.d.ts.map +1 -1
- package/dist/src/helpers/entity/entityLiveQuery.d.ts +5 -0
- package/dist/src/helpers/entity/entityLiveQuery.d.ts.map +1 -1
- package/dist/src/helpers/entity/evictionEpoch.d.ts +18 -0
- package/dist/src/helpers/entity/evictionEpoch.d.ts.map +1 -0
- package/dist/src/helpers/file/fetchAll/actors.d.ts.map +1 -1
- package/dist/src/helpers/getSegmentedItemProperties.d.ts.map +1 -1
- package/dist/src/helpers/htmlEmbeddedDataUriPublish.d.ts +31 -3
- package/dist/src/helpers/htmlEmbeddedDataUriPublish.d.ts.map +1 -1
- package/dist/src/helpers/isPublishedMetadataRow.d.ts +10 -0
- package/dist/src/helpers/isPublishedMetadataRow.d.ts.map +1 -0
- package/dist/src/helpers/ownership.d.ts.map +1 -1
- package/dist/src/helpers/property.d.ts +6 -1
- package/dist/src/helpers/property.d.ts.map +1 -1
- package/dist/src/helpers/schema.d.ts +14 -4
- package/dist/src/helpers/schema.d.ts.map +1 -1
- package/dist/src/helpers/tabCoordinator.d.ts +45 -0
- package/dist/src/helpers/tabCoordinator.d.ts.map +1 -0
- package/dist/src/helpers/tabEvents.d.ts +27 -0
- package/dist/src/helpers/tabEvents.d.ts.map +1 -0
- package/dist/src/helpers/tabLocks.d.ts +28 -0
- package/dist/src/helpers/tabLocks.d.ts.map +1 -0
- package/dist/src/helpers/updateSchema.d.ts.map +1 -1
- package/dist/src/imports/json.d.ts.map +1 -1
- package/dist/src/imports/markdown.d.ts.map +1 -1
- package/dist/src/index.d.ts +13 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/node/db/Db.d.ts.map +1 -1
- package/dist/src/node/helpers/FileManager.d.ts +2 -0
- package/dist/src/node/helpers/FileManager.d.ts.map +1 -1
- package/dist/src/query/createLocalQueryDataSource.d.ts +4 -0
- package/dist/src/query/createLocalQueryDataSource.d.ts.map +1 -1
- package/dist/src/seedSchema/MetadataSchema.d.ts +36 -0
- package/dist/src/seedSchema/MetadataSchema.d.ts.map +1 -1
- package/dist/src/seedSchema/ModelSchema.d.ts +57 -0
- package/dist/src/seedSchema/ModelSchema.d.ts.map +1 -1
- package/dist/src/seedSchema/SeedSchema.d.ts +19 -0
- package/dist/src/seedSchema/SeedSchema.d.ts.map +1 -1
- package/dist/src/seedSchema/VersionSchema.d.ts +17 -0
- package/dist/src/seedSchema/VersionSchema.d.ts.map +1 -1
- package/dist/src/services/write/actors/validateEntity.d.ts.map +1 -1
- package/dist/src/services/write/actors/writeToDatabase.d.ts +5 -0
- package/dist/src/services/write/actors/writeToDatabase.d.ts.map +1 -1
- package/dist/src/services/write/writeProcessMachine.d.ts.map +1 -1
- package/dist/src/stores/eas.d.ts +1 -1
- package/dist/src/stores/eas.d.ts.map +1 -1
- package/dist/src/types/index.d.ts +7 -0
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/item.d.ts +19 -11
- package/dist/src/types/item.d.ts.map +1 -1
- package/dist/src/types/property.d.ts +3 -2
- package/dist/src/types/property.d.ts.map +1 -1
- package/dist/syncDbWithEas-BPap9Sru.js +855 -0
- package/dist/syncDbWithEas-BPap9Sru.js.map +1 -0
- package/dist/{index-280bL-n4.js → tabEvents-C6NXS6Jl.js} +231 -68
- package/dist/tabEvents-C6NXS6Jl.js.map +1 -0
- package/dist/tolerantWebAccess-NBQ1NB4i.js +160 -0
- package/dist/tolerantWebAccess-NBQ1NB4i.js.map +1 -0
- package/dist/updateSeedRevokedAt-CYwgVNlM.js +32 -0
- package/dist/updateSeedRevokedAt-CYwgVNlM.js.map +1 -0
- package/package.json +8 -10
- package/dist/BasePathResolver-B6CKqoKw.js.map +0 -1
- package/dist/ClientManager-ChcmUL47.js.map +0 -1
- package/dist/ModelProperty-D79uV42p.js.map +0 -1
- package/dist/Schema-a8uO-hIZ.js.map +0 -1
- package/dist/SchemaValidationService-Y49vqast.js.map +0 -1
- package/dist/backfillMetadataPropertyIds-CBsf7LnU.js.map +0 -1
- package/dist/cjs/ModelProperty-D9FGaGuE.js.map +0 -1
- package/dist/cjs/Schema-BiJIPLEL.js.map +0 -1
- package/dist/cjs/SchemaValidationService-DtYs_CNY.js.map +0 -1
- package/dist/cjs/backfillMetadataPropertyIds-2XaN3b9S.js.map +0 -1
- package/dist/cjs/getPublishPayload-D5DhLGvN.js.map +0 -1
- package/dist/cjs/getPublishUploads-DMhCCKYF.js.map +0 -1
- package/dist/cjs/getSegmentedItemProperties-CU8rtBAo.js +0 -148
- package/dist/cjs/getSegmentedItemProperties-CU8rtBAo.js.map +0 -1
- package/dist/cjs/index-CSNtEnbF.js.map +0 -1
- package/dist/cjs/index-DPp9rdRL.js.map +0 -1
- package/dist/cjs/property-DlKiAWt4.js.map +0 -1
- package/dist/cjs/syncDbWithEas-C6n34o_Q.js +0 -606
- package/dist/cjs/syncDbWithEas-C6n34o_Q.js.map +0 -1
- package/dist/db-WbrzEf7c.js.map +0 -1
- package/dist/eas-CfYCu4IX.js.map +0 -1
- package/dist/getPublishPayload-BIrTVUxb.js.map +0 -1
- package/dist/getPublishUploads-C6cDeZdz.js.map +0 -1
- package/dist/getSegmentedItemProperties-BmKE71vU.js +0 -148
- package/dist/getSegmentedItemProperties-BmKE71vU.js.map +0 -1
- package/dist/index-280bL-n4.js.map +0 -1
- package/dist/index-ClSv5pTA.js.map +0 -1
- package/dist/index-Djd3667v.js.map +0 -1
- package/dist/index-HRHkbVQd.js.map +0 -1
- package/dist/index.node-DBtQkEfz.js.map +0 -1
- package/dist/property-CQjuZ4JW.js.map +0 -1
- package/dist/src/Item/service/actors/fetchDataFromEas.d.ts +0 -4
- package/dist/src/Item/service/actors/fetchDataFromEas.d.ts.map +0 -1
- package/dist/src/Item/service/actors/hydrateExistingItem.d.ts +0 -4
- package/dist/src/Item/service/actors/hydrateExistingItem.d.ts.map +0 -1
- package/dist/src/Item/service/actors/hydrateNewItem.d.ts +0 -4
- package/dist/src/Item/service/actors/hydrateNewItem.d.ts.map +0 -1
- package/dist/src/Item/service/actors/initialize.d.ts +0 -4
- package/dist/src/Item/service/actors/initialize.d.ts.map +0 -1
- package/dist/src/Item/service/actors/reload.d.ts +0 -5
- package/dist/src/Item/service/actors/reload.d.ts.map +0 -1
- package/dist/src/Item/service/actors/saveDataToDb.d.ts +0 -4
- package/dist/src/Item/service/actors/saveDataToDb.d.ts.map +0 -1
- package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.d.ts +0 -5
- package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.d.ts.map +0 -1
- package/dist/src/Schema/service/addModelsMachine.d.ts +0 -123
- package/dist/src/Schema/service/addModelsMachine.d.ts.map +0 -1
- package/dist/src/browser/helpers/index.d.ts +0 -4
- package/dist/src/browser/helpers/index.d.ts.map +0 -1
- package/dist/src/db/configs/dev.schema.config.d.ts.map +0 -1
- package/dist/src/helpers/file/download/actors.d.ts +0 -17
- package/dist/src/helpers/file/download/actors.d.ts.map +0 -1
- package/dist/src/helpers/file/download/index.d.ts +0 -70
- package/dist/src/helpers/file/download/index.d.ts.map +0 -1
- package/dist/src/services/publish/actors/createPublishAttempt.d.ts +0 -4
- package/dist/src/services/publish/actors/createPublishAttempt.d.ts.map +0 -1
- package/dist/src/services/publish/actors/preparePublishRequestData.d.ts +0 -4
- package/dist/src/services/publish/actors/preparePublishRequestData.d.ts.map +0 -1
- package/dist/src/services/publish/actors/upload.d.ts +0 -4
- package/dist/src/services/publish/actors/upload.d.ts.map +0 -1
- package/dist/src/services/publish/actors/validateItemData.d.ts +0 -4
- package/dist/src/services/publish/actors/validateItemData.d.ts.map +0 -1
- package/dist/src/services/publish/publishMachine.d.ts +0 -32
- package/dist/src/services/publish/publishMachine.d.ts.map +0 -1
- package/dist/syncDbWithEas-CuARXfyN.js +0 -598
- package/dist/syncDbWithEas-CuARXfyN.js.map +0 -1
- package/dist/updateSeedRevokedAt-CBcLfHWs.js +0 -22
- package/dist/updateSeedRevokedAt-CBcLfHWs.js.map +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var main_cjs = require('./index-
|
|
3
|
+
var main_cjs = require('./index-Cvvt0-5B.js');
|
|
4
4
|
var easSdk = require('@ethereum-attestation-service/eas-sdk');
|
|
5
5
|
var casing = require('drizzle-orm/casing');
|
|
6
6
|
var eas = require('@seedprotocol/eas');
|
|
7
|
-
var
|
|
8
|
-
var property = require('./property-
|
|
7
|
+
var publishDraftGraph = require('./publishDraftGraph-C38gf302.js');
|
|
8
|
+
var property = require('./property-DbEPQ1m9.js');
|
|
9
9
|
var lodashEs = require('lodash-es');
|
|
10
10
|
var drizzleOrm = require('drizzle-orm');
|
|
11
11
|
var debug = require('debug');
|
|
@@ -47,11 +47,88 @@ function encodeBytes32String(value) {
|
|
|
47
47
|
return `0x${hex.padEnd(64, '0')}`;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
/** Error thrown when publish validation fails. Includes all validation errors for user to fix. */
|
|
51
|
+
class PublishValidationFailedError extends Error {
|
|
52
|
+
constructor(message, validationErrors) {
|
|
53
|
+
super(message);
|
|
54
|
+
this.validationErrors = validationErrors;
|
|
55
|
+
this.name = 'PublishValidationFailedError';
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/** Validation error code for a relation, list member or image/file ref to an unpublished seed. */
|
|
59
|
+
const RELATED_ITEM_UNPUBLISHED_CODE = 'related_item_unpublished';
|
|
60
|
+
const describeUnpublishedRelatedItem = (r) => `${r.propertyName} -> ${r.modelName} ${r.seedLocalId} (seed ${r.seedUid})`;
|
|
61
|
+
/**
|
|
62
|
+
* Thrown before anything is uploaded or attested when the item references items whose seed was
|
|
63
|
+
* unpublished: the parent would attest a revoked seed uid. Republish those items (which gives
|
|
64
|
+
* them a new seed uid) or remove the references, then publish again.
|
|
65
|
+
* See docs/ATTESTATION_REVOCATION.md ("Republishing").
|
|
66
|
+
*
|
|
67
|
+
* A PublishValidationFailedError, so validateItemForPublish and the publish package's checking
|
|
68
|
+
* step report it as validation errors (code `related_item_unpublished`, one per reference).
|
|
69
|
+
*/
|
|
70
|
+
class RelatedItemUnpublishedError extends PublishValidationFailedError {
|
|
71
|
+
constructor(unpublishedRelatedItems, otherValidationErrors = []) {
|
|
72
|
+
const lines = unpublishedRelatedItems.map(describeUnpublishedRelatedItem);
|
|
73
|
+
const message = `Cannot publish: it references ${lines.length} unpublished item${lines.length === 1 ? '' : 's'} ` +
|
|
74
|
+
`(their seed attestations were revoked). Republish them or remove the references, then publish again:\n` +
|
|
75
|
+
lines.join('\n');
|
|
76
|
+
super(message, [
|
|
77
|
+
...unpublishedRelatedItems.map((r) => ({
|
|
78
|
+
field: r.propertyName,
|
|
79
|
+
message: `${r.propertyName} references unpublished ${r.modelName} ${r.seedLocalId} (seed ${r.seedUid}). ` +
|
|
80
|
+
`Republish it or remove the reference.`,
|
|
81
|
+
code: RELATED_ITEM_UNPUBLISHED_CODE,
|
|
82
|
+
})),
|
|
83
|
+
...otherValidationErrors,
|
|
84
|
+
]);
|
|
85
|
+
this.name = 'RelatedItemUnpublishedError';
|
|
86
|
+
this.unpublishedRelatedItems = unpublishedRelatedItems;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
52
90
|
debug('seedSdk:db:getPublishPayload');
|
|
53
91
|
/** Case-insensitive dataType match (schema JSON may use "text" vs "Text"). */
|
|
54
92
|
const matchesDataType = (actual, expected) => main_cjs.normalizeDataType(actual) === expected;
|
|
93
|
+
/** True (and the property is deferred) when `targetSeedLocalId` is an item still in progress. */
|
|
94
|
+
function deferIfBackEdge(ctx, property, targetSeedLocalIds) {
|
|
95
|
+
if (!targetSeedLocalIds.some((id) => !!id && ctx.newSeedsInProgress?.has(id)))
|
|
96
|
+
return false;
|
|
97
|
+
ctx.deferredProperties ?? (ctx.deferredProperties = new Set());
|
|
98
|
+
ctx.deferredProperties.add(property);
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Checks the seed a relation/list/image ref points at. A revoked (unpublished) seed is recorded in
|
|
103
|
+
* `ctx.unpublishedRelatedItems`; a live published one maps the ref to its current uid. Returns
|
|
104
|
+
* true when the caller must not walk into the related item (it is published, live or revoked).
|
|
105
|
+
*/
|
|
106
|
+
function noteRelatedSeed(ctx, ref, row, propertyName, modelName) {
|
|
107
|
+
if (publishDraftGraph.isUnpublishedSeed(row)) {
|
|
108
|
+
ctx.unpublishedRelatedItems ?? (ctx.unpublishedRelatedItems = []);
|
|
109
|
+
if (!ctx.unpublishedRelatedItems.some((r) => r.propertyName === propertyName && r.seedLocalId === row.seedLocalId)) {
|
|
110
|
+
ctx.unpublishedRelatedItems.push({
|
|
111
|
+
propertyName,
|
|
112
|
+
modelName: modelName ?? row.type ?? 'unknown',
|
|
113
|
+
seedLocalId: row.seedLocalId,
|
|
114
|
+
seedUid: row.seedUid,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
if (publishDraftGraph.isLivePublishedSeed(row)) {
|
|
120
|
+
if (ref !== row.seedUid) {
|
|
121
|
+
ctx.relatedRefUids ?? (ctx.relatedRefUids = new Map());
|
|
122
|
+
ctx.relatedRefUids.set(ref, row.seedUid);
|
|
123
|
+
}
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
/** Current uid for a ref noted by noteRelatedSeed, else the ref itself. */
|
|
129
|
+
function currentRelatedRef(ctx, ref) {
|
|
130
|
+
return ctx.relatedRefUids?.get(ref.trim()) ?? ref;
|
|
131
|
+
}
|
|
55
132
|
function addValidationError(ctx, message, field, code = 'publish_validation') {
|
|
56
133
|
// A property can be validated on more than one path (List of Relation: list + basic); report once.
|
|
57
134
|
if (ctx.errors.some((e) => e.message === message && e.field === (field ?? '')))
|
|
@@ -133,7 +210,7 @@ async function resolveVersionUid(seedLocalId, seedUid) {
|
|
|
133
210
|
if (published?.uid)
|
|
134
211
|
return published.uid;
|
|
135
212
|
try {
|
|
136
|
-
const { getItemVersionsFromEas } = await Promise.resolve().then(function () { return require('./eas-
|
|
213
|
+
const { getItemVersionsFromEas } = await Promise.resolve().then(function () { return require('./eas-CUYXdr2t.js'); });
|
|
137
214
|
const attestations = await getItemVersionsFromEas({ seedUids: [seedUid] });
|
|
138
215
|
const latest = attestations?.[0];
|
|
139
216
|
if (latest?.id)
|
|
@@ -193,15 +270,17 @@ const ensurePropertyDefs = async (targetItem) => {
|
|
|
193
270
|
(matchesDataType(p.propertyDef?.dataType, main_cjs.ModelPropertyDataTypes.Relation) &&
|
|
194
271
|
p.propertyDef?.required === undefined)));
|
|
195
272
|
let schema;
|
|
273
|
+
// Model names are only unique per schema: resolve definitions from this item's own model.
|
|
274
|
+
const targetScope = await main_cjs.getItemModelScope(targetItem);
|
|
196
275
|
for (const itemProperty of targetItem.properties) {
|
|
197
276
|
if (!itemProperty.propertyDef && targetItem.modelName) {
|
|
198
|
-
schema = await property.getPropertySchema(targetItem.modelName, itemProperty.propertyName);
|
|
277
|
+
schema = await property.getPropertySchema(targetItem.modelName, itemProperty.propertyName, targetScope);
|
|
199
278
|
if (!schema) {
|
|
200
279
|
try {
|
|
201
|
-
const { Model } = await Promise.resolve().then(function () { return require('./index-
|
|
280
|
+
const { Model } = await Promise.resolve().then(function () { return require('./index-Cvvt0-5B.js'); }).then(function (n) { return n.Model$1; });
|
|
202
281
|
const normalizedModelName = lodashEs.upperFirst(lodashEs.camelCase(targetItem.modelName));
|
|
203
|
-
let model = Model.
|
|
204
|
-
if (!model?.properties?.length) {
|
|
282
|
+
let model = Model.resolve(normalizedModelName, targetScope);
|
|
283
|
+
if (!model?.properties?.length && !targetScope.modelFileId) {
|
|
205
284
|
model = Model.findByModelType(casing.toSnakeCase(targetItem.modelName));
|
|
206
285
|
}
|
|
207
286
|
const modelFound = !!model;
|
|
@@ -222,11 +301,8 @@ const ensurePropertyDefs = async (targetItem) => {
|
|
|
222
301
|
if (db) {
|
|
223
302
|
try {
|
|
224
303
|
const normalizedModelName = lodashEs.upperFirst(lodashEs.camelCase(targetItem.modelName));
|
|
225
|
-
const
|
|
226
|
-
|
|
227
|
-
.from(main_cjs.models)
|
|
228
|
-
.where(drizzleOrm.eq(main_cjs.models.name, normalizedModelName))
|
|
229
|
-
.limit(1);
|
|
304
|
+
const modelRecord = await main_cjs.resolveModelRecord(normalizedModelName, targetScope, db);
|
|
305
|
+
const modelRecords = modelRecord ? [modelRecord] : [];
|
|
230
306
|
if (modelRecords.length > 0 && modelRecords[0].id) {
|
|
231
307
|
const propertyRecords = await db
|
|
232
308
|
.select()
|
|
@@ -277,6 +353,9 @@ const processBasicProperties = async (itemBasicProperties, itemPublishData, ctx,
|
|
|
277
353
|
if (main_cjs.INTERNAL_PROPERTY_NAMES.includes(basicProperty.propertyName)) {
|
|
278
354
|
continue;
|
|
279
355
|
}
|
|
356
|
+
if (ctx.deferredProperties?.has(basicProperty)) {
|
|
357
|
+
continue;
|
|
358
|
+
}
|
|
280
359
|
const snapshot = basicProperty.getService().getSnapshot();
|
|
281
360
|
const context = 'context' in snapshot ? snapshot.context : null;
|
|
282
361
|
const propertyDef = basicProperty.propertyDef ?? (context ? context.propertyRecordSchema : undefined);
|
|
@@ -357,13 +436,17 @@ const processBasicProperties = async (itemBasicProperties, itemPublishData, ctx,
|
|
|
357
436
|
.map((s) => s.trim())
|
|
358
437
|
.filter(Boolean);
|
|
359
438
|
}
|
|
439
|
+
// A ref to a published related item attests that item's current uid.
|
|
440
|
+
if (typeof value === 'string' && (isRelation || isFileImageHtml || isJsonStorage)) {
|
|
441
|
+
value = currentRelatedRef(ctx, value);
|
|
442
|
+
}
|
|
360
443
|
if (schemaDef.startsWith('bytes32[]') && !Array.isArray(value)) {
|
|
361
444
|
addValidationError(ctx, `Invalid value for property: ${basicProperty.propertyName}. Expected an array of bytes32, got ${value}.`, basicProperty.propertyName);
|
|
362
445
|
continue;
|
|
363
446
|
}
|
|
364
447
|
// Validate against property validation rules (enum, pattern, minLength, maxLength) before encoding
|
|
365
448
|
if (propertyDef?.validation) {
|
|
366
|
-
const { SchemaValidationService } = await Promise.resolve().then(function () { return require('./SchemaValidationService-
|
|
449
|
+
const { SchemaValidationService } = await Promise.resolve().then(function () { return require('./SchemaValidationService-BSU9knjf.js'); });
|
|
367
450
|
const validationService = new SchemaValidationService();
|
|
368
451
|
const validationResult = validationService.validatePropertyValue(value, main_cjs.normalizeDataType(propertyDef.dataType), propertyDef.validation, propertyDef.refValueType
|
|
369
452
|
? main_cjs.normalizeDataType(propertyDef.refValueType)
|
|
@@ -394,7 +477,7 @@ const processBasicProperties = async (itemBasicProperties, itemPublishData, ctx,
|
|
|
394
477
|
: '';
|
|
395
478
|
if (!idStr)
|
|
396
479
|
continue;
|
|
397
|
-
const trimmed = idStr.trim();
|
|
480
|
+
const trimmed = currentRelatedRef(ctx, idStr.trim());
|
|
398
481
|
if (!trimmed)
|
|
399
482
|
continue;
|
|
400
483
|
rawIds.push(trimmed);
|
|
@@ -503,7 +586,7 @@ const processRelationOrImageProperty = async (relationOrImageProperty, multiPubl
|
|
|
503
586
|
matchesDataType(relationOrImageProperty.propertyDef?.refValueType, main_cjs.ModelPropertyDataTypes.Html) ||
|
|
504
587
|
matchesDataType(relationOrImageProperty.propertyDef?.refValueType, main_cjs.ModelPropertyDataTypes.Json)));
|
|
505
588
|
if (isStorageSeed && (context.seedLocalId || context.seedUid)) {
|
|
506
|
-
const { getPropertyData: getPropertyDataFromDb } = await Promise.resolve().then(function () { return require('./index-
|
|
589
|
+
const { getPropertyData: getPropertyDataFromDb } = await Promise.resolve().then(function () { return require('./index-Cvvt0-5B.js'); }).then(function (n) { return n.getPropertyData; });
|
|
507
590
|
const metaRow = await getPropertyDataFromDb({
|
|
508
591
|
propertyName: relationOrImageProperty.propertyName,
|
|
509
592
|
seedLocalId: context.seedLocalId,
|
|
@@ -525,14 +608,12 @@ const processRelationOrImageProperty = async (relationOrImageProperty, multiPubl
|
|
|
525
608
|
let isRequired = propertyDef?.required === true;
|
|
526
609
|
// Resolve required from schema/DB when propertyDef lacks it
|
|
527
610
|
if (!isRequired && relationOrImageProperty.modelName) {
|
|
528
|
-
|
|
611
|
+
const propertyScope = await main_cjs.getItemModelScope(relationOrImageProperty);
|
|
612
|
+
let schema = await property.getPropertySchema(relationOrImageProperty.modelName, relationOrImageProperty.propertyName, propertyScope);
|
|
529
613
|
if (!schema && main_cjs.BaseDb.getAppDb()) {
|
|
530
614
|
const normalizedModelName = lodashEs.upperFirst(lodashEs.camelCase(relationOrImageProperty.modelName));
|
|
531
|
-
const
|
|
532
|
-
|
|
533
|
-
.from(main_cjs.models)
|
|
534
|
-
.where(drizzleOrm.eq(main_cjs.models.name, normalizedModelName))
|
|
535
|
-
.limit(1);
|
|
615
|
+
const modelRecord = await main_cjs.resolveModelRecord(normalizedModelName, propertyScope);
|
|
616
|
+
const modelRecords = modelRecord ? [modelRecord] : [];
|
|
536
617
|
if (modelRecords.length > 0 && modelRecords[0].id) {
|
|
537
618
|
const propertyRecords = await main_cjs.BaseDb.getAppDb()
|
|
538
619
|
.select()
|
|
@@ -588,13 +669,18 @@ const processRelationOrImageProperty = async (relationOrImageProperty, multiPubl
|
|
|
588
669
|
}
|
|
589
670
|
return multiPublishPayload;
|
|
590
671
|
}
|
|
672
|
+
// The local seed, also when the ref is the old uid of a seed published again since.
|
|
673
|
+
const relatedSeed = await publishDraftGraph.findRelatedSeedRow({ seedLocalId, seedUid });
|
|
674
|
+
if (!isStorageSeed && deferIfBackEdge(ctx, relationOrImageProperty, [relatedSeed?.seedLocalId ?? seedLocalId])) {
|
|
675
|
+
return multiPublishPayload;
|
|
676
|
+
}
|
|
591
677
|
// Use dynamic import to break circular dependency
|
|
592
|
-
const getItemMod = await Promise.resolve().then(function () { return require('./getItem-
|
|
678
|
+
const getItemMod = await Promise.resolve().then(function () { return require('./getItem-z1tHu0hu.js'); });
|
|
593
679
|
const { getItem } = getItemMod;
|
|
594
|
-
const relatedItem = await getItem({
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
}
|
|
680
|
+
const relatedItem = await getItem(relatedSeed ? { seedLocalId: relatedSeed.seedLocalId } : { seedLocalId, seedUid });
|
|
681
|
+
if (noteRelatedSeed(ctx, normalizedRef, relatedSeed, relationOrImageProperty.propertyName, relatedItem?.modelName ?? publishDraftGraph.relatedModelNameFromDef(relationOrImageProperty.propertyDef))) {
|
|
682
|
+
return multiPublishPayload;
|
|
683
|
+
}
|
|
598
684
|
// When related item not found (e.g. different DB, not yet created)
|
|
599
685
|
if (!relatedItem) {
|
|
600
686
|
// An attested uid with no local copy is already published; the parent attests the uid as-is.
|
|
@@ -609,7 +695,6 @@ const processRelationOrImageProperty = async (relationOrImageProperty, multiPubl
|
|
|
609
695
|
if (relatedItem.seedUid && relatedItem.seedUid !== main_cjs.ZERO_BYTES32) {
|
|
610
696
|
return multiPublishPayload;
|
|
611
697
|
}
|
|
612
|
-
const versionUid = getVersionUid(relatedItem);
|
|
613
698
|
let modelName;
|
|
614
699
|
if (matchesDataType(relationOrImageProperty.propertyDef?.dataType, main_cjs.ModelPropertyDataTypes.Image)) {
|
|
615
700
|
modelName = 'Image';
|
|
@@ -628,63 +713,119 @@ const processRelationOrImageProperty = async (relationOrImageProperty, multiPubl
|
|
|
628
713
|
addValidationError(ctx, `Model name not found for relation or image property: ${relationOrImageProperty.propertyName}`, relationOrImageProperty.propertyName);
|
|
629
714
|
return multiPublishPayload;
|
|
630
715
|
}
|
|
716
|
+
return processRelatedDraftItem({
|
|
717
|
+
relatedItem,
|
|
718
|
+
modelName,
|
|
719
|
+
// A storage seed (Image/File/Html/Json item) attests its own basic properties; a related model
|
|
720
|
+
// item is published with its full property set and the draft items it reaches in turn.
|
|
721
|
+
fullDraft: !isStorageSeed,
|
|
722
|
+
link: { publishLocalId: originalSeedLocalId, propertySchemaUid: relationOrImageSchemaUid },
|
|
723
|
+
reportPropertyName: relationOrImageProperty.propertyName,
|
|
724
|
+
multiPublishPayload,
|
|
725
|
+
uploadedTransactions,
|
|
726
|
+
ctx,
|
|
727
|
+
buildOpts,
|
|
728
|
+
});
|
|
729
|
+
};
|
|
730
|
+
/**
|
|
731
|
+
* The payload of a draft item (no seed uid) a published item refers to, published with it. Its
|
|
732
|
+
* request fills the referring property (`link`) through propertiesToUpdate. With `fullDraft`, the
|
|
733
|
+
* item's whole property set is attested: its storage seeds and Html-embedded images, and its own
|
|
734
|
+
* relation and list properties, whose draft targets are published with it in turn (depth first,
|
|
735
|
+
* see publishDraftGraph.ts). A draft already in the batch only gains the link.
|
|
736
|
+
*/
|
|
737
|
+
async function processRelatedDraftItem({ relatedItem, modelName, fullDraft, link, reportPropertyName, multiPublishPayload, uploadedTransactions, ctx, buildOpts, }) {
|
|
738
|
+
const forceFullSnapshot = buildOpts?.forceFullSnapshot === true;
|
|
631
739
|
const seedSchemaUid = await main_cjs.getEasSchemaUidForModel(modelName);
|
|
632
740
|
if (!seedSchemaUid) {
|
|
633
|
-
addValidationError(ctx, `Schema UID not found for model: ${modelName}`,
|
|
741
|
+
addValidationError(ctx, `Schema UID not found for model: ${modelName}`, reportPropertyName);
|
|
634
742
|
return multiPublishPayload;
|
|
635
743
|
}
|
|
636
|
-
if (
|
|
744
|
+
if (multiPublishPayload.some((p) => p.localId === relatedItem.seedLocalId)) {
|
|
745
|
+
if (link) {
|
|
746
|
+
mergeChildPublishPayloadIfDuplicateInBatch(multiPublishPayload, relatedItem.seedLocalId, link.publishLocalId, link.propertySchemaUid);
|
|
747
|
+
}
|
|
637
748
|
return multiPublishPayload;
|
|
638
749
|
}
|
|
639
750
|
let publishPayload = {
|
|
640
751
|
localId: relatedItem.seedLocalId,
|
|
641
752
|
seedIsRevocable: true,
|
|
642
753
|
versionSchemaUid: main_cjs.VERSION_SCHEMA_UID,
|
|
643
|
-
seedUid:
|
|
754
|
+
seedUid: main_cjs.ZERO_BYTES32,
|
|
644
755
|
seedSchemaUid,
|
|
645
|
-
versionUid,
|
|
756
|
+
versionUid: getVersionUid(relatedItem),
|
|
646
757
|
listOfAttestations: [],
|
|
647
|
-
propertiesToUpdate: [
|
|
648
|
-
{
|
|
649
|
-
publishLocalId: originalSeedLocalId,
|
|
650
|
-
propertySchemaUid: relationOrImageSchemaUid,
|
|
651
|
-
},
|
|
652
|
-
],
|
|
758
|
+
propertiesToUpdate: link ? [{ ...link }] : [],
|
|
653
759
|
};
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
const
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
//
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
760
|
+
ctx.newSeedsInProgress ?? (ctx.newSeedsInProgress = new Set());
|
|
761
|
+
ctx.newSeedsInProgress.add(relatedItem.seedLocalId);
|
|
762
|
+
try {
|
|
763
|
+
await ensurePropertyDefs(relatedItem);
|
|
764
|
+
const segmented = await publishDraftGraph.getSegmentedItemProperties(relatedItem);
|
|
765
|
+
const { itemBasicProperties, itemUploadProperties, itemImageProperties: relatedStorageSeedProperties } = segmented;
|
|
766
|
+
if (fullDraft) {
|
|
767
|
+
// Its own Image/File/Html/Json properties and the images embedded in its Html (as for the item itself).
|
|
768
|
+
multiPublishPayload = await processRelatedDraftStorageSeeds(relatedItem, relatedStorageSeedProperties, itemBasicProperties, multiPublishPayload, uploadedTransactions, ctx, buildOpts);
|
|
769
|
+
// Its relations and lists: their draft targets are published too (same walk as publishDraftGraph).
|
|
770
|
+
const { relationProperties, listProperties } = publishDraftGraph.draftWalkProperties(segmented);
|
|
771
|
+
for (const relationProperty of relationProperties) {
|
|
772
|
+
multiPublishPayload = await processRelationOrImageProperty(relationProperty, multiPublishPayload, uploadedTransactions, relatedItem.seedLocalId, ctx, buildOpts);
|
|
773
|
+
itemBasicProperties.push(relationProperty);
|
|
774
|
+
}
|
|
775
|
+
for (const listProperty of listProperties) {
|
|
776
|
+
multiPublishPayload = await processListProperty(listProperty, multiPublishPayload, uploadedTransactions, relatedItem.seedLocalId, ctx, buildOpts);
|
|
777
|
+
itemBasicProperties.push(listProperty);
|
|
778
|
+
}
|
|
669
779
|
}
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
780
|
+
const relatedStorageUpload = resolveStorageTransactionUploadSlot(relatedItem, itemUploadProperties);
|
|
781
|
+
if (relatedStorageUpload) {
|
|
782
|
+
const transactionData = findUploadedTxForSeedLocalId(uploadedTransactions, relatedItem.seedLocalId);
|
|
783
|
+
if (transactionData) {
|
|
784
|
+
const itemProperty = relatedStorageUpload.itemProperty;
|
|
785
|
+
// Publish encoding reads context.propertyValue; do not await ItemProperty.save() here — it
|
|
786
|
+
// uses xstate waitFor(10s) for idle and can time out while the machine is busy or still loading.
|
|
787
|
+
itemProperty.getService().send({
|
|
788
|
+
type: 'updateContext',
|
|
789
|
+
propertyValue: transactionData.txId,
|
|
790
|
+
renderValue: transactionData.txId,
|
|
791
|
+
});
|
|
792
|
+
replaceStorageTransactionInBasicProperties(itemBasicProperties, itemProperty);
|
|
678
793
|
}
|
|
679
794
|
}
|
|
795
|
+
for (const p of itemBasicProperties) {
|
|
796
|
+
if (isStorageTransactionPropertyName(p.propertyName) &&
|
|
797
|
+
!p.propertyDef &&
|
|
798
|
+
relatedItem.modelName) {
|
|
799
|
+
const schema = await property.getPropertySchema(relatedItem.modelName, 'storageTransactionId', await main_cjs.getItemModelScope(relatedItem));
|
|
800
|
+
if (schema) {
|
|
801
|
+
p.getService().send({ type: 'updateContext', propertyRecordSchema: schema });
|
|
802
|
+
}
|
|
803
|
+
}
|
|
804
|
+
}
|
|
805
|
+
dedupeOneStorageTransactionPropertyInList(itemBasicProperties);
|
|
806
|
+
publishPayload = await processBasicProperties(itemBasicProperties, publishPayload, ctx, {
|
|
807
|
+
forceFullSnapshot,
|
|
808
|
+
});
|
|
809
|
+
}
|
|
810
|
+
finally {
|
|
811
|
+
ctx.newSeedsInProgress.delete(relatedItem.seedLocalId);
|
|
680
812
|
}
|
|
681
|
-
dedupeOneStorageTransactionPropertyInList(itemBasicProperties);
|
|
682
|
-
publishPayload = await processBasicProperties(itemBasicProperties, publishPayload, ctx, {
|
|
683
|
-
forceFullSnapshot,
|
|
684
|
-
});
|
|
685
813
|
multiPublishPayload.push(publishPayload);
|
|
686
814
|
return multiPublishPayload;
|
|
687
|
-
}
|
|
815
|
+
}
|
|
816
|
+
/**
|
|
817
|
+
* Storage-seed properties (Image/File/Html/Json) of a draft item related to the published one, and
|
|
818
|
+
* the images embedded in its Html (htmlEmbeddedImageCoPublish rows it owns): payloads for their seeds,
|
|
819
|
+
* and the properties added to `itemBasicProperties` so the related item attests them. Same handling
|
|
820
|
+
* as the published item's own (see getPublishPayload).
|
|
821
|
+
*/
|
|
822
|
+
async function processRelatedDraftStorageSeeds(relatedItem, storageSeedProperties, itemBasicProperties, multiPublishPayload, uploadedTransactions, ctx, buildOpts) {
|
|
823
|
+
for (const storageSeedProperty of storageSeedProperties) {
|
|
824
|
+
multiPublishPayload = await processRelationOrImageProperty(storageSeedProperty, multiPublishPayload, uploadedTransactions, relatedItem.seedLocalId, ctx, buildOpts);
|
|
825
|
+
itemBasicProperties.push(storageSeedProperty);
|
|
826
|
+
}
|
|
827
|
+
return processHtmlEmbeddedCoPublishImagePayloads(relatedItem, multiPublishPayload, uploadedTransactions, ctx, buildOpts);
|
|
828
|
+
}
|
|
688
829
|
async function resolveHtmlPropertySchemaUidByHtmlSeed(item, htmlSeedLocalId, ctx) {
|
|
689
830
|
const want = htmlSeedLocalId.trim();
|
|
690
831
|
for (const p of item.properties) {
|
|
@@ -705,7 +846,7 @@ async function resolveHtmlPropertySchemaUidByHtmlSeed(item, htmlSeedLocalId, ctx
|
|
|
705
846
|
addValidationError(ctx, `Could not find Html property for embedded image rewrite (html seed ${want}).`, 'html', 'html_embed_schema');
|
|
706
847
|
return undefined;
|
|
707
848
|
}
|
|
708
|
-
async function processHtmlEmbeddedCoPublishImagePayloads(item, multiPublishPayload, uploadedTransactions,
|
|
849
|
+
async function processHtmlEmbeddedCoPublishImagePayloads(item, multiPublishPayload, uploadedTransactions, ctx, buildOpts) {
|
|
709
850
|
const appDb = main_cjs.BaseDb.getAppDb();
|
|
710
851
|
if (!appDb)
|
|
711
852
|
return multiPublishPayload;
|
|
@@ -716,13 +857,20 @@ async function processHtmlEmbeddedCoPublishImagePayloads(item, multiPublishPaylo
|
|
|
716
857
|
if (rows.length === 0)
|
|
717
858
|
return multiPublishPayload;
|
|
718
859
|
const forceFullSnapshot = buildOpts?.forceFullSnapshot === true;
|
|
719
|
-
const getItemMod = await Promise.resolve().then(function () { return require('./getItem-
|
|
860
|
+
const getItemMod = await Promise.resolve().then(function () { return require('./getItem-z1tHu0hu.js'); });
|
|
720
861
|
const { getItem } = getItemMod;
|
|
721
862
|
const doneImages = new Set();
|
|
722
863
|
for (const row of rows) {
|
|
723
864
|
if (doneImages.has(row.imageSeedLocalId))
|
|
724
865
|
continue;
|
|
725
866
|
doneImages.add(row.imageSeedLocalId);
|
|
867
|
+
// An embedded image that is already published is not co-published; one whose seed was revoked
|
|
868
|
+
// (unpublished) blocks the publish like an image property pointing at it would.
|
|
869
|
+
const imageSeed = await publishDraftGraph.findRelatedSeedRow({ seedLocalId: row.imageSeedLocalId });
|
|
870
|
+
if (noteRelatedSeed(ctx, row.imageSeedLocalId, imageSeed, publishDraftGraph.htmlPropertyNameForHtmlSeed(item, row.htmlSeedLocalId), 'Image')) {
|
|
871
|
+
continue;
|
|
872
|
+
}
|
|
873
|
+
// The row's Html seed must still be the value of one of the item's Html properties.
|
|
726
874
|
const htmlSchemaUid = await resolveHtmlPropertySchemaUidByHtmlSeed(item, row.htmlSeedLocalId, ctx);
|
|
727
875
|
if (!htmlSchemaUid)
|
|
728
876
|
continue;
|
|
@@ -739,10 +887,16 @@ async function processHtmlEmbeddedCoPublishImagePayloads(item, multiPublishPaylo
|
|
|
739
887
|
addValidationError(ctx, `Schema UID not found for model: Image`, 'html');
|
|
740
888
|
continue;
|
|
741
889
|
}
|
|
742
|
-
|
|
890
|
+
// Already in the batch (e.g. also the value of an Image property): its payload is there.
|
|
891
|
+
if (multiPublishPayload.some((p) => p.localId === relatedItem.seedLocalId)) {
|
|
743
892
|
continue;
|
|
744
893
|
}
|
|
745
894
|
const versionUid = getVersionUid(relatedItem);
|
|
895
|
+
// No propertiesToUpdate: the Html refers to the image by its Arweave URL (the data URI is
|
|
896
|
+
// rewritten to it before the Html is uploaded), not by seed uid. The Html property holds the Html
|
|
897
|
+
// storage seed's uid, which the Html seed's own request writes into it; the contract writes each
|
|
898
|
+
// updater's seed uid into the same data[0] (SeedPublishLib.setSeedReference), so an image
|
|
899
|
+
// targeting the Html property too would overwrite that reference with the image's seed uid.
|
|
746
900
|
let publishPayload = {
|
|
747
901
|
localId: relatedItem.seedLocalId,
|
|
748
902
|
seedIsRevocable: true,
|
|
@@ -751,15 +905,10 @@ async function processHtmlEmbeddedCoPublishImagePayloads(item, multiPublishPaylo
|
|
|
751
905
|
seedSchemaUid,
|
|
752
906
|
versionUid,
|
|
753
907
|
listOfAttestations: [],
|
|
754
|
-
propertiesToUpdate: [
|
|
755
|
-
{
|
|
756
|
-
publishLocalId: originalSeedLocalId,
|
|
757
|
-
propertySchemaUid: htmlSchemaUid,
|
|
758
|
-
},
|
|
759
|
-
],
|
|
908
|
+
propertiesToUpdate: [],
|
|
760
909
|
};
|
|
761
910
|
await ensurePropertyDefs(relatedItem);
|
|
762
|
-
const { itemBasicProperties, itemUploadProperties } = await
|
|
911
|
+
const { itemBasicProperties, itemUploadProperties } = await publishDraftGraph.getSegmentedItemProperties(relatedItem);
|
|
763
912
|
const relatedStorageUpload = resolveStorageTransactionUploadSlot(relatedItem, itemUploadProperties);
|
|
764
913
|
if (relatedStorageUpload) {
|
|
765
914
|
const transactionData = findUploadedTxForSeedLocalId(uploadedTransactions, relatedItem.seedLocalId);
|
|
@@ -777,7 +926,7 @@ async function processHtmlEmbeddedCoPublishImagePayloads(item, multiPublishPaylo
|
|
|
777
926
|
if (isStorageTransactionPropertyName(p.propertyName) &&
|
|
778
927
|
!p.propertyDef &&
|
|
779
928
|
relatedItem.modelName) {
|
|
780
|
-
const schema = await property.getPropertySchema(relatedItem.modelName, 'storageTransactionId');
|
|
929
|
+
const schema = await property.getPropertySchema(relatedItem.modelName, 'storageTransactionId', await main_cjs.getItemModelScope(relatedItem));
|
|
781
930
|
if (schema) {
|
|
782
931
|
p.getService().send({ type: 'updateContext', propertyRecordSchema: schema });
|
|
783
932
|
}
|
|
@@ -791,7 +940,7 @@ async function processHtmlEmbeddedCoPublishImagePayloads(item, multiPublishPaylo
|
|
|
791
940
|
}
|
|
792
941
|
return multiPublishPayload;
|
|
793
942
|
}
|
|
794
|
-
const processListProperty = async (listProperty, multiPublishPayload, originalSeedLocalId, ctx, buildOpts) => {
|
|
943
|
+
const processListProperty = async (listProperty, multiPublishPayload, uploadedTransactions, originalSeedLocalId, ctx, buildOpts) => {
|
|
795
944
|
const forceFullSnapshot = buildOpts?.forceFullSnapshot === true;
|
|
796
945
|
// processListProperty only handles list-of-relations; list-of-primitives go to itemBasicProperties
|
|
797
946
|
if (!listProperty.propertyDef?.ref) {
|
|
@@ -824,6 +973,7 @@ const processListProperty = async (listProperty, multiPublishPayload, originalSe
|
|
|
824
973
|
: value != null
|
|
825
974
|
? [value]
|
|
826
975
|
: [];
|
|
976
|
+
const members = [];
|
|
827
977
|
for (const seedId of iterableValue) {
|
|
828
978
|
const idStr = typeof seedId === 'string'
|
|
829
979
|
? seedId
|
|
@@ -835,13 +985,25 @@ const processListProperty = async (listProperty, multiPublishPayload, originalSe
|
|
|
835
985
|
const { localId: seedLocalId, uid: seedUid } = main_cjs.getCorrectId(idStr);
|
|
836
986
|
if (!seedLocalId && !seedUid)
|
|
837
987
|
continue;
|
|
988
|
+
members.push({ idStr, seedLocalId, seedUid });
|
|
989
|
+
}
|
|
990
|
+
// A member that is an item still in progress (a cycle back to it) can't be attested in this
|
|
991
|
+
// publish, so the list is deferred; its other draft members are still published, unlinked.
|
|
992
|
+
const memberSeeds = await Promise.all(members.map((m) => publishDraftGraph.findRelatedSeedRow({ seedLocalId: m.seedLocalId, seedUid: m.seedUid })));
|
|
993
|
+
const deferred = deferIfBackEdge(ctx, listProperty, members.map((m, i) => memberSeeds[i]?.seedLocalId ?? m.seedLocalId));
|
|
994
|
+
for (let i = 0; i < members.length; i++) {
|
|
995
|
+
const { idStr, seedLocalId, seedUid } = members[i];
|
|
996
|
+
const relatedSeed = memberSeeds[i] ?? null;
|
|
997
|
+
const memberLocalId = relatedSeed?.seedLocalId ?? seedLocalId;
|
|
998
|
+
if (memberLocalId && ctx.newSeedsInProgress?.has(memberLocalId))
|
|
999
|
+
continue;
|
|
838
1000
|
// Use dynamic import to break circular dependency
|
|
839
|
-
const getItemMod = await Promise.resolve().then(function () { return require('./getItem-
|
|
1001
|
+
const getItemMod = await Promise.resolve().then(function () { return require('./getItem-z1tHu0hu.js'); });
|
|
840
1002
|
const { getItem } = getItemMod;
|
|
841
|
-
const relatedItem = await getItem({
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
}
|
|
1003
|
+
const relatedItem = await getItem(relatedSeed ? { seedLocalId: relatedSeed.seedLocalId } : { seedLocalId, seedUid });
|
|
1004
|
+
if (noteRelatedSeed(ctx, idStr.trim(), relatedSeed, listProperty.propertyName, relatedItem?.modelName ?? publishDraftGraph.relatedModelNameFromDef(listProperty.propertyDef))) {
|
|
1005
|
+
continue;
|
|
1006
|
+
}
|
|
845
1007
|
if (!relatedItem) {
|
|
846
1008
|
// An attested uid with no local copy is already published; the list attests the uid as-is.
|
|
847
1009
|
if (!main_cjs.isPublishedSeedRef(idStr)) {
|
|
@@ -852,7 +1014,6 @@ const processListProperty = async (listProperty, multiPublishPayload, originalSe
|
|
|
852
1014
|
if (relatedItem.seedUid && relatedItem.seedUid !== main_cjs.ZERO_BYTES32) {
|
|
853
1015
|
continue;
|
|
854
1016
|
}
|
|
855
|
-
const versionUid = getVersionUid(relatedItem);
|
|
856
1017
|
let modelName;
|
|
857
1018
|
if (listProperty.propertyDef?.ref || listProperty.propertyDef.refModelName) {
|
|
858
1019
|
const def = listProperty.propertyDef;
|
|
@@ -871,36 +1032,17 @@ const processListProperty = async (listProperty, multiPublishPayload, originalSe
|
|
|
871
1032
|
addValidationError(ctx, `Model name not found for list property: ${listProperty.propertyName}`, listProperty.propertyName);
|
|
872
1033
|
continue;
|
|
873
1034
|
}
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
seedIsRevocable: true,
|
|
885
|
-
versionSchemaUid: main_cjs.VERSION_SCHEMA_UID,
|
|
886
|
-
seedUid: seedUid || main_cjs.ZERO_BYTES32,
|
|
887
|
-
seedSchemaUid,
|
|
888
|
-
versionUid,
|
|
889
|
-
listOfAttestations: [],
|
|
890
|
-
propertiesToUpdate: [
|
|
891
|
-
{
|
|
892
|
-
publishLocalId: originalSeedLocalId,
|
|
893
|
-
propertySchemaUid: listPropertySchemaUid,
|
|
894
|
-
},
|
|
895
|
-
],
|
|
896
|
-
};
|
|
897
|
-
await ensurePropertyDefs(relatedItem);
|
|
898
|
-
const { itemBasicProperties } = await getSegmentedItemProperties.getSegmentedItemProperties(relatedItem);
|
|
899
|
-
dedupeOneStorageTransactionPropertyInList(itemBasicProperties);
|
|
900
|
-
publishPayload = await processBasicProperties(itemBasicProperties, publishPayload, ctx, {
|
|
901
|
-
forceFullSnapshot,
|
|
1035
|
+
multiPublishPayload = await processRelatedDraftItem({
|
|
1036
|
+
relatedItem,
|
|
1037
|
+
modelName,
|
|
1038
|
+
fullDraft: true,
|
|
1039
|
+
link: deferred ? null : { publishLocalId: originalSeedLocalId, propertySchemaUid: listPropertySchemaUid },
|
|
1040
|
+
reportPropertyName: listProperty.propertyName,
|
|
1041
|
+
multiPublishPayload,
|
|
1042
|
+
uploadedTransactions,
|
|
1043
|
+
ctx,
|
|
1044
|
+
buildOpts,
|
|
902
1045
|
});
|
|
903
|
-
multiPublishPayload.push(publishPayload);
|
|
904
1046
|
}
|
|
905
1047
|
return multiPublishPayload;
|
|
906
1048
|
};
|
|
@@ -1031,22 +1173,24 @@ function findUploadedTxForSeedLocalId(uploadedTransactions, seedLocalId) {
|
|
|
1031
1173
|
return (uploadedTransactions.find((u) => u.seedLocalId === t) ??
|
|
1032
1174
|
uploadedTransactions.find((u) => u.seedLocalId != null && u.seedLocalId.trim() === t));
|
|
1033
1175
|
}
|
|
1034
|
-
/** Error thrown when publish validation fails. Includes all validation errors for user to fix. */
|
|
1035
|
-
class PublishValidationFailedError extends Error {
|
|
1036
|
-
constructor(message, validationErrors) {
|
|
1037
|
-
super(message);
|
|
1038
|
-
this.validationErrors = validationErrors;
|
|
1039
|
-
this.name = 'PublishValidationFailedError';
|
|
1040
|
-
}
|
|
1041
|
-
}
|
|
1042
1176
|
const getPublishPayload = async (item, uploadedTransactions, options) => {
|
|
1043
1177
|
const validationCtx = { errors: [] };
|
|
1044
1178
|
const publishMode = options?.publishMode ?? 'patch';
|
|
1045
|
-
|
|
1179
|
+
// A revoked seed can't be published under again: republishing creates a new seed attestation
|
|
1180
|
+
// (new seedUid) and a new version carrying every property (see docs/ATTESTATION_REVOCATION.md).
|
|
1181
|
+
const hasSeedUid = !!item.seedUid && item.seedUid !== main_cjs.ZERO_BYTES32;
|
|
1182
|
+
const republishRevokedSeed = hasSeedUid && (await publishDraftGraph.isSeedRevoked(item.seedLocalId));
|
|
1183
|
+
const rootSeedUid = republishRevokedSeed ? main_cjs.ZERO_BYTES32 : item.seedUid || main_cjs.ZERO_BYTES32;
|
|
1184
|
+
const forceFullSnapshot = publishMode === 'new_version' || republishRevokedSeed;
|
|
1046
1185
|
if (publishMode === 'new_version' && (!item.seedUid || item.seedUid === main_cjs.ZERO_BYTES32)) {
|
|
1047
1186
|
addValidationError(validationCtx, 'Publishing as a new version requires the item to already have a published Seed attestation (seed UID).', 'seedUid', 'publish_new_version_requires_seed');
|
|
1048
1187
|
}
|
|
1049
1188
|
let multiPublishPayload = [];
|
|
1189
|
+
// The root gets a new seed (draft, or revoked seed published again): related drafts referring
|
|
1190
|
+
// back to it can't attest its uid in this publish (see publishDraftGraph.ts).
|
|
1191
|
+
if (rootSeedUid === main_cjs.ZERO_BYTES32) {
|
|
1192
|
+
validationCtx.newSeedsInProgress = new Set([item.seedLocalId]);
|
|
1193
|
+
}
|
|
1050
1194
|
// Each PublishPayload is generated from a Seed that needs publishing
|
|
1051
1195
|
// First we need to determine all Seeds to publish
|
|
1052
1196
|
// That means the Seed of the Item, plus any Seeds pointed to by Relations
|
|
@@ -1063,15 +1207,15 @@ const getPublishPayload = async (item, uploadedTransactions, options) => {
|
|
|
1063
1207
|
}
|
|
1064
1208
|
}
|
|
1065
1209
|
let versionUid = getVersionUid(item);
|
|
1066
|
-
if (versionUid === main_cjs.ZERO_BYTES32 &&
|
|
1067
|
-
versionUid = await resolveVersionUid(item.seedLocalId,
|
|
1210
|
+
if (versionUid === main_cjs.ZERO_BYTES32 && rootSeedUid !== main_cjs.ZERO_BYTES32) {
|
|
1211
|
+
versionUid = await resolveVersionUid(item.seedLocalId, rootSeedUid);
|
|
1068
1212
|
}
|
|
1069
|
-
if (forceFullSnapshot &&
|
|
1213
|
+
if (forceFullSnapshot && hasSeedUid) {
|
|
1070
1214
|
versionUid = main_cjs.ZERO_BYTES32;
|
|
1071
1215
|
}
|
|
1072
1216
|
let itemPublishData = {
|
|
1073
1217
|
localId: item.seedLocalId,
|
|
1074
|
-
seedUid:
|
|
1218
|
+
seedUid: rootSeedUid,
|
|
1075
1219
|
seedIsRevocable: true,
|
|
1076
1220
|
seedSchemaUid: itemSchemaUid,
|
|
1077
1221
|
versionSchemaUid: main_cjs.VERSION_SCHEMA_UID,
|
|
@@ -1080,7 +1224,7 @@ const getPublishPayload = async (item, uploadedTransactions, options) => {
|
|
|
1080
1224
|
propertiesToUpdate: [],
|
|
1081
1225
|
};
|
|
1082
1226
|
await ensurePropertyDefs(item);
|
|
1083
|
-
const { itemBasicProperties, itemListProperties, itemUploadProperties, itemImageProperties, itemRelationProperties, } = await
|
|
1227
|
+
const { itemBasicProperties, itemListProperties, itemUploadProperties, itemImageProperties, itemRelationProperties, } = await publishDraftGraph.getSegmentedItemProperties(item);
|
|
1084
1228
|
const relationAndImageProperties = [...itemRelationProperties, ...itemImageProperties];
|
|
1085
1229
|
// Validate required relations have values before processing
|
|
1086
1230
|
for (const relProp of itemRelationProperties) {
|
|
@@ -1093,11 +1237,8 @@ const getPublishPayload = async (item, uploadedTransactions, options) => {
|
|
|
1093
1237
|
let isRequired = relProp.propertyDef?.required === true;
|
|
1094
1238
|
if (!isRequired && main_cjs.BaseDb.getAppDb() && item.modelName) {
|
|
1095
1239
|
const normalizedModelName = lodashEs.upperFirst(lodashEs.camelCase(item.modelName));
|
|
1096
|
-
const
|
|
1097
|
-
|
|
1098
|
-
.from(main_cjs.models)
|
|
1099
|
-
.where(drizzleOrm.eq(main_cjs.models.name, normalizedModelName))
|
|
1100
|
-
.limit(1);
|
|
1240
|
+
const modelRecord = await main_cjs.resolveModelRecord(normalizedModelName, await main_cjs.getItemModelScope(item));
|
|
1241
|
+
const modelRows = modelRecord ? [modelRecord] : [];
|
|
1101
1242
|
if (modelRows.length > 0) {
|
|
1102
1243
|
const propRows = await main_cjs.BaseDb.getAppDb()
|
|
1103
1244
|
.select({ required: main_cjs.properties.required, refModelId: main_cjs.properties.refModelId })
|
|
@@ -1132,14 +1273,14 @@ const getPublishPayload = async (item, uploadedTransactions, options) => {
|
|
|
1132
1273
|
multiPublishPayload = await processRelationOrImageProperty(relationProperty, multiPublishPayload, uploadedTransactions, item.seedLocalId, validationCtx, { forceFullSnapshot });
|
|
1133
1274
|
itemBasicProperties.push(relationProperty);
|
|
1134
1275
|
}
|
|
1135
|
-
multiPublishPayload = await processHtmlEmbeddedCoPublishImagePayloads(item, multiPublishPayload, uploadedTransactions,
|
|
1276
|
+
multiPublishPayload = await processHtmlEmbeddedCoPublishImagePayloads(item, multiPublishPayload, uploadedTransactions, validationCtx, { forceFullSnapshot });
|
|
1136
1277
|
for (const listProperty of itemListProperties) {
|
|
1137
|
-
multiPublishPayload = await processListProperty(listProperty, multiPublishPayload, item.seedLocalId, validationCtx, { forceFullSnapshot });
|
|
1278
|
+
multiPublishPayload = await processListProperty(listProperty, multiPublishPayload, uploadedTransactions, item.seedLocalId, validationCtx, { forceFullSnapshot });
|
|
1138
1279
|
itemBasicProperties.push(listProperty);
|
|
1139
1280
|
}
|
|
1140
1281
|
for (const p of itemBasicProperties) {
|
|
1141
1282
|
if (isStorageTransactionPropertyName(p.propertyName) && !p.propertyDef && item.modelName) {
|
|
1142
|
-
const schema = await property.getPropertySchema(item.modelName, 'storageTransactionId');
|
|
1283
|
+
const schema = await property.getPropertySchema(item.modelName, 'storageTransactionId', await main_cjs.getItemModelScope(item));
|
|
1143
1284
|
if (schema) {
|
|
1144
1285
|
p.getService().send({ type: 'updateContext', propertyRecordSchema: schema });
|
|
1145
1286
|
}
|
|
@@ -1165,6 +1306,10 @@ const getPublishPayload = async (item, uploadedTransactions, options) => {
|
|
|
1165
1306
|
'Ensure required fields have values and that publishable properties are present.', 'listOfAttestations', 'publish_new_version_empty_snapshot');
|
|
1166
1307
|
}
|
|
1167
1308
|
}
|
|
1309
|
+
// Stop before anything is uploaded or attested: the payload would attest revoked seed uids.
|
|
1310
|
+
if (validationCtx.unpublishedRelatedItems?.length) {
|
|
1311
|
+
throw new RelatedItemUnpublishedError(validationCtx.unpublishedRelatedItems, validationCtx.errors);
|
|
1312
|
+
}
|
|
1168
1313
|
if (validationCtx.errors.length > 0) {
|
|
1169
1314
|
const combinedMessage = validationCtx.errors.map((e) => e.message).join('\n');
|
|
1170
1315
|
throw new PublishValidationFailedError(`Validation failed (${validationCtx.errors.length} error${validationCtx.errors.length === 1 ? '' : 's'}):\n${combinedMessage}`, validationCtx.errors);
|
|
@@ -1449,4 +1594,4 @@ exports.PublishValidationFailedError = PublishValidationFailedError;
|
|
|
1449
1594
|
exports.getPublishPayload = getPublishPayload;
|
|
1450
1595
|
exports.resolvePublishPayloadValues = resolvePublishPayloadValues;
|
|
1451
1596
|
exports.validateItemForPublish = validateItemForPublish;
|
|
1452
|
-
//# sourceMappingURL=getPublishPayload-
|
|
1597
|
+
//# sourceMappingURL=getPublishPayload-CEP_e-Kv.js.map
|