@mikro-orm/core 7.0.0-dev.31 → 7.0.0-dev.311

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 (214) hide show
  1. package/EntityManager.d.ts +69 -61
  2. package/EntityManager.js +365 -283
  3. package/MikroORM.d.ts +44 -35
  4. package/MikroORM.js +109 -142
  5. package/README.md +5 -3
  6. package/cache/FileCacheAdapter.d.ts +1 -2
  7. package/cache/FileCacheAdapter.js +19 -14
  8. package/cache/GeneratedCacheAdapter.d.ts +0 -1
  9. package/cache/GeneratedCacheAdapter.js +0 -2
  10. package/cache/index.d.ts +1 -2
  11. package/cache/index.js +0 -2
  12. package/connections/Connection.d.ts +12 -5
  13. package/connections/Connection.js +37 -15
  14. package/drivers/DatabaseDriver.d.ts +25 -16
  15. package/drivers/DatabaseDriver.js +144 -43
  16. package/drivers/IDatabaseDriver.d.ts +118 -23
  17. package/entity/BaseEntity.d.ts +63 -4
  18. package/entity/BaseEntity.js +0 -3
  19. package/entity/Collection.d.ts +101 -29
  20. package/entity/Collection.js +473 -115
  21. package/entity/EntityAssigner.js +37 -25
  22. package/entity/EntityFactory.d.ts +7 -1
  23. package/entity/EntityFactory.js +116 -64
  24. package/entity/EntityHelper.d.ts +2 -2
  25. package/entity/EntityHelper.js +69 -27
  26. package/entity/EntityLoader.d.ts +11 -10
  27. package/entity/EntityLoader.js +262 -98
  28. package/entity/EntityRepository.d.ts +28 -8
  29. package/entity/EntityRepository.js +8 -2
  30. package/entity/PolymorphicRef.d.ts +12 -0
  31. package/entity/PolymorphicRef.js +18 -0
  32. package/entity/Reference.d.ts +2 -6
  33. package/entity/Reference.js +52 -19
  34. package/entity/WrappedEntity.d.ts +3 -8
  35. package/entity/WrappedEntity.js +6 -7
  36. package/entity/defineEntity.d.ts +525 -311
  37. package/entity/defineEntity.js +134 -290
  38. package/entity/index.d.ts +2 -2
  39. package/entity/index.js +2 -2
  40. package/entity/utils.d.ts +6 -1
  41. package/entity/utils.js +46 -11
  42. package/entity/validators.d.ts +11 -0
  43. package/entity/validators.js +66 -0
  44. package/enums.d.ts +8 -6
  45. package/enums.js +13 -17
  46. package/errors.d.ts +20 -10
  47. package/errors.js +63 -31
  48. package/events/EventManager.d.ts +2 -1
  49. package/events/EventManager.js +24 -13
  50. package/events/index.d.ts +1 -1
  51. package/events/index.js +0 -1
  52. package/exceptions.js +7 -2
  53. package/hydration/Hydrator.js +1 -2
  54. package/hydration/ObjectHydrator.d.ts +4 -4
  55. package/hydration/ObjectHydrator.js +105 -46
  56. package/index.d.ts +2 -2
  57. package/index.js +1 -2
  58. package/logging/DefaultLogger.d.ts +1 -1
  59. package/logging/DefaultLogger.js +3 -4
  60. package/logging/SimpleLogger.d.ts +1 -1
  61. package/logging/colors.d.ts +1 -1
  62. package/logging/colors.js +5 -7
  63. package/logging/index.d.ts +2 -1
  64. package/logging/index.js +1 -1
  65. package/logging/inspect.d.ts +2 -0
  66. package/logging/inspect.js +11 -0
  67. package/metadata/EntitySchema.d.ts +47 -23
  68. package/metadata/EntitySchema.js +103 -34
  69. package/metadata/MetadataDiscovery.d.ts +64 -9
  70. package/metadata/MetadataDiscovery.js +866 -354
  71. package/metadata/MetadataProvider.d.ts +11 -2
  72. package/metadata/MetadataProvider.js +71 -2
  73. package/metadata/MetadataStorage.d.ts +13 -11
  74. package/metadata/MetadataStorage.js +72 -41
  75. package/metadata/MetadataValidator.d.ts +32 -9
  76. package/metadata/MetadataValidator.js +214 -44
  77. package/metadata/discover-entities.d.ts +5 -0
  78. package/metadata/discover-entities.js +40 -0
  79. package/metadata/index.d.ts +1 -1
  80. package/metadata/index.js +0 -1
  81. package/metadata/types.d.ts +577 -0
  82. package/metadata/types.js +1 -0
  83. package/naming-strategy/AbstractNamingStrategy.d.ts +16 -4
  84. package/naming-strategy/AbstractNamingStrategy.js +26 -5
  85. package/naming-strategy/EntityCaseNamingStrategy.d.ts +3 -3
  86. package/naming-strategy/EntityCaseNamingStrategy.js +6 -5
  87. package/naming-strategy/MongoNamingStrategy.d.ts +3 -3
  88. package/naming-strategy/MongoNamingStrategy.js +6 -6
  89. package/naming-strategy/NamingStrategy.d.ts +28 -4
  90. package/naming-strategy/UnderscoreNamingStrategy.d.ts +3 -3
  91. package/naming-strategy/UnderscoreNamingStrategy.js +6 -6
  92. package/naming-strategy/index.d.ts +1 -1
  93. package/naming-strategy/index.js +0 -1
  94. package/not-supported.d.ts +2 -0
  95. package/not-supported.js +8 -0
  96. package/package.json +47 -36
  97. package/platforms/ExceptionConverter.js +1 -1
  98. package/platforms/Platform.d.ts +11 -15
  99. package/platforms/Platform.js +72 -69
  100. package/serialization/EntitySerializer.d.ts +6 -3
  101. package/serialization/EntitySerializer.js +53 -29
  102. package/serialization/EntityTransformer.js +33 -21
  103. package/serialization/SerializationContext.d.ts +6 -6
  104. package/serialization/SerializationContext.js +4 -4
  105. package/types/ArrayType.d.ts +1 -1
  106. package/types/ArrayType.js +2 -3
  107. package/types/BigIntType.js +1 -1
  108. package/types/BlobType.d.ts +0 -1
  109. package/types/BlobType.js +0 -3
  110. package/types/BooleanType.d.ts +1 -0
  111. package/types/BooleanType.js +3 -0
  112. package/types/DecimalType.js +2 -2
  113. package/types/DoubleType.js +1 -1
  114. package/types/EnumArrayType.js +1 -2
  115. package/types/JsonType.d.ts +1 -1
  116. package/types/JsonType.js +7 -2
  117. package/types/TinyIntType.js +1 -1
  118. package/types/Type.d.ts +2 -4
  119. package/types/Type.js +3 -3
  120. package/types/Uint8ArrayType.d.ts +0 -1
  121. package/types/Uint8ArrayType.js +1 -4
  122. package/types/index.d.ts +3 -2
  123. package/typings.d.ts +427 -170
  124. package/typings.js +100 -45
  125. package/unit-of-work/ChangeSet.d.ts +4 -6
  126. package/unit-of-work/ChangeSet.js +8 -9
  127. package/unit-of-work/ChangeSetComputer.d.ts +3 -8
  128. package/unit-of-work/ChangeSetComputer.js +49 -26
  129. package/unit-of-work/ChangeSetPersister.d.ts +13 -12
  130. package/unit-of-work/ChangeSetPersister.js +106 -43
  131. package/unit-of-work/CommitOrderCalculator.d.ts +12 -10
  132. package/unit-of-work/CommitOrderCalculator.js +17 -15
  133. package/unit-of-work/IdentityMap.d.ts +12 -0
  134. package/unit-of-work/IdentityMap.js +39 -1
  135. package/unit-of-work/UnitOfWork.d.ts +34 -4
  136. package/unit-of-work/UnitOfWork.js +294 -107
  137. package/utils/AbstractMigrator.d.ts +101 -0
  138. package/utils/AbstractMigrator.js +303 -0
  139. package/utils/AbstractSchemaGenerator.d.ts +5 -5
  140. package/utils/AbstractSchemaGenerator.js +30 -18
  141. package/utils/AsyncContext.d.ts +6 -0
  142. package/utils/AsyncContext.js +42 -0
  143. package/utils/Configuration.d.ts +795 -211
  144. package/utils/Configuration.js +160 -197
  145. package/utils/ConfigurationLoader.d.ts +1 -52
  146. package/utils/ConfigurationLoader.js +1 -330
  147. package/utils/Cursor.d.ts +0 -3
  148. package/utils/Cursor.js +29 -14
  149. package/utils/DataloaderUtils.d.ts +10 -5
  150. package/utils/DataloaderUtils.js +42 -22
  151. package/utils/EntityComparator.d.ts +16 -9
  152. package/utils/EntityComparator.js +202 -96
  153. package/utils/QueryHelper.d.ts +34 -6
  154. package/utils/QueryHelper.js +181 -48
  155. package/utils/RawQueryFragment.d.ts +28 -34
  156. package/utils/RawQueryFragment.js +37 -72
  157. package/utils/RequestContext.js +2 -2
  158. package/utils/TransactionContext.js +2 -2
  159. package/utils/TransactionManager.js +11 -7
  160. package/utils/Utils.d.ts +16 -127
  161. package/utils/Utils.js +106 -401
  162. package/utils/clone.js +8 -23
  163. package/utils/env-vars.d.ts +7 -0
  164. package/utils/env-vars.js +98 -0
  165. package/utils/fs-utils.d.ts +34 -0
  166. package/utils/fs-utils.js +193 -0
  167. package/utils/index.d.ts +1 -3
  168. package/utils/index.js +1 -3
  169. package/utils/upsert-utils.d.ts +9 -4
  170. package/utils/upsert-utils.js +51 -5
  171. package/decorators/Check.d.ts +0 -3
  172. package/decorators/Check.js +0 -13
  173. package/decorators/CreateRequestContext.d.ts +0 -3
  174. package/decorators/CreateRequestContext.js +0 -32
  175. package/decorators/Embeddable.d.ts +0 -8
  176. package/decorators/Embeddable.js +0 -11
  177. package/decorators/Embedded.d.ts +0 -12
  178. package/decorators/Embedded.js +0 -18
  179. package/decorators/Entity.d.ts +0 -33
  180. package/decorators/Entity.js +0 -12
  181. package/decorators/Enum.d.ts +0 -9
  182. package/decorators/Enum.js +0 -16
  183. package/decorators/Filter.d.ts +0 -2
  184. package/decorators/Filter.js +0 -8
  185. package/decorators/Formula.d.ts +0 -4
  186. package/decorators/Formula.js +0 -15
  187. package/decorators/Indexed.d.ts +0 -19
  188. package/decorators/Indexed.js +0 -20
  189. package/decorators/ManyToMany.d.ts +0 -42
  190. package/decorators/ManyToMany.js +0 -14
  191. package/decorators/ManyToOne.d.ts +0 -34
  192. package/decorators/ManyToOne.js +0 -14
  193. package/decorators/OneToMany.d.ts +0 -28
  194. package/decorators/OneToMany.js +0 -17
  195. package/decorators/OneToOne.d.ts +0 -28
  196. package/decorators/OneToOne.js +0 -7
  197. package/decorators/PrimaryKey.d.ts +0 -8
  198. package/decorators/PrimaryKey.js +0 -20
  199. package/decorators/Property.d.ts +0 -250
  200. package/decorators/Property.js +0 -32
  201. package/decorators/Transactional.d.ts +0 -14
  202. package/decorators/Transactional.js +0 -28
  203. package/decorators/hooks.d.ts +0 -16
  204. package/decorators/hooks.js +0 -47
  205. package/decorators/index.d.ts +0 -17
  206. package/decorators/index.js +0 -17
  207. package/entity/ArrayCollection.d.ts +0 -118
  208. package/entity/ArrayCollection.js +0 -407
  209. package/entity/EntityValidator.d.ts +0 -19
  210. package/entity/EntityValidator.js +0 -150
  211. package/metadata/ReflectMetadataProvider.d.ts +0 -8
  212. package/metadata/ReflectMetadataProvider.js +0 -44
  213. package/utils/resolveContextProvider.d.ts +0 -10
  214. package/utils/resolveContextProvider.js +0 -28
@@ -14,7 +14,7 @@ export class AbstractNamingStrategy {
14
14
  return migrationName;
15
15
  }
16
16
  indexName(tableName, columns, type) {
17
- /* v8 ignore next 3 */
17
+ /* v8 ignore next */
18
18
  if (tableName.includes('.')) {
19
19
  tableName = tableName.substring(tableName.indexOf('.') + 1);
20
20
  }
@@ -34,11 +34,14 @@ export class AbstractNamingStrategy {
34
34
  * @inheritDoc
35
35
  */
36
36
  getEntityName(tableName, schemaName) {
37
- const name = tableName.match(/^[^$_\p{ID_Start}]/u) ? `E_${tableName}` : tableName;
38
- return this.getClassName(name.replaceAll(/[^\u200C\u200D\p{ID_Continue}]+/ug, r => r.split('').map(c => `$${c.codePointAt(0)}`).join('')), '_');
37
+ const name = /^[^$_\p{ID_Start}]/u.exec(tableName) ? `E_${tableName}` : tableName;
38
+ return this.getClassName(name.replaceAll(/[^\u200C\u200D\p{ID_Continue}]+/gu, r => r
39
+ .split('')
40
+ .map(c => `$${c.codePointAt(0)}`)
41
+ .join('')), '_');
39
42
  }
40
43
  columnNameToProperty(columnName) {
41
- const propName = columnName.replace(/[_\- ]+(\w)/ug, (_, p1) => p1.toUpperCase());
44
+ const propName = columnName.replace(/[_\- ]+(\w)/gu, (_, p1) => p1.toUpperCase());
42
45
  if (populatePathMembers.includes(propName.replace(/^\${2,}/u, '$$').replace(/^\$\*$/u, '*'))) {
43
46
  return `$${propName}`;
44
47
  }
@@ -48,7 +51,13 @@ export class AbstractNamingStrategy {
48
51
  * @inheritDoc
49
52
  */
50
53
  getEnumClassName(columnName, tableName, schemaName) {
51
- return this.getEntityName(`${tableName}_${columnName}`, schemaName);
54
+ return this.getEntityName(tableName ? `${tableName}_${columnName}` : columnName, schemaName);
55
+ }
56
+ /**
57
+ * @inheritDoc
58
+ */
59
+ getEnumTypeName(columnName, tableName, schemaName) {
60
+ return 'T' + this.getEnumClassName(columnName, tableName, schemaName);
52
61
  }
53
62
  /**
54
63
  * @inheritDoc
@@ -73,4 +82,16 @@ export class AbstractNamingStrategy {
73
82
  }
74
83
  return entityName[0].toLowerCase() + entityName.substring(1) + suffix;
75
84
  }
85
+ /**
86
+ * @inheritDoc
87
+ */
88
+ manyToManyPropertyName(ownerEntityName, targetEntityName, pivotTableName, ownerTableName, schemaName) {
89
+ return this.columnNameToProperty(pivotTableName.replace(new RegExp('^' + ownerTableName + '_'), ''));
90
+ }
91
+ /**
92
+ * @inheritDoc
93
+ */
94
+ discriminatorColumnName(baseName) {
95
+ return this.propertyToColumnName(baseName + 'Type');
96
+ }
76
97
  }
@@ -3,10 +3,10 @@ import { AbstractNamingStrategy } from './AbstractNamingStrategy.js';
3
3
  * This strategy keeps original entity/property names for table/column.
4
4
  */
5
5
  export declare class EntityCaseNamingStrategy extends AbstractNamingStrategy {
6
- classToTableName(entityName: string): string;
6
+ classToTableName(entityName: string, tableName?: string): string;
7
7
  joinColumnName(propertyName: string): string;
8
- joinKeyColumnName(entityName: string, referencedColumnName?: string, composite?: boolean): string;
9
- joinTableName(sourceEntity: string, targetEntity: string, propertyName: string): string;
8
+ joinKeyColumnName(entityName: string, referencedColumnName?: string, composite?: boolean, tableName?: string): string;
9
+ joinTableName(sourceEntity: string, targetEntity: string, propertyName: string, tableName?: string): string;
10
10
  propertyToColumnName(propertyName: string): string;
11
11
  referenceColumnName(): string;
12
12
  }
@@ -3,21 +3,22 @@ import { AbstractNamingStrategy } from './AbstractNamingStrategy.js';
3
3
  * This strategy keeps original entity/property names for table/column.
4
4
  */
5
5
  export class EntityCaseNamingStrategy extends AbstractNamingStrategy {
6
- classToTableName(entityName) {
7
- return entityName;
6
+ classToTableName(entityName, tableName) {
7
+ return tableName ?? entityName;
8
8
  }
9
9
  joinColumnName(propertyName) {
10
10
  return propertyName;
11
11
  }
12
- joinKeyColumnName(entityName, referencedColumnName, composite = false) {
12
+ joinKeyColumnName(entityName, referencedColumnName, composite, tableName) {
13
+ entityName = this.classToTableName(entityName, tableName);
13
14
  const name = entityName.substr(0, 1).toLowerCase() + entityName.substr(1);
14
15
  if (composite && referencedColumnName) {
15
16
  return name + '_' + referencedColumnName;
16
17
  }
17
18
  return name;
18
19
  }
19
- joinTableName(sourceEntity, targetEntity, propertyName) {
20
- return this.classToTableName(sourceEntity) + '_' + this.propertyToColumnName(propertyName);
20
+ joinTableName(sourceEntity, targetEntity, propertyName, tableName) {
21
+ return this.classToTableName(sourceEntity, tableName) + '_' + this.propertyToColumnName(propertyName);
21
22
  }
22
23
  propertyToColumnName(propertyName) {
23
24
  return propertyName;
@@ -1,9 +1,9 @@
1
1
  import { AbstractNamingStrategy } from './AbstractNamingStrategy.js';
2
2
  export declare class MongoNamingStrategy extends AbstractNamingStrategy {
3
- classToTableName(entityName: string): string;
3
+ classToTableName(entityName: string, tableName?: string): string;
4
4
  joinColumnName(propertyName: string): string;
5
- joinKeyColumnName(entityName: string, referencedColumnName?: string): string;
6
- joinTableName(sourceEntity: string, targetEntity: string, propertyName: string): string;
5
+ joinKeyColumnName(entityName: string, referencedColumnName?: string, composite?: boolean, tableName?: string): string;
6
+ joinTableName(sourceEntity: string, targetEntity: string, propertyName: string, tableName?: string): string;
7
7
  propertyToColumnName(propertyName: string): string;
8
8
  referenceColumnName(): string;
9
9
  }
@@ -1,16 +1,16 @@
1
1
  import { AbstractNamingStrategy } from './AbstractNamingStrategy.js';
2
2
  export class MongoNamingStrategy extends AbstractNamingStrategy {
3
- classToTableName(entityName) {
4
- return entityName.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
3
+ classToTableName(entityName, tableName) {
4
+ return tableName ?? entityName.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
5
5
  }
6
6
  joinColumnName(propertyName) {
7
7
  return propertyName;
8
8
  }
9
- joinKeyColumnName(entityName, referencedColumnName) {
10
- return entityName;
9
+ joinKeyColumnName(entityName, referencedColumnName, composite, tableName) {
10
+ return tableName ?? entityName;
11
11
  }
12
- joinTableName(sourceEntity, targetEntity, propertyName) {
13
- return this.classToTableName(sourceEntity) + '_' + this.propertyToColumnName(propertyName);
12
+ joinTableName(sourceEntity, targetEntity, propertyName, tableName) {
13
+ return this.classToTableName(sourceEntity, tableName) + '_' + this.propertyToColumnName(propertyName);
14
14
  }
15
15
  propertyToColumnName(propertyName) {
16
16
  return propertyName;
@@ -7,7 +7,7 @@ export interface NamingStrategy {
7
7
  /**
8
8
  * Return a table name for an entity class
9
9
  */
10
- classToTableName(entityName: string): string;
10
+ classToTableName(entityName: string, tableName?: string): string;
11
11
  /**
12
12
  * Return a migration name. This name should allow ordering.
13
13
  */
@@ -25,7 +25,17 @@ export interface NamingStrategy {
25
25
  *
26
26
  * @return A new class name that will be used for the enum.
27
27
  */
28
- getEnumClassName(columnName: string, tableName: string, schemaName?: string): string;
28
+ getEnumClassName(columnName: string, tableName: string | undefined, schemaName?: string): string;
29
+ /**
30
+ * Get an enum type name. Used with `enumType: 'dictionary'` and `enumType: 'union-type'` entity generator option.
31
+ *
32
+ * @param columnName The column name which has the enum.
33
+ * @param tableName The table name of the column.
34
+ * @param schemaName The schema name of the column.
35
+ *
36
+ * @return A new type name that will be used for the enum.
37
+ */
38
+ getEnumTypeName(columnName: string, tableName: string | undefined, schemaName?: string): string;
29
39
  /**
30
40
  * Get an enum option name for a given enum value.
31
41
  *
@@ -57,11 +67,11 @@ export interface NamingStrategy {
57
67
  /**
58
68
  * Return a join table name
59
69
  */
60
- joinTableName(sourceEntity: string, targetEntity: string, propertyName: string): string;
70
+ joinTableName(sourceEntity: string, targetEntity: string, propertyName: string, tableName?: string): string;
61
71
  /**
62
72
  * Return the foreign key column name for the given parameters
63
73
  */
64
- joinKeyColumnName(entityName: string, referencedColumnName?: string, composite?: boolean): string;
74
+ joinKeyColumnName(entityName: string, referencedColumnName?: string, composite?: boolean, tableName?: string): string;
65
75
  /**
66
76
  * Returns key/constraint name for the given type. Some drivers might not support all the types (e.g. mysql and sqlite enforce the PK name).
67
77
  */
@@ -75,4 +85,18 @@ export interface NamingStrategy {
75
85
  * Returns the name of the inverse side property. Used in the `EntityGenerator` with `bidirectionalRelations` option.
76
86
  */
77
87
  inverseSideName(entityName: string, propertyName: string, kind: ReferenceKind): string;
88
+ /**
89
+ * Return a property name for a many-to-many relation (used in `EntityGenerator`).
90
+ *
91
+ * @param ownerEntityName - The owner entity class name
92
+ * @param targetEntityName - The target entity class name
93
+ * @param pivotTableName - The pivot table name
94
+ * @param ownerTableName - The owner table name
95
+ * @param schemaName - The schema name (if any)
96
+ */
97
+ manyToManyPropertyName(ownerEntityName: string, targetEntityName: string, pivotTableName: string, ownerTableName: string, schemaName?: string): string;
98
+ /**
99
+ * Returns the discriminator column name for polymorphic relations.
100
+ */
101
+ discriminatorColumnName(baseName: string): string;
78
102
  }
@@ -1,9 +1,9 @@
1
1
  import { AbstractNamingStrategy } from './AbstractNamingStrategy.js';
2
2
  export declare class UnderscoreNamingStrategy extends AbstractNamingStrategy {
3
- classToTableName(entityName: string): string;
3
+ classToTableName(entityName: string, tableName?: string): string;
4
4
  joinColumnName(propertyName: string): string;
5
- joinKeyColumnName(entityName: string, referencedColumnName?: string): string;
6
- joinTableName(sourceEntity: string, targetEntity: string, propertyName: string): string;
5
+ joinKeyColumnName(entityName: string, referencedColumnName?: string, composite?: boolean, tableName?: string): string;
6
+ joinTableName(sourceEntity: string, targetEntity: string, propertyName: string, tableName?: string): string;
7
7
  propertyToColumnName(propertyName: string, object?: boolean): string;
8
8
  referenceColumnName(): string;
9
9
  private underscore;
@@ -1,16 +1,16 @@
1
1
  import { AbstractNamingStrategy } from './AbstractNamingStrategy.js';
2
2
  export class UnderscoreNamingStrategy extends AbstractNamingStrategy {
3
- classToTableName(entityName) {
4
- return this.underscore(entityName);
3
+ classToTableName(entityName, tableName) {
4
+ return tableName ?? this.underscore(entityName);
5
5
  }
6
6
  joinColumnName(propertyName) {
7
7
  return this.underscore(propertyName) + '_' + this.referenceColumnName();
8
8
  }
9
- joinKeyColumnName(entityName, referencedColumnName) {
10
- return this.classToTableName(entityName) + '_' + (referencedColumnName || this.referenceColumnName());
9
+ joinKeyColumnName(entityName, referencedColumnName, composite, tableName) {
10
+ return this.classToTableName(entityName, tableName) + '_' + (referencedColumnName || this.referenceColumnName());
11
11
  }
12
- joinTableName(sourceEntity, targetEntity, propertyName) {
13
- return this.classToTableName(sourceEntity) + '_' + this.classToTableName(propertyName);
12
+ joinTableName(sourceEntity, targetEntity, propertyName, tableName) {
13
+ return this.classToTableName(sourceEntity, tableName) + '_' + this.classToTableName(propertyName);
14
14
  }
15
15
  propertyToColumnName(propertyName, object) {
16
16
  return this.underscore(propertyName);
@@ -1,4 +1,4 @@
1
- export * from './NamingStrategy.js';
1
+ export type * from './NamingStrategy.js';
2
2
  export * from './AbstractNamingStrategy.js';
3
3
  export * from './MongoNamingStrategy.js';
4
4
  export * from './UnderscoreNamingStrategy.js';
@@ -1,4 +1,3 @@
1
- export * from './NamingStrategy.js';
2
1
  export * from './AbstractNamingStrategy.js';
3
2
  export * from './MongoNamingStrategy.js';
4
3
  export * from './UnderscoreNamingStrategy.js';
@@ -0,0 +1,2 @@
1
+ export declare function discoverEntities(): void;
2
+ export declare const fs: {};
@@ -0,0 +1,8 @@
1
+ export function discoverEntities() {
2
+ throw new Error('Folder-based discovery is not supported in this environment.');
3
+ }
4
+ export const fs = new Proxy({}, {
5
+ get: () => {
6
+ throw new Error('File system is not supported in this environment.');
7
+ },
8
+ });
package/package.json CHANGED
@@ -1,61 +1,72 @@
1
1
  {
2
2
  "name": "@mikro-orm/core",
3
- "type": "module",
4
- "version": "7.0.0-dev.31",
3
+ "version": "7.0.0-dev.311",
5
4
  "description": "TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, PostgreSQL and SQLite databases as well as usage with vanilla JavaScript.",
6
- "exports": {
7
- "./package.json": "./package.json",
8
- ".": "./index.js"
9
- },
10
- "repository": {
11
- "type": "git",
12
- "url": "git+ssh://git@github.com/mikro-orm/mikro-orm.git"
13
- },
14
- "funding": "https://github.com/sponsors/b4nan",
15
5
  "keywords": [
16
- "orm",
6
+ "data-mapper",
7
+ "ddd",
8
+ "entity",
9
+ "identity-map",
10
+ "javascript",
11
+ "js",
12
+ "mariadb",
13
+ "mikro-orm",
17
14
  "mongo",
18
15
  "mongodb",
19
16
  "mysql",
20
- "mariadb",
17
+ "orm",
21
18
  "postgresql",
22
19
  "sqlite",
23
20
  "sqlite3",
24
21
  "ts",
25
22
  "typescript",
26
- "js",
27
- "javascript",
28
- "entity",
29
- "ddd",
30
- "mikro-orm",
31
- "unit-of-work",
32
- "data-mapper",
33
- "identity-map"
23
+ "unit-of-work"
34
24
  ],
35
- "author": "Martin Adámek",
36
- "license": "MIT",
25
+ "homepage": "https://mikro-orm.io",
37
26
  "bugs": {
38
27
  "url": "https://github.com/mikro-orm/mikro-orm/issues"
39
28
  },
40
- "homepage": "https://mikro-orm.io",
41
- "engines": {
42
- "node": ">= 22.11.0"
29
+ "license": "MIT",
30
+ "author": "Martin Adámek",
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "git+ssh://git@github.com/mikro-orm/mikro-orm.git"
34
+ },
35
+ "funding": "https://github.com/sponsors/b4nan",
36
+ "type": "module",
37
+ "exports": {
38
+ "./package.json": "./package.json",
39
+ ".": "./index.js",
40
+ "./file-discovery": {
41
+ "node": "./metadata/discover-entities.js",
42
+ "browser": "./not-supported.js"
43
+ },
44
+ "./fs-utils": {
45
+ "node": "./utils/fs-utils.js",
46
+ "browser": "./not-supported.js"
47
+ },
48
+ "./migrations": "./utils/AbstractMigrator.js",
49
+ "./schema": "./utils/AbstractSchemaGenerator.js",
50
+ "./dataloader": "./utils/DataloaderUtils.js"
51
+ },
52
+ "publishConfig": {
53
+ "access": "public"
43
54
  },
44
55
  "scripts": {
45
- "build": "yarn clean && yarn compile && yarn copy",
56
+ "build": "yarn compile && yarn copy",
46
57
  "clean": "yarn run -T rimraf ./dist",
47
58
  "compile": "yarn run -T tsc -p tsconfig.build.json",
48
59
  "copy": "node ../../scripts/copy.mjs"
49
60
  },
50
- "publishConfig": {
51
- "access": "public"
61
+ "peerDependencies": {
62
+ "dataloader": "2.2.3"
52
63
  },
53
- "dependencies": {
54
- "dataloader": "2.2.3",
55
- "dotenv": "17.2.3",
56
- "esprima": "4.0.1",
57
- "mikro-orm": "7.0.0-dev.31",
58
- "reflect-metadata": "0.2.2",
59
- "tinyglobby": "0.2.13"
64
+ "peerDependenciesMeta": {
65
+ "dataloader": {
66
+ "optional": true
67
+ }
68
+ },
69
+ "engines": {
70
+ "node": ">= 22.17.0"
60
71
  }
61
72
  }
@@ -1,6 +1,6 @@
1
1
  import { DriverException } from '../exceptions.js';
2
2
  export class ExceptionConverter {
3
- /* v8 ignore next 3 */
3
+ /* v8 ignore next */
4
4
  convertException(exception) {
5
5
  return new DriverException(exception);
6
6
  }
@@ -1,7 +1,6 @@
1
- import { inspect } from 'node:util';
2
1
  import { EntityRepository } from '../entity/EntityRepository.js';
3
2
  import { type NamingStrategy } from '../naming-strategy/NamingStrategy.js';
4
- import type { Constructor, EntityProperty, IPrimaryKey, ISchemaGenerator, PopulateOptions, Primary, EntityMetadata, SimpleColumnMeta } from '../typings.js';
3
+ import type { Constructor, EntityMetadata, EntityProperty, IPrimaryKey, ISchemaGenerator, PopulateOptions, Primary, SimpleColumnMeta } from '../typings.js';
5
4
  import { ExceptionConverter } from './ExceptionConverter.js';
6
5
  import type { EntityManager } from '../EntityManager.js';
7
6
  import type { Configuration } from '../utils/Configuration.js';
@@ -9,6 +8,7 @@ import type { IDatabaseDriver } from '../drivers/IDatabaseDriver.js';
9
8
  import { Type } from '../types/index.js';
10
9
  import type { MikroORM } from '../MikroORM.js';
11
10
  import type { TransformContext } from '../types/Type.js';
11
+ import { Raw } from '../utils/RawQueryFragment.js';
12
12
  export declare const JsonProperty: unique symbol;
13
13
  export declare abstract class Platform {
14
14
  protected readonly exceptionConverter: ExceptionConverter;
@@ -28,9 +28,9 @@ export declare abstract class Platform {
28
28
  supportsNativeEnums(): boolean;
29
29
  /** for postgres text enums (default) */
30
30
  usesEnumCheckConstraints(): boolean;
31
+ supportsMaterializedViews(): boolean;
31
32
  getSchemaHelper(): unknown;
32
33
  indexForeignKeys(): boolean;
33
- allowsMultiInsert(): boolean;
34
34
  /**
35
35
  * Whether or not the driver supports retuning list of created PKs back when multi-inserting
36
36
  */
@@ -48,11 +48,6 @@ export declare abstract class Platform {
48
48
  * Converts scalar primary key representation to native driver wrapper (e.g. string to mongodb's ObjectId)
49
49
  */
50
50
  denormalizePrimaryKey(data: IPrimaryKey): IPrimaryKey;
51
- /**
52
- * Used when serializing via toObject and toJSON methods, allows to use different PK field name (like `id` instead of `_id`)
53
- */
54
- getSerializedPrimaryKeyField(field: string): string;
55
- usesDifferentSerializedPrimaryKey(): boolean;
56
51
  /**
57
52
  * Returns the SQL specific for the platform to get the current timestamp
58
53
  */
@@ -71,7 +66,9 @@ export declare abstract class Platform {
71
66
  $flags?: string;
72
67
  };
73
68
  isAllowedTopLevelOperator(operator: string): boolean;
74
- quoteVersionValue(value: Date | number, prop: EntityProperty): Date | string | number;
69
+ convertVersionValue(value: Date | number, prop: EntityProperty): Date | string | number | {
70
+ $in: (string | number)[];
71
+ };
75
72
  getDefaultVersionLength(): number;
76
73
  allowsComparingTuples(): boolean;
77
74
  isBigIntProperty(prop: EntityProperty): boolean;
@@ -143,13 +140,14 @@ export declare abstract class Platform {
143
140
  getDefaultMappedType(type: string): Type<unknown>;
144
141
  supportsMultipleCascadePaths(): boolean;
145
142
  supportsMultipleStatements(): boolean;
143
+ supportsUnionWhere(): boolean;
146
144
  getArrayDeclarationSQL(): string;
147
145
  marshallArray(values: string[]): string;
148
146
  unmarshallArray(value: string): string[];
149
147
  getBlobDeclarationSQL(): string;
150
148
  getJsonDeclarationSQL(): string;
151
- getSearchJsonPropertySQL(path: string, type: string, aliased: boolean): string;
152
- getSearchJsonPropertyKey(path: string[], type: string, aliased: boolean, value?: unknown): string;
149
+ getSearchJsonPropertySQL(path: string, type: string, aliased: boolean): string | Raw;
150
+ getSearchJsonPropertyKey(path: string[], type: string, aliased: boolean, value?: unknown): string | Raw;
153
151
  getJsonIndexDefinition(index: {
154
152
  columnNames: string[];
155
153
  }): string[];
@@ -158,7 +156,7 @@ export declare abstract class Platform {
158
156
  getFullTextIndexExpression(indexName: string, schemaName: string | undefined, tableName: string, columns: SimpleColumnMeta[]): string;
159
157
  convertsJsonAutomatically(): boolean;
160
158
  convertJsonToDatabaseValue(value: unknown, context?: TransformContext): unknown;
161
- convertJsonToJSValue(value: unknown, prop: EntityProperty): unknown;
159
+ convertJsonToJSValue(value: unknown, context?: TransformContext): unknown;
162
160
  convertDateToJSValue(value: string | Date): string;
163
161
  convertIntervalToJSValue(value: string): unknown;
164
162
  convertIntervalToDatabaseValue(value: unknown): unknown;
@@ -195,7 +193,7 @@ export declare abstract class Platform {
195
193
  getDefaultPrimaryName(tableName: string, columns: string[]): string;
196
194
  supportsCustomPrimaryKeyNames(): boolean;
197
195
  isPopulated<T>(key: string, populate: readonly PopulateOptions<T>[] | boolean): boolean;
198
- shouldHaveColumn<T>(prop: EntityProperty<T>, populate: readonly PopulateOptions<T>[] | boolean, exclude?: string[], includeFormulas?: boolean): boolean;
196
+ shouldHaveColumn<T>(prop: EntityProperty<T>, populate: readonly PopulateOptions<T>[] | boolean, exclude?: string[], includeFormulas?: boolean, ignoreInlineEmbeddables?: boolean): boolean;
199
197
  /**
200
198
  * Currently not supported due to how knex does complex sqlite diffing (always based on current schema)
201
199
  */
@@ -227,6 +225,4 @@ export declare abstract class Platform {
227
225
  * @internal
228
226
  */
229
227
  clone(): this;
230
- /** @ignore */
231
- [inspect.custom](): string;
232
228
  }