@seedprotocol/sdk 0.6.9 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{BasePathResolver-B6CKqoKw.js → BasePathResolver-ndE8XTpw.js} +36 -2
- package/dist/BasePathResolver-ndE8XTpw.js.map +1 -0
- package/dist/ClientManager-DLleL_2e.js +4763 -0
- package/dist/ClientManager-DLleL_2e.js.map +1 -0
- package/dist/{ClientManager-ChcmUL47.js → Item-zBFWQDU9.js} +1119 -5893
- package/dist/Item-zBFWQDU9.js.map +1 -0
- package/dist/{ModelProperty-D79uV42p.js → ModelProperty-lth9L37R.js} +289 -101
- package/dist/ModelProperty-lth9L37R.js.map +1 -0
- package/dist/{Schema-a8uO-hIZ.js → Schema-DOhlrQ-N.js} +94 -864
- package/dist/Schema-DOhlrQ-N.js.map +1 -0
- package/dist/{SchemaValidationService-Y49vqast.js → SchemaValidationService-DDKr5piy.js} +26 -18
- package/dist/SchemaValidationService-DDKr5piy.js.map +1 -0
- package/dist/{backfillMetadataPropertyIds-CBsf7LnU.js → backfillMetadataPropertyIds-fG3ujaSh.js} +11 -6
- package/dist/backfillMetadataPropertyIds-fG3ujaSh.js.map +1 -0
- package/dist/cjs/{ModelProperty-D9FGaGuE.js → ModelProperty-BEsIHAjk.js} +260 -81
- package/dist/cjs/ModelProperty-BEsIHAjk.js.map +1 -0
- package/dist/cjs/{Schema-BiJIPLEL.js → Schema-qEp5mH1N.js} +66 -847
- package/dist/cjs/Schema-qEp5mH1N.js.map +1 -0
- package/dist/cjs/{SchemaValidationService-DtYs_CNY.js → SchemaValidationService-CWEnZmOH.js} +18 -11
- package/dist/cjs/SchemaValidationService-CWEnZmOH.js.map +1 -0
- package/dist/cjs/{backfillMetadataPropertyIds-2XaN3b9S.js → backfillMetadataPropertyIds-tw8JGMT0.js} +8 -3
- package/dist/cjs/backfillMetadataPropertyIds-tw8JGMT0.js.map +1 -0
- package/dist/cjs/{eas-CMNppmGE.js → eas-CLiV2Hmn.js} +4 -4
- package/dist/cjs/{eas-CMNppmGE.js.map → eas-CLiV2Hmn.js.map} +1 -1
- package/dist/cjs/{getItem-B6jEINjW.js → getItem-DSRtx_68.js} +2 -2
- package/dist/cjs/{getItem-B6jEINjW.js.map → getItem-DSRtx_68.js.map} +1 -1
- package/dist/cjs/getLatestVersionRow-DVizNNoI.js +59 -0
- package/dist/cjs/getLatestVersionRow-DVizNNoI.js.map +1 -0
- package/dist/cjs/{getPublishPayload-D5DhLGvN.js → getPublishPayload-D5-dYtNq.js} +249 -60
- package/dist/cjs/getPublishPayload-D5-dYtNq.js.map +1 -0
- package/dist/cjs/{getPublishUploads-DMhCCKYF.js → getPublishUploads-B5Lq6q-_.js} +20 -13
- package/dist/cjs/getPublishUploads-B5Lq6q-_.js.map +1 -0
- package/dist/cjs/{getSegmentedItemProperties-CU8rtBAo.js → getSegmentedItemProperties-giHO7R3d.js} +10 -11
- package/dist/cjs/getSegmentedItemProperties-giHO7R3d.js.map +1 -0
- package/dist/cjs/{index-DPp9rdRL.js → index-B3UDbm1C.js} +3 -3
- package/dist/cjs/index-B3UDbm1C.js.map +1 -0
- package/dist/cjs/{index-CSNtEnbF.js → index-C66AfYDG.js} +2510 -1694
- package/dist/cjs/index-C66AfYDG.js.map +1 -0
- package/dist/cjs/{property-DlKiAWt4.js → property-BVJIP7SX.js} +40 -35
- package/dist/cjs/property-BVJIP7SX.js.map +1 -0
- package/dist/cjs/resetAmbiguousLegacyItemData-BaZqUui9.js +116 -0
- package/dist/cjs/resetAmbiguousLegacyItemData-BaZqUui9.js.map +1 -0
- package/dist/cjs/resolveModelForSyncedSeed-CC6dQctx.js +49 -0
- package/dist/cjs/resolveModelForSyncedSeed-CC6dQctx.js.map +1 -0
- package/dist/cjs/syncDbWithEas-Dk96sAG-.js +873 -0
- package/dist/cjs/syncDbWithEas-Dk96sAG-.js.map +1 -0
- package/dist/{configurePlatform-CE0Vew17.js → configurePlatform-BMoPG9vY.js} +4 -4
- package/dist/{configurePlatform-CE0Vew17.js.map → configurePlatform-BMoPG9vY.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-BJZN0a0a.js} +546 -106
- package/dist/db-BJZN0a0a.js.map +1 -0
- package/dist/{eas-CfYCu4IX.js → eas-B0hsMLqt.js} +7 -7
- package/dist/eas-B0hsMLqt.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-DEh4WfHG.js} +8 -10
- package/dist/{getItem-Br-bGNFO.js.map → getItem-DEh4WfHG.js.map} +1 -1
- package/dist/getLatestVersionRow-Brrl1AnW.js +46 -0
- package/dist/getLatestVersionRow-Brrl1AnW.js.map +1 -0
- package/dist/{getPublishPayload-BIrTVUxb.js → getPublishPayload-H032DHC7.js} +263 -75
- package/dist/getPublishPayload-H032DHC7.js.map +1 -0
- package/dist/{getPublishUploads-C6cDeZdz.js → getPublishUploads-CR66RlGJ.js} +25 -17
- package/dist/{getPublishUploads-C6cDeZdz.js.map → getPublishUploads-CR66RlGJ.js.map} +1 -1
- package/dist/{getSegmentedItemProperties-BmKE71vU.js → getSegmentedItemProperties-C2EJ2G0N.js} +13 -14
- package/dist/getSegmentedItemProperties-C2EJ2G0N.js.map +1 -0
- package/dist/{index-ClSv5pTA.js → index-6bJuv5Tt.js} +12 -11
- package/dist/index-6bJuv5Tt.js.map +1 -0
- package/dist/{index-Djd3667v.js → index-B0LgJblD.js} +2 -2
- package/dist/index-B0LgJblD.js.map +1 -0
- package/dist/{index-HRHkbVQd.js → index-DtfjeuxC.js} +417 -174
- package/dist/index-DtfjeuxC.js.map +1 -0
- package/dist/index.browser-CNrqhvEA.js +4139 -0
- package/dist/index.browser-CNrqhvEA.js.map +1 -0
- package/dist/{index.node-DBtQkEfz.js → index.node-DrHiTuOr.js} +9 -4
- package/dist/index.node-DrHiTuOr.js.map +1 -0
- package/dist/main.cjs +1 -1
- package/dist/main.js +771 -521
- 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-D2Nnsmm1.js} +53 -48
- package/dist/property-D2Nnsmm1.js.map +1 -0
- package/dist/resetAmbiguousLegacyItemData-BqbHNUYk.js +88 -0
- package/dist/resetAmbiguousLegacyItemData-BqbHNUYk.js.map +1 -0
- package/dist/resolveModelForSyncedSeed-DQK6JfXS.js +46 -0
- package/dist/resolveModelForSyncedSeed-DQK6JfXS.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 +10 -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 +3 -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 +37 -0
- 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/modelMachine.d.ts +0 -8
- package/dist/src/Model/service/modelMachine.d.ts.map +1 -1
- package/dist/src/ModelProperty/ModelProperty.d.ts +33 -1
- 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/modelPropertyMachine.d.ts +2 -9
- package/dist/src/ModelProperty/service/modelPropertyMachine.d.ts.map +1 -1
- package/dist/src/Schema/Schema.d.ts +1 -2
- package/dist/src/Schema/Schema.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 +9 -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.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/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/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 +6 -0
- 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 +11 -2
- 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/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 +12 -3
- 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-LRKr_NZF.js +855 -0
- package/dist/syncDbWithEas-LRKr_NZF.js.map +1 -0
- package/dist/{index-280bL-n4.js → tabEvents-DYI2GU7i.js} +231 -68
- package/dist/tabEvents-DYI2GU7i.js.map +1 -0
- package/dist/tolerantWebAccess-CzOBz5M6.js +160 -0
- package/dist/tolerantWebAccess-CzOBz5M6.js.map +1 -0
- package/dist/updateSeedRevokedAt-B58ORbY3.js +32 -0
- package/dist/updateSeedRevokedAt-B58ORbY3.js.map +1 -0
- package/package.json +5 -5
- 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.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/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/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
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
var xstate = require('xstate');
|
|
4
4
|
require('reflect-metadata');
|
|
5
|
-
var main_cjs = require('./index-
|
|
5
|
+
var main_cjs = require('./index-C66AfYDG.js');
|
|
6
6
|
require('pluralize');
|
|
7
7
|
var drizzleOrm = require('drizzle-orm');
|
|
8
8
|
var debug = require('debug');
|
|
9
|
-
var Schema = require('./Schema-
|
|
9
|
+
var Schema = require('./Schema-qEp5mH1N.js');
|
|
10
10
|
require('immer');
|
|
11
11
|
require('drizzle-orm/sqlite-core');
|
|
12
12
|
require('@seedprotocol/arweave');
|
|
@@ -32,7 +32,7 @@ require('js-yaml');
|
|
|
32
32
|
require('child_process');
|
|
33
33
|
require('@seedprotocol/arweave/node');
|
|
34
34
|
require('@seedprotocol/eas/node');
|
|
35
|
-
require('./SchemaValidationService-
|
|
35
|
+
require('./SchemaValidationService-CWEnZmOH.js');
|
|
36
36
|
require('@sinclair/typebox/value');
|
|
37
37
|
|
|
38
38
|
const logger$3 = debug('seedSdk:modelProperty:actors:saveToSchema');
|
|
@@ -43,12 +43,12 @@ const logger$3 = debug('seedSdk:modelProperty:actors:saveToSchema');
|
|
|
43
43
|
*/
|
|
44
44
|
async function getSchemaNameFromModel(modelName) {
|
|
45
45
|
// Get the latest schema files and find which one contains this model
|
|
46
|
-
const schemaHelpersMod = await Promise.resolve().then(function () { return require('./index-
|
|
46
|
+
const schemaHelpersMod = await Promise.resolve().then(function () { return require('./index-C66AfYDG.js'); }).then(function (n) { return n.schema$1; });
|
|
47
47
|
const { listLatestSchemaFiles } = schemaHelpersMod;
|
|
48
48
|
const latestSchemas = await listLatestSchemaFiles();
|
|
49
49
|
for (const schema of latestSchemas) {
|
|
50
50
|
try {
|
|
51
|
-
const fileManagerMod = await Promise.resolve().then(function () { return require('./index-
|
|
51
|
+
const fileManagerMod = await Promise.resolve().then(function () { return require('./index-C66AfYDG.js'); }).then(function (n) { return n.BaseFileManager$1; });
|
|
52
52
|
const { BaseFileManager } = fileManagerMod;
|
|
53
53
|
const content = await BaseFileManager.readFileAsString(schema.filePath);
|
|
54
54
|
const schemaFile = JSON.parse(content);
|
|
@@ -66,7 +66,7 @@ async function getSchemaNameFromModel(modelName) {
|
|
|
66
66
|
const saveToSchema = xstate.fromCallback(({ sendBack, input: { context } }) => {
|
|
67
67
|
const _saveToSchema = async () => {
|
|
68
68
|
// Use dynamic import to break circular dependency
|
|
69
|
-
const validationServiceMod = await Promise.resolve().then(function () { return require('./SchemaValidationService-
|
|
69
|
+
const validationServiceMod = await Promise.resolve().then(function () { return require('./SchemaValidationService-CWEnZmOH.js'); });
|
|
70
70
|
const { SchemaValidationService } = validationServiceMod;
|
|
71
71
|
const validationService = new SchemaValidationService();
|
|
72
72
|
// Validate property structure before saving
|
|
@@ -85,13 +85,13 @@ const saveToSchema = xstate.fromCallback(({ sendBack, input: { context } }) => {
|
|
|
85
85
|
throw new Error(`Model not found for modelId: ${context.modelId}`);
|
|
86
86
|
}
|
|
87
87
|
// Persist to database only - schema file is updated only when user calls Schema.saveNewVersion()
|
|
88
|
-
const dbMod = await Promise.resolve().then(function () { return require('./index-
|
|
88
|
+
const dbMod = await Promise.resolve().then(function () { return require('./index-C66AfYDG.js'); }).then(function (n) { return n.db; });
|
|
89
89
|
const { savePropertyToDb } = dbMod;
|
|
90
90
|
await savePropertyToDb(context);
|
|
91
91
|
// Mark schema as draft so user knows to save
|
|
92
92
|
const schemaName = context._schemaName ?? (await getSchemaNameFromModel(context.modelName));
|
|
93
93
|
if (schemaName) {
|
|
94
|
-
const schemaMod = await Promise.resolve().then(function () { return require('./Schema-
|
|
94
|
+
const schemaMod = await Promise.resolve().then(function () { return require('./Schema-qEp5mH1N.js'); });
|
|
95
95
|
const { Schema } = schemaMod;
|
|
96
96
|
const schema = Schema.create(schemaName, { waitForReady: false });
|
|
97
97
|
schema.getService().send({
|
|
@@ -124,7 +124,7 @@ const compareAndMarkDraft = xstate.fromCallback(({ sendBack, input: { context }
|
|
|
124
124
|
const schemaFileIdForResolve = fullContext._propertyFileId || (typeof fullContext.id === 'string' ? fullContext.id : undefined);
|
|
125
125
|
if (schemaFileIdForResolve && (fullContext.modelName === undefined || fullContext.dataType === undefined)) {
|
|
126
126
|
try {
|
|
127
|
-
const dbMod = await Promise.resolve().then(function () { return require('./index-
|
|
127
|
+
const dbMod = await Promise.resolve().then(function () { return require('./index-C66AfYDG.js'); }).then(function (n) { return n.db; });
|
|
128
128
|
const { getPropertyModelNameAndDataType, getModelNameByModelId } = dbMod;
|
|
129
129
|
let fromDb;
|
|
130
130
|
for (let attempt = 0; attempt < 6; attempt++) {
|
|
@@ -169,7 +169,7 @@ const compareAndMarkDraft = xstate.fromCallback(({ sendBack, input: { context }
|
|
|
169
169
|
if (fullContext.modelName && fullContext.name && schemaFileId) {
|
|
170
170
|
logger$2(`[compareAndMarkDraft] _originalValues not set, but saving to database anyway for property ${context.modelName}:${context.name} (schemaFileId: ${schemaFileId})`);
|
|
171
171
|
try {
|
|
172
|
-
const dbMod = await Promise.resolve().then(function () { return require('./index-
|
|
172
|
+
const dbMod = await Promise.resolve().then(function () { return require('./index-C66AfYDG.js'); }).then(function (n) { return n.db; });
|
|
173
173
|
const { savePropertyToDb } = dbMod;
|
|
174
174
|
// Ensure _propertyFileId is set for savePropertyToDb to find the property
|
|
175
175
|
const contextWithFileId = {
|
|
@@ -229,7 +229,7 @@ const compareAndMarkDraft = xstate.fromCallback(({ sendBack, input: { context }
|
|
|
229
229
|
logger$2(`Property ${fullContext.modelName}:${fullContext.name} has changes, marking as edited`);
|
|
230
230
|
logger$2(`[compareAndMarkDraft] Context when saving: id=${fullContext.id}, _propertyFileId=${fullContext._propertyFileId}, name=${fullContext.name}, _originalValues.name=${fullContext._originalValues?.name}`);
|
|
231
231
|
// Use dynamic import to break circular dependency
|
|
232
|
-
const dbMod = await Promise.resolve().then(function () { return require('./index-
|
|
232
|
+
const dbMod = await Promise.resolve().then(function () { return require('./index-C66AfYDG.js'); }).then(function (n) { return n.db; });
|
|
233
233
|
const { savePropertyToDb } = dbMod;
|
|
234
234
|
// Save to database (but not JSON file) - always save to DB when there are changes
|
|
235
235
|
try {
|
|
@@ -243,7 +243,7 @@ const compareAndMarkDraft = xstate.fromCallback(({ sendBack, input: { context }
|
|
|
243
243
|
// Mark schema as draft if schema name is available
|
|
244
244
|
if (fullContext._schemaName) {
|
|
245
245
|
// Get the Schema instance and mark it as draft
|
|
246
|
-
const schemaMod = await Promise.resolve().then(function () { return require('./Schema-
|
|
246
|
+
const schemaMod = await Promise.resolve().then(function () { return require('./Schema-qEp5mH1N.js'); });
|
|
247
247
|
const { Schema } = schemaMod;
|
|
248
248
|
const schema = Schema.create(fullContext._schemaName, {
|
|
249
249
|
waitForReady: false,
|
|
@@ -260,18 +260,19 @@ const compareAndMarkDraft = xstate.fromCallback(({ sendBack, input: { context }
|
|
|
260
260
|
logger$2(`Property ${fullContext.modelName}:${fullContext.name} has no changes`);
|
|
261
261
|
// Clear isEdited flag in database
|
|
262
262
|
try {
|
|
263
|
-
const seedSchemaMod = await Promise.resolve().then(function () { return require('./index-
|
|
263
|
+
const seedSchemaMod = await Promise.resolve().then(function () { return require('./index-C66AfYDG.js'); }).then(function (n) { return n.schema; });
|
|
264
264
|
const { properties: propertiesTable, models: modelsTable } = seedSchemaMod;
|
|
265
265
|
const drizzleMod = await import('drizzle-orm');
|
|
266
266
|
const { eq, and } = drizzleMod;
|
|
267
267
|
const db = main_cjs.BaseDb.getAppDb();
|
|
268
268
|
if (db && fullContext.modelName && fullContext.name) {
|
|
269
|
-
// Find model
|
|
270
|
-
const
|
|
271
|
-
|
|
272
|
-
.
|
|
273
|
-
|
|
274
|
-
|
|
269
|
+
// Find this property's model (model names are only unique per schema)
|
|
270
|
+
const { resolveModelRecord } = await Promise.resolve().then(function () { return require('./index-C66AfYDG.js'); }).then(function (n) { return n.resolveModelRecord$1; });
|
|
271
|
+
const modelRecord = await resolveModelRecord(fullContext.modelName, {
|
|
272
|
+
modelId: typeof fullContext.modelId === 'number' ? fullContext.modelId : undefined,
|
|
273
|
+
schemaName: fullContext._schemaName,
|
|
274
|
+
}, db);
|
|
275
|
+
const modelRecords = modelRecord ? [modelRecord] : [];
|
|
275
276
|
if (modelRecords.length > 0) {
|
|
276
277
|
// Find property by name and modelId
|
|
277
278
|
const propertyRecords = await db
|
|
@@ -324,7 +325,7 @@ const validateProperty = xstate.fromCallback(({ sendBack, input: { context } })
|
|
|
324
325
|
// Brief wait so trackPendingWrite from ModelProperty.create() has time to run (it's in setTimeout(0))
|
|
325
326
|
await new Promise((r) => setTimeout(r, 60));
|
|
326
327
|
try {
|
|
327
|
-
const dbMod = await Promise.resolve().then(function () { return require('./index-
|
|
328
|
+
const dbMod = await Promise.resolve().then(function () { return require('./index-C66AfYDG.js'); }).then(function (n) { return n.db; });
|
|
328
329
|
const { getPropertyModelNameAndDataType, getModelNameByModelId } = dbMod;
|
|
329
330
|
// Try pending write first (property row may not exist yet)
|
|
330
331
|
if (fullContext.modelName === undefined && schemaFileId) {
|
|
@@ -376,10 +377,10 @@ const validateProperty = xstate.fromCallback(({ sendBack, input: { context } })
|
|
|
376
377
|
fullContext = { ...fullContext, dataType: (fullContext.dataType ?? context._originalValues?.dataType) || 'Text' };
|
|
377
378
|
}
|
|
378
379
|
// Use dynamic imports to break circular dependencies
|
|
379
|
-
const validationServiceMod = await Promise.resolve().then(function () { return require('./SchemaValidationService-
|
|
380
|
+
const validationServiceMod = await Promise.resolve().then(function () { return require('./SchemaValidationService-CWEnZmOH.js'); });
|
|
380
381
|
const { SchemaValidationService } = validationServiceMod;
|
|
381
382
|
const validationService = new SchemaValidationService();
|
|
382
|
-
const schemaMod = await Promise.resolve().then(function () { return require('./Schema-
|
|
383
|
+
const schemaMod = await Promise.resolve().then(function () { return require('./Schema-qEp5mH1N.js'); });
|
|
383
384
|
const { Schema } = schemaMod;
|
|
384
385
|
// Validate property structure
|
|
385
386
|
const structureResult = validationService.validatePropertyStructure(fullContext);
|
|
@@ -481,9 +482,6 @@ const modelPropertyMachine = xstate.setup({
|
|
|
481
482
|
const valid = !context._validationErrors || context._validationErrors.length === 0;
|
|
482
483
|
return valid;
|
|
483
484
|
},
|
|
484
|
-
hasValidationErrors: ({ context }) => {
|
|
485
|
-
return !!context._validationErrors && context._validationErrors.length > 0;
|
|
486
|
-
},
|
|
487
485
|
},
|
|
488
486
|
actions: {
|
|
489
487
|
assignValidationErrors: xstate.assign(({ context, event }) => {
|
|
@@ -582,7 +580,8 @@ const modelPropertyMachine = xstate.setup({
|
|
|
582
580
|
actions: xstate.assign(({ context, event }) => ({
|
|
583
581
|
...context,
|
|
584
582
|
_originalValues: event.originalValues,
|
|
585
|
-
|
|
583
|
+
// Senders don't know the schema name; keep one setSchemaName already stored.
|
|
584
|
+
_schemaName: event.schemaName ?? context._schemaName,
|
|
586
585
|
_isEdited: event.isEdited ?? false,
|
|
587
586
|
_validationErrors: undefined,
|
|
588
587
|
})),
|
|
@@ -601,22 +600,15 @@ const modelPropertyMachine = xstate.setup({
|
|
|
601
600
|
})),
|
|
602
601
|
},
|
|
603
602
|
destroyStarted: {
|
|
604
|
-
actions: xstate.assign({
|
|
605
|
-
},
|
|
606
|
-
destroyDone: {
|
|
607
|
-
actions: xstate.assign({ _destroyInProgress: false }),
|
|
603
|
+
actions: xstate.assign({ _destroyError: null }),
|
|
608
604
|
},
|
|
609
605
|
destroyError: {
|
|
610
606
|
actions: xstate.assign(({ event }) => ({
|
|
611
|
-
_destroyInProgress: false,
|
|
612
607
|
_destroyError: event.error instanceof Error
|
|
613
608
|
? { message: event.error.message, name: event.error.name }
|
|
614
609
|
: { message: String(event.error) },
|
|
615
610
|
})),
|
|
616
611
|
},
|
|
617
|
-
clearDestroyError: {
|
|
618
|
-
actions: xstate.assign({ _destroyError: null }),
|
|
619
|
-
},
|
|
620
612
|
},
|
|
621
613
|
states: {
|
|
622
614
|
idle: {
|
|
@@ -691,11 +683,9 @@ const modelPropertyMachine = xstate.setup({
|
|
|
691
683
|
},
|
|
692
684
|
},
|
|
693
685
|
saveToSchema: {
|
|
694
|
-
always
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
},
|
|
698
|
-
initial: 'saving',
|
|
686
|
+
// Gate the save in a transient child. An `always` on this parent targeting `.saving` re-enters
|
|
687
|
+
// the invoking child on every microstep and never settles (save() ran the process out of memory).
|
|
688
|
+
initial: 'checking',
|
|
699
689
|
on: {
|
|
700
690
|
// Apply updateContext but do not re-invoke saveToSchema actor (avoids infinite loop).
|
|
701
691
|
// Context is updated; in-flight save completes with original context.
|
|
@@ -772,6 +762,12 @@ const modelPropertyMachine = xstate.setup({
|
|
|
772
762
|
},
|
|
773
763
|
},
|
|
774
764
|
states: {
|
|
765
|
+
checking: {
|
|
766
|
+
always: [
|
|
767
|
+
{ guard: 'isPropertyValid', target: 'saving' },
|
|
768
|
+
{ target: '#modelProperty.idle' },
|
|
769
|
+
],
|
|
770
|
+
},
|
|
775
771
|
saving: {
|
|
776
772
|
on: {
|
|
777
773
|
saveToSchemaSuccess: {
|
|
@@ -854,6 +850,15 @@ class ModelProperty {
|
|
|
854
850
|
this._initializeOriginalValues(property);
|
|
855
851
|
// Note: Property getters/setters are now handled by the Proxy in create()
|
|
856
852
|
}
|
|
853
|
+
/**
|
|
854
|
+
* Send from fire-and-forget async work (DB lookups started in the constructor), which can finish
|
|
855
|
+
* after the instance was unloaded or evicted with its schema.
|
|
856
|
+
*/
|
|
857
|
+
_sendIfRunning(event) {
|
|
858
|
+
if (main_cjs.isActorStopped(this._service))
|
|
859
|
+
return;
|
|
860
|
+
this._service.send(event);
|
|
861
|
+
}
|
|
857
862
|
/**
|
|
858
863
|
* Initialize original values and schema name for tracking changes
|
|
859
864
|
* This is called asynchronously after construction
|
|
@@ -865,10 +870,10 @@ class ModelProperty {
|
|
|
865
870
|
const refModelName = property.refModelName || property.ref;
|
|
866
871
|
if (refModelName && !property.refModelId) {
|
|
867
872
|
// Resolve refModelId asynchronously and update context
|
|
868
|
-
this._resolveRefModelId(refModelName).then((refModelId) => {
|
|
873
|
+
this._resolveRefModelId(refModelName, property).then((refModelId) => {
|
|
869
874
|
if (refModelId) {
|
|
870
875
|
// Update the context with the resolved refModelId
|
|
871
|
-
this.
|
|
876
|
+
this._sendIfRunning({
|
|
872
877
|
type: 'updateContext',
|
|
873
878
|
refModelId,
|
|
874
879
|
});
|
|
@@ -936,7 +941,7 @@ class ModelProperty {
|
|
|
936
941
|
// Initialize with original values, including isEdited flag
|
|
937
942
|
// Load isEdited from database if property exists in DB (async, fire-and-forget)
|
|
938
943
|
this._loadIsEditedFromDb(property, isEdited).then((isEditedFromDb) => {
|
|
939
|
-
this.
|
|
944
|
+
this._sendIfRunning({
|
|
940
945
|
type: 'initializeOriginalValues',
|
|
941
946
|
originalValues,
|
|
942
947
|
schemaName: undefined, // Will be set later if needed
|
|
@@ -944,7 +949,7 @@ class ModelProperty {
|
|
|
944
949
|
});
|
|
945
950
|
}).catch(() => {
|
|
946
951
|
// If we can't load from DB, use computed isEdited value
|
|
947
|
-
this.
|
|
952
|
+
this._sendIfRunning({
|
|
948
953
|
type: 'initializeOriginalValues',
|
|
949
954
|
originalValues,
|
|
950
955
|
schemaName: undefined, // Will be set later if needed
|
|
@@ -959,7 +964,7 @@ class ModelProperty {
|
|
|
959
964
|
originalValues[key] = property[key];
|
|
960
965
|
}
|
|
961
966
|
});
|
|
962
|
-
this.
|
|
967
|
+
this._sendIfRunning({
|
|
963
968
|
type: 'initializeOriginalValues',
|
|
964
969
|
originalValues,
|
|
965
970
|
schemaName: undefined,
|
|
@@ -967,7 +972,7 @@ class ModelProperty {
|
|
|
967
972
|
});
|
|
968
973
|
// Get schema name from model asynchronously (fire-and-forget)
|
|
969
974
|
if (property.modelName) {
|
|
970
|
-
this._setSchemaName(property
|
|
975
|
+
this._setSchemaName(property).catch(() => {
|
|
971
976
|
// If we can't get schema name, that's okay - it will be set later if needed
|
|
972
977
|
});
|
|
973
978
|
}
|
|
@@ -987,12 +992,10 @@ class ModelProperty {
|
|
|
987
992
|
if (!db) {
|
|
988
993
|
return fallbackIsEdited;
|
|
989
994
|
}
|
|
990
|
-
// Find model by
|
|
991
|
-
const
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
.where(drizzleOrm.eq(main_cjs.models.name, property.modelName))
|
|
995
|
-
.limit(1);
|
|
995
|
+
// Find this property's model (by modelId when known; model names are only unique per schema)
|
|
996
|
+
const { resolveModelRecord } = await Promise.resolve().then(function () { return require('./index-C66AfYDG.js'); }).then(function (n) { return n.resolveModelRecord$1; });
|
|
997
|
+
const modelRecord = await resolveModelRecord(property.modelName, this._ownerModelScope(property), db);
|
|
998
|
+
const modelRecords = modelRecord ? [modelRecord] : [];
|
|
996
999
|
if (modelRecords.length === 0) {
|
|
997
1000
|
return fallbackIsEdited;
|
|
998
1001
|
}
|
|
@@ -1016,7 +1019,7 @@ class ModelProperty {
|
|
|
1016
1019
|
* @param refModelName - The name of the referenced model
|
|
1017
1020
|
* @returns The database ID of the referenced model, or undefined if not found
|
|
1018
1021
|
*/
|
|
1019
|
-
async _resolveRefModelId(refModelName) {
|
|
1022
|
+
async _resolveRefModelId(refModelName, property) {
|
|
1020
1023
|
if (!refModelName) {
|
|
1021
1024
|
return undefined;
|
|
1022
1025
|
}
|
|
@@ -1025,13 +1028,11 @@ class ModelProperty {
|
|
|
1025
1028
|
if (!db) {
|
|
1026
1029
|
return undefined;
|
|
1027
1030
|
}
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
.
|
|
1033
|
-
if (refModelRecords.length > 0 && refModelRecords[0].id) {
|
|
1034
|
-
return refModelRecords[0].id;
|
|
1031
|
+
// Resolve the ref within the owning model's schema
|
|
1032
|
+
const { resolveRefModelRecord } = await Promise.resolve().then(function () { return require('./index-C66AfYDG.js'); }).then(function (n) { return n.resolveModelRecord$1; });
|
|
1033
|
+
const refModelRecord = await resolveRefModelRecord(refModelName, property ? this._ownerModelScope(property) : { schemaName: this._getSnapshotContext()._schemaName }, db);
|
|
1034
|
+
if (refModelRecord?.id) {
|
|
1035
|
+
return refModelRecord.id;
|
|
1035
1036
|
}
|
|
1036
1037
|
}
|
|
1037
1038
|
catch (error) {
|
|
@@ -1040,6 +1041,15 @@ class ModelProperty {
|
|
|
1040
1041
|
}
|
|
1041
1042
|
return undefined;
|
|
1042
1043
|
}
|
|
1044
|
+
/** Which model this property belongs to: its models row id and/or schema. */
|
|
1045
|
+
_ownerModelScope(property) {
|
|
1046
|
+
const context = this._getSnapshotContext();
|
|
1047
|
+
const modelId = property.modelId ?? context.modelId;
|
|
1048
|
+
return {
|
|
1049
|
+
modelId: typeof modelId === 'number' ? modelId : undefined,
|
|
1050
|
+
schemaName: context._schemaName,
|
|
1051
|
+
};
|
|
1052
|
+
}
|
|
1043
1053
|
/**
|
|
1044
1054
|
* Get schema file values for this property to use as "original" values
|
|
1045
1055
|
* This allows comparison with database values to detect edits
|
|
@@ -1049,7 +1059,32 @@ class ModelProperty {
|
|
|
1049
1059
|
return undefined;
|
|
1050
1060
|
}
|
|
1051
1061
|
try {
|
|
1052
|
-
const
|
|
1062
|
+
const { modelId, schemaName } = this._ownerModelScope(property);
|
|
1063
|
+
// Synchronous cache hits first: callers compare against these values right after construction,
|
|
1064
|
+
// so an extra await here lets every property look "edited" (a draft save each). Only then the
|
|
1065
|
+
// DB (by modelId), and never instantiate a Model while its own properties are initializing.
|
|
1066
|
+
let model = schemaName ? main_cjs.Model.getByName(property.modelName, schemaName) : undefined;
|
|
1067
|
+
if (!model) {
|
|
1068
|
+
try {
|
|
1069
|
+
model = main_cjs.Model.getByName(property.modelName);
|
|
1070
|
+
}
|
|
1071
|
+
catch {
|
|
1072
|
+
model = undefined; // ambiguous name; resolve by modelId below
|
|
1073
|
+
}
|
|
1074
|
+
}
|
|
1075
|
+
if (!model && modelId) {
|
|
1076
|
+
const { resolveModelRecord } = await Promise.resolve().then(function () { return require('./index-C66AfYDG.js'); }).then(function (n) { return n.resolveModelRecord$1; });
|
|
1077
|
+
const modelFileId = (await resolveModelRecord(property.modelName, { modelId }))?.schemaFileId;
|
|
1078
|
+
model = modelFileId ? main_cjs.Model.getById(modelFileId) : undefined;
|
|
1079
|
+
}
|
|
1080
|
+
if (!model) {
|
|
1081
|
+
try {
|
|
1082
|
+
model = await main_cjs.Model.getByNameAsync(property.modelName);
|
|
1083
|
+
}
|
|
1084
|
+
catch {
|
|
1085
|
+
model = undefined;
|
|
1086
|
+
}
|
|
1087
|
+
}
|
|
1053
1088
|
if (!model || !model.properties || model.properties.length === 0) {
|
|
1054
1089
|
return undefined;
|
|
1055
1090
|
}
|
|
@@ -1073,7 +1108,7 @@ class ModelProperty {
|
|
|
1073
1108
|
originalValues.ref = schemaFileValue.ref;
|
|
1074
1109
|
originalValues.refModelName = schemaFileValue.ref;
|
|
1075
1110
|
// Try to get refModelId from database
|
|
1076
|
-
const refModelId = await this._resolveRefModelId(schemaFileValue.ref);
|
|
1111
|
+
const refModelId = await this._resolveRefModelId(schemaFileValue.ref, property);
|
|
1077
1112
|
if (refModelId) {
|
|
1078
1113
|
originalValues.refModelId = refModelId;
|
|
1079
1114
|
}
|
|
@@ -1091,11 +1126,19 @@ class ModelProperty {
|
|
|
1091
1126
|
* Set the schema name for this property by looking it up from the model
|
|
1092
1127
|
* Tries database first (more reliable), then falls back to schema files
|
|
1093
1128
|
*/
|
|
1094
|
-
async _setSchemaName(
|
|
1129
|
+
async _setSchemaName(property) {
|
|
1095
1130
|
try {
|
|
1131
|
+
// create() sets the schema name right after construction when its caller knows it. Don't look it
|
|
1132
|
+
// up then: the file fallback below reads and parses every schema file, per property.
|
|
1133
|
+
await Promise.resolve();
|
|
1134
|
+
if (this._getSnapshotContext()._schemaName)
|
|
1135
|
+
return;
|
|
1096
1136
|
let schemaName;
|
|
1137
|
+
// From the property data: the instance's own modelId field is never assigned (the reactive proxy
|
|
1138
|
+
// serves values from the machine context), so reading this.modelId skipped the DB lookup.
|
|
1139
|
+
const { modelId } = this._ownerModelScope(property);
|
|
1097
1140
|
// Try to get schema name from database first (more reliable)
|
|
1098
|
-
if (
|
|
1141
|
+
if (modelId) {
|
|
1099
1142
|
try {
|
|
1100
1143
|
const db = main_cjs.BaseDb.getAppDb();
|
|
1101
1144
|
if (db) {
|
|
@@ -1106,7 +1149,7 @@ class ModelProperty {
|
|
|
1106
1149
|
.from(main_cjs.modelSchemas)
|
|
1107
1150
|
.innerJoin(main_cjs.schemas, drizzleOrm.eq(main_cjs.modelSchemas.schemaId, main_cjs.schemas.id))
|
|
1108
1151
|
.innerJoin(main_cjs.models, drizzleOrm.eq(main_cjs.modelSchemas.modelId, main_cjs.models.id))
|
|
1109
|
-
.where(drizzleOrm.eq(main_cjs.models.id,
|
|
1152
|
+
.where(drizzleOrm.eq(main_cjs.models.id, modelId))
|
|
1110
1153
|
.limit(1);
|
|
1111
1154
|
if (modelSchemaRecords.length > 0) {
|
|
1112
1155
|
schemaName = modelSchemaRecords[0].schemaName;
|
|
@@ -1119,11 +1162,11 @@ class ModelProperty {
|
|
|
1119
1162
|
}
|
|
1120
1163
|
// Fall back to schema file lookup if database didn't work
|
|
1121
1164
|
if (!schemaName) {
|
|
1122
|
-
schemaName = await getSchemaNameFromModel(modelName);
|
|
1165
|
+
schemaName = await getSchemaNameFromModel(property.modelName);
|
|
1123
1166
|
}
|
|
1124
1167
|
if (schemaName) {
|
|
1125
1168
|
// Update the context with the schema name using dedicated event
|
|
1126
|
-
this.
|
|
1169
|
+
this._sendIfRunning({
|
|
1127
1170
|
type: 'setSchemaName',
|
|
1128
1171
|
schemaName,
|
|
1129
1172
|
});
|
|
@@ -1220,11 +1263,32 @@ class ModelProperty {
|
|
|
1220
1263
|
logger(`ModelProperty.create: Generated new id (schemaFileId) "${propertyWithId.id}" for property "${property.name}"`);
|
|
1221
1264
|
}
|
|
1222
1265
|
// Create cache key from modelName and name, or use id
|
|
1223
|
-
|
|
1266
|
+
let cacheKey = propertyWithId.modelName && propertyWithId.name
|
|
1224
1267
|
? `${propertyWithId.modelName}:${propertyWithId.name}`
|
|
1225
1268
|
: propertyWithId.id
|
|
1226
1269
|
? `id:${propertyWithId.id}`
|
|
1227
1270
|
: propertyWithId.name || 'unnamed';
|
|
1271
|
+
// Model names are only unique per schema: a cached "Post:title" may be another schema's
|
|
1272
|
+
// property. If the ids say it's a different property, key this one by its own id instead.
|
|
1273
|
+
// (Not by file id: the same property is often created first with a generated id, then its real one.)
|
|
1274
|
+
const isOtherProperty = (cachedContext) => (typeof propertyWithId.modelId === 'number' &&
|
|
1275
|
+
typeof cachedContext.modelId === 'number' &&
|
|
1276
|
+
cachedContext.modelId !== propertyWithId.modelId) ||
|
|
1277
|
+
(!!schemaName && !!cachedContext._schemaName && cachedContext._schemaName !== schemaName);
|
|
1278
|
+
const cachedByName = this.instanceCache.get(cacheKey);
|
|
1279
|
+
if (cachedByName && propertyWithId.id && isOtherProperty(cachedByName.instance._getSnapshotContext())) {
|
|
1280
|
+
// Reuse this property's own id-keyed entry if it already has one.
|
|
1281
|
+
cacheKey = `id:${propertyWithId.id}`;
|
|
1282
|
+
for (const [key, { instance }] of this.instanceCache.entries()) {
|
|
1283
|
+
if (!key.startsWith('id:'))
|
|
1284
|
+
continue;
|
|
1285
|
+
const ctx = instance._getSnapshotContext();
|
|
1286
|
+
if (ctx.modelName === propertyWithId.modelName && ctx.name === propertyWithId.name && !isOtherProperty(ctx)) {
|
|
1287
|
+
cacheKey = key;
|
|
1288
|
+
break;
|
|
1289
|
+
}
|
|
1290
|
+
}
|
|
1291
|
+
}
|
|
1228
1292
|
// Check if instance exists in cache
|
|
1229
1293
|
if (this.instanceCache.has(cacheKey)) {
|
|
1230
1294
|
const { instance, refCount } = this.instanceCache.get(cacheKey);
|
|
@@ -1286,11 +1350,15 @@ class ModelProperty {
|
|
|
1286
1350
|
instance: proxiedInstance,
|
|
1287
1351
|
refCount: 1,
|
|
1288
1352
|
});
|
|
1353
|
+
this.indexCachedInstance(cacheKey, proxiedInstance);
|
|
1289
1354
|
// Trigger write process if property has modelId (or modelName) and id (schemaFileId)
|
|
1290
1355
|
// Wait for service to be ready (idle state) and have writeProcess spawned
|
|
1291
1356
|
const propertyFileId = propertyWithId.id; // id is now the schemaFileId (string)
|
|
1292
1357
|
const hasModelId = propertyWithId.modelId || propertyWithId.modelName;
|
|
1293
|
-
|
|
1358
|
+
// A _dbId means the data was loaded from an existing row (createById, getPropertySchema), so
|
|
1359
|
+
// there's nothing to write. Writing it back anyway raced deletes of that row's model (FK error).
|
|
1360
|
+
const isPersisted = typeof propertyWithId._dbId === 'number';
|
|
1361
|
+
if (hasModelId && propertyFileId && !isPersisted) {
|
|
1294
1362
|
// Wait for writeProcess to be spawned (it's spawned in idle state entry action)
|
|
1295
1363
|
// Retry a few times if writeProcess isn't available yet
|
|
1296
1364
|
let retries = 0;
|
|
@@ -1298,6 +1366,9 @@ class ModelProperty {
|
|
|
1298
1366
|
const checkAndSend = async () => {
|
|
1299
1367
|
const service = proxiedInstance.getService();
|
|
1300
1368
|
const snapshot = service.getSnapshot();
|
|
1369
|
+
// Unloaded or evicted (e.g. Schema.destroy) before the write started: nothing to write to
|
|
1370
|
+
if (main_cjs.isActorStopped(service))
|
|
1371
|
+
return;
|
|
1301
1372
|
if (snapshot.value === 'idle' && snapshot.context.writeProcess) {
|
|
1302
1373
|
const writeProcess = snapshot.context.writeProcess;
|
|
1303
1374
|
// Resolve dbModelId - convert from string (modelFileId) to number (database ID) if needed
|
|
@@ -1337,14 +1408,17 @@ class ModelProperty {
|
|
|
1337
1408
|
// Don't clear pending write here - it might resolve later
|
|
1338
1409
|
return;
|
|
1339
1410
|
}
|
|
1411
|
+
// Resolving the modelId awaited the DB; the instance may have been stopped meanwhile
|
|
1412
|
+
if (main_cjs.isActorStopped(service))
|
|
1413
|
+
return;
|
|
1340
1414
|
// Track pending write now that we have the resolved modelId
|
|
1341
1415
|
this.trackPendingWrite(propertyFileId, resolvedModelId);
|
|
1342
1416
|
logger(`Triggering write process for property "${property.name}" (modelId: ${resolvedModelId}, propertyFileId: ${propertyFileId})`);
|
|
1343
1417
|
// Check current write state
|
|
1344
1418
|
const currentWriteState = writeProcess.getSnapshot();
|
|
1345
1419
|
if (currentWriteState.value === 'success') {
|
|
1346
|
-
// Write already succeeded
|
|
1347
|
-
this.
|
|
1420
|
+
// Write already succeeded
|
|
1421
|
+
void this.completePendingWrite(propertyFileId, resolvedModelId);
|
|
1348
1422
|
}
|
|
1349
1423
|
else {
|
|
1350
1424
|
// Set up subscription to catch future state changes
|
|
@@ -1352,8 +1426,7 @@ class ModelProperty {
|
|
|
1352
1426
|
if (writeSnapshot.value === 'success') {
|
|
1353
1427
|
writeSubscription.unsubscribe();
|
|
1354
1428
|
logger(`[writeProcess subscription] Write succeeded for property "${property.name}" (propertyFileId: ${propertyFileId})`);
|
|
1355
|
-
|
|
1356
|
-
this.clearPendingWrite(propertyFileId, 'success');
|
|
1429
|
+
void this.completePendingWrite(propertyFileId, resolvedModelId);
|
|
1357
1430
|
}
|
|
1358
1431
|
else if (writeSnapshot.value === 'error') {
|
|
1359
1432
|
writeSubscription.unsubscribe();
|
|
@@ -1371,6 +1444,7 @@ class ModelProperty {
|
|
|
1371
1444
|
dataType: property.dataType,
|
|
1372
1445
|
refModelId: property.refModelId,
|
|
1373
1446
|
refValueType: property.refValueType,
|
|
1447
|
+
required: property.required,
|
|
1374
1448
|
storageType: property.storageType,
|
|
1375
1449
|
localStorageDir: property.localStorageDir,
|
|
1376
1450
|
filenameSuffix: property.filenameSuffix,
|
|
@@ -1398,18 +1472,56 @@ class ModelProperty {
|
|
|
1398
1472
|
return proxiedInstance;
|
|
1399
1473
|
return main_cjs.waitForEntityIdle(proxiedInstance, { timeout: readyTimeout }).then(() => proxiedInstance);
|
|
1400
1474
|
}
|
|
1475
|
+
/** Whether an idIndex entry still points at a cached instance with that id. */
|
|
1476
|
+
static isIndexEntryCurrent(propertyFileId, entry) {
|
|
1477
|
+
if (this.instanceCache.get(entry.cacheKey)?.instance !== entry.instance)
|
|
1478
|
+
return false;
|
|
1479
|
+
try {
|
|
1480
|
+
return entry.instance._getSnapshotContext().id === propertyFileId;
|
|
1481
|
+
}
|
|
1482
|
+
catch {
|
|
1483
|
+
return false;
|
|
1484
|
+
}
|
|
1485
|
+
}
|
|
1486
|
+
/** Add a newly cached instance to idIndex, and keep its entry current when its id changes. */
|
|
1487
|
+
static indexCachedInstance(cacheKey, instance) {
|
|
1488
|
+
const index = (id) => {
|
|
1489
|
+
if (!id)
|
|
1490
|
+
return;
|
|
1491
|
+
const existing = this.idIndex.get(id);
|
|
1492
|
+
// Keep the instance cached first, as the old scan in insertion order returned
|
|
1493
|
+
if (existing && existing.instance !== instance && this.isIndexEntryCurrent(id, existing))
|
|
1494
|
+
return;
|
|
1495
|
+
this.idIndex.set(id, { cacheKey, instance });
|
|
1496
|
+
};
|
|
1497
|
+
let indexedId = instance._getSnapshotContext().id;
|
|
1498
|
+
index(indexedId);
|
|
1499
|
+
instance._service.subscribe((snapshot) => {
|
|
1500
|
+
const id = snapshot.context.id;
|
|
1501
|
+
if (id === indexedId)
|
|
1502
|
+
return;
|
|
1503
|
+
indexedId = id;
|
|
1504
|
+
index(id);
|
|
1505
|
+
});
|
|
1506
|
+
}
|
|
1401
1507
|
/**
|
|
1402
1508
|
* Get ModelProperty instance by propertyFileId from static cache
|
|
1403
1509
|
*/
|
|
1404
1510
|
static getById(propertyFileId) {
|
|
1405
1511
|
if (!propertyFileId)
|
|
1406
1512
|
return undefined;
|
|
1407
|
-
|
|
1513
|
+
const indexed = this.idIndex.get(propertyFileId);
|
|
1514
|
+
if (!indexed)
|
|
1515
|
+
return undefined;
|
|
1516
|
+
if (this.isIndexEntryCurrent(propertyFileId, indexed))
|
|
1517
|
+
return indexed.instance;
|
|
1518
|
+
// The indexed instance left the cache or changed id; another cached instance may still have it.
|
|
1408
1519
|
// Cache key might be "modelName:propertyName" or "id:propertyId"
|
|
1520
|
+
this.idIndex.delete(propertyFileId);
|
|
1409
1521
|
for (const [cacheKey, { instance }] of this.instanceCache.entries()) {
|
|
1410
|
-
const context = instance._getSnapshotContext();
|
|
1411
1522
|
// id is now the schemaFileId (string)
|
|
1412
|
-
if (
|
|
1523
|
+
if (instance._getSnapshotContext().id === propertyFileId) {
|
|
1524
|
+
this.idIndex.set(propertyFileId, { cacheKey, instance });
|
|
1413
1525
|
return instance;
|
|
1414
1526
|
}
|
|
1415
1527
|
}
|
|
@@ -1468,6 +1580,9 @@ class ModelProperty {
|
|
|
1468
1580
|
refModelId: propertyRecord.refModelId || undefined,
|
|
1469
1581
|
refValueType: propertyRecord.refValueType ? propertyRecord.refValueType : undefined,
|
|
1470
1582
|
required: propertyRecord.required ?? false,
|
|
1583
|
+
storageType: propertyRecord.storageType ?? undefined,
|
|
1584
|
+
localStorageDir: propertyRecord.localStorageDir ?? undefined,
|
|
1585
|
+
filenameSuffix: propertyRecord.filenameSuffix ?? undefined,
|
|
1471
1586
|
};
|
|
1472
1587
|
// Load isEdited from database
|
|
1473
1588
|
const isEditedFromDb = propertyRecord.isEdited ?? false;
|
|
@@ -1549,6 +1664,20 @@ class ModelProperty {
|
|
|
1549
1664
|
timestamp: Date.now(),
|
|
1550
1665
|
});
|
|
1551
1666
|
}
|
|
1667
|
+
/**
|
|
1668
|
+
* A property write succeeded: add the property to its model's property ids, then drop the pending
|
|
1669
|
+
* write. In that order, `Model.properties` (property ids + pending writes) never misses it; in Node,
|
|
1670
|
+
* where the Model has no reactive liveQuery, nothing else would add it.
|
|
1671
|
+
*/
|
|
1672
|
+
static async completePendingWrite(propertyFileId, modelId) {
|
|
1673
|
+
try {
|
|
1674
|
+
await main_cjs.Model.refreshPropertiesForDbId(modelId);
|
|
1675
|
+
}
|
|
1676
|
+
catch (error) {
|
|
1677
|
+
logger(`Refreshing properties of model ${modelId} after writing "${propertyFileId}" failed: ${error}`);
|
|
1678
|
+
}
|
|
1679
|
+
this.clearPendingWrite(propertyFileId, 'success');
|
|
1680
|
+
}
|
|
1552
1681
|
/**
|
|
1553
1682
|
* Clear or update pending write status
|
|
1554
1683
|
*/
|
|
@@ -1687,6 +1816,36 @@ class ModelProperty {
|
|
|
1687
1816
|
logger('ModelProperty.reload() called - ModelProperty is loaded as part of Model/Schema. Reload the parent Model or Schema instead.');
|
|
1688
1817
|
// No-op for now, but could be enhanced to reload from DB if needed
|
|
1689
1818
|
}
|
|
1819
|
+
/**
|
|
1820
|
+
* Force-evict cached ModelProperty instances for the given models, ignoring refCounts, and stop
|
|
1821
|
+
* their services. Used by Schema.destroy() so a re-imported schema gets fresh instances instead of
|
|
1822
|
+
* ones holding a deleted row's _dbId.
|
|
1823
|
+
*/
|
|
1824
|
+
static evictForModels(modelNames, schemaName) {
|
|
1825
|
+
if (modelNames.length === 0)
|
|
1826
|
+
return;
|
|
1827
|
+
const names = new Set(modelNames);
|
|
1828
|
+
for (const [cacheKey, { instance }] of this.instanceCache.entries()) {
|
|
1829
|
+
let context;
|
|
1830
|
+
try {
|
|
1831
|
+
context = instance._getSnapshotContext();
|
|
1832
|
+
}
|
|
1833
|
+
catch {
|
|
1834
|
+
continue;
|
|
1835
|
+
}
|
|
1836
|
+
if (!context.modelName || !names.has(context.modelName))
|
|
1837
|
+
continue;
|
|
1838
|
+
if (schemaName && context._schemaName && context._schemaName !== schemaName)
|
|
1839
|
+
continue;
|
|
1840
|
+
this.instanceCache.delete(cacheKey);
|
|
1841
|
+
try {
|
|
1842
|
+
instance._service.stop();
|
|
1843
|
+
}
|
|
1844
|
+
catch {
|
|
1845
|
+
// Service might already be stopped
|
|
1846
|
+
}
|
|
1847
|
+
}
|
|
1848
|
+
}
|
|
1690
1849
|
unload() {
|
|
1691
1850
|
// ModelProperty doesn't have liveQuery subscriptions or complex cache management
|
|
1692
1851
|
// Just stop the service
|
|
@@ -1702,13 +1861,24 @@ class ModelProperty {
|
|
|
1702
1861
|
*/
|
|
1703
1862
|
async destroy() {
|
|
1704
1863
|
const context = this._getSnapshotContext();
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1864
|
+
// Stored under "modelName:name", or "id:<id>" when another schema's same-name property holds that key
|
|
1865
|
+
const cacheKeys = [...ModelProperty.instanceCache.entries()]
|
|
1866
|
+
.filter(([, entry]) => {
|
|
1867
|
+
try {
|
|
1868
|
+
return entry.instance._getSnapshotContext().id === context.id;
|
|
1869
|
+
}
|
|
1870
|
+
catch {
|
|
1871
|
+
return false;
|
|
1872
|
+
}
|
|
1873
|
+
})
|
|
1874
|
+
.map(([key]) => key);
|
|
1875
|
+
if (cacheKeys.length === 0 && context.modelName && context.name) {
|
|
1876
|
+
cacheKeys.push(`${context.modelName}:${context.name}`);
|
|
1877
|
+
}
|
|
1878
|
+
if (cacheKeys.length === 0)
|
|
1709
1879
|
return;
|
|
1710
1880
|
main_cjs.forceRemoveFromCaches(this, {
|
|
1711
|
-
getCacheKeys: () =>
|
|
1881
|
+
getCacheKeys: () => cacheKeys,
|
|
1712
1882
|
caches: [ModelProperty.instanceCache],
|
|
1713
1883
|
});
|
|
1714
1884
|
await main_cjs.runDestroyLifecycle(this, {
|
|
@@ -1757,6 +1927,15 @@ class ModelProperty {
|
|
|
1757
1927
|
}
|
|
1758
1928
|
}
|
|
1759
1929
|
ModelProperty.instanceCache = new Map();
|
|
1930
|
+
/**
|
|
1931
|
+
* propertyFileId -> where the instance with that id is cached, so getById doesn't scan the cache
|
|
1932
|
+
* (a model's properties are looked up one by one, which made loading one model O(n²)).
|
|
1933
|
+
* Every cached instance's current id has an entry: it's added when the instance is cached and
|
|
1934
|
+
* again whenever its context id changes (a property is often created with a generated id and
|
|
1935
|
+
* then gets its real one). Entries aren't removed when an instance leaves the cache or changes
|
|
1936
|
+
* id; getById checks an entry before using it.
|
|
1937
|
+
*/
|
|
1938
|
+
ModelProperty.idIndex = new Map();
|
|
1760
1939
|
// Pending writes tracking
|
|
1761
1940
|
ModelProperty.pendingWrites = new Map();
|
|
1762
1941
|
|
|
@@ -1766,4 +1945,4 @@ var ModelProperty$1 = /*#__PURE__*/Object.freeze({
|
|
|
1766
1945
|
});
|
|
1767
1946
|
|
|
1768
1947
|
exports.ModelProperty = ModelProperty;
|
|
1769
|
-
//# sourceMappingURL=ModelProperty-
|
|
1948
|
+
//# sourceMappingURL=ModelProperty-BEsIHAjk.js.map
|