@mikro-orm/core 7.0.4 → 7.0.5-dev.1

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 (206) hide show
  1. package/EntityManager.d.ts +583 -884
  2. package/EntityManager.js +1895 -1922
  3. package/MikroORM.d.ts +74 -103
  4. package/MikroORM.js +179 -178
  5. package/README.md +1 -1
  6. package/cache/CacheAdapter.d.ts +36 -36
  7. package/cache/FileCacheAdapter.d.ts +24 -30
  8. package/cache/FileCacheAdapter.js +78 -80
  9. package/cache/GeneratedCacheAdapter.d.ts +20 -18
  10. package/cache/GeneratedCacheAdapter.js +30 -30
  11. package/cache/MemoryCacheAdapter.d.ts +20 -18
  12. package/cache/MemoryCacheAdapter.js +36 -35
  13. package/cache/NullCacheAdapter.d.ts +16 -16
  14. package/cache/NullCacheAdapter.js +24 -24
  15. package/connections/Connection.d.ts +84 -95
  16. package/connections/Connection.js +168 -165
  17. package/drivers/DatabaseDriver.d.ts +80 -186
  18. package/drivers/DatabaseDriver.js +443 -450
  19. package/drivers/IDatabaseDriver.d.ts +301 -440
  20. package/entity/BaseEntity.d.ts +83 -120
  21. package/entity/BaseEntity.js +43 -43
  22. package/entity/Collection.d.ts +179 -212
  23. package/entity/Collection.js +721 -727
  24. package/entity/EntityAssigner.d.ts +77 -88
  25. package/entity/EntityAssigner.js +230 -231
  26. package/entity/EntityFactory.d.ts +54 -66
  27. package/entity/EntityFactory.js +383 -425
  28. package/entity/EntityHelper.d.ts +22 -34
  29. package/entity/EntityHelper.js +267 -280
  30. package/entity/EntityIdentifier.d.ts +4 -4
  31. package/entity/EntityIdentifier.js +10 -10
  32. package/entity/EntityLoader.d.ts +72 -98
  33. package/entity/EntityLoader.js +723 -753
  34. package/entity/EntityRepository.d.ts +201 -316
  35. package/entity/EntityRepository.js +213 -213
  36. package/entity/PolymorphicRef.d.ts +5 -5
  37. package/entity/PolymorphicRef.js +10 -10
  38. package/entity/Reference.d.ts +82 -126
  39. package/entity/Reference.js +274 -278
  40. package/entity/WrappedEntity.d.ts +72 -115
  41. package/entity/WrappedEntity.js +166 -168
  42. package/entity/defineEntity.d.ts +636 -1315
  43. package/entity/defineEntity.js +518 -527
  44. package/entity/utils.d.ts +3 -13
  45. package/entity/utils.js +73 -71
  46. package/entity/validators.js +43 -43
  47. package/entity/wrap.js +8 -8
  48. package/enums.d.ts +253 -258
  49. package/enums.js +252 -251
  50. package/errors.d.ts +72 -114
  51. package/errors.js +253 -350
  52. package/events/EventManager.d.ts +14 -26
  53. package/events/EventManager.js +77 -79
  54. package/events/EventSubscriber.d.ts +29 -29
  55. package/events/TransactionEventBroadcaster.d.ts +8 -15
  56. package/events/TransactionEventBroadcaster.js +14 -14
  57. package/exceptions.d.ts +40 -23
  58. package/exceptions.js +52 -35
  59. package/hydration/Hydrator.d.ts +17 -42
  60. package/hydration/Hydrator.js +43 -43
  61. package/hydration/ObjectHydrator.d.ts +17 -50
  62. package/hydration/ObjectHydrator.js +416 -481
  63. package/index.d.ts +2 -116
  64. package/index.js +1 -10
  65. package/logging/DefaultLogger.d.ts +32 -34
  66. package/logging/DefaultLogger.js +86 -86
  67. package/logging/Logger.d.ts +41 -41
  68. package/logging/SimpleLogger.d.ts +11 -13
  69. package/logging/SimpleLogger.js +22 -22
  70. package/logging/colors.d.ts +6 -6
  71. package/logging/colors.js +10 -11
  72. package/logging/inspect.js +7 -7
  73. package/metadata/EntitySchema.d.ts +127 -211
  74. package/metadata/EntitySchema.js +398 -397
  75. package/metadata/MetadataDiscovery.d.ts +114 -114
  76. package/metadata/MetadataDiscovery.js +1870 -1951
  77. package/metadata/MetadataProvider.d.ts +21 -24
  78. package/metadata/MetadataProvider.js +84 -82
  79. package/metadata/MetadataStorage.d.ts +32 -38
  80. package/metadata/MetadataStorage.js +118 -118
  81. package/metadata/MetadataValidator.d.ts +39 -39
  82. package/metadata/MetadataValidator.js +338 -381
  83. package/metadata/discover-entities.d.ts +2 -5
  84. package/metadata/discover-entities.js +37 -35
  85. package/metadata/types.d.ts +531 -615
  86. package/naming-strategy/AbstractNamingStrategy.d.ts +39 -54
  87. package/naming-strategy/AbstractNamingStrategy.js +85 -90
  88. package/naming-strategy/EntityCaseNamingStrategy.d.ts +6 -6
  89. package/naming-strategy/EntityCaseNamingStrategy.js +22 -22
  90. package/naming-strategy/MongoNamingStrategy.d.ts +6 -6
  91. package/naming-strategy/MongoNamingStrategy.js +18 -18
  92. package/naming-strategy/NamingStrategy.d.ts +99 -109
  93. package/naming-strategy/UnderscoreNamingStrategy.d.ts +7 -7
  94. package/naming-strategy/UnderscoreNamingStrategy.js +21 -21
  95. package/not-supported.js +4 -7
  96. package/package.json +1 -1
  97. package/platforms/ExceptionConverter.d.ts +1 -1
  98. package/platforms/ExceptionConverter.js +4 -4
  99. package/platforms/Platform.d.ts +301 -310
  100. package/platforms/Platform.js +640 -663
  101. package/serialization/EntitySerializer.d.ts +26 -49
  102. package/serialization/EntitySerializer.js +218 -224
  103. package/serialization/EntityTransformer.d.ts +6 -10
  104. package/serialization/EntityTransformer.js +217 -219
  105. package/serialization/SerializationContext.d.ts +23 -27
  106. package/serialization/SerializationContext.js +105 -105
  107. package/types/ArrayType.d.ts +8 -8
  108. package/types/ArrayType.js +33 -33
  109. package/types/BigIntType.d.ts +10 -17
  110. package/types/BigIntType.js +37 -37
  111. package/types/BlobType.d.ts +3 -3
  112. package/types/BlobType.js +13 -13
  113. package/types/BooleanType.d.ts +4 -4
  114. package/types/BooleanType.js +12 -12
  115. package/types/CharacterType.d.ts +2 -2
  116. package/types/CharacterType.js +6 -6
  117. package/types/DateTimeType.d.ts +5 -5
  118. package/types/DateTimeType.js +15 -15
  119. package/types/DateType.d.ts +5 -5
  120. package/types/DateType.js +15 -15
  121. package/types/DecimalType.d.ts +7 -7
  122. package/types/DecimalType.js +26 -26
  123. package/types/DoubleType.d.ts +3 -3
  124. package/types/DoubleType.js +12 -12
  125. package/types/EnumArrayType.d.ts +5 -5
  126. package/types/EnumArrayType.js +24 -24
  127. package/types/EnumType.d.ts +3 -3
  128. package/types/EnumType.js +11 -11
  129. package/types/FloatType.d.ts +3 -3
  130. package/types/FloatType.js +9 -9
  131. package/types/IntegerType.d.ts +3 -3
  132. package/types/IntegerType.js +9 -9
  133. package/types/IntervalType.d.ts +4 -4
  134. package/types/IntervalType.js +12 -12
  135. package/types/JsonType.d.ts +8 -8
  136. package/types/JsonType.js +32 -32
  137. package/types/MediumIntType.d.ts +1 -1
  138. package/types/MediumIntType.js +3 -3
  139. package/types/SmallIntType.d.ts +3 -3
  140. package/types/SmallIntType.js +9 -9
  141. package/types/StringType.d.ts +4 -4
  142. package/types/StringType.js +12 -12
  143. package/types/TextType.d.ts +3 -3
  144. package/types/TextType.js +9 -9
  145. package/types/TimeType.d.ts +5 -5
  146. package/types/TimeType.js +17 -17
  147. package/types/TinyIntType.d.ts +3 -3
  148. package/types/TinyIntType.js +10 -10
  149. package/types/Type.d.ts +79 -83
  150. package/types/Type.js +82 -82
  151. package/types/Uint8ArrayType.d.ts +4 -4
  152. package/types/Uint8ArrayType.js +21 -21
  153. package/types/UnknownType.d.ts +4 -4
  154. package/types/UnknownType.js +12 -12
  155. package/types/UuidType.d.ts +5 -5
  156. package/types/UuidType.js +19 -19
  157. package/types/index.d.ts +49 -75
  158. package/types/index.js +26 -52
  159. package/typings.d.ts +737 -1250
  160. package/typings.js +231 -244
  161. package/unit-of-work/ChangeSet.d.ts +26 -26
  162. package/unit-of-work/ChangeSet.js +56 -56
  163. package/unit-of-work/ChangeSetComputer.d.ts +12 -12
  164. package/unit-of-work/ChangeSetComputer.js +170 -178
  165. package/unit-of-work/ChangeSetPersister.d.ts +44 -63
  166. package/unit-of-work/ChangeSetPersister.js +421 -442
  167. package/unit-of-work/CommitOrderCalculator.d.ts +40 -40
  168. package/unit-of-work/CommitOrderCalculator.js +88 -89
  169. package/unit-of-work/IdentityMap.d.ts +31 -31
  170. package/unit-of-work/IdentityMap.js +105 -105
  171. package/unit-of-work/UnitOfWork.d.ts +141 -181
  172. package/unit-of-work/UnitOfWork.js +1183 -1200
  173. package/utils/AbstractMigrator.d.ts +91 -111
  174. package/utils/AbstractMigrator.js +275 -275
  175. package/utils/AbstractSchemaGenerator.d.ts +34 -43
  176. package/utils/AbstractSchemaGenerator.js +122 -121
  177. package/utils/AsyncContext.d.ts +3 -3
  178. package/utils/AsyncContext.js +35 -34
  179. package/utils/Configuration.d.ts +808 -852
  180. package/utils/Configuration.js +344 -359
  181. package/utils/Cursor.d.ts +22 -40
  182. package/utils/Cursor.js +127 -135
  183. package/utils/DataloaderUtils.d.ts +43 -58
  184. package/utils/DataloaderUtils.js +198 -203
  185. package/utils/EntityComparator.d.ts +81 -98
  186. package/utils/EntityComparator.js +732 -828
  187. package/utils/NullHighlighter.d.ts +1 -1
  188. package/utils/NullHighlighter.js +3 -3
  189. package/utils/QueryHelper.d.ts +51 -79
  190. package/utils/QueryHelper.js +361 -372
  191. package/utils/RawQueryFragment.d.ts +34 -50
  192. package/utils/RawQueryFragment.js +105 -107
  193. package/utils/RequestContext.d.ts +32 -32
  194. package/utils/RequestContext.js +53 -52
  195. package/utils/TransactionContext.d.ts +16 -16
  196. package/utils/TransactionContext.js +27 -27
  197. package/utils/TransactionManager.d.ts +58 -58
  198. package/utils/TransactionManager.js +197 -199
  199. package/utils/Utils.d.ts +145 -204
  200. package/utils/Utils.js +812 -812
  201. package/utils/clone.js +113 -104
  202. package/utils/env-vars.js +88 -90
  203. package/utils/fs-utils.d.ts +15 -15
  204. package/utils/fs-utils.js +181 -180
  205. package/utils/upsert-utils.d.ts +5 -20
  206. package/utils/upsert-utils.js +116 -114
package/entity/utils.d.ts CHANGED
@@ -3,25 +3,15 @@ import { LoadStrategy, ReferenceKind } from '../enums.js';
3
3
  /**
4
4
  * @internal
5
5
  */
6
- export declare function expandDotPaths<Entity>(
7
- meta: EntityMetadata<Entity>,
8
- populate?: readonly (string | PopulateOptions<Entity>)[],
9
- normalized?: boolean,
10
- ): PopulateOptions<Entity>[];
6
+ export declare function expandDotPaths<Entity>(meta: EntityMetadata<Entity>, populate?: readonly (string | PopulateOptions<Entity>)[], normalized?: boolean): PopulateOptions<Entity>[];
11
7
  /**
12
8
  * Returns the loading strategy based on the provided hint.
13
9
  * If `BALANCED` strategy is used, it will return JOINED if the property is a to-one relation.
14
10
  * @internal
15
11
  */
16
- export declare function getLoadingStrategy(
17
- strategy: LoadStrategy | `${LoadStrategy}`,
18
- kind: ReferenceKind,
19
- ): LoadStrategy.SELECT_IN | LoadStrategy.JOINED;
12
+ export declare function getLoadingStrategy(strategy: LoadStrategy | `${LoadStrategy}`, kind: ReferenceKind): LoadStrategy.SELECT_IN | LoadStrategy.JOINED;
20
13
  /**
21
14
  * Applies per-relation overrides from `populateHints` to the normalized populate tree.
22
15
  * @internal
23
16
  */
24
- export declare function applyPopulateHints<Entity>(
25
- populate: PopulateOptions<Entity>[],
26
- hints: Record<string, PopulateHintOptions>,
27
- ): void;
17
+ export declare function applyPopulateHints<Entity>(populate: PopulateOptions<Entity>[], hints: Record<string, PopulateHintOptions>): void;
package/entity/utils.js CHANGED
@@ -4,55 +4,57 @@ import { Utils } from '../utils/Utils.js';
4
4
  * Expands `books.perex` like populate to use `children` array instead of the dot syntax
5
5
  */
6
6
  function expandNestedPopulate(parentProp, parts, strategy, all) {
7
- const meta = parentProp.targetMeta;
8
- const field = parts.shift();
9
- const prop = meta.properties[field];
10
- const ret = { field, strategy, all };
11
- if (parts.length > 0) {
12
- ret.children = [expandNestedPopulate(prop, parts, strategy)];
13
- }
14
- return ret;
7
+ const meta = parentProp.targetMeta;
8
+ const field = parts.shift();
9
+ const prop = meta.properties[field];
10
+ const ret = { field, strategy, all };
11
+ if (parts.length > 0) {
12
+ ret.children = [expandNestedPopulate(prop, parts, strategy)];
13
+ }
14
+ return ret;
15
15
  }
16
16
  /**
17
17
  * @internal
18
18
  */
19
19
  export function expandDotPaths(meta, populate, normalized = false) {
20
- const ret = normalized
21
- ? populate
22
- : Utils.asArray(populate).map(field => {
23
- if (typeof field === 'string') {
24
- return { field };
20
+ const ret = normalized
21
+ ? populate
22
+ : Utils.asArray(populate).map(field => {
23
+ if (typeof field === 'string') {
24
+ return { field };
25
+ }
26
+ /* v8 ignore next */
27
+ return typeof field === 'boolean' || field.field === PopulatePath.ALL
28
+ ? { all: !!field, field: meta.primaryKeys[0] }
29
+ : field;
30
+ });
31
+ for (const p of ret) {
32
+ if (!p.field.includes('.')) {
33
+ continue;
34
+ }
35
+ const [f, ...parts] = p.field.split('.');
36
+ p.field = f;
37
+ p.children ??= [];
38
+ const prop = meta.properties[p.field];
39
+ if (parts[0] === PopulatePath.ALL) {
40
+ prop
41
+ .targetMeta.props.filter(prop => prop.lazy || prop.kind !== ReferenceKind.SCALAR)
42
+ .forEach(prop => p.children.push({ field: prop.name, strategy: p.strategy }));
43
+ }
44
+ else if (prop.kind === ReferenceKind.EMBEDDED) {
45
+ const embeddedProp = Object.values(prop.embeddedProps).find(c => c.embedded[1] === parts[0]);
46
+ ret.push({
47
+ ...p,
48
+ field: embeddedProp.name,
49
+ children: parts.length > 1 ? [expandNestedPopulate(embeddedProp, parts.slice(1), p.strategy, p.all)] : [],
50
+ });
51
+ p.children.push(expandNestedPopulate(prop, parts, p.strategy, p.all));
52
+ }
53
+ else {
54
+ p.children.push(expandNestedPopulate(prop, parts, p.strategy, p.all));
25
55
  }
26
- /* v8 ignore next */
27
- return typeof field === 'boolean' || field.field === PopulatePath.ALL
28
- ? { all: !!field, field: meta.primaryKeys[0] }
29
- : field;
30
- });
31
- for (const p of ret) {
32
- if (!p.field.includes('.')) {
33
- continue;
34
- }
35
- const [f, ...parts] = p.field.split('.');
36
- p.field = f;
37
- p.children ??= [];
38
- const prop = meta.properties[p.field];
39
- if (parts[0] === PopulatePath.ALL) {
40
- prop.targetMeta.props
41
- .filter(prop => prop.lazy || prop.kind !== ReferenceKind.SCALAR)
42
- .forEach(prop => p.children.push({ field: prop.name, strategy: p.strategy }));
43
- } else if (prop.kind === ReferenceKind.EMBEDDED) {
44
- const embeddedProp = Object.values(prop.embeddedProps).find(c => c.embedded[1] === parts[0]);
45
- ret.push({
46
- ...p,
47
- field: embeddedProp.name,
48
- children: parts.length > 1 ? [expandNestedPopulate(embeddedProp, parts.slice(1), p.strategy, p.all)] : [],
49
- });
50
- p.children.push(expandNestedPopulate(prop, parts, p.strategy, p.all));
51
- } else {
52
- p.children.push(expandNestedPopulate(prop, parts, p.strategy, p.all));
53
56
  }
54
- }
55
- return ret;
57
+ return ret;
56
58
  }
57
59
  /**
58
60
  * Returns the loading strategy based on the provided hint.
@@ -60,43 +62,43 @@ export function expandDotPaths(meta, populate, normalized = false) {
60
62
  * @internal
61
63
  */
62
64
  export function getLoadingStrategy(strategy, kind) {
63
- if (strategy === LoadStrategy.BALANCED) {
64
- return [ReferenceKind.MANY_TO_ONE, ReferenceKind.ONE_TO_ONE].includes(kind)
65
- ? LoadStrategy.JOINED
66
- : LoadStrategy.SELECT_IN;
67
- }
68
- return strategy;
65
+ if (strategy === LoadStrategy.BALANCED) {
66
+ return [ReferenceKind.MANY_TO_ONE, ReferenceKind.ONE_TO_ONE].includes(kind)
67
+ ? LoadStrategy.JOINED
68
+ : LoadStrategy.SELECT_IN;
69
+ }
70
+ return strategy;
69
71
  }
70
72
  function findPopulateEntry(populate, parts) {
71
- let current = populate;
72
- for (let i = 0; i < parts.length; i++) {
73
- const entry = current.find(p => p.field.split(':')[0] === parts[i]);
74
- if (!entry) {
75
- return undefined;
76
- }
77
- if (i === parts.length - 1) {
78
- return entry;
73
+ let current = populate;
74
+ for (let i = 0; i < parts.length; i++) {
75
+ const entry = current.find(p => p.field.split(':')[0] === parts[i]);
76
+ if (!entry) {
77
+ return undefined;
78
+ }
79
+ if (i === parts.length - 1) {
80
+ return entry;
81
+ }
82
+ current = (entry.children ?? []);
79
83
  }
80
- current = entry.children ?? [];
81
- }
82
- /* v8 ignore next */
83
- return undefined;
84
+ /* v8 ignore next */
85
+ return undefined;
84
86
  }
85
87
  /**
86
88
  * Applies per-relation overrides from `populateHints` to the normalized populate tree.
87
89
  * @internal
88
90
  */
89
91
  export function applyPopulateHints(populate, hints) {
90
- for (const [path, hint] of Object.entries(hints)) {
91
- const entry = findPopulateEntry(populate, path.split('.'));
92
- if (!entry) {
93
- continue;
94
- }
95
- if (hint.strategy != null) {
96
- entry.strategy = hint.strategy;
97
- }
98
- if (hint.joinType != null) {
99
- entry.joinType = hint.joinType;
92
+ for (const [path, hint] of Object.entries(hints)) {
93
+ const entry = findPopulateEntry(populate, path.split('.'));
94
+ if (!entry) {
95
+ continue;
96
+ }
97
+ if (hint.strategy != null) {
98
+ entry.strategy = hint.strategy;
99
+ }
100
+ if (hint.joinType != null) {
101
+ entry.joinType = hint.joinType;
102
+ }
100
103
  }
101
- }
102
104
  }
@@ -4,63 +4,63 @@ import { isRaw, Raw } from '../utils/RawQueryFragment.js';
4
4
  import { SCALAR_TYPES } from '../enums.js';
5
5
  /** @internal */
6
6
  export function validateProperty(prop, givenValue, entity) {
7
- if (givenValue == null || isRaw(givenValue)) {
8
- return;
9
- }
10
- const expectedType = prop.runtimeType;
11
- const propName = prop.embedded ? prop.name.replace(/~/g, '.') : prop.name;
12
- const givenType = Utils.getObjectType(givenValue);
13
- if (prop.enum && prop.items) {
14
- /* v8 ignore next */
15
- if (!prop.items.some(it => it === givenValue)) {
16
- throw ValidationError.fromWrongPropertyType(entity, propName, expectedType, givenType, givenValue);
7
+ if (givenValue == null || isRaw(givenValue)) {
8
+ return;
9
+ }
10
+ const expectedType = prop.runtimeType;
11
+ const propName = prop.embedded ? prop.name.replace(/~/g, '.') : prop.name;
12
+ const givenType = Utils.getObjectType(givenValue);
13
+ if (prop.enum && prop.items) {
14
+ /* v8 ignore next */
15
+ if (!prop.items.some(it => it === givenValue)) {
16
+ throw ValidationError.fromWrongPropertyType(entity, propName, expectedType, givenType, givenValue);
17
+ }
17
18
  }
18
- } else {
19
- if (givenType !== expectedType && SCALAR_TYPES.has(expectedType)) {
20
- throw ValidationError.fromWrongPropertyType(entity, propName, expectedType, givenType, givenValue);
19
+ else {
20
+ if (givenType !== expectedType && SCALAR_TYPES.has(expectedType)) {
21
+ throw ValidationError.fromWrongPropertyType(entity, propName, expectedType, givenType, givenValue);
22
+ }
21
23
  }
22
- }
23
24
  }
24
25
  function getValue(o, prop) {
25
- if (prop.embedded && prop.embedded[0] in o) {
26
- return o[prop.embedded[0]]?.[prop.embedded[1]];
27
- }
28
- /* v8 ignore next */
29
- if (prop.ref) {
30
- return o[prop.name]?.unwrap();
31
- }
32
- return o[prop.name];
26
+ if (prop.embedded && prop.embedded[0] in o) {
27
+ return o[prop.embedded[0]]?.[prop.embedded[1]];
28
+ }
29
+ /* v8 ignore next */
30
+ if (prop.ref) {
31
+ return o[prop.name]?.unwrap();
32
+ }
33
+ return o[prop.name];
33
34
  }
34
35
  /** @internal */
35
36
  export function validateEntity(entity, meta) {
36
- for (const prop of meta.validateProps) {
37
- validateProperty(prop, getValue(entity, prop), entity);
38
- }
37
+ for (const prop of meta.validateProps) {
38
+ validateProperty(prop, getValue(entity, prop), entity);
39
+ }
39
40
  }
40
41
  /** @internal */
41
42
  export function validateParams(params, type = 'search condition', field) {
42
- if (Utils.isPrimaryKey(params) || Utils.isEntity(params)) {
43
- return;
44
- }
45
- if (Array.isArray(params)) {
46
- return params.forEach(item => validateParams(item, type, field));
47
- }
48
- if (Utils.isPlainObject(params)) {
49
- Object.keys(params).forEach(k => validateParams(params[k], type, k));
50
- }
43
+ if (Utils.isPrimaryKey(params) || Utils.isEntity(params)) {
44
+ return;
45
+ }
46
+ if (Array.isArray(params)) {
47
+ return params.forEach(item => validateParams(item, type, field));
48
+ }
49
+ if (Utils.isPlainObject(params)) {
50
+ Object.keys(params).forEach(k => validateParams(params[k], type, k));
51
+ }
51
52
  }
52
53
  /** @internal */
53
54
  export function validatePrimaryKey(entity, meta) {
54
- const pkExists =
55
- meta.primaryKeys.every(pk => entity[pk] != null) ||
56
- (meta.serializedPrimaryKey && entity[meta.serializedPrimaryKey] != null);
57
- if (!entity || !pkExists) {
58
- throw ValidationError.fromMergeWithoutPK(meta);
59
- }
55
+ const pkExists = meta.primaryKeys.every(pk => entity[pk] != null) ||
56
+ (meta.serializedPrimaryKey && entity[meta.serializedPrimaryKey] != null);
57
+ if (!entity || !pkExists) {
58
+ throw ValidationError.fromMergeWithoutPK(meta);
59
+ }
60
60
  }
61
61
  /** @internal */
62
62
  export function validateEmptyWhere(where) {
63
- if (Utils.isEmpty(where) && !Raw.hasObjectFragments(where)) {
64
- throw new Error(`You cannot call 'EntityManager.findOne()' with empty 'where' parameter`);
65
- }
63
+ if (Utils.isEmpty(where) && !Raw.hasObjectFragments(where)) {
64
+ throw new Error(`You cannot call 'EntityManager.findOne()' with empty 'where' parameter`);
65
+ }
66
66
  }
package/entity/wrap.js CHANGED
@@ -3,13 +3,13 @@
3
3
  * use `preferHelper = true` to have access to the internal `__` properties like `__meta` or `__em`
4
4
  */
5
5
  export function wrap(entity, preferHelper = false) {
6
- if (!entity) {
7
- return entity;
8
- }
9
- if (entity.__baseEntity && !preferHelper) {
10
- return entity;
11
- }
12
- return entity.__helper ?? entity;
6
+ if (!entity) {
7
+ return entity;
8
+ }
9
+ if (entity.__baseEntity && !preferHelper) {
10
+ return entity;
11
+ }
12
+ return entity.__helper ?? entity;
13
13
  }
14
14
  /**
15
15
  * wraps entity type with WrappedEntity internal properties and helpers like init/isInitialized/populated/toJSON
@@ -17,5 +17,5 @@ export function wrap(entity, preferHelper = false) {
17
17
  * @internal
18
18
  */
19
19
  export function helper(entity) {
20
- return entity.__helper;
20
+ return entity.__helper;
21
21
  }