joist-core 2.4.0-next.38 → 2.4.0-next.39
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/EntityManager.cjs +11 -3
- package/build/EntityManager.cjs.map +1 -1
- package/build/EntityManager.d.cts +8 -2
- package/build/EntityManager.d.cts.map +1 -1
- package/build/EntityManager.d.mts +8 -2
- package/build/EntityManager.d.mts.map +1 -1
- package/build/EntityManager.js +11 -3
- package/build/EntityManager.js.map +1 -1
- package/build/index.d.cts +2 -2
- package/build/index.d.mts +2 -2
- package/package.json +2 -2
package/build/EntityManager.cjs
CHANGED
|
@@ -523,7 +523,7 @@ var EntityManager = class EntityManager {
|
|
|
523
523
|
return require_upsert.upsert(this, type, input);
|
|
524
524
|
}
|
|
525
525
|
async clone(entityOrArray, opts) {
|
|
526
|
-
const { deep = {}, skipIf, skip = {}, postClone } = opts ?? {};
|
|
526
|
+
const { deep = {}, skipIf, skip = {}, overrides, postClone } = opts ?? {};
|
|
527
527
|
const todo = /* @__PURE__ */ new Set();
|
|
528
528
|
const skipMap = /* @__PURE__ */ new WeakMap();
|
|
529
529
|
await crawl(todo, skipMap, Array.isArray(entityOrArray) ? entityOrArray : [entityOrArray], deep, {
|
|
@@ -531,10 +531,14 @@ var EntityManager = class EntityManager {
|
|
|
531
531
|
skip
|
|
532
532
|
});
|
|
533
533
|
const deferredRelations = [];
|
|
534
|
+
const overrideMap = /* @__PURE__ */ new WeakMap();
|
|
534
535
|
const clones = [...todo].map((entity) => {
|
|
535
536
|
const skip = skipMap.get(entity) ?? [];
|
|
537
|
+
const override = overrides?.(entity) ?? {};
|
|
538
|
+
overrideMap.set(entity, override);
|
|
536
539
|
const meta = require_EntityMetadata.getMetadata(entity);
|
|
537
540
|
const copy = Object.fromEntries(Object.values(meta.allFields).map((f) => {
|
|
541
|
+
if (Object.hasOwn(override, f.fieldName)) return [f.fieldName, override[f.fieldName]];
|
|
538
542
|
if (skip.includes(f.fieldName)) return void 0;
|
|
539
543
|
switch (f.kind) {
|
|
540
544
|
case "primitive": if (!f.derived && !f.protected) return [f.fieldName, require_fields.getField(entity, f.fieldName)];
|
|
@@ -564,11 +568,15 @@ var EntityManager = class EntityManager {
|
|
|
564
568
|
default: require_utils.assertNever(f);
|
|
565
569
|
}
|
|
566
570
|
}).filter(isDefined));
|
|
567
|
-
return [entity, this.create(require_index.asConcreteCstr(meta.cstr),
|
|
571
|
+
return [entity, this.create(require_index.asConcreteCstr(meta.cstr), {
|
|
572
|
+
...copy,
|
|
573
|
+
...override
|
|
574
|
+
})];
|
|
568
575
|
});
|
|
569
576
|
const entityToClone = new Map(clones);
|
|
570
|
-
clones.forEach(([, clone]) => {
|
|
577
|
+
clones.forEach(([original, clone]) => {
|
|
571
578
|
require_index.getRelationEntries(clone).forEach(([fieldName, value]) => {
|
|
579
|
+
if (Object.hasOwn(overrideMap.get(original), fieldName)) return;
|
|
572
580
|
if (value instanceof require_relations_ManyToOneReference.ManyToOneReferenceImpl || value instanceof require_relations_PolymorphicReference.PolymorphicReferenceImpl || value instanceof require_relations_ReactiveReference.ReactiveReferenceImpl) {
|
|
573
581
|
const existingIdOrEntity = require_fields.getField(clone, fieldName);
|
|
574
582
|
const existing = require_Entity.isEntity(existingIdOrEntity) ? existingIdOrEntity : this.getEntity(existingIdOrEntity);
|