@seedprotocol/sdk 0.4.13 → 0.4.15
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/{ArweaveClient-Bot35vMf.js → ArweaveClient-DPeCeRMF.js} +21 -18
- package/dist/ArweaveClient-DPeCeRMF.js.map +1 -0
- package/dist/{ArweaveClient-C6mBPWwy.js → ArweaveClient-Zz6VwCkj.js} +21 -18
- package/dist/ArweaveClient-Zz6VwCkj.js.map +1 -0
- package/dist/{Db-DP7ELP9S.js → Db-Cvoi9q3N.js} +8 -5
- package/dist/Db-Cvoi9q3N.js.map +1 -0
- package/dist/{Db-rlxROH4S.js → Db-DsFElL33.js} +356 -52
- package/dist/Db-DsFElL33.js.map +1 -0
- package/dist/{EasClient-CHI9lBP8.js → EasClient-B2N8bc3C.js} +6 -5
- package/dist/{EasClient-CszJzwqw.js.map → EasClient-B2N8bc3C.js.map} +1 -1
- package/dist/{EasClient-CszJzwqw.js → EasClient-D5Nn1WBF.js} +6 -5
- package/dist/{EasClient-CHI9lBP8.js.map → EasClient-D5Nn1WBF.js.map} +1 -1
- package/dist/{FileManager-C7yOhPvS.js → FileManager-Bk-JeMoA.js} +48 -11
- package/dist/FileManager-Bk-JeMoA.js.map +1 -0
- package/dist/{FileManager-Dy3BbIxq.js → FileManager-Cqy_Lq46.js} +12 -8
- package/dist/FileManager-Cqy_Lq46.js.map +1 -0
- package/dist/{ModelProperty--OQb3Dy0.js → ModelProperty-CkQaEsBu.js} +30 -28
- package/dist/ModelProperty-CkQaEsBu.js.map +1 -0
- package/dist/{PathResolver-BtnV9pXS.js → PathResolver-C3sdR5LL.js} +6 -5
- package/dist/{PathResolver-BtnV9pXS.js.map → PathResolver-C3sdR5LL.js.map} +1 -1
- package/dist/{PathResolver-D--w4fFE.js → PathResolver-DF1QFI1d.js} +6 -5
- package/dist/{PathResolver-D--w4fFE.js.map → PathResolver-DF1QFI1d.js.map} +1 -1
- package/dist/{QueryClient-Bia5wKCO.js → QueryClient-CnONLIkA.js} +6 -5
- package/dist/{QueryClient-Bia5wKCO.js.map → QueryClient-CnONLIkA.js.map} +1 -1
- package/dist/{QueryClient-BdNnK6Es.js → QueryClient-Ctgd0tDn.js} +6 -5
- package/dist/{QueryClient-BdNnK6Es.js.map → QueryClient-Ctgd0tDn.js.map} +1 -1
- package/dist/{Schema-DF4mLt86.js → Schema-Bnim4hAF.js} +90 -57
- package/dist/Schema-Bnim4hAF.js.map +1 -0
- package/dist/{SchemaValidationService-D4LwnnIB.js → SchemaValidationService-DXxRk-9Q.js} +138 -38
- package/dist/SchemaValidationService-DXxRk-9Q.js.map +1 -0
- package/dist/backfillMetadataPropertyIds-dzwzz4dA.js +67 -0
- package/dist/backfillMetadataPropertyIds-dzwzz4dA.js.map +1 -0
- package/dist/cjs/{ModelProperty-C5BRfISV.js → ModelProperty-C80601ai.js} +23 -21
- package/dist/cjs/ModelProperty-C80601ai.js.map +1 -0
- package/dist/cjs/{Schema-DVJG8ISB.js → Schema-6BQKp7hO.js} +60 -39
- package/dist/cjs/Schema-6BQKp7hO.js.map +1 -0
- package/dist/cjs/{SchemaValidationService-_wef0VX6.js → SchemaValidationService-BySF1P0v.js} +138 -38
- package/dist/cjs/SchemaValidationService-BySF1P0v.js.map +1 -0
- package/dist/cjs/backfillMetadataPropertyIds-D9uzW5bW.js +84 -0
- package/dist/cjs/backfillMetadataPropertyIds-D9uzW5bW.js.map +1 -0
- package/dist/cjs/{getItem-CUGoglni.js → getItem-Dj49AjWB.js} +5 -4
- package/dist/cjs/{getItem-CUGoglni.js.map → getItem-Dj49AjWB.js.map} +1 -1
- package/dist/cjs/getPublishPayload-dR9co4rH.js +888 -0
- package/dist/cjs/getPublishPayload-dR9co4rH.js.map +1 -0
- package/dist/cjs/{getPublishUploads-BA5PdoJ3.js → getPublishUploads-g61mgXaA.js} +111 -35
- package/dist/cjs/getPublishUploads-g61mgXaA.js.map +1 -0
- package/dist/cjs/getSegmentedItemProperties-NFvOHlAi.js +146 -0
- package/dist/cjs/getSegmentedItemProperties-NFvOHlAi.js.map +1 -0
- package/dist/cjs/{index-B3K0jG2t.js → index-9O_Ji1kY.js} +3338 -1370
- package/dist/cjs/index-9O_Ji1kY.js.map +1 -0
- package/dist/cjs/{index-CpBFvNId.js → index-ud9i9fpp.js} +15 -7
- package/dist/cjs/index-ud9i9fpp.js.map +1 -0
- package/dist/cjs/{ownership-CkgGUliG.js → ownership-CyLRNReQ.js} +24 -7
- package/dist/cjs/ownership-CyLRNReQ.js.map +1 -0
- package/dist/cjs/property-Hj-RhQVX.js +318 -0
- package/dist/cjs/property-Hj-RhQVX.js.map +1 -0
- package/dist/db/drizzle/drizzle/0005_bright_lily_hollister.sql +27 -0
- package/dist/db/drizzle/drizzle/0006_add_publisher_to_versions_and_metadata.sql +3 -0
- package/dist/db/drizzle/drizzle/0007_add_required_to_properties.sql +1 -0
- package/dist/db/drizzle/drizzle/0008_add_revoked_at_to_seeds.sql +1 -0
- package/dist/db/drizzle/drizzle/0009_happy_namor.sql +14 -0
- package/dist/db/drizzle/drizzle/meta/0005_snapshot.json +1031 -0
- package/dist/db/drizzle/drizzle/meta/0006_snapshot.json +1045 -0
- package/dist/db/drizzle/drizzle/meta/0007_snapshot.json +1052 -0
- package/dist/db/drizzle/drizzle/meta/0008_snapshot.json +1059 -0
- package/dist/db/drizzle/drizzle/meta/0009_snapshot.json +1080 -0
- package/dist/db/drizzle/drizzle/meta/_journal.json +35 -0
- package/dist/{getItem-CbGS6wbp.js → getItem-ClK0UZqi.js} +5 -4
- package/dist/{getItem-CbGS6wbp.js.map → getItem-ClK0UZqi.js.map} +1 -1
- package/dist/getPublishPayload-CdfPTl8l.js +875 -0
- package/dist/getPublishPayload-CdfPTl8l.js.map +1 -0
- package/dist/{getPublishUploads-BAsUuLSM.js → getPublishUploads-CGBky9q9.js} +109 -15
- package/dist/getPublishUploads-CGBky9q9.js.map +1 -0
- package/dist/getSegmentedItemProperties-CJWdYH9W.js +144 -0
- package/dist/getSegmentedItemProperties-CJWdYH9W.js.map +1 -0
- package/dist/{index-CjAALVQh.js → index-C74KrwXN.js} +4 -2
- package/dist/index-C74KrwXN.js.map +1 -0
- package/dist/index-CgmWq1sF.js +19 -0
- package/dist/index-CgmWq1sF.js.map +1 -0
- package/dist/{index-BUFvepcD.js → index-uPXtq2cf.js} +3324 -1376
- package/dist/index-uPXtq2cf.js.map +1 -0
- package/dist/main.cjs +7 -4
- package/dist/main.cjs.map +1 -1
- package/dist/main.js +138 -2218
- package/dist/main.js.map +1 -1
- package/dist/node.js +13 -12
- package/dist/node.js.map +1 -1
- package/dist/{ownership-CeuRaVwP.js → ownership-QK5haR3-.js} +24 -7
- package/dist/ownership-QK5haR3-.js.map +1 -0
- package/dist/{property-BiZvboSH.js → property-Dt0U3UXJ.js} +26 -6
- package/dist/property-Dt0U3UXJ.js.map +1 -0
- package/dist/{queries-B2xdenwS.js → queries-BUB-vUBm.js} +2 -2
- package/dist/{queries-B2xdenwS.js.map → queries-BUB-vUBm.js.map} +1 -1
- package/dist/seedSchema/AppStateSchema.d.ts +82 -0
- package/dist/seedSchema/AppStateSchema.d.ts.map +1 -0
- package/dist/seedSchema/ConfigSchema.d.ts +101 -0
- package/dist/seedSchema/ConfigSchema.d.ts.map +1 -0
- package/dist/seedSchema/MetadataSchema.d.ts +422 -0
- package/dist/seedSchema/MetadataSchema.d.ts.map +1 -0
- package/dist/seedSchema/MetadataSchema.ts +4 -1
- package/dist/seedSchema/ModelSchema.d.ts +243 -0
- package/dist/seedSchema/ModelSchema.d.ts.map +1 -0
- package/dist/seedSchema/ModelSchema.ts +1 -0
- package/dist/seedSchema/ModelSchemaSchema.d.ts +61 -0
- package/dist/seedSchema/ModelSchemaSchema.d.ts.map +1 -0
- package/dist/seedSchema/ModelUidSchema.d.ts +64 -0
- package/dist/seedSchema/ModelUidSchema.d.ts.map +1 -0
- package/dist/seedSchema/PropertyUidSchema.d.ts +64 -0
- package/dist/seedSchema/PropertyUidSchema.d.ts.map +1 -0
- package/dist/seedSchema/PropertyUidSchema.ts +2 -2
- package/dist/seedSchema/PublishProcessSchema.ts +22 -0
- package/dist/seedSchema/SchemaSchema.d.ts +169 -0
- package/dist/seedSchema/SchemaSchema.d.ts.map +1 -0
- package/dist/seedSchema/SeedSchema.d.ts +192 -0
- package/dist/seedSchema/SeedSchema.d.ts.map +1 -0
- package/dist/seedSchema/SeedSchema.ts +1 -0
- package/dist/seedSchema/UploadProcessSchema.ts +14 -0
- package/dist/seedSchema/VersionSchema.d.ts +194 -0
- package/dist/seedSchema/VersionSchema.d.ts.map +1 -0
- package/dist/seedSchema/VersionSchema.ts +1 -0
- package/dist/seedSchema/index.d.ts +11 -0
- package/dist/seedSchema/index.d.ts.map +1 -0
- package/dist/seedSchema/index.ts +2 -0
- package/dist/src/Item/Item.d.ts +5 -1
- package/dist/src/Item/Item.d.ts.map +1 -1
- package/dist/src/Item/queries.d.ts.map +1 -1
- package/dist/src/Item/service/actors/loadOrCreateItem.d.ts.map +1 -1
- package/dist/src/Item/service/actors/saveDataToDb.d.ts.map +1 -1
- package/dist/src/Item/service/itemMachineSingle.d.ts.map +1 -1
- package/dist/src/ItemProperty/ItemProperty.d.ts +4 -0
- 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/resolveRelatedValue.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/saveValueToDb/analyzeInput.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.map +1 -1
- package/dist/src/Model/index.d.ts +1 -0
- package/dist/src/Model/index.d.ts.map +1 -1
- package/dist/src/Model/service/actors/createModelProperties.d.ts.map +1 -1
- package/dist/src/Model/service/modelMachine.d.ts +2 -2
- package/dist/src/ModelProperty/ModelProperty.d.ts +1 -1
- package/dist/src/ModelProperty/ModelProperty.d.ts.map +1 -1
- package/dist/src/ModelProperty/service/modelPropertyMachine.d.ts +17 -17
- package/dist/src/Schema/Schema.d.ts +1 -0
- package/dist/src/Schema/Schema.d.ts.map +1 -1
- package/dist/src/Schema/service/actors/loadOrCreateSchema.d.ts.map +1 -1
- package/dist/src/Schema/service/addModelsMachine.d.ts +14 -14
- package/dist/src/Schema/service/addModelsMachine.d.ts.map +1 -1
- package/dist/src/Schema/service/schemaMachine.d.ts +87 -87
- package/dist/src/Schema/service/validation/SchemaValidationService.d.ts +5 -1
- package/dist/src/Schema/service/validation/SchemaValidationService.d.ts.map +1 -1
- package/dist/src/Schema/validation.d.ts +2 -0
- package/dist/src/Schema/validation.d.ts.map +1 -1
- package/dist/src/browser/db/Db.d.ts +3 -1
- 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/helpers/ArweaveClient.d.ts.map +1 -1
- 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/index.d.ts.map +1 -1
- package/dist/src/browser/index.d.ts +0 -1
- package/dist/src/browser/index.d.ts.map +1 -1
- package/dist/src/browser/workers/ImageResizer.d.ts.map +1 -1
- package/dist/src/browser/workers/imageResize.d.ts.map +1 -1
- package/dist/src/client/ClientManager.d.ts +11 -0
- package/dist/src/client/ClientManager.d.ts.map +1 -1
- package/dist/src/client/actors/addModelsToDb.d.ts.map +1 -1
- package/dist/src/client/actors/dbInit.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/clientManagerMachine.d.ts.map +1 -1
- package/dist/src/db/Db/BaseDb.d.ts.map +1 -1
- package/dist/src/db/backfillMetadataPropertyIds.d.ts +7 -0
- package/dist/src/db/backfillMetadataPropertyIds.d.ts.map +1 -0
- package/dist/src/db/configs/dev.schema.config.d.ts.map +1 -1
- package/dist/src/db/read/getAttesterForSeed.d.ts +13 -0
- package/dist/src/db/read/getAttesterForSeed.d.ts.map +1 -0
- package/dist/src/db/read/getItemData.d.ts.map +1 -1
- package/dist/src/db/read/getItems.d.ts.map +1 -1
- package/dist/src/db/read/getMetadataAttestationUidsForSeedUid.d.ts +9 -0
- package/dist/src/db/read/getMetadataAttestationUidsForSeedUid.d.ts.map +1 -0
- package/dist/src/db/read/getPropertyData.d.ts +1 -1
- package/dist/src/db/read/getPropertyData.d.ts.map +1 -1
- package/dist/src/db/read/getPublishPayload.d.ts +26 -2
- package/dist/src/db/read/getPublishPayload.d.ts.map +1 -1
- package/dist/src/db/read/getPublishUploads.d.ts +1 -0
- package/dist/src/db/read/getPublishUploads.d.ts.map +1 -1
- package/dist/src/db/read/getRelatedItemsForPublish.d.ts.map +1 -1
- package/dist/src/db/read/getVersionsForSeedUid.d.ts +4 -0
- package/dist/src/db/read/getVersionsForSeedUid.d.ts.map +1 -0
- package/dist/src/db/read/subqueries/metadataLatest.d.ts.map +1 -1
- package/dist/src/db/write/createMetadata.d.ts +15 -1
- package/dist/src/db/write/createMetadata.d.ts.map +1 -1
- package/dist/src/db/write/createNewItem.d.ts.map +1 -1
- package/dist/src/db/write/createSeed.d.ts.map +1 -1
- package/dist/src/db/write/createVersion.d.ts.map +1 -1
- package/dist/src/db/write/updateItemPropertyValue.d.ts +2 -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 +10 -0
- package/dist/src/db/write/updateSeedRevokedAt.d.ts.map +1 -0
- package/dist/src/db/write/updateSeedUid.d.ts +6 -1
- package/dist/src/db/write/updateSeedUid.d.ts.map +1 -1
- package/dist/src/db/write/updateVersionUid.d.ts +13 -0
- package/dist/src/db/write/updateVersionUid.d.ts.map +1 -0
- package/dist/src/eas.d.ts +5 -2
- package/dist/src/eas.d.ts.map +1 -1
- package/dist/src/events/item/syncDbWithEas.d.ts +10 -0
- package/dist/src/events/item/syncDbWithEas.d.ts.map +1 -1
- package/dist/src/graphql/gql/gql.d.ts +2 -7
- package/dist/src/graphql/gql/gql.d.ts.map +1 -1
- package/dist/src/graphql/gql/graphql.d.ts +2 -16
- package/dist/src/graphql/gql/graphql.d.ts.map +1 -1
- package/dist/src/helpers/ArweaveClient/BaseArweaveClient.d.ts +22 -8
- package/dist/src/helpers/ArweaveClient/BaseArweaveClient.d.ts.map +1 -1
- package/dist/src/helpers/ArweaveClient/index.d.ts.map +1 -1
- package/dist/src/helpers/ArweaveClient/uploadApiVerification.d.ts +19 -0
- package/dist/src/helpers/ArweaveClient/uploadApiVerification.d.ts.map +1 -0
- package/dist/src/helpers/FileManager/BaseFileManager.d.ts +4 -0
- package/dist/src/helpers/FileManager/BaseFileManager.d.ts.map +1 -1
- package/dist/src/helpers/QueryClient/BaseQueryClient.d.ts.map +1 -1
- package/dist/src/helpers/constants.d.ts.map +1 -1
- package/dist/src/helpers/crypto.d.ts +6 -0
- package/dist/src/helpers/crypto.d.ts.map +1 -1
- package/dist/src/helpers/db.d.ts +25 -0
- package/dist/src/helpers/db.d.ts.map +1 -1
- package/dist/src/helpers/easRevokedFilter.d.ts +10 -0
- package/dist/src/helpers/easRevokedFilter.d.ts.map +1 -0
- package/dist/src/helpers/file/queries.d.ts.map +1 -1
- package/dist/src/helpers/getSegmentedItemProperties.d.ts +2 -2
- package/dist/src/helpers/getSegmentedItemProperties.d.ts.map +1 -1
- package/dist/src/helpers/index.d.ts +3 -0
- package/dist/src/helpers/index.d.ts.map +1 -1
- package/dist/src/helpers/listPropertyValueFromStorage.d.ts +5 -0
- package/dist/src/helpers/listPropertyValueFromStorage.d.ts.map +1 -0
- package/dist/src/helpers/metadataPropertyNames.d.ts +50 -0
- package/dist/src/helpers/metadataPropertyNames.d.ts.map +1 -0
- package/dist/src/helpers/model.d.ts.map +1 -1
- package/dist/src/helpers/ownership.d.ts +2 -0
- package/dist/src/helpers/ownership.d.ts.map +1 -1
- package/dist/src/helpers/property/index.d.ts +24 -12
- package/dist/src/helpers/property/index.d.ts.map +1 -1
- package/dist/src/helpers/property.d.ts.map +1 -1
- package/dist/src/helpers/publishConfig.d.ts +36 -0
- package/dist/src/helpers/publishConfig.d.ts.map +1 -1
- package/dist/src/helpers/schema.d.ts.map +1 -1
- package/dist/src/helpers/updateSchema.d.ts +2 -5
- package/dist/src/helpers/updateSchema.d.ts.map +1 -1
- package/dist/src/imports/index.d.ts +1 -1
- package/dist/src/imports/index.d.ts.map +1 -1
- package/dist/src/imports/json.d.ts +16 -1
- package/dist/src/imports/json.d.ts.map +1 -1
- package/dist/src/index.d.ts +33 -8
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/interfaces/IItem.d.ts +5 -1
- package/dist/src/interfaces/IItem.d.ts.map +1 -1
- package/dist/src/interfaces/IItemProperty.d.ts +3 -0
- package/dist/src/interfaces/IItemProperty.d.ts.map +1 -1
- package/dist/src/node/db/Db.d.ts.map +1 -1
- package/dist/src/node/helpers/ArweaveClient.d.ts.map +1 -1
- package/dist/src/node/helpers/FileManager.d.ts +1 -0
- package/dist/src/node/helpers/FileManager.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 +17 -0
- package/dist/src/seedSchema/ModelSchema.d.ts.map +1 -1
- package/dist/src/seedSchema/PublishProcessSchema.d.ts +285 -0
- package/dist/src/seedSchema/PublishProcessSchema.d.ts.map +1 -0
- package/dist/src/seedSchema/SeedSchema.d.ts +17 -0
- package/dist/src/seedSchema/SeedSchema.d.ts.map +1 -1
- package/dist/src/seedSchema/UploadProcessSchema.d.ts +135 -0
- package/dist/src/seedSchema/UploadProcessSchema.d.ts.map +1 -0
- package/dist/src/seedSchema/VersionSchema.d.ts +19 -0
- package/dist/src/seedSchema/VersionSchema.d.ts.map +1 -1
- package/dist/src/seedSchema/index.d.ts +2 -0
- package/dist/src/seedSchema/index.d.ts.map +1 -1
- package/dist/src/services/write/writeProcessMachine.d.ts +1 -1
- package/dist/src/types/arweave.d.ts +2 -1
- package/dist/src/types/arweave.d.ts.map +1 -1
- package/dist/src/types/db.d.ts +2 -0
- package/dist/src/types/db.d.ts.map +1 -1
- package/dist/src/types/import.d.ts +3 -0
- package/dist/src/types/import.d.ts.map +1 -1
- package/dist/src/types/index.d.ts +9 -0
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/item.d.ts +13 -0
- package/dist/src/types/item.d.ts.map +1 -1
- package/dist/src/types/machines.d.ts +1 -0
- package/dist/src/types/machines.d.ts.map +1 -1
- package/dist/src/types/property.d.ts +11 -2
- package/dist/src/types/property.d.ts.map +1 -1
- package/dist/src/vite/index.d.ts.map +1 -1
- package/dist/vite.cjs +3 -0
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.js +2 -0
- package/dist/vite.js.map +1 -1
- package/package.json +7 -12
- package/dist/ArweaveClient-Bot35vMf.js.map +0 -1
- package/dist/ArweaveClient-C6mBPWwy.js.map +0 -1
- package/dist/Db-DP7ELP9S.js.map +0 -1
- package/dist/Db-rlxROH4S.js.map +0 -1
- package/dist/FileManager-C7yOhPvS.js.map +0 -1
- package/dist/FileManager-Dy3BbIxq.js.map +0 -1
- package/dist/ModelProperty--OQb3Dy0.js.map +0 -1
- package/dist/Schema-DF4mLt86.js.map +0 -1
- package/dist/SchemaValidationService-D4LwnnIB.js.map +0 -1
- package/dist/cjs/ModelProperty-C5BRfISV.js.map +0 -1
- package/dist/cjs/Schema-DVJG8ISB.js.map +0 -1
- package/dist/cjs/SchemaValidationService-_wef0VX6.js.map +0 -1
- package/dist/cjs/getPublishPayload-CGl97AXX.js +0 -520
- package/dist/cjs/getPublishPayload-CGl97AXX.js.map +0 -1
- package/dist/cjs/getPublishUploads-BA5PdoJ3.js.map +0 -1
- package/dist/cjs/getSegmentedItemProperties-D3iBFPeo.js +0 -71
- package/dist/cjs/getSegmentedItemProperties-D3iBFPeo.js.map +0 -1
- package/dist/cjs/index-B3K0jG2t.js.map +0 -1
- package/dist/cjs/index-CpBFvNId.js.map +0 -1
- package/dist/cjs/ownership-CkgGUliG.js.map +0 -1
- package/dist/getPublishPayload-jUcwhhs1.js +0 -503
- package/dist/getPublishPayload-jUcwhhs1.js.map +0 -1
- package/dist/getPublishUploads-BAsUuLSM.js.map +0 -1
- package/dist/getSegmentedItemProperties-1QklOMkN.js +0 -69
- package/dist/getSegmentedItemProperties-1QklOMkN.js.map +0 -1
- package/dist/index-BUFvepcD.js.map +0 -1
- package/dist/index-BnBV-CWp.js +0 -18
- package/dist/index-BnBV-CWp.js.map +0 -1
- package/dist/index-CjAALVQh.js.map +0 -1
- package/dist/ownership-CeuRaVwP.js.map +0 -1
- package/dist/property-BiZvboSH.js.map +0 -1
- package/dist/src/browser/react/OPFSImage.d.ts +0 -7
- package/dist/src/browser/react/OPFSImage.d.ts.map +0 -1
- package/dist/src/browser/react/SeedImage.d.ts +0 -11
- package/dist/src/browser/react/SeedImage.d.ts.map +0 -1
- package/dist/src/browser/react/SeedProvider.d.ts +0 -30
- package/dist/src/browser/react/SeedProvider.d.ts.map +0 -1
- package/dist/src/browser/react/client.d.ts +0 -2
- package/dist/src/browser/react/client.d.ts.map +0 -1
- package/dist/src/browser/react/db.d.ts +0 -4
- package/dist/src/browser/react/db.d.ts.map +0 -1
- package/dist/src/browser/react/index.d.ts +0 -14
- package/dist/src/browser/react/index.d.ts.map +0 -1
- package/dist/src/browser/react/item.d.ts +0 -44
- package/dist/src/browser/react/item.d.ts.map +0 -1
- package/dist/src/browser/react/itemProperty.d.ts +0 -93
- package/dist/src/browser/react/itemProperty.d.ts.map +0 -1
- package/dist/src/browser/react/liveQuery.d.ts +0 -29
- package/dist/src/browser/react/liveQuery.d.ts.map +0 -1
- package/dist/src/browser/react/model.d.ts +0 -48
- package/dist/src/browser/react/model.d.ts.map +0 -1
- package/dist/src/browser/react/modelProperty.d.ts +0 -82
- package/dist/src/browser/react/modelProperty.d.ts.map +0 -1
- package/dist/src/browser/react/queryClient.d.ts +0 -28
- package/dist/src/browser/react/queryClient.d.ts.map +0 -1
- package/dist/src/browser/react/schema.d.ts +0 -45
- package/dist/src/browser/react/schema.d.ts.map +0 -1
- package/dist/src/browser/react/services.d.ts +0 -24
- package/dist/src/browser/react/services.d.ts.map +0 -1
- package/dist/src/browser/react/trash.d.ts +0 -9
- package/dist/src/browser/react/trash.d.ts.map +0 -1
- package/dist/src/browser/react/useImageFiles.d.ts +0 -19
- package/dist/src/browser/react/useImageFiles.d.ts.map +0 -1
package/dist/cjs/{SchemaValidationService-_wef0VX6.js → SchemaValidationService-BySF1P0v.js}
RENAMED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var value = require('@sinclair/typebox/value');
|
|
4
4
|
require('reflect-metadata');
|
|
5
|
-
var main_cjs = require('./index-
|
|
5
|
+
var main_cjs = require('./index-9O_Ji1kY.js');
|
|
6
6
|
require('pluralize');
|
|
7
7
|
require('drizzle-orm');
|
|
8
8
|
var typebox = require('@sinclair/typebox');
|
|
@@ -13,11 +13,12 @@ require('drizzle-orm/sqlite-core');
|
|
|
13
13
|
require('nanoid');
|
|
14
14
|
require('nanoid-dictionary');
|
|
15
15
|
require('ethers');
|
|
16
|
-
require('rxjs');
|
|
17
|
-
require('lodash-es');
|
|
18
16
|
require('drizzle-orm/casing');
|
|
17
|
+
require('lodash-es');
|
|
18
|
+
require('rxjs');
|
|
19
19
|
require('eventemitter3');
|
|
20
20
|
require('arweave');
|
|
21
|
+
require('js-sha3');
|
|
21
22
|
require('fs/promises');
|
|
22
23
|
require('fs');
|
|
23
24
|
require('path');
|
|
@@ -182,10 +183,18 @@ class SchemaValidationService {
|
|
|
182
183
|
*/
|
|
183
184
|
validatePropertyStructure(property) {
|
|
184
185
|
try {
|
|
185
|
-
|
|
186
|
+
// Normalize dataType and refValueType for case-insensitive schema support (e.g. "relation" -> "Relation")
|
|
187
|
+
const normalized = { ...property };
|
|
188
|
+
if (typeof normalized.dataType === 'string') {
|
|
189
|
+
normalized.dataType = main_cjs.normalizeDataType(normalized.dataType);
|
|
190
|
+
}
|
|
191
|
+
if (typeof normalized.refValueType === 'string') {
|
|
192
|
+
normalized.refValueType = main_cjs.normalizeDataType(normalized.refValueType);
|
|
193
|
+
}
|
|
194
|
+
const isValid = value.Value.Check(main_cjs.TProperty, normalized);
|
|
186
195
|
const errors = [];
|
|
187
196
|
if (!isValid) {
|
|
188
|
-
const typeBoxErrors = [...value.Value.Errors(main_cjs.TProperty,
|
|
197
|
+
const typeBoxErrors = [...value.Value.Errors(main_cjs.TProperty, normalized)];
|
|
189
198
|
errors.push(...typeBoxErrors.map(err => {
|
|
190
199
|
const fieldPath = err.path || 'unknown';
|
|
191
200
|
const fieldSchema = this.getSchemaForField(main_cjs.TProperty, fieldPath);
|
|
@@ -210,17 +219,17 @@ class SchemaValidationService {
|
|
|
210
219
|
main_cjs.ModelPropertyDataTypes.Html,
|
|
211
220
|
main_cjs.ModelPropertyDataTypes.Relation,
|
|
212
221
|
];
|
|
213
|
-
if (nonListTypes.includes(
|
|
214
|
-
const hasRefValueType =
|
|
222
|
+
if (nonListTypes.includes(normalized.dataType)) {
|
|
223
|
+
const hasRefValueType = normalized.refValueType != null && String(normalized.refValueType).trim() !== '';
|
|
215
224
|
if (hasRefValueType) {
|
|
216
225
|
// Relation may keep refValueType only for Image (relation to Image entity)
|
|
217
|
-
if (
|
|
226
|
+
if (normalized.dataType === main_cjs.ModelPropertyDataTypes.Relation && normalized.refValueType === main_cjs.ModelPropertyDataTypes.Image) {
|
|
218
227
|
// Allowed: Relation to Image
|
|
219
228
|
}
|
|
220
229
|
else {
|
|
221
230
|
errors.push({
|
|
222
231
|
field: 'refValueType',
|
|
223
|
-
message: `refValueType is only valid for List properties. Use dataType 'List' with refValueType '${
|
|
232
|
+
message: `refValueType is only valid for List properties. Use dataType 'List' with refValueType '${normalized.refValueType}' for lists of ${normalized.refValueType}.`,
|
|
224
233
|
code: 'invalid_ref_value_type',
|
|
225
234
|
severity: 'error',
|
|
226
235
|
});
|
|
@@ -228,8 +237,8 @@ class SchemaValidationService {
|
|
|
228
237
|
}
|
|
229
238
|
}
|
|
230
239
|
// List: refValueType is required
|
|
231
|
-
if (
|
|
232
|
-
const hasRefValueType =
|
|
240
|
+
if (normalized.dataType === main_cjs.ModelPropertyDataTypes.List) {
|
|
241
|
+
const hasRefValueType = normalized.refValueType != null && String(normalized.refValueType).trim() !== '';
|
|
233
242
|
if (!hasRefValueType) {
|
|
234
243
|
errors.push({
|
|
235
244
|
field: 'refValueType',
|
|
@@ -239,10 +248,10 @@ class SchemaValidationService {
|
|
|
239
248
|
});
|
|
240
249
|
}
|
|
241
250
|
// List of relations: ref is required
|
|
242
|
-
if (hasRefValueType &&
|
|
243
|
-
const hasRef =
|
|
244
|
-
const hasRefModelName =
|
|
245
|
-
const hasRefModelId =
|
|
251
|
+
if (hasRefValueType && normalized.refValueType === main_cjs.ModelPropertyDataTypes.Relation) {
|
|
252
|
+
const hasRef = normalized.ref && normalized.ref.trim() !== '';
|
|
253
|
+
const hasRefModelName = normalized.refModelName && normalized.refModelName.trim() !== '';
|
|
254
|
+
const hasRefModelId = normalized.refModelId !== undefined && normalized.refModelId !== null;
|
|
246
255
|
if (!hasRef && !hasRefModelName && !hasRefModelId) {
|
|
247
256
|
errors.push({
|
|
248
257
|
field: 'ref',
|
|
@@ -254,10 +263,10 @@ class SchemaValidationService {
|
|
|
254
263
|
}
|
|
255
264
|
}
|
|
256
265
|
// Relation (single): ref is required
|
|
257
|
-
if (
|
|
258
|
-
const hasRef =
|
|
259
|
-
const hasRefModelName =
|
|
260
|
-
const hasRefModelId =
|
|
266
|
+
if (normalized.dataType === main_cjs.ModelPropertyDataTypes.Relation) {
|
|
267
|
+
const hasRef = normalized.ref && normalized.ref.trim() !== '';
|
|
268
|
+
const hasRefModelName = normalized.refModelName && normalized.refModelName.trim() !== '';
|
|
269
|
+
const hasRefModelId = normalized.refModelId !== undefined && normalized.refModelId !== null;
|
|
261
270
|
if (!hasRef && !hasRefModelName && !hasRefModelId) {
|
|
262
271
|
errors.push({
|
|
263
272
|
field: 'ref',
|
|
@@ -267,7 +276,7 @@ class SchemaValidationService {
|
|
|
267
276
|
});
|
|
268
277
|
}
|
|
269
278
|
if ((hasRef || hasRefModelName) && !hasRefModelId) {
|
|
270
|
-
logger(`Property "${
|
|
279
|
+
logger(`Property "${normalized.name}" has ref/refModelName but no refModelId - will be resolved asynchronously`);
|
|
271
280
|
}
|
|
272
281
|
}
|
|
273
282
|
return {
|
|
@@ -290,8 +299,12 @@ class SchemaValidationService {
|
|
|
290
299
|
}
|
|
291
300
|
/**
|
|
292
301
|
* Validate a property value against its validation rules
|
|
302
|
+
* @param value - The value to validate
|
|
303
|
+
* @param dataType - The property's data type
|
|
304
|
+
* @param validationRules - Optional validation rules (enum, pattern, minLength, maxLength)
|
|
305
|
+
* @param refValueType - For List properties: the element type (Text, Number, etc.). When set, each array element is validated against this type + validationRules.
|
|
293
306
|
*/
|
|
294
|
-
validatePropertyValue(value$1, dataType, validationRules) {
|
|
307
|
+
validatePropertyValue(value$1, dataType, validationRules, refValueType) {
|
|
295
308
|
const errors = [];
|
|
296
309
|
const warnings = [];
|
|
297
310
|
try {
|
|
@@ -304,23 +317,109 @@ class SchemaValidationService {
|
|
|
304
317
|
severity: 'error',
|
|
305
318
|
});
|
|
306
319
|
}
|
|
320
|
+
// File/Image: accept File objects from OS picker (TypeBox schema only allows string|null)
|
|
321
|
+
if ((dataType === main_cjs.ModelPropertyDataTypes.File || dataType === main_cjs.ModelPropertyDataTypes.Image) &&
|
|
322
|
+
typeof File !== 'undefined' &&
|
|
323
|
+
value$1 instanceof File) {
|
|
324
|
+
if (validationRules) {
|
|
325
|
+
const customErrors = this.validateCustomRules(value$1, validationRules);
|
|
326
|
+
errors.push(...customErrors);
|
|
327
|
+
}
|
|
328
|
+
return {
|
|
329
|
+
isValid: errors.length === 0,
|
|
330
|
+
errors,
|
|
331
|
+
warnings: warnings.length > 0 ? warnings : undefined,
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
// List with refValueType: validate each element against element schema + validation rules
|
|
335
|
+
if (dataType === main_cjs.ModelPropertyDataTypes.List && refValueType && Array.isArray(value$1)) {
|
|
336
|
+
const elementDataType = main_cjs.normalizeDataType(String(refValueType));
|
|
337
|
+
// Apply default maxLength for Text elements in List. Html elements hold arbitrary-length content.
|
|
338
|
+
const elementEffectiveRules = validationRules ? { ...validationRules } : {};
|
|
339
|
+
if (elementDataType === main_cjs.ModelPropertyDataTypes.Text && elementEffectiveRules.maxLength === undefined) {
|
|
340
|
+
elementEffectiveRules.maxLength = main_cjs.DEFAULT_TEXT_MAX_LENGTH;
|
|
341
|
+
}
|
|
342
|
+
for (let i = 0; i < value$1.length; i++) {
|
|
343
|
+
const elementResult = this.validatePropertyValue(value$1[i], elementDataType, elementEffectiveRules);
|
|
344
|
+
if (!elementResult.isValid && elementResult.errors.length > 0) {
|
|
345
|
+
for (const err of elementResult.errors) {
|
|
346
|
+
errors.push({
|
|
347
|
+
field: `value[${i}]`,
|
|
348
|
+
message: `Element at index ${i}: ${err.message}`,
|
|
349
|
+
code: validationRules?.enum && Array.isArray(validationRules.enum) && validationRules.enum.length > 0 ? 'enum_violation' : err.code,
|
|
350
|
+
severity: err.severity,
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
if (validationRules) {
|
|
356
|
+
const customErrors = this.validateCustomRules(value$1, validationRules);
|
|
357
|
+
errors.push(...customErrors);
|
|
358
|
+
}
|
|
359
|
+
return {
|
|
360
|
+
isValid: errors.length === 0,
|
|
361
|
+
errors,
|
|
362
|
+
warnings: warnings.length > 0 ? warnings : undefined,
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
// List without refValueType or non-array: validate as scalar/array
|
|
366
|
+
if (dataType === main_cjs.ModelPropertyDataTypes.List && !Array.isArray(value$1) && value$1 != null) {
|
|
367
|
+
errors.push({
|
|
368
|
+
field: 'value',
|
|
369
|
+
message: 'List properties require an array value.',
|
|
370
|
+
code: 'array_required',
|
|
371
|
+
severity: 'error',
|
|
372
|
+
});
|
|
373
|
+
return { isValid: false, errors };
|
|
374
|
+
}
|
|
307
375
|
// Build base TypeBox schema from dataType
|
|
308
376
|
let schema = this.getBaseSchemaForDataType(dataType);
|
|
377
|
+
// Apply default maxLength for Text when not explicitly set. Html holds arbitrary-length content (e.g. article body) and must not default to 255.
|
|
378
|
+
const effectiveRules = validationRules ? { ...validationRules } : {};
|
|
379
|
+
if (dataType === main_cjs.ModelPropertyDataTypes.Text && effectiveRules.maxLength === undefined) {
|
|
380
|
+
effectiveRules.maxLength = main_cjs.DEFAULT_TEXT_MAX_LENGTH;
|
|
381
|
+
}
|
|
309
382
|
// Apply validation rules
|
|
310
|
-
|
|
311
|
-
|
|
383
|
+
const hasEnumRules = !!(validationRules?.enum && Array.isArray(validationRules.enum) && validationRules.enum.length > 0);
|
|
384
|
+
if (Object.keys(effectiveRules).length > 0) {
|
|
385
|
+
schema = this.applyValidationRules(schema, dataType, effectiveRules);
|
|
312
386
|
}
|
|
313
387
|
// Validate using TypeBox
|
|
314
388
|
const isValid = value.Value.Check(schema, value$1);
|
|
315
389
|
if (!isValid) {
|
|
316
390
|
const typeBoxErrors = [...value.Value.Errors(schema, value$1)];
|
|
391
|
+
const effectiveMaxLength = effectiveRules.maxLength;
|
|
392
|
+
const isDefaultTextLimit = dataType === main_cjs.ModelPropertyDataTypes.Text &&
|
|
393
|
+
effectiveMaxLength === main_cjs.DEFAULT_TEXT_MAX_LENGTH &&
|
|
394
|
+
validationRules?.maxLength === undefined;
|
|
317
395
|
errors.push(...typeBoxErrors.map(err => {
|
|
318
396
|
const fieldPath = err.path || 'value';
|
|
319
|
-
const
|
|
397
|
+
const originalMessage = (err.message || '').toLowerCase();
|
|
398
|
+
// TypeBox maxLength errors have message like "Expected string length less or equal to X"
|
|
399
|
+
const isMaxLengthError = originalMessage.includes('length') && (originalMessage.includes('less') || originalMessage.includes('equal') || originalMessage.includes('max'));
|
|
400
|
+
let enhancedMessage;
|
|
401
|
+
if (isMaxLengthError && effectiveMaxLength !== undefined) {
|
|
402
|
+
const typeLabel = dataType === main_cjs.ModelPropertyDataTypes.Html ? 'Html' : 'Text';
|
|
403
|
+
if (isDefaultTextLimit) {
|
|
404
|
+
enhancedMessage = `Text properties have a default limit of 255 characters. For longer content, use a File property instead, which can hold arbitrary amounts of text or data.`;
|
|
405
|
+
}
|
|
406
|
+
else {
|
|
407
|
+
enhancedMessage = `${typeLabel} must be ${effectiveMaxLength} characters or less. For longer content, use a File property instead, which can hold arbitrary amounts of text or data.`;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
else {
|
|
411
|
+
enhancedMessage = this.enhanceErrorMessage(err, schema, fieldPath);
|
|
412
|
+
}
|
|
413
|
+
// Use max_length_exceeded when failure is due to maxLength; enum_violation when enum rules; else generic
|
|
414
|
+
const code = isMaxLengthError
|
|
415
|
+
? 'max_length_exceeded'
|
|
416
|
+
: hasEnumRules
|
|
417
|
+
? 'enum_violation'
|
|
418
|
+
: String(err.type || 'value_validation_error');
|
|
320
419
|
return {
|
|
321
420
|
field: fieldPath,
|
|
322
421
|
message: enhancedMessage,
|
|
323
|
-
code
|
|
422
|
+
code,
|
|
324
423
|
severity: 'error',
|
|
325
424
|
};
|
|
326
425
|
}));
|
|
@@ -418,30 +517,31 @@ class SchemaValidationService {
|
|
|
418
517
|
});
|
|
419
518
|
}
|
|
420
519
|
}
|
|
421
|
-
// Validate List: requires
|
|
422
|
-
if (propertyDefinition.type === 'List') {
|
|
423
|
-
const
|
|
424
|
-
|
|
520
|
+
// Validate List: requires refValueType; ref (model) required only when refValueType === 'Relation' (case-insensitive)
|
|
521
|
+
if (propertyDefinition.type === 'List' || propertyDefinition.dataType === 'List') {
|
|
522
|
+
const rawRefValueType = propertyDefinition.refValueType ?? propertyDefinition.items?.type ?? propertyDefinition.refvaluetype;
|
|
523
|
+
const refValueType = rawRefValueType ? main_cjs.normalizeDataType(String(rawRefValueType)) : undefined;
|
|
524
|
+
if (!refValueType || String(refValueType).trim() === '') {
|
|
425
525
|
errors.push({
|
|
426
|
-
field: 'property.
|
|
427
|
-
message: 'List properties require "
|
|
428
|
-
code: '
|
|
526
|
+
field: 'property.refValueType',
|
|
527
|
+
message: 'List properties require "refValueType" (e.g. refValueType: "Text" or refValueType: "Relation" with ref: "Tag")',
|
|
528
|
+
code: 'missing_ref_value_type',
|
|
429
529
|
severity: 'error',
|
|
430
530
|
});
|
|
431
531
|
}
|
|
432
|
-
else if (
|
|
433
|
-
const model =
|
|
532
|
+
else if (refValueType === 'Relation' || refValueType === 'RelationProperty') {
|
|
533
|
+
const model = propertyDefinition.ref ?? propertyDefinition.model ?? propertyDefinition.items?.model;
|
|
434
534
|
if (!model || String(model).trim() === '') {
|
|
435
535
|
errors.push({
|
|
436
|
-
field: 'property.
|
|
437
|
-
message: 'List of relations requires "
|
|
536
|
+
field: 'property.ref',
|
|
537
|
+
message: 'List of relations requires "ref" to specify the related model',
|
|
438
538
|
code: 'missing_ref',
|
|
439
539
|
severity: 'error',
|
|
440
540
|
});
|
|
441
541
|
}
|
|
442
542
|
else if (schema.models && !schema.models[model]) {
|
|
443
543
|
errors.push({
|
|
444
|
-
field: 'property.
|
|
544
|
+
field: 'property.ref',
|
|
445
545
|
message: `Referenced model "${model}" not found in schema`,
|
|
446
546
|
code: 'invalid_reference',
|
|
447
547
|
severity: 'error',
|
|
@@ -667,4 +767,4 @@ class SchemaValidationService {
|
|
|
667
767
|
}
|
|
668
768
|
|
|
669
769
|
exports.SchemaValidationService = SchemaValidationService;
|
|
670
|
-
//# sourceMappingURL=SchemaValidationService-
|
|
770
|
+
//# sourceMappingURL=SchemaValidationService-BySF1P0v.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaValidationService-BySF1P0v.js","sources":["../../../src/Schema/service/validation/SchemaValidationService.ts"],"sourcesContent":["import { Value } from '@sinclair/typebox/value'\nimport { TProperty } from '@/Schema'\nimport { ModelPropertyDataTypes, TPropertyDataType, normalizeDataType } from '@/helpers/property'\nimport { ValidationResult, ValidationError, ValidationRules, DEFAULT_TEXT_MAX_LENGTH } from '@/Schema/validation'\nimport { SchemaMachineContext } from '../schemaMachine'\nimport { ModelPropertyMachineContext } from '@/ModelProperty/service/modelPropertyMachine'\nimport { ModelMachineContext } from '@/Model/service/modelMachine'\nimport { Type, TSchema, TUnion, TLiteral } from '@sinclair/typebox'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:schema:validation')\n\n/**\n * Service for validating schemas, models, and properties using TypeBox\n */\nexport class SchemaValidationService {\n /**\n * Enhance TypeBox error message with expected values for union/literal types\n */\n private enhanceErrorMessage(\n error: any,\n schema: TSchema,\n fieldPath: string\n ): string {\n const originalMessage = error.message || 'Validation failed'\n \n // Handle Union type errors (like TPropertyDataType)\n if (error.type === 'Union' || originalMessage.includes('union')) {\n const expectedValues = this.extractExpectedValues(schema, fieldPath)\n if (expectedValues.length > 0) {\n return `Expected one of: ${expectedValues.join(', ')}. Received: ${JSON.stringify(error.value)}`\n }\n }\n \n // Handle Literal type errors\n if (error.type === 'Literal') {\n const expectedValue = this.extractLiteralValue(schema, fieldPath)\n if (expectedValue !== undefined) {\n return `Expected: ${JSON.stringify(expectedValue)}. Received: ${JSON.stringify(error.value)}`\n }\n }\n \n // Return enhanced message with value info if available\n if (error.value !== undefined) {\n return `${originalMessage}. Received: ${JSON.stringify(error.value)}`\n }\n \n return originalMessage\n }\n\n /**\n * Extract expected values from a schema for a given field path\n */\n private extractExpectedValues(schema: TSchema | null, fieldPath: string): string[] {\n try {\n // Handle TProperty schema - check if this is the dataType field\n if (fieldPath === '/dataType' || fieldPath.endsWith('/dataType')) {\n // Return all ModelPropertyDataTypes enum values\n return Object.values(ModelPropertyDataTypes) as string[]\n }\n \n // Handle TStorageType\n if (fieldPath === '/storageType' || fieldPath.endsWith('/storageType')) {\n return ['ItemStorage', 'PropertyStorage']\n }\n \n // If we have a schema, try to extract from it\n if (!schema) {\n return []\n }\n \n // Try to extract from TypeBox Union type using the schema directly\n const schemaObj = schema as any\n const kind = schemaObj[Symbol.for('TypeBox.Kind')]\n \n if (kind === 'Union') {\n const union = schemaObj as TUnion<any>\n const anyOf = union.anyOf || []\n const values: string[] = []\n \n for (const item of anyOf) {\n const itemKind = item?.[Symbol.for('TypeBox.Kind')]\n if (itemKind === 'Literal') {\n const literal = item as TLiteral<any>\n if (literal.const !== undefined) {\n values.push(String(literal.const))\n }\n }\n }\n \n if (values.length > 0) {\n return values\n }\n }\n \n // Fallback: try to extract from JSON schema format\n if (typeof schema === 'object' && 'anyOf' in schema) {\n const union = schema as any\n if (Array.isArray(union.anyOf)) {\n return union.anyOf\n .map((item: any) => {\n if (item.const !== undefined) return String(item.const)\n if (item.enum && Array.isArray(item.enum)) return item.enum.map(String)\n return null\n })\n .filter((val: any) => val !== null)\n .flat()\n .map(String)\n }\n }\n } catch (error) {\n logger('Error extracting expected values:', error)\n }\n \n return []\n }\n\n /**\n * Extract literal value from a schema\n */\n private extractLiteralValue(schema: TSchema, fieldPath: string): any {\n try {\n if (schema && typeof schema === 'object') {\n const schemaObj = schema as any\n if (schemaObj[Symbol.for('TypeBox.Kind')] === 'Literal') {\n return (schemaObj as TLiteral<any>).const\n }\n if (schemaObj.const !== undefined) {\n return schemaObj.const\n }\n }\n } catch (error) {\n logger('Error extracting literal value:', error)\n }\n \n return undefined\n }\n\n /**\n * Get the schema for a specific field path\n */\n private getSchemaForField(schema: TSchema, fieldPath: string): TSchema | null {\n try {\n if (!schema || typeof schema !== 'object') return null\n \n // Remove leading slash\n const path = fieldPath.replace(/^\\//, '')\n if (!path) return schema\n \n const schemaObj = schema as any\n const kind = schemaObj[Symbol.for('TypeBox.Kind')]\n \n // For TProperty (Object type), check properties\n if (kind === 'Object') {\n const properties = schemaObj.properties\n if (properties && properties[path]) {\n return properties[path]\n }\n }\n \n // Special handling for known fields - return the actual schema\n if (path === 'dataType') {\n return TPropertyDataType as TSchema\n }\n \n // Fallback: check if schema has the property\n if (path in schemaObj) {\n return schemaObj[path]\n }\n } catch (error) {\n logger('Error getting schema for field:', error)\n }\n \n return null\n }\n\n /**\n * Validate a property structure against TProperty schema\n */\n validatePropertyStructure(\n property: ModelPropertyMachineContext\n ): ValidationResult {\n try {\n // Normalize dataType and refValueType for case-insensitive schema support (e.g. \"relation\" -> \"Relation\")\n const normalized = { ...property }\n if (typeof normalized.dataType === 'string') {\n normalized.dataType = normalizeDataType(normalized.dataType) as any\n }\n if (typeof normalized.refValueType === 'string') {\n normalized.refValueType = normalizeDataType(normalized.refValueType) as any\n }\n const isValid = Value.Check(TProperty, normalized)\n \n const errors: ValidationError[] = []\n \n if (!isValid) {\n const typeBoxErrors = [...Value.Errors(TProperty, normalized)]\n errors.push(...typeBoxErrors.map(err => {\n const fieldPath = err.path || 'unknown'\n const fieldSchema = this.getSchemaForField(TProperty, fieldPath)\n const enhancedMessage = this.enhanceErrorMessage(err, fieldSchema || TProperty, fieldPath)\n \n return {\n field: fieldPath,\n message: enhancedMessage,\n code: String(err.type || 'validation_error'),\n severity: 'error' as const,\n }\n }))\n }\n \n // Non-List types: refValueType is only valid for Relation+Image (related entity type). Reject otherwise.\n const nonListTypes = [\n ModelPropertyDataTypes.Text,\n ModelPropertyDataTypes.Number,\n ModelPropertyDataTypes.Boolean,\n ModelPropertyDataTypes.Date,\n ModelPropertyDataTypes.Json,\n ModelPropertyDataTypes.Image,\n ModelPropertyDataTypes.File,\n ModelPropertyDataTypes.Html,\n ModelPropertyDataTypes.Relation,\n ]\n if (nonListTypes.includes(normalized.dataType as ModelPropertyDataTypes)) {\n const hasRefValueType = normalized.refValueType != null && String(normalized.refValueType).trim() !== ''\n if (hasRefValueType) {\n // Relation may keep refValueType only for Image (relation to Image entity)\n if (normalized.dataType === ModelPropertyDataTypes.Relation && normalized.refValueType === ModelPropertyDataTypes.Image) {\n // Allowed: Relation to Image\n } else {\n errors.push({\n field: 'refValueType',\n message: `refValueType is only valid for List properties. Use dataType 'List' with refValueType '${normalized.refValueType}' for lists of ${normalized.refValueType}.`,\n code: 'invalid_ref_value_type',\n severity: 'error' as const,\n })\n }\n }\n }\n\n // List: refValueType is required\n if (normalized.dataType === ModelPropertyDataTypes.List) {\n const hasRefValueType = normalized.refValueType != null && String(normalized.refValueType).trim() !== ''\n if (!hasRefValueType) {\n errors.push({\n field: 'refValueType',\n message: `List properties require refValueType (e.g. 'Text', 'Number', 'Relation') to specify the element type.`,\n code: 'missing_ref_value_type',\n severity: 'error' as const,\n })\n }\n // List of relations: ref is required\n if (hasRefValueType && normalized.refValueType === ModelPropertyDataTypes.Relation) {\n const hasRef = normalized.ref && normalized.ref.trim() !== ''\n const hasRefModelName = normalized.refModelName && normalized.refModelName.trim() !== ''\n const hasRefModelId = normalized.refModelId !== undefined && normalized.refModelId !== null\n if (!hasRef && !hasRefModelName && !hasRefModelId) {\n errors.push({\n field: 'ref',\n message: `List properties with refValueType 'Relation' require either a \"ref\", \"refModelName\", or \"refModelId\" field to be defined`,\n code: 'missing_ref',\n severity: 'error' as const,\n })\n }\n }\n }\n\n // Relation (single): ref is required\n if (normalized.dataType === ModelPropertyDataTypes.Relation) {\n const hasRef = normalized.ref && normalized.ref.trim() !== ''\n const hasRefModelName = normalized.refModelName && normalized.refModelName.trim() !== ''\n const hasRefModelId = normalized.refModelId !== undefined && normalized.refModelId !== null\n if (!hasRef && !hasRefModelName && !hasRefModelId) {\n errors.push({\n field: 'ref',\n message: `Property with dataType \"Relation\" requires either a \"ref\", \"refModelName\", or \"refModelId\" field to be defined`,\n code: 'missing_ref',\n severity: 'error' as const,\n })\n }\n if ((hasRef || hasRefModelName) && !hasRefModelId) {\n logger(`Property \"${normalized.name}\" has ref/refModelName but no refModelId - will be resolved asynchronously`)\n }\n }\n \n return {\n isValid: errors.length === 0,\n errors,\n }\n } catch (error) {\n logger('Error validating property structure:', error)\n return {\n isValid: false,\n errors: [{\n field: 'property',\n message: error instanceof Error ? error.message : 'Unknown validation error',\n code: 'validation_exception',\n severity: 'error' as const,\n }],\n }\n }\n }\n\n /**\n * Validate a property value against its validation rules\n * @param value - The value to validate\n * @param dataType - The property's data type\n * @param validationRules - Optional validation rules (enum, pattern, minLength, maxLength)\n * @param refValueType - For List properties: the element type (Text, Number, etc.). When set, each array element is validated against this type + validationRules.\n */\n validatePropertyValue(\n value: any,\n dataType: ModelPropertyDataTypes,\n validationRules?: ValidationRules,\n refValueType?: ModelPropertyDataTypes | string\n ): ValidationResult {\n const errors: ValidationError[] = []\n const warnings: ValidationError[] = []\n\n try {\n // Array values are only allowed for List properties\n if (dataType !== ModelPropertyDataTypes.List && Array.isArray(value)) {\n errors.push({\n field: 'value',\n message: 'Array values are only allowed for List properties. Use dataType \"List\" with refValueType to store multiple values.',\n code: 'array_not_allowed',\n severity: 'error' as const,\n })\n }\n\n // File/Image: accept File objects from OS picker (TypeBox schema only allows string|null)\n if (\n (dataType === ModelPropertyDataTypes.File || dataType === ModelPropertyDataTypes.Image) &&\n typeof File !== 'undefined' &&\n value instanceof File\n ) {\n if (validationRules) {\n const customErrors = this.validateCustomRules(value, validationRules)\n errors.push(...customErrors)\n }\n return {\n isValid: errors.length === 0,\n errors,\n warnings: warnings.length > 0 ? warnings : undefined,\n }\n }\n\n // List with refValueType: validate each element against element schema + validation rules\n if (dataType === ModelPropertyDataTypes.List && refValueType && Array.isArray(value)) {\n const elementDataType = normalizeDataType(String(refValueType)) as ModelPropertyDataTypes\n // Apply default maxLength for Text elements in List. Html elements hold arbitrary-length content.\n const elementEffectiveRules = validationRules ? { ...validationRules } : {}\n if (elementDataType === ModelPropertyDataTypes.Text && elementEffectiveRules.maxLength === undefined) {\n elementEffectiveRules.maxLength = DEFAULT_TEXT_MAX_LENGTH\n }\n for (let i = 0; i < value.length; i++) {\n const elementResult = this.validatePropertyValue(\n value[i],\n elementDataType,\n elementEffectiveRules\n )\n if (!elementResult.isValid && elementResult.errors.length > 0) {\n for (const err of elementResult.errors) {\n errors.push({\n field: `value[${i}]`,\n message: `Element at index ${i}: ${err.message}`,\n code: validationRules?.enum && Array.isArray(validationRules.enum) && validationRules.enum.length > 0 ? 'enum_violation' : err.code,\n severity: err.severity,\n })\n }\n }\n }\n if (validationRules) {\n const customErrors = this.validateCustomRules(value, validationRules)\n errors.push(...customErrors)\n }\n return {\n isValid: errors.length === 0,\n errors,\n warnings: warnings.length > 0 ? warnings : undefined,\n }\n }\n\n // List without refValueType or non-array: validate as scalar/array\n if (dataType === ModelPropertyDataTypes.List && !Array.isArray(value) && value != null) {\n errors.push({\n field: 'value',\n message: 'List properties require an array value.',\n code: 'array_required',\n severity: 'error' as const,\n })\n return { isValid: false, errors }\n }\n\n // Build base TypeBox schema from dataType\n let schema: TSchema = this.getBaseSchemaForDataType(dataType)\n\n // Apply default maxLength for Text when not explicitly set. Html holds arbitrary-length content (e.g. article body) and must not default to 255.\n const effectiveRules = validationRules ? { ...validationRules } : {}\n if (dataType === ModelPropertyDataTypes.Text && effectiveRules.maxLength === undefined) {\n effectiveRules.maxLength = DEFAULT_TEXT_MAX_LENGTH\n }\n\n // Apply validation rules\n const hasEnumRules = !!(validationRules?.enum && Array.isArray(validationRules.enum) && validationRules.enum.length > 0)\n if (Object.keys(effectiveRules).length > 0) {\n schema = this.applyValidationRules(schema, dataType, effectiveRules)\n }\n\n // Validate using TypeBox\n const isValid = Value.Check(schema, value)\n \n if (!isValid) {\n const typeBoxErrors = [...Value.Errors(schema, value)]\n const effectiveMaxLength = effectiveRules.maxLength\n const isDefaultTextLimit =\n dataType === ModelPropertyDataTypes.Text &&\n effectiveMaxLength === DEFAULT_TEXT_MAX_LENGTH &&\n validationRules?.maxLength === undefined\n errors.push(...typeBoxErrors.map(err => {\n const fieldPath = err.path || 'value'\n const originalMessage = (err.message || '').toLowerCase()\n // TypeBox maxLength errors have message like \"Expected string length less or equal to X\"\n const isMaxLengthError = originalMessage.includes('length') && (originalMessage.includes('less') || originalMessage.includes('equal') || originalMessage.includes('max'))\n let enhancedMessage: string\n if (isMaxLengthError && effectiveMaxLength !== undefined) {\n const typeLabel = dataType === ModelPropertyDataTypes.Html ? 'Html' : 'Text'\n if (isDefaultTextLimit) {\n enhancedMessage = `Text properties have a default limit of 255 characters. For longer content, use a File property instead, which can hold arbitrary amounts of text or data.`\n } else {\n enhancedMessage = `${typeLabel} must be ${effectiveMaxLength} characters or less. For longer content, use a File property instead, which can hold arbitrary amounts of text or data.`\n }\n } else {\n enhancedMessage = this.enhanceErrorMessage(err, schema, fieldPath)\n }\n // Use max_length_exceeded when failure is due to maxLength; enum_violation when enum rules; else generic\n const code = isMaxLengthError\n ? 'max_length_exceeded'\n : hasEnumRules\n ? 'enum_violation'\n : String(err.type || 'value_validation_error')\n\n return {\n field: fieldPath,\n message: enhancedMessage,\n code,\n severity: 'error' as const,\n }\n }))\n }\n\n // Additional custom validations\n if (validationRules) {\n const customErrors = this.validateCustomRules(value, validationRules)\n errors.push(...customErrors)\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n warnings: warnings.length > 0 ? warnings : undefined,\n }\n } catch (error) {\n logger('Error validating property value:', error)\n return {\n isValid: false,\n errors: [{\n field: 'value',\n message: error instanceof Error ? error.message : 'Unknown validation error',\n code: 'validation_exception',\n severity: 'error' as const,\n }],\n }\n }\n }\n\n /**\n * Validate a specific property within a schema\n */\n validateProperty(\n schema: SchemaMachineContext,\n modelName: string,\n propertyName: string,\n propertyData?: ModelPropertyMachineContext\n ): ValidationResult {\n const errors: ValidationError[] = []\n\n // Check if model exists\n if (!schema.models || !schema.models[modelName]) {\n errors.push({\n field: 'model',\n message: `Model \"${modelName}\" not found in schema`,\n code: 'model_not_found',\n severity: 'error' as const,\n })\n return { isValid: false, errors }\n }\n\n const model = schema.models[modelName]\n\n // Check if property exists in model\n // If the property name has changed (renamed), check if the original name exists\n let propertyDefinition = model.properties?.[propertyName]\n let actualPropertyName = propertyName\n \n if (!propertyDefinition && propertyData?._originalValues?.name) {\n const originalName = propertyData._originalValues.name\n // If the current name differs from the original, check if original exists\n if (originalName !== propertyName && model.properties?.[originalName]) {\n propertyDefinition = model.properties[originalName]\n actualPropertyName = originalName\n // Property is being renamed, which is allowed - continue validation\n }\n }\n \n if (!propertyDefinition) {\n errors.push({\n field: 'property',\n message: `Property \"${propertyName}\" not found in model \"${modelName}\"`,\n code: 'property_not_found',\n severity: 'error' as const,\n })\n return { isValid: false, errors }\n }\n\n // If propertyData is provided, validate its structure\n if (propertyData) {\n const structureResult = this.validatePropertyStructure(propertyData)\n errors.push(...structureResult.errors)\n }\n\n // Validate property definition structure\n if (!propertyDefinition.type) {\n errors.push({\n field: 'property.type',\n message: 'Property type is required',\n code: 'missing_type',\n severity: 'error' as const,\n })\n }\n\n // Validate Relation: requires model\n if (propertyDefinition.type === 'Relation') {\n if (!propertyDefinition.model || propertyDefinition.model.trim() === '') {\n errors.push({\n field: 'property.model',\n message: `Property with type \"Relation\" requires a \"model\" field to be defined`,\n code: 'missing_ref',\n severity: 'error' as const,\n })\n } else if (!schema.models[propertyDefinition.model]) {\n errors.push({\n field: 'property.model',\n message: `Referenced model \"${propertyDefinition.model}\" not found in schema`,\n code: 'invalid_reference',\n severity: 'error' as const,\n })\n }\n }\n\n // Validate List: requires refValueType; ref (model) required only when refValueType === 'Relation' (case-insensitive)\n if (propertyDefinition.type === 'List' || (propertyDefinition as any).dataType === 'List') {\n const rawRefValueType = (propertyDefinition as any).refValueType ?? (propertyDefinition as any).items?.type ?? (propertyDefinition as any).refvaluetype\n const refValueType = rawRefValueType ? normalizeDataType(String(rawRefValueType)) : undefined\n if (!refValueType || String(refValueType).trim() === '') {\n errors.push({\n field: 'property.refValueType',\n message: 'List properties require \"refValueType\" (e.g. refValueType: \"Text\" or refValueType: \"Relation\" with ref: \"Tag\")',\n code: 'missing_ref_value_type',\n severity: 'error' as const,\n })\n } else if (refValueType === 'Relation' || refValueType === 'RelationProperty') {\n const model = (propertyDefinition as any).ref ?? (propertyDefinition as any).model ?? (propertyDefinition as any).items?.model\n if (!model || String(model).trim() === '') {\n errors.push({\n field: 'property.ref',\n message: 'List of relations requires \"ref\" to specify the related model',\n code: 'missing_ref',\n severity: 'error' as const,\n })\n } else if (schema.models && !schema.models[model]) {\n errors.push({\n field: 'property.ref',\n message: `Referenced model \"${model}\" not found in schema`,\n code: 'invalid_reference',\n severity: 'error' as const,\n })\n }\n }\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n }\n }\n\n /**\n * Validate model structure (basic structure checks)\n */\n validateModelStructure(\n model: ModelMachineContext & { properties?: { [key: string]: any } }\n ): ValidationResult {\n const errors: ValidationError[] = []\n\n // Validate model name\n if (!model.modelName || model.modelName.trim() === '') {\n errors.push({\n field: 'modelName',\n message: 'Model name is required',\n code: 'missing_model_name',\n severity: 'error' as const,\n })\n }\n\n // Validate schema name\n if (!model.schemaName || model.schemaName.trim() === '') {\n errors.push({\n field: 'schemaName',\n message: 'Schema name is required',\n code: 'missing_schema_name',\n severity: 'error' as const,\n })\n }\n\n // Validate properties is an object\n if (model.properties && typeof model.properties !== 'object') {\n errors.push({\n field: 'properties',\n message: 'Properties must be an object',\n code: 'invalid_properties',\n severity: 'error' as const,\n })\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n }\n }\n\n /**\n * Validate a model against a schema WITHOUT requiring it to be in the schema's context\n * This allows validation before registration, preventing update loops\n */\n validateModelAgainstSchema(\n schema: SchemaMachineContext,\n modelName: string,\n modelData: ModelMachineContext & { properties?: { [key: string]: any } }\n ): ValidationResult {\n const errors: ValidationError[] = []\n\n // Create a temporary schema context that includes this model for validation purposes\n // This allows validateProperty to work without actually adding the model to the real schema\n const tempSchemaContext: SchemaMachineContext = {\n ...schema,\n models: {\n ...schema.models,\n [modelName]: {\n properties: modelData.properties || {},\n },\n },\n }\n\n // Use validateModel which now works because the model is in the temp context\n return this.validateModel(tempSchemaContext, modelName, modelData)\n }\n\n /**\n * Validate a model within a schema (requires model to already be in schema context)\n */\n validateModel(\n schema: SchemaMachineContext,\n modelName: string,\n modelData?: ModelMachineContext\n ): ValidationResult {\n const errors: ValidationError[] = []\n\n if (!schema.models || !schema.models[modelName]) {\n errors.push({\n field: 'model',\n message: `Model \"${modelName}\" not found in schema`,\n code: 'model_not_found',\n severity: 'error' as const,\n })\n return { isValid: false, errors }\n }\n\n const model = schema.models[modelName]\n\n // Validate all properties in the model\n if (model.properties) {\n for (const [propertyName, propertyDef] of Object.entries(model.properties)) {\n const propertyResult = this.validateProperty(schema, modelName, propertyName)\n if (!propertyResult.isValid) {\n errors.push(...propertyResult.errors.map(err => ({\n ...err,\n field: `${modelName}.${propertyName}.${err.field}`,\n })))\n }\n }\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n }\n }\n\n /**\n * Validate entire schema\n */\n validateSchema(schema: SchemaMachineContext): ValidationResult {\n const errors: ValidationError[] = []\n\n // Validate schema name\n if (!schema.schemaName || schema.schemaName.trim() === '') {\n errors.push({\n field: 'schemaName',\n message: 'Schema name is required',\n code: 'missing_schema_name',\n severity: 'error' as const,\n })\n }\n\n // Validate metadata\n if (!schema.metadata) {\n errors.push({\n field: 'metadata',\n message: 'Schema metadata is required',\n code: 'missing_metadata',\n severity: 'error' as const,\n })\n } else {\n if (!schema.metadata.name || schema.metadata.name.trim() === '') {\n errors.push({\n field: 'metadata.name',\n message: 'Schema metadata name is required',\n code: 'missing_metadata_name',\n severity: 'error' as const,\n })\n }\n }\n\n // Validate models if they exist\n if (schema.models && Object.keys(schema.models).length > 0) {\n // Validate each model\n for (const modelName of Object.keys(schema.models)) {\n const modelResult = this.validateModel(schema, modelName)\n if (!modelResult.isValid) {\n errors.push(...modelResult.errors)\n }\n }\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n }\n }\n\n /**\n * Get base TypeBox schema for a data type\n */\n private getBaseSchemaForDataType(dataType: ModelPropertyDataTypes): TSchema {\n switch (dataType) {\n case ModelPropertyDataTypes.Text:\n case ModelPropertyDataTypes.Html:\n return Type.String()\n case ModelPropertyDataTypes.Number:\n return Type.Number()\n case ModelPropertyDataTypes.Boolean:\n return Type.Boolean()\n case ModelPropertyDataTypes.Date:\n return Type.String({ format: 'date-time' })\n case ModelPropertyDataTypes.Json:\n return Type.Any()\n case ModelPropertyDataTypes.List:\n return Type.Array(Type.Any())\n case ModelPropertyDataTypes.Relation:\n case ModelPropertyDataTypes.Image:\n case ModelPropertyDataTypes.File:\n return Type.Union([Type.String(), Type.Null()])\n default:\n return Type.Any()\n }\n }\n\n /**\n * Apply validation rules to a TypeBox schema\n */\n private applyValidationRules(\n schema: TSchema,\n dataType: ModelPropertyDataTypes,\n rules: ValidationRules\n ): TSchema {\n let result = schema\n\n // Apply pattern (regex) for strings\n if (rules.pattern && (dataType === ModelPropertyDataTypes.Text || dataType === ModelPropertyDataTypes.Html)) {\n try {\n const regex = new RegExp(rules.pattern)\n result = Type.RegExp(regex)\n } catch (error) {\n logger('Invalid regex pattern:', rules.pattern, error)\n }\n }\n\n // Apply minLength/maxLength for strings\n if (dataType === ModelPropertyDataTypes.Text || dataType === ModelPropertyDataTypes.Html) {\n const stringSchema = Type.String()\n if (rules.minLength !== undefined) {\n result = Type.String({ minLength: rules.minLength })\n }\n if (rules.maxLength !== undefined) {\n if (rules.minLength !== undefined) {\n result = Type.String({ minLength: rules.minLength, maxLength: rules.maxLength })\n } else {\n result = Type.String({ maxLength: rules.maxLength })\n }\n }\n }\n\n // Apply enum\n if (rules.enum && Array.isArray(rules.enum) && rules.enum.length > 0) {\n result = Type.Union(rules.enum.map(val => Type.Literal(val)))\n }\n\n return result\n }\n\n /**\n * Validate custom validation rules\n */\n private validateCustomRules(\n value: any,\n rules: ValidationRules\n ): ValidationError[] {\n const errors: ValidationError[] = []\n\n // Custom validator reference (would need to be implemented based on your needs)\n if (rules.custom) {\n // TODO: Implement custom validator lookup and execution\n logger('Custom validator not yet implemented:', rules.custom)\n }\n\n return errors\n }\n}\n\n"],"names":["ModelPropertyDataTypes","TPropertyDataType","normalizeDataType","Value","TProperty","value","DEFAULT_TEXT_MAX_LENGTH","Type"],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var drizzleOrm = require('drizzle-orm');
|
|
4
|
+
var main_cjs = require('./index-9O_Ji1kY.js');
|
|
5
|
+
var debug = require('debug');
|
|
6
|
+
require('immer');
|
|
7
|
+
require('reflect-metadata');
|
|
8
|
+
require('xstate');
|
|
9
|
+
require('drizzle-orm/sqlite-core');
|
|
10
|
+
require('nanoid');
|
|
11
|
+
require('nanoid-dictionary');
|
|
12
|
+
require('ethers');
|
|
13
|
+
require('pluralize');
|
|
14
|
+
require('@sinclair/typebox');
|
|
15
|
+
require('drizzle-orm/casing');
|
|
16
|
+
require('lodash-es');
|
|
17
|
+
require('rxjs');
|
|
18
|
+
require('eventemitter3');
|
|
19
|
+
require('arweave');
|
|
20
|
+
require('js-sha3');
|
|
21
|
+
require('fs/promises');
|
|
22
|
+
require('fs');
|
|
23
|
+
require('path');
|
|
24
|
+
require('@libsql/client');
|
|
25
|
+
require('drizzle-orm/libsql');
|
|
26
|
+
require('drizzle-kit/api');
|
|
27
|
+
require('js-yaml');
|
|
28
|
+
require('ts-import');
|
|
29
|
+
require('glob');
|
|
30
|
+
require('rimraf');
|
|
31
|
+
require('child_process');
|
|
32
|
+
require('url');
|
|
33
|
+
require('graphql-request');
|
|
34
|
+
|
|
35
|
+
const logger = debug('seedSdk:db:backfillMetadataPropertyIds');
|
|
36
|
+
/**
|
|
37
|
+
* Backfill metadata.property_id for rows that have model_type and property_name
|
|
38
|
+
* but property_id is null. Run after migrations. Idempotent - only updates NULL rows.
|
|
39
|
+
* Call after appDb is set (e.g. at end of prepareDb).
|
|
40
|
+
*/
|
|
41
|
+
async function backfillMetadataPropertyIds() {
|
|
42
|
+
const db = main_cjs.BaseDb.getAppDb();
|
|
43
|
+
if (!db) {
|
|
44
|
+
logger('No app db available, skipping backfill');
|
|
45
|
+
return 0;
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
const rowsToBackfill = await db
|
|
49
|
+
.select({
|
|
50
|
+
localId: main_cjs.metadata.localId,
|
|
51
|
+
modelType: main_cjs.metadata.modelType,
|
|
52
|
+
propertyName: main_cjs.metadata.propertyName,
|
|
53
|
+
})
|
|
54
|
+
.from(main_cjs.metadata)
|
|
55
|
+
.where(drizzleOrm.and(drizzleOrm.isNull(main_cjs.metadata.propertyId), drizzleOrm.sql `${main_cjs.metadata.modelType} IS NOT NULL`, drizzleOrm.sql `${main_cjs.metadata.propertyName} IS NOT NULL`));
|
|
56
|
+
if (rowsToBackfill.length === 0) {
|
|
57
|
+
return 0;
|
|
58
|
+
}
|
|
59
|
+
let updated = 0;
|
|
60
|
+
for (const row of rowsToBackfill) {
|
|
61
|
+
if (!row.modelType || !row.propertyName || !row.localId)
|
|
62
|
+
continue;
|
|
63
|
+
const propertyId = await main_cjs.getPropertyIdForModelAndName(row.modelType, row.propertyName);
|
|
64
|
+
if (propertyId == null)
|
|
65
|
+
continue;
|
|
66
|
+
await db
|
|
67
|
+
.update(main_cjs.metadata)
|
|
68
|
+
.set({ propertyId })
|
|
69
|
+
.where(drizzleOrm.eq(main_cjs.metadata.localId, row.localId));
|
|
70
|
+
updated++;
|
|
71
|
+
}
|
|
72
|
+
if (updated > 0) {
|
|
73
|
+
logger(`Backfilled property_id for ${updated}/${rowsToBackfill.length} metadata rows`);
|
|
74
|
+
}
|
|
75
|
+
return updated;
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
logger('Backfill error:', error);
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
exports.backfillMetadataPropertyIds = backfillMetadataPropertyIds;
|
|
84
|
+
//# sourceMappingURL=backfillMetadataPropertyIds-D9uzW5bW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backfillMetadataPropertyIds-D9uzW5bW.js","sources":["../../../src/db/backfillMetadataPropertyIds.ts"],"sourcesContent":["import { and, eq, isNull, sql } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { metadata } from '@/seedSchema'\nimport { getPropertyIdForModelAndName } from '@/helpers/db'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:db:backfillMetadataPropertyIds')\n\n/**\n * Backfill metadata.property_id for rows that have model_type and property_name\n * but property_id is null. Run after migrations. Idempotent - only updates NULL rows.\n * Call after appDb is set (e.g. at end of prepareDb).\n */\nexport async function backfillMetadataPropertyIds(): Promise<number> {\n const db = BaseDb.getAppDb()\n if (!db) {\n logger('No app db available, skipping backfill')\n return 0\n }\n\n try {\n const rowsToBackfill = await db\n .select({\n localId: metadata.localId,\n modelType: metadata.modelType,\n propertyName: metadata.propertyName,\n })\n .from(metadata)\n .where(\n and(\n isNull(metadata.propertyId),\n sql`${metadata.modelType} IS NOT NULL`,\n sql`${metadata.propertyName} IS NOT NULL`,\n ),\n )\n\n if (rowsToBackfill.length === 0) {\n return 0\n }\n\n let updated = 0\n for (const row of rowsToBackfill) {\n if (!row.modelType || !row.propertyName || !row.localId) continue\n\n const propertyId = await getPropertyIdForModelAndName(\n row.modelType,\n row.propertyName,\n )\n if (propertyId == null) continue\n\n await db\n .update(metadata)\n .set({ propertyId })\n .where(eq(metadata.localId, row.localId))\n\n updated++\n }\n\n if (updated > 0) {\n logger(`Backfilled property_id for ${updated}/${rowsToBackfill.length} metadata rows`)\n }\n return updated\n } catch (error) {\n logger('Backfill error:', error)\n throw error\n }\n}\n"],"names":["BaseDb","metadata","and","isNull","sql","getPropertyIdForModelAndName","eq"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,MAAM,GAAG,KAAK,CAAC,wCAAwC,CAAC;AAE9D;;;;AAIG;AACI,eAAe,2BAA2B,GAAA;AAC/C,IAAA,MAAM,EAAE,GAAGA,eAAM,CAAC,QAAQ,EAAE;IAC5B,IAAI,CAAC,EAAE,EAAE;QACP,MAAM,CAAC,wCAAwC,CAAC;AAChD,QAAA,OAAO,CAAC;IACV;AAEA,IAAA,IAAI;QACF,MAAM,cAAc,GAAG,MAAM;AAC1B,aAAA,MAAM,CAAC;YACN,OAAO,EAAEC,iBAAQ,CAAC,OAAO;YACzB,SAAS,EAAEA,iBAAQ,CAAC,SAAS;YAC7B,YAAY,EAAEA,iBAAQ,CAAC,YAAY;SACpC;aACA,IAAI,CAACA,iBAAQ;aACb,KAAK,CACJC,cAAG,CACDC,iBAAM,CAACF,iBAAQ,CAAC,UAAU,CAAC,EAC3BG,cAAG,CAAA,CAAA,EAAGH,iBAAQ,CAAC,SAAS,CAAA,YAAA,CAAc,EACtCG,cAAG,CAAA,CAAA,EAAGH,iBAAQ,CAAC,YAAY,CAAA,YAAA,CAAc,CAC1C,CACF;AAEH,QAAA,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,YAAA,OAAO,CAAC;QACV;QAEA,IAAI,OAAO,GAAG,CAAC;AACf,QAAA,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE;AAChC,YAAA,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,OAAO;gBAAE;AAEzD,YAAA,MAAM,UAAU,GAAG,MAAMI,qCAA4B,CACnD,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,YAAY,CACjB;YACD,IAAI,UAAU,IAAI,IAAI;gBAAE;AAExB,YAAA,MAAM;iBACH,MAAM,CAACJ,iBAAQ;AACf,iBAAA,GAAG,CAAC,EAAE,UAAU,EAAE;AAClB,iBAAA,KAAK,CAACK,aAAE,CAACL,iBAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAE3C,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,IAAI,OAAO,GAAG,CAAC,EAAE;YACf,MAAM,CAAC,8BAA8B,OAAO,CAAA,CAAA,EAAI,cAAc,CAAC,MAAM,CAAA,cAAA,CAAgB,CAAC;QACxF;AACA,QAAA,OAAO,OAAO;IAChB;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,MAAM,CAAC,iBAAiB,EAAE,KAAK,CAAC;AAChC,QAAA,MAAM,KAAK;IACb;AACF;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var main_cjs = require('./index-
|
|
3
|
+
var main_cjs = require('./index-9O_Ji1kY.js');
|
|
4
4
|
var lodashEs = require('lodash-es');
|
|
5
5
|
require('immer');
|
|
6
6
|
require('reflect-metadata');
|
|
@@ -12,11 +12,12 @@ require('nanoid-dictionary');
|
|
|
12
12
|
require('debug');
|
|
13
13
|
require('ethers');
|
|
14
14
|
require('pluralize');
|
|
15
|
-
require('
|
|
15
|
+
require('@sinclair/typebox');
|
|
16
16
|
require('drizzle-orm/casing');
|
|
17
|
+
require('rxjs');
|
|
17
18
|
require('eventemitter3');
|
|
18
19
|
require('arweave');
|
|
19
|
-
require('
|
|
20
|
+
require('js-sha3');
|
|
20
21
|
require('fs/promises');
|
|
21
22
|
require('fs');
|
|
22
23
|
require('path');
|
|
@@ -52,4 +53,4 @@ const getItem = async ({ modelName, seedLocalId, seedUid }) => {
|
|
|
52
53
|
};
|
|
53
54
|
|
|
54
55
|
exports.getItem = getItem;
|
|
55
|
-
//# sourceMappingURL=getItem-
|
|
56
|
+
//# sourceMappingURL=getItem-Dj49AjWB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getItem-
|
|
1
|
+
{"version":3,"file":"getItem-Dj49AjWB.js","sources":["../../../src/db/read/getItem.ts"],"sourcesContent":["import { getItemData } from './getItemData'\nimport { GetItem } from '@/types'\nimport { Item } from '@/Item/Item'\nimport { startCase } from 'lodash-es'\n\nexport const getItem: GetItem = async ({ modelName, seedLocalId, seedUid }) => {\n const itemInitObj = await getItemData({\n modelName,\n seedLocalId,\n seedUid,\n })\n\n if (!itemInitObj) {\n console.error(\n `[db/queries] [getItem] no itemInitObj modelName: ${modelName} seedLocalId: ${seedLocalId} seedUid: ${seedUid}`,\n )\n return\n }\n\n if (!itemInitObj.seedLocalId) {\n console.error(\n `[db/queries] [getItem] no itemInitObj.seedLocalId modelName: ${modelName} seedLocalId: ${seedLocalId} seedUid: ${seedUid}`,\n )\n return\n }\n\n if (!itemInitObj.modelName && itemInitObj.type) {\n itemInitObj.modelName = startCase(itemInitObj.type)\n }\n\n return Item.create(itemInitObj)\n}\n"],"names":["getItemData","startCase","Item"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,MAAM,OAAO,GAAY,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,KAAI;AAC5E,IAAA,MAAM,WAAW,GAAG,MAAMA,oBAAW,CAAC;QACpC,SAAS;QACT,WAAW;QACX,OAAO;AACR,KAAA,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,CAAC,KAAK,CACX,CAAA,iDAAA,EAAoD,SAAS,CAAA,cAAA,EAAiB,WAAW,CAAA,UAAA,EAAa,OAAO,CAAA,CAAE,CAChH;QACD;IACF;AAEA,IAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;QAC5B,OAAO,CAAC,KAAK,CACX,CAAA,6DAAA,EAAgE,SAAS,CAAA,cAAA,EAAiB,WAAW,CAAA,UAAA,EAAa,OAAO,CAAA,CAAE,CAC5H;QACD;IACF;IAEA,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,IAAI,EAAE;QAC9C,WAAW,CAAC,SAAS,GAAGC,kBAAS,CAAC,WAAW,CAAC,IAAI,CAAC;IACrD;AAEA,IAAA,OAAOC,aAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AACjC;;;;"}
|