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,58 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_EntityMetadata = require("../EntityMetadata.cjs");
|
|
3
|
+
//#region src/loading/IsLoadedCache.ts
|
|
4
|
+
var IsLoadedCache = class {
|
|
5
|
+
#smartCache = {};
|
|
6
|
+
#naiveCache = /* @__PURE__ */ new Set();
|
|
7
|
+
#smartDirtySets = 0;
|
|
8
|
+
#naiveDirtySets = 0;
|
|
9
|
+
/** Adds a ReactiveField/Relation/Collection to be invalidated when its dependencies change. */
|
|
10
|
+
add(target) {
|
|
11
|
+
const meta = require_EntityMetadata.getMetadata(target.entity);
|
|
12
|
+
const set = (this.#smartCache[meta.tagName] ??= {})[target.fieldName] ??= /* @__PURE__ */ new Set();
|
|
13
|
+
if (set.size === 0) this.#smartDirtySets++;
|
|
14
|
+
set.add(target);
|
|
15
|
+
}
|
|
16
|
+
addNaive(target) {
|
|
17
|
+
if (this.#naiveCache.size === 0) this.#naiveDirtySets++;
|
|
18
|
+
this.#naiveCache.add(target);
|
|
19
|
+
}
|
|
20
|
+
/** Resets any in-memory #isLoaded/#isCached caches that depend on `entity.fieldName`. */
|
|
21
|
+
resetIsLoaded(entity, fieldName) {
|
|
22
|
+
if (this.#smartDirtySets === 0 && this.#naiveDirtySets === 0) return;
|
|
23
|
+
if (this.#smartDirtySets > 0) this.#resetDownstreamReactables(require_EntityMetadata.getMetadata(entity), fieldName);
|
|
24
|
+
if (this.#naiveCache.size > 0) {
|
|
25
|
+
for (const target of this.#naiveCache.values()) target.resetIsLoaded();
|
|
26
|
+
this.#naiveCache.clear();
|
|
27
|
+
this.#naiveDirtySets--;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Given a `meta+field`, statically find all downstream Reactables, and if any of those
|
|
32
|
+
* Reactables are a) in-memory already, and b) registered themselves as cached,
|
|
33
|
+
* tell them to reset.
|
|
34
|
+
*/
|
|
35
|
+
#resetDownstreamReactables(meta, fieldName) {
|
|
36
|
+
const reactables = meta.reactablesIncludingReadOnlyByField.get(fieldName);
|
|
37
|
+
if (reactables === void 0) return;
|
|
38
|
+
for (const r of reactables) {
|
|
39
|
+
if (this.#smartDirtySets === 0) return;
|
|
40
|
+
const otherMeta = require_EntityMetadata.getMetadata(r.cstr);
|
|
41
|
+
const set = this.#smartCache[otherMeta.tagName]?.[r.name];
|
|
42
|
+
if (set?.size > 0) {
|
|
43
|
+
for (const target of set) {
|
|
44
|
+
target.resetIsLoaded();
|
|
45
|
+
const otherMeta = require_EntityMetadata.getMetadata(target.entity);
|
|
46
|
+
const otherField = otherMeta.allFields[target.fieldName];
|
|
47
|
+
if ("derived" in otherField && otherField.derived) this.#resetDownstreamReactables(otherMeta, otherField.fieldName);
|
|
48
|
+
}
|
|
49
|
+
set.clear();
|
|
50
|
+
this.#smartDirtySets--;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
//#endregion
|
|
56
|
+
exports.IsLoadedCache = IsLoadedCache;
|
|
57
|
+
|
|
58
|
+
//# sourceMappingURL=IsLoadedCache.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IsLoadedCache.cjs","names":["getMetadata","#smartCache","#smartDirtySets","#naiveCache","#naiveDirtySets","#resetDownstreamReactables"],"sources":["../../src/loading/IsLoadedCache.ts"],"sourcesContent":["import type { Entity } from \"src/Entity.ts\";\nimport { type EntityMetadata, getMetadata } from \"src/EntityMetadata.ts\";\n\n/**\n * Interface for our relations that have dynamic & expensive `isLoaded` checks.\n *\n * ...and also `OneToManyCollection.get` calls.\n *\n * The primary m2o/o2m/m2m relations all have trivial `isLoaded` checks--are they\n * loaded or not.\n *\n * But for \"composite relations\", i.e. a ReactiveField or ReactiveRelation whose\n * \"load-ness\" is calculated by evaluating its load hint across a subgraph of entities\n * & relations, load-ness can be more dynamic true-then-false, as its subgraph changes.\n *\n * To avoid performance issues (see https://github.com/joist-orm/joist-orm/issues/1166),\n * we cache this dynamic/expensive `isLoaded` checks, and then do targeted, reactivity-driven\n * cache invalidation whenever relations are mutated (via a hook in `setField`).\n */\nexport interface IsLoadedCachable {\n entity: Entity;\n fieldName: string;\n isLoaded: boolean;\n resetIsLoaded(): void;\n}\n\nexport class IsLoadedCache {\n // Cache of `{ tag -> { fieldName -> Set<IsLoadedCachable> } }` to hold derived relations\n // we can selectively invalidate by walking from the mutated field to any downstream\n // cacheables.\n #smartCache: Record<string, Record<string, Set<IsLoadedCachable>>> = {};\n // A dumb cache for things that are hard selectively invalidate (o2m.get, recursive collections,\n // and custom references/collections), so any mutation resets these.\n #naiveCache = new Set<IsLoadedCachable>();\n // Counter to skip reactive hint walking when no smart cache sets are populated.\n #smartDirtySets = 0;\n // Counter to fast-path resetIsLoaded when the naive cache is empty.\n #naiveDirtySets = 0;\n\n /** Adds a ReactiveField/Relation/Collection to be invalidated when its dependencies change. */\n add(target: IsLoadedCachable): void {\n const meta = getMetadata(target.entity);\n const set = ((this.#smartCache[meta.tagName] ??= {})[target.fieldName] ??= new Set());\n if (set.size === 0) {\n this.#smartDirtySets++;\n }\n set.add(target);\n }\n\n addNaive(target: IsLoadedCachable): void {\n if (this.#naiveCache.size === 0) this.#naiveDirtySets++;\n this.#naiveCache.add(target);\n }\n\n /** Resets any in-memory #isLoaded/#isCached caches that depend on `entity.fieldName`. */\n resetIsLoaded(entity: Entity, fieldName: string): void {\n if (this.#smartDirtySets === 0 && this.#naiveDirtySets === 0) return;\n // Reset caches that we can deterministically find by walking the reactivity hints\n if (this.#smartDirtySets > 0) {\n this.#resetDownstreamReactables(getMetadata(entity), fieldName);\n }\n // We could use this to invalidate m2o.get, but it doesn't work for collections\n // with an orderBy, when the orderBy changes, so for now we use the blunt naiveCache.\n // const field = meta.allFields[fieldName];\n // if (field.kind === \"m2o\") {\n // const otherMeta = field.otherMetadata();\n // const set = this.smartCache[otherMeta.tagName]?.[field.otherFieldName];\n // if (set) {\n // for (const target of set) target.resetIsLoaded();\n // set.clear();\n // }\n // }\n if (this.#naiveCache.size > 0) {\n for (const target of this.#naiveCache.values()) target.resetIsLoaded();\n this.#naiveCache.clear();\n this.#naiveDirtySets--;\n }\n }\n\n /**\n * Given a `meta+field`, statically find all downstream Reactables, and if any of those\n * Reactables are a) in-memory already, and b) registered themselves as cached,\n * tell them to reset.\n */\n #resetDownstreamReactables(meta: EntityMetadata, fieldName: string): void {\n // These are reactables in other entities that are watching/reacting to this entity/fieldName\n const reactables = meta.reactablesIncludingReadOnlyByField!.get(fieldName);\n if (reactables === undefined) return;\n for (const r of reactables) {\n if (this.#smartDirtySets === 0) return;\n // I.e. we've written to Author.firstName, and this reactable in Book/otherMeta depends on it\n const otherMeta = getMetadata(r.cstr);\n // Find any cache entries for this cstr + name\n const set = this.#smartCache[otherMeta.tagName]?.[r.name];\n if (set?.size > 0) {\n for (const target of set) {\n target.resetIsLoaded();\n // Is this target itself a RF/RR? If so, transitively reset its cache as well.\n const otherMeta = getMetadata(target.entity);\n const otherField = otherMeta.allFields[target.fieldName];\n if (\"derived\" in otherField && otherField.derived) {\n this.#resetDownstreamReactables(otherMeta, otherField.fieldName);\n }\n }\n set.clear();\n this.#smartDirtySets--;\n }\n }\n }\n}\n"],"mappings":";;;AA0BA,IAAa,gBAAb,MAA2B;CAIzB,cAAqE,CAAC;CAGtE,8BAAc,IAAI,IAAsB;CAExC,kBAAkB;CAElB,kBAAkB;;CAGlB,IAAI,QAAgC;EAClC,MAAM,OAAOA,uBAAAA,YAAY,OAAO,MAAM;EACtC,MAAM,MAAO,CAAC,KAAKC,YAAY,KAAK,aAAa,CAAC,EAAA,CAAG,OAAO,+BAAe,IAAI,IAAI;EACnF,IAAI,IAAI,SAAS,GACf,KAAKC;EAEP,IAAI,IAAI,MAAM;CAChB;CAEA,SAAS,QAAgC;EACvC,IAAI,KAAKC,YAAY,SAAS,GAAG,KAAKC;EACtC,KAAKD,YAAY,IAAI,MAAM;CAC7B;;CAGA,cAAc,QAAgB,WAAyB;EACrD,IAAI,KAAKD,oBAAoB,KAAK,KAAKE,oBAAoB,GAAG;EAE9D,IAAI,KAAKF,kBAAkB,GACzB,KAAKG,2BAA2BL,uBAAAA,YAAY,MAAM,GAAG,SAAS;EAahE,IAAI,KAAKG,YAAY,OAAO,GAAG;GAC7B,KAAK,MAAM,UAAU,KAAKA,YAAY,OAAO,GAAG,OAAO,cAAc;GACrE,KAAKA,YAAY,MAAM;GACvB,KAAKC;EACP;CACF;;;;;;CAOA,2BAA2B,MAAsB,WAAyB;EAExE,MAAM,aAAa,KAAK,mCAAoC,IAAI,SAAS;EACzE,IAAI,eAAe,KAAA,GAAW;EAC9B,KAAK,MAAM,KAAK,YAAY;GAC1B,IAAI,KAAKF,oBAAoB,GAAG;GAEhC,MAAM,YAAYF,uBAAAA,YAAY,EAAE,IAAI;GAEpC,MAAM,MAAM,KAAKC,YAAY,UAAU,QAAQ,GAAG,EAAE;GACpD,IAAI,KAAK,OAAO,GAAG;IACjB,KAAK,MAAM,UAAU,KAAK;KACxB,OAAO,cAAc;KAErB,MAAM,YAAYD,uBAAAA,YAAY,OAAO,MAAM;KAC3C,MAAM,aAAa,UAAU,UAAU,OAAO;KAC9C,IAAI,aAAa,cAAc,WAAW,SACxC,KAAKK,2BAA2B,WAAW,WAAW,SAAS;IAEnE;IACA,IAAI,MAAM;IACV,KAAKH;GACP;EACF;CACF;AACF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Entity } from "../Entity.cjs";
|
|
2
|
+
//#region src/loading/IsLoadedCache.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Interface for our relations that have dynamic & expensive `isLoaded` checks.
|
|
5
|
+
*
|
|
6
|
+
* ...and also `OneToManyCollection.get` calls.
|
|
7
|
+
*
|
|
8
|
+
* The primary m2o/o2m/m2m relations all have trivial `isLoaded` checks--are they
|
|
9
|
+
* loaded or not.
|
|
10
|
+
*
|
|
11
|
+
* But for "composite relations", i.e. a ReactiveField or ReactiveRelation whose
|
|
12
|
+
* "load-ness" is calculated by evaluating its load hint across a subgraph of entities
|
|
13
|
+
* & relations, load-ness can be more dynamic true-then-false, as its subgraph changes.
|
|
14
|
+
*
|
|
15
|
+
* To avoid performance issues (see https://github.com/joist-orm/joist-orm/issues/1166),
|
|
16
|
+
* we cache this dynamic/expensive `isLoaded` checks, and then do targeted, reactivity-driven
|
|
17
|
+
* cache invalidation whenever relations are mutated (via a hook in `setField`).
|
|
18
|
+
*/
|
|
19
|
+
interface IsLoadedCachable {
|
|
20
|
+
entity: Entity;
|
|
21
|
+
fieldName: string;
|
|
22
|
+
isLoaded: boolean;
|
|
23
|
+
resetIsLoaded(): void;
|
|
24
|
+
}
|
|
25
|
+
declare class IsLoadedCache {
|
|
26
|
+
#private;
|
|
27
|
+
/** Adds a ReactiveField/Relation/Collection to be invalidated when its dependencies change. */
|
|
28
|
+
add(target: IsLoadedCachable): void;
|
|
29
|
+
addNaive(target: IsLoadedCachable): void;
|
|
30
|
+
/** Resets any in-memory #isLoaded/#isCached caches that depend on `entity.fieldName`. */
|
|
31
|
+
resetIsLoaded(entity: Entity, fieldName: string): void;
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
export { IsLoadedCachable, IsLoadedCache };
|
|
35
|
+
//# sourceMappingURL=IsLoadedCache.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IsLoadedCache.d.cts","names":[],"sources":["../../src/loading/IsLoadedCache.ts"],"mappings":";;;;;;;;;;;;;;;;;;UAmBiB;EACf,QAAQ;EACR;EACA;EACA;;cAGW;;;EAcX,IAAI,QAAQ;EASZ,SAAS,QAAQ;;EAMjB,cAAc,QAAQ,QAAQ"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Entity } from "../Entity.mjs";
|
|
2
|
+
//#region src/loading/IsLoadedCache.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Interface for our relations that have dynamic & expensive `isLoaded` checks.
|
|
5
|
+
*
|
|
6
|
+
* ...and also `OneToManyCollection.get` calls.
|
|
7
|
+
*
|
|
8
|
+
* The primary m2o/o2m/m2m relations all have trivial `isLoaded` checks--are they
|
|
9
|
+
* loaded or not.
|
|
10
|
+
*
|
|
11
|
+
* But for "composite relations", i.e. a ReactiveField or ReactiveRelation whose
|
|
12
|
+
* "load-ness" is calculated by evaluating its load hint across a subgraph of entities
|
|
13
|
+
* & relations, load-ness can be more dynamic true-then-false, as its subgraph changes.
|
|
14
|
+
*
|
|
15
|
+
* To avoid performance issues (see https://github.com/joist-orm/joist-orm/issues/1166),
|
|
16
|
+
* we cache this dynamic/expensive `isLoaded` checks, and then do targeted, reactivity-driven
|
|
17
|
+
* cache invalidation whenever relations are mutated (via a hook in `setField`).
|
|
18
|
+
*/
|
|
19
|
+
interface IsLoadedCachable {
|
|
20
|
+
entity: Entity;
|
|
21
|
+
fieldName: string;
|
|
22
|
+
isLoaded: boolean;
|
|
23
|
+
resetIsLoaded(): void;
|
|
24
|
+
}
|
|
25
|
+
declare class IsLoadedCache {
|
|
26
|
+
#private;
|
|
27
|
+
/** Adds a ReactiveField/Relation/Collection to be invalidated when its dependencies change. */
|
|
28
|
+
add(target: IsLoadedCachable): void;
|
|
29
|
+
addNaive(target: IsLoadedCachable): void;
|
|
30
|
+
/** Resets any in-memory #isLoaded/#isCached caches that depend on `entity.fieldName`. */
|
|
31
|
+
resetIsLoaded(entity: Entity, fieldName: string): void;
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
export { IsLoadedCachable, IsLoadedCache };
|
|
35
|
+
//# sourceMappingURL=IsLoadedCache.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IsLoadedCache.d.mts","names":[],"sources":["../../src/loading/IsLoadedCache.ts"],"mappings":";;;;;;;;;;;;;;;;;;UAmBiB;EACf,QAAQ;EACR;EACA;EACA;;cAGW;;;EAcX,IAAI,QAAQ;EASZ,SAAS,QAAQ;;EAMjB,cAAc,QAAQ,QAAQ"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { getMetadata } from "../EntityMetadata.js";
|
|
2
|
+
//#region src/loading/IsLoadedCache.ts
|
|
3
|
+
var IsLoadedCache = class {
|
|
4
|
+
#smartCache = {};
|
|
5
|
+
#naiveCache = /* @__PURE__ */ new Set();
|
|
6
|
+
#smartDirtySets = 0;
|
|
7
|
+
#naiveDirtySets = 0;
|
|
8
|
+
/** Adds a ReactiveField/Relation/Collection to be invalidated when its dependencies change. */
|
|
9
|
+
add(target) {
|
|
10
|
+
const meta = getMetadata(target.entity);
|
|
11
|
+
const set = (this.#smartCache[meta.tagName] ??= {})[target.fieldName] ??= /* @__PURE__ */ new Set();
|
|
12
|
+
if (set.size === 0) this.#smartDirtySets++;
|
|
13
|
+
set.add(target);
|
|
14
|
+
}
|
|
15
|
+
addNaive(target) {
|
|
16
|
+
if (this.#naiveCache.size === 0) this.#naiveDirtySets++;
|
|
17
|
+
this.#naiveCache.add(target);
|
|
18
|
+
}
|
|
19
|
+
/** Resets any in-memory #isLoaded/#isCached caches that depend on `entity.fieldName`. */
|
|
20
|
+
resetIsLoaded(entity, fieldName) {
|
|
21
|
+
if (this.#smartDirtySets === 0 && this.#naiveDirtySets === 0) return;
|
|
22
|
+
if (this.#smartDirtySets > 0) this.#resetDownstreamReactables(getMetadata(entity), fieldName);
|
|
23
|
+
if (this.#naiveCache.size > 0) {
|
|
24
|
+
for (const target of this.#naiveCache.values()) target.resetIsLoaded();
|
|
25
|
+
this.#naiveCache.clear();
|
|
26
|
+
this.#naiveDirtySets--;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Given a `meta+field`, statically find all downstream Reactables, and if any of those
|
|
31
|
+
* Reactables are a) in-memory already, and b) registered themselves as cached,
|
|
32
|
+
* tell them to reset.
|
|
33
|
+
*/
|
|
34
|
+
#resetDownstreamReactables(meta, fieldName) {
|
|
35
|
+
const reactables = meta.reactablesIncludingReadOnlyByField.get(fieldName);
|
|
36
|
+
if (reactables === void 0) return;
|
|
37
|
+
for (const r of reactables) {
|
|
38
|
+
if (this.#smartDirtySets === 0) return;
|
|
39
|
+
const otherMeta = getMetadata(r.cstr);
|
|
40
|
+
const set = this.#smartCache[otherMeta.tagName]?.[r.name];
|
|
41
|
+
if (set?.size > 0) {
|
|
42
|
+
for (const target of set) {
|
|
43
|
+
target.resetIsLoaded();
|
|
44
|
+
const otherMeta = getMetadata(target.entity);
|
|
45
|
+
const otherField = otherMeta.allFields[target.fieldName];
|
|
46
|
+
if ("derived" in otherField && otherField.derived) this.#resetDownstreamReactables(otherMeta, otherField.fieldName);
|
|
47
|
+
}
|
|
48
|
+
set.clear();
|
|
49
|
+
this.#smartDirtySets--;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
//#endregion
|
|
55
|
+
export { IsLoadedCache };
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=IsLoadedCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IsLoadedCache.js","names":["#smartCache","#smartDirtySets","#naiveCache","#naiveDirtySets","#resetDownstreamReactables"],"sources":["../../src/loading/IsLoadedCache.ts"],"sourcesContent":["import type { Entity } from \"src/Entity.ts\";\nimport { type EntityMetadata, getMetadata } from \"src/EntityMetadata.ts\";\n\n/**\n * Interface for our relations that have dynamic & expensive `isLoaded` checks.\n *\n * ...and also `OneToManyCollection.get` calls.\n *\n * The primary m2o/o2m/m2m relations all have trivial `isLoaded` checks--are they\n * loaded or not.\n *\n * But for \"composite relations\", i.e. a ReactiveField or ReactiveRelation whose\n * \"load-ness\" is calculated by evaluating its load hint across a subgraph of entities\n * & relations, load-ness can be more dynamic true-then-false, as its subgraph changes.\n *\n * To avoid performance issues (see https://github.com/joist-orm/joist-orm/issues/1166),\n * we cache this dynamic/expensive `isLoaded` checks, and then do targeted, reactivity-driven\n * cache invalidation whenever relations are mutated (via a hook in `setField`).\n */\nexport interface IsLoadedCachable {\n entity: Entity;\n fieldName: string;\n isLoaded: boolean;\n resetIsLoaded(): void;\n}\n\nexport class IsLoadedCache {\n // Cache of `{ tag -> { fieldName -> Set<IsLoadedCachable> } }` to hold derived relations\n // we can selectively invalidate by walking from the mutated field to any downstream\n // cacheables.\n #smartCache: Record<string, Record<string, Set<IsLoadedCachable>>> = {};\n // A dumb cache for things that are hard selectively invalidate (o2m.get, recursive collections,\n // and custom references/collections), so any mutation resets these.\n #naiveCache = new Set<IsLoadedCachable>();\n // Counter to skip reactive hint walking when no smart cache sets are populated.\n #smartDirtySets = 0;\n // Counter to fast-path resetIsLoaded when the naive cache is empty.\n #naiveDirtySets = 0;\n\n /** Adds a ReactiveField/Relation/Collection to be invalidated when its dependencies change. */\n add(target: IsLoadedCachable): void {\n const meta = getMetadata(target.entity);\n const set = ((this.#smartCache[meta.tagName] ??= {})[target.fieldName] ??= new Set());\n if (set.size === 0) {\n this.#smartDirtySets++;\n }\n set.add(target);\n }\n\n addNaive(target: IsLoadedCachable): void {\n if (this.#naiveCache.size === 0) this.#naiveDirtySets++;\n this.#naiveCache.add(target);\n }\n\n /** Resets any in-memory #isLoaded/#isCached caches that depend on `entity.fieldName`. */\n resetIsLoaded(entity: Entity, fieldName: string): void {\n if (this.#smartDirtySets === 0 && this.#naiveDirtySets === 0) return;\n // Reset caches that we can deterministically find by walking the reactivity hints\n if (this.#smartDirtySets > 0) {\n this.#resetDownstreamReactables(getMetadata(entity), fieldName);\n }\n // We could use this to invalidate m2o.get, but it doesn't work for collections\n // with an orderBy, when the orderBy changes, so for now we use the blunt naiveCache.\n // const field = meta.allFields[fieldName];\n // if (field.kind === \"m2o\") {\n // const otherMeta = field.otherMetadata();\n // const set = this.smartCache[otherMeta.tagName]?.[field.otherFieldName];\n // if (set) {\n // for (const target of set) target.resetIsLoaded();\n // set.clear();\n // }\n // }\n if (this.#naiveCache.size > 0) {\n for (const target of this.#naiveCache.values()) target.resetIsLoaded();\n this.#naiveCache.clear();\n this.#naiveDirtySets--;\n }\n }\n\n /**\n * Given a `meta+field`, statically find all downstream Reactables, and if any of those\n * Reactables are a) in-memory already, and b) registered themselves as cached,\n * tell them to reset.\n */\n #resetDownstreamReactables(meta: EntityMetadata, fieldName: string): void {\n // These are reactables in other entities that are watching/reacting to this entity/fieldName\n const reactables = meta.reactablesIncludingReadOnlyByField!.get(fieldName);\n if (reactables === undefined) return;\n for (const r of reactables) {\n if (this.#smartDirtySets === 0) return;\n // I.e. we've written to Author.firstName, and this reactable in Book/otherMeta depends on it\n const otherMeta = getMetadata(r.cstr);\n // Find any cache entries for this cstr + name\n const set = this.#smartCache[otherMeta.tagName]?.[r.name];\n if (set?.size > 0) {\n for (const target of set) {\n target.resetIsLoaded();\n // Is this target itself a RF/RR? If so, transitively reset its cache as well.\n const otherMeta = getMetadata(target.entity);\n const otherField = otherMeta.allFields[target.fieldName];\n if (\"derived\" in otherField && otherField.derived) {\n this.#resetDownstreamReactables(otherMeta, otherField.fieldName);\n }\n }\n set.clear();\n this.#smartDirtySets--;\n }\n }\n }\n}\n"],"mappings":";;AA0BA,IAAa,gBAAb,MAA2B;CAIzB,cAAqE,CAAC;CAGtE,8BAAc,IAAI,IAAsB;CAExC,kBAAkB;CAElB,kBAAkB;;CAGlB,IAAI,QAAgC;EAClC,MAAM,OAAO,YAAY,OAAO,MAAM;EACtC,MAAM,MAAO,CAAC,KAAKA,YAAY,KAAK,aAAa,CAAC,EAAA,CAAG,OAAO,+BAAe,IAAI,IAAI;EACnF,IAAI,IAAI,SAAS,GACf,KAAKC;EAEP,IAAI,IAAI,MAAM;CAChB;CAEA,SAAS,QAAgC;EACvC,IAAI,KAAKC,YAAY,SAAS,GAAG,KAAKC;EACtC,KAAKD,YAAY,IAAI,MAAM;CAC7B;;CAGA,cAAc,QAAgB,WAAyB;EACrD,IAAI,KAAKD,oBAAoB,KAAK,KAAKE,oBAAoB,GAAG;EAE9D,IAAI,KAAKF,kBAAkB,GACzB,KAAKG,2BAA2B,YAAY,MAAM,GAAG,SAAS;EAahE,IAAI,KAAKF,YAAY,OAAO,GAAG;GAC7B,KAAK,MAAM,UAAU,KAAKA,YAAY,OAAO,GAAG,OAAO,cAAc;GACrE,KAAKA,YAAY,MAAM;GACvB,KAAKC;EACP;CACF;;;;;;CAOA,2BAA2B,MAAsB,WAAyB;EAExE,MAAM,aAAa,KAAK,mCAAoC,IAAI,SAAS;EACzE,IAAI,eAAe,KAAA,GAAW;EAC9B,KAAK,MAAM,KAAK,YAAY;GAC1B,IAAI,KAAKF,oBAAoB,GAAG;GAEhC,MAAM,YAAY,YAAY,EAAE,IAAI;GAEpC,MAAM,MAAM,KAAKD,YAAY,UAAU,QAAQ,GAAG,EAAE;GACpD,IAAI,KAAK,OAAO,GAAG;IACjB,KAAK,MAAM,UAAU,KAAK;KACxB,OAAO,cAAc;KAErB,MAAM,YAAY,YAAY,OAAO,MAAM;KAC3C,MAAM,aAAa,UAAU,UAAU,OAAO;KAC9C,IAAI,aAAa,cAAc,WAAW,SACxC,KAAKI,2BAA2B,WAAW,WAAW,SAAS;IAEnE;IACA,IAAI,MAAM;IACV,KAAKH;GACP;EACF;CACF;AACF"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_reactivity_reactiveHints = require("../reactivity/reactiveHints.cjs");
|
|
3
|
+
const require_utils = require("../utils.cjs");
|
|
4
|
+
//#region src/loading/loadHints.ts
|
|
5
|
+
/** Detects whether an entity is newly created, and so we can treat all the relations as loaded. */
|
|
6
|
+
function isNew(e) {
|
|
7
|
+
return e.isNewEntity;
|
|
8
|
+
}
|
|
9
|
+
/** Recursively checks if the relations from a load hint are loaded on an entity. */
|
|
10
|
+
function isLoaded(entity, hint) {
|
|
11
|
+
if (typeof hint === "string") return entity[hint].isLoaded;
|
|
12
|
+
else if (Array.isArray(hint)) {
|
|
13
|
+
for (const key of hint) if (!entity[key].isLoaded) return false;
|
|
14
|
+
return true;
|
|
15
|
+
} else if (typeof hint === "object") {
|
|
16
|
+
for (const entry of Object.entries(hint)) {
|
|
17
|
+
const [key, nestedHint] = entry;
|
|
18
|
+
const relation = require_reactivity_reactiveHints.getRelationFromMaybePolyKey(entity, key);
|
|
19
|
+
if (!relation || typeof relation.load !== "function") continue;
|
|
20
|
+
if (relation.isLoaded) {
|
|
21
|
+
const result = relation.get;
|
|
22
|
+
if (Array.isArray(result)) {
|
|
23
|
+
for (const entity of result) if (!isLoaded(entity, nestedHint)) return false;
|
|
24
|
+
} else if (result && !isLoaded(result, nestedHint)) return false;
|
|
25
|
+
} else return false;
|
|
26
|
+
}
|
|
27
|
+
return true;
|
|
28
|
+
} else throw new Error(`Unexpected hint ${hint}`);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Recursively checks if a relation-only populate hint is loaded on an entity.
|
|
32
|
+
*
|
|
33
|
+
* Unlike `isLoaded`, this returns `false` for non-loadable/primitive leaves instead of ignoring them, because
|
|
34
|
+
* `ReactiveField.load` calls `em.populate` with load hints converted from reactive hints, i.e. `{ firstName: {} }`.
|
|
35
|
+
* Treating those primitive leaves as loaded would let `EntityManager.populate` skip the batchloader path and change
|
|
36
|
+
* reactive recalculation ordering, so the populate fast-path only applies to true relation populate hints.
|
|
37
|
+
*/
|
|
38
|
+
function isLoadedForPopulate(entity, hint) {
|
|
39
|
+
if (typeof hint === "string") {
|
|
40
|
+
const relation = require_reactivity_reactiveHints.getRelationFromMaybePolyKey(entity, hint);
|
|
41
|
+
return !!relation && typeof relation.load === "function" && relation.isLoaded;
|
|
42
|
+
} else if (Array.isArray(hint)) {
|
|
43
|
+
for (const key of hint) if (!isLoadedForPopulate(entity, key)) return false;
|
|
44
|
+
return true;
|
|
45
|
+
} else if (typeof hint === "object") {
|
|
46
|
+
for (const entry of Object.entries(hint)) {
|
|
47
|
+
const [key, nestedHint] = entry;
|
|
48
|
+
const relation = require_reactivity_reactiveHints.getRelationFromMaybePolyKey(entity, key);
|
|
49
|
+
if (!relation || typeof relation.load !== "function" || !relation.isLoaded) return false;
|
|
50
|
+
const result = relation.get;
|
|
51
|
+
if (Array.isArray(result)) {
|
|
52
|
+
for (const entity of result) if (!isLoadedForPopulate(entity, nestedHint)) return false;
|
|
53
|
+
} else if (result && !isLoadedForPopulate(result, nestedHint)) return false;
|
|
54
|
+
}
|
|
55
|
+
return true;
|
|
56
|
+
} else throw new Error(`Unexpected hint ${hint}`);
|
|
57
|
+
}
|
|
58
|
+
function maybePopulateThen(entity, hint, fn) {
|
|
59
|
+
return isLoaded(entity, hint) ? fn(entity) : entity.populate(hint).then(fn);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Runtime checks that `entity` has `hint` loaded, and type guards it as a `Loaded<T, hint>`.
|
|
63
|
+
*
|
|
64
|
+
* Similar to `ensureLoaded`, although `ensureLoaded` returns its value.
|
|
65
|
+
*/
|
|
66
|
+
function assertLoaded(entity, hint) {
|
|
67
|
+
if (!isLoaded(entity, hint)) require_utils.fail(`${entity.id} is not loaded for ${JSON.stringify(hint)}`);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Runtime checks that `entity` has `hint` loaded, and returns it as a `Loaded<T, entity>`.
|
|
71
|
+
*
|
|
72
|
+
* Similar to `assertLoaded`, although `assertLoaded` is a boolean type guard.
|
|
73
|
+
*/
|
|
74
|
+
function ensureLoaded(entity, hint) {
|
|
75
|
+
assertLoaded(entity, hint);
|
|
76
|
+
return entity;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Unsafe type check for `entity` to `hint`, *without* a runtime type check.
|
|
80
|
+
*
|
|
81
|
+
* You should only use this if you're extremely sure that entity has hint loaded.
|
|
82
|
+
*/
|
|
83
|
+
function unsafeLoaded(entity, hint) {
|
|
84
|
+
return entity;
|
|
85
|
+
}
|
|
86
|
+
//#endregion
|
|
87
|
+
exports.assertLoaded = assertLoaded;
|
|
88
|
+
exports.ensureLoaded = ensureLoaded;
|
|
89
|
+
exports.isLoaded = isLoaded;
|
|
90
|
+
exports.isLoadedForPopulate = isLoadedForPopulate;
|
|
91
|
+
exports.isNew = isNew;
|
|
92
|
+
exports.maybePopulateThen = maybePopulateThen;
|
|
93
|
+
exports.unsafeLoaded = unsafeLoaded;
|
|
94
|
+
|
|
95
|
+
//# sourceMappingURL=loadHints.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadHints.cjs","names":["getRelationFromMaybePolyKey"],"sources":["../../src/loading/loadHints.ts"],"sourcesContent":["import type { Entity } from \"src/Entity.ts\";\nimport type { NormalizeHint } from \"src/normalizeHints.ts\";\nimport { getRelationFromMaybePolyKey } from \"src/reactivity/reactiveHints.ts\";\nimport type {\n AsyncMethod,\n Collection,\n EnumCollection,\n LoadedCollection,\n LoadedEnumCollection,\n LoadedMethod,\n LoadedProperty,\n LoadedReadOnlyCollection,\n LoadedReference,\n OneToOneReference,\n Property,\n ReadOnlyCollection,\n Reference,\n Relation,\n} from \"src/relations/index.ts\";\nimport type { LoadedOneToOneReference } from \"src/relations/OneToOneReference.ts\";\nimport type { OptsOf } from \"src/typeMap.ts\";\nimport { type MaybePromise, type NullOrDefinedOr, fail } from \"src/utils.ts\";\n\nconst deepLoad = Symbol();\ntype DeepLoadHint<T extends Entity> = NestedLoadHint<T> & { [deepLoad]: true };\n\n// Use any to correctly handle subtype/base type load hints.\n//\n// If a load hint is typed as `LoadHint<SmallPublisher, \"authors\">`, but the property\n// is actually `Publisher.authors`, if we do `P extends LoadedCollection<SmallPublisher, ...>`\n// the `SmallPublisher !== Publisher`, so the `authors` property doesn't match, and then\n// we drop the rest of the nested load hint.\n//\n// But if we check `P extends LoadedCollection<any, ...>` it works.\ntype MaybeBaseType = any;\n\n/** Marks a given `T[K]` field as the loaded/synchronous version of the collection. */\nexport type MarkLoaded<T extends Entity, P, UH = {}> =\n P extends EnumCollection<MaybeBaseType, infer E>\n ? LoadedEnumCollection<T, E>\n : P extends OneToOneReference<MaybeBaseType, infer U>\n ? LoadedOneToOneReference<T, Loaded<U, UH>>\n : P extends Reference<MaybeBaseType, infer U, infer N>\n ? LoadedReference<T, Loaded<U, UH>, N>\n : P extends Collection<MaybeBaseType, infer U>\n ? LoadedCollection<T, Loaded<U, UH>>\n : P extends ReadOnlyCollection<MaybeBaseType, infer U>\n ? LoadedReadOnlyCollection<T, Loaded<U, UH>>\n : P extends Property<MaybeBaseType, infer V>\n ? // prettier-ignore\n [V] extends [(infer U extends Entity) | undefined]\n ? LoadedProperty<T, Loaded<U, UH> | Exclude<V, U>>\n : V extends readonly (infer U extends Entity)[]\n ? LoadedProperty<T, Loaded<U, UH>[]>\n : LoadedProperty<T, V>\n : P extends AsyncMethod<T, infer A, infer V>\n ? LoadedMethod<T, A, V>\n : unknown;\n\n/** A version of MarkLoaded the uses `DeepLoadHint` for tests. */\ntype MarkDeepLoaded<T extends Entity, P> =\n P extends EnumCollection<MaybeBaseType, infer E>\n ? LoadedEnumCollection<T, E>\n : P extends OneToOneReference<MaybeBaseType, infer U>\n ? LoadedOneToOneReference<T, Loaded<U, DeepLoadHint<U>>>\n : P extends Reference<MaybeBaseType, infer U, infer N>\n ? LoadedReference<T, Loaded<U, DeepLoadHint<U>>, N>\n : P extends Collection<MaybeBaseType, infer U>\n ? LoadedCollection<T, Loaded<U, DeepLoadHint<U>>>\n : P extends ReadOnlyCollection<MaybeBaseType, infer U>\n ? LoadedReadOnlyCollection<T, Loaded<U, DeepLoadHint<U>>>\n : P extends Property<MaybeBaseType, infer V>\n ? // prettier-ignore\n [V] extends [(infer U extends Entity) | undefined]\n ? LoadedProperty<T, Loaded<U, DeepLoadHint<U>> | Exclude<V, U>>\n : V extends readonly (infer U extends Entity)[]\n ? LoadedProperty<T, Loaded<U, DeepLoadHint<U>>[]>\n : LoadedProperty<T, V>\n : P extends AsyncMethod<T, infer A, infer V>\n ? LoadedMethod<T, A, V>\n : unknown;\n\n/**\n * A helper type for `New` that marks every `Reference` and `LoadedCollection` in `T` as loaded.\n *\n * We also look in opts `O` for the \"`U`\" type, i.e. the next level up/down in the graph,\n * because the call site's opts may be using an also-marked loaded parent/child as an opt,\n * so this will infer the type of that parent/child and use that for the `U` type.\n *\n * This means things like `entity.parent.get.grandParent.get` will work on the resulting\n * type.\n *\n * Note that this is also purposefully broken out of `New` because of some weirdness\n * around type narrowing that wasn't working when inlined into `New`.\n */\ntype MaybeUseOptsType<T extends Entity, O, K extends keyof T & keyof O> =\n O[K] extends NullOrDefinedOr<infer OK>\n ? OK extends Entity\n ? T[K] extends OneToOneReference<T, infer U>\n ? LoadedOneToOneReference<T, U>\n : T[K] extends Reference<T, infer U, infer N>\n ? LoadedReference<T, OK, N>\n : never\n : OK extends Array<infer OU>\n ? OU extends Entity\n ? T[K] extends Collection<T, infer U>\n ? LoadedCollection<T, OU>\n : never\n : T[K]\n : T[K]\n : never;\n\n/**\n * Marks all references/collections of `T` as loaded, i.e. for newly instantiated entities where\n * we know there are no already-existing rows with fk's to this new entity in the database.\n *\n * `O` is the generic from the call site so that if the caller passes `{ author: SomeLoadedAuthor }`,\n * we'll prefer that type, as it might have more nested load hints that we can't otherwise assume.\n */\nexport type New<T extends Entity, O extends OptsOf<T> = OptsOf<T>> = T & {\n // K will be `keyof T` and `keyof O` for codegen'd relations, but custom relations\n // line `hasOneThrough` and `hasOneDerived` will not pass `keyof O` and so use the\n // `: MarkLoaded`.\n //\n // Note that the safest thing is to probably make this `: unknown` instead so that\n // custom relations are not marked loaded, b/c they will very likely require a `.load`\n // to work. However, we have some tests that currently expect `author.image.get` to work\n // on a new author, so keeping the `MarkLoaded` behavior for now.\n [K in keyof T]: K extends keyof O ? MaybeUseOptsType<T, O, K> : MarkLoaded<T, T[K]>;\n};\n\n/**\n * Marks all references/collections of `T` as deeply loaded, which is only useful for\n * tests where we can have \"the whole object graph\" in-memory.\n */\nexport type DeepNew<T extends Entity> = Loaded<T, DeepLoadHint<T>>;\n\n/** Detects whether an entity is newly created, and so we can treat all the relations as loaded. */\nexport function isNew<T extends Entity>(e: T): e is New<T> {\n return e.isNewEntity;\n}\n\n/**\n * All the loadable fields, i.e. relations or lazy-loaded/async properties, in an entity.\n *\n * We use a mapped type (instead of a code-generated type) so that we can pick up custom\n * fields that have be added to the entity classes, i.e. `Author.numberOfBooks2` async\n * properties.\n */\nexport type Loadable<T extends Entity> = {\n -readonly [K in keyof T as LoadableValue<T[K]> extends never ? never : K]: LoadableValue<T[K]>;\n};\n\n/**\n * Given an entity field/value, return the loadable entity.\n *\n * I.e. `Author.books` as a Reference or Collection, return `Book`.\n *\n * Note that we usually return entities, but for AsyncProperties it could be\n * a calculated primitive value like number or string.\n */\nexport type LoadableValue<V> =\n V extends EnumCollection<any, infer E>\n ? E\n : V extends Reference<any, infer U, any>\n ? U\n : V extends Collection<any, infer U>\n ? U\n : V extends ReadOnlyCollection<any, infer U>\n ? U\n : V extends AsyncMethod<any, any, infer V>\n ? V\n : V extends Property<any, infer P>\n ? // If the Property returns `Comment | undefined`, then we want to return `Comment`\n // prettier-ignore\n P extends (infer U extends Entity) | undefined ? U : P\n : never;\n\n/**\n * A load hint of a single key, multiple keys, or nested keys and sub-hints.\n *\n * Load hints are different from reactive hints in that load hints include only references,\n * collections, and async properties to preload (like `Book.author` or `Author.books`), and\n * do not include any primitive fields (like `Author.firstName`).\n */\nexport type LoadHint<T extends Entity> =\n | (keyof Loadable<T> & string)\n | ReadonlyArray<keyof Loadable<T> & string>\n | NestedLoadHint<T>;\n\nexport type NestedLoadHint<T extends Entity> = {\n // Don't filter out entity-loadable keys, because we need to support `{ numberOfBooks2: {} }`\n [K in keyof Loadable<T>]?: Loadable<T>[K] extends infer U extends Entity ? LoadHint<U> : {};\n};\n\n/** Given an entity `T` that is being populated with hints `H`, marks the `H` attributes as populated. */\nexport type Loaded<T extends Entity, H> = T & {\n [K in keyof T & keyof NormalizeHint<H>]: H extends DeepLoadHint<T>\n ? MarkDeepLoaded<T, T[K]>\n : MarkLoaded<T, T[K], NormalizeHint<H>[K]>;\n};\n\n/** Recursively checks if the relations from a load hint are loaded on an entity. */\nexport function isLoaded<T extends Entity, H extends LoadHint<T>>(entity: T, hint: H): entity is Loaded<T, H> {\n if (typeof hint === \"string\") {\n return (entity as any)[hint].isLoaded;\n } else if (Array.isArray(hint)) {\n for (const key of hint as string[]) {\n if (!(entity as any)[key].isLoaded) return false;\n }\n return true;\n } else if (typeof hint === \"object\") {\n for (const entry of Object.entries(hint as object)) {\n const [key, nestedHint] = entry;\n const relation = getRelationFromMaybePolyKey(entity, key);\n if (!relation || typeof relation.load !== \"function\") continue;\n if (relation.isLoaded) {\n const result = relation.get;\n if (Array.isArray(result)) {\n for (const entity of result) {\n if (!isLoaded(entity, nestedHint)) return false;\n }\n } else if (result && !isLoaded(result, nestedHint)) {\n return false;\n }\n } else {\n return false;\n }\n }\n return true;\n } else {\n throw new Error(`Unexpected hint ${hint}`);\n }\n}\n\n/**\n * Recursively checks if a relation-only populate hint is loaded on an entity.\n *\n * Unlike `isLoaded`, this returns `false` for non-loadable/primitive leaves instead of ignoring them, because\n * `ReactiveField.load` calls `em.populate` with load hints converted from reactive hints, i.e. `{ firstName: {} }`.\n * Treating those primitive leaves as loaded would let `EntityManager.populate` skip the batchloader path and change\n * reactive recalculation ordering, so the populate fast-path only applies to true relation populate hints.\n */\nexport function isLoadedForPopulate<T extends Entity, H extends LoadHint<T>>(\n entity: T,\n hint: H,\n): entity is Loaded<T, H> {\n if (typeof hint === \"string\") {\n const relation = getRelationFromMaybePolyKey(entity, hint);\n return !!relation && typeof relation.load === \"function\" && relation.isLoaded;\n } else if (Array.isArray(hint)) {\n for (const key of hint as string[]) {\n if (!isLoadedForPopulate(entity, key as H)) return false;\n }\n return true;\n } else if (typeof hint === \"object\") {\n for (const entry of Object.entries(hint as object)) {\n const [key, nestedHint] = entry;\n const relation = getRelationFromMaybePolyKey(entity, key);\n if (!relation || typeof relation.load !== \"function\" || !relation.isLoaded) return false;\n const result = relation.get;\n if (Array.isArray(result)) {\n for (const entity of result) {\n if (!isLoadedForPopulate(entity, nestedHint as LoadHint<typeof entity>)) return false;\n }\n } else if (result && !isLoadedForPopulate(result, nestedHint as LoadHint<typeof result>)) {\n return false;\n }\n }\n return true;\n } else {\n throw new Error(`Unexpected hint ${hint}`);\n }\n}\n\nexport function maybePopulateThen<T extends Entity, H extends LoadHint<T>, R>(\n entity: T,\n hint: H,\n fn: (loaded: Loaded<T, H>) => R,\n): MaybePromise<R> {\n return isLoaded(entity, hint) ? fn(entity) : (entity as any).populate(hint).then(fn);\n}\n\n/**\n * Runtime checks that `entity` has `hint` loaded, and type guards it as a `Loaded<T, hint>`.\n *\n * Similar to `ensureLoaded`, although `ensureLoaded` returns its value.\n */\nexport function assertLoaded<T extends Entity, const H extends LoadHint<T>>(\n entity: T,\n hint: H,\n): asserts entity is Loaded<T, H> {\n if (!isLoaded(entity, hint)) fail(`${entity.id} is not loaded for ${JSON.stringify(hint)}`);\n}\n\n/**\n * Runtime checks that `entity` has `hint` loaded, and returns it as a `Loaded<T, entity>`.\n *\n * Similar to `assertLoaded`, although `assertLoaded` is a boolean type guard.\n */\nexport function ensureLoaded<T extends Entity, const H extends LoadHint<T>>(entity: T, hint: H): Loaded<T, H> {\n assertLoaded<T, H>(entity, hint);\n return entity;\n}\n\n/**\n * Unsafe type check for `entity` to `hint`, *without* a runtime type check.\n *\n * You should only use this if you're extremely sure that entity has hint loaded.\n */\nexport function unsafeLoaded<T extends Entity, const H extends LoadHint<T>>(entity: T, hint: H): Loaded<T, H> {\n return entity as Loaded<T, H>;\n}\n\n/** From any `Relations` field in `T`, i.e. for loader hints. */\nexport type RelationsIn<T extends Entity> = SubType<T, Relation<any, any>>;\n\n// https://medium.com/dailyjs/typescript-create-a-condition-based-subset-types-9d902cea5b8c\ntype SubType<T, C> = Pick<T, { [K in keyof T]: T[K] extends C ? K : never }[keyof T]>;\n"],"mappings":";;;;;AA0IA,SAAgB,MAAwB,GAAmB;CACzD,OAAO,EAAE;AACX;;AA+DA,SAAgB,SAAkD,QAAW,MAAiC;CAC5G,IAAI,OAAO,SAAS,UAClB,OAAQ,OAAe,KAAK,CAAC;MACxB,IAAI,MAAM,QAAQ,IAAI,GAAG;EAC9B,KAAK,MAAM,OAAO,MAChB,IAAI,CAAE,OAAe,IAAI,CAAC,UAAU,OAAO;EAE7C,OAAO;CACT,OAAO,IAAI,OAAO,SAAS,UAAU;EACnC,KAAK,MAAM,SAAS,OAAO,QAAQ,IAAc,GAAG;GAClD,MAAM,CAAC,KAAK,cAAc;GAC1B,MAAM,WAAWA,iCAAAA,4BAA4B,QAAQ,GAAG;GACxD,IAAI,CAAC,YAAY,OAAO,SAAS,SAAS,YAAY;GACtD,IAAI,SAAS,UAAU;IACrB,MAAM,SAAS,SAAS;IACxB,IAAI,MAAM,QAAQ,MAAM,GACjB;UAAA,MAAM,UAAU,QACnB,IAAI,CAAC,SAAS,QAAQ,UAAU,GAAG,OAAO;IAAA,OAEvC,IAAI,UAAU,CAAC,SAAS,QAAQ,UAAU,GAC/C,OAAO;GAEX,OACE,OAAO;EAEX;EACA,OAAO;CACT,OACE,MAAM,IAAI,MAAM,mBAAmB,MAAM;AAE7C;;;;;;;;;AAUA,SAAgB,oBACd,QACA,MACwB;CACxB,IAAI,OAAO,SAAS,UAAU;EAC5B,MAAM,WAAWA,iCAAAA,4BAA4B,QAAQ,IAAI;EACzD,OAAO,CAAC,CAAC,YAAY,OAAO,SAAS,SAAS,cAAc,SAAS;CACvE,OAAO,IAAI,MAAM,QAAQ,IAAI,GAAG;EAC9B,KAAK,MAAM,OAAO,MAChB,IAAI,CAAC,oBAAoB,QAAQ,GAAQ,GAAG,OAAO;EAErD,OAAO;CACT,OAAO,IAAI,OAAO,SAAS,UAAU;EACnC,KAAK,MAAM,SAAS,OAAO,QAAQ,IAAc,GAAG;GAClD,MAAM,CAAC,KAAK,cAAc;GAC1B,MAAM,WAAWA,iCAAAA,4BAA4B,QAAQ,GAAG;GACxD,IAAI,CAAC,YAAY,OAAO,SAAS,SAAS,cAAc,CAAC,SAAS,UAAU,OAAO;GACnF,MAAM,SAAS,SAAS;GACxB,IAAI,MAAM,QAAQ,MAAM,GACjB;SAAA,MAAM,UAAU,QACnB,IAAI,CAAC,oBAAoB,QAAQ,UAAqC,GAAG,OAAO;GAAA,OAE7E,IAAI,UAAU,CAAC,oBAAoB,QAAQ,UAAqC,GACrF,OAAO;EAEX;EACA,OAAO;CACT,OACE,MAAM,IAAI,MAAM,mBAAmB,MAAM;AAE7C;AAEA,SAAgB,kBACd,QACA,MACA,IACiB;CACjB,OAAO,SAAS,QAAQ,IAAI,IAAI,GAAG,MAAM,IAAK,OAAe,SAAS,IAAI,CAAC,CAAC,KAAK,EAAE;AACrF;;;;;;AAOA,SAAgB,aACd,QACA,MACgC;CAChC,IAAI,CAAC,SAAS,QAAQ,IAAI,GAAG,cAAA,KAAK,GAAG,OAAO,GAAG,qBAAqB,KAAK,UAAU,IAAI,GAAG;AAC5F;;;;;;AAOA,SAAgB,aAA4D,QAAW,MAAuB;CAC5G,aAAmB,QAAQ,IAAI;CAC/B,OAAO;AACT;;;;;;AAOA,SAAgB,aAA4D,QAAW,MAAuB;CAC5G,OAAO;AACT"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { OptsOf } from "../typeMap.cjs";
|
|
2
|
+
import { NormalizeHint } from "../normalizeHints.cjs";
|
|
3
|
+
import { Collection, LoadedCollection } from "../relations/Collection.cjs";
|
|
4
|
+
import { EnumCollection, LoadedEnumCollection } from "../relations/EnumCollection.cjs";
|
|
5
|
+
import { AsyncMethod, LoadedMethod } from "../relations/hasAsyncMethod.cjs";
|
|
6
|
+
import { LoadedProperty, Property } from "../relations/hasProperty.cjs";
|
|
7
|
+
import { LoadedReference, Reference } from "../relations/Reference.cjs";
|
|
8
|
+
import { Relation } from "../relations/Relation.cjs";
|
|
9
|
+
import { LoadedOneToOneReference, OneToOneReference } from "../relations/OneToOneReference.cjs";
|
|
10
|
+
import { LoadedReadOnlyCollection, ReadOnlyCollection } from "../relations/ReadOnlyCollection.cjs";
|
|
11
|
+
import "../relations/index.cjs";
|
|
12
|
+
import { MaybePromise, NullOrDefinedOr } from "../utils.cjs";
|
|
13
|
+
import { Entity } from "../Entity.cjs";
|
|
14
|
+
//#region src/loading/loadHints.d.ts
|
|
15
|
+
declare const deepLoad: unique symbol;
|
|
16
|
+
type DeepLoadHint<T extends Entity> = NestedLoadHint<T> & {
|
|
17
|
+
[deepLoad]: true;
|
|
18
|
+
};
|
|
19
|
+
type MaybeBaseType = any;
|
|
20
|
+
/** Marks a given `T[K]` field as the loaded/synchronous version of the collection. */
|
|
21
|
+
type MarkLoaded<T extends Entity, P, UH = {}> = P extends EnumCollection<MaybeBaseType, infer E> ? LoadedEnumCollection<T, E> : P extends OneToOneReference<MaybeBaseType, infer U> ? LoadedOneToOneReference<T, Loaded<U, UH>> : P extends Reference<MaybeBaseType, infer U, infer N> ? LoadedReference<T, Loaded<U, UH>, N> : P extends Collection<MaybeBaseType, infer U> ? LoadedCollection<T, Loaded<U, UH>> : P extends ReadOnlyCollection<MaybeBaseType, infer U> ? LoadedReadOnlyCollection<T, Loaded<U, UH>> : P extends Property<MaybeBaseType, infer V> ? [V] extends [(infer U extends Entity) | undefined] ? LoadedProperty<T, Loaded<U, UH> | Exclude<V, U>> : V extends readonly (infer U extends Entity)[] ? LoadedProperty<T, Loaded<U, UH>[]> : LoadedProperty<T, V> : P extends AsyncMethod<T, infer A, infer V> ? LoadedMethod<T, A, V> : unknown;
|
|
22
|
+
/** A version of MarkLoaded the uses `DeepLoadHint` for tests. */
|
|
23
|
+
type MarkDeepLoaded<T extends Entity, P> = P extends EnumCollection<MaybeBaseType, infer E> ? LoadedEnumCollection<T, E> : P extends OneToOneReference<MaybeBaseType, infer U> ? LoadedOneToOneReference<T, Loaded<U, DeepLoadHint<U>>> : P extends Reference<MaybeBaseType, infer U, infer N> ? LoadedReference<T, Loaded<U, DeepLoadHint<U>>, N> : P extends Collection<MaybeBaseType, infer U> ? LoadedCollection<T, Loaded<U, DeepLoadHint<U>>> : P extends ReadOnlyCollection<MaybeBaseType, infer U> ? LoadedReadOnlyCollection<T, Loaded<U, DeepLoadHint<U>>> : P extends Property<MaybeBaseType, infer V> ? [V] extends [(infer U extends Entity) | undefined] ? LoadedProperty<T, Loaded<U, DeepLoadHint<U>> | Exclude<V, U>> : V extends readonly (infer U extends Entity)[] ? LoadedProperty<T, Loaded<U, DeepLoadHint<U>>[]> : LoadedProperty<T, V> : P extends AsyncMethod<T, infer A, infer V> ? LoadedMethod<T, A, V> : unknown;
|
|
24
|
+
/**
|
|
25
|
+
* A helper type for `New` that marks every `Reference` and `LoadedCollection` in `T` as loaded.
|
|
26
|
+
*
|
|
27
|
+
* We also look in opts `O` for the "`U`" type, i.e. the next level up/down in the graph,
|
|
28
|
+
* because the call site's opts may be using an also-marked loaded parent/child as an opt,
|
|
29
|
+
* so this will infer the type of that parent/child and use that for the `U` type.
|
|
30
|
+
*
|
|
31
|
+
* This means things like `entity.parent.get.grandParent.get` will work on the resulting
|
|
32
|
+
* type.
|
|
33
|
+
*
|
|
34
|
+
* Note that this is also purposefully broken out of `New` because of some weirdness
|
|
35
|
+
* around type narrowing that wasn't working when inlined into `New`.
|
|
36
|
+
*/
|
|
37
|
+
type MaybeUseOptsType<T extends Entity, O, K extends keyof T & keyof O> = O[K] extends NullOrDefinedOr<infer OK> ? OK extends Entity ? T[K] extends OneToOneReference<T, infer U> ? LoadedOneToOneReference<T, U> : T[K] extends Reference<T, infer U, infer N> ? LoadedReference<T, OK, N> : never : OK extends Array<infer OU> ? OU extends Entity ? T[K] extends Collection<T, infer U> ? LoadedCollection<T, OU> : never : T[K] : T[K] : never;
|
|
38
|
+
/**
|
|
39
|
+
* Marks all references/collections of `T` as loaded, i.e. for newly instantiated entities where
|
|
40
|
+
* we know there are no already-existing rows with fk's to this new entity in the database.
|
|
41
|
+
*
|
|
42
|
+
* `O` is the generic from the call site so that if the caller passes `{ author: SomeLoadedAuthor }`,
|
|
43
|
+
* we'll prefer that type, as it might have more nested load hints that we can't otherwise assume.
|
|
44
|
+
*/
|
|
45
|
+
type New<T extends Entity, O extends OptsOf<T> = OptsOf<T>> = T & { [K in keyof T]: K extends keyof O ? MaybeUseOptsType<T, O, K> : MarkLoaded<T, T[K]>; };
|
|
46
|
+
/**
|
|
47
|
+
* Marks all references/collections of `T` as deeply loaded, which is only useful for
|
|
48
|
+
* tests where we can have "the whole object graph" in-memory.
|
|
49
|
+
*/
|
|
50
|
+
type DeepNew<T extends Entity> = Loaded<T, DeepLoadHint<T>>;
|
|
51
|
+
/** Detects whether an entity is newly created, and so we can treat all the relations as loaded. */
|
|
52
|
+
declare function isNew<T extends Entity>(e: T): e is New<T>;
|
|
53
|
+
/**
|
|
54
|
+
* All the loadable fields, i.e. relations or lazy-loaded/async properties, in an entity.
|
|
55
|
+
*
|
|
56
|
+
* We use a mapped type (instead of a code-generated type) so that we can pick up custom
|
|
57
|
+
* fields that have be added to the entity classes, i.e. `Author.numberOfBooks2` async
|
|
58
|
+
* properties.
|
|
59
|
+
*/
|
|
60
|
+
type Loadable<T extends Entity> = { -readonly [K in keyof T as LoadableValue<T[K]> extends never ? never : K]: LoadableValue<T[K]>; };
|
|
61
|
+
/**
|
|
62
|
+
* Given an entity field/value, return the loadable entity.
|
|
63
|
+
*
|
|
64
|
+
* I.e. `Author.books` as a Reference or Collection, return `Book`.
|
|
65
|
+
*
|
|
66
|
+
* Note that we usually return entities, but for AsyncProperties it could be
|
|
67
|
+
* a calculated primitive value like number or string.
|
|
68
|
+
*/
|
|
69
|
+
type LoadableValue<V> = V extends EnumCollection<any, infer E> ? E : V extends Reference<any, infer U, any> ? U : V extends Collection<any, infer U> ? U : V extends ReadOnlyCollection<any, infer U> ? U : V extends AsyncMethod<any, any, infer V> ? V : V extends Property<any, infer P> ? P extends (infer U extends Entity) | undefined ? U : P : never;
|
|
70
|
+
/**
|
|
71
|
+
* A load hint of a single key, multiple keys, or nested keys and sub-hints.
|
|
72
|
+
*
|
|
73
|
+
* Load hints are different from reactive hints in that load hints include only references,
|
|
74
|
+
* collections, and async properties to preload (like `Book.author` or `Author.books`), and
|
|
75
|
+
* do not include any primitive fields (like `Author.firstName`).
|
|
76
|
+
*/
|
|
77
|
+
type LoadHint<T extends Entity> = (keyof Loadable<T> & string) | ReadonlyArray<keyof Loadable<T> & string> | NestedLoadHint<T>;
|
|
78
|
+
type NestedLoadHint<T extends Entity> = { [K in keyof Loadable<T>]?: Loadable<T>[K] extends (infer U extends Entity) ? LoadHint<U> : {}; };
|
|
79
|
+
/** Given an entity `T` that is being populated with hints `H`, marks the `H` attributes as populated. */
|
|
80
|
+
type Loaded<T extends Entity, H> = T & { [K in keyof T & keyof NormalizeHint<H>]: H extends DeepLoadHint<T> ? MarkDeepLoaded<T, T[K]> : MarkLoaded<T, T[K], NormalizeHint<H>[K]>; };
|
|
81
|
+
/** Recursively checks if the relations from a load hint are loaded on an entity. */
|
|
82
|
+
declare function isLoaded<T extends Entity, H extends LoadHint<T>>(entity: T, hint: H): entity is Loaded<T, H>;
|
|
83
|
+
/**
|
|
84
|
+
* Recursively checks if a relation-only populate hint is loaded on an entity.
|
|
85
|
+
*
|
|
86
|
+
* Unlike `isLoaded`, this returns `false` for non-loadable/primitive leaves instead of ignoring them, because
|
|
87
|
+
* `ReactiveField.load` calls `em.populate` with load hints converted from reactive hints, i.e. `{ firstName: {} }`.
|
|
88
|
+
* Treating those primitive leaves as loaded would let `EntityManager.populate` skip the batchloader path and change
|
|
89
|
+
* reactive recalculation ordering, so the populate fast-path only applies to true relation populate hints.
|
|
90
|
+
*/
|
|
91
|
+
declare function isLoadedForPopulate<T extends Entity, H extends LoadHint<T>>(entity: T, hint: H): entity is Loaded<T, H>;
|
|
92
|
+
declare function maybePopulateThen<T extends Entity, H extends LoadHint<T>, R>(entity: T, hint: H, fn: (loaded: Loaded<T, H>) => R): MaybePromise<R>;
|
|
93
|
+
/**
|
|
94
|
+
* Runtime checks that `entity` has `hint` loaded, and type guards it as a `Loaded<T, hint>`.
|
|
95
|
+
*
|
|
96
|
+
* Similar to `ensureLoaded`, although `ensureLoaded` returns its value.
|
|
97
|
+
*/
|
|
98
|
+
declare function assertLoaded<T extends Entity, const H extends LoadHint<T>>(entity: T, hint: H): asserts entity is Loaded<T, H>;
|
|
99
|
+
/**
|
|
100
|
+
* Runtime checks that `entity` has `hint` loaded, and returns it as a `Loaded<T, entity>`.
|
|
101
|
+
*
|
|
102
|
+
* Similar to `assertLoaded`, although `assertLoaded` is a boolean type guard.
|
|
103
|
+
*/
|
|
104
|
+
declare function ensureLoaded<T extends Entity, const H extends LoadHint<T>>(entity: T, hint: H): Loaded<T, H>;
|
|
105
|
+
/**
|
|
106
|
+
* Unsafe type check for `entity` to `hint`, *without* a runtime type check.
|
|
107
|
+
*
|
|
108
|
+
* You should only use this if you're extremely sure that entity has hint loaded.
|
|
109
|
+
*/
|
|
110
|
+
declare function unsafeLoaded<T extends Entity, const H extends LoadHint<T>>(entity: T, hint: H): Loaded<T, H>;
|
|
111
|
+
/** From any `Relations` field in `T`, i.e. for loader hints. */
|
|
112
|
+
type RelationsIn<T extends Entity> = SubType<T, Relation<any, any>>;
|
|
113
|
+
type SubType<T, C> = Pick<T, { [K in keyof T]: T[K] extends C ? K : never; }[keyof T]>;
|
|
114
|
+
//#endregion
|
|
115
|
+
export { DeepNew, LoadHint, Loadable, LoadableValue, Loaded, MarkLoaded, NestedLoadHint, New, RelationsIn, assertLoaded, ensureLoaded, isLoaded, isLoadedForPopulate, isNew, maybePopulateThen, unsafeLoaded };
|
|
116
|
+
//# sourceMappingURL=loadHints.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadHints.d.cts","names":[],"sources":["../../src/loading/loadHints.ts"],"mappings":";;;;;;;;;;;;;;cAuBM;KACD,aAAa,UAAU,UAAU,eAAe;GAAQ;;KAUxD;;KAGO,WAAW,UAAU,QAAQ,GAAG,WAC1C,UAAU,eAAe,qBAAqB,KAC1C,qBAAqB,GAAG,KACxB,UAAU,kBAAkB,qBAAqB,KAC/C,wBAAwB,GAAG,OAAO,GAAG,OACrC,UAAU,UAAU,qBAAqB,SAAS,KAChD,gBAAgB,GAAG,OAAO,GAAG,KAAK,KAClC,UAAU,WAAW,qBAAqB,KACxC,iBAAiB,GAAG,OAAO,GAAG,OAC9B,UAAU,mBAAmB,qBAAqB,KAChD,yBAAyB,GAAG,OAAO,GAAG,OACtC,UAAU,SAAS,qBAAqB,MAErC,mBAAmB,UAAU,uBACxC,eAAe,GAAG,OAAO,GAAG,MAAM,QAAQ,GAAG,MAC7C,0BAA0B,UAAU,YACpC,eAAe,GAAG,OAAO,GAAG,SAC5B,eAAe,GAAG,KACR,UAAU,YAAY,SAAS,SAAS,KACtC,aAAa,GAAG,GAAG;;KAIhC,eAAe,UAAU,QAAQ,KACpC,UAAU,eAAe,qBAAqB,KAC1C,qBAAqB,GAAG,KACxB,UAAU,kBAAkB,qBAAqB,KAC/C,wBAAwB,GAAG,OAAO,GAAG,aAAa,OAClD,UAAU,UAAU,qBAAqB,SAAS,KAChD,gBAAgB,GAAG,OAAO,GAAG,aAAa,KAAK,KAC/C,UAAU,WAAW,qBAAqB,KACxC,iBAAiB,GAAG,OAAO,GAAG,aAAa,OAC3C,UAAU,mBAAmB,qBAAqB,KAChD,yBAAyB,GAAG,OAAO,GAAG,aAAa,OACnD,UAAU,SAAS,qBAAqB,MAErC,mBAAmB,UAAU,uBACxC,eAAe,GAAG,OAAO,GAAG,aAAa,MAAM,QAAQ,GAAG,MAC1D,0BAA0B,UAAU,YACpC,eAAe,GAAG,OAAO,GAAG,aAAa,SACzC,eAAe,GAAG,KACR,UAAU,YAAY,SAAS,SAAS,KACtC,aAAa,GAAG,GAAG;;;;;;;;;;;;;;KAgBhC,iBAAiB,UAAU,QAAQ,GAAG,gBAAgB,UAAU,KACnE,EAAE,WAAW,sBAAsB,MAC/B,WAAW,SACT,EAAE,WAAW,kBAAkB,SAAS,KACtC,wBAAwB,GAAG,KAC3B,EAAE,WAAW,UAAU,SAAS,SAAS,KACvC,gBAAgB,GAAG,IAAI,aAE3B,WAAW,YAAY,MACrB,WAAW,SACT,EAAE,WAAW,WAAW,SAAS,KAC/B,iBAAiB,GAAG,cAEtB,EAAE,KACJ,EAAE;;;;;;;;KAUA,IAAI,UAAU,QAAQ,UAAU,OAAO,KAAK,OAAO,MAAM,OASlE,WAAW,IAAI,gBAAgB,IAAI,iBAAiB,GAAG,GAAG,KAAK,WAAW,GAAG,EAAE;;;;;KAOtE,QAAQ,UAAU,UAAU,OAAO,GAAG,aAAa;;iBAG/C,MAAM,UAAU,QAAQ,GAAG,IAAI,KAAK,IAAI;;;;;;;;KAW5C,SAAS,UAAU,uBAClB,WAAW,KAAK,cAAc,EAAE,4BAA4B,IAAI,cAAc,EAAE;;;;;;;;;KAWjF,cAAc,KACxB,UAAU,0BAA0B,KAChC,IACA,UAAU,qBAAqB,UAC7B,IACA,UAAU,sBAAsB,KAC9B,IACA,UAAU,8BAA8B,KACtC,IACA,UAAU,4BAA4B,KACpC,IACA,UAAU,oBAAoB,KAG5B,iBAAiB,UAAU,sBAAsB,IAAI;;;;;;;;KAUzD,SAAS,UAAU,iBACpB,SAAS,eAChB,oBAAoB,SAAS,eAC7B,eAAe;KAEP,eAAe,UAAU,aAElC,WAAW,SAAS,MAAM,SAAS,GAAG,kBAAiB,UAAU,UAAS,SAAS;;KAI1E,OAAO,UAAU,QAAQ,KAAK,OACvC,WAAW,UAAU,cAAc,KAAK,UAAU,aAAa,KAC5D,eAAe,GAAG,EAAE,MACpB,WAAW,GAAG,EAAE,IAAI,cAAc,GAAG;;iBAI3B,SAAS,UAAU,QAAQ,UAAU,SAAS,IAAI,QAAQ,GAAG,MAAM,IAAI,UAAU,OAAO,GAAG;;;;;;;;;iBAwC3F,oBAAoB,UAAU,QAAQ,UAAU,SAAS,IACvE,QAAQ,GACR,MAAM,IACL,UAAU,OAAO,GAAG;iBA6BP,kBAAkB,UAAU,QAAQ,UAAU,SAAS,IAAI,GACzE,QAAQ,GACR,MAAM,GACN,KAAK,QAAQ,OAAO,GAAG,OAAO,IAC7B,aAAa;;;;;;iBASA,aAAa,UAAU,cAAc,UAAU,SAAS,IACtE,QAAQ,GACR,MAAM,YACG,UAAU,OAAO,GAAG;;;;;;iBASf,aAAa,UAAU,cAAc,UAAU,SAAS,IAAI,QAAQ,GAAG,MAAM,IAAI,OAAO,GAAG;;;;;;iBAU3F,aAAa,UAAU,cAAc,UAAU,SAAS,IAAI,QAAQ,GAAG,MAAM,IAAI,OAAO,GAAG;;KAK/F,YAAY,UAAU,UAAU,QAAQ,GAAG;KAGlD,QAAQ,GAAG,KAAK,KAAK,MAAM,WAAW,IAAI,EAAE,WAAW,IAAI,mBAAkB"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { OptsOf } from "../typeMap.mjs";
|
|
2
|
+
import { NormalizeHint } from "../normalizeHints.mjs";
|
|
3
|
+
import { Collection, LoadedCollection } from "../relations/Collection.mjs";
|
|
4
|
+
import { EnumCollection, LoadedEnumCollection } from "../relations/EnumCollection.mjs";
|
|
5
|
+
import { AsyncMethod, LoadedMethod } from "../relations/hasAsyncMethod.mjs";
|
|
6
|
+
import { LoadedProperty, Property } from "../relations/hasProperty.mjs";
|
|
7
|
+
import { LoadedReference, Reference } from "../relations/Reference.mjs";
|
|
8
|
+
import { Relation } from "../relations/Relation.mjs";
|
|
9
|
+
import { LoadedOneToOneReference, OneToOneReference } from "../relations/OneToOneReference.mjs";
|
|
10
|
+
import { LoadedReadOnlyCollection, ReadOnlyCollection } from "../relations/ReadOnlyCollection.mjs";
|
|
11
|
+
import "../relations/index.mjs";
|
|
12
|
+
import { MaybePromise, NullOrDefinedOr } from "../utils.mjs";
|
|
13
|
+
import { Entity } from "../Entity.mjs";
|
|
14
|
+
//#region src/loading/loadHints.d.ts
|
|
15
|
+
declare const deepLoad: unique symbol;
|
|
16
|
+
type DeepLoadHint<T extends Entity> = NestedLoadHint<T> & {
|
|
17
|
+
[deepLoad]: true;
|
|
18
|
+
};
|
|
19
|
+
type MaybeBaseType = any;
|
|
20
|
+
/** Marks a given `T[K]` field as the loaded/synchronous version of the collection. */
|
|
21
|
+
type MarkLoaded<T extends Entity, P, UH = {}> = P extends EnumCollection<MaybeBaseType, infer E> ? LoadedEnumCollection<T, E> : P extends OneToOneReference<MaybeBaseType, infer U> ? LoadedOneToOneReference<T, Loaded<U, UH>> : P extends Reference<MaybeBaseType, infer U, infer N> ? LoadedReference<T, Loaded<U, UH>, N> : P extends Collection<MaybeBaseType, infer U> ? LoadedCollection<T, Loaded<U, UH>> : P extends ReadOnlyCollection<MaybeBaseType, infer U> ? LoadedReadOnlyCollection<T, Loaded<U, UH>> : P extends Property<MaybeBaseType, infer V> ? [V] extends [(infer U extends Entity) | undefined] ? LoadedProperty<T, Loaded<U, UH> | Exclude<V, U>> : V extends readonly (infer U extends Entity)[] ? LoadedProperty<T, Loaded<U, UH>[]> : LoadedProperty<T, V> : P extends AsyncMethod<T, infer A, infer V> ? LoadedMethod<T, A, V> : unknown;
|
|
22
|
+
/** A version of MarkLoaded the uses `DeepLoadHint` for tests. */
|
|
23
|
+
type MarkDeepLoaded<T extends Entity, P> = P extends EnumCollection<MaybeBaseType, infer E> ? LoadedEnumCollection<T, E> : P extends OneToOneReference<MaybeBaseType, infer U> ? LoadedOneToOneReference<T, Loaded<U, DeepLoadHint<U>>> : P extends Reference<MaybeBaseType, infer U, infer N> ? LoadedReference<T, Loaded<U, DeepLoadHint<U>>, N> : P extends Collection<MaybeBaseType, infer U> ? LoadedCollection<T, Loaded<U, DeepLoadHint<U>>> : P extends ReadOnlyCollection<MaybeBaseType, infer U> ? LoadedReadOnlyCollection<T, Loaded<U, DeepLoadHint<U>>> : P extends Property<MaybeBaseType, infer V> ? [V] extends [(infer U extends Entity) | undefined] ? LoadedProperty<T, Loaded<U, DeepLoadHint<U>> | Exclude<V, U>> : V extends readonly (infer U extends Entity)[] ? LoadedProperty<T, Loaded<U, DeepLoadHint<U>>[]> : LoadedProperty<T, V> : P extends AsyncMethod<T, infer A, infer V> ? LoadedMethod<T, A, V> : unknown;
|
|
24
|
+
/**
|
|
25
|
+
* A helper type for `New` that marks every `Reference` and `LoadedCollection` in `T` as loaded.
|
|
26
|
+
*
|
|
27
|
+
* We also look in opts `O` for the "`U`" type, i.e. the next level up/down in the graph,
|
|
28
|
+
* because the call site's opts may be using an also-marked loaded parent/child as an opt,
|
|
29
|
+
* so this will infer the type of that parent/child and use that for the `U` type.
|
|
30
|
+
*
|
|
31
|
+
* This means things like `entity.parent.get.grandParent.get` will work on the resulting
|
|
32
|
+
* type.
|
|
33
|
+
*
|
|
34
|
+
* Note that this is also purposefully broken out of `New` because of some weirdness
|
|
35
|
+
* around type narrowing that wasn't working when inlined into `New`.
|
|
36
|
+
*/
|
|
37
|
+
type MaybeUseOptsType<T extends Entity, O, K extends keyof T & keyof O> = O[K] extends NullOrDefinedOr<infer OK> ? OK extends Entity ? T[K] extends OneToOneReference<T, infer U> ? LoadedOneToOneReference<T, U> : T[K] extends Reference<T, infer U, infer N> ? LoadedReference<T, OK, N> : never : OK extends Array<infer OU> ? OU extends Entity ? T[K] extends Collection<T, infer U> ? LoadedCollection<T, OU> : never : T[K] : T[K] : never;
|
|
38
|
+
/**
|
|
39
|
+
* Marks all references/collections of `T` as loaded, i.e. for newly instantiated entities where
|
|
40
|
+
* we know there are no already-existing rows with fk's to this new entity in the database.
|
|
41
|
+
*
|
|
42
|
+
* `O` is the generic from the call site so that if the caller passes `{ author: SomeLoadedAuthor }`,
|
|
43
|
+
* we'll prefer that type, as it might have more nested load hints that we can't otherwise assume.
|
|
44
|
+
*/
|
|
45
|
+
type New<T extends Entity, O extends OptsOf<T> = OptsOf<T>> = T & { [K in keyof T]: K extends keyof O ? MaybeUseOptsType<T, O, K> : MarkLoaded<T, T[K]>; };
|
|
46
|
+
/**
|
|
47
|
+
* Marks all references/collections of `T` as deeply loaded, which is only useful for
|
|
48
|
+
* tests where we can have "the whole object graph" in-memory.
|
|
49
|
+
*/
|
|
50
|
+
type DeepNew<T extends Entity> = Loaded<T, DeepLoadHint<T>>;
|
|
51
|
+
/** Detects whether an entity is newly created, and so we can treat all the relations as loaded. */
|
|
52
|
+
declare function isNew<T extends Entity>(e: T): e is New<T>;
|
|
53
|
+
/**
|
|
54
|
+
* All the loadable fields, i.e. relations or lazy-loaded/async properties, in an entity.
|
|
55
|
+
*
|
|
56
|
+
* We use a mapped type (instead of a code-generated type) so that we can pick up custom
|
|
57
|
+
* fields that have be added to the entity classes, i.e. `Author.numberOfBooks2` async
|
|
58
|
+
* properties.
|
|
59
|
+
*/
|
|
60
|
+
type Loadable<T extends Entity> = { -readonly [K in keyof T as LoadableValue<T[K]> extends never ? never : K]: LoadableValue<T[K]>; };
|
|
61
|
+
/**
|
|
62
|
+
* Given an entity field/value, return the loadable entity.
|
|
63
|
+
*
|
|
64
|
+
* I.e. `Author.books` as a Reference or Collection, return `Book`.
|
|
65
|
+
*
|
|
66
|
+
* Note that we usually return entities, but for AsyncProperties it could be
|
|
67
|
+
* a calculated primitive value like number or string.
|
|
68
|
+
*/
|
|
69
|
+
type LoadableValue<V> = V extends EnumCollection<any, infer E> ? E : V extends Reference<any, infer U, any> ? U : V extends Collection<any, infer U> ? U : V extends ReadOnlyCollection<any, infer U> ? U : V extends AsyncMethod<any, any, infer V> ? V : V extends Property<any, infer P> ? P extends (infer U extends Entity) | undefined ? U : P : never;
|
|
70
|
+
/**
|
|
71
|
+
* A load hint of a single key, multiple keys, or nested keys and sub-hints.
|
|
72
|
+
*
|
|
73
|
+
* Load hints are different from reactive hints in that load hints include only references,
|
|
74
|
+
* collections, and async properties to preload (like `Book.author` or `Author.books`), and
|
|
75
|
+
* do not include any primitive fields (like `Author.firstName`).
|
|
76
|
+
*/
|
|
77
|
+
type LoadHint<T extends Entity> = (keyof Loadable<T> & string) | ReadonlyArray<keyof Loadable<T> & string> | NestedLoadHint<T>;
|
|
78
|
+
type NestedLoadHint<T extends Entity> = { [K in keyof Loadable<T>]?: Loadable<T>[K] extends (infer U extends Entity) ? LoadHint<U> : {}; };
|
|
79
|
+
/** Given an entity `T` that is being populated with hints `H`, marks the `H` attributes as populated. */
|
|
80
|
+
type Loaded<T extends Entity, H> = T & { [K in keyof T & keyof NormalizeHint<H>]: H extends DeepLoadHint<T> ? MarkDeepLoaded<T, T[K]> : MarkLoaded<T, T[K], NormalizeHint<H>[K]>; };
|
|
81
|
+
/** Recursively checks if the relations from a load hint are loaded on an entity. */
|
|
82
|
+
declare function isLoaded<T extends Entity, H extends LoadHint<T>>(entity: T, hint: H): entity is Loaded<T, H>;
|
|
83
|
+
/**
|
|
84
|
+
* Recursively checks if a relation-only populate hint is loaded on an entity.
|
|
85
|
+
*
|
|
86
|
+
* Unlike `isLoaded`, this returns `false` for non-loadable/primitive leaves instead of ignoring them, because
|
|
87
|
+
* `ReactiveField.load` calls `em.populate` with load hints converted from reactive hints, i.e. `{ firstName: {} }`.
|
|
88
|
+
* Treating those primitive leaves as loaded would let `EntityManager.populate` skip the batchloader path and change
|
|
89
|
+
* reactive recalculation ordering, so the populate fast-path only applies to true relation populate hints.
|
|
90
|
+
*/
|
|
91
|
+
declare function isLoadedForPopulate<T extends Entity, H extends LoadHint<T>>(entity: T, hint: H): entity is Loaded<T, H>;
|
|
92
|
+
declare function maybePopulateThen<T extends Entity, H extends LoadHint<T>, R>(entity: T, hint: H, fn: (loaded: Loaded<T, H>) => R): MaybePromise<R>;
|
|
93
|
+
/**
|
|
94
|
+
* Runtime checks that `entity` has `hint` loaded, and type guards it as a `Loaded<T, hint>`.
|
|
95
|
+
*
|
|
96
|
+
* Similar to `ensureLoaded`, although `ensureLoaded` returns its value.
|
|
97
|
+
*/
|
|
98
|
+
declare function assertLoaded<T extends Entity, const H extends LoadHint<T>>(entity: T, hint: H): asserts entity is Loaded<T, H>;
|
|
99
|
+
/**
|
|
100
|
+
* Runtime checks that `entity` has `hint` loaded, and returns it as a `Loaded<T, entity>`.
|
|
101
|
+
*
|
|
102
|
+
* Similar to `assertLoaded`, although `assertLoaded` is a boolean type guard.
|
|
103
|
+
*/
|
|
104
|
+
declare function ensureLoaded<T extends Entity, const H extends LoadHint<T>>(entity: T, hint: H): Loaded<T, H>;
|
|
105
|
+
/**
|
|
106
|
+
* Unsafe type check for `entity` to `hint`, *without* a runtime type check.
|
|
107
|
+
*
|
|
108
|
+
* You should only use this if you're extremely sure that entity has hint loaded.
|
|
109
|
+
*/
|
|
110
|
+
declare function unsafeLoaded<T extends Entity, const H extends LoadHint<T>>(entity: T, hint: H): Loaded<T, H>;
|
|
111
|
+
/** From any `Relations` field in `T`, i.e. for loader hints. */
|
|
112
|
+
type RelationsIn<T extends Entity> = SubType<T, Relation<any, any>>;
|
|
113
|
+
type SubType<T, C> = Pick<T, { [K in keyof T]: T[K] extends C ? K : never; }[keyof T]>;
|
|
114
|
+
//#endregion
|
|
115
|
+
export { DeepNew, LoadHint, Loadable, LoadableValue, Loaded, MarkLoaded, NestedLoadHint, New, RelationsIn, assertLoaded, ensureLoaded, isLoaded, isLoadedForPopulate, isNew, maybePopulateThen, unsafeLoaded };
|
|
116
|
+
//# sourceMappingURL=loadHints.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadHints.d.mts","names":[],"sources":["../../src/loading/loadHints.ts"],"mappings":";;;;;;;;;;;;;;cAuBM;KACD,aAAa,UAAU,UAAU,eAAe;GAAQ;;KAUxD;;KAGO,WAAW,UAAU,QAAQ,GAAG,WAC1C,UAAU,eAAe,qBAAqB,KAC1C,qBAAqB,GAAG,KACxB,UAAU,kBAAkB,qBAAqB,KAC/C,wBAAwB,GAAG,OAAO,GAAG,OACrC,UAAU,UAAU,qBAAqB,SAAS,KAChD,gBAAgB,GAAG,OAAO,GAAG,KAAK,KAClC,UAAU,WAAW,qBAAqB,KACxC,iBAAiB,GAAG,OAAO,GAAG,OAC9B,UAAU,mBAAmB,qBAAqB,KAChD,yBAAyB,GAAG,OAAO,GAAG,OACtC,UAAU,SAAS,qBAAqB,MAErC,mBAAmB,UAAU,uBACxC,eAAe,GAAG,OAAO,GAAG,MAAM,QAAQ,GAAG,MAC7C,0BAA0B,UAAU,YACpC,eAAe,GAAG,OAAO,GAAG,SAC5B,eAAe,GAAG,KACR,UAAU,YAAY,SAAS,SAAS,KACtC,aAAa,GAAG,GAAG;;KAIhC,eAAe,UAAU,QAAQ,KACpC,UAAU,eAAe,qBAAqB,KAC1C,qBAAqB,GAAG,KACxB,UAAU,kBAAkB,qBAAqB,KAC/C,wBAAwB,GAAG,OAAO,GAAG,aAAa,OAClD,UAAU,UAAU,qBAAqB,SAAS,KAChD,gBAAgB,GAAG,OAAO,GAAG,aAAa,KAAK,KAC/C,UAAU,WAAW,qBAAqB,KACxC,iBAAiB,GAAG,OAAO,GAAG,aAAa,OAC3C,UAAU,mBAAmB,qBAAqB,KAChD,yBAAyB,GAAG,OAAO,GAAG,aAAa,OACnD,UAAU,SAAS,qBAAqB,MAErC,mBAAmB,UAAU,uBACxC,eAAe,GAAG,OAAO,GAAG,aAAa,MAAM,QAAQ,GAAG,MAC1D,0BAA0B,UAAU,YACpC,eAAe,GAAG,OAAO,GAAG,aAAa,SACzC,eAAe,GAAG,KACR,UAAU,YAAY,SAAS,SAAS,KACtC,aAAa,GAAG,GAAG;;;;;;;;;;;;;;KAgBhC,iBAAiB,UAAU,QAAQ,GAAG,gBAAgB,UAAU,KACnE,EAAE,WAAW,sBAAsB,MAC/B,WAAW,SACT,EAAE,WAAW,kBAAkB,SAAS,KACtC,wBAAwB,GAAG,KAC3B,EAAE,WAAW,UAAU,SAAS,SAAS,KACvC,gBAAgB,GAAG,IAAI,aAE3B,WAAW,YAAY,MACrB,WAAW,SACT,EAAE,WAAW,WAAW,SAAS,KAC/B,iBAAiB,GAAG,cAEtB,EAAE,KACJ,EAAE;;;;;;;;KAUA,IAAI,UAAU,QAAQ,UAAU,OAAO,KAAK,OAAO,MAAM,OASlE,WAAW,IAAI,gBAAgB,IAAI,iBAAiB,GAAG,GAAG,KAAK,WAAW,GAAG,EAAE;;;;;KAOtE,QAAQ,UAAU,UAAU,OAAO,GAAG,aAAa;;iBAG/C,MAAM,UAAU,QAAQ,GAAG,IAAI,KAAK,IAAI;;;;;;;;KAW5C,SAAS,UAAU,uBAClB,WAAW,KAAK,cAAc,EAAE,4BAA4B,IAAI,cAAc,EAAE;;;;;;;;;KAWjF,cAAc,KACxB,UAAU,0BAA0B,KAChC,IACA,UAAU,qBAAqB,UAC7B,IACA,UAAU,sBAAsB,KAC9B,IACA,UAAU,8BAA8B,KACtC,IACA,UAAU,4BAA4B,KACpC,IACA,UAAU,oBAAoB,KAG5B,iBAAiB,UAAU,sBAAsB,IAAI;;;;;;;;KAUzD,SAAS,UAAU,iBACpB,SAAS,eAChB,oBAAoB,SAAS,eAC7B,eAAe;KAEP,eAAe,UAAU,aAElC,WAAW,SAAS,MAAM,SAAS,GAAG,kBAAiB,UAAU,UAAS,SAAS;;KAI1E,OAAO,UAAU,QAAQ,KAAK,OACvC,WAAW,UAAU,cAAc,KAAK,UAAU,aAAa,KAC5D,eAAe,GAAG,EAAE,MACpB,WAAW,GAAG,EAAE,IAAI,cAAc,GAAG;;iBAI3B,SAAS,UAAU,QAAQ,UAAU,SAAS,IAAI,QAAQ,GAAG,MAAM,IAAI,UAAU,OAAO,GAAG;;;;;;;;;iBAwC3F,oBAAoB,UAAU,QAAQ,UAAU,SAAS,IACvE,QAAQ,GACR,MAAM,IACL,UAAU,OAAO,GAAG;iBA6BP,kBAAkB,UAAU,QAAQ,UAAU,SAAS,IAAI,GACzE,QAAQ,GACR,MAAM,GACN,KAAK,QAAQ,OAAO,GAAG,OAAO,IAC7B,aAAa;;;;;;iBASA,aAAa,UAAU,cAAc,UAAU,SAAS,IACtE,QAAQ,GACR,MAAM,YACG,UAAU,OAAO,GAAG;;;;;;iBASf,aAAa,UAAU,cAAc,UAAU,SAAS,IAAI,QAAQ,GAAG,MAAM,IAAI,OAAO,GAAG;;;;;;iBAU3F,aAAa,UAAU,cAAc,UAAU,SAAS,IAAI,QAAQ,GAAG,MAAM,IAAI,OAAO,GAAG;;KAK/F,YAAY,UAAU,UAAU,QAAQ,GAAG;KAGlD,QAAQ,GAAG,KAAK,KAAK,MAAM,WAAW,IAAI,EAAE,WAAW,IAAI,mBAAkB"}
|