joist-core 2.0.3 → 2.1.0

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 (147) 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 +55 -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 +57 -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} +9 -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} +10 -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} +4 -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 +84 -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} +4 -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/findIdsDataLoader.d.ts.map +1 -1
  70. package/build/dataloaders/findIdsDataLoader.js +7 -5
  71. package/build/dataloaders/findIdsDataLoader.js.map +1 -1
  72. package/build/dataloaders/findOrCreateDataLoader.d.ts.map +1 -1
  73. package/build/dataloaders/findOrCreateDataLoader.js +3 -2
  74. package/build/dataloaders/findOrCreateDataLoader.js.map +1 -1
  75. package/build/index.d.ts +2 -1
  76. package/build/index.d.ts.map +1 -1
  77. package/build/index.js +4 -2
  78. package/build/index.js.map +1 -1
  79. package/build/logging/ReactionLogger.d.ts +8 -4
  80. package/build/logging/ReactionLogger.d.ts.map +1 -1
  81. package/build/logging/ReactionLogger.js +11 -4
  82. package/build/logging/ReactionLogger.js.map +1 -1
  83. package/build/newTestInstance.d.ts +15 -0
  84. package/build/newTestInstance.d.ts.map +1 -1
  85. package/build/newTestInstance.js +49 -6
  86. package/build/newTestInstance.js.map +1 -1
  87. package/build/preloading/JsonAggregatePreloader.js +29 -24
  88. package/build/preloading/JsonAggregatePreloader.js.map +1 -1
  89. package/build/reactiveHints.d.ts.map +1 -1
  90. package/build/reactiveHints.js +25 -0
  91. package/build/reactiveHints.js.map +1 -1
  92. package/build/relations/Collection.d.ts +6 -1
  93. package/build/relations/Collection.d.ts.map +1 -1
  94. package/build/relations/Collection.js.map +1 -1
  95. package/build/relations/ManyToManyCollection.d.ts +8 -1
  96. package/build/relations/ManyToManyCollection.d.ts.map +1 -1
  97. package/build/relations/ManyToManyCollection.js +338 -130
  98. package/build/relations/ManyToManyCollection.js.map +1 -1
  99. package/build/relations/ManyToOneReference.d.ts +2 -6
  100. package/build/relations/ManyToOneReference.d.ts.map +1 -1
  101. package/build/relations/ManyToOneReference.js +115 -78
  102. package/build/relations/ManyToOneReference.js.map +1 -1
  103. package/build/relations/OneToManyCollection.d.ts +8 -4
  104. package/build/relations/OneToManyCollection.d.ts.map +1 -1
  105. package/build/relations/OneToManyCollection.js +415 -173
  106. package/build/relations/OneToManyCollection.js.map +1 -1
  107. package/build/relations/OneToOneReference.d.ts.map +1 -1
  108. package/build/relations/OneToOneReference.js +12 -7
  109. package/build/relations/OneToOneReference.js.map +1 -1
  110. package/build/relations/ReactiveManyToMany.js +4 -4
  111. package/build/relations/ReactiveManyToMany.js.map +1 -1
  112. package/build/relations/ReactiveManyToManyOtherSide.js +3 -3
  113. package/build/relations/ReactiveManyToManyOtherSide.js.map +1 -1
  114. package/build/relations/ReadOnlyCollection.d.ts.map +1 -1
  115. package/build/relations/ReadOnlyCollection.js +2 -1
  116. package/build/relations/ReadOnlyCollection.js.map +1 -1
  117. package/build/relations/RecursiveCollection.d.ts +29 -1
  118. package/build/relations/RecursiveCollection.d.ts.map +1 -1
  119. package/build/relations/RecursiveCollection.js +160 -9
  120. package/build/relations/RecursiveCollection.js.map +1 -1
  121. package/build/relations/index.d.ts +1 -1
  122. package/build/relations/index.d.ts.map +1 -1
  123. package/build/relations/index.js +2 -1
  124. package/build/relations/index.js.map +1 -1
  125. package/package.json +2 -2
  126. package/build/dataloaders/loadDataLoader.d.ts +0 -11
  127. package/build/dataloaders/loadDataLoader.d.ts.map +0 -1
  128. package/build/dataloaders/loadDataLoader.js +0 -54
  129. package/build/dataloaders/loadDataLoader.js.map +0 -1
  130. package/build/dataloaders/manyToManyDataLoader.d.ts +0 -8
  131. package/build/dataloaders/manyToManyDataLoader.d.ts.map +0 -1
  132. package/build/dataloaders/manyToManyDataLoader.js +0 -74
  133. package/build/dataloaders/manyToManyDataLoader.js.map +0 -1
  134. package/build/dataloaders/oneToManyDataLoader.d.ts +0 -7
  135. package/build/dataloaders/oneToManyDataLoader.d.ts.map +0 -1
  136. package/build/dataloaders/oneToManyDataLoader.js.map +0 -1
  137. package/build/dataloaders/oneToOneDataLoader.d.ts +0 -7
  138. package/build/dataloaders/oneToOneDataLoader.d.ts.map +0 -1
  139. package/build/dataloaders/oneToOneDataLoader.js.map +0 -1
  140. package/build/dataloaders/populateDataLoader.d.ts.map +0 -1
  141. package/build/dataloaders/populateDataLoader.js.map +0 -1
  142. package/build/dataloaders/recursiveChildrenDataLoader.d.ts +0 -7
  143. package/build/dataloaders/recursiveChildrenDataLoader.d.ts.map +0 -1
  144. package/build/dataloaders/recursiveChildrenDataLoader.js.map +0 -1
  145. package/build/dataloaders/recursiveParentsDataLoader.d.ts +0 -7
  146. package/build/dataloaders/recursiveParentsDataLoader.d.ts.map +0 -1
  147. package/build/dataloaders/recursiveParentsDataLoader.js.map +0 -1
@@ -1,14 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.populateOperation = void 0;
4
- exports.populateDataLoader = populateDataLoader;
4
+ exports.populateBatchLoader = populateBatchLoader;
5
5
  const HintTree_1 = require("../HintTree");
6
6
  const index_1 = require("../index");
7
7
  const reactiveHints_1 = require("../reactiveHints");
8
8
  const ReactiveField_1 = require("../relations/ReactiveField");
9
9
  const utils_1 = require("../utils");
10
+ const loadBatchLoader_1 = require("./loadBatchLoader");
11
+ const manyToManyBatchLoader_1 = require("./manyToManyBatchLoader");
12
+ const oneToManyBatchLoader_1 = require("./oneToManyBatchLoader");
13
+ const oneToOneBatchLoader_1 = require("./oneToOneBatchLoader");
10
14
  exports.populateOperation = "populate";
11
- function populateDataLoader(em, meta, hint, mode, opts = {}) {
15
+ function populateBatchLoader(em, meta, hint, mode, opts = {}) {
12
16
  // For batching populates, we want different levels of course-ness:
13
17
  // - preloading populates that are only SQL should be batched together as much as possible, but
14
18
  // - intermixed populates (some with custom relations) should be batched as separately as possible
@@ -24,7 +28,7 @@ function populateDataLoader(em, meta, hint, mode, opts = {}) {
24
28
  const batchKey = mode === "preload"
25
29
  ? `${meta.tagName}:${opts.forceReload}`
26
30
  : `${meta.tagName}:${JSON.stringify(hint)}:${opts.forceReload}`;
27
- return em.getLoader(exports.populateOperation, batchKey, async (populates) => {
31
+ return em.getBatchLoader(exports.populateOperation, batchKey, async (populates) => {
28
32
  async function populateLayer(layerMeta, layerNode) {
29
33
  // Skip join-based preloading if nothing in this layer needs loading. If any entity in the list
30
34
  // needs loading, just load everything
@@ -32,7 +36,11 @@ function populateDataLoader(em, meta, hint, mode, opts = {}) {
32
36
  // We may not have a layerMeta if we're going through non-field properties
33
37
  if (preloader && layerMeta) {
34
38
  const preloadThisLayer = Object.entries(layerNode.hints).some(([key, hint]) => {
35
- return [...hint.entities].some((entity) => !!entity[key] && !entity[key].isLoaded && !entity[key].isPreloaded);
39
+ for (const entity of hint.entities) {
40
+ if (entity[key]?.isLoaded === false && !entity[key]?.isPreloaded)
41
+ return true;
42
+ }
43
+ return false;
36
44
  });
37
45
  if (preloadThisLayer) {
38
46
  // Do an up-front SQL call of `select id, ...preloads... from table`,
@@ -67,16 +75,20 @@ function populateDataLoader(em, meta, hint, mode, opts = {}) {
67
75
  }
68
76
  }
69
77
  }
70
- // One breadth-width pass (only 1 level deep, our 2nd pass recurses) to ensure each relation is loaded
71
- const loadPromises = Object.entries(layerNode.hints).flatMap(([key, tree]) => {
72
- return [...tree.entities].map((entity) => {
78
+ // First pass: batch SQL relations directly, fall back to relation.load() for non-SQL
79
+ const batchPromises = new Set();
80
+ const relationsToPreload = [];
81
+ const fallbackPromises = [];
82
+ for (const [key, tree] of Object.entries(layerNode.hints)) {
83
+ const field = layerMeta?.allFields[key];
84
+ for (const entity of tree.entities) {
73
85
  const relation = (0, reactiveHints_1.getRelationFromMaybePolyKey)(entity, key);
74
86
  // This happens to let through non-relation hints like 'name' on user, which wasn't intentional,
75
- // but currently doesn't blow up (somehow), and is not depended on by internal tests.
87
+ // but currently doesn't blow up (somehow), and is depended on by internal tests.
76
88
  if (!relation || typeof relation.load !== "function") {
77
89
  // We don't want to throw on poly hints, because they're not actually loaded on the entity
78
90
  if ((0, reactiveHints_1.isPolyHint)(key))
79
- return;
91
+ continue;
80
92
  throw new Error(`Invalid load hint '${key}' on ${entity}`);
81
93
  }
82
94
  // If we're populating a hasReactiveField, don't bother loading it
@@ -88,61 +100,92 @@ function populateDataLoader(em, meta, hint, mode, opts = {}) {
88
100
  // So we go ahead and call `.load()`, assuming it will just load its cached value, but it
89
101
  // will also check internally if it's marked for recalc, and load its load hint if necessary.
90
102
  if (relation instanceof ReactiveField_1.ReactiveFieldImpl && relation.isSet)
91
- return;
103
+ continue;
92
104
  if (relation.isLoaded && !opts.forceReload)
93
- return undefined;
94
- // Avoid creating a promise for preloaded relations
105
+ continue;
95
106
  if (relation.isPreloaded) {
96
107
  relation.preload();
97
- return undefined;
108
+ continue;
98
109
  }
99
- return relation.load(opts);
100
- });
101
- });
110
+ // For non-derived SQL relations on existing entities, use batch loaders directly
111
+ // (1 shared promise per batch instead of per-entity async overhead).
112
+ // Skip new entities (no id) and derived relations (reactive m2m/m2o have extra logic in load).
113
+ if (!entity.isNewEntity && field) {
114
+ if (field.kind === "o2m") {
115
+ batchPromises.add((0, oneToManyBatchLoader_1.oneToManyBatchLoader)(em, relation).load(entity.idTagged));
116
+ relationsToPreload.push(relation);
117
+ continue;
118
+ }
119
+ else if (field.kind === "m2m" && !field.derived) {
120
+ batchPromises.add((0, manyToManyBatchLoader_1.manyToManyBatchLoader)(em, relation).load(`${relation.columnName}=${entity.id}`));
121
+ relationsToPreload.push(relation);
122
+ continue;
123
+ }
124
+ else if (field.kind === "o2o") {
125
+ batchPromises.add((0, oneToOneBatchLoader_1.oneToOneBatchLoader)(em, relation).load(entity.idTagged));
126
+ relationsToPreload.push(relation);
127
+ continue;
128
+ }
129
+ else if (field.kind === "m2o" && !field.derived) {
130
+ const taggedId = relation.idTaggedMaybe;
131
+ if (taggedId) {
132
+ batchPromises.add((0, loadBatchLoader_1.loadBatchLoader)(em, field.otherMetadata()).load({ taggedId, hint: undefined }));
133
+ relationsToPreload.push(relation);
134
+ continue;
135
+ }
136
+ }
137
+ }
138
+ fallbackPromises.push(relation.load(opts));
139
+ }
140
+ }
141
+ if (batchPromises.size > 0 || fallbackPromises.length > 0) {
142
+ await Promise.all([...batchPromises, ...fallbackPromises]);
143
+ }
144
+ for (const relation of relationsToPreload) {
145
+ relation.preload();
146
+ }
102
147
  // 2nd breadth-width pass to do nested load hints, this will fan out at the sibling level.
103
148
  // i.e. populateLayer(...reviews...) & populateLayer(...comments...)
104
- return Promise.all(loadPromises).then(() => {
105
- // Each of these keys will be fanning out to a new entity, like book -> reviews or book -> comments
106
- const nestedLoadPromises = Object.entries(layerNode.hints).map(([key, tree]) => {
107
- if (Object.keys(tree.hints).length === 0)
108
- return;
109
- // Get the children we found, i.e. [a1, a2, a3] -> all of their books
110
- const childrenByParent = new Map([...tree.entities].map((entity) => {
111
- const relation = (0, reactiveHints_1.getRelationFromMaybePolyKey)(entity, key);
112
- return [entity, relation ? (0, utils_1.toArray)(getEvenDeleted(relation)) : []];
113
- }));
114
- if (childrenByParent.size === 0)
115
- return;
116
- // Rewrite our node.entities to be the next layer of children, i.e. children will be all books, for all of
117
- // `[a1, a2, a3]`, but only the books of `a2` need to recurse into `book: reviews` and only the books of
118
- // `a3` need to recurse into `book: comments`, so swap `node.entities` (which is currently authors)
119
- // with the books. This is what prevents our dataloader-merged TreeHint from over-fetching and loading
120
- // the superset load hint for all entities.
121
- function rewrite(node) {
122
- node.entities = new Set(Array.from(node.entities).flatMap((entity) => childrenByParent.get(entity) ?? []));
123
- Object.values(node.hints).forEach((node) => rewrite(node));
149
+ let nestedLoadPromises;
150
+ for (const [key, tree] of Object.entries(layerNode.hints)) {
151
+ if (Object.keys(tree.hints).length === 0)
152
+ continue;
153
+ // Get the children we found, i.e. [a1, a2, a3] -> all of their books
154
+ const childrenByParent = new Map();
155
+ for (const entity of tree.entities) {
156
+ const relation = (0, reactiveHints_1.getRelationFromMaybePolyKey)(entity, key);
157
+ childrenByParent.set(entity, relation ? (0, utils_1.toArray)(getEvenDeleted(relation)) : []);
158
+ }
159
+ if (childrenByParent.size === 0)
160
+ continue;
161
+ // Rewrite our node.entities to be the next layer of children, i.e. children will be all books, for all of
162
+ // `[a1, a2, a3]`, but only the books of `a2` need to recurse into `book: reviews` and only the books of
163
+ // `a3` need to recurse into `book: comments`, so swap `node.entities` (which is currently authors)
164
+ // with the books. This is what prevents our dataloader-merged TreeHint from over-fetching and loading
165
+ // the superset load hint for all entities.
166
+ function rewrite(node) {
167
+ const next = new Set();
168
+ for (const entity of node.entities) {
169
+ const children = childrenByParent.get(entity);
170
+ if (children)
171
+ for (const child of children)
172
+ next.add(child);
124
173
  }
125
- rewrite(tree);
126
- const nextMeta = layerMeta?.allFields[key]?.otherMetadata?.();
127
- return populateLayer(nextMeta, tree);
128
- });
129
- return Promise.all(nestedLoadPromises);
130
- });
174
+ node.entities = next;
175
+ Object.values(node.hints).forEach((node) => rewrite(node));
176
+ }
177
+ rewrite(tree);
178
+ const nextMeta = layerMeta?.allFields[key]?.otherMetadata?.();
179
+ (nestedLoadPromises ??= []).push(populateLayer(nextMeta, tree));
180
+ }
181
+ if (nestedLoadPromises)
182
+ await Promise.all(nestedLoadPromises);
131
183
  }
132
- return populateLayer(meta, (0, HintTree_1.buildHintTree)(populates)).then(() => populates);
133
- },
134
- // We always disable caching, because during a UoW, having called `populate(author, nestedHint1)`
135
- // once doesn't mean that, on the 2nd call to `populate(author, nestedHint1)`, we can completely
136
- // skip it b/c author's relations may have been changed/mutated to different not-yet-loaded
137
- // entities.
138
- //
139
- // Even though having `{ cache: false }` looks weird here, i.e. why use dataloader at all?, it
140
- // still helps us fan-in resolvers callers that are happening ~simultaneously into the same
141
- // effort.
142
- { cache: false });
184
+ await populateLayer(meta, (0, HintTree_1.buildHintTree)(populates));
185
+ });
143
186
  }
144
187
  /** Probes `relation` to see if it's a m2o/o2m/m2m relation that supports `getWithDeleted`, otherwise calls `get`. */
145
188
  function getEvenDeleted(relation) {
146
189
  return "getWithDeleted" in relation ? relation.getWithDeleted : relation.get;
147
190
  }
148
- //# sourceMappingURL=populateDataLoader.js.map
191
+ //# sourceMappingURL=populateBatchLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"populateBatchLoader.js","sourceRoot":"","sources":["../../src/batchloaders/populateBatchLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Entity } from "../Entity";
2
+ import { EntityManager } from "../EntityManager";
3
+ import { RecursiveChildrenCollectionImpl } from "../relations/RecursiveCollection";
4
+ import { BatchLoader } from "./BatchLoader";
5
+ export declare const recursiveChildrenOperation = "o2m-recursive";
6
+ export declare function recursiveChildrenBatchLoader<T extends Entity, U extends Entity>(em: EntityManager, collection: RecursiveChildrenCollectionImpl<T, U>): BatchLoader<Entity>;
7
+ //# sourceMappingURL=recursiveChildrenBatchLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recursiveChildrenBatchLoader.d.ts","sourceRoot":"","sources":["../../src/batchloaders/recursiveChildrenBatchLoader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,aAAa,EAAoB,MAAM,kBAAkB,CAAC;AAcnE,OAAO,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,eAAO,MAAM,0BAA0B,kBAAkB,CAAC;AAE1D,wBAAgB,4BAA4B,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAC7E,EAAE,EAAE,aAAa,EACjB,UAAU,EAAE,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC,GAChD,WAAW,CAAC,MAAM,CAAC,CAqErB"}
@@ -1,20 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.recursiveChildrenOperation = void 0;
4
- exports.recursiveChildrenDataLoader = recursiveChildrenDataLoader;
4
+ exports.recursiveChildrenBatchLoader = recursiveChildrenBatchLoader;
5
5
  const configure_1 = require("../configure");
6
6
  const EntityManager_1 = require("../EntityManager");
7
7
  const index_1 = require("../index");
8
8
  const utils_1 = require("../utils");
9
9
  exports.recursiveChildrenOperation = "o2m-recursive";
10
- function recursiveChildrenDataLoader(em, collection) {
10
+ function recursiveChildrenBatchLoader(em, collection) {
11
11
  let { meta, fieldName } = collection;
12
12
  // This could be called from subtypes to get relations defined on the parent. So we need to make sure we are using the
13
13
  // correct meta by walking the inheritance tree until we find the meta that actually has the root o2m field
14
14
  while (!(collection.o2mFieldName in meta.fields) && meta.baseType)
15
15
  meta = (0, configure_1.getMetadataForType)(meta.baseType);
16
16
  const batchKey = `${meta.tableName}-${fieldName}`;
17
- return em.getLoader(exports.recursiveChildrenOperation, batchKey, async (parents) => {
17
+ return em.getBatchLoader(exports.recursiveChildrenOperation, batchKey, async (parents) => {
18
18
  const o2m = meta.allFields[collection.o2mFieldName];
19
19
  const m2o = meta.allFields[o2m.otherFieldName];
20
20
  const { columnName } = m2o.serde.columns[0];
@@ -70,8 +70,6 @@ function recursiveChildrenDataLoader(em, collection) {
70
70
  entity[o2m.fieldName].preload();
71
71
  }
72
72
  }
73
- // We used preloading to load keys + any recursive keys, so the return value doesn't matter
74
- return parents.map(() => []);
75
73
  });
76
74
  }
77
- //# sourceMappingURL=recursiveChildrenDataLoader.js.map
75
+ //# sourceMappingURL=recursiveChildrenBatchLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recursiveChildrenBatchLoader.js","sourceRoot":"","sources":["../../src/batchloaders/recursiveChildrenBatchLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Entity } from "../Entity";
2
+ import { EntityManager } from "../EntityManager";
3
+ import { RecursiveM2mCollectionImpl } from "../relations/RecursiveCollection";
4
+ import { BatchLoader } from "./BatchLoader";
5
+ export declare const recursiveM2mOperation = "m2m-recursive";
6
+ export declare function recursiveM2mBatchLoader<T extends Entity, U extends Entity>(em: EntityManager, collection: RecursiveM2mCollectionImpl<T, U>): BatchLoader<Entity>;
7
+ //# sourceMappingURL=recursiveM2mBatchLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recursiveM2mBatchLoader.d.ts","sourceRoot":"","sources":["../../src/batchloaders/recursiveM2mBatchLoader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,aAAa,EAAoB,MAAM,kBAAkB,CAAC;AAWnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAErD,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EACxE,EAAE,EAAE,aAAa,EACjB,UAAU,EAAE,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC,GAC3C,WAAW,CAAC,MAAM,CAAC,CA8ErB"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.recursiveM2mOperation = void 0;
4
+ exports.recursiveM2mBatchLoader = recursiveM2mBatchLoader;
5
+ const configure_1 = require("../configure");
6
+ const EntityManager_1 = require("../EntityManager");
7
+ const index_1 = require("../index");
8
+ const utils_1 = require("../utils");
9
+ exports.recursiveM2mOperation = "m2m-recursive";
10
+ function recursiveM2mBatchLoader(em, collection) {
11
+ let { meta, fieldName } = collection;
12
+ while (!(collection.m2mFieldName in meta.allFields) && meta.baseType)
13
+ meta = (0, configure_1.getMetadataForType)(meta.baseType);
14
+ const batchKey = `${meta.tableName}-${fieldName}`;
15
+ return em.getBatchLoader(exports.recursiveM2mOperation, batchKey, async (entities) => {
16
+ const m2mField = meta.allFields[collection.m2mFieldName];
17
+ const { joinTableName, columnNames } = m2mField;
18
+ const thisColumn = columnNames[0];
19
+ const otherColumn = columnNames[1];
20
+ const seedIds = (0, index_1.unsafeDeTagIds)(entities.map((e) => e.idTagged));
21
+ // Use a recursive CTE to walk the join table and return all join rows for the seed
22
+ // entities and all transitively-reachable entities. JoinRows.loadRows then calls
23
+ // em.loadAll internally to hydrate the actual entities on both sides.
24
+ const jt = (0, utils_1.abbreviation)(joinTableName);
25
+ const query = {
26
+ selects: [(0, index_1.kqStar)(jt)],
27
+ tables: [{ alias: jt, join: "primary", table: "cte" }],
28
+ orderBys: [{ alias: jt, column: "id", order: "ASC" }],
29
+ ctes: [
30
+ {
31
+ alias: "cte",
32
+ query: {
33
+ kind: "raw",
34
+ // Base case returns full join rows for the seed entities; recursive case
35
+ // follows otherColumn → thisColumn to discover transitively-reachable rows.
36
+ sql: `
37
+ SELECT b.* FROM ${(0, index_1.kq)(joinTableName)} b WHERE ${(0, index_1.kqDot)("b", thisColumn)} = ANY(?)
38
+ UNION
39
+ SELECT r.* FROM ${(0, index_1.kq)(joinTableName)} r JOIN cte ON ${(0, index_1.kqDot)("r", thisColumn)} = cte.${(0, index_1.kq)(otherColumn)}
40
+ `,
41
+ bindings: [seedIds],
42
+ },
43
+ recursive: true,
44
+ },
45
+ ],
46
+ };
47
+ const joinTableRows = await em["executeFind"](meta, exports.recursiveM2mOperation, query, {});
48
+ // Collect all entity IDs from both sides of the join rows. Entities that only appear
49
+ // on otherColumn (not thisColumn) are leaf nodes with no outgoing connections — since
50
+ // the CTE transitively discovers everything reachable, we know their m2m is empty and
51
+ // can mark it loaded here, avoiding a separate load via findUnloadedCollections.
52
+ const uniqueIds = new Set(entities.map((e) => e.idTagged));
53
+ for (const row of joinTableRows) {
54
+ uniqueIds.add((0, index_1.keyToTaggedId)(meta, row[thisColumn]));
55
+ uniqueIds.add((0, index_1.keyToTaggedId)(meta, row[otherColumn]));
56
+ }
57
+ const m2mCollection = entities[0][collection.m2mFieldName];
58
+ const joinRows = (0, EntityManager_1.getEmInternalApi)(em).joinRows(m2mCollection);
59
+ // loadRows calls em.loadAll internally to hydrate all referenced entities
60
+ const tuples = [...uniqueIds].map((id) => [thisColumn, id]);
61
+ await joinRows.loadRows(tuples, joinTableRows);
62
+ // Set preloaded relations and call preload() for each entity's m2m collection
63
+ const api = (0, EntityManager_1.getEmInternalApi)(em);
64
+ for (const id of uniqueIds) {
65
+ const entity = em.getEntity(id);
66
+ if (!entity)
67
+ continue;
68
+ const others = joinRows.getOthers(thisColumn, entity);
69
+ api.setPreloadedRelation(entity.idTagged, m2mField.fieldName, others);
70
+ entity[m2mField.fieldName].preload();
71
+ }
72
+ // Mark any entity whose m2m is still not loaded as having an empty collection (leaf nodes)
73
+ for (const id of uniqueIds) {
74
+ const entity = em.getEntity(id);
75
+ if (!entity)
76
+ continue;
77
+ if (!(0, index_1.isLoadedCollection)(entity[m2mField.fieldName])) {
78
+ api.setPreloadedRelation(entity.idTagged, m2mField.fieldName, []);
79
+ entity[m2mField.fieldName].preload();
80
+ }
81
+ }
82
+ });
83
+ }
84
+ //# sourceMappingURL=recursiveM2mBatchLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recursiveM2mBatchLoader.js","sourceRoot":"","sources":["../../src/batchloaders/recursiveM2mBatchLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Entity } from "../Entity";
2
+ import { EntityManager } from "../EntityManager";
3
+ import { RecursiveParentsCollectionImpl } from "../relations/RecursiveCollection";
4
+ import { BatchLoader } from "./BatchLoader";
5
+ export declare const recursiveParentsOperation = "m2o-recursive";
6
+ export declare function recursiveParentsBatchLoader<T extends Entity, U extends Entity>(em: EntityManager, collection: RecursiveParentsCollectionImpl<T, U>): BatchLoader<Entity>;
7
+ //# sourceMappingURL=recursiveParentsBatchLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recursiveParentsBatchLoader.d.ts","sourceRoot":"","sources":["../../src/batchloaders/recursiveParentsBatchLoader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AASjD,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAElF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,eAAO,MAAM,yBAAyB,kBAAkB,CAAC;AAEzD,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAC5E,EAAE,EAAE,aAAa,EACjB,UAAU,EAAE,8BAA8B,CAAC,CAAC,EAAE,CAAC,CAAC,GAC/C,WAAW,CAAC,MAAM,CAAC,CAmDrB"}
@@ -1,19 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.recursiveParentsOperation = void 0;
4
- exports.recursiveParentsDataLoader = recursiveParentsDataLoader;
4
+ exports.recursiveParentsBatchLoader = recursiveParentsBatchLoader;
5
5
  const configure_1 = require("../configure");
6
6
  const index_1 = require("../index");
7
7
  const utils_1 = require("../utils");
8
8
  exports.recursiveParentsOperation = "m2o-recursive";
9
- function recursiveParentsDataLoader(em, collection) {
9
+ function recursiveParentsBatchLoader(em, collection) {
10
10
  let { meta, fieldName } = collection;
11
11
  // This could be called from subtypes to get relations defined on the parent. So we need to make sure we are using the
12
12
  // correct meta by walking the inheritance tree until we find the meta that actually has the root m2o field
13
13
  while (!(collection.m2oFieldName in meta.fields) && meta.baseType)
14
14
  meta = (0, configure_1.getMetadataForType)(meta.baseType);
15
15
  const batchKey = `${meta.tableName}-${fieldName}`;
16
- return em.getLoader(exports.recursiveParentsOperation, batchKey, async (children) => {
16
+ return em.getBatchLoader(exports.recursiveParentsOperation, batchKey, async (children) => {
17
17
  const m2o = meta.allFields[collection.m2oFieldName];
18
18
  // ...can `getField` return a new entity? In theory, we shouldn't see new entities because
19
19
  // RecursiveParentsCollectionImpl.load/isLoaded will see the `ManyToOneReferenceImpl` as loaded.
@@ -53,7 +53,6 @@ function recursiveParentsDataLoader(em, collection) {
53
53
  // for the ManyToOneReferenceImpl to find them, so we don't need to map them back to the
54
54
  // keys, or push them into the preloader cache.
55
55
  em.hydrate(meta.cstr, rows);
56
- return children.map(() => []);
57
56
  });
58
57
  }
59
- //# sourceMappingURL=recursiveParentsDataLoader.js.map
58
+ //# sourceMappingURL=recursiveParentsBatchLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recursiveParentsBatchLoader.js","sourceRoot":"","sources":["../../src/batchloaders/recursiveParentsBatchLoader.ts"],"names":[],"mappings":";;;AAiBA,kEAsDC;AAvED,4CAAkD;AAGlD,oCAOkB;AAElB,oCAAwC;AAG3B,QAAA,yBAAyB,GAAG,eAAe,CAAC;AAEzD,SAAgB,2BAA2B,CACzC,EAAiB,EACjB,UAAgD;IAEhD,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC;IACrC,sHAAsH;IACtH,2GAA2G;IAC3G,OAAO,CAAC,CAAC,UAAU,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ;QAAE,IAAI,GAAG,IAAA,8BAAkB,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5G,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;IAClD,OAAO,EAAE,CAAC,cAAc,CAAC,iCAAyB,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;QAC/E,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAmB,CAAC;QACtE,0FAA0F;QAC1F,gGAAgG;QAChG,MAAM,kBAAkB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,gBAAQ,EAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QACjH,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAE5C,MAAM,KAAK,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAoB;YAC7B,OAAO,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC;YACzB,MAAM,EAAE;gBACN,4EAA4E;gBAC5E,gFAAgF;gBAChF,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE;gBACjD,EAAE,KAAK,EAAE,GAAG,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,SAAS,EAAE;aAC9G;YACD,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YACjD,IAAI,EAAE;gBACJ;oBACE,KAAK,EAAE,GAAG,KAAK,MAAM;oBACrB,KAAK,EAAE;wBACL,IAAI,EAAE,KAAK;wBACX,oFAAoF;wBACpF,wDAAwD;wBACxD,GAAG,EAAE;+BACc,UAAU,SAAS,IAAA,UAAE,EAAC,IAAI,CAAC,SAAS,CAAC;;+BAErC,UAAU,SAAS,IAAA,UAAE,EAAC,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,kBAAkB,KAAK,QAAQ,UAAU;aAChH;wBACD,QAAQ,EAAE,CAAC,IAAA,sBAAc,EAAC,kBAAkB,CAAC,CAAC;qBAC/C;oBACD,SAAS,EAAE,IAAI;iBAChB;aACF;SACF,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,iCAAyB,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAEjF,0FAA0F;QAC1F,wFAAwF;QACxF,+CAA+C;QAC/C,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC"}
package/build/changes.js CHANGED
@@ -156,7 +156,7 @@ class OneToManyFieldStatusImpl {
156
156
  ...this.#o2m.added(),
157
157
  ...(this.#entity.isNewEntity
158
158
  ? []
159
- : ((0, index_1.getEmInternalApi)(this.#entity.em).pendingChildren.get(this.#entity.idTagged)?.get(this.#o2m.fieldName)
159
+ : ((0, index_1.getEmInternalApi)(this.#entity.em).pendingPercolate.get(this.#entity.idTagged)?.get(this.#o2m.fieldName)
160
160
  ?.adds ?? [])),
161
161
  ];
162
162
  }
@@ -165,7 +165,7 @@ class OneToManyFieldStatusImpl {
165
165
  ...this.#o2m.removed(),
166
166
  ...(this.#entity.isNewEntity
167
167
  ? []
168
- : ((0, index_1.getEmInternalApi)(this.#entity.em).pendingChildren.get(this.#entity.idTagged)?.get(this.#o2m.fieldName)
168
+ : ((0, index_1.getEmInternalApi)(this.#entity.em).pendingPercolate.get(this.#entity.idTagged)?.get(this.#o2m.fieldName)
169
169
  ?.removes ?? [])),
170
170
  ];
171
171
  }
@@ -1 +1 @@
1
- {"version":3,"file":"changes.js","sourceRoot":"","sources":["../src/changes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"changes.js","sourceRoot":"","sources":["../src/changes.ts"],"names":[],"mappings":"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"}
package/build/config.d.ts CHANGED
@@ -31,6 +31,17 @@ export declare class ConfigApi<T extends Entity, C> {
31
31
  * need to check the constraint by hand ahead of time, before calling `em.flush`.
32
32
  */
33
33
  addConstraintMessage(constraintName: string, validationError: string): void;
34
+ /**
35
+ * Maps a `RecursiveCycleError` on the given recursive collection field to a custom validation error.
36
+ *
37
+ * When a cycle is detected in a recursive collection (e.g. `parentsRecursive`), instead of
38
+ * throwing a raw `RecursiveCycleError`, `em.flush` will convert it into a `ValidationErrors`
39
+ * using the provided message function.
40
+ *
41
+ * The `messageFn` receives the entity that detected the cycle and the cycle path (array of
42
+ * entities forming the cycle), and should return a validation error string.
43
+ */
44
+ addCycleRule(fieldName: string & keyof T, messageFn: (entity: T, cyclePath: Entity[]) => string): void;
34
45
  /**
35
46
  * Adds a validation rule for this entity.
36
47
  *
@@ -222,6 +233,8 @@ export declare class ConfigData<T extends Entity, C> {
222
233
  cascadeDeleteFields: Array<keyof RelationsIn<T>>;
223
234
  touchOnChange: Set<keyof RelationsIn<T>>;
224
235
  cachedReactiveLoadHints: Record<string, any>;
236
+ /** Maps recursive collection fieldNames to custom cycle error message functions. */
237
+ cycleMessages: Record<string, (entity: T, cyclePath: Entity[]) => string>;
225
238
  }
226
239
  export declare function getCallerName(extraFrames?: number): string;
227
240
  export declare function getFuzzyCallerName(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/build/config.js CHANGED
@@ -42,9 +42,32 @@ class ConfigApi {
42
42
  this.ensurePreBoot(getCallerName(), "addConstraintMessage");
43
43
  exports.constraintNameToValidationError[constraintName] = validationError;
44
44
  }
45
+ /**
46
+ * Maps a `RecursiveCycleError` on the given recursive collection field to a custom validation error.
47
+ *
48
+ * When a cycle is detected in a recursive collection (e.g. `parentsRecursive`), instead of
49
+ * throwing a raw `RecursiveCycleError`, `em.flush` will convert it into a `ValidationErrors`
50
+ * using the provided message function.
51
+ *
52
+ * The `messageFn` receives the entity that detected the cycle and the cycle path (array of
53
+ * entities forming the cycle), and should return a validation error string.
54
+ */
55
+ addCycleRule(fieldName, messageFn) {
56
+ this.ensurePreBoot(getCallerName(), "addCycleRule");
57
+ this.__data.cycleMessages[fieldName] = messageFn;
58
+ // Register a reactive rule that loads the recursive collection and catches cycle errors.
59
+ // The rule uses the recursive collection's underlying relation as a reactive hint so it
60
+ // triggers when the collection changes.
61
+ const hint = fieldName;
62
+ const fn = () => {
63
+ // We don't actually need a try/catch/anything here, b/c if there is a cycle, it
64
+ // will cause a CycleError during followReverseHint, and never even get to calling this fn.
65
+ };
66
+ this.__data.rules.push({ name: `addCycleRule(${getCallerName()})`, fn, hint });
67
+ }
45
68
  addRule(ruleOrHint, maybeRule) {
46
69
  // Keep the name for easy debugging/tracing later
47
- const name = getCallerName();
70
+ const name = `addRule(${getCallerName()})`;
48
71
  this.ensurePreBoot(name, "addRule");
49
72
  if (typeof ruleOrHint === "function") {
50
73
  const fn = ruleOrHint;
@@ -224,6 +247,8 @@ class ConfigData {
224
247
  touchOnChange = new Set();
225
248
  // Constantly converting reactive hints to load hints is expense, so cache them here
226
249
  cachedReactiveLoadHints = {};
250
+ /** Maps recursive collection fieldNames to custom cycle error message functions. */
251
+ cycleMessages = {};
227
252
  }
228
253
  exports.ConfigData = ConfigData;
229
254
  function getCallerName(extraFrames = 0) {