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,115 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_queries_parsedConditions = require("../parsedConditions.cjs");
|
|
3
|
+
const require_queries_find_QueryParser = require("./QueryParser.cjs");
|
|
4
|
+
const require_utils = require("../../utils.cjs");
|
|
5
|
+
//#region src/queries/find/QueryParser.pruning.ts
|
|
6
|
+
function pruneUnusedJoins(parsed, keepAliases) {
|
|
7
|
+
const dt = new DependencyTracker();
|
|
8
|
+
const todo = [...parsed.tables];
|
|
9
|
+
while (todo.length > 0) {
|
|
10
|
+
const t = todo.pop();
|
|
11
|
+
if (t.join === "lateral") {
|
|
12
|
+
dt.addAlias(t.alias, [t.fromAlias]);
|
|
13
|
+
todo.push(...t.query.tables);
|
|
14
|
+
} else if (t.join === "cross") dt.markRequired(t.alias);
|
|
15
|
+
else if (t.join === "primary") dt.markRequired(t.alias);
|
|
16
|
+
else if (parsed.ctes?.some((cte) => cte.alias === t.table)) {
|
|
17
|
+
dt.addAlias(t.alias, joinDependencies(t));
|
|
18
|
+
dt.markRequired(t.alias);
|
|
19
|
+
} else dt.addAlias(t.alias, joinDependencies(t));
|
|
20
|
+
}
|
|
21
|
+
parsed.selects.forEach((s) => {
|
|
22
|
+
if (typeof s === "string") markSelectAliases(dt, parsed, s);
|
|
23
|
+
else if ("aliases" in s) {
|
|
24
|
+
for (const a of s.aliases) dt.markRequired(a);
|
|
25
|
+
markSelectAliases(dt, parsed, s.sql);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
parsed.orderBys.forEach((o) => dt.markRequired(o.alias));
|
|
29
|
+
parsed.groupBys?.forEach((g) => {
|
|
30
|
+
if ("expression" in g) markSelectAliases(dt, parsed, g.expression);
|
|
31
|
+
else dt.markRequired(g.alias);
|
|
32
|
+
});
|
|
33
|
+
keepAliases.forEach((a) => dt.markRequired(a));
|
|
34
|
+
const todo2 = [{
|
|
35
|
+
query: parsed,
|
|
36
|
+
filterPruneable: true
|
|
37
|
+
}];
|
|
38
|
+
while (todo2.length > 0) {
|
|
39
|
+
const { query, filterPruneable } = todo2.pop();
|
|
40
|
+
require_queries_parsedConditions.deepFindConditions(query.condition, filterPruneable).forEach((c) => {
|
|
41
|
+
if (c.kind === "column") dt.markRequired(c.alias);
|
|
42
|
+
else if (c.kind === "raw") for (const alias of c.aliases) dt.markRequired(alias);
|
|
43
|
+
else if (c.kind === "exists") for (const alias of c.outerAliases) dt.markRequired(alias);
|
|
44
|
+
else require_utils.assertNever(c);
|
|
45
|
+
});
|
|
46
|
+
todo2.push(...query.tables.filter((t) => t.join === "lateral").map((t) => ({
|
|
47
|
+
query: t.query,
|
|
48
|
+
filterPruneable: false
|
|
49
|
+
})));
|
|
50
|
+
}
|
|
51
|
+
parsed.tables = parsed.tables.filter((t) => dt.required.has(t.alias));
|
|
52
|
+
if (parsed.condition && parsed.condition.op === "and") parsed.condition.conditions = parsed.condition.conditions.filter((c) => {
|
|
53
|
+
if (c.kind === "column") return !(c.pruneable && !dt.required.has(c.alias));
|
|
54
|
+
else return c;
|
|
55
|
+
});
|
|
56
|
+
if (parsed.condition && parsed.condition.conditions.length === 0) parsed.condition = void 0;
|
|
57
|
+
}
|
|
58
|
+
/** Returns the aliases needed to evaluate a join's ON clause, excluding the joined alias itself. */
|
|
59
|
+
function joinDependencies(t) {
|
|
60
|
+
return [require_queries_find_QueryParser.parseAlias(t.col1), require_queries_find_QueryParser.parseAlias(t.col2)].filter((alias) => alias !== t.alias);
|
|
61
|
+
}
|
|
62
|
+
/** Marks aliases used by select strings, including generated CTI expressions like `COALESCE(st0.col, st1.col)`. */
|
|
63
|
+
function markSelectAliases(dt, parsed, select) {
|
|
64
|
+
for (const table of parsed.tables) if (selectReferencesAlias(select, table.alias)) dt.markRequired(table.alias);
|
|
65
|
+
}
|
|
66
|
+
/** Returns true if a raw select expression references `alias.column` or the whole-row `alias`. */
|
|
67
|
+
function selectReferencesAlias(select, alias) {
|
|
68
|
+
return selectReferencesCandidate(select, `${alias}.`) || selectReferencesCandidate(select, `"${alias}".`) || selectReferencesCandidate(select, alias) || selectReferencesCandidate(select, `"${alias}"`);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Returns true when `candidate` is present at a SQL identifier boundary.
|
|
72
|
+
*
|
|
73
|
+
* Scans the select string for literal candidate matches, then verifies the characters before/after the match are not
|
|
74
|
+
* part of a larger identifier or dotted path. I.e. `row_to_json("ap")` matches, but `foo_"ap"` and `foo.ap` do not.
|
|
75
|
+
*/
|
|
76
|
+
function selectReferencesCandidate(select, candidate) {
|
|
77
|
+
let index = select.indexOf(candidate);
|
|
78
|
+
const quoted = candidate.startsWith("\"");
|
|
79
|
+
while (index !== -1) {
|
|
80
|
+
const previous = select[index - 1];
|
|
81
|
+
const next = select[index + candidate.length];
|
|
82
|
+
if ((index === 0 || previous !== "." && !isSqlIdentifierChar(previous)) && !isSqlIdentifierChar(next) && (quoted || previous !== "\"" && next !== "\"")) return true;
|
|
83
|
+
index = select.indexOf(candidate, index + candidate.length);
|
|
84
|
+
}
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
/** Returns true for characters that can be part of an unquoted SQL identifier. */
|
|
88
|
+
function isSqlIdentifierChar(char) {
|
|
89
|
+
return char !== void 0 && /[A-Za-z0-9_]/.test(char);
|
|
90
|
+
}
|
|
91
|
+
/** Track join dependencies for `pruneUnusedJoins`. */
|
|
92
|
+
var DependencyTracker = class {
|
|
93
|
+
nodes = /* @__PURE__ */ new Map();
|
|
94
|
+
required = /* @__PURE__ */ new Set();
|
|
95
|
+
addAlias(alias, dependencies = []) {
|
|
96
|
+
this.nodes.set(alias, dependencies);
|
|
97
|
+
}
|
|
98
|
+
markRequired(alias) {
|
|
99
|
+
const marked = /* @__PURE__ */ new Set();
|
|
100
|
+
const todo = [alias];
|
|
101
|
+
while (todo.length > 0) {
|
|
102
|
+
const alias = todo.pop();
|
|
103
|
+
if (!marked.has(alias)) {
|
|
104
|
+
marked.add(alias);
|
|
105
|
+
todo.push(...this.nodes.get(alias) || []);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
this.required = /* @__PURE__ */ new Set([...this.required, ...marked]);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
//#endregion
|
|
112
|
+
exports.pruneUnusedJoins = pruneUnusedJoins;
|
|
113
|
+
exports.selectReferencesAlias = selectReferencesAlias;
|
|
114
|
+
|
|
115
|
+
//# sourceMappingURL=QueryParser.pruning.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryParser.pruning.cjs","names":["parseAlias"],"sources":["../../../src/queries/find/QueryParser.pruning.ts"],"sourcesContent":["import { type JoinTable, type ParsedFindQuery, parseAlias } from \"src/queries/find/QueryParser.ts\";\nimport { deepFindConditions } from \"src/queries/parsedConditions.ts\";\nimport { assertNever } from \"src/utils.ts\";\n\n// Remove any joins that are not used in the select or conditions\nexport function pruneUnusedJoins(parsed: ParsedFindQuery, keepAliases: string[]): void {\n const dt = new DependencyTracker();\n\n // First setup the alias -> alias dependencies...\n const todo = [...parsed.tables];\n while (todo.length > 0) {\n const t = todo.pop()!;\n if (t.join === \"lateral\") {\n dt.addAlias(t.alias, [t.fromAlias]);\n // Recurse into lateral joins...\n todo.push(...t.query.tables);\n } else if (t.join === \"cross\") {\n dt.markRequired(t.alias);\n } else if (t.join === \"primary\") {\n dt.markRequired(t.alias);\n } else if (parsed.ctes?.some((cte) => cte.alias === t.table)) {\n dt.addAlias(t.alias, joinDependencies(t));\n dt.markRequired(t.alias);\n } else {\n dt.addAlias(t.alias, joinDependencies(t));\n }\n }\n\n // Mark all terminal usages\n parsed.selects.forEach((s) => {\n if (typeof s === \"string\") {\n markSelectAliases(dt, parsed, s);\n } else if (\"aliases\" in s) {\n for (const a of s.aliases) dt.markRequired(a);\n markSelectAliases(dt, parsed, s.sql);\n }\n });\n parsed.orderBys.forEach((o) => dt.markRequired(o.alias));\n parsed.groupBys?.forEach((g) => {\n if (\"expression\" in g) {\n markSelectAliases(dt, parsed, g.expression);\n } else {\n dt.markRequired(g.alias);\n }\n });\n keepAliases.forEach((a) => dt.markRequired(a));\n // Look recursively into CTE & lateral join conditions\n const todo2 = [{ query: parsed, filterPruneable: true }];\n while (todo2.length > 0) {\n const { query, filterPruneable } = todo2.pop()!;\n deepFindConditions(query.condition, filterPruneable).forEach((c) => {\n if (c.kind === \"column\") {\n dt.markRequired(c.alias);\n } else if (c.kind === \"raw\") {\n for (const alias of c.aliases) dt.markRequired(alias);\n } else if (c.kind === \"exists\") {\n for (const alias of c.outerAliases) dt.markRequired(alias);\n } else {\n assertNever(c);\n }\n });\n todo2.push(\n ...query.tables.filter((t) => t.join === \"lateral\").map((t) => ({ query: t.query, filterPruneable: false })),\n );\n }\n\n // Now remove any unused joins\n parsed.tables = parsed.tables.filter((t) => dt.required.has(t.alias));\n\n // And then remove any inline soft-delete conditions we don't need anymore\n if (parsed.condition && parsed.condition.op === \"and\") {\n parsed.condition.conditions = parsed.condition.conditions.filter((c) => {\n if (c.kind === \"column\") {\n const prune = c.pruneable && !dt.required.has(c.alias);\n // if (prune) console.log(`DROPPING`, c);\n return !prune;\n } else {\n return c;\n }\n });\n }\n\n // Remove any `{ and: [...] }`s that are empty; we should probably do this deeply?\n if (parsed.condition && parsed.condition.conditions.length === 0) {\n parsed.condition = undefined;\n }\n}\n\n/** Returns the aliases needed to evaluate a join's ON clause, excluding the joined alias itself. */\nfunction joinDependencies(t: JoinTable): string[] {\n return [parseAlias(t.col1), parseAlias(t.col2)].filter((alias) => alias !== t.alias);\n}\n\n/** Marks aliases used by select strings, including generated CTI expressions like `COALESCE(st0.col, st1.col)`. */\nfunction markSelectAliases(dt: DependencyTracker, parsed: ParsedFindQuery, select: string): void {\n for (const table of parsed.tables) {\n if (selectReferencesAlias(select, table.alias)) {\n dt.markRequired(table.alias);\n }\n }\n}\n\n/** Returns true if a raw select expression references `alias.column` or the whole-row `alias`. */\nexport function selectReferencesAlias(select: string, alias: string): boolean {\n // Most selects are simple `a.*`, but CTI adds expressions like\n // `COALESCE(p_s0.shared_column, p_s1.shared_column) as shared_column`.\n // Those expressions must keep the subtype joins, but `parseAlias` only sees\n // the leading function name. Instead of parsing SQL, scan for the only alias\n // forms Joist generates in selects: `alias.column`, `\"alias\".column`, and whole-row aliases.\n return (\n selectReferencesCandidate(select, `${alias}.`) ||\n selectReferencesCandidate(select, `\"${alias}\".`) ||\n selectReferencesCandidate(select, alias) ||\n selectReferencesCandidate(select, `\"${alias}\"`)\n );\n}\n\n/**\n * Returns true when `candidate` is present at a SQL identifier boundary.\n *\n * Scans the select string for literal candidate matches, then verifies the characters before/after the match are not\n * part of a larger identifier or dotted path. I.e. `row_to_json(\"ap\")` matches, but `foo_\"ap\"` and `foo.ap` do not.\n */\nfunction selectReferencesCandidate(select: string, candidate: string): boolean {\n let index = select.indexOf(candidate);\n const quoted = candidate.startsWith('\"');\n while (index !== -1) {\n // Each loop inspects one literal occurrence of `candidate`, then either accepts it as a real alias reference or\n // advances to the next occurrence if the surrounding characters show it is part of a larger token.\n // Avoid treating `foo.a.id` as a reference to `a`; Joist-generated aliases\n // appear at the start of an expression or after punctuation/whitespace.\n const previous = select[index - 1];\n const next = select[index + candidate.length];\n if (\n (index === 0 || (previous !== \".\" && !isSqlIdentifierChar(previous))) &&\n !isSqlIdentifierChar(next) &&\n (quoted || (previous !== '\"' && next !== '\"'))\n ) {\n return true;\n }\n // Continue scanning after the current occurrence; `indexOf` returns -1 once there are no more candidates.\n index = select.indexOf(candidate, index + candidate.length);\n }\n return false;\n}\n\n/** Returns true for characters that can be part of an unquoted SQL identifier. */\nfunction isSqlIdentifierChar(char: string | undefined): boolean {\n return char !== undefined && /[A-Za-z0-9_]/.test(char);\n}\n\n/** Track join dependencies for `pruneUnusedJoins`. */\nclass DependencyTracker {\n private nodes: Map<string, string[]> = new Map();\n required: Set<string> = new Set();\n\n addAlias(alias: string, dependencies: string[] = []): void {\n this.nodes.set(alias, dependencies);\n }\n\n markRequired(alias: string): void {\n const marked = new Set<string>();\n const todo = [alias];\n while (todo.length > 0) {\n const alias = todo.pop()!;\n if (!marked.has(alias)) {\n marked.add(alias);\n todo.push(...(this.nodes.get(alias) || []));\n }\n }\n this.required = new Set([...this.required, ...marked]);\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ParsedFindQuery } from "./QueryParser.cjs";
|
|
2
|
+
//#region src/queries/find/QueryParser.pruning.d.ts
|
|
3
|
+
declare function pruneUnusedJoins(parsed: ParsedFindQuery, keepAliases: string[]): void;
|
|
4
|
+
/** Returns true if a raw select expression references `alias.column` or the whole-row `alias`. */
|
|
5
|
+
declare function selectReferencesAlias(select: string, alias: string): boolean;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { pruneUnusedJoins, selectReferencesAlias };
|
|
8
|
+
//# sourceMappingURL=QueryParser.pruning.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryParser.pruning.d.cts","names":[],"sources":["../../../src/queries/find/QueryParser.pruning.ts"],"mappings":";;iBAKgB,iBAAiB,QAAQ,iBAAiB;;iBAkG1C,sBAAsB,gBAAgB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ParsedFindQuery } from "./QueryParser.mjs";
|
|
2
|
+
//#region src/queries/find/QueryParser.pruning.d.ts
|
|
3
|
+
declare function pruneUnusedJoins(parsed: ParsedFindQuery, keepAliases: string[]): void;
|
|
4
|
+
/** Returns true if a raw select expression references `alias.column` or the whole-row `alias`. */
|
|
5
|
+
declare function selectReferencesAlias(select: string, alias: string): boolean;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { pruneUnusedJoins, selectReferencesAlias };
|
|
8
|
+
//# sourceMappingURL=QueryParser.pruning.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryParser.pruning.d.mts","names":[],"sources":["../../../src/queries/find/QueryParser.pruning.ts"],"mappings":";;iBAKgB,iBAAiB,QAAQ,iBAAiB;;iBAkG1C,sBAAsB,gBAAgB"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { deepFindConditions } from "../parsedConditions.js";
|
|
2
|
+
import { parseAlias } from "./QueryParser.js";
|
|
3
|
+
import { assertNever } from "../../utils.js";
|
|
4
|
+
//#region src/queries/find/QueryParser.pruning.ts
|
|
5
|
+
function pruneUnusedJoins(parsed, keepAliases) {
|
|
6
|
+
const dt = new DependencyTracker();
|
|
7
|
+
const todo = [...parsed.tables];
|
|
8
|
+
while (todo.length > 0) {
|
|
9
|
+
const t = todo.pop();
|
|
10
|
+
if (t.join === "lateral") {
|
|
11
|
+
dt.addAlias(t.alias, [t.fromAlias]);
|
|
12
|
+
todo.push(...t.query.tables);
|
|
13
|
+
} else if (t.join === "cross") dt.markRequired(t.alias);
|
|
14
|
+
else if (t.join === "primary") dt.markRequired(t.alias);
|
|
15
|
+
else if (parsed.ctes?.some((cte) => cte.alias === t.table)) {
|
|
16
|
+
dt.addAlias(t.alias, joinDependencies(t));
|
|
17
|
+
dt.markRequired(t.alias);
|
|
18
|
+
} else dt.addAlias(t.alias, joinDependencies(t));
|
|
19
|
+
}
|
|
20
|
+
parsed.selects.forEach((s) => {
|
|
21
|
+
if (typeof s === "string") markSelectAliases(dt, parsed, s);
|
|
22
|
+
else if ("aliases" in s) {
|
|
23
|
+
for (const a of s.aliases) dt.markRequired(a);
|
|
24
|
+
markSelectAliases(dt, parsed, s.sql);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
parsed.orderBys.forEach((o) => dt.markRequired(o.alias));
|
|
28
|
+
parsed.groupBys?.forEach((g) => {
|
|
29
|
+
if ("expression" in g) markSelectAliases(dt, parsed, g.expression);
|
|
30
|
+
else dt.markRequired(g.alias);
|
|
31
|
+
});
|
|
32
|
+
keepAliases.forEach((a) => dt.markRequired(a));
|
|
33
|
+
const todo2 = [{
|
|
34
|
+
query: parsed,
|
|
35
|
+
filterPruneable: true
|
|
36
|
+
}];
|
|
37
|
+
while (todo2.length > 0) {
|
|
38
|
+
const { query, filterPruneable } = todo2.pop();
|
|
39
|
+
deepFindConditions(query.condition, filterPruneable).forEach((c) => {
|
|
40
|
+
if (c.kind === "column") dt.markRequired(c.alias);
|
|
41
|
+
else if (c.kind === "raw") for (const alias of c.aliases) dt.markRequired(alias);
|
|
42
|
+
else if (c.kind === "exists") for (const alias of c.outerAliases) dt.markRequired(alias);
|
|
43
|
+
else assertNever(c);
|
|
44
|
+
});
|
|
45
|
+
todo2.push(...query.tables.filter((t) => t.join === "lateral").map((t) => ({
|
|
46
|
+
query: t.query,
|
|
47
|
+
filterPruneable: false
|
|
48
|
+
})));
|
|
49
|
+
}
|
|
50
|
+
parsed.tables = parsed.tables.filter((t) => dt.required.has(t.alias));
|
|
51
|
+
if (parsed.condition && parsed.condition.op === "and") parsed.condition.conditions = parsed.condition.conditions.filter((c) => {
|
|
52
|
+
if (c.kind === "column") return !(c.pruneable && !dt.required.has(c.alias));
|
|
53
|
+
else return c;
|
|
54
|
+
});
|
|
55
|
+
if (parsed.condition && parsed.condition.conditions.length === 0) parsed.condition = void 0;
|
|
56
|
+
}
|
|
57
|
+
/** Returns the aliases needed to evaluate a join's ON clause, excluding the joined alias itself. */
|
|
58
|
+
function joinDependencies(t) {
|
|
59
|
+
return [parseAlias(t.col1), parseAlias(t.col2)].filter((alias) => alias !== t.alias);
|
|
60
|
+
}
|
|
61
|
+
/** Marks aliases used by select strings, including generated CTI expressions like `COALESCE(st0.col, st1.col)`. */
|
|
62
|
+
function markSelectAliases(dt, parsed, select) {
|
|
63
|
+
for (const table of parsed.tables) if (selectReferencesAlias(select, table.alias)) dt.markRequired(table.alias);
|
|
64
|
+
}
|
|
65
|
+
/** Returns true if a raw select expression references `alias.column` or the whole-row `alias`. */
|
|
66
|
+
function selectReferencesAlias(select, alias) {
|
|
67
|
+
return selectReferencesCandidate(select, `${alias}.`) || selectReferencesCandidate(select, `"${alias}".`) || selectReferencesCandidate(select, alias) || selectReferencesCandidate(select, `"${alias}"`);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Returns true when `candidate` is present at a SQL identifier boundary.
|
|
71
|
+
*
|
|
72
|
+
* Scans the select string for literal candidate matches, then verifies the characters before/after the match are not
|
|
73
|
+
* part of a larger identifier or dotted path. I.e. `row_to_json("ap")` matches, but `foo_"ap"` and `foo.ap` do not.
|
|
74
|
+
*/
|
|
75
|
+
function selectReferencesCandidate(select, candidate) {
|
|
76
|
+
let index = select.indexOf(candidate);
|
|
77
|
+
const quoted = candidate.startsWith("\"");
|
|
78
|
+
while (index !== -1) {
|
|
79
|
+
const previous = select[index - 1];
|
|
80
|
+
const next = select[index + candidate.length];
|
|
81
|
+
if ((index === 0 || previous !== "." && !isSqlIdentifierChar(previous)) && !isSqlIdentifierChar(next) && (quoted || previous !== "\"" && next !== "\"")) return true;
|
|
82
|
+
index = select.indexOf(candidate, index + candidate.length);
|
|
83
|
+
}
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
/** Returns true for characters that can be part of an unquoted SQL identifier. */
|
|
87
|
+
function isSqlIdentifierChar(char) {
|
|
88
|
+
return char !== void 0 && /[A-Za-z0-9_]/.test(char);
|
|
89
|
+
}
|
|
90
|
+
/** Track join dependencies for `pruneUnusedJoins`. */
|
|
91
|
+
var DependencyTracker = class {
|
|
92
|
+
nodes = /* @__PURE__ */ new Map();
|
|
93
|
+
required = /* @__PURE__ */ new Set();
|
|
94
|
+
addAlias(alias, dependencies = []) {
|
|
95
|
+
this.nodes.set(alias, dependencies);
|
|
96
|
+
}
|
|
97
|
+
markRequired(alias) {
|
|
98
|
+
const marked = /* @__PURE__ */ new Set();
|
|
99
|
+
const todo = [alias];
|
|
100
|
+
while (todo.length > 0) {
|
|
101
|
+
const alias = todo.pop();
|
|
102
|
+
if (!marked.has(alias)) {
|
|
103
|
+
marked.add(alias);
|
|
104
|
+
todo.push(...this.nodes.get(alias) || []);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
this.required = /* @__PURE__ */ new Set([...this.required, ...marked]);
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
//#endregion
|
|
111
|
+
export { pruneUnusedJoins, selectReferencesAlias };
|
|
112
|
+
|
|
113
|
+
//# sourceMappingURL=QueryParser.pruning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryParser.pruning.js","names":[],"sources":["../../../src/queries/find/QueryParser.pruning.ts"],"sourcesContent":["import { type JoinTable, type ParsedFindQuery, parseAlias } from \"src/queries/find/QueryParser.ts\";\nimport { deepFindConditions } from \"src/queries/parsedConditions.ts\";\nimport { assertNever } from \"src/utils.ts\";\n\n// Remove any joins that are not used in the select or conditions\nexport function pruneUnusedJoins(parsed: ParsedFindQuery, keepAliases: string[]): void {\n const dt = new DependencyTracker();\n\n // First setup the alias -> alias dependencies...\n const todo = [...parsed.tables];\n while (todo.length > 0) {\n const t = todo.pop()!;\n if (t.join === \"lateral\") {\n dt.addAlias(t.alias, [t.fromAlias]);\n // Recurse into lateral joins...\n todo.push(...t.query.tables);\n } else if (t.join === \"cross\") {\n dt.markRequired(t.alias);\n } else if (t.join === \"primary\") {\n dt.markRequired(t.alias);\n } else if (parsed.ctes?.some((cte) => cte.alias === t.table)) {\n dt.addAlias(t.alias, joinDependencies(t));\n dt.markRequired(t.alias);\n } else {\n dt.addAlias(t.alias, joinDependencies(t));\n }\n }\n\n // Mark all terminal usages\n parsed.selects.forEach((s) => {\n if (typeof s === \"string\") {\n markSelectAliases(dt, parsed, s);\n } else if (\"aliases\" in s) {\n for (const a of s.aliases) dt.markRequired(a);\n markSelectAliases(dt, parsed, s.sql);\n }\n });\n parsed.orderBys.forEach((o) => dt.markRequired(o.alias));\n parsed.groupBys?.forEach((g) => {\n if (\"expression\" in g) {\n markSelectAliases(dt, parsed, g.expression);\n } else {\n dt.markRequired(g.alias);\n }\n });\n keepAliases.forEach((a) => dt.markRequired(a));\n // Look recursively into CTE & lateral join conditions\n const todo2 = [{ query: parsed, filterPruneable: true }];\n while (todo2.length > 0) {\n const { query, filterPruneable } = todo2.pop()!;\n deepFindConditions(query.condition, filterPruneable).forEach((c) => {\n if (c.kind === \"column\") {\n dt.markRequired(c.alias);\n } else if (c.kind === \"raw\") {\n for (const alias of c.aliases) dt.markRequired(alias);\n } else if (c.kind === \"exists\") {\n for (const alias of c.outerAliases) dt.markRequired(alias);\n } else {\n assertNever(c);\n }\n });\n todo2.push(\n ...query.tables.filter((t) => t.join === \"lateral\").map((t) => ({ query: t.query, filterPruneable: false })),\n );\n }\n\n // Now remove any unused joins\n parsed.tables = parsed.tables.filter((t) => dt.required.has(t.alias));\n\n // And then remove any inline soft-delete conditions we don't need anymore\n if (parsed.condition && parsed.condition.op === \"and\") {\n parsed.condition.conditions = parsed.condition.conditions.filter((c) => {\n if (c.kind === \"column\") {\n const prune = c.pruneable && !dt.required.has(c.alias);\n // if (prune) console.log(`DROPPING`, c);\n return !prune;\n } else {\n return c;\n }\n });\n }\n\n // Remove any `{ and: [...] }`s that are empty; we should probably do this deeply?\n if (parsed.condition && parsed.condition.conditions.length === 0) {\n parsed.condition = undefined;\n }\n}\n\n/** Returns the aliases needed to evaluate a join's ON clause, excluding the joined alias itself. */\nfunction joinDependencies(t: JoinTable): string[] {\n return [parseAlias(t.col1), parseAlias(t.col2)].filter((alias) => alias !== t.alias);\n}\n\n/** Marks aliases used by select strings, including generated CTI expressions like `COALESCE(st0.col, st1.col)`. */\nfunction markSelectAliases(dt: DependencyTracker, parsed: ParsedFindQuery, select: string): void {\n for (const table of parsed.tables) {\n if (selectReferencesAlias(select, table.alias)) {\n dt.markRequired(table.alias);\n }\n }\n}\n\n/** Returns true if a raw select expression references `alias.column` or the whole-row `alias`. */\nexport function selectReferencesAlias(select: string, alias: string): boolean {\n // Most selects are simple `a.*`, but CTI adds expressions like\n // `COALESCE(p_s0.shared_column, p_s1.shared_column) as shared_column`.\n // Those expressions must keep the subtype joins, but `parseAlias` only sees\n // the leading function name. Instead of parsing SQL, scan for the only alias\n // forms Joist generates in selects: `alias.column`, `\"alias\".column`, and whole-row aliases.\n return (\n selectReferencesCandidate(select, `${alias}.`) ||\n selectReferencesCandidate(select, `\"${alias}\".`) ||\n selectReferencesCandidate(select, alias) ||\n selectReferencesCandidate(select, `\"${alias}\"`)\n );\n}\n\n/**\n * Returns true when `candidate` is present at a SQL identifier boundary.\n *\n * Scans the select string for literal candidate matches, then verifies the characters before/after the match are not\n * part of a larger identifier or dotted path. I.e. `row_to_json(\"ap\")` matches, but `foo_\"ap\"` and `foo.ap` do not.\n */\nfunction selectReferencesCandidate(select: string, candidate: string): boolean {\n let index = select.indexOf(candidate);\n const quoted = candidate.startsWith('\"');\n while (index !== -1) {\n // Each loop inspects one literal occurrence of `candidate`, then either accepts it as a real alias reference or\n // advances to the next occurrence if the surrounding characters show it is part of a larger token.\n // Avoid treating `foo.a.id` as a reference to `a`; Joist-generated aliases\n // appear at the start of an expression or after punctuation/whitespace.\n const previous = select[index - 1];\n const next = select[index + candidate.length];\n if (\n (index === 0 || (previous !== \".\" && !isSqlIdentifierChar(previous))) &&\n !isSqlIdentifierChar(next) &&\n (quoted || (previous !== '\"' && next !== '\"'))\n ) {\n return true;\n }\n // Continue scanning after the current occurrence; `indexOf` returns -1 once there are no more candidates.\n index = select.indexOf(candidate, index + candidate.length);\n }\n return false;\n}\n\n/** Returns true for characters that can be part of an unquoted SQL identifier. */\nfunction isSqlIdentifierChar(char: string | undefined): boolean {\n return char !== undefined && /[A-Za-z0-9_]/.test(char);\n}\n\n/** Track join dependencies for `pruneUnusedJoins`. */\nclass DependencyTracker {\n private nodes: Map<string, string[]> = new Map();\n required: Set<string> = new Set();\n\n addAlias(alias: string, dependencies: string[] = []): void {\n this.nodes.set(alias, dependencies);\n }\n\n markRequired(alias: string): void {\n const marked = new Set<string>();\n const todo = [alias];\n while (todo.length > 0) {\n const alias = todo.pop()!;\n if (!marked.has(alias)) {\n marked.add(alias);\n todo.push(...(this.nodes.get(alias) || []));\n }\n }\n this.required = new Set([...this.required, ...marked]);\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_utils = require("../../utils.cjs");
|
|
3
|
+
//#region src/queries/find/QueryVisitor.ts
|
|
4
|
+
/**
|
|
5
|
+
* Visits the nested conditions within `query`.
|
|
6
|
+
*
|
|
7
|
+
* If the visitors return a new condition or expression, the returned expression
|
|
8
|
+
* will replace the original one at that location in the expression.
|
|
9
|
+
*
|
|
10
|
+
* If the visitor returns null, the condition or expression will be removed from the tree.
|
|
11
|
+
*/
|
|
12
|
+
function visitConditions(query, visitor) {
|
|
13
|
+
const todo = [query];
|
|
14
|
+
while (todo.length > 0) {
|
|
15
|
+
const query = todo.pop();
|
|
16
|
+
if (query.condition) visitFilter(query.condition, visitor);
|
|
17
|
+
for (const table of query.tables) if (table.join === "lateral") todo.push(table.query);
|
|
18
|
+
if (query.condition) visitExistsSubqueries(query.condition, todo);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/** Returns whether a parsed query contains a condition tree that cannot match any database row. */
|
|
22
|
+
function isQueryProvablyEmpty(query) {
|
|
23
|
+
return query.condition ? isConditionProvablyFalse(query.condition) : false;
|
|
24
|
+
}
|
|
25
|
+
/** Finds ExistsCondition nodes in a condition tree and pushes their subqueries onto the todo list. */
|
|
26
|
+
function visitExistsSubqueries(condition, todo) {
|
|
27
|
+
if (condition.kind === "exp") for (const c of condition.conditions) visitExistsSubqueries(c, todo);
|
|
28
|
+
else if (condition.kind === "exists") todo.push(condition.subquery);
|
|
29
|
+
}
|
|
30
|
+
function visitFilter(pc, visitor) {
|
|
31
|
+
if (pc.kind === "exp") {
|
|
32
|
+
const toRemove = /* @__PURE__ */ new Set();
|
|
33
|
+
pc.conditions.forEach((c, i) => {
|
|
34
|
+
if (c.kind === "column") {
|
|
35
|
+
const result = visitor.visitCond(c);
|
|
36
|
+
if (result === null) toRemove.add(i);
|
|
37
|
+
else if (result) pc.conditions[i] = result;
|
|
38
|
+
} else if (c.kind === "exp") {
|
|
39
|
+
const result = visitor.visitExp?.(c);
|
|
40
|
+
if (result === null) {
|
|
41
|
+
toRemove.add(i);
|
|
42
|
+
return;
|
|
43
|
+
} else if (result) pc.conditions[i] = result;
|
|
44
|
+
visitFilter(result ?? c, visitor);
|
|
45
|
+
} else if (c.kind === "raw") {
|
|
46
|
+
const result = visitor.visitRaw?.(c);
|
|
47
|
+
if (result === null) toRemove.add(i);
|
|
48
|
+
else if (result) pc.conditions[i] = result;
|
|
49
|
+
} else if (c.kind === "exists") {} else require_utils.assertNever(c);
|
|
50
|
+
});
|
|
51
|
+
if (toRemove.size > 0) pc.conditions = pc.conditions.filter((_, i) => !toRemove.has(i));
|
|
52
|
+
} else if (pc.kind === "column") {
|
|
53
|
+
const result = visitor.visitCond(pc);
|
|
54
|
+
if (result || result === null) throw new Error("ParsedExpressionCondition overload not support mutating the condition");
|
|
55
|
+
} else if (pc.kind === "raw") {
|
|
56
|
+
const result = visitor.visitRaw?.(pc);
|
|
57
|
+
if (result || result === null) throw new Error("ParsedExpressionCondition overload not support mutating the condition");
|
|
58
|
+
} else if (pc.kind === "exists") {} else require_utils.assertNever(pc);
|
|
59
|
+
}
|
|
60
|
+
/** Evaluates only conditions whose false result can be proven without querying the database. */
|
|
61
|
+
function isConditionProvablyFalse(condition) {
|
|
62
|
+
switch (condition.kind) {
|
|
63
|
+
case "column": return condition.cond.kind === "in" && condition.cond.value.length === 0;
|
|
64
|
+
case "exp":
|
|
65
|
+
if (condition.conditions.length === 0) return false;
|
|
66
|
+
return condition.op === "and" ? condition.conditions.some(isConditionProvablyFalse) : condition.conditions.every(isConditionProvablyFalse);
|
|
67
|
+
case "exists": return !condition.negate && isQueryProvablyEmpty(condition.subquery);
|
|
68
|
+
case "raw": return false;
|
|
69
|
+
default: return require_utils.assertNever(condition);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//#endregion
|
|
73
|
+
exports.isQueryProvablyEmpty = isQueryProvablyEmpty;
|
|
74
|
+
exports.visitConditions = visitConditions;
|
|
75
|
+
exports.visitFilter = visitFilter;
|
|
76
|
+
|
|
77
|
+
//# sourceMappingURL=QueryVisitor.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryVisitor.cjs","names":["assertNever"],"sources":["../../../src/queries/find/QueryVisitor.ts"],"sourcesContent":["import type { ParsedFindQuery } from \"src/queries/find/QueryParser.ts\";\nimport type {\n ColumnCondition,\n ParsedExpressionCondition,\n ParsedExpressionFilter,\n RawCondition,\n} from \"src/queries/parsedConditions.ts\";\nimport { assertNever } from \"src/utils.ts\";\n\n/** A generic visitor over the simple & complex conditions of a query. */\ninterface Visitor {\n visitExp?(c: ParsedExpressionFilter): ParsedExpressionFilter | void;\n visitRaw?(c: RawCondition): RawCondition | ParsedExpressionFilter | void;\n visitCond(c: ColumnCondition): ColumnCondition | ParsedExpressionFilter | RawCondition | null | void;\n}\n\n/**\n * Visits the nested conditions within `query`.\n *\n * If the visitors return a new condition or expression, the returned expression\n * will replace the original one at that location in the expression.\n *\n * If the visitor returns null, the condition or expression will be removed from the tree.\n */\nexport function visitConditions(query: ParsedFindQuery, visitor: Visitor): void {\n const todo = [query];\n while (todo.length > 0) {\n const query = todo.pop()!;\n if (query.condition) visitFilter(query.condition, visitor);\n // Recurse into lateral subqueries (used by batching/preloading, not EXISTS rewrite)\n for (const table of query.tables) {\n if (table.join === \"lateral\") {\n todo.push(table.query);\n }\n }\n // Recurse into EXISTS subqueries so batching visitors can rewrite conditions inside them\n if (query.condition) {\n visitExistsSubqueries(query.condition, todo);\n }\n }\n}\n\n/** Returns whether a parsed query contains a condition tree that cannot match any database row. */\nexport function isQueryProvablyEmpty(query: ParsedFindQuery): boolean {\n return query.condition ? isConditionProvablyFalse(query.condition) : false;\n}\n\n/** Finds ExistsCondition nodes in a condition tree and pushes their subqueries onto the todo list. */\nfunction visitExistsSubqueries(condition: ParsedExpressionCondition, todo: ParsedFindQuery[]): void {\n if (condition.kind === \"exp\") {\n for (const c of condition.conditions) {\n visitExistsSubqueries(c, todo);\n }\n } else if (condition.kind === \"exists\") {\n todo.push(condition.subquery);\n }\n}\n\nexport function visitFilter(pc: ParsedExpressionCondition, visitor: Visitor) {\n if (pc.kind === \"exp\") {\n const toRemove = new Set<number>();\n pc.conditions.forEach((c, i) => {\n if (c.kind === \"column\") {\n const result = visitor.visitCond(c);\n if (result === null) {\n toRemove.add(i);\n } else if (result) {\n pc.conditions[i] = result;\n }\n } else if (c.kind === \"exp\") {\n const result = visitor.visitExp?.(c);\n if (result === null) {\n toRemove.add(i);\n return;\n } else if (result) {\n pc.conditions[i] = result;\n }\n visitFilter(result ?? c, visitor);\n } else if (c.kind === \"raw\") {\n const result = visitor.visitRaw?.(c);\n if (result === null) {\n toRemove.add(i);\n } else if (result) {\n pc.conditions[i] = result;\n }\n } else if (c.kind === \"exists\") {\n // EXISTS conditions are visited via visitExistsSubqueries, not inline\n } else {\n assertNever(c);\n }\n });\n // do this after visiting the children, so we can do it in one pass and don't mess up the indices\n if (toRemove.size > 0) pc.conditions = pc.conditions.filter((_, i) => !toRemove.has(i));\n } else if (pc.kind === \"column\") {\n const result = visitor.visitCond(pc);\n if (result || result === null) {\n throw new Error(\"ParsedExpressionCondition overload not support mutating the condition\");\n }\n } else if (pc.kind === \"raw\") {\n const result = visitor.visitRaw?.(pc);\n if (result || result === null) {\n throw new Error(\"ParsedExpressionCondition overload not support mutating the condition\");\n }\n } else if (pc.kind === \"exists\") {\n // EXISTS conditions are handled at the query level\n } else {\n assertNever(pc);\n }\n}\n\n/** Evaluates only conditions whose false result can be proven without querying the database. */\nfunction isConditionProvablyFalse(condition: ParsedExpressionCondition): boolean {\n switch (condition.kind) {\n case \"column\":\n return condition.cond.kind === \"in\" && condition.cond.value.length === 0;\n case \"exp\":\n // Pruning can leave an empty group, which buildWhereClause drops as no predicate instead of rendering as FALSE.\n if (condition.conditions.length === 0) return false;\n return condition.op === \"and\"\n ? condition.conditions.some(isConditionProvablyFalse)\n : condition.conditions.every(isConditionProvablyFalse);\n case \"exists\":\n return !condition.negate && isQueryProvablyEmpty(condition.subquery);\n case \"raw\":\n return false;\n default:\n return assertNever(condition);\n }\n}\n"],"mappings":";;;;;;;;;;;AAwBA,SAAgB,gBAAgB,OAAwB,SAAwB;CAC9E,MAAM,OAAO,CAAC,KAAK;CACnB,OAAO,KAAK,SAAS,GAAG;EACtB,MAAM,QAAQ,KAAK,IAAI;EACvB,IAAI,MAAM,WAAW,YAAY,MAAM,WAAW,OAAO;EAEzD,KAAK,MAAM,SAAS,MAAM,QACxB,IAAI,MAAM,SAAS,WACjB,KAAK,KAAK,MAAM,KAAK;EAIzB,IAAI,MAAM,WACR,sBAAsB,MAAM,WAAW,IAAI;CAE/C;AACF;;AAGA,SAAgB,qBAAqB,OAAiC;CACpE,OAAO,MAAM,YAAY,yBAAyB,MAAM,SAAS,IAAI;AACvE;;AAGA,SAAS,sBAAsB,WAAsC,MAA+B;CAClG,IAAI,UAAU,SAAS,OACrB,KAAK,MAAM,KAAK,UAAU,YACxB,sBAAsB,GAAG,IAAI;MAE1B,IAAI,UAAU,SAAS,UAC5B,KAAK,KAAK,UAAU,QAAQ;AAEhC;AAEA,SAAgB,YAAY,IAA+B,SAAkB;CAC3E,IAAI,GAAG,SAAS,OAAO;EACrB,MAAM,2BAAW,IAAI,IAAY;EACjC,GAAG,WAAW,SAAS,GAAG,MAAM;GAC9B,IAAI,EAAE,SAAS,UAAU;IACvB,MAAM,SAAS,QAAQ,UAAU,CAAC;IAClC,IAAI,WAAW,MACb,SAAS,IAAI,CAAC;SACT,IAAI,QACT,GAAG,WAAW,KAAK;GAEvB,OAAO,IAAI,EAAE,SAAS,OAAO;IAC3B,MAAM,SAAS,QAAQ,WAAW,CAAC;IACnC,IAAI,WAAW,MAAM;KACnB,SAAS,IAAI,CAAC;KACd;IACF,OAAO,IAAI,QACT,GAAG,WAAW,KAAK;IAErB,YAAY,UAAU,GAAG,OAAO;GAClC,OAAO,IAAI,EAAE,SAAS,OAAO;IAC3B,MAAM,SAAS,QAAQ,WAAW,CAAC;IACnC,IAAI,WAAW,MACb,SAAS,IAAI,CAAC;SACT,IAAI,QACT,GAAG,WAAW,KAAK;GAEvB,OAAO,IAAI,EAAE,SAAS,UAAU,CAEhC,OACE,cAAA,YAAY,CAAC;EAEjB,CAAC;EAED,IAAI,SAAS,OAAO,GAAG,GAAG,aAAa,GAAG,WAAW,QAAQ,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;CACxF,OAAO,IAAI,GAAG,SAAS,UAAU;EAC/B,MAAM,SAAS,QAAQ,UAAU,EAAE;EACnC,IAAI,UAAU,WAAW,MACvB,MAAM,IAAI,MAAM,uEAAuE;CAE3F,OAAO,IAAI,GAAG,SAAS,OAAO;EAC5B,MAAM,SAAS,QAAQ,WAAW,EAAE;EACpC,IAAI,UAAU,WAAW,MACvB,MAAM,IAAI,MAAM,uEAAuE;CAE3F,OAAO,IAAI,GAAG,SAAS,UAAU,CAEjC,OACE,cAAA,YAAY,EAAE;AAElB;;AAGA,SAAS,yBAAyB,WAA+C;CAC/E,QAAQ,UAAU,MAAlB;EACE,KAAK,UACH,OAAO,UAAU,KAAK,SAAS,QAAQ,UAAU,KAAK,MAAM,WAAW;EACzE,KAAK;GAEH,IAAI,UAAU,WAAW,WAAW,GAAG,OAAO;GAC9C,OAAO,UAAU,OAAO,QACpB,UAAU,WAAW,KAAK,wBAAwB,IAClD,UAAU,WAAW,MAAM,wBAAwB;EACzD,KAAK,UACH,OAAO,CAAC,UAAU,UAAU,qBAAqB,UAAU,QAAQ;EACrE,KAAK,OACH,OAAO;EACT,SACE,OAAOA,cAAAA,YAAY,SAAS;CAChC;AACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ParsedFindQuery } from "./QueryParser.cjs";
|
|
2
|
+
import { ColumnCondition, ParsedExpressionCondition, ParsedExpressionFilter, RawCondition } from "../parsedConditions.cjs";
|
|
3
|
+
//#region src/queries/find/QueryVisitor.d.ts
|
|
4
|
+
/** A generic visitor over the simple & complex conditions of a query. */
|
|
5
|
+
interface Visitor {
|
|
6
|
+
visitExp?(c: ParsedExpressionFilter): ParsedExpressionFilter | void;
|
|
7
|
+
visitRaw?(c: RawCondition): RawCondition | ParsedExpressionFilter | void;
|
|
8
|
+
visitCond(c: ColumnCondition): ColumnCondition | ParsedExpressionFilter | RawCondition | null | void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Visits the nested conditions within `query`.
|
|
12
|
+
*
|
|
13
|
+
* If the visitors return a new condition or expression, the returned expression
|
|
14
|
+
* will replace the original one at that location in the expression.
|
|
15
|
+
*
|
|
16
|
+
* If the visitor returns null, the condition or expression will be removed from the tree.
|
|
17
|
+
*/
|
|
18
|
+
declare function visitConditions(query: ParsedFindQuery, visitor: Visitor): void;
|
|
19
|
+
/** Returns whether a parsed query contains a condition tree that cannot match any database row. */
|
|
20
|
+
declare function isQueryProvablyEmpty(query: ParsedFindQuery): boolean;
|
|
21
|
+
declare function visitFilter(pc: ParsedExpressionCondition, visitor: Visitor): void;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { isQueryProvablyEmpty, visitConditions, visitFilter };
|
|
24
|
+
//# sourceMappingURL=QueryVisitor.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryVisitor.d.cts","names":[],"sources":["../../../src/queries/find/QueryVisitor.ts"],"mappings":";;;;UAUU;EACR,UAAU,GAAG,yBAAyB;EACtC,UAAU,GAAG,eAAe,eAAe;EAC3C,UAAU,GAAG,kBAAkB,kBAAkB,yBAAyB;;;;;;;;;;iBAW5D,gBAAgB,OAAO,iBAAiB,SAAS;;iBAmBjD,qBAAqB,OAAO;iBAe5B,YAAY,IAAI,2BAA2B,SAAS"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ParsedFindQuery } from "./QueryParser.mjs";
|
|
2
|
+
import { ColumnCondition, ParsedExpressionCondition, ParsedExpressionFilter, RawCondition } from "../parsedConditions.mjs";
|
|
3
|
+
//#region src/queries/find/QueryVisitor.d.ts
|
|
4
|
+
/** A generic visitor over the simple & complex conditions of a query. */
|
|
5
|
+
interface Visitor {
|
|
6
|
+
visitExp?(c: ParsedExpressionFilter): ParsedExpressionFilter | void;
|
|
7
|
+
visitRaw?(c: RawCondition): RawCondition | ParsedExpressionFilter | void;
|
|
8
|
+
visitCond(c: ColumnCondition): ColumnCondition | ParsedExpressionFilter | RawCondition | null | void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Visits the nested conditions within `query`.
|
|
12
|
+
*
|
|
13
|
+
* If the visitors return a new condition or expression, the returned expression
|
|
14
|
+
* will replace the original one at that location in the expression.
|
|
15
|
+
*
|
|
16
|
+
* If the visitor returns null, the condition or expression will be removed from the tree.
|
|
17
|
+
*/
|
|
18
|
+
declare function visitConditions(query: ParsedFindQuery, visitor: Visitor): void;
|
|
19
|
+
/** Returns whether a parsed query contains a condition tree that cannot match any database row. */
|
|
20
|
+
declare function isQueryProvablyEmpty(query: ParsedFindQuery): boolean;
|
|
21
|
+
declare function visitFilter(pc: ParsedExpressionCondition, visitor: Visitor): void;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { isQueryProvablyEmpty, visitConditions, visitFilter };
|
|
24
|
+
//# sourceMappingURL=QueryVisitor.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryVisitor.d.mts","names":[],"sources":["../../../src/queries/find/QueryVisitor.ts"],"mappings":";;;;UAUU;EACR,UAAU,GAAG,yBAAyB;EACtC,UAAU,GAAG,eAAe,eAAe;EAC3C,UAAU,GAAG,kBAAkB,kBAAkB,yBAAyB;;;;;;;;;;iBAW5D,gBAAgB,OAAO,iBAAiB,SAAS;;iBAmBjD,qBAAqB,OAAO;iBAe5B,YAAY,IAAI,2BAA2B,SAAS"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { assertNever } from "../../utils.js";
|
|
2
|
+
//#region src/queries/find/QueryVisitor.ts
|
|
3
|
+
/**
|
|
4
|
+
* Visits the nested conditions within `query`.
|
|
5
|
+
*
|
|
6
|
+
* If the visitors return a new condition or expression, the returned expression
|
|
7
|
+
* will replace the original one at that location in the expression.
|
|
8
|
+
*
|
|
9
|
+
* If the visitor returns null, the condition or expression will be removed from the tree.
|
|
10
|
+
*/
|
|
11
|
+
function visitConditions(query, visitor) {
|
|
12
|
+
const todo = [query];
|
|
13
|
+
while (todo.length > 0) {
|
|
14
|
+
const query = todo.pop();
|
|
15
|
+
if (query.condition) visitFilter(query.condition, visitor);
|
|
16
|
+
for (const table of query.tables) if (table.join === "lateral") todo.push(table.query);
|
|
17
|
+
if (query.condition) visitExistsSubqueries(query.condition, todo);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/** Returns whether a parsed query contains a condition tree that cannot match any database row. */
|
|
21
|
+
function isQueryProvablyEmpty(query) {
|
|
22
|
+
return query.condition ? isConditionProvablyFalse(query.condition) : false;
|
|
23
|
+
}
|
|
24
|
+
/** Finds ExistsCondition nodes in a condition tree and pushes their subqueries onto the todo list. */
|
|
25
|
+
function visitExistsSubqueries(condition, todo) {
|
|
26
|
+
if (condition.kind === "exp") for (const c of condition.conditions) visitExistsSubqueries(c, todo);
|
|
27
|
+
else if (condition.kind === "exists") todo.push(condition.subquery);
|
|
28
|
+
}
|
|
29
|
+
function visitFilter(pc, visitor) {
|
|
30
|
+
if (pc.kind === "exp") {
|
|
31
|
+
const toRemove = /* @__PURE__ */ new Set();
|
|
32
|
+
pc.conditions.forEach((c, i) => {
|
|
33
|
+
if (c.kind === "column") {
|
|
34
|
+
const result = visitor.visitCond(c);
|
|
35
|
+
if (result === null) toRemove.add(i);
|
|
36
|
+
else if (result) pc.conditions[i] = result;
|
|
37
|
+
} else if (c.kind === "exp") {
|
|
38
|
+
const result = visitor.visitExp?.(c);
|
|
39
|
+
if (result === null) {
|
|
40
|
+
toRemove.add(i);
|
|
41
|
+
return;
|
|
42
|
+
} else if (result) pc.conditions[i] = result;
|
|
43
|
+
visitFilter(result ?? c, visitor);
|
|
44
|
+
} else if (c.kind === "raw") {
|
|
45
|
+
const result = visitor.visitRaw?.(c);
|
|
46
|
+
if (result === null) toRemove.add(i);
|
|
47
|
+
else if (result) pc.conditions[i] = result;
|
|
48
|
+
} else if (c.kind === "exists") {} else assertNever(c);
|
|
49
|
+
});
|
|
50
|
+
if (toRemove.size > 0) pc.conditions = pc.conditions.filter((_, i) => !toRemove.has(i));
|
|
51
|
+
} else if (pc.kind === "column") {
|
|
52
|
+
const result = visitor.visitCond(pc);
|
|
53
|
+
if (result || result === null) throw new Error("ParsedExpressionCondition overload not support mutating the condition");
|
|
54
|
+
} else if (pc.kind === "raw") {
|
|
55
|
+
const result = visitor.visitRaw?.(pc);
|
|
56
|
+
if (result || result === null) throw new Error("ParsedExpressionCondition overload not support mutating the condition");
|
|
57
|
+
} else if (pc.kind === "exists") {} else assertNever(pc);
|
|
58
|
+
}
|
|
59
|
+
/** Evaluates only conditions whose false result can be proven without querying the database. */
|
|
60
|
+
function isConditionProvablyFalse(condition) {
|
|
61
|
+
switch (condition.kind) {
|
|
62
|
+
case "column": return condition.cond.kind === "in" && condition.cond.value.length === 0;
|
|
63
|
+
case "exp":
|
|
64
|
+
if (condition.conditions.length === 0) return false;
|
|
65
|
+
return condition.op === "and" ? condition.conditions.some(isConditionProvablyFalse) : condition.conditions.every(isConditionProvablyFalse);
|
|
66
|
+
case "exists": return !condition.negate && isQueryProvablyEmpty(condition.subquery);
|
|
67
|
+
case "raw": return false;
|
|
68
|
+
default: return assertNever(condition);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//#endregion
|
|
72
|
+
export { isQueryProvablyEmpty, visitConditions, visitFilter };
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=QueryVisitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryVisitor.js","names":[],"sources":["../../../src/queries/find/QueryVisitor.ts"],"sourcesContent":["import type { ParsedFindQuery } from \"src/queries/find/QueryParser.ts\";\nimport type {\n ColumnCondition,\n ParsedExpressionCondition,\n ParsedExpressionFilter,\n RawCondition,\n} from \"src/queries/parsedConditions.ts\";\nimport { assertNever } from \"src/utils.ts\";\n\n/** A generic visitor over the simple & complex conditions of a query. */\ninterface Visitor {\n visitExp?(c: ParsedExpressionFilter): ParsedExpressionFilter | void;\n visitRaw?(c: RawCondition): RawCondition | ParsedExpressionFilter | void;\n visitCond(c: ColumnCondition): ColumnCondition | ParsedExpressionFilter | RawCondition | null | void;\n}\n\n/**\n * Visits the nested conditions within `query`.\n *\n * If the visitors return a new condition or expression, the returned expression\n * will replace the original one at that location in the expression.\n *\n * If the visitor returns null, the condition or expression will be removed from the tree.\n */\nexport function visitConditions(query: ParsedFindQuery, visitor: Visitor): void {\n const todo = [query];\n while (todo.length > 0) {\n const query = todo.pop()!;\n if (query.condition) visitFilter(query.condition, visitor);\n // Recurse into lateral subqueries (used by batching/preloading, not EXISTS rewrite)\n for (const table of query.tables) {\n if (table.join === \"lateral\") {\n todo.push(table.query);\n }\n }\n // Recurse into EXISTS subqueries so batching visitors can rewrite conditions inside them\n if (query.condition) {\n visitExistsSubqueries(query.condition, todo);\n }\n }\n}\n\n/** Returns whether a parsed query contains a condition tree that cannot match any database row. */\nexport function isQueryProvablyEmpty(query: ParsedFindQuery): boolean {\n return query.condition ? isConditionProvablyFalse(query.condition) : false;\n}\n\n/** Finds ExistsCondition nodes in a condition tree and pushes their subqueries onto the todo list. */\nfunction visitExistsSubqueries(condition: ParsedExpressionCondition, todo: ParsedFindQuery[]): void {\n if (condition.kind === \"exp\") {\n for (const c of condition.conditions) {\n visitExistsSubqueries(c, todo);\n }\n } else if (condition.kind === \"exists\") {\n todo.push(condition.subquery);\n }\n}\n\nexport function visitFilter(pc: ParsedExpressionCondition, visitor: Visitor) {\n if (pc.kind === \"exp\") {\n const toRemove = new Set<number>();\n pc.conditions.forEach((c, i) => {\n if (c.kind === \"column\") {\n const result = visitor.visitCond(c);\n if (result === null) {\n toRemove.add(i);\n } else if (result) {\n pc.conditions[i] = result;\n }\n } else if (c.kind === \"exp\") {\n const result = visitor.visitExp?.(c);\n if (result === null) {\n toRemove.add(i);\n return;\n } else if (result) {\n pc.conditions[i] = result;\n }\n visitFilter(result ?? c, visitor);\n } else if (c.kind === \"raw\") {\n const result = visitor.visitRaw?.(c);\n if (result === null) {\n toRemove.add(i);\n } else if (result) {\n pc.conditions[i] = result;\n }\n } else if (c.kind === \"exists\") {\n // EXISTS conditions are visited via visitExistsSubqueries, not inline\n } else {\n assertNever(c);\n }\n });\n // do this after visiting the children, so we can do it in one pass and don't mess up the indices\n if (toRemove.size > 0) pc.conditions = pc.conditions.filter((_, i) => !toRemove.has(i));\n } else if (pc.kind === \"column\") {\n const result = visitor.visitCond(pc);\n if (result || result === null) {\n throw new Error(\"ParsedExpressionCondition overload not support mutating the condition\");\n }\n } else if (pc.kind === \"raw\") {\n const result = visitor.visitRaw?.(pc);\n if (result || result === null) {\n throw new Error(\"ParsedExpressionCondition overload not support mutating the condition\");\n }\n } else if (pc.kind === \"exists\") {\n // EXISTS conditions are handled at the query level\n } else {\n assertNever(pc);\n }\n}\n\n/** Evaluates only conditions whose false result can be proven without querying the database. */\nfunction isConditionProvablyFalse(condition: ParsedExpressionCondition): boolean {\n switch (condition.kind) {\n case \"column\":\n return condition.cond.kind === \"in\" && condition.cond.value.length === 0;\n case \"exp\":\n // Pruning can leave an empty group, which buildWhereClause drops as no predicate instead of rendering as FALSE.\n if (condition.conditions.length === 0) return false;\n return condition.op === \"and\"\n ? condition.conditions.some(isConditionProvablyFalse)\n : condition.conditions.every(isConditionProvablyFalse);\n case \"exists\":\n return !condition.negate && isQueryProvablyEmpty(condition.subquery);\n case \"raw\":\n return false;\n default:\n return assertNever(condition);\n }\n}\n"],"mappings":";;;;;;;;;;AAwBA,SAAgB,gBAAgB,OAAwB,SAAwB;CAC9E,MAAM,OAAO,CAAC,KAAK;CACnB,OAAO,KAAK,SAAS,GAAG;EACtB,MAAM,QAAQ,KAAK,IAAI;EACvB,IAAI,MAAM,WAAW,YAAY,MAAM,WAAW,OAAO;EAEzD,KAAK,MAAM,SAAS,MAAM,QACxB,IAAI,MAAM,SAAS,WACjB,KAAK,KAAK,MAAM,KAAK;EAIzB,IAAI,MAAM,WACR,sBAAsB,MAAM,WAAW,IAAI;CAE/C;AACF;;AAGA,SAAgB,qBAAqB,OAAiC;CACpE,OAAO,MAAM,YAAY,yBAAyB,MAAM,SAAS,IAAI;AACvE;;AAGA,SAAS,sBAAsB,WAAsC,MAA+B;CAClG,IAAI,UAAU,SAAS,OACrB,KAAK,MAAM,KAAK,UAAU,YACxB,sBAAsB,GAAG,IAAI;MAE1B,IAAI,UAAU,SAAS,UAC5B,KAAK,KAAK,UAAU,QAAQ;AAEhC;AAEA,SAAgB,YAAY,IAA+B,SAAkB;CAC3E,IAAI,GAAG,SAAS,OAAO;EACrB,MAAM,2BAAW,IAAI,IAAY;EACjC,GAAG,WAAW,SAAS,GAAG,MAAM;GAC9B,IAAI,EAAE,SAAS,UAAU;IACvB,MAAM,SAAS,QAAQ,UAAU,CAAC;IAClC,IAAI,WAAW,MACb,SAAS,IAAI,CAAC;SACT,IAAI,QACT,GAAG,WAAW,KAAK;GAEvB,OAAO,IAAI,EAAE,SAAS,OAAO;IAC3B,MAAM,SAAS,QAAQ,WAAW,CAAC;IACnC,IAAI,WAAW,MAAM;KACnB,SAAS,IAAI,CAAC;KACd;IACF,OAAO,IAAI,QACT,GAAG,WAAW,KAAK;IAErB,YAAY,UAAU,GAAG,OAAO;GAClC,OAAO,IAAI,EAAE,SAAS,OAAO;IAC3B,MAAM,SAAS,QAAQ,WAAW,CAAC;IACnC,IAAI,WAAW,MACb,SAAS,IAAI,CAAC;SACT,IAAI,QACT,GAAG,WAAW,KAAK;GAEvB,OAAO,IAAI,EAAE,SAAS,UAAU,CAEhC,OACE,YAAY,CAAC;EAEjB,CAAC;EAED,IAAI,SAAS,OAAO,GAAG,GAAG,aAAa,GAAG,WAAW,QAAQ,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;CACxF,OAAO,IAAI,GAAG,SAAS,UAAU;EAC/B,MAAM,SAAS,QAAQ,UAAU,EAAE;EACnC,IAAI,UAAU,WAAW,MACvB,MAAM,IAAI,MAAM,uEAAuE;CAE3F,OAAO,IAAI,GAAG,SAAS,OAAO;EAC5B,MAAM,SAAS,QAAQ,WAAW,EAAE;EACpC,IAAI,UAAU,WAAW,MACvB,MAAM,IAAI,MAAM,uEAAuE;CAE3F,OAAO,IAAI,GAAG,SAAS,UAAU,CAEjC,OACE,YAAY,EAAE;AAElB;;AAGA,SAAS,yBAAyB,WAA+C;CAC/E,QAAQ,UAAU,MAAlB;EACE,KAAK,UACH,OAAO,UAAU,KAAK,SAAS,QAAQ,UAAU,KAAK,MAAM,WAAW;EACzE,KAAK;GAEH,IAAI,UAAU,WAAW,WAAW,GAAG,OAAO;GAC9C,OAAO,UAAU,OAAO,QACpB,UAAU,WAAW,KAAK,wBAAwB,IAClD,UAAU,WAAW,MAAM,wBAAwB;EACzD,KAAK,UACH,OAAO,CAAC,UAAU,UAAU,qBAAqB,UAAU,QAAQ;EACrE,KAAK,OACH,OAAO;EACT,SACE,OAAO,YAAY,SAAS;CAChC;AACF"}
|