joist-orm 1.294.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/codegen.d.ts +2 -0
- package/build/codegen.d.ts.map +1 -0
- package/build/codegen.js +29 -0
- package/build/codegen.js.map +1 -0
- package/build/drivers/PostgresDriver.d.ts +1 -4
- package/build/drivers/PostgresDriver.d.ts.map +1 -1
- package/build/drivers/PostgresDriver.js +49 -58
- package/build/drivers/PostgresDriver.js.map +1 -1
- package/build/graphql-codegen-export.d.ts +2 -0
- package/build/graphql-codegen-export.d.ts.map +1 -0
- package/build/{drivers/index.js → graphql-codegen-export.js} +3 -5
- package/build/graphql-codegen-export.js.map +1 -0
- package/build/graphql-export.d.ts +2 -0
- package/build/graphql-export.d.ts.map +1 -0
- package/build/graphql-export.js +19 -0
- package/build/graphql-export.js.map +1 -0
- package/build/index.d.ts +3 -128
- package/build/index.d.ts.map +1 -1
- package/build/index.js +8 -284
- package/build/index.js.map +1 -1
- package/build/knex-export.d.ts +2 -0
- package/build/knex-export.d.ts.map +1 -0
- package/build/knex-export.js +19 -0
- package/build/knex-export.js.map +1 -0
- package/build/pg-export.d.ts +2 -0
- package/build/pg-export.d.ts.map +1 -0
- package/build/pg-export.js +7 -0
- package/build/pg-export.js.map +1 -0
- package/build/pg-migrate.d.ts +2 -0
- package/build/pg-migrate.d.ts.map +1 -0
- package/build/pg-migrate.js +30 -0
- package/build/pg-migrate.js.map +1 -0
- package/build/tests-export.d.ts +2 -0
- package/build/tests-export.d.ts.map +1 -0
- package/build/tests-export.js +19 -0
- package/build/tests-export.js.map +1 -0
- package/package.json +94 -16
- package/build/AliasAssigner.d.ts +0 -7
- package/build/AliasAssigner.d.ts.map +0 -1
- package/build/AliasAssigner.js +0 -30
- package/build/AliasAssigner.js.map +0 -1
- package/build/Aliases.d.ts +0 -110
- package/build/Aliases.d.ts.map +0 -1
- package/build/Aliases.js +0 -456
- package/build/Aliases.js.map +0 -1
- package/build/BaseEntity.d.ts +0 -66
- package/build/BaseEntity.d.ts.map +0 -1
- package/build/BaseEntity.js +0 -120
- package/build/BaseEntity.js.map +0 -1
- package/build/ConditionBuilder.d.ts +0 -50
- package/build/ConditionBuilder.d.ts.map +0 -1
- package/build/ConditionBuilder.js +0 -178
- package/build/ConditionBuilder.js.map +0 -1
- package/build/Entity.d.ts +0 -38
- package/build/Entity.d.ts.map +0 -1
- package/build/Entity.js +0 -8
- package/build/Entity.js.map +0 -1
- package/build/EntityFields.d.ts +0 -37
- package/build/EntityFields.d.ts.map +0 -1
- package/build/EntityFields.js +0 -3
- package/build/EntityFields.js.map +0 -1
- package/build/EntityFilter.d.ts +0 -113
- package/build/EntityFilter.d.ts.map +0 -1
- package/build/EntityFilter.js +0 -3
- package/build/EntityFilter.js.map +0 -1
- package/build/EntityGraphQLFilter.d.ts +0 -51
- package/build/EntityGraphQLFilter.d.ts.map +0 -1
- package/build/EntityGraphQLFilter.js +0 -54
- package/build/EntityGraphQLFilter.js.map +0 -1
- package/build/EntityManager.d.ts +0 -734
- package/build/EntityManager.d.ts.map +0 -1
- package/build/EntityManager.js +0 -2075
- package/build/EntityManager.js.map +0 -1
- package/build/EntityMetadata.d.ts +0 -185
- package/build/EntityMetadata.d.ts.map +0 -1
- package/build/EntityMetadata.js +0 -61
- package/build/EntityMetadata.js.map +0 -1
- package/build/EnumMetadata.d.ts +0 -15
- package/build/EnumMetadata.d.ts.map +0 -1
- package/build/EnumMetadata.js +0 -3
- package/build/EnumMetadata.js.map +0 -1
- package/build/FlushLock.d.ts +0 -26
- package/build/FlushLock.d.ts.map +0 -1
- package/build/FlushLock.js +0 -57
- package/build/FlushLock.js.map +0 -1
- package/build/HintTree.d.ts +0 -42
- package/build/HintTree.d.ts.map +0 -1
- package/build/HintTree.js +0 -64
- package/build/HintTree.js.map +0 -1
- package/build/IndexManager.d.ts +0 -30
- package/build/IndexManager.d.ts.map +0 -1
- package/build/IndexManager.js +0 -206
- package/build/IndexManager.js.map +0 -1
- package/build/InstanceData.d.ts +0 -59
- package/build/InstanceData.d.ts.map +0 -1
- package/build/InstanceData.js +0 -162
- package/build/InstanceData.js.map +0 -1
- package/build/IsLoadedCache.d.ts +0 -32
- package/build/IsLoadedCache.d.ts.map +0 -1
- package/build/IsLoadedCache.js +0 -80
- package/build/IsLoadedCache.js.map +0 -1
- package/build/JoinRows.d.ts +0 -75
- package/build/JoinRows.d.ts.map +0 -1
- package/build/JoinRows.js +0 -246
- package/build/JoinRows.js.map +0 -1
- package/build/PluginManager.d.ts +0 -90
- package/build/PluginManager.d.ts.map +0 -1
- package/build/PluginManager.js +0 -97
- package/build/PluginManager.js.map +0 -1
- package/build/QueryParser.d.ts +0 -271
- package/build/QueryParser.d.ts.map +0 -1
- package/build/QueryParser.js +0 -853
- package/build/QueryParser.js.map +0 -1
- package/build/QueryParser.pruning.d.ts +0 -5
- package/build/QueryParser.pruning.d.ts.map +0 -1
- package/build/QueryParser.pruning.js +0 -118
- package/build/QueryParser.pruning.js.map +0 -1
- package/build/QueryVisitor.d.ts +0 -19
- package/build/QueryVisitor.d.ts.map +0 -1
- package/build/QueryVisitor.js +0 -84
- package/build/QueryVisitor.js.map +0 -1
- package/build/ReactionsManager.d.ts +0 -84
- package/build/ReactionsManager.d.ts.map +0 -1
- package/build/ReactionsManager.js +0 -308
- package/build/ReactionsManager.js.map +0 -1
- package/build/Todo.d.ts +0 -31
- package/build/Todo.d.ts.map +0 -1
- package/build/Todo.js +0 -73
- package/build/Todo.js.map +0 -1
- package/build/caches.d.ts +0 -6
- package/build/caches.d.ts.map +0 -1
- package/build/caches.js +0 -42
- package/build/caches.js.map +0 -1
- package/build/changes.d.ts +0 -79
- package/build/changes.d.ts.map +0 -1
- package/build/changes.js +0 -251
- package/build/changes.js.map +0 -1
- package/build/config.d.ts +0 -237
- package/build/config.d.ts.map +0 -1
- package/build/config.js +0 -298
- package/build/config.js.map +0 -1
- package/build/config.test.d.ts +0 -2
- package/build/config.test.d.ts.map +0 -1
- package/build/config.test.js +0 -53
- package/build/config.test.js.map +0 -1
- package/build/configure.d.ts +0 -13
- package/build/configure.d.ts.map +0 -1
- package/build/configure.js +0 -329
- package/build/configure.js.map +0 -1
- package/build/dataloaders/findByUniqueDataLoader.d.ts +0 -7
- package/build/dataloaders/findByUniqueDataLoader.d.ts.map +0 -1
- package/build/dataloaders/findByUniqueDataLoader.js +0 -47
- package/build/dataloaders/findByUniqueDataLoader.js.map +0 -1
- package/build/dataloaders/findCountDataLoader.d.ts +0 -7
- package/build/dataloaders/findCountDataLoader.d.ts.map +0 -1
- package/build/dataloaders/findCountDataLoader.js +0 -74
- package/build/dataloaders/findCountDataLoader.js.map +0 -1
- package/build/dataloaders/findDataLoader.d.ts +0 -37
- package/build/dataloaders/findDataLoader.d.ts.map +0 -1
- package/build/dataloaders/findDataLoader.js +0 -337
- package/build/dataloaders/findDataLoader.js.map +0 -1
- package/build/dataloaders/findIdsDataLoader.d.ts +0 -7
- package/build/dataloaders/findIdsDataLoader.d.ts.map +0 -1
- package/build/dataloaders/findIdsDataLoader.js +0 -74
- package/build/dataloaders/findIdsDataLoader.js.map +0 -1
- package/build/dataloaders/findOrCreateDataLoader.d.ts +0 -13
- package/build/dataloaders/findOrCreateDataLoader.d.ts.map +0 -1
- package/build/dataloaders/findOrCreateDataLoader.js +0 -174
- package/build/dataloaders/findOrCreateDataLoader.js.map +0 -1
- package/build/dataloaders/lensDataLoader.d.ts +0 -12
- package/build/dataloaders/lensDataLoader.d.ts.map +0 -1
- package/build/dataloaders/lensDataLoader.js +0 -180
- package/build/dataloaders/lensDataLoader.js.map +0 -1
- package/build/dataloaders/loadDataLoader.d.ts +0 -11
- package/build/dataloaders/loadDataLoader.d.ts.map +0 -1
- package/build/dataloaders/loadDataLoader.js +0 -54
- package/build/dataloaders/loadDataLoader.js.map +0 -1
- package/build/dataloaders/manyToManyDataLoader.d.ts +0 -8
- package/build/dataloaders/manyToManyDataLoader.d.ts.map +0 -1
- package/build/dataloaders/manyToManyDataLoader.js +0 -74
- package/build/dataloaders/manyToManyDataLoader.js.map +0 -1
- package/build/dataloaders/manyToManyFindDataLoader.d.ts +0 -8
- package/build/dataloaders/manyToManyFindDataLoader.d.ts.map +0 -1
- package/build/dataloaders/manyToManyFindDataLoader.js +0 -70
- package/build/dataloaders/manyToManyFindDataLoader.js.map +0 -1
- package/build/dataloaders/oneToManyDataLoader.d.ts +0 -7
- package/build/dataloaders/oneToManyDataLoader.d.ts.map +0 -1
- package/build/dataloaders/oneToManyDataLoader.js +0 -60
- package/build/dataloaders/oneToManyDataLoader.js.map +0 -1
- package/build/dataloaders/oneToManyFindDataLoader.d.ts +0 -8
- package/build/dataloaders/oneToManyFindDataLoader.d.ts.map +0 -1
- package/build/dataloaders/oneToManyFindDataLoader.js +0 -71
- package/build/dataloaders/oneToManyFindDataLoader.js.map +0 -1
- package/build/dataloaders/oneToOneDataLoader.d.ts +0 -7
- package/build/dataloaders/oneToOneDataLoader.d.ts.map +0 -1
- package/build/dataloaders/oneToOneDataLoader.js +0 -59
- package/build/dataloaders/oneToOneDataLoader.js.map +0 -1
- package/build/dataloaders/populateDataLoader.d.ts +0 -13
- package/build/dataloaders/populateDataLoader.d.ts.map +0 -1
- package/build/dataloaders/populateDataLoader.js +0 -148
- package/build/dataloaders/populateDataLoader.js.map +0 -1
- package/build/dataloaders/recursiveChildrenDataLoader.d.ts +0 -7
- package/build/dataloaders/recursiveChildrenDataLoader.d.ts.map +0 -1
- package/build/dataloaders/recursiveChildrenDataLoader.js +0 -77
- package/build/dataloaders/recursiveChildrenDataLoader.js.map +0 -1
- package/build/dataloaders/recursiveParentsDataLoader.d.ts +0 -7
- package/build/dataloaders/recursiveParentsDataLoader.d.ts.map +0 -1
- package/build/dataloaders/recursiveParentsDataLoader.js +0 -59
- package/build/dataloaders/recursiveParentsDataLoader.js.map +0 -1
- package/build/defaults.d.ts +0 -54
- package/build/defaults.d.ts.map +0 -1
- package/build/defaults.js +0 -282
- package/build/defaults.js.map +0 -1
- package/build/driverApi.d.ts +0 -19
- package/build/driverApi.d.ts.map +0 -1
- package/build/driverApi.js +0 -17
- package/build/driverApi.js.map +0 -1
- package/build/drivers/Driver.d.ts +0 -26
- package/build/drivers/Driver.d.ts.map +0 -1
- package/build/drivers/Driver.js +0 -3
- package/build/drivers/Driver.js.map +0 -1
- package/build/drivers/EntityWriter.d.ts +0 -64
- package/build/drivers/EntityWriter.d.ts.map +0 -1
- package/build/drivers/EntityWriter.js +0 -237
- package/build/drivers/EntityWriter.js.map +0 -1
- package/build/drivers/IdAssigner.d.ts +0 -50
- package/build/drivers/IdAssigner.d.ts.map +0 -1
- package/build/drivers/IdAssigner.js +0 -133
- package/build/drivers/IdAssigner.js.map +0 -1
- package/build/drivers/buildRawQuery.d.ts +0 -20
- package/build/drivers/buildRawQuery.d.ts.map +0 -1
- package/build/drivers/buildRawQuery.js +0 -148
- package/build/drivers/buildRawQuery.js.map +0 -1
- package/build/drivers/buildUtils.d.ts +0 -4
- package/build/drivers/buildUtils.d.ts.map +0 -1
- package/build/drivers/buildUtils.js +0 -79
- package/build/drivers/buildUtils.js.map +0 -1
- package/build/drivers/index.d.ts +0 -5
- package/build/drivers/index.d.ts.map +0 -1
- package/build/drivers/index.js.map +0 -1
- package/build/fields.d.ts +0 -24
- package/build/fields.d.ts.map +0 -1
- package/build/fields.js +0 -162
- package/build/fields.js.map +0 -1
- package/build/getProperties.d.ts +0 -28
- package/build/getProperties.d.ts.map +0 -1
- package/build/getProperties.js +0 -141
- package/build/getProperties.js.map +0 -1
- package/build/json.d.ts +0 -77
- package/build/json.d.ts.map +0 -1
- package/build/json.js +0 -116
- package/build/json.js.map +0 -1
- package/build/k.d.ts +0 -2
- package/build/k.d.ts.map +0 -1
- package/build/k.js +0 -9
- package/build/k.js.map +0 -1
- package/build/keys.d.ts +0 -49
- package/build/keys.d.ts.map +0 -1
- package/build/keys.js +0 -195
- package/build/keys.js.map +0 -1
- package/build/keywords.d.ts +0 -5
- package/build/keywords.d.ts.map +0 -1
- package/build/keywords.js +0 -124
- package/build/keywords.js.map +0 -1
- package/build/loadHints.d.ts +0 -112
- package/build/loadHints.d.ts.map +0 -1
- package/build/loadHints.js +0 -75
- package/build/loadHints.js.map +0 -1
- package/build/loadLens.d.ts +0 -66
- package/build/loadLens.d.ts.map +0 -1
- package/build/loadLens.js +0 -287
- package/build/loadLens.js.map +0 -1
- package/build/logging/FactoryLogger.d.ts +0 -24
- package/build/logging/FactoryLogger.d.ts.map +0 -1
- package/build/logging/FactoryLogger.js +0 -77
- package/build/logging/FactoryLogger.js.map +0 -1
- package/build/logging/FieldLogger.d.ts +0 -27
- package/build/logging/FieldLogger.d.ts.map +0 -1
- package/build/logging/FieldLogger.js +0 -69
- package/build/logging/FieldLogger.js.map +0 -1
- package/build/logging/ReactionLogger.d.ts +0 -23
- package/build/logging/ReactionLogger.d.ts.map +0 -1
- package/build/logging/ReactionLogger.js +0 -65
- package/build/logging/ReactionLogger.js.map +0 -1
- package/build/newEntity.d.ts +0 -45
- package/build/newEntity.d.ts.map +0 -1
- package/build/newEntity.js +0 -106
- package/build/newEntity.js.map +0 -1
- package/build/newTestInstance.d.ts +0 -193
- package/build/newTestInstance.d.ts.map +0 -1
- package/build/newTestInstance.js +0 -738
- package/build/newTestInstance.js.map +0 -1
- package/build/normalizeHints.d.ts +0 -16
- package/build/normalizeHints.d.ts.map +0 -1
- package/build/normalizeHints.js +0 -31
- package/build/normalizeHints.js.map +0 -1
- package/build/plugins/ImmutableEntitiesPlugin.d.ts +0 -9
- package/build/plugins/ImmutableEntitiesPlugin.d.ts.map +0 -1
- package/build/plugins/ImmutableEntitiesPlugin.js +0 -21
- package/build/plugins/ImmutableEntitiesPlugin.js.map +0 -1
- package/build/plugins/PreloadPlugin.d.ts +0 -69
- package/build/plugins/PreloadPlugin.d.ts.map +0 -1
- package/build/plugins/PreloadPlugin.js +0 -3
- package/build/plugins/PreloadPlugin.js.map +0 -1
- package/build/preloading/JsonAggregatePreloader.d.ts +0 -16
- package/build/preloading/JsonAggregatePreloader.d.ts.map +0 -1
- package/build/preloading/JsonAggregatePreloader.js +0 -238
- package/build/preloading/JsonAggregatePreloader.js.map +0 -1
- package/build/preloading/canPreload.d.ts +0 -3
- package/build/preloading/canPreload.d.ts.map +0 -1
- package/build/preloading/canPreload.js +0 -21
- package/build/preloading/canPreload.js.map +0 -1
- package/build/preloading/partitionHint.d.ts +0 -5
- package/build/preloading/partitionHint.d.ts.map +0 -1
- package/build/preloading/partitionHint.js +0 -56
- package/build/preloading/partitionHint.js.map +0 -1
- package/build/reactiveHints.d.ts +0 -129
- package/build/reactiveHints.d.ts.map +0 -1
- package/build/reactiveHints.js +0 -458
- package/build/reactiveHints.js.map +0 -1
- package/build/relations/AbstractPropertyImpl.d.ts +0 -8
- package/build/relations/AbstractPropertyImpl.d.ts.map +0 -1
- package/build/relations/AbstractPropertyImpl.js +0 -15
- package/build/relations/AbstractPropertyImpl.js.map +0 -1
- package/build/relations/AbstractRelationImpl.d.ts +0 -36
- package/build/relations/AbstractRelationImpl.d.ts.map +0 -1
- package/build/relations/AbstractRelationImpl.js +0 -19
- package/build/relations/AbstractRelationImpl.js.map +0 -1
- package/build/relations/Collection.d.ts +0 -28
- package/build/relations/Collection.d.ts.map +0 -1
- package/build/relations/Collection.js +0 -18
- package/build/relations/Collection.js.map +0 -1
- package/build/relations/CustomCollection.d.ts +0 -69
- package/build/relations/CustomCollection.d.ts.map +0 -1
- package/build/relations/CustomCollection.js +0 -166
- package/build/relations/CustomCollection.js.map +0 -1
- package/build/relations/CustomReference.d.ts +0 -71
- package/build/relations/CustomReference.d.ts.map +0 -1
- package/build/relations/CustomReference.js +0 -152
- package/build/relations/CustomReference.js.map +0 -1
- package/build/relations/LargeCollection.d.ts +0 -19
- package/build/relations/LargeCollection.d.ts.map +0 -1
- package/build/relations/LargeCollection.js +0 -3
- package/build/relations/LargeCollection.js.map +0 -1
- package/build/relations/ManyToManyCollection.d.ts +0 -44
- package/build/relations/ManyToManyCollection.d.ts.map +0 -1
- package/build/relations/ManyToManyCollection.js +0 -268
- package/build/relations/ManyToManyCollection.js.map +0 -1
- package/build/relations/ManyToManyLargeCollection.d.ts +0 -30
- package/build/relations/ManyToManyLargeCollection.d.ts.map +0 -1
- package/build/relations/ManyToManyLargeCollection.js +0 -119
- package/build/relations/ManyToManyLargeCollection.js.map +0 -1
- package/build/relations/ManyToOneReference.d.ts +0 -121
- package/build/relations/ManyToOneReference.d.ts.map +0 -1
- package/build/relations/ManyToOneReference.js +0 -389
- package/build/relations/ManyToOneReference.js.map +0 -1
- package/build/relations/OneToManyCollection.d.ts +0 -58
- package/build/relations/OneToManyCollection.d.ts.map +0 -1
- package/build/relations/OneToManyCollection.js +0 -347
- package/build/relations/OneToManyCollection.js.map +0 -1
- package/build/relations/OneToManyLargeCollection.d.ts +0 -26
- package/build/relations/OneToManyLargeCollection.d.ts.map +0 -1
- package/build/relations/OneToManyLargeCollection.js +0 -102
- package/build/relations/OneToManyLargeCollection.js.map +0 -1
- package/build/relations/OneToOneReference.d.ts +0 -93
- package/build/relations/OneToOneReference.d.ts.map +0 -1
- package/build/relations/OneToOneReference.js +0 -228
- package/build/relations/OneToOneReference.js.map +0 -1
- package/build/relations/PolymorphicReference.d.ts +0 -89
- package/build/relations/PolymorphicReference.d.ts.map +0 -1
- package/build/relations/PolymorphicReference.js +0 -244
- package/build/relations/PolymorphicReference.js.map +0 -1
- package/build/relations/ReactiveField.d.ts +0 -87
- package/build/relations/ReactiveField.d.ts.map +0 -1
- package/build/relations/ReactiveField.js +0 -149
- package/build/relations/ReactiveField.js.map +0 -1
- package/build/relations/ReactiveGetter.d.ts +0 -30
- package/build/relations/ReactiveGetter.d.ts.map +0 -1
- package/build/relations/ReactiveGetter.js +0 -38
- package/build/relations/ReactiveGetter.js.map +0 -1
- package/build/relations/ReactiveManyToMany.d.ts +0 -56
- package/build/relations/ReactiveManyToMany.d.ts.map +0 -1
- package/build/relations/ReactiveManyToMany.js +0 -243
- package/build/relations/ReactiveManyToMany.js.map +0 -1
- package/build/relations/ReactiveManyToManyOtherSide.d.ts +0 -47
- package/build/relations/ReactiveManyToManyOtherSide.d.ts.map +0 -1
- package/build/relations/ReactiveManyToManyOtherSide.js +0 -155
- package/build/relations/ReactiveManyToManyOtherSide.js.map +0 -1
- package/build/relations/ReactiveQueryField.d.ts +0 -41
- package/build/relations/ReactiveQueryField.d.ts.map +0 -1
- package/build/relations/ReactiveQueryField.js +0 -125
- package/build/relations/ReactiveQueryField.js.map +0 -1
- package/build/relations/ReactiveReference.d.ts +0 -119
- package/build/relations/ReactiveReference.d.ts.map +0 -1
- package/build/relations/ReactiveReference.js +0 -333
- package/build/relations/ReactiveReference.js.map +0 -1
- package/build/relations/ReadOnlyCollection.d.ts +0 -19
- package/build/relations/ReadOnlyCollection.d.ts.map +0 -1
- package/build/relations/ReadOnlyCollection.js +0 -15
- package/build/relations/ReadOnlyCollection.js.map +0 -1
- package/build/relations/RecursiveCollection.d.ts +0 -84
- package/build/relations/RecursiveCollection.d.ts.map +0 -1
- package/build/relations/RecursiveCollection.js +0 -296
- package/build/relations/RecursiveCollection.js.map +0 -1
- package/build/relations/Reference.d.ts +0 -35
- package/build/relations/Reference.d.ts.map +0 -1
- package/build/relations/Reference.js +0 -21
- package/build/relations/Reference.js.map +0 -1
- package/build/relations/Relation.d.ts +0 -14
- package/build/relations/Relation.d.ts.map +0 -1
- package/build/relations/Relation.js +0 -12
- package/build/relations/Relation.js.map +0 -1
- package/build/relations/hasAsyncMethod.d.ts +0 -27
- package/build/relations/hasAsyncMethod.d.ts.map +0 -1
- package/build/relations/hasAsyncMethod.js +0 -47
- package/build/relations/hasAsyncMethod.js.map +0 -1
- package/build/relations/hasAsyncProperty.d.ts +0 -49
- package/build/relations/hasAsyncProperty.d.ts.map +0 -1
- package/build/relations/hasAsyncProperty.js +0 -98
- package/build/relations/hasAsyncProperty.js.map +0 -1
- package/build/relations/hasManyDerived.d.ts +0 -22
- package/build/relations/hasManyDerived.d.ts.map +0 -1
- package/build/relations/hasManyDerived.js +0 -32
- package/build/relations/hasManyDerived.js.map +0 -1
- package/build/relations/hasManyThrough.d.ts +0 -10
- package/build/relations/hasManyThrough.d.ts.map +0 -1
- package/build/relations/hasManyThrough.js +0 -24
- package/build/relations/hasManyThrough.js.map +0 -1
- package/build/relations/hasOneDerived.d.ts +0 -12
- package/build/relations/hasOneDerived.d.ts.map +0 -1
- package/build/relations/hasOneDerived.js +0 -24
- package/build/relations/hasOneDerived.js.map +0 -1
- package/build/relations/hasOneThrough.d.ts +0 -10
- package/build/relations/hasOneThrough.d.ts.map +0 -1
- package/build/relations/hasOneThrough.js +0 -24
- package/build/relations/hasOneThrough.js.map +0 -1
- package/build/relations/index.d.ts +0 -28
- package/build/relations/index.d.ts.map +0 -1
- package/build/relations/index.js +0 -88
- package/build/relations/index.js.map +0 -1
- package/build/rules.d.ts +0 -123
- package/build/rules.d.ts.map +0 -1
- package/build/rules.js +0 -231
- package/build/rules.js.map +0 -1
- package/build/runtimeConfig.d.ts +0 -17
- package/build/runtimeConfig.d.ts.map +0 -1
- package/build/runtimeConfig.js +0 -18
- package/build/runtimeConfig.js.map +0 -1
- package/build/serde.d.ts +0 -277
- package/build/serde.d.ts.map +0 -1
- package/build/serde.js +0 -517
- package/build/serde.js.map +0 -1
- package/build/temporal.d.ts +0 -16
- package/build/temporal.d.ts.map +0 -1
- package/build/temporal.js +0 -48
- package/build/temporal.js.map +0 -1
- package/build/temporalMappers.d.ts +0 -25
- package/build/temporalMappers.d.ts.map +0 -1
- package/build/temporalMappers.js +0 -59
- package/build/temporalMappers.js.map +0 -1
- package/build/trusted.d.ts +0 -5
- package/build/trusted.d.ts.map +0 -1
- package/build/trusted.js +0 -15
- package/build/trusted.js.map +0 -1
- package/build/typeMap.d.ts +0 -68
- package/build/typeMap.d.ts.map +0 -1
- package/build/typeMap.js +0 -3
- package/build/typeMap.js.map +0 -1
- package/build/unnest.d.ts +0 -13
- package/build/unnest.d.ts.map +0 -1
- package/build/unnest.js +0 -85
- package/build/unnest.js.map +0 -1
- package/build/upsert.d.ts +0 -42
- package/build/upsert.d.ts.map +0 -1
- package/build/upsert.js +0 -265
- package/build/upsert.js.map +0 -1
- package/build/utils.d.ts +0 -58
- package/build/utils.d.ts.map +0 -1
- package/build/utils.js +0 -236
- package/build/utils.js.map +0 -1
- package/build/withLoaded.d.ts +0 -56
- package/build/withLoaded.d.ts.map +0 -1
- package/build/withLoaded.js +0 -76
- package/build/withLoaded.js.map +0 -1
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { Entity } from "../Entity";
|
|
2
|
-
import { PrimitiveField } from "../EntityMetadata";
|
|
3
|
-
import { IsLoadedCachable } from "../IsLoadedCache";
|
|
4
|
-
import { Reacted, ReactiveHint } from "../reactiveHints";
|
|
5
|
-
import { AbstractPropertyImpl } from "./AbstractPropertyImpl";
|
|
6
|
-
import { AsyncPropertyT } from "./hasAsyncProperty";
|
|
7
|
-
/**
|
|
8
|
-
* A `ReactiveField` is a value that is derived from other entities/values,
|
|
9
|
-
* similar to an `AsyncProperty`, but it is also persisted in the database.
|
|
10
|
-
*
|
|
11
|
-
* This allows callers (or SQL queries) to access the value without first calling
|
|
12
|
-
* `await load()` on the property.
|
|
13
|
-
*
|
|
14
|
-
* So, unlike `AsyncProperty`, `.get` is always available; if the property is unloaded,
|
|
15
|
-
* then `.get` will return the last-calculated value, but if the property is loaded,
|
|
16
|
-
* then it will go ahead and invoke function to calculate the latest value (i.e. so
|
|
17
|
-
* that you can observe the latest & greatest value w/o waiting for `em.flush` to
|
|
18
|
-
* re-calc the value while persisting to the database.
|
|
19
|
-
*/
|
|
20
|
-
export interface ReactiveField<T extends Entity, V> {
|
|
21
|
-
[AsyncPropertyT]: T;
|
|
22
|
-
isLoaded: boolean;
|
|
23
|
-
isSet: boolean;
|
|
24
|
-
/**
|
|
25
|
-
* Calculates the latest derived value.
|
|
26
|
-
*
|
|
27
|
-
* Users are not required to call this method explicitly, as Joist will keep the
|
|
28
|
-
* persisted value automatically in-sync, but if for some reason (code changes,
|
|
29
|
-
* bug fixes, etc.) you need to trigger an explicit recalc, you can call `.load()`,
|
|
30
|
-
* any dependent data will be loaded from the database, and the latest value
|
|
31
|
-
* returned, and then later stored to the database on `em.flush`.
|
|
32
|
-
*
|
|
33
|
-
* Note that persisted properties used in load hints, i.e. `em.populate`s that
|
|
34
|
-
* accidentally list reactive fields (instead of just relations) will not have
|
|
35
|
-
* `.load()` invoked, and will instead use the previously-calculated value.
|
|
36
|
-
* The rationale is that one persisted property should be able to declare its
|
|
37
|
-
* dependency on another persisted property (for its reactive field-level hint)
|
|
38
|
-
* without causing that dependent property's populate hint to itself be loaded.
|
|
39
|
-
*/
|
|
40
|
-
load(opts?: {
|
|
41
|
-
forceReload?: boolean;
|
|
42
|
-
}): Promise<V>;
|
|
43
|
-
/** If loaded, returns the latest derived value, or if unload returns the previously-calculated value. */
|
|
44
|
-
get: V;
|
|
45
|
-
/**
|
|
46
|
-
* Returns the as-of-last-flush previously-calculated value.
|
|
47
|
-
*
|
|
48
|
-
* This is useful if you have to purposefully avoid using the lambda to calc the latest value,
|
|
49
|
-
* i.e. if you're in a test and want to watch a calculated value change from some dummy value
|
|
50
|
-
* to the new derived value.
|
|
51
|
-
* */
|
|
52
|
-
fieldValue: V;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Creates a calculated derived value from a load hint + lambda.
|
|
56
|
-
*
|
|
57
|
-
* The property can be accessed by default as a promise, with `someProperty.load()`.
|
|
58
|
-
*
|
|
59
|
-
* But if `someProperty` is used as a populate hint, then it can be accessed synchronously,
|
|
60
|
-
* with `someProperty.get`.
|
|
61
|
-
*/
|
|
62
|
-
export declare function hasReactiveField<T extends Entity, const H extends ReactiveHint<T>, V>(hint: H, fn: (entity: Reacted<T, H>) => V): ReactiveField<T, V>;
|
|
63
|
-
export declare class ReactiveFieldImpl<T extends Entity, H extends ReactiveHint<T>, V> extends AbstractPropertyImpl<T> implements ReactiveField<T, V>, IsLoadedCachable {
|
|
64
|
-
#private;
|
|
65
|
-
private fn;
|
|
66
|
-
constructor(entity: T, field: PrimitiveField, reactiveHint: H, fn: (entity: Reacted<T, H>) => V);
|
|
67
|
-
load(opts?: {
|
|
68
|
-
forceReload?: boolean;
|
|
69
|
-
}): Promise<V>;
|
|
70
|
-
/** Returns either the latest calculated value (if loaded) or the previously-calculated value (if not loaded). */
|
|
71
|
-
get get(): V;
|
|
72
|
-
get fieldName(): keyof T & string;
|
|
73
|
-
get reactiveHint(): H;
|
|
74
|
-
get fieldValue(): V;
|
|
75
|
-
get isSet(): boolean;
|
|
76
|
-
get isLoaded(): boolean;
|
|
77
|
-
resetIsLoaded(): void;
|
|
78
|
-
get loadHint(): any;
|
|
79
|
-
setFactoryValue(newValue: any): void;
|
|
80
|
-
[AsyncPropertyT]: T;
|
|
81
|
-
private resetCacheUnlessFactoryPinned;
|
|
82
|
-
}
|
|
83
|
-
/** Type guard utility for determining if an entity field is an AsyncProperty. */
|
|
84
|
-
export declare function isReactiveField(maybeAsyncProperty: any): maybeAsyncProperty is ReactiveField<any, any>;
|
|
85
|
-
/** Type guard utility for determining if an entity field is a loaded AsyncProperty. */
|
|
86
|
-
export declare function isLoadedAsyncProperty(maybeAsyncProperty: any): maybeAsyncProperty is ReactiveField<any, any>;
|
|
87
|
-
//# sourceMappingURL=ReactiveField.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReactiveField.d.ts","sourceRoot":"","sources":["../../src/relations/ReactiveField.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAe,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAqB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC;IAChD,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IAEf;;;;;;;;;;;;;;;OAeG;IACH,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEnD,yGAAyG;IACzG,GAAG,EAAE,CAAC,CAAC;IAEP;;;;;;SAMK;IACL,UAAU,EAAE,CAAC,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EACnF,IAAI,EAAE,CAAC,EACP,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAC/B,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAKrB;AAED,qBAAa,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAC3E,SAAQ,oBAAoB,CAAC,CAAC,CAC9B,YAAW,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB;;IAa9C,OAAO,CAAC,EAAE;gBAHV,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,cAAc,EACrB,YAAY,EAAE,CAAC,EACP,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;IAOpC,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IA2BxD,iHAAiH;IACjH,IAAI,GAAG,IAAI,CAAC,CAwBX;IAED,IAAI,SAAS,IAAI,MAAM,CAAC,GAAG,MAAM,CAEhC;IAED,IAAI,YAAY,IAAI,CAAC,CAEpB;IAED,IAAI,UAAU,IAAI,CAAC,CAElB;IAED,IAAI,KAAK,YAER;IAED,IAAI,QAAQ,YAMX;IAED,aAAa,IAAI,IAAI;IAOrB,IAAI,QAAQ,IAAI,GAAG,CAGlB;IAED,eAAe,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI;IAKpC,CAAC,cAAc,CAAC,EAAuB,CAAC,CAAC;IAEzC,OAAO,CAAC,6BAA6B;CAKtC;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,kBAAkB,EAAE,GAAG,GAAG,kBAAkB,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAEtG;AAED,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,kBAAkB,EAAE,GAAG,GAAG,kBAAkB,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAE5G"}
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ReactiveFieldImpl = void 0;
|
|
4
|
-
exports.hasReactiveField = hasReactiveField;
|
|
5
|
-
exports.isReactiveField = isReactiveField;
|
|
6
|
-
exports.isLoadedAsyncProperty = isLoadedAsyncProperty;
|
|
7
|
-
const EntityManager_1 = require("../EntityManager");
|
|
8
|
-
const EntityMetadata_1 = require("../EntityMetadata");
|
|
9
|
-
const fields_1 = require("../fields");
|
|
10
|
-
const index_1 = require("../index");
|
|
11
|
-
const newEntity_1 = require("../newEntity");
|
|
12
|
-
const reactiveHints_1 = require("../reactiveHints");
|
|
13
|
-
const AbstractPropertyImpl_1 = require("./AbstractPropertyImpl");
|
|
14
|
-
const hasAsyncProperty_1 = require("./hasAsyncProperty");
|
|
15
|
-
/**
|
|
16
|
-
* Creates a calculated derived value from a load hint + lambda.
|
|
17
|
-
*
|
|
18
|
-
* The property can be accessed by default as a promise, with `someProperty.load()`.
|
|
19
|
-
*
|
|
20
|
-
* But if `someProperty` is used as a populate hint, then it can be accessed synchronously,
|
|
21
|
-
* with `someProperty.get`.
|
|
22
|
-
*/
|
|
23
|
-
function hasReactiveField(hint, fn) {
|
|
24
|
-
return (0, newEntity_1.lazyField)((entity, fieldName) => {
|
|
25
|
-
const field = (0, EntityMetadata_1.getMetadata)(entity).allFields[fieldName];
|
|
26
|
-
return new ReactiveFieldImpl(entity, field, hint, fn);
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
class ReactiveFieldImpl extends AbstractPropertyImpl_1.AbstractPropertyImpl {
|
|
30
|
-
fn;
|
|
31
|
-
#field;
|
|
32
|
-
#reactiveHint;
|
|
33
|
-
#loadPromise;
|
|
34
|
-
// Initially undefined, then cached as true/false
|
|
35
|
-
#isLoaded;
|
|
36
|
-
#isCached = false;
|
|
37
|
-
constructor(entity, field, reactiveHint, fn) {
|
|
38
|
-
super(entity);
|
|
39
|
-
this.fn = fn;
|
|
40
|
-
this.#field = field;
|
|
41
|
-
this.#reactiveHint = reactiveHint;
|
|
42
|
-
}
|
|
43
|
-
async load(opts) {
|
|
44
|
-
// Even without `forceReload=true`, any explicit calls to `.load()` ==> ensure a fresh value,
|
|
45
|
-
// because `.get` may have cached the stale/previously-calculated value.
|
|
46
|
-
//
|
|
47
|
-
// (Currently `em.populate` / `populateDataLoader` has a hack/escape hatch that ignores calling
|
|
48
|
-
// RF.load(), to avoid pulling in the RF subgraph over using the materialized value, which ideally would be
|
|
49
|
-
// replaced with us learning to do the maybeDirty approach.)
|
|
50
|
-
if (!this.isLoaded || opts?.forceReload) {
|
|
51
|
-
return (this.#loadPromise ??= this.entity.em.populate(this.entity, { hint: this.loadHint }).then(() => {
|
|
52
|
-
this.#loadPromise = undefined;
|
|
53
|
-
this.#isLoaded = true;
|
|
54
|
-
(0, EntityManager_1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
|
|
55
|
-
// Wait and reset `#isCached` until inside this `then`, so that we don't have a race condition where:
|
|
56
|
-
// - two relations (us and someone else) are both passed to `em.calc`
|
|
57
|
-
// - their load hint is simpler, so their promises resolves first, and their `.get` calls our `.get`
|
|
58
|
-
// - our `.get` sees we're not loaded, but calls `fieldValue` for the existing value, and dutifully sets `#isCached=true`
|
|
59
|
-
// - finally our promise runs, and if we didn't immediately set `#isCached=false` here, our `.get` would again
|
|
60
|
-
// early return and keep using the stale fieldValue.
|
|
61
|
-
this.resetCacheUnlessFactoryPinned();
|
|
62
|
-
// Go through `this.get` so that `setField` is called to set our latest value
|
|
63
|
-
return this.get;
|
|
64
|
-
}));
|
|
65
|
-
}
|
|
66
|
-
this.resetCacheUnlessFactoryPinned();
|
|
67
|
-
return this.get;
|
|
68
|
-
}
|
|
69
|
-
/** Returns either the latest calculated value (if loaded) or the previously-calculated value (if not loaded). */
|
|
70
|
-
get get() {
|
|
71
|
-
const { fn } = this;
|
|
72
|
-
// Some ReactiveFields can have surprisingly expensive calculations, especially in loops
|
|
73
|
-
// or those that invoke loops, so cache the value.
|
|
74
|
-
if (this.#isCached)
|
|
75
|
-
return this.fieldValue;
|
|
76
|
-
// isLoaded will watch for our previously-loaded subgraph being mutated (isLoaded is locally cached but hooked into
|
|
77
|
-
// our IsLoadedCache cache that is immediately invalidated on write-path), and if we've drifted to not-loaded, it's
|
|
78
|
-
// better to fail and tell the user.
|
|
79
|
-
if (this.isLoaded) {
|
|
80
|
-
const newValue = fn(this.entity);
|
|
81
|
-
if (!(0, EntityManager_1.getEmInternalApi)(this.entity.em).isValidating) {
|
|
82
|
-
// setField will immediately invalidate downstream #isLoaded/#isCached values
|
|
83
|
-
(0, fields_1.setField)(this.entity, this.fieldName, newValue);
|
|
84
|
-
this.#isCached = true;
|
|
85
|
-
(0, EntityManager_1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
|
|
86
|
-
}
|
|
87
|
-
return newValue;
|
|
88
|
-
}
|
|
89
|
-
else if (this.isSet) {
|
|
90
|
-
this.#isCached = true;
|
|
91
|
-
(0, EntityManager_1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
|
|
92
|
-
return this.fieldValue;
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
throw new Error(`${this.fieldName} has not been derived yet`);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
get fieldName() {
|
|
99
|
-
return this.#field.fieldName;
|
|
100
|
-
}
|
|
101
|
-
get reactiveHint() {
|
|
102
|
-
return this.#reactiveHint;
|
|
103
|
-
}
|
|
104
|
-
get fieldValue() {
|
|
105
|
-
return (0, fields_1.getField)(this.entity, this.fieldName);
|
|
106
|
-
}
|
|
107
|
-
get isSet() {
|
|
108
|
-
return (0, fields_1.isFieldSet)(this.entity, this.fieldName);
|
|
109
|
-
}
|
|
110
|
-
get isLoaded() {
|
|
111
|
-
// Skip an expensive isLoaded(subgraph) call if no mutations have happened
|
|
112
|
-
if (this.#isLoaded !== undefined)
|
|
113
|
-
return this.#isLoaded;
|
|
114
|
-
this.#isLoaded = (0, index_1.isLoaded)(this.entity, this.loadHint);
|
|
115
|
-
(0, EntityManager_1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
|
|
116
|
-
return this.#isLoaded;
|
|
117
|
-
}
|
|
118
|
-
resetIsLoaded() {
|
|
119
|
-
// Even though we reset this on every mutation, `isLoaded` will still realize when the subgraph
|
|
120
|
-
// is still loaded (as it did before we added caching), so users won't see false positive.
|
|
121
|
-
this.#isLoaded = undefined;
|
|
122
|
-
this.resetCacheUnlessFactoryPinned();
|
|
123
|
-
}
|
|
124
|
-
get loadHint() {
|
|
125
|
-
const meta = (0, EntityMetadata_1.getMetadata)(this.entity);
|
|
126
|
-
return (meta.config.__data.cachedReactiveLoadHints[this.fieldName] ??= (0, reactiveHints_1.convertToLoadHint)(meta, this.reactiveHint));
|
|
127
|
-
}
|
|
128
|
-
setFactoryValue(newValue) {
|
|
129
|
-
(0, fields_1.setField)(this.entity, this.fieldName, newValue);
|
|
130
|
-
this.#isCached = "factory-value";
|
|
131
|
-
}
|
|
132
|
-
[hasAsyncProperty_1.AsyncPropertyT] = undefined;
|
|
133
|
-
resetCacheUnlessFactoryPinned() {
|
|
134
|
-
// If factories asked for a hard-coded value, don't reset the cached flag
|
|
135
|
-
if (this.#isCached === "factory-value")
|
|
136
|
-
return;
|
|
137
|
-
this.#isCached = false;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
exports.ReactiveFieldImpl = ReactiveFieldImpl;
|
|
141
|
-
/** Type guard utility for determining if an entity field is an AsyncProperty. */
|
|
142
|
-
function isReactiveField(maybeAsyncProperty) {
|
|
143
|
-
return maybeAsyncProperty instanceof ReactiveFieldImpl;
|
|
144
|
-
}
|
|
145
|
-
/** Type guard utility for determining if an entity field is a loaded AsyncProperty. */
|
|
146
|
-
function isLoadedAsyncProperty(maybeAsyncProperty) {
|
|
147
|
-
return isReactiveField(maybeAsyncProperty) && maybeAsyncProperty.isLoaded;
|
|
148
|
-
}
|
|
149
|
-
//# sourceMappingURL=ReactiveField.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReactiveField.js","sourceRoot":"","sources":["../../src/relations/ReactiveField.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { Entity } from "../Entity";
|
|
2
|
-
import { Reacted, ShallowReactiveHint } from "../reactiveHints";
|
|
3
|
-
import { AsyncPropertyT } from "./hasAsyncProperty";
|
|
4
|
-
/**
|
|
5
|
-
* A `ReactiveGetter` is a getter that declares what primitive fields it depends on.
|
|
6
|
-
*
|
|
7
|
-
* This is very similar to a `ReactiveAsyncProperty`, except because it's limited to
|
|
8
|
-
* only immediate fields on the entity, it can always have `.get` called, and doesn't
|
|
9
|
-
* need to be loaded.
|
|
10
|
-
*
|
|
11
|
-
* The benefit over a pure getter is that `ReactiveGetter` can be used in reactive
|
|
12
|
-
* rules and reactive fields, which would otherwise need to use `fullNonReactiveAccess`
|
|
13
|
-
* to access getter, and risk missing reactivity.
|
|
14
|
-
*/
|
|
15
|
-
export interface ReactiveGetter<T extends Entity, V> {
|
|
16
|
-
[AsyncPropertyT]: T;
|
|
17
|
-
get: V;
|
|
18
|
-
}
|
|
19
|
-
/** Creates a `ReactiveGetter`, for simple "getters" that still trackable for reactivity. */
|
|
20
|
-
export declare function hasReactiveGetter<T extends Entity, const H extends ShallowReactiveHint<T>, V>(fieldName: keyof T & string, hint: H, fn: (entity: Reacted<T, H>) => V): ReactiveGetter<T, V>;
|
|
21
|
-
export declare class ReactiveGetterImpl<T extends Entity, const H extends ShallowReactiveHint<T>, V> implements ReactiveGetter<T, V> {
|
|
22
|
-
#private;
|
|
23
|
-
constructor(entity: T, fieldName: keyof T & string, hint: H, fn: (entity: Reacted<T, H>) => V);
|
|
24
|
-
get get(): V;
|
|
25
|
-
get reactiveHint(): H;
|
|
26
|
-
[AsyncPropertyT]: T;
|
|
27
|
-
}
|
|
28
|
-
/** Type guard utility for determining if an entity field is an AsyncProperty. */
|
|
29
|
-
export declare function isReactiveGetter(maybeReactiveGetter: any): maybeReactiveGetter is ReactiveGetter<any, any>;
|
|
30
|
-
//# sourceMappingURL=ReactiveGetter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReactiveGetter.d.ts","sourceRoot":"","sources":["../../src/relations/ReactiveGetter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC;IACjD,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACpB,GAAG,EAAE,CAAC,CAAC;CACR;AAED,4FAA4F;AAC5F,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,EAC3F,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAC3B,IAAI,EAAE,CAAC,EACP,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAC/B,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAItB;AAED,qBAAa,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CACzF,YAAW,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;;gBAOnB,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;IAO7F,IAAI,GAAG,IAAI,CAAC,CAEX;IAED,IAAI,YAAY,IAAI,CAAC,CAEpB;IAED,CAAC,cAAc,CAAC,EAAuB,CAAC,CAAC;CAC1C;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,mBAAmB,EAAE,GAAG,GAAG,mBAAmB,IAAI,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAE1G"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ReactiveGetterImpl = void 0;
|
|
4
|
-
exports.hasReactiveGetter = hasReactiveGetter;
|
|
5
|
-
exports.isReactiveGetter = isReactiveGetter;
|
|
6
|
-
const newEntity_1 = require("../newEntity");
|
|
7
|
-
const hasAsyncProperty_1 = require("./hasAsyncProperty");
|
|
8
|
-
/** Creates a `ReactiveGetter`, for simple "getters" that still trackable for reactivity. */
|
|
9
|
-
function hasReactiveGetter(fieldName, hint, fn) {
|
|
10
|
-
return (0, newEntity_1.lazyField)((entity, fieldName) => {
|
|
11
|
-
return new ReactiveGetterImpl(entity, fieldName, hint, fn);
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
class ReactiveGetterImpl {
|
|
15
|
-
#entity;
|
|
16
|
-
#fieldName;
|
|
17
|
-
#hint;
|
|
18
|
-
#fn;
|
|
19
|
-
constructor(entity, fieldName, hint, fn) {
|
|
20
|
-
this.#entity = entity;
|
|
21
|
-
this.#fieldName = fieldName;
|
|
22
|
-
this.#hint = hint;
|
|
23
|
-
this.#fn = fn;
|
|
24
|
-
}
|
|
25
|
-
get get() {
|
|
26
|
-
return this.#fn(this.#entity);
|
|
27
|
-
}
|
|
28
|
-
get reactiveHint() {
|
|
29
|
-
return this.#hint;
|
|
30
|
-
}
|
|
31
|
-
[hasAsyncProperty_1.AsyncPropertyT] = undefined;
|
|
32
|
-
}
|
|
33
|
-
exports.ReactiveGetterImpl = ReactiveGetterImpl;
|
|
34
|
-
/** Type guard utility for determining if an entity field is an AsyncProperty. */
|
|
35
|
-
function isReactiveGetter(maybeReactiveGetter) {
|
|
36
|
-
return maybeReactiveGetter instanceof ReactiveGetterImpl;
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=ReactiveGetter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReactiveGetter.js","sourceRoot":"","sources":["../../src/relations/ReactiveGetter.ts"],"names":[],"mappings":";;;AAsBA,8CAQC;AA6BD,4CAEC;AA5DD,4CAAyC;AAEzC,yDAAoD;AAkBpD,4FAA4F;AAC5F,SAAgB,iBAAiB,CAC/B,SAA2B,EAC3B,IAAO,EACP,EAAgC;IAEhC,OAAO,IAAA,qBAAS,EAAC,CAAC,MAAS,EAAE,SAAS,EAAE,EAAE;QACxC,OAAO,IAAI,kBAAkB,CAAC,MAAM,EAAE,SAA6B,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAa,kBAAkB;IAGpB,OAAO,CAAI;IACX,UAAU,CAAmB;IAC7B,KAAK,CAAI;IACT,GAAG,CAA+B;IAE3C,YAAY,MAAS,EAAE,SAA2B,EAAE,IAAO,EAAE,EAAgC;QAC3F,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAc,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,CAAC,iCAAc,CAAC,GAAG,SAAqB,CAAC;CAC1C;AAxBD,gDAwBC;AAED,iFAAiF;AACjF,SAAgB,gBAAgB,CAAC,mBAAwB;IACvD,OAAO,mBAAmB,YAAY,kBAAkB,CAAC;AAC3D,CAAC"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { Entity, EntityMetadata, ManyToManyField, ReadOnlyCollection } from "..";
|
|
2
|
-
import { IsLoadedCachable } from "../IsLoadedCache";
|
|
3
|
-
import { MaybeReactedEntity, Reacted, ReactiveHint } from "../reactiveHints";
|
|
4
|
-
import { AbstractRelationImpl } from "./AbstractRelationImpl";
|
|
5
|
-
import { RelationT, RelationU } from "./Relation";
|
|
6
|
-
/**
|
|
7
|
-
* A reactive, derived many-to-many collection.
|
|
8
|
-
*
|
|
9
|
-
* Similar to `ReactiveReference` but for collections--membership is calculated from a reactive
|
|
10
|
-
* function and persisted to the underlying join table.
|
|
11
|
-
*/
|
|
12
|
-
export interface ReactiveManyToMany<T extends Entity, U extends Entity> extends ReadOnlyCollection<T, U> {
|
|
13
|
-
load(opts?: {
|
|
14
|
-
withDeleted?: boolean;
|
|
15
|
-
forceReload?: boolean;
|
|
16
|
-
}): Promise<readonly U[]>;
|
|
17
|
-
}
|
|
18
|
-
/** Creates a `ReactiveManyToMany`. */
|
|
19
|
-
export declare function hasReactiveManyToMany<T extends Entity, U extends Entity, const H extends ReactiveHint<T>>(hint: H, fn: (entity: Reacted<T, H>) => readonly MaybeReactedEntity<U>[]): ReactiveManyToMany<T, U>;
|
|
20
|
-
/** Implements ReactiveManyToMany, initially a copy/paste of ReactiveReference but for m2m. */
|
|
21
|
-
export declare class ReactiveManyToManyImpl<T extends Entity, U extends Entity, H extends ReactiveHint<T>> extends AbstractRelationImpl<T, U[]> implements ReactiveManyToMany<T, U>, IsLoadedCachable {
|
|
22
|
-
#private;
|
|
23
|
-
reactiveHint: H;
|
|
24
|
-
private fn;
|
|
25
|
-
constructor(entity: T, field: ManyToManyField, reactiveHint: H, fn: (entity: Reacted<T, H>) => readonly MaybeReactedEntity<U>[]);
|
|
26
|
-
load(opts?: {
|
|
27
|
-
withDeleted?: boolean;
|
|
28
|
-
forceReload?: boolean;
|
|
29
|
-
}): Promise<ReadonlyArray<U>>;
|
|
30
|
-
get isLoaded(): boolean;
|
|
31
|
-
resetIsLoaded(): void;
|
|
32
|
-
get getWithDeleted(): U[];
|
|
33
|
-
get get(): U[];
|
|
34
|
-
set(): void;
|
|
35
|
-
get loadHint(): any;
|
|
36
|
-
setFromOpts(_others: U[]): void;
|
|
37
|
-
maybeCascadeDelete(): void;
|
|
38
|
-
cleanupOnEntityDeleted(): Promise<void>;
|
|
39
|
-
get meta(): EntityMetadata;
|
|
40
|
-
get fieldName(): string;
|
|
41
|
-
get otherMeta(): EntityMetadata;
|
|
42
|
-
get joinTableName(): string;
|
|
43
|
-
get columnName(): string;
|
|
44
|
-
get otherColumnName(): string;
|
|
45
|
-
get otherFieldName(): string;
|
|
46
|
-
get hasBeenSet(): boolean;
|
|
47
|
-
get isPreloaded(): boolean;
|
|
48
|
-
preload(): void;
|
|
49
|
-
import(other: ReactiveManyToManyImpl<T, U, H>, _: unknown, mapEntities: (e: U[] | undefined) => U[] | undefined): void;
|
|
50
|
-
toString(): string;
|
|
51
|
-
[RelationT]: T;
|
|
52
|
-
[RelationU]: U;
|
|
53
|
-
}
|
|
54
|
-
/** Type guard utility for determining if an entity field is a ReactiveManyToMany. */
|
|
55
|
-
export declare function isReactiveManyToMany(maybeReactiveManyToMany: any): maybeReactiveManyToMany is ReactiveManyToMany<any, any>;
|
|
56
|
-
//# sourceMappingURL=ReactiveManyToMany.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReactiveManyToMany.d.ts","sourceRoot":"","sources":["../../src/relations/ReactiveManyToMany.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ReactiveManyToManyImpl = void 0;
|
|
4
|
-
exports.hasReactiveManyToMany = hasReactiveManyToMany;
|
|
5
|
-
exports.isReactiveManyToMany = isReactiveManyToMany;
|
|
6
|
-
const __1 = require("..");
|
|
7
|
-
const manyToManyDataLoader_1 = require("../dataloaders/manyToManyDataLoader");
|
|
8
|
-
const newEntity_1 = require("../newEntity");
|
|
9
|
-
const reactiveHints_1 = require("../reactiveHints");
|
|
10
|
-
const AbstractRelationImpl_1 = require("./AbstractRelationImpl");
|
|
11
|
-
const Relation_1 = require("./Relation");
|
|
12
|
-
/** Creates a `ReactiveManyToMany`. */
|
|
13
|
-
function hasReactiveManyToMany(hint, fn) {
|
|
14
|
-
return (0, newEntity_1.lazyField)((entity, fieldName) => {
|
|
15
|
-
const m2m = (0, __1.getMetadata)(entity).allFields[fieldName];
|
|
16
|
-
return new ReactiveManyToManyImpl(entity, m2m, hint, fn);
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
/** Implements ReactiveManyToMany, initially a copy/paste of ReactiveReference but for m2m. */
|
|
20
|
-
class ReactiveManyToManyImpl extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
21
|
-
reactiveHint;
|
|
22
|
-
fn;
|
|
23
|
-
#field;
|
|
24
|
-
// Could be either the ref-loaded stored array, or full-loaded calculated array
|
|
25
|
-
#loaded;
|
|
26
|
-
// In ref-mode, we use our materialized FK value (which might be undefined)
|
|
27
|
-
// If full-mode, we calculate the FK value from the subgraph
|
|
28
|
-
#loadedMode = undefined;
|
|
29
|
-
// #isLoaded doesn't necessary care if we're ref-mode or full-mode, it's just
|
|
30
|
-
// whether a caller can call `.get` and not have it blow up.
|
|
31
|
-
#isLoaded = undefined;
|
|
32
|
-
#isCached = false;
|
|
33
|
-
#loadPromise;
|
|
34
|
-
constructor(entity, field, reactiveHint, fn) {
|
|
35
|
-
super(entity);
|
|
36
|
-
this.reactiveHint = reactiveHint;
|
|
37
|
-
this.fn = fn;
|
|
38
|
-
this.#field = field;
|
|
39
|
-
(0, __1.getInstanceData)(entity).relations[this.fieldName] = this;
|
|
40
|
-
}
|
|
41
|
-
async load(opts) {
|
|
42
|
-
(0, __1.ensureNotDeleted)(this.entity, "pending");
|
|
43
|
-
const { loadHint } = this;
|
|
44
|
-
if (!this.isLoaded || opts?.forceReload) {
|
|
45
|
-
const { em } = this.entity;
|
|
46
|
-
const maybeDirty = opts?.forceReload || (0, __1.getEmInternalApi)(em).rm.isMaybePendingRecalc(this.entity, this.fieldName);
|
|
47
|
-
if (maybeDirty) {
|
|
48
|
-
this.#isCached = false;
|
|
49
|
-
return (this.#loadPromise ??= em.populate(this.entity, { hint: loadHint, ...opts }).then(() => {
|
|
50
|
-
this.#loadPromise = undefined;
|
|
51
|
-
this.#loadedMode = "full";
|
|
52
|
-
this.#isLoaded = true;
|
|
53
|
-
(0, __1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
|
|
54
|
-
return this.#doGet(opts);
|
|
55
|
-
}));
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
// Load from join table (existing materialized state)
|
|
59
|
-
return (this.#loadPromise ??= this.#loadFromJoinTable().then((loaded) => {
|
|
60
|
-
this.#loadPromise = undefined;
|
|
61
|
-
this.#loadedMode = "ref";
|
|
62
|
-
this.#isLoaded = true;
|
|
63
|
-
this.#loaded = loaded;
|
|
64
|
-
(0, __1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
|
|
65
|
-
return this.#filterDeleted(loaded, opts);
|
|
66
|
-
}));
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return this.#doGet(opts);
|
|
70
|
-
}
|
|
71
|
-
get isLoaded() {
|
|
72
|
-
if (this.#isLoaded !== undefined)
|
|
73
|
-
return this.#isLoaded;
|
|
74
|
-
(0, __1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
|
|
75
|
-
// If a WIP mutation has marked our field as potentially dirty, we need to be "full" loaded
|
|
76
|
-
const maybeDirty = (0, __1.getEmInternalApi)(this.entity.em).rm.isMaybePendingRecalc(this.entity, this.fieldName);
|
|
77
|
-
if (maybeDirty) {
|
|
78
|
-
// If we're dirty, only being "full" loaded is good enough to recalc
|
|
79
|
-
this.#loadedMode = "full";
|
|
80
|
-
this.#isLoaded = (0, __1.isLoaded)(this.entity, this.loadHint);
|
|
81
|
-
this.#isCached = false;
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
// If we've had `.load` called before, assume we're still loaded
|
|
85
|
-
this.#isLoaded = !!this.#loadedMode;
|
|
86
|
-
}
|
|
87
|
-
return this.#isLoaded;
|
|
88
|
-
}
|
|
89
|
-
resetIsLoaded() {
|
|
90
|
-
this.#isLoaded = undefined;
|
|
91
|
-
this.#isCached = false;
|
|
92
|
-
}
|
|
93
|
-
#doGet(opts) {
|
|
94
|
-
const { fn } = this;
|
|
95
|
-
(0, __1.ensureNotDeleted)(this.entity, "pending");
|
|
96
|
-
// Fast pass if we've already calculated this (cache invalidation will happen on
|
|
97
|
-
// any mutation via #resetIsLoaded)..
|
|
98
|
-
if (this.#isCached) {
|
|
99
|
-
return this.#filterDeleted(this.#loaded ?? [], opts);
|
|
100
|
-
}
|
|
101
|
-
// Call isLoaded to probe the load hint, and get `#isLoaded` set, but still have
|
|
102
|
-
// our `if` check the raw `#isLoaded` to know if we should eval-latest or return `loaded`.
|
|
103
|
-
if (this.isLoaded && this.#loadedMode === "full") {
|
|
104
|
-
const newValue = fn(this.entity);
|
|
105
|
-
// Preserve deleted entities that were in the previous loaded value
|
|
106
|
-
const previousDeleted = (this.#loaded ?? []).filter((e) => e.isDeletedEntity);
|
|
107
|
-
for (const entity of previousDeleted) {
|
|
108
|
-
if (!newValue.includes(entity))
|
|
109
|
-
newValue.push(entity);
|
|
110
|
-
}
|
|
111
|
-
if (!(0, __1.getEmInternalApi)(this.entity.em).isValidating) {
|
|
112
|
-
this.#syncJoinTableRows(newValue);
|
|
113
|
-
}
|
|
114
|
-
this.#loaded = newValue;
|
|
115
|
-
this.#isCached = true;
|
|
116
|
-
(0, __1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
|
|
117
|
-
}
|
|
118
|
-
else if (!!this.#loadedMode) {
|
|
119
|
-
// We're either loadedMode=ref, or loadedMode=full (but not actually fully loaded),
|
|
120
|
-
// but in theory loadedMode only gets set in `.load()`, so we should have #loaded
|
|
121
|
-
// set to some value, even if it's not fully up-to-date.
|
|
122
|
-
this.#isCached = true;
|
|
123
|
-
(0, __1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
const noun = this.entity.isNewEntity ? "derived" : "loaded";
|
|
127
|
-
throw new Error(`${this.entity}.${this.fieldName} has not been ${noun} yet`);
|
|
128
|
-
}
|
|
129
|
-
return this.#filterDeleted(this.#loaded ?? [], opts);
|
|
130
|
-
}
|
|
131
|
-
get getWithDeleted() {
|
|
132
|
-
return this.#doGet({ withDeleted: true });
|
|
133
|
-
}
|
|
134
|
-
get get() {
|
|
135
|
-
return this.#doGet({ withDeleted: false });
|
|
136
|
-
}
|
|
137
|
-
set() {
|
|
138
|
-
(0, __1.fail)(`Cannot set ${this.entity}.${this.fieldName} ReactiveManyToMany directly.`);
|
|
139
|
-
}
|
|
140
|
-
get loadHint() {
|
|
141
|
-
const meta = (0, __1.getMetadata)(this.entity);
|
|
142
|
-
return (meta.config.__data.cachedReactiveLoadHints[this.fieldName] ??= (0, reactiveHints_1.convertToLoadHint)(meta, this.reactiveHint));
|
|
143
|
-
}
|
|
144
|
-
setFromOpts(_others) {
|
|
145
|
-
throw new Error(`ReactiveManyToMany ${this.entity}.${this.fieldName} cannot be set via opts`);
|
|
146
|
-
}
|
|
147
|
-
maybeCascadeDelete() {
|
|
148
|
-
if (this.#isCascadeDelete) {
|
|
149
|
-
const jr = (0, __1.getEmInternalApi)(this.entity.em).joinRows(this);
|
|
150
|
-
jr.getOthers(this.columnName, this.entity).forEach((e) => this.entity.em.delete(e));
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
async cleanupOnEntityDeleted() {
|
|
154
|
-
const existing = await this.load({ withDeleted: true });
|
|
155
|
-
const jr = (0, __1.getEmInternalApi)(this.entity.em).joinRows(this);
|
|
156
|
-
for (const entity of existing)
|
|
157
|
-
jr.addRemove(this, this.entity, entity);
|
|
158
|
-
this.#loaded = [];
|
|
159
|
-
this.#isLoaded = false;
|
|
160
|
-
}
|
|
161
|
-
// Properties needed for JoinRows/ManyToManyCollection compatibility
|
|
162
|
-
get meta() {
|
|
163
|
-
return (0, __1.getMetadata)(this.entity);
|
|
164
|
-
}
|
|
165
|
-
get fieldName() {
|
|
166
|
-
return this.#field.fieldName;
|
|
167
|
-
}
|
|
168
|
-
get otherMeta() {
|
|
169
|
-
return this.#field.otherMetadata();
|
|
170
|
-
}
|
|
171
|
-
get joinTableName() {
|
|
172
|
-
return this.#field.joinTableName;
|
|
173
|
-
}
|
|
174
|
-
get columnName() {
|
|
175
|
-
return this.#field.columnNames[0];
|
|
176
|
-
}
|
|
177
|
-
get otherColumnName() {
|
|
178
|
-
return this.#field.columnNames[1];
|
|
179
|
-
}
|
|
180
|
-
get otherFieldName() {
|
|
181
|
-
return this.#field.otherFieldName;
|
|
182
|
-
}
|
|
183
|
-
get hasBeenSet() {
|
|
184
|
-
return true;
|
|
185
|
-
}
|
|
186
|
-
get isPreloaded() {
|
|
187
|
-
return false;
|
|
188
|
-
}
|
|
189
|
-
preload() {
|
|
190
|
-
// No-op for now - could implement if needed
|
|
191
|
-
}
|
|
192
|
-
import(other, _, mapEntities) {
|
|
193
|
-
this.#loaded = mapEntities(other.#loaded);
|
|
194
|
-
this.#loadedMode = other.#loadedMode;
|
|
195
|
-
this.#isLoaded = other.#isLoaded ?? false;
|
|
196
|
-
// Don't set `#isCached b/c we're not registering ourselves with `isLoadedCache` yet; let
|
|
197
|
-
// the first caller to `#doGet` do that if needed.
|
|
198
|
-
}
|
|
199
|
-
toString() {
|
|
200
|
-
return `ReactiveManyToMany(entity: ${this.entity}, fieldName: ${this.fieldName}, otherMeta: ${this.otherMeta.type})`;
|
|
201
|
-
}
|
|
202
|
-
get #isCascadeDelete() {
|
|
203
|
-
return (0, AbstractRelationImpl_1.isCascadeDelete)(this, this.#field.fieldName);
|
|
204
|
-
}
|
|
205
|
-
async #loadFromJoinTable() {
|
|
206
|
-
const { em } = this.entity;
|
|
207
|
-
// Use the existing m2m dataloader by creating a compatible collection-like object
|
|
208
|
-
const key = `${this.columnName}=${this.entity.id}`;
|
|
209
|
-
const result = await (0, manyToManyDataLoader_1.manyToManyDataLoader)(em, this).load(key);
|
|
210
|
-
return result;
|
|
211
|
-
}
|
|
212
|
-
// This is like calling `setField` but for a m2m relation...
|
|
213
|
-
#syncJoinTableRows(newValue) {
|
|
214
|
-
const jr = (0, __1.getEmInternalApi)(this.entity.em).joinRows(this);
|
|
215
|
-
const newSet = new Set(newValue);
|
|
216
|
-
const oldSet = new Set(jr.getOthers(this.columnName, this.entity));
|
|
217
|
-
// Find entities to add (in new but not in old)
|
|
218
|
-
for (const entity of newValue) {
|
|
219
|
-
if (!oldSet.has(entity)) {
|
|
220
|
-
jr.addNew(this, this.entity, entity);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
// Find entities to remove (in old but not in new)
|
|
224
|
-
for (const entity of oldSet) {
|
|
225
|
-
if (!newSet.has(entity)) {
|
|
226
|
-
jr.addRemove(this, this.entity, entity);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
#filterDeleted(entities, opts) {
|
|
231
|
-
return opts?.withDeleted === true
|
|
232
|
-
? [...entities]
|
|
233
|
-
: entities.filter((e) => !e.isDeletedEntity && !e.isSoftDeletedEntity);
|
|
234
|
-
}
|
|
235
|
-
[Relation_1.RelationT] = null;
|
|
236
|
-
[Relation_1.RelationU] = null;
|
|
237
|
-
}
|
|
238
|
-
exports.ReactiveManyToManyImpl = ReactiveManyToManyImpl;
|
|
239
|
-
/** Type guard utility for determining if an entity field is a ReactiveManyToMany. */
|
|
240
|
-
function isReactiveManyToMany(maybeReactiveManyToMany) {
|
|
241
|
-
return maybeReactiveManyToMany instanceof ReactiveManyToManyImpl;
|
|
242
|
-
}
|
|
243
|
-
//# sourceMappingURL=ReactiveManyToMany.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReactiveManyToMany.js","sourceRoot":"","sources":["../../src/relations/ReactiveManyToMany.ts"],"names":[],"mappings":"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"}
|