@mikro-orm/core 7.0.0-dev.1 → 7.0.0-dev.100

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 (281) hide show
  1. package/EntityManager.d.ts +96 -58
  2. package/EntityManager.js +465 -395
  3. package/MikroORM.d.ts +45 -35
  4. package/MikroORM.js +109 -160
  5. package/README.md +3 -2
  6. package/cache/CacheAdapter.js +1 -2
  7. package/cache/FileCacheAdapter.d.ts +2 -2
  8. package/cache/FileCacheAdapter.js +20 -27
  9. package/cache/GeneratedCacheAdapter.d.ts +2 -3
  10. package/cache/GeneratedCacheAdapter.js +1 -7
  11. package/cache/MemoryCacheAdapter.d.ts +1 -1
  12. package/cache/MemoryCacheAdapter.js +1 -5
  13. package/cache/NullCacheAdapter.d.ts +1 -1
  14. package/cache/NullCacheAdapter.js +1 -5
  15. package/cache/index.d.ts +4 -5
  16. package/cache/index.js +4 -21
  17. package/connections/Connection.d.ts +22 -14
  18. package/connections/Connection.js +27 -23
  19. package/connections/index.d.ts +1 -1
  20. package/connections/index.js +1 -17
  21. package/drivers/DatabaseDriver.d.ts +25 -15
  22. package/drivers/DatabaseDriver.js +77 -64
  23. package/drivers/IDatabaseDriver.d.ts +40 -16
  24. package/drivers/IDatabaseDriver.js +1 -4
  25. package/drivers/index.d.ts +2 -2
  26. package/drivers/index.js +2 -18
  27. package/entity/BaseEntity.d.ts +6 -7
  28. package/entity/BaseEntity.js +16 -23
  29. package/entity/Collection.d.ts +98 -34
  30. package/entity/Collection.js +466 -131
  31. package/entity/EntityAssigner.d.ts +3 -3
  32. package/entity/EntityAssigner.js +67 -64
  33. package/entity/EntityFactory.d.ts +10 -3
  34. package/entity/EntityFactory.js +112 -91
  35. package/entity/EntityHelper.d.ts +2 -2
  36. package/entity/EntityHelper.js +66 -53
  37. package/entity/EntityIdentifier.d.ts +1 -1
  38. package/entity/EntityIdentifier.js +1 -5
  39. package/entity/EntityLoader.d.ts +8 -7
  40. package/entity/EntityLoader.js +161 -128
  41. package/entity/EntityRepository.d.ts +8 -8
  42. package/entity/EntityRepository.js +7 -11
  43. package/entity/Reference.d.ts +10 -13
  44. package/entity/Reference.js +64 -46
  45. package/entity/WrappedEntity.d.ts +12 -17
  46. package/entity/WrappedEntity.js +22 -31
  47. package/entity/defineEntity.d.ts +568 -0
  48. package/entity/defineEntity.js +529 -0
  49. package/entity/index.d.ts +14 -13
  50. package/entity/index.js +14 -29
  51. package/entity/utils.d.ts +8 -1
  52. package/entity/utils.js +22 -13
  53. package/entity/validators.d.ts +11 -0
  54. package/entity/validators.js +65 -0
  55. package/entity/wrap.d.ts +1 -1
  56. package/entity/wrap.js +2 -6
  57. package/enums.d.ts +24 -9
  58. package/enums.js +50 -41
  59. package/errors.d.ts +11 -3
  60. package/errors.js +42 -32
  61. package/events/EventManager.d.ts +5 -4
  62. package/events/EventManager.js +26 -22
  63. package/events/EventSubscriber.d.ts +8 -5
  64. package/events/EventSubscriber.js +1 -2
  65. package/events/TransactionEventBroadcaster.d.ts +3 -3
  66. package/events/TransactionEventBroadcaster.js +1 -5
  67. package/events/index.d.ts +3 -3
  68. package/events/index.js +3 -19
  69. package/exceptions.js +18 -39
  70. package/hydration/Hydrator.d.ts +5 -5
  71. package/hydration/Hydrator.js +2 -6
  72. package/hydration/ObjectHydrator.d.ts +7 -7
  73. package/hydration/ObjectHydrator.js +58 -50
  74. package/hydration/index.d.ts +2 -2
  75. package/hydration/index.js +2 -18
  76. package/index.d.ts +21 -21
  77. package/index.js +20 -46
  78. package/logging/DefaultLogger.d.ts +2 -2
  79. package/logging/DefaultLogger.js +10 -13
  80. package/logging/Logger.d.ts +1 -1
  81. package/logging/Logger.js +1 -2
  82. package/logging/SimpleLogger.d.ts +3 -3
  83. package/logging/SimpleLogger.js +2 -6
  84. package/logging/colors.js +1 -5
  85. package/logging/index.d.ts +5 -4
  86. package/logging/index.js +5 -20
  87. package/logging/inspect.d.ts +2 -0
  88. package/logging/inspect.js +16 -0
  89. package/metadata/EntitySchema.d.ts +14 -10
  90. package/metadata/EntitySchema.js +78 -64
  91. package/metadata/MetadataDiscovery.d.ts +11 -14
  92. package/metadata/MetadataDiscovery.js +278 -317
  93. package/metadata/MetadataProvider.d.ts +13 -4
  94. package/metadata/MetadataProvider.js +47 -8
  95. package/metadata/MetadataStorage.d.ts +2 -7
  96. package/metadata/MetadataStorage.js +19 -35
  97. package/metadata/MetadataValidator.d.ts +3 -10
  98. package/metadata/MetadataValidator.js +51 -64
  99. package/metadata/discover-entities.d.ts +5 -0
  100. package/metadata/discover-entities.js +40 -0
  101. package/metadata/index.d.ts +6 -6
  102. package/metadata/index.js +6 -22
  103. package/metadata/types.d.ts +480 -0
  104. package/metadata/types.js +1 -0
  105. package/naming-strategy/AbstractNamingStrategy.d.ts +7 -3
  106. package/naming-strategy/AbstractNamingStrategy.js +11 -9
  107. package/naming-strategy/EntityCaseNamingStrategy.d.ts +1 -1
  108. package/naming-strategy/EntityCaseNamingStrategy.js +2 -6
  109. package/naming-strategy/MongoNamingStrategy.d.ts +1 -1
  110. package/naming-strategy/MongoNamingStrategy.js +2 -6
  111. package/naming-strategy/NamingStrategy.d.ts +12 -2
  112. package/naming-strategy/NamingStrategy.js +1 -2
  113. package/naming-strategy/UnderscoreNamingStrategy.d.ts +1 -1
  114. package/naming-strategy/UnderscoreNamingStrategy.js +2 -6
  115. package/naming-strategy/index.d.ts +5 -5
  116. package/naming-strategy/index.js +5 -21
  117. package/not-supported.d.ts +2 -0
  118. package/not-supported.js +4 -0
  119. package/package.json +19 -20
  120. package/platforms/ExceptionConverter.d.ts +2 -2
  121. package/platforms/ExceptionConverter.js +4 -8
  122. package/platforms/Platform.d.ts +15 -22
  123. package/platforms/Platform.js +58 -88
  124. package/platforms/index.d.ts +2 -2
  125. package/platforms/index.js +2 -18
  126. package/serialization/EntitySerializer.d.ts +4 -2
  127. package/serialization/EntitySerializer.js +64 -51
  128. package/serialization/EntityTransformer.d.ts +1 -1
  129. package/serialization/EntityTransformer.js +48 -42
  130. package/serialization/SerializationContext.d.ts +2 -2
  131. package/serialization/SerializationContext.js +24 -25
  132. package/serialization/index.d.ts +3 -3
  133. package/serialization/index.js +3 -19
  134. package/types/ArrayType.d.ts +3 -3
  135. package/types/ArrayType.js +6 -11
  136. package/types/BigIntType.d.ts +12 -9
  137. package/types/BigIntType.js +6 -6
  138. package/types/BlobType.d.ts +3 -4
  139. package/types/BlobType.js +2 -11
  140. package/types/BooleanType.d.ts +5 -4
  141. package/types/BooleanType.js +5 -6
  142. package/types/CharacterType.d.ts +3 -3
  143. package/types/CharacterType.js +2 -6
  144. package/types/DateTimeType.d.ts +3 -3
  145. package/types/DateTimeType.js +2 -6
  146. package/types/DateType.d.ts +3 -3
  147. package/types/DateType.js +2 -6
  148. package/types/DecimalType.d.ts +9 -7
  149. package/types/DecimalType.js +5 -8
  150. package/types/DoubleType.d.ts +3 -3
  151. package/types/DoubleType.js +4 -7
  152. package/types/EnumArrayType.d.ts +4 -4
  153. package/types/EnumArrayType.js +4 -10
  154. package/types/EnumType.d.ts +3 -3
  155. package/types/EnumType.js +2 -6
  156. package/types/FloatType.d.ts +3 -3
  157. package/types/FloatType.js +2 -6
  158. package/types/IntegerType.d.ts +3 -3
  159. package/types/IntegerType.js +2 -6
  160. package/types/IntervalType.d.ts +3 -3
  161. package/types/IntervalType.js +2 -6
  162. package/types/JsonType.d.ts +4 -4
  163. package/types/JsonType.js +9 -8
  164. package/types/MediumIntType.d.ts +3 -3
  165. package/types/MediumIntType.js +2 -6
  166. package/types/SmallIntType.d.ts +3 -3
  167. package/types/SmallIntType.js +2 -6
  168. package/types/StringType.d.ts +3 -3
  169. package/types/StringType.js +2 -6
  170. package/types/TextType.d.ts +3 -3
  171. package/types/TextType.js +2 -6
  172. package/types/TimeType.d.ts +3 -3
  173. package/types/TimeType.js +4 -8
  174. package/types/TinyIntType.d.ts +3 -3
  175. package/types/TinyIntType.js +3 -6
  176. package/types/Type.d.ts +4 -6
  177. package/types/Type.js +6 -10
  178. package/types/Uint8ArrayType.d.ts +3 -4
  179. package/types/Uint8ArrayType.js +3 -12
  180. package/types/UnknownType.d.ts +3 -3
  181. package/types/UnknownType.js +2 -6
  182. package/types/UuidType.d.ts +3 -3
  183. package/types/UuidType.js +2 -6
  184. package/types/index.d.ts +25 -25
  185. package/types/index.js +52 -79
  186. package/typings.d.ts +134 -93
  187. package/typings.js +67 -65
  188. package/unit-of-work/ChangeSet.d.ts +1 -4
  189. package/unit-of-work/ChangeSet.js +13 -17
  190. package/unit-of-work/ChangeSetComputer.d.ts +8 -9
  191. package/unit-of-work/ChangeSetComputer.js +36 -38
  192. package/unit-of-work/ChangeSetPersister.d.ts +11 -9
  193. package/unit-of-work/ChangeSetPersister.js +100 -65
  194. package/unit-of-work/CommitOrderCalculator.d.ts +1 -1
  195. package/unit-of-work/CommitOrderCalculator.js +6 -10
  196. package/unit-of-work/IdentityMap.d.ts +1 -1
  197. package/unit-of-work/IdentityMap.js +1 -5
  198. package/unit-of-work/UnitOfWork.d.ts +16 -8
  199. package/unit-of-work/UnitOfWork.js +266 -209
  200. package/unit-of-work/index.d.ts +6 -6
  201. package/unit-of-work/index.js +6 -22
  202. package/utils/AbstractSchemaGenerator.d.ts +11 -11
  203. package/utils/AbstractSchemaGenerator.js +21 -20
  204. package/utils/Configuration.d.ts +774 -224
  205. package/utils/Configuration.js +166 -216
  206. package/utils/ConfigurationLoader.d.ts +1 -53
  207. package/utils/ConfigurationLoader.js +1 -367
  208. package/utils/Cursor.d.ts +6 -9
  209. package/utils/Cursor.js +25 -25
  210. package/utils/DataloaderUtils.d.ts +18 -8
  211. package/utils/DataloaderUtils.js +63 -21
  212. package/utils/EntityComparator.d.ts +9 -5
  213. package/utils/EntityComparator.js +155 -108
  214. package/utils/NullHighlighter.d.ts +1 -1
  215. package/utils/NullHighlighter.js +1 -5
  216. package/utils/QueryHelper.d.ts +12 -4
  217. package/utils/QueryHelper.js +110 -53
  218. package/utils/RawQueryFragment.d.ts +37 -14
  219. package/utils/RawQueryFragment.js +50 -33
  220. package/utils/RequestContext.d.ts +2 -2
  221. package/utils/RequestContext.js +3 -7
  222. package/utils/TransactionContext.d.ts +1 -1
  223. package/utils/TransactionContext.js +4 -8
  224. package/utils/TransactionManager.d.ts +65 -0
  225. package/utils/TransactionManager.js +223 -0
  226. package/utils/Utils.d.ts +16 -100
  227. package/utils/Utils.js +114 -332
  228. package/utils/clone.js +7 -11
  229. package/utils/env-vars.d.ts +3 -0
  230. package/utils/env-vars.js +87 -0
  231. package/utils/fs-utils.d.ts +12 -0
  232. package/utils/fs-utils.js +97 -0
  233. package/utils/index.d.ts +14 -13
  234. package/utils/index.js +14 -29
  235. package/utils/upsert-utils.d.ts +8 -3
  236. package/utils/upsert-utils.js +57 -10
  237. package/decorators/Check.d.ts +0 -3
  238. package/decorators/Check.js +0 -16
  239. package/decorators/CreateRequestContext.d.ts +0 -3
  240. package/decorators/CreateRequestContext.js +0 -33
  241. package/decorators/Embeddable.d.ts +0 -8
  242. package/decorators/Embeddable.js +0 -14
  243. package/decorators/Embedded.d.ts +0 -18
  244. package/decorators/Embedded.js +0 -20
  245. package/decorators/Entity.d.ts +0 -18
  246. package/decorators/Entity.js +0 -16
  247. package/decorators/Enum.d.ts +0 -9
  248. package/decorators/Enum.js +0 -19
  249. package/decorators/Filter.d.ts +0 -2
  250. package/decorators/Filter.js +0 -11
  251. package/decorators/Formula.d.ts +0 -5
  252. package/decorators/Formula.js +0 -18
  253. package/decorators/Indexed.d.ts +0 -17
  254. package/decorators/Indexed.js +0 -24
  255. package/decorators/ManyToMany.d.ts +0 -40
  256. package/decorators/ManyToMany.js +0 -16
  257. package/decorators/ManyToOne.d.ts +0 -30
  258. package/decorators/ManyToOne.js +0 -16
  259. package/decorators/OneToMany.d.ts +0 -28
  260. package/decorators/OneToMany.js +0 -20
  261. package/decorators/OneToOne.d.ts +0 -24
  262. package/decorators/OneToOne.js +0 -10
  263. package/decorators/PrimaryKey.d.ts +0 -9
  264. package/decorators/PrimaryKey.js +0 -23
  265. package/decorators/Property.d.ts +0 -250
  266. package/decorators/Property.js +0 -34
  267. package/decorators/Transactional.d.ts +0 -13
  268. package/decorators/Transactional.js +0 -31
  269. package/decorators/hooks.d.ts +0 -16
  270. package/decorators/hooks.js +0 -59
  271. package/decorators/index.d.ts +0 -17
  272. package/decorators/index.js +0 -36
  273. package/entity/ArrayCollection.d.ts +0 -116
  274. package/entity/ArrayCollection.js +0 -399
  275. package/entity/EntityValidator.d.ts +0 -19
  276. package/entity/EntityValidator.js +0 -154
  277. package/index.mjs +0 -199
  278. package/metadata/ReflectMetadataProvider.d.ts +0 -8
  279. package/metadata/ReflectMetadataProvider.js +0 -48
  280. package/utils/resolveContextProvider.d.ts +0 -10
  281. package/utils/resolveContextProvider.js +0 -31
@@ -1,18 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EntityHelper = void 0;
4
- const node_util_1 = require("node:util");
5
- const typings_1 = require("../typings");
6
- const EntityTransformer_1 = require("../serialization/EntityTransformer");
7
- const Reference_1 = require("./Reference");
8
- const Utils_1 = require("../utils/Utils");
9
- const WrappedEntity_1 = require("./WrappedEntity");
10
- const enums_1 = require("../enums");
11
- const wrap_1 = require("./wrap");
1
+ import { EagerProps, EntityRepositoryType, HiddenProps, OptionalProps, PrimaryKeyProp, } from '../typings.js';
2
+ import { EntityTransformer } from '../serialization/EntityTransformer.js';
3
+ import { Reference } from './Reference.js';
4
+ import { Utils } from '../utils/Utils.js';
5
+ import { WrappedEntity } from './WrappedEntity.js';
6
+ import { ReferenceKind } from '../enums.js';
7
+ import { helper } from './wrap.js';
8
+ import { inspect } from '../logging/inspect.js';
12
9
  /**
13
10
  * @internal
14
11
  */
15
- class EntityHelper {
12
+ export class EntityHelper {
16
13
  static decorate(meta, em) {
17
14
  const fork = em.fork(); // use fork so we can access `EntityFactory`
18
15
  const serializedPrimaryKey = meta.props.find(p => p.serializedPrimaryKey);
@@ -35,7 +32,7 @@ class EntityHelper {
35
32
  const prototype = meta.prototype;
36
33
  if (!prototype.toJSON) { // toJSON can be overridden
37
34
  prototype.toJSON = function (...args) {
38
- return EntityTransformer_1.EntityTransformer.toObject(this, ...args.slice(meta.toJsonParams.length));
35
+ return EntityTransformer.toObject(this, ...args);
39
36
  };
40
37
  }
41
38
  }
@@ -56,7 +53,7 @@ class EntityHelper {
56
53
  __helper: {
57
54
  get() {
58
55
  Object.defineProperty(this, '__helper', {
59
- value: new WrappedEntity_1.WrappedEntity(this, em.getHydrator(), ...helperParams),
56
+ value: new WrappedEntity(this, em.getHydrator(), ...helperParams),
60
57
  enumerable: false,
61
58
  configurable: true,
62
59
  });
@@ -78,8 +75,8 @@ class EntityHelper {
78
75
  Object
79
76
  .values(meta.properties)
80
77
  .forEach(prop => {
81
- const isCollection = [enums_1.ReferenceKind.ONE_TO_MANY, enums_1.ReferenceKind.MANY_TO_MANY].includes(prop.kind);
82
- const isReference = [enums_1.ReferenceKind.ONE_TO_ONE, enums_1.ReferenceKind.MANY_TO_ONE].includes(prop.kind) && (prop.inversedBy || prop.mappedBy) && !prop.mapToPk;
78
+ const isCollection = [ReferenceKind.ONE_TO_MANY, ReferenceKind.MANY_TO_MANY].includes(prop.kind);
79
+ const isReference = [ReferenceKind.ONE_TO_ONE, ReferenceKind.MANY_TO_ONE].includes(prop.kind) && (prop.inversedBy || prop.mappedBy) && !prop.mapToPk;
83
80
  if (isReference) {
84
81
  Object.defineProperty(meta.prototype, prop.name, {
85
82
  set(val) {
@@ -90,7 +87,7 @@ class EntityHelper {
90
87
  });
91
88
  return;
92
89
  }
93
- if (prop.inherited || prop.primary || prop.persist === false || prop.trackChanges === false || prop.embedded || isCollection) {
90
+ if (prop.inherited || prop.primary || prop.accessor || prop.persist === false || prop.embedded || isCollection) {
94
91
  return;
95
92
  }
96
93
  Object.defineProperty(meta.prototype, prop.name, {
@@ -101,13 +98,11 @@ class EntityHelper {
101
98
  },
102
99
  set(val) {
103
100
  this.__helper.__data[prop.name] = val;
104
- this.__helper.__touched = !this.__helper.hydrator.isRunning();
105
101
  },
106
102
  enumerable: true,
107
103
  configurable: true,
108
104
  });
109
105
  this.__helper.__data[prop.name] = val;
110
- this.__helper.__touched = !this.__helper.hydrator.isRunning();
111
106
  },
112
107
  configurable: true,
113
108
  });
@@ -115,49 +110,60 @@ class EntityHelper {
115
110
  }
116
111
  static defineCustomInspect(meta) {
117
112
  // @ts-ignore
118
- meta.prototype[node_util_1.inspect.custom] ??= function (depth = 2) {
119
- const object = { ...this };
113
+ meta.prototype[Symbol.for('nodejs.util.inspect.custom')] ??= function (depth = 2) {
114
+ const object = {};
115
+ const keys = new Set(Utils.keys(this));
116
+ for (const prop of meta.props) {
117
+ if (keys.has(prop.name) || (prop.getter && prop.accessor === prop.name)) {
118
+ object[prop.name] = this[prop.name];
119
+ }
120
+ }
121
+ for (const key of keys) {
122
+ if (!meta.properties[key]) {
123
+ object[key] = this[key];
124
+ }
125
+ }
120
126
  // ensure we dont have internal symbols in the POJO
121
- [typings_1.OptionalProps, typings_1.EntityRepositoryType, typings_1.PrimaryKeyProp, typings_1.EagerProps, typings_1.HiddenProps].forEach(sym => delete object[sym]);
127
+ [OptionalProps, EntityRepositoryType, PrimaryKeyProp, EagerProps, HiddenProps].forEach(sym => delete object[sym]);
122
128
  meta.props
123
129
  .filter(prop => object[prop.name] === undefined)
124
130
  .forEach(prop => delete object[prop.name]);
125
- const ret = (0, node_util_1.inspect)(object, { depth });
126
- let name = (this).constructor.name;
131
+ const ret = inspect(object, { depth });
132
+ let name = this.constructor.name;
127
133
  const showEM = ['true', 't', '1'].includes(process.env.MIKRO_ORM_LOG_EM_ID?.toString().toLowerCase() ?? '');
128
134
  if (showEM) {
129
- if ((0, wrap_1.helper)(this).__em) {
130
- name += ` [managed by ${(0, wrap_1.helper)(this).__em.id}]`;
135
+ if (helper(this).__em) {
136
+ name += ` [managed by ${helper(this).__em.id}]`;
131
137
  }
132
138
  else {
133
139
  name += ` [not managed]`;
134
140
  }
135
141
  }
136
142
  // distinguish not initialized entities
137
- if (!(0, wrap_1.helper)(this).__initialized) {
143
+ if (!helper(this).__initialized) {
138
144
  name = `(${name})`;
139
145
  }
140
146
  return ret === '[Object]' ? `[${name}]` : name + ' ' + ret;
141
147
  };
142
148
  }
143
149
  static defineReferenceProperty(meta, prop, ref, hydrator) {
144
- const wrapped = (0, wrap_1.helper)(ref);
150
+ const wrapped = helper(ref);
145
151
  Object.defineProperty(ref, prop.name, {
146
152
  get() {
147
- return (0, wrap_1.helper)(ref).__data[prop.name];
153
+ return helper(ref).__data[prop.name];
148
154
  },
149
155
  set(val) {
150
- const entity = Reference_1.Reference.unwrapReference(val ?? wrapped.__data[prop.name]);
151
- const old = Reference_1.Reference.unwrapReference(wrapped.__data[prop.name]);
152
- wrapped.__data[prop.name] = Reference_1.Reference.wrapReference(val, prop);
156
+ const entity = Reference.unwrapReference(val ?? wrapped.__data[prop.name]);
157
+ const old = Reference.unwrapReference(wrapped.__data[prop.name]);
158
+ if (old && old !== entity && prop.kind === ReferenceKind.MANY_TO_ONE && prop.inversedBy && old[prop.inversedBy]) {
159
+ old[prop.inversedBy].removeWithoutPropagation(this);
160
+ }
161
+ wrapped.__data[prop.name] = Reference.wrapReference(val, prop);
153
162
  // when propagation from inside hydration, we set the FK to the entity data immediately
154
163
  if (val && hydrator.isRunning() && wrapped.__originalEntityData && prop.owner) {
155
- wrapped.__originalEntityData[prop.name] = Utils_1.Utils.getPrimaryKeyValues(wrapped.__data[prop.name], prop.targetMeta.primaryKeys, true);
164
+ wrapped.__originalEntityData[prop.name] = Utils.getPrimaryKeyValues(wrapped.__data[prop.name], prop.targetMeta, true);
156
165
  }
157
- else {
158
- wrapped.__touched = !hydrator.isRunning();
159
- }
160
- EntityHelper.propagate(meta, entity, this, prop, Reference_1.Reference.unwrapReference(val), old);
166
+ EntityHelper.propagate(meta, entity, this, prop, Reference.unwrapReference(val), old);
161
167
  },
162
168
  enumerable: true,
163
169
  configurable: true,
@@ -172,51 +178,59 @@ class EntityHelper {
172
178
  continue;
173
179
  }
174
180
  const inverse = value?.[prop2.name];
175
- if (prop.kind === enums_1.ReferenceKind.MANY_TO_ONE && Utils_1.Utils.isCollection(inverse) && inverse.isInitialized()) {
181
+ if (prop.ref && owner[prop.name]) {
182
+ // eslint-disable-next-line dot-notation
183
+ owner[prop.name]['property'] = prop;
184
+ }
185
+ if (Utils.isCollection(inverse) && inverse.isPartial()) {
186
+ continue;
187
+ }
188
+ if (prop.kind === ReferenceKind.MANY_TO_ONE && Utils.isCollection(inverse) && inverse.isInitialized()) {
176
189
  inverse.addWithoutPropagation(owner);
177
- (0, wrap_1.helper)(owner).__em?.getUnitOfWork().cancelOrphanRemoval(owner);
190
+ helper(owner).__em?.getUnitOfWork().cancelOrphanRemoval(owner);
178
191
  }
179
- if (prop.kind === enums_1.ReferenceKind.ONE_TO_ONE) {
180
- if ((value != null && Reference_1.Reference.unwrapReference(inverse) !== owner) ||
192
+ if (prop.kind === ReferenceKind.ONE_TO_ONE) {
193
+ if ((value != null && Reference.unwrapReference(inverse) !== owner) ||
181
194
  (value == null && entity?.[prop2.name] != null)) {
182
- if (entity && (!prop.owner || (0, wrap_1.helper)(entity).__initialized)) {
195
+ if (entity && (!prop.owner || helper(entity).__initialized)) {
183
196
  EntityHelper.propagateOneToOne(entity, owner, prop, prop2, value, old);
184
197
  }
185
198
  if (old && prop.orphanRemoval) {
186
- (0, wrap_1.helper)(old).__em?.getUnitOfWork().scheduleOrphanRemoval(old);
199
+ helper(old).__em?.getUnitOfWork().scheduleOrphanRemoval(old);
187
200
  }
188
201
  }
189
202
  }
190
203
  }
191
204
  }
192
205
  static propagateOneToOne(entity, owner, prop, prop2, value, old) {
193
- (0, wrap_1.helper)(entity).__pk = (0, wrap_1.helper)(entity).getPrimaryKey();
206
+ helper(entity).__pk = helper(entity).getPrimaryKey();
194
207
  // the inverse side will be changed on the `value` too, so we need to clean-up and schedule orphan removal there too
195
- if (!prop.primary && !prop2.mapToPk && value?.[prop2.name] != null && Reference_1.Reference.unwrapReference(value[prop2.name]) !== entity) {
196
- const other = Reference_1.Reference.unwrapReference(value[prop2.name]);
197
- delete (0, wrap_1.helper)(other).__data[prop.name];
208
+ if (!prop.primary && !prop2.mapToPk && value?.[prop2.name] != null && Reference.unwrapReference(value[prop2.name]) !== entity) {
209
+ const other = Reference.unwrapReference(value[prop2.name]);
210
+ delete helper(other).__data[prop.name];
198
211
  if (prop2.orphanRemoval) {
199
- (0, wrap_1.helper)(other).__em?.getUnitOfWork().scheduleOrphanRemoval(other);
212
+ helper(other).__em?.getUnitOfWork().scheduleOrphanRemoval(other);
200
213
  }
201
214
  }
202
215
  if (value == null) {
203
216
  entity[prop2.name] = value;
204
217
  }
205
218
  else if (prop2.mapToPk) {
206
- entity[prop2.name] = (0, wrap_1.helper)(owner).getPrimaryKey();
219
+ entity[prop2.name] = helper(owner).getPrimaryKey();
207
220
  }
208
221
  else {
209
- entity[prop2.name] = Reference_1.Reference.wrapReference(owner, prop);
222
+ entity[prop2.name] = Reference.wrapReference(owner, prop);
210
223
  }
211
224
  if (old?.[prop2.name] != null) {
212
- delete (0, wrap_1.helper)(old).__data[prop2.name];
225
+ delete helper(old).__data[prop2.name];
226
+ old[prop2.name] = null;
213
227
  }
214
228
  }
215
229
  static ensurePropagation(entity) {
216
230
  if (entity.__gettersDefined) {
217
231
  return;
218
232
  }
219
- const wrapped = (0, wrap_1.helper)(entity);
233
+ const wrapped = helper(entity);
220
234
  const meta = wrapped.__meta;
221
235
  const platform = wrapped.__platform;
222
236
  const serializedPrimaryKey = meta.props.find(p => p.serializedPrimaryKey);
@@ -250,4 +264,3 @@ class EntityHelper {
250
264
  }
251
265
  }
252
266
  }
253
- exports.EntityHelper = EntityHelper;
@@ -1,4 +1,4 @@
1
- import type { IPrimaryKey } from '../typings';
1
+ import type { IPrimaryKey } from '../typings.js';
2
2
  /**
3
3
  * @internal
4
4
  */
@@ -1,10 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EntityIdentifier = void 0;
4
1
  /**
5
2
  * @internal
6
3
  */
7
- class EntityIdentifier {
4
+ export class EntityIdentifier {
8
5
  value;
9
6
  constructor(value) {
10
7
  this.value = value;
@@ -16,4 +13,3 @@ class EntityIdentifier {
16
13
  return this.value;
17
14
  }
18
15
  }
19
- exports.EntityIdentifier = EntityIdentifier;
@@ -1,8 +1,8 @@
1
- import type { ConnectionType, Dictionary, FilterQuery, PopulateOptions } from '../typings';
2
- import type { EntityManager } from '../EntityManager';
3
- import { LoadStrategy, type LockMode, type PopulateHint, PopulatePath, type QueryOrderMap } from '../enums';
4
- import type { EntityField } from '../drivers/IDatabaseDriver';
5
- import type { LoggingOptions } from '../logging/Logger';
1
+ import type { AnyEntity, ConnectionType, EntityProperty, FilterQuery, PopulateOptions } from '../typings.js';
2
+ import type { EntityManager } from '../EntityManager.js';
3
+ import { LoadStrategy, type LockMode, type PopulateHint, PopulatePath, type QueryOrderMap } from '../enums.js';
4
+ import type { EntityField, FilterOptions } from '../drivers/IDatabaseDriver.js';
5
+ import type { LoggingOptions } from '../logging/Logger.js';
6
6
  export type EntityLoaderOptions<Entity, Fields extends string = PopulatePath.ALL, Excludes extends string = never> = {
7
7
  where?: FilterQuery<Entity>;
8
8
  populateWhere?: PopulateHint | `${PopulateHint}`;
@@ -14,7 +14,7 @@ export type EntityLoaderOptions<Entity, Fields extends string = PopulatePath.ALL
14
14
  lookup?: boolean;
15
15
  convertCustomTypes?: boolean;
16
16
  ignoreLazyScalarProperties?: boolean;
17
- filters?: Dictionary<boolean | Dictionary> | string[] | boolean;
17
+ filters?: FilterOptions;
18
18
  strategy?: LoadStrategy;
19
19
  lockMode?: Exclude<LockMode, LockMode.OPTIMISTIC>;
20
20
  schema?: string;
@@ -49,7 +49,8 @@ export declare class EntityLoader {
49
49
  private findChildren;
50
50
  private mergePrimaryCondition;
51
51
  private populateField;
52
- private findChildrenFromPivotTable;
52
+ /** @internal */
53
+ findChildrenFromPivotTable<Entity extends object>(filtered: Entity[], prop: EntityProperty<Entity>, options: Required<EntityLoaderOptions<Entity>>, orderBy?: QueryOrderMap<Entity>[], populate?: PopulateOptions<Entity>, pivotJoin?: boolean): Promise<AnyEntity[][]>;
53
54
  private extractChildCondition;
54
55
  private buildFields;
55
56
  private getChildReferences;