@mikro-orm/core 7.0.0-dev.7 → 7.0.0-dev.70

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 (162) hide show
  1. package/EntityManager.d.ts +85 -42
  2. package/EntityManager.js +282 -194
  3. package/MikroORM.d.ts +11 -29
  4. package/MikroORM.js +33 -127
  5. package/README.md +3 -2
  6. package/cache/FileCacheAdapter.d.ts +2 -1
  7. package/cache/FileCacheAdapter.js +5 -4
  8. package/connections/Connection.d.ts +11 -7
  9. package/connections/Connection.js +16 -13
  10. package/drivers/DatabaseDriver.d.ts +11 -5
  11. package/drivers/DatabaseDriver.js +13 -4
  12. package/drivers/IDatabaseDriver.d.ts +27 -5
  13. package/entity/BaseEntity.d.ts +0 -1
  14. package/entity/BaseEntity.js +0 -3
  15. package/entity/Collection.d.ts +98 -30
  16. package/entity/Collection.js +432 -93
  17. package/entity/EntityAssigner.d.ts +1 -1
  18. package/entity/EntityAssigner.js +9 -1
  19. package/entity/EntityFactory.d.ts +7 -0
  20. package/entity/EntityFactory.js +63 -40
  21. package/entity/EntityHelper.js +26 -9
  22. package/entity/EntityLoader.d.ts +5 -4
  23. package/entity/EntityLoader.js +69 -36
  24. package/entity/EntityRepository.d.ts +1 -1
  25. package/entity/EntityValidator.js +4 -4
  26. package/entity/Reference.d.ts +9 -7
  27. package/entity/Reference.js +32 -5
  28. package/entity/WrappedEntity.d.ts +0 -2
  29. package/entity/WrappedEntity.js +1 -5
  30. package/entity/defineEntity.d.ts +549 -0
  31. package/entity/defineEntity.js +529 -0
  32. package/entity/index.d.ts +2 -1
  33. package/entity/index.js +2 -1
  34. package/entity/utils.d.ts +7 -0
  35. package/entity/utils.js +15 -3
  36. package/enums.d.ts +20 -5
  37. package/enums.js +13 -0
  38. package/errors.d.ts +6 -1
  39. package/errors.js +14 -4
  40. package/events/EventSubscriber.d.ts +3 -1
  41. package/hydration/ObjectHydrator.d.ts +4 -4
  42. package/hydration/ObjectHydrator.js +35 -24
  43. package/index.d.ts +2 -2
  44. package/index.js +1 -2
  45. package/logging/DefaultLogger.d.ts +1 -1
  46. package/logging/SimpleLogger.d.ts +1 -1
  47. package/metadata/EntitySchema.d.ts +9 -13
  48. package/metadata/EntitySchema.js +44 -26
  49. package/metadata/MetadataDiscovery.d.ts +6 -7
  50. package/metadata/MetadataDiscovery.js +161 -162
  51. package/metadata/MetadataProvider.d.ts +2 -2
  52. package/metadata/MetadataProvider.js +15 -0
  53. package/metadata/MetadataStorage.d.ts +0 -4
  54. package/metadata/MetadataStorage.js +7 -11
  55. package/metadata/MetadataValidator.d.ts +0 -7
  56. package/metadata/MetadataValidator.js +4 -13
  57. package/metadata/discover-entities.d.ts +5 -0
  58. package/metadata/discover-entities.js +39 -0
  59. package/metadata/index.d.ts +1 -1
  60. package/metadata/index.js +1 -1
  61. package/metadata/types.d.ts +480 -0
  62. package/metadata/types.js +1 -0
  63. package/naming-strategy/AbstractNamingStrategy.d.ts +5 -1
  64. package/naming-strategy/AbstractNamingStrategy.js +7 -1
  65. package/naming-strategy/NamingStrategy.d.ts +11 -1
  66. package/package.json +11 -10
  67. package/platforms/Platform.d.ts +6 -10
  68. package/platforms/Platform.js +6 -22
  69. package/serialization/EntitySerializer.d.ts +2 -0
  70. package/serialization/EntitySerializer.js +29 -11
  71. package/serialization/EntityTransformer.js +22 -12
  72. package/serialization/SerializationContext.js +14 -11
  73. package/types/ArrayType.d.ts +1 -1
  74. package/types/ArrayType.js +1 -2
  75. package/types/BigIntType.d.ts +8 -6
  76. package/types/BlobType.d.ts +0 -1
  77. package/types/BlobType.js +0 -3
  78. package/types/BooleanType.d.ts +2 -1
  79. package/types/BooleanType.js +3 -0
  80. package/types/DecimalType.d.ts +6 -4
  81. package/types/DecimalType.js +1 -1
  82. package/types/DoubleType.js +1 -1
  83. package/types/JsonType.d.ts +1 -1
  84. package/types/JsonType.js +7 -2
  85. package/types/Type.d.ts +2 -1
  86. package/types/Type.js +1 -1
  87. package/types/Uint8ArrayType.d.ts +0 -1
  88. package/types/Uint8ArrayType.js +0 -3
  89. package/types/index.d.ts +1 -1
  90. package/typings.d.ts +112 -77
  91. package/typings.js +32 -32
  92. package/unit-of-work/ChangeSetComputer.js +8 -3
  93. package/unit-of-work/ChangeSetPersister.d.ts +4 -2
  94. package/unit-of-work/ChangeSetPersister.js +37 -16
  95. package/unit-of-work/UnitOfWork.d.ts +8 -1
  96. package/unit-of-work/UnitOfWork.js +111 -54
  97. package/utils/AbstractSchemaGenerator.d.ts +5 -5
  98. package/utils/AbstractSchemaGenerator.js +10 -8
  99. package/utils/Configuration.d.ts +202 -191
  100. package/utils/Configuration.js +143 -153
  101. package/utils/ConfigurationLoader.d.ts +3 -44
  102. package/utils/ConfigurationLoader.js +26 -239
  103. package/utils/Cursor.d.ts +3 -3
  104. package/utils/Cursor.js +3 -0
  105. package/utils/DataloaderUtils.d.ts +15 -5
  106. package/utils/DataloaderUtils.js +53 -7
  107. package/utils/EntityComparator.d.ts +8 -4
  108. package/utils/EntityComparator.js +107 -60
  109. package/utils/QueryHelper.d.ts +9 -1
  110. package/utils/QueryHelper.js +69 -8
  111. package/utils/RawQueryFragment.d.ts +36 -4
  112. package/utils/RawQueryFragment.js +34 -13
  113. package/utils/TransactionManager.d.ts +65 -0
  114. package/utils/TransactionManager.js +223 -0
  115. package/utils/Utils.d.ts +18 -85
  116. package/utils/Utils.js +128 -252
  117. package/utils/index.d.ts +1 -0
  118. package/utils/index.js +1 -0
  119. package/utils/upsert-utils.d.ts +7 -2
  120. package/utils/upsert-utils.js +52 -1
  121. package/decorators/Check.d.ts +0 -3
  122. package/decorators/Check.js +0 -13
  123. package/decorators/CreateRequestContext.d.ts +0 -3
  124. package/decorators/CreateRequestContext.js +0 -32
  125. package/decorators/Embeddable.d.ts +0 -8
  126. package/decorators/Embeddable.js +0 -11
  127. package/decorators/Embedded.d.ts +0 -18
  128. package/decorators/Embedded.js +0 -18
  129. package/decorators/Entity.d.ts +0 -18
  130. package/decorators/Entity.js +0 -12
  131. package/decorators/Enum.d.ts +0 -9
  132. package/decorators/Enum.js +0 -16
  133. package/decorators/Filter.d.ts +0 -2
  134. package/decorators/Filter.js +0 -8
  135. package/decorators/Formula.d.ts +0 -4
  136. package/decorators/Formula.js +0 -15
  137. package/decorators/Indexed.d.ts +0 -19
  138. package/decorators/Indexed.js +0 -20
  139. package/decorators/ManyToMany.d.ts +0 -40
  140. package/decorators/ManyToMany.js +0 -14
  141. package/decorators/ManyToOne.d.ts +0 -30
  142. package/decorators/ManyToOne.js +0 -14
  143. package/decorators/OneToMany.d.ts +0 -28
  144. package/decorators/OneToMany.js +0 -17
  145. package/decorators/OneToOne.d.ts +0 -24
  146. package/decorators/OneToOne.js +0 -7
  147. package/decorators/PrimaryKey.d.ts +0 -8
  148. package/decorators/PrimaryKey.js +0 -20
  149. package/decorators/Property.d.ts +0 -250
  150. package/decorators/Property.js +0 -32
  151. package/decorators/Transactional.d.ts +0 -13
  152. package/decorators/Transactional.js +0 -28
  153. package/decorators/hooks.d.ts +0 -16
  154. package/decorators/hooks.js +0 -47
  155. package/decorators/index.d.ts +0 -17
  156. package/decorators/index.js +0 -17
  157. package/entity/ArrayCollection.d.ts +0 -116
  158. package/entity/ArrayCollection.js +0 -402
  159. package/metadata/ReflectMetadataProvider.d.ts +0 -8
  160. package/metadata/ReflectMetadataProvider.js +0 -44
  161. package/utils/resolveContextProvider.d.ts +0 -10
  162. package/utils/resolveContextProvider.js +0 -28
@@ -1,149 +1,151 @@
1
1
  import type { NamingStrategy } from '../naming-strategy/NamingStrategy.js';
2
2
  import { FileCacheAdapter } from '../cache/FileCacheAdapter.js';
3
- import { type SyncCacheAdapter, type CacheAdapter } from '../cache/CacheAdapter.js';
3
+ import { type CacheAdapter, type SyncCacheAdapter } from '../cache/CacheAdapter.js';
4
4
  import type { EntityRepository } from '../entity/EntityRepository.js';
5
- import type { AnyEntity, Constructor, Dictionary, EntityClass, EntityClassGroup, FilterDef, Highlighter, HydratorConstructor, IHydrator, IMigrationGenerator, IPrimaryKey, MaybePromise, MigrationObject, EntityMetadata, EnsureDatabaseOptions, GenerateOptions, Migration } from '../typings.js';
5
+ import type { AnyEntity, Constructor, Dictionary, EnsureDatabaseOptions, EntityClass, EntityMetadata, FilterDef, GenerateOptions, Highlighter, HydratorConstructor, IHydrator, IMigrationGenerator, IPrimaryKey, MaybePromise, Migration, MigrationObject } from '../typings.js';
6
6
  import { ObjectHydrator } from '../hydration/ObjectHydrator.js';
7
7
  import { NullHighlighter } from '../utils/NullHighlighter.js';
8
8
  import { type Logger, type LoggerNamespace, type LoggerOptions } from '../logging/Logger.js';
9
9
  import type { EntityManager } from '../EntityManager.js';
10
10
  import type { Platform } from '../platforms/Platform.js';
11
11
  import type { EntitySchema } from '../metadata/EntitySchema.js';
12
- import type { MetadataProvider } from '../metadata/MetadataProvider.js';
12
+ import { MetadataProvider } from '../metadata/MetadataProvider.js';
13
13
  import type { MetadataStorage } from '../metadata/MetadataStorage.js';
14
- import { ReflectMetadataProvider } from '../metadata/ReflectMetadataProvider.js';
15
- import type { EmbeddedPrefixMode } from '../decorators/Embedded.js';
16
14
  import type { EventSubscriber } from '../events/EventSubscriber.js';
17
15
  import type { AssignOptions } from '../entity/EntityAssigner.js';
18
16
  import type { EntityManagerType, IDatabaseDriver } from '../drivers/IDatabaseDriver.js';
19
17
  import { NotFoundError } from '../errors.js';
20
- import { DataloaderType, FlushMode, LoadStrategy, PopulateHint } from '../enums.js';
18
+ import { DataloaderType, FlushMode, LoadStrategy, PopulateHint, type EmbeddedPrefixMode } from '../enums.js';
21
19
  import { MemoryCacheAdapter } from '../cache/MemoryCacheAdapter.js';
22
20
  import { EntityComparator } from './EntityComparator.js';
23
21
  import type { Type } from '../types/Type.js';
24
22
  import type { MikroORM } from '../MikroORM.js';
25
- export declare class Configuration<D extends IDatabaseDriver = IDatabaseDriver, EM extends EntityManager = D[typeof EntityManagerType] & EntityManager> {
26
- static readonly DEFAULTS: {
27
- pool: {};
28
- entities: never[];
29
- entitiesTs: never[];
30
- extensions: never[];
31
- subscribers: never[];
32
- filters: {};
33
- discovery: {
34
- warnWhenNoEntities: true;
35
- requireEntitiesArray: false;
36
- checkDuplicateTableNames: true;
37
- checkDuplicateFieldNames: true;
38
- checkDuplicateEntities: true;
39
- checkNonPersistentCompositeProps: true;
40
- alwaysAnalyseProperties: true;
41
- disableDynamicFileAccess: false;
42
- inferDefaultValues: true;
43
- };
44
- strict: false;
45
- validate: false;
46
- validateRequired: true;
47
- context: (name: string) => EntityManager<IDatabaseDriver<import("../index.js").Connection>> | undefined;
48
- contextName: string;
49
- allowGlobalContext: false;
50
- logger: (message?: any, ...optionalParams: any[]) => void;
51
- colors: true;
52
- findOneOrFailHandler: (entityName: string, where: Dictionary | IPrimaryKey) => NotFoundError<Partial<any>>;
53
- findExactlyOneOrFailHandler: (entityName: string, where: Dictionary | IPrimaryKey) => NotFoundError<Partial<any>>;
54
- baseDir: string;
55
- hydrator: typeof ObjectHydrator;
56
- flushMode: FlushMode.AUTO;
57
- loadStrategy: LoadStrategy.JOINED;
58
- dataloader: DataloaderType.NONE;
59
- populateWhere: PopulateHint.ALL;
60
- connect: true;
61
- ignoreUndefinedInQuery: false;
62
- onQuery: (sql: string) => string;
63
- autoJoinOneToOneOwner: true;
64
- autoJoinRefsForFilters: true;
65
- propagationOnPrototype: true;
66
- populateAfterFlush: true;
67
- serialization: {
68
- includePrimaryKeys: true;
69
- };
70
- assign: {
71
- updateNestedEntities: true;
72
- updateByPrimaryKey: true;
73
- mergeObjectProperties: false;
74
- mergeEmbeddedProperties: true;
75
- ignoreUndefined: false;
76
- };
77
- persistOnCreate: true;
78
- upsertManaged: true;
79
- forceEntityConstructor: false;
80
- forceUndefined: false;
81
- ensureDatabase: true;
82
- ensureIndexes: false;
83
- batchSize: number;
84
- debug: false;
85
- ignoreDeprecations: false;
86
- verbose: false;
87
- driverOptions: {};
88
- migrations: {
89
- tableName: string;
90
- path: string;
91
- glob: string;
92
- silent: false;
93
- transactional: true;
94
- disableForeignKeys: false;
95
- allOrNothing: true;
96
- dropTables: true;
97
- safe: false;
98
- snapshot: true;
99
- emit: "ts";
100
- fileName: (timestamp: string, name?: string) => string;
101
- };
102
- schemaGenerator: {
103
- disableForeignKeys: false;
104
- createForeignKeyConstraints: true;
105
- ignoreSchema: never[];
106
- };
107
- embeddables: {
108
- prefixMode: "absolute";
109
- };
110
- entityGenerator: {
111
- forceUndefined: true;
112
- undefinedDefaults: false;
113
- bidirectionalRelations: false;
114
- identifiedReferences: false;
115
- scalarTypeInDecorator: false;
116
- scalarPropertiesForRelations: "never";
117
- fileName: (className: string) => string;
118
- onlyPurePivotTables: false;
119
- outputPurePivotTables: false;
120
- readOnlyPivotTables: false;
121
- useCoreBaseEntity: false;
122
- };
123
- metadataCache: {
124
- pretty: false;
125
- adapter: typeof FileCacheAdapter;
126
- options: {
127
- cacheDir: string;
128
- };
129
- };
130
- resultCache: {
131
- adapter: typeof MemoryCacheAdapter;
132
- expiration: number;
133
- options: {};
134
- };
135
- metadataProvider: typeof ReflectMetadataProvider;
136
- highlighter: NullHighlighter;
137
- seeder: {
138
- path: string;
139
- defaultSeeder: string;
140
- glob: string;
141
- emit: "ts";
142
- fileName: (className: string) => string;
23
+ declare const DEFAULTS: {
24
+ readonly pool: {};
25
+ readonly entities: readonly [];
26
+ readonly entitiesTs: readonly [];
27
+ readonly extensions: readonly [];
28
+ readonly subscribers: readonly [];
29
+ readonly filters: {};
30
+ readonly discovery: {
31
+ readonly warnWhenNoEntities: true;
32
+ readonly checkDuplicateTableNames: true;
33
+ readonly checkDuplicateFieldNames: true;
34
+ readonly checkDuplicateEntities: true;
35
+ readonly checkNonPersistentCompositeProps: true;
36
+ readonly inferDefaultValues: true;
37
+ };
38
+ readonly strict: false;
39
+ readonly validate: false;
40
+ readonly validateRequired: true;
41
+ readonly context: (name: string) => EntityManager<IDatabaseDriver<import("../index.js").Connection>> | undefined;
42
+ readonly contextName: "default";
43
+ readonly allowGlobalContext: false;
44
+ readonly logger: (message?: any, ...optionalParams: any[]) => void;
45
+ readonly colors: true;
46
+ readonly findOneOrFailHandler: (entityName: string, where: Dictionary | IPrimaryKey) => NotFoundError<Partial<any>>;
47
+ readonly findExactlyOneOrFailHandler: (entityName: string, where: Dictionary | IPrimaryKey) => NotFoundError<Partial<any>>;
48
+ readonly baseDir: string;
49
+ readonly hydrator: typeof ObjectHydrator;
50
+ readonly flushMode: FlushMode.AUTO;
51
+ readonly loadStrategy: LoadStrategy.BALANCED;
52
+ readonly dataloader: DataloaderType.NONE;
53
+ readonly populateWhere: PopulateHint.ALL;
54
+ readonly ignoreUndefinedInQuery: false;
55
+ readonly onQuery: (sql: string) => string;
56
+ readonly autoJoinOneToOneOwner: true;
57
+ readonly autoJoinRefsForFilters: true;
58
+ readonly filtersOnRelations: true;
59
+ readonly propagationOnPrototype: true;
60
+ readonly populateAfterFlush: true;
61
+ readonly serialization: {
62
+ readonly includePrimaryKeys: true;
63
+ };
64
+ readonly assign: {
65
+ readonly updateNestedEntities: true;
66
+ readonly updateByPrimaryKey: true;
67
+ readonly mergeObjectProperties: false;
68
+ readonly mergeEmbeddedProperties: true;
69
+ readonly ignoreUndefined: false;
70
+ };
71
+ readonly persistOnCreate: true;
72
+ readonly upsertManaged: true;
73
+ readonly forceEntityConstructor: false;
74
+ readonly forceUndefined: false;
75
+ readonly processOnCreateHooksEarly: false;
76
+ readonly ensureDatabase: true;
77
+ readonly ensureIndexes: false;
78
+ readonly batchSize: 300;
79
+ readonly hashAlgorithm: "md5";
80
+ readonly debug: false;
81
+ readonly ignoreDeprecations: false;
82
+ readonly verbose: false;
83
+ readonly driverOptions: {};
84
+ readonly migrations: {
85
+ readonly tableName: "mikro_orm_migrations";
86
+ readonly path: "./migrations";
87
+ readonly glob: "!(*.d).{js,ts,cjs}";
88
+ readonly silent: false;
89
+ readonly transactional: true;
90
+ readonly disableForeignKeys: false;
91
+ readonly allOrNothing: true;
92
+ readonly dropTables: true;
93
+ readonly safe: false;
94
+ readonly snapshot: true;
95
+ readonly emit: "ts";
96
+ readonly fileName: (timestamp: string, name?: string) => string;
97
+ };
98
+ readonly schemaGenerator: {
99
+ readonly disableForeignKeys: false;
100
+ readonly createForeignKeyConstraints: true;
101
+ readonly ignoreSchema: readonly [];
102
+ readonly skipTables: readonly [];
103
+ readonly skipColumns: {};
104
+ };
105
+ readonly embeddables: {
106
+ readonly prefixMode: "relative";
107
+ };
108
+ readonly entityGenerator: {
109
+ readonly forceUndefined: true;
110
+ readonly undefinedDefaults: false;
111
+ readonly scalarTypeInDecorator: false;
112
+ readonly bidirectionalRelations: true;
113
+ readonly identifiedReferences: true;
114
+ readonly scalarPropertiesForRelations: "never";
115
+ readonly entityDefinition: "defineEntity";
116
+ readonly decorators: "legacy";
117
+ readonly enumMode: "dictionary";
118
+ readonly fileName: (className: string) => string;
119
+ readonly onlyPurePivotTables: false;
120
+ readonly outputPurePivotTables: false;
121
+ readonly readOnlyPivotTables: false;
122
+ readonly useCoreBaseEntity: false;
123
+ };
124
+ readonly metadataCache: {
125
+ readonly pretty: false;
126
+ readonly adapter: typeof FileCacheAdapter;
127
+ readonly options: {
128
+ readonly cacheDir: string;
143
129
  };
144
- preferReadReplicas: true;
145
- dynamicImportProvider: (id: string) => Promise<any>;
146
130
  };
131
+ readonly resultCache: {
132
+ readonly adapter: typeof MemoryCacheAdapter;
133
+ readonly expiration: 1000;
134
+ readonly options: {};
135
+ };
136
+ readonly metadataProvider: typeof MetadataProvider;
137
+ readonly highlighter: NullHighlighter;
138
+ readonly seeder: {
139
+ readonly path: "./seeders";
140
+ readonly defaultSeeder: "DatabaseSeeder";
141
+ readonly glob: "!(*.d).{js,ts}";
142
+ readonly emit: "ts";
143
+ readonly fileName: (className: string) => string;
144
+ };
145
+ readonly preferReadReplicas: true;
146
+ readonly dynamicImportProvider: (id: string) => Promise<any>;
147
+ };
148
+ export declare class Configuration<D extends IDatabaseDriver = IDatabaseDriver, EM extends EntityManager<D> = D[typeof EntityManagerType] & EntityManager<D>> {
147
149
  private readonly options;
148
150
  private readonly logger;
149
151
  private readonly driver;
@@ -155,25 +157,21 @@ export declare class Configuration<D extends IDatabaseDriver = IDatabaseDriver,
155
157
  /**
156
158
  * Gets specific configuration option. Falls back to specified `defaultValue` if provided.
157
159
  */
158
- get<T extends keyof MikroORMOptions<D, EM>, U extends MikroORMOptions<D, EM>[T]>(key: T, defaultValue?: U): U;
159
- getAll(): MikroORMOptions<D, EM>;
160
+ get<T extends keyof Options<D, EM>, U extends RequiredOptions<D, EM>[T]>(key: T, defaultValue?: U): U;
161
+ getAll(): RequiredOptions<D, EM>;
160
162
  /**
161
163
  * Overrides specified configuration value.
162
164
  */
163
- set<T extends keyof MikroORMOptions<D, EM>, U extends MikroORMOptions<D, EM>[T]>(key: T, value: U): void;
165
+ set<T extends keyof Options<D, EM>, U extends RequiredOptions<D, EM>[T]>(key: T, value: U): void;
164
166
  /**
165
167
  * Resets the configuration to its default value
166
168
  */
167
- reset<T extends keyof MikroORMOptions<D, EM>>(key: T): void;
169
+ reset<T extends keyof RequiredOptions<D, EM>>(key: T): void;
168
170
  /**
169
171
  * Gets Logger instance.
170
172
  */
171
173
  getLogger(): Logger;
172
174
  getDataloaderType(): DataloaderType;
173
- /**
174
- * Gets current client URL (connection string).
175
- */
176
- getClientUrl(hidePassword?: boolean): string;
177
175
  getSchema(skipDefaultSchema?: boolean): string | undefined;
178
176
  /**
179
177
  * Gets current database driver instance.
@@ -208,7 +206,7 @@ export declare class Configuration<D extends IDatabaseDriver = IDatabaseDriver,
208
206
  /**
209
207
  * Gets EntityRepository class to be instantiated.
210
208
  */
211
- getRepositoryClass(repository: () => EntityClass<EntityRepository<AnyEntity>>): MikroORMOptions<D, EM>['entityRepository'];
209
+ getRepositoryClass(repository: () => EntityClass<EntityRepository<AnyEntity>>): Options<D, EM>['entityRepository'];
212
210
  /**
213
211
  * Creates instance of given service and caches it.
214
212
  */
@@ -232,7 +230,7 @@ export declare class Configuration<D extends IDatabaseDriver = IDatabaseDriver,
232
230
  /**
233
231
  * Type helper to make it easier to use `mikro-orm.config.js`.
234
232
  */
235
- export declare function defineConfig<D extends IDatabaseDriver>(options: Options<D>): Options<D, D[typeof EntityManagerType] & EntityManager<IDatabaseDriver<import("../index.js").Connection>>>;
233
+ export declare function defineConfig<D extends IDatabaseDriver = IDatabaseDriver, EM extends EntityManager<D> = EntityManager<D>, Entities extends (string | EntityClass<AnyEntity> | EntitySchema)[] = (string | EntityClass<AnyEntity> | EntitySchema)[]>(options: Options<D, EM, Entities>): Options<D, EM, Entities>;
236
234
  export interface ConnectionOptions {
237
235
  dbName?: string;
238
236
  schema?: string;
@@ -282,105 +280,111 @@ export interface PoolConfig {
282
280
  }
283
281
  export interface MetadataDiscoveryOptions {
284
282
  warnWhenNoEntities?: boolean;
285
- requireEntitiesArray?: boolean;
286
283
  checkDuplicateTableNames?: boolean;
287
284
  checkDuplicateFieldNames?: boolean;
288
285
  checkDuplicateEntities?: boolean;
289
286
  checkNonPersistentCompositeProps?: boolean;
290
- alwaysAnalyseProperties?: boolean;
291
- disableDynamicFileAccess?: boolean;
292
287
  inferDefaultValues?: boolean;
293
288
  getMappedType?: (type: string, platform: Platform) => Type<unknown> | undefined;
294
289
  onMetadata?: (meta: EntityMetadata, platform: Platform) => MaybePromise<void>;
295
290
  afterDiscovered?: (storage: MetadataStorage, platform: Platform) => MaybePromise<void>;
296
291
  tsConfigPath?: string;
292
+ /** @internal */
293
+ skipSyncDiscovery?: boolean;
297
294
  }
298
- export interface MikroORMOptions<D extends IDatabaseDriver = IDatabaseDriver, EM extends EntityManager = EntityManager> extends ConnectionOptions {
299
- entities: (string | EntityClass<AnyEntity> | EntityClassGroup<AnyEntity> | EntitySchema)[];
300
- entitiesTs: (string | EntityClass<AnyEntity> | EntityClassGroup<AnyEntity> | EntitySchema)[];
301
- extensions: {
295
+ export interface Options<Driver extends IDatabaseDriver = IDatabaseDriver, EM extends EntityManager<Driver> & Driver[typeof EntityManagerType] = EntityManager<Driver> & Driver[typeof EntityManagerType], Entities extends (string | EntityClass<AnyEntity> | EntitySchema)[] = (string | EntityClass<AnyEntity> | EntitySchema)[]> extends ConnectionOptions {
296
+ entities?: Entities;
297
+ entitiesTs?: Entities;
298
+ extensions?: {
302
299
  register: (orm: MikroORM) => void;
303
300
  }[];
304
- subscribers: (EventSubscriber | Constructor<EventSubscriber>)[];
305
- filters: Dictionary<{
301
+ subscribers?: (EventSubscriber | Constructor<EventSubscriber>)[];
302
+ filters?: Dictionary<{
306
303
  name?: string;
307
304
  } & Omit<FilterDef, 'name'>>;
308
- discovery: MetadataDiscoveryOptions;
305
+ discovery?: MetadataDiscoveryOptions;
309
306
  driver?: {
310
- new (config: Configuration): D;
307
+ new (config: Configuration): Driver;
311
308
  };
312
309
  namingStrategy?: {
313
310
  new (): NamingStrategy;
314
311
  };
315
312
  implicitTransactions?: boolean;
316
313
  disableTransactions?: boolean;
317
- connect: boolean;
318
- verbose: boolean;
314
+ verbose?: boolean;
319
315
  ignoreUndefinedInQuery?: boolean;
320
- onQuery: (sql: string, params: readonly unknown[]) => string;
321
- autoJoinOneToOneOwner: boolean;
322
- autoJoinRefsForFilters: boolean;
323
- propagationOnPrototype: boolean;
324
- populateAfterFlush: boolean;
325
- serialization: {
316
+ onQuery?: (sql: string, params: readonly unknown[]) => string;
317
+ autoJoinOneToOneOwner?: boolean;
318
+ autoJoinRefsForFilters?: boolean;
319
+ filtersOnRelations?: boolean;
320
+ propagationOnPrototype?: boolean;
321
+ populateAfterFlush?: boolean;
322
+ serialization?: {
326
323
  includePrimaryKeys?: boolean;
327
324
  /** Enforce unpopulated references to be returned as objects, e.g. `{ author: { id: 1 } }` instead of `{ author: 1 }`. */
328
325
  forceObject?: boolean;
329
326
  };
330
- assign: AssignOptions<boolean>;
331
- persistOnCreate: boolean;
332
- upsertManaged: boolean;
333
- forceEntityConstructor: boolean | (Constructor<AnyEntity> | string)[];
334
- forceUndefined: boolean;
327
+ assign?: AssignOptions<boolean>;
328
+ persistOnCreate?: boolean;
329
+ upsertManaged?: boolean;
330
+ forceEntityConstructor?: boolean | (Constructor<AnyEntity> | string)[];
331
+ forceUndefined?: boolean;
332
+ /**
333
+ * Property `onCreate` hooks are normally executed during `flush` operation.
334
+ * With this option, they will be processed early inside `em.create()` method.
335
+ */
336
+ processOnCreateHooksEarly?: boolean;
335
337
  forceUtcTimezone?: boolean;
336
338
  timezone?: string;
337
- ensureDatabase: boolean | EnsureDatabaseOptions;
338
- ensureIndexes: boolean;
339
+ ensureDatabase?: boolean | EnsureDatabaseOptions;
340
+ ensureIndexes?: boolean;
339
341
  useBatchInserts?: boolean;
340
342
  useBatchUpdates?: boolean;
341
- batchSize: number;
342
- hydrator: HydratorConstructor;
343
- loadStrategy: LoadStrategy | 'select-in' | 'joined';
344
- dataloader: DataloaderType | boolean;
343
+ batchSize?: number;
344
+ hydrator?: HydratorConstructor;
345
+ loadStrategy?: LoadStrategy | `${LoadStrategy}`;
346
+ dataloader?: DataloaderType | boolean;
345
347
  populateWhere?: PopulateHint | `${PopulateHint}`;
346
- flushMode: FlushMode | 'commit' | 'auto' | 'always';
348
+ flushMode?: FlushMode | `${FlushMode}`;
347
349
  entityRepository?: EntityClass<EntityRepository<any>>;
348
350
  entityManager?: Constructor<EM>;
349
351
  replicas?: ConnectionOptions[];
350
- strict: boolean;
351
- validate: boolean;
352
- validateRequired: boolean;
353
- context: (name: string) => EntityManager | undefined;
354
- contextName: string;
355
- allowGlobalContext: boolean;
352
+ strict?: boolean;
353
+ validate?: boolean;
354
+ validateRequired?: boolean;
355
+ context?: (name: string) => EntityManager | undefined;
356
+ contextName?: string;
357
+ allowGlobalContext?: boolean;
356
358
  disableIdentityMap?: boolean;
357
- logger: (message: string) => void;
359
+ logger?: (message: string) => void;
358
360
  colors?: boolean;
359
361
  loggerFactory?: (options: LoggerOptions) => Logger;
360
- findOneOrFailHandler: (entityName: string, where: Dictionary | IPrimaryKey) => Error;
361
- findExactlyOneOrFailHandler: (entityName: string, where: Dictionary | IPrimaryKey) => Error;
362
- debug: boolean | LoggerNamespace[];
363
- ignoreDeprecations: boolean | string[];
364
- highlighter: Highlighter;
362
+ findOneOrFailHandler?: (entityName: string, where: Dictionary | IPrimaryKey) => Error;
363
+ findExactlyOneOrFailHandler?: (entityName: string, where: Dictionary | IPrimaryKey) => Error;
364
+ debug?: boolean | LoggerNamespace[];
365
+ ignoreDeprecations?: boolean | string[];
366
+ highlighter?: Highlighter;
365
367
  /**
366
368
  * Using this option, you can force the ORM to use the TS options regardless of whether the TypeScript support
367
369
  * is detected or not. This effectively means using `entitiesTs` for discovery and `pathTs` for migrations and
368
370
  * seeders. Should be used only for tests and stay disabled for production builds.
369
371
  */
370
372
  preferTs?: boolean;
371
- baseDir: string;
372
- migrations: MigrationsOptions;
373
- schemaGenerator: {
373
+ baseDir?: string;
374
+ migrations?: MigrationsOptions;
375
+ schemaGenerator?: {
374
376
  disableForeignKeys?: boolean;
375
377
  createForeignKeyConstraints?: boolean;
376
378
  ignoreSchema?: string[];
379
+ skipTables?: (string | RegExp)[];
380
+ skipColumns?: Dictionary<(string | RegExp)[]>;
377
381
  managementDbName?: string;
378
382
  };
379
- embeddables: {
383
+ embeddables?: {
380
384
  prefixMode: EmbeddedPrefixMode;
381
385
  };
382
- entityGenerator: GenerateOptions;
383
- metadataCache: {
386
+ entityGenerator?: GenerateOptions;
387
+ metadataCache?: {
384
388
  enabled?: boolean;
385
389
  combined?: boolean | string;
386
390
  pretty?: boolean;
@@ -389,7 +393,7 @@ export interface MikroORMOptions<D extends IDatabaseDriver = IDatabaseDriver, EM
389
393
  };
390
394
  options?: Dictionary;
391
395
  };
392
- resultCache: {
396
+ resultCache?: {
393
397
  expiration?: number;
394
398
  adapter?: {
395
399
  new (...params: any[]): CacheAdapter;
@@ -397,11 +401,18 @@ export interface MikroORMOptions<D extends IDatabaseDriver = IDatabaseDriver, EM
397
401
  options?: Dictionary;
398
402
  global?: boolean | number | [string, number];
399
403
  };
400
- metadataProvider: {
404
+ metadataProvider?: {
401
405
  new (config: Configuration): MetadataProvider;
402
406
  };
403
- seeder: SeederOptions;
404
- preferReadReplicas: boolean;
405
- dynamicImportProvider: (id: string) => Promise<unknown>;
407
+ seeder?: SeederOptions;
408
+ preferReadReplicas?: boolean;
409
+ dynamicImportProvider?: (id: string) => Promise<unknown>;
410
+ hashAlgorithm?: 'md5' | 'sha256';
406
411
  }
407
- export type Options<D extends IDatabaseDriver = IDatabaseDriver, EM extends D[typeof EntityManagerType] & EntityManager = D[typeof EntityManagerType] & EntityManager> = Pick<MikroORMOptions<D, EM>, Exclude<keyof MikroORMOptions<D, EM>, keyof typeof Configuration.DEFAULTS>> & Partial<MikroORMOptions<D, EM>>;
412
+ type MarkRequired<T, D> = {
413
+ [K in keyof T as Extract<K, keyof D>]-?: T[K];
414
+ } & {
415
+ [K in keyof T as Exclude<K, keyof D>]?: T[K];
416
+ };
417
+ export type RequiredOptions<D extends IDatabaseDriver = IDatabaseDriver, EM extends EntityManager<D> = EntityManager<D>, Entities extends (string | EntityClass<AnyEntity> | EntitySchema)[] = (string | EntityClass<AnyEntity> | EntitySchema)[]> = MarkRequired<Options<D, EM, Entities>, typeof DEFAULTS>;
418
+ export {};