joist-core 2.3.0-next.8 → 2.3.0-next.80

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 (1365) hide show
  1. package/build/AliasAssigner.cjs +36 -0
  2. package/build/AliasAssigner.cjs.map +1 -0
  3. package/build/AliasAssigner.d.cts +13 -0
  4. package/build/AliasAssigner.d.cts.map +1 -0
  5. package/build/AliasAssigner.d.mts +13 -0
  6. package/build/AliasAssigner.d.mts.map +1 -0
  7. package/build/AliasAssigner.js +34 -38
  8. package/build/AliasAssigner.js.map +1 -1
  9. package/build/Aliases.cjs +306 -0
  10. package/build/Aliases.cjs.map +1 -0
  11. package/build/Aliases.d.cts +122 -0
  12. package/build/Aliases.d.cts.map +1 -0
  13. package/build/Aliases.d.mts +122 -0
  14. package/build/Aliases.d.mts.map +1 -0
  15. package/build/Aliases.js +283 -442
  16. package/build/Aliases.js.map +1 -1
  17. package/build/BaseEntity.cjs +112 -0
  18. package/build/BaseEntity.cjs.map +1 -0
  19. package/build/BaseEntity.d.cts +73 -0
  20. package/build/BaseEntity.d.cts.map +1 -0
  21. package/build/BaseEntity.d.mts +73 -0
  22. package/build/BaseEntity.d.mts.map +1 -0
  23. package/build/BaseEntity.js +99 -110
  24. package/build/BaseEntity.js.map +1 -1
  25. package/build/ConditionBuilder.cjs +107 -0
  26. package/build/ConditionBuilder.cjs.map +1 -0
  27. package/build/ConditionBuilder.d.cts +31 -0
  28. package/build/ConditionBuilder.d.cts.map +1 -0
  29. package/build/ConditionBuilder.d.mts +31 -0
  30. package/build/ConditionBuilder.d.mts.map +1 -0
  31. package/build/ConditionBuilder.js +101 -107
  32. package/build/ConditionBuilder.js.map +1 -1
  33. package/build/DeferredAlias.cjs +28 -0
  34. package/build/DeferredAlias.cjs.map +1 -0
  35. package/build/DeferredAlias.d.cts +22 -0
  36. package/build/DeferredAlias.d.cts.map +1 -0
  37. package/build/DeferredAlias.d.mts +22 -0
  38. package/build/DeferredAlias.d.mts.map +1 -0
  39. package/build/DeferredAlias.js +25 -0
  40. package/build/DeferredAlias.js.map +1 -0
  41. package/build/Entity.cjs +12 -0
  42. package/build/Entity.cjs.map +1 -0
  43. package/build/Entity.d.cts +42 -0
  44. package/build/Entity.d.cts.map +1 -0
  45. package/build/Entity.d.mts +42 -0
  46. package/build/Entity.d.mts.map +1 -0
  47. package/build/Entity.js +8 -5
  48. package/build/Entity.js.map +1 -1
  49. package/build/EntityFields.cjs +1 -0
  50. package/build/EntityFields.d.cts +36 -0
  51. package/build/EntityFields.d.cts.map +1 -0
  52. package/build/EntityFields.d.mts +36 -0
  53. package/build/EntityFields.d.mts.map +1 -0
  54. package/build/EntityFields.js +1 -3
  55. package/build/EntityFilter.cjs +32 -0
  56. package/build/EntityFilter.cjs.map +1 -0
  57. package/build/EntityFilter.d.cts +127 -0
  58. package/build/EntityFilter.d.cts.map +1 -0
  59. package/build/EntityFilter.d.mts +127 -0
  60. package/build/EntityFilter.d.mts.map +1 -0
  61. package/build/EntityFilter.js +27 -17
  62. package/build/EntityFilter.js.map +1 -1
  63. package/build/EntityGraphQLFilter.cjs +56 -0
  64. package/build/EntityGraphQLFilter.cjs.map +1 -0
  65. package/build/EntityGraphQLFilter.d.cts +59 -0
  66. package/build/EntityGraphQLFilter.d.cts.map +1 -0
  67. package/build/EntityGraphQLFilter.d.mts +59 -0
  68. package/build/EntityGraphQLFilter.d.mts.map +1 -0
  69. package/build/EntityGraphQLFilter.js +51 -50
  70. package/build/EntityGraphQLFilter.js.map +1 -1
  71. package/build/EntityManager.cjs +1939 -0
  72. package/build/EntityManager.cjs.map +1 -0
  73. package/build/EntityManager.d.cts +834 -0
  74. package/build/EntityManager.d.cts.map +1 -0
  75. package/build/EntityManager.d.mts +834 -0
  76. package/build/EntityManager.d.mts.map +1 -0
  77. package/build/EntityManager.js +1816 -2223
  78. package/build/EntityManager.js.map +1 -1
  79. package/build/EntityMetadata.cjs +77 -0
  80. package/build/EntityMetadata.cjs.map +1 -0
  81. package/build/EntityMetadata.d.cts +262 -0
  82. package/build/EntityMetadata.d.cts.map +1 -0
  83. package/build/EntityMetadata.d.mts +262 -0
  84. package/build/EntityMetadata.d.mts.map +1 -0
  85. package/build/EntityMetadata.js +33 -48
  86. package/build/EntityMetadata.js.map +1 -1
  87. package/build/EnumMetadata.cjs +1 -0
  88. package/build/EnumMetadata.d.cts +18 -0
  89. package/build/EnumMetadata.d.cts.map +1 -0
  90. package/build/EnumMetadata.d.mts +18 -0
  91. package/build/EnumMetadata.d.mts.map +1 -0
  92. package/build/EnumMetadata.js +1 -3
  93. package/build/Expr.cjs +475 -0
  94. package/build/Expr.cjs.map +1 -0
  95. package/build/Expr.d.cts +258 -0
  96. package/build/Expr.d.cts.map +1 -0
  97. package/build/Expr.d.mts +258 -0
  98. package/build/Expr.d.mts.map +1 -0
  99. package/build/Expr.js +460 -0
  100. package/build/Expr.js.map +1 -0
  101. package/build/FlushLock.cjs +51 -0
  102. package/build/FlushLock.cjs.map +1 -0
  103. package/build/FlushLock.d.cts +29 -0
  104. package/build/FlushLock.d.cts.map +1 -0
  105. package/build/FlushLock.d.mts +29 -0
  106. package/build/FlushLock.d.mts.map +1 -0
  107. package/build/FlushLock.js +48 -54
  108. package/build/FlushLock.js.map +1 -1
  109. package/build/HintTree.cjs +70 -0
  110. package/build/HintTree.cjs.map +1 -0
  111. package/build/HintTree.d.cts +45 -0
  112. package/build/HintTree.d.cts.map +1 -0
  113. package/build/HintTree.d.mts +45 -0
  114. package/build/HintTree.d.mts.map +1 -0
  115. package/build/HintTree.js +63 -58
  116. package/build/HintTree.js.map +1 -1
  117. package/build/IndexManager.cjs +176 -0
  118. package/build/IndexManager.cjs.map +1 -0
  119. package/build/IndexManager.d.cts +36 -0
  120. package/build/IndexManager.d.cts.map +1 -0
  121. package/build/IndexManager.d.mts +36 -0
  122. package/build/IndexManager.d.mts.map +1 -0
  123. package/build/IndexManager.js +167 -218
  124. package/build/IndexManager.js.map +1 -1
  125. package/build/InstanceData.cjs +218 -0
  126. package/build/InstanceData.cjs.map +1 -0
  127. package/build/InstanceData.d.cts +98 -0
  128. package/build/InstanceData.d.cts.map +1 -0
  129. package/build/InstanceData.d.mts +98 -0
  130. package/build/InstanceData.d.mts.map +1 -0
  131. package/build/InstanceData.js +215 -222
  132. package/build/InstanceData.js.map +1 -1
  133. package/build/IsLoadedCache.cjs +59 -0
  134. package/build/IsLoadedCache.cjs.map +1 -0
  135. package/build/IsLoadedCache.d.cts +35 -0
  136. package/build/IsLoadedCache.d.cts.map +1 -0
  137. package/build/IsLoadedCache.d.mts +35 -0
  138. package/build/IsLoadedCache.d.mts.map +1 -0
  139. package/build/IsLoadedCache.js +57 -90
  140. package/build/IsLoadedCache.js.map +1 -1
  141. package/build/JoinRows.cjs +266 -0
  142. package/build/JoinRows.cjs.map +1 -0
  143. package/build/JoinRows.d.cts +120 -0
  144. package/build/JoinRows.d.cts.map +1 -0
  145. package/build/JoinRows.d.mts +120 -0
  146. package/build/JoinRows.d.mts.map +1 -0
  147. package/build/JoinRows.js +257 -313
  148. package/build/JoinRows.js.map +1 -1
  149. package/build/PendingChanges.cjs +2 -0
  150. package/build/PendingChanges.d.cts +29 -0
  151. package/build/PendingChanges.d.cts.map +1 -0
  152. package/build/PendingChanges.d.mts +29 -0
  153. package/build/PendingChanges.d.mts.map +1 -0
  154. package/build/PendingChanges.js +2 -3
  155. package/build/PluginManager.cjs +91 -0
  156. package/build/PluginManager.cjs.map +1 -0
  157. package/build/PluginManager.d.cts +112 -0
  158. package/build/PluginManager.d.cts.map +1 -0
  159. package/build/PluginManager.d.mts +112 -0
  160. package/build/PluginManager.d.mts.map +1 -0
  161. package/build/PluginManager.js +82 -106
  162. package/build/PluginManager.js.map +1 -1
  163. package/build/QueryParser.cjs +842 -0
  164. package/build/QueryParser.cjs.map +1 -0
  165. package/build/QueryParser.collectionJoins.cjs +353 -0
  166. package/build/QueryParser.collectionJoins.cjs.map +1 -0
  167. package/build/QueryParser.collectionJoins.d.cts +30 -0
  168. package/build/QueryParser.collectionJoins.d.cts.map +1 -0
  169. package/build/QueryParser.collectionJoins.d.mts +30 -0
  170. package/build/QueryParser.collectionJoins.d.mts.map +1 -0
  171. package/build/QueryParser.collectionJoins.js +258 -372
  172. package/build/QueryParser.collectionJoins.js.map +1 -1
  173. package/build/QueryParser.d.cts +346 -0
  174. package/build/QueryParser.d.cts.map +1 -0
  175. package/build/QueryParser.d.mts +346 -0
  176. package/build/QueryParser.d.mts.map +1 -0
  177. package/build/QueryParser.js +777 -915
  178. package/build/QueryParser.js.map +1 -1
  179. package/build/QueryParser.pruning.cjs +129 -0
  180. package/build/QueryParser.pruning.cjs.map +1 -0
  181. package/build/QueryParser.pruning.d.cts +10 -0
  182. package/build/QueryParser.pruning.d.cts.map +1 -0
  183. package/build/QueryParser.pruning.d.mts +10 -0
  184. package/build/QueryParser.pruning.d.mts.map +1 -0
  185. package/build/QueryParser.pruning.js +104 -173
  186. package/build/QueryParser.pruning.js.map +1 -1
  187. package/build/QueryVisitor.cjs +61 -0
  188. package/build/QueryVisitor.cjs.map +1 -0
  189. package/build/QueryVisitor.d.cts +21 -0
  190. package/build/QueryVisitor.d.cts.map +1 -0
  191. package/build/QueryVisitor.d.mts +21 -0
  192. package/build/QueryVisitor.d.mts.map +1 -0
  193. package/build/QueryVisitor.js +50 -97
  194. package/build/QueryVisitor.js.map +1 -1
  195. package/build/ReactionsManager.cjs +266 -0
  196. package/build/ReactionsManager.cjs.map +1 -0
  197. package/build/ReactionsManager.d.cts +99 -0
  198. package/build/ReactionsManager.d.cts.map +1 -0
  199. package/build/ReactionsManager.d.mts +99 -0
  200. package/build/ReactionsManager.d.mts.map +1 -0
  201. package/build/ReactionsManager.js +263 -313
  202. package/build/ReactionsManager.js.map +1 -1
  203. package/build/RowData.cjs +37 -0
  204. package/build/RowData.cjs.map +1 -0
  205. package/build/RowData.d.cts +53 -0
  206. package/build/RowData.d.cts.map +1 -0
  207. package/build/RowData.d.mts +53 -0
  208. package/build/RowData.d.mts.map +1 -0
  209. package/build/RowData.js +35 -0
  210. package/build/RowData.js.map +1 -0
  211. package/build/Tables.cjs +689 -0
  212. package/build/Tables.cjs.map +1 -0
  213. package/build/Tables.d.cts +248 -0
  214. package/build/Tables.d.cts.map +1 -0
  215. package/build/Tables.d.mts +248 -0
  216. package/build/Tables.d.mts.map +1 -0
  217. package/build/Tables.js +679 -0
  218. package/build/Tables.js.map +1 -0
  219. package/build/Todo.cjs +73 -0
  220. package/build/Todo.cjs.map +1 -0
  221. package/build/Todo.d.cts +38 -0
  222. package/build/Todo.d.cts.map +1 -0
  223. package/build/Todo.d.mts +38 -0
  224. package/build/Todo.d.mts.map +1 -0
  225. package/build/Todo.js +57 -61
  226. package/build/Todo.js.map +1 -1
  227. package/build/TypeInfo.cjs +80 -0
  228. package/build/TypeInfo.cjs.map +1 -0
  229. package/build/TypeInfo.d.cts +57 -0
  230. package/build/TypeInfo.d.cts.map +1 -0
  231. package/build/TypeInfo.d.mts +57 -0
  232. package/build/TypeInfo.d.mts.map +1 -0
  233. package/build/TypeInfo.js +78 -0
  234. package/build/TypeInfo.js.map +1 -0
  235. package/build/_virtual/_rolldown/runtime.cjs +23 -0
  236. package/build/batchloaders/BatchLoader.cjs +49 -0
  237. package/build/batchloaders/BatchLoader.cjs.map +1 -0
  238. package/build/batchloaders/BatchLoader.d.cts +17 -0
  239. package/build/batchloaders/BatchLoader.d.cts.map +1 -0
  240. package/build/batchloaders/BatchLoader.d.mts +17 -0
  241. package/build/batchloaders/BatchLoader.d.mts.map +1 -0
  242. package/build/batchloaders/BatchLoader.js +45 -54
  243. package/build/batchloaders/BatchLoader.js.map +1 -1
  244. package/build/batchloaders/enumCollectionBatchLoader.cjs +66 -0
  245. package/build/batchloaders/enumCollectionBatchLoader.cjs.map +1 -0
  246. package/build/batchloaders/enumCollectionBatchLoader.d.cts +11 -0
  247. package/build/batchloaders/enumCollectionBatchLoader.d.cts.map +1 -0
  248. package/build/batchloaders/enumCollectionBatchLoader.d.mts +11 -0
  249. package/build/batchloaders/enumCollectionBatchLoader.d.mts.map +1 -0
  250. package/build/batchloaders/enumCollectionBatchLoader.js +58 -48
  251. package/build/batchloaders/enumCollectionBatchLoader.js.map +1 -1
  252. package/build/batchloaders/loadBatchLoader.cjs +78 -0
  253. package/build/batchloaders/loadBatchLoader.cjs.map +1 -0
  254. package/build/batchloaders/loadBatchLoader.d.cts +20 -0
  255. package/build/batchloaders/loadBatchLoader.d.cts.map +1 -0
  256. package/build/batchloaders/loadBatchLoader.d.mts +20 -0
  257. package/build/batchloaders/loadBatchLoader.d.mts.map +1 -0
  258. package/build/batchloaders/loadBatchLoader.js +72 -51
  259. package/build/batchloaders/loadBatchLoader.js.map +1 -1
  260. package/build/batchloaders/manyToManyBatchLoader.cjs +78 -0
  261. package/build/batchloaders/manyToManyBatchLoader.cjs.map +1 -0
  262. package/build/batchloaders/manyToManyBatchLoader.d.cts +11 -0
  263. package/build/batchloaders/manyToManyBatchLoader.d.cts.map +1 -0
  264. package/build/batchloaders/manyToManyBatchLoader.d.mts +11 -0
  265. package/build/batchloaders/manyToManyBatchLoader.d.mts.map +1 -0
  266. package/build/batchloaders/manyToManyBatchLoader.js +70 -61
  267. package/build/batchloaders/manyToManyBatchLoader.js.map +1 -1
  268. package/build/batchloaders/oneToManyBatchLoader.cjs +63 -0
  269. package/build/batchloaders/oneToManyBatchLoader.cjs.map +1 -0
  270. package/build/batchloaders/oneToManyBatchLoader.d.cts +11 -0
  271. package/build/batchloaders/oneToManyBatchLoader.d.cts.map +1 -0
  272. package/build/batchloaders/oneToManyBatchLoader.d.mts +11 -0
  273. package/build/batchloaders/oneToManyBatchLoader.d.mts.map +1 -0
  274. package/build/batchloaders/oneToManyBatchLoader.js +58 -48
  275. package/build/batchloaders/oneToManyBatchLoader.js.map +1 -1
  276. package/build/batchloaders/oneToOneBatchLoader.cjs +64 -0
  277. package/build/batchloaders/oneToOneBatchLoader.cjs.map +1 -0
  278. package/build/batchloaders/oneToOneBatchLoader.d.cts +10 -0
  279. package/build/batchloaders/oneToOneBatchLoader.d.cts.map +1 -0
  280. package/build/batchloaders/oneToOneBatchLoader.d.mts +10 -0
  281. package/build/batchloaders/oneToOneBatchLoader.d.mts.map +1 -0
  282. package/build/batchloaders/oneToOneBatchLoader.js +59 -50
  283. package/build/batchloaders/oneToOneBatchLoader.js.map +1 -1
  284. package/build/batchloaders/populateBatchLoader.cjs +156 -0
  285. package/build/batchloaders/populateBatchLoader.cjs.map +1 -0
  286. package/build/batchloaders/populateBatchLoader.d.cts +17 -0
  287. package/build/batchloaders/populateBatchLoader.d.cts.map +1 -0
  288. package/build/batchloaders/populateBatchLoader.d.mts +17 -0
  289. package/build/batchloaders/populateBatchLoader.d.mts.map +1 -0
  290. package/build/batchloaders/populateBatchLoader.js +148 -203
  291. package/build/batchloaders/populateBatchLoader.js.map +1 -1
  292. package/build/batchloaders/recursiveChildrenBatchLoader.cjs +78 -0
  293. package/build/batchloaders/recursiveChildrenBatchLoader.cjs.map +1 -0
  294. package/build/batchloaders/recursiveChildrenBatchLoader.d.cts +10 -0
  295. package/build/batchloaders/recursiveChildrenBatchLoader.d.cts.map +1 -0
  296. package/build/batchloaders/recursiveChildrenBatchLoader.d.mts +10 -0
  297. package/build/batchloaders/recursiveChildrenBatchLoader.d.mts.map +1 -0
  298. package/build/batchloaders/recursiveChildrenBatchLoader.js +71 -72
  299. package/build/batchloaders/recursiveChildrenBatchLoader.js.map +1 -1
  300. package/build/batchloaders/recursiveM2mBatchLoader.cjs +83 -0
  301. package/build/batchloaders/recursiveM2mBatchLoader.cjs.map +1 -0
  302. package/build/batchloaders/recursiveM2mBatchLoader.d.cts +10 -0
  303. package/build/batchloaders/recursiveM2mBatchLoader.d.cts.map +1 -0
  304. package/build/batchloaders/recursiveM2mBatchLoader.d.mts +10 -0
  305. package/build/batchloaders/recursiveM2mBatchLoader.d.mts.map +1 -0
  306. package/build/batchloaders/recursiveM2mBatchLoader.js +76 -79
  307. package/build/batchloaders/recursiveM2mBatchLoader.js.map +1 -1
  308. package/build/batchloaders/recursiveParentsBatchLoader.cjs +65 -0
  309. package/build/batchloaders/recursiveParentsBatchLoader.cjs.map +1 -0
  310. package/build/batchloaders/recursiveParentsBatchLoader.d.cts +10 -0
  311. package/build/batchloaders/recursiveParentsBatchLoader.d.cts.map +1 -0
  312. package/build/batchloaders/recursiveParentsBatchLoader.d.mts +10 -0
  313. package/build/batchloaders/recursiveParentsBatchLoader.d.mts.map +1 -0
  314. package/build/batchloaders/recursiveParentsBatchLoader.js +58 -55
  315. package/build/batchloaders/recursiveParentsBatchLoader.js.map +1 -1
  316. package/build/changes.cjs +222 -0
  317. package/build/changes.cjs.map +1 -0
  318. package/build/changes.d.cts +95 -0
  319. package/build/changes.d.cts.map +1 -0
  320. package/build/changes.d.mts +95 -0
  321. package/build/changes.d.mts.map +1 -0
  322. package/build/changes.js +209 -285
  323. package/build/changes.js.map +1 -1
  324. package/build/columns.cjs +63 -0
  325. package/build/columns.cjs.map +1 -0
  326. package/build/columns.d.cts +38 -0
  327. package/build/columns.d.cts.map +1 -0
  328. package/build/columns.d.mts +38 -0
  329. package/build/columns.d.mts.map +1 -0
  330. package/build/columns.js +62 -0
  331. package/build/columns.js.map +1 -0
  332. package/build/conditions.cjs +16 -0
  333. package/build/conditions.cjs.map +1 -0
  334. package/build/conditions.d.cts +38 -0
  335. package/build/conditions.d.cts.map +1 -0
  336. package/build/conditions.d.mts +38 -0
  337. package/build/conditions.d.mts.map +1 -0
  338. package/build/conditions.js +14 -0
  339. package/build/conditions.js.map +1 -0
  340. package/build/config.cjs +295 -0
  341. package/build/config.cjs.map +1 -0
  342. package/build/config.d.cts +277 -0
  343. package/build/config.d.cts.map +1 -0
  344. package/build/config.d.mts +277 -0
  345. package/build/config.d.mts.map +1 -0
  346. package/build/config.js +255 -301
  347. package/build/config.js.map +1 -1
  348. package/build/configure.cjs +324 -0
  349. package/build/configure.cjs.map +1 -0
  350. package/build/configure.d.cts +19 -0
  351. package/build/configure.d.cts.map +1 -0
  352. package/build/configure.d.mts +19 -0
  353. package/build/configure.d.mts.map +1 -0
  354. package/build/configure.js +265 -348
  355. package/build/configure.js.map +1 -1
  356. package/build/dataloaders/fastWhereFilterHash.cjs +140 -0
  357. package/build/dataloaders/fastWhereFilterHash.cjs.map +1 -0
  358. package/build/dataloaders/fastWhereFilterHash.d.cts +18 -0
  359. package/build/dataloaders/fastWhereFilterHash.d.cts.map +1 -0
  360. package/build/dataloaders/fastWhereFilterHash.d.mts +18 -0
  361. package/build/dataloaders/fastWhereFilterHash.d.mts.map +1 -0
  362. package/build/dataloaders/fastWhereFilterHash.js +108 -133
  363. package/build/dataloaders/fastWhereFilterHash.js.map +1 -1
  364. package/build/dataloaders/findByUniqueDataLoader.cjs +59 -0
  365. package/build/dataloaders/findByUniqueDataLoader.cjs.map +1 -0
  366. package/build/dataloaders/findByUniqueDataLoader.d.cts +10 -0
  367. package/build/dataloaders/findByUniqueDataLoader.d.cts.map +1 -0
  368. package/build/dataloaders/findByUniqueDataLoader.d.mts +10 -0
  369. package/build/dataloaders/findByUniqueDataLoader.d.mts.map +1 -0
  370. package/build/dataloaders/findByUniqueDataLoader.js +54 -44
  371. package/build/dataloaders/findByUniqueDataLoader.js.map +1 -1
  372. package/build/dataloaders/findCountDataLoader.cjs +124 -0
  373. package/build/dataloaders/findCountDataLoader.cjs.map +1 -0
  374. package/build/dataloaders/findCountDataLoader.d.cts +19 -0
  375. package/build/dataloaders/findCountDataLoader.d.cts.map +1 -0
  376. package/build/dataloaders/findCountDataLoader.d.mts +19 -0
  377. package/build/dataloaders/findCountDataLoader.d.mts.map +1 -0
  378. package/build/dataloaders/findCountDataLoader.js +113 -109
  379. package/build/dataloaders/findCountDataLoader.js.map +1 -1
  380. package/build/dataloaders/findDataLoader.cjs +368 -0
  381. package/build/dataloaders/findDataLoader.cjs.map +1 -0
  382. package/build/dataloaders/findDataLoader.d.cts +79 -0
  383. package/build/dataloaders/findDataLoader.d.cts.map +1 -0
  384. package/build/dataloaders/findDataLoader.d.mts +79 -0
  385. package/build/dataloaders/findDataLoader.d.mts.map +1 -0
  386. package/build/dataloaders/findDataLoader.js +301 -382
  387. package/build/dataloaders/findDataLoader.js.map +1 -1
  388. package/build/dataloaders/findIdsDataLoader.cjs +83 -0
  389. package/build/dataloaders/findIdsDataLoader.cjs.map +1 -0
  390. package/build/dataloaders/findIdsDataLoader.d.cts +9 -0
  391. package/build/dataloaders/findIdsDataLoader.d.cts.map +1 -0
  392. package/build/dataloaders/findIdsDataLoader.d.mts +9 -0
  393. package/build/dataloaders/findIdsDataLoader.d.mts.map +1 -0
  394. package/build/dataloaders/findIdsDataLoader.js +78 -74
  395. package/build/dataloaders/findIdsDataLoader.js.map +1 -1
  396. package/build/dataloaders/findOrCreateDataLoader.cjs +121 -0
  397. package/build/dataloaders/findOrCreateDataLoader.cjs.map +1 -0
  398. package/build/dataloaders/findOrCreateDataLoader.d.cts +15 -0
  399. package/build/dataloaders/findOrCreateDataLoader.d.cts.map +1 -0
  400. package/build/dataloaders/findOrCreateDataLoader.d.mts +15 -0
  401. package/build/dataloaders/findOrCreateDataLoader.d.mts.map +1 -0
  402. package/build/dataloaders/findOrCreateDataLoader.js +103 -164
  403. package/build/dataloaders/findOrCreateDataLoader.js.map +1 -1
  404. package/build/dataloaders/findPaginatedDataLoader.cjs +99 -0
  405. package/build/dataloaders/findPaginatedDataLoader.cjs.map +1 -0
  406. package/build/dataloaders/findPaginatedDataLoader.d.cts +10 -0
  407. package/build/dataloaders/findPaginatedDataLoader.d.cts.map +1 -0
  408. package/build/dataloaders/findPaginatedDataLoader.d.mts +10 -0
  409. package/build/dataloaders/findPaginatedDataLoader.d.mts.map +1 -0
  410. package/build/dataloaders/findPaginatedDataLoader.js +94 -80
  411. package/build/dataloaders/findPaginatedDataLoader.js.map +1 -1
  412. package/build/dataloaders/lensDataLoader.cjs +178 -0
  413. package/build/dataloaders/lensDataLoader.cjs.map +1 -0
  414. package/build/dataloaders/lensDataLoader.d.cts +15 -0
  415. package/build/dataloaders/lensDataLoader.d.cts.map +1 -0
  416. package/build/dataloaders/lensDataLoader.d.mts +15 -0
  417. package/build/dataloaders/lensDataLoader.d.mts.map +1 -0
  418. package/build/dataloaders/lensDataLoader.js +172 -176
  419. package/build/dataloaders/lensDataLoader.js.map +1 -1
  420. package/build/dataloaders/manyToManyFindDataLoader.cjs +87 -0
  421. package/build/dataloaders/manyToManyFindDataLoader.cjs.map +1 -0
  422. package/build/dataloaders/manyToManyFindDataLoader.d.cts +13 -0
  423. package/build/dataloaders/manyToManyFindDataLoader.d.cts.map +1 -0
  424. package/build/dataloaders/manyToManyFindDataLoader.d.mts +13 -0
  425. package/build/dataloaders/manyToManyFindDataLoader.d.mts.map +1 -0
  426. package/build/dataloaders/manyToManyFindDataLoader.js +79 -70
  427. package/build/dataloaders/manyToManyFindDataLoader.js.map +1 -1
  428. package/build/dataloaders/oneToManyFindDataLoader.cjs +80 -0
  429. package/build/dataloaders/oneToManyFindDataLoader.cjs.map +1 -0
  430. package/build/dataloaders/oneToManyFindDataLoader.d.cts +13 -0
  431. package/build/dataloaders/oneToManyFindDataLoader.d.cts.map +1 -0
  432. package/build/dataloaders/oneToManyFindDataLoader.d.mts +13 -0
  433. package/build/dataloaders/oneToManyFindDataLoader.d.mts.map +1 -0
  434. package/build/dataloaders/oneToManyFindDataLoader.js +74 -67
  435. package/build/dataloaders/oneToManyFindDataLoader.js.map +1 -1
  436. package/build/defaults.cjs +195 -0
  437. package/build/defaults.cjs.map +1 -0
  438. package/build/defaults.d.cts +56 -0
  439. package/build/defaults.d.cts.map +1 -0
  440. package/build/defaults.d.mts +56 -0
  441. package/build/defaults.d.mts.map +1 -0
  442. package/build/defaults.js +171 -271
  443. package/build/defaults.js.map +1 -1
  444. package/build/driverApi.cjs +19 -0
  445. package/build/driverApi.cjs.map +1 -0
  446. package/build/driverApi.d.cts +22 -0
  447. package/build/driverApi.d.cts.map +1 -0
  448. package/build/driverApi.d.mts +22 -0
  449. package/build/driverApi.d.mts.map +1 -0
  450. package/build/driverApi.js +16 -15
  451. package/build/driverApi.js.map +1 -1
  452. package/build/drivers/Driver.cjs +5 -0
  453. package/build/drivers/Driver.d.cts +51 -0
  454. package/build/drivers/Driver.d.cts.map +1 -0
  455. package/build/drivers/Driver.d.mts +51 -0
  456. package/build/drivers/Driver.d.mts.map +1 -0
  457. package/build/drivers/Driver.js +5 -3
  458. package/build/drivers/EntityWriter.cjs +213 -0
  459. package/build/drivers/EntityWriter.cjs.map +1 -0
  460. package/build/drivers/EntityWriter.d.cts +66 -0
  461. package/build/drivers/EntityWriter.d.cts.map +1 -0
  462. package/build/drivers/EntityWriter.d.mts +66 -0
  463. package/build/drivers/EntityWriter.d.mts.map +1 -0
  464. package/build/drivers/EntityWriter.js +188 -219
  465. package/build/drivers/EntityWriter.js.map +1 -1
  466. package/build/drivers/IdAssigner.cjs +90 -0
  467. package/build/drivers/IdAssigner.cjs.map +1 -0
  468. package/build/drivers/IdAssigner.d.cts +50 -0
  469. package/build/drivers/IdAssigner.d.cts.map +1 -0
  470. package/build/drivers/IdAssigner.d.mts +50 -0
  471. package/build/drivers/IdAssigner.d.mts.map +1 -0
  472. package/build/drivers/IdAssigner.js +81 -124
  473. package/build/drivers/IdAssigner.js.map +1 -1
  474. package/build/drivers/buildRawQuery.cjs +113 -0
  475. package/build/drivers/buildRawQuery.cjs.map +1 -0
  476. package/build/drivers/buildRawQuery.d.cts +24 -0
  477. package/build/drivers/buildRawQuery.d.cts.map +1 -0
  478. package/build/drivers/buildRawQuery.d.mts +24 -0
  479. package/build/drivers/buildRawQuery.d.mts.map +1 -0
  480. package/build/drivers/buildRawQuery.js +102 -144
  481. package/build/drivers/buildRawQuery.js.map +1 -1
  482. package/build/drivers/buildUtils.cjs +67 -0
  483. package/build/drivers/buildUtils.cjs.map +1 -0
  484. package/build/drivers/buildUtils.d.cts +14 -0
  485. package/build/drivers/buildUtils.d.cts.map +1 -0
  486. package/build/drivers/buildUtils.d.mts +14 -0
  487. package/build/drivers/buildUtils.d.mts.map +1 -0
  488. package/build/drivers/buildUtils.js +54 -77
  489. package/build/drivers/buildUtils.js.map +1 -1
  490. package/build/drivers/index.cjs +13 -0
  491. package/build/drivers/index.d.cts +6 -0
  492. package/build/drivers/index.d.mts +6 -0
  493. package/build/drivers/index.js +5 -22
  494. package/build/execute.cjs +241 -0
  495. package/build/execute.cjs.map +1 -0
  496. package/build/execute.d.cts +195 -0
  497. package/build/execute.d.cts.map +1 -0
  498. package/build/execute.d.mts +195 -0
  499. package/build/execute.d.mts.map +1 -0
  500. package/build/execute.js +238 -0
  501. package/build/execute.js.map +1 -0
  502. package/build/fieldSerde.cjs +188 -0
  503. package/build/fieldSerde.cjs.map +1 -0
  504. package/build/fieldSerde.d.cts +87 -0
  505. package/build/fieldSerde.d.cts.map +1 -0
  506. package/build/fieldSerde.d.mts +87 -0
  507. package/build/fieldSerde.d.mts.map +1 -0
  508. package/build/fieldSerde.js +182 -0
  509. package/build/fieldSerde.js.map +1 -0
  510. package/build/fields.cjs +127 -0
  511. package/build/fields.cjs.map +1 -0
  512. package/build/fields.d.cts +29 -0
  513. package/build/fields.d.cts.map +1 -0
  514. package/build/fields.d.mts +29 -0
  515. package/build/fields.d.mts.map +1 -0
  516. package/build/fields.js +98 -160
  517. package/build/fields.js.map +1 -1
  518. package/build/getProperties.cjs +87 -0
  519. package/build/getProperties.cjs.map +1 -0
  520. package/build/getProperties.d.cts +30 -0
  521. package/build/getProperties.d.cts.map +1 -0
  522. package/build/getProperties.d.mts +30 -0
  523. package/build/getProperties.d.mts.map +1 -0
  524. package/build/getProperties.js +71 -128
  525. package/build/getProperties.js.map +1 -1
  526. package/build/index.cjs +516 -0
  527. package/build/index.cjs.map +1 -0
  528. package/build/index.d.cts +172 -0
  529. package/build/index.d.cts.map +1 -0
  530. package/build/index.d.mts +172 -0
  531. package/build/index.d.mts.map +1 -0
  532. package/build/index.js +167 -292
  533. package/build/index.js.map +1 -1
  534. package/build/json.cjs +79 -0
  535. package/build/json.cjs.map +1 -0
  536. package/build/json.d.cts +76 -0
  537. package/build/json.d.cts.map +1 -0
  538. package/build/json.d.mts +76 -0
  539. package/build/json.d.mts.map +1 -0
  540. package/build/json.js +68 -106
  541. package/build/json.js.map +1 -1
  542. package/build/k.cjs +9 -0
  543. package/build/k.cjs.map +1 -0
  544. package/build/k.d.cts +1 -0
  545. package/build/k.d.mts +1 -0
  546. package/build/k.js +6 -6
  547. package/build/k.js.map +1 -1
  548. package/build/keys.cjs +176 -0
  549. package/build/keys.cjs.map +1 -0
  550. package/build/keys.d.cts +53 -0
  551. package/build/keys.d.cts.map +1 -0
  552. package/build/keys.d.mts +53 -0
  553. package/build/keys.d.mts.map +1 -0
  554. package/build/keys.js +125 -162
  555. package/build/keys.js.map +1 -1
  556. package/build/keywords.cjs +136 -0
  557. package/build/keywords.cjs.map +1 -0
  558. package/build/keywords.d.cts +18 -0
  559. package/build/keywords.d.cts.map +1 -0
  560. package/build/keywords.d.mts +18 -0
  561. package/build/keywords.d.mts.map +1 -0
  562. package/build/keywords.js +124 -116
  563. package/build/keywords.js.map +1 -1
  564. package/build/loadHints.cjs +100 -0
  565. package/build/loadHints.cjs.map +1 -0
  566. package/build/loadHints.d.cts +116 -0
  567. package/build/loadHints.d.cts.map +1 -0
  568. package/build/loadHints.d.mts +116 -0
  569. package/build/loadHints.d.mts.map +1 -0
  570. package/build/loadHints.js +72 -108
  571. package/build/loadHints.js.map +1 -1
  572. package/build/loadLens.cjs +213 -0
  573. package/build/loadLens.cjs.map +1 -0
  574. package/build/loadLens.d.cts +77 -0
  575. package/build/loadLens.d.cts.map +1 -0
  576. package/build/loadLens.d.mts +77 -0
  577. package/build/loadLens.d.mts.map +1 -0
  578. package/build/loadLens.js +152 -270
  579. package/build/loadLens.js.map +1 -1
  580. package/build/logging/FactoryLogger.cjs +66 -0
  581. package/build/logging/FactoryLogger.cjs.map +1 -0
  582. package/build/logging/FactoryLogger.d.cts +27 -0
  583. package/build/logging/FactoryLogger.d.cts.map +1 -0
  584. package/build/logging/FactoryLogger.d.mts +27 -0
  585. package/build/logging/FactoryLogger.d.mts.map +1 -0
  586. package/build/logging/FactoryLogger.js +58 -73
  587. package/build/logging/FactoryLogger.js.map +1 -1
  588. package/build/logging/FieldLogger.cjs +57 -0
  589. package/build/logging/FieldLogger.cjs.map +1 -0
  590. package/build/logging/FieldLogger.d.cts +32 -0
  591. package/build/logging/FieldLogger.d.cts.map +1 -0
  592. package/build/logging/FieldLogger.d.mts +32 -0
  593. package/build/logging/FieldLogger.d.mts.map +1 -0
  594. package/build/logging/FieldLogger.js +51 -67
  595. package/build/logging/FieldLogger.js.map +1 -1
  596. package/build/logging/ReactionLogger.cjs +95 -0
  597. package/build/logging/ReactionLogger.cjs.map +1 -0
  598. package/build/logging/ReactionLogger.d.cts +37 -0
  599. package/build/logging/ReactionLogger.d.cts.map +1 -0
  600. package/build/logging/ReactionLogger.d.mts +37 -0
  601. package/build/logging/ReactionLogger.d.mts.map +1 -0
  602. package/build/logging/ReactionLogger.js +78 -66
  603. package/build/logging/ReactionLogger.js.map +1 -1
  604. package/build/newEntity.cjs +89 -0
  605. package/build/newEntity.cjs.map +1 -0
  606. package/build/newEntity.d.cts +48 -0
  607. package/build/newEntity.d.cts.map +1 -0
  608. package/build/newEntity.d.mts +48 -0
  609. package/build/newEntity.d.mts.map +1 -0
  610. package/build/newEntity.js +71 -94
  611. package/build/newEntity.js.map +1 -1
  612. package/build/newTestInstance.cjs +539 -0
  613. package/build/newTestInstance.cjs.map +1 -0
  614. package/build/newTestInstance.d.cts +207 -0
  615. package/build/newTestInstance.d.cts.map +1 -0
  616. package/build/newTestInstance.d.mts +207 -0
  617. package/build/newTestInstance.d.mts.map +1 -0
  618. package/build/newTestInstance.js +459 -721
  619. package/build/newTestInstance.js.map +1 -1
  620. package/build/normalizeHints.cjs +60 -0
  621. package/build/normalizeHints.cjs.map +1 -0
  622. package/build/normalizeHints.d.cts +24 -0
  623. package/build/normalizeHints.d.cts.map +1 -0
  624. package/build/normalizeHints.d.mts +24 -0
  625. package/build/normalizeHints.d.mts.map +1 -0
  626. package/build/normalizeHints.js +42 -55
  627. package/build/normalizeHints.js.map +1 -1
  628. package/build/nowUTC.cjs +15 -0
  629. package/build/nowUTC.cjs.map +1 -0
  630. package/build/nowUTC.d.cts +10 -0
  631. package/build/nowUTC.d.cts.map +1 -0
  632. package/build/nowUTC.d.mts +10 -0
  633. package/build/nowUTC.d.mts.map +1 -0
  634. package/build/nowUTC.js +14 -0
  635. package/build/nowUTC.js.map +1 -0
  636. package/build/plugins/ImmutableEntitiesPlugin.cjs +21 -0
  637. package/build/plugins/ImmutableEntitiesPlugin.cjs.map +1 -0
  638. package/build/plugins/ImmutableEntitiesPlugin.d.cts +12 -0
  639. package/build/plugins/ImmutableEntitiesPlugin.d.cts.map +1 -0
  640. package/build/plugins/ImmutableEntitiesPlugin.d.mts +12 -0
  641. package/build/plugins/ImmutableEntitiesPlugin.d.mts.map +1 -0
  642. package/build/plugins/ImmutableEntitiesPlugin.js +19 -20
  643. package/build/plugins/ImmutableEntitiesPlugin.js.map +1 -1
  644. package/build/plugins/PreloadPlugin.cjs +6 -0
  645. package/build/plugins/PreloadPlugin.d.cts +77 -0
  646. package/build/plugins/PreloadPlugin.d.cts.map +1 -0
  647. package/build/plugins/PreloadPlugin.d.mts +77 -0
  648. package/build/plugins/PreloadPlugin.d.mts.map +1 -0
  649. package/build/plugins/PreloadPlugin.js +6 -3
  650. package/build/preloading/JsonAggregatePreloader.cjs +283 -0
  651. package/build/preloading/JsonAggregatePreloader.cjs.map +1 -0
  652. package/build/preloading/JsonAggregatePreloader.d.cts +19 -0
  653. package/build/preloading/JsonAggregatePreloader.d.cts.map +1 -0
  654. package/build/preloading/JsonAggregatePreloader.d.mts +19 -0
  655. package/build/preloading/JsonAggregatePreloader.d.mts.map +1 -0
  656. package/build/preloading/JsonAggregatePreloader.js +273 -320
  657. package/build/preloading/JsonAggregatePreloader.js.map +1 -1
  658. package/build/preloading/canPreload.cjs +19 -0
  659. package/build/preloading/canPreload.cjs.map +1 -0
  660. package/build/preloading/canPreload.d.cts +6 -0
  661. package/build/preloading/canPreload.d.cts.map +1 -0
  662. package/build/preloading/canPreload.d.mts +6 -0
  663. package/build/preloading/canPreload.d.mts.map +1 -0
  664. package/build/preloading/canPreload.js +15 -21
  665. package/build/preloading/canPreload.js.map +1 -1
  666. package/build/preloading/partitionHint.cjs +44 -0
  667. package/build/preloading/partitionHint.cjs.map +1 -0
  668. package/build/preloading/partitionHint.d.cts +8 -0
  669. package/build/preloading/partitionHint.d.cts.map +1 -0
  670. package/build/preloading/partitionHint.d.mts +8 -0
  671. package/build/preloading/partitionHint.d.mts.map +1 -0
  672. package/build/preloading/partitionHint.js +37 -56
  673. package/build/preloading/partitionHint.js.map +1 -1
  674. package/build/query.cjs +1352 -0
  675. package/build/query.cjs.map +1 -0
  676. package/build/query.d.cts +4051 -0
  677. package/build/query.d.cts.map +1 -0
  678. package/build/query.d.mts +4051 -0
  679. package/build/query.d.mts.map +1 -0
  680. package/build/query.js +1335 -0
  681. package/build/query.js.map +1 -0
  682. package/build/reactiveHints.cjs +332 -0
  683. package/build/reactiveHints.cjs.map +1 -0
  684. package/build/reactiveHints.d.cts +143 -0
  685. package/build/reactiveHints.d.cts.map +1 -0
  686. package/build/reactiveHints.d.mts +143 -0
  687. package/build/reactiveHints.d.mts.map +1 -0
  688. package/build/reactiveHints.js +291 -475
  689. package/build/reactiveHints.js.map +1 -1
  690. package/build/relations/AbstractPropertyImpl.cjs +16 -0
  691. package/build/relations/AbstractPropertyImpl.cjs.map +1 -0
  692. package/build/relations/AbstractPropertyImpl.d.cts +11 -0
  693. package/build/relations/AbstractPropertyImpl.d.cts.map +1 -0
  694. package/build/relations/AbstractPropertyImpl.d.mts +11 -0
  695. package/build/relations/AbstractPropertyImpl.d.mts.map +1 -0
  696. package/build/relations/AbstractPropertyImpl.js +13 -13
  697. package/build/relations/AbstractPropertyImpl.js.map +1 -1
  698. package/build/relations/AbstractRelationImpl.cjs +20 -0
  699. package/build/relations/AbstractRelationImpl.cjs.map +1 -0
  700. package/build/relations/AbstractRelationImpl.d.cts +44 -0
  701. package/build/relations/AbstractRelationImpl.d.cts.map +1 -0
  702. package/build/relations/AbstractRelationImpl.d.mts +44 -0
  703. package/build/relations/AbstractRelationImpl.d.mts.map +1 -0
  704. package/build/relations/AbstractRelationImpl.js +14 -15
  705. package/build/relations/AbstractRelationImpl.js.map +1 -1
  706. package/build/relations/AsyncProperty.cjs +75 -0
  707. package/build/relations/AsyncProperty.cjs.map +1 -0
  708. package/build/relations/AsyncProperty.d.cts +40 -0
  709. package/build/relations/AsyncProperty.d.cts.map +1 -0
  710. package/build/relations/AsyncProperty.d.mts +40 -0
  711. package/build/relations/AsyncProperty.d.mts.map +1 -0
  712. package/build/relations/AsyncProperty.js +61 -70
  713. package/build/relations/AsyncProperty.js.map +1 -1
  714. package/build/relations/AsyncReactiveField.cjs +110 -0
  715. package/build/relations/AsyncReactiveField.cjs.map +1 -0
  716. package/build/relations/AsyncReactiveField.d.cts +50 -0
  717. package/build/relations/AsyncReactiveField.d.cts.map +1 -0
  718. package/build/relations/AsyncReactiveField.d.mts +50 -0
  719. package/build/relations/AsyncReactiveField.d.mts.map +1 -0
  720. package/build/relations/AsyncReactiveField.js +97 -116
  721. package/build/relations/AsyncReactiveField.js.map +1 -1
  722. package/build/relations/Collection.cjs +23 -0
  723. package/build/relations/Collection.cjs.map +1 -0
  724. package/build/relations/Collection.d.cts +37 -0
  725. package/build/relations/Collection.d.cts.map +1 -0
  726. package/build/relations/Collection.d.mts +37 -0
  727. package/build/relations/Collection.d.mts.map +1 -0
  728. package/build/relations/Collection.js +14 -11
  729. package/build/relations/Collection.js.map +1 -1
  730. package/build/relations/CustomCollection.cjs +144 -0
  731. package/build/relations/CustomCollection.cjs.map +1 -0
  732. package/build/relations/CustomCollection.d.cts +74 -0
  733. package/build/relations/CustomCollection.d.cts.map +1 -0
  734. package/build/relations/CustomCollection.d.mts +74 -0
  735. package/build/relations/CustomCollection.d.mts.map +1 -0
  736. package/build/relations/CustomCollection.js +138 -162
  737. package/build/relations/CustomCollection.js.map +1 -1
  738. package/build/relations/CustomReference.cjs +142 -0
  739. package/build/relations/CustomReference.cjs.map +1 -0
  740. package/build/relations/CustomReference.d.cts +76 -0
  741. package/build/relations/CustomReference.d.cts.map +1 -0
  742. package/build/relations/CustomReference.d.mts +76 -0
  743. package/build/relations/CustomReference.d.mts.map +1 -0
  744. package/build/relations/CustomReference.js +135 -147
  745. package/build/relations/CustomReference.js.map +1 -1
  746. package/build/relations/EnumCollection.cjs +178 -0
  747. package/build/relations/EnumCollection.cjs.map +1 -0
  748. package/build/relations/EnumCollection.d.cts +86 -0
  749. package/build/relations/EnumCollection.d.cts.map +1 -0
  750. package/build/relations/EnumCollection.d.mts +86 -0
  751. package/build/relations/EnumCollection.d.mts.map +1 -0
  752. package/build/relations/EnumCollection.js +172 -207
  753. package/build/relations/EnumCollection.js.map +1 -1
  754. package/build/relations/LargeCollection.cjs +4 -0
  755. package/build/relations/LargeCollection.d.cts +22 -0
  756. package/build/relations/LargeCollection.d.cts.map +1 -0
  757. package/build/relations/LargeCollection.d.mts +22 -0
  758. package/build/relations/LargeCollection.d.mts.map +1 -0
  759. package/build/relations/LargeCollection.js +4 -3
  760. package/build/relations/LazyField.cjs +141 -0
  761. package/build/relations/LazyField.cjs.map +1 -0
  762. package/build/relations/LazyField.d.cts +51 -0
  763. package/build/relations/LazyField.d.cts.map +1 -0
  764. package/build/relations/LazyField.d.mts +51 -0
  765. package/build/relations/LazyField.d.mts.map +1 -0
  766. package/build/relations/LazyField.js +135 -0
  767. package/build/relations/LazyField.js.map +1 -0
  768. package/build/relations/ManyToManyCollection.cjs +420 -0
  769. package/build/relations/ManyToManyCollection.cjs.map +1 -0
  770. package/build/relations/ManyToManyCollection.d.cts +59 -0
  771. package/build/relations/ManyToManyCollection.d.cts.map +1 -0
  772. package/build/relations/ManyToManyCollection.d.mts +59 -0
  773. package/build/relations/ManyToManyCollection.d.mts.map +1 -0
  774. package/build/relations/ManyToManyCollection.js +410 -471
  775. package/build/relations/ManyToManyCollection.js.map +1 -1
  776. package/build/relations/ManyToManyLargeCollection.cjs +91 -0
  777. package/build/relations/ManyToManyLargeCollection.cjs.map +1 -0
  778. package/build/relations/ManyToManyLargeCollection.d.cts +34 -0
  779. package/build/relations/ManyToManyLargeCollection.d.cts.map +1 -0
  780. package/build/relations/ManyToManyLargeCollection.d.mts +34 -0
  781. package/build/relations/ManyToManyLargeCollection.d.mts.map +1 -0
  782. package/build/relations/ManyToManyLargeCollection.js +85 -118
  783. package/build/relations/ManyToManyLargeCollection.js.map +1 -1
  784. package/build/relations/ManyToOneReference.cjs +363 -0
  785. package/build/relations/ManyToOneReference.cjs.map +1 -0
  786. package/build/relations/ManyToOneReference.d.cts +121 -0
  787. package/build/relations/ManyToOneReference.d.cts.map +1 -0
  788. package/build/relations/ManyToOneReference.d.mts +121 -0
  789. package/build/relations/ManyToOneReference.d.mts.map +1 -0
  790. package/build/relations/ManyToOneReference.js +343 -411
  791. package/build/relations/ManyToOneReference.js.map +1 -1
  792. package/build/relations/OneToManyCollection.cjs +492 -0
  793. package/build/relations/OneToManyCollection.cjs.map +1 -0
  794. package/build/relations/OneToManyCollection.d.cts +69 -0
  795. package/build/relations/OneToManyCollection.d.cts.map +1 -0
  796. package/build/relations/OneToManyCollection.d.mts +69 -0
  797. package/build/relations/OneToManyCollection.d.mts.map +1 -0
  798. package/build/relations/OneToManyCollection.js +480 -579
  799. package/build/relations/OneToManyCollection.js.map +1 -1
  800. package/build/relations/OneToManyLargeCollection.cjs +85 -0
  801. package/build/relations/OneToManyLargeCollection.cjs.map +1 -0
  802. package/build/relations/OneToManyLargeCollection.d.cts +29 -0
  803. package/build/relations/OneToManyLargeCollection.d.cts.map +1 -0
  804. package/build/relations/OneToManyLargeCollection.d.mts +29 -0
  805. package/build/relations/OneToManyLargeCollection.d.mts.map +1 -0
  806. package/build/relations/OneToManyLargeCollection.js +79 -99
  807. package/build/relations/OneToManyLargeCollection.js.map +1 -1
  808. package/build/relations/OneToOneReference.cjs +208 -0
  809. package/build/relations/OneToOneReference.cjs.map +1 -0
  810. package/build/relations/OneToOneReference.d.cts +97 -0
  811. package/build/relations/OneToOneReference.d.cts.map +1 -0
  812. package/build/relations/OneToOneReference.d.mts +97 -0
  813. package/build/relations/OneToOneReference.d.mts.map +1 -0
  814. package/build/relations/OneToOneReference.js +192 -221
  815. package/build/relations/OneToOneReference.js.map +1 -1
  816. package/build/relations/PolymorphicReference.cjs +209 -0
  817. package/build/relations/PolymorphicReference.cjs.map +1 -0
  818. package/build/relations/PolymorphicReference.d.cts +93 -0
  819. package/build/relations/PolymorphicReference.d.cts.map +1 -0
  820. package/build/relations/PolymorphicReference.d.mts +93 -0
  821. package/build/relations/PolymorphicReference.d.mts.map +1 -0
  822. package/build/relations/PolymorphicReference.js +199 -237
  823. package/build/relations/PolymorphicReference.js.map +1 -1
  824. package/build/relations/PropertySymbols.cjs +7 -0
  825. package/build/relations/PropertySymbols.cjs.map +1 -0
  826. package/build/relations/PropertySymbols.d.cts +5 -0
  827. package/build/relations/PropertySymbols.d.cts.map +1 -0
  828. package/build/relations/PropertySymbols.d.mts +5 -0
  829. package/build/relations/PropertySymbols.d.mts.map +1 -0
  830. package/build/relations/PropertySymbols.js +6 -0
  831. package/build/relations/PropertySymbols.js.map +1 -0
  832. package/build/relations/ReactiveField.cjs +115 -0
  833. package/build/relations/ReactiveField.cjs.map +1 -0
  834. package/build/relations/ReactiveField.d.cts +88 -0
  835. package/build/relations/ReactiveField.d.cts.map +1 -0
  836. package/build/relations/ReactiveField.d.mts +88 -0
  837. package/build/relations/ReactiveField.d.mts.map +1 -0
  838. package/build/relations/ReactiveField.js +105 -137
  839. package/build/relations/ReactiveField.js.map +1 -1
  840. package/build/relations/ReactiveGetter.cjs +41 -0
  841. package/build/relations/ReactiveGetter.cjs.map +1 -0
  842. package/build/relations/ReactiveGetter.d.cts +33 -0
  843. package/build/relations/ReactiveGetter.d.cts.map +1 -0
  844. package/build/relations/ReactiveGetter.d.mts +33 -0
  845. package/build/relations/ReactiveGetter.d.mts.map +1 -0
  846. package/build/relations/ReactiveGetter.js +31 -31
  847. package/build/relations/ReactiveGetter.js.map +1 -1
  848. package/build/relations/ReactiveManyToMany.cjs +198 -0
  849. package/build/relations/ReactiveManyToMany.cjs.map +1 -0
  850. package/build/relations/ReactiveManyToMany.d.cts +63 -0
  851. package/build/relations/ReactiveManyToMany.d.cts.map +1 -0
  852. package/build/relations/ReactiveManyToMany.d.mts +63 -0
  853. package/build/relations/ReactiveManyToMany.d.mts.map +1 -0
  854. package/build/relations/ReactiveManyToMany.js +187 -238
  855. package/build/relations/ReactiveManyToMany.js.map +1 -1
  856. package/build/relations/ReactiveManyToManyOtherSide.cjs +150 -0
  857. package/build/relations/ReactiveManyToManyOtherSide.cjs.map +1 -0
  858. package/build/relations/ReactiveManyToManyOtherSide.d.cts +53 -0
  859. package/build/relations/ReactiveManyToManyOtherSide.d.cts.map +1 -0
  860. package/build/relations/ReactiveManyToManyOtherSide.d.mts +53 -0
  861. package/build/relations/ReactiveManyToManyOtherSide.d.mts.map +1 -0
  862. package/build/relations/ReactiveManyToManyOtherSide.js +141 -152
  863. package/build/relations/ReactiveManyToManyOtherSide.js.map +1 -1
  864. package/build/relations/ReactiveReference.cjs +336 -0
  865. package/build/relations/ReactiveReference.cjs.map +1 -0
  866. package/build/relations/ReactiveReference.d.cts +124 -0
  867. package/build/relations/ReactiveReference.d.cts.map +1 -0
  868. package/build/relations/ReactiveReference.d.mts +124 -0
  869. package/build/relations/ReactiveReference.d.mts.map +1 -0
  870. package/build/relations/ReactiveReference.js +321 -385
  871. package/build/relations/ReactiveReference.js.map +1 -1
  872. package/build/relations/ReadOnlyCollection.cjs +18 -0
  873. package/build/relations/ReadOnlyCollection.cjs.map +1 -0
  874. package/build/relations/ReadOnlyCollection.d.cts +22 -0
  875. package/build/relations/ReadOnlyCollection.d.cts.map +1 -0
  876. package/build/relations/ReadOnlyCollection.d.mts +22 -0
  877. package/build/relations/ReadOnlyCollection.d.mts.map +1 -0
  878. package/build/relations/ReadOnlyCollection.js +9 -9
  879. package/build/relations/ReadOnlyCollection.js.map +1 -1
  880. package/build/relations/RecursiveCollection.cjs +387 -0
  881. package/build/relations/RecursiveCollection.cjs.map +1 -0
  882. package/build/relations/RecursiveCollection.d.cts +112 -0
  883. package/build/relations/RecursiveCollection.d.cts.map +1 -0
  884. package/build/relations/RecursiveCollection.d.mts +112 -0
  885. package/build/relations/RecursiveCollection.d.mts.map +1 -0
  886. package/build/relations/RecursiveCollection.js +368 -427
  887. package/build/relations/RecursiveCollection.js.map +1 -1
  888. package/build/relations/RecursiveCycleError.cjs +17 -0
  889. package/build/relations/RecursiveCycleError.cjs.map +1 -0
  890. package/build/relations/RecursiveCycleError.d.cts +15 -0
  891. package/build/relations/RecursiveCycleError.d.cts.map +1 -0
  892. package/build/relations/RecursiveCycleError.d.mts +15 -0
  893. package/build/relations/RecursiveCycleError.d.mts.map +1 -0
  894. package/build/relations/RecursiveCycleError.js +14 -13
  895. package/build/relations/RecursiveCycleError.js.map +1 -1
  896. package/build/relations/Reference.cjs +25 -0
  897. package/build/relations/Reference.cjs.map +1 -0
  898. package/build/relations/Reference.d.cts +39 -0
  899. package/build/relations/Reference.d.cts.map +1 -0
  900. package/build/relations/Reference.d.mts +39 -0
  901. package/build/relations/Reference.d.mts.map +1 -0
  902. package/build/relations/Reference.js +15 -14
  903. package/build/relations/Reference.js.map +1 -1
  904. package/build/relations/ReferenceSymbols.cjs +7 -0
  905. package/build/relations/ReferenceSymbols.cjs.map +1 -0
  906. package/build/relations/ReferenceSymbols.d.cts +5 -0
  907. package/build/relations/ReferenceSymbols.d.cts.map +1 -0
  908. package/build/relations/ReferenceSymbols.d.mts +5 -0
  909. package/build/relations/ReferenceSymbols.d.mts.map +1 -0
  910. package/build/relations/ReferenceSymbols.js +6 -0
  911. package/build/relations/ReferenceSymbols.js.map +1 -0
  912. package/build/relations/Relation.cjs +17 -0
  913. package/build/relations/Relation.cjs.map +1 -0
  914. package/build/relations/Relation.d.cts +16 -0
  915. package/build/relations/Relation.d.cts.map +1 -0
  916. package/build/relations/Relation.d.mts +16 -0
  917. package/build/relations/Relation.d.mts.map +1 -0
  918. package/build/relations/Relation.js +10 -8
  919. package/build/relations/Relation.js.map +1 -1
  920. package/build/relations/RelationSymbols.cjs +9 -0
  921. package/build/relations/RelationSymbols.cjs.map +1 -0
  922. package/build/relations/RelationSymbols.d.cts +6 -0
  923. package/build/relations/RelationSymbols.d.cts.map +1 -0
  924. package/build/relations/RelationSymbols.d.mts +6 -0
  925. package/build/relations/RelationSymbols.d.mts.map +1 -0
  926. package/build/relations/RelationSymbols.js +7 -0
  927. package/build/relations/RelationSymbols.js.map +1 -0
  928. package/build/relations/hasAsyncMethod.cjs +47 -0
  929. package/build/relations/hasAsyncMethod.cjs.map +1 -0
  930. package/build/relations/hasAsyncMethod.d.cts +29 -0
  931. package/build/relations/hasAsyncMethod.d.cts.map +1 -0
  932. package/build/relations/hasAsyncMethod.d.mts +29 -0
  933. package/build/relations/hasAsyncMethod.d.mts.map +1 -0
  934. package/build/relations/hasAsyncMethod.js +40 -43
  935. package/build/relations/hasAsyncMethod.js.map +1 -1
  936. package/build/relations/hasManyDerived.cjs +35 -0
  937. package/build/relations/hasManyDerived.cjs.map +1 -0
  938. package/build/relations/hasManyDerived.d.cts +25 -0
  939. package/build/relations/hasManyDerived.d.cts.map +1 -0
  940. package/build/relations/hasManyDerived.d.mts +25 -0
  941. package/build/relations/hasManyDerived.d.mts.map +1 -0
  942. package/build/relations/hasManyDerived.js +30 -28
  943. package/build/relations/hasManyDerived.js.map +1 -1
  944. package/build/relations/hasManyThrough.cjs +29 -0
  945. package/build/relations/hasManyThrough.cjs.map +1 -0
  946. package/build/relations/hasManyThrough.d.cts +16 -0
  947. package/build/relations/hasManyThrough.d.cts.map +1 -0
  948. package/build/relations/hasManyThrough.d.mts +16 -0
  949. package/build/relations/hasManyThrough.d.mts.map +1 -0
  950. package/build/relations/hasManyThrough.js +24 -20
  951. package/build/relations/hasManyThrough.js.map +1 -1
  952. package/build/relations/hasOneDerived.cjs +32 -0
  953. package/build/relations/hasOneDerived.cjs.map +1 -0
  954. package/build/relations/hasOneDerived.d.cts +15 -0
  955. package/build/relations/hasOneDerived.d.cts.map +1 -0
  956. package/build/relations/hasOneDerived.d.mts +15 -0
  957. package/build/relations/hasOneDerived.d.mts.map +1 -0
  958. package/build/relations/hasOneDerived.js +27 -20
  959. package/build/relations/hasOneDerived.js.map +1 -1
  960. package/build/relations/hasOneThrough.cjs +31 -0
  961. package/build/relations/hasOneThrough.cjs.map +1 -0
  962. package/build/relations/hasOneThrough.d.cts +16 -0
  963. package/build/relations/hasOneThrough.d.cts.map +1 -0
  964. package/build/relations/hasOneThrough.d.mts +16 -0
  965. package/build/relations/hasOneThrough.d.mts.map +1 -0
  966. package/build/relations/hasOneThrough.js +26 -22
  967. package/build/relations/hasOneThrough.js.map +1 -1
  968. package/build/relations/hasProperty.cjs +109 -0
  969. package/build/relations/hasProperty.cjs.map +1 -0
  970. package/build/relations/hasProperty.d.cts +53 -0
  971. package/build/relations/hasProperty.d.cts.map +1 -0
  972. package/build/relations/hasProperty.d.mts +53 -0
  973. package/build/relations/hasProperty.d.mts.map +1 -0
  974. package/build/relations/hasProperty.js +90 -95
  975. package/build/relations/hasProperty.js.map +1 -1
  976. package/build/relations/index.cjs +99 -0
  977. package/build/relations/index.d.cts +32 -0
  978. package/build/relations/index.d.mts +32 -0
  979. package/build/relations/index.js +31 -97
  980. package/build/resurrection.cjs +74 -0
  981. package/build/resurrection.cjs.map +1 -0
  982. package/build/resurrection.d.cts +13 -0
  983. package/build/resurrection.d.cts.map +1 -0
  984. package/build/resurrection.d.mts +13 -0
  985. package/build/resurrection.d.mts.map +1 -0
  986. package/build/resurrection.js +48 -69
  987. package/build/resurrection.js.map +1 -1
  988. package/build/rules.cjs +228 -0
  989. package/build/rules.cjs.map +1 -0
  990. package/build/rules.d.cts +145 -0
  991. package/build/rules.d.cts.map +1 -0
  992. package/build/rules.d.mts +145 -0
  993. package/build/rules.d.mts.map +1 -0
  994. package/build/rules.js +190 -204
  995. package/build/rules.js.map +1 -1
  996. package/build/runtimeConfig.cjs +25 -0
  997. package/build/runtimeConfig.cjs.map +1 -0
  998. package/build/runtimeConfig.d.cts +24 -0
  999. package/build/runtimeConfig.d.cts.map +1 -0
  1000. package/build/runtimeConfig.d.mts +24 -0
  1001. package/build/runtimeConfig.d.mts.map +1 -0
  1002. package/build/runtimeConfig.js +16 -12
  1003. package/build/runtimeConfig.js.map +1 -1
  1004. package/build/scopes.cjs +302 -0
  1005. package/build/scopes.cjs.map +1 -0
  1006. package/build/scopes.d.cts +188 -0
  1007. package/build/scopes.d.cts.map +1 -0
  1008. package/build/scopes.d.mts +188 -0
  1009. package/build/scopes.d.mts.map +1 -0
  1010. package/build/scopes.js +240 -245
  1011. package/build/scopes.js.map +1 -1
  1012. package/build/serde.cjs +500 -0
  1013. package/build/serde.cjs.map +1 -0
  1014. package/build/serde.d.cts +248 -0
  1015. package/build/serde.d.cts.map +1 -0
  1016. package/build/serde.d.mts +248 -0
  1017. package/build/serde.d.mts.map +1 -0
  1018. package/build/serde.js +474 -505
  1019. package/build/serde.js.map +1 -1
  1020. package/build/skipCondition.cjs +15 -0
  1021. package/build/skipCondition.cjs.map +1 -0
  1022. package/build/skipCondition.d.cts +7 -0
  1023. package/build/skipCondition.d.cts.map +1 -0
  1024. package/build/skipCondition.d.mts +7 -0
  1025. package/build/skipCondition.d.mts.map +1 -0
  1026. package/build/skipCondition.js +14 -0
  1027. package/build/skipCondition.js.map +1 -0
  1028. package/build/temporal.cjs +57 -0
  1029. package/build/temporal.cjs.map +1 -0
  1030. package/build/temporal.d.cts +44 -0
  1031. package/build/temporal.d.cts.map +1 -0
  1032. package/build/temporal.d.mts +44 -0
  1033. package/build/temporal.d.mts.map +1 -0
  1034. package/build/temporal.js +47 -58
  1035. package/build/temporal.js.map +1 -1
  1036. package/build/temporalMappers.cjs +63 -0
  1037. package/build/temporalMappers.cjs.map +1 -0
  1038. package/build/temporalMappers.d.cts +36 -0
  1039. package/build/temporalMappers.d.cts.map +1 -0
  1040. package/build/temporalMappers.d.mts +36 -0
  1041. package/build/temporalMappers.d.mts.map +1 -0
  1042. package/build/temporalMappers.js +55 -55
  1043. package/build/temporalMappers.js.map +1 -1
  1044. package/build/trusted.cjs +16 -0
  1045. package/build/trusted.cjs.map +1 -0
  1046. package/build/trusted.d.cts +8 -0
  1047. package/build/trusted.d.cts.map +1 -0
  1048. package/build/trusted.d.mts +8 -0
  1049. package/build/trusted.d.mts.map +1 -0
  1050. package/build/trusted.js +8 -8
  1051. package/build/trusted.js.map +1 -1
  1052. package/build/typeMap.cjs +3 -0
  1053. package/build/typeMap.d.cts +88 -0
  1054. package/build/typeMap.d.cts.map +1 -0
  1055. package/build/typeMap.d.mts +88 -0
  1056. package/build/typeMap.d.mts.map +1 -0
  1057. package/build/typeMap.js +3 -3
  1058. package/build/unnest.cjs +64 -0
  1059. package/build/unnest.cjs.map +1 -0
  1060. package/build/unnest.d.cts +16 -0
  1061. package/build/unnest.d.cts.map +1 -0
  1062. package/build/unnest.d.mts +16 -0
  1063. package/build/unnest.d.mts.map +1 -0
  1064. package/build/unnest.js +50 -73
  1065. package/build/unnest.js.map +1 -1
  1066. package/build/upsert.cjs +175 -0
  1067. package/build/upsert.cjs.map +1 -0
  1068. package/build/upsert.d.cts +42 -0
  1069. package/build/upsert.d.cts.map +1 -0
  1070. package/build/upsert.d.mts +42 -0
  1071. package/build/upsert.d.mts.map +1 -0
  1072. package/build/upsert.js +159 -274
  1073. package/build/upsert.js.map +1 -1
  1074. package/build/utils.cjs +206 -0
  1075. package/build/utils.cjs.map +1 -0
  1076. package/build/utils.d.cts +65 -0
  1077. package/build/utils.d.cts.map +1 -0
  1078. package/build/utils.d.mts +65 -0
  1079. package/build/utils.d.mts.map +1 -0
  1080. package/build/utils.js +125 -192
  1081. package/build/utils.js.map +1 -1
  1082. package/build/withLoaded.cjs +65 -0
  1083. package/build/withLoaded.cjs.map +1 -0
  1084. package/build/withLoaded.d.cts +65 -0
  1085. package/build/withLoaded.d.cts.map +1 -0
  1086. package/build/withLoaded.d.mts +65 -0
  1087. package/build/withLoaded.d.mts.map +1 -0
  1088. package/build/withLoaded.js +56 -70
  1089. package/build/withLoaded.js.map +1 -1
  1090. package/package.json +34 -14
  1091. package/build/AliasAssigner.d.ts +0 -10
  1092. package/build/AliasAssigner.d.ts.map +0 -1
  1093. package/build/Aliases.d.ts +0 -117
  1094. package/build/Aliases.d.ts.map +0 -1
  1095. package/build/BaseEntity.d.ts +0 -68
  1096. package/build/BaseEntity.d.ts.map +0 -1
  1097. package/build/ConditionBuilder.d.ts +0 -29
  1098. package/build/ConditionBuilder.d.ts.map +0 -1
  1099. package/build/Entity.d.ts +0 -39
  1100. package/build/Entity.d.ts.map +0 -1
  1101. package/build/EntityFields.d.ts +0 -37
  1102. package/build/EntityFields.d.ts.map +0 -1
  1103. package/build/EntityFields.js.map +0 -1
  1104. package/build/EntityFilter.d.ts +0 -134
  1105. package/build/EntityFilter.d.ts.map +0 -1
  1106. package/build/EntityGraphQLFilter.d.ts +0 -56
  1107. package/build/EntityGraphQLFilter.d.ts.map +0 -1
  1108. package/build/EntityManager.d.ts +0 -740
  1109. package/build/EntityManager.d.ts.map +0 -1
  1110. package/build/EntityMetadata.d.ts +0 -233
  1111. package/build/EntityMetadata.d.ts.map +0 -1
  1112. package/build/EnumMetadata.d.ts +0 -15
  1113. package/build/EnumMetadata.d.ts.map +0 -1
  1114. package/build/EnumMetadata.js.map +0 -1
  1115. package/build/FlushLock.d.ts +0 -26
  1116. package/build/FlushLock.d.ts.map +0 -1
  1117. package/build/HintTree.d.ts +0 -42
  1118. package/build/HintTree.d.ts.map +0 -1
  1119. package/build/IndexManager.d.ts +0 -31
  1120. package/build/IndexManager.d.ts.map +0 -1
  1121. package/build/InstanceData.d.ts +0 -79
  1122. package/build/InstanceData.d.ts.map +0 -1
  1123. package/build/IsLoadedCache.d.ts +0 -32
  1124. package/build/IsLoadedCache.d.ts.map +0 -1
  1125. package/build/JoinRows.d.ts +0 -117
  1126. package/build/JoinRows.d.ts.map +0 -1
  1127. package/build/PendingChanges.d.ts +0 -26
  1128. package/build/PendingChanges.d.ts.map +0 -1
  1129. package/build/PendingChanges.js.map +0 -1
  1130. package/build/PluginManager.d.ts +0 -102
  1131. package/build/PluginManager.d.ts.map +0 -1
  1132. package/build/QueryParser.collectionJoins.d.ts +0 -27
  1133. package/build/QueryParser.collectionJoins.d.ts.map +0 -1
  1134. package/build/QueryParser.collectionJoins.test.d.ts +0 -2
  1135. package/build/QueryParser.collectionJoins.test.d.ts.map +0 -1
  1136. package/build/QueryParser.collectionJoins.test.js +0 -772
  1137. package/build/QueryParser.collectionJoins.test.js.map +0 -1
  1138. package/build/QueryParser.d.ts +0 -336
  1139. package/build/QueryParser.d.ts.map +0 -1
  1140. package/build/QueryParser.pruning.d.ts +0 -7
  1141. package/build/QueryParser.pruning.d.ts.map +0 -1
  1142. package/build/QueryParser.pruning.test.d.ts +0 -2
  1143. package/build/QueryParser.pruning.test.d.ts.map +0 -1
  1144. package/build/QueryParser.pruning.test.js +0 -106
  1145. package/build/QueryParser.pruning.test.js.map +0 -1
  1146. package/build/QueryParser.test.d.ts +0 -2
  1147. package/build/QueryParser.test.d.ts.map +0 -1
  1148. package/build/QueryParser.test.js +0 -27
  1149. package/build/QueryParser.test.js.map +0 -1
  1150. package/build/QueryVisitor.d.ts +0 -19
  1151. package/build/QueryVisitor.d.ts.map +0 -1
  1152. package/build/ReactionsManager.d.ts +0 -85
  1153. package/build/ReactionsManager.d.ts.map +0 -1
  1154. package/build/Todo.d.ts +0 -35
  1155. package/build/Todo.d.ts.map +0 -1
  1156. package/build/batchloaders/BatchLoader.d.ts +0 -14
  1157. package/build/batchloaders/BatchLoader.d.ts.map +0 -1
  1158. package/build/batchloaders/enumCollectionBatchLoader.d.ts +0 -7
  1159. package/build/batchloaders/enumCollectionBatchLoader.d.ts.map +0 -1
  1160. package/build/batchloaders/loadBatchLoader.d.ts +0 -17
  1161. package/build/batchloaders/loadBatchLoader.d.ts.map +0 -1
  1162. package/build/batchloaders/manyToManyBatchLoader.d.ts +0 -7
  1163. package/build/batchloaders/manyToManyBatchLoader.d.ts.map +0 -1
  1164. package/build/batchloaders/oneToManyBatchLoader.d.ts +0 -7
  1165. package/build/batchloaders/oneToManyBatchLoader.d.ts.map +0 -1
  1166. package/build/batchloaders/oneToOneBatchLoader.d.ts +0 -7
  1167. package/build/batchloaders/oneToOneBatchLoader.d.ts.map +0 -1
  1168. package/build/batchloaders/populateBatchLoader.d.ts +0 -13
  1169. package/build/batchloaders/populateBatchLoader.d.ts.map +0 -1
  1170. package/build/batchloaders/recursiveChildrenBatchLoader.d.ts +0 -7
  1171. package/build/batchloaders/recursiveChildrenBatchLoader.d.ts.map +0 -1
  1172. package/build/batchloaders/recursiveM2mBatchLoader.d.ts +0 -7
  1173. package/build/batchloaders/recursiveM2mBatchLoader.d.ts.map +0 -1
  1174. package/build/batchloaders/recursiveParentsBatchLoader.d.ts +0 -7
  1175. package/build/batchloaders/recursiveParentsBatchLoader.d.ts.map +0 -1
  1176. package/build/changes.d.ts +0 -92
  1177. package/build/changes.d.ts.map +0 -1
  1178. package/build/config.d.ts +0 -250
  1179. package/build/config.d.ts.map +0 -1
  1180. package/build/config.test.d.ts +0 -2
  1181. package/build/config.test.d.ts.map +0 -1
  1182. package/build/config.test.js +0 -53
  1183. package/build/config.test.js.map +0 -1
  1184. package/build/configure.d.ts +0 -15
  1185. package/build/configure.d.ts.map +0 -1
  1186. package/build/dataloaders/fastWhereFilterHash.d.ts +0 -15
  1187. package/build/dataloaders/fastWhereFilterHash.d.ts.map +0 -1
  1188. package/build/dataloaders/fastWhereFilterHash.test.d.ts +0 -2
  1189. package/build/dataloaders/fastWhereFilterHash.test.d.ts.map +0 -1
  1190. package/build/dataloaders/fastWhereFilterHash.test.js +0 -59
  1191. package/build/dataloaders/fastWhereFilterHash.test.js.map +0 -1
  1192. package/build/dataloaders/findByUniqueDataLoader.d.ts +0 -7
  1193. package/build/dataloaders/findByUniqueDataLoader.d.ts.map +0 -1
  1194. package/build/dataloaders/findCountDataLoader.d.ts +0 -16
  1195. package/build/dataloaders/findCountDataLoader.d.ts.map +0 -1
  1196. package/build/dataloaders/findDataLoader.d.ts +0 -76
  1197. package/build/dataloaders/findDataLoader.d.ts.map +0 -1
  1198. package/build/dataloaders/findIdsDataLoader.d.ts +0 -6
  1199. package/build/dataloaders/findIdsDataLoader.d.ts.map +0 -1
  1200. package/build/dataloaders/findOrCreateDataLoader.d.ts +0 -13
  1201. package/build/dataloaders/findOrCreateDataLoader.d.ts.map +0 -1
  1202. package/build/dataloaders/findPaginatedDataLoader.d.ts +0 -7
  1203. package/build/dataloaders/findPaginatedDataLoader.d.ts.map +0 -1
  1204. package/build/dataloaders/lensDataLoader.d.ts +0 -12
  1205. package/build/dataloaders/lensDataLoader.d.ts.map +0 -1
  1206. package/build/dataloaders/manyToManyFindDataLoader.d.ts +0 -8
  1207. package/build/dataloaders/manyToManyFindDataLoader.d.ts.map +0 -1
  1208. package/build/dataloaders/oneToManyFindDataLoader.d.ts +0 -8
  1209. package/build/dataloaders/oneToManyFindDataLoader.d.ts.map +0 -1
  1210. package/build/defaults.d.ts +0 -54
  1211. package/build/defaults.d.ts.map +0 -1
  1212. package/build/driverApi.d.ts +0 -19
  1213. package/build/driverApi.d.ts.map +0 -1
  1214. package/build/drivers/Driver.d.ts +0 -26
  1215. package/build/drivers/Driver.d.ts.map +0 -1
  1216. package/build/drivers/Driver.js.map +0 -1
  1217. package/build/drivers/EntityWriter.d.ts +0 -64
  1218. package/build/drivers/EntityWriter.d.ts.map +0 -1
  1219. package/build/drivers/IdAssigner.d.ts +0 -48
  1220. package/build/drivers/IdAssigner.d.ts.map +0 -1
  1221. package/build/drivers/buildRawQuery.d.ts +0 -22
  1222. package/build/drivers/buildRawQuery.d.ts.map +0 -1
  1223. package/build/drivers/buildUtils.d.ts +0 -9
  1224. package/build/drivers/buildUtils.d.ts.map +0 -1
  1225. package/build/drivers/index.d.ts +0 -6
  1226. package/build/drivers/index.d.ts.map +0 -1
  1227. package/build/drivers/index.js.map +0 -1
  1228. package/build/fields.d.ts +0 -26
  1229. package/build/fields.d.ts.map +0 -1
  1230. package/build/getProperties.d.ts +0 -28
  1231. package/build/getProperties.d.ts.map +0 -1
  1232. package/build/index.d.ts +0 -133
  1233. package/build/index.d.ts.map +0 -1
  1234. package/build/json.d.ts +0 -77
  1235. package/build/json.d.ts.map +0 -1
  1236. package/build/k.d.ts +0 -2
  1237. package/build/k.d.ts.map +0 -1
  1238. package/build/keys.d.ts +0 -49
  1239. package/build/keys.d.ts.map +0 -1
  1240. package/build/keywords.d.ts +0 -5
  1241. package/build/keywords.d.ts.map +0 -1
  1242. package/build/loadHints.d.ts +0 -121
  1243. package/build/loadHints.d.ts.map +0 -1
  1244. package/build/loadLens.d.ts +0 -77
  1245. package/build/loadLens.d.ts.map +0 -1
  1246. package/build/logging/FactoryLogger.d.ts +0 -24
  1247. package/build/logging/FactoryLogger.d.ts.map +0 -1
  1248. package/build/logging/FieldLogger.d.ts +0 -27
  1249. package/build/logging/FieldLogger.d.ts.map +0 -1
  1250. package/build/logging/ReactionLogger.d.ts +0 -27
  1251. package/build/logging/ReactionLogger.d.ts.map +0 -1
  1252. package/build/newEntity.d.ts +0 -45
  1253. package/build/newEntity.d.ts.map +0 -1
  1254. package/build/newTestInstance.d.ts +0 -208
  1255. package/build/newTestInstance.d.ts.map +0 -1
  1256. package/build/normalizeHints.d.ts +0 -23
  1257. package/build/normalizeHints.d.ts.map +0 -1
  1258. package/build/plugins/ImmutableEntitiesPlugin.d.ts +0 -9
  1259. package/build/plugins/ImmutableEntitiesPlugin.d.ts.map +0 -1
  1260. package/build/plugins/PreloadPlugin.d.ts +0 -69
  1261. package/build/plugins/PreloadPlugin.d.ts.map +0 -1
  1262. package/build/plugins/PreloadPlugin.js.map +0 -1
  1263. package/build/preloading/JsonAggregatePreloader.d.ts +0 -16
  1264. package/build/preloading/JsonAggregatePreloader.d.ts.map +0 -1
  1265. package/build/preloading/canPreload.d.ts +0 -3
  1266. package/build/preloading/canPreload.d.ts.map +0 -1
  1267. package/build/preloading/partitionHint.d.ts +0 -5
  1268. package/build/preloading/partitionHint.d.ts.map +0 -1
  1269. package/build/reactiveHints.d.ts +0 -146
  1270. package/build/reactiveHints.d.ts.map +0 -1
  1271. package/build/relations/AbstractPropertyImpl.d.ts +0 -8
  1272. package/build/relations/AbstractPropertyImpl.d.ts.map +0 -1
  1273. package/build/relations/AbstractRelationImpl.d.ts +0 -41
  1274. package/build/relations/AbstractRelationImpl.d.ts.map +0 -1
  1275. package/build/relations/AsyncProperty.d.ts +0 -36
  1276. package/build/relations/AsyncProperty.d.ts.map +0 -1
  1277. package/build/relations/AsyncReactiveField.d.ts +0 -41
  1278. package/build/relations/AsyncReactiveField.d.ts.map +0 -1
  1279. package/build/relations/Collection.d.ts +0 -33
  1280. package/build/relations/Collection.d.ts.map +0 -1
  1281. package/build/relations/CustomCollection.d.ts +0 -69
  1282. package/build/relations/CustomCollection.d.ts.map +0 -1
  1283. package/build/relations/CustomReference.d.ts +0 -71
  1284. package/build/relations/CustomReference.d.ts.map +0 -1
  1285. package/build/relations/EnumCollection.d.ts +0 -81
  1286. package/build/relations/EnumCollection.d.ts.map +0 -1
  1287. package/build/relations/LargeCollection.d.ts +0 -19
  1288. package/build/relations/LargeCollection.d.ts.map +0 -1
  1289. package/build/relations/LargeCollection.js.map +0 -1
  1290. package/build/relations/ManyToManyCollection.d.ts +0 -52
  1291. package/build/relations/ManyToManyCollection.d.ts.map +0 -1
  1292. package/build/relations/ManyToManyLargeCollection.d.ts +0 -31
  1293. package/build/relations/ManyToManyLargeCollection.d.ts.map +0 -1
  1294. package/build/relations/ManyToOneReference.d.ts +0 -117
  1295. package/build/relations/ManyToOneReference.d.ts.map +0 -1
  1296. package/build/relations/OneToManyCollection.d.ts +0 -62
  1297. package/build/relations/OneToManyCollection.d.ts.map +0 -1
  1298. package/build/relations/OneToManyLargeCollection.d.ts +0 -26
  1299. package/build/relations/OneToManyLargeCollection.d.ts.map +0 -1
  1300. package/build/relations/OneToOneReference.d.ts +0 -93
  1301. package/build/relations/OneToOneReference.d.ts.map +0 -1
  1302. package/build/relations/PolymorphicReference.d.ts +0 -89
  1303. package/build/relations/PolymorphicReference.d.ts.map +0 -1
  1304. package/build/relations/ReactiveField.d.ts +0 -85
  1305. package/build/relations/ReactiveField.d.ts.map +0 -1
  1306. package/build/relations/ReactiveGetter.d.ts +0 -30
  1307. package/build/relations/ReactiveGetter.d.ts.map +0 -1
  1308. package/build/relations/ReactiveManyToMany.d.ts +0 -57
  1309. package/build/relations/ReactiveManyToMany.d.ts.map +0 -1
  1310. package/build/relations/ReactiveManyToManyOtherSide.d.ts +0 -48
  1311. package/build/relations/ReactiveManyToManyOtherSide.d.ts.map +0 -1
  1312. package/build/relations/ReactiveReference.d.ts +0 -119
  1313. package/build/relations/ReactiveReference.d.ts.map +0 -1
  1314. package/build/relations/ReadOnlyCollection.d.ts +0 -19
  1315. package/build/relations/ReadOnlyCollection.d.ts.map +0 -1
  1316. package/build/relations/RecursiveCollection.d.ts +0 -108
  1317. package/build/relations/RecursiveCollection.d.ts.map +0 -1
  1318. package/build/relations/RecursiveCycleError.d.ts +0 -13
  1319. package/build/relations/RecursiveCycleError.d.ts.map +0 -1
  1320. package/build/relations/Reference.d.ts +0 -35
  1321. package/build/relations/Reference.d.ts.map +0 -1
  1322. package/build/relations/Relation.d.ts +0 -14
  1323. package/build/relations/Relation.d.ts.map +0 -1
  1324. package/build/relations/hasAsyncMethod.d.ts +0 -27
  1325. package/build/relations/hasAsyncMethod.d.ts.map +0 -1
  1326. package/build/relations/hasManyDerived.d.ts +0 -22
  1327. package/build/relations/hasManyDerived.d.ts.map +0 -1
  1328. package/build/relations/hasManyThrough.d.ts +0 -10
  1329. package/build/relations/hasManyThrough.d.ts.map +0 -1
  1330. package/build/relations/hasOneDerived.d.ts +0 -12
  1331. package/build/relations/hasOneDerived.d.ts.map +0 -1
  1332. package/build/relations/hasOneThrough.d.ts +0 -10
  1333. package/build/relations/hasOneThrough.d.ts.map +0 -1
  1334. package/build/relations/hasProperty.d.ts +0 -50
  1335. package/build/relations/hasProperty.d.ts.map +0 -1
  1336. package/build/relations/index.d.ts +0 -30
  1337. package/build/relations/index.d.ts.map +0 -1
  1338. package/build/relations/index.js.map +0 -1
  1339. package/build/resurrection.d.ts +0 -10
  1340. package/build/resurrection.d.ts.map +0 -1
  1341. package/build/rules.d.ts +0 -123
  1342. package/build/rules.d.ts.map +0 -1
  1343. package/build/runtimeConfig.d.ts +0 -17
  1344. package/build/runtimeConfig.d.ts.map +0 -1
  1345. package/build/scopes.d.ts +0 -185
  1346. package/build/scopes.d.ts.map +0 -1
  1347. package/build/serde.d.ts +0 -277
  1348. package/build/serde.d.ts.map +0 -1
  1349. package/build/temporal.d.ts +0 -46
  1350. package/build/temporal.d.ts.map +0 -1
  1351. package/build/temporalMappers.d.ts +0 -25
  1352. package/build/temporalMappers.d.ts.map +0 -1
  1353. package/build/trusted.d.ts +0 -5
  1354. package/build/trusted.d.ts.map +0 -1
  1355. package/build/typeMap.d.ts +0 -68
  1356. package/build/typeMap.d.ts.map +0 -1
  1357. package/build/typeMap.js.map +0 -1
  1358. package/build/unnest.d.ts +0 -13
  1359. package/build/unnest.d.ts.map +0 -1
  1360. package/build/upsert.d.ts +0 -42
  1361. package/build/upsert.d.ts.map +0 -1
  1362. package/build/utils.d.ts +0 -60
  1363. package/build/utils.d.ts.map +0 -1
  1364. package/build/withLoaded.d.ts +0 -56
  1365. package/build/withLoaded.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"QueryVisitor.js","sourceRoot":"","sources":["../src/QueryVisitor.ts"],"names":[],"mappings":";;AAwBA,0CAgBC;AAaD,kCAkDC;AAhGD,mCAAsC;AAStC;;;;;;;GAOG;AACH,SAAgB,eAAe,CAAC,KAAsB,EAAE,OAAgB;IACtE,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAG,CAAC;QAC1B,IAAI,KAAK,CAAC,SAAS;YAAE,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC3D,oFAAoF;QACpF,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,yFAAyF;QACzF,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,qBAAqB,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;AACH,CAAC;AAED,sGAAsG;AACtG,SAAS,qBAAqB,CAAC,SAAoC,EAAE,IAAuB;IAC1F,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YACrC,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;SAAM,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,SAAgB,WAAW,CAAC,EAA6B,EAAE,OAAgB;IACzE,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACpC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;qBAAM,IAAI,MAAM,EAAE,CAAC;oBAClB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;gBAC5B,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAChB,OAAO;gBACT,CAAC;qBAAM,IAAI,MAAM,EAAE,CAAC;oBAClB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;gBAC5B,CAAC;gBACD,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YACpC,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;qBAAM,IAAI,MAAM,EAAE,CAAC;oBAClB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;gBAC5B,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC/B,sEAAsE;YACxE,CAAC;iBAAM,CAAC;gBACN,IAAA,mBAAW,EAAC,CAAC,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,iGAAiG;QACjG,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC;YAAE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC;SAAM,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;SAAM,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;SAAM,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAChC,mDAAmD;IACrD,CAAC;SAAM,CAAC;QACN,IAAA,mBAAW,EAAC,EAAE,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"QueryVisitor.js","names":[],"sources":["../src/QueryVisitor.ts"],"sourcesContent":["import {\n type ColumnCondition,\n type ParsedExpressionCondition,\n type ParsedExpressionFilter,\n type ParsedFindQuery,\n type RawCondition,\n} from \"./QueryParser.ts\";\nimport { assertNever } from \"./utils.ts\";\n\n/** A generic visitor over the simple & complex conditions of a query. */\ninterface Visitor {\n visitExp?(c: ParsedExpressionFilter): ParsedExpressionFilter | void;\n visitRaw?(c: RawCondition): RawCondition | ParsedExpressionFilter | void;\n visitCond(c: ColumnCondition): ColumnCondition | ParsedExpressionFilter | RawCondition | null | void;\n}\n\n/**\n * Visits the nested conditions within `query`.\n *\n * If the visitors return a new condition or expression, the returned expression\n * will replace the original one at that location in the expression.\n *\n * If the visitor returns null, the condition or expression will be removed from the tree.\n */\nexport function visitConditions(query: ParsedFindQuery, visitor: Visitor): void {\n const todo = [query];\n while (todo.length > 0) {\n const query = todo.pop()!;\n if (query.condition) visitFilter(query.condition, visitor);\n // Recurse into lateral subqueries (used by batching/preloading, not EXISTS rewrite)\n for (const table of query.tables) {\n if (table.join === \"lateral\") {\n todo.push(table.query);\n }\n }\n // Recurse into EXISTS subqueries so batching visitors can rewrite conditions inside them\n if (query.condition) {\n visitExistsSubqueries(query.condition, todo);\n }\n }\n}\n\n/** Finds ExistsCondition nodes in a condition tree and pushes their subqueries onto the todo list. */\nfunction visitExistsSubqueries(condition: ParsedExpressionCondition, todo: ParsedFindQuery[]): void {\n if (condition.kind === \"exp\") {\n for (const c of condition.conditions) {\n visitExistsSubqueries(c, todo);\n }\n } else if (condition.kind === \"exists\") {\n todo.push(condition.subquery);\n }\n}\n\nexport function visitFilter(pc: ParsedExpressionCondition, visitor: Visitor) {\n if (pc.kind === \"exp\") {\n const toRemove = new Set<number>();\n pc.conditions.forEach((c, i) => {\n if (c.kind === \"column\") {\n const result = visitor.visitCond(c);\n if (result === null) {\n toRemove.add(i);\n } else if (result) {\n pc.conditions[i] = result;\n }\n } else if (c.kind === \"exp\") {\n const result = visitor.visitExp?.(c);\n if (result === null) {\n toRemove.add(i);\n return;\n } else if (result) {\n pc.conditions[i] = result;\n }\n visitFilter(result ?? c, visitor);\n } else if (c.kind === \"raw\") {\n const result = visitor.visitRaw?.(c);\n if (result === null) {\n toRemove.add(i);\n } else if (result) {\n pc.conditions[i] = result;\n }\n } else if (c.kind === \"exists\") {\n // EXISTS conditions are visited via visitExistsSubqueries, not inline\n } else {\n assertNever(c);\n }\n });\n // do this after visiting the children, so we can do it in one pass and don't mess up the indices\n if (toRemove.size > 0) pc.conditions = pc.conditions.filter((_, i) => !toRemove.has(i));\n } else if (pc.kind === \"column\") {\n const result = visitor.visitCond(pc);\n if (result || result === null) {\n throw new Error(\"ParsedExpressionCondition overload not support mutating the condition\");\n }\n } else if (pc.kind === \"raw\") {\n const result = visitor.visitRaw?.(pc);\n if (result || result === null) {\n throw new Error(\"ParsedExpressionCondition overload not support mutating the condition\");\n }\n } else if (pc.kind === \"exists\") {\n // EXISTS conditions are handled at the query level\n } else {\n assertNever(pc);\n }\n}\n"],"mappings":";;;;;;;;;;;AAwBA,SAAgB,gBAAgB,OAAwB,SAAwB;CAC9E,MAAM,OAAO,CAAC,KAAK;CACnB,OAAO,KAAK,SAAS,GAAG;EACtB,MAAM,QAAQ,KAAK,IAAI;EACvB,IAAI,MAAM,WAAW,YAAY,MAAM,WAAW,OAAO;EAEzD,KAAK,MAAM,SAAS,MAAM,QACxB,IAAI,MAAM,SAAS,WACjB,KAAK,KAAK,MAAM,KAAK;EAIzB,IAAI,MAAM,WACR,sBAAsB,MAAM,WAAW,IAAI;CAE/C;AACF;;AAGA,SAAS,sBAAsB,WAAsC,MAA+B;CAClG,IAAI,UAAU,SAAS,OACrB,KAAK,MAAM,KAAK,UAAU,YACxB,sBAAsB,GAAG,IAAI;MAE1B,IAAI,UAAU,SAAS,UAC5B,KAAK,KAAK,UAAU,QAAQ;AAEhC;AAEA,SAAgB,YAAY,IAA+B,SAAkB;CAC3E,IAAI,GAAG,SAAS,OAAO;EACrB,MAAM,2BAAW,IAAI,IAAY;EACjC,GAAG,WAAW,SAAS,GAAG,MAAM;GAC9B,IAAI,EAAE,SAAS,UAAU;IACvB,MAAM,SAAS,QAAQ,UAAU,CAAC;IAClC,IAAI,WAAW,MACb,SAAS,IAAI,CAAC;SACT,IAAI,QACT,GAAG,WAAW,KAAK;GAEvB,OAAO,IAAI,EAAE,SAAS,OAAO;IAC3B,MAAM,SAAS,QAAQ,WAAW,CAAC;IACnC,IAAI,WAAW,MAAM;KACnB,SAAS,IAAI,CAAC;KACd;IACF,OAAO,IAAI,QACT,GAAG,WAAW,KAAK;IAErB,YAAY,UAAU,GAAG,OAAO;GAClC,OAAO,IAAI,EAAE,SAAS,OAAO;IAC3B,MAAM,SAAS,QAAQ,WAAW,CAAC;IACnC,IAAI,WAAW,MACb,SAAS,IAAI,CAAC;SACT,IAAI,QACT,GAAG,WAAW,KAAK;GAEvB,OAAO,IAAI,EAAE,SAAS,UAAU,CAEhC,OACE,YAAY,CAAC;EAEjB,CAAC;EAED,IAAI,SAAS,OAAO,GAAG,GAAG,aAAa,GAAG,WAAW,QAAQ,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;CACxF,OAAO,IAAI,GAAG,SAAS,UAAU;EAC/B,MAAM,SAAS,QAAQ,UAAU,EAAE;EACnC,IAAI,UAAU,WAAW,MACvB,MAAM,IAAI,MAAM,uEAAuE;CAE3F,OAAO,IAAI,GAAG,SAAS,OAAO;EAC5B,MAAM,SAAS,QAAQ,WAAW,EAAE;EACpC,IAAI,UAAU,WAAW,MACvB,MAAM,IAAI,MAAM,uEAAuE;CAE3F,OAAO,IAAI,GAAG,SAAS,UAAU,CAEjC,OACE,YAAY,EAAE;AAElB"}
@@ -0,0 +1,266 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_logging_ReactionLogger = require("./logging/ReactionLogger.cjs");
3
+ const require_trusted = require("./trusted.cjs");
4
+ const require_EntityMetadata = require("./EntityMetadata.cjs");
5
+ const require_reactiveHints = require("./reactiveHints.cjs");
6
+ const require_index = require("./index.cjs");
7
+ const require_EntityManager = require("./EntityManager.cjs");
8
+ require("./Entity.cjs");
9
+ require("./config.cjs");
10
+ //#region src/ReactionsManager.ts
11
+ /**
12
+ * Manages the reactivity of tracking which source fields have changed and finding/recalculating
13
+ * their downstream derived fields.
14
+ *
15
+ * Source fields are usually regular/dumb primitives, i.e. `Author.age` is a source field
16
+ * of `Book.isPublic`, but derived fields can themselves be source fields as well.
17
+ */
18
+ var ReactionsManager = class {
19
+ /** Stores all source `Reactables`s that have been marked for later traversal. */
20
+ pendingReactables = /* @__PURE__ */ new Map();
21
+ /** Failed actions to retry post-hooks, deduped by target field name -> entity (rare error path). */
22
+ actionsPendingTypeErrors = /* @__PURE__ */ new Map();
23
+ /**
24
+ * A map of entity tagName -> fields that have been marked as dirty.
25
+ *
26
+ * The key of the map is "just" the tag name, instead of a specific entity, b/c at the time of
27
+ * being marked dirty, we only have the upstream/source entity + fieldName that has changed, and
28
+ * not the 1-or-more downstream/target entities that will actually recalc.
29
+ *
30
+ * Instead, we just track the dirty fields by type-of-entity, which is enough for `isPendingRecalc`.
31
+ */
32
+ dirtyFields = /* @__PURE__ */ new Map();
33
+ /**
34
+ * Tracks which entities have already run a `runOnce` reactable, keyed by the target field
35
+ * name -> entities. We key on `r.name` (not `r` itself) b/c two `Reactable`s reverse-indexed
36
+ * from different source paths can target the same derived field, and must dedupe together.
37
+ * Keying the outer map by field name (of which there are few) instead of by entity (of which
38
+ * there are many) means we allocate just one `Set` per distinct field name, rather than a
39
+ * `Set` per entity or the old per-action `${entity.toTaggedString()}_${r.name}` key strings.
40
+ */
41
+ processedActions = /* @__PURE__ */ new Map();
42
+ #needsRecalc = {
43
+ populate: false,
44
+ query: false,
45
+ reaction: false
46
+ };
47
+ logger = require_logging_ReactionLogger.globalLogger ?? require_logging_ReactionLogger.noopReactionLogger;
48
+ em;
49
+ /** These are NPEs that *might* have been from invalid m2o fields, so we only throw them after validation. */
50
+ suppressedTypeErrors = [];
51
+ constructor(em) {
52
+ this.em = em;
53
+ }
54
+ /**
55
+ * Queue all downstream reactive fields that depend on `fieldName` as a source field.
56
+ *
57
+ * This method can be synchronous b/c we internally queue the `Reactable` reverse
58
+ * indexes on the given source `fieldName`, and don't crawl/walk back to the downstream
59
+ * entities/fields until `recalcPendingReactables` is called.
60
+ */
61
+ queueDownstreamReactables(entity, fieldName) {
62
+ for (const r of this.getReactablesByField(entity, fieldName)) {
63
+ this.getPending(r).todo.add(entity);
64
+ this.#needsRecalc[r.kind] = true;
65
+ this.logger.logQueued(entity, fieldName, r);
66
+ }
67
+ }
68
+ /** Dequeues reactivity on `fieldName`, i.e. if it's no longer dirty. */
69
+ dequeueDownstreamReactables(entity, fieldName) {
70
+ for (const r of this.getReactablesByField(entity, fieldName)) {
71
+ const pending = this.getPending(r);
72
+ if (pending.done.has(entity)) {
73
+ pending.todo.add(entity);
74
+ this.#needsRecalc[r.kind] = true;
75
+ } else if (r.fields.length === 1) pending.todo.delete(entity);
76
+ }
77
+ }
78
+ /** Queue all downstream reactive fields that depend on this entity being created or deleted. */
79
+ queueAllDownstreamFields(entity, reason) {
80
+ for (const r of this.getReactables(entity)) {
81
+ this.getPending(r).todo.add(entity);
82
+ this.#needsRecalc[r.kind] = true;
83
+ this.logger.logQueuedAll(entity, reason, r);
84
+ }
85
+ }
86
+ /**
87
+ * Returns whether this field might be pending recalc.
88
+ *
89
+ * This is technically a guess, b/c our reaction infra may not yet have crawled from an upstream
90
+ * source field down to the `N` specific target entities that need recalced, and instead just
91
+ * knows "it will need to do that soon" i.e. at the next `em.flush`.
92
+ *
93
+ * So, instead this is a heuristic that reports if `fieldName` has been marked dirty for _some_
94
+ * entities of type `entity`, but we don't technically know if that's _this_ entity.
95
+ *
96
+ * I.e. this might return false positives, but should never return false negatives.
97
+ */
98
+ isMaybePendingRecalc(entity, fieldName) {
99
+ return this.getDirtyFields(require_EntityMetadata.getMetadata(entity)).has(fieldName);
100
+ }
101
+ hasPendingReactiveQueries() {
102
+ return this.#needsRecalc.query;
103
+ }
104
+ /**
105
+ * Given source `Reactable` "reverse indexes" that have been queued as dirty by calls
106
+ * to setters, `em.register`, or `em.delete`, asynchronously walks/crawls to the downstream
107
+ * derived fields and calls `.load()` on them to calc.
108
+ *
109
+ * We also do this in a loop to handle reactive fields depending on other reactive fields.
110
+ */
111
+ async recalcPendingReactables(kind) {
112
+ if (this.needsRecalc(kind)) this.logger.logStartingRecalc(this.em, kind);
113
+ let loops = 0;
114
+ while (this.needsRecalc(kind)) {
115
+ if (kind === "reactables") {
116
+ this.#needsRecalc.populate = false;
117
+ this.#needsRecalc.reaction = false;
118
+ } else this.#needsRecalc.query = false;
119
+ const seen = /* @__PURE__ */ new Map();
120
+ const actions = [];
121
+ const walks = await Promise.all([...this.pendingReactables.entries()].map(async ([r, pending]) => {
122
+ if (kind === "reactables" && r.kind === "query") return void 0;
123
+ if (kind === "reactiveQueries" && (r.kind === "populate" || r.kind === "reaction")) return void 0;
124
+ const todo = [...pending.todo];
125
+ if (todo.length === 0) return void 0;
126
+ pending.todo.clear();
127
+ for (const doing of todo) pending.done.add(doing);
128
+ const actionableEntities = (r.path.length === 0 ? todo : await require_reactiveHints.followReverseHint(r.name, todo, r.path)).filter((entity) => !entity.isDeletedEntity && entity instanceof r.cstr);
129
+ let seenEntities = seen.get(r.name);
130
+ if (!seenEntities) seen.set(r.name, seenEntities = /* @__PURE__ */ new Set());
131
+ const processed = r.runOnce ? this.processedActions.get(r.name) : void 0;
132
+ for (const entity of actionableEntities) {
133
+ if (seenEntities.has(entity)) continue;
134
+ if (processed && processed.has(entity)) continue;
135
+ seenEntities.add(entity);
136
+ actions.push({
137
+ r,
138
+ entity
139
+ });
140
+ }
141
+ return {
142
+ r,
143
+ todo,
144
+ entities: actionableEntities
145
+ };
146
+ }));
147
+ this.logger.logWalks(walks, "recalc");
148
+ this.logger.logLoadingStart(this.em, actions);
149
+ const startTime = this.logger.now();
150
+ const results = await require_trusted.runInTrustedContext(() => Promise.allSettled(actions.map((a) => this.#doAction(a))));
151
+ const endTime = this.logger.now();
152
+ this.logger.logLoadingEnd(this.em, endTime - startTime);
153
+ const actionsPendingAssignedIds = [];
154
+ const failures = [];
155
+ results.forEach((result, i) => {
156
+ if (result.status === "rejected") {
157
+ if (result.reason instanceof require_index.NoIdError) actionsPendingAssignedIds.push(actions[i]);
158
+ else if (result.reason instanceof TypeError) this.addPendingTypeError(actions[i]);
159
+ else failures.push(result.reason);
160
+ }
161
+ });
162
+ if (actionsPendingAssignedIds.length > 0) {
163
+ await this.em.assignNewIds();
164
+ this.logger.logLoadingStart(this.em, actionsPendingAssignedIds);
165
+ const startTime = this.logger.now();
166
+ const results = await require_trusted.runInTrustedContext(() => Promise.allSettled(actionsPendingAssignedIds.map((a) => this.#doAction(a))));
167
+ const endTime = this.logger.now();
168
+ this.logger.logLoadingEnd(this.em, endTime - startTime);
169
+ results.forEach((result, i) => {
170
+ if (result.status === "rejected") {
171
+ if (result.reason instanceof TypeError) this.addPendingTypeError(actionsPendingAssignedIds[i]);
172
+ else failures.push(result.reason);
173
+ }
174
+ });
175
+ }
176
+ if (failures.length > 0) throw failures[0];
177
+ for (const action of actions) if (action.r.runOnce) {
178
+ let set = this.processedActions.get(action.r.name);
179
+ if (!set) this.processedActions.set(action.r.name, set = /* @__PURE__ */ new Set());
180
+ set.add(action.entity);
181
+ }
182
+ if (loops++ > 50) throw new Error("recalc looped too many times, probably a circular dependency");
183
+ }
184
+ }
185
+ async recalcPendingTypeErrors() {
186
+ const actions = [];
187
+ for (const byEntity of this.actionsPendingTypeErrors.values()) for (const action of byEntity.values()) actions.push(action);
188
+ this.actionsPendingTypeErrors.clear();
189
+ const startTime = this.logger.now();
190
+ const results = await require_trusted.runInTrustedContext(() => Promise.allSettled(actions.filter((a) => !a.entity.isDeletedEntity).map((a) => this.#doAction(a))));
191
+ const endTime = this.logger.now();
192
+ this.logger.logLoadingEnd(this.em, endTime - startTime);
193
+ const failures = [];
194
+ results.forEach((result) => {
195
+ if (result.status === "rejected") {
196
+ if (result.reason instanceof TypeError) this.suppressedTypeErrors.push(result.reason);
197
+ else failures.push(result.reason);
198
+ }
199
+ });
200
+ if (failures.length > 0) throw failures[0];
201
+ }
202
+ get hasPendingTypeErrors() {
203
+ return this.actionsPendingTypeErrors.size > 0;
204
+ }
205
+ /** Clears all the pending source fields, i.e. after `em.flush` is complete. */
206
+ clear() {
207
+ this.pendingReactables = /* @__PURE__ */ new Map();
208
+ this.processedActions.clear();
209
+ }
210
+ setLogger(logger) {
211
+ this.logger = logger ?? require_logging_ReactionLogger.noopReactionLogger;
212
+ }
213
+ clearSuppressedTypeErrors() {
214
+ this.suppressedTypeErrors = [];
215
+ }
216
+ throwIfAnySuppressedTypeErrors() {
217
+ if (this.suppressedTypeErrors.length > 0) throw this.suppressedTypeErrors[0];
218
+ }
219
+ #doAction(action) {
220
+ const { r, entity } = action;
221
+ return r.kind === "reaction" ? r.fn(entity, this.em.ctx) : entity[r.name].load();
222
+ }
223
+ /** Remembers a TypeError'd action to retry post-hooks, deduped by (target field name, entity). */
224
+ addPendingTypeError(action) {
225
+ let byEntity = this.actionsPendingTypeErrors.get(action.r.name);
226
+ if (!byEntity) this.actionsPendingTypeErrors.set(action.r.name, byEntity = /* @__PURE__ */ new Map());
227
+ byEntity.set(action.entity, action);
228
+ }
229
+ needsRecalc(kind) {
230
+ return kind === "reactables" ? this.#needsRecalc.populate || this.#needsRecalc.reaction : this.#needsRecalc.query;
231
+ }
232
+ getPending(r) {
233
+ let pending = this.pendingReactables.get(r);
234
+ if (!pending) {
235
+ pending = {
236
+ todo: /* @__PURE__ */ new Set(),
237
+ done: /* @__PURE__ */ new Set()
238
+ };
239
+ this.pendingReactables.set(r, pending);
240
+ this.getDirtyFields(require_EntityMetadata.getMetadata(r.cstr)).add(r.name);
241
+ }
242
+ return pending;
243
+ }
244
+ getDirtyFields(meta) {
245
+ let dirty = this.dirtyFields.get(meta.tagName);
246
+ if (!dirty) {
247
+ dirty = /* @__PURE__ */ new Set();
248
+ this.dirtyFields.set(meta.tagName, dirty);
249
+ }
250
+ return dirty;
251
+ }
252
+ getReactables(entity) {
253
+ const meta = require_EntityMetadata.getMetadata(entity);
254
+ return require_EntityManager.getEmInternalApi(this.em).isMerging(entity) ? meta.reactablesIncludingReadOnly : meta.reactables;
255
+ }
256
+ getReactablesByField(entity, fieldName) {
257
+ const meta = require_EntityMetadata.getMetadata(entity);
258
+ return (require_EntityManager.getEmInternalApi(this.em).isMerging(entity) ? meta.reactablesIncludingReadOnlyByField : meta.reactablesByField).get(fieldName) ?? noReactables;
259
+ }
260
+ };
261
+ /** A shared frozen array for fields with no downstream reactables. */
262
+ const noReactables = Object.freeze([]);
263
+ //#endregion
264
+ exports.ReactionsManager = ReactionsManager;
265
+
266
+ //# sourceMappingURL=ReactionsManager.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReactionsManager.cjs","names":["globalLogger","noopReactionLogger","#needsRecalc","getMetadata","followReverseHint","runInTrustedContext","#doAction","NoIdError","getEmInternalApi"],"sources":["../src/ReactionsManager.ts"],"sourcesContent":["import { type Reactable } from \"./config.ts\";\nimport { type Entity } from \"./Entity.ts\";\nimport { type EntityMetadata, getMetadata } from \"./EntityMetadata.ts\";\nimport { type EntityManager, NoIdError, getEmInternalApi } from \"./index.ts\";\nimport { type ReactionLogger, globalLogger, noopReactionLogger } from \"./logging/ReactionLogger.ts\";\nimport { followReverseHint } from \"./reactiveHints.ts\";\nimport { runInTrustedContext } from \"./trusted.ts\";\n\nexport type ReactiveAction = { r: Reactable; entity: Entity };\n/**\n * Manages the reactivity of tracking which source fields have changed and finding/recalculating\n * their downstream derived fields.\n *\n * Source fields are usually regular/dumb primitives, i.e. `Author.age` is a source field\n * of `Book.isPublic`, but derived fields can themselves be source fields as well.\n */\nexport class ReactionsManager {\n /** Stores all source `Reactables`s that have been marked for later traversal. */\n private pendingReactables: Map<Reactable, { todo: Set<Entity>; done: Set<Entity> }> = new Map();\n /** Failed actions to retry post-hooks, deduped by target field name -> entity (rare error path). */\n private actionsPendingTypeErrors: Map<string, Map<Entity, ReactiveAction>> = new Map();\n /**\n * A map of entity tagName -> fields that have been marked as dirty.\n *\n * The key of the map is \"just\" the tag name, instead of a specific entity, b/c at the time of\n * being marked dirty, we only have the upstream/source entity + fieldName that has changed, and\n * not the 1-or-more downstream/target entities that will actually recalc.\n *\n * Instead, we just track the dirty fields by type-of-entity, which is enough for `isPendingRecalc`.\n */\n private dirtyFields: Map<string, Set<string>> = new Map();\n /**\n * Tracks which entities have already run a `runOnce` reactable, keyed by the target field\n * name -> entities. We key on `r.name` (not `r` itself) b/c two `Reactable`s reverse-indexed\n * from different source paths can target the same derived field, and must dedupe together.\n * Keying the outer map by field name (of which there are few) instead of by entity (of which\n * there are many) means we allocate just one `Set` per distinct field name, rather than a\n * `Set` per entity or the old per-action `${entity.toTaggedString()}_${r.name}` key strings.\n */\n private processedActions: Map<string, Set<Entity>> = new Map();\n #needsRecalc = { populate: false, query: false, reaction: false };\n // Accessible for EntityManager.runValidation to reuse\n logger: ReactionLogger = globalLogger ?? noopReactionLogger;\n private em: EntityManager;\n /** These are NPEs that *might* have been from invalid m2o fields, so we only throw them after validation. */\n private suppressedTypeErrors: Error[] = [];\n\n constructor(em: EntityManager) {\n this.em = em;\n }\n\n /**\n * Queue all downstream reactive fields that depend on `fieldName` as a source field.\n *\n * This method can be synchronous b/c we internally queue the `Reactable` reverse\n * indexes on the given source `fieldName`, and don't crawl/walk back to the downstream\n * entities/fields until `recalcPendingReactables` is called.\n */\n queueDownstreamReactables(entity: Entity, fieldName: string): void {\n // Use the reverse index of Reactables that configureMetadata sets up\n for (const r of this.getReactablesByField(entity, fieldName)) {\n // We always queue the reactable/entity, even if we're mid-flush or even mid-recalc, to avoid:\n // - firstName is changed from a1 to a2\n // - this triggers firstName's reactable to `Author.initials` to be queued\n // - during the 1st em.flush loop, we recalc `Author.initials` and it didn't change\n // - during the 1st em.flush loop, a hook changes firstName from a2 to b2\n // - if we skip re-queuing firstName's reactables, we will miss that initials needs\n // its `.load()` called again so that it's `setField` marks `initials` as\n // dirty, otherwise it will be left out of any INSERTs/UPDATEs.\n this.getPending(r).todo.add(entity);\n this.#needsRecalc[r.kind] = true;\n this.logger.logQueued(entity, fieldName, r);\n }\n }\n\n /** Dequeues reactivity on `fieldName`, i.e. if it's no longer dirty. */\n dequeueDownstreamReactables(entity: Entity, fieldName: string): void {\n // Use the reverse index of Reactables that configureMetadata sets up\n for (const r of this.getReactablesByField(entity, fieldName)) {\n const pending = this.getPending(r);\n if (pending.done.has(entity)) {\n // Ironically, if we've already run this reactable, asking to dequeue probably means\n // we need to run it again (to recalc its value), b/c this could be a mid-flush change, i.e.:\n // - firstName = a1 from db\n // - firstName is changed to a2, triggers initials reactable\n // - firstName is changed back to a1, which is the original value, so setField\n // thinks we can dequeue the reactable\n // - but actually our reactable needs to be re-run with the restored value\n pending.todo.add(entity);\n this.#needsRecalc[r.kind] = true;\n } else if (r.fields.length === 1) {\n // We can only delete/dequeue a reaction if `fieldName` is the only or last field\n // that had triggered `r` to run. Since we don't track that currently, i.e. we'd\n // need to have a `Pending.dirtyFields`, for now just only dequeue if `r` only\n // has one field (which is us) anyway.\n pending.todo.delete(entity);\n }\n }\n }\n\n /** Queue all downstream reactive fields that depend on this entity being created or deleted. */\n queueAllDownstreamFields(entity: Entity, reason: \"created\" | \"deleted\"): void {\n for (const r of this.getReactables(entity)) {\n this.getPending(r).todo.add(entity);\n this.#needsRecalc[r.kind] = true;\n this.logger.logQueuedAll(entity, reason, r);\n }\n }\n\n /**\n * Returns whether this field might be pending recalc.\n *\n * This is technically a guess, b/c our reaction infra may not yet have crawled from an upstream\n * source field down to the `N` specific target entities that need recalced, and instead just\n * knows \"it will need to do that soon\" i.e. at the next `em.flush`.\n *\n * So, instead this is a heuristic that reports if `fieldName` has been marked dirty for _some_\n * entities of type `entity`, but we don't technically know if that's _this_ entity.\n *\n * I.e. this might return false positives, but should never return false negatives.\n */\n isMaybePendingRecalc(entity: Entity, fieldName: string): boolean {\n return this.getDirtyFields(getMetadata(entity)).has(fieldName);\n }\n\n hasPendingReactiveQueries(): boolean {\n return this.#needsRecalc.query;\n }\n\n /**\n * Given source `Reactable` \"reverse indexes\" that have been queued as dirty by calls\n * to setters, `em.register`, or `em.delete`, asynchronously walks/crawls to the downstream\n * derived fields and calls `.load()` on them to calc.\n *\n * We also do this in a loop to handle reactive fields depending on other reactive fields.\n */\n async recalcPendingReactables(kind: \"reactables\" | \"reactiveQueries\") {\n if (this.needsRecalc(kind)) this.logger.logStartingRecalc(this.em, kind);\n\n let loops = 0;\n while (this.needsRecalc(kind)) {\n // ...we probably should only loop for `kind=reactables` Reactables, and `kind=reactiveQueries`\n // AsyncReactiveFields should probably only have a single loop, after which we return and\n // let `em.flush` push the latest values to the db, so our 2nd-order AsyncReactiveFields\n // will see the latest value.\n if (kind === \"reactables\") {\n this.#needsRecalc.populate = false;\n this.#needsRecalc.reaction = false;\n } else {\n this.#needsRecalc.query = false;\n }\n\n // Dedupe actions by (target field name, entity); see the `processedActions` docs for why\n // we key on `r.name` instead of `r` or the old per-action key strings\n const seen: Map<string, Set<Entity>> = new Map();\n const actions: ReactiveAction[] = [];\n\n const walks = await Promise.all(\n [...this.pendingReactables.entries()].map(async ([r, pending]) => {\n // Skip reactive queries until post-flush\n if (kind === \"reactables\" && r.kind === \"query\") return undefined;\n if (kind === \"reactiveQueries\" && (r.kind === \"populate\" || r.kind === \"reaction\")) return undefined;\n // Copy pending and clear it\n const todo = [...pending.todo];\n if (todo.length === 0) return undefined;\n pending.todo.clear();\n for (const doing of todo) pending.done.add(doing);\n // Walk back from the source to any downstream entities\n const entities = r.path.length === 0 ? todo : await followReverseHint(r.name, todo, r.path);\n const actionableEntities = entities.filter((entity) => !entity.isDeletedEntity && entity instanceof r.cstr);\n let seenEntities = seen.get(r.name);\n if (!seenEntities) seen.set(r.name, (seenEntities = new Set()));\n const processed = r.runOnce ? this.processedActions.get(r.name) : undefined;\n for (const entity of actionableEntities) {\n // We could arrive at the same reactable from multiple paths (eg, 2 dependent fields changed), so we need to\n // dedupe based on the entity and reactable to only run each action once for any given entity per loop\n if (seenEntities.has(entity)) continue;\n // If this reactable has already run and shouldn't run again, then skip it\n if (processed && processed.has(entity)) continue;\n seenEntities.add(entity);\n actions.push({ r, entity });\n }\n return { r, todo, entities: actionableEntities };\n }),\n );\n this.logger.logWalks(walks, \"recalc\");\n this.logger.logLoadingStart(this.em, actions);\n // Use allSettled so that we can watch for derived values that want to use an entity's id\n // i.e. they can fail, but we'll queue them from later.\n const startTime = this.logger.now();\n const results = await runInTrustedContext(() => Promise.allSettled(actions.map((a) => this.#doAction(a))));\n const endTime = this.logger.now();\n this.logger.logLoadingEnd(this.em, endTime - startTime);\n\n // This loop's actions are already unique by (name, entity), so a plain array dedupes fine\n const actionsPendingAssignedIds: ReactiveAction[] = [];\n const failures: any[] = [];\n results.forEach((result, i) => {\n if (result.status === \"rejected\") {\n // Let `author.id` and `book.author.get.firstName` errors run again after flush/hooks fills them in\n if (result.reason instanceof NoIdError) {\n actionsPendingAssignedIds.push(actions[i]);\n } else if (result.reason instanceof TypeError) {\n this.addPendingTypeError(actions[i]);\n } else {\n failures.push(result.reason);\n }\n }\n });\n\n // If we have any actions that need to be re-run because they failed due to a missing id, then we assign ids and\n // re-run them.\n if (actionsPendingAssignedIds.length > 0) {\n await this.em.assignNewIds();\n this.logger.logLoadingStart(this.em, actionsPendingAssignedIds);\n const startTime = this.logger.now();\n const results = await runInTrustedContext(() =>\n Promise.allSettled(actionsPendingAssignedIds.map((a) => this.#doAction(a))),\n );\n const endTime = this.logger.now();\n this.logger.logLoadingEnd(this.em, endTime - startTime);\n results.forEach((result, i) => {\n if (result.status === \"rejected\") {\n if (result.reason instanceof TypeError) {\n this.addPendingTypeError(actionsPendingAssignedIds[i]);\n } else {\n failures.push(result.reason);\n }\n }\n });\n }\n\n if (failures.length > 0) throw failures[0];\n // Record any successful actions that should only run once so we don't run them again\n for (const action of actions) {\n if (action.r.runOnce) {\n let set = this.processedActions.get(action.r.name);\n if (!set) this.processedActions.set(action.r.name, (set = new Set()));\n set.add(action.entity);\n }\n }\n // This should generally not happen, only if two reactive fields depend on each other,\n // which in theory should probably be caught/blow up in the `configureMetadata` step,\n // but if it's not caught sooner, at least don't infinite loop.\n if (loops++ > 50) {\n throw new Error(\"recalc looped too many times, probably a circular dependency\");\n }\n }\n }\n\n async recalcPendingTypeErrors() {\n const actions: ReactiveAction[] = [];\n for (const byEntity of this.actionsPendingTypeErrors.values()) {\n for (const action of byEntity.values()) actions.push(action);\n }\n this.actionsPendingTypeErrors.clear();\n\n const startTime = this.logger.now();\n const results = await runInTrustedContext(() =>\n Promise.allSettled(actions.filter((a) => !a.entity.isDeletedEntity).map((a) => this.#doAction(a))),\n );\n const endTime = this.logger.now();\n this.logger.logLoadingEnd(this.em, endTime - startTime);\n\n const failures: any[] = [];\n results.forEach((result) => {\n if (result.status === \"rejected\") {\n if (result.reason instanceof TypeError) {\n // Defer to the validation error to catch this\n this.suppressedTypeErrors.push(result.reason);\n } else {\n failures.push(result.reason);\n }\n }\n });\n if (failures.length > 0) throw failures[0];\n }\n\n get hasPendingTypeErrors(): boolean {\n return this.actionsPendingTypeErrors.size > 0;\n }\n\n /** Clears all the pending source fields, i.e. after `em.flush` is complete. */\n clear(): void {\n this.pendingReactables = new Map();\n this.processedActions.clear();\n }\n\n setLogger(logger: ReactionLogger | undefined): void {\n this.logger = logger ?? noopReactionLogger;\n }\n\n clearSuppressedTypeErrors(): void {\n this.suppressedTypeErrors = [];\n }\n\n throwIfAnySuppressedTypeErrors(): void {\n if (this.suppressedTypeErrors.length > 0) {\n throw this.suppressedTypeErrors[0];\n }\n }\n\n #doAction(action: ReactiveAction) {\n const { r, entity } = action;\n return r.kind === \"reaction\" ? r.fn(entity, this.em.ctx) : (entity as any)[r.name].load();\n }\n\n /** Remembers a TypeError'd action to retry post-hooks, deduped by (target field name, entity). */\n private addPendingTypeError(action: ReactiveAction): void {\n let byEntity = this.actionsPendingTypeErrors.get(action.r.name);\n if (!byEntity) this.actionsPendingTypeErrors.set(action.r.name, (byEntity = new Map()));\n byEntity.set(action.entity, action);\n }\n\n needsRecalc(kind: \"reactables\" | \"reactiveQueries\"): boolean {\n return kind === \"reactables\" ? this.#needsRecalc.populate || this.#needsRecalc.reaction : this.#needsRecalc.query;\n }\n\n private getPending(r: Reactable): { todo: Set<Entity>; done: Set<Entity> } {\n let pending = this.pendingReactables.get(r);\n if (!pending) {\n pending = { todo: new Set(), done: new Set() };\n this.pendingReactables.set(r, pending);\n // The dirty field name is constant per reactable, so mark it once on the first\n // queue instead of paying the `getMetadata` + map lookup on every queued entity.\n this.getDirtyFields(getMetadata(r.cstr)).add(r.name);\n }\n return pending;\n }\n\n private getDirtyFields(meta: EntityMetadata): Set<string> {\n let dirty = this.dirtyFields.get(meta.tagName);\n if (!dirty) {\n dirty = new Set();\n this.dirtyFields.set(meta.tagName, dirty);\n }\n return dirty;\n }\n\n private getReactables(entity: Entity): Reactable[] {\n // If two books are getting merged, and so a normally-immutable `BookReview.book` is being changed,\n // then even normally-immutable fields need to be recalculated.\n const meta = getMetadata(entity);\n return getEmInternalApi(this.em).isMerging(entity) ? meta.reactablesIncludingReadOnly! : meta.reactables!;\n }\n\n private getReactablesByField(entity: Entity, fieldName: string): readonly Reactable[] {\n const meta = getMetadata(entity);\n const byField = getEmInternalApi(this.em).isMerging(entity)\n ? meta.reactablesIncludingReadOnlyByField!\n : meta.reactablesByField!;\n // Most fields have no reactables, so return a shared empty array instead of allocating one per set\n return byField.get(fieldName) ?? noReactables;\n }\n}\n\n/** A shared frozen array for fields with no downstream reactables. */\nconst noReactables: readonly Reactable[] = Object.freeze([]);\n"],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ import { ReactionLogger } from "./logging/ReactionLogger.cjs";
2
+ import { Reactable } from "./config.cjs";
3
+ import "./index.cjs";
4
+ import { EntityManager } from "./EntityManager.cjs";
5
+ import { Entity } from "./Entity.cjs";
6
+ //#region src/ReactionsManager.d.ts
7
+ type ReactiveAction = {
8
+ r: Reactable;
9
+ entity: Entity;
10
+ };
11
+ /**
12
+ * Manages the reactivity of tracking which source fields have changed and finding/recalculating
13
+ * their downstream derived fields.
14
+ *
15
+ * Source fields are usually regular/dumb primitives, i.e. `Author.age` is a source field
16
+ * of `Book.isPublic`, but derived fields can themselves be source fields as well.
17
+ */
18
+ declare class ReactionsManager {
19
+ #private;
20
+ /** Stores all source `Reactables`s that have been marked for later traversal. */
21
+ private pendingReactables;
22
+ /** Failed actions to retry post-hooks, deduped by target field name -> entity (rare error path). */
23
+ private actionsPendingTypeErrors;
24
+ /**
25
+ * A map of entity tagName -> fields that have been marked as dirty.
26
+ *
27
+ * The key of the map is "just" the tag name, instead of a specific entity, b/c at the time of
28
+ * being marked dirty, we only have the upstream/source entity + fieldName that has changed, and
29
+ * not the 1-or-more downstream/target entities that will actually recalc.
30
+ *
31
+ * Instead, we just track the dirty fields by type-of-entity, which is enough for `isPendingRecalc`.
32
+ */
33
+ private dirtyFields;
34
+ /**
35
+ * Tracks which entities have already run a `runOnce` reactable, keyed by the target field
36
+ * name -> entities. We key on `r.name` (not `r` itself) b/c two `Reactable`s reverse-indexed
37
+ * from different source paths can target the same derived field, and must dedupe together.
38
+ * Keying the outer map by field name (of which there are few) instead of by entity (of which
39
+ * there are many) means we allocate just one `Set` per distinct field name, rather than a
40
+ * `Set` per entity or the old per-action `${entity.toTaggedString()}_${r.name}` key strings.
41
+ */
42
+ private processedActions;
43
+ logger: ReactionLogger;
44
+ private em;
45
+ /** These are NPEs that *might* have been from invalid m2o fields, so we only throw them after validation. */
46
+ private suppressedTypeErrors;
47
+ constructor(em: EntityManager);
48
+ /**
49
+ * Queue all downstream reactive fields that depend on `fieldName` as a source field.
50
+ *
51
+ * This method can be synchronous b/c we internally queue the `Reactable` reverse
52
+ * indexes on the given source `fieldName`, and don't crawl/walk back to the downstream
53
+ * entities/fields until `recalcPendingReactables` is called.
54
+ */
55
+ queueDownstreamReactables(entity: Entity, fieldName: string): void;
56
+ /** Dequeues reactivity on `fieldName`, i.e. if it's no longer dirty. */
57
+ dequeueDownstreamReactables(entity: Entity, fieldName: string): void;
58
+ /** Queue all downstream reactive fields that depend on this entity being created or deleted. */
59
+ queueAllDownstreamFields(entity: Entity, reason: "created" | "deleted"): void;
60
+ /**
61
+ * Returns whether this field might be pending recalc.
62
+ *
63
+ * This is technically a guess, b/c our reaction infra may not yet have crawled from an upstream
64
+ * source field down to the `N` specific target entities that need recalced, and instead just
65
+ * knows "it will need to do that soon" i.e. at the next `em.flush`.
66
+ *
67
+ * So, instead this is a heuristic that reports if `fieldName` has been marked dirty for _some_
68
+ * entities of type `entity`, but we don't technically know if that's _this_ entity.
69
+ *
70
+ * I.e. this might return false positives, but should never return false negatives.
71
+ */
72
+ isMaybePendingRecalc(entity: Entity, fieldName: string): boolean;
73
+ hasPendingReactiveQueries(): boolean;
74
+ /**
75
+ * Given source `Reactable` "reverse indexes" that have been queued as dirty by calls
76
+ * to setters, `em.register`, or `em.delete`, asynchronously walks/crawls to the downstream
77
+ * derived fields and calls `.load()` on them to calc.
78
+ *
79
+ * We also do this in a loop to handle reactive fields depending on other reactive fields.
80
+ */
81
+ recalcPendingReactables(kind: "reactables" | "reactiveQueries"): Promise<void>;
82
+ recalcPendingTypeErrors(): Promise<void>;
83
+ get hasPendingTypeErrors(): boolean;
84
+ /** Clears all the pending source fields, i.e. after `em.flush` is complete. */
85
+ clear(): void;
86
+ setLogger(logger: ReactionLogger | undefined): void;
87
+ clearSuppressedTypeErrors(): void;
88
+ throwIfAnySuppressedTypeErrors(): void;
89
+ /** Remembers a TypeError'd action to retry post-hooks, deduped by (target field name, entity). */
90
+ private addPendingTypeError;
91
+ needsRecalc(kind: "reactables" | "reactiveQueries"): boolean;
92
+ private getPending;
93
+ private getDirtyFields;
94
+ private getReactables;
95
+ private getReactablesByField;
96
+ }
97
+ //#endregion
98
+ export { ReactionsManager, ReactiveAction };
99
+ //# sourceMappingURL=ReactionsManager.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReactionsManager.d.cts","names":[],"sources":["../src/ReactionsManager.ts"],"mappings":";;;;;;KAQY;EAAmB,GAAG;EAAW,QAAQ;;;;;;;;;cAQxC;;;UAEH;;UAEA;;;;;;;;;;UAUA;;;;;;;;;UASA;EAGR,QAAQ;UACA;;UAEA;EAER,YAAY,IAAI;;;;;;;;EAWhB,0BAA0B,QAAQ,QAAQ;;EAkB1C,4BAA4B,QAAQ,QAAQ;;EAyB5C,yBAAyB,QAAQ,QAAQ;;;;;;;;;;;;;EAoBzC,qBAAqB,QAAQ,QAAQ;EAIrC;;;;;;;;EAWM,wBAAwB,yCAAsC;EAkH9D,2BAAuB;MA4BzB;;EAKJ;EAKA,UAAU,QAAQ;EAIlB;EAIA;;UAYQ;EAMR,YAAY;UAIJ;UAYA;UASA;UAOA"}
@@ -0,0 +1,99 @@
1
+ import { ReactionLogger } from "./logging/ReactionLogger.mjs";
2
+ import { Reactable } from "./config.mjs";
3
+ import "./index.mjs";
4
+ import { EntityManager } from "./EntityManager.mjs";
5
+ import { Entity } from "./Entity.mjs";
6
+ //#region src/ReactionsManager.d.ts
7
+ type ReactiveAction = {
8
+ r: Reactable;
9
+ entity: Entity;
10
+ };
11
+ /**
12
+ * Manages the reactivity of tracking which source fields have changed and finding/recalculating
13
+ * their downstream derived fields.
14
+ *
15
+ * Source fields are usually regular/dumb primitives, i.e. `Author.age` is a source field
16
+ * of `Book.isPublic`, but derived fields can themselves be source fields as well.
17
+ */
18
+ declare class ReactionsManager {
19
+ #private;
20
+ /** Stores all source `Reactables`s that have been marked for later traversal. */
21
+ private pendingReactables;
22
+ /** Failed actions to retry post-hooks, deduped by target field name -> entity (rare error path). */
23
+ private actionsPendingTypeErrors;
24
+ /**
25
+ * A map of entity tagName -> fields that have been marked as dirty.
26
+ *
27
+ * The key of the map is "just" the tag name, instead of a specific entity, b/c at the time of
28
+ * being marked dirty, we only have the upstream/source entity + fieldName that has changed, and
29
+ * not the 1-or-more downstream/target entities that will actually recalc.
30
+ *
31
+ * Instead, we just track the dirty fields by type-of-entity, which is enough for `isPendingRecalc`.
32
+ */
33
+ private dirtyFields;
34
+ /**
35
+ * Tracks which entities have already run a `runOnce` reactable, keyed by the target field
36
+ * name -> entities. We key on `r.name` (not `r` itself) b/c two `Reactable`s reverse-indexed
37
+ * from different source paths can target the same derived field, and must dedupe together.
38
+ * Keying the outer map by field name (of which there are few) instead of by entity (of which
39
+ * there are many) means we allocate just one `Set` per distinct field name, rather than a
40
+ * `Set` per entity or the old per-action `${entity.toTaggedString()}_${r.name}` key strings.
41
+ */
42
+ private processedActions;
43
+ logger: ReactionLogger;
44
+ private em;
45
+ /** These are NPEs that *might* have been from invalid m2o fields, so we only throw them after validation. */
46
+ private suppressedTypeErrors;
47
+ constructor(em: EntityManager);
48
+ /**
49
+ * Queue all downstream reactive fields that depend on `fieldName` as a source field.
50
+ *
51
+ * This method can be synchronous b/c we internally queue the `Reactable` reverse
52
+ * indexes on the given source `fieldName`, and don't crawl/walk back to the downstream
53
+ * entities/fields until `recalcPendingReactables` is called.
54
+ */
55
+ queueDownstreamReactables(entity: Entity, fieldName: string): void;
56
+ /** Dequeues reactivity on `fieldName`, i.e. if it's no longer dirty. */
57
+ dequeueDownstreamReactables(entity: Entity, fieldName: string): void;
58
+ /** Queue all downstream reactive fields that depend on this entity being created or deleted. */
59
+ queueAllDownstreamFields(entity: Entity, reason: "created" | "deleted"): void;
60
+ /**
61
+ * Returns whether this field might be pending recalc.
62
+ *
63
+ * This is technically a guess, b/c our reaction infra may not yet have crawled from an upstream
64
+ * source field down to the `N` specific target entities that need recalced, and instead just
65
+ * knows "it will need to do that soon" i.e. at the next `em.flush`.
66
+ *
67
+ * So, instead this is a heuristic that reports if `fieldName` has been marked dirty for _some_
68
+ * entities of type `entity`, but we don't technically know if that's _this_ entity.
69
+ *
70
+ * I.e. this might return false positives, but should never return false negatives.
71
+ */
72
+ isMaybePendingRecalc(entity: Entity, fieldName: string): boolean;
73
+ hasPendingReactiveQueries(): boolean;
74
+ /**
75
+ * Given source `Reactable` "reverse indexes" that have been queued as dirty by calls
76
+ * to setters, `em.register`, or `em.delete`, asynchronously walks/crawls to the downstream
77
+ * derived fields and calls `.load()` on them to calc.
78
+ *
79
+ * We also do this in a loop to handle reactive fields depending on other reactive fields.
80
+ */
81
+ recalcPendingReactables(kind: "reactables" | "reactiveQueries"): Promise<void>;
82
+ recalcPendingTypeErrors(): Promise<void>;
83
+ get hasPendingTypeErrors(): boolean;
84
+ /** Clears all the pending source fields, i.e. after `em.flush` is complete. */
85
+ clear(): void;
86
+ setLogger(logger: ReactionLogger | undefined): void;
87
+ clearSuppressedTypeErrors(): void;
88
+ throwIfAnySuppressedTypeErrors(): void;
89
+ /** Remembers a TypeError'd action to retry post-hooks, deduped by (target field name, entity). */
90
+ private addPendingTypeError;
91
+ needsRecalc(kind: "reactables" | "reactiveQueries"): boolean;
92
+ private getPending;
93
+ private getDirtyFields;
94
+ private getReactables;
95
+ private getReactablesByField;
96
+ }
97
+ //#endregion
98
+ export { ReactionsManager, ReactiveAction };
99
+ //# sourceMappingURL=ReactionsManager.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReactionsManager.d.mts","names":[],"sources":["../src/ReactionsManager.ts"],"mappings":";;;;;;KAQY;EAAmB,GAAG;EAAW,QAAQ;;;;;;;;;cAQxC;;;UAEH;;UAEA;;;;;;;;;;UAUA;;;;;;;;;UASA;EAGR,QAAQ;UACA;;UAEA;EAER,YAAY,IAAI;;;;;;;;EAWhB,0BAA0B,QAAQ,QAAQ;;EAkB1C,4BAA4B,QAAQ,QAAQ;;EAyB5C,yBAAyB,QAAQ,QAAQ;;;;;;;;;;;;;EAoBzC,qBAAqB,QAAQ,QAAQ;EAIrC;;;;;;;;EAWM,wBAAwB,yCAAsC;EAkH9D,2BAAuB;MA4BzB;;EAKJ;EAKA,UAAU,QAAQ;EAIlB;EAIA;;UAYQ;EAMR,YAAY;UAIJ;UAYA;UASA;UAOA"}