joist-core 2.3.0 → 2.4.0-next.10

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.
Files changed (1548) hide show
  1. package/build/BaseEntity.cjs +112 -0
  2. package/build/BaseEntity.cjs.map +1 -0
  3. package/build/BaseEntity.d.cts +73 -0
  4. package/build/BaseEntity.d.cts.map +1 -0
  5. package/build/BaseEntity.d.mts +73 -0
  6. package/build/BaseEntity.d.mts.map +1 -0
  7. package/build/BaseEntity.js +99 -110
  8. package/build/BaseEntity.js.map +1 -1
  9. package/build/Entity.cjs +12 -0
  10. package/build/Entity.cjs.map +1 -0
  11. package/build/Entity.d.cts +42 -0
  12. package/build/Entity.d.cts.map +1 -0
  13. package/build/Entity.d.mts +42 -0
  14. package/build/Entity.d.mts.map +1 -0
  15. package/build/Entity.js +8 -5
  16. package/build/Entity.js.map +1 -1
  17. package/build/EntityFields.cjs +1 -0
  18. package/build/EntityFields.d.cts +36 -0
  19. package/build/EntityFields.d.cts.map +1 -0
  20. package/build/EntityFields.d.mts +36 -0
  21. package/build/EntityFields.d.mts.map +1 -0
  22. package/build/EntityFields.js +1 -3
  23. package/build/EntityManager.cjs +1935 -0
  24. package/build/EntityManager.cjs.map +1 -0
  25. package/build/EntityManager.d.cts +835 -0
  26. package/build/EntityManager.d.cts.map +1 -0
  27. package/build/EntityManager.d.mts +835 -0
  28. package/build/EntityManager.d.mts.map +1 -0
  29. package/build/EntityManager.js +1812 -2211
  30. package/build/EntityManager.js.map +1 -1
  31. package/build/EntityMetadata.cjs +75 -0
  32. package/build/EntityMetadata.cjs.map +1 -0
  33. package/build/EntityMetadata.d.cts +262 -0
  34. package/build/EntityMetadata.d.cts.map +1 -0
  35. package/build/EntityMetadata.d.mts +262 -0
  36. package/build/EntityMetadata.d.mts.map +1 -0
  37. package/build/EntityMetadata.js +31 -48
  38. package/build/EntityMetadata.js.map +1 -1
  39. package/build/EnumMetadata.cjs +1 -0
  40. package/build/EnumMetadata.d.cts +18 -0
  41. package/build/EnumMetadata.d.cts.map +1 -0
  42. package/build/EnumMetadata.d.mts +18 -0
  43. package/build/EnumMetadata.d.mts.map +1 -0
  44. package/build/EnumMetadata.js +1 -3
  45. package/build/IndexManager.cjs +178 -0
  46. package/build/IndexManager.cjs.map +1 -0
  47. package/build/IndexManager.d.cts +36 -0
  48. package/build/IndexManager.d.cts.map +1 -0
  49. package/build/IndexManager.d.mts +36 -0
  50. package/build/IndexManager.d.mts.map +1 -0
  51. package/build/IndexManager.js +169 -218
  52. package/build/IndexManager.js.map +1 -1
  53. package/build/InstanceData.cjs +218 -0
  54. package/build/InstanceData.cjs.map +1 -0
  55. package/build/InstanceData.d.cts +98 -0
  56. package/build/InstanceData.d.cts.map +1 -0
  57. package/build/InstanceData.d.mts +98 -0
  58. package/build/InstanceData.d.mts.map +1 -0
  59. package/build/InstanceData.js +215 -222
  60. package/build/InstanceData.js.map +1 -1
  61. package/build/PluginManager.cjs +89 -0
  62. package/build/PluginManager.cjs.map +1 -0
  63. package/build/PluginManager.d.cts +112 -0
  64. package/build/PluginManager.d.cts.map +1 -0
  65. package/build/PluginManager.d.mts +112 -0
  66. package/build/PluginManager.d.mts.map +1 -0
  67. package/build/PluginManager.js +80 -106
  68. package/build/PluginManager.js.map +1 -1
  69. package/build/RowData.cjs +37 -0
  70. package/build/RowData.cjs.map +1 -0
  71. package/build/RowData.d.cts +53 -0
  72. package/build/RowData.d.cts.map +1 -0
  73. package/build/RowData.d.mts +53 -0
  74. package/build/RowData.d.mts.map +1 -0
  75. package/build/RowData.js +35 -0
  76. package/build/RowData.js.map +1 -0
  77. package/build/_virtual/_rolldown/runtime.cjs +23 -0
  78. package/build/batchloaders/BatchLoader.cjs +49 -0
  79. package/build/batchloaders/BatchLoader.cjs.map +1 -0
  80. package/build/batchloaders/BatchLoader.d.cts +17 -0
  81. package/build/batchloaders/BatchLoader.d.cts.map +1 -0
  82. package/build/batchloaders/BatchLoader.d.mts +17 -0
  83. package/build/batchloaders/BatchLoader.d.mts.map +1 -0
  84. package/build/batchloaders/BatchLoader.js +45 -54
  85. package/build/batchloaders/BatchLoader.js.map +1 -1
  86. package/build/batchloaders/enumCollectionBatchLoader.cjs +66 -0
  87. package/build/batchloaders/enumCollectionBatchLoader.cjs.map +1 -0
  88. package/build/batchloaders/enumCollectionBatchLoader.d.cts +11 -0
  89. package/build/batchloaders/enumCollectionBatchLoader.d.cts.map +1 -0
  90. package/build/batchloaders/enumCollectionBatchLoader.d.mts +11 -0
  91. package/build/batchloaders/enumCollectionBatchLoader.d.mts.map +1 -0
  92. package/build/batchloaders/enumCollectionBatchLoader.js +58 -48
  93. package/build/batchloaders/enumCollectionBatchLoader.js.map +1 -1
  94. package/build/batchloaders/loadBatchLoader.cjs +78 -0
  95. package/build/batchloaders/loadBatchLoader.cjs.map +1 -0
  96. package/build/batchloaders/loadBatchLoader.d.cts +20 -0
  97. package/build/batchloaders/loadBatchLoader.d.cts.map +1 -0
  98. package/build/batchloaders/loadBatchLoader.d.mts +20 -0
  99. package/build/batchloaders/loadBatchLoader.d.mts.map +1 -0
  100. package/build/batchloaders/loadBatchLoader.js +72 -51
  101. package/build/batchloaders/loadBatchLoader.js.map +1 -1
  102. package/build/batchloaders/manyToManyBatchLoader.cjs +78 -0
  103. package/build/batchloaders/manyToManyBatchLoader.cjs.map +1 -0
  104. package/build/batchloaders/manyToManyBatchLoader.d.cts +11 -0
  105. package/build/batchloaders/manyToManyBatchLoader.d.cts.map +1 -0
  106. package/build/batchloaders/manyToManyBatchLoader.d.mts +11 -0
  107. package/build/batchloaders/manyToManyBatchLoader.d.mts.map +1 -0
  108. package/build/batchloaders/manyToManyBatchLoader.js +70 -61
  109. package/build/batchloaders/manyToManyBatchLoader.js.map +1 -1
  110. package/build/batchloaders/oneToManyBatchLoader.cjs +63 -0
  111. package/build/batchloaders/oneToManyBatchLoader.cjs.map +1 -0
  112. package/build/batchloaders/oneToManyBatchLoader.d.cts +11 -0
  113. package/build/batchloaders/oneToManyBatchLoader.d.cts.map +1 -0
  114. package/build/batchloaders/oneToManyBatchLoader.d.mts +11 -0
  115. package/build/batchloaders/oneToManyBatchLoader.d.mts.map +1 -0
  116. package/build/batchloaders/oneToManyBatchLoader.js +58 -48
  117. package/build/batchloaders/oneToManyBatchLoader.js.map +1 -1
  118. package/build/batchloaders/oneToOneBatchLoader.cjs +64 -0
  119. package/build/batchloaders/oneToOneBatchLoader.cjs.map +1 -0
  120. package/build/batchloaders/oneToOneBatchLoader.d.cts +10 -0
  121. package/build/batchloaders/oneToOneBatchLoader.d.cts.map +1 -0
  122. package/build/batchloaders/oneToOneBatchLoader.d.mts +10 -0
  123. package/build/batchloaders/oneToOneBatchLoader.d.mts.map +1 -0
  124. package/build/batchloaders/oneToOneBatchLoader.js +59 -50
  125. package/build/batchloaders/oneToOneBatchLoader.js.map +1 -1
  126. package/build/batchloaders/populateBatchLoader.cjs +155 -0
  127. package/build/batchloaders/populateBatchLoader.cjs.map +1 -0
  128. package/build/batchloaders/populateBatchLoader.d.cts +17 -0
  129. package/build/batchloaders/populateBatchLoader.d.cts.map +1 -0
  130. package/build/batchloaders/populateBatchLoader.d.mts +17 -0
  131. package/build/batchloaders/populateBatchLoader.d.mts.map +1 -0
  132. package/build/batchloaders/populateBatchLoader.js +147 -203
  133. package/build/batchloaders/populateBatchLoader.js.map +1 -1
  134. package/build/batchloaders/recursiveChildrenBatchLoader.cjs +78 -0
  135. package/build/batchloaders/recursiveChildrenBatchLoader.cjs.map +1 -0
  136. package/build/batchloaders/recursiveChildrenBatchLoader.d.cts +10 -0
  137. package/build/batchloaders/recursiveChildrenBatchLoader.d.cts.map +1 -0
  138. package/build/batchloaders/recursiveChildrenBatchLoader.d.mts +10 -0
  139. package/build/batchloaders/recursiveChildrenBatchLoader.d.mts.map +1 -0
  140. package/build/batchloaders/recursiveChildrenBatchLoader.js +71 -72
  141. package/build/batchloaders/recursiveChildrenBatchLoader.js.map +1 -1
  142. package/build/batchloaders/recursiveM2mBatchLoader.cjs +83 -0
  143. package/build/batchloaders/recursiveM2mBatchLoader.cjs.map +1 -0
  144. package/build/batchloaders/recursiveM2mBatchLoader.d.cts +10 -0
  145. package/build/batchloaders/recursiveM2mBatchLoader.d.cts.map +1 -0
  146. package/build/batchloaders/recursiveM2mBatchLoader.d.mts +10 -0
  147. package/build/batchloaders/recursiveM2mBatchLoader.d.mts.map +1 -0
  148. package/build/batchloaders/recursiveM2mBatchLoader.js +76 -79
  149. package/build/batchloaders/recursiveM2mBatchLoader.js.map +1 -1
  150. package/build/batchloaders/recursiveParentsBatchLoader.cjs +65 -0
  151. package/build/batchloaders/recursiveParentsBatchLoader.cjs.map +1 -0
  152. package/build/batchloaders/recursiveParentsBatchLoader.d.cts +10 -0
  153. package/build/batchloaders/recursiveParentsBatchLoader.d.cts.map +1 -0
  154. package/build/batchloaders/recursiveParentsBatchLoader.d.mts +10 -0
  155. package/build/batchloaders/recursiveParentsBatchLoader.d.mts.map +1 -0
  156. package/build/batchloaders/recursiveParentsBatchLoader.js +58 -55
  157. package/build/batchloaders/recursiveParentsBatchLoader.js.map +1 -1
  158. package/build/changes.cjs +221 -0
  159. package/build/changes.cjs.map +1 -0
  160. package/build/changes.d.cts +95 -0
  161. package/build/changes.d.cts.map +1 -0
  162. package/build/changes.d.mts +95 -0
  163. package/build/changes.d.mts.map +1 -0
  164. package/build/changes.js +208 -285
  165. package/build/changes.js.map +1 -1
  166. package/build/config.cjs +295 -0
  167. package/build/config.cjs.map +1 -0
  168. package/build/config.d.cts +277 -0
  169. package/build/config.d.cts.map +1 -0
  170. package/build/config.d.mts +277 -0
  171. package/build/config.d.mts.map +1 -0
  172. package/build/config.js +255 -301
  173. package/build/config.js.map +1 -1
  174. package/build/configure.cjs +324 -0
  175. package/build/configure.cjs.map +1 -0
  176. package/build/configure.d.cts +19 -0
  177. package/build/configure.d.cts.map +1 -0
  178. package/build/configure.d.mts +19 -0
  179. package/build/configure.d.mts.map +1 -0
  180. package/build/configure.js +265 -348
  181. package/build/configure.js.map +1 -1
  182. package/build/dataloaders/fastWhereFilterHash.cjs +140 -0
  183. package/build/dataloaders/fastWhereFilterHash.cjs.map +1 -0
  184. package/build/dataloaders/fastWhereFilterHash.d.cts +18 -0
  185. package/build/dataloaders/fastWhereFilterHash.d.cts.map +1 -0
  186. package/build/dataloaders/fastWhereFilterHash.d.mts +18 -0
  187. package/build/dataloaders/fastWhereFilterHash.d.mts.map +1 -0
  188. package/build/dataloaders/fastWhereFilterHash.js +108 -133
  189. package/build/dataloaders/fastWhereFilterHash.js.map +1 -1
  190. package/build/dataloaders/findByUniqueDataLoader.cjs +58 -0
  191. package/build/dataloaders/findByUniqueDataLoader.cjs.map +1 -0
  192. package/build/dataloaders/findByUniqueDataLoader.d.cts +10 -0
  193. package/build/dataloaders/findByUniqueDataLoader.d.cts.map +1 -0
  194. package/build/dataloaders/findByUniqueDataLoader.d.mts +10 -0
  195. package/build/dataloaders/findByUniqueDataLoader.d.mts.map +1 -0
  196. package/build/dataloaders/findByUniqueDataLoader.js +53 -44
  197. package/build/dataloaders/findByUniqueDataLoader.js.map +1 -1
  198. package/build/dataloaders/findCountDataLoader.cjs +123 -0
  199. package/build/dataloaders/findCountDataLoader.cjs.map +1 -0
  200. package/build/dataloaders/findCountDataLoader.d.cts +19 -0
  201. package/build/dataloaders/findCountDataLoader.d.cts.map +1 -0
  202. package/build/dataloaders/findCountDataLoader.d.mts +19 -0
  203. package/build/dataloaders/findCountDataLoader.d.mts.map +1 -0
  204. package/build/dataloaders/findCountDataLoader.js +112 -109
  205. package/build/dataloaders/findCountDataLoader.js.map +1 -1
  206. package/build/dataloaders/findDataLoader.cjs +365 -0
  207. package/build/dataloaders/findDataLoader.cjs.map +1 -0
  208. package/build/dataloaders/findDataLoader.d.cts +79 -0
  209. package/build/dataloaders/findDataLoader.d.cts.map +1 -0
  210. package/build/dataloaders/findDataLoader.d.mts +79 -0
  211. package/build/dataloaders/findDataLoader.d.mts.map +1 -0
  212. package/build/dataloaders/findDataLoader.js +298 -382
  213. package/build/dataloaders/findDataLoader.js.map +1 -1
  214. package/build/dataloaders/findIdsDataLoader.cjs +82 -0
  215. package/build/dataloaders/findIdsDataLoader.cjs.map +1 -0
  216. package/build/dataloaders/findIdsDataLoader.d.cts +9 -0
  217. package/build/dataloaders/findIdsDataLoader.d.cts.map +1 -0
  218. package/build/dataloaders/findIdsDataLoader.d.mts +9 -0
  219. package/build/dataloaders/findIdsDataLoader.d.mts.map +1 -0
  220. package/build/dataloaders/findIdsDataLoader.js +77 -74
  221. package/build/dataloaders/findIdsDataLoader.js.map +1 -1
  222. package/build/dataloaders/findOrCreateDataLoader.cjs +120 -0
  223. package/build/dataloaders/findOrCreateDataLoader.cjs.map +1 -0
  224. package/build/dataloaders/findOrCreateDataLoader.d.cts +15 -0
  225. package/build/dataloaders/findOrCreateDataLoader.d.cts.map +1 -0
  226. package/build/dataloaders/findOrCreateDataLoader.d.mts +15 -0
  227. package/build/dataloaders/findOrCreateDataLoader.d.mts.map +1 -0
  228. package/build/dataloaders/findOrCreateDataLoader.js +102 -164
  229. package/build/dataloaders/findOrCreateDataLoader.js.map +1 -1
  230. package/build/dataloaders/findPaginatedDataLoader.cjs +98 -0
  231. package/build/dataloaders/findPaginatedDataLoader.cjs.map +1 -0
  232. package/build/dataloaders/findPaginatedDataLoader.d.cts +10 -0
  233. package/build/dataloaders/findPaginatedDataLoader.d.cts.map +1 -0
  234. package/build/dataloaders/findPaginatedDataLoader.d.mts +10 -0
  235. package/build/dataloaders/findPaginatedDataLoader.d.mts.map +1 -0
  236. package/build/dataloaders/findPaginatedDataLoader.js +93 -80
  237. package/build/dataloaders/findPaginatedDataLoader.js.map +1 -1
  238. package/build/dataloaders/lensDataLoader.cjs +178 -0
  239. package/build/dataloaders/lensDataLoader.cjs.map +1 -0
  240. package/build/dataloaders/lensDataLoader.d.cts +15 -0
  241. package/build/dataloaders/lensDataLoader.d.cts.map +1 -0
  242. package/build/dataloaders/lensDataLoader.d.mts +15 -0
  243. package/build/dataloaders/lensDataLoader.d.mts.map +1 -0
  244. package/build/dataloaders/lensDataLoader.js +172 -176
  245. package/build/dataloaders/lensDataLoader.js.map +1 -1
  246. package/build/dataloaders/manyToManyFindDataLoader.cjs +84 -0
  247. package/build/dataloaders/manyToManyFindDataLoader.cjs.map +1 -0
  248. package/build/dataloaders/manyToManyFindDataLoader.d.cts +12 -0
  249. package/build/dataloaders/manyToManyFindDataLoader.d.cts.map +1 -0
  250. package/build/dataloaders/manyToManyFindDataLoader.d.mts +12 -0
  251. package/build/dataloaders/manyToManyFindDataLoader.d.mts.map +1 -0
  252. package/build/dataloaders/manyToManyFindDataLoader.js +76 -70
  253. package/build/dataloaders/manyToManyFindDataLoader.js.map +1 -1
  254. package/build/dataloaders/oneToManyFindDataLoader.cjs +77 -0
  255. package/build/dataloaders/oneToManyFindDataLoader.cjs.map +1 -0
  256. package/build/dataloaders/oneToManyFindDataLoader.d.cts +12 -0
  257. package/build/dataloaders/oneToManyFindDataLoader.d.cts.map +1 -0
  258. package/build/dataloaders/oneToManyFindDataLoader.d.mts +12 -0
  259. package/build/dataloaders/oneToManyFindDataLoader.d.mts.map +1 -0
  260. package/build/dataloaders/oneToManyFindDataLoader.js +71 -67
  261. package/build/dataloaders/oneToManyFindDataLoader.js.map +1 -1
  262. package/build/defaults.cjs +195 -0
  263. package/build/defaults.cjs.map +1 -0
  264. package/build/defaults.d.cts +56 -0
  265. package/build/defaults.d.cts.map +1 -0
  266. package/build/defaults.d.mts +56 -0
  267. package/build/defaults.d.mts.map +1 -0
  268. package/build/defaults.js +171 -271
  269. package/build/defaults.js.map +1 -1
  270. package/build/drivers/Driver.cjs +3 -0
  271. package/build/drivers/Driver.d.cts +51 -0
  272. package/build/drivers/Driver.d.cts.map +1 -0
  273. package/build/drivers/Driver.d.mts +51 -0
  274. package/build/drivers/Driver.d.mts.map +1 -0
  275. package/build/drivers/Driver.js +3 -3
  276. package/build/drivers/EntityWriter.cjs +208 -0
  277. package/build/drivers/EntityWriter.cjs.map +1 -0
  278. package/build/drivers/EntityWriter.d.cts +66 -0
  279. package/build/drivers/EntityWriter.d.cts.map +1 -0
  280. package/build/drivers/EntityWriter.d.mts +66 -0
  281. package/build/drivers/EntityWriter.d.mts.map +1 -0
  282. package/build/drivers/EntityWriter.js +183 -219
  283. package/build/drivers/EntityWriter.js.map +1 -1
  284. package/build/drivers/IdAssigner.cjs +89 -0
  285. package/build/drivers/IdAssigner.cjs.map +1 -0
  286. package/build/drivers/IdAssigner.d.cts +50 -0
  287. package/build/drivers/IdAssigner.d.cts.map +1 -0
  288. package/build/drivers/IdAssigner.d.mts +50 -0
  289. package/build/drivers/IdAssigner.d.mts.map +1 -0
  290. package/build/drivers/IdAssigner.js +80 -124
  291. package/build/drivers/IdAssigner.js.map +1 -1
  292. package/build/drivers/driverApi.cjs +19 -0
  293. package/build/drivers/driverApi.cjs.map +1 -0
  294. package/build/drivers/driverApi.d.cts +22 -0
  295. package/build/drivers/driverApi.d.cts.map +1 -0
  296. package/build/drivers/driverApi.d.mts +22 -0
  297. package/build/drivers/driverApi.d.mts.map +1 -0
  298. package/build/drivers/driverApi.js +18 -0
  299. package/build/drivers/driverApi.js.map +1 -0
  300. package/build/drivers/index.cjs +7 -0
  301. package/build/drivers/index.d.cts +4 -0
  302. package/build/drivers/index.d.mts +4 -0
  303. package/build/drivers/index.js +3 -22
  304. package/build/fields.cjs +127 -0
  305. package/build/fields.cjs.map +1 -0
  306. package/build/fields.d.cts +29 -0
  307. package/build/fields.d.cts.map +1 -0
  308. package/build/fields.d.mts +29 -0
  309. package/build/fields.d.mts.map +1 -0
  310. package/build/fields.js +98 -160
  311. package/build/fields.js.map +1 -1
  312. package/build/flush/FlushLock.cjs +51 -0
  313. package/build/flush/FlushLock.cjs.map +1 -0
  314. package/build/flush/FlushLock.d.cts +29 -0
  315. package/build/flush/FlushLock.d.cts.map +1 -0
  316. package/build/flush/FlushLock.d.mts +29 -0
  317. package/build/flush/FlushLock.d.mts.map +1 -0
  318. package/build/flush/FlushLock.js +51 -0
  319. package/build/flush/FlushLock.js.map +1 -0
  320. package/build/flush/JoinRows.cjs +263 -0
  321. package/build/flush/JoinRows.cjs.map +1 -0
  322. package/build/flush/JoinRows.d.cts +120 -0
  323. package/build/flush/JoinRows.d.cts.map +1 -0
  324. package/build/flush/JoinRows.d.mts +120 -0
  325. package/build/flush/JoinRows.d.mts.map +1 -0
  326. package/build/flush/JoinRows.js +261 -0
  327. package/build/flush/JoinRows.js.map +1 -0
  328. package/build/flush/PendingChanges.cjs +1 -0
  329. package/build/flush/PendingChanges.d.cts +29 -0
  330. package/build/flush/PendingChanges.d.cts.map +1 -0
  331. package/build/flush/PendingChanges.d.mts +29 -0
  332. package/build/flush/PendingChanges.d.mts.map +1 -0
  333. package/build/flush/PendingChanges.js +1 -0
  334. package/build/flush/Todo.cjs +71 -0
  335. package/build/flush/Todo.cjs.map +1 -0
  336. package/build/flush/Todo.d.cts +38 -0
  337. package/build/flush/Todo.d.cts.map +1 -0
  338. package/build/flush/Todo.d.mts +38 -0
  339. package/build/flush/Todo.d.mts.map +1 -0
  340. package/build/flush/Todo.js +67 -0
  341. package/build/flush/Todo.js.map +1 -0
  342. package/build/getProperties.cjs +87 -0
  343. package/build/getProperties.cjs.map +1 -0
  344. package/build/getProperties.d.cts +30 -0
  345. package/build/getProperties.d.cts.map +1 -0
  346. package/build/getProperties.d.mts +30 -0
  347. package/build/getProperties.d.mts.map +1 -0
  348. package/build/getProperties.js +71 -128
  349. package/build/getProperties.js.map +1 -1
  350. package/build/index.cjs +524 -0
  351. package/build/index.cjs.map +1 -0
  352. package/build/index.d.cts +180 -0
  353. package/build/index.d.cts.map +1 -0
  354. package/build/index.d.mts +180 -0
  355. package/build/index.d.mts.map +1 -0
  356. package/build/index.js +171 -292
  357. package/build/index.js.map +1 -1
  358. package/build/json.cjs +79 -0
  359. package/build/json.cjs.map +1 -0
  360. package/build/json.d.cts +76 -0
  361. package/build/json.d.cts.map +1 -0
  362. package/build/json.d.mts +76 -0
  363. package/build/json.d.mts.map +1 -0
  364. package/build/json.js +68 -106
  365. package/build/json.js.map +1 -1
  366. package/build/k.cjs +9 -0
  367. package/build/k.cjs.map +1 -0
  368. package/build/k.d.cts +1 -0
  369. package/build/k.d.mts +1 -0
  370. package/build/k.js +6 -6
  371. package/build/k.js.map +1 -1
  372. package/build/keys.cjs +181 -0
  373. package/build/keys.cjs.map +1 -0
  374. package/build/keys.d.cts +55 -0
  375. package/build/keys.d.cts.map +1 -0
  376. package/build/keys.d.mts +55 -0
  377. package/build/keys.d.mts.map +1 -0
  378. package/build/keys.js +129 -162
  379. package/build/keys.js.map +1 -1
  380. package/build/loading/HintTree.cjs +67 -0
  381. package/build/loading/HintTree.cjs.map +1 -0
  382. package/build/loading/HintTree.d.cts +45 -0
  383. package/build/loading/HintTree.d.cts.map +1 -0
  384. package/build/loading/HintTree.d.mts +45 -0
  385. package/build/loading/HintTree.d.mts.map +1 -0
  386. package/build/loading/HintTree.js +66 -0
  387. package/build/loading/HintTree.js.map +1 -0
  388. package/build/loading/IsLoadedCache.cjs +58 -0
  389. package/build/loading/IsLoadedCache.cjs.map +1 -0
  390. package/build/loading/IsLoadedCache.d.cts +35 -0
  391. package/build/loading/IsLoadedCache.d.cts.map +1 -0
  392. package/build/loading/IsLoadedCache.d.mts +35 -0
  393. package/build/loading/IsLoadedCache.d.mts.map +1 -0
  394. package/build/loading/IsLoadedCache.js +57 -0
  395. package/build/loading/IsLoadedCache.js.map +1 -0
  396. package/build/loading/loadHints.cjs +95 -0
  397. package/build/loading/loadHints.cjs.map +1 -0
  398. package/build/loading/loadHints.d.cts +116 -0
  399. package/build/loading/loadHints.d.cts.map +1 -0
  400. package/build/loading/loadHints.d.mts +116 -0
  401. package/build/loading/loadHints.d.mts.map +1 -0
  402. package/build/loading/loadHints.js +88 -0
  403. package/build/loading/loadHints.js.map +1 -0
  404. package/build/loading/loadLens.cjs +212 -0
  405. package/build/loading/loadLens.cjs.map +1 -0
  406. package/build/loading/loadLens.d.cts +77 -0
  407. package/build/loading/loadLens.d.cts.map +1 -0
  408. package/build/loading/loadLens.d.mts +77 -0
  409. package/build/loading/loadLens.d.mts.map +1 -0
  410. package/build/loading/loadLens.js +201 -0
  411. package/build/loading/loadLens.js.map +1 -0
  412. package/build/loading/withLoaded.cjs +64 -0
  413. package/build/loading/withLoaded.cjs.map +1 -0
  414. package/build/loading/withLoaded.d.cts +65 -0
  415. package/build/loading/withLoaded.d.cts.map +1 -0
  416. package/build/loading/withLoaded.d.mts +65 -0
  417. package/build/loading/withLoaded.d.mts.map +1 -0
  418. package/build/loading/withLoaded.js +61 -0
  419. package/build/loading/withLoaded.js.map +1 -0
  420. package/build/logging/FactoryLogger.cjs +66 -0
  421. package/build/logging/FactoryLogger.cjs.map +1 -0
  422. package/build/logging/FactoryLogger.d.cts +27 -0
  423. package/build/logging/FactoryLogger.d.cts.map +1 -0
  424. package/build/logging/FactoryLogger.d.mts +27 -0
  425. package/build/logging/FactoryLogger.d.mts.map +1 -0
  426. package/build/logging/FactoryLogger.js +58 -73
  427. package/build/logging/FactoryLogger.js.map +1 -1
  428. package/build/logging/FieldLogger.cjs +57 -0
  429. package/build/logging/FieldLogger.cjs.map +1 -0
  430. package/build/logging/FieldLogger.d.cts +32 -0
  431. package/build/logging/FieldLogger.d.cts.map +1 -0
  432. package/build/logging/FieldLogger.d.mts +32 -0
  433. package/build/logging/FieldLogger.d.mts.map +1 -0
  434. package/build/logging/FieldLogger.js +51 -67
  435. package/build/logging/FieldLogger.js.map +1 -1
  436. package/build/logging/ReactionLogger.cjs +93 -0
  437. package/build/logging/ReactionLogger.cjs.map +1 -0
  438. package/build/logging/ReactionLogger.d.cts +37 -0
  439. package/build/logging/ReactionLogger.d.cts.map +1 -0
  440. package/build/logging/ReactionLogger.d.mts +37 -0
  441. package/build/logging/ReactionLogger.d.mts.map +1 -0
  442. package/build/logging/ReactionLogger.js +76 -66
  443. package/build/logging/ReactionLogger.js.map +1 -1
  444. package/build/newEntity.cjs +89 -0
  445. package/build/newEntity.cjs.map +1 -0
  446. package/build/newEntity.d.cts +48 -0
  447. package/build/newEntity.d.cts.map +1 -0
  448. package/build/newEntity.d.mts +48 -0
  449. package/build/newEntity.d.mts.map +1 -0
  450. package/build/newEntity.js +71 -94
  451. package/build/newEntity.js.map +1 -1
  452. package/build/newTestInstance.cjs +539 -0
  453. package/build/newTestInstance.cjs.map +1 -0
  454. package/build/newTestInstance.d.cts +207 -0
  455. package/build/newTestInstance.d.cts.map +1 -0
  456. package/build/newTestInstance.d.mts +207 -0
  457. package/build/newTestInstance.d.mts.map +1 -0
  458. package/build/newTestInstance.js +459 -721
  459. package/build/newTestInstance.js.map +1 -1
  460. package/build/normalizeHints.cjs +58 -0
  461. package/build/normalizeHints.cjs.map +1 -0
  462. package/build/normalizeHints.d.cts +24 -0
  463. package/build/normalizeHints.d.cts.map +1 -0
  464. package/build/normalizeHints.d.mts +24 -0
  465. package/build/normalizeHints.d.mts.map +1 -0
  466. package/build/normalizeHints.js +40 -55
  467. package/build/normalizeHints.js.map +1 -1
  468. package/build/nowUTC.cjs +15 -0
  469. package/build/nowUTC.cjs.map +1 -0
  470. package/build/nowUTC.d.cts +10 -0
  471. package/build/nowUTC.d.cts.map +1 -0
  472. package/build/nowUTC.d.mts +10 -0
  473. package/build/nowUTC.d.mts.map +1 -0
  474. package/build/nowUTC.js +14 -0
  475. package/build/nowUTC.js.map +1 -0
  476. package/build/plugins/ImmutableEntitiesPlugin.cjs +21 -0
  477. package/build/plugins/ImmutableEntitiesPlugin.cjs.map +1 -0
  478. package/build/plugins/ImmutableEntitiesPlugin.d.cts +12 -0
  479. package/build/plugins/ImmutableEntitiesPlugin.d.cts.map +1 -0
  480. package/build/plugins/ImmutableEntitiesPlugin.d.mts +12 -0
  481. package/build/plugins/ImmutableEntitiesPlugin.d.mts.map +1 -0
  482. package/build/plugins/ImmutableEntitiesPlugin.js +19 -20
  483. package/build/plugins/ImmutableEntitiesPlugin.js.map +1 -1
  484. package/build/plugins/PreloadPlugin.cjs +3 -0
  485. package/build/plugins/PreloadPlugin.d.cts +77 -0
  486. package/build/plugins/PreloadPlugin.d.cts.map +1 -0
  487. package/build/plugins/PreloadPlugin.d.mts +77 -0
  488. package/build/plugins/PreloadPlugin.d.mts.map +1 -0
  489. package/build/plugins/PreloadPlugin.js +3 -3
  490. package/build/preloading/JsonAggregatePreloader.cjs +280 -0
  491. package/build/preloading/JsonAggregatePreloader.cjs.map +1 -0
  492. package/build/preloading/JsonAggregatePreloader.d.cts +19 -0
  493. package/build/preloading/JsonAggregatePreloader.d.cts.map +1 -0
  494. package/build/preloading/JsonAggregatePreloader.d.mts +19 -0
  495. package/build/preloading/JsonAggregatePreloader.d.mts.map +1 -0
  496. package/build/preloading/JsonAggregatePreloader.js +270 -320
  497. package/build/preloading/JsonAggregatePreloader.js.map +1 -1
  498. package/build/preloading/canPreload.cjs +19 -0
  499. package/build/preloading/canPreload.cjs.map +1 -0
  500. package/build/preloading/canPreload.d.cts +6 -0
  501. package/build/preloading/canPreload.d.cts.map +1 -0
  502. package/build/preloading/canPreload.d.mts +6 -0
  503. package/build/preloading/canPreload.d.mts.map +1 -0
  504. package/build/preloading/canPreload.js +15 -21
  505. package/build/preloading/canPreload.js.map +1 -1
  506. package/build/preloading/partitionHint.cjs +43 -0
  507. package/build/preloading/partitionHint.cjs.map +1 -0
  508. package/build/preloading/partitionHint.d.cts +8 -0
  509. package/build/preloading/partitionHint.d.cts.map +1 -0
  510. package/build/preloading/partitionHint.d.mts +8 -0
  511. package/build/preloading/partitionHint.d.mts.map +1 -0
  512. package/build/preloading/partitionHint.js +36 -56
  513. package/build/preloading/partitionHint.js.map +1 -1
  514. package/build/queries/ConditionBuilder.cjs +106 -0
  515. package/build/queries/ConditionBuilder.cjs.map +1 -0
  516. package/build/queries/ConditionBuilder.d.cts +31 -0
  517. package/build/queries/ConditionBuilder.d.cts.map +1 -0
  518. package/build/queries/ConditionBuilder.d.mts +31 -0
  519. package/build/queries/ConditionBuilder.d.mts.map +1 -0
  520. package/build/queries/ConditionBuilder.js +105 -0
  521. package/build/queries/ConditionBuilder.js.map +1 -0
  522. package/build/queries/conditions.cjs +15 -0
  523. package/build/queries/conditions.cjs.map +1 -0
  524. package/build/queries/conditions.d.cts +38 -0
  525. package/build/queries/conditions.d.cts.map +1 -0
  526. package/build/queries/conditions.d.mts +38 -0
  527. package/build/queries/conditions.d.mts.map +1 -0
  528. package/build/queries/conditions.js +13 -0
  529. package/build/queries/conditions.js.map +1 -0
  530. package/build/queries/entityQueryUtils.cjs +60 -0
  531. package/build/queries/entityQueryUtils.cjs.map +1 -0
  532. package/build/queries/entityQueryUtils.d.cts +19 -0
  533. package/build/queries/entityQueryUtils.d.cts.map +1 -0
  534. package/build/queries/entityQueryUtils.d.mts +19 -0
  535. package/build/queries/entityQueryUtils.d.mts.map +1 -0
  536. package/build/queries/entityQueryUtils.js +56 -0
  537. package/build/queries/entityQueryUtils.js.map +1 -0
  538. package/build/queries/find/Aliases.cjs +301 -0
  539. package/build/queries/find/Aliases.cjs.map +1 -0
  540. package/build/queries/find/Aliases.d.cts +122 -0
  541. package/build/queries/find/Aliases.d.cts.map +1 -0
  542. package/build/queries/find/Aliases.d.mts +122 -0
  543. package/build/queries/find/Aliases.d.mts.map +1 -0
  544. package/build/queries/find/Aliases.js +293 -0
  545. package/build/queries/find/Aliases.js.map +1 -0
  546. package/build/queries/find/DeferredAlias.cjs +25 -0
  547. package/build/queries/find/DeferredAlias.cjs.map +1 -0
  548. package/build/queries/find/DeferredAlias.d.cts +22 -0
  549. package/build/queries/find/DeferredAlias.d.cts.map +1 -0
  550. package/build/queries/find/DeferredAlias.d.mts +22 -0
  551. package/build/queries/find/DeferredAlias.d.mts.map +1 -0
  552. package/build/queries/find/DeferredAlias.js +22 -0
  553. package/build/queries/find/DeferredAlias.js.map +1 -0
  554. package/build/queries/find/EntityFilter.cjs +27 -0
  555. package/build/queries/find/EntityFilter.cjs.map +1 -0
  556. package/build/queries/find/EntityFilter.d.cts +127 -0
  557. package/build/queries/find/EntityFilter.d.cts.map +1 -0
  558. package/build/queries/find/EntityFilter.d.mts +127 -0
  559. package/build/queries/find/EntityFilter.d.mts.map +1 -0
  560. package/build/queries/find/EntityFilter.js +26 -0
  561. package/build/queries/find/EntityFilter.js.map +1 -0
  562. package/build/queries/find/EntityGraphQLFilter.cjs +52 -0
  563. package/build/queries/find/EntityGraphQLFilter.cjs.map +1 -0
  564. package/build/queries/find/EntityGraphQLFilter.d.cts +59 -0
  565. package/build/queries/find/EntityGraphQLFilter.d.cts.map +1 -0
  566. package/build/queries/find/EntityGraphQLFilter.d.mts +59 -0
  567. package/build/queries/find/EntityGraphQLFilter.d.mts.map +1 -0
  568. package/build/queries/find/EntityGraphQLFilter.js +50 -0
  569. package/build/queries/find/EntityGraphQLFilter.js.map +1 -0
  570. package/build/queries/find/QueryParser.cjs +553 -0
  571. package/build/queries/find/QueryParser.cjs.map +1 -0
  572. package/build/queries/find/QueryParser.collectionJoins.cjs +353 -0
  573. package/build/queries/find/QueryParser.collectionJoins.cjs.map +1 -0
  574. package/build/queries/find/QueryParser.collectionJoins.d.cts +30 -0
  575. package/build/queries/find/QueryParser.collectionJoins.d.cts.map +1 -0
  576. package/build/queries/find/QueryParser.collectionJoins.d.mts +30 -0
  577. package/build/queries/find/QueryParser.collectionJoins.d.mts.map +1 -0
  578. package/build/queries/find/QueryParser.collectionJoins.js +352 -0
  579. package/build/queries/find/QueryParser.collectionJoins.js.map +1 -0
  580. package/build/queries/find/QueryParser.d.cts +192 -0
  581. package/build/queries/find/QueryParser.d.cts.map +1 -0
  582. package/build/queries/find/QueryParser.d.mts +192 -0
  583. package/build/queries/find/QueryParser.d.mts.map +1 -0
  584. package/build/queries/find/QueryParser.js +546 -0
  585. package/build/queries/find/QueryParser.js.map +1 -0
  586. package/build/queries/find/QueryParser.pruning.cjs +115 -0
  587. package/build/queries/find/QueryParser.pruning.cjs.map +1 -0
  588. package/build/queries/find/QueryParser.pruning.d.cts +8 -0
  589. package/build/queries/find/QueryParser.pruning.d.cts.map +1 -0
  590. package/build/queries/find/QueryParser.pruning.d.mts +8 -0
  591. package/build/queries/find/QueryParser.pruning.d.mts.map +1 -0
  592. package/build/queries/find/QueryParser.pruning.js +113 -0
  593. package/build/queries/find/QueryParser.pruning.js.map +1 -0
  594. package/build/queries/find/QueryVisitor.cjs +77 -0
  595. package/build/queries/find/QueryVisitor.cjs.map +1 -0
  596. package/build/queries/find/QueryVisitor.d.cts +24 -0
  597. package/build/queries/find/QueryVisitor.d.cts.map +1 -0
  598. package/build/queries/find/QueryVisitor.d.mts +24 -0
  599. package/build/queries/find/QueryVisitor.d.mts.map +1 -0
  600. package/build/queries/find/QueryVisitor.js +74 -0
  601. package/build/queries/find/QueryVisitor.js.map +1 -0
  602. package/build/queries/find/buildFindQuery.cjs +112 -0
  603. package/build/queries/find/buildFindQuery.cjs.map +1 -0
  604. package/build/queries/find/buildFindQuery.d.cts +24 -0
  605. package/build/queries/find/buildFindQuery.d.cts.map +1 -0
  606. package/build/queries/find/buildFindQuery.d.mts +24 -0
  607. package/build/queries/find/buildFindQuery.d.mts.map +1 -0
  608. package/build/queries/find/buildFindQuery.js +110 -0
  609. package/build/queries/find/buildFindQuery.js.map +1 -0
  610. package/build/queries/find/scopes.cjs +301 -0
  611. package/build/queries/find/scopes.cjs.map +1 -0
  612. package/build/queries/find/scopes.d.cts +188 -0
  613. package/build/queries/find/scopes.d.cts.map +1 -0
  614. package/build/queries/find/scopes.d.mts +188 -0
  615. package/build/queries/find/scopes.d.mts.map +1 -0
  616. package/build/queries/find/scopes.js +296 -0
  617. package/build/queries/find/scopes.js.map +1 -0
  618. package/build/queries/parsedConditions.cjs +21 -0
  619. package/build/queries/parsedConditions.cjs.map +1 -0
  620. package/build/queries/parsedConditions.d.cts +127 -0
  621. package/build/queries/parsedConditions.d.cts.map +1 -0
  622. package/build/queries/parsedConditions.d.mts +127 -0
  623. package/build/queries/parsedConditions.d.mts.map +1 -0
  624. package/build/queries/parsedConditions.js +20 -0
  625. package/build/queries/parsedConditions.js.map +1 -0
  626. package/build/queries/renderConditions.cjs +66 -0
  627. package/build/queries/renderConditions.cjs.map +1 -0
  628. package/build/queries/renderConditions.d.cts +15 -0
  629. package/build/queries/renderConditions.d.cts.map +1 -0
  630. package/build/queries/renderConditions.d.mts +15 -0
  631. package/build/queries/renderConditions.d.mts.map +1 -0
  632. package/build/queries/renderConditions.js +64 -0
  633. package/build/queries/renderConditions.js.map +1 -0
  634. package/build/queries/skipCondition.cjs +14 -0
  635. package/build/queries/skipCondition.cjs.map +1 -0
  636. package/build/queries/skipCondition.d.cts +7 -0
  637. package/build/queries/skipCondition.d.cts.map +1 -0
  638. package/build/queries/skipCondition.d.mts +7 -0
  639. package/build/queries/skipCondition.d.mts.map +1 -0
  640. package/build/queries/skipCondition.js +13 -0
  641. package/build/queries/skipCondition.js.map +1 -0
  642. package/build/queries/sql/AliasAssigner.cjs +35 -0
  643. package/build/queries/sql/AliasAssigner.cjs.map +1 -0
  644. package/build/queries/sql/AliasAssigner.d.cts +13 -0
  645. package/build/queries/sql/AliasAssigner.d.cts.map +1 -0
  646. package/build/queries/sql/AliasAssigner.d.mts +13 -0
  647. package/build/queries/sql/AliasAssigner.d.mts.map +1 -0
  648. package/build/queries/sql/AliasAssigner.js +34 -0
  649. package/build/queries/sql/AliasAssigner.js.map +1 -0
  650. package/build/queries/sql/Expr.cjs +529 -0
  651. package/build/queries/sql/Expr.cjs.map +1 -0
  652. package/build/queries/sql/Expr.d.cts +284 -0
  653. package/build/queries/sql/Expr.d.cts.map +1 -0
  654. package/build/queries/sql/Expr.d.mts +284 -0
  655. package/build/queries/sql/Expr.d.mts.map +1 -0
  656. package/build/queries/sql/Expr.js +512 -0
  657. package/build/queries/sql/Expr.js.map +1 -0
  658. package/build/queries/sql/JoinTree.cjs +72 -0
  659. package/build/queries/sql/JoinTree.cjs.map +1 -0
  660. package/build/queries/sql/JoinTree.d.cts +107 -0
  661. package/build/queries/sql/JoinTree.d.cts.map +1 -0
  662. package/build/queries/sql/JoinTree.d.mts +107 -0
  663. package/build/queries/sql/JoinTree.d.mts.map +1 -0
  664. package/build/queries/sql/JoinTree.js +71 -0
  665. package/build/queries/sql/JoinTree.js.map +1 -0
  666. package/build/queries/sql/Tables.cjs +803 -0
  667. package/build/queries/sql/Tables.cjs.map +1 -0
  668. package/build/queries/sql/Tables.d.cts +322 -0
  669. package/build/queries/sql/Tables.d.cts.map +1 -0
  670. package/build/queries/sql/Tables.d.mts +322 -0
  671. package/build/queries/sql/Tables.d.mts.map +1 -0
  672. package/build/queries/sql/Tables.js +786 -0
  673. package/build/queries/sql/Tables.js.map +1 -0
  674. package/build/queries/sql/custom.cjs +52 -0
  675. package/build/queries/sql/custom.cjs.map +1 -0
  676. package/build/queries/sql/custom.d.cts +85 -0
  677. package/build/queries/sql/custom.d.cts.map +1 -0
  678. package/build/queries/sql/custom.d.mts +85 -0
  679. package/build/queries/sql/custom.d.mts.map +1 -0
  680. package/build/queries/sql/custom.js +49 -0
  681. package/build/queries/sql/custom.js.map +1 -0
  682. package/build/queries/sql/execute.cjs +255 -0
  683. package/build/queries/sql/execute.cjs.map +1 -0
  684. package/build/queries/sql/execute.d.cts +311 -0
  685. package/build/queries/sql/execute.d.cts.map +1 -0
  686. package/build/queries/sql/execute.d.mts +311 -0
  687. package/build/queries/sql/execute.d.mts.map +1 -0
  688. package/build/queries/sql/execute.js +252 -0
  689. package/build/queries/sql/execute.js.map +1 -0
  690. package/build/queries/sql/expressions/arrayAgg.cjs +63 -0
  691. package/build/queries/sql/expressions/arrayAgg.cjs.map +1 -0
  692. package/build/queries/sql/expressions/arrayAgg.d.cts +24 -0
  693. package/build/queries/sql/expressions/arrayAgg.d.cts.map +1 -0
  694. package/build/queries/sql/expressions/arrayAgg.d.mts +24 -0
  695. package/build/queries/sql/expressions/arrayAgg.d.mts.map +1 -0
  696. package/build/queries/sql/expressions/arrayAgg.js +61 -0
  697. package/build/queries/sql/expressions/arrayAgg.js.map +1 -0
  698. package/build/queries/sql/expressions/case.cjs +71 -0
  699. package/build/queries/sql/expressions/case.cjs.map +1 -0
  700. package/build/queries/sql/expressions/case.d.cts +57 -0
  701. package/build/queries/sql/expressions/case.d.cts.map +1 -0
  702. package/build/queries/sql/expressions/case.d.mts +57 -0
  703. package/build/queries/sql/expressions/case.d.mts.map +1 -0
  704. package/build/queries/sql/expressions/case.js +68 -0
  705. package/build/queries/sql/expressions/case.js.map +1 -0
  706. package/build/queries/sql/expressions/coalesce.cjs +25 -0
  707. package/build/queries/sql/expressions/coalesce.cjs.map +1 -0
  708. package/build/queries/sql/expressions/coalesce.d.cts +21 -0
  709. package/build/queries/sql/expressions/coalesce.d.cts.map +1 -0
  710. package/build/queries/sql/expressions/coalesce.d.mts +21 -0
  711. package/build/queries/sql/expressions/coalesce.d.mts.map +1 -0
  712. package/build/queries/sql/expressions/coalesce.js +22 -0
  713. package/build/queries/sql/expressions/coalesce.js.map +1 -0
  714. package/build/queries/sql/expressions/codecs.cjs +126 -0
  715. package/build/queries/sql/expressions/codecs.cjs.map +1 -0
  716. package/build/queries/sql/expressions/codecs.d.cts +11 -0
  717. package/build/queries/sql/expressions/codecs.d.cts.map +1 -0
  718. package/build/queries/sql/expressions/codecs.d.mts +11 -0
  719. package/build/queries/sql/expressions/codecs.d.mts.map +1 -0
  720. package/build/queries/sql/expressions/codecs.js +125 -0
  721. package/build/queries/sql/expressions/codecs.js.map +1 -0
  722. package/build/queries/sql/expressions/expression.cjs +102 -0
  723. package/build/queries/sql/expressions/expression.cjs.map +1 -0
  724. package/build/queries/sql/expressions/expression.d.cts +23 -0
  725. package/build/queries/sql/expressions/expression.d.cts.map +1 -0
  726. package/build/queries/sql/expressions/expression.d.mts +23 -0
  727. package/build/queries/sql/expressions/expression.d.mts.map +1 -0
  728. package/build/queries/sql/expressions/expression.js +97 -0
  729. package/build/queries/sql/expressions/expression.js.map +1 -0
  730. package/build/queries/sql/expressions/greatest.cjs +25 -0
  731. package/build/queries/sql/expressions/greatest.cjs.map +1 -0
  732. package/build/queries/sql/expressions/greatest.d.cts +21 -0
  733. package/build/queries/sql/expressions/greatest.d.cts.map +1 -0
  734. package/build/queries/sql/expressions/greatest.d.mts +21 -0
  735. package/build/queries/sql/expressions/greatest.d.mts.map +1 -0
  736. package/build/queries/sql/expressions/greatest.js +22 -0
  737. package/build/queries/sql/expressions/greatest.js.map +1 -0
  738. package/build/queries/sql/expressions/least.cjs +25 -0
  739. package/build/queries/sql/expressions/least.cjs.map +1 -0
  740. package/build/queries/sql/expressions/least.d.cts +21 -0
  741. package/build/queries/sql/expressions/least.d.cts.map +1 -0
  742. package/build/queries/sql/expressions/least.d.mts +21 -0
  743. package/build/queries/sql/expressions/least.d.mts.map +1 -0
  744. package/build/queries/sql/expressions/least.js +22 -0
  745. package/build/queries/sql/expressions/least.js.map +1 -0
  746. package/build/queries/sql/expressions/nullIf.cjs +27 -0
  747. package/build/queries/sql/expressions/nullIf.cjs.map +1 -0
  748. package/build/queries/sql/expressions/nullIf.d.cts +22 -0
  749. package/build/queries/sql/expressions/nullIf.d.cts.map +1 -0
  750. package/build/queries/sql/expressions/nullIf.d.mts +22 -0
  751. package/build/queries/sql/expressions/nullIf.d.mts.map +1 -0
  752. package/build/queries/sql/expressions/nullIf.js +24 -0
  753. package/build/queries/sql/expressions/nullIf.js.map +1 -0
  754. package/build/queries/sql/expressions/parseExpression.cjs +75 -0
  755. package/build/queries/sql/expressions/parseExpression.cjs.map +1 -0
  756. package/build/queries/sql/expressions/parseExpression.d.cts +19 -0
  757. package/build/queries/sql/expressions/parseExpression.d.cts.map +1 -0
  758. package/build/queries/sql/expressions/parseExpression.d.mts +19 -0
  759. package/build/queries/sql/expressions/parseExpression.d.mts.map +1 -0
  760. package/build/queries/sql/expressions/parseExpression.js +70 -0
  761. package/build/queries/sql/expressions/parseExpression.js.map +1 -0
  762. package/build/queries/sql/expressions/types.cjs +1 -0
  763. package/build/queries/sql/expressions/types.d.cts +114 -0
  764. package/build/queries/sql/expressions/types.d.cts.map +1 -0
  765. package/build/queries/sql/expressions/types.d.mts +114 -0
  766. package/build/queries/sql/expressions/types.d.mts.map +1 -0
  767. package/build/queries/sql/expressions/types.js +1 -0
  768. package/build/queries/sql/keywords.cjs +136 -0
  769. package/build/queries/sql/keywords.cjs.map +1 -0
  770. package/build/queries/sql/keywords.d.cts +18 -0
  771. package/build/queries/sql/keywords.d.cts.map +1 -0
  772. package/build/queries/sql/keywords.d.mts +18 -0
  773. package/build/queries/sql/keywords.d.mts.map +1 -0
  774. package/build/queries/sql/keywords.js +132 -0
  775. package/build/queries/sql/keywords.js.map +1 -0
  776. package/build/queries/sql/query.cjs +1657 -0
  777. package/build/queries/sql/query.cjs.map +1 -0
  778. package/build/queries/sql/query.d.cts +887 -0
  779. package/build/queries/sql/query.d.cts.map +1 -0
  780. package/build/queries/sql/query.d.mts +887 -0
  781. package/build/queries/sql/query.d.mts.map +1 -0
  782. package/build/queries/sql/query.js +1637 -0
  783. package/build/queries/sql/query.js.map +1 -0
  784. package/build/queries/unnest.cjs +62 -0
  785. package/build/queries/unnest.cjs.map +1 -0
  786. package/build/queries/unnest.d.cts +16 -0
  787. package/build/queries/unnest.d.cts.map +1 -0
  788. package/build/queries/unnest.d.mts +16 -0
  789. package/build/queries/unnest.d.mts.map +1 -0
  790. package/build/queries/unnest.js +60 -0
  791. package/build/queries/unnest.js.map +1 -0
  792. package/build/queries/valueFilters.cjs +240 -0
  793. package/build/queries/valueFilters.cjs.map +1 -0
  794. package/build/queries/valueFilters.d.cts +26 -0
  795. package/build/queries/valueFilters.d.cts.map +1 -0
  796. package/build/queries/valueFilters.d.mts +26 -0
  797. package/build/queries/valueFilters.d.mts.map +1 -0
  798. package/build/queries/valueFilters.js +236 -0
  799. package/build/queries/valueFilters.js.map +1 -0
  800. package/build/reactivity/ReactionsManager.cjs +264 -0
  801. package/build/reactivity/ReactionsManager.cjs.map +1 -0
  802. package/build/reactivity/ReactionsManager.d.cts +98 -0
  803. package/build/reactivity/ReactionsManager.d.cts.map +1 -0
  804. package/build/reactivity/ReactionsManager.d.mts +98 -0
  805. package/build/reactivity/ReactionsManager.d.mts.map +1 -0
  806. package/build/reactivity/ReactionsManager.js +263 -0
  807. package/build/reactivity/ReactionsManager.js.map +1 -0
  808. package/build/reactivity/reactiveHints.cjs +328 -0
  809. package/build/reactivity/reactiveHints.cjs.map +1 -0
  810. package/build/reactivity/reactiveHints.d.cts +143 -0
  811. package/build/reactivity/reactiveHints.d.cts.map +1 -0
  812. package/build/reactivity/reactiveHints.d.mts +143 -0
  813. package/build/reactivity/reactiveHints.d.mts.map +1 -0
  814. package/build/reactivity/reactiveHints.js +321 -0
  815. package/build/reactivity/reactiveHints.js.map +1 -0
  816. package/build/relations/AbstractPropertyImpl.cjs +16 -0
  817. package/build/relations/AbstractPropertyImpl.cjs.map +1 -0
  818. package/build/relations/AbstractPropertyImpl.d.cts +11 -0
  819. package/build/relations/AbstractPropertyImpl.d.cts.map +1 -0
  820. package/build/relations/AbstractPropertyImpl.d.mts +11 -0
  821. package/build/relations/AbstractPropertyImpl.d.mts.map +1 -0
  822. package/build/relations/AbstractPropertyImpl.js +13 -13
  823. package/build/relations/AbstractPropertyImpl.js.map +1 -1
  824. package/build/relations/AbstractRelationImpl.cjs +15 -0
  825. package/build/relations/AbstractRelationImpl.cjs.map +1 -0
  826. package/build/relations/AbstractRelationImpl.d.cts +43 -0
  827. package/build/relations/AbstractRelationImpl.d.cts.map +1 -0
  828. package/build/relations/AbstractRelationImpl.d.mts +43 -0
  829. package/build/relations/AbstractRelationImpl.d.mts.map +1 -0
  830. package/build/relations/AbstractRelationImpl.js +12 -17
  831. package/build/relations/AbstractRelationImpl.js.map +1 -1
  832. package/build/relations/AsyncProperty.cjs +75 -0
  833. package/build/relations/AsyncProperty.cjs.map +1 -0
  834. package/build/relations/AsyncProperty.d.cts +40 -0
  835. package/build/relations/AsyncProperty.d.cts.map +1 -0
  836. package/build/relations/AsyncProperty.d.mts +40 -0
  837. package/build/relations/AsyncProperty.d.mts.map +1 -0
  838. package/build/relations/AsyncProperty.js +61 -70
  839. package/build/relations/AsyncProperty.js.map +1 -1
  840. package/build/relations/AsyncReactiveField.cjs +110 -0
  841. package/build/relations/AsyncReactiveField.cjs.map +1 -0
  842. package/build/relations/AsyncReactiveField.d.cts +50 -0
  843. package/build/relations/AsyncReactiveField.d.cts.map +1 -0
  844. package/build/relations/AsyncReactiveField.d.mts +50 -0
  845. package/build/relations/AsyncReactiveField.d.mts.map +1 -0
  846. package/build/relations/AsyncReactiveField.js +97 -116
  847. package/build/relations/AsyncReactiveField.js.map +1 -1
  848. package/build/relations/Collection.cjs +23 -0
  849. package/build/relations/Collection.cjs.map +1 -0
  850. package/build/relations/Collection.d.cts +37 -0
  851. package/build/relations/Collection.d.cts.map +1 -0
  852. package/build/relations/Collection.d.mts +37 -0
  853. package/build/relations/Collection.d.mts.map +1 -0
  854. package/build/relations/Collection.js +14 -11
  855. package/build/relations/Collection.js.map +1 -1
  856. package/build/relations/CustomCollection.cjs +144 -0
  857. package/build/relations/CustomCollection.cjs.map +1 -0
  858. package/build/relations/CustomCollection.d.cts +74 -0
  859. package/build/relations/CustomCollection.d.cts.map +1 -0
  860. package/build/relations/CustomCollection.d.mts +74 -0
  861. package/build/relations/CustomCollection.d.mts.map +1 -0
  862. package/build/relations/CustomCollection.js +138 -162
  863. package/build/relations/CustomCollection.js.map +1 -1
  864. package/build/relations/CustomReference.cjs +142 -0
  865. package/build/relations/CustomReference.cjs.map +1 -0
  866. package/build/relations/CustomReference.d.cts +76 -0
  867. package/build/relations/CustomReference.d.cts.map +1 -0
  868. package/build/relations/CustomReference.d.mts +76 -0
  869. package/build/relations/CustomReference.d.mts.map +1 -0
  870. package/build/relations/CustomReference.js +135 -147
  871. package/build/relations/CustomReference.js.map +1 -1
  872. package/build/relations/EnumCollection.cjs +178 -0
  873. package/build/relations/EnumCollection.cjs.map +1 -0
  874. package/build/relations/EnumCollection.d.cts +86 -0
  875. package/build/relations/EnumCollection.d.cts.map +1 -0
  876. package/build/relations/EnumCollection.d.mts +86 -0
  877. package/build/relations/EnumCollection.d.mts.map +1 -0
  878. package/build/relations/EnumCollection.js +172 -207
  879. package/build/relations/EnumCollection.js.map +1 -1
  880. package/build/relations/LargeCollection.cjs +4 -0
  881. package/build/relations/LargeCollection.d.cts +22 -0
  882. package/build/relations/LargeCollection.d.cts.map +1 -0
  883. package/build/relations/LargeCollection.d.mts +22 -0
  884. package/build/relations/LargeCollection.d.mts.map +1 -0
  885. package/build/relations/LargeCollection.js +4 -3
  886. package/build/relations/LazyField.cjs +140 -0
  887. package/build/relations/LazyField.cjs.map +1 -0
  888. package/build/relations/LazyField.d.cts +51 -0
  889. package/build/relations/LazyField.d.cts.map +1 -0
  890. package/build/relations/LazyField.d.mts +51 -0
  891. package/build/relations/LazyField.d.mts.map +1 -0
  892. package/build/relations/LazyField.js +134 -0
  893. package/build/relations/LazyField.js.map +1 -0
  894. package/build/relations/ManyToManyCollection.cjs +421 -0
  895. package/build/relations/ManyToManyCollection.cjs.map +1 -0
  896. package/build/relations/ManyToManyCollection.d.cts +59 -0
  897. package/build/relations/ManyToManyCollection.d.cts.map +1 -0
  898. package/build/relations/ManyToManyCollection.d.mts +59 -0
  899. package/build/relations/ManyToManyCollection.d.mts.map +1 -0
  900. package/build/relations/ManyToManyCollection.js +411 -471
  901. package/build/relations/ManyToManyCollection.js.map +1 -1
  902. package/build/relations/ManyToManyLargeCollection.cjs +91 -0
  903. package/build/relations/ManyToManyLargeCollection.cjs.map +1 -0
  904. package/build/relations/ManyToManyLargeCollection.d.cts +34 -0
  905. package/build/relations/ManyToManyLargeCollection.d.cts.map +1 -0
  906. package/build/relations/ManyToManyLargeCollection.d.mts +34 -0
  907. package/build/relations/ManyToManyLargeCollection.d.mts.map +1 -0
  908. package/build/relations/ManyToManyLargeCollection.js +85 -118
  909. package/build/relations/ManyToManyLargeCollection.js.map +1 -1
  910. package/build/relations/ManyToOneReference.cjs +364 -0
  911. package/build/relations/ManyToOneReference.cjs.map +1 -0
  912. package/build/relations/ManyToOneReference.d.cts +121 -0
  913. package/build/relations/ManyToOneReference.d.cts.map +1 -0
  914. package/build/relations/ManyToOneReference.d.mts +121 -0
  915. package/build/relations/ManyToOneReference.d.mts.map +1 -0
  916. package/build/relations/ManyToOneReference.js +344 -411
  917. package/build/relations/ManyToOneReference.js.map +1 -1
  918. package/build/relations/OneToManyCollection.cjs +492 -0
  919. package/build/relations/OneToManyCollection.cjs.map +1 -0
  920. package/build/relations/OneToManyCollection.d.cts +69 -0
  921. package/build/relations/OneToManyCollection.d.cts.map +1 -0
  922. package/build/relations/OneToManyCollection.d.mts +69 -0
  923. package/build/relations/OneToManyCollection.d.mts.map +1 -0
  924. package/build/relations/OneToManyCollection.js +480 -579
  925. package/build/relations/OneToManyCollection.js.map +1 -1
  926. package/build/relations/OneToManyLargeCollection.cjs +85 -0
  927. package/build/relations/OneToManyLargeCollection.cjs.map +1 -0
  928. package/build/relations/OneToManyLargeCollection.d.cts +29 -0
  929. package/build/relations/OneToManyLargeCollection.d.cts.map +1 -0
  930. package/build/relations/OneToManyLargeCollection.d.mts +29 -0
  931. package/build/relations/OneToManyLargeCollection.d.mts.map +1 -0
  932. package/build/relations/OneToManyLargeCollection.js +79 -99
  933. package/build/relations/OneToManyLargeCollection.js.map +1 -1
  934. package/build/relations/OneToOneReference.cjs +209 -0
  935. package/build/relations/OneToOneReference.cjs.map +1 -0
  936. package/build/relations/OneToOneReference.d.cts +97 -0
  937. package/build/relations/OneToOneReference.d.cts.map +1 -0
  938. package/build/relations/OneToOneReference.d.mts +97 -0
  939. package/build/relations/OneToOneReference.d.mts.map +1 -0
  940. package/build/relations/OneToOneReference.js +193 -221
  941. package/build/relations/OneToOneReference.js.map +1 -1
  942. package/build/relations/PolymorphicReference.cjs +210 -0
  943. package/build/relations/PolymorphicReference.cjs.map +1 -0
  944. package/build/relations/PolymorphicReference.d.cts +93 -0
  945. package/build/relations/PolymorphicReference.d.cts.map +1 -0
  946. package/build/relations/PolymorphicReference.d.mts +93 -0
  947. package/build/relations/PolymorphicReference.d.mts.map +1 -0
  948. package/build/relations/PolymorphicReference.js +200 -237
  949. package/build/relations/PolymorphicReference.js.map +1 -1
  950. package/build/relations/PropertySymbols.cjs +7 -0
  951. package/build/relations/PropertySymbols.cjs.map +1 -0
  952. package/build/relations/PropertySymbols.d.cts +5 -0
  953. package/build/relations/PropertySymbols.d.cts.map +1 -0
  954. package/build/relations/PropertySymbols.d.mts +5 -0
  955. package/build/relations/PropertySymbols.d.mts.map +1 -0
  956. package/build/relations/PropertySymbols.js +6 -0
  957. package/build/relations/PropertySymbols.js.map +1 -0
  958. package/build/relations/ReactiveField.cjs +114 -0
  959. package/build/relations/ReactiveField.cjs.map +1 -0
  960. package/build/relations/ReactiveField.d.cts +88 -0
  961. package/build/relations/ReactiveField.d.cts.map +1 -0
  962. package/build/relations/ReactiveField.d.mts +88 -0
  963. package/build/relations/ReactiveField.d.mts.map +1 -0
  964. package/build/relations/ReactiveField.js +104 -137
  965. package/build/relations/ReactiveField.js.map +1 -1
  966. package/build/relations/ReactiveGetter.cjs +40 -0
  967. package/build/relations/ReactiveGetter.cjs.map +1 -0
  968. package/build/relations/ReactiveGetter.d.cts +33 -0
  969. package/build/relations/ReactiveGetter.d.cts.map +1 -0
  970. package/build/relations/ReactiveGetter.d.mts +33 -0
  971. package/build/relations/ReactiveGetter.d.mts.map +1 -0
  972. package/build/relations/ReactiveGetter.js +30 -31
  973. package/build/relations/ReactiveGetter.js.map +1 -1
  974. package/build/relations/ReactiveManyToMany.cjs +198 -0
  975. package/build/relations/ReactiveManyToMany.cjs.map +1 -0
  976. package/build/relations/ReactiveManyToMany.d.cts +63 -0
  977. package/build/relations/ReactiveManyToMany.d.cts.map +1 -0
  978. package/build/relations/ReactiveManyToMany.d.mts +63 -0
  979. package/build/relations/ReactiveManyToMany.d.mts.map +1 -0
  980. package/build/relations/ReactiveManyToMany.js +187 -238
  981. package/build/relations/ReactiveManyToMany.js.map +1 -1
  982. package/build/relations/ReactiveManyToManyOtherSide.cjs +148 -0
  983. package/build/relations/ReactiveManyToManyOtherSide.cjs.map +1 -0
  984. package/build/relations/ReactiveManyToManyOtherSide.d.cts +53 -0
  985. package/build/relations/ReactiveManyToManyOtherSide.d.cts.map +1 -0
  986. package/build/relations/ReactiveManyToManyOtherSide.d.mts +53 -0
  987. package/build/relations/ReactiveManyToManyOtherSide.d.mts.map +1 -0
  988. package/build/relations/ReactiveManyToManyOtherSide.js +139 -152
  989. package/build/relations/ReactiveManyToManyOtherSide.js.map +1 -1
  990. package/build/relations/ReactiveReference.cjs +336 -0
  991. package/build/relations/ReactiveReference.cjs.map +1 -0
  992. package/build/relations/ReactiveReference.d.cts +124 -0
  993. package/build/relations/ReactiveReference.d.cts.map +1 -0
  994. package/build/relations/ReactiveReference.d.mts +124 -0
  995. package/build/relations/ReactiveReference.d.mts.map +1 -0
  996. package/build/relations/ReactiveReference.js +321 -385
  997. package/build/relations/ReactiveReference.js.map +1 -1
  998. package/build/relations/ReadOnlyCollection.cjs +18 -0
  999. package/build/relations/ReadOnlyCollection.cjs.map +1 -0
  1000. package/build/relations/ReadOnlyCollection.d.cts +22 -0
  1001. package/build/relations/ReadOnlyCollection.d.cts.map +1 -0
  1002. package/build/relations/ReadOnlyCollection.d.mts +22 -0
  1003. package/build/relations/ReadOnlyCollection.d.mts.map +1 -0
  1004. package/build/relations/ReadOnlyCollection.js +9 -9
  1005. package/build/relations/ReadOnlyCollection.js.map +1 -1
  1006. package/build/relations/RecursiveCollection.cjs +386 -0
  1007. package/build/relations/RecursiveCollection.cjs.map +1 -0
  1008. package/build/relations/RecursiveCollection.d.cts +112 -0
  1009. package/build/relations/RecursiveCollection.d.cts.map +1 -0
  1010. package/build/relations/RecursiveCollection.d.mts +112 -0
  1011. package/build/relations/RecursiveCollection.d.mts.map +1 -0
  1012. package/build/relations/RecursiveCollection.js +367 -427
  1013. package/build/relations/RecursiveCollection.js.map +1 -1
  1014. package/build/relations/RecursiveCycleError.cjs +17 -0
  1015. package/build/relations/RecursiveCycleError.cjs.map +1 -0
  1016. package/build/relations/RecursiveCycleError.d.cts +15 -0
  1017. package/build/relations/RecursiveCycleError.d.cts.map +1 -0
  1018. package/build/relations/RecursiveCycleError.d.mts +15 -0
  1019. package/build/relations/RecursiveCycleError.d.mts.map +1 -0
  1020. package/build/relations/RecursiveCycleError.js +14 -13
  1021. package/build/relations/RecursiveCycleError.js.map +1 -1
  1022. package/build/relations/Reference.cjs +25 -0
  1023. package/build/relations/Reference.cjs.map +1 -0
  1024. package/build/relations/Reference.d.cts +39 -0
  1025. package/build/relations/Reference.d.cts.map +1 -0
  1026. package/build/relations/Reference.d.mts +39 -0
  1027. package/build/relations/Reference.d.mts.map +1 -0
  1028. package/build/relations/Reference.js +15 -14
  1029. package/build/relations/Reference.js.map +1 -1
  1030. package/build/relations/ReferenceSymbols.cjs +7 -0
  1031. package/build/relations/ReferenceSymbols.cjs.map +1 -0
  1032. package/build/relations/ReferenceSymbols.d.cts +5 -0
  1033. package/build/relations/ReferenceSymbols.d.cts.map +1 -0
  1034. package/build/relations/ReferenceSymbols.d.mts +5 -0
  1035. package/build/relations/ReferenceSymbols.d.mts.map +1 -0
  1036. package/build/relations/ReferenceSymbols.js +6 -0
  1037. package/build/relations/ReferenceSymbols.js.map +1 -0
  1038. package/build/relations/Relation.cjs +17 -0
  1039. package/build/relations/Relation.cjs.map +1 -0
  1040. package/build/relations/Relation.d.cts +16 -0
  1041. package/build/relations/Relation.d.cts.map +1 -0
  1042. package/build/relations/Relation.d.mts +16 -0
  1043. package/build/relations/Relation.d.mts.map +1 -0
  1044. package/build/relations/Relation.js +10 -8
  1045. package/build/relations/Relation.js.map +1 -1
  1046. package/build/relations/RelationSymbols.cjs +9 -0
  1047. package/build/relations/RelationSymbols.cjs.map +1 -0
  1048. package/build/relations/RelationSymbols.d.cts +6 -0
  1049. package/build/relations/RelationSymbols.d.cts.map +1 -0
  1050. package/build/relations/RelationSymbols.d.mts +6 -0
  1051. package/build/relations/RelationSymbols.d.mts.map +1 -0
  1052. package/build/relations/RelationSymbols.js +7 -0
  1053. package/build/relations/RelationSymbols.js.map +1 -0
  1054. package/build/relations/hasAsyncMethod.cjs +47 -0
  1055. package/build/relations/hasAsyncMethod.cjs.map +1 -0
  1056. package/build/relations/hasAsyncMethod.d.cts +29 -0
  1057. package/build/relations/hasAsyncMethod.d.cts.map +1 -0
  1058. package/build/relations/hasAsyncMethod.d.mts +29 -0
  1059. package/build/relations/hasAsyncMethod.d.mts.map +1 -0
  1060. package/build/relations/hasAsyncMethod.js +40 -43
  1061. package/build/relations/hasAsyncMethod.js.map +1 -1
  1062. package/build/relations/hasManyDerived.cjs +35 -0
  1063. package/build/relations/hasManyDerived.cjs.map +1 -0
  1064. package/build/relations/hasManyDerived.d.cts +25 -0
  1065. package/build/relations/hasManyDerived.d.cts.map +1 -0
  1066. package/build/relations/hasManyDerived.d.mts +25 -0
  1067. package/build/relations/hasManyDerived.d.mts.map +1 -0
  1068. package/build/relations/hasManyDerived.js +30 -28
  1069. package/build/relations/hasManyDerived.js.map +1 -1
  1070. package/build/relations/hasManyThrough.cjs +29 -0
  1071. package/build/relations/hasManyThrough.cjs.map +1 -0
  1072. package/build/relations/hasManyThrough.d.cts +16 -0
  1073. package/build/relations/hasManyThrough.d.cts.map +1 -0
  1074. package/build/relations/hasManyThrough.d.mts +16 -0
  1075. package/build/relations/hasManyThrough.d.mts.map +1 -0
  1076. package/build/relations/hasManyThrough.js +24 -20
  1077. package/build/relations/hasManyThrough.js.map +1 -1
  1078. package/build/relations/hasOneDerived.cjs +32 -0
  1079. package/build/relations/hasOneDerived.cjs.map +1 -0
  1080. package/build/relations/hasOneDerived.d.cts +15 -0
  1081. package/build/relations/hasOneDerived.d.cts.map +1 -0
  1082. package/build/relations/hasOneDerived.d.mts +15 -0
  1083. package/build/relations/hasOneDerived.d.mts.map +1 -0
  1084. package/build/relations/hasOneDerived.js +27 -20
  1085. package/build/relations/hasOneDerived.js.map +1 -1
  1086. package/build/relations/hasOneThrough.cjs +31 -0
  1087. package/build/relations/hasOneThrough.cjs.map +1 -0
  1088. package/build/relations/hasOneThrough.d.cts +16 -0
  1089. package/build/relations/hasOneThrough.d.cts.map +1 -0
  1090. package/build/relations/hasOneThrough.d.mts +16 -0
  1091. package/build/relations/hasOneThrough.d.mts.map +1 -0
  1092. package/build/relations/hasOneThrough.js +26 -22
  1093. package/build/relations/hasOneThrough.js.map +1 -1
  1094. package/build/relations/hasProperty.cjs +109 -0
  1095. package/build/relations/hasProperty.cjs.map +1 -0
  1096. package/build/relations/hasProperty.d.cts +53 -0
  1097. package/build/relations/hasProperty.d.cts.map +1 -0
  1098. package/build/relations/hasProperty.d.mts +53 -0
  1099. package/build/relations/hasProperty.d.mts.map +1 -0
  1100. package/build/relations/hasProperty.js +90 -95
  1101. package/build/relations/hasProperty.js.map +1 -1
  1102. package/build/relations/index.cjs +99 -0
  1103. package/build/relations/index.d.cts +32 -0
  1104. package/build/relations/index.d.mts +32 -0
  1105. package/build/relations/index.js +31 -97
  1106. package/build/relations/isCascadeDelete.cjs +11 -0
  1107. package/build/relations/isCascadeDelete.cjs.map +1 -0
  1108. package/build/relations/isCascadeDelete.d.cts +7 -0
  1109. package/build/relations/isCascadeDelete.d.cts.map +1 -0
  1110. package/build/relations/isCascadeDelete.d.mts +7 -0
  1111. package/build/relations/isCascadeDelete.d.mts.map +1 -0
  1112. package/build/relations/isCascadeDelete.js +10 -0
  1113. package/build/relations/isCascadeDelete.js.map +1 -0
  1114. package/build/resurrection.cjs +74 -0
  1115. package/build/resurrection.cjs.map +1 -0
  1116. package/build/resurrection.d.cts +13 -0
  1117. package/build/resurrection.d.cts.map +1 -0
  1118. package/build/resurrection.d.mts +13 -0
  1119. package/build/resurrection.d.mts.map +1 -0
  1120. package/build/resurrection.js +48 -69
  1121. package/build/resurrection.js.map +1 -1
  1122. package/build/rules.cjs +227 -0
  1123. package/build/rules.cjs.map +1 -0
  1124. package/build/rules.d.cts +145 -0
  1125. package/build/rules.d.cts.map +1 -0
  1126. package/build/rules.d.mts +145 -0
  1127. package/build/rules.d.mts.map +1 -0
  1128. package/build/rules.js +189 -204
  1129. package/build/rules.js.map +1 -1
  1130. package/build/runtimeConfig.cjs +25 -0
  1131. package/build/runtimeConfig.cjs.map +1 -0
  1132. package/build/runtimeConfig.d.cts +24 -0
  1133. package/build/runtimeConfig.d.cts.map +1 -0
  1134. package/build/runtimeConfig.d.mts +24 -0
  1135. package/build/runtimeConfig.d.mts.map +1 -0
  1136. package/build/runtimeConfig.js +16 -12
  1137. package/build/runtimeConfig.js.map +1 -1
  1138. package/build/serde/TypeInfo.cjs +80 -0
  1139. package/build/serde/TypeInfo.cjs.map +1 -0
  1140. package/build/serde/TypeInfo.d.cts +57 -0
  1141. package/build/serde/TypeInfo.d.cts.map +1 -0
  1142. package/build/serde/TypeInfo.d.mts +57 -0
  1143. package/build/serde/TypeInfo.d.mts.map +1 -0
  1144. package/build/serde/TypeInfo.js +78 -0
  1145. package/build/serde/TypeInfo.js.map +1 -0
  1146. package/build/serde/columns.cjs +63 -0
  1147. package/build/serde/columns.cjs.map +1 -0
  1148. package/build/serde/columns.d.cts +38 -0
  1149. package/build/serde/columns.d.cts.map +1 -0
  1150. package/build/serde/columns.d.mts +38 -0
  1151. package/build/serde/columns.d.mts.map +1 -0
  1152. package/build/serde/columns.js +62 -0
  1153. package/build/serde/columns.js.map +1 -0
  1154. package/build/serde/fieldSerde.cjs +188 -0
  1155. package/build/serde/fieldSerde.cjs.map +1 -0
  1156. package/build/serde/fieldSerde.d.cts +87 -0
  1157. package/build/serde/fieldSerde.d.cts.map +1 -0
  1158. package/build/serde/fieldSerde.d.mts +87 -0
  1159. package/build/serde/fieldSerde.d.mts.map +1 -0
  1160. package/build/serde/fieldSerde.js +182 -0
  1161. package/build/serde/fieldSerde.js.map +1 -0
  1162. package/build/serde/serde.cjs +499 -0
  1163. package/build/serde/serde.cjs.map +1 -0
  1164. package/build/serde/serde.d.cts +248 -0
  1165. package/build/serde/serde.d.cts.map +1 -0
  1166. package/build/serde/serde.d.mts +248 -0
  1167. package/build/serde/serde.d.mts.map +1 -0
  1168. package/build/serde/serde.js +485 -0
  1169. package/build/serde/serde.js.map +1 -0
  1170. package/build/serde/temporal.cjs +57 -0
  1171. package/build/serde/temporal.cjs.map +1 -0
  1172. package/build/serde/temporal.d.cts +44 -0
  1173. package/build/serde/temporal.d.cts.map +1 -0
  1174. package/build/serde/temporal.d.mts +44 -0
  1175. package/build/serde/temporal.d.mts.map +1 -0
  1176. package/build/serde/temporal.js +55 -0
  1177. package/build/serde/temporal.js.map +1 -0
  1178. package/build/serde/temporalMappers.cjs +62 -0
  1179. package/build/serde/temporalMappers.cjs.map +1 -0
  1180. package/build/serde/temporalMappers.d.cts +36 -0
  1181. package/build/serde/temporalMappers.d.cts.map +1 -0
  1182. package/build/serde/temporalMappers.d.mts +36 -0
  1183. package/build/serde/temporalMappers.d.mts.map +1 -0
  1184. package/build/serde/temporalMappers.js +58 -0
  1185. package/build/serde/temporalMappers.js.map +1 -0
  1186. package/build/trusted.cjs +16 -0
  1187. package/build/trusted.cjs.map +1 -0
  1188. package/build/trusted.d.cts +8 -0
  1189. package/build/trusted.d.cts.map +1 -0
  1190. package/build/trusted.d.mts +8 -0
  1191. package/build/trusted.d.mts.map +1 -0
  1192. package/build/trusted.js +8 -8
  1193. package/build/trusted.js.map +1 -1
  1194. package/build/typeMap.cjs +3 -0
  1195. package/build/typeMap.d.cts +88 -0
  1196. package/build/typeMap.d.cts.map +1 -0
  1197. package/build/typeMap.d.mts +88 -0
  1198. package/build/typeMap.d.mts.map +1 -0
  1199. package/build/typeMap.js +3 -3
  1200. package/build/upsert.cjs +175 -0
  1201. package/build/upsert.cjs.map +1 -0
  1202. package/build/upsert.d.cts +42 -0
  1203. package/build/upsert.d.cts.map +1 -0
  1204. package/build/upsert.d.mts +42 -0
  1205. package/build/upsert.d.mts.map +1 -0
  1206. package/build/upsert.js +159 -274
  1207. package/build/upsert.js.map +1 -1
  1208. package/build/utils.cjs +204 -0
  1209. package/build/utils.cjs.map +1 -0
  1210. package/build/utils.d.cts +65 -0
  1211. package/build/utils.d.cts.map +1 -0
  1212. package/build/utils.d.mts +65 -0
  1213. package/build/utils.d.mts.map +1 -0
  1214. package/build/utils.js +123 -192
  1215. package/build/utils.js.map +1 -1
  1216. package/package.json +34 -14
  1217. package/build/AliasAssigner.d.ts +0 -10
  1218. package/build/AliasAssigner.d.ts.map +0 -1
  1219. package/build/AliasAssigner.js +0 -39
  1220. package/build/AliasAssigner.js.map +0 -1
  1221. package/build/Aliases.d.ts +0 -117
  1222. package/build/Aliases.d.ts.map +0 -1
  1223. package/build/Aliases.js +0 -457
  1224. package/build/Aliases.js.map +0 -1
  1225. package/build/BaseEntity.d.ts +0 -68
  1226. package/build/BaseEntity.d.ts.map +0 -1
  1227. package/build/ConditionBuilder.d.ts +0 -29
  1228. package/build/ConditionBuilder.d.ts.map +0 -1
  1229. package/build/ConditionBuilder.js +0 -112
  1230. package/build/ConditionBuilder.js.map +0 -1
  1231. package/build/Entity.d.ts +0 -39
  1232. package/build/Entity.d.ts.map +0 -1
  1233. package/build/EntityFields.d.ts +0 -37
  1234. package/build/EntityFields.d.ts.map +0 -1
  1235. package/build/EntityFields.js.map +0 -1
  1236. package/build/EntityFilter.d.ts +0 -134
  1237. package/build/EntityFilter.d.ts.map +0 -1
  1238. package/build/EntityFilter.js +0 -21
  1239. package/build/EntityFilter.js.map +0 -1
  1240. package/build/EntityGraphQLFilter.d.ts +0 -56
  1241. package/build/EntityGraphQLFilter.d.ts.map +0 -1
  1242. package/build/EntityGraphQLFilter.js +0 -53
  1243. package/build/EntityGraphQLFilter.js.map +0 -1
  1244. package/build/EntityManager.d.ts +0 -740
  1245. package/build/EntityManager.d.ts.map +0 -1
  1246. package/build/EntityMetadata.d.ts +0 -233
  1247. package/build/EntityMetadata.d.ts.map +0 -1
  1248. package/build/EnumMetadata.d.ts +0 -15
  1249. package/build/EnumMetadata.d.ts.map +0 -1
  1250. package/build/EnumMetadata.js.map +0 -1
  1251. package/build/FlushLock.d.ts +0 -26
  1252. package/build/FlushLock.d.ts.map +0 -1
  1253. package/build/FlushLock.js +0 -57
  1254. package/build/FlushLock.js.map +0 -1
  1255. package/build/HintTree.d.ts +0 -42
  1256. package/build/HintTree.d.ts.map +0 -1
  1257. package/build/HintTree.js +0 -64
  1258. package/build/HintTree.js.map +0 -1
  1259. package/build/IndexManager.d.ts +0 -31
  1260. package/build/IndexManager.d.ts.map +0 -1
  1261. package/build/InstanceData.d.ts +0 -79
  1262. package/build/InstanceData.d.ts.map +0 -1
  1263. package/build/IsLoadedCache.d.ts +0 -32
  1264. package/build/IsLoadedCache.d.ts.map +0 -1
  1265. package/build/IsLoadedCache.js +0 -91
  1266. package/build/IsLoadedCache.js.map +0 -1
  1267. package/build/JoinRows.d.ts +0 -117
  1268. package/build/JoinRows.d.ts.map +0 -1
  1269. package/build/JoinRows.js +0 -320
  1270. package/build/JoinRows.js.map +0 -1
  1271. package/build/PendingChanges.d.ts +0 -26
  1272. package/build/PendingChanges.d.ts.map +0 -1
  1273. package/build/PendingChanges.js +0 -3
  1274. package/build/PendingChanges.js.map +0 -1
  1275. package/build/PluginManager.d.ts +0 -102
  1276. package/build/PluginManager.d.ts.map +0 -1
  1277. package/build/QueryParser.collectionJoins.d.ts +0 -27
  1278. package/build/QueryParser.collectionJoins.d.ts.map +0 -1
  1279. package/build/QueryParser.collectionJoins.js +0 -466
  1280. package/build/QueryParser.collectionJoins.js.map +0 -1
  1281. package/build/QueryParser.collectionJoins.test.d.ts +0 -2
  1282. package/build/QueryParser.collectionJoins.test.d.ts.map +0 -1
  1283. package/build/QueryParser.collectionJoins.test.js +0 -772
  1284. package/build/QueryParser.collectionJoins.test.js.map +0 -1
  1285. package/build/QueryParser.d.ts +0 -336
  1286. package/build/QueryParser.d.ts.map +0 -1
  1287. package/build/QueryParser.js +0 -965
  1288. package/build/QueryParser.js.map +0 -1
  1289. package/build/QueryParser.pruning.d.ts +0 -7
  1290. package/build/QueryParser.pruning.d.ts.map +0 -1
  1291. package/build/QueryParser.pruning.js +0 -195
  1292. package/build/QueryParser.pruning.js.map +0 -1
  1293. package/build/QueryParser.pruning.test.d.ts +0 -2
  1294. package/build/QueryParser.pruning.test.d.ts.map +0 -1
  1295. package/build/QueryParser.pruning.test.js +0 -106
  1296. package/build/QueryParser.pruning.test.js.map +0 -1
  1297. package/build/QueryParser.test.d.ts +0 -2
  1298. package/build/QueryParser.test.d.ts.map +0 -1
  1299. package/build/QueryParser.test.js +0 -27
  1300. package/build/QueryParser.test.js.map +0 -1
  1301. package/build/QueryVisitor.d.ts +0 -19
  1302. package/build/QueryVisitor.d.ts.map +0 -1
  1303. package/build/QueryVisitor.js +0 -106
  1304. package/build/QueryVisitor.js.map +0 -1
  1305. package/build/ReactionsManager.d.ts +0 -85
  1306. package/build/ReactionsManager.d.ts.map +0 -1
  1307. package/build/ReactionsManager.js +0 -315
  1308. package/build/ReactionsManager.js.map +0 -1
  1309. package/build/Todo.d.ts +0 -35
  1310. package/build/Todo.d.ts.map +0 -1
  1311. package/build/Todo.js +0 -73
  1312. package/build/Todo.js.map +0 -1
  1313. package/build/batchloaders/BatchLoader.d.ts +0 -14
  1314. package/build/batchloaders/BatchLoader.d.ts.map +0 -1
  1315. package/build/batchloaders/enumCollectionBatchLoader.d.ts +0 -7
  1316. package/build/batchloaders/enumCollectionBatchLoader.d.ts.map +0 -1
  1317. package/build/batchloaders/loadBatchLoader.d.ts +0 -17
  1318. package/build/batchloaders/loadBatchLoader.d.ts.map +0 -1
  1319. package/build/batchloaders/manyToManyBatchLoader.d.ts +0 -7
  1320. package/build/batchloaders/manyToManyBatchLoader.d.ts.map +0 -1
  1321. package/build/batchloaders/oneToManyBatchLoader.d.ts +0 -7
  1322. package/build/batchloaders/oneToManyBatchLoader.d.ts.map +0 -1
  1323. package/build/batchloaders/oneToOneBatchLoader.d.ts +0 -7
  1324. package/build/batchloaders/oneToOneBatchLoader.d.ts.map +0 -1
  1325. package/build/batchloaders/populateBatchLoader.d.ts +0 -13
  1326. package/build/batchloaders/populateBatchLoader.d.ts.map +0 -1
  1327. package/build/batchloaders/recursiveChildrenBatchLoader.d.ts +0 -7
  1328. package/build/batchloaders/recursiveChildrenBatchLoader.d.ts.map +0 -1
  1329. package/build/batchloaders/recursiveM2mBatchLoader.d.ts +0 -7
  1330. package/build/batchloaders/recursiveM2mBatchLoader.d.ts.map +0 -1
  1331. package/build/batchloaders/recursiveParentsBatchLoader.d.ts +0 -7
  1332. package/build/batchloaders/recursiveParentsBatchLoader.d.ts.map +0 -1
  1333. package/build/changes.d.ts +0 -92
  1334. package/build/changes.d.ts.map +0 -1
  1335. package/build/config.d.ts +0 -250
  1336. package/build/config.d.ts.map +0 -1
  1337. package/build/config.test.d.ts +0 -2
  1338. package/build/config.test.d.ts.map +0 -1
  1339. package/build/config.test.js +0 -53
  1340. package/build/config.test.js.map +0 -1
  1341. package/build/configure.d.ts +0 -15
  1342. package/build/configure.d.ts.map +0 -1
  1343. package/build/dataloaders/fastWhereFilterHash.d.ts +0 -15
  1344. package/build/dataloaders/fastWhereFilterHash.d.ts.map +0 -1
  1345. package/build/dataloaders/fastWhereFilterHash.test.d.ts +0 -2
  1346. package/build/dataloaders/fastWhereFilterHash.test.d.ts.map +0 -1
  1347. package/build/dataloaders/fastWhereFilterHash.test.js +0 -59
  1348. package/build/dataloaders/fastWhereFilterHash.test.js.map +0 -1
  1349. package/build/dataloaders/findByUniqueDataLoader.d.ts +0 -7
  1350. package/build/dataloaders/findByUniqueDataLoader.d.ts.map +0 -1
  1351. package/build/dataloaders/findCountDataLoader.d.ts +0 -16
  1352. package/build/dataloaders/findCountDataLoader.d.ts.map +0 -1
  1353. package/build/dataloaders/findDataLoader.d.ts +0 -76
  1354. package/build/dataloaders/findDataLoader.d.ts.map +0 -1
  1355. package/build/dataloaders/findIdsDataLoader.d.ts +0 -6
  1356. package/build/dataloaders/findIdsDataLoader.d.ts.map +0 -1
  1357. package/build/dataloaders/findOrCreateDataLoader.d.ts +0 -13
  1358. package/build/dataloaders/findOrCreateDataLoader.d.ts.map +0 -1
  1359. package/build/dataloaders/findPaginatedDataLoader.d.ts +0 -7
  1360. package/build/dataloaders/findPaginatedDataLoader.d.ts.map +0 -1
  1361. package/build/dataloaders/lensDataLoader.d.ts +0 -12
  1362. package/build/dataloaders/lensDataLoader.d.ts.map +0 -1
  1363. package/build/dataloaders/manyToManyFindDataLoader.d.ts +0 -8
  1364. package/build/dataloaders/manyToManyFindDataLoader.d.ts.map +0 -1
  1365. package/build/dataloaders/oneToManyFindDataLoader.d.ts +0 -8
  1366. package/build/dataloaders/oneToManyFindDataLoader.d.ts.map +0 -1
  1367. package/build/defaults.d.ts +0 -54
  1368. package/build/defaults.d.ts.map +0 -1
  1369. package/build/driverApi.d.ts +0 -19
  1370. package/build/driverApi.d.ts.map +0 -1
  1371. package/build/driverApi.js +0 -17
  1372. package/build/driverApi.js.map +0 -1
  1373. package/build/drivers/Driver.d.ts +0 -26
  1374. package/build/drivers/Driver.d.ts.map +0 -1
  1375. package/build/drivers/Driver.js.map +0 -1
  1376. package/build/drivers/EntityWriter.d.ts +0 -64
  1377. package/build/drivers/EntityWriter.d.ts.map +0 -1
  1378. package/build/drivers/IdAssigner.d.ts +0 -48
  1379. package/build/drivers/IdAssigner.d.ts.map +0 -1
  1380. package/build/drivers/buildRawQuery.d.ts +0 -22
  1381. package/build/drivers/buildRawQuery.d.ts.map +0 -1
  1382. package/build/drivers/buildRawQuery.js +0 -153
  1383. package/build/drivers/buildRawQuery.js.map +0 -1
  1384. package/build/drivers/buildUtils.d.ts +0 -9
  1385. package/build/drivers/buildUtils.d.ts.map +0 -1
  1386. package/build/drivers/buildUtils.js +0 -88
  1387. package/build/drivers/buildUtils.js.map +0 -1
  1388. package/build/drivers/index.d.ts +0 -6
  1389. package/build/drivers/index.d.ts.map +0 -1
  1390. package/build/drivers/index.js.map +0 -1
  1391. package/build/fields.d.ts +0 -26
  1392. package/build/fields.d.ts.map +0 -1
  1393. package/build/getProperties.d.ts +0 -28
  1394. package/build/getProperties.d.ts.map +0 -1
  1395. package/build/index.d.ts +0 -133
  1396. package/build/index.d.ts.map +0 -1
  1397. package/build/json.d.ts +0 -77
  1398. package/build/json.d.ts.map +0 -1
  1399. package/build/k.d.ts +0 -2
  1400. package/build/k.d.ts.map +0 -1
  1401. package/build/keys.d.ts +0 -49
  1402. package/build/keys.d.ts.map +0 -1
  1403. package/build/keywords.d.ts +0 -5
  1404. package/build/keywords.d.ts.map +0 -1
  1405. package/build/keywords.js +0 -124
  1406. package/build/keywords.js.map +0 -1
  1407. package/build/loadHints.d.ts +0 -121
  1408. package/build/loadHints.d.ts.map +0 -1
  1409. package/build/loadHints.js +0 -129
  1410. package/build/loadHints.js.map +0 -1
  1411. package/build/loadLens.d.ts +0 -77
  1412. package/build/loadLens.d.ts.map +0 -1
  1413. package/build/loadLens.js +0 -320
  1414. package/build/loadLens.js.map +0 -1
  1415. package/build/logging/FactoryLogger.d.ts +0 -24
  1416. package/build/logging/FactoryLogger.d.ts.map +0 -1
  1417. package/build/logging/FieldLogger.d.ts +0 -27
  1418. package/build/logging/FieldLogger.d.ts.map +0 -1
  1419. package/build/logging/ReactionLogger.d.ts +0 -27
  1420. package/build/logging/ReactionLogger.d.ts.map +0 -1
  1421. package/build/newEntity.d.ts +0 -45
  1422. package/build/newEntity.d.ts.map +0 -1
  1423. package/build/newTestInstance.d.ts +0 -208
  1424. package/build/newTestInstance.d.ts.map +0 -1
  1425. package/build/normalizeHints.d.ts +0 -23
  1426. package/build/normalizeHints.d.ts.map +0 -1
  1427. package/build/plugins/ImmutableEntitiesPlugin.d.ts +0 -9
  1428. package/build/plugins/ImmutableEntitiesPlugin.d.ts.map +0 -1
  1429. package/build/plugins/PreloadPlugin.d.ts +0 -69
  1430. package/build/plugins/PreloadPlugin.d.ts.map +0 -1
  1431. package/build/plugins/PreloadPlugin.js.map +0 -1
  1432. package/build/preloading/JsonAggregatePreloader.d.ts +0 -16
  1433. package/build/preloading/JsonAggregatePreloader.d.ts.map +0 -1
  1434. package/build/preloading/canPreload.d.ts +0 -3
  1435. package/build/preloading/canPreload.d.ts.map +0 -1
  1436. package/build/preloading/partitionHint.d.ts +0 -5
  1437. package/build/preloading/partitionHint.d.ts.map +0 -1
  1438. package/build/reactiveHints.d.ts +0 -146
  1439. package/build/reactiveHints.d.ts.map +0 -1
  1440. package/build/reactiveHints.js +0 -509
  1441. package/build/reactiveHints.js.map +0 -1
  1442. package/build/relations/AbstractPropertyImpl.d.ts +0 -8
  1443. package/build/relations/AbstractPropertyImpl.d.ts.map +0 -1
  1444. package/build/relations/AbstractRelationImpl.d.ts +0 -41
  1445. package/build/relations/AbstractRelationImpl.d.ts.map +0 -1
  1446. package/build/relations/AsyncProperty.d.ts +0 -36
  1447. package/build/relations/AsyncProperty.d.ts.map +0 -1
  1448. package/build/relations/AsyncReactiveField.d.ts +0 -41
  1449. package/build/relations/AsyncReactiveField.d.ts.map +0 -1
  1450. package/build/relations/Collection.d.ts +0 -33
  1451. package/build/relations/Collection.d.ts.map +0 -1
  1452. package/build/relations/CustomCollection.d.ts +0 -69
  1453. package/build/relations/CustomCollection.d.ts.map +0 -1
  1454. package/build/relations/CustomReference.d.ts +0 -71
  1455. package/build/relations/CustomReference.d.ts.map +0 -1
  1456. package/build/relations/EnumCollection.d.ts +0 -81
  1457. package/build/relations/EnumCollection.d.ts.map +0 -1
  1458. package/build/relations/LargeCollection.d.ts +0 -19
  1459. package/build/relations/LargeCollection.d.ts.map +0 -1
  1460. package/build/relations/LargeCollection.js.map +0 -1
  1461. package/build/relations/ManyToManyCollection.d.ts +0 -52
  1462. package/build/relations/ManyToManyCollection.d.ts.map +0 -1
  1463. package/build/relations/ManyToManyLargeCollection.d.ts +0 -31
  1464. package/build/relations/ManyToManyLargeCollection.d.ts.map +0 -1
  1465. package/build/relations/ManyToOneReference.d.ts +0 -117
  1466. package/build/relations/ManyToOneReference.d.ts.map +0 -1
  1467. package/build/relations/OneToManyCollection.d.ts +0 -62
  1468. package/build/relations/OneToManyCollection.d.ts.map +0 -1
  1469. package/build/relations/OneToManyLargeCollection.d.ts +0 -26
  1470. package/build/relations/OneToManyLargeCollection.d.ts.map +0 -1
  1471. package/build/relations/OneToOneReference.d.ts +0 -93
  1472. package/build/relations/OneToOneReference.d.ts.map +0 -1
  1473. package/build/relations/PolymorphicReference.d.ts +0 -89
  1474. package/build/relations/PolymorphicReference.d.ts.map +0 -1
  1475. package/build/relations/ReactiveField.d.ts +0 -85
  1476. package/build/relations/ReactiveField.d.ts.map +0 -1
  1477. package/build/relations/ReactiveGetter.d.ts +0 -30
  1478. package/build/relations/ReactiveGetter.d.ts.map +0 -1
  1479. package/build/relations/ReactiveManyToMany.d.ts +0 -57
  1480. package/build/relations/ReactiveManyToMany.d.ts.map +0 -1
  1481. package/build/relations/ReactiveManyToManyOtherSide.d.ts +0 -48
  1482. package/build/relations/ReactiveManyToManyOtherSide.d.ts.map +0 -1
  1483. package/build/relations/ReactiveReference.d.ts +0 -119
  1484. package/build/relations/ReactiveReference.d.ts.map +0 -1
  1485. package/build/relations/ReadOnlyCollection.d.ts +0 -19
  1486. package/build/relations/ReadOnlyCollection.d.ts.map +0 -1
  1487. package/build/relations/RecursiveCollection.d.ts +0 -108
  1488. package/build/relations/RecursiveCollection.d.ts.map +0 -1
  1489. package/build/relations/RecursiveCycleError.d.ts +0 -13
  1490. package/build/relations/RecursiveCycleError.d.ts.map +0 -1
  1491. package/build/relations/Reference.d.ts +0 -35
  1492. package/build/relations/Reference.d.ts.map +0 -1
  1493. package/build/relations/Relation.d.ts +0 -14
  1494. package/build/relations/Relation.d.ts.map +0 -1
  1495. package/build/relations/hasAsyncMethod.d.ts +0 -27
  1496. package/build/relations/hasAsyncMethod.d.ts.map +0 -1
  1497. package/build/relations/hasManyDerived.d.ts +0 -22
  1498. package/build/relations/hasManyDerived.d.ts.map +0 -1
  1499. package/build/relations/hasManyThrough.d.ts +0 -10
  1500. package/build/relations/hasManyThrough.d.ts.map +0 -1
  1501. package/build/relations/hasOneDerived.d.ts +0 -12
  1502. package/build/relations/hasOneDerived.d.ts.map +0 -1
  1503. package/build/relations/hasOneThrough.d.ts +0 -10
  1504. package/build/relations/hasOneThrough.d.ts.map +0 -1
  1505. package/build/relations/hasProperty.d.ts +0 -50
  1506. package/build/relations/hasProperty.d.ts.map +0 -1
  1507. package/build/relations/index.d.ts +0 -30
  1508. package/build/relations/index.d.ts.map +0 -1
  1509. package/build/relations/index.js.map +0 -1
  1510. package/build/resurrection.d.ts +0 -10
  1511. package/build/resurrection.d.ts.map +0 -1
  1512. package/build/rules.d.ts +0 -123
  1513. package/build/rules.d.ts.map +0 -1
  1514. package/build/runtimeConfig.d.ts +0 -17
  1515. package/build/runtimeConfig.d.ts.map +0 -1
  1516. package/build/scopes.d.ts +0 -185
  1517. package/build/scopes.d.ts.map +0 -1
  1518. package/build/scopes.js +0 -302
  1519. package/build/scopes.js.map +0 -1
  1520. package/build/serde.d.ts +0 -277
  1521. package/build/serde.d.ts.map +0 -1
  1522. package/build/serde.js +0 -517
  1523. package/build/serde.js.map +0 -1
  1524. package/build/temporal.d.ts +0 -46
  1525. package/build/temporal.d.ts.map +0 -1
  1526. package/build/temporal.js +0 -66
  1527. package/build/temporal.js.map +0 -1
  1528. package/build/temporalMappers.d.ts +0 -25
  1529. package/build/temporalMappers.d.ts.map +0 -1
  1530. package/build/temporalMappers.js +0 -59
  1531. package/build/temporalMappers.js.map +0 -1
  1532. package/build/trusted.d.ts +0 -5
  1533. package/build/trusted.d.ts.map +0 -1
  1534. package/build/typeMap.d.ts +0 -68
  1535. package/build/typeMap.d.ts.map +0 -1
  1536. package/build/typeMap.js.map +0 -1
  1537. package/build/unnest.d.ts +0 -13
  1538. package/build/unnest.d.ts.map +0 -1
  1539. package/build/unnest.js +0 -85
  1540. package/build/unnest.js.map +0 -1
  1541. package/build/upsert.d.ts +0 -42
  1542. package/build/upsert.d.ts.map +0 -1
  1543. package/build/utils.d.ts +0 -60
  1544. package/build/utils.d.ts.map +0 -1
  1545. package/build/withLoaded.d.ts +0 -56
  1546. package/build/withLoaded.d.ts.map +0 -1
  1547. package/build/withLoaded.js +0 -76
  1548. package/build/withLoaded.js.map +0 -1
@@ -0,0 +1,1657 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_queries_sql_keywords = require("./keywords.cjs");
3
+ const require_queries_skipCondition = require("../skipCondition.cjs");
4
+ const require_queries_conditions = require("../conditions.cjs");
5
+ const require_queries_find_DeferredAlias = require("../find/DeferredAlias.cjs");
6
+ const require_queries_ConditionBuilder = require("../ConditionBuilder.cjs");
7
+ const require_queries_entityQueryUtils = require("../entityQueryUtils.cjs");
8
+ const require_queries_parsedConditions = require("../parsedConditions.cjs");
9
+ const require_queries_sql_Expr = require("./Expr.cjs");
10
+ const require_utils = require("../../utils.cjs");
11
+ const require_EntityMetadata = require("../../EntityMetadata.cjs");
12
+ const require_queries_renderConditions = require("../renderConditions.cjs");
13
+ const require_queries_sql_AliasAssigner = require("./AliasAssigner.cjs");
14
+ const require_queries_sql_Tables = require("./Tables.cjs");
15
+ const require_queries_sql_expressions_expression = require("./expressions/expression.cjs");
16
+ const require_queries_sql_JoinTree = require("./JoinTree.cjs");
17
+ //#region src/queries/sql/query.ts
18
+ /**
19
+ * `em.query`: SQL-shaped queries as plain object literals.
20
+ *
21
+ * A query is data, a `Query<S, J>` POJO, `{ from, join, where, groupBy, having, select, orderBy, ... }`
22
+ * in SQL evaluation order:
23
+ *
24
+ * const [a, b] = tables(Author, Book);
25
+ * const bookStats = query({ from: b, groupBy: [b.author_id], select: { authorId: b.author_id, n: b.id.count() } });
26
+ * const rows = await em.query({
27
+ * from: a,
28
+ * join: [{ left: bookStats, on: bookStats.authorId.eq(a.id) }],
29
+ * select: { name: a.first_name, n: bookStats.n },
30
+ * orderBy: { n: "DESC" },
31
+ * });
32
+ * // rows: { name: string; n: number | undefined }[] (undefined because of the LEFT join)
33
+ *
34
+ * `em.query(pojo)` runs it. `select` decides the row type: a bare table returns entities, an array of
35
+ * columns or a `{ key: expr }` object returns typed POJOs, and a bare subquery returns its rows.
36
+ *
37
+ * `query(pojo)` turns the *same* POJO into a value: a derived table with typed columns, a scalar
38
+ * expression, or an entity list. It is the one non-POJO step, and the subquery analog of `table(Author)`:
39
+ * to reference a query's columns, the outer query needs *values* for them, and no POJO can manufacture
40
+ * values keyed off its own `select` keys.
41
+ *
42
+ * `table()`/`tables()` and `query()` are the only free functions a query needs, plus the `sql` tagged
43
+ * template as the escape hatch for SQL with no modeled shape. Everything else is in-DSL: join kinds are
44
+ * keyword keys (`{ left: b, on }`), SQL functions are methods on
45
+ * expressions (`b.id.count()`, `b.title.max()`, `x.coalesce(0)`), conditions are methods
46
+ * (`a.age.gte(18)`), and pruning is `undefined`: an `undefined` condition drops out, and a join nothing
47
+ * references anymore drops with it (see "Pruning" below).
48
+ *
49
+ * User documentation: `docs/src/content/docs/features/queries-raw.md`.
50
+ */
51
+ const subqueryBrand = Symbol("joist.subquery");
52
+ const entityQueryBrand = Symbol("joist.entityQuery");
53
+ const scalarQueryBrand = Symbol("joist.scalarQuery");
54
+ function query(q) {
55
+ return createQueryValue(q);
56
+ }
57
+ /**
58
+ * Builds a query value only when its user-supplied `where` or join-tree filters survive pruning.
59
+ *
60
+ * Missing or empty conditions prune the value, including nested groups and `pruneIfUndefined`.
61
+ * Alias-only joins, HAVING, and implicit soft-delete/STI conditions do not keep the value alive.
62
+ *
63
+ * I.e. `queryMaybe({ from: b, where: b.authorId.eq(enabled ? a.id : undefined), select: b.id })`
64
+ * returns `undefined` when `enabled` is false, so an enclosing `notExists` also prunes.
65
+ */
66
+ function queryMaybe(q) {
67
+ return createMaybeQueryValue(q);
68
+ }
69
+ /** Applies queryMaybe's structural pruning before creating any kind of read-query value. */
70
+ function createMaybeQueryValue(q) {
71
+ const normalized = normalizeQueryJoins(q);
72
+ const where = normalizeWhere(normalized.where);
73
+ checkCondition(where);
74
+ return isPrunedQueryCondition(where) ? void 0 : createQueryValue(normalized);
75
+ }
76
+ /**
77
+ * Declares a `WITH RECURSIVE` CTE from its two terms, and returns the CTE as a readable value.
78
+ *
79
+ * `base` is the non-recursive term, which seeds the rows and, as in PostgreSQL, supplies the CTE's
80
+ * columns. `step` is the recursive term: it receives the CTE itself, so it can join back to the rows
81
+ * found so far. The two terms are combined with UNION ALL, or UNION when `union: "distinct"` drops
82
+ * duplicates, which is how a cyclic graph is kept from looping forever.
83
+ *
84
+ * ```ts
85
+ * const [a] = tables(Author);
86
+ * const tree = recursiveQuery(
87
+ * "tree",
88
+ * { from: a, where: a.mentor_id.isNull(), select: { id: a.id, mentorId: a.mentor_id } },
89
+ * (self) => ({
90
+ * from: a,
91
+ * join: [{ inner: self, on: a.mentor_id.eq(self.id) }],
92
+ * select: { id: a.id, mentorId: a.mentor_id },
93
+ * }),
94
+ * );
95
+ * const rows = await em.query({ with: tree, from: tree, select: tree });
96
+ * ```
97
+ *
98
+ * Unlike `query()`, the name is required, because the step term must name it.
99
+ */
100
+ function recursiveQuery(name, base, step, opts = {}) {
101
+ if (typeof name !== "string" || name === "") require_utils.fail("A recursive CTE needs a name");
102
+ if (opts.union !== void 0 && opts.union !== "all" && opts.union !== "distinct") require_utils.fail("A recursive CTE's union must be 'all' or 'distinct'");
103
+ const handle = new SubqueryHandle(toQuery(base), true);
104
+ if (handle.output().kind !== "pojo") require_utils.fail("A recursive CTE's base term needs a named projection");
105
+ const self = newSubqueryProxy(handle);
106
+ const operands = [base, step(self)];
107
+ handle.setBody(opts.union === "distinct" ? {
108
+ union: operands,
109
+ as: name
110
+ } : {
111
+ unionAll: operands,
112
+ as: name
113
+ });
114
+ return self;
115
+ }
116
+ /**
117
+ * Builds a SQL expression from a tagged template.
118
+ *
119
+ * For an Author alias `a` assigned the SQL alias `a1`:
120
+ *
121
+ * ```ts
122
+ * sql`${a.age} * 2` // Expression: a1.age * 2
123
+ * sql`${a.age.gte(18)}` // Condition: (a1.age >= ?), bindings [18]
124
+ * sql`${"Alice"}` // Value: ?, bindings ["Alice"]
125
+ *
126
+ * // Selecting this expression keeps the join to Book b.
127
+ * sql.number`${b.order} * ${2}`
128
+ *
129
+ * // Reference an unmodeled column; prefer the table's own `column`, which keeps its source key.
130
+ * a.column<string>("ts_search")
131
+ * sql.condition`${a.column("ts_search")} @@ plainto_tsquery(${term})`
132
+ * ```
133
+ */
134
+ function sql(strings, ...values) {
135
+ return typedSql(strings, ...values);
136
+ }
137
+ /** Shorthand for `sql<number>`; does not cast or convert the SQL result. */
138
+ sql.number = typedSql;
139
+ /** Shorthand for `sql<number | null>`; does not cast or convert the SQL result. */
140
+ sql.numberOrNull = typedSql;
141
+ /** Shorthand for `sql<number[]>`; does not cast or convert the SQL result. */
142
+ sql.numberArray = typedSql;
143
+ /** Shorthand for `sql<number[] | null>`; does not cast or convert the SQL result. */
144
+ sql.numberArrayOrNull = typedSql;
145
+ /** Shorthand for `sql<string>`; does not cast or convert the SQL result. */
146
+ sql.string = typedSql;
147
+ /** Shorthand for `sql<string | null>`; does not cast or convert the SQL result. */
148
+ sql.stringOrNull = typedSql;
149
+ /** Shorthand for `sql<string[]>`; does not cast or convert the SQL result. */
150
+ sql.stringArray = typedSql;
151
+ /** Shorthand for `sql<string[] | null>`; does not cast or convert the SQL result. */
152
+ sql.stringArrayOrNull = typedSql;
153
+ /** Shorthand for `sql<boolean>`; does not cast or convert the SQL result. */
154
+ sql.boolean = typedSql;
155
+ /** Shorthand for `sql<boolean | null>`; does not cast or convert the SQL result. */
156
+ sql.booleanOrNull = typedSql;
157
+ /** Shorthand for `sql<boolean[]>`; does not cast or convert the SQL result. */
158
+ sql.booleanArray = typedSql;
159
+ /** Shorthand for `sql<boolean[] | null>`; does not cast or convert the SQL result. */
160
+ sql.booleanArrayOrNull = typedSql;
161
+ /** A raw condition for `where`, `having`, or `on`. */
162
+ sql.condition = function condition(strings, ...values) {
163
+ return require_queries_sql_Expr.deferredCondition((ctx) => new require_queries_sql_Expr.TemplateExpr(strings, values).toSql(ctx));
164
+ };
165
+ /**
166
+ * Parses `arg` (a `Query` POJO or `query(...)` value) into a runnable `Plan`.
167
+ *
168
+ * `EntityManager.query` runs the plan; this module deliberately does not import `EntityManager` (see
169
+ * `EntityHydrator`), so it parses and hands back `{ sql, bindings, decodeRows }` instead of executing.
170
+ */
171
+ function parseRootQuery(arg) {
172
+ if (arg instanceof SubqueryExpr) require_utils.fail("Scalar query values are expressions, not executable read inputs");
173
+ return parseQuery(toQuery(arg), void 0, new require_queries_sql_AliasAssigner.AliasAssigner());
174
+ }
175
+ /**
176
+ * Parses a read that sits inside another statement, i.e. an INSERT's SELECT source, so it resolves that
177
+ * statement's CTEs and shares its alias space instead of generating names that could collide with them.
178
+ */
179
+ function parseNestedQuery(arg, parent, assigner) {
180
+ if (arg instanceof SubqueryExpr) require_utils.fail("Scalar query values are expressions, not executable read inputs");
181
+ return parseQuery(toQuery(arg), parent, assigner);
182
+ }
183
+ /** Recognizes read brands, including malformed hybrids that must reach read validation rather than mutation execution. */
184
+ function isReadQueryValue(arg) {
185
+ return isSubqueryValue(arg) || isEntityQueryValue(arg);
186
+ }
187
+ /**
188
+ * Compiles scalar or nonempty named expression projections, shared by SELECT and mutation RETURNING.
189
+ * Source-shaped values need read hydration/source rules and are deliberately excluded here.
190
+ */
191
+ function projectionToSql(select, ctx, joins) {
192
+ const output = joinedOutput(projectionOutput(select), joins);
193
+ if (output.kind === "scalar") {
194
+ const expr = output.columns[0][1];
195
+ const fragment = expr.toSql(ctx);
196
+ return {
197
+ selects: [{
198
+ ...fragment,
199
+ sql: `${fragment.sql} AS value`
200
+ }],
201
+ decodeRows: (_, rows) => rows.map((row) => decodeValue(expr, row.value)),
202
+ output
203
+ };
204
+ }
205
+ const entries = output.columns;
206
+ return {
207
+ selects: entries.map((entry) => {
208
+ const [key, expr] = entry;
209
+ const fragment = expr.toSql(ctx);
210
+ return {
211
+ ...fragment,
212
+ sql: `${fragment.sql} AS ${require_queries_sql_keywords.safeKq(key)}`
213
+ };
214
+ }),
215
+ decodeRows: (_, rows) => rows.map((row) => decodeRow(row, entries)),
216
+ output
217
+ };
218
+ }
219
+ /** The runtime identity of a `query(...)` value; `Ctx.aliasFor` keys on it, like a table's `TableMgmt`. */
220
+ var SubqueryHandle = class {
221
+ recursive;
222
+ #q;
223
+ #output;
224
+ constructor(q, recursive = false) {
225
+ this.recursive = recursive;
226
+ this.#q = q;
227
+ }
228
+ get q() {
229
+ return this.#q;
230
+ }
231
+ /**
232
+ * Gives a recursive CTE its finished body.
233
+ *
234
+ * `recursiveQuery(name, base, step)` cannot hand us the real body up front: it has to call `step` to
235
+ * get it, and `step` needs this handle first, because the recursive half of the query references the
236
+ * CTE's own columns. So the handle starts out holding `base` alone, and the real body, `base UNION
237
+ * step`, arrives here afterwards. Either way PostgreSQL takes the CTE's column names from `base`.
238
+ */
239
+ setBody(q) {
240
+ if (!this.recursive) require_utils.fail("Only a recursive CTE replaces its body");
241
+ this.#q = q;
242
+ this.#output = void 0;
243
+ }
244
+ get name() {
245
+ return this.q.as;
246
+ }
247
+ /** The select keys, for `select: <subquery>` and for reporting unknown columns. */
248
+ columnKeys() {
249
+ const output = this.output();
250
+ if (output.kind === "pojo") return output.columns.map(([key]) => key);
251
+ return require_utils.fail(`A query value with an entity or scalar select has no columns`);
252
+ }
253
+ /** The inner expression behind `key`, for its decoder/encoder. */
254
+ columnExpr(key) {
255
+ return this.output().columns.find(([name]) => name === key)?.[1] ?? require_utils.fail(`Query value ${this.describe()} has no column ${key}`);
256
+ }
257
+ /**
258
+ * The output columns, in order, with the codec for each; worked out without generating any SQL.
259
+ *
260
+ * Cached, because the answer is expensive to work out and gets asked for a lot:
261
+ *
262
+ * - `queryOutput` re-checks the whole query, converts a `join: { books: ... }` relationship tree
263
+ * back into a flat list of joins, and repeats all of that for every operand of a set query.
264
+ * - A `query(...)` value has no real properties. `bookStats.n` runs a `Proxy` get that builds a new
265
+ * column expression, and building one needs this method's answer to find `n`. So selecting two of
266
+ * a value's columns asked for the whole shape twice, before parsing then asked a third time.
267
+ *
268
+ * `setBody` is the only thing that changes the shape, so it is the only thing that clears this.
269
+ */
270
+ output() {
271
+ return this.#output ??= queryOutput(this.q);
272
+ }
273
+ column(key) {
274
+ return new SubqueryColumnExpr(this, key, this.columnExpr(key));
275
+ }
276
+ describe() {
277
+ return this.q.as ? `'${this.q.as}'` : "(anonymous)";
278
+ }
279
+ };
280
+ /** A column of a joined/from'd subquery, i.e. `bookStats.bookCount`, which becomes `book_stats."bookCount"`. */
281
+ var SubqueryColumnExpr = class extends require_queries_sql_Expr.BaseExpr {
282
+ handle;
283
+ key;
284
+ inner;
285
+ constructor(handle, key, inner) {
286
+ super();
287
+ this.handle = handle;
288
+ this.key = key;
289
+ this.inner = inner;
290
+ }
291
+ get [require_queries_sql_Expr.selectKeyBrand]() {
292
+ return this.key;
293
+ }
294
+ toSql(ctx) {
295
+ const alias = ctx.aliasFor(this.handle);
296
+ return {
297
+ sql: `${require_queries_sql_keywords.safeKq(alias)}.${require_queries_sql_keywords.safeKq(this.key)}`,
298
+ bindings: [],
299
+ refs: [alias]
300
+ };
301
+ }
302
+ decode(value) {
303
+ return this.inner.decode(value);
304
+ }
305
+ encode(value) {
306
+ return this.inner.encode(value);
307
+ }
308
+ get outputType() {
309
+ return this.inner.outputType;
310
+ }
311
+ get sqlNullable() {
312
+ return this.inner.sqlNullable;
313
+ }
314
+ get sqlSource() {
315
+ return this.handle;
316
+ }
317
+ };
318
+ /**
319
+ * A scalar (or IN-list) subquery, i.e. `query({ from: b, where: [...], select: b.id.count() })`.
320
+ *
321
+ * It closes over the outer aliases it references, so correlation is free; those references are the
322
+ * subquery's "free" aliases and count toward the outer query's join pruning.
323
+ */
324
+ var SubqueryExpr = class extends require_queries_sql_Expr.BaseExpr {
325
+ handle;
326
+ [scalarQueryBrand] = true;
327
+ constructor(handle) {
328
+ super();
329
+ this.handle = handle;
330
+ }
331
+ get subquerySelect() {
332
+ const expr = this.handle.output().columns[0][1];
333
+ return expr instanceof OutputExpr ? expr.inner : expr;
334
+ }
335
+ get outputType() {
336
+ return this.subquerySelect.outputType;
337
+ }
338
+ get sqlNullable() {
339
+ return true;
340
+ }
341
+ toSql(ctx) {
342
+ const bare = this.toSqlBare(ctx);
343
+ return {
344
+ ...bare,
345
+ sql: `(${bare.sql})`
346
+ };
347
+ }
348
+ toSqlBare(ctx) {
349
+ const parent = ctx instanceof Ctx ? ctx : require_utils.fail("Subqueries need the query parser's context");
350
+ const plan = parseQuery(this.handle.q, parent, parent.assigner);
351
+ return {
352
+ sql: plan.sql,
353
+ bindings: plan.bindings,
354
+ refs: plan.outerRefs
355
+ };
356
+ }
357
+ decode(value) {
358
+ return this.subquerySelect.decode(value);
359
+ }
360
+ encode(value) {
361
+ return this.subquerySelect.encode(value);
362
+ }
363
+ };
364
+ function newSubqueryProxy(handle) {
365
+ return new Proxy({}, {
366
+ get(_, key) {
367
+ if (key === subqueryBrand) return handle;
368
+ if (typeof key === "string") return handle.column(key);
369
+ },
370
+ has(_, key) {
371
+ return key === subqueryBrand || typeof key === "string" && handle.columnKeys().includes(key);
372
+ }
373
+ });
374
+ }
375
+ function isSubqueryValue(value) {
376
+ return typeof value === "object" && value !== null && subqueryBrand in value;
377
+ }
378
+ function isEntityQueryValue(value) {
379
+ return typeof value === "object" && value !== null && entityQueryBrand in value;
380
+ }
381
+ function isPlainSelect(select) {
382
+ return typeof select === "object" && select !== null && !require_queries_sql_Expr.isExpr(select) && !isSubqueryValue(select) && !isEntityQueryValue(select) && (Object.getPrototypeOf(select) === Object.prototype || Object.getPrototypeOf(select) === null);
383
+ }
384
+ /** Returns the runtime identity of a source: a table's `TableMgmt` or a subquery's handle. */
385
+ function handleOf(source) {
386
+ if (require_queries_sql_Tables.isTable(source)) return require_queries_sql_Tables.getTableMgmt(source);
387
+ if (isSubqueryValue(source)) return readValueHandle(source);
388
+ return require_utils.fail(`Expected a table or a query(...) value, got ${source}`);
389
+ }
390
+ function toQuery(arg) {
391
+ if (isReadQueryValue(arg)) return toQuery(readValueHandle(arg).q);
392
+ if (arg instanceof SubqueryExpr) return toQuery(arg.handle.q);
393
+ validateReadQuery(arg);
394
+ return arg;
395
+ }
396
+ /** Virtual subquery columns are not own clauses; attached properties on the value are always rejected. */
397
+ function readValueHandle(arg) {
398
+ if (!isSubqueryValue(arg) && !isEntityQueryValue(arg)) return require_utils.fail("Expected a branded read query value");
399
+ validateQueryKeys(arg, [isSubqueryValue(arg) ? subqueryBrand : entityQueryBrand], "Read query values");
400
+ const handle = isSubqueryValue(arg) ? arg[subqueryBrand] : arg[entityQueryBrand];
401
+ return handle instanceof SubqueryHandle ? handle : require_utils.fail("Invalid read query value handle");
402
+ }
403
+ const SET_OPERATIONS = {
404
+ union: "UNION",
405
+ unionAll: "UNION ALL",
406
+ intersect: "INTERSECT",
407
+ intersectAll: "INTERSECT ALL",
408
+ except: "EXCEPT",
409
+ exceptAll: "EXCEPT ALL"
410
+ };
411
+ const MUTATION_KEYS = [
412
+ "insert",
413
+ "update",
414
+ "delete",
415
+ "values",
416
+ "set",
417
+ "returning",
418
+ "allowAll"
419
+ ];
420
+ const READ_KEYS = [
421
+ "with",
422
+ "from",
423
+ "join",
424
+ "where",
425
+ "groupBy",
426
+ "having",
427
+ "select",
428
+ "orderBy",
429
+ "limit",
430
+ "offset",
431
+ "distinct",
432
+ "pruneJoins",
433
+ "softDeletes",
434
+ "as"
435
+ ];
436
+ /**
437
+ * Checks every ordinary or compound root before exposing output metadata or compiling SQL.
438
+ * Validate options before applying defaults so wrong-type values, including null, cannot disappear.
439
+ */
440
+ function validateReadQuery(arg) {
441
+ if (typeof arg !== "object" || arg === null || Array.isArray(arg)) require_utils.fail("em.query expects a { from, select, ... } object or a query(...) value");
442
+ if (isSetQuery(arg)) setOperands(arg);
443
+ else {
444
+ validateQueryKeys(arg, READ_KEYS, "Read queries");
445
+ if (!("from" in arg && "select" in arg)) require_utils.fail("em.query expects a { from, select, ... } object or a query(...) value");
446
+ }
447
+ const options = arg;
448
+ for (const key of ["limit", "offset"]) {
449
+ const value = options[key];
450
+ if (value !== void 0 && (typeof value !== "number" || !Number.isInteger(value) || value < 0)) require_utils.fail(`Read query ${key} must be a nonnegative finite integer`);
451
+ }
452
+ if (options.softDeletes !== void 0 && options.softDeletes !== "include" && options.softDeletes !== "exclude") require_utils.fail("Read query softDeletes must be 'include' or 'exclude'");
453
+ for (const key of ["distinct", "pruneJoins"]) if (options[key] !== void 0 && typeof options[key] !== "boolean") require_utils.fail(`Read query ${key} must be a boolean`);
454
+ if (options.as !== void 0 && typeof options.as !== "string") require_utils.fail("Read query as must be a string");
455
+ }
456
+ /** Includes undefined, symbol, non-enumerable, and inherited clauses rather than silently ignoring them. */
457
+ function validateQueryKeys(arg, allowed, description) {
458
+ for (let object = arg; object && object !== Object.prototype; object = Object.getPrototypeOf(object)) for (const key of Reflect.ownKeys(object)) {
459
+ if (allowed.includes(key)) continue;
460
+ if (MUTATION_KEYS.includes(key)) require_utils.fail(`Read queries do not support mutation clause '${String(key)}'; use em.execute`);
461
+ require_utils.fail(`${description} do not support clause '${String(key)}'`);
462
+ }
463
+ }
464
+ /** Detect operation keys even when their values are invalid, so mixed roots cannot fall through to SELECT. */
465
+ function isSetQuery(value) {
466
+ return typeof value === "object" && value !== null && Object.keys(SET_OPERATIONS).some((key) => key in value);
467
+ }
468
+ /** Validate each root independently; no operand, including the left side of EXCEPT, can be pruned. */
469
+ function setOperands(q) {
470
+ const keys = Object.keys(SET_OPERATIONS).filter((key) => key in q);
471
+ if (keys.length !== 1) require_utils.fail("A set query requires exactly one operation key");
472
+ validateQueryKeys(q, [
473
+ keys[0],
474
+ "with",
475
+ "orderBy",
476
+ "limit",
477
+ "offset",
478
+ "as"
479
+ ], "Set queries");
480
+ const operands = q[keys[0]];
481
+ if (!Array.isArray(operands) || operands.length < 2) require_utils.fail("Set operations require at least two operands");
482
+ return [keys[0], operands];
483
+ }
484
+ /**
485
+ * Resolve ordered output columns without rendering SQL. Set compatibility is deliberately conservative:
486
+ * every column needs the same known SQL representation, logical domain, and precise ID target.
487
+ *
488
+ * I.e. Author.id and Book.author share the Author key codec, but Book.id must never decode as Author.id.
489
+ * The first branch supplies names and conversions only after every branch passes these checks.
490
+ * UNION admits NULL from any branch; EXCEPT/INTERSECT retain the left branch's nullable facts.
491
+ * Unknown nullability stays unknown unless another UNION branch is known nullable.
492
+ */
493
+ function queryOutput(q) {
494
+ validateReadQuery(q);
495
+ if (isSetQuery(q)) {
496
+ const [operation, operands] = setOperands(q);
497
+ const first = requirePojoOperand(queryOutput(toQuery(operands[0])));
498
+ const columns = [...first.columns];
499
+ for (const operand of operands.slice(1)) {
500
+ const output = requirePojoOperand(queryOutput(toQuery(operand)));
501
+ if (output.columns.length !== first.columns.length) require_utils.fail("Set operands must have the same POJO keys");
502
+ const byKey = new Map(output.columns);
503
+ for (let i = 0; i < columns.length; i++) {
504
+ const [key, expr] = columns[i];
505
+ const other = byKey.get(key);
506
+ if (!other) require_utils.fail(`Set operands must have the same POJO keys; missing '${key}'`);
507
+ const left = expr.outputType;
508
+ const right = other.outputType;
509
+ if (!left || !right) require_utils.fail(`Set column '${key}' has an unknown or unsupported output codec; sql<R> does not declare a SQL type or codec`);
510
+ if (left.dbType !== right.dbType || left.domain !== right.domain || left.idMeta !== right.idMeta) require_utils.fail(`Set column '${key}' has incompatible output codecs (${left.dbType} and ${right.dbType}); use matching SQL representations and logical domains`);
511
+ if (operation === "union" || operation === "unionAll") {
512
+ const nullable = expr.sqlNullable === true || other.sqlNullable === true ? true : expr.sqlNullable === void 0 || other.sqlNullable === void 0 ? void 0 : false;
513
+ if (nullable !== expr.sqlNullable) columns[i] = [key, new OutputExpr(expr, nullable)];
514
+ }
515
+ }
516
+ }
517
+ setOrderBys(q, first);
518
+ return {
519
+ kind: first.kind,
520
+ columns
521
+ };
522
+ }
523
+ q = normalizeQueryJoins(q);
524
+ const { select } = q;
525
+ if (require_queries_sql_Tables.isTable(select)) return {
526
+ kind: "entity",
527
+ columns: []
528
+ };
529
+ if (isSubqueryValue(select)) return readValueHandle(select).output();
530
+ return joinedOutput(projectionOutput(select), q.join);
531
+ }
532
+ /** Only named POJO operands combine; entity and scalar reads have no columns to line up. */
533
+ function requirePojoOperand(output) {
534
+ if (output.kind !== "pojo") require_utils.fail(output.kind === "entity" ? "Set operations do not support entity-mode operands" : "Set operations require POJO operands; wrap scalar expressions in a named select projection");
535
+ return output;
536
+ }
537
+ /** Validates the projection before compiling SQL or exposing reusable query columns. */
538
+ function projectionOutput(select) {
539
+ if (require_queries_sql_Expr.isExpr(select)) return {
540
+ kind: "scalar",
541
+ columns: [["value", asExpr(select, "select")]]
542
+ };
543
+ if (Array.isArray(select)) {
544
+ if (select.length === 0) require_utils.fail("A column array projection must not be empty");
545
+ const columns = select.map((value, index) => {
546
+ const expr = asExpr(value, `select[${index}]`);
547
+ const key = expr[require_queries_sql_Expr.selectKeyBrand];
548
+ if (typeof key !== "string") require_utils.fail(`select[${index}] must be a physical or subquery column`);
549
+ return [key, expr];
550
+ });
551
+ if (new Set(columns.map(([key]) => key)).size !== columns.length) require_utils.fail("A column array projection must not contain duplicate field names");
552
+ return {
553
+ kind: "pojo",
554
+ columns
555
+ };
556
+ }
557
+ if (isPlainSelect(select)) {
558
+ const columns = [];
559
+ for (const key of Reflect.ownKeys(select)) {
560
+ if (typeof key !== "string") require_utils.fail("Projection keys must be strings");
561
+ if (Object.prototype.propertyIsEnumerable.call(select, key)) columns.push([key, asSelectExpr(select[key], `select.${key}`)]);
562
+ }
563
+ if (columns.length === 0) require_utils.fail("A named expression projection must not be empty");
564
+ return {
565
+ kind: "pojo",
566
+ columns
567
+ };
568
+ }
569
+ return require_utils.fail("Expected a scalar expression or a nonempty named expression projection");
570
+ }
571
+ /**
572
+ * Adds SQL nullability from unmatched LEFT joins without mutating shared expressions or their codecs.
573
+ * Only direct columns carry sqlSource; COUNT and COALESCE retain their own SQL nullability.
574
+ * I.e. selecting Book.title from a LEFT-joined Book makes its output nullable, but COUNT(Book.id) stays NOT NULL.
575
+ */
576
+ function joinedOutput(output, joins) {
577
+ if (!joins?.some((join) => join?.left)) return output;
578
+ const left = /* @__PURE__ */ new Set();
579
+ for (const join of resolveReferenceJoins(joins)) if (join.left) left.add(handleOf(join.left));
580
+ return {
581
+ kind: output.kind,
582
+ columns: output.columns.map((column) => {
583
+ const [key, expr] = column;
584
+ return expr.sqlSource && left.has(expr.sqlSource) && expr.sqlNullable !== true ? [key, new OutputExpr(expr, true)] : column;
585
+ })
586
+ };
587
+ }
588
+ /**
589
+ * Resolves reference joins in declaration order without changing reusable join entries.
590
+ * Only .as() carries a source handle; explicit INNER joins retain their filtering semantics.
591
+ * I.e. LEFT Book followed by Book.author.as(a) adds Author to the set of nullable handles.
592
+ */
593
+ function resolveReferenceJoins(joins) {
594
+ const left = /* @__PURE__ */ new Set();
595
+ return (joins ?? []).filter(isDefined).map((join) => {
596
+ const source = join[require_queries_sql_Tables.referenceJoinSource];
597
+ if (join.inner && source && left.has(source)) {
598
+ const { inner, ...rest } = join;
599
+ const resolved = {
600
+ ...rest,
601
+ left: inner
602
+ };
603
+ left.add(handleOf(inner));
604
+ return resolved;
605
+ }
606
+ if (join.left) left.add(handleOf(join.left));
607
+ return join;
608
+ });
609
+ }
610
+ /** An output-only nullability adjustment that preserves the selected expression's SQL and conversions. */
611
+ var OutputExpr = class extends require_queries_sql_Expr.BaseExpr {
612
+ inner;
613
+ nullable;
614
+ constructor(inner, nullable) {
615
+ super();
616
+ this.inner = inner;
617
+ this.nullable = nullable;
618
+ }
619
+ get outputType() {
620
+ return this.inner.outputType;
621
+ }
622
+ get sqlNullable() {
623
+ return this.nullable;
624
+ }
625
+ toSql(ctx) {
626
+ return this.inner.toSql(ctx);
627
+ }
628
+ decode(value) {
629
+ return this.inner.decode(value);
630
+ }
631
+ encode(value) {
632
+ return this.inner.encode(value);
633
+ }
634
+ };
635
+ /**
636
+ * Compile siblings in separate local scopes with the same enclosing context. Projection wrappers align
637
+ * output positions without moving DISTINCT/order/pagination or repeating volatile selected expressions.
638
+ * Parenthesizing each accumulated left side preserves array association and explicit nested grouping.
639
+ */
640
+ function parseSetQuery(q, parent, assigner, recursiveSelf) {
641
+ const [operation, operands] = setOperands(q);
642
+ const output = queryOutput(q);
643
+ const ctx = new Ctx(assigner, parent);
644
+ if (recursiveSelf) ctx.setRecursiveSelf(recursiveSelf);
645
+ const ctes = registerCtes(q, ctx, assigner);
646
+ const plans = operands.map((operand) => parseQuery(toQuery(operand), ctx, assigner));
647
+ let sql = "";
648
+ for (const plan of plans) {
649
+ let branch = plan.sql;
650
+ if (output.columns.some(([key], i) => plan.output.columns[i][0] !== key)) {
651
+ const alias = require_queries_sql_keywords.safeKq(assigner.getLiteralAlias("sq"));
652
+ branch = `SELECT ${output.columns.map(([key]) => `${alias}.${require_queries_sql_keywords.safeKq(key)} AS ${require_queries_sql_keywords.safeKq(key)}`).join(", ")} FROM (${branch}) AS ${alias}`;
653
+ }
654
+ sql = sql ? `(${sql}) ${SET_OPERATIONS[operation]} (${branch})` : branch;
655
+ }
656
+ const orderBys = setOrderBys(q, output);
657
+ if (orderBys.length > 0) sql += ` ORDER BY ${orderBys.join(", ")}`;
658
+ const bindings = plans.flatMap((plan) => plan.bindings);
659
+ if (q.limit !== void 0) {
660
+ sql += " LIMIT ?";
661
+ bindings.push(q.limit);
662
+ }
663
+ if (q.offset !== void 0) {
664
+ sql += " OFFSET ?";
665
+ bindings.push(q.offset);
666
+ }
667
+ const withCtes = prependCtes(ctes, new Set(plans.flatMap((plan) => plan.outerRefs)), sql, bindings);
668
+ const cteAliases = new Set(ctes.map((cte) => cte.alias));
669
+ const outerRefs = [...ctx.outerRefs, ...plans.flatMap((plan) => plan.outerRefs)];
670
+ return {
671
+ sql: withCtes.sql,
672
+ bindings: withCtes.bindings,
673
+ outerRefs: [...new Set(outerRefs.filter((ref) => !cteAliases.has(ref)))],
674
+ output,
675
+ decodeRows: (_, rows) => rows.map((row) => decodeRow(row, output.columns))
676
+ };
677
+ }
678
+ /** Validate and quote only named set output sorts, including before a reusable value is parsed. */
679
+ function setOrderBys(q, output) {
680
+ const orderBys = [];
681
+ for (const entry of Array.isArray(q.orderBy) ? q.orderBy : q.orderBy ? [q.orderBy] : []) {
682
+ if (entry === void 0) continue;
683
+ if (!entry || typeof entry !== "object" || require_queries_sql_Expr.isExpr(entry)) require_utils.fail("Set orderBy requires output-key hashes; use an outer query for expressions");
684
+ for (const [key, direction] of Object.entries(entry)) {
685
+ if (direction === void 0) continue;
686
+ if (!output.columns.some(([name]) => name === key)) require_utils.fail(`Set orderBy key '${key}' is not a named output column`);
687
+ if (!ORDER_BY_DIRECTIONS.includes(direction)) require_utils.fail("Set orderBy requires output-key directions; use an outer query for expressions");
688
+ orderBys.push(`${require_queries_sql_keywords.safeKq(key)} ${direction}`);
689
+ }
690
+ }
691
+ return orderBys;
692
+ }
693
+ /**
694
+ * What an expression needs from the query it is generating SQL for.
695
+ *
696
+ * Each (sub)query gets its own `Ctx`; a lookup that misses locally walks up to the enclosing query and
697
+ * records the hit in `outerRefs`, which is how a correlated subquery reports the outer aliases it
698
+ * depends on (the way `ExistsCondition.outerAliases` does), so join pruning keeps them.
699
+ */
700
+ var Ctx = class {
701
+ assigner;
702
+ parent;
703
+ aliases = /* @__PURE__ */ new Map();
704
+ /**
705
+ * The subset of `aliases` that are CTE names. A `from`/`join` on one of these emits just the name,
706
+ * i.e. `FROM book_stats`, where an ordinary `query(...)` value emits its whole body inline, i.e.
707
+ * `FROM (SELECT ...) AS sq`.
708
+ */
709
+ ctes = /* @__PURE__ */ new Map();
710
+ /**
711
+ * `with` entries named but not yet turned into SQL. `registerCtes` names every entry first, then
712
+ * generates the bodies one at a time, so while one body is being generated the entries after it sit
713
+ * here. Reading one of those is a forward reference.
714
+ */
715
+ pendingCtes = /* @__PURE__ */ new Map();
716
+ /** CTEs already read by this query's `from`/`join`, so a second read fails instead of colliding. */
717
+ usedCtes = /* @__PURE__ */ new Set();
718
+ /** The recursive CTE whose body this query is part of, if any; see `recursiveSelf`. */
719
+ ownRecursiveSelf;
720
+ outerRefs = /* @__PURE__ */ new Set();
721
+ constructor(assigner, parent) {
722
+ this.assigner = assigner;
723
+ this.parent = parent;
724
+ }
725
+ /**
726
+ * One handle can hold only one alias per query, so a value used twice must be told apart, not
727
+ * silently collapsed into the second registration's alias.
728
+ */
729
+ register(handle, alias) {
730
+ if (this.aliases.has(handle)) require_utils.fail(`${describeHandle(handle)} is already in this query's \`with\`/\`from\`/\`join\`; use a separate table(...)/query(...) value for each use`);
731
+ this.aliases.set(handle, alias);
732
+ }
733
+ /** Names every `with` entry up front, so a CTE reading a later sibling is reported, not inlined. */
734
+ declareCte(handle, alias) {
735
+ this.pendingCtes.set(handle, alias);
736
+ }
737
+ /** Brings a pending CTE into scope, for the sources and columns that may now read it. */
738
+ promoteCte(handle) {
739
+ const alias = this.pendingCtes.get(handle) ?? require_utils.fail("CTE was not declared");
740
+ this.pendingCtes.delete(handle);
741
+ this.ctes.set(handle, alias);
742
+ this.register(handle, alias);
743
+ }
744
+ /**
745
+ * The CTE name for `handle`, looking in the enclosing queries too, because a CTE is in scope for the
746
+ * whole statement.
747
+ *
748
+ * Unlike `aliasFor`, a hit in an enclosing query is not added to `outerRefs`: reading a CTE by name
749
+ * is not a correlated reference, so it must not keep an enclosing join alive.
750
+ */
751
+ cteAliasFor(handle) {
752
+ return this.ctes.get(handle) ?? this.parent?.cteAliasFor(handle);
753
+ }
754
+ /**
755
+ * The recursive CTE this query's terms belong to, inherited from the enclosing query.
756
+ *
757
+ * PostgreSQL requires a recursive term to reference its own CTE, so that reference is not optional
758
+ * and must survive pruning, unlike an ordinary explicit join that nothing else reads.
759
+ */
760
+ get recursiveSelf() {
761
+ return this.ownRecursiveSelf ?? this.parent?.recursiveSelf;
762
+ }
763
+ setRecursiveSelf(handle) {
764
+ this.ownRecursiveSelf = handle;
765
+ }
766
+ /** Whether `handle` is a CTE with no SQL yet, i.e. itself or a later `with` entry. */
767
+ isPendingCte(handle) {
768
+ return this.pendingCtes.has(handle) || (this.parent?.isPendingCte(handle) ?? false);
769
+ }
770
+ /**
771
+ * Fails if this query already reads `handle`. A `Ctx` maps each handle to a single alias, so two
772
+ * reads of one CTE value would render as the same name, i.e. `FROM tree JOIN tree`, and neither the
773
+ * SQL nor a column expression could say which one it meant. Each read needs its own `query(...)`.
774
+ *
775
+ * Only this query is checked, not the enclosing ones: a nested subquery has its own FROM, so reading
776
+ * the same CTE in there is fine.
777
+ */
778
+ useCte(handle) {
779
+ if (this.usedCtes.has(handle)) require_utils.fail(`${describeHandle(handle)} is already in this query's \`from\`/\`join\`; use a separate query(...) value for each use`);
780
+ this.usedCtes.add(handle);
781
+ }
782
+ aliasFor(handle) {
783
+ const local = this.aliases.get(handle);
784
+ if (local) return local;
785
+ if (this.parent) {
786
+ const outer = this.parent.aliasFor(handle);
787
+ this.outerRefs.add(outer);
788
+ return outer;
789
+ }
790
+ return require_utils.fail(`${describeHandle(handle)} is not in this query's from/join`);
791
+ }
792
+ conditionToSql(cond) {
793
+ return conditionToSql(cond, this, false);
794
+ }
795
+ };
796
+ function describeHandle(handle) {
797
+ if (handle instanceof SubqueryHandle) return `Query value ${handle.describe()}`;
798
+ if (handle instanceof require_queries_sql_Tables.JoinTableHandle) return `Join table ${handle.joinTableName}`;
799
+ if ("tableName" in handle) return `Table for ${handle.tableName}`;
800
+ return "Table";
801
+ }
802
+ /**
803
+ * Parses one `Query` POJO into SQL, recursively for subqueries.
804
+ *
805
+ * 1. Register every source's runtime identity with its SQL alias in this parse's context.
806
+ * 2. Generate SQL for sources, selects, conditions, group-bys, and order-bys against the context; every fragment
807
+ * reports the aliases it references.
808
+ * 3. Prune: drop joins nothing references (see below), then reject a kept join whose ON collapsed.
809
+ * 4. Assemble the SQL from the kept fragments, so pruned bindings disappear with their SQL.
810
+ */
811
+ function parseQuery(q, parent, assigner, recursiveSelf) {
812
+ validateReadQuery(q);
813
+ if (isSetQuery(q)) return parseSetQuery(q, parent, assigner, recursiveSelf);
814
+ q = normalizeQueryJoins(q);
815
+ const ctx = new Ctx(assigner, parent);
816
+ if (recursiveSelf) ctx.setRecursiveSelf(recursiveSelf);
817
+ const joinEntries = resolveReferenceJoins(q.join);
818
+ const ctes = registerCtes(q, ctx, assigner);
819
+ const parseFrom = registerSource(q.from, ctx, assigner);
820
+ const pendingJoins = joinEntries.flatMap((j) => {
821
+ const kind = "inner" in j && j.inner ? "inner" : "left";
822
+ const alias = kind === "inner" ? j.inner : j.left;
823
+ const keep = j.keep ?? false;
824
+ const softDeletes = j[require_queries_sql_Tables.collectionJoin] === true;
825
+ const target = {
826
+ kind,
827
+ keep,
828
+ on: j.on,
829
+ softDeletes,
830
+ parseSource: registerSource(alias, ctx, assigner)
831
+ };
832
+ const m2m = j[require_queries_sql_Tables.m2mJoinTable];
833
+ if (!m2m) return [target];
834
+ return [{
835
+ kind,
836
+ keep,
837
+ on: m2m.on,
838
+ softDeletes: false,
839
+ parseSource: registerJoinTable(m2m.handle, ctx, assigner)
840
+ }, target];
841
+ });
842
+ const softDeletes = q.softDeletes ?? "exclude";
843
+ const from = parseFrom();
844
+ const userJoins = pendingJoins.map((j) => {
845
+ const source = j.parseSource();
846
+ const userOn = conditionToSql(j.on, ctx, true);
847
+ const injected = injectedConditions(source, j.softDeletes ? softDeletes : "include");
848
+ const fullOn = userOn && injected.length > 0 ? conditionToSql({ and: [j.on, ...injected] }, ctx, true) : userOn;
849
+ return {
850
+ kind: j.kind,
851
+ keep: j.keep,
852
+ source,
853
+ userOn,
854
+ fullOn
855
+ };
856
+ });
857
+ const cti = ctiEntityPlan(q, from, assigner);
858
+ const joins = [...cti.joins, ...userJoins];
859
+ const sti = stiEntityPlan(q, from);
860
+ const { selects, decodeRows, output } = selectsToSql(q, ctx, from, cti.selects ?? sti.selects);
861
+ const fromInjected = [...injectedConditions(from, softDeletes), ...sti.conditions];
862
+ const predicate = normalizeWhere(q.where);
863
+ const where = conditionToSql(fromInjected.length > 0 ? { and: [predicate, ...fromInjected] } : predicate, ctx, true);
864
+ const having = conditionToSql(q.having, ctx, true);
865
+ const groupBys = (q.groupBy ?? []).map((g) => asExpr(g, "groupBy").toSql(ctx));
866
+ const orderBys = orderBysToSql(q, ctx);
867
+ const { joins: kept, ctes: keptCtes } = pruneJoins(q, ctx, from, joins, ctes, [
868
+ ...selects,
869
+ ...groupBys,
870
+ ...orderBys,
871
+ where,
872
+ having
873
+ ].filter(isDefined));
874
+ const laterAliases = new Set(kept.map((j) => j.source.alias));
875
+ for (const j of kept) {
876
+ if (!j.userOn) require_utils.fail(`Join ${describeHandle(j.source.handle)} has no ON condition left (they all pruned), but the query still references it`);
877
+ laterAliases.delete(j.source.alias);
878
+ const forward = j.fullOn.refs.find((r) => laterAliases.has(r));
879
+ if (forward) require_utils.fail(`Join ${describeHandle(j.source.handle)} references '${forward}', which is joined later; move that join earlier in the join array`);
880
+ }
881
+ const out = [];
882
+ if (keptCtes.length > 0) out.push(withFragment(keptCtes));
883
+ out.push({
884
+ sql: `SELECT ${q.distinct ? "DISTINCT " : ""}`,
885
+ bindings: [],
886
+ refs: []
887
+ });
888
+ out.push(joinFragmentParts(selects, ", "));
889
+ out.push({
890
+ sql: ` FROM ${from.sql}`,
891
+ bindings: from.bindings,
892
+ refs: []
893
+ });
894
+ for (const j of kept) {
895
+ const keyword = j.kind === "inner" ? "JOIN" : "LEFT OUTER JOIN";
896
+ out.push({
897
+ sql: ` ${keyword} ${j.source.sql} ON ${j.fullOn.sql}`,
898
+ bindings: [...j.source.bindings, ...j.fullOn.bindings],
899
+ refs: []
900
+ });
901
+ }
902
+ if (where) out.push({
903
+ sql: ` WHERE ${where.sql}`,
904
+ bindings: where.bindings,
905
+ refs: []
906
+ });
907
+ if (groupBys.length > 0) out.push({
908
+ ...joinFragmentParts(groupBys, ", "),
909
+ sql: ` GROUP BY ${groupBys.map((g) => g.sql).join(", ")}`
910
+ });
911
+ if (having) out.push({
912
+ sql: ` HAVING ${having.sql}`,
913
+ bindings: having.bindings,
914
+ refs: []
915
+ });
916
+ if (orderBys.length > 0) out.push({
917
+ ...joinFragmentParts(orderBys, ", "),
918
+ sql: ` ORDER BY ${orderBys.map((o) => o.sql).join(", ")}`
919
+ });
920
+ if (q.limit !== void 0) out.push({
921
+ sql: ` LIMIT ?`,
922
+ bindings: [q.limit],
923
+ refs: []
924
+ });
925
+ if (q.offset !== void 0) out.push({
926
+ sql: ` OFFSET ?`,
927
+ bindings: [q.offset],
928
+ refs: []
929
+ });
930
+ return {
931
+ sql: out.map((o) => o.sql).join(""),
932
+ bindings: out.flatMap((o) => o.bindings),
933
+ outerRefs: [...ctx.outerRefs],
934
+ output,
935
+ decodeRows
936
+ };
937
+ }
938
+ /**
939
+ * Assigns a SQL alias to a source and returns a function that parses it after all sources are registered.
940
+ *
941
+ * Conditions resolve source identities through the context when their SQL is generated.
942
+ * Each entity source reads only its physical table, without inheritance joins or class tags.
943
+ */
944
+ function registerSource(source, ctx, assigner) {
945
+ const handle = handleOf(source);
946
+ const cteAlias = ctx.cteAliasFor(handle);
947
+ if (cteAlias) {
948
+ ctx.useCte(handle);
949
+ return () => ({
950
+ handle,
951
+ alias: cteAlias,
952
+ sql: require_queries_sql_keywords.safeKq(cteAlias),
953
+ bindings: [],
954
+ refs: [],
955
+ entitySelects: [],
956
+ meta: void 0
957
+ });
958
+ }
959
+ if (ctx.isPendingCte(handle)) require_utils.fail(`${describeHandle(handle)} is declared later in this query's \`with\`; a CTE can only read earlier ones, and cannot read itself`);
960
+ if (handle instanceof SubqueryHandle) {
961
+ const alias = handle.name ? assigner.getLiteralAlias(handle.name) : assigner.getLiteralAlias("sq");
962
+ ctx.register(handle, alias);
963
+ return () => {
964
+ const inner = parseQuery(handle.q, ctx, assigner);
965
+ return {
966
+ handle,
967
+ alias,
968
+ sql: `(${inner.sql}) AS ${require_queries_sql_keywords.safeKq(alias)}`,
969
+ bindings: inner.bindings,
970
+ refs: inner.outerRefs,
971
+ entitySelects: [],
972
+ meta: void 0
973
+ };
974
+ };
975
+ } else {
976
+ const mgmt = require_queries_sql_Tables.getTableMgmt(source);
977
+ const { tableName } = mgmt;
978
+ const meta = "meta" in mgmt ? mgmt.meta : void 0;
979
+ const alias = assigner.getAlias(tableName);
980
+ ctx.register(handle, alias);
981
+ return () => {
982
+ const entitySelects = !meta ? [] : meta.hasLazyColumns ? require_queries_entityQueryUtils.lazyExcludedSelects(meta, alias) : [require_queries_sql_keywords.kqStar(alias)];
983
+ return {
984
+ handle,
985
+ alias,
986
+ sql: `${require_queries_sql_Tables.tableSqlName(mgmt)} AS ${require_queries_sql_keywords.kq(alias)}`,
987
+ bindings: [],
988
+ refs: [],
989
+ entitySelects,
990
+ meta
991
+ };
992
+ };
993
+ }
994
+ }
995
+ /**
996
+ * Per-source soft-delete injections: `alias.deleted_at IS NULL` for a soft-deletable entity.
997
+ * CTI subtypes are skipped because their deleted-at column belongs to the base table (see
998
+ * `filterSoftDeletes`). STI sources read all physical rows without discriminator predicates.
999
+ *
1000
+ * The conditions go into the from's WHERE or the join's ON, and never keep an otherwise unreferenced
1001
+ * join alive, which is what `pruneable: true` means on em.find's side.
1002
+ */
1003
+ function injectedConditions(source, softDeletes) {
1004
+ const { meta } = source;
1005
+ if (!meta) return [];
1006
+ const conditions = [];
1007
+ if (require_queries_entityQueryUtils.filterSoftDeletes(meta, softDeletes)) {
1008
+ const field = meta.allFields[require_EntityMetadata.getBaseMeta(meta).timestampFields.deletedAt];
1009
+ const column = field.serde.columns[0];
1010
+ conditions.push({
1011
+ kind: "column",
1012
+ alias: `${source.alias}${field.aliasSuffix}`,
1013
+ column: column.columnName,
1014
+ dbType: column.dbType,
1015
+ cond: { kind: "is-null" },
1016
+ pruneable: true
1017
+ });
1018
+ }
1019
+ return conditions;
1020
+ }
1021
+ /** Registers a sugar m2m join table, i.e. `authors_to_tags`: a raw table with no entity metadata. */
1022
+ function registerJoinTable(handle, ctx, assigner) {
1023
+ const alias = assigner.getAlias(handle.joinTableName);
1024
+ ctx.register(handle, alias);
1025
+ return () => ({
1026
+ handle,
1027
+ alias,
1028
+ sql: `${require_queries_sql_keywords.kq(handle.joinTableName)} AS ${require_queries_sql_keywords.kq(alias)}`,
1029
+ bindings: [],
1030
+ refs: [],
1031
+ entitySelects: [],
1032
+ meta: void 0
1033
+ });
1034
+ }
1035
+ /** Generates the `select` clause SQL and returns how to decode the resulting rows. */
1036
+ function selectsToSql(q, ctx, from, entitySelects) {
1037
+ const { select } = q;
1038
+ if (require_queries_sql_Tables.isTable(select) && !require_queries_sql_Tables.isEntityTable(select)) require_utils.fail("A custom table cannot be selected as an entity; select its columns individually");
1039
+ if (require_queries_sql_Tables.isEntityTable(select)) {
1040
+ if (from.handle !== require_queries_sql_Tables.getTableMgmt(select)) require_utils.fail("Selecting a joined table is not supported yet; select the from table, or select its columns individually");
1041
+ const alias = ctx.aliasFor(require_queries_sql_Tables.getTableMgmt(select));
1042
+ const meta = require_queries_sql_Tables.getTableMetadata(select);
1043
+ return {
1044
+ selects: entitySelects ?? from.entitySelects.map((s) => ({
1045
+ sql: s,
1046
+ bindings: [],
1047
+ refs: [alias]
1048
+ })),
1049
+ decodeRows: (em, rows) => em.hydrate(meta.cstr, rows),
1050
+ output: {
1051
+ kind: "entity",
1052
+ columns: []
1053
+ }
1054
+ };
1055
+ } else if (isSubqueryValue(select)) {
1056
+ const handle = readValueHandle(select);
1057
+ if (from.handle !== handle) require_utils.fail("Selecting a joined subquery is not supported; select the from subquery, or select its columns individually");
1058
+ const alias = ctx.aliasFor(handle);
1059
+ const output = handle.output();
1060
+ return {
1061
+ selects: output.columns.map(([k]) => ({
1062
+ sql: `${require_queries_sql_keywords.safeKq(alias)}.${require_queries_sql_keywords.safeKq(k)} AS ${require_queries_sql_keywords.safeKq(k)}`,
1063
+ bindings: [],
1064
+ refs: [alias]
1065
+ })),
1066
+ decodeRows: (_, rows) => rows.map((row) => decodeRow(row, output.columns)),
1067
+ output
1068
+ };
1069
+ }
1070
+ return projectionToSql(select, ctx, q.join);
1071
+ }
1072
+ /**
1073
+ * Builds the mandatory CTI joins and flat row projection needed by entity hydration.
1074
+ *
1075
+ * The joins use the same ParsedJoin path as user joins, but `keep: true` makes them survive pruning.
1076
+ * They are generated only for an entity selection of the from source; POJO and scalar reads keep their
1077
+ * physical-table behavior. User source aliases have already been allocated, so the preferred `_bN` and
1078
+ * `_sN` aliases can be made unique before their projection fragments are built.
1079
+ */
1080
+ function ctiEntityPlan(q, from, assigner) {
1081
+ if (!require_queries_sql_Tables.isEntityTable(q.select) || from.handle !== require_queries_sql_Tables.getTableMgmt(q.select)) return {
1082
+ joins: [],
1083
+ selects: void 0
1084
+ };
1085
+ const meta = require_queries_sql_Tables.getTableMetadata(q.select);
1086
+ if (meta.inheritanceType !== "cti") return {
1087
+ joins: [],
1088
+ selects: void 0
1089
+ };
1090
+ const joins = [];
1091
+ const selects = from.entitySelects.map((sql) => ({
1092
+ sql,
1093
+ bindings: [],
1094
+ refs: [from.alias]
1095
+ }));
1096
+ for (const [i, baseMeta] of meta.baseTypes.entries()) {
1097
+ const alias = assigner.getLiteralAlias(`${from.alias}_b${i}`);
1098
+ joins.push(ctiJoin(from, baseMeta, alias));
1099
+ selects.push(...entitySelectFragments(baseMeta, alias));
1100
+ }
1101
+ const subtypeColumns = /* @__PURE__ */ new Map();
1102
+ for (const [i, subtypeMeta] of meta.subTypes.entries()) {
1103
+ const alias = assigner.getLiteralAlias(`${from.alias}_s${i}`);
1104
+ joins.push(ctiJoin(from, subtypeMeta, alias));
1105
+ selects.push(...entitySelectFragments(subtypeMeta, alias));
1106
+ for (const field of Object.values(subtypeMeta.fields)) {
1107
+ if (field.fieldName === "id" || !field.serde || field.kind === "primitive" && field.lazy) continue;
1108
+ for (const column of field.serde.columns) {
1109
+ const aliases = subtypeColumns.get(column.columnName);
1110
+ if (aliases) aliases.push(alias);
1111
+ else subtypeColumns.set(column.columnName, [alias]);
1112
+ }
1113
+ }
1114
+ }
1115
+ selects.push({
1116
+ sql: `${require_queries_sql_keywords.safeKq(from.alias)}.${require_queries_sql_keywords.kq("id")} AS ${require_queries_sql_keywords.kq("id")}`,
1117
+ bindings: [],
1118
+ refs: [from.alias]
1119
+ });
1120
+ for (const [column, aliases] of subtypeColumns) {
1121
+ if (aliases.length < 2) continue;
1122
+ selects.push({
1123
+ sql: `COALESCE(${aliases.map((alias) => `${require_queries_sql_keywords.safeKq(alias)}.${require_queries_sql_keywords.kq(column)}`).join(", ")}) AS ${require_queries_sql_keywords.kq(column)}`,
1124
+ bindings: [],
1125
+ refs: aliases
1126
+ });
1127
+ }
1128
+ if (meta.subTypes.length > 0) {
1129
+ const subtypeAliases = joins.slice(meta.baseTypes.length).map((join) => join.source.alias);
1130
+ selects.push({
1131
+ sql: `CASE ${subtypeAliases.map((alias) => `WHEN ${require_queries_sql_keywords.safeKq(alias)}.${require_queries_sql_keywords.kq("id")} IS NOT NULL THEN ?`).join(" ")} ELSE '_' END AS ${require_queries_sql_keywords.kq("__class")}`,
1132
+ bindings: meta.subTypes.map((subtype) => subtype.type),
1133
+ refs: subtypeAliases
1134
+ });
1135
+ }
1136
+ return {
1137
+ joins,
1138
+ selects
1139
+ };
1140
+ }
1141
+ /** Adds the discriminator projection and subtype filter required by STI entity hydration. */
1142
+ function stiEntityPlan(q, from) {
1143
+ if (!require_queries_sql_Tables.isEntityTable(q.select) || from.handle !== require_queries_sql_Tables.getTableMgmt(q.select)) return {
1144
+ selects: void 0,
1145
+ conditions: []
1146
+ };
1147
+ const meta = require_queries_sql_Tables.getTableMetadata(q.select);
1148
+ if (meta.inheritanceType !== "sti") return {
1149
+ selects: void 0,
1150
+ conditions: []
1151
+ };
1152
+ const selects = from.entitySelects.map((sql) => ({
1153
+ sql,
1154
+ bindings: [],
1155
+ refs: [from.alias]
1156
+ }));
1157
+ if (!(from.entitySelects.length === 1 && from.entitySelects[0] === require_queries_sql_keywords.kqStar(from.alias))) {
1158
+ const discriminator = require_EntityMetadata.getBaseMeta(meta).stiDiscriminatorColumnName;
1159
+ selects.push({
1160
+ sql: `${require_queries_sql_keywords.safeKq(from.alias)}.${require_queries_sql_keywords.kq(discriminator)} AS ${require_queries_sql_keywords.kq(discriminator)}`,
1161
+ bindings: [],
1162
+ refs: [from.alias]
1163
+ });
1164
+ }
1165
+ const condition = require_queries_entityQueryUtils.stiSubtypeFilter(meta, from.alias);
1166
+ return {
1167
+ selects,
1168
+ conditions: condition ? [condition] : []
1169
+ };
1170
+ }
1171
+ /** Creates one mandatory CTI join through the selected source's primary key. */
1172
+ function ctiJoin(from, meta, alias) {
1173
+ const on = {
1174
+ sql: `${require_queries_sql_keywords.safeKq(from.alias)}.${require_queries_sql_keywords.kq("id")} = ${require_queries_sql_keywords.safeKq(alias)}.${require_queries_sql_keywords.kq("id")}`,
1175
+ bindings: [],
1176
+ refs: [from.alias, alias]
1177
+ };
1178
+ return {
1179
+ kind: "left",
1180
+ source: {
1181
+ handle: {
1182
+ tableName: meta.tableName,
1183
+ meta
1184
+ },
1185
+ alias,
1186
+ sql: `${require_queries_sql_keywords.kq(meta.tableName)} AS ${require_queries_sql_keywords.safeKq(alias)}`,
1187
+ bindings: [],
1188
+ refs: [],
1189
+ entitySelects: [],
1190
+ meta
1191
+ },
1192
+ userOn: on,
1193
+ fullOn: on,
1194
+ keep: true
1195
+ };
1196
+ }
1197
+ /** Selects one physical CTI table while preserving lazy-field exclusions. */
1198
+ function entitySelectFragments(meta, alias) {
1199
+ return (meta.hasLazyColumns ? require_queries_entityQueryUtils.lazyExcludedSelects(meta, alias) : [require_queries_sql_keywords.kqStar(alias)]).map((sql) => ({
1200
+ sql,
1201
+ bindings: [],
1202
+ refs: [alias]
1203
+ }));
1204
+ }
1205
+ function decodeRow(row, decoders) {
1206
+ const result = {};
1207
+ for (const [key, expr] of decoders) {
1208
+ const value = row[key];
1209
+ const decoded = decodeValue(expr, value);
1210
+ if (key === "__proto__") Object.defineProperty(result, key, {
1211
+ value: decoded,
1212
+ enumerable: true,
1213
+ configurable: true,
1214
+ writable: true
1215
+ });
1216
+ else result[key] = decoded;
1217
+ }
1218
+ return result;
1219
+ }
1220
+ /** Decodes a top-level projected SQL NULL using Joist's undefined convention. */
1221
+ function decodeValue(expr, value) {
1222
+ return value === null ? void 0 : expr.decode(value);
1223
+ }
1224
+ const ORDER_BY_DIRECTIONS = [
1225
+ "ASC",
1226
+ "DESC",
1227
+ "ASC NULLS FIRST",
1228
+ "ASC NULLS LAST",
1229
+ "DESC NULLS FIRST",
1230
+ "DESC NULLS LAST"
1231
+ ];
1232
+ /**
1233
+ * Generates ORDER BY SQL in entry order for keyed/expression arrays or a single entry.
1234
+ *
1235
+ * Expression entries retain bindings and alias references for join pruning. Undefined entries and
1236
+ * directions are omitted before expression references are collected.
1237
+ */
1238
+ function orderBysToSql(q, ctx) {
1239
+ const { orderBy, select } = q;
1240
+ if (!orderBy) return [];
1241
+ const result = [];
1242
+ for (const entry of Array.isArray(orderBy) ? orderBy : [orderBy]) {
1243
+ if (entry === void 0) continue;
1244
+ if (require_queries_sql_Expr.isExpr(entry.sort)) {
1245
+ const fragment = require_queries_sql_Expr.orderByToSql(entry, ctx);
1246
+ if (fragment) result.push(fragment);
1247
+ continue;
1248
+ }
1249
+ for (const [key, dir] of Object.entries(entry)) {
1250
+ if (dir === void 0) continue;
1251
+ if (!ORDER_BY_DIRECTIONS.includes(dir)) return require_utils.fail(`Invalid orderBy direction '${dir}'`);
1252
+ if (require_queries_sql_Tables.isTable(select)) {
1253
+ const column = select[key];
1254
+ if (!require_queries_sql_Expr.isExpr(column)) return require_utils.fail(`orderBy key '${key}' is not a sortable column of the table`);
1255
+ const fragment = require_queries_sql_Expr.asNode(column).toSql(ctx);
1256
+ result.push({
1257
+ ...fragment,
1258
+ sql: `${fragment.sql} ${dir}`
1259
+ });
1260
+ } else {
1261
+ if (require_queries_sql_Expr.isExpr(select)) return require_utils.fail(`the keyed orderBy form needs a POJO or entity select`);
1262
+ if (!(isSubqueryValue(select) ? select[subqueryBrand].columnKeys() : projectionOutput(select).columns.map(([key]) => key)).includes(key)) return require_utils.fail(`orderBy key '${key}' is not a key of select`);
1263
+ result.push({
1264
+ sql: `${require_queries_sql_keywords.safeKq(key)} ${dir}`,
1265
+ bindings: [],
1266
+ refs: []
1267
+ });
1268
+ }
1269
+ }
1270
+ }
1271
+ return result;
1272
+ }
1273
+ /**
1274
+ * Parses a user-facing condition (a single condition or an `{ and }`/`{ or }` filter) with the same
1275
+ * `ConditionBuilder` `em.find` uses, so `undefined` members drop out, empty groups drop, and
1276
+ * `pruneIfUndefined` applies unchanged. Deferred SQL expression conditions are resolved
1277
+ * against the context first.
1278
+ */
1279
+ function conditionToSql(cond, ctx, topLevel) {
1280
+ checkCondition(cond);
1281
+ if (cond === void 0) return void 0;
1282
+ const resolved = require_queries_sql_Expr.resolveDeferredConditions(resolveQueryCondition(cond, ctx), ctx);
1283
+ if (resolved === void 0) return void 0;
1284
+ const filter = isFilter(resolved) ? resolved : { and: [resolved] };
1285
+ const cb = new require_queries_ConditionBuilder.ConditionBuilder();
1286
+ cb.maybeAddExpression(filter);
1287
+ const parsed = cb.toExpressionFilter();
1288
+ if (!parsed) return void 0;
1289
+ const where = require_queries_renderConditions.buildWhereClause(parsed, topLevel);
1290
+ if (!where) return void 0;
1291
+ return {
1292
+ sql: where[0],
1293
+ bindings: where[1],
1294
+ refs: refsOf(parsed)
1295
+ };
1296
+ }
1297
+ /**
1298
+ * Rejects malformed predicates throughout a condition tree before pruning can discard a restriction.
1299
+ * I.e. an invalid Author-name condition stays invalid even inside a group that would otherwise prune,
1300
+ * while an explicitly omitted query-valued condition is allowed to prune.
1301
+ */
1302
+ function checkCondition(value) {
1303
+ if (require_queries_find_DeferredAlias.isDeferredAliasCondition(value) || value && typeof value === "object" && require_queries_conditions.predicateBrand in value && value[require_queries_conditions.predicateBrand] === "domain") require_utils.fail("Domain alias conditions are only supported by em.find; use table(...) predicates in SQL queries and mutations.");
1304
+ if (value === void 0 || value === require_queries_skipCondition.skipCondition) return;
1305
+ if (isInQueryCondition(value)) {
1306
+ checkCondition(normalizeWhere(normalizeQueryJoins(toQuery(value[require_queries_sql_Tables.inQueryCondition].query)).where));
1307
+ return;
1308
+ }
1309
+ if (!value || typeof value !== "object" || Array.isArray(value) || require_queries_sql_Expr.isExpr(value)) require_utils.fail("Query predicate must be a condition or an and/or group");
1310
+ const condition = value;
1311
+ if ("and" in condition || "or" in condition) {
1312
+ if ("and" in condition === "or" in condition) require_utils.fail("Query conditions require exactly one and/or group");
1313
+ const key = "and" in condition ? "and" : "or";
1314
+ checkPojoKeys(condition, [key, "pruneIfUndefined"], "Query condition group");
1315
+ if (!Array.isArray(condition[key])) require_utils.fail("Query condition groups require an array");
1316
+ if (condition.pruneIfUndefined !== void 0 && condition.pruneIfUndefined !== "any" && condition.pruneIfUndefined !== "all") require_utils.fail("Invalid query pruneIfUndefined policy");
1317
+ for (const child of condition[key]) checkCondition(child);
1318
+ } else if ("exists" in condition || "notExists" in condition) {
1319
+ const key = "exists" in condition ? "exists" : "notExists";
1320
+ checkPojoKeys(condition, [key], "Query existence condition");
1321
+ const query = condition[key];
1322
+ if (query === void 0) return;
1323
+ if (!(query instanceof SubqueryExpr) && !isReadQueryValue(query)) require_utils.fail(`Query ${key} requires a query(...) value`);
1324
+ toQuery(query);
1325
+ } else if (condition.kind === "raw") {
1326
+ checkPojoKeys(condition, [
1327
+ "kind",
1328
+ "aliases",
1329
+ "condition",
1330
+ "bindings",
1331
+ "pruneable",
1332
+ require_queries_sql_Expr.deferredSym,
1333
+ require_queries_conditions.predicateBrand
1334
+ ], "Query raw condition");
1335
+ if (typeof condition.condition !== "string" || !Array.isArray(condition.aliases) || !condition.aliases.every((alias) => typeof alias === "string") || !Array.isArray(condition.bindings) || typeof condition.pruneable !== "boolean") require_utils.fail("Malformed query raw condition");
1336
+ } else if (condition.kind === "column") {
1337
+ checkPojoKeys(condition, [
1338
+ "kind",
1339
+ "alias",
1340
+ "column",
1341
+ "dbType",
1342
+ "cond",
1343
+ "pruneable",
1344
+ require_queries_conditions.predicateBrand
1345
+ ], "Query column condition");
1346
+ if (typeof condition.alias !== "string" || typeof condition.column !== "string" || typeof condition.dbType !== "string" || condition.pruneable !== void 0 && typeof condition.pruneable !== "boolean") require_utils.fail("Malformed query column condition");
1347
+ const filter = condition.cond;
1348
+ if (!filter) require_utils.fail("Malformed query column filter");
1349
+ checkPojoKeys(filter, ["kind", "value"], "Query column filter");
1350
+ const unary = filter.kind === "is-null" || filter.kind === "not-null";
1351
+ if (!unary && (![
1352
+ "eq",
1353
+ "ne",
1354
+ "in",
1355
+ "nin",
1356
+ "gt",
1357
+ "gte",
1358
+ "lt",
1359
+ "lte",
1360
+ "like",
1361
+ "nlike",
1362
+ "ilike",
1363
+ "nilike",
1364
+ "regex",
1365
+ "nregex",
1366
+ "iregex",
1367
+ "niregex",
1368
+ "contains",
1369
+ "ncontains",
1370
+ "overlaps",
1371
+ "noverlaps",
1372
+ "containedBy",
1373
+ "between",
1374
+ "jsonPathExists",
1375
+ "jsonPathPredicate"
1376
+ ].includes(filter.kind) || !("value" in filter))) require_utils.fail("Malformed query column filter");
1377
+ if (unary && "value" in filter) require_utils.fail("Unary query filters do not accept values");
1378
+ } else require_utils.fail("Unknown query condition");
1379
+ }
1380
+ /**
1381
+ * Accepts only own enumerable POJO fields, so nothing a caller supplied can be silently ignored: the
1382
+ * compilers read these POJOs back with `Object.entries`/`Object.keys`, which skip inherited,
1383
+ * non-enumerable, and symbol keys, so a field hidden behind one of those would never reach the SQL.
1384
+ * I.e. an UPDATE whose `set` carries `title` on a prototype would leave `title` unchanged and still
1385
+ * report success.
1386
+ *
1387
+ * Conditions, mutation clauses, and assignment POJOs all share this rule; `allowed` may include symbol
1388
+ * keys, i.e. a condition's predicate brand and SQL resolver. Read-query clauses instead use
1389
+ * `validateQueryKeys`, which walks the prototype chain and reports mutation clauses by name.
1390
+ */
1391
+ function checkPojoKeys(value, allowed, description) {
1392
+ if (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) require_utils.fail(`${description} must be a plain POJO`);
1393
+ for (const key of Reflect.ownKeys(value)) {
1394
+ if (!allowed.includes(key)) require_utils.fail(`${description} does not support '${String(key)}'`);
1395
+ if (typeof key === "string" && !Object.prototype.propertyIsEnumerable.call(value, key)) require_utils.fail(`${description} requires enumerable fields`);
1396
+ }
1397
+ }
1398
+ /**
1399
+ * Converts query-valued predicates to SQL conditions for the shared condition builder.
1400
+ * Keeps each subquery's projection and reports its outer aliases for join pruning.
1401
+ */
1402
+ function resolveQueryCondition(cond, ctx) {
1403
+ if (cond === void 0) return void 0;
1404
+ if (isInQueryCondition(cond)) {
1405
+ const { column, query } = cond[require_queries_sql_Tables.inQueryCondition];
1406
+ const value = createMaybeQueryValue(query);
1407
+ if (value === void 0) return void 0;
1408
+ if (!require_queries_sql_Expr.isExpr(value)) return require_utils.fail("An in query literal must select one expression");
1409
+ return column.in(value);
1410
+ }
1411
+ if ("and" in cond && cond.and) return {
1412
+ and: cond.and.map((child) => resolveQueryCondition(child, ctx)),
1413
+ pruneIfUndefined: cond.pruneIfUndefined
1414
+ };
1415
+ if ("or" in cond && cond.or) return {
1416
+ or: cond.or.map((child) => resolveQueryCondition(child, ctx)),
1417
+ pruneIfUndefined: cond.pruneIfUndefined
1418
+ };
1419
+ if ("exists" in cond || "notExists" in cond) {
1420
+ const positive = "exists" in cond;
1421
+ const subquery = positive ? cond.exists : cond.notExists;
1422
+ if (subquery === void 0) return void 0;
1423
+ const plan = parseQuery(toQuery(subquery), ctx, ctx.assigner);
1424
+ return {
1425
+ kind: "raw",
1426
+ condition: `${positive ? "EXISTS" : "NOT EXISTS"} (${plan.sql})`,
1427
+ bindings: plan.bindings,
1428
+ aliases: plan.outerRefs,
1429
+ pruneable: false
1430
+ };
1431
+ }
1432
+ return cond;
1433
+ }
1434
+ function isFilter(cond) {
1435
+ return "and" in cond && cond.and !== void 0 || "or" in cond && cond.or !== void 0;
1436
+ }
1437
+ /**
1438
+ * Checks structural pruning without resolving SQL or correlated aliases.
1439
+ *
1440
+ * Keeps individual predicates and applies ConditionBuilder's pruning policy (i.e. pruneIfUndefined) to groups.
1441
+ * I.e. an Author condition AND an omitted Book condition survives unless the group uses `any`.
1442
+ */
1443
+ function isPrunedQueryCondition(cond) {
1444
+ if (cond === void 0 || cond === require_queries_skipCondition.skipCondition) return true;
1445
+ if (isInQueryCondition(cond)) return isPrunedQueryCondition(normalizeWhere(normalizeQueryJoins(cond[require_queries_sql_Tables.inQueryCondition].query).where));
1446
+ if ("and" in cond || "or" in cond) {
1447
+ const children = (cond.and ?? cond.or ?? []).map(isPrunedQueryCondition);
1448
+ return children.every((pruned) => pruned) || "pruneIfUndefined" in cond && cond.pruneIfUndefined === "any" && children.some((pruned) => pruned);
1449
+ }
1450
+ if ("exists" in cond) return cond.exists === void 0;
1451
+ if ("notExists" in cond) return cond.notExists === void 0;
1452
+ return false;
1453
+ }
1454
+ /** Recognizes the direct query-literal condition created by EntityColumn.in. */
1455
+ function isInQueryCondition(value) {
1456
+ return typeof value === "object" && value !== null && require_queries_sql_Tables.inQueryCondition in value;
1457
+ }
1458
+ /** The physical source aliases a parsed condition tree references. */
1459
+ function refsOf(parsed) {
1460
+ return require_queries_parsedConditions.deepFindConditions(parsed, false).flatMap((c) => c.kind === "column" ? [c.alias] : c.kind === "raw" ? c.aliases : c.outerAliases);
1461
+ }
1462
+ /**
1463
+ * Pruning: em.find's paradigm, on a flat join list.
1464
+ *
1465
+ * A condition given `undefined` was already dropped by `ConditionBuilder`. Now a join that nothing
1466
+ * references anymore drops with it: a join is required if the source, a select, a surviving condition,
1467
+ * a group-by, an order-by, or another required join's ON references it, or if it is pinned with
1468
+ * `keep: true`. Marking follows ON dependencies transitively, exactly like `pruneUnusedJoins`'s
1469
+ * `DependencyTracker`.
1470
+ *
1471
+ * em.find's joins almost never filter rows by themselves, so pruning them is semantics-preserving. An
1472
+ * explicit `{ inner: b, on }` here does filter rows, so pruning it when unreferenced drops that filter;
1473
+ * that matches `{ books: { title: undefined } }` in em.find and is deliberate. `keep: true` pins it, and
1474
+ * a pure existence filter is better written as `a.id.in(query({ ... }))`, which is never `undefined`.
1475
+ *
1476
+ * CTEs prune on the same rule and through the same dependency map: a `with` entry nothing reads
1477
+ * anymore drops with the join that read it, and a CTE read only by another CTE survives with it.
1478
+ * A CTE joined into the query shares its alias with that join, so their dependencies are merged.
1479
+ *
1480
+ * The one join that never prunes is a recursive term's reference to its own CTE: PostgreSQL requires
1481
+ * it, so it is not the caller's optional filter (see `Ctx.recursiveSelf`).
1482
+ */
1483
+ function pruneJoins(q, ctx, from, joins, ctes, used) {
1484
+ if (q.pruneJoins === false) return {
1485
+ joins,
1486
+ ctes
1487
+ };
1488
+ const deps = /* @__PURE__ */ new Map();
1489
+ function addDeps(alias, refs) {
1490
+ const own = refs.filter((r) => r !== alias);
1491
+ const existing = deps.get(alias);
1492
+ if (existing) existing.push(...own);
1493
+ else deps.set(alias, own);
1494
+ }
1495
+ for (const j of joins) addDeps(j.source.alias, [...j.userOn?.refs ?? [], ...j.source.refs]);
1496
+ for (const c of ctes) addDeps(c.alias, c.plan.outerRefs);
1497
+ const required = /* @__PURE__ */ new Set();
1498
+ function markRequired(alias) {
1499
+ if (required.has(alias)) return;
1500
+ required.add(alias);
1501
+ for (const dep of deps.get(alias) ?? []) markRequired(dep);
1502
+ }
1503
+ markRequired(from.alias);
1504
+ for (const r of used.flatMap((u) => u.refs)) markRequired(r);
1505
+ for (const j of joins) if (j.keep) markRequired(j.source.alias);
1506
+ for (const j of joins) if (j.source.handle === ctx.recursiveSelf) markRequired(j.source.alias);
1507
+ return {
1508
+ joins: joins.filter((j) => required.has(j.source.alias)),
1509
+ ctes: ctes.filter((c) => required.has(c.alias))
1510
+ };
1511
+ }
1512
+ /**
1513
+ * Names and parses each `with` entry, in declaration order.
1514
+ *
1515
+ * Each entry is in scope before the next is parsed, so a CTE can read an *earlier* sibling by name,
1516
+ * PostgreSQL's rule for a non-recursive WITH. A forward reference, or a CTE reading the query's own
1517
+ * `from`, fails as "not in this query's from/join", the same error any out-of-scope source gets.
1518
+ *
1519
+ * I.e. `with: [totals, ranked]` parses `totals` first, so `ranked` can join it, but not the reverse.
1520
+ */
1521
+ function registerCtes(q, ctx, assigner) {
1522
+ const handles = (q.with === void 0 ? [] : Array.isArray(q.with) ? q.with : [q.with]).filter(isDefined).map(withEntryHandle);
1523
+ const aliases = handles.map((handle) => assigner.getLiteralAlias(handle.name ?? "cte"));
1524
+ handles.forEach((handle, i) => ctx.declareCte(handle, aliases[i]));
1525
+ return handles.map((handle, i) => {
1526
+ if (handle.recursive) ctx.promoteCte(handle);
1527
+ const plan = parseQuery(handle.q, ctx, assigner, handle.recursive ? handle : void 0);
1528
+ if (!handle.recursive) ctx.promoteCte(handle);
1529
+ return {
1530
+ alias: aliases[i],
1531
+ plan,
1532
+ recursive: handle.recursive
1533
+ };
1534
+ });
1535
+ }
1536
+ /** A CTE must be a table shape, so entity-mode and scalar values, which have no columns, are out. */
1537
+ function withEntryHandle(entry) {
1538
+ if (!isSubqueryValue(entry)) require_utils.fail(entry instanceof SubqueryExpr || isEntityQueryValue(entry) ? "A `with` entry needs named columns; entity and scalar query(...) values have none" : "A `with` entry must be a query(...) value");
1539
+ return readValueHandle(entry);
1540
+ }
1541
+ /**
1542
+ * Puts a statement's surviving `with` entries in front of it, dropping the ones nothing reads.
1543
+ *
1544
+ * `referenced` is the aliases the rest of the statement used. The WITH clause leads the statement, so
1545
+ * its bindings lead the statement's bindings too.
1546
+ */
1547
+ function prependCtes(ctes, referenced, sql, bindings) {
1548
+ const kept = pruneCtes(ctes, referenced);
1549
+ if (kept.length === 0) return {
1550
+ sql,
1551
+ bindings
1552
+ };
1553
+ const clause = withFragment(kept);
1554
+ return {
1555
+ sql: clause.sql + sql,
1556
+ bindings: [...clause.bindings, ...bindings]
1557
+ };
1558
+ }
1559
+ /**
1560
+ * Drops the CTEs that nothing reads, given the aliases the rest of the statement referenced.
1561
+ *
1562
+ * A CTE can only read earlier siblings, so going last to first means every CTE that could read this one
1563
+ * was already visited, and its own reads are already in `referenced`. That makes one pass enough; first
1564
+ * to last would have to repeat until the set stopped growing. `unshift` restores WITH order.
1565
+ */
1566
+ function pruneCtes(ctes, referenced) {
1567
+ const kept = [];
1568
+ for (let i = ctes.length - 1; i >= 0; i--) {
1569
+ const cte = ctes[i];
1570
+ if (!referenced.has(cte.alias)) continue;
1571
+ for (const ref of cte.plan.outerRefs) referenced.add(ref);
1572
+ kept.unshift(cte);
1573
+ }
1574
+ return kept;
1575
+ }
1576
+ /**
1577
+ * Renders `WITH a AS (...), b AS (...) `, whose bindings lead the statement, as their SQL does.
1578
+ *
1579
+ * One recursive CTE makes the whole clause `WITH RECURSIVE`, PostgreSQL's rule: the keyword is on the
1580
+ * clause, not on the entry that needs it, and it does not force the other entries to be recursive.
1581
+ */
1582
+ function withFragment(ctes) {
1583
+ return {
1584
+ sql: `WITH${ctes.some((c) => c.recursive) ? " RECURSIVE" : ""} ${ctes.map((c) => `${require_queries_sql_keywords.safeKq(c.alias)} AS (${c.plan.sql})`).join(", ")} `,
1585
+ bindings: ctes.flatMap((c) => c.plan.bindings),
1586
+ refs: []
1587
+ };
1588
+ }
1589
+ function asExpr(value, where) {
1590
+ if (value instanceof require_queries_sql_Expr.BaseExpr) return value;
1591
+ return require_utils.fail(`${where} must be an expression, i.e. a table column, aggregate, sql\`...\`, or scalar query(...)`);
1592
+ }
1593
+ /** Builds inline select expressions while leaving existing expression instances intact. */
1594
+ function asSelectExpr(value, where) {
1595
+ if (value instanceof require_queries_sql_Expr.BaseExpr) return value;
1596
+ if (isPlainSelect(value)) return require_queries_sql_expressions_expression.buildExpr(value);
1597
+ return require_utils.fail(`${where} must be a column, an expression, or an expression literal`);
1598
+ }
1599
+ function joinFragmentParts(parts, sep) {
1600
+ return {
1601
+ sql: parts.map((p) => p.sql).join(sep),
1602
+ bindings: parts.flatMap((p) => p.bindings),
1603
+ refs: []
1604
+ };
1605
+ }
1606
+ function isDefined(value) {
1607
+ return value !== void 0;
1608
+ }
1609
+ /** Lowers a relationship tree before SQL rendering or output nullability is calculated. */
1610
+ function normalizeQueryJoins(q) {
1611
+ if (q.join === void 0 || Array.isArray(q.join)) return q;
1612
+ const tree = require_queries_sql_JoinTree.compileJoinTree(q.from, q.join);
1613
+ return {
1614
+ ...q,
1615
+ join: tree.joins,
1616
+ where: { and: [tree.condition, normalizeWhere(q.where)] }
1617
+ };
1618
+ }
1619
+ /** Gives WHERE arrays the same pruning and validation as explicit AND groups. */
1620
+ function normalizeWhere(where) {
1621
+ return Array.isArray(where) ? { and: where } : where;
1622
+ }
1623
+ /** Creates the runtime query value after the public signature has checked its input. */
1624
+ function createQueryValue(q) {
1625
+ const handle = new SubqueryHandle(toQuery(q));
1626
+ const output = handle.output();
1627
+ if (output.kind === "entity") return { [entityQueryBrand]: handle };
1628
+ else if (output.kind === "scalar") return new SubqueryExpr(handle);
1629
+ else return newSubqueryProxy(handle);
1630
+ }
1631
+ /** Keeps shorthand declarations callable-only, without recursively copying sql's own shorthand properties. */
1632
+ function typedSql(strings, ...values) {
1633
+ return new require_queries_sql_Expr.TemplateExpr(strings, values);
1634
+ }
1635
+ //#endregion
1636
+ exports.Ctx = Ctx;
1637
+ exports.SubqueryHandle = SubqueryHandle;
1638
+ exports.checkPojoKeys = checkPojoKeys;
1639
+ exports.conditionToSql = conditionToSql;
1640
+ exports.entityQueryBrand = entityQueryBrand;
1641
+ exports.injectedConditions = injectedConditions;
1642
+ exports.isReadQueryValue = isReadQueryValue;
1643
+ exports.parseNestedQuery = parseNestedQuery;
1644
+ exports.parseRootQuery = parseRootQuery;
1645
+ exports.prependCtes = prependCtes;
1646
+ exports.projectionToSql = projectionToSql;
1647
+ exports.pruneCtes = pruneCtes;
1648
+ exports.query = query;
1649
+ exports.queryMaybe = queryMaybe;
1650
+ exports.recursiveQuery = recursiveQuery;
1651
+ exports.registerCtes = registerCtes;
1652
+ exports.scalarQueryBrand = scalarQueryBrand;
1653
+ exports.sql = sql;
1654
+ exports.subqueryBrand = subqueryBrand;
1655
+ exports.withFragment = withFragment;
1656
+
1657
+ //# sourceMappingURL=query.cjs.map