joist-core 2.0.3 → 2.1.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/build/AliasAssigner.d.ts +3 -0
  2. package/build/AliasAssigner.d.ts.map +1 -1
  3. package/build/AliasAssigner.js +12 -3
  4. package/build/AliasAssigner.js.map +1 -1
  5. package/build/EntityGraphQLFilter.d.ts.map +1 -1
  6. package/build/EntityGraphQLFilter.js +1 -2
  7. package/build/EntityGraphQLFilter.js.map +1 -1
  8. package/build/EntityManager.d.ts +25 -10
  9. package/build/EntityManager.d.ts.map +1 -1
  10. package/build/EntityManager.js +242 -159
  11. package/build/EntityManager.js.map +1 -1
  12. package/build/IndexManager.d.ts +1 -0
  13. package/build/IndexManager.d.ts.map +1 -1
  14. package/build/IndexManager.js +6 -3
  15. package/build/IndexManager.js.map +1 -1
  16. package/build/JoinRows.d.ts.map +1 -1
  17. package/build/JoinRows.js +1 -2
  18. package/build/JoinRows.js.map +1 -1
  19. package/build/PendingChanges.d.ts +26 -0
  20. package/build/PendingChanges.d.ts.map +1 -0
  21. package/build/PendingChanges.js +3 -0
  22. package/build/PendingChanges.js.map +1 -0
  23. package/build/ReactionsManager.d.ts +1 -1
  24. package/build/ReactionsManager.d.ts.map +1 -1
  25. package/build/ReactionsManager.js +8 -5
  26. package/build/ReactionsManager.js.map +1 -1
  27. package/build/batchloaders/BatchLoader.d.ts +14 -0
  28. package/build/batchloaders/BatchLoader.d.ts.map +1 -0
  29. package/build/batchloaders/BatchLoader.js +49 -0
  30. package/build/batchloaders/BatchLoader.js.map +1 -0
  31. package/build/batchloaders/loadBatchLoader.d.ts +17 -0
  32. package/build/batchloaders/loadBatchLoader.d.ts.map +1 -0
  33. package/build/batchloaders/loadBatchLoader.js +57 -0
  34. package/build/batchloaders/loadBatchLoader.js.map +1 -0
  35. package/build/batchloaders/manyToManyBatchLoader.d.ts +7 -0
  36. package/build/batchloaders/manyToManyBatchLoader.d.ts.map +1 -0
  37. package/build/batchloaders/manyToManyBatchLoader.js +59 -0
  38. package/build/batchloaders/manyToManyBatchLoader.js.map +1 -0
  39. package/build/batchloaders/oneToManyBatchLoader.d.ts +7 -0
  40. package/build/batchloaders/oneToManyBatchLoader.d.ts.map +1 -0
  41. package/build/{dataloaders/oneToManyDataLoader.js → batchloaders/oneToManyBatchLoader.js} +11 -18
  42. package/build/batchloaders/oneToManyBatchLoader.js.map +1 -0
  43. package/build/batchloaders/oneToOneBatchLoader.d.ts +7 -0
  44. package/build/batchloaders/oneToOneBatchLoader.d.ts.map +1 -0
  45. package/build/{dataloaders/oneToOneDataLoader.js → batchloaders/oneToOneBatchLoader.js} +12 -16
  46. package/build/batchloaders/oneToOneBatchLoader.js.map +1 -0
  47. package/build/{dataloaders/populateDataLoader.d.ts → batchloaders/populateBatchLoader.d.ts} +5 -5
  48. package/build/batchloaders/populateBatchLoader.d.ts.map +1 -0
  49. package/build/{dataloaders/populateDataLoader.js → batchloaders/populateBatchLoader.js} +97 -54
  50. package/build/batchloaders/populateBatchLoader.js.map +1 -0
  51. package/build/batchloaders/recursiveChildrenBatchLoader.d.ts +7 -0
  52. package/build/batchloaders/recursiveChildrenBatchLoader.d.ts.map +1 -0
  53. package/build/{dataloaders/recursiveChildrenDataLoader.js → batchloaders/recursiveChildrenBatchLoader.js} +6 -6
  54. package/build/batchloaders/recursiveChildrenBatchLoader.js.map +1 -0
  55. package/build/batchloaders/recursiveM2mBatchLoader.d.ts +7 -0
  56. package/build/batchloaders/recursiveM2mBatchLoader.d.ts.map +1 -0
  57. package/build/batchloaders/recursiveM2mBatchLoader.js +86 -0
  58. package/build/batchloaders/recursiveM2mBatchLoader.js.map +1 -0
  59. package/build/batchloaders/recursiveParentsBatchLoader.d.ts +7 -0
  60. package/build/batchloaders/recursiveParentsBatchLoader.d.ts.map +1 -0
  61. package/build/{dataloaders/recursiveParentsDataLoader.js → batchloaders/recursiveParentsBatchLoader.js} +6 -5
  62. package/build/batchloaders/recursiveParentsBatchLoader.js.map +1 -0
  63. package/build/changes.js +2 -2
  64. package/build/changes.js.map +1 -1
  65. package/build/config.d.ts +13 -0
  66. package/build/config.d.ts.map +1 -1
  67. package/build/config.js +26 -1
  68. package/build/config.js.map +1 -1
  69. package/build/dataloaders/findDataLoader.d.ts +1 -0
  70. package/build/dataloaders/findDataLoader.d.ts.map +1 -1
  71. package/build/dataloaders/findDataLoader.js +1 -0
  72. package/build/dataloaders/findDataLoader.js.map +1 -1
  73. package/build/dataloaders/findIdsDataLoader.d.ts.map +1 -1
  74. package/build/dataloaders/findIdsDataLoader.js +7 -5
  75. package/build/dataloaders/findIdsDataLoader.js.map +1 -1
  76. package/build/dataloaders/findOrCreateDataLoader.d.ts.map +1 -1
  77. package/build/dataloaders/findOrCreateDataLoader.js +3 -2
  78. package/build/dataloaders/findOrCreateDataLoader.js.map +1 -1
  79. package/build/index.d.ts +2 -1
  80. package/build/index.d.ts.map +1 -1
  81. package/build/index.js +4 -2
  82. package/build/index.js.map +1 -1
  83. package/build/logging/ReactionLogger.d.ts +8 -4
  84. package/build/logging/ReactionLogger.d.ts.map +1 -1
  85. package/build/logging/ReactionLogger.js +11 -4
  86. package/build/logging/ReactionLogger.js.map +1 -1
  87. package/build/newTestInstance.d.ts +15 -0
  88. package/build/newTestInstance.d.ts.map +1 -1
  89. package/build/newTestInstance.js +49 -6
  90. package/build/newTestInstance.js.map +1 -1
  91. package/build/preloading/JsonAggregatePreloader.js +29 -24
  92. package/build/preloading/JsonAggregatePreloader.js.map +1 -1
  93. package/build/reactiveHints.d.ts.map +1 -1
  94. package/build/reactiveHints.js +25 -0
  95. package/build/reactiveHints.js.map +1 -1
  96. package/build/relations/Collection.d.ts +6 -1
  97. package/build/relations/Collection.d.ts.map +1 -1
  98. package/build/relations/Collection.js.map +1 -1
  99. package/build/relations/ManyToManyCollection.d.ts +8 -1
  100. package/build/relations/ManyToManyCollection.d.ts.map +1 -1
  101. package/build/relations/ManyToManyCollection.js +338 -130
  102. package/build/relations/ManyToManyCollection.js.map +1 -1
  103. package/build/relations/ManyToOneReference.d.ts +2 -6
  104. package/build/relations/ManyToOneReference.d.ts.map +1 -1
  105. package/build/relations/ManyToOneReference.js +115 -78
  106. package/build/relations/ManyToOneReference.js.map +1 -1
  107. package/build/relations/OneToManyCollection.d.ts +8 -4
  108. package/build/relations/OneToManyCollection.d.ts.map +1 -1
  109. package/build/relations/OneToManyCollection.js +415 -173
  110. package/build/relations/OneToManyCollection.js.map +1 -1
  111. package/build/relations/OneToOneReference.d.ts.map +1 -1
  112. package/build/relations/OneToOneReference.js +12 -7
  113. package/build/relations/OneToOneReference.js.map +1 -1
  114. package/build/relations/ReactiveManyToMany.js +4 -4
  115. package/build/relations/ReactiveManyToMany.js.map +1 -1
  116. package/build/relations/ReactiveManyToManyOtherSide.js +3 -3
  117. package/build/relations/ReactiveManyToManyOtherSide.js.map +1 -1
  118. package/build/relations/ReadOnlyCollection.d.ts.map +1 -1
  119. package/build/relations/ReadOnlyCollection.js +2 -1
  120. package/build/relations/ReadOnlyCollection.js.map +1 -1
  121. package/build/relations/RecursiveCollection.d.ts +29 -1
  122. package/build/relations/RecursiveCollection.d.ts.map +1 -1
  123. package/build/relations/RecursiveCollection.js +160 -9
  124. package/build/relations/RecursiveCollection.js.map +1 -1
  125. package/build/relations/index.d.ts +1 -1
  126. package/build/relations/index.d.ts.map +1 -1
  127. package/build/relations/index.js +2 -1
  128. package/build/relations/index.js.map +1 -1
  129. package/package.json +2 -2
  130. package/build/dataloaders/loadDataLoader.d.ts +0 -11
  131. package/build/dataloaders/loadDataLoader.d.ts.map +0 -1
  132. package/build/dataloaders/loadDataLoader.js +0 -54
  133. package/build/dataloaders/loadDataLoader.js.map +0 -1
  134. package/build/dataloaders/manyToManyDataLoader.d.ts +0 -8
  135. package/build/dataloaders/manyToManyDataLoader.d.ts.map +0 -1
  136. package/build/dataloaders/manyToManyDataLoader.js +0 -74
  137. package/build/dataloaders/manyToManyDataLoader.js.map +0 -1
  138. package/build/dataloaders/oneToManyDataLoader.d.ts +0 -7
  139. package/build/dataloaders/oneToManyDataLoader.d.ts.map +0 -1
  140. package/build/dataloaders/oneToManyDataLoader.js.map +0 -1
  141. package/build/dataloaders/oneToOneDataLoader.d.ts +0 -7
  142. package/build/dataloaders/oneToOneDataLoader.d.ts.map +0 -1
  143. package/build/dataloaders/oneToOneDataLoader.js.map +0 -1
  144. package/build/dataloaders/populateDataLoader.d.ts.map +0 -1
  145. package/build/dataloaders/populateDataLoader.js.map +0 -1
  146. package/build/dataloaders/recursiveChildrenDataLoader.d.ts +0 -7
  147. package/build/dataloaders/recursiveChildrenDataLoader.d.ts.map +0 -1
  148. package/build/dataloaders/recursiveChildrenDataLoader.js.map +0 -1
  149. package/build/dataloaders/recursiveParentsDataLoader.d.ts +0 -7
  150. package/build/dataloaders/recursiveParentsDataLoader.d.ts.map +0 -1
  151. package/build/dataloaders/recursiveParentsDataLoader.js.map +0 -1
@@ -30,6 +30,7 @@ class ReactionsManager {
30
30
  dirtyFields = new Map();
31
31
  processedActions = new Set();
32
32
  #needsRecalc = { populate: false, query: false, reaction: false };
33
+ // Accessible for EntityManager.runValidation to reuse
33
34
  logger = ReactionLogger_1.globalLogger;
34
35
  em;
35
36
  /** These are NPEs that *might* have been from invalid m2o fields, so we only throw them after validation. */
@@ -78,6 +79,7 @@ class ReactionsManager {
78
79
  // thinks we can dequeue the reactable
79
80
  // - but actually our reactable needs to be re-run with the restored value
80
81
  pending.todo.add(entity);
82
+ this.#needsRecalc[r.kind] = true;
81
83
  }
82
84
  else if (r.fields.length === 1) {
83
85
  // We can only delete/dequeue a reaction if `fieldName` is the only or last field
@@ -157,7 +159,7 @@ class ReactionsManager {
157
159
  const entities = (await (0, reactiveHints_1.followReverseHint)(r.name, todo, r.path))
158
160
  .filter((entity) => !entity.isDeletedEntity)
159
161
  .filter((e) => e instanceof r.cstr);
160
- this.logger?.logWalked(todo, r, entities);
162
+ this.logger?.logWalked(todo, r, entities, "recalc");
161
163
  entities.forEach((entity) => {
162
164
  const key = `${entity.toTaggedString()}_${r.name}`;
163
165
  // We could arrive at the same reactable from multiple paths (eg, 2 dependent fields changed), so we need to
@@ -171,13 +173,13 @@ class ReactionsManager {
171
173
  });
172
174
  }));
173
175
  const actions = [...actionsMap.values()];
174
- this.logger?.logLoading(this.em, actions);
176
+ this.logger?.logLoadingStart(this.em, actions);
175
177
  // Use allSettled so that we can watch for derived values that want to use an entity's id
176
178
  // i.e. they can fail, but we'll queue them from later.
177
179
  const startTime = this.logger?.now() ?? 0;
178
180
  const results = await (0, trusted_1.runInTrustedContext)(() => Promise.allSettled(actions.map((a) => this.#doAction(a))));
179
181
  const endTime = this.logger?.now() ?? 0;
180
- this.logger?.logLoadingTime(this.em, endTime - startTime);
182
+ this.logger?.logLoadingEnd(this.em, endTime - startTime);
181
183
  const actionsPendingAssignedIds = new Map();
182
184
  const failures = [];
183
185
  results.forEach((result, i) => {
@@ -201,10 +203,11 @@ class ReactionsManager {
201
203
  if (actionsPendingAssignedIds.size > 0) {
202
204
  await this.em.assignNewIds();
203
205
  const actions = [...actionsPendingAssignedIds.values()];
206
+ this.logger?.logLoadingStart(this.em, actions);
204
207
  const startTime = this.logger?.now() ?? 0;
205
208
  const results = await (0, trusted_1.runInTrustedContext)(() => Promise.allSettled(actions.map((a) => this.#doAction(a))));
206
209
  const endTime = this.logger?.now() ?? 0;
207
- this.logger?.logLoadingTime(this.em, endTime - startTime);
210
+ this.logger?.logLoadingEnd(this.em, endTime - startTime);
208
211
  results.forEach((result, i) => {
209
212
  if (result.status === "rejected") {
210
213
  if (result.reason instanceof TypeError) {
@@ -238,7 +241,7 @@ class ReactionsManager {
238
241
  const startTime = this.logger?.now() ?? 0;
239
242
  const results = await (0, trusted_1.runInTrustedContext)(() => Promise.allSettled(actions.filter((a) => !a.entity.isDeletedEntity).map((a) => this.#doAction(a))));
240
243
  const endTime = this.logger?.now() ?? 0;
241
- this.logger?.logLoadingTime(this.em, endTime - startTime);
244
+ this.logger?.logLoadingEnd(this.em, endTime - startTime);
242
245
  const failures = [];
243
246
  results.forEach((result) => {
244
247
  if (result.status === "rejected") {
@@ -1 +1 @@
1
- {"version":3,"file":"ReactionsManager.js","sourceRoot":"","sources":["../src/ReactionsManager.ts"],"names":[],"mappings":";;;AACA,qDAA+D;AAC/D,qCAAyE;AAEzE,mCAAqE;AACrE,6DAAwE;AACxE,mDAAoD;AACpD,uCAAgD;AAGhD;;;;;;GAMG;AACH,MAAa,gBAAgB;IAC3B,iFAAiF;IACzE,iBAAiB,GAA6D,IAAI,GAAG,EAAE,CAAC;IACxF,wBAAwB,GAAgC,IAAI,GAAG,EAAE,CAAC;IAC1E;;;;;;;;OAQG;IACK,WAAW,GAA6B,IAAI,GAAG,EAAE,CAAC;IAClD,gBAAgB,GAAgB,IAAI,GAAG,EAAE,CAAC;IAClD,YAAY,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC1D,MAAM,GAA+B,6BAAY,CAAC;IAClD,EAAE,CAAgB;IAC1B,6GAA6G;IACrG,oBAAoB,GAAY,EAAE,CAAC;IAE3C,YAAY,EAAiB;QAC3B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACH,yBAAyB,CAAC,MAAc,EAAE,SAAiB;QACzD,qEAAqE;QACrE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,8FAA8F;gBAC9F,uCAAuC;gBACvC,0EAA0E;gBAC1E,mFAAmF;gBACnF,yEAAyE;gBACzE,mFAAmF;gBACnF,2EAA2E;gBAC3E,iEAAiE;gBACjE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACpC,IAAI,CAAC,cAAc,CAAC,IAAA,4BAAW,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACrD,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBACjC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,2BAA2B,CAAC,MAAc,EAAE,SAAiB;QAC3D,qEAAqE;QACrE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC7B,oFAAoF;oBACpF,6FAA6F;oBAC7F,2BAA2B;oBAC3B,4DAA4D;oBAC5D,8EAA8E;oBAC9E,wCAAwC;oBACxC,0EAA0E;oBAC1E,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC3B,CAAC;qBAAM,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjC,iFAAiF;oBACjF,gFAAgF;oBAChF,8EAA8E;oBAC9E,sCAAsC;oBACtC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,gGAAgG;IAChG,wBAAwB,CAAC,MAAc,EAAE,MAA6B;QACpE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,cAAc,CAAC,IAAA,4BAAW,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YACjC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACH,oBAAoB,CAAC,MAAc,EAAE,SAAiB;QACpD,OAAO,IAAI,CAAC,cAAc,CAAC,IAAA,4BAAW,EAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;IAED,yBAAyB;QACvB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,uBAAuB,CAAC,IAAsC;QAClE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAE1E,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,+FAA+F;YAC/F,yFAAyF;YACzF,wFAAwF;YACxF,6BAA6B;YAC7B,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC1B,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACnC,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,KAAK,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;YAClC,CAAC;YAED,MAAM,UAAU,GAAgC,IAAI,GAAG,EAAE,CAAC;YAE1D,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE;gBAC/D,yCAAyC;gBACzC,IAAI,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;oBAAE,OAAO,EAAE,CAAC;gBAC3D,IAAI,IAAI,KAAK,iBAAiB,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;oBAAE,OAAO,EAAE,CAAC;gBAC9F,4BAA4B;gBAC5B,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,EAAE,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACrB,KAAK,MAAM,KAAK,IAAI,IAAI;oBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAClD,uDAAuD;gBACvD,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAA,iCAAiB,EAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;qBAC7D,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC;qBAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC1C,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC1B,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;oBACnD,4GAA4G;oBAC5G,sGAAsG;oBACtG,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,OAAO;oBAChC,0EAA0E;oBAC1E,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,OAAO;oBACxD,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC1C,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CACH,CAAC;YAEF,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAC1C,yFAAyF;YACzF,uDAAuD;YACvD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,MAAM,IAAA,6BAAmB,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3G,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;YAE1D,MAAM,yBAAyB,GAAgC,IAAI,GAAG,EAAE,CAAC;YACzE,MAAM,QAAQ,GAAU,EAAE,CAAC;YAC3B,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC5B,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBACjC,mGAAmG;oBACnG,IAAI,MAAM,CAAC,MAAM,YAAY,iBAAS,EAAE,CAAC;wBACvC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;wBAC1B,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;oBACpD,CAAC;yBAAM,IAAI,MAAM,CAAC,MAAM,YAAY,SAAS,EAAE,CAAC;wBAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;wBAC1B,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;oBACxD,CAAC;yBAAM,CAAC;wBACN,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC/B,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,gHAAgH;YAChH,eAAe;YACf,IAAI,yBAAyB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,CAAC,GAAG,yBAAyB,CAAC,MAAM,EAAE,CAAC,CAAC;gBACxD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC1C,MAAM,OAAO,GAAG,MAAM,IAAA,6BAAmB,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3G,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBACxC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;gBAC1D,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC5B,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;wBACjC,IAAI,MAAM,CAAC,MAAM,YAAY,SAAS,EAAE,CAAC;4BACvC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;4BAC1B,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;wBACxD,CAAC;6BAAM,CAAC;4BACN,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBAC/B,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC3C,qFAAqF;YACrF,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE;gBAC7B,IAAI,CAAC,CAAC,OAAO;oBAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;YACH,sFAAsF;YACtF,qFAAqF;YACrF,+DAA+D;YAC/D,IAAI,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;QAEtC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,MAAM,IAAA,6BAAmB,EAAC,GAAG,EAAE,CAC7C,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CACnG,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;QAE1D,MAAM,QAAQ,GAAU,EAAE,CAAC;QAC3B,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACzB,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,IAAI,MAAM,CAAC,MAAM,YAAY,SAAS,EAAE,CAAC;oBACvC,8CAA8C;oBAC9C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,+EAA+E;IAC/E,KAAK;QACH,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,SAAS,CAAC,MAAkC;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,yBAAyB;QACvB,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;IACjC,CAAC;IAED,8BAA8B;QAC5B,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,SAAS,CAAC,MAAsB;QAC9B,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAC7B,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,MAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5F,CAAC;IAED,WAAW,CAAC,IAAsC;QAChD,OAAO,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IACpH,CAAC;IAEO,UAAU,CAAC,CAAY;QAC7B,IAAI,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;YAC/C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,cAAc,CAAC,IAAoB;QACzC,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,aAAa,CAAC,MAAc;QAClC,mGAAmG;QACnG,+DAA+D;QAC/D,OAAO,IAAA,wBAAgB,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;YAChD,CAAC,CAAC,IAAA,uCAA8B,EAAC,IAAA,4BAAW,EAAC,MAAM,CAAC,CAAC;YACrD,CAAC,CAAC,IAAA,sBAAa,EAAC,IAAA,4BAAW,EAAC,MAAM,CAAC,CAAC,CAAC;IACzC,CAAC;CACF;AAhTD,4CAgTC"}
1
+ {"version":3,"file":"ReactionsManager.js","sourceRoot":"","sources":["../src/ReactionsManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Like DataLoader, but all callers in the same tick share a single Promise<void>.
3
+ *
4
+ * The batch function writes results into a side channel (e.g. setPreloadedRelation
5
+ * or em.hydrate), so there's no per-key return value — just one shared promise
6
+ * that signals "the batch is done".
7
+ */
8
+ export declare class BatchLoader<K> {
9
+ #private;
10
+ constructor(batchFn: (keys: K[]) => Promise<void>);
11
+ load(key: K): Promise<void>;
12
+ loadAll(keys: K[]): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=BatchLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BatchLoader.d.ts","sourceRoot":"","sources":["../../src/batchloaders/BatchLoader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,qBAAa,WAAW,CAAC,CAAC;;gBAKZ,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC;IAIjD,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3B,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAmBlC"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BatchLoader = void 0;
4
+ /**
5
+ * Like DataLoader, but all callers in the same tick share a single Promise<void>.
6
+ *
7
+ * The batch function writes results into a side channel (e.g. setPreloadedRelation
8
+ * or em.hydrate), so there's no per-key return value — just one shared promise
9
+ * that signals "the batch is done".
10
+ */
11
+ class BatchLoader {
12
+ #batchFn;
13
+ #pending;
14
+ #batchPromise;
15
+ constructor(batchFn) {
16
+ this.#batchFn = batchFn;
17
+ }
18
+ load(key) {
19
+ this.#ensureBatch();
20
+ this.#pending.push(key);
21
+ return this.#batchPromise;
22
+ }
23
+ loadAll(keys) {
24
+ this.#ensureBatch();
25
+ this.#pending.push(...keys);
26
+ return this.#batchPromise;
27
+ }
28
+ #ensureBatch() {
29
+ if (!this.#pending) {
30
+ this.#pending = [];
31
+ this.#batchPromise = new Promise((resolve, reject) => {
32
+ enqueuePostPromiseJob(() => {
33
+ const keys = this.#pending;
34
+ this.#pending = undefined;
35
+ this.#batchPromise = undefined;
36
+ this.#batchFn(keys).then(resolve, reject);
37
+ });
38
+ });
39
+ }
40
+ }
41
+ }
42
+ exports.BatchLoader = BatchLoader;
43
+ const resolvedPromise = Promise.resolve();
44
+ // Matches DataLoader's enqueuePostPromiseJob scheduling:
45
+ // https://github.com/graphql/dataloader/blob/main/src/index.js#L214
46
+ const enqueuePostPromiseJob = typeof process === "object" && typeof process.nextTick === "function"
47
+ ? (fn) => resolvedPromise.then(() => process.nextTick(fn))
48
+ : (fn) => setTimeout(fn);
49
+ //# sourceMappingURL=BatchLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BatchLoader.js","sourceRoot":"","sources":["../../src/batchloaders/BatchLoader.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,MAAa,WAAW;IACtB,QAAQ,CAA+B;IACvC,QAAQ,CAAkB;IAC1B,aAAa,CAA4B;IAEzC,YAAY,OAAqC;QAC/C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,GAAM;QACT,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,QAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC,aAAc,CAAC;IAC7B,CAAC;IAED,OAAO,CAAC,IAAS;QACf,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,QAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC,aAAc,CAAC;IAC7B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACzD,qBAAqB,CAAC,GAAG,EAAE;oBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAS,CAAC;oBAC5B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;oBAC1B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;oBAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AAlCD,kCAkCC;AAED,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;AAE1C,yDAAyD;AACzD,oEAAoE;AACpE,MAAM,qBAAqB,GACzB,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;IACnE,CAAC,CAAC,CAAC,EAAc,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC,EAAc,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { EntityManager } from "../EntityManager";
2
+ import { EntityMetadata } from "../EntityMetadata";
3
+ import { LoadHint } from "../loadHints";
4
+ import { BatchLoader } from "./BatchLoader";
5
+ export declare const loadOperation = "load";
6
+ /**
7
+ * Batches em.load-style fetches, writing to identity map (via hydrate) instead of returning values.
8
+ * After the batch resolves, callers retrieve their entity from `em.findExistingInstance`.
9
+ *
10
+ * Accepts tuples of `{ taggedId, hint }` so the preloader can inject join-based
11
+ * preloading into the same SELECT that fetches the entities.
12
+ */
13
+ export declare function loadBatchLoader(em: EntityManager, meta: EntityMetadata, overwriteExisting?: boolean): BatchLoader<{
14
+ taggedId: string;
15
+ hint: LoadHint<any> | undefined;
16
+ }>;
17
+ //# sourceMappingURL=loadBatchLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadBatchLoader.d.ts","sourceRoot":"","sources":["../../src/batchloaders/loadBatchLoader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAoB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,eAAO,MAAM,aAAa,SAAS,CAAC;AAEpC;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,cAAc,EACpB,iBAAiB,GAAE,OAAe,GACjC,WAAW,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;CAAE,CAAC,CAqCpE"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadOperation = void 0;
4
+ exports.loadBatchLoader = loadBatchLoader;
5
+ const BaseEntity_1 = require("../BaseEntity");
6
+ const findDataLoader_1 = require("../dataloaders/findDataLoader");
7
+ const EntityManager_1 = require("../EntityManager");
8
+ const HintTree_1 = require("../HintTree");
9
+ const QueryParser_1 = require("../QueryParser");
10
+ const keys_1 = require("../keys");
11
+ const utils_1 = require("../utils");
12
+ exports.loadOperation = "load";
13
+ /**
14
+ * Batches em.load-style fetches, writing to identity map (via hydrate) instead of returning values.
15
+ * After the batch resolves, callers retrieve their entity from `em.findExistingInstance`.
16
+ *
17
+ * Accepts tuples of `{ taggedId, hint }` so the preloader can inject join-based
18
+ * preloading into the same SELECT that fetches the entities.
19
+ */
20
+ function loadBatchLoader(em, meta, overwriteExisting = false) {
21
+ return em.getBatchLoader(exports.loadOperation, `${meta.type}-${overwriteExisting}`, async (loads) => {
22
+ const keys = loads.map((l) => (0, keys_1.keyToNumber)(meta, l.taggedId));
23
+ const alias = (0, utils_1.abbreviation)(meta.tableName);
24
+ const query = {
25
+ selects: [`"${alias}".*`],
26
+ tables: [{ alias, join: "primary", table: meta.tableName }],
27
+ condition: {
28
+ kind: "exp",
29
+ op: "and",
30
+ conditions: [{ kind: "column", alias, column: "id", dbType: meta.idDbType, cond: { kind: "in", value: keys } }],
31
+ },
32
+ orderBys: [{ alias, column: "id", order: "ASC" }],
33
+ };
34
+ (0, QueryParser_1.addTablePerClassJoinsAndClassTag)(query, meta, alias, true);
35
+ // Inject preloading joins into the query if enabled
36
+ const { preloader } = (0, EntityManager_1.getEmInternalApi)(em);
37
+ const preloadHydrator = preloader &&
38
+ preloader.addPreloading(meta, (0, HintTree_1.buildHintTree)(loads.map((l) => ({ entity: l.taggedId, hint: l.hint }))), query);
39
+ const rows = await em["executeFind"](meta, exports.loadOperation, query, {});
40
+ (0, findDataLoader_1.ensureUnderLimit)(em, rows);
41
+ const entities = em.hydrate(meta.cstr, rows, { overwriteExisting });
42
+ preloadHydrator && preloadHydrator(rows, entities);
43
+ // If we're missing any requested rows, mark any requested-but-not-found entities as deleted
44
+ if (rows.length !== loads.length) {
45
+ const foundIds = new Set(rows.map((r) => (0, keys_1.tagId)(meta, r.id)));
46
+ for (const load of loads) {
47
+ if (!foundIds.has(load.taggedId)) {
48
+ const existingEntity = em.findExistingInstance(load.taggedId);
49
+ if (existingEntity) {
50
+ (0, BaseEntity_1.getInstanceData)(existingEntity).markDeletedBecauseNotFound();
51
+ }
52
+ }
53
+ }
54
+ }
55
+ });
56
+ }
57
+ //# sourceMappingURL=loadBatchLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadBatchLoader.js","sourceRoot":"","sources":["../../src/batchloaders/loadBatchLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { EntityManager } from "../EntityManager";
2
+ import { ManyToManyLike } from "../index";
3
+ import { BatchLoader } from "./BatchLoader";
4
+ export declare const manyToManyLoadOperation = "m2m-load";
5
+ /** Batches m2m.packages/core/src/relations/ReactiveManyToMany.tsload calls via BatchLoader. */
6
+ export declare function manyToManyBatchLoader(em: EntityManager, collection: ManyToManyLike): BatchLoader<string>;
7
+ //# sourceMappingURL=manyToManyBatchLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manyToManyBatchLoader.d.ts","sourceRoot":"","sources":["../../src/batchloaders/manyToManyBatchLoader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAoB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAA4B,cAAc,EAAmB,MAAM,UAAU,CAAC;AAErF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,eAAO,MAAM,uBAAuB,aAAa,CAAC;AAElD,+FAA+F;AAC/F,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,CAExG"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.manyToManyLoadOperation = void 0;
4
+ exports.manyToManyBatchLoader = manyToManyBatchLoader;
5
+ const EntityManager_1 = require("../EntityManager");
6
+ const index_1 = require("../index");
7
+ const utils_1 = require("../utils");
8
+ exports.manyToManyLoadOperation = "m2m-load";
9
+ /** Batches m2m.packages/core/src/relations/ReactiveManyToMany.tsload calls via BatchLoader. */
10
+ function manyToManyBatchLoader(em, collection) {
11
+ return em.getBatchLoader(exports.manyToManyLoadOperation, collection.joinTableName, (keys) => loadBatch(collection, keys));
12
+ }
13
+ async function loadBatch(collection, keys) {
14
+ const { em } = collection.entity;
15
+ const joinRows = (0, EntityManager_1.getEmInternalApi)(em).joinRows(collection);
16
+ // Break out `column_id=string` keys
17
+ const columns = {};
18
+ const tuples = [];
19
+ keys.forEach((key) => {
20
+ const [columnId, id] = key.split("=");
21
+ (0, utils_1.getOrSet)(columns, columnId, []).push(id);
22
+ tuples.push([columnId, id]);
23
+ });
24
+ const alias = (0, utils_1.abbreviation)(collection.joinTableName);
25
+ const query = {
26
+ selects: [`"${alias}".*`],
27
+ tables: [{ alias, join: "primary", table: collection.joinTableName }],
28
+ condition: {
29
+ kind: "exp",
30
+ op: "or",
31
+ conditions: Object.entries(columns).map(([columnId, values]) => {
32
+ const meta = collection.columnName == columnId ? (0, index_1.getMetadata)(collection.entity) : collection.otherMeta;
33
+ return {
34
+ kind: "column",
35
+ alias,
36
+ column: columnId,
37
+ dbType: meta.idDbType,
38
+ cond: { kind: "in", value: values.map((id) => (0, index_1.keyToNumber)(meta, id)) },
39
+ };
40
+ }),
41
+ },
42
+ orderBys: [{ alias, column: "id", order: "ASC" }],
43
+ };
44
+ const rows = await em["executeFind"](collection.otherMeta, exports.manyToManyLoadOperation, query,
45
+ // executeFind uses `LIMIT ${em.entityLimit}` by default, but we don't need that for join rows
46
+ { limit: undefined });
47
+ await joinRows.loadRows(tuples, rows);
48
+ const api = (0, EntityManager_1.getEmInternalApi)(em);
49
+ for (const [column, id] of tuples) {
50
+ const entity = em.getEntity(id);
51
+ if (!entity)
52
+ continue;
53
+ const others = joinRows.getOthers(column, entity);
54
+ // Determine the field name from the column
55
+ const fieldName = column === collection.columnName ? collection.fieldName : collection.otherFieldName;
56
+ api.setPreloadedRelation(entity.idTagged, fieldName, others);
57
+ }
58
+ }
59
+ //# sourceMappingURL=manyToManyBatchLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manyToManyBatchLoader.js","sourceRoot":"","sources":["../../src/batchloaders/manyToManyBatchLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Entity } from "../Entity";
2
+ import { EntityManager } from "../EntityManager";
3
+ import { OneToManyCollection } from "../index";
4
+ import { BatchLoader } from "./BatchLoader";
5
+ export declare const oneToManyLoadOperation = "o2m-load";
6
+ export declare function oneToManyBatchLoader<T extends Entity, U extends Entity>(em: EntityManager, collection: OneToManyCollection<T, U>): BatchLoader<string>;
7
+ //# sourceMappingURL=oneToManyBatchLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oneToManyBatchLoader.d.ts","sourceRoot":"","sources":["../../src/batchloaders/oneToManyBatchLoader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,aAAa,EAAoB,MAAM,kBAAkB,CAAC;AAEnE,OAAO,EAKL,mBAAmB,EAGpB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,eAAO,MAAM,sBAAsB,aAAa,CAAC;AAEjD,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EACrE,EAAE,EAAE,aAAa,EACjB,UAAU,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,GACpC,WAAW,CAAC,MAAM,CAAC,CA+CrB"}
@@ -1,17 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.oneToManyLoadOperation = void 0;
4
- exports.oneToManyDataLoader = oneToManyDataLoader;
4
+ exports.oneToManyBatchLoader = oneToManyBatchLoader;
5
+ const findDataLoader_1 = require("../dataloaders/findDataLoader");
6
+ const EntityManager_1 = require("../EntityManager");
5
7
  const fields_1 = require("../fields");
6
8
  const index_1 = require("../index");
7
9
  const utils_1 = require("../utils");
8
10
  exports.oneToManyLoadOperation = "o2m-load";
9
- function oneToManyDataLoader(em, collection) {
10
- // The metadata for the entity that contains the collection, i.e. Author in author.books
11
+ function oneToManyBatchLoader(em, collection) {
11
12
  const { meta: oneMeta, fieldName } = collection;
12
13
  const batchKey = `${oneMeta.tableName}-${fieldName}`;
13
- return em.getLoader(exports.oneToManyLoadOperation, batchKey, async (_keys) => {
14
- // otherMeta is the entity being fetched, i.e. Book in author.books
14
+ return em.getBatchLoader(exports.oneToManyLoadOperation, batchKey, async (_keys) => {
15
15
  const { otherMeta: meta } = collection;
16
16
  (0, index_1.assertIdsAreTagged)(_keys);
17
17
  const keys = (0, index_1.deTagIds)(oneMeta, _keys);
@@ -37,24 +37,17 @@ function oneToManyDataLoader(em, collection) {
37
37
  orderBys: [{ alias, column: "id", order: "ASC" }],
38
38
  };
39
39
  (0, index_1.addTablePerClassJoinsAndClassTag)(query, meta, alias, true);
40
- // Skip maybeAddOrderBy b/c we'll sort in memory anyway
41
- // maybeAddNotSoftDeleted(conditions, meta, alias, "include");
42
40
  const rows = await em["executeFind"](meta, exports.oneToManyLoadOperation, query, {});
41
+ (0, findDataLoader_1.ensureUnderLimit)(em, rows);
43
42
  const entities = em.hydrate(meta.cstr, rows);
44
- // .filter((e) => !e.isDeletedEntity);
45
43
  const entitiesById = (0, utils_1.groupBy)(entities, (entity) => {
46
- // TODO If this came from the UoW, it may not be an id? I.e. pre-insert.
47
44
  const ownerId = (0, index_1.maybeResolveReferenceToId)((0, fields_1.getField)(entity, collection.otherFieldName));
48
- // We almost always expect ownerId to be found, b/c normally we just hydrated this entity
49
- // directly from a SQL row with owner_id=X, however we might be loading this collection
50
- // (i.e. find all children where owner_id=X) when the SQL thinks a child is still pointing
51
- // at the parent (i.e. owner_id=X in the db), but our already-loaded child has had its
52
- // `child.owner` field either changed to some other owner, or set to undefined. In either,
53
- // that child should no longer be parent of this owner's collection, so just return a
54
- // dummy value.
55
45
  return ownerId ?? "dummyNoLongerOwned";
56
46
  });
57
- return _keys.map((k) => entitiesById.get(k) || []);
47
+ const api = (0, EntityManager_1.getEmInternalApi)(em);
48
+ for (const key of _keys) {
49
+ api.setPreloadedRelation(key, fieldName, entitiesById.get(key) || []);
50
+ }
58
51
  });
59
52
  }
60
- //# sourceMappingURL=oneToManyDataLoader.js.map
53
+ //# sourceMappingURL=oneToManyBatchLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oneToManyBatchLoader.js","sourceRoot":"","sources":["../../src/batchloaders/oneToManyBatchLoader.ts"],"names":[],"mappings":";;;AAkBA,oDAkDC;AApED,kEAAiE;AAEjE,oDAAmE;AACnE,sCAAqC;AACrC,oCAQkB;AAClB,oCAAiD;AAGpC,QAAA,sBAAsB,GAAG,UAAU,CAAC;AAEjD,SAAgB,oBAAoB,CAClC,EAAiB,EACjB,UAAqC;IAErC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC;IAChD,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;IACrD,OAAO,EAAE,CAAC,cAAc,CAAC,8BAAsB,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACzE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;QAEvC,IAAA,0BAAkB,EAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAA,gBAAQ,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEtC,MAAM,KAAK,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAmB,CAAC;QACtE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACxD,MAAM,KAAK,GAAoB;YAC7B,OAAO,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC;YACzB,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3D,SAAS,EAAE;gBACT,IAAI,EAAE,KAAK;gBACX,EAAE,EAAE,KAAK;gBACT,UAAU,EAAE;oBACV;wBACE,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE;wBACrC,MAAM,EAAE,GAAG,CAAC,eAAe;wBAC3B,MAAM,EAAE,IAAI,CAAC,QAAQ;wBACrB,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;qBAClC;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;SAClD,CAAC;QAEF,IAAA,wCAAgC,EAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAE3D,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,8BAAsB,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9E,IAAA,iCAAgB,EAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE7C,MAAM,YAAY,GAAG,IAAA,eAAO,EAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAChD,MAAM,OAAO,GAAG,IAAA,iCAAyB,EAAC,IAAA,iBAAQ,EAAC,MAAM,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;YACvF,OAAO,OAAO,IAAI,oBAAoB,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,IAAA,gCAAgB,EAAC,EAAE,CAAC,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,GAAG,CAAC,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Entity } from "../Entity";
2
+ import { EntityManager } from "../EntityManager";
3
+ import { OneToOneReferenceImpl } from "../relations/OneToOneReference";
4
+ import { BatchLoader } from "./BatchLoader";
5
+ export declare const oneToOneLoadOperation = "o2o-load";
6
+ export declare function oneToOneBatchLoader<T extends Entity, U extends Entity>(em: EntityManager, reference: OneToOneReferenceImpl<T, U>): BatchLoader<string>;
7
+ //# sourceMappingURL=oneToOneBatchLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oneToOneBatchLoader.d.ts","sourceRoot":"","sources":["../../src/batchloaders/oneToOneBatchLoader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,aAAa,EAAoB,MAAM,kBAAkB,CAAC;AAUnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAEhD,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EACpE,EAAE,EAAE,aAAa,EACjB,SAAS,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,GACrC,WAAW,CAAC,MAAM,CAAC,CA+CrB"}
@@ -1,18 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.oneToOneLoadOperation = void 0;
4
- exports.oneToOneDataLoader = oneToOneDataLoader;
4
+ exports.oneToOneBatchLoader = oneToOneBatchLoader;
5
+ const findDataLoader_1 = require("../dataloaders/findDataLoader");
6
+ const EntityManager_1 = require("../EntityManager");
5
7
  const EntityMetadata_1 = require("../EntityMetadata");
6
8
  const fields_1 = require("../fields");
7
9
  const index_1 = require("../index");
8
10
  const utils_1 = require("../utils");
9
11
  exports.oneToOneLoadOperation = "o2o-load";
10
- function oneToOneDataLoader(em, reference) {
11
- // The metadata for the entity that contains the reference, i.e. Author.image is the o2o,
12
- // and (otherMeta/otherFieldName) Image.author is the physical m2o/FK column.
12
+ function oneToOneBatchLoader(em, reference) {
13
13
  const meta = (0, EntityMetadata_1.getMetadata)(reference.entity);
14
14
  const batchKey = `${meta.tableName}-${reference.fieldName}`;
15
- return em.getLoader(exports.oneToOneLoadOperation, batchKey, async (_keys) => {
15
+ return em.getBatchLoader(exports.oneToOneLoadOperation, batchKey, async (_keys) => {
16
16
  const { otherMeta, otherFieldName } = reference;
17
17
  (0, index_1.assertIdsAreTagged)(_keys);
18
18
  const keys = (0, index_1.deTagIds)(meta, _keys);
@@ -38,22 +38,18 @@ function oneToOneDataLoader(em, reference) {
38
38
  orderBys: [],
39
39
  };
40
40
  (0, index_1.addTablePerClassJoinsAndClassTag)(query, otherMeta, alias, true);
41
- const { em } = reference.entity;
42
41
  const rows = await em["executeFind"](otherMeta, exports.oneToOneLoadOperation, query, {});
42
+ (0, findDataLoader_1.ensureUnderLimit)(em, rows);
43
43
  const entities = em.hydrate(otherMeta.cstr, rows);
44
44
  const entitiesByOtherId = (0, utils_1.groupBy)(entities, (entity) => {
45
- // TODO If this came from the UoW, it may not be an id? I.e. pre-insert.
46
45
  const ownerId = (0, index_1.maybeResolveReferenceToId)((0, fields_1.getField)(entity, otherFieldName));
47
- // We almost always expect ownerId to be found, b/c normally we just hydrated this entity
48
- // directly from a SQL row with owner_id=X, however we might be loading this reference
49
- // (i.e. find all children where owner_id=X) when the SQL thinks a child is still pointing
50
- // at the parent (i.e. owner_id=X in the db), but our already-loaded child has had its
51
- // `child.owner` field either changed to some other owner, or set to undefined. In either,
52
- // that child should no longer be parent of this owner's collection, so just return a
53
- // dummy value.
54
46
  return ownerId ?? "dummyNoLongerOwned";
55
47
  });
56
- return _keys.map((k) => entitiesByOtherId.get(k)?.[0]);
48
+ const api = (0, EntityManager_1.getEmInternalApi)(em);
49
+ for (const key of _keys) {
50
+ const found = entitiesByOtherId.get(key);
51
+ api.setPreloadedRelation(key, reference.fieldName, found ? [found[0]] : []);
52
+ }
57
53
  });
58
54
  }
59
- //# sourceMappingURL=oneToOneDataLoader.js.map
55
+ //# sourceMappingURL=oneToOneBatchLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oneToOneBatchLoader.js","sourceRoot":"","sources":["../../src/batchloaders/oneToOneBatchLoader.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
- import DataLoader from "dataloader";
2
1
  import { Entity } from "../Entity";
3
2
  import { EntityMetadata } from "../EntityMetadata";
4
3
  import { EntityManager } from "../index";
5
4
  import { LoadHint } from "../loadHints";
5
+ import { BatchLoader } from "./BatchLoader";
6
6
  export declare const populateOperation = "populate";
7
- export declare function populateDataLoader(em: EntityManager, meta: EntityMetadata, hint: LoadHint<any>, mode: "preload" | "intermixed", opts?: {
7
+ export declare function populateBatchLoader(em: EntityManager, meta: EntityMetadata, hint: LoadHint<any>, mode: "preload" | "intermixed", opts?: {
8
8
  forceReload?: boolean;
9
- }): DataLoader<{
9
+ }): BatchLoader<{
10
10
  entity: Entity;
11
11
  hint: LoadHint<any>;
12
- }, any>;
13
- //# sourceMappingURL=populateDataLoader.d.ts.map
12
+ }>;
13
+ //# sourceMappingURL=populateBatchLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"populateBatchLoader.d.ts","sourceRoot":"","sources":["../../src/batchloaders/populateBatchLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAEL,aAAa,EAOd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAIxC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAM5C,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAE5C,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EACnB,IAAI,EAAE,SAAS,GAAG,YAAY,EAC9B,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,WAAW,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAA;CAAE,CAAC,CA2KtD"}