joist-orm 1.293.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/{drivers/PostgresDriver.d.ts → PostgresDriver.d.ts} +1 -4
- package/build/PostgresDriver.d.ts.map +1 -0
- package/build/{drivers/PostgresDriver.js → PostgresDriver.js} +49 -58
- package/build/PostgresDriver.js.map +1 -0
- 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/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 -127
- package/build/index.d.ts.map +1 -1
- package/build/index.js +8 -282
- 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-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/postgres-driver.d.ts +2 -0
- package/build/postgres-driver.d.ts.map +1 -0
- package/build/postgres-driver.js +7 -0
- package/build/postgres-driver.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/build/trusted.d.ts +5 -0
- package/build/trusted.d.ts.map +1 -0
- package/build/trusted.js +15 -0
- package/build/trusted.js.map +1 -0
- package/package.json +85 -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 -2069
- 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 -307
- 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/PostgresDriver.d.ts.map +0 -1
- package/build/drivers/PostgresDriver.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 -161
- 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/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
package/build/HintTree.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildHintTree = buildHintTree;
|
|
4
|
-
const normalizeHints_1 = require("./normalizeHints");
|
|
5
|
-
/**
|
|
6
|
-
* Given a number of potentially overlapping load hints, i.e. `{ authors: "books" }` and
|
|
7
|
-
* `{ authors: "reviews" }`, combines them into a single `HintNode` tree, with bookkeeping
|
|
8
|
-
* of which entities requested each specific node of the tree.
|
|
9
|
-
*
|
|
10
|
-
* I.e. if we're populating three publishers, two with `{ authors: "books" }` and one with
|
|
11
|
-
* `{ authors: "reviews" }`, we'll end up with a tree like:
|
|
12
|
-
*
|
|
13
|
-
* ```
|
|
14
|
-
* {
|
|
15
|
-
* authors: {
|
|
16
|
-
* entities: [p1, p2, p3],
|
|
17
|
-
* hints: {
|
|
18
|
-
* books: { entities: [p1, p2], hints: {} },
|
|
19
|
-
* reviews: { entities: [p3], hints: {} },
|
|
20
|
-
* }
|
|
21
|
-
* }
|
|
22
|
-
* }
|
|
23
|
-
* ```
|
|
24
|
-
*
|
|
25
|
-
* Which will let us preload `authors` for all three publishers, but `books` only for the
|
|
26
|
-
* first two, and `reviews` only for the third, i.e. we can prevent over-fetching.
|
|
27
|
-
*/
|
|
28
|
-
function buildHintTree(hints) {
|
|
29
|
-
if (Array.isArray(hints)) {
|
|
30
|
-
// This might be a top-level LoadHint string[] like ["books"]
|
|
31
|
-
const isLoadHint = hints.length > 0 && typeof hints[0] === "string";
|
|
32
|
-
if (isLoadHint) {
|
|
33
|
-
const root = { entitiesKind: "none", entities: new Set(), hints: {} };
|
|
34
|
-
addHintNode(root, undefined, hints);
|
|
35
|
-
return root;
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
const entitiesKind = typeof hints[0].entity === "string" ? "ids" : "instances";
|
|
39
|
-
const root = { entitiesKind, entities: new Set(), hints: {} };
|
|
40
|
-
for (const { entity, hint } of hints) {
|
|
41
|
-
addHintNode(root, entity, hint);
|
|
42
|
-
}
|
|
43
|
-
return root;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
const root = { entitiesKind: "none", entities: new Set(), hints: {} };
|
|
48
|
-
addHintNode(root, undefined, hints);
|
|
49
|
-
return root;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
function addHintNode(node, entity, hint) {
|
|
53
|
-
// It's tempting to filter out new entities here, but we need to call `.load()` on their
|
|
54
|
-
// relations to ensure the `.get`s will later work, even if we don't look in the db for them.
|
|
55
|
-
if (entity)
|
|
56
|
-
node.entities.add(entity);
|
|
57
|
-
if (hint) {
|
|
58
|
-
for (const [key, nestedHint] of Object.entries((0, normalizeHints_1.normalizeHint)(hint))) {
|
|
59
|
-
const child = (node.hints[key] ??= { entitiesKind: node.entitiesKind, entities: new Set(), hints: {} });
|
|
60
|
-
addHintNode(child, entity, nestedHint);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=HintTree.js.map
|
package/build/HintTree.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"HintTree.js","sourceRoot":"","sources":["../src/HintTree.ts"],"names":[],"mappings":";;AA2CA,sCAuBC;AA/DD,qDAAiD;AAiBjD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAgB,aAAa,CAC3B,KAAgF;IAEhF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,6DAA6D;QAC7D,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;QACpE,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,GAAgB,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YACnF,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,KAAsB,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAe,CAAC,CAAC,CAAE,WAAqB,CAAC;YACrG,MAAM,IAAI,GAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YAC3E,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;gBACrC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAClC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAgB,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QACnF,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,KAAsB,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAuB,IAAiB,EAAE,MAAqB,EAAE,IAA+B;IAClH,wFAAwF;IACxF,6FAA6F;IAC7F,IAAI,MAAM;QAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAA,8BAAa,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACpE,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YACxG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/build/IndexManager.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { Entity } from "./Entity";
|
|
2
|
-
import { EntityMetadata } from "./EntityMetadata";
|
|
3
|
-
/**
|
|
4
|
-
* IndexManager provides field-based indexing for entity queries to avoid O(n) linear scans of `em.entities`.
|
|
5
|
-
*
|
|
6
|
-
* Key features:
|
|
7
|
-
* - Only indexes entity types with >1000 entities to avoid overhead for small datasets
|
|
8
|
-
* - Supports dual indexing for m2o/poly fields (by ID for saved, by instance for unsaved)
|
|
9
|
-
* - Automatically maintains indexes when fields are updated via setField()
|
|
10
|
-
*/
|
|
11
|
-
export declare class IndexManager {
|
|
12
|
-
#private;
|
|
13
|
-
/** @return if we should index entities of this type/count. */
|
|
14
|
-
shouldIndexType(entityCount: number): boolean;
|
|
15
|
-
/** Visible for testing. */
|
|
16
|
-
isIndexed(tagName: string): boolean;
|
|
17
|
-
/** Enables indexing for an entity type and builds initial indexes. */
|
|
18
|
-
enableIndexingForType<T extends Entity>(meta: EntityMetadata<T>, entities: T[]): void;
|
|
19
|
-
/** Adds an entity to all relevant indexes. */
|
|
20
|
-
maybeIndexEntity(entity: Entity): void;
|
|
21
|
-
/** Updates indexes when a field value changes. */
|
|
22
|
-
maybeUpdateFieldIndex(entity: Entity, fieldName: string, oldValue: any, newValue: any): void;
|
|
23
|
-
/**
|
|
24
|
-
* Finds entities matching the given where clause using indexes.
|
|
25
|
-
* Returns null if the type is not indexed (fallback to linear search).
|
|
26
|
-
*/
|
|
27
|
-
findMatching<T extends Entity>(meta: EntityMetadata<T>, where: any): T[];
|
|
28
|
-
private addEntitiesToIndex;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=IndexManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IndexManager.d.ts","sourceRoot":"","sources":["../src/IndexManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAY,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAe,MAAM,kBAAkB,CAAC;AAW/D;;;;;;;GAOG;AACH,qBAAa,YAAY;;IAGvB,8DAA8D;IAC9D,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAI7C,2BAA2B;IAC3B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAInC,sEAAsE;IACtE,qBAAqB,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,IAAI;IAerF,8CAA8C;IAC9C,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOtC,kDAAkD;IAClD,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,GAAG,IAAI;IAgB5F;;;OAGG;IACH,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,EAAE;IA0BxE,OAAO,CAAC,kBAAkB;CAgB3B"}
|
package/build/IndexManager.js
DELETED
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IndexManager = void 0;
|
|
4
|
-
const Entity_1 = require("./Entity");
|
|
5
|
-
const EntityMetadata_1 = require("./EntityMetadata");
|
|
6
|
-
const relations_1 = require("./relations");
|
|
7
|
-
const utils_1 = require("./utils");
|
|
8
|
-
// The test reproducing a n^2 with n=500 went from 100ms to 50ms if indexed
|
|
9
|
-
const indexThreshold = 500;
|
|
10
|
-
/**
|
|
11
|
-
* IndexManager provides field-based indexing for entity queries to avoid O(n) linear scans of `em.entities`.
|
|
12
|
-
*
|
|
13
|
-
* Key features:
|
|
14
|
-
* - Only indexes entity types with >1000 entities to avoid overhead for small datasets
|
|
15
|
-
* - Supports dual indexing for m2o/poly fields (by ID for saved, by instance for unsaved)
|
|
16
|
-
* - Automatically maintains indexes when fields are updated via setField()
|
|
17
|
-
*/
|
|
18
|
-
class IndexManager {
|
|
19
|
-
#indexes = new Map();
|
|
20
|
-
/** @return if we should index entities of this type/count. */
|
|
21
|
-
shouldIndexType(entityCount) {
|
|
22
|
-
return entityCount >= indexThreshold;
|
|
23
|
-
}
|
|
24
|
-
/** Visible for testing. */
|
|
25
|
-
isIndexed(tagName) {
|
|
26
|
-
return this.#indexes.has(tagName);
|
|
27
|
-
}
|
|
28
|
-
/** Enables indexing for an entity type and builds initial indexes. */
|
|
29
|
-
enableIndexingForType(meta, entities) {
|
|
30
|
-
const { tagName } = meta;
|
|
31
|
-
if (this.#indexes.has(tagName))
|
|
32
|
-
return; // Already indexed
|
|
33
|
-
this.#indexes.set(tagName, new Map());
|
|
34
|
-
// If subtypes are involved, group by each subtype
|
|
35
|
-
if (meta.baseType || meta.subTypes.length > 0) {
|
|
36
|
-
[...(0, utils_1.groupBy)(entities, (e) => (0, EntityMetadata_1.getMetadata)(e)).entries()].forEach(([meta, entities]) => {
|
|
37
|
-
this.addEntitiesToIndex(meta, entities);
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
this.addEntitiesToIndex(meta, entities);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
/** Adds an entity to all relevant indexes. */
|
|
45
|
-
maybeIndexEntity(entity) {
|
|
46
|
-
const meta = (0, EntityMetadata_1.getMetadata)(entity);
|
|
47
|
-
if (this.#indexes.has(meta.tagName)) {
|
|
48
|
-
this.addEntitiesToIndex(meta, [entity]);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
/** Updates indexes when a field value changes. */
|
|
52
|
-
maybeUpdateFieldIndex(entity, fieldName, oldValue, newValue) {
|
|
53
|
-
// Fast return for the common case, which is no indexing
|
|
54
|
-
if (this.#indexes.size === 0)
|
|
55
|
-
return;
|
|
56
|
-
const meta = (0, EntityMetadata_1.getMetadata)(entity);
|
|
57
|
-
const fieldIndexes = this.#indexes.get(meta.tagName);
|
|
58
|
-
if (!fieldIndexes)
|
|
59
|
-
return; // Type not indexed
|
|
60
|
-
const field = meta.allFields[fieldName] ?? fail(`Invalid field ${fieldName}`);
|
|
61
|
-
const fieldIndex = fieldIndexes.get(field.fieldName);
|
|
62
|
-
if (!fieldIndex)
|
|
63
|
-
return; // Field is not indexed
|
|
64
|
-
fieldIndex.remove(oldValue, entity);
|
|
65
|
-
fieldIndex.add(newValue, entity);
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Finds entities matching the given where clause using indexes.
|
|
69
|
-
* Returns null if the type is not indexed (fallback to linear search).
|
|
70
|
-
*/
|
|
71
|
-
findMatching(meta, where) {
|
|
72
|
-
const { tagName } = meta;
|
|
73
|
-
if (!this.#indexes.has(tagName)) {
|
|
74
|
-
throw new Error(`${meta.type} is not indexed`);
|
|
75
|
-
}
|
|
76
|
-
const fieldIndexes = this.#indexes.get(tagName);
|
|
77
|
-
// Start with all entities of the 1st condition, then intersect (AND) each subsequent field in `where`
|
|
78
|
-
let candidates;
|
|
79
|
-
for (const [fieldName, value] of Object.entries(where)) {
|
|
80
|
-
const fieldIndex = fieldIndexes.get(fieldName) ?? new FieldIndex();
|
|
81
|
-
const fieldCandidates = fieldIndex.get(value) ?? new Set();
|
|
82
|
-
if (!candidates) {
|
|
83
|
-
candidates = fieldCandidates; // This is the 1st clause
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
candidates = intersectSets(candidates, fieldCandidates);
|
|
87
|
-
}
|
|
88
|
-
// Early exit if no candidates remain
|
|
89
|
-
if (candidates.size === 0)
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
if (candidates === undefined) {
|
|
93
|
-
throw new Error(`Expected where clause with at least one condition`);
|
|
94
|
-
}
|
|
95
|
-
return [...candidates];
|
|
96
|
-
}
|
|
97
|
-
// `entities` should all be of the exact same subtype
|
|
98
|
-
addEntitiesToIndex(meta, entities) {
|
|
99
|
-
const { tagName } = meta;
|
|
100
|
-
const indexes = this.#indexes.get(tagName);
|
|
101
|
-
// Iterate over each field so we can do a shared fieldIndex lookup
|
|
102
|
-
for (const [fieldName, field] of Object.entries(meta.allFields)) {
|
|
103
|
-
let fieldIndex = indexes.get(fieldName);
|
|
104
|
-
if (!fieldIndex) {
|
|
105
|
-
fieldIndex = new FieldIndex();
|
|
106
|
-
indexes.set(fieldName, fieldIndex);
|
|
107
|
-
}
|
|
108
|
-
for (const entity of entities) {
|
|
109
|
-
const value = getFieldValue(entity, fieldName);
|
|
110
|
-
fieldIndex.add(value, entity);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
exports.IndexManager = IndexManager;
|
|
116
|
-
// Use the same field access pattern as entityMatches
|
|
117
|
-
function getFieldValue(entity, fieldName) {
|
|
118
|
-
const meta = (0, EntityMetadata_1.getMetadata)(entity);
|
|
119
|
-
const field = meta.allFields[fieldName] ?? fail();
|
|
120
|
-
const fn = fieldName;
|
|
121
|
-
switch (field.kind) {
|
|
122
|
-
case "primaryKey":
|
|
123
|
-
return entity.idTaggedMaybe;
|
|
124
|
-
case "enum":
|
|
125
|
-
case "primitive":
|
|
126
|
-
return entity[fn];
|
|
127
|
-
case "m2o":
|
|
128
|
-
case "poly":
|
|
129
|
-
const relation = entity[fn];
|
|
130
|
-
if ((0, relations_1.isLoadedReference)(relation)) {
|
|
131
|
-
return relation.get;
|
|
132
|
-
}
|
|
133
|
-
else if (relation.isSet) {
|
|
134
|
-
return relation.id;
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
return undefined;
|
|
138
|
-
}
|
|
139
|
-
default:
|
|
140
|
-
return undefined;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* For a given field, like `firstName`, holds the reverse index of value `bob` -> entities `[a1, a2]`.
|
|
145
|
-
*
|
|
146
|
-
* This also handles indexes `Entity` values as both instances & IDs, to handle both:
|
|
147
|
-
* - new/unpersisted entities not yet having IDs, and
|
|
148
|
-
* - relations not having loaded their instances yet
|
|
149
|
-
*/
|
|
150
|
-
class FieldIndex {
|
|
151
|
-
#valueToEntities = new Map();
|
|
152
|
-
/** @return entities that have `value` as their current value for this field. */
|
|
153
|
-
get(value) {
|
|
154
|
-
if ((0, Entity_1.isEntity)(value) && value.idTaggedMaybe) {
|
|
155
|
-
// If `value` is a persisted entity like `a:1`, and entities could have indexed their `author_id=a:1` field
|
|
156
|
-
// values as the unloaded "just an a:1 string id" value, before `a:1` was loaded into memory.
|
|
157
|
-
const matchId = this.#valueToEntities.get(value.idTaggedMaybe);
|
|
158
|
-
// But other entities could also have indexes `a:1` as an instance, so go ahead and check both
|
|
159
|
-
const matchInstance = this.#valueToEntities.get(value);
|
|
160
|
-
if (matchId && matchInstance) {
|
|
161
|
-
return new Set([...matchId, ...matchInstance]);
|
|
162
|
-
}
|
|
163
|
-
return matchId ?? matchInstance;
|
|
164
|
-
}
|
|
165
|
-
return this.#valueToEntities.get(value);
|
|
166
|
-
}
|
|
167
|
-
add(value, entity) {
|
|
168
|
-
// If this is an entity, store both the entity itself & its ID
|
|
169
|
-
if ((0, Entity_1.isEntity)(value) && value.idTaggedMaybe) {
|
|
170
|
-
this.doAdd(value.idTaggedMaybe, entity);
|
|
171
|
-
}
|
|
172
|
-
this.doAdd(value, entity);
|
|
173
|
-
}
|
|
174
|
-
remove(value, entity) {
|
|
175
|
-
if ((0, Entity_1.isEntity)(value) && value.idTaggedMaybe) {
|
|
176
|
-
this.doRemove(value.idTaggedMaybe, entity);
|
|
177
|
-
}
|
|
178
|
-
this.doRemove(value, entity);
|
|
179
|
-
}
|
|
180
|
-
doAdd(value, entity) {
|
|
181
|
-
const set = this.#valueToEntities.get(value) ?? new Set();
|
|
182
|
-
if (set.size === 0)
|
|
183
|
-
this.#valueToEntities.set(value, set);
|
|
184
|
-
set.add(entity);
|
|
185
|
-
}
|
|
186
|
-
doRemove(value, entity) {
|
|
187
|
-
const set = this.#valueToEntities.get(value);
|
|
188
|
-
if (set) {
|
|
189
|
-
set.delete(entity);
|
|
190
|
-
if (set.size === 0) {
|
|
191
|
-
this.#valueToEntities.delete(value);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
function intersectSets(set1, set2) {
|
|
197
|
-
const [smaller, larger] = set1.size <= set2.size ? [set1, set2] : [set2, set1];
|
|
198
|
-
const result = new Set();
|
|
199
|
-
for (const item of smaller) {
|
|
200
|
-
if (larger.has(item)) {
|
|
201
|
-
result.add(item);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
return result;
|
|
205
|
-
}
|
|
206
|
-
//# sourceMappingURL=IndexManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IndexManager.js","sourceRoot":"","sources":["../src/IndexManager.ts"],"names":[],"mappings":";;;AAAA,qCAA4C;AAC5C,qDAA+D;AAC/D,2CAA0F;AAC1F,mCAAkC;AAMlC,2EAA2E;AAC3E,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B;;;;;;;GAOG;AACH,MAAa,YAAY;IACd,QAAQ,GAA+C,IAAI,GAAG,EAAE,CAAC;IAE1E,8DAA8D;IAC9D,eAAe,CAAC,WAAmB;QACjC,OAAO,WAAW,IAAI,cAAc,CAAC;IACvC,CAAC;IAED,2BAA2B;IAC3B,SAAS,CAAC,OAAe;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,sEAAsE;IACtE,qBAAqB,CAAmB,IAAuB,EAAE,QAAa;QAC5E,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,CAAC,kBAAkB;QAC1D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAEtC,kDAAkD;QAClD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,CAAC,GAAG,IAAA,eAAO,EAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,4BAAW,EAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE;gBACnF,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,gBAAgB,CAAC,MAAc;QAC7B,MAAM,IAAI,GAAG,IAAA,4BAAW,EAAC,MAAM,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,qBAAqB,CAAC,MAAc,EAAE,SAAiB,EAAE,QAAa,EAAE,QAAa;QACnF,wDAAwD;QACxD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAErC,MAAM,IAAI,GAAG,IAAA,4BAAW,EAAC,MAAM,CAAC,CAAC;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY;YAAE,OAAO,CAAC,mBAAmB;QAE9C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU;YAAE,OAAO,CAAC,uBAAuB;QAEhD,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,YAAY,CAAmB,IAAuB,EAAE,KAAU;QAChE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,iBAAiB,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;QACjD,sGAAsG;QACtG,IAAI,UAAmC,CAAC;QACxC,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC;YACnE,MAAM,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;YAC3D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,UAAU,GAAG,eAAe,CAAC,CAAC,yBAAyB;YACzD,CAAC;iBAAM,CAAC;gBACN,UAAU,GAAG,aAAa,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;YAC1D,CAAC;YACD,qCAAqC;YACrC,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC;gBAAE,MAAM;QACnC,CAAC;QACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,CAAC,GAAG,UAAU,CAAQ,CAAC;IAChC,CAAC;IAED,qDAAqD;IAC7C,kBAAkB,CAAC,IAAoB,EAAE,QAAkB;QACjE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;QAC5C,kEAAkE;QAClE,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAChE,IAAI,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YACrC,CAAC;YACD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC/C,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;CACF;AApGD,oCAoGC;AAED,qDAAqD;AACrD,SAAS,aAAa,CAAC,MAAc,EAAE,SAAiB;IACtD,MAAM,IAAI,GAAG,IAAA,4BAAW,EAAC,MAAM,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;IAElD,MAAM,EAAE,GAAG,SAAyB,CAAC;IACrC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,YAAY;YACf,OAAO,MAAM,CAAC,aAAa,CAAC;QAC9B,KAAK,MAAM,CAAC;QACZ,KAAK,WAAW;YACd,OAAQ,MAAc,CAAC,EAAE,CAAC,CAAC;QAC7B,KAAK,KAAK,CAAC;QACX,KAAK,MAAM;YACT,MAAM,QAAQ,GAAI,MAAc,CAAC,EAAE,CAEO,CAAC;YAC3C,IAAI,IAAA,6BAAiB,EAAC,QAAQ,CAAC,EAAE,CAAC;gBAChC,OAAO,QAAQ,CAAC,GAAG,CAAC;YACtB,CAAC;iBAAM,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAC1B,OAAO,QAAQ,CAAC,EAAE,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,OAAO,SAAS,CAAC;YACnB,CAAC;QACH;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU;IACL,gBAAgB,GAAG,IAAI,GAAG,EAA2B,CAAC;IAE/D,gFAAgF;IAChF,GAAG,CAAC,KAAU;QACZ,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YAC3C,2GAA2G;YAC3G,6FAA6F;YAC7F,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC/D,8FAA8F;YAC9F,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvD,IAAI,OAAO,IAAI,aAAa,EAAE,CAAC;gBAC7B,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,OAAO,IAAI,aAAa,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,GAAG,CAAC,KAAU,EAAE,MAAc;QAC5B,8DAA8D;QAC9D,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,KAAU,EAAE,MAAc;QAC/B,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,KAAU,EAAE,MAAc;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QAC1D,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;YAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC1D,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAEO,QAAQ,CAAC,KAAU,EAAE,MAAc;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACnB,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,SAAS,aAAa,CAAI,IAAY,EAAE,IAAY;IAClD,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAK,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/build/InstanceData.d.ts
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { Entity } from "./Entity";
|
|
2
|
-
import { EntityManager } from "./EntityManager";
|
|
3
|
-
import { EntityMetadata } from "./EntityMetadata";
|
|
4
|
-
/** The `#orm` metadata field we track on each instance. */
|
|
5
|
-
export declare class InstanceData {
|
|
6
|
-
#private;
|
|
7
|
-
/** All entities must be associated to an `EntityManager` to handle lazy loading/etc. */
|
|
8
|
-
readonly em: EntityManager;
|
|
9
|
-
/** A pointer to our entity type's metadata. */
|
|
10
|
-
readonly metadata: EntityMetadata;
|
|
11
|
-
/** A bag for our lazy-initialized relations. */
|
|
12
|
-
relations: Record<any, any>;
|
|
13
|
-
/** The database-value of columns, as-is returned from the driver. */
|
|
14
|
-
row: Record<string, any>;
|
|
15
|
-
/** The domain-value of fields, lazily converted (if needed) on read from the database columns. */
|
|
16
|
-
data: Record<string, any>;
|
|
17
|
-
/** A bag to keep the original values, lazily populated as fields are mutated. */
|
|
18
|
-
originalData: Record<any, any>;
|
|
19
|
-
/** A bag to keep the flushed-to-database values, only for ReactiveQueryField reactivity. */
|
|
20
|
-
flushedData: Record<any, any> | undefined;
|
|
21
|
-
/** The `a#1`, `a#2` index if we're an em.create-d entity. We never unset this, to keep ids stable across flushes. */
|
|
22
|
-
createId: string | undefined;
|
|
23
|
-
/** Whether our entity should flush regardless of any other changes. */
|
|
24
|
-
isTouched: boolean;
|
|
25
|
-
/** Creates the `#orm` field. */
|
|
26
|
-
constructor(em: EntityManager, metadata: EntityMetadata, isNew: boolean);
|
|
27
|
-
/** If `em.flush` has detected a dirty RQF, reset our internal dirty state, w/o reseting our external-dirty state. */
|
|
28
|
-
resetForRqfLoop(): void;
|
|
29
|
-
resetAfterFlushed(): void;
|
|
30
|
-
/** Our public-facing `isNewEntity`. */
|
|
31
|
-
get isNewEntity(): boolean;
|
|
32
|
-
/** Our public-facing `isDeletedEntity`. */
|
|
33
|
-
get isDeletedEntity(): boolean;
|
|
34
|
-
/** Our public-facing `isDirtyEntity`. */
|
|
35
|
-
get isDirtyEntity(): boolean;
|
|
36
|
-
/** This is our internal "is pending flush", which is aware of RQF micro-flush loops. */
|
|
37
|
-
get pendingOperation(): "insert" | "update" | "delete" | "none" | "created-then-deleted";
|
|
38
|
-
get changedFields(): string[];
|
|
39
|
-
/** Called when an `em.load` tries to find the entity and it's just gone from the db. */
|
|
40
|
-
markDeletedBecauseNotFound(): void;
|
|
41
|
-
/** Called by `em.delete`, returns true if this is new information. */
|
|
42
|
-
markDeleted(entity: Entity): boolean;
|
|
43
|
-
fixupCreatedThenDeleted(): void;
|
|
44
|
-
get isDeletedAndFlushed(): boolean;
|
|
45
|
-
/**
|
|
46
|
-
* Returns true if the entity is new or was new in this EM.
|
|
47
|
-
*
|
|
48
|
-
* This is primarily used for lazy-initializing relations, i.e. if:
|
|
49
|
-
*
|
|
50
|
-
* - A new `Author` is created
|
|
51
|
-
* - We `em.flush` the author to the database
|
|
52
|
-
* - Then `a1.books` is accessed for the first time
|
|
53
|
-
*
|
|
54
|
-
* We can have a high-confidence that `a1` has no books, because we just
|
|
55
|
-
* created it, so we can set the OneToManyCollection to loaded.
|
|
56
|
-
*/
|
|
57
|
-
get isOrWasNew(): boolean;
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=InstanceData.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InstanceData.d.ts","sourceRoot":"","sources":["../src/InstanceData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,aAAa,EAAoB,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,2DAA2D;AAC3D,qBAAa,YAAY;;IACvB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC;IAC3B,+CAA+C;IAC/C,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAM;IACjC,qEAAqE;IACrE,GAAG,EAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,kGAAkG;IAClG,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,iFAAiF;IACjF,YAAY,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAM;IACpC,4FAA4F;IAC5F,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;IAW1C,qHAAqH;IACrH,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,uEAAuE;IACvE,SAAS,EAAE,OAAO,CAAS;IAE3B,gCAAgC;gBACpB,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO;IAevE,qHAAqH;IACrH,eAAe;IAMf,iBAAiB;IAYjB,uCAAuC;IACvC,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,2CAA2C;IAC3C,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,yCAAyC;IACzC,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED,wFAAwF;IACxF,IAAI,gBAAgB,IAAI,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,sBAAsB,CAmBvF;IAED,IAAI,aAAa,IAAI,MAAM,EAAE,CAE5B;IAED,wFAAwF;IACxF,0BAA0B,IAAI,IAAI;IAIlC,sEAAsE;IACtE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAiBpC,uBAAuB,IAAI,IAAI;IAK/B,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED;;;;;;;;;;;OAWG;IACH,IAAI,UAAU,IAAI,OAAO,CAGxB;CACF"}
|
package/build/InstanceData.js
DELETED
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InstanceData = void 0;
|
|
4
|
-
const EntityManager_1 = require("./EntityManager");
|
|
5
|
-
/** The `#orm` metadata field we track on each instance. */
|
|
6
|
-
class InstanceData {
|
|
7
|
-
/** All entities must be associated to an `EntityManager` to handle lazy loading/etc. */
|
|
8
|
-
em;
|
|
9
|
-
/** A pointer to our entity type's metadata. */
|
|
10
|
-
metadata;
|
|
11
|
-
/** A bag for our lazy-initialized relations. */
|
|
12
|
-
relations = {};
|
|
13
|
-
/** The database-value of columns, as-is returned from the driver. */
|
|
14
|
-
row;
|
|
15
|
-
/** The domain-value of fields, lazily converted (if needed) on read from the database columns. */
|
|
16
|
-
data;
|
|
17
|
-
/** A bag to keep the original values, lazily populated as fields are mutated. */
|
|
18
|
-
originalData = {};
|
|
19
|
-
/** A bag to keep the flushed-to-database values, only for ReactiveQueryField reactivity. */
|
|
20
|
-
flushedData;
|
|
21
|
-
/**
|
|
22
|
-
* Whether our entity has been deleted or not.
|
|
23
|
-
*
|
|
24
|
-
* - `pending` means we've been marked for deletion via `em.delete` but not issued a `DELETE`
|
|
25
|
-
* - `flushed` means we've flushed a `DELETE` but `em.flush` hasn't fully completed yet, likely due to ReactiveQueryField calcs
|
|
26
|
-
* - `deleted` means we've been flushed and `em.flush` has completed
|
|
27
|
-
*/
|
|
28
|
-
#deleted;
|
|
29
|
-
/** Whether our entity is new or not. */
|
|
30
|
-
#new;
|
|
31
|
-
/** The `a#1`, `a#2` index if we're an em.create-d entity. We never unset this, to keep ids stable across flushes. */
|
|
32
|
-
createId;
|
|
33
|
-
/** Whether our entity should flush regardless of any other changes. */
|
|
34
|
-
isTouched = false;
|
|
35
|
-
/** Creates the `#orm` field. */
|
|
36
|
-
constructor(em, metadata, isNew) {
|
|
37
|
-
this.em = em;
|
|
38
|
-
this.metadata = metadata;
|
|
39
|
-
if (isNew) {
|
|
40
|
-
this.#new = Operation.Pending;
|
|
41
|
-
this.data = {};
|
|
42
|
-
this.row = {};
|
|
43
|
-
this.flushedData = undefined;
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
this.#new = undefined;
|
|
47
|
-
this.data = {};
|
|
48
|
-
this.flushedData = undefined;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
/** If `em.flush` has detected a dirty RQF, reset our internal dirty state, w/o reseting our external-dirty state. */
|
|
52
|
-
resetForRqfLoop() {
|
|
53
|
-
this.flushedData = {};
|
|
54
|
-
if (this.#new === Operation.Pending)
|
|
55
|
-
this.#new = Operation.Flushed;
|
|
56
|
-
if (this.#deleted === Operation.Pending)
|
|
57
|
-
this.#deleted = Operation.Flushed;
|
|
58
|
-
}
|
|
59
|
-
resetAfterFlushed() {
|
|
60
|
-
this.originalData = {};
|
|
61
|
-
this.flushedData = undefined;
|
|
62
|
-
this.isTouched = false;
|
|
63
|
-
if (this.#new === Operation.Pending || this.#new === Operation.Flushed) {
|
|
64
|
-
this.#new = Operation.Complete;
|
|
65
|
-
}
|
|
66
|
-
if (this.#deleted === Operation.Pending || this.#deleted === Operation.Flushed) {
|
|
67
|
-
this.#deleted = Operation.Complete;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
/** Our public-facing `isNewEntity`. */
|
|
71
|
-
get isNewEntity() {
|
|
72
|
-
return this.#new !== undefined && this.#new !== Operation.Complete;
|
|
73
|
-
}
|
|
74
|
-
/** Our public-facing `isDeletedEntity`. */
|
|
75
|
-
get isDeletedEntity() {
|
|
76
|
-
return this.#deleted !== undefined;
|
|
77
|
-
}
|
|
78
|
-
/** Our public-facing `isDirtyEntity`. */
|
|
79
|
-
get isDirtyEntity() {
|
|
80
|
-
return Object.keys(this.originalData).length > 0;
|
|
81
|
-
}
|
|
82
|
-
/** This is our internal "is pending flush", which is aware of RQF micro-flush loops. */
|
|
83
|
-
get pendingOperation() {
|
|
84
|
-
if (this.#deleted !== undefined) {
|
|
85
|
-
// Mark entities that were created and them immediately `em.delete`-d; granted this is
|
|
86
|
-
// probably rare, but we shouldn't run hooks or have the driver try and delete these.
|
|
87
|
-
// Note that we return them, instead of skipping entirely, so that fixupCreatedThenDeleted
|
|
88
|
-
// can later be called.
|
|
89
|
-
return this.#deleted === Operation.Pending && this.#new === Operation.Pending
|
|
90
|
-
? "created-then-deleted"
|
|
91
|
-
: this.#deleted === Operation.Pending
|
|
92
|
-
? "delete"
|
|
93
|
-
: "none";
|
|
94
|
-
}
|
|
95
|
-
else if (this.#new === Operation.Pending) {
|
|
96
|
-
// Per ^, if `#new === flushed`, we fall through to check if micro-flush UPDATEs are required
|
|
97
|
-
return "insert";
|
|
98
|
-
}
|
|
99
|
-
else if (this.flushedData) {
|
|
100
|
-
return Object.keys(this.flushedData).length > 0 ? "update" : "none";
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
return this.isTouched || Object.keys(this.originalData).length > 0 ? "update" : "none";
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
get changedFields() {
|
|
107
|
-
return this.flushedData ? Object.keys(this.flushedData) : Object.keys(this.originalData);
|
|
108
|
-
}
|
|
109
|
-
/** Called when an `em.load` tries to find the entity and it's just gone from the db. */
|
|
110
|
-
markDeletedBecauseNotFound() {
|
|
111
|
-
this.#deleted = Operation.Complete;
|
|
112
|
-
}
|
|
113
|
-
/** Called by `em.delete`, returns true if this is new information. */
|
|
114
|
-
markDeleted(entity) {
|
|
115
|
-
if (this.#deleted === undefined) {
|
|
116
|
-
// Let any OneToManyCollection.get caches know that they should recalc (i.e. their filterDeleted logic)
|
|
117
|
-
// by asserting the `deleteBook.author` field is changing.
|
|
118
|
-
//
|
|
119
|
-
// Technically, the o2m caches use the "naive" cache, so we don't really need to pass along the field.
|
|
120
|
-
for (const field of Object.values(this.metadata.allFields)) {
|
|
121
|
-
if (field.kind === "m2o") {
|
|
122
|
-
(0, EntityManager_1.getEmInternalApi)(this.em).isLoadedCache.resetIsLoaded(entity, field.fieldName);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
this.#deleted = Operation.Pending;
|
|
126
|
-
return true;
|
|
127
|
-
}
|
|
128
|
-
return false;
|
|
129
|
-
}
|
|
130
|
-
fixupCreatedThenDeleted() {
|
|
131
|
-
// Ideally we could do this via `resetAfterFlushed`?
|
|
132
|
-
this.#deleted = Operation.Complete;
|
|
133
|
-
}
|
|
134
|
-
get isDeletedAndFlushed() {
|
|
135
|
-
return this.#deleted === Operation.Complete;
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Returns true if the entity is new or was new in this EM.
|
|
139
|
-
*
|
|
140
|
-
* This is primarily used for lazy-initializing relations, i.e. if:
|
|
141
|
-
*
|
|
142
|
-
* - A new `Author` is created
|
|
143
|
-
* - We `em.flush` the author to the database
|
|
144
|
-
* - Then `a1.books` is accessed for the first time
|
|
145
|
-
*
|
|
146
|
-
* We can have a high-confidence that `a1` has no books, because we just
|
|
147
|
-
* created it, so we can set the OneToManyCollection to loaded.
|
|
148
|
-
*/
|
|
149
|
-
get isOrWasNew() {
|
|
150
|
-
// #new will be left as `complete`
|
|
151
|
-
return this.#new !== undefined;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
exports.InstanceData = InstanceData;
|
|
155
|
-
/** An enum to track our insert/delete state progression. */
|
|
156
|
-
var Operation;
|
|
157
|
-
(function (Operation) {
|
|
158
|
-
Operation[Operation["Pending"] = 1] = "Pending";
|
|
159
|
-
Operation[Operation["Flushed"] = 2] = "Flushed";
|
|
160
|
-
Operation[Operation["Complete"] = 3] = "Complete";
|
|
161
|
-
})(Operation || (Operation = {}));
|
|
162
|
-
//# sourceMappingURL=InstanceData.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InstanceData.js","sourceRoot":"","sources":["../src/InstanceData.ts"],"names":[],"mappings":"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"}
|
package/build/IsLoadedCache.d.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { Entity } from "./Entity";
|
|
2
|
-
/**
|
|
3
|
-
* Interface for our relations that have dynamic & expensive `isLoaded` checks.
|
|
4
|
-
*
|
|
5
|
-
* ...and also `OneToManyCollection.get` calls.
|
|
6
|
-
*
|
|
7
|
-
* The primary m2o/o2m/m2m relations all have trivial `isLoaded` checks--are they
|
|
8
|
-
* loaded or not.
|
|
9
|
-
*
|
|
10
|
-
* But for "composite relations", i.e. a ReactiveField or ReactiveRelation whose
|
|
11
|
-
* "load-ness" is calculated by evaluating its load hint across a subgraph of entities
|
|
12
|
-
* & relations, load-ness can be more dynamic true-then-false, as its subgraph changes.
|
|
13
|
-
*
|
|
14
|
-
* To avoid performance issues (see https://github.com/joist-orm/joist-orm/issues/1166),
|
|
15
|
-
* we cache this dynamic/expensive `isLoaded` checks, and then do targeted, reactivity-driven
|
|
16
|
-
* cache invalidation whenever relations are mutated (via a hook in `setField`).
|
|
17
|
-
*/
|
|
18
|
-
export interface IsLoadedCachable {
|
|
19
|
-
entity: Entity;
|
|
20
|
-
fieldName: string;
|
|
21
|
-
isLoaded: boolean;
|
|
22
|
-
resetIsLoaded(): void;
|
|
23
|
-
}
|
|
24
|
-
export declare class IsLoadedCache {
|
|
25
|
-
#private;
|
|
26
|
-
/** Adds a ReactiveField/Relation/Collection to be invalidated when its dependencies change. */
|
|
27
|
-
add(target: IsLoadedCachable): void;
|
|
28
|
-
addNaive(target: IsLoadedCachable): void;
|
|
29
|
-
/** Resets any isLoaded caches that depend on `entity.fieldName`. */
|
|
30
|
-
resetIsLoaded(entity: Entity, fieldName: string): void;
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=IsLoadedCache.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IsLoadedCache.d.ts","sourceRoot":"","sources":["../src/IsLoadedCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIlC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,IAAI,IAAI,CAAC;CACvB;AAED,qBAAa,aAAa;;IAWxB,+FAA+F;IAC/F,GAAG,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAOnC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAKxC,oEAAoE;IACpE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;CA+CvD"}
|