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.
- package/build/AliasAssigner.d.ts +3 -0
- package/build/AliasAssigner.d.ts.map +1 -1
- package/build/AliasAssigner.js +12 -3
- package/build/AliasAssigner.js.map +1 -1
- package/build/EntityGraphQLFilter.d.ts.map +1 -1
- package/build/EntityGraphQLFilter.js +1 -2
- package/build/EntityGraphQLFilter.js.map +1 -1
- package/build/EntityManager.d.ts +25 -10
- package/build/EntityManager.d.ts.map +1 -1
- package/build/EntityManager.js +242 -159
- package/build/EntityManager.js.map +1 -1
- package/build/IndexManager.d.ts +1 -0
- package/build/IndexManager.d.ts.map +1 -1
- package/build/IndexManager.js +6 -3
- package/build/IndexManager.js.map +1 -1
- package/build/JoinRows.d.ts.map +1 -1
- package/build/JoinRows.js +1 -2
- package/build/JoinRows.js.map +1 -1
- package/build/PendingChanges.d.ts +26 -0
- package/build/PendingChanges.d.ts.map +1 -0
- package/build/PendingChanges.js +3 -0
- package/build/PendingChanges.js.map +1 -0
- package/build/ReactionsManager.d.ts +1 -1
- package/build/ReactionsManager.d.ts.map +1 -1
- package/build/ReactionsManager.js +8 -5
- package/build/ReactionsManager.js.map +1 -1
- package/build/batchloaders/BatchLoader.d.ts +14 -0
- package/build/batchloaders/BatchLoader.d.ts.map +1 -0
- package/build/batchloaders/BatchLoader.js +49 -0
- package/build/batchloaders/BatchLoader.js.map +1 -0
- package/build/batchloaders/loadBatchLoader.d.ts +17 -0
- package/build/batchloaders/loadBatchLoader.d.ts.map +1 -0
- package/build/batchloaders/loadBatchLoader.js +55 -0
- package/build/batchloaders/loadBatchLoader.js.map +1 -0
- package/build/batchloaders/manyToManyBatchLoader.d.ts +7 -0
- package/build/batchloaders/manyToManyBatchLoader.d.ts.map +1 -0
- package/build/batchloaders/manyToManyBatchLoader.js +57 -0
- package/build/batchloaders/manyToManyBatchLoader.js.map +1 -0
- package/build/batchloaders/oneToManyBatchLoader.d.ts +7 -0
- package/build/batchloaders/oneToManyBatchLoader.d.ts.map +1 -0
- package/build/{dataloaders/oneToManyDataLoader.js → batchloaders/oneToManyBatchLoader.js} +9 -18
- package/build/batchloaders/oneToManyBatchLoader.js.map +1 -0
- package/build/batchloaders/oneToOneBatchLoader.d.ts +7 -0
- package/build/batchloaders/oneToOneBatchLoader.d.ts.map +1 -0
- package/build/{dataloaders/oneToOneDataLoader.js → batchloaders/oneToOneBatchLoader.js} +10 -16
- package/build/batchloaders/oneToOneBatchLoader.js.map +1 -0
- package/build/{dataloaders/populateDataLoader.d.ts → batchloaders/populateBatchLoader.d.ts} +5 -5
- package/build/batchloaders/populateBatchLoader.d.ts.map +1 -0
- package/build/{dataloaders/populateDataLoader.js → batchloaders/populateBatchLoader.js} +97 -54
- package/build/batchloaders/populateBatchLoader.js.map +1 -0
- package/build/batchloaders/recursiveChildrenBatchLoader.d.ts +7 -0
- package/build/batchloaders/recursiveChildrenBatchLoader.d.ts.map +1 -0
- package/build/{dataloaders/recursiveChildrenDataLoader.js → batchloaders/recursiveChildrenBatchLoader.js} +4 -6
- package/build/batchloaders/recursiveChildrenBatchLoader.js.map +1 -0
- package/build/batchloaders/recursiveM2mBatchLoader.d.ts +7 -0
- package/build/batchloaders/recursiveM2mBatchLoader.d.ts.map +1 -0
- package/build/batchloaders/recursiveM2mBatchLoader.js +84 -0
- package/build/batchloaders/recursiveM2mBatchLoader.js.map +1 -0
- package/build/batchloaders/recursiveParentsBatchLoader.d.ts +7 -0
- package/build/batchloaders/recursiveParentsBatchLoader.d.ts.map +1 -0
- package/build/{dataloaders/recursiveParentsDataLoader.js → batchloaders/recursiveParentsBatchLoader.js} +4 -5
- package/build/batchloaders/recursiveParentsBatchLoader.js.map +1 -0
- package/build/changes.js +2 -2
- package/build/changes.js.map +1 -1
- package/build/config.d.ts +13 -0
- package/build/config.d.ts.map +1 -1
- package/build/config.js +26 -1
- package/build/config.js.map +1 -1
- package/build/dataloaders/findIdsDataLoader.d.ts.map +1 -1
- package/build/dataloaders/findIdsDataLoader.js +7 -5
- package/build/dataloaders/findIdsDataLoader.js.map +1 -1
- package/build/dataloaders/findOrCreateDataLoader.d.ts.map +1 -1
- package/build/dataloaders/findOrCreateDataLoader.js +3 -2
- package/build/dataloaders/findOrCreateDataLoader.js.map +1 -1
- package/build/index.d.ts +2 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +4 -2
- package/build/index.js.map +1 -1
- package/build/logging/ReactionLogger.d.ts +8 -4
- package/build/logging/ReactionLogger.d.ts.map +1 -1
- package/build/logging/ReactionLogger.js +11 -4
- package/build/logging/ReactionLogger.js.map +1 -1
- package/build/newTestInstance.d.ts +15 -0
- package/build/newTestInstance.d.ts.map +1 -1
- package/build/newTestInstance.js +49 -6
- package/build/newTestInstance.js.map +1 -1
- package/build/preloading/JsonAggregatePreloader.js +29 -24
- package/build/preloading/JsonAggregatePreloader.js.map +1 -1
- package/build/reactiveHints.d.ts.map +1 -1
- package/build/reactiveHints.js +25 -0
- package/build/reactiveHints.js.map +1 -1
- package/build/relations/Collection.d.ts +6 -1
- package/build/relations/Collection.d.ts.map +1 -1
- package/build/relations/Collection.js.map +1 -1
- package/build/relations/ManyToManyCollection.d.ts +8 -1
- package/build/relations/ManyToManyCollection.d.ts.map +1 -1
- package/build/relations/ManyToManyCollection.js +338 -130
- package/build/relations/ManyToManyCollection.js.map +1 -1
- package/build/relations/ManyToOneReference.d.ts +2 -6
- package/build/relations/ManyToOneReference.d.ts.map +1 -1
- package/build/relations/ManyToOneReference.js +115 -78
- package/build/relations/ManyToOneReference.js.map +1 -1
- package/build/relations/OneToManyCollection.d.ts +8 -4
- package/build/relations/OneToManyCollection.d.ts.map +1 -1
- package/build/relations/OneToManyCollection.js +415 -173
- package/build/relations/OneToManyCollection.js.map +1 -1
- package/build/relations/OneToOneReference.d.ts.map +1 -1
- package/build/relations/OneToOneReference.js +12 -7
- package/build/relations/OneToOneReference.js.map +1 -1
- package/build/relations/ReactiveManyToMany.js +4 -4
- package/build/relations/ReactiveManyToMany.js.map +1 -1
- package/build/relations/ReactiveManyToManyOtherSide.js +3 -3
- package/build/relations/ReactiveManyToManyOtherSide.js.map +1 -1
- package/build/relations/ReadOnlyCollection.d.ts.map +1 -1
- package/build/relations/ReadOnlyCollection.js +2 -1
- package/build/relations/ReadOnlyCollection.js.map +1 -1
- package/build/relations/RecursiveCollection.d.ts +29 -1
- package/build/relations/RecursiveCollection.d.ts.map +1 -1
- package/build/relations/RecursiveCollection.js +160 -9
- package/build/relations/RecursiveCollection.js.map +1 -1
- package/build/relations/index.d.ts +1 -1
- package/build/relations/index.d.ts.map +1 -1
- package/build/relations/index.js +2 -1
- package/build/relations/index.js.map +1 -1
- package/package.json +2 -2
- package/build/dataloaders/loadDataLoader.d.ts +0 -11
- package/build/dataloaders/loadDataLoader.d.ts.map +0 -1
- package/build/dataloaders/loadDataLoader.js +0 -54
- package/build/dataloaders/loadDataLoader.js.map +0 -1
- package/build/dataloaders/manyToManyDataLoader.d.ts +0 -8
- package/build/dataloaders/manyToManyDataLoader.d.ts.map +0 -1
- package/build/dataloaders/manyToManyDataLoader.js +0 -74
- package/build/dataloaders/manyToManyDataLoader.js.map +0 -1
- package/build/dataloaders/oneToManyDataLoader.d.ts +0 -7
- package/build/dataloaders/oneToManyDataLoader.d.ts.map +0 -1
- package/build/dataloaders/oneToManyDataLoader.js.map +0 -1
- package/build/dataloaders/oneToOneDataLoader.d.ts +0 -7
- package/build/dataloaders/oneToOneDataLoader.d.ts.map +0 -1
- package/build/dataloaders/oneToOneDataLoader.js.map +0 -1
- package/build/dataloaders/populateDataLoader.d.ts.map +0 -1
- package/build/dataloaders/populateDataLoader.js.map +0 -1
- package/build/dataloaders/recursiveChildrenDataLoader.d.ts +0 -7
- package/build/dataloaders/recursiveChildrenDataLoader.d.ts.map +0 -1
- package/build/dataloaders/recursiveChildrenDataLoader.js.map +0 -1
- package/build/dataloaders/recursiveParentsDataLoader.d.ts +0 -7
- package/build/dataloaders/recursiveParentsDataLoader.d.ts.map +0 -1
- 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.
|
|
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
|
|
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.
|
|
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
|
-
|
|
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
|
-
//
|
|
71
|
-
const
|
|
72
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
103
|
+
continue;
|
|
92
104
|
if (relation.isLoaded && !opts.forceReload)
|
|
93
|
-
|
|
94
|
-
// Avoid creating a promise for preloaded relations
|
|
105
|
+
continue;
|
|
95
106
|
if (relation.isPreloaded) {
|
|
96
107
|
relation.preload();
|
|
97
|
-
|
|
108
|
+
continue;
|
|
98
109
|
}
|
|
99
|
-
|
|
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
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
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
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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
|
-
|
|
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=
|
|
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.
|
|
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
|
|
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.
|
|
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=
|
|
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":";;;AAmBA,0DAiFC;AApGD,4CAAkD;AAElD,oDAAmE;AACnE,oCASkB;AAElB,oCAAwC;AAG3B,QAAA,qBAAqB,GAAG,eAAe,CAAC;AAErD,SAAgB,uBAAuB,CACrC,EAAiB,EACjB,UAA4C;IAE5C,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC;IACrC,OAAO,CAAC,CAAC,UAAU,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ;QAAE,IAAI,GAAG,IAAA,8BAAkB,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/G,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;IAClD,OAAO,EAAE,CAAC,cAAc,CAAC,6BAAqB,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;QAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAoB,CAAC;QAC5E,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;QAChD,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAEnC,MAAM,OAAO,GAAG,IAAA,sBAAc,EAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEhE,mFAAmF;QACnF,iFAAiF;QACjF,sEAAsE;QACtE,MAAM,EAAE,GAAG,IAAA,oBAAY,EAAC,aAAa,CAAC,CAAC;QACvC,MAAM,KAAK,GAAoB;YAC7B,OAAO,EAAE,CAAC,IAAA,cAAM,EAAC,EAAE,CAAC,CAAC;YACrB,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YACtD,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YACrD,IAAI,EAAE;gBACJ;oBACE,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE;wBACL,IAAI,EAAE,KAAK;wBACX,yEAAyE;wBACzE,4EAA4E;wBAC5E,GAAG,EAAE;gCACe,IAAA,UAAE,EAAC,aAAa,CAAC,YAAY,IAAA,aAAK,EAAC,GAAG,EAAE,UAAU,CAAC;;gCAEnD,IAAA,UAAE,EAAC,aAAa,CAAC,kBAAkB,IAAA,aAAK,EAAC,GAAG,EAAE,UAAU,CAAC,UAAU,IAAA,UAAE,EAAC,WAAW,CAAC;aACrG;wBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;qBACpB;oBACD,SAAS,EAAE,IAAI;iBAChB;aACF;SACF,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,6BAAqB,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAEtF,qFAAqF;QACrF,sFAAsF;QACtF,sFAAsF;QACtF,iFAAiF;QACjF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3D,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,SAAS,CAAC,GAAG,CAAC,IAAA,qBAAa,EAAC,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,CAAE,CAAC,CAAC;YACrD,SAAS,CAAC,GAAG,CAAC,IAAA,qBAAa,EAAC,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAE,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,aAAa,GAAI,QAAQ,CAAC,CAAC,CAAS,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAA,gCAAgB,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAE9D,0EAA0E;QAC1E,MAAM,MAAM,GAAuB,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;QAChF,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAE/C,8EAA8E;QAC9E,MAAM,GAAG,GAAG,IAAA,gCAAgB,EAAC,EAAE,CAAC,CAAC;QACjC,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACtD,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACtE,MAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;QAED,2FAA2F;QAC3F,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,IAAI,CAAC,IAAA,0BAAkB,EAAE,MAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;gBAC7D,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBAClE,MAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -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.
|
|
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
|
|
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.
|
|
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=
|
|
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).
|
|
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).
|
|
168
|
+
: ((0, index_1.getEmInternalApi)(this.#entity.em).pendingPercolate.get(this.#entity.idTagged)?.get(this.#o2m.fieldName)
|
|
169
169
|
?.removes ?? [])),
|
|
170
170
|
];
|
|
171
171
|
}
|
package/build/changes.js.map
CHANGED
|
@@ -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;
|
package/build/config.d.ts.map
CHANGED
|
@@ -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) {
|