joist-core 2.4.0-next.37 → 2.4.0-next.39
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/build/BaseEntity.d.cts +3 -4
- package/build/BaseEntity.d.cts.map +1 -1
- package/build/BaseEntity.d.mts +3 -4
- package/build/BaseEntity.d.mts.map +1 -1
- package/build/Entity.d.cts +3 -4
- package/build/Entity.d.cts.map +1 -1
- package/build/Entity.d.mts +3 -4
- package/build/Entity.d.mts.map +1 -1
- package/build/EntityFields.d.cts +3 -4
- package/build/EntityFields.d.cts.map +1 -1
- package/build/EntityFields.d.mts +3 -4
- package/build/EntityFields.d.mts.map +1 -1
- package/build/EntityManager.cjs +11 -3
- package/build/EntityManager.cjs.map +1 -1
- package/build/EntityManager.d.cts +47 -41
- package/build/EntityManager.d.cts.map +1 -1
- package/build/EntityManager.d.mts +47 -41
- package/build/EntityManager.d.mts.map +1 -1
- package/build/EntityManager.js +11 -3
- package/build/EntityManager.js.map +1 -1
- package/build/EntityMetadata.d.cts +31 -32
- package/build/EntityMetadata.d.cts.map +1 -1
- package/build/EntityMetadata.d.mts +31 -32
- package/build/EntityMetadata.d.mts.map +1 -1
- package/build/EnumMetadata.d.cts +1 -2
- package/build/EnumMetadata.d.cts.map +1 -1
- package/build/EnumMetadata.d.mts +1 -2
- package/build/EnumMetadata.d.mts.map +1 -1
- package/build/IndexManager.cjs.map +1 -1
- package/build/IndexManager.d.cts +2 -3
- package/build/IndexManager.d.cts.map +1 -1
- package/build/IndexManager.d.mts +2 -3
- package/build/IndexManager.d.mts.map +1 -1
- package/build/IndexManager.js.map +1 -1
- package/build/InstanceData.cjs.map +1 -1
- package/build/InstanceData.d.cts +1 -2
- package/build/InstanceData.d.cts.map +1 -1
- package/build/InstanceData.d.mts +1 -2
- package/build/InstanceData.d.mts.map +1 -1
- package/build/InstanceData.js.map +1 -1
- package/build/PluginManager.cjs.map +1 -1
- package/build/PluginManager.d.cts +4 -4
- package/build/PluginManager.d.cts.map +1 -1
- package/build/PluginManager.d.mts +4 -4
- package/build/PluginManager.d.mts.map +1 -1
- package/build/PluginManager.js.map +1 -1
- package/build/RowData.d.cts +3 -4
- package/build/RowData.d.cts.map +1 -1
- package/build/RowData.d.mts +3 -4
- package/build/RowData.d.mts.map +1 -1
- package/build/batchloaders/BatchLoader.cjs.map +1 -1
- package/build/batchloaders/BatchLoader.d.cts +1 -2
- package/build/batchloaders/BatchLoader.d.cts.map +1 -1
- package/build/batchloaders/BatchLoader.d.mts +1 -2
- package/build/batchloaders/BatchLoader.d.mts.map +1 -1
- package/build/batchloaders/BatchLoader.js.map +1 -1
- package/build/batchloaders/enumCollectionBatchLoader.d.cts +2 -3
- package/build/batchloaders/enumCollectionBatchLoader.d.cts.map +1 -1
- package/build/batchloaders/enumCollectionBatchLoader.d.mts +2 -3
- package/build/batchloaders/enumCollectionBatchLoader.d.mts.map +1 -1
- package/build/batchloaders/loadBatchLoader.d.cts +2 -3
- package/build/batchloaders/loadBatchLoader.d.cts.map +1 -1
- package/build/batchloaders/loadBatchLoader.d.mts +2 -3
- package/build/batchloaders/loadBatchLoader.d.mts.map +1 -1
- package/build/batchloaders/manyToManyBatchLoader.d.cts +2 -3
- package/build/batchloaders/manyToManyBatchLoader.d.cts.map +1 -1
- package/build/batchloaders/manyToManyBatchLoader.d.mts +2 -3
- package/build/batchloaders/manyToManyBatchLoader.d.mts.map +1 -1
- package/build/batchloaders/oneToManyBatchLoader.d.cts +2 -3
- package/build/batchloaders/oneToManyBatchLoader.d.cts.map +1 -1
- package/build/batchloaders/oneToManyBatchLoader.d.mts +2 -3
- package/build/batchloaders/oneToManyBatchLoader.d.mts.map +1 -1
- package/build/batchloaders/oneToOneBatchLoader.d.cts +2 -3
- package/build/batchloaders/oneToOneBatchLoader.d.cts.map +1 -1
- package/build/batchloaders/oneToOneBatchLoader.d.mts +2 -3
- package/build/batchloaders/oneToOneBatchLoader.d.mts.map +1 -1
- package/build/batchloaders/populateBatchLoader.d.cts +2 -3
- package/build/batchloaders/populateBatchLoader.d.cts.map +1 -1
- package/build/batchloaders/populateBatchLoader.d.mts +2 -3
- package/build/batchloaders/populateBatchLoader.d.mts.map +1 -1
- package/build/batchloaders/recursiveChildrenBatchLoader.d.cts +2 -3
- package/build/batchloaders/recursiveChildrenBatchLoader.d.cts.map +1 -1
- package/build/batchloaders/recursiveChildrenBatchLoader.d.mts +2 -3
- package/build/batchloaders/recursiveChildrenBatchLoader.d.mts.map +1 -1
- package/build/batchloaders/recursiveM2mBatchLoader.d.cts +2 -3
- package/build/batchloaders/recursiveM2mBatchLoader.d.cts.map +1 -1
- package/build/batchloaders/recursiveM2mBatchLoader.d.mts +2 -3
- package/build/batchloaders/recursiveM2mBatchLoader.d.mts.map +1 -1
- package/build/batchloaders/recursiveParentsBatchLoader.d.cts +2 -3
- package/build/batchloaders/recursiveParentsBatchLoader.d.cts.map +1 -1
- package/build/batchloaders/recursiveParentsBatchLoader.d.mts +2 -3
- package/build/batchloaders/recursiveParentsBatchLoader.d.mts.map +1 -1
- package/build/changes.cjs.map +1 -1
- package/build/changes.d.cts +9 -10
- package/build/changes.d.cts.map +1 -1
- package/build/changes.d.mts +9 -10
- package/build/changes.d.mts.map +1 -1
- package/build/changes.js.map +1 -1
- package/build/config.d.cts +17 -17
- package/build/config.d.cts.map +1 -1
- package/build/config.d.mts +17 -17
- package/build/config.d.mts.map +1 -1
- package/build/configure.d.cts +8 -9
- package/build/configure.d.cts.map +1 -1
- package/build/configure.d.mts +8 -9
- package/build/configure.d.mts.map +1 -1
- package/build/dataloaders/fastWhereFilterHash.d.cts +1 -2
- package/build/dataloaders/fastWhereFilterHash.d.cts.map +1 -1
- package/build/dataloaders/fastWhereFilterHash.d.mts +1 -2
- package/build/dataloaders/fastWhereFilterHash.d.mts.map +1 -1
- package/build/dataloaders/findByUniqueDataLoader.d.cts +2 -3
- package/build/dataloaders/findByUniqueDataLoader.d.cts.map +1 -1
- package/build/dataloaders/findByUniqueDataLoader.d.mts +2 -3
- package/build/dataloaders/findByUniqueDataLoader.d.mts.map +1 -1
- package/build/dataloaders/findCountDataLoader.d.cts +4 -5
- package/build/dataloaders/findCountDataLoader.d.cts.map +1 -1
- package/build/dataloaders/findCountDataLoader.d.mts +4 -5
- package/build/dataloaders/findCountDataLoader.d.mts.map +1 -1
- package/build/dataloaders/findDataLoader.d.cts +11 -12
- package/build/dataloaders/findDataLoader.d.cts.map +1 -1
- package/build/dataloaders/findDataLoader.d.mts +11 -12
- package/build/dataloaders/findDataLoader.d.mts.map +1 -1
- package/build/dataloaders/findIdsDataLoader.d.cts +2 -3
- package/build/dataloaders/findIdsDataLoader.d.cts.map +1 -1
- package/build/dataloaders/findIdsDataLoader.d.mts +2 -3
- package/build/dataloaders/findIdsDataLoader.d.mts.map +1 -1
- package/build/dataloaders/findOrCreateDataLoader.d.cts +3 -3
- package/build/dataloaders/findOrCreateDataLoader.d.cts.map +1 -1
- package/build/dataloaders/findOrCreateDataLoader.d.mts +3 -3
- package/build/dataloaders/findOrCreateDataLoader.d.mts.map +1 -1
- package/build/dataloaders/findPaginatedDataLoader.d.cts +1 -2
- package/build/dataloaders/findPaginatedDataLoader.d.cts.map +1 -1
- package/build/dataloaders/findPaginatedDataLoader.d.mts +1 -2
- package/build/dataloaders/findPaginatedDataLoader.d.mts.map +1 -1
- package/build/dataloaders/lensDataLoader.d.cts +2 -3
- package/build/dataloaders/lensDataLoader.d.cts.map +1 -1
- package/build/dataloaders/lensDataLoader.d.mts +2 -3
- package/build/dataloaders/lensDataLoader.d.mts.map +1 -1
- package/build/dataloaders/manyToManyFindDataLoader.d.cts +2 -3
- package/build/dataloaders/manyToManyFindDataLoader.d.cts.map +1 -1
- package/build/dataloaders/manyToManyFindDataLoader.d.mts +2 -3
- package/build/dataloaders/manyToManyFindDataLoader.d.mts.map +1 -1
- package/build/dataloaders/oneToManyFindDataLoader.d.cts +2 -3
- package/build/dataloaders/oneToManyFindDataLoader.d.cts.map +1 -1
- package/build/dataloaders/oneToManyFindDataLoader.d.mts +2 -3
- package/build/dataloaders/oneToManyFindDataLoader.d.mts.map +1 -1
- package/build/defaults.cjs.map +1 -1
- package/build/defaults.d.cts +7 -7
- package/build/defaults.d.cts.map +1 -1
- package/build/defaults.d.mts +7 -7
- package/build/defaults.d.mts.map +1 -1
- package/build/defaults.js.map +1 -1
- package/build/drivers/Driver.d.cts +2 -3
- package/build/drivers/Driver.d.cts.map +1 -1
- package/build/drivers/Driver.d.mts +2 -3
- package/build/drivers/Driver.d.mts.map +1 -1
- package/build/drivers/EntityWriter.d.cts +7 -7
- package/build/drivers/EntityWriter.d.cts.map +1 -1
- package/build/drivers/EntityWriter.d.mts +7 -7
- package/build/drivers/EntityWriter.d.mts.map +1 -1
- package/build/drivers/IdAssigner.cjs.map +1 -1
- package/build/drivers/IdAssigner.d.cts +5 -5
- package/build/drivers/IdAssigner.d.cts.map +1 -1
- package/build/drivers/IdAssigner.d.mts +5 -5
- package/build/drivers/IdAssigner.d.mts.map +1 -1
- package/build/drivers/IdAssigner.js.map +1 -1
- package/build/drivers/driverApi.d.cts +2 -3
- package/build/drivers/driverApi.d.cts.map +1 -1
- package/build/drivers/driverApi.d.mts +2 -3
- package/build/drivers/driverApi.d.mts.map +1 -1
- package/build/fields.d.cts +6 -7
- package/build/fields.d.cts.map +1 -1
- package/build/fields.d.mts +6 -7
- package/build/fields.d.mts.map +1 -1
- package/build/flush/FlushLock.cjs.map +1 -1
- package/build/flush/FlushLock.d.cts +1 -2
- package/build/flush/FlushLock.d.cts.map +1 -1
- package/build/flush/FlushLock.d.mts +1 -2
- package/build/flush/FlushLock.d.mts.map +1 -1
- package/build/flush/FlushLock.js.map +1 -1
- package/build/flush/JoinRows.cjs.map +1 -1
- package/build/flush/JoinRows.d.cts +5 -6
- package/build/flush/JoinRows.d.cts.map +1 -1
- package/build/flush/JoinRows.d.mts +5 -6
- package/build/flush/JoinRows.d.mts.map +1 -1
- package/build/flush/JoinRows.js.map +1 -1
- package/build/flush/PendingChanges.d.cts +5 -6
- package/build/flush/PendingChanges.d.cts.map +1 -1
- package/build/flush/PendingChanges.d.mts +5 -6
- package/build/flush/PendingChanges.d.mts.map +1 -1
- package/build/flush/Todo.d.cts +5 -6
- package/build/flush/Todo.d.cts.map +1 -1
- package/build/flush/Todo.d.mts +5 -6
- package/build/flush/Todo.d.mts.map +1 -1
- package/build/getProperties.d.cts +3 -4
- package/build/getProperties.d.cts.map +1 -1
- package/build/getProperties.d.mts +3 -4
- package/build/getProperties.d.mts.map +1 -1
- package/build/index.d.cts +17 -17
- package/build/index.d.cts.map +1 -1
- package/build/index.d.mts +17 -17
- package/build/index.d.mts.map +1 -1
- package/build/json.d.cts +11 -11
- package/build/json.d.cts.map +1 -1
- package/build/json.d.mts +11 -11
- package/build/json.d.mts.map +1 -1
- package/build/keys.d.cts +27 -27
- package/build/keys.d.cts.map +1 -1
- package/build/keys.d.mts +27 -27
- package/build/keys.d.mts.map +1 -1
- package/build/loading/HintTree.d.cts +3 -4
- package/build/loading/HintTree.d.cts.map +1 -1
- package/build/loading/HintTree.d.mts +3 -4
- package/build/loading/HintTree.d.mts.map +1 -1
- package/build/loading/IsLoadedCache.cjs.map +1 -1
- package/build/loading/IsLoadedCache.d.cts +2 -3
- package/build/loading/IsLoadedCache.d.cts.map +1 -1
- package/build/loading/IsLoadedCache.d.mts +2 -3
- package/build/loading/IsLoadedCache.d.mts.map +1 -1
- package/build/loading/IsLoadedCache.js.map +1 -1
- package/build/loading/loadHints.d.cts +17 -17
- package/build/loading/loadHints.d.cts.map +1 -1
- package/build/loading/loadHints.d.mts +17 -17
- package/build/loading/loadHints.d.mts.map +1 -1
- package/build/loading/loadLens.d.cts +13 -13
- package/build/loading/loadLens.d.cts.map +1 -1
- package/build/loading/loadLens.d.mts +13 -13
- package/build/loading/loadLens.d.mts.map +1 -1
- package/build/loading/withLoaded.d.cts +5 -6
- package/build/loading/withLoaded.d.cts.map +1 -1
- package/build/loading/withLoaded.d.mts +5 -6
- package/build/loading/withLoaded.d.mts.map +1 -1
- package/build/logging/FactoryLogger.d.cts +3 -4
- package/build/logging/FactoryLogger.d.cts.map +1 -1
- package/build/logging/FactoryLogger.d.mts +3 -4
- package/build/logging/FactoryLogger.d.mts.map +1 -1
- package/build/logging/FieldLogger.cjs.map +1 -1
- package/build/logging/FieldLogger.d.cts +4 -5
- package/build/logging/FieldLogger.d.cts.map +1 -1
- package/build/logging/FieldLogger.d.mts +4 -5
- package/build/logging/FieldLogger.d.mts.map +1 -1
- package/build/logging/FieldLogger.js.map +1 -1
- package/build/logging/ReactionLogger.d.cts +7 -7
- package/build/logging/ReactionLogger.d.cts.map +1 -1
- package/build/logging/ReactionLogger.d.mts +7 -7
- package/build/logging/ReactionLogger.d.mts.map +1 -1
- package/build/newEntity.cjs.map +1 -1
- package/build/newEntity.d.cts +4 -5
- package/build/newEntity.d.cts.map +1 -1
- package/build/newEntity.d.mts +4 -5
- package/build/newEntity.d.mts.map +1 -1
- package/build/newEntity.js.map +1 -1
- package/build/newTestInstance.d.cts +21 -21
- package/build/newTestInstance.d.cts.map +1 -1
- package/build/newTestInstance.d.mts +21 -21
- package/build/newTestInstance.d.mts.map +1 -1
- package/build/normalizeHints.d.cts +7 -8
- package/build/normalizeHints.d.cts.map +1 -1
- package/build/normalizeHints.d.mts +7 -8
- package/build/normalizeHints.d.mts.map +1 -1
- package/build/nowUTC.d.cts +4 -5
- package/build/nowUTC.d.cts.map +1 -1
- package/build/nowUTC.d.mts +4 -5
- package/build/nowUTC.d.mts.map +1 -1
- package/build/plugins/ImmutableEntitiesPlugin.d.cts +1 -2
- package/build/plugins/ImmutableEntitiesPlugin.d.cts.map +1 -1
- package/build/plugins/ImmutableEntitiesPlugin.d.mts +1 -2
- package/build/plugins/ImmutableEntitiesPlugin.d.mts.map +1 -1
- package/build/plugins/PreloadPlugin.d.cts +3 -4
- package/build/plugins/PreloadPlugin.d.cts.map +1 -1
- package/build/plugins/PreloadPlugin.d.mts +3 -4
- package/build/plugins/PreloadPlugin.d.mts.map +1 -1
- package/build/preloading/JsonAggregatePreloader.d.cts +1 -2
- package/build/preloading/JsonAggregatePreloader.d.cts.map +1 -1
- package/build/preloading/JsonAggregatePreloader.d.mts +1 -2
- package/build/preloading/JsonAggregatePreloader.d.mts.map +1 -1
- package/build/preloading/canPreload.d.cts +1 -2
- package/build/preloading/canPreload.d.cts.map +1 -1
- package/build/preloading/canPreload.d.mts +1 -2
- package/build/preloading/canPreload.d.mts.map +1 -1
- package/build/preloading/partitionHint.d.cts +1 -2
- package/build/preloading/partitionHint.d.cts.map +1 -1
- package/build/preloading/partitionHint.d.mts +1 -2
- package/build/preloading/partitionHint.d.mts.map +1 -1
- package/build/queries/ConditionBuilder.d.cts +2 -2
- package/build/queries/ConditionBuilder.d.cts.map +1 -1
- package/build/queries/ConditionBuilder.d.mts +2 -2
- package/build/queries/ConditionBuilder.d.mts.map +1 -1
- package/build/queries/conditions.d.cts +11 -12
- package/build/queries/conditions.d.cts.map +1 -1
- package/build/queries/conditions.d.mts +11 -12
- package/build/queries/conditions.d.mts.map +1 -1
- package/build/queries/entityQueryUtils.d.cts +4 -5
- package/build/queries/entityQueryUtils.d.cts.map +1 -1
- package/build/queries/entityQueryUtils.d.mts +4 -5
- package/build/queries/entityQueryUtils.d.mts.map +1 -1
- package/build/queries/find/Aliases.d.cts +16 -16
- package/build/queries/find/Aliases.d.cts.map +1 -1
- package/build/queries/find/Aliases.d.mts +16 -16
- package/build/queries/find/Aliases.d.mts.map +1 -1
- package/build/queries/find/DeferredAlias.d.cts +5 -6
- package/build/queries/find/DeferredAlias.d.cts.map +1 -1
- package/build/queries/find/DeferredAlias.d.mts +5 -6
- package/build/queries/find/DeferredAlias.d.mts.map +1 -1
- package/build/queries/find/EntityFilter.d.cts +12 -13
- package/build/queries/find/EntityFilter.d.cts.map +1 -1
- package/build/queries/find/EntityFilter.d.mts +12 -13
- package/build/queries/find/EntityFilter.d.mts.map +1 -1
- package/build/queries/find/EntityGraphQLFilter.d.cts +8 -9
- package/build/queries/find/EntityGraphQLFilter.d.cts.map +1 -1
- package/build/queries/find/EntityGraphQLFilter.d.mts +8 -9
- package/build/queries/find/EntityGraphQLFilter.d.mts.map +1 -1
- package/build/queries/find/QueryParser.collectionJoins.d.cts +1 -2
- package/build/queries/find/QueryParser.collectionJoins.d.cts.map +1 -1
- package/build/queries/find/QueryParser.collectionJoins.d.mts +1 -2
- package/build/queries/find/QueryParser.collectionJoins.d.mts.map +1 -1
- package/build/queries/find/QueryParser.d.cts +18 -18
- package/build/queries/find/QueryParser.d.cts.map +1 -1
- package/build/queries/find/QueryParser.d.mts +18 -18
- package/build/queries/find/QueryParser.d.mts.map +1 -1
- package/build/queries/find/QueryParser.pruning.d.cts +2 -3
- package/build/queries/find/QueryParser.pruning.d.cts.map +1 -1
- package/build/queries/find/QueryParser.pruning.d.mts +2 -3
- package/build/queries/find/QueryParser.pruning.d.mts.map +1 -1
- package/build/queries/find/QueryVisitor.d.cts +4 -4
- package/build/queries/find/QueryVisitor.d.cts.map +1 -1
- package/build/queries/find/QueryVisitor.d.mts +4 -4
- package/build/queries/find/QueryVisitor.d.mts.map +1 -1
- package/build/queries/find/buildFindQuery.d.cts +3 -3
- package/build/queries/find/buildFindQuery.d.cts.map +1 -1
- package/build/queries/find/buildFindQuery.d.mts +3 -3
- package/build/queries/find/buildFindQuery.d.mts.map +1 -1
- package/build/queries/find/scopes.cjs.map +1 -1
- package/build/queries/find/scopes.d.cts +12 -13
- package/build/queries/find/scopes.d.cts.map +1 -1
- package/build/queries/find/scopes.d.mts +12 -13
- package/build/queries/find/scopes.d.mts.map +1 -1
- package/build/queries/find/scopes.js.map +1 -1
- package/build/queries/parsedConditions.d.cts +7 -8
- package/build/queries/parsedConditions.d.cts.map +1 -1
- package/build/queries/parsedConditions.d.mts +7 -8
- package/build/queries/parsedConditions.d.mts.map +1 -1
- package/build/queries/renderConditions.d.cts +3 -4
- package/build/queries/renderConditions.d.cts.map +1 -1
- package/build/queries/renderConditions.d.mts +3 -4
- package/build/queries/renderConditions.d.mts.map +1 -1
- package/build/queries/skipCondition.d.cts +1 -2
- package/build/queries/skipCondition.d.cts.map +1 -1
- package/build/queries/skipCondition.d.mts +1 -2
- package/build/queries/skipCondition.d.mts.map +1 -1
- package/build/queries/sql/AliasAssigner.cjs.map +1 -1
- package/build/queries/sql/AliasAssigner.d.cts +1 -2
- package/build/queries/sql/AliasAssigner.d.cts.map +1 -1
- package/build/queries/sql/AliasAssigner.d.mts +1 -2
- package/build/queries/sql/AliasAssigner.d.mts.map +1 -1
- package/build/queries/sql/AliasAssigner.js.map +1 -1
- package/build/queries/sql/Expr.d.cts +26 -27
- package/build/queries/sql/Expr.d.cts.map +1 -1
- package/build/queries/sql/Expr.d.mts +26 -27
- package/build/queries/sql/Expr.d.mts.map +1 -1
- package/build/queries/sql/JoinTree.d.cts +5 -5
- package/build/queries/sql/JoinTree.d.cts.map +1 -1
- package/build/queries/sql/JoinTree.d.mts +5 -5
- package/build/queries/sql/JoinTree.d.mts.map +1 -1
- package/build/queries/sql/Tables.d.cts +39 -39
- package/build/queries/sql/Tables.d.cts.map +1 -1
- package/build/queries/sql/Tables.d.mts +39 -39
- package/build/queries/sql/Tables.d.mts.map +1 -1
- package/build/queries/sql/custom.d.cts +14 -14
- package/build/queries/sql/custom.d.cts.map +1 -1
- package/build/queries/sql/custom.d.mts +14 -14
- package/build/queries/sql/custom.d.mts.map +1 -1
- package/build/queries/sql/execute.d.cts +15 -15
- package/build/queries/sql/execute.d.cts.map +1 -1
- package/build/queries/sql/execute.d.mts +15 -15
- package/build/queries/sql/execute.d.mts.map +1 -1
- package/build/queries/sql/expressions/arrayAgg.d.cts +5 -6
- package/build/queries/sql/expressions/arrayAgg.d.cts.map +1 -1
- package/build/queries/sql/expressions/arrayAgg.d.mts +5 -6
- package/build/queries/sql/expressions/arrayAgg.d.mts.map +1 -1
- package/build/queries/sql/expressions/case.d.cts +10 -10
- package/build/queries/sql/expressions/case.d.cts.map +1 -1
- package/build/queries/sql/expressions/case.d.mts +10 -10
- package/build/queries/sql/expressions/case.d.mts.map +1 -1
- package/build/queries/sql/expressions/coalesce.d.cts +5 -6
- package/build/queries/sql/expressions/coalesce.d.cts.map +1 -1
- package/build/queries/sql/expressions/coalesce.d.mts +5 -6
- package/build/queries/sql/expressions/coalesce.d.mts.map +1 -1
- package/build/queries/sql/expressions/codecs.d.cts +1 -2
- package/build/queries/sql/expressions/codecs.d.cts.map +1 -1
- package/build/queries/sql/expressions/codecs.d.mts +1 -2
- package/build/queries/sql/expressions/codecs.d.mts.map +1 -1
- package/build/queries/sql/expressions/expression.d.cts +6 -6
- package/build/queries/sql/expressions/expression.d.cts.map +1 -1
- package/build/queries/sql/expressions/expression.d.mts +6 -6
- package/build/queries/sql/expressions/expression.d.mts.map +1 -1
- package/build/queries/sql/expressions/greatest.d.cts +5 -6
- package/build/queries/sql/expressions/greatest.d.cts.map +1 -1
- package/build/queries/sql/expressions/greatest.d.mts +5 -6
- package/build/queries/sql/expressions/greatest.d.mts.map +1 -1
- package/build/queries/sql/expressions/least.d.cts +5 -6
- package/build/queries/sql/expressions/least.d.cts.map +1 -1
- package/build/queries/sql/expressions/least.d.mts +5 -6
- package/build/queries/sql/expressions/least.d.mts.map +1 -1
- package/build/queries/sql/expressions/nullIf.d.cts +5 -6
- package/build/queries/sql/expressions/nullIf.d.cts.map +1 -1
- package/build/queries/sql/expressions/nullIf.d.mts +5 -6
- package/build/queries/sql/expressions/nullIf.d.mts.map +1 -1
- package/build/queries/sql/expressions/parseExpression.d.cts +5 -6
- package/build/queries/sql/expressions/parseExpression.d.cts.map +1 -1
- package/build/queries/sql/expressions/parseExpression.d.mts +5 -6
- package/build/queries/sql/expressions/parseExpression.d.mts.map +1 -1
- package/build/queries/sql/expressions/types.d.cts +11 -11
- package/build/queries/sql/expressions/types.d.cts.map +1 -1
- package/build/queries/sql/expressions/types.d.mts +11 -11
- package/build/queries/sql/expressions/types.d.mts.map +1 -1
- package/build/queries/sql/keywords.d.cts +4 -5
- package/build/queries/sql/keywords.d.cts.map +1 -1
- package/build/queries/sql/keywords.d.mts +4 -5
- package/build/queries/sql/keywords.d.mts.map +1 -1
- package/build/queries/sql/query.cjs.map +1 -1
- package/build/queries/sql/query.d.cts +67 -67
- package/build/queries/sql/query.d.cts.map +1 -1
- package/build/queries/sql/query.d.mts +67 -67
- package/build/queries/sql/query.d.mts.map +1 -1
- package/build/queries/sql/query.js.map +1 -1
- package/build/queries/unnest.d.cts +2 -3
- package/build/queries/unnest.d.cts.map +1 -1
- package/build/queries/unnest.d.mts +2 -3
- package/build/queries/unnest.d.mts.map +1 -1
- package/build/queries/valueFilters.d.cts +5 -6
- package/build/queries/valueFilters.d.cts.map +1 -1
- package/build/queries/valueFilters.d.mts +5 -6
- package/build/queries/valueFilters.d.mts.map +1 -1
- package/build/reactivity/ReactionsManager.cjs.map +1 -1
- package/build/reactivity/ReactionsManager.d.cts +2 -3
- package/build/reactivity/ReactionsManager.d.cts.map +1 -1
- package/build/reactivity/ReactionsManager.d.mts +2 -3
- package/build/reactivity/ReactionsManager.d.mts.map +1 -1
- package/build/reactivity/ReactionsManager.js.map +1 -1
- package/build/reactivity/reactiveHints.d.cts +18 -18
- package/build/reactivity/reactiveHints.d.cts.map +1 -1
- package/build/reactivity/reactiveHints.d.mts +18 -18
- package/build/reactivity/reactiveHints.d.mts.map +1 -1
- package/build/relations/AbstractPropertyImpl.cjs.map +1 -1
- package/build/relations/AbstractPropertyImpl.d.cts +1 -2
- package/build/relations/AbstractPropertyImpl.d.cts.map +1 -1
- package/build/relations/AbstractPropertyImpl.d.mts +1 -2
- package/build/relations/AbstractPropertyImpl.d.mts.map +1 -1
- package/build/relations/AbstractPropertyImpl.js.map +1 -1
- package/build/relations/AbstractRelationImpl.d.cts +1 -2
- package/build/relations/AbstractRelationImpl.d.cts.map +1 -1
- package/build/relations/AbstractRelationImpl.d.mts +1 -2
- package/build/relations/AbstractRelationImpl.d.mts.map +1 -1
- package/build/relations/AsyncProperty.cjs.map +1 -1
- package/build/relations/AsyncProperty.d.cts +5 -6
- package/build/relations/AsyncProperty.d.cts.map +1 -1
- package/build/relations/AsyncProperty.d.mts +5 -6
- package/build/relations/AsyncProperty.d.mts.map +1 -1
- package/build/relations/AsyncProperty.js.map +1 -1
- package/build/relations/AsyncReactiveField.cjs.map +1 -1
- package/build/relations/AsyncReactiveField.d.cts +4 -5
- package/build/relations/AsyncReactiveField.d.cts.map +1 -1
- package/build/relations/AsyncReactiveField.d.mts +4 -5
- package/build/relations/AsyncReactiveField.d.mts.map +1 -1
- package/build/relations/AsyncReactiveField.js.map +1 -1
- package/build/relations/Collection.d.cts +4 -5
- package/build/relations/Collection.d.cts.map +1 -1
- package/build/relations/Collection.d.mts +4 -5
- package/build/relations/Collection.d.mts.map +1 -1
- package/build/relations/CustomCollection.cjs.map +1 -1
- package/build/relations/CustomCollection.d.cts +3 -4
- package/build/relations/CustomCollection.d.cts.map +1 -1
- package/build/relations/CustomCollection.d.mts +3 -4
- package/build/relations/CustomCollection.d.mts.map +1 -1
- package/build/relations/CustomCollection.js.map +1 -1
- package/build/relations/CustomReference.cjs.map +1 -1
- package/build/relations/CustomReference.d.cts +3 -4
- package/build/relations/CustomReference.d.cts.map +1 -1
- package/build/relations/CustomReference.d.mts +3 -4
- package/build/relations/CustomReference.d.mts.map +1 -1
- package/build/relations/CustomReference.js.map +1 -1
- package/build/relations/EnumCollection.cjs.map +1 -1
- package/build/relations/EnumCollection.d.cts +5 -5
- package/build/relations/EnumCollection.d.cts.map +1 -1
- package/build/relations/EnumCollection.d.mts +5 -5
- package/build/relations/EnumCollection.d.mts.map +1 -1
- package/build/relations/EnumCollection.js.map +1 -1
- package/build/relations/LargeCollection.d.cts +1 -2
- package/build/relations/LargeCollection.d.cts.map +1 -1
- package/build/relations/LargeCollection.d.mts +1 -2
- package/build/relations/LargeCollection.d.mts.map +1 -1
- package/build/relations/LazyField.cjs.map +1 -1
- package/build/relations/LazyField.d.cts +7 -8
- package/build/relations/LazyField.d.cts.map +1 -1
- package/build/relations/LazyField.d.mts +7 -8
- package/build/relations/LazyField.d.mts.map +1 -1
- package/build/relations/LazyField.js.map +1 -1
- package/build/relations/ManyToManyCollection.cjs.map +1 -1
- package/build/relations/ManyToManyCollection.d.cts +2 -3
- package/build/relations/ManyToManyCollection.d.cts.map +1 -1
- package/build/relations/ManyToManyCollection.d.mts +2 -3
- package/build/relations/ManyToManyCollection.d.mts.map +1 -1
- package/build/relations/ManyToManyCollection.js.map +1 -1
- package/build/relations/ManyToManyLargeCollection.d.cts +2 -3
- package/build/relations/ManyToManyLargeCollection.d.cts.map +1 -1
- package/build/relations/ManyToManyLargeCollection.d.mts +2 -3
- package/build/relations/ManyToManyLargeCollection.d.mts.map +1 -1
- package/build/relations/ManyToOneReference.cjs.map +1 -1
- package/build/relations/ManyToOneReference.d.cts +6 -7
- package/build/relations/ManyToOneReference.d.cts.map +1 -1
- package/build/relations/ManyToOneReference.d.mts +6 -7
- package/build/relations/ManyToOneReference.d.mts.map +1 -1
- package/build/relations/ManyToOneReference.js.map +1 -1
- package/build/relations/OneToManyCollection.cjs.map +1 -1
- package/build/relations/OneToManyCollection.d.cts +2 -3
- package/build/relations/OneToManyCollection.d.cts.map +1 -1
- package/build/relations/OneToManyCollection.d.mts +2 -3
- package/build/relations/OneToManyCollection.d.mts.map +1 -1
- package/build/relations/OneToManyCollection.js.map +1 -1
- package/build/relations/OneToManyLargeCollection.cjs.map +1 -1
- package/build/relations/OneToManyLargeCollection.d.cts +2 -3
- package/build/relations/OneToManyLargeCollection.d.cts.map +1 -1
- package/build/relations/OneToManyLargeCollection.d.mts +2 -3
- package/build/relations/OneToManyLargeCollection.d.mts.map +1 -1
- package/build/relations/OneToManyLargeCollection.js.map +1 -1
- package/build/relations/OneToOneReference.cjs.map +1 -1
- package/build/relations/OneToOneReference.d.cts +7 -7
- package/build/relations/OneToOneReference.d.cts.map +1 -1
- package/build/relations/OneToOneReference.d.mts +7 -7
- package/build/relations/OneToOneReference.d.mts.map +1 -1
- package/build/relations/OneToOneReference.js.map +1 -1
- package/build/relations/PolymorphicReference.cjs.map +1 -1
- package/build/relations/PolymorphicReference.d.cts +4 -5
- package/build/relations/PolymorphicReference.d.cts.map +1 -1
- package/build/relations/PolymorphicReference.d.mts +4 -5
- package/build/relations/PolymorphicReference.d.mts.map +1 -1
- package/build/relations/PolymorphicReference.js.map +1 -1
- package/build/relations/PropertySymbols.d.cts +1 -2
- package/build/relations/PropertySymbols.d.cts.map +1 -1
- package/build/relations/PropertySymbols.d.mts +1 -2
- package/build/relations/PropertySymbols.d.mts.map +1 -1
- package/build/relations/ReactiveField.cjs.map +1 -1
- package/build/relations/ReactiveField.d.cts +4 -5
- package/build/relations/ReactiveField.d.cts.map +1 -1
- package/build/relations/ReactiveField.d.mts +4 -5
- package/build/relations/ReactiveField.d.mts.map +1 -1
- package/build/relations/ReactiveField.js.map +1 -1
- package/build/relations/ReactiveGetter.cjs.map +1 -1
- package/build/relations/ReactiveGetter.d.cts +4 -5
- package/build/relations/ReactiveGetter.d.cts.map +1 -1
- package/build/relations/ReactiveGetter.d.mts +4 -5
- package/build/relations/ReactiveGetter.d.mts.map +1 -1
- package/build/relations/ReactiveGetter.js.map +1 -1
- package/build/relations/ReactiveManyToMany.cjs.map +1 -1
- package/build/relations/ReactiveManyToMany.d.cts +4 -5
- package/build/relations/ReactiveManyToMany.d.cts.map +1 -1
- package/build/relations/ReactiveManyToMany.d.mts +4 -5
- package/build/relations/ReactiveManyToMany.d.mts.map +1 -1
- package/build/relations/ReactiveManyToMany.js.map +1 -1
- package/build/relations/ReactiveManyToManyOtherSide.cjs.map +1 -1
- package/build/relations/ReactiveManyToManyOtherSide.d.cts +4 -5
- package/build/relations/ReactiveManyToManyOtherSide.d.cts.map +1 -1
- package/build/relations/ReactiveManyToManyOtherSide.d.mts +4 -5
- package/build/relations/ReactiveManyToManyOtherSide.d.mts.map +1 -1
- package/build/relations/ReactiveManyToManyOtherSide.js.map +1 -1
- package/build/relations/ReactiveReference.cjs.map +1 -1
- package/build/relations/ReactiveReference.d.cts +5 -6
- package/build/relations/ReactiveReference.d.cts.map +1 -1
- package/build/relations/ReactiveReference.d.mts +5 -6
- package/build/relations/ReactiveReference.d.mts.map +1 -1
- package/build/relations/ReactiveReference.js.map +1 -1
- package/build/relations/ReadOnlyCollection.d.cts +4 -5
- package/build/relations/ReadOnlyCollection.d.cts.map +1 -1
- package/build/relations/ReadOnlyCollection.d.mts +4 -5
- package/build/relations/ReadOnlyCollection.d.mts.map +1 -1
- package/build/relations/RecursiveCollection.cjs.map +1 -1
- package/build/relations/RecursiveCollection.d.cts +10 -10
- package/build/relations/RecursiveCollection.d.cts.map +1 -1
- package/build/relations/RecursiveCollection.d.mts +10 -10
- package/build/relations/RecursiveCollection.d.mts.map +1 -1
- package/build/relations/RecursiveCollection.js.map +1 -1
- package/build/relations/RecursiveCycleError.d.cts +2 -2
- package/build/relations/RecursiveCycleError.d.cts.map +1 -1
- package/build/relations/RecursiveCycleError.d.mts +2 -2
- package/build/relations/RecursiveCycleError.d.mts.map +1 -1
- package/build/relations/Reference.d.cts +5 -5
- package/build/relations/Reference.d.cts.map +1 -1
- package/build/relations/Reference.d.mts +5 -5
- package/build/relations/Reference.d.mts.map +1 -1
- package/build/relations/ReferenceSymbols.d.cts +1 -2
- package/build/relations/ReferenceSymbols.d.cts.map +1 -1
- package/build/relations/ReferenceSymbols.d.mts +1 -2
- package/build/relations/ReferenceSymbols.d.mts.map +1 -1
- package/build/relations/Relation.d.cts +3 -3
- package/build/relations/Relation.d.cts.map +1 -1
- package/build/relations/Relation.d.mts +3 -3
- package/build/relations/Relation.d.mts.map +1 -1
- package/build/relations/RelationSymbols.d.cts +2 -3
- package/build/relations/RelationSymbols.d.cts.map +1 -1
- package/build/relations/RelationSymbols.d.mts +2 -3
- package/build/relations/RelationSymbols.d.mts.map +1 -1
- package/build/relations/hasAsyncMethod.cjs.map +1 -1
- package/build/relations/hasAsyncMethod.d.cts +6 -6
- package/build/relations/hasAsyncMethod.d.cts.map +1 -1
- package/build/relations/hasAsyncMethod.d.mts +6 -6
- package/build/relations/hasAsyncMethod.d.mts.map +1 -1
- package/build/relations/hasAsyncMethod.js.map +1 -1
- package/build/relations/hasManyDerived.d.cts +2 -2
- package/build/relations/hasManyDerived.d.cts.map +1 -1
- package/build/relations/hasManyDerived.d.mts +2 -2
- package/build/relations/hasManyDerived.d.mts.map +1 -1
- package/build/relations/hasManyThrough.d.cts +1 -2
- package/build/relations/hasManyThrough.d.cts.map +1 -1
- package/build/relations/hasManyThrough.d.mts +1 -2
- package/build/relations/hasManyThrough.d.mts.map +1 -1
- package/build/relations/hasOneDerived.d.cts +1 -2
- package/build/relations/hasOneDerived.d.cts.map +1 -1
- package/build/relations/hasOneDerived.d.mts +1 -2
- package/build/relations/hasOneDerived.d.mts.map +1 -1
- package/build/relations/hasOneThrough.d.cts +1 -2
- package/build/relations/hasOneThrough.d.cts.map +1 -1
- package/build/relations/hasOneThrough.d.mts +1 -2
- package/build/relations/hasOneThrough.d.mts.map +1 -1
- package/build/relations/hasProperty.cjs.map +1 -1
- package/build/relations/hasProperty.d.cts +8 -8
- package/build/relations/hasProperty.d.cts.map +1 -1
- package/build/relations/hasProperty.d.mts +8 -8
- package/build/relations/hasProperty.d.mts.map +1 -1
- package/build/relations/hasProperty.js.map +1 -1
- package/build/relations/isCascadeDelete.d.cts +1 -2
- package/build/relations/isCascadeDelete.d.cts.map +1 -1
- package/build/relations/isCascadeDelete.d.mts +1 -2
- package/build/relations/isCascadeDelete.d.mts.map +1 -1
- package/build/resurrection.d.cts +3 -4
- package/build/resurrection.d.cts.map +1 -1
- package/build/resurrection.d.mts +3 -4
- package/build/resurrection.d.mts.map +1 -1
- package/build/rules.d.cts +20 -20
- package/build/rules.d.cts.map +1 -1
- package/build/rules.d.mts +20 -20
- package/build/rules.d.mts.map +1 -1
- package/build/runtimeConfig.d.cts +4 -5
- package/build/runtimeConfig.d.cts.map +1 -1
- package/build/runtimeConfig.d.mts +4 -5
- package/build/runtimeConfig.d.mts.map +1 -1
- package/build/serde/TypeInfo.d.cts +3 -4
- package/build/serde/TypeInfo.d.cts.map +1 -1
- package/build/serde/TypeInfo.d.mts +3 -4
- package/build/serde/TypeInfo.d.mts.map +1 -1
- package/build/serde/columns.d.cts +2 -3
- package/build/serde/columns.d.cts.map +1 -1
- package/build/serde/columns.d.mts +2 -3
- package/build/serde/columns.d.mts.map +1 -1
- package/build/serde/fieldSerde.d.cts +9 -9
- package/build/serde/fieldSerde.d.cts.map +1 -1
- package/build/serde/fieldSerde.d.mts +9 -9
- package/build/serde/fieldSerde.d.mts.map +1 -1
- package/build/serde/serde.d.cts +18 -19
- package/build/serde/serde.d.cts.map +1 -1
- package/build/serde/serde.d.mts +18 -19
- package/build/serde/serde.d.mts.map +1 -1
- package/build/serde/temporal.d.cts +5 -5
- package/build/serde/temporal.d.cts.map +1 -1
- package/build/serde/temporal.d.mts +5 -5
- package/build/serde/temporal.d.mts.map +1 -1
- package/build/serde/temporalMappers.d.cts +4 -5
- package/build/serde/temporalMappers.d.cts.map +1 -1
- package/build/serde/temporalMappers.d.mts +4 -5
- package/build/serde/temporalMappers.d.mts.map +1 -1
- package/build/transitions.d.cts +17 -18
- package/build/transitions.d.cts.map +1 -1
- package/build/transitions.d.mts +17 -18
- package/build/transitions.d.mts.map +1 -1
- package/build/trusted.d.cts +2 -3
- package/build/trusted.d.cts.map +1 -1
- package/build/trusted.d.mts +2 -3
- package/build/trusted.d.mts.map +1 -1
- package/build/typeMap.d.cts +17 -17
- package/build/typeMap.d.cts.map +1 -1
- package/build/typeMap.d.mts +17 -17
- package/build/typeMap.d.mts.map +1 -1
- package/build/upsert.d.cts +4 -4
- package/build/upsert.d.cts.map +1 -1
- package/build/upsert.d.mts +4 -4
- package/build/upsert.d.mts.map +1 -1
- package/build/utils.d.cts +27 -28
- package/build/utils.d.cts.map +1 -1
- package/build/utils.d.mts +27 -28
- package/build/utils.d.mts.map +1 -1
- package/package.json +4 -4
|
@@ -16,9 +16,9 @@ import { MaybeAbstractEntityConstructor } from "../EntityManager.cjs";
|
|
|
16
16
|
import { Entity } from "../Entity.cjs";
|
|
17
17
|
//#region src/reactivity/reactiveHints.d.ts
|
|
18
18
|
/** The keys in `T` that rules & hooks can react to. */
|
|
19
|
-
type Reactable<T extends Entity> = FieldsOf<T> & Loadable<T> & Gettable<T> & SuffixedFieldsOf<T> & SuffixedLoadable<T> & SuffixedGettable<T>;
|
|
19
|
+
export type Reactable<T extends Entity> = FieldsOf<T> & Loadable<T> & Gettable<T> & SuffixedFieldsOf<T> & SuffixedLoadable<T> & SuffixedGettable<T>;
|
|
20
20
|
/** Finds `hasReactiveGetters` which are not "loadable" b/c they're always loaded. */
|
|
21
|
-
type Gettable<T extends Entity> = { -readonly [K in keyof T as GettableValue<T[K]> extends never ? never : K]: GettableValue<T[K]>; };
|
|
21
|
+
export type Gettable<T extends Entity> = { -readonly [K in keyof T as GettableValue<T[K]> extends never ? never : K]: GettableValue<T[K]>; };
|
|
22
22
|
type GettableValue<V> = V extends ReactiveGetter<any, infer P> ? P : never;
|
|
23
23
|
/** The fields of `T` suffixed with `:ro` or `_ro`. */
|
|
24
24
|
type SuffixedFieldsOf<T extends Entity> = { [K in keyof FieldsOf<T> & string as `${K}${SuffixSeperator}ro`]: FieldsOf<T>[K]; };
|
|
@@ -31,10 +31,10 @@ type SuffixedGettable<T extends Entity> = { [K in keyof Gettable<T> & string as
|
|
|
31
31
|
* fields to react against, while load hints contain only relations, collections, and async
|
|
32
32
|
* properties to preload.
|
|
33
33
|
*/
|
|
34
|
-
type ReactiveHint<T extends Entity> = (keyof Reactable<T> & string) | ReadonlyArray<keyof Reactable<T> & string> | NestedReactiveHint<T>;
|
|
35
|
-
type NestedReactiveHint<T extends Entity> = { [K in keyof Reactable<T>]?: Reactable<T>[K] extends (infer U extends Entity) ? ReactiveHint<U> : {}; };
|
|
34
|
+
export type ReactiveHint<T extends Entity> = (keyof Reactable<T> & string) | ReadonlyArray<keyof Reactable<T> & string> | NestedReactiveHint<T>;
|
|
35
|
+
export type NestedReactiveHint<T extends Entity> = { [K in keyof Reactable<T>]?: Reactable<T>[K] extends (infer U extends Entity) ? ReactiveHint<U> : {}; };
|
|
36
36
|
/** Given an entity `T` that is being reacted with hint `H`, mark only the `H` attributes visible & populated. */
|
|
37
|
-
type Reacted<T extends Entity, H> = Entity & { [K in keyof NormalizeHint<H> & keyof T]: T[K] extends OneToOneReference<any, infer U> ? LoadedOneToOneReference<T, Entity & Reacted<U, NormalizeHint<H>[K]>> : T[K] extends PolymorphicReference<any, infer U, infer N> ? PolymorphicReference<T, U, N> & LoadedReference<T, Entity & Reacted<U, NormalizeHint<H>[K]>, N> : T[K] extends Reference<any, infer U, infer N> ? LoadedReference<T, Entity & Reacted<U, NormalizeHint<H>[K]>, N> : T[K] extends EnumCollection<any, infer E> ? LoadedEnumCollection<T, E> : T[K] extends Collection<any, infer U> ? LoadedCollection<T, Entity & Reacted<U, NormalizeHint<H>[K]>> : T[K] extends ReadOnlyCollection<any, infer U> ? LoadedReadOnlyCollection<T, Entity & Reacted<U, NormalizeHint<H>[K]>> : T[K] extends Property<any, infer V> ? LoadedProperty<any, V> : T[K]; } & {
|
|
37
|
+
export type Reacted<T extends Entity, H> = Entity & { [K in keyof NormalizeHint<H> & keyof T]: T[K] extends OneToOneReference<any, infer U> ? LoadedOneToOneReference<T, Entity & Reacted<U, NormalizeHint<H>[K]>> : T[K] extends PolymorphicReference<any, infer U, infer N> ? PolymorphicReference<T, U, N> & LoadedReference<T, Entity & Reacted<U, NormalizeHint<H>[K]>, N> : T[K] extends Reference<any, infer U, infer N> ? LoadedReference<T, Entity & Reacted<U, NormalizeHint<H>[K]>, N> : T[K] extends EnumCollection<any, infer E> ? LoadedEnumCollection<T, E> : T[K] extends Collection<any, infer U> ? LoadedCollection<T, Entity & Reacted<U, NormalizeHint<H>[K]>> : T[K] extends ReadOnlyCollection<any, infer U> ? LoadedReadOnlyCollection<T, Entity & Reacted<U, NormalizeHint<H>[K]>> : T[K] extends Property<any, infer V> ? LoadedProperty<any, V> : T[K]; } & {
|
|
38
38
|
/**
|
|
39
39
|
* Gives reactive rules & fields a way to get the full entity if they really need it.
|
|
40
40
|
*
|
|
@@ -47,7 +47,7 @@ type Reacted<T extends Entity, H> = Entity & { [K in keyof NormalizeHint<H> & ke
|
|
|
47
47
|
changes: Changes<T, keyof (FieldsOf<T> & RelationsOf<T>), keyof NormalizeHint<H>>;
|
|
48
48
|
} & MaybeTransientFields<T>;
|
|
49
49
|
/** Allow returning reacted entities from `hasReactiveReference`. */
|
|
50
|
-
type MaybeReactedEntity<V> = V extends Entity ? {
|
|
50
|
+
export type MaybeReactedEntity<V> = V extends Entity ? {
|
|
51
51
|
fullNonReactiveAccess: V;
|
|
52
52
|
} : V;
|
|
53
53
|
/**
|
|
@@ -57,16 +57,16 @@ type MaybeReactedEntity<V> = V extends Entity ? {
|
|
|
57
57
|
* broken out as a separate generic; `hasReactiveProperty` does not, and so this type conditionally
|
|
58
58
|
* pulls `undefined` out first, and then defers to `MaybeReactedEntity`.
|
|
59
59
|
*/
|
|
60
|
-
type MaybeReactedPropertyEntity<V> = V extends (infer V1 extends Entity) | undefined ? MaybeReactedEntity<V1> | undefined : MaybeReactedEntity<V>;
|
|
60
|
+
export type MaybeReactedPropertyEntity<V> = V extends (infer V1 extends Entity) | undefined ? MaybeReactedEntity<V1> | undefined : MaybeReactedEntity<V>;
|
|
61
61
|
/**
|
|
62
62
|
* A reactive hint that only allows fields immediately on the entity, i.e. no nested hints.
|
|
63
63
|
*
|
|
64
64
|
* This is used by `ReactiveGetter`s to guarantee that their lambda functions will
|
|
65
65
|
* always be `.get`-able and hence not need loading.
|
|
66
66
|
*/
|
|
67
|
-
type ShallowReactiveHint<T extends Entity> = (keyof FieldsOf<T> & string) | ReadonlyArray<keyof FieldsOf<T> & string>;
|
|
67
|
+
export type ShallowReactiveHint<T extends Entity> = (keyof FieldsOf<T> & string) | ReadonlyArray<keyof FieldsOf<T> & string>;
|
|
68
68
|
/** If the domain model has transient fields, allow reactive behavior to see it, i.e. don't run validation rules for special operations. */
|
|
69
|
-
type MaybeTransientFields<T> = "transientFields" extends keyof T ? {
|
|
69
|
+
export type MaybeTransientFields<T> = "transientFields" extends keyof T ? {
|
|
70
70
|
transientFields: T["transientFields"];
|
|
71
71
|
} : {};
|
|
72
72
|
/**
|
|
@@ -79,7 +79,7 @@ type MaybeTransientFields<T> = "transientFields" extends keyof T ? {
|
|
|
79
79
|
* @param reactForOtherSide the name of our FK column, if the previous collection needs to react to our FK changing
|
|
80
80
|
* @param isFirst
|
|
81
81
|
*/
|
|
82
|
-
declare function reverseReactiveHint<T extends Entity>(rootType: MaybeAbstractEntityConstructor<T>, entityType: MaybeAbstractEntityConstructor<T>, hint: ReactiveHint<T>, reactForOtherSide?: string, reactForOtherSideIsReadOnly?: "field-read-only" | "hint-read-only" | false, isFirst?: boolean): ReactiveTarget[];
|
|
82
|
+
export declare function reverseReactiveHint<T extends Entity>(rootType: MaybeAbstractEntityConstructor<T>, entityType: MaybeAbstractEntityConstructor<T>, hint: ReactiveHint<T>, reactForOtherSide?: string, reactForOtherSideIsReadOnly?: "field-read-only" | "hint-read-only" | false, isFirst?: boolean): ReactiveTarget[];
|
|
83
83
|
/**
|
|
84
84
|
* Walks `reverseHint` for every entity in `entities`.
|
|
85
85
|
*
|
|
@@ -114,11 +114,11 @@ declare function reverseReactiveHint<T extends Entity>(rootType: MaybeAbstractEn
|
|
|
114
114
|
* before the final flush changes it to `a3`. `setField` remembers both original and transient reference values
|
|
115
115
|
* separately from `originalData`, and we walk them in addition to the current value.
|
|
116
116
|
*/
|
|
117
|
-
declare function followReverseHint(reactionName: string, entities: Entity[], reverseHint: string[]): Promise<Entity[]>;
|
|
117
|
+
export declare function followReverseHint(reactionName: string, entities: Entity[], reverseHint: string[]): Promise<Entity[]>;
|
|
118
118
|
/** Converts a normalized reactive `hint` into a load hint. */
|
|
119
|
-
declare function convertToLoadHint<T extends Entity>(meta: EntityMetadata, hint: ReactiveHint<T>, allowCustomKeys?: boolean): LoadHint<T>;
|
|
119
|
+
export declare function convertToLoadHint<T extends Entity>(meta: EntityMetadata, hint: ReactiveHint<T>, allowCustomKeys?: boolean): LoadHint<T>;
|
|
120
120
|
/** An entity that, when `fields` change, should trigger the reactive rule/field pointed to by `path`. */
|
|
121
|
-
interface ReactiveTarget {
|
|
121
|
+
export interface ReactiveTarget {
|
|
122
122
|
kind: "read-only" | "update";
|
|
123
123
|
/** The entity that contains a field our reactive rule/field accesses. */
|
|
124
124
|
entity: MaybeAbstractEntityConstructor<any>;
|
|
@@ -133,11 +133,11 @@ interface ReactiveTarget {
|
|
|
133
133
|
* a `SmallPublisher` entity should pass an `@Publisher` filter because it is
|
|
134
134
|
* a Publisher via inheritance.
|
|
135
135
|
*/
|
|
136
|
-
declare function isTypeOrSubType(entity: Entity, typeName: string): boolean;
|
|
137
|
-
declare function isPolyHint(key: string): boolean;
|
|
138
|
-
declare function splitPolyHintToKeyAndType(key: string): [string, string];
|
|
136
|
+
export declare function isTypeOrSubType(entity: Entity, typeName: string): boolean;
|
|
137
|
+
export declare function isPolyHint(key: string): boolean;
|
|
138
|
+
export declare function splitPolyHintToKeyAndType(key: string): [string, string];
|
|
139
139
|
/** If this hint is a poly like `author@Book`, return the type, otherwise return undefined. */
|
|
140
|
-
declare function getRelationFromMaybePolyKey(entity: Entity, key: string): any;
|
|
140
|
+
export declare function getRelationFromMaybePolyKey(entity: Entity, key: string): any;
|
|
141
141
|
//#endregion
|
|
142
|
-
export {
|
|
142
|
+
export {};
|
|
143
143
|
//# sourceMappingURL=reactiveHints.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactiveHints.d.cts","names":[],"sources":["../../src/reactivity/reactiveHints.ts"],"mappings":";;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"reactiveHints.d.cts","names":[],"sources":["../../src/reactivity/reactiveHints.ts"],"mappings":";;;;;;;;;;;;;;;;;;YA8CY,UAAU,UAAU,UAE9B,SAAS,KAGP,SAAS,KACT,SAAS,KACT,iBAAiB,KACjB,iBAAiB,KACjB,iBAAiB;;YAGT,SAAS,UAAU,uBAClB,WAAW,KAAK,cAAc,EAAE,4BAA4B,IAAI,cAAc,EAAE;KAGxF,cAAc,KAAK,UAAU,0BAA0B,KAAK;;KAG5D,iBAAiB,UAAU,aAC7B,WAAW,SAAS,kBAAkB,IAAI,sBAAsB,SAAS,GAAG;KAG1E,iBAAiB,UAAU,aAC7B,WAAW,SAAS,kBAAkB,IAAI,sBAAsB,SAAS,GAAG;KAG1E,iBAAiB,UAAU,aAC7B,WAAW,SAAS,kBAAkB,IAAI,sBAAsB,SAAS,GAAG;;;;;;;;YAUnE,aAAa,UAAU,iBACxB,UAAU,eACjB,oBAAoB,UAAU,eAC9B,mBAAmB;YAEX,mBAAmB,UAAU,aACtC,WAAW,UAAU,MAAM,UAAU,GAAG,kBAAiB,UAAU,UAAS,aAAa;;YAIhF,QAAQ,UAAU,QAAQ,KAAK,YACxC,WAAW,cAAc,WAAW,IAAI,EAAE,WAAW,6BAA6B,KAC/E,wBAAwB,GAAG,SAAS,QAAQ,GAAG,cAAc,GAAG,OAGhE,EAAE,WAAW,gCAAgC,SAAS,KACpD,qBAAqB,GAAG,GAAG,KAAK,gBAAgB,GAAG,SAAS,QAAQ,GAAG,cAAc,GAAG,KAAK,KAC7F,EAAE,WAAW,qBAAqB,SAAS,KACzC,gBAAgB,GAAG,SAAS,QAAQ,GAAG,cAAc,GAAG,KAAK,KAC7D,EAAE,WAAW,0BAA0B,KACrC,qBAAqB,GAAG,KACxB,EAAE,WAAW,sBAAsB,KACjC,iBAAiB,GAAG,SAAS,QAAQ,GAAG,cAAc,GAAG,OACzD,EAAE,WAAW,8BAA8B,KACzC,yBAAyB,GAAG,SAAS,QAAQ,GAAG,cAAc,GAAG,OACjE,EAAE,WAAW,oBAAoB,KAC/B,oBAAoB,KACpB,EAAE;;;;;;;;EASlB,uBAAuB,OAAO,GAAG;;EAEjC,SAAS,QAAQ,UAAU,SAAS,KAAK,YAAY,WAAW,cAAc;IAC5E,qBAAqB;;YAGb,mBAAmB,KAAK,UAAU;EAAW,uBAAuB;IAAM;;;;;;;;YAS1E,2BAA2B,KAAK,iBAAiB,WAAW,sBACpE,mBAAmB,kBACnB,mBAAmB;;;;;;;YAQX,oBAAoB,UAAU,iBAC/B,SAAS,eAChB,oBAAoB,SAAS;;YAGrB,qBAAqB,qCAAqC;EAChE,iBAAiB;;;;;;;;;;;;wBAaP,oBAAoB,UAAU,QAC5C,UAAU,+BAA+B,IACzC,YAAY,+BAA+B,IAC3C,MAAM,aAAa,IACnB,4BACA,4EACA,oBACC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA+SmB,kBACpB,sBACA,UAAU,UACV,wBACC,QAAQ;;wBAuEK,kBAAkB,UAAU,QAC1C,MAAM,gBACN,MAAM,aAAa,IACnB,4BACC,SAAS;;iBA0EK;EACf;;EAEA,QAAQ;;EAER;;EAEA;;;;;;;;wBA+Bc,gBAAgB,QAAQ,QAAQ;wBAKhC,WAAW;wBAIX,0BAA0B;;wBAM1B,4BAA4B,QAAQ,QAAQ"}
|
|
@@ -16,9 +16,9 @@ import { MaybeAbstractEntityConstructor } from "../EntityManager.mjs";
|
|
|
16
16
|
import { Entity } from "../Entity.mjs";
|
|
17
17
|
//#region src/reactivity/reactiveHints.d.ts
|
|
18
18
|
/** The keys in `T` that rules & hooks can react to. */
|
|
19
|
-
type Reactable<T extends Entity> = FieldsOf<T> & Loadable<T> & Gettable<T> & SuffixedFieldsOf<T> & SuffixedLoadable<T> & SuffixedGettable<T>;
|
|
19
|
+
export type Reactable<T extends Entity> = FieldsOf<T> & Loadable<T> & Gettable<T> & SuffixedFieldsOf<T> & SuffixedLoadable<T> & SuffixedGettable<T>;
|
|
20
20
|
/** Finds `hasReactiveGetters` which are not "loadable" b/c they're always loaded. */
|
|
21
|
-
type Gettable<T extends Entity> = { -readonly [K in keyof T as GettableValue<T[K]> extends never ? never : K]: GettableValue<T[K]>; };
|
|
21
|
+
export type Gettable<T extends Entity> = { -readonly [K in keyof T as GettableValue<T[K]> extends never ? never : K]: GettableValue<T[K]>; };
|
|
22
22
|
type GettableValue<V> = V extends ReactiveGetter<any, infer P> ? P : never;
|
|
23
23
|
/** The fields of `T` suffixed with `:ro` or `_ro`. */
|
|
24
24
|
type SuffixedFieldsOf<T extends Entity> = { [K in keyof FieldsOf<T> & string as `${K}${SuffixSeperator}ro`]: FieldsOf<T>[K]; };
|
|
@@ -31,10 +31,10 @@ type SuffixedGettable<T extends Entity> = { [K in keyof Gettable<T> & string as
|
|
|
31
31
|
* fields to react against, while load hints contain only relations, collections, and async
|
|
32
32
|
* properties to preload.
|
|
33
33
|
*/
|
|
34
|
-
type ReactiveHint<T extends Entity> = (keyof Reactable<T> & string) | ReadonlyArray<keyof Reactable<T> & string> | NestedReactiveHint<T>;
|
|
35
|
-
type NestedReactiveHint<T extends Entity> = { [K in keyof Reactable<T>]?: Reactable<T>[K] extends (infer U extends Entity) ? ReactiveHint<U> : {}; };
|
|
34
|
+
export type ReactiveHint<T extends Entity> = (keyof Reactable<T> & string) | ReadonlyArray<keyof Reactable<T> & string> | NestedReactiveHint<T>;
|
|
35
|
+
export type NestedReactiveHint<T extends Entity> = { [K in keyof Reactable<T>]?: Reactable<T>[K] extends (infer U extends Entity) ? ReactiveHint<U> : {}; };
|
|
36
36
|
/** Given an entity `T` that is being reacted with hint `H`, mark only the `H` attributes visible & populated. */
|
|
37
|
-
type Reacted<T extends Entity, H> = Entity & { [K in keyof NormalizeHint<H> & keyof T]: T[K] extends OneToOneReference<any, infer U> ? LoadedOneToOneReference<T, Entity & Reacted<U, NormalizeHint<H>[K]>> : T[K] extends PolymorphicReference<any, infer U, infer N> ? PolymorphicReference<T, U, N> & LoadedReference<T, Entity & Reacted<U, NormalizeHint<H>[K]>, N> : T[K] extends Reference<any, infer U, infer N> ? LoadedReference<T, Entity & Reacted<U, NormalizeHint<H>[K]>, N> : T[K] extends EnumCollection<any, infer E> ? LoadedEnumCollection<T, E> : T[K] extends Collection<any, infer U> ? LoadedCollection<T, Entity & Reacted<U, NormalizeHint<H>[K]>> : T[K] extends ReadOnlyCollection<any, infer U> ? LoadedReadOnlyCollection<T, Entity & Reacted<U, NormalizeHint<H>[K]>> : T[K] extends Property<any, infer V> ? LoadedProperty<any, V> : T[K]; } & {
|
|
37
|
+
export type Reacted<T extends Entity, H> = Entity & { [K in keyof NormalizeHint<H> & keyof T]: T[K] extends OneToOneReference<any, infer U> ? LoadedOneToOneReference<T, Entity & Reacted<U, NormalizeHint<H>[K]>> : T[K] extends PolymorphicReference<any, infer U, infer N> ? PolymorphicReference<T, U, N> & LoadedReference<T, Entity & Reacted<U, NormalizeHint<H>[K]>, N> : T[K] extends Reference<any, infer U, infer N> ? LoadedReference<T, Entity & Reacted<U, NormalizeHint<H>[K]>, N> : T[K] extends EnumCollection<any, infer E> ? LoadedEnumCollection<T, E> : T[K] extends Collection<any, infer U> ? LoadedCollection<T, Entity & Reacted<U, NormalizeHint<H>[K]>> : T[K] extends ReadOnlyCollection<any, infer U> ? LoadedReadOnlyCollection<T, Entity & Reacted<U, NormalizeHint<H>[K]>> : T[K] extends Property<any, infer V> ? LoadedProperty<any, V> : T[K]; } & {
|
|
38
38
|
/**
|
|
39
39
|
* Gives reactive rules & fields a way to get the full entity if they really need it.
|
|
40
40
|
*
|
|
@@ -47,7 +47,7 @@ type Reacted<T extends Entity, H> = Entity & { [K in keyof NormalizeHint<H> & ke
|
|
|
47
47
|
changes: Changes<T, keyof (FieldsOf<T> & RelationsOf<T>), keyof NormalizeHint<H>>;
|
|
48
48
|
} & MaybeTransientFields<T>;
|
|
49
49
|
/** Allow returning reacted entities from `hasReactiveReference`. */
|
|
50
|
-
type MaybeReactedEntity<V> = V extends Entity ? {
|
|
50
|
+
export type MaybeReactedEntity<V> = V extends Entity ? {
|
|
51
51
|
fullNonReactiveAccess: V;
|
|
52
52
|
} : V;
|
|
53
53
|
/**
|
|
@@ -57,16 +57,16 @@ type MaybeReactedEntity<V> = V extends Entity ? {
|
|
|
57
57
|
* broken out as a separate generic; `hasReactiveProperty` does not, and so this type conditionally
|
|
58
58
|
* pulls `undefined` out first, and then defers to `MaybeReactedEntity`.
|
|
59
59
|
*/
|
|
60
|
-
type MaybeReactedPropertyEntity<V> = V extends (infer V1 extends Entity) | undefined ? MaybeReactedEntity<V1> | undefined : MaybeReactedEntity<V>;
|
|
60
|
+
export type MaybeReactedPropertyEntity<V> = V extends (infer V1 extends Entity) | undefined ? MaybeReactedEntity<V1> | undefined : MaybeReactedEntity<V>;
|
|
61
61
|
/**
|
|
62
62
|
* A reactive hint that only allows fields immediately on the entity, i.e. no nested hints.
|
|
63
63
|
*
|
|
64
64
|
* This is used by `ReactiveGetter`s to guarantee that their lambda functions will
|
|
65
65
|
* always be `.get`-able and hence not need loading.
|
|
66
66
|
*/
|
|
67
|
-
type ShallowReactiveHint<T extends Entity> = (keyof FieldsOf<T> & string) | ReadonlyArray<keyof FieldsOf<T> & string>;
|
|
67
|
+
export type ShallowReactiveHint<T extends Entity> = (keyof FieldsOf<T> & string) | ReadonlyArray<keyof FieldsOf<T> & string>;
|
|
68
68
|
/** If the domain model has transient fields, allow reactive behavior to see it, i.e. don't run validation rules for special operations. */
|
|
69
|
-
type MaybeTransientFields<T> = "transientFields" extends keyof T ? {
|
|
69
|
+
export type MaybeTransientFields<T> = "transientFields" extends keyof T ? {
|
|
70
70
|
transientFields: T["transientFields"];
|
|
71
71
|
} : {};
|
|
72
72
|
/**
|
|
@@ -79,7 +79,7 @@ type MaybeTransientFields<T> = "transientFields" extends keyof T ? {
|
|
|
79
79
|
* @param reactForOtherSide the name of our FK column, if the previous collection needs to react to our FK changing
|
|
80
80
|
* @param isFirst
|
|
81
81
|
*/
|
|
82
|
-
declare function reverseReactiveHint<T extends Entity>(rootType: MaybeAbstractEntityConstructor<T>, entityType: MaybeAbstractEntityConstructor<T>, hint: ReactiveHint<T>, reactForOtherSide?: string, reactForOtherSideIsReadOnly?: "field-read-only" | "hint-read-only" | false, isFirst?: boolean): ReactiveTarget[];
|
|
82
|
+
export declare function reverseReactiveHint<T extends Entity>(rootType: MaybeAbstractEntityConstructor<T>, entityType: MaybeAbstractEntityConstructor<T>, hint: ReactiveHint<T>, reactForOtherSide?: string, reactForOtherSideIsReadOnly?: "field-read-only" | "hint-read-only" | false, isFirst?: boolean): ReactiveTarget[];
|
|
83
83
|
/**
|
|
84
84
|
* Walks `reverseHint` for every entity in `entities`.
|
|
85
85
|
*
|
|
@@ -114,11 +114,11 @@ declare function reverseReactiveHint<T extends Entity>(rootType: MaybeAbstractEn
|
|
|
114
114
|
* before the final flush changes it to `a3`. `setField` remembers both original and transient reference values
|
|
115
115
|
* separately from `originalData`, and we walk them in addition to the current value.
|
|
116
116
|
*/
|
|
117
|
-
declare function followReverseHint(reactionName: string, entities: Entity[], reverseHint: string[]): Promise<Entity[]>;
|
|
117
|
+
export declare function followReverseHint(reactionName: string, entities: Entity[], reverseHint: string[]): Promise<Entity[]>;
|
|
118
118
|
/** Converts a normalized reactive `hint` into a load hint. */
|
|
119
|
-
declare function convertToLoadHint<T extends Entity>(meta: EntityMetadata, hint: ReactiveHint<T>, allowCustomKeys?: boolean): LoadHint<T>;
|
|
119
|
+
export declare function convertToLoadHint<T extends Entity>(meta: EntityMetadata, hint: ReactiveHint<T>, allowCustomKeys?: boolean): LoadHint<T>;
|
|
120
120
|
/** An entity that, when `fields` change, should trigger the reactive rule/field pointed to by `path`. */
|
|
121
|
-
interface ReactiveTarget {
|
|
121
|
+
export interface ReactiveTarget {
|
|
122
122
|
kind: "read-only" | "update";
|
|
123
123
|
/** The entity that contains a field our reactive rule/field accesses. */
|
|
124
124
|
entity: MaybeAbstractEntityConstructor<any>;
|
|
@@ -133,11 +133,11 @@ interface ReactiveTarget {
|
|
|
133
133
|
* a `SmallPublisher` entity should pass an `@Publisher` filter because it is
|
|
134
134
|
* a Publisher via inheritance.
|
|
135
135
|
*/
|
|
136
|
-
declare function isTypeOrSubType(entity: Entity, typeName: string): boolean;
|
|
137
|
-
declare function isPolyHint(key: string): boolean;
|
|
138
|
-
declare function splitPolyHintToKeyAndType(key: string): [string, string];
|
|
136
|
+
export declare function isTypeOrSubType(entity: Entity, typeName: string): boolean;
|
|
137
|
+
export declare function isPolyHint(key: string): boolean;
|
|
138
|
+
export declare function splitPolyHintToKeyAndType(key: string): [string, string];
|
|
139
139
|
/** If this hint is a poly like `author@Book`, return the type, otherwise return undefined. */
|
|
140
|
-
declare function getRelationFromMaybePolyKey(entity: Entity, key: string): any;
|
|
140
|
+
export declare function getRelationFromMaybePolyKey(entity: Entity, key: string): any;
|
|
141
141
|
//#endregion
|
|
142
|
-
export {
|
|
142
|
+
export {};
|
|
143
143
|
//# sourceMappingURL=reactiveHints.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactiveHints.d.mts","names":[],"sources":["../../src/reactivity/reactiveHints.ts"],"mappings":";;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"reactiveHints.d.mts","names":[],"sources":["../../src/reactivity/reactiveHints.ts"],"mappings":";;;;;;;;;;;;;;;;;;YA8CY,UAAU,UAAU,UAE9B,SAAS,KAGP,SAAS,KACT,SAAS,KACT,iBAAiB,KACjB,iBAAiB,KACjB,iBAAiB;;YAGT,SAAS,UAAU,uBAClB,WAAW,KAAK,cAAc,EAAE,4BAA4B,IAAI,cAAc,EAAE;KAGxF,cAAc,KAAK,UAAU,0BAA0B,KAAK;;KAG5D,iBAAiB,UAAU,aAC7B,WAAW,SAAS,kBAAkB,IAAI,sBAAsB,SAAS,GAAG;KAG1E,iBAAiB,UAAU,aAC7B,WAAW,SAAS,kBAAkB,IAAI,sBAAsB,SAAS,GAAG;KAG1E,iBAAiB,UAAU,aAC7B,WAAW,SAAS,kBAAkB,IAAI,sBAAsB,SAAS,GAAG;;;;;;;;YAUnE,aAAa,UAAU,iBACxB,UAAU,eACjB,oBAAoB,UAAU,eAC9B,mBAAmB;YAEX,mBAAmB,UAAU,aACtC,WAAW,UAAU,MAAM,UAAU,GAAG,kBAAiB,UAAU,UAAS,aAAa;;YAIhF,QAAQ,UAAU,QAAQ,KAAK,YACxC,WAAW,cAAc,WAAW,IAAI,EAAE,WAAW,6BAA6B,KAC/E,wBAAwB,GAAG,SAAS,QAAQ,GAAG,cAAc,GAAG,OAGhE,EAAE,WAAW,gCAAgC,SAAS,KACpD,qBAAqB,GAAG,GAAG,KAAK,gBAAgB,GAAG,SAAS,QAAQ,GAAG,cAAc,GAAG,KAAK,KAC7F,EAAE,WAAW,qBAAqB,SAAS,KACzC,gBAAgB,GAAG,SAAS,QAAQ,GAAG,cAAc,GAAG,KAAK,KAC7D,EAAE,WAAW,0BAA0B,KACrC,qBAAqB,GAAG,KACxB,EAAE,WAAW,sBAAsB,KACjC,iBAAiB,GAAG,SAAS,QAAQ,GAAG,cAAc,GAAG,OACzD,EAAE,WAAW,8BAA8B,KACzC,yBAAyB,GAAG,SAAS,QAAQ,GAAG,cAAc,GAAG,OACjE,EAAE,WAAW,oBAAoB,KAC/B,oBAAoB,KACpB,EAAE;;;;;;;;EASlB,uBAAuB,OAAO,GAAG;;EAEjC,SAAS,QAAQ,UAAU,SAAS,KAAK,YAAY,WAAW,cAAc;IAC5E,qBAAqB;;YAGb,mBAAmB,KAAK,UAAU;EAAW,uBAAuB;IAAM;;;;;;;;YAS1E,2BAA2B,KAAK,iBAAiB,WAAW,sBACpE,mBAAmB,kBACnB,mBAAmB;;;;;;;YAQX,oBAAoB,UAAU,iBAC/B,SAAS,eAChB,oBAAoB,SAAS;;YAGrB,qBAAqB,qCAAqC;EAChE,iBAAiB;;;;;;;;;;;;wBAaP,oBAAoB,UAAU,QAC5C,UAAU,+BAA+B,IACzC,YAAY,+BAA+B,IAC3C,MAAM,aAAa,IACnB,4BACA,4EACA,oBACC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA+SmB,kBACpB,sBACA,UAAU,UACV,wBACC,QAAQ;;wBAuEK,kBAAkB,UAAU,QAC1C,MAAM,gBACN,MAAM,aAAa,IACnB,4BACC,SAAS;;iBA0EK;EACf;;EAEA,QAAQ;;EAER;;EAEA;;;;;;;;wBA+Bc,gBAAgB,QAAQ,QAAQ;wBAKhC,WAAW;wBAIX,0BAA0B;;wBAM1B,4BAA4B,QAAQ,QAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractPropertyImpl.cjs","names":[
|
|
1
|
+
{"version":3,"file":"AbstractPropertyImpl.cjs","names":[],"sources":["../../src/relations/AbstractPropertyImpl.ts"],"sourcesContent":["/** A base class for relations & non-relation (i.e. `ReactiveField) properties. */\nexport abstract class AbstractPropertyImpl<T> {\n #entity: T;\n\n constructor(entity: T) {\n this.#entity = entity;\n }\n\n get entity(): T {\n return this.#entity;\n }\n\n abstract get isLoaded(): boolean;\n}\n"],"mappings":";;;AACA,IAAsB,uBAAtB,MAA8C;CAC5C;CAEA,YAAY,QAAW;EACrB,KAAK,UAAU;CACjB;CAEA,IAAI,SAAY;EACd,OAAO,KAAK;CACd;AAGF"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
//#region src/relations/AbstractPropertyImpl.d.ts
|
|
2
2
|
/** A base class for relations & non-relation (i.e. `ReactiveField) properties. */
|
|
3
|
-
declare abstract class AbstractPropertyImpl<T> {
|
|
3
|
+
export declare abstract class AbstractPropertyImpl<T> {
|
|
4
4
|
#private;
|
|
5
5
|
constructor(entity: T);
|
|
6
6
|
get entity(): T;
|
|
7
7
|
abstract get isLoaded(): boolean;
|
|
8
8
|
}
|
|
9
9
|
//#endregion
|
|
10
|
-
export { AbstractPropertyImpl };
|
|
11
10
|
//# sourceMappingURL=AbstractPropertyImpl.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractPropertyImpl.d.cts","names":[],"sources":["../../src/relations/AbstractPropertyImpl.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"AbstractPropertyImpl.d.cts","names":[],"sources":["../../src/relations/AbstractPropertyImpl.ts"],"mappings":";;8BACsB,qBAAqB;;EAGzC,YAAY,QAAQ;MAIhB,UAAU;eAID"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
//#region src/relations/AbstractPropertyImpl.d.ts
|
|
2
2
|
/** A base class for relations & non-relation (i.e. `ReactiveField) properties. */
|
|
3
|
-
declare abstract class AbstractPropertyImpl<T> {
|
|
3
|
+
export declare abstract class AbstractPropertyImpl<T> {
|
|
4
4
|
#private;
|
|
5
5
|
constructor(entity: T);
|
|
6
6
|
get entity(): T;
|
|
7
7
|
abstract get isLoaded(): boolean;
|
|
8
8
|
}
|
|
9
9
|
//#endregion
|
|
10
|
-
export { AbstractPropertyImpl };
|
|
11
10
|
//# sourceMappingURL=AbstractPropertyImpl.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractPropertyImpl.d.mts","names":[],"sources":["../../src/relations/AbstractPropertyImpl.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"AbstractPropertyImpl.d.mts","names":[],"sources":["../../src/relations/AbstractPropertyImpl.ts"],"mappings":";;8BACsB,qBAAqB;;EAGzC,YAAY,QAAQ;MAIhB,UAAU;eAID"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractPropertyImpl.js","names":[
|
|
1
|
+
{"version":3,"file":"AbstractPropertyImpl.js","names":[],"sources":["../../src/relations/AbstractPropertyImpl.ts"],"sourcesContent":["/** A base class for relations & non-relation (i.e. `ReactiveField) properties. */\nexport abstract class AbstractPropertyImpl<T> {\n #entity: T;\n\n constructor(entity: T) {\n this.#entity = entity;\n }\n\n get entity(): T {\n return this.#entity;\n }\n\n abstract get isLoaded(): boolean;\n}\n"],"mappings":";;AACA,IAAsB,uBAAtB,MAA8C;CAC5C;CAEA,YAAY,QAAW;EACrB,KAAK,UAAU;CACjB;CAEA,IAAI,SAAY;EACd,OAAO,KAAK;CACd;AAGF"}
|
|
@@ -3,7 +3,7 @@ import { AbstractPropertyImpl } from "./AbstractPropertyImpl.cjs";
|
|
|
3
3
|
/**
|
|
4
4
|
* Defines common hooks that relations can respond to to keep the entity graph in sync.
|
|
5
5
|
*/
|
|
6
|
-
declare abstract class AbstractRelationImpl<T, U> extends AbstractPropertyImpl<T> {
|
|
6
|
+
export declare abstract class AbstractRelationImpl<T, U> extends AbstractPropertyImpl<T> {
|
|
7
7
|
constructor(entity: T);
|
|
8
8
|
/** Called with the opts from a `new` or `em.create` call, i.e. on a new entity. */
|
|
9
9
|
abstract setFromOpts(value: U): void;
|
|
@@ -39,5 +39,4 @@ declare abstract class AbstractRelationImpl<T, U> extends AbstractPropertyImpl<T
|
|
|
39
39
|
abstract get fieldName(): string;
|
|
40
40
|
}
|
|
41
41
|
//#endregion
|
|
42
|
-
export { AbstractRelationImpl };
|
|
43
42
|
//# sourceMappingURL=AbstractRelationImpl.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractRelationImpl.d.cts","names":[],"sources":["../../src/relations/AbstractRelationImpl.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"AbstractRelationImpl.d.cts","names":[],"sources":["../../src/relations/AbstractRelationImpl.ts"],"mappings":";;;;;8BAKsB,qBAAqB,GAAG,WAAW,qBAAqB;EAC5E,YAAY,QAAQ;;WAKX,YAAY,OAAO;;WAGnB,IAAI,OAAO;;eAGP;;eAGA;;WAGJ,KAAK;IAAS;MAA0B;;WAGxC;eAEI,OAAO;;;;;;;;;;WAWX,0BAA0B;;;;;;WAO1B;eAEI"}
|
|
@@ -3,7 +3,7 @@ import { AbstractPropertyImpl } from "./AbstractPropertyImpl.mjs";
|
|
|
3
3
|
/**
|
|
4
4
|
* Defines common hooks that relations can respond to to keep the entity graph in sync.
|
|
5
5
|
*/
|
|
6
|
-
declare abstract class AbstractRelationImpl<T, U> extends AbstractPropertyImpl<T> {
|
|
6
|
+
export declare abstract class AbstractRelationImpl<T, U> extends AbstractPropertyImpl<T> {
|
|
7
7
|
constructor(entity: T);
|
|
8
8
|
/** Called with the opts from a `new` or `em.create` call, i.e. on a new entity. */
|
|
9
9
|
abstract setFromOpts(value: U): void;
|
|
@@ -39,5 +39,4 @@ declare abstract class AbstractRelationImpl<T, U> extends AbstractPropertyImpl<T
|
|
|
39
39
|
abstract get fieldName(): string;
|
|
40
40
|
}
|
|
41
41
|
//#endregion
|
|
42
|
-
export { AbstractRelationImpl };
|
|
43
42
|
//# sourceMappingURL=AbstractRelationImpl.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractRelationImpl.d.mts","names":[],"sources":["../../src/relations/AbstractRelationImpl.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"AbstractRelationImpl.d.mts","names":[],"sources":["../../src/relations/AbstractRelationImpl.ts"],"mappings":";;;;;8BAKsB,qBAAqB,GAAG,WAAW,qBAAqB;EAC5E,YAAY,QAAQ;;WAKX,YAAY,OAAO;;WAGnB,IAAI,OAAO;;eAGP;;eAGA;;WAGJ,KAAK;IAAS;MAA0B;;WAGxC;eAEI,OAAO;;;;;;;;;;WAWX,0BAA0B;;;;;;WAO1B;eAEI"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncProperty.cjs","names":["lazyField","AbstractPropertyImpl","
|
|
1
|
+
{"version":3,"file":"AsyncProperty.cjs","names":["lazyField","AbstractPropertyImpl","PropertyT"],"sources":["../../src/relations/AsyncProperty.ts"],"sourcesContent":["import { type Entity } from \"src/Entity.ts\";\nimport { lazyField } from \"src/newEntity.ts\";\nimport { AbstractPropertyImpl } from \"src/relations/AbstractPropertyImpl.ts\";\nimport { type LoadedProperty, type Property } from \"src/relations/hasProperty.ts\";\nimport { PropertyT } from \"src/relations/PropertySymbols.ts\";\n\nexport interface AsyncProperty<T extends Entity, V> extends Property<T, V> {\n load(opts?: { forceReload?: boolean }): Promise<V>;\n}\n\n/**\n * Creates a derived value calculated from a SQL query.\n *\n * Unlike `hasProperty`, the lambda receives the entity and is expected\n * to perform its own SQL queries rather than relying on in-memory graph data.\n *\n * - For new (un-flushed) entities, `load` throws because the entity has no id yet.\n * - The result is cached until the next `em.flush`.\n */\nexport function hasAsyncProperty<T extends Entity, V>(fn: (entity: T) => Promise<V>): Property<T, V> {\n return lazyField((entity: T) => {\n return new AsyncPropertyImpl(entity, fn);\n });\n}\n\nexport class AsyncPropertyImpl<T extends Entity, V> extends AbstractPropertyImpl<T> implements AsyncProperty<T, V> {\n #loadPromise: Promise<V> | undefined;\n #loaded = false;\n #value: V | undefined;\n\n constructor(\n entity: T,\n private fn: (entity: T) => Promise<V>,\n ) {\n super(entity);\n }\n\n load(opts?: { forceReload?: boolean }): Promise<V> {\n if (this.entity.isNewEntity) {\n throw new Error(\"AsyncProperty cannot be loaded on a new entity that has not been flushed yet\");\n }\n if (opts?.forceReload) {\n this.#loadPromise = undefined;\n this.#loaded = false;\n }\n if (this.#loaded) {\n return Promise.resolve(this.#value as V);\n }\n return (this.#loadPromise ??= this.fn(this.entity).then((value) => {\n this.#value = value;\n this.#loaded = true;\n return value;\n }));\n }\n\n get get(): V {\n if (this.entity.isNewEntity) {\n throw new Error(\"AsyncProperty cannot be accessed on a new entity that has not been flushed yet\");\n }\n if (!this.#loaded) throw new Error(\"AsyncProperty has not been loaded yet\");\n return this.#value as V;\n }\n\n get isLoaded(): boolean {\n if (this.entity.isNewEntity) return false;\n return this.#loaded;\n }\n\n /** Called after em.flush to invalidate the cached value. */\n resetAfterFlush(): void {\n this.#loadPromise = undefined;\n this.#loaded = false;\n this.#value = undefined;\n }\n\n [PropertyT] = undefined as any as T;\n}\n\n/** Type guard utility for determining if an entity field is an AsyncProperty. */\nexport function isAsyncProperty(maybe: any): maybe is AsyncProperty<any, any> {\n return maybe instanceof AsyncPropertyImpl;\n}\n\n/** Type guard utility for determining if an entity field is a loaded AsyncProperty. */\nexport function isLoadedAsyncProperty(maybe: any): maybe is AsyncProperty<any, any> & LoadedProperty<any, any> {\n return isAsyncProperty(maybe) && maybe.isLoaded;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAmBA,SAAgB,iBAAsC,IAA+C;CACnG,OAAOA,kBAAAA,WAAW,WAAc;EAC9B,OAAO,IAAI,kBAAkB,QAAQ,EAAE;CACzC,CAAC;AACH;AAEA,IAAa,oBAAb,cAA4DC,uCAAAA,qBAAuD;CAOvG;CANV;CACA,UAAU;CACV;CAEA,YACE,QACA,IACA;EACA,MAAM,MAAM;EAFJ,KAAA,KAAA;CAGV;CAEA,KAAK,MAA8C;EACjD,IAAI,KAAK,OAAO,aACd,MAAM,IAAI,MAAM,8EAA8E;EAEhG,IAAI,MAAM,aAAa;GACrB,KAAK,eAAe,KAAA;GACpB,KAAK,UAAU;EACjB;EACA,IAAI,KAAK,SACP,OAAO,QAAQ,QAAQ,KAAK,MAAW;EAEzC,OAAQ,KAAK,iBAAiB,KAAK,GAAG,KAAK,MAAM,CAAC,CAAC,MAAM,UAAU;GACjE,KAAK,SAAS;GACd,KAAK,UAAU;GACf,OAAO;EACT,CAAC;CACH;CAEA,IAAI,MAAS;EACX,IAAI,KAAK,OAAO,aACd,MAAM,IAAI,MAAM,gFAAgF;EAElG,IAAI,CAAC,KAAK,SAAS,MAAM,IAAI,MAAM,uCAAuC;EAC1E,OAAO,KAAK;CACd;CAEA,IAAI,WAAoB;EACtB,IAAI,KAAK,OAAO,aAAa,OAAO;EACpC,OAAO,KAAK;CACd;;CAGA,kBAAwB;EACtB,KAAK,eAAe,KAAA;EACpB,KAAK,UAAU;EACf,KAAK,SAAS,KAAA;CAChB;CAEA,CAACC,kCAAAA,aAAa,KAAA;AAChB;;AAGA,SAAgB,gBAAgB,OAA8C;CAC5E,OAAO,iBAAiB;AAC1B;;AAGA,SAAgB,sBAAsB,OAAyE;CAC7G,OAAO,gBAAgB,KAAK,KAAK,MAAM;AACzC"}
|
|
@@ -3,7 +3,7 @@ import { PropertyT } from "./PropertySymbols.cjs";
|
|
|
3
3
|
import { LoadedProperty, Property } from "./hasProperty.cjs";
|
|
4
4
|
import { Entity } from "../Entity.cjs";
|
|
5
5
|
//#region src/relations/AsyncProperty.d.ts
|
|
6
|
-
interface AsyncProperty<T extends Entity, V> extends Property<T, V> {
|
|
6
|
+
export interface AsyncProperty<T extends Entity, V> extends Property<T, V> {
|
|
7
7
|
load(opts?: {
|
|
8
8
|
forceReload?: boolean;
|
|
9
9
|
}): Promise<V>;
|
|
@@ -17,8 +17,8 @@ interface AsyncProperty<T extends Entity, V> extends Property<T, V> {
|
|
|
17
17
|
* - For new (un-flushed) entities, `load` throws because the entity has no id yet.
|
|
18
18
|
* - The result is cached until the next `em.flush`.
|
|
19
19
|
*/
|
|
20
|
-
declare function hasAsyncProperty<T extends Entity, V>(fn: (entity: T) => Promise<V>): Property<T, V>;
|
|
21
|
-
declare class AsyncPropertyImpl<T extends Entity, V> extends AbstractPropertyImpl<T> implements AsyncProperty<T, V> {
|
|
20
|
+
export declare function hasAsyncProperty<T extends Entity, V>(fn: (entity: T) => Promise<V>): Property<T, V>;
|
|
21
|
+
export declare class AsyncPropertyImpl<T extends Entity, V> extends AbstractPropertyImpl<T> implements AsyncProperty<T, V> {
|
|
22
22
|
#private;
|
|
23
23
|
private fn;
|
|
24
24
|
constructor(entity: T, fn: (entity: T) => Promise<V>);
|
|
@@ -32,9 +32,8 @@ declare class AsyncPropertyImpl<T extends Entity, V> extends AbstractPropertyImp
|
|
|
32
32
|
[PropertyT]: T;
|
|
33
33
|
}
|
|
34
34
|
/** Type guard utility for determining if an entity field is an AsyncProperty. */
|
|
35
|
-
declare function isAsyncProperty(maybe: any): maybe is AsyncProperty<any, any>;
|
|
35
|
+
export declare function isAsyncProperty(maybe: any): maybe is AsyncProperty<any, any>;
|
|
36
36
|
/** Type guard utility for determining if an entity field is a loaded AsyncProperty. */
|
|
37
|
-
declare function isLoadedAsyncProperty(maybe: any): maybe is AsyncProperty<any, any> & LoadedProperty<any, any>;
|
|
37
|
+
export declare function isLoadedAsyncProperty(maybe: any): maybe is AsyncProperty<any, any> & LoadedProperty<any, any>;
|
|
38
38
|
//#endregion
|
|
39
|
-
export { AsyncProperty, AsyncPropertyImpl, hasAsyncProperty, isAsyncProperty, isLoadedAsyncProperty };
|
|
40
39
|
//# sourceMappingURL=AsyncProperty.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncProperty.d.cts","names":[],"sources":["../../src/relations/AsyncProperty.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"AsyncProperty.d.cts","names":[],"sources":["../../src/relations/AsyncProperty.ts"],"mappings":";;;;;iBAMiB,cAAc,UAAU,QAAQ,WAAW,SAAS,GAAG;EACtE,KAAK;IAAS;MAA0B,QAAQ;;;;;;;;;;;wBAYlC,iBAAiB,UAAU,QAAQ,GAAG,KAAK,QAAQ,MAAM,QAAQ,KAAK,SAAS,GAAG;qBAMrF,kBAAkB,UAAU,QAAQ,WAAW,qBAAqB,cAAc,cAAc,GAAG;;UAOpG;EAFV,YACE,QAAQ,GACA,KAAK,QAAQ,MAAM,QAAQ;EAKrC,KAAK;IAAS;MAA0B,QAAQ;MAkB5C,OAAO;MAQP;;EAMJ;GAMC,YAAiC;;;wBAIpB,gBAAgB,aAAa,SAAS;;wBAKtC,sBAAsB,aAAa,SAAS,0BAA0B"}
|
|
@@ -3,7 +3,7 @@ import { PropertyT } from "./PropertySymbols.mjs";
|
|
|
3
3
|
import { LoadedProperty, Property } from "./hasProperty.mjs";
|
|
4
4
|
import { Entity } from "../Entity.mjs";
|
|
5
5
|
//#region src/relations/AsyncProperty.d.ts
|
|
6
|
-
interface AsyncProperty<T extends Entity, V> extends Property<T, V> {
|
|
6
|
+
export interface AsyncProperty<T extends Entity, V> extends Property<T, V> {
|
|
7
7
|
load(opts?: {
|
|
8
8
|
forceReload?: boolean;
|
|
9
9
|
}): Promise<V>;
|
|
@@ -17,8 +17,8 @@ interface AsyncProperty<T extends Entity, V> extends Property<T, V> {
|
|
|
17
17
|
* - For new (un-flushed) entities, `load` throws because the entity has no id yet.
|
|
18
18
|
* - The result is cached until the next `em.flush`.
|
|
19
19
|
*/
|
|
20
|
-
declare function hasAsyncProperty<T extends Entity, V>(fn: (entity: T) => Promise<V>): Property<T, V>;
|
|
21
|
-
declare class AsyncPropertyImpl<T extends Entity, V> extends AbstractPropertyImpl<T> implements AsyncProperty<T, V> {
|
|
20
|
+
export declare function hasAsyncProperty<T extends Entity, V>(fn: (entity: T) => Promise<V>): Property<T, V>;
|
|
21
|
+
export declare class AsyncPropertyImpl<T extends Entity, V> extends AbstractPropertyImpl<T> implements AsyncProperty<T, V> {
|
|
22
22
|
#private;
|
|
23
23
|
private fn;
|
|
24
24
|
constructor(entity: T, fn: (entity: T) => Promise<V>);
|
|
@@ -32,9 +32,8 @@ declare class AsyncPropertyImpl<T extends Entity, V> extends AbstractPropertyImp
|
|
|
32
32
|
[PropertyT]: T;
|
|
33
33
|
}
|
|
34
34
|
/** Type guard utility for determining if an entity field is an AsyncProperty. */
|
|
35
|
-
declare function isAsyncProperty(maybe: any): maybe is AsyncProperty<any, any>;
|
|
35
|
+
export declare function isAsyncProperty(maybe: any): maybe is AsyncProperty<any, any>;
|
|
36
36
|
/** Type guard utility for determining if an entity field is a loaded AsyncProperty. */
|
|
37
|
-
declare function isLoadedAsyncProperty(maybe: any): maybe is AsyncProperty<any, any> & LoadedProperty<any, any>;
|
|
37
|
+
export declare function isLoadedAsyncProperty(maybe: any): maybe is AsyncProperty<any, any> & LoadedProperty<any, any>;
|
|
38
38
|
//#endregion
|
|
39
|
-
export { AsyncProperty, AsyncPropertyImpl, hasAsyncProperty, isAsyncProperty, isLoadedAsyncProperty };
|
|
40
39
|
//# sourceMappingURL=AsyncProperty.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncProperty.d.mts","names":[],"sources":["../../src/relations/AsyncProperty.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"AsyncProperty.d.mts","names":[],"sources":["../../src/relations/AsyncProperty.ts"],"mappings":";;;;;iBAMiB,cAAc,UAAU,QAAQ,WAAW,SAAS,GAAG;EACtE,KAAK;IAAS;MAA0B,QAAQ;;;;;;;;;;;wBAYlC,iBAAiB,UAAU,QAAQ,GAAG,KAAK,QAAQ,MAAM,QAAQ,KAAK,SAAS,GAAG;qBAMrF,kBAAkB,UAAU,QAAQ,WAAW,qBAAqB,cAAc,cAAc,GAAG;;UAOpG;EAFV,YACE,QAAQ,GACA,KAAK,QAAQ,MAAM,QAAQ;EAKrC,KAAK;IAAS;MAA0B,QAAQ;MAkB5C,OAAO;MAQP;;EAMJ;GAMC,YAAiC;;;wBAIpB,gBAAgB,aAAa,SAAS;;wBAKtC,sBAAsB,aAAa,SAAS,0BAA0B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncProperty.js","names":[
|
|
1
|
+
{"version":3,"file":"AsyncProperty.js","names":[],"sources":["../../src/relations/AsyncProperty.ts"],"sourcesContent":["import { type Entity } from \"src/Entity.ts\";\nimport { lazyField } from \"src/newEntity.ts\";\nimport { AbstractPropertyImpl } from \"src/relations/AbstractPropertyImpl.ts\";\nimport { type LoadedProperty, type Property } from \"src/relations/hasProperty.ts\";\nimport { PropertyT } from \"src/relations/PropertySymbols.ts\";\n\nexport interface AsyncProperty<T extends Entity, V> extends Property<T, V> {\n load(opts?: { forceReload?: boolean }): Promise<V>;\n}\n\n/**\n * Creates a derived value calculated from a SQL query.\n *\n * Unlike `hasProperty`, the lambda receives the entity and is expected\n * to perform its own SQL queries rather than relying on in-memory graph data.\n *\n * - For new (un-flushed) entities, `load` throws because the entity has no id yet.\n * - The result is cached until the next `em.flush`.\n */\nexport function hasAsyncProperty<T extends Entity, V>(fn: (entity: T) => Promise<V>): Property<T, V> {\n return lazyField((entity: T) => {\n return new AsyncPropertyImpl(entity, fn);\n });\n}\n\nexport class AsyncPropertyImpl<T extends Entity, V> extends AbstractPropertyImpl<T> implements AsyncProperty<T, V> {\n #loadPromise: Promise<V> | undefined;\n #loaded = false;\n #value: V | undefined;\n\n constructor(\n entity: T,\n private fn: (entity: T) => Promise<V>,\n ) {\n super(entity);\n }\n\n load(opts?: { forceReload?: boolean }): Promise<V> {\n if (this.entity.isNewEntity) {\n throw new Error(\"AsyncProperty cannot be loaded on a new entity that has not been flushed yet\");\n }\n if (opts?.forceReload) {\n this.#loadPromise = undefined;\n this.#loaded = false;\n }\n if (this.#loaded) {\n return Promise.resolve(this.#value as V);\n }\n return (this.#loadPromise ??= this.fn(this.entity).then((value) => {\n this.#value = value;\n this.#loaded = true;\n return value;\n }));\n }\n\n get get(): V {\n if (this.entity.isNewEntity) {\n throw new Error(\"AsyncProperty cannot be accessed on a new entity that has not been flushed yet\");\n }\n if (!this.#loaded) throw new Error(\"AsyncProperty has not been loaded yet\");\n return this.#value as V;\n }\n\n get isLoaded(): boolean {\n if (this.entity.isNewEntity) return false;\n return this.#loaded;\n }\n\n /** Called after em.flush to invalidate the cached value. */\n resetAfterFlush(): void {\n this.#loadPromise = undefined;\n this.#loaded = false;\n this.#value = undefined;\n }\n\n [PropertyT] = undefined as any as T;\n}\n\n/** Type guard utility for determining if an entity field is an AsyncProperty. */\nexport function isAsyncProperty(maybe: any): maybe is AsyncProperty<any, any> {\n return maybe instanceof AsyncPropertyImpl;\n}\n\n/** Type guard utility for determining if an entity field is a loaded AsyncProperty. */\nexport function isLoadedAsyncProperty(maybe: any): maybe is AsyncProperty<any, any> & LoadedProperty<any, any> {\n return isAsyncProperty(maybe) && maybe.isLoaded;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAmBA,SAAgB,iBAAsC,IAA+C;CACnG,OAAO,WAAW,WAAc;EAC9B,OAAO,IAAI,kBAAkB,QAAQ,EAAE;CACzC,CAAC;AACH;AAEA,IAAa,oBAAb,cAA4D,qBAAuD;CAOvG;CANV;CACA,UAAU;CACV;CAEA,YACE,QACA,IACA;EACA,MAAM,MAAM;EAFJ,KAAA,KAAA;CAGV;CAEA,KAAK,MAA8C;EACjD,IAAI,KAAK,OAAO,aACd,MAAM,IAAI,MAAM,8EAA8E;EAEhG,IAAI,MAAM,aAAa;GACrB,KAAK,eAAe,KAAA;GACpB,KAAK,UAAU;EACjB;EACA,IAAI,KAAK,SACP,OAAO,QAAQ,QAAQ,KAAK,MAAW;EAEzC,OAAQ,KAAK,iBAAiB,KAAK,GAAG,KAAK,MAAM,CAAC,CAAC,MAAM,UAAU;GACjE,KAAK,SAAS;GACd,KAAK,UAAU;GACf,OAAO;EACT,CAAC;CACH;CAEA,IAAI,MAAS;EACX,IAAI,KAAK,OAAO,aACd,MAAM,IAAI,MAAM,gFAAgF;EAElG,IAAI,CAAC,KAAK,SAAS,MAAM,IAAI,MAAM,uCAAuC;EAC1E,OAAO,KAAK;CACd;CAEA,IAAI,WAAoB;EACtB,IAAI,KAAK,OAAO,aAAa,OAAO;EACpC,OAAO,KAAK;CACd;;CAGA,kBAAwB;EACtB,KAAK,eAAe,KAAA;EACpB,KAAK,UAAU;EACf,KAAK,SAAS,KAAA;CAChB;CAEA,CAAC,aAAa,KAAA;AAChB;;AAGA,SAAgB,gBAAgB,OAA8C;CAC5E,OAAO,iBAAiB;AAC1B;;AAGA,SAAgB,sBAAsB,OAAyE;CAC7G,OAAO,gBAAgB,KAAK,KAAK,MAAM;AACzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncReactiveField.cjs","names":["lazyField","AbstractPropertyImpl","
|
|
1
|
+
{"version":3,"file":"AsyncReactiveField.cjs","names":["lazyField","AbstractPropertyImpl","deepNormalizeHint","getField","isFieldSet","isLoaded","getMetadata","convertToLoadHint","PropertyT"],"sources":["../../src/relations/AsyncReactiveField.ts"],"sourcesContent":["import { type Entity } from \"src/Entity.ts\";\nimport { getMetadata } from \"src/EntityMetadata.ts\";\nimport { getField, isFieldSet, setField } from \"src/fields.ts\";\nimport { type ReactiveField, deepNormalizeHint, isLoaded } from \"src/index.ts\";\nimport { lazyField } from \"src/newEntity.ts\";\nimport { type Reacted, type ReactiveHint, convertToLoadHint } from \"src/reactivity/reactiveHints.ts\";\nimport { AbstractPropertyImpl } from \"src/relations/AbstractPropertyImpl.ts\";\nimport { PropertyT } from \"src/relations/PropertySymbols.ts\";\nimport { mergeNormalizedHints } from \"src/utils.ts\";\n\n/**\n * An `AsyncReactiveField` is a value that is derived from a SQL query, similar to\n * a `ReactiveField`, but when the value needs to be calculated from SQL because\n * it would be too expensive to calculate in-memory.\n *\n * Its hint is split in two: the `loadHint` names data that is both reacted-to *and*\n * loaded into memory (and passed to `fn`), while the `reactiveHint` names data that is\n * only reacted-to (its changes recompute the value) but is left in the database rather\n * than pulled into memory. The `fn` lambda re-runs when data referred to by either hint\n * changes, but only the `loadHint`'s data is populated.\n */\nexport function hasAsyncReactiveField<\n T extends Entity,\n const H1 extends ReactiveHint<T>,\n const H2 extends ReactiveHint<T>,\n V,\n>(loadHint: H1, reactiveHint: H2, fn: (entity: Reacted<T, H1>) => Promise<V>): ReactiveField<T, V> {\n return lazyField((entity: T, fieldName) => {\n return new AsyncReactiveFieldImpl(entity, fieldName as keyof T & string, loadHint, reactiveHint, fn);\n });\n}\n\nexport class AsyncReactiveFieldImpl<T extends Entity, H1 extends ReactiveHint<T>, H2 extends ReactiveHint<T>, V>\n extends AbstractPropertyImpl<T>\n implements ReactiveField<T, V>\n{\n readonly #loadHint: H1;\n readonly #reactiveHint: H2;\n #loadPromise: any;\n #loaded: boolean;\n #useFactoryValue = false;\n\n constructor(\n entity: T,\n public fieldName: keyof T & string,\n loadHint: H1,\n reactiveHint: H2,\n private fn: (entity: Reacted<T, H1>) => Promise<V>,\n ) {\n super(entity);\n this.#loadHint = loadHint;\n this.#reactiveHint = reactiveHint;\n this.#loaded = false;\n }\n\n /**\n * Our combined load + reactive-only hint, so that we react to changes within both.\n *\n * The `loadHint` half is populated into memory (and passed to `fn`); the `reactiveHint`\n * half only triggers recalculation, so its data stays in the database.\n */\n get reactiveHint(): ReactiveHint<any> {\n // We do this in a getter (instead of the constructor) b/c it might be a little expensive,\n // and I'm pretty sure this is only called on boot, when hooking up the reactivity.\n const hint = deepNormalizeHint(this.#loadHint);\n mergeNormalizedHints(hint, deepNormalizeHint(this.#reactiveHint));\n return hint;\n }\n\n load(opts?: { forceReload?: boolean }): Promise<V> {\n // if (!this.isSet || opts?.forceReload) {\n return (this.#loadPromise ??= this.entity.em\n .populate(this.entity, { hint: this.loadHint } as any)\n .then(() => {\n // Even if the factory used a `with...`, we'll still go through the RFQ logic, but just ignore the new value\n return this.#useFactoryValue ? this.fieldValue : this.fn(this.entity as Reacted<T, H1>);\n })\n .then((newValue) => {\n setField(this.entity, this.fieldName, newValue);\n this.#loadPromise = undefined;\n this.#loaded = true;\n return newValue;\n })\n .catch((e) => {\n // If we blow up calling `this.fn` i.e. due to a NoIdError, we want to make\n // sure that the next `.load` call tries again.\n this.#loadPromise = undefined;\n throw e;\n }));\n // }\n // return tryResolve(() => this.get);\n }\n\n /** Returns the previously-calculated value. */\n get get(): V {\n // Regular ReactiveFields repeatedly call their `fn` lambda to calculate the value, to ensure\n // they always return the latest/correct value, but because AsyncReactiveFields are fundamentally\n // calculated from DB queries, we can only return the previously-calculated value, if set.\n if (this.isSet) {\n return this.fieldValue;\n } else {\n throw new Error(`${this.fieldName} has not been derived yet`);\n }\n }\n\n get fieldValue(): V {\n return getField(this.entity, this.fieldName);\n }\n\n get isSet() {\n return isFieldSet(this.entity, this.fieldName);\n }\n\n get isLoaded() {\n const hintLoaded = isLoaded(this.entity, this.loadHint);\n if (hintLoaded) {\n this.#loaded = true;\n }\n return hintLoaded;\n }\n\n get loadHint(): any {\n // Only convert the loadHint, so we don't pull the reactiveHint-referenced data into memory\n const meta = getMetadata(this.entity);\n return (meta.config.__data.cachedReactiveLoadHints[this.fieldName] ??= convertToLoadHint(meta, this.#loadHint));\n }\n\n setFactoryValue(newValue: any): void {\n this.#useFactoryValue = true;\n setField(this.entity, this.fieldName, newValue);\n }\n\n [PropertyT] = undefined as any as T;\n}\n\n/** Type guard utility for determining if an entity field is an AsyncReactiveField. */\nexport function isAsyncReactiveField(maybe: any): maybe is ReactiveField<any, any> {\n return maybe instanceof AsyncReactiveFieldImpl;\n}\n\n/** Type guard utility for determining if an entity field is a loaded AsyncReactiveField. */\nexport function isLoadedAsyncReactiveField(maybe: any): maybe is ReactiveField<any, any> {\n return isAsyncReactiveField(maybe) && maybe.isLoaded;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAqBA,SAAgB,sBAKd,UAAc,cAAkB,IAAiE;CACjG,OAAOA,kBAAAA,WAAW,QAAW,cAAc;EACzC,OAAO,IAAI,uBAAuB,QAAQ,WAA+B,UAAU,cAAc,EAAE;CACrG,CAAC;AACH;AAEA,IAAa,yBAAb,cACUC,uCAAAA,qBAEV;CASW;CAGC;CAXV;CACA;CACA;CACA;CACA,mBAAmB;CAEnB,YACE,QACA,WACA,UACA,cACA,IACA;EACA,MAAM,MAAM;EALL,KAAA,YAAA;EAGC,KAAA,KAAA;EAGR,KAAK,YAAY;EACjB,KAAK,gBAAgB;EACrB,KAAK,UAAU;CACjB;;;;;;;CAQA,IAAI,eAAkC;EAGpC,MAAM,OAAOC,uBAAAA,kBAAkB,KAAK,SAAS;EAC7C,cAAA,qBAAqB,MAAMA,uBAAAA,kBAAkB,KAAK,aAAa,CAAC;EAChE,OAAO;CACT;CAEA,KAAK,MAA8C;EAEjD,OAAQ,KAAK,iBAAiB,KAAK,OAAO,GACvC,SAAS,KAAK,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAQ,CAAC,CACrD,WAAW;GAEV,OAAO,KAAK,mBAAmB,KAAK,aAAa,KAAK,GAAG,KAAK,MAAwB;EACxF,CAAC,CAAC,CACD,MAAM,aAAa;GAClB,eAAA,SAAS,KAAK,QAAQ,KAAK,WAAW,QAAQ;GAC9C,KAAK,eAAe,KAAA;GACpB,KAAK,UAAU;GACf,OAAO;EACT,CAAC,CAAC,CACD,OAAO,MAAM;GAGZ,KAAK,eAAe,KAAA;GACpB,MAAM;EACR,CAAC;CAGL;;CAGA,IAAI,MAAS;EAIX,IAAI,KAAK,OACP,OAAO,KAAK;OAEZ,MAAM,IAAI,MAAM,GAAG,KAAK,UAAU,0BAA0B;CAEhE;CAEA,IAAI,aAAgB;EAClB,OAAOC,eAAAA,SAAS,KAAK,QAAQ,KAAK,SAAS;CAC7C;CAEA,IAAI,QAAQ;EACV,OAAOC,eAAAA,WAAW,KAAK,QAAQ,KAAK,SAAS;CAC/C;CAEA,IAAI,WAAW;EACb,MAAM,aAAaC,0BAAAA,SAAS,KAAK,QAAQ,KAAK,QAAQ;EACtD,IAAI,YACF,KAAK,UAAU;EAEjB,OAAO;CACT;CAEA,IAAI,WAAgB;EAElB,MAAM,OAAOC,uBAAAA,YAAY,KAAK,MAAM;EACpC,OAAQ,KAAK,OAAO,OAAO,wBAAwB,KAAK,eAAeC,iCAAAA,kBAAkB,MAAM,KAAK,SAAS;CAC/G;CAEA,gBAAgB,UAAqB;EACnC,KAAK,mBAAmB;EACxB,eAAA,SAAS,KAAK,QAAQ,KAAK,WAAW,QAAQ;CAChD;CAEA,CAACC,kCAAAA,aAAa,KAAA;AAChB;;AAGA,SAAgB,qBAAqB,OAA8C;CACjF,OAAO,iBAAiB;AAC1B;;AAGA,SAAgB,2BAA2B,OAA8C;CACvF,OAAO,qBAAqB,KAAK,KAAK,MAAM;AAC9C"}
|
|
@@ -16,8 +16,8 @@ import { Entity } from "../Entity.cjs";
|
|
|
16
16
|
* than pulled into memory. The `fn` lambda re-runs when data referred to by either hint
|
|
17
17
|
* changes, but only the `loadHint`'s data is populated.
|
|
18
18
|
*/
|
|
19
|
-
declare function hasAsyncReactiveField<T extends Entity, const H1 extends ReactiveHint<T>, const H2 extends ReactiveHint<T>, V>(loadHint: H1, reactiveHint: H2, fn: (entity: Reacted<T, H1>) => Promise<V>): ReactiveField<T, V>;
|
|
20
|
-
declare class AsyncReactiveFieldImpl<T extends Entity, H1 extends ReactiveHint<T>, H2 extends ReactiveHint<T>, V> extends AbstractPropertyImpl<T> implements ReactiveField<T, V> {
|
|
19
|
+
export declare function hasAsyncReactiveField<T extends Entity, const H1 extends ReactiveHint<T>, const H2 extends ReactiveHint<T>, V>(loadHint: H1, reactiveHint: H2, fn: (entity: Reacted<T, H1>) => Promise<V>): ReactiveField<T, V>;
|
|
20
|
+
export declare class AsyncReactiveFieldImpl<T extends Entity, H1 extends ReactiveHint<T>, H2 extends ReactiveHint<T>, V> extends AbstractPropertyImpl<T> implements ReactiveField<T, V> {
|
|
21
21
|
#private;
|
|
22
22
|
fieldName: keyof T & string;
|
|
23
23
|
private fn;
|
|
@@ -42,9 +42,8 @@ declare class AsyncReactiveFieldImpl<T extends Entity, H1 extends ReactiveHint<T
|
|
|
42
42
|
[PropertyT]: T;
|
|
43
43
|
}
|
|
44
44
|
/** Type guard utility for determining if an entity field is an AsyncReactiveField. */
|
|
45
|
-
declare function isAsyncReactiveField(maybe: any): maybe is ReactiveField<any, any>;
|
|
45
|
+
export declare function isAsyncReactiveField(maybe: any): maybe is ReactiveField<any, any>;
|
|
46
46
|
/** Type guard utility for determining if an entity field is a loaded AsyncReactiveField. */
|
|
47
|
-
declare function isLoadedAsyncReactiveField(maybe: any): maybe is ReactiveField<any, any>;
|
|
47
|
+
export declare function isLoadedAsyncReactiveField(maybe: any): maybe is ReactiveField<any, any>;
|
|
48
48
|
//#endregion
|
|
49
|
-
export { AsyncReactiveFieldImpl, hasAsyncReactiveField, isAsyncReactiveField, isLoadedAsyncReactiveField };
|
|
50
49
|
//# sourceMappingURL=AsyncReactiveField.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncReactiveField.d.cts","names":[],"sources":["../../src/relations/AsyncReactiveField.ts"],"mappings":";;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"AsyncReactiveField.d.cts","names":[],"sources":["../../src/relations/AsyncReactiveField.ts"],"mappings":";;;;;;;;;;;;;;;;;;wBAqBgB,sBACd,UAAU,cACJ,WAAW,aAAa,UACxB,WAAW,aAAa,IAC9B,GACA,UAAU,IAAI,cAAc,IAAI,KAAK,QAAQ,QAAQ,GAAG,QAAQ,QAAQ,KAAK,cAAc,GAAG;qBAMnF,uBAAuB,UAAU,QAAQ,WAAW,aAAa,IAAI,WAAW,aAAa,IAAI,WACpG,qBAAqB,cAClB,cAAc,GAAG;;EAUnB,iBAAiB;UAGhB;EALV,YACE,QAAQ,GACD,iBAAiB,YACxB,UAAU,IACV,cAAc,IACN,KAAK,QAAQ,QAAQ,GAAG,QAAQ,QAAQ;;;;;;;MAc9C,gBAAgB;EAQpB,KAAK;IAAS;MAA0B,QAAQ;;MAyB5C,OAAO;MAWP,cAAc;MAId;MAIA;MAQA;EAMJ,gBAAgB;GAKf,YAAiC;;;wBAIpB,qBAAqB,aAAa,SAAS;;wBAK3C,2BAA2B,aAAa,SAAS"}
|
|
@@ -16,8 +16,8 @@ import { Entity } from "../Entity.mjs";
|
|
|
16
16
|
* than pulled into memory. The `fn` lambda re-runs when data referred to by either hint
|
|
17
17
|
* changes, but only the `loadHint`'s data is populated.
|
|
18
18
|
*/
|
|
19
|
-
declare function hasAsyncReactiveField<T extends Entity, const H1 extends ReactiveHint<T>, const H2 extends ReactiveHint<T>, V>(loadHint: H1, reactiveHint: H2, fn: (entity: Reacted<T, H1>) => Promise<V>): ReactiveField<T, V>;
|
|
20
|
-
declare class AsyncReactiveFieldImpl<T extends Entity, H1 extends ReactiveHint<T>, H2 extends ReactiveHint<T>, V> extends AbstractPropertyImpl<T> implements ReactiveField<T, V> {
|
|
19
|
+
export declare function hasAsyncReactiveField<T extends Entity, const H1 extends ReactiveHint<T>, const H2 extends ReactiveHint<T>, V>(loadHint: H1, reactiveHint: H2, fn: (entity: Reacted<T, H1>) => Promise<V>): ReactiveField<T, V>;
|
|
20
|
+
export declare class AsyncReactiveFieldImpl<T extends Entity, H1 extends ReactiveHint<T>, H2 extends ReactiveHint<T>, V> extends AbstractPropertyImpl<T> implements ReactiveField<T, V> {
|
|
21
21
|
#private;
|
|
22
22
|
fieldName: keyof T & string;
|
|
23
23
|
private fn;
|
|
@@ -42,9 +42,8 @@ declare class AsyncReactiveFieldImpl<T extends Entity, H1 extends ReactiveHint<T
|
|
|
42
42
|
[PropertyT]: T;
|
|
43
43
|
}
|
|
44
44
|
/** Type guard utility for determining if an entity field is an AsyncReactiveField. */
|
|
45
|
-
declare function isAsyncReactiveField(maybe: any): maybe is ReactiveField<any, any>;
|
|
45
|
+
export declare function isAsyncReactiveField(maybe: any): maybe is ReactiveField<any, any>;
|
|
46
46
|
/** Type guard utility for determining if an entity field is a loaded AsyncReactiveField. */
|
|
47
|
-
declare function isLoadedAsyncReactiveField(maybe: any): maybe is ReactiveField<any, any>;
|
|
47
|
+
export declare function isLoadedAsyncReactiveField(maybe: any): maybe is ReactiveField<any, any>;
|
|
48
48
|
//#endregion
|
|
49
|
-
export { AsyncReactiveFieldImpl, hasAsyncReactiveField, isAsyncReactiveField, isLoadedAsyncReactiveField };
|
|
50
49
|
//# sourceMappingURL=AsyncReactiveField.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncReactiveField.d.mts","names":[],"sources":["../../src/relations/AsyncReactiveField.ts"],"mappings":";;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"AsyncReactiveField.d.mts","names":[],"sources":["../../src/relations/AsyncReactiveField.ts"],"mappings":";;;;;;;;;;;;;;;;;;wBAqBgB,sBACd,UAAU,cACJ,WAAW,aAAa,UACxB,WAAW,aAAa,IAC9B,GACA,UAAU,IAAI,cAAc,IAAI,KAAK,QAAQ,QAAQ,GAAG,QAAQ,QAAQ,KAAK,cAAc,GAAG;qBAMnF,uBAAuB,UAAU,QAAQ,WAAW,aAAa,IAAI,WAAW,aAAa,IAAI,WACpG,qBAAqB,cAClB,cAAc,GAAG;;EAUnB,iBAAiB;UAGhB;EALV,YACE,QAAQ,GACD,iBAAiB,YACxB,UAAU,IACV,cAAc,IACN,KAAK,QAAQ,QAAQ,GAAG,QAAQ,QAAQ;;;;;;;MAc9C,gBAAgB;EAQpB,KAAK;IAAS;MAA0B,QAAQ;;MAyB5C,OAAO;MAWP,cAAc;MAId;MAIA;MAQA;EAMJ,gBAAgB;GAKf,YAAiC;;;wBAIpB,qBAAqB,aAAa,SAAS;;wBAK3C,2BAA2B,aAAa,SAAS"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncReactiveField.js","names":[
|
|
1
|
+
{"version":3,"file":"AsyncReactiveField.js","names":[],"sources":["../../src/relations/AsyncReactiveField.ts"],"sourcesContent":["import { type Entity } from \"src/Entity.ts\";\nimport { getMetadata } from \"src/EntityMetadata.ts\";\nimport { getField, isFieldSet, setField } from \"src/fields.ts\";\nimport { type ReactiveField, deepNormalizeHint, isLoaded } from \"src/index.ts\";\nimport { lazyField } from \"src/newEntity.ts\";\nimport { type Reacted, type ReactiveHint, convertToLoadHint } from \"src/reactivity/reactiveHints.ts\";\nimport { AbstractPropertyImpl } from \"src/relations/AbstractPropertyImpl.ts\";\nimport { PropertyT } from \"src/relations/PropertySymbols.ts\";\nimport { mergeNormalizedHints } from \"src/utils.ts\";\n\n/**\n * An `AsyncReactiveField` is a value that is derived from a SQL query, similar to\n * a `ReactiveField`, but when the value needs to be calculated from SQL because\n * it would be too expensive to calculate in-memory.\n *\n * Its hint is split in two: the `loadHint` names data that is both reacted-to *and*\n * loaded into memory (and passed to `fn`), while the `reactiveHint` names data that is\n * only reacted-to (its changes recompute the value) but is left in the database rather\n * than pulled into memory. The `fn` lambda re-runs when data referred to by either hint\n * changes, but only the `loadHint`'s data is populated.\n */\nexport function hasAsyncReactiveField<\n T extends Entity,\n const H1 extends ReactiveHint<T>,\n const H2 extends ReactiveHint<T>,\n V,\n>(loadHint: H1, reactiveHint: H2, fn: (entity: Reacted<T, H1>) => Promise<V>): ReactiveField<T, V> {\n return lazyField((entity: T, fieldName) => {\n return new AsyncReactiveFieldImpl(entity, fieldName as keyof T & string, loadHint, reactiveHint, fn);\n });\n}\n\nexport class AsyncReactiveFieldImpl<T extends Entity, H1 extends ReactiveHint<T>, H2 extends ReactiveHint<T>, V>\n extends AbstractPropertyImpl<T>\n implements ReactiveField<T, V>\n{\n readonly #loadHint: H1;\n readonly #reactiveHint: H2;\n #loadPromise: any;\n #loaded: boolean;\n #useFactoryValue = false;\n\n constructor(\n entity: T,\n public fieldName: keyof T & string,\n loadHint: H1,\n reactiveHint: H2,\n private fn: (entity: Reacted<T, H1>) => Promise<V>,\n ) {\n super(entity);\n this.#loadHint = loadHint;\n this.#reactiveHint = reactiveHint;\n this.#loaded = false;\n }\n\n /**\n * Our combined load + reactive-only hint, so that we react to changes within both.\n *\n * The `loadHint` half is populated into memory (and passed to `fn`); the `reactiveHint`\n * half only triggers recalculation, so its data stays in the database.\n */\n get reactiveHint(): ReactiveHint<any> {\n // We do this in a getter (instead of the constructor) b/c it might be a little expensive,\n // and I'm pretty sure this is only called on boot, when hooking up the reactivity.\n const hint = deepNormalizeHint(this.#loadHint);\n mergeNormalizedHints(hint, deepNormalizeHint(this.#reactiveHint));\n return hint;\n }\n\n load(opts?: { forceReload?: boolean }): Promise<V> {\n // if (!this.isSet || opts?.forceReload) {\n return (this.#loadPromise ??= this.entity.em\n .populate(this.entity, { hint: this.loadHint } as any)\n .then(() => {\n // Even if the factory used a `with...`, we'll still go through the RFQ logic, but just ignore the new value\n return this.#useFactoryValue ? this.fieldValue : this.fn(this.entity as Reacted<T, H1>);\n })\n .then((newValue) => {\n setField(this.entity, this.fieldName, newValue);\n this.#loadPromise = undefined;\n this.#loaded = true;\n return newValue;\n })\n .catch((e) => {\n // If we blow up calling `this.fn` i.e. due to a NoIdError, we want to make\n // sure that the next `.load` call tries again.\n this.#loadPromise = undefined;\n throw e;\n }));\n // }\n // return tryResolve(() => this.get);\n }\n\n /** Returns the previously-calculated value. */\n get get(): V {\n // Regular ReactiveFields repeatedly call their `fn` lambda to calculate the value, to ensure\n // they always return the latest/correct value, but because AsyncReactiveFields are fundamentally\n // calculated from DB queries, we can only return the previously-calculated value, if set.\n if (this.isSet) {\n return this.fieldValue;\n } else {\n throw new Error(`${this.fieldName} has not been derived yet`);\n }\n }\n\n get fieldValue(): V {\n return getField(this.entity, this.fieldName);\n }\n\n get isSet() {\n return isFieldSet(this.entity, this.fieldName);\n }\n\n get isLoaded() {\n const hintLoaded = isLoaded(this.entity, this.loadHint);\n if (hintLoaded) {\n this.#loaded = true;\n }\n return hintLoaded;\n }\n\n get loadHint(): any {\n // Only convert the loadHint, so we don't pull the reactiveHint-referenced data into memory\n const meta = getMetadata(this.entity);\n return (meta.config.__data.cachedReactiveLoadHints[this.fieldName] ??= convertToLoadHint(meta, this.#loadHint));\n }\n\n setFactoryValue(newValue: any): void {\n this.#useFactoryValue = true;\n setField(this.entity, this.fieldName, newValue);\n }\n\n [PropertyT] = undefined as any as T;\n}\n\n/** Type guard utility for determining if an entity field is an AsyncReactiveField. */\nexport function isAsyncReactiveField(maybe: any): maybe is ReactiveField<any, any> {\n return maybe instanceof AsyncReactiveFieldImpl;\n}\n\n/** Type guard utility for determining if an entity field is a loaded AsyncReactiveField. */\nexport function isLoadedAsyncReactiveField(maybe: any): maybe is ReactiveField<any, any> {\n return isAsyncReactiveField(maybe) && maybe.isLoaded;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAqBA,SAAgB,sBAKd,UAAc,cAAkB,IAAiE;CACjG,OAAO,WAAW,QAAW,cAAc;EACzC,OAAO,IAAI,uBAAuB,QAAQ,WAA+B,UAAU,cAAc,EAAE;CACrG,CAAC;AACH;AAEA,IAAa,yBAAb,cACU,qBAEV;CASW;CAGC;CAXV;CACA;CACA;CACA;CACA,mBAAmB;CAEnB,YACE,QACA,WACA,UACA,cACA,IACA;EACA,MAAM,MAAM;EALL,KAAA,YAAA;EAGC,KAAA,KAAA;EAGR,KAAK,YAAY;EACjB,KAAK,gBAAgB;EACrB,KAAK,UAAU;CACjB;;;;;;;CAQA,IAAI,eAAkC;EAGpC,MAAM,OAAO,kBAAkB,KAAK,SAAS;EAC7C,qBAAqB,MAAM,kBAAkB,KAAK,aAAa,CAAC;EAChE,OAAO;CACT;CAEA,KAAK,MAA8C;EAEjD,OAAQ,KAAK,iBAAiB,KAAK,OAAO,GACvC,SAAS,KAAK,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAQ,CAAC,CACrD,WAAW;GAEV,OAAO,KAAK,mBAAmB,KAAK,aAAa,KAAK,GAAG,KAAK,MAAwB;EACxF,CAAC,CAAC,CACD,MAAM,aAAa;GAClB,SAAS,KAAK,QAAQ,KAAK,WAAW,QAAQ;GAC9C,KAAK,eAAe,KAAA;GACpB,KAAK,UAAU;GACf,OAAO;EACT,CAAC,CAAC,CACD,OAAO,MAAM;GAGZ,KAAK,eAAe,KAAA;GACpB,MAAM;EACR,CAAC;CAGL;;CAGA,IAAI,MAAS;EAIX,IAAI,KAAK,OACP,OAAO,KAAK;OAEZ,MAAM,IAAI,MAAM,GAAG,KAAK,UAAU,0BAA0B;CAEhE;CAEA,IAAI,aAAgB;EAClB,OAAO,SAAS,KAAK,QAAQ,KAAK,SAAS;CAC7C;CAEA,IAAI,QAAQ;EACV,OAAO,WAAW,KAAK,QAAQ,KAAK,SAAS;CAC/C;CAEA,IAAI,WAAW;EACb,MAAM,aAAa,SAAS,KAAK,QAAQ,KAAK,QAAQ;EACtD,IAAI,YACF,KAAK,UAAU;EAEjB,OAAO;CACT;CAEA,IAAI,WAAgB;EAElB,MAAM,OAAO,YAAY,KAAK,MAAM;EACpC,OAAQ,KAAK,OAAO,OAAO,wBAAwB,KAAK,eAAe,kBAAkB,MAAM,KAAK,SAAS;CAC/G;CAEA,gBAAgB,UAAqB;EACnC,KAAK,mBAAmB;EACxB,SAAS,KAAK,QAAQ,KAAK,WAAW,QAAQ;CAChD;CAEA,CAAC,aAAa,KAAA;AAChB;;AAGA,SAAgB,qBAAqB,OAA8C;CACjF,OAAO,iBAAiB;AAC1B;;AAGA,SAAgB,2BAA2B,OAA8C;CACvF,OAAO,qBAAqB,KAAK,KAAK,MAAM;AAC9C"}
|