@mikro-orm/core 7.0.0-dev.6 → 7.0.0-dev.60

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