joist-orm 1.294.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 -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-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/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 -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/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 -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/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/temporalMappers.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.zonedDateTimeMapper = exports.plainDateTimeMapper = exports.plainTimeMapper = exports.plainDateMapper = void 0;
|
|
4
|
-
const temporal_1 = require("./temporal");
|
|
5
|
-
const utils_1 = require("./utils");
|
|
6
|
-
const { Temporal: t } = (0, temporal_1.maybeRequireTemporal)() ?? {};
|
|
7
|
-
const temporalNotAvailable = {
|
|
8
|
-
fromDb: () => (0, utils_1.fail)("Temporal not available"),
|
|
9
|
-
toDb: () => (0, utils_1.fail)("Temporal not available"),
|
|
10
|
-
};
|
|
11
|
-
/** Converts Postgres `DATE` to/from Temporal.PlainDate. */
|
|
12
|
-
exports.plainDateMapper = t
|
|
13
|
-
? {
|
|
14
|
-
fromDb: t.PlainDate.from,
|
|
15
|
-
toDb: (p) => p.toString(),
|
|
16
|
-
}
|
|
17
|
-
: temporalNotAvailable;
|
|
18
|
-
/** Converts Postgres `TIME` to/from Temporal.PlainTime. */
|
|
19
|
-
exports.plainTimeMapper = t
|
|
20
|
-
? {
|
|
21
|
-
fromDb: t.PlainTime.from,
|
|
22
|
-
toDb: (pt) => pt.toString(),
|
|
23
|
-
}
|
|
24
|
-
: temporalNotAvailable;
|
|
25
|
-
/** Converts Postgres `TIMESTAMP` / `TIMESTAMP WITHOUT TIME ZONE` to/from Temporal.PlainDateTime. */
|
|
26
|
-
exports.plainDateTimeMapper = t
|
|
27
|
-
? {
|
|
28
|
-
// Should look like `2018-01-01 10:00:00`
|
|
29
|
-
fromDb: (s) => t.PlainDateTime.from(s),
|
|
30
|
-
toDb: (p) => p.toString(),
|
|
31
|
-
}
|
|
32
|
-
: temporalNotAvailable;
|
|
33
|
-
/**
|
|
34
|
-
* Converts Postgres `TIMESTAMPTZ`, `TIMESTAMPTZ WITH TIME ZONE` to/from Temporal.ZonedDateTime.
|
|
35
|
-
*
|
|
36
|
-
* Specifically, Postgres uses ISO 8601, which Temporal supports as well, except that PG ouputs a space instead of `T`
|
|
37
|
-
* between the date/time for output.
|
|
38
|
-
*
|
|
39
|
-
* Additionally, `Temporal.ZonedDateTime.from` expects a time zone literal name to be supplied as part of the string,
|
|
40
|
-
* but this is not stored by postgres.
|
|
41
|
-
*
|
|
42
|
-
* As such, we parse the offset and append it to string passed to `from` as the time zone. This means that if we did a
|
|
43
|
-
* round trip of generating a db value then parsing it, then it may not strictly equal the original zdt.
|
|
44
|
-
*
|
|
45
|
-
* Finally, PG stores dates as UTC and converts them to its local time zone for output, so we could get any offset
|
|
46
|
-
* theoretically. If, somehow, we don't get an offset, then we assume UTC.
|
|
47
|
-
*/
|
|
48
|
-
exports.zonedDateTimeMapper = t
|
|
49
|
-
? {
|
|
50
|
-
// Produce a ZDT from a PG output like "2021-01-01 12:00:00-05:00"
|
|
51
|
-
fromDb: (s) => {
|
|
52
|
-
const [offset] = s.match(/([+-]\d{2}(?::?\d{2})?)$/) ?? [];
|
|
53
|
-
return t.ZonedDateTime.from(`${s}[${!offset || /^\+00(:?00)?$/.test(offset) ? "UTC" : offset}]`);
|
|
54
|
-
},
|
|
55
|
-
// Match a PG `TIMESTAMPTZ` input format, i.e. "2021-01-01T12:00:00-05:00"
|
|
56
|
-
toDb: (zdt) => zdt.toString({ timeZoneName: "never" }),
|
|
57
|
-
}
|
|
58
|
-
: temporalNotAvailable;
|
|
59
|
-
//# sourceMappingURL=temporalMappers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"temporalMappers.js","sourceRoot":"","sources":["../src/temporalMappers.ts"],"names":[],"mappings":";;;AAEA,yCAAkD;AAClD,mCAA+B;AAE/B,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,IAAA,+BAAoB,GAAE,IAAI,EAAE,CAAC;AACrD,MAAM,oBAAoB,GAAG;IAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,IAAA,YAAI,EAAC,wBAAwB,CAAC;IAC5C,IAAI,EAAE,GAAG,EAAE,CAAC,IAAA,YAAI,EAAC,wBAAwB,CAAC;CAC3C,CAAC;AAEF,2DAA2D;AAC9C,QAAA,eAAe,GAA4C,CAAC;IACvE,CAAC,CAAC;QACE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;KAC1B;IACH,CAAC,CAAC,oBAAoB,CAAC;AAEzB,2DAA2D;AAC9C,QAAA,eAAe,GAA4C,CAAC;IACvE,CAAC,CAAC;QACE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI;QACxB,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE;KAC5B;IACH,CAAC,CAAC,oBAAoB,CAAC;AAEzB,oGAAoG;AACvF,QAAA,mBAAmB,GAAgD,CAAC;IAC/E,CAAC,CAAC;QACE,yCAAyC;QACzC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;KAC1B;IACH,CAAC,CAAC,oBAAoB,CAAC;AAEzB;;;;;;;;;;;;;;GAcG;AACU,QAAA,mBAAmB,GAAgD,CAAC;IAC/E,CAAC,CAAC;QACE,kEAAkE;QAClE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACZ,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC;YAC3D,OAAO,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACnG,CAAC;QACD,0EAA0E;QAC1E,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;KACvD;IACH,CAAC,CAAC,oBAAoB,CAAC"}
|
package/build/typeMap.d.ts
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { Entity } from "./Entity";
|
|
2
|
-
import { EntityManager } from "./EntityManager";
|
|
3
|
-
/**
|
|
4
|
-
* Provides a container for entities to attach their application-specific types.
|
|
5
|
-
*
|
|
6
|
-
* Downstream applications inject their types into this map, so we can look them up
|
|
7
|
-
* via types like `OptsOf<Author>` or `FilterOf<Author>`, by including a `declare module`
|
|
8
|
-
* snippet in each entity's `...Codegen` file.
|
|
9
|
-
*
|
|
10
|
-
* ```ts
|
|
11
|
-
* declare module "joist-orm" {
|
|
12
|
-
* interface TypeMap {
|
|
13
|
-
* Author: { optsType: AuthorOpts; fieldsType: AuthorFields; filterType: AuthorFilter };
|
|
14
|
-
* }
|
|
15
|
-
* }
|
|
16
|
-
* ```
|
|
17
|
-
*
|
|
18
|
-
* Inspired by Tanstack Router, which uses a similar `declare module` approach.
|
|
19
|
-
*/
|
|
20
|
-
export interface TypeMap {
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Returns a key like `"Author"` or `"SmallPublisher"` for looking up types in the `TypeMap`.
|
|
24
|
-
*
|
|
25
|
-
* This is currently hard-coded to look for two levels of inheritance: we probe for the subtype
|
|
26
|
-
* key (1) first, and then fallback on the base type key (0) that all entities will have.
|
|
27
|
-
*/
|
|
28
|
-
type TypeMapKey<T> = T extends {
|
|
29
|
-
__type: {
|
|
30
|
-
1: infer K;
|
|
31
|
-
};
|
|
32
|
-
} ? K : T extends {
|
|
33
|
-
__type: {
|
|
34
|
-
0: infer K;
|
|
35
|
-
};
|
|
36
|
-
} ? K : never;
|
|
37
|
-
/** A helper type to look up `U` in the `TypeMap` for a given entity type `T`. */
|
|
38
|
-
export type TypeMapEntry<T, U extends string> = TypeMapKey<T> extends infer K ? K extends keyof TypeMap ? U extends keyof TypeMap[K] ? TypeMap[K][U] : unknown : unknown : unknown;
|
|
39
|
-
/** Return the `FooOpts` type for the given `Foo` entity. */
|
|
40
|
-
export type OptsOf<T> = TypeMapEntry<T, "optsType">;
|
|
41
|
-
/** Return the `FooFields` type for the given `Foo` entity. */
|
|
42
|
-
export type FieldsOf<T> = TypeMapEntry<T, "fieldsType">;
|
|
43
|
-
export type OptIdsOf<T> = TypeMapEntry<T, "optIdsType">;
|
|
44
|
-
/** Pulls the entity query type out of a given entity type T. */
|
|
45
|
-
export type FilterOf<T> = TypeMapEntry<T, "filterType">;
|
|
46
|
-
/** Pulls the entity GraphQL query type out of a given entity type T. */
|
|
47
|
-
export type GraphQLFilterOf<T> = TypeMapEntry<T, "gqlFilterType">;
|
|
48
|
-
/** Pulls the entity order type out of a given entity type T. */
|
|
49
|
-
export type OrderOf<T> = TypeMapEntry<T, "orderType">;
|
|
50
|
-
/** Returns the factory "extras" type, like `withDerivedField`. */
|
|
51
|
-
export type FactoryExtrasOf<T> = TypeMapEntry<T, "factoryExtrasType">;
|
|
52
|
-
/**
|
|
53
|
-
* Returns the opts of the entity's `newEntity` factory method, as exists in the actual file.
|
|
54
|
-
*
|
|
55
|
-
* This is because `FactoryOpts` is a set of defaults, but the user can customize it if they want.
|
|
56
|
-
*/
|
|
57
|
-
export type ActualFactoryOpts<T> = TypeMapEntry<T, "factoryOptsType">;
|
|
58
|
-
/** Return the `Foo` type for a given `Foo` entity constructor. */
|
|
59
|
-
export type EntityOf<C> = C extends new (em: EntityManager, opts: any) => infer T ? T : never;
|
|
60
|
-
type RelationsKeysOf<T> = {
|
|
61
|
-
[K in keyof OptsOf<T>]: OptsOf<T>[K] extends Entity[] | undefined ? K : never;
|
|
62
|
-
}[keyof OptsOf<T>];
|
|
63
|
-
/** Return the Relation keys from `FooOpt` type, given a `Foo` entity */
|
|
64
|
-
export type RelationsOf<T extends Entity> = {
|
|
65
|
-
[K in RelationsKeysOf<T>]: NonNullable<OptsOf<T>[K]>;
|
|
66
|
-
};
|
|
67
|
-
export {};
|
|
68
|
-
//# sourceMappingURL=typeMap.d.ts.map
|
package/build/typeMap.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typeMap.d.ts","sourceRoot":"","sources":["../src/typeMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,OAAO;CAAG;AAE3B;;;;;GAKG;AACH,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC,CAAA;KAAE,CAAA;CAAE,GAAG,CAAC,GAAG,CAAC,SAAS;IAAE,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC,CAAA;KAAE,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAEjH,iFAAiF;AACjF,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,IAC1C,UAAU,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GACzB,CAAC,SAAS,MAAM,OAAO,GACrB,CAAC,SAAS,MAAM,OAAO,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACb,OAAO,GACT,OAAO,GACT,OAAO,CAAC;AAEd,4DAA4D;AAC5D,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAEpD,8DAA8D;AAC9D,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAExD,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAExD,gEAAgE;AAChE,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAExD,wEAAwE;AACxE,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;AAElE,gEAAgE;AAChE,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAEtD,kEAAkE;AAClE,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAEtE;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAEtE,kEAAkE;AAClE,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE9F,KAAK,eAAe,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,CAAC,GAAG,KAAK;CAC9E,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnB,wEAAwE;AACxE,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,IAAI;KACzC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrD,CAAC"}
|
package/build/typeMap.js
DELETED
package/build/typeMap.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typeMap.js","sourceRoot":"","sources":["../src/typeMap.ts"],"names":[],"mappings":""}
|
package/build/unnest.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { OpColumn } from "./drivers/EntityWriter";
|
|
2
|
-
import { ParsedCteClause } from "./QueryParser";
|
|
3
|
-
/**
|
|
4
|
-
* Creates a CTE named `alias` that bulk-injects the `columnValues` into a SQL query.
|
|
5
|
-
*
|
|
6
|
-
* I.e. `columns = [first_name, last_name]` means columnValues would be all first names,
|
|
7
|
-
* then all last names, i.e.`[["f1","f2"], ["l1","l2"]]`.
|
|
8
|
-
*
|
|
9
|
-
* Note that `columnValues` will be mutated if any array columns need to be made rectangular.
|
|
10
|
-
*/
|
|
11
|
-
export declare function buildUnnestCte(alias: string, columns: OpColumn[], columnValues: any[][]): ParsedCteClause;
|
|
12
|
-
export declare function ensureRectangularArraySizes(columns: OpColumn[], columnValues: any[][]): void;
|
|
13
|
-
//# sourceMappingURL=unnest.d.ts.map
|
package/build/unnest.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unnest.d.ts","sourceRoot":"","sources":["../src/unnest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,GAAG,eAAe,CAoBzG;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,CAW5F"}
|
package/build/unnest.js
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildUnnestCte = buildUnnestCte;
|
|
4
|
-
exports.ensureRectangularArraySizes = ensureRectangularArraySizes;
|
|
5
|
-
/**
|
|
6
|
-
* Creates a CTE named `alias` that bulk-injects the `columnValues` into a SQL query.
|
|
7
|
-
*
|
|
8
|
-
* I.e. `columns = [first_name, last_name]` means columnValues would be all first names,
|
|
9
|
-
* then all last names, i.e.`[["f1","f2"], ["l1","l2"]]`.
|
|
10
|
-
*
|
|
11
|
-
* Note that `columnValues` will be mutated if any array columns need to be made rectangular.
|
|
12
|
-
*/
|
|
13
|
-
function buildUnnestCte(alias, columns, columnValues) {
|
|
14
|
-
// Make any arrays-of-arrays rectangular by filling them with nulls
|
|
15
|
-
ensureRectangularArraySizes(columns, columnValues);
|
|
16
|
-
// Use unnest or unnest_arrays depending on whether the column is an array column
|
|
17
|
-
const selects = columns.map((c) => {
|
|
18
|
-
if (c.dbType.endsWith("[]")) {
|
|
19
|
-
if (c.isNullableArray) {
|
|
20
|
-
return `unnest_arrays(?::${c.dbType}[], true)`;
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
return `unnest_arrays(?::${c.dbType}[])`;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
return `unnest(?::${c.dbType}[])`;
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
return {
|
|
31
|
-
alias,
|
|
32
|
-
columns,
|
|
33
|
-
query: { kind: "raw", sql: `SELECT ${selects.join(", ")}`, bindings: columnValues },
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
function ensureRectangularArraySizes(columns, columnValues) {
|
|
37
|
-
for (let i = 0; i < columns.length; i++) {
|
|
38
|
-
const column = columns[i];
|
|
39
|
-
if (column.dbType.endsWith("[]")) {
|
|
40
|
-
const values = columnValues[i];
|
|
41
|
-
const fillTo = findArrayMaxSize(values);
|
|
42
|
-
for (let j = 0; j < values.length; j++) {
|
|
43
|
-
values[j] = fillArrayWithNulls(column, values[j], fillTo);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
function findArrayMaxSize(columnValues) {
|
|
49
|
-
let max = 1; // postgres really doesn't like `{{}}` so always send at least 1 element
|
|
50
|
-
for (let i = 0; i < columnValues.length; i++)
|
|
51
|
-
max = Math.max(max, columnValues[i]?.length ?? 0);
|
|
52
|
-
return max;
|
|
53
|
-
}
|
|
54
|
-
// Because postgres array-of-arrays must be rectangular, we fill all arrays up the same max size
|
|
55
|
-
// to put on the wire, and then later strip the padded nulls during the unnest_arrays call.
|
|
56
|
-
function fillArrayWithNulls(c, array, maxSize) {
|
|
57
|
-
const wasNull = array === null;
|
|
58
|
-
const result = array ? [...array] : [];
|
|
59
|
-
const nullsToAdd = Math.max(0, maxSize - (array?.length ?? 0));
|
|
60
|
-
for (let i = 0; i < nullsToAdd; i++)
|
|
61
|
-
result.push(null);
|
|
62
|
-
// Add our unset marker
|
|
63
|
-
if (c.isNullableArray)
|
|
64
|
-
result.unshift(wasNull ? null : notNullMarker(c));
|
|
65
|
-
return result;
|
|
66
|
-
}
|
|
67
|
-
function notNullMarker(c) {
|
|
68
|
-
// Should probably push this into an OpColumn.notNullMarker value
|
|
69
|
-
if (c.dbType.startsWith("varchar") || c.dbType.startsWith("character") || c.dbType.startsWith("text")) {
|
|
70
|
-
return "";
|
|
71
|
-
}
|
|
72
|
-
else if (c.dbType.startsWith("int")) {
|
|
73
|
-
return 1;
|
|
74
|
-
}
|
|
75
|
-
else if (c.dbType.startsWith("date")) {
|
|
76
|
-
return new Date(); // maybe something temporal?
|
|
77
|
-
}
|
|
78
|
-
else if (c.dbType.startsWith("timestamp")) {
|
|
79
|
-
return new Date(); // maybe something temporal?
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
throw new Error("Unhandled nullable array column type " + c.dbType);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=unnest.js.map
|
package/build/unnest.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unnest.js","sourceRoot":"","sources":["../src/unnest.ts"],"names":[],"mappings":"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"}
|
package/build/upsert.d.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { Entity } from "./Entity";
|
|
2
|
-
import { EntityManager, IdOf, MaybeAbstractEntityConstructor } from "./EntityManager";
|
|
3
|
-
import { PartialOrNull } from "./index";
|
|
4
|
-
import { OptIdsOf, OptsOf } from "./typeMap";
|
|
5
|
-
import { NullOrDefinedOr } from "./utils";
|
|
6
|
-
/**
|
|
7
|
-
* The type for `EntityManager.createOrUpdateUnsafe` that allows "upsert"-ish behavior.
|
|
8
|
-
*
|
|
9
|
-
* I.e. `T` is an entity with an optional id (create if unset, update if set), and we recurse
|
|
10
|
-
* into any relations (references or collections) to allow those relations themselves to be
|
|
11
|
-
* any combination of 1) ids to existing entities, 2) entities directly, 3) null/undefined
|
|
12
|
-
* with the appropriate partial-update behavior, or 4) partials.
|
|
13
|
-
*/
|
|
14
|
-
export type DeepPartialOrNull<T extends Entity> = {
|
|
15
|
-
id?: IdOf<T> | null;
|
|
16
|
-
} & AllowRelationsToBeIdsOrEntitiesOrPartials<PartialOrNull<OptsOf<T> & OptIdsOf<T>>> & OptIdsOf<T>;
|
|
17
|
-
/** Flags that allow `upsert` to delete or remove entities. */
|
|
18
|
-
type CollectionFlags = {
|
|
19
|
-
delete?: boolean | null;
|
|
20
|
-
remove?: boolean | null;
|
|
21
|
-
op?: "remove" | "delete" | "include" | "incremental";
|
|
22
|
-
};
|
|
23
|
-
/** Flag that allows `upsert` to delete. */
|
|
24
|
-
type DeleteFlag = {
|
|
25
|
-
delete?: boolean | null;
|
|
26
|
-
};
|
|
27
|
-
type AllowRelationsToBeIdsOrEntitiesOrPartials<T> = {
|
|
28
|
-
[P in keyof T]: T[P] extends NullOrDefinedOr<infer U> ? U extends Array<infer V> ? V extends Entity ? Array<V | (DeepPartialOrNull<V> & CollectionFlags) | IdOf<V>> | null : T[P] : U extends Entity ? U | (DeepPartialOrNull<U> & DeleteFlag) | IdOf<U> | null : T[P] : T[P];
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* A utility function to do partial-update style updates.
|
|
32
|
-
*
|
|
33
|
-
* The difference between this and `Entity.setPartial` is that we accept `DeepPartialOrNull`
|
|
34
|
-
* updates, similar to `createOrUpdateUnsafe`, instead of just a flat/shallow list of opts.
|
|
35
|
-
*/
|
|
36
|
-
export declare function updatePartial<T extends Entity>(entity: T, input: DeepPartialOrNull<T>): Promise<void>;
|
|
37
|
-
/**
|
|
38
|
-
* A utility function to create-or-update/upsert entities coming from a partial-update style API.
|
|
39
|
-
*/
|
|
40
|
-
export declare function upsert<T extends Entity>(em: EntityManager<any, any, any>, constructor: MaybeAbstractEntityConstructor<T>, input: DeepPartialOrNull<T>): Promise<T>;
|
|
41
|
-
export {};
|
|
42
|
-
//# sourceMappingURL=upsert.d.ts.map
|
package/build/upsert.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upsert.d.ts","sourceRoot":"","sources":["../src/upsert.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAY,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,8BAA8B,EAAS,MAAM,iBAAiB,CAAC;AAE7F,OAAO,EACL,aAAa,EAMd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAW,MAAM,SAAS,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,IAAI;IAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,yCAAyC,CACnH,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CACvC,GACC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAEd,8DAA8D;AAC9D,KAAK,eAAe,GAAG;IACrB,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC;CACtD,CAAC;AAEF,2CAA2C;AAC3C,KAAK,UAAU,GAAG;IAChB,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,KAAK,yCAAyC,CAAC,CAAC,IAAI;KACjD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,CAAC,CAAC,GACjD,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACtB,CAAC,SAAS,MAAM,GACd,KAAK,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GACpE,CAAC,CAAC,CAAC,CAAC,GACN,CAAC,SAAS,MAAM,GACd,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GACxD,CAAC,CAAC,CAAC,CAAC,GACR,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAmM3G;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,CAAC,SAAS,MAAM,EAC3C,EAAE,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAChC,WAAW,EAAE,8BAA8B,CAAC,CAAC,CAAC,EAC9C,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC,CAAC,CAAC,CAaZ"}
|
package/build/upsert.js
DELETED
|
@@ -1,265 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.updatePartial = updatePartial;
|
|
4
|
-
exports.upsert = upsert;
|
|
5
|
-
const joist_utils_1 = require("joist-utils");
|
|
6
|
-
const defaults_1 = require("./defaults");
|
|
7
|
-
const Entity_1 = require("./Entity");
|
|
8
|
-
const EntityManager_1 = require("./EntityManager");
|
|
9
|
-
const EntityMetadata_1 = require("./EntityMetadata");
|
|
10
|
-
const index_1 = require("./index");
|
|
11
|
-
const utils_1 = require("./utils");
|
|
12
|
-
/**
|
|
13
|
-
* A utility function to do partial-update style updates.
|
|
14
|
-
*
|
|
15
|
-
* The difference between this and `Entity.setPartial` is that we accept `DeepPartialOrNull`
|
|
16
|
-
* updates, similar to `createOrUpdateUnsafe`, instead of just a flat/shallow list of opts.
|
|
17
|
-
*/
|
|
18
|
-
async function updatePartial(entity, input) {
|
|
19
|
-
if (Object.keys(input).length === 0)
|
|
20
|
-
return;
|
|
21
|
-
const meta = (0, EntityMetadata_1.getMetadata)(entity);
|
|
22
|
-
const { em } = entity;
|
|
23
|
-
// Do a Promise.all so we .load() relations in parallel
|
|
24
|
-
await Promise.all(Object.entries(input).map(async ([key, value]) => {
|
|
25
|
-
// setPartial ==> `undefined` is a noop
|
|
26
|
-
if (value === undefined)
|
|
27
|
-
return;
|
|
28
|
-
// Watch for the `bookId` / `bookIds` aliases
|
|
29
|
-
const field = meta.allFields[key] || Object.values(meta.allFields).find((f) => f.fieldIdName === key);
|
|
30
|
-
if (!field) {
|
|
31
|
-
// Allow (ignore here) delete/remove flags that we assume the API layer (i.e. GraphQL) will have specifically
|
|
32
|
-
// allowed, i.e. this isn't the Rails form bug where users can POST in any random field they want.
|
|
33
|
-
const flagField = key === "delete" || key === "remove" || key === "op";
|
|
34
|
-
if (flagField)
|
|
35
|
-
return;
|
|
36
|
-
// Look for non-field properties like a fullName setter
|
|
37
|
-
const prop = (0, index_1.getProperties)(meta)[key];
|
|
38
|
-
if (prop) {
|
|
39
|
-
(0, index_1.setOpt)(meta, entity, key, value);
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
throw new Error(`Unknown field ${key}`);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
// Don't use key b/c it might be the bookId alias
|
|
47
|
-
const name = field.fieldName;
|
|
48
|
-
if (field.kind === "poly" && value && !(0, Entity_1.isEntity)(value)) {
|
|
49
|
-
// Resolve non-entity poly values
|
|
50
|
-
if ((0, EntityManager_1.isKey)(value)) {
|
|
51
|
-
(0, index_1.setOpt)(meta, entity, name, await em.load((0, index_1.getConstructorFromTaggedId)(value), value));
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
throw new Error(`Cannot use partial value for polymorphic field `);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
else if (field.kind === "m2o" && value && !(0, Entity_1.isEntity)(value)) {
|
|
58
|
-
// This is a many-to-one reference
|
|
59
|
-
if ((0, EntityManager_1.isKey)(value)) {
|
|
60
|
-
(0, index_1.setOpt)(meta, entity, name, await em.load(field.otherMetadata().cstr, value));
|
|
61
|
-
}
|
|
62
|
-
else if (typeof value === "object" && value) {
|
|
63
|
-
let other;
|
|
64
|
-
if ("id" in value) {
|
|
65
|
-
// This is a many-to-one partial update to an existing entity (they passed an id)
|
|
66
|
-
other = await upsert(em, field.otherMetadata().cstr, value);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
// This is a many-to-one partial w/o passing an id, i.e. `upsert(Author, { id: "a:1", publisher: { name: "p1" } })`
|
|
70
|
-
if (entity.isNewEntity) {
|
|
71
|
-
// If we're brand new, our child/other has to be brand new as well
|
|
72
|
-
other = await upsert(em, field.otherMetadata().cstr, value);
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
// the o2o upsert hash didn't have an id, so find-or-create it
|
|
76
|
-
other = await entity[name].load();
|
|
77
|
-
if (other) {
|
|
78
|
-
await updatePartial(other, value);
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
other = await upsert(em, field.otherMetadata().cstr, value);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
const deleteMarker = getDeleteMarker(field, value);
|
|
86
|
-
if (deleteMarker) {
|
|
87
|
-
em.delete(other);
|
|
88
|
-
other = undefined;
|
|
89
|
-
}
|
|
90
|
-
(0, index_1.setOpt)(meta, entity, name, other);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
else if (field.kind === "o2o") {
|
|
94
|
-
// ^-- o2o always need loaded to be set, so don't fall through
|
|
95
|
-
if (value === null || (0, Entity_1.isEntity)(value)) {
|
|
96
|
-
await entity[name].load();
|
|
97
|
-
(0, index_1.setOpt)(meta, entity, name, value);
|
|
98
|
-
}
|
|
99
|
-
else if ((0, EntityManager_1.isKey)(value)) {
|
|
100
|
-
const [, other] = await Promise.all([
|
|
101
|
-
entity[name].load(),
|
|
102
|
-
em.load(field.otherMetadata().cstr, value),
|
|
103
|
-
]);
|
|
104
|
-
(0, index_1.setOpt)(meta, entity, name, other);
|
|
105
|
-
}
|
|
106
|
-
else if (typeof value === "object" && (0, joist_utils_1.isPlainObject)(value)) {
|
|
107
|
-
const deleteMarker = getDeleteMarker(field, value);
|
|
108
|
-
// Always load the o2o so we can set it
|
|
109
|
-
const current = await entity[name].load();
|
|
110
|
-
let other;
|
|
111
|
-
if ("id" in value) {
|
|
112
|
-
// The o2o upsert hash was passed an id, so load it
|
|
113
|
-
other = await upsert(em, field.otherMetadata().cstr, value);
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
// the o2o upsert hash didn't have an id, so find-or-create it
|
|
117
|
-
other = current;
|
|
118
|
-
if (other) {
|
|
119
|
-
await updatePartial(other, value);
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
other = await upsert(em, field.otherMetadata().cstr, value);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
if (deleteMarker) {
|
|
126
|
-
em.delete(other);
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
(0, index_1.setOpt)(meta, entity, name, other);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
throw new Error(`Invalid value ${value}`);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
else if (field.kind === "o2m" || field.kind === "m2m") {
|
|
137
|
-
// Look for one-to-many/many-to-many partials
|
|
138
|
-
// `null` is handled later, and treated as `[]`, which needs the collection loaded
|
|
139
|
-
const values = (0, utils_1.toArray)(value);
|
|
140
|
-
const otherMeta = field.otherMetadata();
|
|
141
|
-
const maybeSoftDelete = otherMeta.timestampFields?.deletedAt;
|
|
142
|
-
// Incremental handling
|
|
143
|
-
const anyValueHasOp = values.some((v) => v && typeof v === "object" && !(0, Entity_1.isEntity)(v) && "op" in v);
|
|
144
|
-
if (anyValueHasOp) {
|
|
145
|
-
let anyValueMissingOp = false;
|
|
146
|
-
const current = entity[name];
|
|
147
|
-
// The `op` behavior means incremental and wants to do this:
|
|
148
|
-
await Promise.all(values.map(async (value) => {
|
|
149
|
-
const [, , op] = getCollectionMarkers(field, value);
|
|
150
|
-
if (op === "delete") {
|
|
151
|
-
const other = await upsert(em, otherMeta.cstr, value);
|
|
152
|
-
// We need to check if this is a soft-deletable entity, and if so, we will soft-delete it.
|
|
153
|
-
if (maybeSoftDelete) {
|
|
154
|
-
const serde = otherMeta.fields[maybeSoftDelete].serde;
|
|
155
|
-
const now = new Date();
|
|
156
|
-
other.set({ [maybeSoftDelete]: serde.mapFromNow(now) });
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
entity.em.delete(other);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
else if (op === "remove") {
|
|
163
|
-
const other = await upsert(em, otherMeta.cstr, value);
|
|
164
|
-
current.remove(other);
|
|
165
|
-
}
|
|
166
|
-
else if (op === "include") {
|
|
167
|
-
const other = await upsert(em, otherMeta.cstr, value);
|
|
168
|
-
current.add(other);
|
|
169
|
-
}
|
|
170
|
-
else if (op === "incremental") {
|
|
171
|
-
// This is a marker entry, just ignore it
|
|
172
|
-
}
|
|
173
|
-
}));
|
|
174
|
-
if (anyValueMissingOp) {
|
|
175
|
-
throw new Error("If any child sets the `op` key, then all children must have the `op` key.");
|
|
176
|
-
}
|
|
177
|
-
return; // return from the op-based incremental behavior
|
|
178
|
-
}
|
|
179
|
-
// Otherwise we do exhaustive sets, will still looking for `delete`/`remove` markers
|
|
180
|
-
const others = await Promise.all(values.map(async (value) => {
|
|
181
|
-
if ((0, Entity_1.isEntity)(value)) {
|
|
182
|
-
return value;
|
|
183
|
-
}
|
|
184
|
-
else if ((0, EntityManager_1.isKey)(value)) {
|
|
185
|
-
return em.load(field.otherMetadata().cstr, value);
|
|
186
|
-
}
|
|
187
|
-
else if (value === null || value === undefined) {
|
|
188
|
-
return undefined;
|
|
189
|
-
}
|
|
190
|
-
else if (!(0, joist_utils_1.isPlainObject)(value)) {
|
|
191
|
-
throw new Error(`Invalid value ${value}`);
|
|
192
|
-
}
|
|
193
|
-
else {
|
|
194
|
-
// Look for `delete: true/false` and `remove: true/false` markers
|
|
195
|
-
const [deleteMarker, removeMarker] = getCollectionMarkers(field, value);
|
|
196
|
-
const other = await upsert(em, field.otherMetadata().cstr, value);
|
|
197
|
-
if (deleteMarker) {
|
|
198
|
-
// if (maybeSoftDelete) {
|
|
199
|
-
// const serde = meta.fields[maybeSoftDelete].serde as TimestampSerde<unknown>;
|
|
200
|
-
// const now = new Date();
|
|
201
|
-
// other.set({ [maybeSoftDelete]: serde.mapFromNow(now) });
|
|
202
|
-
// } else {
|
|
203
|
-
// }
|
|
204
|
-
em.delete(other);
|
|
205
|
-
return other;
|
|
206
|
-
}
|
|
207
|
-
else if (removeMarker) {
|
|
208
|
-
return undefined;
|
|
209
|
-
}
|
|
210
|
-
else {
|
|
211
|
-
return other;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
}));
|
|
215
|
-
await entity[name].load();
|
|
216
|
-
(0, index_1.setOpt)(meta, entity, name, others.filter((v) => v !== undefined));
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
// If we get here, value should be a vanilla value that `setOpt` can handle/pass through as-is
|
|
220
|
-
(0, index_1.setOpt)(meta, entity, name, value);
|
|
221
|
-
}
|
|
222
|
-
}));
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* A utility function to create-or-update/upsert entities coming from a partial-update style API.
|
|
226
|
-
*/
|
|
227
|
-
async function upsert(em, constructor, input) {
|
|
228
|
-
const { id, ...rest } = input;
|
|
229
|
-
const isNew = id === null || id === undefined;
|
|
230
|
-
const entity = isNew
|
|
231
|
-
? // asConcreteCstr is not actually safe but for now we rely on our cstr runtime check to catch this
|
|
232
|
-
em.createPartial((0, index_1.asConcreteCstr)(constructor), {})
|
|
233
|
-
: await em.load(constructor, id);
|
|
234
|
-
await updatePartial(entity, rest);
|
|
235
|
-
// Do this manually since we're not going through setOpts anymore
|
|
236
|
-
if (isNew) {
|
|
237
|
-
(0, defaults_1.setSyncDefaults)(entity);
|
|
238
|
-
}
|
|
239
|
-
return entity;
|
|
240
|
-
}
|
|
241
|
-
function getCollectionMarkers(field, value) {
|
|
242
|
-
const allowDelete = !field.otherMetadata().fields["delete"];
|
|
243
|
-
const allowRemove = !field.otherMetadata().fields["remove"];
|
|
244
|
-
const allowOp = !field.otherMetadata().fields["op"];
|
|
245
|
-
// Look for `delete: true/false` and `remove: true/false` markers
|
|
246
|
-
const deleteMarker = allowDelete && value["delete"];
|
|
247
|
-
const removeMarker = allowRemove && value["remove"];
|
|
248
|
-
const opMarker = allowOp && value["op"];
|
|
249
|
-
// Remove the markers, regardless of true/false, before recursing into upsert to avoid unknown fields
|
|
250
|
-
if (deleteMarker !== undefined)
|
|
251
|
-
delete value.delete;
|
|
252
|
-
if (removeMarker !== undefined)
|
|
253
|
-
delete value.remove;
|
|
254
|
-
if (opMarker !== undefined)
|
|
255
|
-
delete value.op;
|
|
256
|
-
return [deleteMarker, removeMarker, opMarker];
|
|
257
|
-
}
|
|
258
|
-
function getDeleteMarker(field, value) {
|
|
259
|
-
const allowDelete = !field.otherMetadata().fields["delete"];
|
|
260
|
-
const deleteMarker = allowDelete && value["delete"];
|
|
261
|
-
if (deleteMarker !== undefined)
|
|
262
|
-
delete value.delete;
|
|
263
|
-
return deleteMarker;
|
|
264
|
-
}
|
|
265
|
-
//# sourceMappingURL=upsert.js.map
|
package/build/upsert.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upsert.js","sourceRoot":"","sources":["../src/upsert.ts"],"names":[],"mappings":"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"}
|
package/build/utils.d.ts
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { Entity } from "./Entity";
|
|
2
|
-
import { OrderBy } from "./EntityFilter";
|
|
3
|
-
import { New } from "./loadHints";
|
|
4
|
-
export type MaybePromise<T> = T | Promise<T>;
|
|
5
|
-
/**
|
|
6
|
-
* Given a `MaybePromise` of T, invoke `callback` against `T` either immediately or via `then`.
|
|
7
|
-
*
|
|
8
|
-
* This is the same as:
|
|
9
|
-
*
|
|
10
|
-
* ```
|
|
11
|
-
* const r = await maybePromise;
|
|
12
|
-
* return callback(r;;
|
|
13
|
-
* ```
|
|
14
|
-
*
|
|
15
|
-
* But saves an `await` if `maybePromise` is not actually a promise.
|
|
16
|
-
*/
|
|
17
|
-
export declare function maybePromiseThen<T, U>(promiseOrObj: MaybePromise<T>, callback: (obj: T) => U): MaybePromise<U>;
|
|
18
|
-
export declare function failIfAnyRejected<T>(results: PromiseSettledResult<T>[]): T[];
|
|
19
|
-
export declare function getOrSet<T extends Record<keyof unknown, unknown>>(record: T, key: keyof T, defaultValue: T[keyof T] | (() => T[keyof T])): T[keyof T];
|
|
20
|
-
/**
|
|
21
|
-
* A utility to ensure a Promise-returning method actually returns a promise and doesn't
|
|
22
|
-
* early exit. Using `async function` guarantees these semantics, but sometimes we avoid
|
|
23
|
-
* `async` as a likely-premature optimization to avoid the overhead.
|
|
24
|
-
*/
|
|
25
|
-
export declare function tryResolve<T>(fn: () => T): Promise<T>;
|
|
26
|
-
export declare function fail(message?: string): never;
|
|
27
|
-
export declare function remove<T>(array: T[], t: T): void;
|
|
28
|
-
export declare function maybeRemove<T>(array: T[] | undefined, t: T): void;
|
|
29
|
-
export declare function maybeAdd<T>(array: T[], t: T): void;
|
|
30
|
-
export declare function clear<T>(array: T[]): void;
|
|
31
|
-
/** Returns 0 inclusive to n exclusive. */
|
|
32
|
-
export declare function zeroTo(n: number): number[];
|
|
33
|
-
export declare function groupBy<T, Y = T, K = string>(list: readonly T[], fn: (x: T) => K, valueFn?: (x: T) => Y): Map<K, Y[]>;
|
|
34
|
-
export declare function indexBy<T, Y = T, K = string>(list: T[], fn: (x: T) => K, valueFn?: (x: T) => Y): Map<K, Y>;
|
|
35
|
-
export declare function batched<T>(list: Array<T>, n: number): T[][];
|
|
36
|
-
export declare function partition<T>(array: ReadonlyArray<T>, f: (el: T) => boolean): [T[], T[]];
|
|
37
|
-
export declare function toArray<T>(maybeArray: T | T[] | undefined | null): T[];
|
|
38
|
-
export type NullOrDefinedOr<T> = T | null | undefined;
|
|
39
|
-
export declare function assertNever(x: never): never;
|
|
40
|
-
export declare function abbreviation(tableName: string): string;
|
|
41
|
-
/**
|
|
42
|
-
* Utility method for casting `entity` to a `New` entity.
|
|
43
|
-
*
|
|
44
|
-
* Note that we don't actually do any runtime checks; a very simple one would be if the id is undefined,
|
|
45
|
-
* but we want this method to be used in tests that are post-`flush` but still "know" the entity is
|
|
46
|
-
* effectively new / fully loaded.
|
|
47
|
-
*
|
|
48
|
-
* Granted, we could do a runtime check that all relations are loaded.
|
|
49
|
-
*/
|
|
50
|
-
export declare function asNew<T extends Entity>(entity: T): New<T>;
|
|
51
|
-
export declare function compareValues(av: any, bv: any, direction: OrderBy): number;
|
|
52
|
-
/** A ~naive deep merge that requires already-normalized hints and will mutate `source`. */
|
|
53
|
-
export declare function mergeNormalizedHints(target: any, source: any): void;
|
|
54
|
-
export declare function cleanStringValue(value: unknown): string | undefined;
|
|
55
|
-
/** Strips new lines/indentation from our `UPDATE` string; doesn't do any actual SQL param escaping/etc. */
|
|
56
|
-
export declare function cleanSql(sql: string): string;
|
|
57
|
-
export declare function flatAndUnique<T extends unknown>(list: (T | T[] | undefined)[]): Set<T>;
|
|
58
|
-
//# sourceMappingURL=utils.d.ts.map
|