joist-orm 1.294.0 → 2.0.1

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 (484) hide show
  1. package/build/codegen.d.ts +2 -0
  2. package/build/codegen.d.ts.map +1 -0
  3. package/build/codegen.js +29 -0
  4. package/build/codegen.js.map +1 -0
  5. package/build/drivers/PostgresDriver.d.ts +1 -4
  6. package/build/drivers/PostgresDriver.d.ts.map +1 -1
  7. package/build/drivers/PostgresDriver.js +49 -58
  8. package/build/drivers/PostgresDriver.js.map +1 -1
  9. package/build/graphql-codegen-export.d.ts +2 -0
  10. package/build/graphql-codegen-export.d.ts.map +1 -0
  11. package/build/{drivers/index.js → graphql-codegen-export.js} +3 -5
  12. package/build/graphql-codegen-export.js.map +1 -0
  13. package/build/graphql-export.d.ts +2 -0
  14. package/build/graphql-export.d.ts.map +1 -0
  15. package/build/graphql-export.js +19 -0
  16. package/build/graphql-export.js.map +1 -0
  17. package/build/index.d.ts +3 -128
  18. package/build/index.d.ts.map +1 -1
  19. package/build/index.js +8 -284
  20. package/build/index.js.map +1 -1
  21. package/build/knex-export.d.ts +2 -0
  22. package/build/knex-export.d.ts.map +1 -0
  23. package/build/knex-export.js +19 -0
  24. package/build/knex-export.js.map +1 -0
  25. package/build/pg-export.d.ts +2 -0
  26. package/build/pg-export.d.ts.map +1 -0
  27. package/build/pg-export.js +7 -0
  28. package/build/pg-export.js.map +1 -0
  29. package/build/pg-migrate.d.ts +2 -0
  30. package/build/pg-migrate.d.ts.map +1 -0
  31. package/build/pg-migrate.js +30 -0
  32. package/build/pg-migrate.js.map +1 -0
  33. package/build/tests-export.d.ts +2 -0
  34. package/build/tests-export.d.ts.map +1 -0
  35. package/build/tests-export.js +19 -0
  36. package/build/tests-export.js.map +1 -0
  37. package/package.json +94 -16
  38. package/build/AliasAssigner.d.ts +0 -7
  39. package/build/AliasAssigner.d.ts.map +0 -1
  40. package/build/AliasAssigner.js +0 -30
  41. package/build/AliasAssigner.js.map +0 -1
  42. package/build/Aliases.d.ts +0 -110
  43. package/build/Aliases.d.ts.map +0 -1
  44. package/build/Aliases.js +0 -456
  45. package/build/Aliases.js.map +0 -1
  46. package/build/BaseEntity.d.ts +0 -66
  47. package/build/BaseEntity.d.ts.map +0 -1
  48. package/build/BaseEntity.js +0 -120
  49. package/build/BaseEntity.js.map +0 -1
  50. package/build/ConditionBuilder.d.ts +0 -50
  51. package/build/ConditionBuilder.d.ts.map +0 -1
  52. package/build/ConditionBuilder.js +0 -178
  53. package/build/ConditionBuilder.js.map +0 -1
  54. package/build/Entity.d.ts +0 -38
  55. package/build/Entity.d.ts.map +0 -1
  56. package/build/Entity.js +0 -8
  57. package/build/Entity.js.map +0 -1
  58. package/build/EntityFields.d.ts +0 -37
  59. package/build/EntityFields.d.ts.map +0 -1
  60. package/build/EntityFields.js +0 -3
  61. package/build/EntityFields.js.map +0 -1
  62. package/build/EntityFilter.d.ts +0 -113
  63. package/build/EntityFilter.d.ts.map +0 -1
  64. package/build/EntityFilter.js +0 -3
  65. package/build/EntityFilter.js.map +0 -1
  66. package/build/EntityGraphQLFilter.d.ts +0 -51
  67. package/build/EntityGraphQLFilter.d.ts.map +0 -1
  68. package/build/EntityGraphQLFilter.js +0 -54
  69. package/build/EntityGraphQLFilter.js.map +0 -1
  70. package/build/EntityManager.d.ts +0 -734
  71. package/build/EntityManager.d.ts.map +0 -1
  72. package/build/EntityManager.js +0 -2075
  73. package/build/EntityManager.js.map +0 -1
  74. package/build/EntityMetadata.d.ts +0 -185
  75. package/build/EntityMetadata.d.ts.map +0 -1
  76. package/build/EntityMetadata.js +0 -61
  77. package/build/EntityMetadata.js.map +0 -1
  78. package/build/EnumMetadata.d.ts +0 -15
  79. package/build/EnumMetadata.d.ts.map +0 -1
  80. package/build/EnumMetadata.js +0 -3
  81. package/build/EnumMetadata.js.map +0 -1
  82. package/build/FlushLock.d.ts +0 -26
  83. package/build/FlushLock.d.ts.map +0 -1
  84. package/build/FlushLock.js +0 -57
  85. package/build/FlushLock.js.map +0 -1
  86. package/build/HintTree.d.ts +0 -42
  87. package/build/HintTree.d.ts.map +0 -1
  88. package/build/HintTree.js +0 -64
  89. package/build/HintTree.js.map +0 -1
  90. package/build/IndexManager.d.ts +0 -30
  91. package/build/IndexManager.d.ts.map +0 -1
  92. package/build/IndexManager.js +0 -206
  93. package/build/IndexManager.js.map +0 -1
  94. package/build/InstanceData.d.ts +0 -59
  95. package/build/InstanceData.d.ts.map +0 -1
  96. package/build/InstanceData.js +0 -162
  97. package/build/InstanceData.js.map +0 -1
  98. package/build/IsLoadedCache.d.ts +0 -32
  99. package/build/IsLoadedCache.d.ts.map +0 -1
  100. package/build/IsLoadedCache.js +0 -80
  101. package/build/IsLoadedCache.js.map +0 -1
  102. package/build/JoinRows.d.ts +0 -75
  103. package/build/JoinRows.d.ts.map +0 -1
  104. package/build/JoinRows.js +0 -246
  105. package/build/JoinRows.js.map +0 -1
  106. package/build/PluginManager.d.ts +0 -90
  107. package/build/PluginManager.d.ts.map +0 -1
  108. package/build/PluginManager.js +0 -97
  109. package/build/PluginManager.js.map +0 -1
  110. package/build/QueryParser.d.ts +0 -271
  111. package/build/QueryParser.d.ts.map +0 -1
  112. package/build/QueryParser.js +0 -853
  113. package/build/QueryParser.js.map +0 -1
  114. package/build/QueryParser.pruning.d.ts +0 -5
  115. package/build/QueryParser.pruning.d.ts.map +0 -1
  116. package/build/QueryParser.pruning.js +0 -118
  117. package/build/QueryParser.pruning.js.map +0 -1
  118. package/build/QueryVisitor.d.ts +0 -19
  119. package/build/QueryVisitor.d.ts.map +0 -1
  120. package/build/QueryVisitor.js +0 -84
  121. package/build/QueryVisitor.js.map +0 -1
  122. package/build/ReactionsManager.d.ts +0 -84
  123. package/build/ReactionsManager.d.ts.map +0 -1
  124. package/build/ReactionsManager.js +0 -308
  125. package/build/ReactionsManager.js.map +0 -1
  126. package/build/Todo.d.ts +0 -31
  127. package/build/Todo.d.ts.map +0 -1
  128. package/build/Todo.js +0 -73
  129. package/build/Todo.js.map +0 -1
  130. package/build/caches.d.ts +0 -6
  131. package/build/caches.d.ts.map +0 -1
  132. package/build/caches.js +0 -42
  133. package/build/caches.js.map +0 -1
  134. package/build/changes.d.ts +0 -79
  135. package/build/changes.d.ts.map +0 -1
  136. package/build/changes.js +0 -251
  137. package/build/changes.js.map +0 -1
  138. package/build/config.d.ts +0 -237
  139. package/build/config.d.ts.map +0 -1
  140. package/build/config.js +0 -298
  141. package/build/config.js.map +0 -1
  142. package/build/config.test.d.ts +0 -2
  143. package/build/config.test.d.ts.map +0 -1
  144. package/build/config.test.js +0 -53
  145. package/build/config.test.js.map +0 -1
  146. package/build/configure.d.ts +0 -13
  147. package/build/configure.d.ts.map +0 -1
  148. package/build/configure.js +0 -329
  149. package/build/configure.js.map +0 -1
  150. package/build/dataloaders/findByUniqueDataLoader.d.ts +0 -7
  151. package/build/dataloaders/findByUniqueDataLoader.d.ts.map +0 -1
  152. package/build/dataloaders/findByUniqueDataLoader.js +0 -47
  153. package/build/dataloaders/findByUniqueDataLoader.js.map +0 -1
  154. package/build/dataloaders/findCountDataLoader.d.ts +0 -7
  155. package/build/dataloaders/findCountDataLoader.d.ts.map +0 -1
  156. package/build/dataloaders/findCountDataLoader.js +0 -74
  157. package/build/dataloaders/findCountDataLoader.js.map +0 -1
  158. package/build/dataloaders/findDataLoader.d.ts +0 -37
  159. package/build/dataloaders/findDataLoader.d.ts.map +0 -1
  160. package/build/dataloaders/findDataLoader.js +0 -337
  161. package/build/dataloaders/findDataLoader.js.map +0 -1
  162. package/build/dataloaders/findIdsDataLoader.d.ts +0 -7
  163. package/build/dataloaders/findIdsDataLoader.d.ts.map +0 -1
  164. package/build/dataloaders/findIdsDataLoader.js +0 -74
  165. package/build/dataloaders/findIdsDataLoader.js.map +0 -1
  166. package/build/dataloaders/findOrCreateDataLoader.d.ts +0 -13
  167. package/build/dataloaders/findOrCreateDataLoader.d.ts.map +0 -1
  168. package/build/dataloaders/findOrCreateDataLoader.js +0 -174
  169. package/build/dataloaders/findOrCreateDataLoader.js.map +0 -1
  170. package/build/dataloaders/lensDataLoader.d.ts +0 -12
  171. package/build/dataloaders/lensDataLoader.d.ts.map +0 -1
  172. package/build/dataloaders/lensDataLoader.js +0 -180
  173. package/build/dataloaders/lensDataLoader.js.map +0 -1
  174. package/build/dataloaders/loadDataLoader.d.ts +0 -11
  175. package/build/dataloaders/loadDataLoader.d.ts.map +0 -1
  176. package/build/dataloaders/loadDataLoader.js +0 -54
  177. package/build/dataloaders/loadDataLoader.js.map +0 -1
  178. package/build/dataloaders/manyToManyDataLoader.d.ts +0 -8
  179. package/build/dataloaders/manyToManyDataLoader.d.ts.map +0 -1
  180. package/build/dataloaders/manyToManyDataLoader.js +0 -74
  181. package/build/dataloaders/manyToManyDataLoader.js.map +0 -1
  182. package/build/dataloaders/manyToManyFindDataLoader.d.ts +0 -8
  183. package/build/dataloaders/manyToManyFindDataLoader.d.ts.map +0 -1
  184. package/build/dataloaders/manyToManyFindDataLoader.js +0 -70
  185. package/build/dataloaders/manyToManyFindDataLoader.js.map +0 -1
  186. package/build/dataloaders/oneToManyDataLoader.d.ts +0 -7
  187. package/build/dataloaders/oneToManyDataLoader.d.ts.map +0 -1
  188. package/build/dataloaders/oneToManyDataLoader.js +0 -60
  189. package/build/dataloaders/oneToManyDataLoader.js.map +0 -1
  190. package/build/dataloaders/oneToManyFindDataLoader.d.ts +0 -8
  191. package/build/dataloaders/oneToManyFindDataLoader.d.ts.map +0 -1
  192. package/build/dataloaders/oneToManyFindDataLoader.js +0 -71
  193. package/build/dataloaders/oneToManyFindDataLoader.js.map +0 -1
  194. package/build/dataloaders/oneToOneDataLoader.d.ts +0 -7
  195. package/build/dataloaders/oneToOneDataLoader.d.ts.map +0 -1
  196. package/build/dataloaders/oneToOneDataLoader.js +0 -59
  197. package/build/dataloaders/oneToOneDataLoader.js.map +0 -1
  198. package/build/dataloaders/populateDataLoader.d.ts +0 -13
  199. package/build/dataloaders/populateDataLoader.d.ts.map +0 -1
  200. package/build/dataloaders/populateDataLoader.js +0 -148
  201. package/build/dataloaders/populateDataLoader.js.map +0 -1
  202. package/build/dataloaders/recursiveChildrenDataLoader.d.ts +0 -7
  203. package/build/dataloaders/recursiveChildrenDataLoader.d.ts.map +0 -1
  204. package/build/dataloaders/recursiveChildrenDataLoader.js +0 -77
  205. package/build/dataloaders/recursiveChildrenDataLoader.js.map +0 -1
  206. package/build/dataloaders/recursiveParentsDataLoader.d.ts +0 -7
  207. package/build/dataloaders/recursiveParentsDataLoader.d.ts.map +0 -1
  208. package/build/dataloaders/recursiveParentsDataLoader.js +0 -59
  209. package/build/dataloaders/recursiveParentsDataLoader.js.map +0 -1
  210. package/build/defaults.d.ts +0 -54
  211. package/build/defaults.d.ts.map +0 -1
  212. package/build/defaults.js +0 -282
  213. package/build/defaults.js.map +0 -1
  214. package/build/driverApi.d.ts +0 -19
  215. package/build/driverApi.d.ts.map +0 -1
  216. package/build/driverApi.js +0 -17
  217. package/build/driverApi.js.map +0 -1
  218. package/build/drivers/Driver.d.ts +0 -26
  219. package/build/drivers/Driver.d.ts.map +0 -1
  220. package/build/drivers/Driver.js +0 -3
  221. package/build/drivers/Driver.js.map +0 -1
  222. package/build/drivers/EntityWriter.d.ts +0 -64
  223. package/build/drivers/EntityWriter.d.ts.map +0 -1
  224. package/build/drivers/EntityWriter.js +0 -237
  225. package/build/drivers/EntityWriter.js.map +0 -1
  226. package/build/drivers/IdAssigner.d.ts +0 -50
  227. package/build/drivers/IdAssigner.d.ts.map +0 -1
  228. package/build/drivers/IdAssigner.js +0 -133
  229. package/build/drivers/IdAssigner.js.map +0 -1
  230. package/build/drivers/buildRawQuery.d.ts +0 -20
  231. package/build/drivers/buildRawQuery.d.ts.map +0 -1
  232. package/build/drivers/buildRawQuery.js +0 -148
  233. package/build/drivers/buildRawQuery.js.map +0 -1
  234. package/build/drivers/buildUtils.d.ts +0 -4
  235. package/build/drivers/buildUtils.d.ts.map +0 -1
  236. package/build/drivers/buildUtils.js +0 -79
  237. package/build/drivers/buildUtils.js.map +0 -1
  238. package/build/drivers/index.d.ts +0 -5
  239. package/build/drivers/index.d.ts.map +0 -1
  240. package/build/drivers/index.js.map +0 -1
  241. package/build/fields.d.ts +0 -24
  242. package/build/fields.d.ts.map +0 -1
  243. package/build/fields.js +0 -162
  244. package/build/fields.js.map +0 -1
  245. package/build/getProperties.d.ts +0 -28
  246. package/build/getProperties.d.ts.map +0 -1
  247. package/build/getProperties.js +0 -141
  248. package/build/getProperties.js.map +0 -1
  249. package/build/json.d.ts +0 -77
  250. package/build/json.d.ts.map +0 -1
  251. package/build/json.js +0 -116
  252. package/build/json.js.map +0 -1
  253. package/build/k.d.ts +0 -2
  254. package/build/k.d.ts.map +0 -1
  255. package/build/k.js +0 -9
  256. package/build/k.js.map +0 -1
  257. package/build/keys.d.ts +0 -49
  258. package/build/keys.d.ts.map +0 -1
  259. package/build/keys.js +0 -195
  260. package/build/keys.js.map +0 -1
  261. package/build/keywords.d.ts +0 -5
  262. package/build/keywords.d.ts.map +0 -1
  263. package/build/keywords.js +0 -124
  264. package/build/keywords.js.map +0 -1
  265. package/build/loadHints.d.ts +0 -112
  266. package/build/loadHints.d.ts.map +0 -1
  267. package/build/loadHints.js +0 -75
  268. package/build/loadHints.js.map +0 -1
  269. package/build/loadLens.d.ts +0 -66
  270. package/build/loadLens.d.ts.map +0 -1
  271. package/build/loadLens.js +0 -287
  272. package/build/loadLens.js.map +0 -1
  273. package/build/logging/FactoryLogger.d.ts +0 -24
  274. package/build/logging/FactoryLogger.d.ts.map +0 -1
  275. package/build/logging/FactoryLogger.js +0 -77
  276. package/build/logging/FactoryLogger.js.map +0 -1
  277. package/build/logging/FieldLogger.d.ts +0 -27
  278. package/build/logging/FieldLogger.d.ts.map +0 -1
  279. package/build/logging/FieldLogger.js +0 -69
  280. package/build/logging/FieldLogger.js.map +0 -1
  281. package/build/logging/ReactionLogger.d.ts +0 -23
  282. package/build/logging/ReactionLogger.d.ts.map +0 -1
  283. package/build/logging/ReactionLogger.js +0 -65
  284. package/build/logging/ReactionLogger.js.map +0 -1
  285. package/build/newEntity.d.ts +0 -45
  286. package/build/newEntity.d.ts.map +0 -1
  287. package/build/newEntity.js +0 -106
  288. package/build/newEntity.js.map +0 -1
  289. package/build/newTestInstance.d.ts +0 -193
  290. package/build/newTestInstance.d.ts.map +0 -1
  291. package/build/newTestInstance.js +0 -738
  292. package/build/newTestInstance.js.map +0 -1
  293. package/build/normalizeHints.d.ts +0 -16
  294. package/build/normalizeHints.d.ts.map +0 -1
  295. package/build/normalizeHints.js +0 -31
  296. package/build/normalizeHints.js.map +0 -1
  297. package/build/plugins/ImmutableEntitiesPlugin.d.ts +0 -9
  298. package/build/plugins/ImmutableEntitiesPlugin.d.ts.map +0 -1
  299. package/build/plugins/ImmutableEntitiesPlugin.js +0 -21
  300. package/build/plugins/ImmutableEntitiesPlugin.js.map +0 -1
  301. package/build/plugins/PreloadPlugin.d.ts +0 -69
  302. package/build/plugins/PreloadPlugin.d.ts.map +0 -1
  303. package/build/plugins/PreloadPlugin.js +0 -3
  304. package/build/plugins/PreloadPlugin.js.map +0 -1
  305. package/build/preloading/JsonAggregatePreloader.d.ts +0 -16
  306. package/build/preloading/JsonAggregatePreloader.d.ts.map +0 -1
  307. package/build/preloading/JsonAggregatePreloader.js +0 -238
  308. package/build/preloading/JsonAggregatePreloader.js.map +0 -1
  309. package/build/preloading/canPreload.d.ts +0 -3
  310. package/build/preloading/canPreload.d.ts.map +0 -1
  311. package/build/preloading/canPreload.js +0 -21
  312. package/build/preloading/canPreload.js.map +0 -1
  313. package/build/preloading/partitionHint.d.ts +0 -5
  314. package/build/preloading/partitionHint.d.ts.map +0 -1
  315. package/build/preloading/partitionHint.js +0 -56
  316. package/build/preloading/partitionHint.js.map +0 -1
  317. package/build/reactiveHints.d.ts +0 -129
  318. package/build/reactiveHints.d.ts.map +0 -1
  319. package/build/reactiveHints.js +0 -458
  320. package/build/reactiveHints.js.map +0 -1
  321. package/build/relations/AbstractPropertyImpl.d.ts +0 -8
  322. package/build/relations/AbstractPropertyImpl.d.ts.map +0 -1
  323. package/build/relations/AbstractPropertyImpl.js +0 -15
  324. package/build/relations/AbstractPropertyImpl.js.map +0 -1
  325. package/build/relations/AbstractRelationImpl.d.ts +0 -36
  326. package/build/relations/AbstractRelationImpl.d.ts.map +0 -1
  327. package/build/relations/AbstractRelationImpl.js +0 -19
  328. package/build/relations/AbstractRelationImpl.js.map +0 -1
  329. package/build/relations/Collection.d.ts +0 -28
  330. package/build/relations/Collection.d.ts.map +0 -1
  331. package/build/relations/Collection.js +0 -18
  332. package/build/relations/Collection.js.map +0 -1
  333. package/build/relations/CustomCollection.d.ts +0 -69
  334. package/build/relations/CustomCollection.d.ts.map +0 -1
  335. package/build/relations/CustomCollection.js +0 -166
  336. package/build/relations/CustomCollection.js.map +0 -1
  337. package/build/relations/CustomReference.d.ts +0 -71
  338. package/build/relations/CustomReference.d.ts.map +0 -1
  339. package/build/relations/CustomReference.js +0 -152
  340. package/build/relations/CustomReference.js.map +0 -1
  341. package/build/relations/LargeCollection.d.ts +0 -19
  342. package/build/relations/LargeCollection.d.ts.map +0 -1
  343. package/build/relations/LargeCollection.js +0 -3
  344. package/build/relations/LargeCollection.js.map +0 -1
  345. package/build/relations/ManyToManyCollection.d.ts +0 -44
  346. package/build/relations/ManyToManyCollection.d.ts.map +0 -1
  347. package/build/relations/ManyToManyCollection.js +0 -268
  348. package/build/relations/ManyToManyCollection.js.map +0 -1
  349. package/build/relations/ManyToManyLargeCollection.d.ts +0 -30
  350. package/build/relations/ManyToManyLargeCollection.d.ts.map +0 -1
  351. package/build/relations/ManyToManyLargeCollection.js +0 -119
  352. package/build/relations/ManyToManyLargeCollection.js.map +0 -1
  353. package/build/relations/ManyToOneReference.d.ts +0 -121
  354. package/build/relations/ManyToOneReference.d.ts.map +0 -1
  355. package/build/relations/ManyToOneReference.js +0 -389
  356. package/build/relations/ManyToOneReference.js.map +0 -1
  357. package/build/relations/OneToManyCollection.d.ts +0 -58
  358. package/build/relations/OneToManyCollection.d.ts.map +0 -1
  359. package/build/relations/OneToManyCollection.js +0 -347
  360. package/build/relations/OneToManyCollection.js.map +0 -1
  361. package/build/relations/OneToManyLargeCollection.d.ts +0 -26
  362. package/build/relations/OneToManyLargeCollection.d.ts.map +0 -1
  363. package/build/relations/OneToManyLargeCollection.js +0 -102
  364. package/build/relations/OneToManyLargeCollection.js.map +0 -1
  365. package/build/relations/OneToOneReference.d.ts +0 -93
  366. package/build/relations/OneToOneReference.d.ts.map +0 -1
  367. package/build/relations/OneToOneReference.js +0 -228
  368. package/build/relations/OneToOneReference.js.map +0 -1
  369. package/build/relations/PolymorphicReference.d.ts +0 -89
  370. package/build/relations/PolymorphicReference.d.ts.map +0 -1
  371. package/build/relations/PolymorphicReference.js +0 -244
  372. package/build/relations/PolymorphicReference.js.map +0 -1
  373. package/build/relations/ReactiveField.d.ts +0 -87
  374. package/build/relations/ReactiveField.d.ts.map +0 -1
  375. package/build/relations/ReactiveField.js +0 -149
  376. package/build/relations/ReactiveField.js.map +0 -1
  377. package/build/relations/ReactiveGetter.d.ts +0 -30
  378. package/build/relations/ReactiveGetter.d.ts.map +0 -1
  379. package/build/relations/ReactiveGetter.js +0 -38
  380. package/build/relations/ReactiveGetter.js.map +0 -1
  381. package/build/relations/ReactiveManyToMany.d.ts +0 -56
  382. package/build/relations/ReactiveManyToMany.d.ts.map +0 -1
  383. package/build/relations/ReactiveManyToMany.js +0 -243
  384. package/build/relations/ReactiveManyToMany.js.map +0 -1
  385. package/build/relations/ReactiveManyToManyOtherSide.d.ts +0 -47
  386. package/build/relations/ReactiveManyToManyOtherSide.d.ts.map +0 -1
  387. package/build/relations/ReactiveManyToManyOtherSide.js +0 -155
  388. package/build/relations/ReactiveManyToManyOtherSide.js.map +0 -1
  389. package/build/relations/ReactiveQueryField.d.ts +0 -41
  390. package/build/relations/ReactiveQueryField.d.ts.map +0 -1
  391. package/build/relations/ReactiveQueryField.js +0 -125
  392. package/build/relations/ReactiveQueryField.js.map +0 -1
  393. package/build/relations/ReactiveReference.d.ts +0 -119
  394. package/build/relations/ReactiveReference.d.ts.map +0 -1
  395. package/build/relations/ReactiveReference.js +0 -333
  396. package/build/relations/ReactiveReference.js.map +0 -1
  397. package/build/relations/ReadOnlyCollection.d.ts +0 -19
  398. package/build/relations/ReadOnlyCollection.d.ts.map +0 -1
  399. package/build/relations/ReadOnlyCollection.js +0 -15
  400. package/build/relations/ReadOnlyCollection.js.map +0 -1
  401. package/build/relations/RecursiveCollection.d.ts +0 -84
  402. package/build/relations/RecursiveCollection.d.ts.map +0 -1
  403. package/build/relations/RecursiveCollection.js +0 -296
  404. package/build/relations/RecursiveCollection.js.map +0 -1
  405. package/build/relations/Reference.d.ts +0 -35
  406. package/build/relations/Reference.d.ts.map +0 -1
  407. package/build/relations/Reference.js +0 -21
  408. package/build/relations/Reference.js.map +0 -1
  409. package/build/relations/Relation.d.ts +0 -14
  410. package/build/relations/Relation.d.ts.map +0 -1
  411. package/build/relations/Relation.js +0 -12
  412. package/build/relations/Relation.js.map +0 -1
  413. package/build/relations/hasAsyncMethod.d.ts +0 -27
  414. package/build/relations/hasAsyncMethod.d.ts.map +0 -1
  415. package/build/relations/hasAsyncMethod.js +0 -47
  416. package/build/relations/hasAsyncMethod.js.map +0 -1
  417. package/build/relations/hasAsyncProperty.d.ts +0 -49
  418. package/build/relations/hasAsyncProperty.d.ts.map +0 -1
  419. package/build/relations/hasAsyncProperty.js +0 -98
  420. package/build/relations/hasAsyncProperty.js.map +0 -1
  421. package/build/relations/hasManyDerived.d.ts +0 -22
  422. package/build/relations/hasManyDerived.d.ts.map +0 -1
  423. package/build/relations/hasManyDerived.js +0 -32
  424. package/build/relations/hasManyDerived.js.map +0 -1
  425. package/build/relations/hasManyThrough.d.ts +0 -10
  426. package/build/relations/hasManyThrough.d.ts.map +0 -1
  427. package/build/relations/hasManyThrough.js +0 -24
  428. package/build/relations/hasManyThrough.js.map +0 -1
  429. package/build/relations/hasOneDerived.d.ts +0 -12
  430. package/build/relations/hasOneDerived.d.ts.map +0 -1
  431. package/build/relations/hasOneDerived.js +0 -24
  432. package/build/relations/hasOneDerived.js.map +0 -1
  433. package/build/relations/hasOneThrough.d.ts +0 -10
  434. package/build/relations/hasOneThrough.d.ts.map +0 -1
  435. package/build/relations/hasOneThrough.js +0 -24
  436. package/build/relations/hasOneThrough.js.map +0 -1
  437. package/build/relations/index.d.ts +0 -28
  438. package/build/relations/index.d.ts.map +0 -1
  439. package/build/relations/index.js +0 -88
  440. package/build/relations/index.js.map +0 -1
  441. package/build/rules.d.ts +0 -123
  442. package/build/rules.d.ts.map +0 -1
  443. package/build/rules.js +0 -231
  444. package/build/rules.js.map +0 -1
  445. package/build/runtimeConfig.d.ts +0 -17
  446. package/build/runtimeConfig.d.ts.map +0 -1
  447. package/build/runtimeConfig.js +0 -18
  448. package/build/runtimeConfig.js.map +0 -1
  449. package/build/serde.d.ts +0 -277
  450. package/build/serde.d.ts.map +0 -1
  451. package/build/serde.js +0 -517
  452. package/build/serde.js.map +0 -1
  453. package/build/temporal.d.ts +0 -16
  454. package/build/temporal.d.ts.map +0 -1
  455. package/build/temporal.js +0 -48
  456. package/build/temporal.js.map +0 -1
  457. package/build/temporalMappers.d.ts +0 -25
  458. package/build/temporalMappers.d.ts.map +0 -1
  459. package/build/temporalMappers.js +0 -59
  460. package/build/temporalMappers.js.map +0 -1
  461. package/build/trusted.d.ts +0 -5
  462. package/build/trusted.d.ts.map +0 -1
  463. package/build/trusted.js +0 -15
  464. package/build/trusted.js.map +0 -1
  465. package/build/typeMap.d.ts +0 -68
  466. package/build/typeMap.d.ts.map +0 -1
  467. package/build/typeMap.js +0 -3
  468. package/build/typeMap.js.map +0 -1
  469. package/build/unnest.d.ts +0 -13
  470. package/build/unnest.d.ts.map +0 -1
  471. package/build/unnest.js +0 -85
  472. package/build/unnest.js.map +0 -1
  473. package/build/upsert.d.ts +0 -42
  474. package/build/upsert.d.ts.map +0 -1
  475. package/build/upsert.js +0 -265
  476. package/build/upsert.js.map +0 -1
  477. package/build/utils.d.ts +0 -58
  478. package/build/utils.d.ts.map +0 -1
  479. package/build/utils.js +0 -236
  480. package/build/utils.js.map +0 -1
  481. package/build/withLoaded.d.ts +0 -56
  482. package/build/withLoaded.d.ts.map +0 -1
  483. package/build/withLoaded.js +0 -76
  484. package/build/withLoaded.js.map +0 -1
@@ -1,87 +0,0 @@
1
- import { Entity } from "../Entity";
2
- import { PrimitiveField } from "../EntityMetadata";
3
- import { IsLoadedCachable } from "../IsLoadedCache";
4
- import { Reacted, ReactiveHint } from "../reactiveHints";
5
- import { AbstractPropertyImpl } from "./AbstractPropertyImpl";
6
- import { AsyncPropertyT } from "./hasAsyncProperty";
7
- /**
8
- * A `ReactiveField` is a value that is derived from other entities/values,
9
- * similar to an `AsyncProperty`, but it is also persisted in the database.
10
- *
11
- * This allows callers (or SQL queries) to access the value without first calling
12
- * `await load()` on the property.
13
- *
14
- * So, unlike `AsyncProperty`, `.get` is always available; if the property is unloaded,
15
- * then `.get` will return the last-calculated value, but if the property is loaded,
16
- * then it will go ahead and invoke function to calculate the latest value (i.e. so
17
- * that you can observe the latest & greatest value w/o waiting for `em.flush` to
18
- * re-calc the value while persisting to the database.
19
- */
20
- export interface ReactiveField<T extends Entity, V> {
21
- [AsyncPropertyT]: T;
22
- isLoaded: boolean;
23
- isSet: boolean;
24
- /**
25
- * Calculates the latest derived value.
26
- *
27
- * Users are not required to call this method explicitly, as Joist will keep the
28
- * persisted value automatically in-sync, but if for some reason (code changes,
29
- * bug fixes, etc.) you need to trigger an explicit recalc, you can call `.load()`,
30
- * any dependent data will be loaded from the database, and the latest value
31
- * returned, and then later stored to the database on `em.flush`.
32
- *
33
- * Note that persisted properties used in load hints, i.e. `em.populate`s that
34
- * accidentally list reactive fields (instead of just relations) will not have
35
- * `.load()` invoked, and will instead use the previously-calculated value.
36
- * The rationale is that one persisted property should be able to declare its
37
- * dependency on another persisted property (for its reactive field-level hint)
38
- * without causing that dependent property's populate hint to itself be loaded.
39
- */
40
- load(opts?: {
41
- forceReload?: boolean;
42
- }): Promise<V>;
43
- /** If loaded, returns the latest derived value, or if unload returns the previously-calculated value. */
44
- get: V;
45
- /**
46
- * Returns the as-of-last-flush previously-calculated value.
47
- *
48
- * This is useful if you have to purposefully avoid using the lambda to calc the latest value,
49
- * i.e. if you're in a test and want to watch a calculated value change from some dummy value
50
- * to the new derived value.
51
- * */
52
- fieldValue: V;
53
- }
54
- /**
55
- * Creates a calculated derived value from a load hint + lambda.
56
- *
57
- * The property can be accessed by default as a promise, with `someProperty.load()`.
58
- *
59
- * But if `someProperty` is used as a populate hint, then it can be accessed synchronously,
60
- * with `someProperty.get`.
61
- */
62
- export declare function hasReactiveField<T extends Entity, const H extends ReactiveHint<T>, V>(hint: H, fn: (entity: Reacted<T, H>) => V): ReactiveField<T, V>;
63
- export declare class ReactiveFieldImpl<T extends Entity, H extends ReactiveHint<T>, V> extends AbstractPropertyImpl<T> implements ReactiveField<T, V>, IsLoadedCachable {
64
- #private;
65
- private fn;
66
- constructor(entity: T, field: PrimitiveField, reactiveHint: H, fn: (entity: Reacted<T, H>) => V);
67
- load(opts?: {
68
- forceReload?: boolean;
69
- }): Promise<V>;
70
- /** Returns either the latest calculated value (if loaded) or the previously-calculated value (if not loaded). */
71
- get get(): V;
72
- get fieldName(): keyof T & string;
73
- get reactiveHint(): H;
74
- get fieldValue(): V;
75
- get isSet(): boolean;
76
- get isLoaded(): boolean;
77
- resetIsLoaded(): void;
78
- get loadHint(): any;
79
- setFactoryValue(newValue: any): void;
80
- [AsyncPropertyT]: T;
81
- private resetCacheUnlessFactoryPinned;
82
- }
83
- /** Type guard utility for determining if an entity field is an AsyncProperty. */
84
- export declare function isReactiveField(maybeAsyncProperty: any): maybeAsyncProperty is ReactiveField<any, any>;
85
- /** Type guard utility for determining if an entity field is a loaded AsyncProperty. */
86
- export declare function isLoadedAsyncProperty(maybeAsyncProperty: any): maybeAsyncProperty is ReactiveField<any, any>;
87
- //# sourceMappingURL=ReactiveField.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReactiveField.d.ts","sourceRoot":"","sources":["../../src/relations/ReactiveField.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAe,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAqB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC;IAChD,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IAEf;;;;;;;;;;;;;;;OAeG;IACH,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEnD,yGAAyG;IACzG,GAAG,EAAE,CAAC,CAAC;IAEP;;;;;;SAMK;IACL,UAAU,EAAE,CAAC,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EACnF,IAAI,EAAE,CAAC,EACP,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAC/B,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAKrB;AAED,qBAAa,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAC3E,SAAQ,oBAAoB,CAAC,CAAC,CAC9B,YAAW,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB;;IAa9C,OAAO,CAAC,EAAE;gBAHV,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,cAAc,EACrB,YAAY,EAAE,CAAC,EACP,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;IAOpC,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IA2BxD,iHAAiH;IACjH,IAAI,GAAG,IAAI,CAAC,CAwBX;IAED,IAAI,SAAS,IAAI,MAAM,CAAC,GAAG,MAAM,CAEhC;IAED,IAAI,YAAY,IAAI,CAAC,CAEpB;IAED,IAAI,UAAU,IAAI,CAAC,CAElB;IAED,IAAI,KAAK,YAER;IAED,IAAI,QAAQ,YAMX;IAED,aAAa,IAAI,IAAI;IAOrB,IAAI,QAAQ,IAAI,GAAG,CAGlB;IAED,eAAe,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI;IAKpC,CAAC,cAAc,CAAC,EAAuB,CAAC,CAAC;IAEzC,OAAO,CAAC,6BAA6B;CAKtC;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,kBAAkB,EAAE,GAAG,GAAG,kBAAkB,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAEtG;AAED,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,kBAAkB,EAAE,GAAG,GAAG,kBAAkB,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAE5G"}
@@ -1,149 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ReactiveFieldImpl = void 0;
4
- exports.hasReactiveField = hasReactiveField;
5
- exports.isReactiveField = isReactiveField;
6
- exports.isLoadedAsyncProperty = isLoadedAsyncProperty;
7
- const EntityManager_1 = require("../EntityManager");
8
- const EntityMetadata_1 = require("../EntityMetadata");
9
- const fields_1 = require("../fields");
10
- const index_1 = require("../index");
11
- const newEntity_1 = require("../newEntity");
12
- const reactiveHints_1 = require("../reactiveHints");
13
- const AbstractPropertyImpl_1 = require("./AbstractPropertyImpl");
14
- const hasAsyncProperty_1 = require("./hasAsyncProperty");
15
- /**
16
- * Creates a calculated derived value from a load hint + lambda.
17
- *
18
- * The property can be accessed by default as a promise, with `someProperty.load()`.
19
- *
20
- * But if `someProperty` is used as a populate hint, then it can be accessed synchronously,
21
- * with `someProperty.get`.
22
- */
23
- function hasReactiveField(hint, fn) {
24
- return (0, newEntity_1.lazyField)((entity, fieldName) => {
25
- const field = (0, EntityMetadata_1.getMetadata)(entity).allFields[fieldName];
26
- return new ReactiveFieldImpl(entity, field, hint, fn);
27
- });
28
- }
29
- class ReactiveFieldImpl extends AbstractPropertyImpl_1.AbstractPropertyImpl {
30
- fn;
31
- #field;
32
- #reactiveHint;
33
- #loadPromise;
34
- // Initially undefined, then cached as true/false
35
- #isLoaded;
36
- #isCached = false;
37
- constructor(entity, field, reactiveHint, fn) {
38
- super(entity);
39
- this.fn = fn;
40
- this.#field = field;
41
- this.#reactiveHint = reactiveHint;
42
- }
43
- async load(opts) {
44
- // Even without `forceReload=true`, any explicit calls to `.load()` ==> ensure a fresh value,
45
- // because `.get` may have cached the stale/previously-calculated value.
46
- //
47
- // (Currently `em.populate` / `populateDataLoader` has a hack/escape hatch that ignores calling
48
- // RF.load(), to avoid pulling in the RF subgraph over using the materialized value, which ideally would be
49
- // replaced with us learning to do the maybeDirty approach.)
50
- if (!this.isLoaded || opts?.forceReload) {
51
- return (this.#loadPromise ??= this.entity.em.populate(this.entity, { hint: this.loadHint }).then(() => {
52
- this.#loadPromise = undefined;
53
- this.#isLoaded = true;
54
- (0, EntityManager_1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
55
- // Wait and reset `#isCached` until inside this `then`, so that we don't have a race condition where:
56
- // - two relations (us and someone else) are both passed to `em.calc`
57
- // - their load hint is simpler, so their promises resolves first, and their `.get` calls our `.get`
58
- // - our `.get` sees we're not loaded, but calls `fieldValue` for the existing value, and dutifully sets `#isCached=true`
59
- // - finally our promise runs, and if we didn't immediately set `#isCached=false` here, our `.get` would again
60
- // early return and keep using the stale fieldValue.
61
- this.resetCacheUnlessFactoryPinned();
62
- // Go through `this.get` so that `setField` is called to set our latest value
63
- return this.get;
64
- }));
65
- }
66
- this.resetCacheUnlessFactoryPinned();
67
- return this.get;
68
- }
69
- /** Returns either the latest calculated value (if loaded) or the previously-calculated value (if not loaded). */
70
- get get() {
71
- const { fn } = this;
72
- // Some ReactiveFields can have surprisingly expensive calculations, especially in loops
73
- // or those that invoke loops, so cache the value.
74
- if (this.#isCached)
75
- return this.fieldValue;
76
- // isLoaded will watch for our previously-loaded subgraph being mutated (isLoaded is locally cached but hooked into
77
- // our IsLoadedCache cache that is immediately invalidated on write-path), and if we've drifted to not-loaded, it's
78
- // better to fail and tell the user.
79
- if (this.isLoaded) {
80
- const newValue = fn(this.entity);
81
- if (!(0, EntityManager_1.getEmInternalApi)(this.entity.em).isValidating) {
82
- // setField will immediately invalidate downstream #isLoaded/#isCached values
83
- (0, fields_1.setField)(this.entity, this.fieldName, newValue);
84
- this.#isCached = true;
85
- (0, EntityManager_1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
86
- }
87
- return newValue;
88
- }
89
- else if (this.isSet) {
90
- this.#isCached = true;
91
- (0, EntityManager_1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
92
- return this.fieldValue;
93
- }
94
- else {
95
- throw new Error(`${this.fieldName} has not been derived yet`);
96
- }
97
- }
98
- get fieldName() {
99
- return this.#field.fieldName;
100
- }
101
- get reactiveHint() {
102
- return this.#reactiveHint;
103
- }
104
- get fieldValue() {
105
- return (0, fields_1.getField)(this.entity, this.fieldName);
106
- }
107
- get isSet() {
108
- return (0, fields_1.isFieldSet)(this.entity, this.fieldName);
109
- }
110
- get isLoaded() {
111
- // Skip an expensive isLoaded(subgraph) call if no mutations have happened
112
- if (this.#isLoaded !== undefined)
113
- return this.#isLoaded;
114
- this.#isLoaded = (0, index_1.isLoaded)(this.entity, this.loadHint);
115
- (0, EntityManager_1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
116
- return this.#isLoaded;
117
- }
118
- resetIsLoaded() {
119
- // Even though we reset this on every mutation, `isLoaded` will still realize when the subgraph
120
- // is still loaded (as it did before we added caching), so users won't see false positive.
121
- this.#isLoaded = undefined;
122
- this.resetCacheUnlessFactoryPinned();
123
- }
124
- get loadHint() {
125
- const meta = (0, EntityMetadata_1.getMetadata)(this.entity);
126
- return (meta.config.__data.cachedReactiveLoadHints[this.fieldName] ??= (0, reactiveHints_1.convertToLoadHint)(meta, this.reactiveHint));
127
- }
128
- setFactoryValue(newValue) {
129
- (0, fields_1.setField)(this.entity, this.fieldName, newValue);
130
- this.#isCached = "factory-value";
131
- }
132
- [hasAsyncProperty_1.AsyncPropertyT] = undefined;
133
- resetCacheUnlessFactoryPinned() {
134
- // If factories asked for a hard-coded value, don't reset the cached flag
135
- if (this.#isCached === "factory-value")
136
- return;
137
- this.#isCached = false;
138
- }
139
- }
140
- exports.ReactiveFieldImpl = ReactiveFieldImpl;
141
- /** Type guard utility for determining if an entity field is an AsyncProperty. */
142
- function isReactiveField(maybeAsyncProperty) {
143
- return maybeAsyncProperty instanceof ReactiveFieldImpl;
144
- }
145
- /** Type guard utility for determining if an entity field is a loaded AsyncProperty. */
146
- function isLoadedAsyncProperty(maybeAsyncProperty) {
147
- return isReactiveField(maybeAsyncProperty) && maybeAsyncProperty.isLoaded;
148
- }
149
- //# sourceMappingURL=ReactiveField.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReactiveField.js","sourceRoot":"","sources":["../../src/relations/ReactiveField.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- import { Entity } from "../Entity";
2
- import { Reacted, ShallowReactiveHint } from "../reactiveHints";
3
- import { AsyncPropertyT } from "./hasAsyncProperty";
4
- /**
5
- * A `ReactiveGetter` is a getter that declares what primitive fields it depends on.
6
- *
7
- * This is very similar to a `ReactiveAsyncProperty`, except because it's limited to
8
- * only immediate fields on the entity, it can always have `.get` called, and doesn't
9
- * need to be loaded.
10
- *
11
- * The benefit over a pure getter is that `ReactiveGetter` can be used in reactive
12
- * rules and reactive fields, which would otherwise need to use `fullNonReactiveAccess`
13
- * to access getter, and risk missing reactivity.
14
- */
15
- export interface ReactiveGetter<T extends Entity, V> {
16
- [AsyncPropertyT]: T;
17
- get: V;
18
- }
19
- /** Creates a `ReactiveGetter`, for simple "getters" that still trackable for reactivity. */
20
- export declare function hasReactiveGetter<T extends Entity, const H extends ShallowReactiveHint<T>, V>(fieldName: keyof T & string, hint: H, fn: (entity: Reacted<T, H>) => V): ReactiveGetter<T, V>;
21
- export declare class ReactiveGetterImpl<T extends Entity, const H extends ShallowReactiveHint<T>, V> implements ReactiveGetter<T, V> {
22
- #private;
23
- constructor(entity: T, fieldName: keyof T & string, hint: H, fn: (entity: Reacted<T, H>) => V);
24
- get get(): V;
25
- get reactiveHint(): H;
26
- [AsyncPropertyT]: T;
27
- }
28
- /** Type guard utility for determining if an entity field is an AsyncProperty. */
29
- export declare function isReactiveGetter(maybeReactiveGetter: any): maybeReactiveGetter is ReactiveGetter<any, any>;
30
- //# sourceMappingURL=ReactiveGetter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReactiveGetter.d.ts","sourceRoot":"","sources":["../../src/relations/ReactiveGetter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC;IACjD,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACpB,GAAG,EAAE,CAAC,CAAC;CACR;AAED,4FAA4F;AAC5F,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,EAC3F,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAC3B,IAAI,EAAE,CAAC,EACP,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAC/B,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAItB;AAED,qBAAa,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CACzF,YAAW,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;;gBAOnB,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;IAO7F,IAAI,GAAG,IAAI,CAAC,CAEX;IAED,IAAI,YAAY,IAAI,CAAC,CAEpB;IAED,CAAC,cAAc,CAAC,EAAuB,CAAC,CAAC;CAC1C;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,mBAAmB,EAAE,GAAG,GAAG,mBAAmB,IAAI,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAE1G"}
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ReactiveGetterImpl = void 0;
4
- exports.hasReactiveGetter = hasReactiveGetter;
5
- exports.isReactiveGetter = isReactiveGetter;
6
- const newEntity_1 = require("../newEntity");
7
- const hasAsyncProperty_1 = require("./hasAsyncProperty");
8
- /** Creates a `ReactiveGetter`, for simple "getters" that still trackable for reactivity. */
9
- function hasReactiveGetter(fieldName, hint, fn) {
10
- return (0, newEntity_1.lazyField)((entity, fieldName) => {
11
- return new ReactiveGetterImpl(entity, fieldName, hint, fn);
12
- });
13
- }
14
- class ReactiveGetterImpl {
15
- #entity;
16
- #fieldName;
17
- #hint;
18
- #fn;
19
- constructor(entity, fieldName, hint, fn) {
20
- this.#entity = entity;
21
- this.#fieldName = fieldName;
22
- this.#hint = hint;
23
- this.#fn = fn;
24
- }
25
- get get() {
26
- return this.#fn(this.#entity);
27
- }
28
- get reactiveHint() {
29
- return this.#hint;
30
- }
31
- [hasAsyncProperty_1.AsyncPropertyT] = undefined;
32
- }
33
- exports.ReactiveGetterImpl = ReactiveGetterImpl;
34
- /** Type guard utility for determining if an entity field is an AsyncProperty. */
35
- function isReactiveGetter(maybeReactiveGetter) {
36
- return maybeReactiveGetter instanceof ReactiveGetterImpl;
37
- }
38
- //# sourceMappingURL=ReactiveGetter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReactiveGetter.js","sourceRoot":"","sources":["../../src/relations/ReactiveGetter.ts"],"names":[],"mappings":";;;AAsBA,8CAQC;AA6BD,4CAEC;AA5DD,4CAAyC;AAEzC,yDAAoD;AAkBpD,4FAA4F;AAC5F,SAAgB,iBAAiB,CAC/B,SAA2B,EAC3B,IAAO,EACP,EAAgC;IAEhC,OAAO,IAAA,qBAAS,EAAC,CAAC,MAAS,EAAE,SAAS,EAAE,EAAE;QACxC,OAAO,IAAI,kBAAkB,CAAC,MAAM,EAAE,SAA6B,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAa,kBAAkB;IAGpB,OAAO,CAAI;IACX,UAAU,CAAmB;IAC7B,KAAK,CAAI;IACT,GAAG,CAA+B;IAE3C,YAAY,MAAS,EAAE,SAA2B,EAAE,IAAO,EAAE,EAAgC;QAC3F,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAc,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,CAAC,iCAAc,CAAC,GAAG,SAAqB,CAAC;CAC1C;AAxBD,gDAwBC;AAED,iFAAiF;AACjF,SAAgB,gBAAgB,CAAC,mBAAwB;IACvD,OAAO,mBAAmB,YAAY,kBAAkB,CAAC;AAC3D,CAAC"}
@@ -1,56 +0,0 @@
1
- import { Entity, EntityMetadata, ManyToManyField, ReadOnlyCollection } from "..";
2
- import { IsLoadedCachable } from "../IsLoadedCache";
3
- import { MaybeReactedEntity, Reacted, ReactiveHint } from "../reactiveHints";
4
- import { AbstractRelationImpl } from "./AbstractRelationImpl";
5
- import { RelationT, RelationU } from "./Relation";
6
- /**
7
- * A reactive, derived many-to-many collection.
8
- *
9
- * Similar to `ReactiveReference` but for collections--membership is calculated from a reactive
10
- * function and persisted to the underlying join table.
11
- */
12
- export interface ReactiveManyToMany<T extends Entity, U extends Entity> extends ReadOnlyCollection<T, U> {
13
- load(opts?: {
14
- withDeleted?: boolean;
15
- forceReload?: boolean;
16
- }): Promise<readonly U[]>;
17
- }
18
- /** Creates a `ReactiveManyToMany`. */
19
- export declare function hasReactiveManyToMany<T extends Entity, U extends Entity, const H extends ReactiveHint<T>>(hint: H, fn: (entity: Reacted<T, H>) => readonly MaybeReactedEntity<U>[]): ReactiveManyToMany<T, U>;
20
- /** Implements ReactiveManyToMany, initially a copy/paste of ReactiveReference but for m2m. */
21
- export declare class ReactiveManyToManyImpl<T extends Entity, U extends Entity, H extends ReactiveHint<T>> extends AbstractRelationImpl<T, U[]> implements ReactiveManyToMany<T, U>, IsLoadedCachable {
22
- #private;
23
- reactiveHint: H;
24
- private fn;
25
- constructor(entity: T, field: ManyToManyField, reactiveHint: H, fn: (entity: Reacted<T, H>) => readonly MaybeReactedEntity<U>[]);
26
- load(opts?: {
27
- withDeleted?: boolean;
28
- forceReload?: boolean;
29
- }): Promise<ReadonlyArray<U>>;
30
- get isLoaded(): boolean;
31
- resetIsLoaded(): void;
32
- get getWithDeleted(): U[];
33
- get get(): U[];
34
- set(): void;
35
- get loadHint(): any;
36
- setFromOpts(_others: U[]): void;
37
- maybeCascadeDelete(): void;
38
- cleanupOnEntityDeleted(): Promise<void>;
39
- get meta(): EntityMetadata;
40
- get fieldName(): string;
41
- get otherMeta(): EntityMetadata;
42
- get joinTableName(): string;
43
- get columnName(): string;
44
- get otherColumnName(): string;
45
- get otherFieldName(): string;
46
- get hasBeenSet(): boolean;
47
- get isPreloaded(): boolean;
48
- preload(): void;
49
- import(other: ReactiveManyToManyImpl<T, U, H>, _: unknown, mapEntities: (e: U[] | undefined) => U[] | undefined): void;
50
- toString(): string;
51
- [RelationT]: T;
52
- [RelationU]: U;
53
- }
54
- /** Type guard utility for determining if an entity field is a ReactiveManyToMany. */
55
- export declare function isReactiveManyToMany(maybeReactiveManyToMany: any): maybeReactiveManyToMany is ReactiveManyToMany<any, any>;
56
- //# sourceMappingURL=ReactiveManyToMany.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReactiveManyToMany.d.ts","sourceRoot":"","sources":["../../src/relations/ReactiveManyToMany.ts"],"names":[],"mappings":"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"}
@@ -1,243 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ReactiveManyToManyImpl = void 0;
4
- exports.hasReactiveManyToMany = hasReactiveManyToMany;
5
- exports.isReactiveManyToMany = isReactiveManyToMany;
6
- const __1 = require("..");
7
- const manyToManyDataLoader_1 = require("../dataloaders/manyToManyDataLoader");
8
- const newEntity_1 = require("../newEntity");
9
- const reactiveHints_1 = require("../reactiveHints");
10
- const AbstractRelationImpl_1 = require("./AbstractRelationImpl");
11
- const Relation_1 = require("./Relation");
12
- /** Creates a `ReactiveManyToMany`. */
13
- function hasReactiveManyToMany(hint, fn) {
14
- return (0, newEntity_1.lazyField)((entity, fieldName) => {
15
- const m2m = (0, __1.getMetadata)(entity).allFields[fieldName];
16
- return new ReactiveManyToManyImpl(entity, m2m, hint, fn);
17
- });
18
- }
19
- /** Implements ReactiveManyToMany, initially a copy/paste of ReactiveReference but for m2m. */
20
- class ReactiveManyToManyImpl extends AbstractRelationImpl_1.AbstractRelationImpl {
21
- reactiveHint;
22
- fn;
23
- #field;
24
- // Could be either the ref-loaded stored array, or full-loaded calculated array
25
- #loaded;
26
- // In ref-mode, we use our materialized FK value (which might be undefined)
27
- // If full-mode, we calculate the FK value from the subgraph
28
- #loadedMode = undefined;
29
- // #isLoaded doesn't necessary care if we're ref-mode or full-mode, it's just
30
- // whether a caller can call `.get` and not have it blow up.
31
- #isLoaded = undefined;
32
- #isCached = false;
33
- #loadPromise;
34
- constructor(entity, field, reactiveHint, fn) {
35
- super(entity);
36
- this.reactiveHint = reactiveHint;
37
- this.fn = fn;
38
- this.#field = field;
39
- (0, __1.getInstanceData)(entity).relations[this.fieldName] = this;
40
- }
41
- async load(opts) {
42
- (0, __1.ensureNotDeleted)(this.entity, "pending");
43
- const { loadHint } = this;
44
- if (!this.isLoaded || opts?.forceReload) {
45
- const { em } = this.entity;
46
- const maybeDirty = opts?.forceReload || (0, __1.getEmInternalApi)(em).rm.isMaybePendingRecalc(this.entity, this.fieldName);
47
- if (maybeDirty) {
48
- this.#isCached = false;
49
- return (this.#loadPromise ??= em.populate(this.entity, { hint: loadHint, ...opts }).then(() => {
50
- this.#loadPromise = undefined;
51
- this.#loadedMode = "full";
52
- this.#isLoaded = true;
53
- (0, __1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
54
- return this.#doGet(opts);
55
- }));
56
- }
57
- else {
58
- // Load from join table (existing materialized state)
59
- return (this.#loadPromise ??= this.#loadFromJoinTable().then((loaded) => {
60
- this.#loadPromise = undefined;
61
- this.#loadedMode = "ref";
62
- this.#isLoaded = true;
63
- this.#loaded = loaded;
64
- (0, __1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
65
- return this.#filterDeleted(loaded, opts);
66
- }));
67
- }
68
- }
69
- return this.#doGet(opts);
70
- }
71
- get isLoaded() {
72
- if (this.#isLoaded !== undefined)
73
- return this.#isLoaded;
74
- (0, __1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
75
- // If a WIP mutation has marked our field as potentially dirty, we need to be "full" loaded
76
- const maybeDirty = (0, __1.getEmInternalApi)(this.entity.em).rm.isMaybePendingRecalc(this.entity, this.fieldName);
77
- if (maybeDirty) {
78
- // If we're dirty, only being "full" loaded is good enough to recalc
79
- this.#loadedMode = "full";
80
- this.#isLoaded = (0, __1.isLoaded)(this.entity, this.loadHint);
81
- this.#isCached = false;
82
- }
83
- else {
84
- // If we've had `.load` called before, assume we're still loaded
85
- this.#isLoaded = !!this.#loadedMode;
86
- }
87
- return this.#isLoaded;
88
- }
89
- resetIsLoaded() {
90
- this.#isLoaded = undefined;
91
- this.#isCached = false;
92
- }
93
- #doGet(opts) {
94
- const { fn } = this;
95
- (0, __1.ensureNotDeleted)(this.entity, "pending");
96
- // Fast pass if we've already calculated this (cache invalidation will happen on
97
- // any mutation via #resetIsLoaded)..
98
- if (this.#isCached) {
99
- return this.#filterDeleted(this.#loaded ?? [], opts);
100
- }
101
- // Call isLoaded to probe the load hint, and get `#isLoaded` set, but still have
102
- // our `if` check the raw `#isLoaded` to know if we should eval-latest or return `loaded`.
103
- if (this.isLoaded && this.#loadedMode === "full") {
104
- const newValue = fn(this.entity);
105
- // Preserve deleted entities that were in the previous loaded value
106
- const previousDeleted = (this.#loaded ?? []).filter((e) => e.isDeletedEntity);
107
- for (const entity of previousDeleted) {
108
- if (!newValue.includes(entity))
109
- newValue.push(entity);
110
- }
111
- if (!(0, __1.getEmInternalApi)(this.entity.em).isValidating) {
112
- this.#syncJoinTableRows(newValue);
113
- }
114
- this.#loaded = newValue;
115
- this.#isCached = true;
116
- (0, __1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
117
- }
118
- else if (!!this.#loadedMode) {
119
- // We're either loadedMode=ref, or loadedMode=full (but not actually fully loaded),
120
- // but in theory loadedMode only gets set in `.load()`, so we should have #loaded
121
- // set to some value, even if it's not fully up-to-date.
122
- this.#isCached = true;
123
- (0, __1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
124
- }
125
- else {
126
- const noun = this.entity.isNewEntity ? "derived" : "loaded";
127
- throw new Error(`${this.entity}.${this.fieldName} has not been ${noun} yet`);
128
- }
129
- return this.#filterDeleted(this.#loaded ?? [], opts);
130
- }
131
- get getWithDeleted() {
132
- return this.#doGet({ withDeleted: true });
133
- }
134
- get get() {
135
- return this.#doGet({ withDeleted: false });
136
- }
137
- set() {
138
- (0, __1.fail)(`Cannot set ${this.entity}.${this.fieldName} ReactiveManyToMany directly.`);
139
- }
140
- get loadHint() {
141
- const meta = (0, __1.getMetadata)(this.entity);
142
- return (meta.config.__data.cachedReactiveLoadHints[this.fieldName] ??= (0, reactiveHints_1.convertToLoadHint)(meta, this.reactiveHint));
143
- }
144
- setFromOpts(_others) {
145
- throw new Error(`ReactiveManyToMany ${this.entity}.${this.fieldName} cannot be set via opts`);
146
- }
147
- maybeCascadeDelete() {
148
- if (this.#isCascadeDelete) {
149
- const jr = (0, __1.getEmInternalApi)(this.entity.em).joinRows(this);
150
- jr.getOthers(this.columnName, this.entity).forEach((e) => this.entity.em.delete(e));
151
- }
152
- }
153
- async cleanupOnEntityDeleted() {
154
- const existing = await this.load({ withDeleted: true });
155
- const jr = (0, __1.getEmInternalApi)(this.entity.em).joinRows(this);
156
- for (const entity of existing)
157
- jr.addRemove(this, this.entity, entity);
158
- this.#loaded = [];
159
- this.#isLoaded = false;
160
- }
161
- // Properties needed for JoinRows/ManyToManyCollection compatibility
162
- get meta() {
163
- return (0, __1.getMetadata)(this.entity);
164
- }
165
- get fieldName() {
166
- return this.#field.fieldName;
167
- }
168
- get otherMeta() {
169
- return this.#field.otherMetadata();
170
- }
171
- get joinTableName() {
172
- return this.#field.joinTableName;
173
- }
174
- get columnName() {
175
- return this.#field.columnNames[0];
176
- }
177
- get otherColumnName() {
178
- return this.#field.columnNames[1];
179
- }
180
- get otherFieldName() {
181
- return this.#field.otherFieldName;
182
- }
183
- get hasBeenSet() {
184
- return true;
185
- }
186
- get isPreloaded() {
187
- return false;
188
- }
189
- preload() {
190
- // No-op for now - could implement if needed
191
- }
192
- import(other, _, mapEntities) {
193
- this.#loaded = mapEntities(other.#loaded);
194
- this.#loadedMode = other.#loadedMode;
195
- this.#isLoaded = other.#isLoaded ?? false;
196
- // Don't set `#isCached b/c we're not registering ourselves with `isLoadedCache` yet; let
197
- // the first caller to `#doGet` do that if needed.
198
- }
199
- toString() {
200
- return `ReactiveManyToMany(entity: ${this.entity}, fieldName: ${this.fieldName}, otherMeta: ${this.otherMeta.type})`;
201
- }
202
- get #isCascadeDelete() {
203
- return (0, AbstractRelationImpl_1.isCascadeDelete)(this, this.#field.fieldName);
204
- }
205
- async #loadFromJoinTable() {
206
- const { em } = this.entity;
207
- // Use the existing m2m dataloader by creating a compatible collection-like object
208
- const key = `${this.columnName}=${this.entity.id}`;
209
- const result = await (0, manyToManyDataLoader_1.manyToManyDataLoader)(em, this).load(key);
210
- return result;
211
- }
212
- // This is like calling `setField` but for a m2m relation...
213
- #syncJoinTableRows(newValue) {
214
- const jr = (0, __1.getEmInternalApi)(this.entity.em).joinRows(this);
215
- const newSet = new Set(newValue);
216
- const oldSet = new Set(jr.getOthers(this.columnName, this.entity));
217
- // Find entities to add (in new but not in old)
218
- for (const entity of newValue) {
219
- if (!oldSet.has(entity)) {
220
- jr.addNew(this, this.entity, entity);
221
- }
222
- }
223
- // Find entities to remove (in old but not in new)
224
- for (const entity of oldSet) {
225
- if (!newSet.has(entity)) {
226
- jr.addRemove(this, this.entity, entity);
227
- }
228
- }
229
- }
230
- #filterDeleted(entities, opts) {
231
- return opts?.withDeleted === true
232
- ? [...entities]
233
- : entities.filter((e) => !e.isDeletedEntity && !e.isSoftDeletedEntity);
234
- }
235
- [Relation_1.RelationT] = null;
236
- [Relation_1.RelationU] = null;
237
- }
238
- exports.ReactiveManyToManyImpl = ReactiveManyToManyImpl;
239
- /** Type guard utility for determining if an entity field is a ReactiveManyToMany. */
240
- function isReactiveManyToMany(maybeReactiveManyToMany) {
241
- return maybeReactiveManyToMany instanceof ReactiveManyToManyImpl;
242
- }
243
- //# sourceMappingURL=ReactiveManyToMany.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReactiveManyToMany.js","sourceRoot":"","sources":["../../src/relations/ReactiveManyToMany.ts"],"names":[],"mappings":"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"}