joist-core 2.3.0 → 2.4.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/BaseEntity.cjs +112 -0
- package/build/BaseEntity.cjs.map +1 -0
- package/build/BaseEntity.d.cts +73 -0
- package/build/BaseEntity.d.cts.map +1 -0
- package/build/BaseEntity.d.mts +73 -0
- package/build/BaseEntity.d.mts.map +1 -0
- package/build/BaseEntity.js +99 -110
- package/build/BaseEntity.js.map +1 -1
- package/build/Entity.cjs +12 -0
- package/build/Entity.cjs.map +1 -0
- package/build/Entity.d.cts +42 -0
- package/build/Entity.d.cts.map +1 -0
- package/build/Entity.d.mts +42 -0
- package/build/Entity.d.mts.map +1 -0
- package/build/Entity.js +8 -5
- package/build/Entity.js.map +1 -1
- package/build/EntityFields.cjs +1 -0
- package/build/EntityFields.d.cts +36 -0
- package/build/EntityFields.d.cts.map +1 -0
- package/build/EntityFields.d.mts +36 -0
- package/build/EntityFields.d.mts.map +1 -0
- package/build/EntityFields.js +1 -3
- package/build/EntityManager.cjs +1935 -0
- package/build/EntityManager.cjs.map +1 -0
- package/build/EntityManager.d.cts +835 -0
- package/build/EntityManager.d.cts.map +1 -0
- package/build/EntityManager.d.mts +835 -0
- package/build/EntityManager.d.mts.map +1 -0
- package/build/EntityManager.js +1812 -2211
- package/build/EntityManager.js.map +1 -1
- package/build/EntityMetadata.cjs +75 -0
- package/build/EntityMetadata.cjs.map +1 -0
- package/build/EntityMetadata.d.cts +262 -0
- package/build/EntityMetadata.d.cts.map +1 -0
- package/build/EntityMetadata.d.mts +262 -0
- package/build/EntityMetadata.d.mts.map +1 -0
- package/build/EntityMetadata.js +31 -48
- package/build/EntityMetadata.js.map +1 -1
- package/build/EnumMetadata.cjs +1 -0
- package/build/EnumMetadata.d.cts +18 -0
- package/build/EnumMetadata.d.cts.map +1 -0
- package/build/EnumMetadata.d.mts +18 -0
- package/build/EnumMetadata.d.mts.map +1 -0
- package/build/EnumMetadata.js +1 -3
- package/build/IndexManager.cjs +178 -0
- package/build/IndexManager.cjs.map +1 -0
- package/build/IndexManager.d.cts +36 -0
- package/build/IndexManager.d.cts.map +1 -0
- package/build/IndexManager.d.mts +36 -0
- package/build/IndexManager.d.mts.map +1 -0
- package/build/IndexManager.js +169 -218
- package/build/IndexManager.js.map +1 -1
- package/build/InstanceData.cjs +218 -0
- package/build/InstanceData.cjs.map +1 -0
- package/build/InstanceData.d.cts +98 -0
- package/build/InstanceData.d.cts.map +1 -0
- package/build/InstanceData.d.mts +98 -0
- package/build/InstanceData.d.mts.map +1 -0
- package/build/InstanceData.js +215 -222
- package/build/InstanceData.js.map +1 -1
- package/build/PluginManager.cjs +89 -0
- package/build/PluginManager.cjs.map +1 -0
- package/build/PluginManager.d.cts +112 -0
- package/build/PluginManager.d.cts.map +1 -0
- package/build/PluginManager.d.mts +112 -0
- package/build/PluginManager.d.mts.map +1 -0
- package/build/PluginManager.js +80 -106
- package/build/PluginManager.js.map +1 -1
- package/build/RowData.cjs +37 -0
- package/build/RowData.cjs.map +1 -0
- package/build/RowData.d.cts +53 -0
- package/build/RowData.d.cts.map +1 -0
- package/build/RowData.d.mts +53 -0
- package/build/RowData.d.mts.map +1 -0
- package/build/RowData.js +35 -0
- package/build/RowData.js.map +1 -0
- package/build/_virtual/_rolldown/runtime.cjs +23 -0
- package/build/batchloaders/BatchLoader.cjs +49 -0
- package/build/batchloaders/BatchLoader.cjs.map +1 -0
- package/build/batchloaders/BatchLoader.d.cts +17 -0
- package/build/batchloaders/BatchLoader.d.cts.map +1 -0
- package/build/batchloaders/BatchLoader.d.mts +17 -0
- package/build/batchloaders/BatchLoader.d.mts.map +1 -0
- package/build/batchloaders/BatchLoader.js +45 -54
- package/build/batchloaders/BatchLoader.js.map +1 -1
- package/build/batchloaders/enumCollectionBatchLoader.cjs +66 -0
- package/build/batchloaders/enumCollectionBatchLoader.cjs.map +1 -0
- package/build/batchloaders/enumCollectionBatchLoader.d.cts +11 -0
- package/build/batchloaders/enumCollectionBatchLoader.d.cts.map +1 -0
- package/build/batchloaders/enumCollectionBatchLoader.d.mts +11 -0
- package/build/batchloaders/enumCollectionBatchLoader.d.mts.map +1 -0
- package/build/batchloaders/enumCollectionBatchLoader.js +58 -48
- package/build/batchloaders/enumCollectionBatchLoader.js.map +1 -1
- package/build/batchloaders/loadBatchLoader.cjs +78 -0
- package/build/batchloaders/loadBatchLoader.cjs.map +1 -0
- package/build/batchloaders/loadBatchLoader.d.cts +20 -0
- package/build/batchloaders/loadBatchLoader.d.cts.map +1 -0
- package/build/batchloaders/loadBatchLoader.d.mts +20 -0
- package/build/batchloaders/loadBatchLoader.d.mts.map +1 -0
- package/build/batchloaders/loadBatchLoader.js +72 -51
- package/build/batchloaders/loadBatchLoader.js.map +1 -1
- package/build/batchloaders/manyToManyBatchLoader.cjs +78 -0
- package/build/batchloaders/manyToManyBatchLoader.cjs.map +1 -0
- package/build/batchloaders/manyToManyBatchLoader.d.cts +11 -0
- package/build/batchloaders/manyToManyBatchLoader.d.cts.map +1 -0
- package/build/batchloaders/manyToManyBatchLoader.d.mts +11 -0
- package/build/batchloaders/manyToManyBatchLoader.d.mts.map +1 -0
- package/build/batchloaders/manyToManyBatchLoader.js +70 -61
- package/build/batchloaders/manyToManyBatchLoader.js.map +1 -1
- package/build/batchloaders/oneToManyBatchLoader.cjs +63 -0
- package/build/batchloaders/oneToManyBatchLoader.cjs.map +1 -0
- package/build/batchloaders/oneToManyBatchLoader.d.cts +11 -0
- package/build/batchloaders/oneToManyBatchLoader.d.cts.map +1 -0
- package/build/batchloaders/oneToManyBatchLoader.d.mts +11 -0
- package/build/batchloaders/oneToManyBatchLoader.d.mts.map +1 -0
- package/build/batchloaders/oneToManyBatchLoader.js +58 -48
- package/build/batchloaders/oneToManyBatchLoader.js.map +1 -1
- package/build/batchloaders/oneToOneBatchLoader.cjs +64 -0
- package/build/batchloaders/oneToOneBatchLoader.cjs.map +1 -0
- package/build/batchloaders/oneToOneBatchLoader.d.cts +10 -0
- package/build/batchloaders/oneToOneBatchLoader.d.cts.map +1 -0
- package/build/batchloaders/oneToOneBatchLoader.d.mts +10 -0
- package/build/batchloaders/oneToOneBatchLoader.d.mts.map +1 -0
- package/build/batchloaders/oneToOneBatchLoader.js +59 -50
- package/build/batchloaders/oneToOneBatchLoader.js.map +1 -1
- package/build/batchloaders/populateBatchLoader.cjs +155 -0
- package/build/batchloaders/populateBatchLoader.cjs.map +1 -0
- package/build/batchloaders/populateBatchLoader.d.cts +17 -0
- package/build/batchloaders/populateBatchLoader.d.cts.map +1 -0
- package/build/batchloaders/populateBatchLoader.d.mts +17 -0
- package/build/batchloaders/populateBatchLoader.d.mts.map +1 -0
- package/build/batchloaders/populateBatchLoader.js +147 -203
- package/build/batchloaders/populateBatchLoader.js.map +1 -1
- package/build/batchloaders/recursiveChildrenBatchLoader.cjs +78 -0
- package/build/batchloaders/recursiveChildrenBatchLoader.cjs.map +1 -0
- package/build/batchloaders/recursiveChildrenBatchLoader.d.cts +10 -0
- package/build/batchloaders/recursiveChildrenBatchLoader.d.cts.map +1 -0
- package/build/batchloaders/recursiveChildrenBatchLoader.d.mts +10 -0
- package/build/batchloaders/recursiveChildrenBatchLoader.d.mts.map +1 -0
- package/build/batchloaders/recursiveChildrenBatchLoader.js +71 -72
- package/build/batchloaders/recursiveChildrenBatchLoader.js.map +1 -1
- package/build/batchloaders/recursiveM2mBatchLoader.cjs +83 -0
- package/build/batchloaders/recursiveM2mBatchLoader.cjs.map +1 -0
- package/build/batchloaders/recursiveM2mBatchLoader.d.cts +10 -0
- package/build/batchloaders/recursiveM2mBatchLoader.d.cts.map +1 -0
- package/build/batchloaders/recursiveM2mBatchLoader.d.mts +10 -0
- package/build/batchloaders/recursiveM2mBatchLoader.d.mts.map +1 -0
- package/build/batchloaders/recursiveM2mBatchLoader.js +76 -79
- package/build/batchloaders/recursiveM2mBatchLoader.js.map +1 -1
- package/build/batchloaders/recursiveParentsBatchLoader.cjs +65 -0
- package/build/batchloaders/recursiveParentsBatchLoader.cjs.map +1 -0
- package/build/batchloaders/recursiveParentsBatchLoader.d.cts +10 -0
- package/build/batchloaders/recursiveParentsBatchLoader.d.cts.map +1 -0
- package/build/batchloaders/recursiveParentsBatchLoader.d.mts +10 -0
- package/build/batchloaders/recursiveParentsBatchLoader.d.mts.map +1 -0
- package/build/batchloaders/recursiveParentsBatchLoader.js +58 -55
- package/build/batchloaders/recursiveParentsBatchLoader.js.map +1 -1
- package/build/changes.cjs +221 -0
- package/build/changes.cjs.map +1 -0
- package/build/changes.d.cts +95 -0
- package/build/changes.d.cts.map +1 -0
- package/build/changes.d.mts +95 -0
- package/build/changes.d.mts.map +1 -0
- package/build/changes.js +208 -285
- package/build/changes.js.map +1 -1
- package/build/config.cjs +295 -0
- package/build/config.cjs.map +1 -0
- package/build/config.d.cts +277 -0
- package/build/config.d.cts.map +1 -0
- package/build/config.d.mts +277 -0
- package/build/config.d.mts.map +1 -0
- package/build/config.js +255 -301
- package/build/config.js.map +1 -1
- package/build/configure.cjs +324 -0
- package/build/configure.cjs.map +1 -0
- package/build/configure.d.cts +19 -0
- package/build/configure.d.cts.map +1 -0
- package/build/configure.d.mts +19 -0
- package/build/configure.d.mts.map +1 -0
- package/build/configure.js +265 -348
- package/build/configure.js.map +1 -1
- package/build/dataloaders/fastWhereFilterHash.cjs +140 -0
- package/build/dataloaders/fastWhereFilterHash.cjs.map +1 -0
- package/build/dataloaders/fastWhereFilterHash.d.cts +18 -0
- package/build/dataloaders/fastWhereFilterHash.d.cts.map +1 -0
- package/build/dataloaders/fastWhereFilterHash.d.mts +18 -0
- package/build/dataloaders/fastWhereFilterHash.d.mts.map +1 -0
- package/build/dataloaders/fastWhereFilterHash.js +108 -133
- package/build/dataloaders/fastWhereFilterHash.js.map +1 -1
- package/build/dataloaders/findByUniqueDataLoader.cjs +58 -0
- package/build/dataloaders/findByUniqueDataLoader.cjs.map +1 -0
- package/build/dataloaders/findByUniqueDataLoader.d.cts +10 -0
- package/build/dataloaders/findByUniqueDataLoader.d.cts.map +1 -0
- package/build/dataloaders/findByUniqueDataLoader.d.mts +10 -0
- package/build/dataloaders/findByUniqueDataLoader.d.mts.map +1 -0
- package/build/dataloaders/findByUniqueDataLoader.js +53 -44
- package/build/dataloaders/findByUniqueDataLoader.js.map +1 -1
- package/build/dataloaders/findCountDataLoader.cjs +123 -0
- package/build/dataloaders/findCountDataLoader.cjs.map +1 -0
- package/build/dataloaders/findCountDataLoader.d.cts +19 -0
- package/build/dataloaders/findCountDataLoader.d.cts.map +1 -0
- package/build/dataloaders/findCountDataLoader.d.mts +19 -0
- package/build/dataloaders/findCountDataLoader.d.mts.map +1 -0
- package/build/dataloaders/findCountDataLoader.js +112 -109
- package/build/dataloaders/findCountDataLoader.js.map +1 -1
- package/build/dataloaders/findDataLoader.cjs +365 -0
- package/build/dataloaders/findDataLoader.cjs.map +1 -0
- package/build/dataloaders/findDataLoader.d.cts +79 -0
- package/build/dataloaders/findDataLoader.d.cts.map +1 -0
- package/build/dataloaders/findDataLoader.d.mts +79 -0
- package/build/dataloaders/findDataLoader.d.mts.map +1 -0
- package/build/dataloaders/findDataLoader.js +298 -382
- package/build/dataloaders/findDataLoader.js.map +1 -1
- package/build/dataloaders/findIdsDataLoader.cjs +82 -0
- package/build/dataloaders/findIdsDataLoader.cjs.map +1 -0
- package/build/dataloaders/findIdsDataLoader.d.cts +9 -0
- package/build/dataloaders/findIdsDataLoader.d.cts.map +1 -0
- package/build/dataloaders/findIdsDataLoader.d.mts +9 -0
- package/build/dataloaders/findIdsDataLoader.d.mts.map +1 -0
- package/build/dataloaders/findIdsDataLoader.js +77 -74
- package/build/dataloaders/findIdsDataLoader.js.map +1 -1
- package/build/dataloaders/findOrCreateDataLoader.cjs +120 -0
- package/build/dataloaders/findOrCreateDataLoader.cjs.map +1 -0
- package/build/dataloaders/findOrCreateDataLoader.d.cts +15 -0
- package/build/dataloaders/findOrCreateDataLoader.d.cts.map +1 -0
- package/build/dataloaders/findOrCreateDataLoader.d.mts +15 -0
- package/build/dataloaders/findOrCreateDataLoader.d.mts.map +1 -0
- package/build/dataloaders/findOrCreateDataLoader.js +102 -164
- package/build/dataloaders/findOrCreateDataLoader.js.map +1 -1
- package/build/dataloaders/findPaginatedDataLoader.cjs +98 -0
- package/build/dataloaders/findPaginatedDataLoader.cjs.map +1 -0
- package/build/dataloaders/findPaginatedDataLoader.d.cts +10 -0
- package/build/dataloaders/findPaginatedDataLoader.d.cts.map +1 -0
- package/build/dataloaders/findPaginatedDataLoader.d.mts +10 -0
- package/build/dataloaders/findPaginatedDataLoader.d.mts.map +1 -0
- package/build/dataloaders/findPaginatedDataLoader.js +93 -80
- package/build/dataloaders/findPaginatedDataLoader.js.map +1 -1
- package/build/dataloaders/lensDataLoader.cjs +178 -0
- package/build/dataloaders/lensDataLoader.cjs.map +1 -0
- package/build/dataloaders/lensDataLoader.d.cts +15 -0
- package/build/dataloaders/lensDataLoader.d.cts.map +1 -0
- package/build/dataloaders/lensDataLoader.d.mts +15 -0
- package/build/dataloaders/lensDataLoader.d.mts.map +1 -0
- package/build/dataloaders/lensDataLoader.js +172 -176
- package/build/dataloaders/lensDataLoader.js.map +1 -1
- package/build/dataloaders/manyToManyFindDataLoader.cjs +84 -0
- package/build/dataloaders/manyToManyFindDataLoader.cjs.map +1 -0
- package/build/dataloaders/manyToManyFindDataLoader.d.cts +12 -0
- package/build/dataloaders/manyToManyFindDataLoader.d.cts.map +1 -0
- package/build/dataloaders/manyToManyFindDataLoader.d.mts +12 -0
- package/build/dataloaders/manyToManyFindDataLoader.d.mts.map +1 -0
- package/build/dataloaders/manyToManyFindDataLoader.js +76 -70
- package/build/dataloaders/manyToManyFindDataLoader.js.map +1 -1
- package/build/dataloaders/oneToManyFindDataLoader.cjs +77 -0
- package/build/dataloaders/oneToManyFindDataLoader.cjs.map +1 -0
- package/build/dataloaders/oneToManyFindDataLoader.d.cts +12 -0
- package/build/dataloaders/oneToManyFindDataLoader.d.cts.map +1 -0
- package/build/dataloaders/oneToManyFindDataLoader.d.mts +12 -0
- package/build/dataloaders/oneToManyFindDataLoader.d.mts.map +1 -0
- package/build/dataloaders/oneToManyFindDataLoader.js +71 -67
- package/build/dataloaders/oneToManyFindDataLoader.js.map +1 -1
- package/build/defaults.cjs +195 -0
- package/build/defaults.cjs.map +1 -0
- package/build/defaults.d.cts +56 -0
- package/build/defaults.d.cts.map +1 -0
- package/build/defaults.d.mts +56 -0
- package/build/defaults.d.mts.map +1 -0
- package/build/defaults.js +171 -271
- package/build/defaults.js.map +1 -1
- package/build/drivers/Driver.cjs +3 -0
- package/build/drivers/Driver.d.cts +51 -0
- package/build/drivers/Driver.d.cts.map +1 -0
- package/build/drivers/Driver.d.mts +51 -0
- package/build/drivers/Driver.d.mts.map +1 -0
- package/build/drivers/Driver.js +3 -3
- package/build/drivers/EntityWriter.cjs +208 -0
- package/build/drivers/EntityWriter.cjs.map +1 -0
- package/build/drivers/EntityWriter.d.cts +66 -0
- package/build/drivers/EntityWriter.d.cts.map +1 -0
- package/build/drivers/EntityWriter.d.mts +66 -0
- package/build/drivers/EntityWriter.d.mts.map +1 -0
- package/build/drivers/EntityWriter.js +183 -219
- package/build/drivers/EntityWriter.js.map +1 -1
- package/build/drivers/IdAssigner.cjs +89 -0
- package/build/drivers/IdAssigner.cjs.map +1 -0
- package/build/drivers/IdAssigner.d.cts +50 -0
- package/build/drivers/IdAssigner.d.cts.map +1 -0
- package/build/drivers/IdAssigner.d.mts +50 -0
- package/build/drivers/IdAssigner.d.mts.map +1 -0
- package/build/drivers/IdAssigner.js +80 -124
- package/build/drivers/IdAssigner.js.map +1 -1
- package/build/drivers/driverApi.cjs +19 -0
- package/build/drivers/driverApi.cjs.map +1 -0
- package/build/drivers/driverApi.d.cts +22 -0
- package/build/drivers/driverApi.d.cts.map +1 -0
- package/build/drivers/driverApi.d.mts +22 -0
- package/build/drivers/driverApi.d.mts.map +1 -0
- package/build/drivers/driverApi.js +18 -0
- package/build/drivers/driverApi.js.map +1 -0
- package/build/drivers/index.cjs +7 -0
- package/build/drivers/index.d.cts +4 -0
- package/build/drivers/index.d.mts +4 -0
- package/build/drivers/index.js +3 -22
- package/build/fields.cjs +127 -0
- package/build/fields.cjs.map +1 -0
- package/build/fields.d.cts +29 -0
- package/build/fields.d.cts.map +1 -0
- package/build/fields.d.mts +29 -0
- package/build/fields.d.mts.map +1 -0
- package/build/fields.js +98 -160
- package/build/fields.js.map +1 -1
- package/build/flush/FlushLock.cjs +51 -0
- package/build/flush/FlushLock.cjs.map +1 -0
- package/build/flush/FlushLock.d.cts +29 -0
- package/build/flush/FlushLock.d.cts.map +1 -0
- package/build/flush/FlushLock.d.mts +29 -0
- package/build/flush/FlushLock.d.mts.map +1 -0
- package/build/flush/FlushLock.js +51 -0
- package/build/flush/FlushLock.js.map +1 -0
- package/build/flush/JoinRows.cjs +263 -0
- package/build/flush/JoinRows.cjs.map +1 -0
- package/build/flush/JoinRows.d.cts +120 -0
- package/build/flush/JoinRows.d.cts.map +1 -0
- package/build/flush/JoinRows.d.mts +120 -0
- package/build/flush/JoinRows.d.mts.map +1 -0
- package/build/flush/JoinRows.js +261 -0
- package/build/flush/JoinRows.js.map +1 -0
- package/build/flush/PendingChanges.cjs +1 -0
- package/build/flush/PendingChanges.d.cts +29 -0
- package/build/flush/PendingChanges.d.cts.map +1 -0
- package/build/flush/PendingChanges.d.mts +29 -0
- package/build/flush/PendingChanges.d.mts.map +1 -0
- package/build/flush/PendingChanges.js +1 -0
- package/build/flush/Todo.cjs +71 -0
- package/build/flush/Todo.cjs.map +1 -0
- package/build/flush/Todo.d.cts +38 -0
- package/build/flush/Todo.d.cts.map +1 -0
- package/build/flush/Todo.d.mts +38 -0
- package/build/flush/Todo.d.mts.map +1 -0
- package/build/flush/Todo.js +67 -0
- package/build/flush/Todo.js.map +1 -0
- package/build/getProperties.cjs +87 -0
- package/build/getProperties.cjs.map +1 -0
- package/build/getProperties.d.cts +30 -0
- package/build/getProperties.d.cts.map +1 -0
- package/build/getProperties.d.mts +30 -0
- package/build/getProperties.d.mts.map +1 -0
- package/build/getProperties.js +71 -128
- package/build/getProperties.js.map +1 -1
- package/build/index.cjs +524 -0
- package/build/index.cjs.map +1 -0
- package/build/index.d.cts +180 -0
- package/build/index.d.cts.map +1 -0
- package/build/index.d.mts +180 -0
- package/build/index.d.mts.map +1 -0
- package/build/index.js +171 -292
- package/build/index.js.map +1 -1
- package/build/json.cjs +79 -0
- package/build/json.cjs.map +1 -0
- package/build/json.d.cts +76 -0
- package/build/json.d.cts.map +1 -0
- package/build/json.d.mts +76 -0
- package/build/json.d.mts.map +1 -0
- package/build/json.js +68 -106
- package/build/json.js.map +1 -1
- package/build/k.cjs +9 -0
- package/build/k.cjs.map +1 -0
- package/build/k.d.cts +1 -0
- package/build/k.d.mts +1 -0
- package/build/k.js +6 -6
- package/build/k.js.map +1 -1
- package/build/keys.cjs +181 -0
- package/build/keys.cjs.map +1 -0
- package/build/keys.d.cts +55 -0
- package/build/keys.d.cts.map +1 -0
- package/build/keys.d.mts +55 -0
- package/build/keys.d.mts.map +1 -0
- package/build/keys.js +129 -162
- package/build/keys.js.map +1 -1
- package/build/loading/HintTree.cjs +67 -0
- package/build/loading/HintTree.cjs.map +1 -0
- package/build/loading/HintTree.d.cts +45 -0
- package/build/loading/HintTree.d.cts.map +1 -0
- package/build/loading/HintTree.d.mts +45 -0
- package/build/loading/HintTree.d.mts.map +1 -0
- package/build/loading/HintTree.js +66 -0
- package/build/loading/HintTree.js.map +1 -0
- package/build/loading/IsLoadedCache.cjs +58 -0
- package/build/loading/IsLoadedCache.cjs.map +1 -0
- package/build/loading/IsLoadedCache.d.cts +35 -0
- package/build/loading/IsLoadedCache.d.cts.map +1 -0
- package/build/loading/IsLoadedCache.d.mts +35 -0
- package/build/loading/IsLoadedCache.d.mts.map +1 -0
- package/build/loading/IsLoadedCache.js +57 -0
- package/build/loading/IsLoadedCache.js.map +1 -0
- package/build/loading/loadHints.cjs +95 -0
- package/build/loading/loadHints.cjs.map +1 -0
- package/build/loading/loadHints.d.cts +116 -0
- package/build/loading/loadHints.d.cts.map +1 -0
- package/build/loading/loadHints.d.mts +116 -0
- package/build/loading/loadHints.d.mts.map +1 -0
- package/build/loading/loadHints.js +88 -0
- package/build/loading/loadHints.js.map +1 -0
- package/build/loading/loadLens.cjs +212 -0
- package/build/loading/loadLens.cjs.map +1 -0
- package/build/loading/loadLens.d.cts +77 -0
- package/build/loading/loadLens.d.cts.map +1 -0
- package/build/loading/loadLens.d.mts +77 -0
- package/build/loading/loadLens.d.mts.map +1 -0
- package/build/loading/loadLens.js +201 -0
- package/build/loading/loadLens.js.map +1 -0
- package/build/loading/withLoaded.cjs +64 -0
- package/build/loading/withLoaded.cjs.map +1 -0
- package/build/loading/withLoaded.d.cts +65 -0
- package/build/loading/withLoaded.d.cts.map +1 -0
- package/build/loading/withLoaded.d.mts +65 -0
- package/build/loading/withLoaded.d.mts.map +1 -0
- package/build/loading/withLoaded.js +61 -0
- package/build/loading/withLoaded.js.map +1 -0
- package/build/logging/FactoryLogger.cjs +66 -0
- package/build/logging/FactoryLogger.cjs.map +1 -0
- package/build/logging/FactoryLogger.d.cts +27 -0
- package/build/logging/FactoryLogger.d.cts.map +1 -0
- package/build/logging/FactoryLogger.d.mts +27 -0
- package/build/logging/FactoryLogger.d.mts.map +1 -0
- package/build/logging/FactoryLogger.js +58 -73
- package/build/logging/FactoryLogger.js.map +1 -1
- package/build/logging/FieldLogger.cjs +57 -0
- package/build/logging/FieldLogger.cjs.map +1 -0
- package/build/logging/FieldLogger.d.cts +32 -0
- package/build/logging/FieldLogger.d.cts.map +1 -0
- package/build/logging/FieldLogger.d.mts +32 -0
- package/build/logging/FieldLogger.d.mts.map +1 -0
- package/build/logging/FieldLogger.js +51 -67
- package/build/logging/FieldLogger.js.map +1 -1
- package/build/logging/ReactionLogger.cjs +93 -0
- package/build/logging/ReactionLogger.cjs.map +1 -0
- package/build/logging/ReactionLogger.d.cts +37 -0
- package/build/logging/ReactionLogger.d.cts.map +1 -0
- package/build/logging/ReactionLogger.d.mts +37 -0
- package/build/logging/ReactionLogger.d.mts.map +1 -0
- package/build/logging/ReactionLogger.js +76 -66
- package/build/logging/ReactionLogger.js.map +1 -1
- package/build/newEntity.cjs +89 -0
- package/build/newEntity.cjs.map +1 -0
- package/build/newEntity.d.cts +48 -0
- package/build/newEntity.d.cts.map +1 -0
- package/build/newEntity.d.mts +48 -0
- package/build/newEntity.d.mts.map +1 -0
- package/build/newEntity.js +71 -94
- package/build/newEntity.js.map +1 -1
- package/build/newTestInstance.cjs +539 -0
- package/build/newTestInstance.cjs.map +1 -0
- package/build/newTestInstance.d.cts +207 -0
- package/build/newTestInstance.d.cts.map +1 -0
- package/build/newTestInstance.d.mts +207 -0
- package/build/newTestInstance.d.mts.map +1 -0
- package/build/newTestInstance.js +459 -721
- package/build/newTestInstance.js.map +1 -1
- package/build/normalizeHints.cjs +58 -0
- package/build/normalizeHints.cjs.map +1 -0
- package/build/normalizeHints.d.cts +24 -0
- package/build/normalizeHints.d.cts.map +1 -0
- package/build/normalizeHints.d.mts +24 -0
- package/build/normalizeHints.d.mts.map +1 -0
- package/build/normalizeHints.js +40 -55
- package/build/normalizeHints.js.map +1 -1
- package/build/nowUTC.cjs +15 -0
- package/build/nowUTC.cjs.map +1 -0
- package/build/nowUTC.d.cts +10 -0
- package/build/nowUTC.d.cts.map +1 -0
- package/build/nowUTC.d.mts +10 -0
- package/build/nowUTC.d.mts.map +1 -0
- package/build/nowUTC.js +14 -0
- package/build/nowUTC.js.map +1 -0
- package/build/plugins/ImmutableEntitiesPlugin.cjs +21 -0
- package/build/plugins/ImmutableEntitiesPlugin.cjs.map +1 -0
- package/build/plugins/ImmutableEntitiesPlugin.d.cts +12 -0
- package/build/plugins/ImmutableEntitiesPlugin.d.cts.map +1 -0
- package/build/plugins/ImmutableEntitiesPlugin.d.mts +12 -0
- package/build/plugins/ImmutableEntitiesPlugin.d.mts.map +1 -0
- package/build/plugins/ImmutableEntitiesPlugin.js +19 -20
- package/build/plugins/ImmutableEntitiesPlugin.js.map +1 -1
- package/build/plugins/PreloadPlugin.cjs +3 -0
- package/build/plugins/PreloadPlugin.d.cts +77 -0
- package/build/plugins/PreloadPlugin.d.cts.map +1 -0
- package/build/plugins/PreloadPlugin.d.mts +77 -0
- package/build/plugins/PreloadPlugin.d.mts.map +1 -0
- package/build/plugins/PreloadPlugin.js +3 -3
- package/build/preloading/JsonAggregatePreloader.cjs +280 -0
- package/build/preloading/JsonAggregatePreloader.cjs.map +1 -0
- package/build/preloading/JsonAggregatePreloader.d.cts +19 -0
- package/build/preloading/JsonAggregatePreloader.d.cts.map +1 -0
- package/build/preloading/JsonAggregatePreloader.d.mts +19 -0
- package/build/preloading/JsonAggregatePreloader.d.mts.map +1 -0
- package/build/preloading/JsonAggregatePreloader.js +270 -320
- package/build/preloading/JsonAggregatePreloader.js.map +1 -1
- package/build/preloading/canPreload.cjs +19 -0
- package/build/preloading/canPreload.cjs.map +1 -0
- package/build/preloading/canPreload.d.cts +6 -0
- package/build/preloading/canPreload.d.cts.map +1 -0
- package/build/preloading/canPreload.d.mts +6 -0
- package/build/preloading/canPreload.d.mts.map +1 -0
- package/build/preloading/canPreload.js +15 -21
- package/build/preloading/canPreload.js.map +1 -1
- package/build/preloading/partitionHint.cjs +43 -0
- package/build/preloading/partitionHint.cjs.map +1 -0
- package/build/preloading/partitionHint.d.cts +8 -0
- package/build/preloading/partitionHint.d.cts.map +1 -0
- package/build/preloading/partitionHint.d.mts +8 -0
- package/build/preloading/partitionHint.d.mts.map +1 -0
- package/build/preloading/partitionHint.js +36 -56
- package/build/preloading/partitionHint.js.map +1 -1
- package/build/queries/ConditionBuilder.cjs +106 -0
- package/build/queries/ConditionBuilder.cjs.map +1 -0
- package/build/queries/ConditionBuilder.d.cts +31 -0
- package/build/queries/ConditionBuilder.d.cts.map +1 -0
- package/build/queries/ConditionBuilder.d.mts +31 -0
- package/build/queries/ConditionBuilder.d.mts.map +1 -0
- package/build/queries/ConditionBuilder.js +105 -0
- package/build/queries/ConditionBuilder.js.map +1 -0
- package/build/queries/conditions.cjs +15 -0
- package/build/queries/conditions.cjs.map +1 -0
- package/build/queries/conditions.d.cts +38 -0
- package/build/queries/conditions.d.cts.map +1 -0
- package/build/queries/conditions.d.mts +38 -0
- package/build/queries/conditions.d.mts.map +1 -0
- package/build/queries/conditions.js +13 -0
- package/build/queries/conditions.js.map +1 -0
- package/build/queries/entityQueryUtils.cjs +60 -0
- package/build/queries/entityQueryUtils.cjs.map +1 -0
- package/build/queries/entityQueryUtils.d.cts +19 -0
- package/build/queries/entityQueryUtils.d.cts.map +1 -0
- package/build/queries/entityQueryUtils.d.mts +19 -0
- package/build/queries/entityQueryUtils.d.mts.map +1 -0
- package/build/queries/entityQueryUtils.js +56 -0
- package/build/queries/entityQueryUtils.js.map +1 -0
- package/build/queries/find/Aliases.cjs +301 -0
- package/build/queries/find/Aliases.cjs.map +1 -0
- package/build/queries/find/Aliases.d.cts +122 -0
- package/build/queries/find/Aliases.d.cts.map +1 -0
- package/build/queries/find/Aliases.d.mts +122 -0
- package/build/queries/find/Aliases.d.mts.map +1 -0
- package/build/queries/find/Aliases.js +293 -0
- package/build/queries/find/Aliases.js.map +1 -0
- package/build/queries/find/DeferredAlias.cjs +25 -0
- package/build/queries/find/DeferredAlias.cjs.map +1 -0
- package/build/queries/find/DeferredAlias.d.cts +22 -0
- package/build/queries/find/DeferredAlias.d.cts.map +1 -0
- package/build/queries/find/DeferredAlias.d.mts +22 -0
- package/build/queries/find/DeferredAlias.d.mts.map +1 -0
- package/build/queries/find/DeferredAlias.js +22 -0
- package/build/queries/find/DeferredAlias.js.map +1 -0
- package/build/queries/find/EntityFilter.cjs +27 -0
- package/build/queries/find/EntityFilter.cjs.map +1 -0
- package/build/queries/find/EntityFilter.d.cts +127 -0
- package/build/queries/find/EntityFilter.d.cts.map +1 -0
- package/build/queries/find/EntityFilter.d.mts +127 -0
- package/build/queries/find/EntityFilter.d.mts.map +1 -0
- package/build/queries/find/EntityFilter.js +26 -0
- package/build/queries/find/EntityFilter.js.map +1 -0
- package/build/queries/find/EntityGraphQLFilter.cjs +52 -0
- package/build/queries/find/EntityGraphQLFilter.cjs.map +1 -0
- package/build/queries/find/EntityGraphQLFilter.d.cts +59 -0
- package/build/queries/find/EntityGraphQLFilter.d.cts.map +1 -0
- package/build/queries/find/EntityGraphQLFilter.d.mts +59 -0
- package/build/queries/find/EntityGraphQLFilter.d.mts.map +1 -0
- package/build/queries/find/EntityGraphQLFilter.js +50 -0
- package/build/queries/find/EntityGraphQLFilter.js.map +1 -0
- package/build/queries/find/QueryParser.cjs +553 -0
- package/build/queries/find/QueryParser.cjs.map +1 -0
- package/build/queries/find/QueryParser.collectionJoins.cjs +353 -0
- package/build/queries/find/QueryParser.collectionJoins.cjs.map +1 -0
- package/build/queries/find/QueryParser.collectionJoins.d.cts +30 -0
- package/build/queries/find/QueryParser.collectionJoins.d.cts.map +1 -0
- package/build/queries/find/QueryParser.collectionJoins.d.mts +30 -0
- package/build/queries/find/QueryParser.collectionJoins.d.mts.map +1 -0
- package/build/queries/find/QueryParser.collectionJoins.js +352 -0
- package/build/queries/find/QueryParser.collectionJoins.js.map +1 -0
- package/build/queries/find/QueryParser.d.cts +192 -0
- package/build/queries/find/QueryParser.d.cts.map +1 -0
- package/build/queries/find/QueryParser.d.mts +192 -0
- package/build/queries/find/QueryParser.d.mts.map +1 -0
- package/build/queries/find/QueryParser.js +546 -0
- package/build/queries/find/QueryParser.js.map +1 -0
- package/build/queries/find/QueryParser.pruning.cjs +115 -0
- package/build/queries/find/QueryParser.pruning.cjs.map +1 -0
- package/build/queries/find/QueryParser.pruning.d.cts +8 -0
- package/build/queries/find/QueryParser.pruning.d.cts.map +1 -0
- package/build/queries/find/QueryParser.pruning.d.mts +8 -0
- package/build/queries/find/QueryParser.pruning.d.mts.map +1 -0
- package/build/queries/find/QueryParser.pruning.js +113 -0
- package/build/queries/find/QueryParser.pruning.js.map +1 -0
- package/build/queries/find/QueryVisitor.cjs +77 -0
- package/build/queries/find/QueryVisitor.cjs.map +1 -0
- package/build/queries/find/QueryVisitor.d.cts +24 -0
- package/build/queries/find/QueryVisitor.d.cts.map +1 -0
- package/build/queries/find/QueryVisitor.d.mts +24 -0
- package/build/queries/find/QueryVisitor.d.mts.map +1 -0
- package/build/queries/find/QueryVisitor.js +74 -0
- package/build/queries/find/QueryVisitor.js.map +1 -0
- package/build/queries/find/buildFindQuery.cjs +112 -0
- package/build/queries/find/buildFindQuery.cjs.map +1 -0
- package/build/queries/find/buildFindQuery.d.cts +24 -0
- package/build/queries/find/buildFindQuery.d.cts.map +1 -0
- package/build/queries/find/buildFindQuery.d.mts +24 -0
- package/build/queries/find/buildFindQuery.d.mts.map +1 -0
- package/build/queries/find/buildFindQuery.js +110 -0
- package/build/queries/find/buildFindQuery.js.map +1 -0
- package/build/queries/find/scopes.cjs +301 -0
- package/build/queries/find/scopes.cjs.map +1 -0
- package/build/queries/find/scopes.d.cts +188 -0
- package/build/queries/find/scopes.d.cts.map +1 -0
- package/build/queries/find/scopes.d.mts +188 -0
- package/build/queries/find/scopes.d.mts.map +1 -0
- package/build/queries/find/scopes.js +296 -0
- package/build/queries/find/scopes.js.map +1 -0
- package/build/queries/parsedConditions.cjs +21 -0
- package/build/queries/parsedConditions.cjs.map +1 -0
- package/build/queries/parsedConditions.d.cts +127 -0
- package/build/queries/parsedConditions.d.cts.map +1 -0
- package/build/queries/parsedConditions.d.mts +127 -0
- package/build/queries/parsedConditions.d.mts.map +1 -0
- package/build/queries/parsedConditions.js +20 -0
- package/build/queries/parsedConditions.js.map +1 -0
- package/build/queries/renderConditions.cjs +66 -0
- package/build/queries/renderConditions.cjs.map +1 -0
- package/build/queries/renderConditions.d.cts +15 -0
- package/build/queries/renderConditions.d.cts.map +1 -0
- package/build/queries/renderConditions.d.mts +15 -0
- package/build/queries/renderConditions.d.mts.map +1 -0
- package/build/queries/renderConditions.js +64 -0
- package/build/queries/renderConditions.js.map +1 -0
- package/build/queries/skipCondition.cjs +14 -0
- package/build/queries/skipCondition.cjs.map +1 -0
- package/build/queries/skipCondition.d.cts +7 -0
- package/build/queries/skipCondition.d.cts.map +1 -0
- package/build/queries/skipCondition.d.mts +7 -0
- package/build/queries/skipCondition.d.mts.map +1 -0
- package/build/queries/skipCondition.js +13 -0
- package/build/queries/skipCondition.js.map +1 -0
- package/build/queries/sql/AliasAssigner.cjs +35 -0
- package/build/queries/sql/AliasAssigner.cjs.map +1 -0
- package/build/queries/sql/AliasAssigner.d.cts +13 -0
- package/build/queries/sql/AliasAssigner.d.cts.map +1 -0
- package/build/queries/sql/AliasAssigner.d.mts +13 -0
- package/build/queries/sql/AliasAssigner.d.mts.map +1 -0
- package/build/queries/sql/AliasAssigner.js +34 -0
- package/build/queries/sql/AliasAssigner.js.map +1 -0
- package/build/queries/sql/Expr.cjs +529 -0
- package/build/queries/sql/Expr.cjs.map +1 -0
- package/build/queries/sql/Expr.d.cts +284 -0
- package/build/queries/sql/Expr.d.cts.map +1 -0
- package/build/queries/sql/Expr.d.mts +284 -0
- package/build/queries/sql/Expr.d.mts.map +1 -0
- package/build/queries/sql/Expr.js +512 -0
- package/build/queries/sql/Expr.js.map +1 -0
- package/build/queries/sql/JoinTree.cjs +72 -0
- package/build/queries/sql/JoinTree.cjs.map +1 -0
- package/build/queries/sql/JoinTree.d.cts +107 -0
- package/build/queries/sql/JoinTree.d.cts.map +1 -0
- package/build/queries/sql/JoinTree.d.mts +107 -0
- package/build/queries/sql/JoinTree.d.mts.map +1 -0
- package/build/queries/sql/JoinTree.js +71 -0
- package/build/queries/sql/JoinTree.js.map +1 -0
- package/build/queries/sql/Tables.cjs +803 -0
- package/build/queries/sql/Tables.cjs.map +1 -0
- package/build/queries/sql/Tables.d.cts +322 -0
- package/build/queries/sql/Tables.d.cts.map +1 -0
- package/build/queries/sql/Tables.d.mts +322 -0
- package/build/queries/sql/Tables.d.mts.map +1 -0
- package/build/queries/sql/Tables.js +786 -0
- package/build/queries/sql/Tables.js.map +1 -0
- package/build/queries/sql/custom.cjs +52 -0
- package/build/queries/sql/custom.cjs.map +1 -0
- package/build/queries/sql/custom.d.cts +85 -0
- package/build/queries/sql/custom.d.cts.map +1 -0
- package/build/queries/sql/custom.d.mts +85 -0
- package/build/queries/sql/custom.d.mts.map +1 -0
- package/build/queries/sql/custom.js +49 -0
- package/build/queries/sql/custom.js.map +1 -0
- package/build/queries/sql/execute.cjs +276 -0
- package/build/queries/sql/execute.cjs.map +1 -0
- package/build/queries/sql/execute.d.cts +294 -0
- package/build/queries/sql/execute.d.cts.map +1 -0
- package/build/queries/sql/execute.d.mts +294 -0
- package/build/queries/sql/execute.d.mts.map +1 -0
- package/build/queries/sql/execute.js +273 -0
- package/build/queries/sql/execute.js.map +1 -0
- package/build/queries/sql/expressions/arrayAgg.cjs +63 -0
- package/build/queries/sql/expressions/arrayAgg.cjs.map +1 -0
- package/build/queries/sql/expressions/arrayAgg.d.cts +24 -0
- package/build/queries/sql/expressions/arrayAgg.d.cts.map +1 -0
- package/build/queries/sql/expressions/arrayAgg.d.mts +24 -0
- package/build/queries/sql/expressions/arrayAgg.d.mts.map +1 -0
- package/build/queries/sql/expressions/arrayAgg.js +61 -0
- package/build/queries/sql/expressions/arrayAgg.js.map +1 -0
- package/build/queries/sql/expressions/case.cjs +71 -0
- package/build/queries/sql/expressions/case.cjs.map +1 -0
- package/build/queries/sql/expressions/case.d.cts +57 -0
- package/build/queries/sql/expressions/case.d.cts.map +1 -0
- package/build/queries/sql/expressions/case.d.mts +57 -0
- package/build/queries/sql/expressions/case.d.mts.map +1 -0
- package/build/queries/sql/expressions/case.js +68 -0
- package/build/queries/sql/expressions/case.js.map +1 -0
- package/build/queries/sql/expressions/coalesce.cjs +25 -0
- package/build/queries/sql/expressions/coalesce.cjs.map +1 -0
- package/build/queries/sql/expressions/coalesce.d.cts +21 -0
- package/build/queries/sql/expressions/coalesce.d.cts.map +1 -0
- package/build/queries/sql/expressions/coalesce.d.mts +21 -0
- package/build/queries/sql/expressions/coalesce.d.mts.map +1 -0
- package/build/queries/sql/expressions/coalesce.js +22 -0
- package/build/queries/sql/expressions/coalesce.js.map +1 -0
- package/build/queries/sql/expressions/codecs.cjs +126 -0
- package/build/queries/sql/expressions/codecs.cjs.map +1 -0
- package/build/queries/sql/expressions/codecs.d.cts +11 -0
- package/build/queries/sql/expressions/codecs.d.cts.map +1 -0
- package/build/queries/sql/expressions/codecs.d.mts +11 -0
- package/build/queries/sql/expressions/codecs.d.mts.map +1 -0
- package/build/queries/sql/expressions/codecs.js +125 -0
- package/build/queries/sql/expressions/codecs.js.map +1 -0
- package/build/queries/sql/expressions/expression.cjs +102 -0
- package/build/queries/sql/expressions/expression.cjs.map +1 -0
- package/build/queries/sql/expressions/expression.d.cts +23 -0
- package/build/queries/sql/expressions/expression.d.cts.map +1 -0
- package/build/queries/sql/expressions/expression.d.mts +23 -0
- package/build/queries/sql/expressions/expression.d.mts.map +1 -0
- package/build/queries/sql/expressions/expression.js +97 -0
- package/build/queries/sql/expressions/expression.js.map +1 -0
- package/build/queries/sql/expressions/greatest.cjs +25 -0
- package/build/queries/sql/expressions/greatest.cjs.map +1 -0
- package/build/queries/sql/expressions/greatest.d.cts +21 -0
- package/build/queries/sql/expressions/greatest.d.cts.map +1 -0
- package/build/queries/sql/expressions/greatest.d.mts +21 -0
- package/build/queries/sql/expressions/greatest.d.mts.map +1 -0
- package/build/queries/sql/expressions/greatest.js +22 -0
- package/build/queries/sql/expressions/greatest.js.map +1 -0
- package/build/queries/sql/expressions/least.cjs +25 -0
- package/build/queries/sql/expressions/least.cjs.map +1 -0
- package/build/queries/sql/expressions/least.d.cts +21 -0
- package/build/queries/sql/expressions/least.d.cts.map +1 -0
- package/build/queries/sql/expressions/least.d.mts +21 -0
- package/build/queries/sql/expressions/least.d.mts.map +1 -0
- package/build/queries/sql/expressions/least.js +22 -0
- package/build/queries/sql/expressions/least.js.map +1 -0
- package/build/queries/sql/expressions/nullIf.cjs +27 -0
- package/build/queries/sql/expressions/nullIf.cjs.map +1 -0
- package/build/queries/sql/expressions/nullIf.d.cts +22 -0
- package/build/queries/sql/expressions/nullIf.d.cts.map +1 -0
- package/build/queries/sql/expressions/nullIf.d.mts +22 -0
- package/build/queries/sql/expressions/nullIf.d.mts.map +1 -0
- package/build/queries/sql/expressions/nullIf.js +24 -0
- package/build/queries/sql/expressions/nullIf.js.map +1 -0
- package/build/queries/sql/expressions/parseExpression.cjs +75 -0
- package/build/queries/sql/expressions/parseExpression.cjs.map +1 -0
- package/build/queries/sql/expressions/parseExpression.d.cts +19 -0
- package/build/queries/sql/expressions/parseExpression.d.cts.map +1 -0
- package/build/queries/sql/expressions/parseExpression.d.mts +19 -0
- package/build/queries/sql/expressions/parseExpression.d.mts.map +1 -0
- package/build/queries/sql/expressions/parseExpression.js +70 -0
- package/build/queries/sql/expressions/parseExpression.js.map +1 -0
- package/build/queries/sql/expressions/types.cjs +1 -0
- package/build/queries/sql/expressions/types.d.cts +114 -0
- package/build/queries/sql/expressions/types.d.cts.map +1 -0
- package/build/queries/sql/expressions/types.d.mts +114 -0
- package/build/queries/sql/expressions/types.d.mts.map +1 -0
- package/build/queries/sql/expressions/types.js +1 -0
- package/build/queries/sql/keywords.cjs +136 -0
- package/build/queries/sql/keywords.cjs.map +1 -0
- package/build/queries/sql/keywords.d.cts +18 -0
- package/build/queries/sql/keywords.d.cts.map +1 -0
- package/build/queries/sql/keywords.d.mts +18 -0
- package/build/queries/sql/keywords.d.mts.map +1 -0
- package/build/queries/sql/keywords.js +132 -0
- package/build/queries/sql/keywords.js.map +1 -0
- package/build/queries/sql/query.cjs +1610 -0
- package/build/queries/sql/query.cjs.map +1 -0
- package/build/queries/sql/query.d.cts +844 -0
- package/build/queries/sql/query.d.cts.map +1 -0
- package/build/queries/sql/query.d.mts +844 -0
- package/build/queries/sql/query.d.mts.map +1 -0
- package/build/queries/sql/query.js +1592 -0
- package/build/queries/sql/query.js.map +1 -0
- package/build/queries/unnest.cjs +62 -0
- package/build/queries/unnest.cjs.map +1 -0
- package/build/queries/unnest.d.cts +16 -0
- package/build/queries/unnest.d.cts.map +1 -0
- package/build/queries/unnest.d.mts +16 -0
- package/build/queries/unnest.d.mts.map +1 -0
- package/build/queries/unnest.js +60 -0
- package/build/queries/unnest.js.map +1 -0
- package/build/queries/valueFilters.cjs +240 -0
- package/build/queries/valueFilters.cjs.map +1 -0
- package/build/queries/valueFilters.d.cts +26 -0
- package/build/queries/valueFilters.d.cts.map +1 -0
- package/build/queries/valueFilters.d.mts +26 -0
- package/build/queries/valueFilters.d.mts.map +1 -0
- package/build/queries/valueFilters.js +236 -0
- package/build/queries/valueFilters.js.map +1 -0
- package/build/reactivity/ReactionsManager.cjs +264 -0
- package/build/reactivity/ReactionsManager.cjs.map +1 -0
- package/build/reactivity/ReactionsManager.d.cts +98 -0
- package/build/reactivity/ReactionsManager.d.cts.map +1 -0
- package/build/reactivity/ReactionsManager.d.mts +98 -0
- package/build/reactivity/ReactionsManager.d.mts.map +1 -0
- package/build/reactivity/ReactionsManager.js +263 -0
- package/build/reactivity/ReactionsManager.js.map +1 -0
- package/build/reactivity/reactiveHints.cjs +328 -0
- package/build/reactivity/reactiveHints.cjs.map +1 -0
- package/build/reactivity/reactiveHints.d.cts +143 -0
- package/build/reactivity/reactiveHints.d.cts.map +1 -0
- package/build/reactivity/reactiveHints.d.mts +143 -0
- package/build/reactivity/reactiveHints.d.mts.map +1 -0
- package/build/reactivity/reactiveHints.js +321 -0
- package/build/reactivity/reactiveHints.js.map +1 -0
- package/build/relations/AbstractPropertyImpl.cjs +16 -0
- package/build/relations/AbstractPropertyImpl.cjs.map +1 -0
- package/build/relations/AbstractPropertyImpl.d.cts +11 -0
- package/build/relations/AbstractPropertyImpl.d.cts.map +1 -0
- package/build/relations/AbstractPropertyImpl.d.mts +11 -0
- package/build/relations/AbstractPropertyImpl.d.mts.map +1 -0
- package/build/relations/AbstractPropertyImpl.js +13 -13
- package/build/relations/AbstractPropertyImpl.js.map +1 -1
- package/build/relations/AbstractRelationImpl.cjs +15 -0
- package/build/relations/AbstractRelationImpl.cjs.map +1 -0
- package/build/relations/AbstractRelationImpl.d.cts +43 -0
- package/build/relations/AbstractRelationImpl.d.cts.map +1 -0
- package/build/relations/AbstractRelationImpl.d.mts +43 -0
- package/build/relations/AbstractRelationImpl.d.mts.map +1 -0
- package/build/relations/AbstractRelationImpl.js +12 -17
- package/build/relations/AbstractRelationImpl.js.map +1 -1
- package/build/relations/AsyncProperty.cjs +75 -0
- package/build/relations/AsyncProperty.cjs.map +1 -0
- package/build/relations/AsyncProperty.d.cts +40 -0
- package/build/relations/AsyncProperty.d.cts.map +1 -0
- package/build/relations/AsyncProperty.d.mts +40 -0
- package/build/relations/AsyncProperty.d.mts.map +1 -0
- package/build/relations/AsyncProperty.js +61 -70
- package/build/relations/AsyncProperty.js.map +1 -1
- package/build/relations/AsyncReactiveField.cjs +110 -0
- package/build/relations/AsyncReactiveField.cjs.map +1 -0
- package/build/relations/AsyncReactiveField.d.cts +50 -0
- package/build/relations/AsyncReactiveField.d.cts.map +1 -0
- package/build/relations/AsyncReactiveField.d.mts +50 -0
- package/build/relations/AsyncReactiveField.d.mts.map +1 -0
- package/build/relations/AsyncReactiveField.js +97 -116
- package/build/relations/AsyncReactiveField.js.map +1 -1
- package/build/relations/Collection.cjs +23 -0
- package/build/relations/Collection.cjs.map +1 -0
- package/build/relations/Collection.d.cts +37 -0
- package/build/relations/Collection.d.cts.map +1 -0
- package/build/relations/Collection.d.mts +37 -0
- package/build/relations/Collection.d.mts.map +1 -0
- package/build/relations/Collection.js +14 -11
- package/build/relations/Collection.js.map +1 -1
- package/build/relations/CustomCollection.cjs +144 -0
- package/build/relations/CustomCollection.cjs.map +1 -0
- package/build/relations/CustomCollection.d.cts +74 -0
- package/build/relations/CustomCollection.d.cts.map +1 -0
- package/build/relations/CustomCollection.d.mts +74 -0
- package/build/relations/CustomCollection.d.mts.map +1 -0
- package/build/relations/CustomCollection.js +138 -162
- package/build/relations/CustomCollection.js.map +1 -1
- package/build/relations/CustomReference.cjs +142 -0
- package/build/relations/CustomReference.cjs.map +1 -0
- package/build/relations/CustomReference.d.cts +76 -0
- package/build/relations/CustomReference.d.cts.map +1 -0
- package/build/relations/CustomReference.d.mts +76 -0
- package/build/relations/CustomReference.d.mts.map +1 -0
- package/build/relations/CustomReference.js +135 -147
- package/build/relations/CustomReference.js.map +1 -1
- package/build/relations/EnumCollection.cjs +178 -0
- package/build/relations/EnumCollection.cjs.map +1 -0
- package/build/relations/EnumCollection.d.cts +86 -0
- package/build/relations/EnumCollection.d.cts.map +1 -0
- package/build/relations/EnumCollection.d.mts +86 -0
- package/build/relations/EnumCollection.d.mts.map +1 -0
- package/build/relations/EnumCollection.js +172 -207
- package/build/relations/EnumCollection.js.map +1 -1
- package/build/relations/LargeCollection.cjs +4 -0
- package/build/relations/LargeCollection.d.cts +22 -0
- package/build/relations/LargeCollection.d.cts.map +1 -0
- package/build/relations/LargeCollection.d.mts +22 -0
- package/build/relations/LargeCollection.d.mts.map +1 -0
- package/build/relations/LargeCollection.js +4 -3
- package/build/relations/LazyField.cjs +140 -0
- package/build/relations/LazyField.cjs.map +1 -0
- package/build/relations/LazyField.d.cts +51 -0
- package/build/relations/LazyField.d.cts.map +1 -0
- package/build/relations/LazyField.d.mts +51 -0
- package/build/relations/LazyField.d.mts.map +1 -0
- package/build/relations/LazyField.js +134 -0
- package/build/relations/LazyField.js.map +1 -0
- package/build/relations/ManyToManyCollection.cjs +421 -0
- package/build/relations/ManyToManyCollection.cjs.map +1 -0
- package/build/relations/ManyToManyCollection.d.cts +59 -0
- package/build/relations/ManyToManyCollection.d.cts.map +1 -0
- package/build/relations/ManyToManyCollection.d.mts +59 -0
- package/build/relations/ManyToManyCollection.d.mts.map +1 -0
- package/build/relations/ManyToManyCollection.js +411 -471
- package/build/relations/ManyToManyCollection.js.map +1 -1
- package/build/relations/ManyToManyLargeCollection.cjs +91 -0
- package/build/relations/ManyToManyLargeCollection.cjs.map +1 -0
- package/build/relations/ManyToManyLargeCollection.d.cts +34 -0
- package/build/relations/ManyToManyLargeCollection.d.cts.map +1 -0
- package/build/relations/ManyToManyLargeCollection.d.mts +34 -0
- package/build/relations/ManyToManyLargeCollection.d.mts.map +1 -0
- package/build/relations/ManyToManyLargeCollection.js +85 -118
- package/build/relations/ManyToManyLargeCollection.js.map +1 -1
- package/build/relations/ManyToOneReference.cjs +364 -0
- package/build/relations/ManyToOneReference.cjs.map +1 -0
- package/build/relations/ManyToOneReference.d.cts +121 -0
- package/build/relations/ManyToOneReference.d.cts.map +1 -0
- package/build/relations/ManyToOneReference.d.mts +121 -0
- package/build/relations/ManyToOneReference.d.mts.map +1 -0
- package/build/relations/ManyToOneReference.js +344 -411
- package/build/relations/ManyToOneReference.js.map +1 -1
- package/build/relations/OneToManyCollection.cjs +492 -0
- package/build/relations/OneToManyCollection.cjs.map +1 -0
- package/build/relations/OneToManyCollection.d.cts +69 -0
- package/build/relations/OneToManyCollection.d.cts.map +1 -0
- package/build/relations/OneToManyCollection.d.mts +69 -0
- package/build/relations/OneToManyCollection.d.mts.map +1 -0
- package/build/relations/OneToManyCollection.js +480 -579
- package/build/relations/OneToManyCollection.js.map +1 -1
- package/build/relations/OneToManyLargeCollection.cjs +85 -0
- package/build/relations/OneToManyLargeCollection.cjs.map +1 -0
- package/build/relations/OneToManyLargeCollection.d.cts +29 -0
- package/build/relations/OneToManyLargeCollection.d.cts.map +1 -0
- package/build/relations/OneToManyLargeCollection.d.mts +29 -0
- package/build/relations/OneToManyLargeCollection.d.mts.map +1 -0
- package/build/relations/OneToManyLargeCollection.js +79 -99
- package/build/relations/OneToManyLargeCollection.js.map +1 -1
- package/build/relations/OneToOneReference.cjs +209 -0
- package/build/relations/OneToOneReference.cjs.map +1 -0
- package/build/relations/OneToOneReference.d.cts +97 -0
- package/build/relations/OneToOneReference.d.cts.map +1 -0
- package/build/relations/OneToOneReference.d.mts +97 -0
- package/build/relations/OneToOneReference.d.mts.map +1 -0
- package/build/relations/OneToOneReference.js +193 -221
- package/build/relations/OneToOneReference.js.map +1 -1
- package/build/relations/PolymorphicReference.cjs +210 -0
- package/build/relations/PolymorphicReference.cjs.map +1 -0
- package/build/relations/PolymorphicReference.d.cts +93 -0
- package/build/relations/PolymorphicReference.d.cts.map +1 -0
- package/build/relations/PolymorphicReference.d.mts +93 -0
- package/build/relations/PolymorphicReference.d.mts.map +1 -0
- package/build/relations/PolymorphicReference.js +200 -237
- package/build/relations/PolymorphicReference.js.map +1 -1
- package/build/relations/PropertySymbols.cjs +7 -0
- package/build/relations/PropertySymbols.cjs.map +1 -0
- package/build/relations/PropertySymbols.d.cts +5 -0
- package/build/relations/PropertySymbols.d.cts.map +1 -0
- package/build/relations/PropertySymbols.d.mts +5 -0
- package/build/relations/PropertySymbols.d.mts.map +1 -0
- package/build/relations/PropertySymbols.js +6 -0
- package/build/relations/PropertySymbols.js.map +1 -0
- package/build/relations/ReactiveField.cjs +114 -0
- package/build/relations/ReactiveField.cjs.map +1 -0
- package/build/relations/ReactiveField.d.cts +88 -0
- package/build/relations/ReactiveField.d.cts.map +1 -0
- package/build/relations/ReactiveField.d.mts +88 -0
- package/build/relations/ReactiveField.d.mts.map +1 -0
- package/build/relations/ReactiveField.js +104 -137
- package/build/relations/ReactiveField.js.map +1 -1
- package/build/relations/ReactiveGetter.cjs +40 -0
- package/build/relations/ReactiveGetter.cjs.map +1 -0
- package/build/relations/ReactiveGetter.d.cts +33 -0
- package/build/relations/ReactiveGetter.d.cts.map +1 -0
- package/build/relations/ReactiveGetter.d.mts +33 -0
- package/build/relations/ReactiveGetter.d.mts.map +1 -0
- package/build/relations/ReactiveGetter.js +30 -31
- package/build/relations/ReactiveGetter.js.map +1 -1
- package/build/relations/ReactiveManyToMany.cjs +198 -0
- package/build/relations/ReactiveManyToMany.cjs.map +1 -0
- package/build/relations/ReactiveManyToMany.d.cts +63 -0
- package/build/relations/ReactiveManyToMany.d.cts.map +1 -0
- package/build/relations/ReactiveManyToMany.d.mts +63 -0
- package/build/relations/ReactiveManyToMany.d.mts.map +1 -0
- package/build/relations/ReactiveManyToMany.js +187 -238
- package/build/relations/ReactiveManyToMany.js.map +1 -1
- package/build/relations/ReactiveManyToManyOtherSide.cjs +148 -0
- package/build/relations/ReactiveManyToManyOtherSide.cjs.map +1 -0
- package/build/relations/ReactiveManyToManyOtherSide.d.cts +53 -0
- package/build/relations/ReactiveManyToManyOtherSide.d.cts.map +1 -0
- package/build/relations/ReactiveManyToManyOtherSide.d.mts +53 -0
- package/build/relations/ReactiveManyToManyOtherSide.d.mts.map +1 -0
- package/build/relations/ReactiveManyToManyOtherSide.js +139 -152
- package/build/relations/ReactiveManyToManyOtherSide.js.map +1 -1
- package/build/relations/ReactiveReference.cjs +336 -0
- package/build/relations/ReactiveReference.cjs.map +1 -0
- package/build/relations/ReactiveReference.d.cts +124 -0
- package/build/relations/ReactiveReference.d.cts.map +1 -0
- package/build/relations/ReactiveReference.d.mts +124 -0
- package/build/relations/ReactiveReference.d.mts.map +1 -0
- package/build/relations/ReactiveReference.js +321 -385
- package/build/relations/ReactiveReference.js.map +1 -1
- package/build/relations/ReadOnlyCollection.cjs +18 -0
- package/build/relations/ReadOnlyCollection.cjs.map +1 -0
- package/build/relations/ReadOnlyCollection.d.cts +22 -0
- package/build/relations/ReadOnlyCollection.d.cts.map +1 -0
- package/build/relations/ReadOnlyCollection.d.mts +22 -0
- package/build/relations/ReadOnlyCollection.d.mts.map +1 -0
- package/build/relations/ReadOnlyCollection.js +9 -9
- package/build/relations/ReadOnlyCollection.js.map +1 -1
- package/build/relations/RecursiveCollection.cjs +386 -0
- package/build/relations/RecursiveCollection.cjs.map +1 -0
- package/build/relations/RecursiveCollection.d.cts +112 -0
- package/build/relations/RecursiveCollection.d.cts.map +1 -0
- package/build/relations/RecursiveCollection.d.mts +112 -0
- package/build/relations/RecursiveCollection.d.mts.map +1 -0
- package/build/relations/RecursiveCollection.js +367 -427
- package/build/relations/RecursiveCollection.js.map +1 -1
- package/build/relations/RecursiveCycleError.cjs +17 -0
- package/build/relations/RecursiveCycleError.cjs.map +1 -0
- package/build/relations/RecursiveCycleError.d.cts +15 -0
- package/build/relations/RecursiveCycleError.d.cts.map +1 -0
- package/build/relations/RecursiveCycleError.d.mts +15 -0
- package/build/relations/RecursiveCycleError.d.mts.map +1 -0
- package/build/relations/RecursiveCycleError.js +14 -13
- package/build/relations/RecursiveCycleError.js.map +1 -1
- package/build/relations/Reference.cjs +25 -0
- package/build/relations/Reference.cjs.map +1 -0
- package/build/relations/Reference.d.cts +39 -0
- package/build/relations/Reference.d.cts.map +1 -0
- package/build/relations/Reference.d.mts +39 -0
- package/build/relations/Reference.d.mts.map +1 -0
- package/build/relations/Reference.js +15 -14
- package/build/relations/Reference.js.map +1 -1
- package/build/relations/ReferenceSymbols.cjs +7 -0
- package/build/relations/ReferenceSymbols.cjs.map +1 -0
- package/build/relations/ReferenceSymbols.d.cts +5 -0
- package/build/relations/ReferenceSymbols.d.cts.map +1 -0
- package/build/relations/ReferenceSymbols.d.mts +5 -0
- package/build/relations/ReferenceSymbols.d.mts.map +1 -0
- package/build/relations/ReferenceSymbols.js +6 -0
- package/build/relations/ReferenceSymbols.js.map +1 -0
- package/build/relations/Relation.cjs +17 -0
- package/build/relations/Relation.cjs.map +1 -0
- package/build/relations/Relation.d.cts +16 -0
- package/build/relations/Relation.d.cts.map +1 -0
- package/build/relations/Relation.d.mts +16 -0
- package/build/relations/Relation.d.mts.map +1 -0
- package/build/relations/Relation.js +10 -8
- package/build/relations/Relation.js.map +1 -1
- package/build/relations/RelationSymbols.cjs +9 -0
- package/build/relations/RelationSymbols.cjs.map +1 -0
- package/build/relations/RelationSymbols.d.cts +6 -0
- package/build/relations/RelationSymbols.d.cts.map +1 -0
- package/build/relations/RelationSymbols.d.mts +6 -0
- package/build/relations/RelationSymbols.d.mts.map +1 -0
- package/build/relations/RelationSymbols.js +7 -0
- package/build/relations/RelationSymbols.js.map +1 -0
- package/build/relations/hasAsyncMethod.cjs +47 -0
- package/build/relations/hasAsyncMethod.cjs.map +1 -0
- package/build/relations/hasAsyncMethod.d.cts +29 -0
- package/build/relations/hasAsyncMethod.d.cts.map +1 -0
- package/build/relations/hasAsyncMethod.d.mts +29 -0
- package/build/relations/hasAsyncMethod.d.mts.map +1 -0
- package/build/relations/hasAsyncMethod.js +40 -43
- package/build/relations/hasAsyncMethod.js.map +1 -1
- package/build/relations/hasManyDerived.cjs +35 -0
- package/build/relations/hasManyDerived.cjs.map +1 -0
- package/build/relations/hasManyDerived.d.cts +25 -0
- package/build/relations/hasManyDerived.d.cts.map +1 -0
- package/build/relations/hasManyDerived.d.mts +25 -0
- package/build/relations/hasManyDerived.d.mts.map +1 -0
- package/build/relations/hasManyDerived.js +30 -28
- package/build/relations/hasManyDerived.js.map +1 -1
- package/build/relations/hasManyThrough.cjs +29 -0
- package/build/relations/hasManyThrough.cjs.map +1 -0
- package/build/relations/hasManyThrough.d.cts +16 -0
- package/build/relations/hasManyThrough.d.cts.map +1 -0
- package/build/relations/hasManyThrough.d.mts +16 -0
- package/build/relations/hasManyThrough.d.mts.map +1 -0
- package/build/relations/hasManyThrough.js +24 -20
- package/build/relations/hasManyThrough.js.map +1 -1
- package/build/relations/hasOneDerived.cjs +32 -0
- package/build/relations/hasOneDerived.cjs.map +1 -0
- package/build/relations/hasOneDerived.d.cts +15 -0
- package/build/relations/hasOneDerived.d.cts.map +1 -0
- package/build/relations/hasOneDerived.d.mts +15 -0
- package/build/relations/hasOneDerived.d.mts.map +1 -0
- package/build/relations/hasOneDerived.js +27 -20
- package/build/relations/hasOneDerived.js.map +1 -1
- package/build/relations/hasOneThrough.cjs +31 -0
- package/build/relations/hasOneThrough.cjs.map +1 -0
- package/build/relations/hasOneThrough.d.cts +16 -0
- package/build/relations/hasOneThrough.d.cts.map +1 -0
- package/build/relations/hasOneThrough.d.mts +16 -0
- package/build/relations/hasOneThrough.d.mts.map +1 -0
- package/build/relations/hasOneThrough.js +26 -22
- package/build/relations/hasOneThrough.js.map +1 -1
- package/build/relations/hasProperty.cjs +109 -0
- package/build/relations/hasProperty.cjs.map +1 -0
- package/build/relations/hasProperty.d.cts +53 -0
- package/build/relations/hasProperty.d.cts.map +1 -0
- package/build/relations/hasProperty.d.mts +53 -0
- package/build/relations/hasProperty.d.mts.map +1 -0
- package/build/relations/hasProperty.js +90 -95
- package/build/relations/hasProperty.js.map +1 -1
- package/build/relations/index.cjs +99 -0
- package/build/relations/index.d.cts +32 -0
- package/build/relations/index.d.mts +32 -0
- package/build/relations/index.js +31 -97
- package/build/relations/isCascadeDelete.cjs +11 -0
- package/build/relations/isCascadeDelete.cjs.map +1 -0
- package/build/relations/isCascadeDelete.d.cts +7 -0
- package/build/relations/isCascadeDelete.d.cts.map +1 -0
- package/build/relations/isCascadeDelete.d.mts +7 -0
- package/build/relations/isCascadeDelete.d.mts.map +1 -0
- package/build/relations/isCascadeDelete.js +10 -0
- package/build/relations/isCascadeDelete.js.map +1 -0
- package/build/resurrection.cjs +74 -0
- package/build/resurrection.cjs.map +1 -0
- package/build/resurrection.d.cts +13 -0
- package/build/resurrection.d.cts.map +1 -0
- package/build/resurrection.d.mts +13 -0
- package/build/resurrection.d.mts.map +1 -0
- package/build/resurrection.js +48 -69
- package/build/resurrection.js.map +1 -1
- package/build/rules.cjs +227 -0
- package/build/rules.cjs.map +1 -0
- package/build/rules.d.cts +145 -0
- package/build/rules.d.cts.map +1 -0
- package/build/rules.d.mts +145 -0
- package/build/rules.d.mts.map +1 -0
- package/build/rules.js +189 -204
- package/build/rules.js.map +1 -1
- package/build/runtimeConfig.cjs +25 -0
- package/build/runtimeConfig.cjs.map +1 -0
- package/build/runtimeConfig.d.cts +24 -0
- package/build/runtimeConfig.d.cts.map +1 -0
- package/build/runtimeConfig.d.mts +24 -0
- package/build/runtimeConfig.d.mts.map +1 -0
- package/build/runtimeConfig.js +16 -12
- package/build/runtimeConfig.js.map +1 -1
- package/build/serde/TypeInfo.cjs +80 -0
- package/build/serde/TypeInfo.cjs.map +1 -0
- package/build/serde/TypeInfo.d.cts +57 -0
- package/build/serde/TypeInfo.d.cts.map +1 -0
- package/build/serde/TypeInfo.d.mts +57 -0
- package/build/serde/TypeInfo.d.mts.map +1 -0
- package/build/serde/TypeInfo.js +78 -0
- package/build/serde/TypeInfo.js.map +1 -0
- package/build/serde/columns.cjs +63 -0
- package/build/serde/columns.cjs.map +1 -0
- package/build/serde/columns.d.cts +38 -0
- package/build/serde/columns.d.cts.map +1 -0
- package/build/serde/columns.d.mts +38 -0
- package/build/serde/columns.d.mts.map +1 -0
- package/build/serde/columns.js +62 -0
- package/build/serde/columns.js.map +1 -0
- package/build/serde/fieldSerde.cjs +188 -0
- package/build/serde/fieldSerde.cjs.map +1 -0
- package/build/serde/fieldSerde.d.cts +87 -0
- package/build/serde/fieldSerde.d.cts.map +1 -0
- package/build/serde/fieldSerde.d.mts +87 -0
- package/build/serde/fieldSerde.d.mts.map +1 -0
- package/build/serde/fieldSerde.js +182 -0
- package/build/serde/fieldSerde.js.map +1 -0
- package/build/serde/serde.cjs +499 -0
- package/build/serde/serde.cjs.map +1 -0
- package/build/serde/serde.d.cts +248 -0
- package/build/serde/serde.d.cts.map +1 -0
- package/build/serde/serde.d.mts +248 -0
- package/build/serde/serde.d.mts.map +1 -0
- package/build/serde/serde.js +485 -0
- package/build/serde/serde.js.map +1 -0
- package/build/serde/temporal.cjs +57 -0
- package/build/serde/temporal.cjs.map +1 -0
- package/build/serde/temporal.d.cts +44 -0
- package/build/serde/temporal.d.cts.map +1 -0
- package/build/serde/temporal.d.mts +44 -0
- package/build/serde/temporal.d.mts.map +1 -0
- package/build/serde/temporal.js +55 -0
- package/build/serde/temporal.js.map +1 -0
- package/build/serde/temporalMappers.cjs +62 -0
- package/build/serde/temporalMappers.cjs.map +1 -0
- package/build/serde/temporalMappers.d.cts +36 -0
- package/build/serde/temporalMappers.d.cts.map +1 -0
- package/build/serde/temporalMappers.d.mts +36 -0
- package/build/serde/temporalMappers.d.mts.map +1 -0
- package/build/serde/temporalMappers.js +58 -0
- package/build/serde/temporalMappers.js.map +1 -0
- package/build/trusted.cjs +16 -0
- package/build/trusted.cjs.map +1 -0
- package/build/trusted.d.cts +8 -0
- package/build/trusted.d.cts.map +1 -0
- package/build/trusted.d.mts +8 -0
- package/build/trusted.d.mts.map +1 -0
- package/build/trusted.js +8 -8
- package/build/trusted.js.map +1 -1
- package/build/typeMap.cjs +3 -0
- package/build/typeMap.d.cts +88 -0
- package/build/typeMap.d.cts.map +1 -0
- package/build/typeMap.d.mts +88 -0
- package/build/typeMap.d.mts.map +1 -0
- package/build/typeMap.js +3 -3
- package/build/upsert.cjs +175 -0
- package/build/upsert.cjs.map +1 -0
- package/build/upsert.d.cts +42 -0
- package/build/upsert.d.cts.map +1 -0
- package/build/upsert.d.mts +42 -0
- package/build/upsert.d.mts.map +1 -0
- package/build/upsert.js +159 -274
- package/build/upsert.js.map +1 -1
- package/build/utils.cjs +204 -0
- package/build/utils.cjs.map +1 -0
- package/build/utils.d.cts +65 -0
- package/build/utils.d.cts.map +1 -0
- package/build/utils.d.mts +65 -0
- package/build/utils.d.mts.map +1 -0
- package/build/utils.js +123 -192
- package/build/utils.js.map +1 -1
- package/package.json +34 -14
- package/build/AliasAssigner.d.ts +0 -10
- package/build/AliasAssigner.d.ts.map +0 -1
- package/build/AliasAssigner.js +0 -39
- package/build/AliasAssigner.js.map +0 -1
- package/build/Aliases.d.ts +0 -117
- package/build/Aliases.d.ts.map +0 -1
- package/build/Aliases.js +0 -457
- package/build/Aliases.js.map +0 -1
- package/build/BaseEntity.d.ts +0 -68
- package/build/BaseEntity.d.ts.map +0 -1
- package/build/ConditionBuilder.d.ts +0 -29
- package/build/ConditionBuilder.d.ts.map +0 -1
- package/build/ConditionBuilder.js +0 -112
- package/build/ConditionBuilder.js.map +0 -1
- package/build/Entity.d.ts +0 -39
- package/build/Entity.d.ts.map +0 -1
- package/build/EntityFields.d.ts +0 -37
- package/build/EntityFields.d.ts.map +0 -1
- package/build/EntityFields.js.map +0 -1
- package/build/EntityFilter.d.ts +0 -134
- package/build/EntityFilter.d.ts.map +0 -1
- package/build/EntityFilter.js +0 -21
- package/build/EntityFilter.js.map +0 -1
- package/build/EntityGraphQLFilter.d.ts +0 -56
- package/build/EntityGraphQLFilter.d.ts.map +0 -1
- package/build/EntityGraphQLFilter.js +0 -53
- package/build/EntityGraphQLFilter.js.map +0 -1
- package/build/EntityManager.d.ts +0 -740
- package/build/EntityManager.d.ts.map +0 -1
- package/build/EntityMetadata.d.ts +0 -233
- package/build/EntityMetadata.d.ts.map +0 -1
- package/build/EnumMetadata.d.ts +0 -15
- package/build/EnumMetadata.d.ts.map +0 -1
- 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 -31
- package/build/IndexManager.d.ts.map +0 -1
- package/build/InstanceData.d.ts +0 -79
- package/build/InstanceData.d.ts.map +0 -1
- package/build/IsLoadedCache.d.ts +0 -32
- package/build/IsLoadedCache.d.ts.map +0 -1
- package/build/IsLoadedCache.js +0 -91
- package/build/IsLoadedCache.js.map +0 -1
- package/build/JoinRows.d.ts +0 -117
- package/build/JoinRows.d.ts.map +0 -1
- package/build/JoinRows.js +0 -320
- package/build/JoinRows.js.map +0 -1
- package/build/PendingChanges.d.ts +0 -26
- package/build/PendingChanges.d.ts.map +0 -1
- package/build/PendingChanges.js +0 -3
- package/build/PendingChanges.js.map +0 -1
- package/build/PluginManager.d.ts +0 -102
- package/build/PluginManager.d.ts.map +0 -1
- package/build/QueryParser.collectionJoins.d.ts +0 -27
- package/build/QueryParser.collectionJoins.d.ts.map +0 -1
- package/build/QueryParser.collectionJoins.js +0 -466
- package/build/QueryParser.collectionJoins.js.map +0 -1
- package/build/QueryParser.collectionJoins.test.d.ts +0 -2
- package/build/QueryParser.collectionJoins.test.d.ts.map +0 -1
- package/build/QueryParser.collectionJoins.test.js +0 -772
- package/build/QueryParser.collectionJoins.test.js.map +0 -1
- package/build/QueryParser.d.ts +0 -336
- package/build/QueryParser.d.ts.map +0 -1
- package/build/QueryParser.js +0 -965
- package/build/QueryParser.js.map +0 -1
- package/build/QueryParser.pruning.d.ts +0 -7
- package/build/QueryParser.pruning.d.ts.map +0 -1
- package/build/QueryParser.pruning.js +0 -195
- package/build/QueryParser.pruning.js.map +0 -1
- package/build/QueryParser.pruning.test.d.ts +0 -2
- package/build/QueryParser.pruning.test.d.ts.map +0 -1
- package/build/QueryParser.pruning.test.js +0 -106
- package/build/QueryParser.pruning.test.js.map +0 -1
- package/build/QueryParser.test.d.ts +0 -2
- package/build/QueryParser.test.d.ts.map +0 -1
- package/build/QueryParser.test.js +0 -27
- package/build/QueryParser.test.js.map +0 -1
- package/build/QueryVisitor.d.ts +0 -19
- package/build/QueryVisitor.d.ts.map +0 -1
- package/build/QueryVisitor.js +0 -106
- package/build/QueryVisitor.js.map +0 -1
- package/build/ReactionsManager.d.ts +0 -85
- package/build/ReactionsManager.d.ts.map +0 -1
- package/build/ReactionsManager.js +0 -315
- package/build/ReactionsManager.js.map +0 -1
- package/build/Todo.d.ts +0 -35
- package/build/Todo.d.ts.map +0 -1
- package/build/Todo.js +0 -73
- package/build/Todo.js.map +0 -1
- package/build/batchloaders/BatchLoader.d.ts +0 -14
- package/build/batchloaders/BatchLoader.d.ts.map +0 -1
- package/build/batchloaders/enumCollectionBatchLoader.d.ts +0 -7
- package/build/batchloaders/enumCollectionBatchLoader.d.ts.map +0 -1
- package/build/batchloaders/loadBatchLoader.d.ts +0 -17
- package/build/batchloaders/loadBatchLoader.d.ts.map +0 -1
- package/build/batchloaders/manyToManyBatchLoader.d.ts +0 -7
- package/build/batchloaders/manyToManyBatchLoader.d.ts.map +0 -1
- package/build/batchloaders/oneToManyBatchLoader.d.ts +0 -7
- package/build/batchloaders/oneToManyBatchLoader.d.ts.map +0 -1
- package/build/batchloaders/oneToOneBatchLoader.d.ts +0 -7
- package/build/batchloaders/oneToOneBatchLoader.d.ts.map +0 -1
- package/build/batchloaders/populateBatchLoader.d.ts +0 -13
- package/build/batchloaders/populateBatchLoader.d.ts.map +0 -1
- package/build/batchloaders/recursiveChildrenBatchLoader.d.ts +0 -7
- package/build/batchloaders/recursiveChildrenBatchLoader.d.ts.map +0 -1
- package/build/batchloaders/recursiveM2mBatchLoader.d.ts +0 -7
- package/build/batchloaders/recursiveM2mBatchLoader.d.ts.map +0 -1
- package/build/batchloaders/recursiveParentsBatchLoader.d.ts +0 -7
- package/build/batchloaders/recursiveParentsBatchLoader.d.ts.map +0 -1
- package/build/changes.d.ts +0 -92
- package/build/changes.d.ts.map +0 -1
- package/build/config.d.ts +0 -250
- package/build/config.d.ts.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 -15
- package/build/configure.d.ts.map +0 -1
- package/build/dataloaders/fastWhereFilterHash.d.ts +0 -15
- package/build/dataloaders/fastWhereFilterHash.d.ts.map +0 -1
- package/build/dataloaders/fastWhereFilterHash.test.d.ts +0 -2
- package/build/dataloaders/fastWhereFilterHash.test.d.ts.map +0 -1
- package/build/dataloaders/fastWhereFilterHash.test.js +0 -59
- package/build/dataloaders/fastWhereFilterHash.test.js.map +0 -1
- package/build/dataloaders/findByUniqueDataLoader.d.ts +0 -7
- package/build/dataloaders/findByUniqueDataLoader.d.ts.map +0 -1
- package/build/dataloaders/findCountDataLoader.d.ts +0 -16
- package/build/dataloaders/findCountDataLoader.d.ts.map +0 -1
- package/build/dataloaders/findDataLoader.d.ts +0 -76
- package/build/dataloaders/findDataLoader.d.ts.map +0 -1
- package/build/dataloaders/findIdsDataLoader.d.ts +0 -6
- package/build/dataloaders/findIdsDataLoader.d.ts.map +0 -1
- package/build/dataloaders/findOrCreateDataLoader.d.ts +0 -13
- package/build/dataloaders/findOrCreateDataLoader.d.ts.map +0 -1
- package/build/dataloaders/findPaginatedDataLoader.d.ts +0 -7
- package/build/dataloaders/findPaginatedDataLoader.d.ts.map +0 -1
- package/build/dataloaders/lensDataLoader.d.ts +0 -12
- package/build/dataloaders/lensDataLoader.d.ts.map +0 -1
- package/build/dataloaders/manyToManyFindDataLoader.d.ts +0 -8
- package/build/dataloaders/manyToManyFindDataLoader.d.ts.map +0 -1
- package/build/dataloaders/oneToManyFindDataLoader.d.ts +0 -8
- package/build/dataloaders/oneToManyFindDataLoader.d.ts.map +0 -1
- package/build/defaults.d.ts +0 -54
- package/build/defaults.d.ts.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.map +0 -1
- package/build/drivers/EntityWriter.d.ts +0 -64
- package/build/drivers/EntityWriter.d.ts.map +0 -1
- package/build/drivers/IdAssigner.d.ts +0 -48
- package/build/drivers/IdAssigner.d.ts.map +0 -1
- package/build/drivers/buildRawQuery.d.ts +0 -22
- package/build/drivers/buildRawQuery.d.ts.map +0 -1
- package/build/drivers/buildRawQuery.js +0 -153
- package/build/drivers/buildRawQuery.js.map +0 -1
- package/build/drivers/buildUtils.d.ts +0 -9
- package/build/drivers/buildUtils.d.ts.map +0 -1
- package/build/drivers/buildUtils.js +0 -88
- package/build/drivers/buildUtils.js.map +0 -1
- package/build/drivers/index.d.ts +0 -6
- package/build/drivers/index.d.ts.map +0 -1
- package/build/drivers/index.js.map +0 -1
- package/build/fields.d.ts +0 -26
- package/build/fields.d.ts.map +0 -1
- package/build/getProperties.d.ts +0 -28
- package/build/getProperties.d.ts.map +0 -1
- package/build/index.d.ts +0 -133
- package/build/index.d.ts.map +0 -1
- package/build/json.d.ts +0 -77
- package/build/json.d.ts.map +0 -1
- package/build/k.d.ts +0 -2
- package/build/k.d.ts.map +0 -1
- package/build/keys.d.ts +0 -49
- package/build/keys.d.ts.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 -121
- package/build/loadHints.d.ts.map +0 -1
- package/build/loadHints.js +0 -129
- package/build/loadHints.js.map +0 -1
- package/build/loadLens.d.ts +0 -77
- package/build/loadLens.d.ts.map +0 -1
- package/build/loadLens.js +0 -320
- 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/FieldLogger.d.ts +0 -27
- package/build/logging/FieldLogger.d.ts.map +0 -1
- package/build/logging/ReactionLogger.d.ts +0 -27
- package/build/logging/ReactionLogger.d.ts.map +0 -1
- package/build/newEntity.d.ts +0 -45
- package/build/newEntity.d.ts.map +0 -1
- package/build/newTestInstance.d.ts +0 -208
- package/build/newTestInstance.d.ts.map +0 -1
- package/build/normalizeHints.d.ts +0 -23
- package/build/normalizeHints.d.ts.map +0 -1
- package/build/plugins/ImmutableEntitiesPlugin.d.ts +0 -9
- package/build/plugins/ImmutableEntitiesPlugin.d.ts.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.map +0 -1
- package/build/preloading/JsonAggregatePreloader.d.ts +0 -16
- package/build/preloading/JsonAggregatePreloader.d.ts.map +0 -1
- package/build/preloading/canPreload.d.ts +0 -3
- package/build/preloading/canPreload.d.ts.map +0 -1
- package/build/preloading/partitionHint.d.ts +0 -5
- package/build/preloading/partitionHint.d.ts.map +0 -1
- package/build/reactiveHints.d.ts +0 -146
- package/build/reactiveHints.d.ts.map +0 -1
- package/build/reactiveHints.js +0 -509
- 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/AbstractRelationImpl.d.ts +0 -41
- package/build/relations/AbstractRelationImpl.d.ts.map +0 -1
- package/build/relations/AsyncProperty.d.ts +0 -36
- package/build/relations/AsyncProperty.d.ts.map +0 -1
- package/build/relations/AsyncReactiveField.d.ts +0 -41
- package/build/relations/AsyncReactiveField.d.ts.map +0 -1
- package/build/relations/Collection.d.ts +0 -33
- package/build/relations/Collection.d.ts.map +0 -1
- package/build/relations/CustomCollection.d.ts +0 -69
- package/build/relations/CustomCollection.d.ts.map +0 -1
- package/build/relations/CustomReference.d.ts +0 -71
- package/build/relations/CustomReference.d.ts.map +0 -1
- package/build/relations/EnumCollection.d.ts +0 -81
- package/build/relations/EnumCollection.d.ts.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.map +0 -1
- package/build/relations/ManyToManyCollection.d.ts +0 -52
- package/build/relations/ManyToManyCollection.d.ts.map +0 -1
- package/build/relations/ManyToManyLargeCollection.d.ts +0 -31
- package/build/relations/ManyToManyLargeCollection.d.ts.map +0 -1
- package/build/relations/ManyToOneReference.d.ts +0 -117
- package/build/relations/ManyToOneReference.d.ts.map +0 -1
- package/build/relations/OneToManyCollection.d.ts +0 -62
- package/build/relations/OneToManyCollection.d.ts.map +0 -1
- package/build/relations/OneToManyLargeCollection.d.ts +0 -26
- package/build/relations/OneToManyLargeCollection.d.ts.map +0 -1
- package/build/relations/OneToOneReference.d.ts +0 -93
- package/build/relations/OneToOneReference.d.ts.map +0 -1
- package/build/relations/PolymorphicReference.d.ts +0 -89
- package/build/relations/PolymorphicReference.d.ts.map +0 -1
- package/build/relations/ReactiveField.d.ts +0 -85
- package/build/relations/ReactiveField.d.ts.map +0 -1
- package/build/relations/ReactiveGetter.d.ts +0 -30
- package/build/relations/ReactiveGetter.d.ts.map +0 -1
- package/build/relations/ReactiveManyToMany.d.ts +0 -57
- package/build/relations/ReactiveManyToMany.d.ts.map +0 -1
- package/build/relations/ReactiveManyToManyOtherSide.d.ts +0 -48
- package/build/relations/ReactiveManyToManyOtherSide.d.ts.map +0 -1
- package/build/relations/ReactiveReference.d.ts +0 -119
- package/build/relations/ReactiveReference.d.ts.map +0 -1
- package/build/relations/ReadOnlyCollection.d.ts +0 -19
- package/build/relations/ReadOnlyCollection.d.ts.map +0 -1
- package/build/relations/RecursiveCollection.d.ts +0 -108
- package/build/relations/RecursiveCollection.d.ts.map +0 -1
- package/build/relations/RecursiveCycleError.d.ts +0 -13
- package/build/relations/RecursiveCycleError.d.ts.map +0 -1
- package/build/relations/Reference.d.ts +0 -35
- package/build/relations/Reference.d.ts.map +0 -1
- package/build/relations/Relation.d.ts +0 -14
- package/build/relations/Relation.d.ts.map +0 -1
- package/build/relations/hasAsyncMethod.d.ts +0 -27
- package/build/relations/hasAsyncMethod.d.ts.map +0 -1
- package/build/relations/hasManyDerived.d.ts +0 -22
- package/build/relations/hasManyDerived.d.ts.map +0 -1
- package/build/relations/hasManyThrough.d.ts +0 -10
- package/build/relations/hasManyThrough.d.ts.map +0 -1
- package/build/relations/hasOneDerived.d.ts +0 -12
- package/build/relations/hasOneDerived.d.ts.map +0 -1
- package/build/relations/hasOneThrough.d.ts +0 -10
- package/build/relations/hasOneThrough.d.ts.map +0 -1
- package/build/relations/hasProperty.d.ts +0 -50
- package/build/relations/hasProperty.d.ts.map +0 -1
- package/build/relations/index.d.ts +0 -30
- package/build/relations/index.d.ts.map +0 -1
- package/build/relations/index.js.map +0 -1
- package/build/resurrection.d.ts +0 -10
- package/build/resurrection.d.ts.map +0 -1
- package/build/rules.d.ts +0 -123
- package/build/rules.d.ts.map +0 -1
- package/build/runtimeConfig.d.ts +0 -17
- package/build/runtimeConfig.d.ts.map +0 -1
- package/build/scopes.d.ts +0 -185
- package/build/scopes.d.ts.map +0 -1
- package/build/scopes.js +0 -302
- package/build/scopes.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 -46
- package/build/temporal.d.ts.map +0 -1
- package/build/temporal.js +0 -66
- package/build/temporal.js.map +0 -1
- package/build/temporalMappers.d.ts +0 -25
- package/build/temporalMappers.d.ts.map +0 -1
- package/build/temporalMappers.js +0 -59
- package/build/temporalMappers.js.map +0 -1
- package/build/trusted.d.ts +0 -5
- package/build/trusted.d.ts.map +0 -1
- package/build/typeMap.d.ts +0 -68
- package/build/typeMap.d.ts.map +0 -1
- 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/utils.d.ts +0 -60
- package/build/utils.d.ts.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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JoinTree.cjs","names":["isEntityTable","getTableMgmt","fail","tableWhere","newTableProxy","tableEntityWhere","isEntity"],"sources":["../../../src/queries/sql/JoinTree.ts"],"sourcesContent":["import { type Entity, isEntity } from \"src/Entity.ts\";\nimport type { IdOf } from \"src/EntityManager.ts\";\nimport type { InnerJoin, LeftJoin } from \"src/queries/sql/Expr.ts\";\nimport type { QueryCondition, QueryJoin, QueryJoinInput } from \"src/queries/sql/query.ts\";\nimport {\n type CollectionJoin,\n type TableFilter,\n type TableFor,\n getTableMgmt,\n isEntityTable,\n newTableProxy,\n tableEntityWhere,\n tableWhere,\n} from \"src/queries/sql/Tables.ts\";\nimport type { FieldsOf } from \"src/typeMap.ts\";\nimport { fail } from \"src/utils.ts\";\n\n/** Domain filters and optional table bindings for one node in a relationship tree. */\nexport type JoinTree<T extends Entity> = Omit<TableFilter<T>, RelationNames<T>> & {\n readonly as?: TableFor<T>;\n} & {\n readonly [K in RelationNames<T>]?: FieldsOf<T>[K] extends {\n kind: \"m2o\" | \"o2m\" | \"lo2m\" | \"m2m\" | \"o2o\";\n type: infer U extends Entity;\n }\n ? JoinTree<U> | (K extends keyof TableFilter<T> ? TableFilter<T>[K] : JoinedEntityFilter<U>)\n : never;\n};\n\n/**\n * Filters entities, e.g. `{ books: \"b:1\" }` filters Book.id to 1.\n *\n * Adapted from `em.find`s EntityFilter, rather than a direct copy:\n *\n * - Keeps entity/ID, list, boolean, and `ne` filters, but omits scopes, find aliases, nested objects, and logical groups.\n * - JoinTree supplies nested objects and table bindings separately.\n * - Lists can mix entities and IDs, unlike EntityFilter's separate entity[] and ID[] alternatives.\n * - Null is always allowed because these relationships use LEFT joins.\n * - undefined comes from JoinTree's optional relationship keys.\n */\ntype JoinedEntityFilter<T extends Entity> =\n | IdOf<T>\n | T\n | readonly (IdOf<T> | T)[]\n | boolean\n | null\n | { ne: IdOf<T> | T | null | undefined };\n\ntype RelationNames<T extends Entity> = {\n [K in keyof FieldsOf<T>]: FieldsOf<T>[K] extends { kind: \"m2o\" | \"poly\" | \"o2m\" | \"lo2m\" | \"m2m\" | \"o2o\" }\n ? K\n : never;\n}[keyof FieldsOf<T>];\n\n/**\n * Validates a join tree against the entity in `from`, preserving its exact table bindings.\n *\n * I.e. given:\n *\n * ```ts\n * const [a, b] = tables(Author, Book);\n * em.query({\n * from: a,\n * join: { books: { as: b, title: \"One\" } },\n * select: { title: b.title },\n * });\n * // F = typeof a\n * // J = { books: { as: typeof b; title: string } }\n * ```\n *\n * We:\n *\n * - Infer `T = Author` from `F`,\n * - Validate `books` against `Author`,\n * - Validate `title` against `Book`, and\n * - Retain `typeof b` for result typing.\n */\nexport type CheckJoinInput<F, J> =\n // If J accepts the entire list-or-tree union, its annotation erased the join shape.\n // Queries with no join infer [] and use the list branch below.\n QueryJoinInput extends J\n ? { join?: \"join was typed too generically; use `satisfies Query` instead of `: Query`\" }\n : // If J is an array, then it's a QueryJoinList and we can return unknown\n [J] extends [readonly unknown[]]\n ? unknown\n : F extends TableFor<infer T extends Entity>\n ? // Validate domain filters and bindings, including extra keys on variables and nested trees.\n { join?: JoinTree<T> & CheckTree<T, J> }\n : // This incompatible type reports why a tree can't start at a non-entity source.\n { join?: \"join trees require an entity table in from\" };\n\n/**\n * Determines which tables a join tree binds and whether each uses an INNER or LEFT join.\n *\n * Query result types use these entries to identify available tables and columns that can be null.\n *\n * I.e. Author.books.author uses LEFT joins for both Book and its Author because an Author may have no Books.\n */\nexport type TreeEntries<T extends Entity, J, Nullable extends boolean = false> =\n // If every string is valid keyof J, then we've lost our literal type (i.e. as const) and were\n // passed an opaque type like Record<string, unknown> that doesn't expose its specific relationship\n // keys or table bindings to collect, so just return never.\n string extends keyof J\n ? never\n : // If J has an `as` key, it might be the general JoinTree<T> type, which we check for in the next ternary.\n // If J doesn't have `as`, it can't be the general `JoinTree<T>` so we can jump straight to TreeEntriesImpl.\n \"as\" extends keyof J\n ? // If `JoinTree<T> extends J`, then we again have a board type. CheckTree will reject this input, but\n // here we stop instead of following every relationship in the domain graph.\n JoinTree<T> extends J\n ? never\n : TreeEntriesImpl<T, J, Nullable>\n : TreeEntriesImpl<T, J, Nullable>;\n\n/** Collects join entries from the relationship keys supplied in this tree node. */\ntype TreeEntriesImpl<T extends Entity, J, Nullable extends boolean> = {\n [K in keyof J & keyof FieldsOf<T>]: FieldsOf<T>[K] extends {\n kind: \"m2o\" | \"o2m\" | \"lo2m\" | \"m2m\" | \"o2o\";\n type: infer U extends Entity;\n }\n ? TreeNodeJoins<\n U,\n Exclude<J[K], undefined>,\n Nullable extends true ? true : FieldsOf<T>[K] extends { kind: \"m2o\"; nullable: never } ? false : true\n >\n : never;\n}[keyof J & keyof FieldsOf<T>];\n\n/**\n * Collects the join entries for this node's table binding and its nested relationships.\n *\n * An `as` binding contributes a LeftJoin or InnerJoin according to Nullable.\n * Without a binding, only nested relationship entries are included; entity, ID, and list filters add none.\n */\ntype TreeNodeJoins<T extends Entity, J, Nullable extends boolean> =\n // If `J extends Entity | unknown[]`, then it's a leaf entity/id filter, so stop recursing\n J extends Entity | readonly unknown[]\n ? never\n : // If `J extends object`, look for an `as` binding and nested relationships.\n // If `J extends object` is false, this is a scalar filter like \"b:1\" in `{ books: \"b:1\" }` and we stop here.\n J extends object\n ?\n | (J extends { readonly as: infer A extends TableFor<T> }\n ? Nullable extends true\n ? LeftJoin<A>\n : InnerJoin<A>\n : never)\n | TreeEntries<T, J, Nullable>\n : never;\n\n/** Rejects broad tree annotations before checking their supplied keys and values. */\ntype CheckTree<T extends Entity, J> =\n // An entity or a list of entities/IDs is a filter value, so don't check its properties as tree keys.\n J extends Entity | readonly unknown[]\n ? unknown\n : \"as\" extends keyof J\n ? JoinTree<T> extends J\n ? \"join tree bindings were typed too generically; use `satisfies JoinTree<T>` instead of `: JoinTree<T>`\"\n : CheckTreeKeys<T, J>\n : CheckTreeKeys<T, J>;\n\n/** Rejects unknown tree keys, including extra properties on objects stored in variables. */\ntype CheckTreeKeys<T extends Entity, J> = [Exclude<keyof J, keyof JoinTree<T>>] extends [never]\n ? {\n [K in keyof J]: K extends \"as\"\n ? J[K] extends TableFor<T> | undefined\n ? unknown\n : never\n : K extends keyof JoinTree<T>\n ? K extends keyof FieldsOf<T>\n ? FieldsOf<T>[K] extends { kind: \"m2o\" | \"o2m\" | \"lo2m\" | \"m2m\" | \"o2o\"; type: infer U extends Entity }\n ? (J[K] extends JoinTree<T>[K] ? unknown : never) & CheckRelationTree<U, J[K]>\n : J[K] extends JoinTree<T>[K]\n ? unknown\n : never\n : unknown\n : never;\n // Report the error on the tree object; intersecting a message with a boolean field would collapse to never.\n }\n : `unknown join tree field '${Exclude<keyof J, keyof JoinTree<T>> & string}'`;\n\n/** Checks each optional relationship alternative without treating entities or exclusion filters as trees. */\ntype CheckRelationTree<T extends Entity, J> = J extends object\n ? \"ne\" extends keyof J\n ? unknown\n : CheckTree<T, J>\n : unknown;\n\n/**\n * Walks domain relationship filters into ordinary SQL joins and WHERE predicates.\n * Handles remain query-local; no SQL aliases or caller objects are changed.\n * I.e. Author.books.author emits Book before its Author, even if only the final Author has an as binding.\n */\nexport function compileJoinTree(from: unknown, tree: unknown): { joins: QueryJoin[]; condition: QueryCondition } {\n if (!isEntityTable(from)) fail(\"Join trees require an entity table in from\");\n const joins: QueryJoin[] = [];\n const conditions: QueryCondition[] = [];\n const bound = new Set<object>([getTableMgmt(from)]);\n visitTree(from, tree, joins, conditions, bound);\n return { joins, condition: { and: conditions } };\n}\n\n/**\n * Compiles one node, leaving relationship conditions in WHERE rather than ON.\n * Each relationship gets one target handle; reusing a bound handle would merge distinct paths.\n * Owning-reference ID filters stay on the FK, while collection ID filters use the joined primary key.\n */\nfunction visitTree(\n source: TableFor<Entity>,\n tree: unknown,\n joins: QueryJoin[],\n conditions: QueryCondition[],\n bound: Set<object>,\n): void {\n if (!isTreeObject(tree)) fail(\"Expected a join tree object\");\n const mgmt = getTableMgmt(source);\n if (tree.as !== undefined && tree.as !== source) fail(\"Join tree root as must be the same table handle as from\");\n for (const [key, value] of Object.entries(tree)) {\n if (key === \"as\") continue;\n const field = mgmt.meta.allFields[key] ?? fail(`Unknown join tree field ${mgmt.meta.type}.${key}`);\n if (!(key in mgmt.meta.fields)) fail(`Join trees do not support inherited field ${mgmt.meta.type}.${key}`);\n if (field.kind === \"poly\") fail(`Join trees do not support polymorphic field ${mgmt.meta.type}.${key}`);\n if ([\"m2o\", \"o2m\", \"lo2m\", \"m2m\", \"o2o\"].includes(field.kind)) {\n if (value === undefined) continue;\n if (field.kind === \"m2o\" && !isTreeObject(value)) {\n // Avoid joining the related table; add the condition directly to the FK column.\n conditions.push(tableWhere(mgmt, { [key]: value }));\n continue;\n }\n if (field.kind === \"m2o\" && isTreeObject(value) && Object.hasOwn(value, \"ne\")) {\n // Exclusion filters also apply directly to the FK column without joining the related table.\n conditions.push(tableWhere(mgmt, { [key]: value }));\n continue;\n }\n // The field-kind check above establishes the relationship metadata and factory shape.\n if (!(\"otherMetadata\" in field)) fail(`Unsupported join tree field ${mgmt.meta.type}.${key}`);\n const meta = field.otherMetadata();\n const target = isTreeObject(value) && value.as !== undefined ? value.as : newTableProxy(meta.cstr);\n if (!isEntityTable(target) || getTableMgmt(target).meta !== meta) {\n fail(`Join tree binding for ${mgmt.meta.type}.${key} must be a ${meta.type} table`);\n }\n const identity = getTableMgmt(target);\n if (bound.has(identity))\n fail(`Join tree table ${meta.type} is bound more than once; create a separate table handle`);\n bound.add(identity);\n const relation = (source as unknown as Record<string, CollectionJoin<Entity>>)[key];\n joins.push(relation.as(target));\n // Recurse into nested relationship filters, e.g. `{ books: { title: \"One\" } }`.\n // A `{ ne: ... }` object instead filters the joined entity's ID, so handle it like an ID or entity value.\n // We don't have to handle other keys like `gt`, etc. b/c we know this is an entity filter, not a value filter.\n if (isTreeObject(value) && !Object.hasOwn(value, \"ne\")) {\n visitTree(target, value, joins, conditions, bound);\n } else {\n conditions.push(tableEntityWhere(identity, value));\n }\n } else {\n conditions.push(tableWhere(mgmt, { [key]: value }));\n }\n }\n}\n\n/** Separates nested relationship objects from entity, ID, and list filters. */\nfunction isTreeObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value) && !isEntity(value);\n}\n"],"mappings":";;;;;;;;;;AAiMA,SAAgB,gBAAgB,MAAe,MAAkE;CAC/G,IAAI,CAACA,2BAAAA,cAAc,IAAI,GAAG,cAAA,KAAK,4CAA4C;CAC3E,MAAM,QAAqB,CAAC;CAC5B,MAAM,aAA+B,CAAC;CAEtC,UAAU,MAAM,MAAM,OAAO,4BAAY,IADvB,IAAY,CAACC,2BAAAA,aAAa,IAAI,CAAC,CACJ,CAAC;CAC9C,OAAO;EAAE;EAAO,WAAW,EAAE,KAAK,WAAW;CAAE;AACjD;;;;;;AAOA,SAAS,UACP,QACA,MACA,OACA,YACA,OACM;CACN,IAAI,CAAC,aAAa,IAAI,GAAG,cAAA,KAAK,6BAA6B;CAC3D,MAAM,OAAOA,2BAAAA,aAAa,MAAM;CAChC,IAAI,KAAK,OAAO,KAAA,KAAa,KAAK,OAAO,QAAQ,cAAA,KAAK,yDAAyD;CAC/G,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,IAAI,GAAG;EAC/C,IAAI,QAAQ,MAAM;EAClB,MAAM,QAAQ,KAAK,KAAK,UAAU,QAAQC,cAAAA,KAAK,2BAA2B,KAAK,KAAK,KAAK,GAAG,KAAK;EACjG,IAAI,EAAE,OAAO,KAAK,KAAK,SAAS,cAAA,KAAK,6CAA6C,KAAK,KAAK,KAAK,GAAG,KAAK;EACzG,IAAI,MAAM,SAAS,QAAQ,cAAA,KAAK,+CAA+C,KAAK,KAAK,KAAK,GAAG,KAAK;EACtG,IAAI;GAAC;GAAO;GAAO;GAAQ;GAAO;EAAK,CAAC,CAAC,SAAS,MAAM,IAAI,GAAG;GAC7D,IAAI,UAAU,KAAA,GAAW;GACzB,IAAI,MAAM,SAAS,SAAS,CAAC,aAAa,KAAK,GAAG;IAEhD,WAAW,KAAKC,2BAAAA,WAAW,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC;IAClD;GACF;GACA,IAAI,MAAM,SAAS,SAAS,aAAa,KAAK,KAAK,OAAO,OAAO,OAAO,IAAI,GAAG;IAE7E,WAAW,KAAKA,2BAAAA,WAAW,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC;IAClD;GACF;GAEA,IAAI,EAAE,mBAAmB,QAAQ,cAAA,KAAK,+BAA+B,KAAK,KAAK,KAAK,GAAG,KAAK;GAC5F,MAAM,OAAO,MAAM,cAAc;GACjC,MAAM,SAAS,aAAa,KAAK,KAAK,MAAM,OAAO,KAAA,IAAY,MAAM,KAAKC,2BAAAA,cAAc,KAAK,IAAI;GACjG,IAAI,CAACJ,2BAAAA,cAAc,MAAM,KAAKC,2BAAAA,aAAa,MAAM,CAAC,CAAC,SAAS,MAC1D,cAAA,KAAK,yBAAyB,KAAK,KAAK,KAAK,GAAG,IAAI,aAAa,KAAK,KAAK,OAAO;GAEpF,MAAM,WAAWA,2BAAAA,aAAa,MAAM;GACpC,IAAI,MAAM,IAAI,QAAQ,GACpB,cAAA,KAAK,mBAAmB,KAAK,KAAK,yDAAyD;GAC7F,MAAM,IAAI,QAAQ;GAClB,MAAM,WAAY,OAA6D;GAC/E,MAAM,KAAK,SAAS,GAAG,MAAM,CAAC;GAI9B,IAAI,aAAa,KAAK,KAAK,CAAC,OAAO,OAAO,OAAO,IAAI,GACnD,UAAU,QAAQ,OAAO,OAAO,YAAY,KAAK;QAEjD,WAAW,KAAKI,2BAAAA,iBAAiB,UAAU,KAAK,CAAC;EAErD,OACE,WAAW,KAAKF,2BAAAA,WAAW,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC;CAEtD;AACF;;AAGA,SAAS,aAAa,OAAkD;CACtE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,KAAK,CAACG,eAAAA,SAAS,KAAK;AAChG"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { FieldsOf } from "../../typeMap.cjs";
|
|
2
|
+
import { TableFilter, TableFor } from "./Tables.cjs";
|
|
3
|
+
import { QueryCondition, QueryJoin, QueryJoinInput } from "./query.cjs";
|
|
4
|
+
import { InnerJoin, LeftJoin } from "./Expr.cjs";
|
|
5
|
+
import { IdOf } from "../../EntityManager.cjs";
|
|
6
|
+
import { Entity } from "../../Entity.cjs";
|
|
7
|
+
//#region src/queries/sql/JoinTree.d.ts
|
|
8
|
+
/** Domain filters and optional table bindings for one node in a relationship tree. */
|
|
9
|
+
type JoinTree<T extends Entity> = Omit<TableFilter<T>, RelationNames<T>> & {
|
|
10
|
+
readonly as?: TableFor<T>;
|
|
11
|
+
} & { readonly [K in RelationNames<T>]?: FieldsOf<T>[K] extends {
|
|
12
|
+
kind: "m2o" | "o2m" | "lo2m" | "m2m" | "o2o";
|
|
13
|
+
type: infer U extends Entity;
|
|
14
|
+
} ? JoinTree<U> | (K extends keyof TableFilter<T> ? TableFilter<T>[K] : JoinedEntityFilter<U>) : never; };
|
|
15
|
+
/**
|
|
16
|
+
* Filters entities, e.g. `{ books: "b:1" }` filters Book.id to 1.
|
|
17
|
+
*
|
|
18
|
+
* Adapted from `em.find`s EntityFilter, rather than a direct copy:
|
|
19
|
+
*
|
|
20
|
+
* - Keeps entity/ID, list, boolean, and `ne` filters, but omits scopes, find aliases, nested objects, and logical groups.
|
|
21
|
+
* - JoinTree supplies nested objects and table bindings separately.
|
|
22
|
+
* - Lists can mix entities and IDs, unlike EntityFilter's separate entity[] and ID[] alternatives.
|
|
23
|
+
* - Null is always allowed because these relationships use LEFT joins.
|
|
24
|
+
* - undefined comes from JoinTree's optional relationship keys.
|
|
25
|
+
*/
|
|
26
|
+
type JoinedEntityFilter<T extends Entity> = IdOf<T> | T | readonly (IdOf<T> | T)[] | boolean | null | {
|
|
27
|
+
ne: IdOf<T> | T | null | undefined;
|
|
28
|
+
};
|
|
29
|
+
type RelationNames<T extends Entity> = { [K in keyof FieldsOf<T>]: FieldsOf<T>[K] extends {
|
|
30
|
+
kind: "m2o" | "poly" | "o2m" | "lo2m" | "m2m" | "o2o";
|
|
31
|
+
} ? K : never; }[keyof FieldsOf<T>];
|
|
32
|
+
/**
|
|
33
|
+
* Validates a join tree against the entity in `from`, preserving its exact table bindings.
|
|
34
|
+
*
|
|
35
|
+
* I.e. given:
|
|
36
|
+
*
|
|
37
|
+
* ```ts
|
|
38
|
+
* const [a, b] = tables(Author, Book);
|
|
39
|
+
* em.query({
|
|
40
|
+
* from: a,
|
|
41
|
+
* join: { books: { as: b, title: "One" } },
|
|
42
|
+
* select: { title: b.title },
|
|
43
|
+
* });
|
|
44
|
+
* // F = typeof a
|
|
45
|
+
* // J = { books: { as: typeof b; title: string } }
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* We:
|
|
49
|
+
*
|
|
50
|
+
* - Infer `T = Author` from `F`,
|
|
51
|
+
* - Validate `books` against `Author`,
|
|
52
|
+
* - Validate `title` against `Book`, and
|
|
53
|
+
* - Retain `typeof b` for result typing.
|
|
54
|
+
*/
|
|
55
|
+
type CheckJoinInput<F, J> = QueryJoinInput extends J ? {
|
|
56
|
+
join?: "join was typed too generically; use `satisfies Query` instead of `: Query`";
|
|
57
|
+
} : [J] extends [readonly unknown[]] ? unknown : F extends TableFor<infer T extends Entity> ? {
|
|
58
|
+
join?: JoinTree<T> & CheckTree<T, J>;
|
|
59
|
+
} : {
|
|
60
|
+
join?: "join trees require an entity table in from";
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Determines which tables a join tree binds and whether each uses an INNER or LEFT join.
|
|
64
|
+
*
|
|
65
|
+
* Query result types use these entries to identify available tables and columns that can be null.
|
|
66
|
+
*
|
|
67
|
+
* I.e. Author.books.author uses LEFT joins for both Book and its Author because an Author may have no Books.
|
|
68
|
+
*/
|
|
69
|
+
type TreeEntries<T extends Entity, J, Nullable extends boolean = false> = string extends keyof J ? never : "as" extends keyof J ? JoinTree<T> extends J ? never : TreeEntriesImpl<T, J, Nullable> : TreeEntriesImpl<T, J, Nullable>;
|
|
70
|
+
/** Collects join entries from the relationship keys supplied in this tree node. */
|
|
71
|
+
type TreeEntriesImpl<T extends Entity, J, Nullable extends boolean> = { [K in keyof J & keyof FieldsOf<T>]: FieldsOf<T>[K] extends {
|
|
72
|
+
kind: "m2o" | "o2m" | "lo2m" | "m2m" | "o2o";
|
|
73
|
+
type: infer U extends Entity;
|
|
74
|
+
} ? TreeNodeJoins<U, Exclude<J[K], undefined>, Nullable extends true ? true : FieldsOf<T>[K] extends {
|
|
75
|
+
kind: "m2o";
|
|
76
|
+
nullable: never;
|
|
77
|
+
} ? false : true> : never; }[keyof J & keyof FieldsOf<T>];
|
|
78
|
+
/**
|
|
79
|
+
* Collects the join entries for this node's table binding and its nested relationships.
|
|
80
|
+
*
|
|
81
|
+
* An `as` binding contributes a LeftJoin or InnerJoin according to Nullable.
|
|
82
|
+
* Without a binding, only nested relationship entries are included; entity, ID, and list filters add none.
|
|
83
|
+
*/
|
|
84
|
+
type TreeNodeJoins<T extends Entity, J, Nullable extends boolean> = J extends Entity | readonly unknown[] ? never : J extends object ? (J extends {
|
|
85
|
+
readonly as: infer A extends TableFor<T>;
|
|
86
|
+
} ? Nullable extends true ? LeftJoin<A> : InnerJoin<A> : never) | TreeEntries<T, J, Nullable> : never;
|
|
87
|
+
/** Rejects broad tree annotations before checking their supplied keys and values. */
|
|
88
|
+
type CheckTree<T extends Entity, J> = J extends Entity | readonly unknown[] ? unknown : "as" extends keyof J ? JoinTree<T> extends J ? "join tree bindings were typed too generically; use `satisfies JoinTree<T>` instead of `: JoinTree<T>`" : CheckTreeKeys<T, J> : CheckTreeKeys<T, J>;
|
|
89
|
+
/** Rejects unknown tree keys, including extra properties on objects stored in variables. */
|
|
90
|
+
type CheckTreeKeys<T extends Entity, J> = [Exclude<keyof J, keyof JoinTree<T>>] extends [never] ? { [K in keyof J]: K extends "as" ? J[K] extends TableFor<T> | undefined ? unknown : never : K extends keyof JoinTree<T> ? K extends keyof FieldsOf<T> ? FieldsOf<T>[K] extends {
|
|
91
|
+
kind: "m2o" | "o2m" | "lo2m" | "m2m" | "o2o";
|
|
92
|
+
type: infer U extends Entity;
|
|
93
|
+
} ? (J[K] extends JoinTree<T>[K] ? unknown : never) & CheckRelationTree<U, J[K]> : J[K] extends JoinTree<T>[K] ? unknown : never : unknown : never; } : `unknown join tree field '${Exclude<keyof J, keyof JoinTree<T>> & string}'`;
|
|
94
|
+
/** Checks each optional relationship alternative without treating entities or exclusion filters as trees. */
|
|
95
|
+
type CheckRelationTree<T extends Entity, J> = J extends object ? "ne" extends keyof J ? unknown : CheckTree<T, J> : unknown;
|
|
96
|
+
/**
|
|
97
|
+
* Walks domain relationship filters into ordinary SQL joins and WHERE predicates.
|
|
98
|
+
* Handles remain query-local; no SQL aliases or caller objects are changed.
|
|
99
|
+
* I.e. Author.books.author emits Book before its Author, even if only the final Author has an as binding.
|
|
100
|
+
*/
|
|
101
|
+
declare function compileJoinTree(from: unknown, tree: unknown): {
|
|
102
|
+
joins: QueryJoin[];
|
|
103
|
+
condition: QueryCondition;
|
|
104
|
+
};
|
|
105
|
+
//#endregion
|
|
106
|
+
export { CheckJoinInput, JoinTree, TreeEntries, compileJoinTree };
|
|
107
|
+
//# sourceMappingURL=JoinTree.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JoinTree.d.cts","names":[],"sources":["../../../src/queries/sql/JoinTree.ts"],"mappings":";;;;;;;;KAkBY,SAAS,UAAU,UAAU,KAAK,YAAY,IAAI,cAAc;WACjE,KAAK,SAAS;gBAEb,KAAK,cAAc,MAAM,SAAS,GAAG;EAC7C;EACA,YAAY,UAAU;IAEpB,SAAS,MAAM,gBAAgB,YAAY,KAAK,YAAY,GAAG,KAAK,mBAAmB;;;;;;;;;;;;KAexF,mBAAmB,UAAU,UAC9B,KAAK,KACL,cACU,KAAK,KAAK;EAGlB,IAAI,KAAK,KAAK;;KAEf,cAAc,UAAU,aAC1B,WAAW,SAAS,KAAK,SAAS,GAAG;EAAa;IAC/C,mBAEE,SAAS;;;;;;;;;;;;;;;;;;;;;;;;KAyBL,eAAe,GAAG,KAG5B,uBAAuB;EACjB;KAED,4CAEC,UAAU,eAAe,UAAU;EAE/B,OAAO,SAAS,KAAK,UAAU,GAAG;;EAElC;;;;;;;;;KASA,YAAY,UAAU,QAAQ,GAAG,yDAItB,+BAIE,IAGjB,SAAS,WAAW,YAElB,gBAAgB,GAAG,GAAG,YACxB,gBAAgB,GAAG,GAAG;;KAGzB,gBAAgB,UAAU,QAAQ,GAAG,+BACvC,WAAW,UAAU,SAAS,KAAK,SAAS,GAAG;EAC9C;EACA,YAAY,UAAU;IAEpB,cACE,GACA,QAAQ,EAAE,gBACV,+BAA+B,SAAS,GAAG;EAAa;EAAa;mCAGrE,UAAU,SAAS;;;;;;;KAQtB,cAAc,UAAU,QAAQ,GAAG,4BAEtC,UAAU,sCAIN,oBAEO;WAAqB,UAAU,UAAU,SAAS;IAC/C,wBACE,SAAS,KACT,UAAU,cAEhB,YAAY,GAAG,GAAG;;KAIzB,UAAU,UAAU,QAAQ,KAE/B,UAAU,2DAEa,IACjB,SAAS,WAAW,8GAElB,cAAc,GAAG,KACnB,cAAc,GAAG;;KAGpB,cAAc,UAAU,QAAQ,MAAM,cAAc,SAAS,SAAS,0BAEpE,WAAW,IAAI,iBACZ,EAAE,WAAW,SAAS,mCAGtB,gBAAgB,SAAS,KACvB,gBAAgB,SAAS,KACvB,SAAS,GAAG;EAAa;EAA8C,YAAY,UAAU;KAC1F,EAAE,WAAW,SAAS,GAAG,wBAAwB,kBAAkB,GAAG,EAAE,MACzE,EAAE,WAAW,SAAS,GAAG,wEAOT,cAAc,SAAS,SAAS;;KAG3D,kBAAkB,UAAU,QAAQ,KAAK,sCACvB,cAEjB,UAAU,GAAG;;;;;;iBAQH,gBAAgB,eAAe;EAAkB,OAAO;EAAa,WAAW"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { FieldsOf } from "../../typeMap.mjs";
|
|
2
|
+
import { TableFilter, TableFor } from "./Tables.mjs";
|
|
3
|
+
import { QueryCondition, QueryJoin, QueryJoinInput } from "./query.mjs";
|
|
4
|
+
import { InnerJoin, LeftJoin } from "./Expr.mjs";
|
|
5
|
+
import { IdOf } from "../../EntityManager.mjs";
|
|
6
|
+
import { Entity } from "../../Entity.mjs";
|
|
7
|
+
//#region src/queries/sql/JoinTree.d.ts
|
|
8
|
+
/** Domain filters and optional table bindings for one node in a relationship tree. */
|
|
9
|
+
type JoinTree<T extends Entity> = Omit<TableFilter<T>, RelationNames<T>> & {
|
|
10
|
+
readonly as?: TableFor<T>;
|
|
11
|
+
} & { readonly [K in RelationNames<T>]?: FieldsOf<T>[K] extends {
|
|
12
|
+
kind: "m2o" | "o2m" | "lo2m" | "m2m" | "o2o";
|
|
13
|
+
type: infer U extends Entity;
|
|
14
|
+
} ? JoinTree<U> | (K extends keyof TableFilter<T> ? TableFilter<T>[K] : JoinedEntityFilter<U>) : never; };
|
|
15
|
+
/**
|
|
16
|
+
* Filters entities, e.g. `{ books: "b:1" }` filters Book.id to 1.
|
|
17
|
+
*
|
|
18
|
+
* Adapted from `em.find`s EntityFilter, rather than a direct copy:
|
|
19
|
+
*
|
|
20
|
+
* - Keeps entity/ID, list, boolean, and `ne` filters, but omits scopes, find aliases, nested objects, and logical groups.
|
|
21
|
+
* - JoinTree supplies nested objects and table bindings separately.
|
|
22
|
+
* - Lists can mix entities and IDs, unlike EntityFilter's separate entity[] and ID[] alternatives.
|
|
23
|
+
* - Null is always allowed because these relationships use LEFT joins.
|
|
24
|
+
* - undefined comes from JoinTree's optional relationship keys.
|
|
25
|
+
*/
|
|
26
|
+
type JoinedEntityFilter<T extends Entity> = IdOf<T> | T | readonly (IdOf<T> | T)[] | boolean | null | {
|
|
27
|
+
ne: IdOf<T> | T | null | undefined;
|
|
28
|
+
};
|
|
29
|
+
type RelationNames<T extends Entity> = { [K in keyof FieldsOf<T>]: FieldsOf<T>[K] extends {
|
|
30
|
+
kind: "m2o" | "poly" | "o2m" | "lo2m" | "m2m" | "o2o";
|
|
31
|
+
} ? K : never; }[keyof FieldsOf<T>];
|
|
32
|
+
/**
|
|
33
|
+
* Validates a join tree against the entity in `from`, preserving its exact table bindings.
|
|
34
|
+
*
|
|
35
|
+
* I.e. given:
|
|
36
|
+
*
|
|
37
|
+
* ```ts
|
|
38
|
+
* const [a, b] = tables(Author, Book);
|
|
39
|
+
* em.query({
|
|
40
|
+
* from: a,
|
|
41
|
+
* join: { books: { as: b, title: "One" } },
|
|
42
|
+
* select: { title: b.title },
|
|
43
|
+
* });
|
|
44
|
+
* // F = typeof a
|
|
45
|
+
* // J = { books: { as: typeof b; title: string } }
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* We:
|
|
49
|
+
*
|
|
50
|
+
* - Infer `T = Author` from `F`,
|
|
51
|
+
* - Validate `books` against `Author`,
|
|
52
|
+
* - Validate `title` against `Book`, and
|
|
53
|
+
* - Retain `typeof b` for result typing.
|
|
54
|
+
*/
|
|
55
|
+
type CheckJoinInput<F, J> = QueryJoinInput extends J ? {
|
|
56
|
+
join?: "join was typed too generically; use `satisfies Query` instead of `: Query`";
|
|
57
|
+
} : [J] extends [readonly unknown[]] ? unknown : F extends TableFor<infer T extends Entity> ? {
|
|
58
|
+
join?: JoinTree<T> & CheckTree<T, J>;
|
|
59
|
+
} : {
|
|
60
|
+
join?: "join trees require an entity table in from";
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Determines which tables a join tree binds and whether each uses an INNER or LEFT join.
|
|
64
|
+
*
|
|
65
|
+
* Query result types use these entries to identify available tables and columns that can be null.
|
|
66
|
+
*
|
|
67
|
+
* I.e. Author.books.author uses LEFT joins for both Book and its Author because an Author may have no Books.
|
|
68
|
+
*/
|
|
69
|
+
type TreeEntries<T extends Entity, J, Nullable extends boolean = false> = string extends keyof J ? never : "as" extends keyof J ? JoinTree<T> extends J ? never : TreeEntriesImpl<T, J, Nullable> : TreeEntriesImpl<T, J, Nullable>;
|
|
70
|
+
/** Collects join entries from the relationship keys supplied in this tree node. */
|
|
71
|
+
type TreeEntriesImpl<T extends Entity, J, Nullable extends boolean> = { [K in keyof J & keyof FieldsOf<T>]: FieldsOf<T>[K] extends {
|
|
72
|
+
kind: "m2o" | "o2m" | "lo2m" | "m2m" | "o2o";
|
|
73
|
+
type: infer U extends Entity;
|
|
74
|
+
} ? TreeNodeJoins<U, Exclude<J[K], undefined>, Nullable extends true ? true : FieldsOf<T>[K] extends {
|
|
75
|
+
kind: "m2o";
|
|
76
|
+
nullable: never;
|
|
77
|
+
} ? false : true> : never; }[keyof J & keyof FieldsOf<T>];
|
|
78
|
+
/**
|
|
79
|
+
* Collects the join entries for this node's table binding and its nested relationships.
|
|
80
|
+
*
|
|
81
|
+
* An `as` binding contributes a LeftJoin or InnerJoin according to Nullable.
|
|
82
|
+
* Without a binding, only nested relationship entries are included; entity, ID, and list filters add none.
|
|
83
|
+
*/
|
|
84
|
+
type TreeNodeJoins<T extends Entity, J, Nullable extends boolean> = J extends Entity | readonly unknown[] ? never : J extends object ? (J extends {
|
|
85
|
+
readonly as: infer A extends TableFor<T>;
|
|
86
|
+
} ? Nullable extends true ? LeftJoin<A> : InnerJoin<A> : never) | TreeEntries<T, J, Nullable> : never;
|
|
87
|
+
/** Rejects broad tree annotations before checking their supplied keys and values. */
|
|
88
|
+
type CheckTree<T extends Entity, J> = J extends Entity | readonly unknown[] ? unknown : "as" extends keyof J ? JoinTree<T> extends J ? "join tree bindings were typed too generically; use `satisfies JoinTree<T>` instead of `: JoinTree<T>`" : CheckTreeKeys<T, J> : CheckTreeKeys<T, J>;
|
|
89
|
+
/** Rejects unknown tree keys, including extra properties on objects stored in variables. */
|
|
90
|
+
type CheckTreeKeys<T extends Entity, J> = [Exclude<keyof J, keyof JoinTree<T>>] extends [never] ? { [K in keyof J]: K extends "as" ? J[K] extends TableFor<T> | undefined ? unknown : never : K extends keyof JoinTree<T> ? K extends keyof FieldsOf<T> ? FieldsOf<T>[K] extends {
|
|
91
|
+
kind: "m2o" | "o2m" | "lo2m" | "m2m" | "o2o";
|
|
92
|
+
type: infer U extends Entity;
|
|
93
|
+
} ? (J[K] extends JoinTree<T>[K] ? unknown : never) & CheckRelationTree<U, J[K]> : J[K] extends JoinTree<T>[K] ? unknown : never : unknown : never; } : `unknown join tree field '${Exclude<keyof J, keyof JoinTree<T>> & string}'`;
|
|
94
|
+
/** Checks each optional relationship alternative without treating entities or exclusion filters as trees. */
|
|
95
|
+
type CheckRelationTree<T extends Entity, J> = J extends object ? "ne" extends keyof J ? unknown : CheckTree<T, J> : unknown;
|
|
96
|
+
/**
|
|
97
|
+
* Walks domain relationship filters into ordinary SQL joins and WHERE predicates.
|
|
98
|
+
* Handles remain query-local; no SQL aliases or caller objects are changed.
|
|
99
|
+
* I.e. Author.books.author emits Book before its Author, even if only the final Author has an as binding.
|
|
100
|
+
*/
|
|
101
|
+
declare function compileJoinTree(from: unknown, tree: unknown): {
|
|
102
|
+
joins: QueryJoin[];
|
|
103
|
+
condition: QueryCondition;
|
|
104
|
+
};
|
|
105
|
+
//#endregion
|
|
106
|
+
export { CheckJoinInput, JoinTree, TreeEntries, compileJoinTree };
|
|
107
|
+
//# sourceMappingURL=JoinTree.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JoinTree.d.mts","names":[],"sources":["../../../src/queries/sql/JoinTree.ts"],"mappings":";;;;;;;;KAkBY,SAAS,UAAU,UAAU,KAAK,YAAY,IAAI,cAAc;WACjE,KAAK,SAAS;gBAEb,KAAK,cAAc,MAAM,SAAS,GAAG;EAC7C;EACA,YAAY,UAAU;IAEpB,SAAS,MAAM,gBAAgB,YAAY,KAAK,YAAY,GAAG,KAAK,mBAAmB;;;;;;;;;;;;KAexF,mBAAmB,UAAU,UAC9B,KAAK,KACL,cACU,KAAK,KAAK;EAGlB,IAAI,KAAK,KAAK;;KAEf,cAAc,UAAU,aAC1B,WAAW,SAAS,KAAK,SAAS,GAAG;EAAa;IAC/C,mBAEE,SAAS;;;;;;;;;;;;;;;;;;;;;;;;KAyBL,eAAe,GAAG,KAG5B,uBAAuB;EACjB;KAED,4CAEC,UAAU,eAAe,UAAU;EAE/B,OAAO,SAAS,KAAK,UAAU,GAAG;;EAElC;;;;;;;;;KASA,YAAY,UAAU,QAAQ,GAAG,yDAItB,+BAIE,IAGjB,SAAS,WAAW,YAElB,gBAAgB,GAAG,GAAG,YACxB,gBAAgB,GAAG,GAAG;;KAGzB,gBAAgB,UAAU,QAAQ,GAAG,+BACvC,WAAW,UAAU,SAAS,KAAK,SAAS,GAAG;EAC9C;EACA,YAAY,UAAU;IAEpB,cACE,GACA,QAAQ,EAAE,gBACV,+BAA+B,SAAS,GAAG;EAAa;EAAa;mCAGrE,UAAU,SAAS;;;;;;;KAQtB,cAAc,UAAU,QAAQ,GAAG,4BAEtC,UAAU,sCAIN,oBAEO;WAAqB,UAAU,UAAU,SAAS;IAC/C,wBACE,SAAS,KACT,UAAU,cAEhB,YAAY,GAAG,GAAG;;KAIzB,UAAU,UAAU,QAAQ,KAE/B,UAAU,2DAEa,IACjB,SAAS,WAAW,8GAElB,cAAc,GAAG,KACnB,cAAc,GAAG;;KAGpB,cAAc,UAAU,QAAQ,MAAM,cAAc,SAAS,SAAS,0BAEpE,WAAW,IAAI,iBACZ,EAAE,WAAW,SAAS,mCAGtB,gBAAgB,SAAS,KACvB,gBAAgB,SAAS,KACvB,SAAS,GAAG;EAAa;EAA8C,YAAY,UAAU;KAC1F,EAAE,WAAW,SAAS,GAAG,wBAAwB,kBAAkB,GAAG,EAAE,MACzE,EAAE,WAAW,SAAS,GAAG,wEAOT,cAAc,SAAS,SAAS;;KAG3D,kBAAkB,UAAU,QAAQ,KAAK,sCACvB,cAEjB,UAAU,GAAG;;;;;;iBAQH,gBAAgB,eAAe;EAAkB,OAAO;EAAa,WAAW"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { fail } from "../../utils.js";
|
|
2
|
+
import { getTableMgmt, isEntityTable, newTableProxy, tableEntityWhere, tableWhere } from "./Tables.js";
|
|
3
|
+
import { isEntity } from "../../Entity.js";
|
|
4
|
+
//#region src/queries/sql/JoinTree.ts
|
|
5
|
+
/**
|
|
6
|
+
* Walks domain relationship filters into ordinary SQL joins and WHERE predicates.
|
|
7
|
+
* Handles remain query-local; no SQL aliases or caller objects are changed.
|
|
8
|
+
* I.e. Author.books.author emits Book before its Author, even if only the final Author has an as binding.
|
|
9
|
+
*/
|
|
10
|
+
function compileJoinTree(from, tree) {
|
|
11
|
+
if (!isEntityTable(from)) fail("Join trees require an entity table in from");
|
|
12
|
+
const joins = [];
|
|
13
|
+
const conditions = [];
|
|
14
|
+
visitTree(from, tree, joins, conditions, /* @__PURE__ */ new Set([getTableMgmt(from)]));
|
|
15
|
+
return {
|
|
16
|
+
joins,
|
|
17
|
+
condition: { and: conditions }
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Compiles one node, leaving relationship conditions in WHERE rather than ON.
|
|
22
|
+
* Each relationship gets one target handle; reusing a bound handle would merge distinct paths.
|
|
23
|
+
* Owning-reference ID filters stay on the FK, while collection ID filters use the joined primary key.
|
|
24
|
+
*/
|
|
25
|
+
function visitTree(source, tree, joins, conditions, bound) {
|
|
26
|
+
if (!isTreeObject(tree)) fail("Expected a join tree object");
|
|
27
|
+
const mgmt = getTableMgmt(source);
|
|
28
|
+
if (tree.as !== void 0 && tree.as !== source) fail("Join tree root as must be the same table handle as from");
|
|
29
|
+
for (const [key, value] of Object.entries(tree)) {
|
|
30
|
+
if (key === "as") continue;
|
|
31
|
+
const field = mgmt.meta.allFields[key] ?? fail(`Unknown join tree field ${mgmt.meta.type}.${key}`);
|
|
32
|
+
if (!(key in mgmt.meta.fields)) fail(`Join trees do not support inherited field ${mgmt.meta.type}.${key}`);
|
|
33
|
+
if (field.kind === "poly") fail(`Join trees do not support polymorphic field ${mgmt.meta.type}.${key}`);
|
|
34
|
+
if ([
|
|
35
|
+
"m2o",
|
|
36
|
+
"o2m",
|
|
37
|
+
"lo2m",
|
|
38
|
+
"m2m",
|
|
39
|
+
"o2o"
|
|
40
|
+
].includes(field.kind)) {
|
|
41
|
+
if (value === void 0) continue;
|
|
42
|
+
if (field.kind === "m2o" && !isTreeObject(value)) {
|
|
43
|
+
conditions.push(tableWhere(mgmt, { [key]: value }));
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
if (field.kind === "m2o" && isTreeObject(value) && Object.hasOwn(value, "ne")) {
|
|
47
|
+
conditions.push(tableWhere(mgmt, { [key]: value }));
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
if (!("otherMetadata" in field)) fail(`Unsupported join tree field ${mgmt.meta.type}.${key}`);
|
|
51
|
+
const meta = field.otherMetadata();
|
|
52
|
+
const target = isTreeObject(value) && value.as !== void 0 ? value.as : newTableProxy(meta.cstr);
|
|
53
|
+
if (!isEntityTable(target) || getTableMgmt(target).meta !== meta) fail(`Join tree binding for ${mgmt.meta.type}.${key} must be a ${meta.type} table`);
|
|
54
|
+
const identity = getTableMgmt(target);
|
|
55
|
+
if (bound.has(identity)) fail(`Join tree table ${meta.type} is bound more than once; create a separate table handle`);
|
|
56
|
+
bound.add(identity);
|
|
57
|
+
const relation = source[key];
|
|
58
|
+
joins.push(relation.as(target));
|
|
59
|
+
if (isTreeObject(value) && !Object.hasOwn(value, "ne")) visitTree(target, value, joins, conditions, bound);
|
|
60
|
+
else conditions.push(tableEntityWhere(identity, value));
|
|
61
|
+
} else conditions.push(tableWhere(mgmt, { [key]: value }));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/** Separates nested relationship objects from entity, ID, and list filters. */
|
|
65
|
+
function isTreeObject(value) {
|
|
66
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) && !isEntity(value);
|
|
67
|
+
}
|
|
68
|
+
//#endregion
|
|
69
|
+
export { compileJoinTree };
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=JoinTree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JoinTree.js","names":[],"sources":["../../../src/queries/sql/JoinTree.ts"],"sourcesContent":["import { type Entity, isEntity } from \"src/Entity.ts\";\nimport type { IdOf } from \"src/EntityManager.ts\";\nimport type { InnerJoin, LeftJoin } from \"src/queries/sql/Expr.ts\";\nimport type { QueryCondition, QueryJoin, QueryJoinInput } from \"src/queries/sql/query.ts\";\nimport {\n type CollectionJoin,\n type TableFilter,\n type TableFor,\n getTableMgmt,\n isEntityTable,\n newTableProxy,\n tableEntityWhere,\n tableWhere,\n} from \"src/queries/sql/Tables.ts\";\nimport type { FieldsOf } from \"src/typeMap.ts\";\nimport { fail } from \"src/utils.ts\";\n\n/** Domain filters and optional table bindings for one node in a relationship tree. */\nexport type JoinTree<T extends Entity> = Omit<TableFilter<T>, RelationNames<T>> & {\n readonly as?: TableFor<T>;\n} & {\n readonly [K in RelationNames<T>]?: FieldsOf<T>[K] extends {\n kind: \"m2o\" | \"o2m\" | \"lo2m\" | \"m2m\" | \"o2o\";\n type: infer U extends Entity;\n }\n ? JoinTree<U> | (K extends keyof TableFilter<T> ? TableFilter<T>[K] : JoinedEntityFilter<U>)\n : never;\n};\n\n/**\n * Filters entities, e.g. `{ books: \"b:1\" }` filters Book.id to 1.\n *\n * Adapted from `em.find`s EntityFilter, rather than a direct copy:\n *\n * - Keeps entity/ID, list, boolean, and `ne` filters, but omits scopes, find aliases, nested objects, and logical groups.\n * - JoinTree supplies nested objects and table bindings separately.\n * - Lists can mix entities and IDs, unlike EntityFilter's separate entity[] and ID[] alternatives.\n * - Null is always allowed because these relationships use LEFT joins.\n * - undefined comes from JoinTree's optional relationship keys.\n */\ntype JoinedEntityFilter<T extends Entity> =\n | IdOf<T>\n | T\n | readonly (IdOf<T> | T)[]\n | boolean\n | null\n | { ne: IdOf<T> | T | null | undefined };\n\ntype RelationNames<T extends Entity> = {\n [K in keyof FieldsOf<T>]: FieldsOf<T>[K] extends { kind: \"m2o\" | \"poly\" | \"o2m\" | \"lo2m\" | \"m2m\" | \"o2o\" }\n ? K\n : never;\n}[keyof FieldsOf<T>];\n\n/**\n * Validates a join tree against the entity in `from`, preserving its exact table bindings.\n *\n * I.e. given:\n *\n * ```ts\n * const [a, b] = tables(Author, Book);\n * em.query({\n * from: a,\n * join: { books: { as: b, title: \"One\" } },\n * select: { title: b.title },\n * });\n * // F = typeof a\n * // J = { books: { as: typeof b; title: string } }\n * ```\n *\n * We:\n *\n * - Infer `T = Author` from `F`,\n * - Validate `books` against `Author`,\n * - Validate `title` against `Book`, and\n * - Retain `typeof b` for result typing.\n */\nexport type CheckJoinInput<F, J> =\n // If J accepts the entire list-or-tree union, its annotation erased the join shape.\n // Queries with no join infer [] and use the list branch below.\n QueryJoinInput extends J\n ? { join?: \"join was typed too generically; use `satisfies Query` instead of `: Query`\" }\n : // If J is an array, then it's a QueryJoinList and we can return unknown\n [J] extends [readonly unknown[]]\n ? unknown\n : F extends TableFor<infer T extends Entity>\n ? // Validate domain filters and bindings, including extra keys on variables and nested trees.\n { join?: JoinTree<T> & CheckTree<T, J> }\n : // This incompatible type reports why a tree can't start at a non-entity source.\n { join?: \"join trees require an entity table in from\" };\n\n/**\n * Determines which tables a join tree binds and whether each uses an INNER or LEFT join.\n *\n * Query result types use these entries to identify available tables and columns that can be null.\n *\n * I.e. Author.books.author uses LEFT joins for both Book and its Author because an Author may have no Books.\n */\nexport type TreeEntries<T extends Entity, J, Nullable extends boolean = false> =\n // If every string is valid keyof J, then we've lost our literal type (i.e. as const) and were\n // passed an opaque type like Record<string, unknown> that doesn't expose its specific relationship\n // keys or table bindings to collect, so just return never.\n string extends keyof J\n ? never\n : // If J has an `as` key, it might be the general JoinTree<T> type, which we check for in the next ternary.\n // If J doesn't have `as`, it can't be the general `JoinTree<T>` so we can jump straight to TreeEntriesImpl.\n \"as\" extends keyof J\n ? // If `JoinTree<T> extends J`, then we again have a board type. CheckTree will reject this input, but\n // here we stop instead of following every relationship in the domain graph.\n JoinTree<T> extends J\n ? never\n : TreeEntriesImpl<T, J, Nullable>\n : TreeEntriesImpl<T, J, Nullable>;\n\n/** Collects join entries from the relationship keys supplied in this tree node. */\ntype TreeEntriesImpl<T extends Entity, J, Nullable extends boolean> = {\n [K in keyof J & keyof FieldsOf<T>]: FieldsOf<T>[K] extends {\n kind: \"m2o\" | \"o2m\" | \"lo2m\" | \"m2m\" | \"o2o\";\n type: infer U extends Entity;\n }\n ? TreeNodeJoins<\n U,\n Exclude<J[K], undefined>,\n Nullable extends true ? true : FieldsOf<T>[K] extends { kind: \"m2o\"; nullable: never } ? false : true\n >\n : never;\n}[keyof J & keyof FieldsOf<T>];\n\n/**\n * Collects the join entries for this node's table binding and its nested relationships.\n *\n * An `as` binding contributes a LeftJoin or InnerJoin according to Nullable.\n * Without a binding, only nested relationship entries are included; entity, ID, and list filters add none.\n */\ntype TreeNodeJoins<T extends Entity, J, Nullable extends boolean> =\n // If `J extends Entity | unknown[]`, then it's a leaf entity/id filter, so stop recursing\n J extends Entity | readonly unknown[]\n ? never\n : // If `J extends object`, look for an `as` binding and nested relationships.\n // If `J extends object` is false, this is a scalar filter like \"b:1\" in `{ books: \"b:1\" }` and we stop here.\n J extends object\n ?\n | (J extends { readonly as: infer A extends TableFor<T> }\n ? Nullable extends true\n ? LeftJoin<A>\n : InnerJoin<A>\n : never)\n | TreeEntries<T, J, Nullable>\n : never;\n\n/** Rejects broad tree annotations before checking their supplied keys and values. */\ntype CheckTree<T extends Entity, J> =\n // An entity or a list of entities/IDs is a filter value, so don't check its properties as tree keys.\n J extends Entity | readonly unknown[]\n ? unknown\n : \"as\" extends keyof J\n ? JoinTree<T> extends J\n ? \"join tree bindings were typed too generically; use `satisfies JoinTree<T>` instead of `: JoinTree<T>`\"\n : CheckTreeKeys<T, J>\n : CheckTreeKeys<T, J>;\n\n/** Rejects unknown tree keys, including extra properties on objects stored in variables. */\ntype CheckTreeKeys<T extends Entity, J> = [Exclude<keyof J, keyof JoinTree<T>>] extends [never]\n ? {\n [K in keyof J]: K extends \"as\"\n ? J[K] extends TableFor<T> | undefined\n ? unknown\n : never\n : K extends keyof JoinTree<T>\n ? K extends keyof FieldsOf<T>\n ? FieldsOf<T>[K] extends { kind: \"m2o\" | \"o2m\" | \"lo2m\" | \"m2m\" | \"o2o\"; type: infer U extends Entity }\n ? (J[K] extends JoinTree<T>[K] ? unknown : never) & CheckRelationTree<U, J[K]>\n : J[K] extends JoinTree<T>[K]\n ? unknown\n : never\n : unknown\n : never;\n // Report the error on the tree object; intersecting a message with a boolean field would collapse to never.\n }\n : `unknown join tree field '${Exclude<keyof J, keyof JoinTree<T>> & string}'`;\n\n/** Checks each optional relationship alternative without treating entities or exclusion filters as trees. */\ntype CheckRelationTree<T extends Entity, J> = J extends object\n ? \"ne\" extends keyof J\n ? unknown\n : CheckTree<T, J>\n : unknown;\n\n/**\n * Walks domain relationship filters into ordinary SQL joins and WHERE predicates.\n * Handles remain query-local; no SQL aliases or caller objects are changed.\n * I.e. Author.books.author emits Book before its Author, even if only the final Author has an as binding.\n */\nexport function compileJoinTree(from: unknown, tree: unknown): { joins: QueryJoin[]; condition: QueryCondition } {\n if (!isEntityTable(from)) fail(\"Join trees require an entity table in from\");\n const joins: QueryJoin[] = [];\n const conditions: QueryCondition[] = [];\n const bound = new Set<object>([getTableMgmt(from)]);\n visitTree(from, tree, joins, conditions, bound);\n return { joins, condition: { and: conditions } };\n}\n\n/**\n * Compiles one node, leaving relationship conditions in WHERE rather than ON.\n * Each relationship gets one target handle; reusing a bound handle would merge distinct paths.\n * Owning-reference ID filters stay on the FK, while collection ID filters use the joined primary key.\n */\nfunction visitTree(\n source: TableFor<Entity>,\n tree: unknown,\n joins: QueryJoin[],\n conditions: QueryCondition[],\n bound: Set<object>,\n): void {\n if (!isTreeObject(tree)) fail(\"Expected a join tree object\");\n const mgmt = getTableMgmt(source);\n if (tree.as !== undefined && tree.as !== source) fail(\"Join tree root as must be the same table handle as from\");\n for (const [key, value] of Object.entries(tree)) {\n if (key === \"as\") continue;\n const field = mgmt.meta.allFields[key] ?? fail(`Unknown join tree field ${mgmt.meta.type}.${key}`);\n if (!(key in mgmt.meta.fields)) fail(`Join trees do not support inherited field ${mgmt.meta.type}.${key}`);\n if (field.kind === \"poly\") fail(`Join trees do not support polymorphic field ${mgmt.meta.type}.${key}`);\n if ([\"m2o\", \"o2m\", \"lo2m\", \"m2m\", \"o2o\"].includes(field.kind)) {\n if (value === undefined) continue;\n if (field.kind === \"m2o\" && !isTreeObject(value)) {\n // Avoid joining the related table; add the condition directly to the FK column.\n conditions.push(tableWhere(mgmt, { [key]: value }));\n continue;\n }\n if (field.kind === \"m2o\" && isTreeObject(value) && Object.hasOwn(value, \"ne\")) {\n // Exclusion filters also apply directly to the FK column without joining the related table.\n conditions.push(tableWhere(mgmt, { [key]: value }));\n continue;\n }\n // The field-kind check above establishes the relationship metadata and factory shape.\n if (!(\"otherMetadata\" in field)) fail(`Unsupported join tree field ${mgmt.meta.type}.${key}`);\n const meta = field.otherMetadata();\n const target = isTreeObject(value) && value.as !== undefined ? value.as : newTableProxy(meta.cstr);\n if (!isEntityTable(target) || getTableMgmt(target).meta !== meta) {\n fail(`Join tree binding for ${mgmt.meta.type}.${key} must be a ${meta.type} table`);\n }\n const identity = getTableMgmt(target);\n if (bound.has(identity))\n fail(`Join tree table ${meta.type} is bound more than once; create a separate table handle`);\n bound.add(identity);\n const relation = (source as unknown as Record<string, CollectionJoin<Entity>>)[key];\n joins.push(relation.as(target));\n // Recurse into nested relationship filters, e.g. `{ books: { title: \"One\" } }`.\n // A `{ ne: ... }` object instead filters the joined entity's ID, so handle it like an ID or entity value.\n // We don't have to handle other keys like `gt`, etc. b/c we know this is an entity filter, not a value filter.\n if (isTreeObject(value) && !Object.hasOwn(value, \"ne\")) {\n visitTree(target, value, joins, conditions, bound);\n } else {\n conditions.push(tableEntityWhere(identity, value));\n }\n } else {\n conditions.push(tableWhere(mgmt, { [key]: value }));\n }\n }\n}\n\n/** Separates nested relationship objects from entity, ID, and list filters. */\nfunction isTreeObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value) && !isEntity(value);\n}\n"],"mappings":";;;;;;;;;AAiMA,SAAgB,gBAAgB,MAAe,MAAkE;CAC/G,IAAI,CAAC,cAAc,IAAI,GAAG,KAAK,4CAA4C;CAC3E,MAAM,QAAqB,CAAC;CAC5B,MAAM,aAA+B,CAAC;CAEtC,UAAU,MAAM,MAAM,OAAO,4BAAY,IADvB,IAAY,CAAC,aAAa,IAAI,CAAC,CACJ,CAAC;CAC9C,OAAO;EAAE;EAAO,WAAW,EAAE,KAAK,WAAW;CAAE;AACjD;;;;;;AAOA,SAAS,UACP,QACA,MACA,OACA,YACA,OACM;CACN,IAAI,CAAC,aAAa,IAAI,GAAG,KAAK,6BAA6B;CAC3D,MAAM,OAAO,aAAa,MAAM;CAChC,IAAI,KAAK,OAAO,KAAA,KAAa,KAAK,OAAO,QAAQ,KAAK,yDAAyD;CAC/G,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,IAAI,GAAG;EAC/C,IAAI,QAAQ,MAAM;EAClB,MAAM,QAAQ,KAAK,KAAK,UAAU,QAAQ,KAAK,2BAA2B,KAAK,KAAK,KAAK,GAAG,KAAK;EACjG,IAAI,EAAE,OAAO,KAAK,KAAK,SAAS,KAAK,6CAA6C,KAAK,KAAK,KAAK,GAAG,KAAK;EACzG,IAAI,MAAM,SAAS,QAAQ,KAAK,+CAA+C,KAAK,KAAK,KAAK,GAAG,KAAK;EACtG,IAAI;GAAC;GAAO;GAAO;GAAQ;GAAO;EAAK,CAAC,CAAC,SAAS,MAAM,IAAI,GAAG;GAC7D,IAAI,UAAU,KAAA,GAAW;GACzB,IAAI,MAAM,SAAS,SAAS,CAAC,aAAa,KAAK,GAAG;IAEhD,WAAW,KAAK,WAAW,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC;IAClD;GACF;GACA,IAAI,MAAM,SAAS,SAAS,aAAa,KAAK,KAAK,OAAO,OAAO,OAAO,IAAI,GAAG;IAE7E,WAAW,KAAK,WAAW,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC;IAClD;GACF;GAEA,IAAI,EAAE,mBAAmB,QAAQ,KAAK,+BAA+B,KAAK,KAAK,KAAK,GAAG,KAAK;GAC5F,MAAM,OAAO,MAAM,cAAc;GACjC,MAAM,SAAS,aAAa,KAAK,KAAK,MAAM,OAAO,KAAA,IAAY,MAAM,KAAK,cAAc,KAAK,IAAI;GACjG,IAAI,CAAC,cAAc,MAAM,KAAK,aAAa,MAAM,CAAC,CAAC,SAAS,MAC1D,KAAK,yBAAyB,KAAK,KAAK,KAAK,GAAG,IAAI,aAAa,KAAK,KAAK,OAAO;GAEpF,MAAM,WAAW,aAAa,MAAM;GACpC,IAAI,MAAM,IAAI,QAAQ,GACpB,KAAK,mBAAmB,KAAK,KAAK,yDAAyD;GAC7F,MAAM,IAAI,QAAQ;GAClB,MAAM,WAAY,OAA6D;GAC/E,MAAM,KAAK,SAAS,GAAG,MAAM,CAAC;GAI9B,IAAI,aAAa,KAAK,KAAK,CAAC,OAAO,OAAO,OAAO,IAAI,GACnD,UAAU,QAAQ,OAAO,OAAO,YAAY,KAAK;QAEjD,WAAW,KAAK,iBAAiB,UAAU,KAAK,CAAC;EAErD,OACE,WAAW,KAAK,WAAW,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC;CAEtD;AACF;;AAGA,SAAS,aAAa,OAAkD;CACtE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,KAAK,CAAC,SAAS,KAAK;AAChG"}
|