@mikro-orm/core 7.0.0-dev.2 → 7.0.0-dev.200
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.
- package/EntityManager.d.ts +111 -61
- package/EntityManager.js +346 -300
- package/MikroORM.d.ts +44 -35
- package/MikroORM.js +103 -143
- package/README.md +3 -2
- package/cache/FileCacheAdapter.d.ts +1 -1
- package/cache/FileCacheAdapter.js +8 -7
- package/cache/GeneratedCacheAdapter.d.ts +0 -1
- package/cache/GeneratedCacheAdapter.js +0 -2
- package/cache/index.d.ts +0 -1
- package/cache/index.js +0 -1
- package/connections/Connection.d.ts +16 -7
- package/connections/Connection.js +23 -14
- package/drivers/DatabaseDriver.d.ts +25 -16
- package/drivers/DatabaseDriver.js +80 -35
- package/drivers/IDatabaseDriver.d.ts +47 -17
- package/entity/BaseEntity.d.ts +2 -2
- package/entity/BaseEntity.js +0 -3
- package/entity/Collection.d.ts +95 -31
- package/entity/Collection.js +444 -102
- package/entity/EntityAssigner.d.ts +1 -1
- package/entity/EntityAssigner.js +26 -18
- package/entity/EntityFactory.d.ts +13 -1
- package/entity/EntityFactory.js +88 -54
- package/entity/EntityHelper.d.ts +2 -2
- package/entity/EntityHelper.js +38 -15
- package/entity/EntityLoader.d.ts +8 -7
- package/entity/EntityLoader.js +134 -80
- package/entity/EntityRepository.d.ts +24 -4
- package/entity/EntityRepository.js +8 -2
- package/entity/Reference.d.ts +9 -12
- package/entity/Reference.js +34 -9
- package/entity/WrappedEntity.d.ts +2 -7
- package/entity/WrappedEntity.js +3 -8
- package/entity/defineEntity.d.ts +585 -0
- package/entity/defineEntity.js +533 -0
- package/entity/index.d.ts +3 -2
- package/entity/index.js +3 -2
- package/entity/utils.d.ts +7 -0
- package/entity/utils.js +16 -4
- package/entity/validators.d.ts +11 -0
- package/entity/validators.js +65 -0
- package/enums.d.ts +22 -6
- package/enums.js +15 -1
- package/errors.d.ts +23 -9
- package/errors.js +59 -21
- package/events/EventManager.d.ts +2 -1
- package/events/EventManager.js +19 -11
- package/events/EventSubscriber.d.ts +3 -1
- package/hydration/Hydrator.js +1 -2
- package/hydration/ObjectHydrator.d.ts +4 -4
- package/hydration/ObjectHydrator.js +53 -33
- package/index.d.ts +2 -2
- package/index.js +1 -2
- package/logging/DefaultLogger.d.ts +1 -1
- package/logging/DefaultLogger.js +1 -0
- package/logging/SimpleLogger.d.ts +1 -1
- package/logging/colors.d.ts +1 -1
- package/logging/colors.js +7 -6
- package/logging/index.d.ts +1 -0
- package/logging/index.js +1 -0
- package/logging/inspect.d.ts +2 -0
- package/logging/inspect.js +11 -0
- package/metadata/EntitySchema.d.ts +26 -26
- package/metadata/EntitySchema.js +82 -51
- package/metadata/MetadataDiscovery.d.ts +7 -10
- package/metadata/MetadataDiscovery.js +408 -335
- package/metadata/MetadataProvider.d.ts +11 -2
- package/metadata/MetadataProvider.js +46 -2
- package/metadata/MetadataStorage.d.ts +13 -11
- package/metadata/MetadataStorage.js +70 -37
- package/metadata/MetadataValidator.d.ts +17 -9
- package/metadata/MetadataValidator.js +100 -42
- package/metadata/discover-entities.d.ts +5 -0
- package/metadata/discover-entities.js +40 -0
- package/metadata/index.d.ts +1 -1
- package/metadata/index.js +1 -1
- package/metadata/types.d.ts +502 -0
- package/metadata/types.js +1 -0
- package/naming-strategy/AbstractNamingStrategy.d.ts +12 -4
- package/naming-strategy/AbstractNamingStrategy.js +14 -2
- package/naming-strategy/EntityCaseNamingStrategy.d.ts +3 -3
- package/naming-strategy/EntityCaseNamingStrategy.js +6 -5
- package/naming-strategy/MongoNamingStrategy.d.ts +3 -3
- package/naming-strategy/MongoNamingStrategy.js +6 -6
- package/naming-strategy/NamingStrategy.d.ts +24 -4
- package/naming-strategy/UnderscoreNamingStrategy.d.ts +3 -3
- package/naming-strategy/UnderscoreNamingStrategy.js +6 -6
- package/not-supported.d.ts +2 -0
- package/not-supported.js +4 -0
- package/package.json +19 -11
- package/platforms/ExceptionConverter.js +1 -1
- package/platforms/Platform.d.ts +7 -13
- package/platforms/Platform.js +20 -43
- package/serialization/EntitySerializer.d.ts +5 -0
- package/serialization/EntitySerializer.js +47 -27
- package/serialization/EntityTransformer.js +28 -18
- package/serialization/SerializationContext.d.ts +6 -6
- package/serialization/SerializationContext.js +16 -13
- package/types/ArrayType.d.ts +1 -1
- package/types/ArrayType.js +2 -3
- package/types/BigIntType.d.ts +9 -6
- package/types/BigIntType.js +4 -1
- package/types/BlobType.d.ts +0 -1
- package/types/BlobType.js +0 -3
- package/types/BooleanType.d.ts +2 -1
- package/types/BooleanType.js +3 -0
- package/types/DecimalType.d.ts +6 -4
- package/types/DecimalType.js +3 -3
- package/types/DoubleType.js +2 -2
- package/types/EnumArrayType.js +1 -2
- package/types/JsonType.d.ts +1 -1
- package/types/JsonType.js +7 -2
- package/types/TinyIntType.js +1 -1
- package/types/Type.d.ts +2 -4
- package/types/Type.js +3 -3
- package/types/Uint8ArrayType.d.ts +0 -1
- package/types/Uint8ArrayType.js +1 -4
- package/types/index.d.ts +1 -1
- package/typings.d.ts +300 -140
- package/typings.js +62 -44
- package/unit-of-work/ChangeSet.d.ts +2 -6
- package/unit-of-work/ChangeSet.js +4 -5
- package/unit-of-work/ChangeSetComputer.d.ts +1 -3
- package/unit-of-work/ChangeSetComputer.js +26 -13
- package/unit-of-work/ChangeSetPersister.d.ts +5 -4
- package/unit-of-work/ChangeSetPersister.js +77 -35
- package/unit-of-work/CommitOrderCalculator.d.ts +12 -10
- package/unit-of-work/CommitOrderCalculator.js +13 -13
- package/unit-of-work/IdentityMap.d.ts +12 -0
- package/unit-of-work/IdentityMap.js +39 -1
- package/unit-of-work/UnitOfWork.d.ts +23 -3
- package/unit-of-work/UnitOfWork.js +199 -106
- package/utils/AbstractSchemaGenerator.d.ts +5 -5
- package/utils/AbstractSchemaGenerator.js +22 -17
- package/utils/AsyncContext.d.ts +6 -0
- package/utils/AsyncContext.js +42 -0
- package/utils/Configuration.d.ts +779 -207
- package/utils/Configuration.js +146 -190
- package/utils/ConfigurationLoader.d.ts +1 -54
- package/utils/ConfigurationLoader.js +1 -352
- package/utils/Cursor.d.ts +3 -6
- package/utils/Cursor.js +27 -11
- package/utils/DataloaderUtils.d.ts +15 -5
- package/utils/DataloaderUtils.js +65 -17
- package/utils/EntityComparator.d.ts +13 -9
- package/utils/EntityComparator.js +164 -89
- package/utils/QueryHelper.d.ts +14 -6
- package/utils/QueryHelper.js +88 -26
- package/utils/RawQueryFragment.d.ts +48 -25
- package/utils/RawQueryFragment.js +67 -66
- package/utils/RequestContext.js +2 -2
- package/utils/TransactionContext.js +2 -2
- package/utils/TransactionManager.d.ts +65 -0
- package/utils/TransactionManager.js +223 -0
- package/utils/Utils.d.ts +13 -120
- package/utils/Utils.js +104 -375
- package/utils/clone.js +8 -23
- package/utils/env-vars.d.ts +7 -0
- package/utils/env-vars.js +97 -0
- package/utils/fs-utils.d.ts +32 -0
- package/utils/fs-utils.js +178 -0
- package/utils/index.d.ts +2 -1
- package/utils/index.js +2 -1
- package/utils/upsert-utils.d.ts +9 -4
- package/utils/upsert-utils.js +55 -4
- package/decorators/Check.d.ts +0 -3
- package/decorators/Check.js +0 -13
- package/decorators/CreateRequestContext.d.ts +0 -3
- package/decorators/CreateRequestContext.js +0 -29
- package/decorators/Embeddable.d.ts +0 -8
- package/decorators/Embeddable.js +0 -11
- package/decorators/Embedded.d.ts +0 -18
- package/decorators/Embedded.js +0 -18
- package/decorators/Entity.d.ts +0 -18
- package/decorators/Entity.js +0 -13
- package/decorators/Enum.d.ts +0 -9
- package/decorators/Enum.js +0 -16
- package/decorators/Filter.d.ts +0 -2
- package/decorators/Filter.js +0 -8
- package/decorators/Formula.d.ts +0 -5
- package/decorators/Formula.js +0 -15
- package/decorators/Indexed.d.ts +0 -17
- package/decorators/Indexed.js +0 -20
- package/decorators/ManyToMany.d.ts +0 -40
- package/decorators/ManyToMany.js +0 -14
- package/decorators/ManyToOne.d.ts +0 -30
- package/decorators/ManyToOne.js +0 -14
- package/decorators/OneToMany.d.ts +0 -28
- package/decorators/OneToMany.js +0 -17
- package/decorators/OneToOne.d.ts +0 -24
- package/decorators/OneToOne.js +0 -7
- package/decorators/PrimaryKey.d.ts +0 -9
- package/decorators/PrimaryKey.js +0 -20
- package/decorators/Property.d.ts +0 -250
- package/decorators/Property.js +0 -32
- package/decorators/Transactional.d.ts +0 -13
- package/decorators/Transactional.js +0 -28
- package/decorators/hooks.d.ts +0 -16
- package/decorators/hooks.js +0 -47
- package/decorators/index.d.ts +0 -17
- package/decorators/index.js +0 -17
- package/entity/ArrayCollection.d.ts +0 -116
- package/entity/ArrayCollection.js +0 -395
- package/entity/EntityValidator.d.ts +0 -19
- package/entity/EntityValidator.js +0 -150
- package/metadata/ReflectMetadataProvider.d.ts +0 -8
- package/metadata/ReflectMetadataProvider.js +0 -44
- package/utils/resolveContextProvider.d.ts +0 -10
- package/utils/resolveContextProvider.js +0 -28
package/utils/Configuration.js
CHANGED
|
@@ -1,137 +1,134 @@
|
|
|
1
|
-
import { FileCacheAdapter } from '../cache/FileCacheAdapter.js';
|
|
2
1
|
import { NullCacheAdapter } from '../cache/NullCacheAdapter.js';
|
|
3
2
|
import { ObjectHydrator } from '../hydration/ObjectHydrator.js';
|
|
4
3
|
import { NullHighlighter } from '../utils/NullHighlighter.js';
|
|
5
4
|
import { DefaultLogger } from '../logging/DefaultLogger.js';
|
|
6
5
|
import { colors } from '../logging/colors.js';
|
|
7
6
|
import { Utils } from '../utils/Utils.js';
|
|
8
|
-
import {
|
|
7
|
+
import { MetadataProvider } from '../metadata/MetadataProvider.js';
|
|
9
8
|
import { NotFoundError } from '../errors.js';
|
|
10
9
|
import { RequestContext } from './RequestContext.js';
|
|
11
10
|
import { DataloaderType, FlushMode, LoadStrategy, PopulateHint } from '../enums.js';
|
|
12
11
|
import { MemoryCacheAdapter } from '../cache/MemoryCacheAdapter.js';
|
|
13
12
|
import { EntityComparator } from './EntityComparator.js';
|
|
13
|
+
import { setEnv } from './env-vars.js';
|
|
14
|
+
const DEFAULTS = {
|
|
15
|
+
pool: {},
|
|
16
|
+
entities: [],
|
|
17
|
+
entitiesTs: [],
|
|
18
|
+
extensions: [],
|
|
19
|
+
subscribers: [],
|
|
20
|
+
filters: {},
|
|
21
|
+
discovery: {
|
|
22
|
+
warnWhenNoEntities: true,
|
|
23
|
+
checkDuplicateTableNames: true,
|
|
24
|
+
checkDuplicateFieldNames: true,
|
|
25
|
+
checkDuplicateEntities: true,
|
|
26
|
+
checkNonPersistentCompositeProps: true,
|
|
27
|
+
inferDefaultValues: true,
|
|
28
|
+
},
|
|
29
|
+
validateRequired: true,
|
|
30
|
+
context: (name) => RequestContext.getEntityManager(name),
|
|
31
|
+
contextName: 'default',
|
|
32
|
+
allowGlobalContext: false,
|
|
33
|
+
// eslint-disable-next-line no-console
|
|
34
|
+
logger: console.log.bind(console),
|
|
35
|
+
colors: true,
|
|
36
|
+
findOneOrFailHandler: (entityName, where) => NotFoundError.findOneFailed(entityName, where),
|
|
37
|
+
findExactlyOneOrFailHandler: (entityName, where) => NotFoundError.findExactlyOneFailed(entityName, where),
|
|
38
|
+
baseDir: globalThis.process?.cwd?.(),
|
|
39
|
+
hydrator: ObjectHydrator,
|
|
40
|
+
flushMode: FlushMode.AUTO,
|
|
41
|
+
loadStrategy: LoadStrategy.BALANCED,
|
|
42
|
+
dataloader: DataloaderType.NONE,
|
|
43
|
+
populateWhere: PopulateHint.ALL,
|
|
44
|
+
ignoreUndefinedInQuery: false,
|
|
45
|
+
onQuery: (sql) => sql,
|
|
46
|
+
autoJoinOneToOneOwner: true,
|
|
47
|
+
autoJoinRefsForFilters: true,
|
|
48
|
+
filtersOnRelations: true,
|
|
49
|
+
propagationOnPrototype: true,
|
|
50
|
+
populateAfterFlush: true,
|
|
51
|
+
serialization: {
|
|
52
|
+
includePrimaryKeys: true,
|
|
53
|
+
},
|
|
54
|
+
assign: {
|
|
55
|
+
updateNestedEntities: true,
|
|
56
|
+
updateByPrimaryKey: true,
|
|
57
|
+
mergeObjectProperties: false,
|
|
58
|
+
mergeEmbeddedProperties: true,
|
|
59
|
+
ignoreUndefined: false,
|
|
60
|
+
},
|
|
61
|
+
persistOnCreate: true,
|
|
62
|
+
upsertManaged: true,
|
|
63
|
+
forceEntityConstructor: false,
|
|
64
|
+
forceUndefined: false,
|
|
65
|
+
forceUtcTimezone: true,
|
|
66
|
+
processOnCreateHooksEarly: true,
|
|
67
|
+
ensureDatabase: true,
|
|
68
|
+
ensureIndexes: false,
|
|
69
|
+
batchSize: 300,
|
|
70
|
+
debug: false,
|
|
71
|
+
ignoreDeprecations: false,
|
|
72
|
+
verbose: false,
|
|
73
|
+
driverOptions: {},
|
|
74
|
+
migrations: {
|
|
75
|
+
tableName: 'mikro_orm_migrations',
|
|
76
|
+
glob: '!(*.d).{js,ts,cjs}',
|
|
77
|
+
silent: false,
|
|
78
|
+
transactional: true,
|
|
79
|
+
disableForeignKeys: false,
|
|
80
|
+
allOrNothing: true,
|
|
81
|
+
dropTables: true,
|
|
82
|
+
safe: false,
|
|
83
|
+
snapshot: true,
|
|
84
|
+
emit: 'ts',
|
|
85
|
+
fileName: (timestamp, name) => `Migration${timestamp}${name ? '_' + name : ''}`,
|
|
86
|
+
},
|
|
87
|
+
schemaGenerator: {
|
|
88
|
+
disableForeignKeys: false,
|
|
89
|
+
createForeignKeyConstraints: true,
|
|
90
|
+
ignoreSchema: [],
|
|
91
|
+
skipTables: [],
|
|
92
|
+
skipColumns: {},
|
|
93
|
+
},
|
|
94
|
+
embeddables: {
|
|
95
|
+
prefixMode: 'relative',
|
|
96
|
+
},
|
|
97
|
+
entityGenerator: {
|
|
98
|
+
forceUndefined: true,
|
|
99
|
+
undefinedDefaults: false,
|
|
100
|
+
scalarTypeInDecorator: false,
|
|
101
|
+
bidirectionalRelations: true,
|
|
102
|
+
identifiedReferences: true,
|
|
103
|
+
scalarPropertiesForRelations: 'never',
|
|
104
|
+
entityDefinition: 'defineEntity',
|
|
105
|
+
decorators: 'legacy',
|
|
106
|
+
enumMode: 'dictionary',
|
|
107
|
+
/* v8 ignore next */
|
|
108
|
+
fileName: (className) => className,
|
|
109
|
+
onlyPurePivotTables: false,
|
|
110
|
+
outputPurePivotTables: false,
|
|
111
|
+
readOnlyPivotTables: false,
|
|
112
|
+
useCoreBaseEntity: false,
|
|
113
|
+
},
|
|
114
|
+
metadataCache: {},
|
|
115
|
+
resultCache: {
|
|
116
|
+
adapter: MemoryCacheAdapter,
|
|
117
|
+
expiration: 1000, // 1s
|
|
118
|
+
options: {},
|
|
119
|
+
},
|
|
120
|
+
metadataProvider: MetadataProvider,
|
|
121
|
+
highlighter: new NullHighlighter(),
|
|
122
|
+
seeder: {
|
|
123
|
+
defaultSeeder: 'DatabaseSeeder',
|
|
124
|
+
glob: '!(*.d).{js,ts}',
|
|
125
|
+
emit: 'ts',
|
|
126
|
+
fileName: (className) => className,
|
|
127
|
+
},
|
|
128
|
+
preferReadReplicas: true,
|
|
129
|
+
dynamicImportProvider: /* v8 ignore next */ (id) => import(id),
|
|
130
|
+
};
|
|
14
131
|
export class Configuration {
|
|
15
|
-
static DEFAULTS = {
|
|
16
|
-
pool: {},
|
|
17
|
-
entities: [],
|
|
18
|
-
entitiesTs: [],
|
|
19
|
-
extensions: [],
|
|
20
|
-
subscribers: [],
|
|
21
|
-
filters: {},
|
|
22
|
-
discovery: {
|
|
23
|
-
warnWhenNoEntities: true,
|
|
24
|
-
requireEntitiesArray: false,
|
|
25
|
-
checkDuplicateTableNames: true,
|
|
26
|
-
checkDuplicateFieldNames: true,
|
|
27
|
-
checkDuplicateEntities: true,
|
|
28
|
-
checkNonPersistentCompositeProps: true,
|
|
29
|
-
alwaysAnalyseProperties: true,
|
|
30
|
-
disableDynamicFileAccess: false,
|
|
31
|
-
inferDefaultValues: true,
|
|
32
|
-
},
|
|
33
|
-
strict: false,
|
|
34
|
-
validate: false,
|
|
35
|
-
validateRequired: true,
|
|
36
|
-
context: (name) => RequestContext.getEntityManager(name),
|
|
37
|
-
contextName: 'default',
|
|
38
|
-
allowGlobalContext: false,
|
|
39
|
-
// eslint-disable-next-line no-console
|
|
40
|
-
logger: console.log.bind(console),
|
|
41
|
-
colors: true,
|
|
42
|
-
findOneOrFailHandler: (entityName, where) => NotFoundError.findOneFailed(entityName, where),
|
|
43
|
-
findExactlyOneOrFailHandler: (entityName, where) => NotFoundError.findExactlyOneFailed(entityName, where),
|
|
44
|
-
baseDir: process.cwd(),
|
|
45
|
-
hydrator: ObjectHydrator,
|
|
46
|
-
flushMode: FlushMode.AUTO,
|
|
47
|
-
loadStrategy: LoadStrategy.JOINED,
|
|
48
|
-
dataloader: DataloaderType.NONE,
|
|
49
|
-
populateWhere: PopulateHint.ALL,
|
|
50
|
-
connect: true,
|
|
51
|
-
ignoreUndefinedInQuery: false,
|
|
52
|
-
onQuery: sql => sql,
|
|
53
|
-
autoJoinOneToOneOwner: true,
|
|
54
|
-
autoJoinRefsForFilters: true,
|
|
55
|
-
propagationOnPrototype: true,
|
|
56
|
-
populateAfterFlush: true,
|
|
57
|
-
serialization: {
|
|
58
|
-
includePrimaryKeys: true,
|
|
59
|
-
},
|
|
60
|
-
assign: {
|
|
61
|
-
updateNestedEntities: true,
|
|
62
|
-
updateByPrimaryKey: true,
|
|
63
|
-
mergeObjectProperties: false,
|
|
64
|
-
mergeEmbeddedProperties: true,
|
|
65
|
-
ignoreUndefined: false,
|
|
66
|
-
},
|
|
67
|
-
persistOnCreate: true,
|
|
68
|
-
upsertManaged: true,
|
|
69
|
-
forceEntityConstructor: false,
|
|
70
|
-
forceUndefined: false,
|
|
71
|
-
ensureDatabase: true,
|
|
72
|
-
ensureIndexes: false,
|
|
73
|
-
batchSize: 300,
|
|
74
|
-
debug: false,
|
|
75
|
-
ignoreDeprecations: false,
|
|
76
|
-
verbose: false,
|
|
77
|
-
driverOptions: {},
|
|
78
|
-
migrations: {
|
|
79
|
-
tableName: 'mikro_orm_migrations',
|
|
80
|
-
path: './migrations',
|
|
81
|
-
glob: '!(*.d).{js,ts,cjs}',
|
|
82
|
-
silent: false,
|
|
83
|
-
transactional: true,
|
|
84
|
-
disableForeignKeys: false,
|
|
85
|
-
allOrNothing: true,
|
|
86
|
-
dropTables: true,
|
|
87
|
-
safe: false,
|
|
88
|
-
snapshot: true,
|
|
89
|
-
emit: 'ts',
|
|
90
|
-
fileName: (timestamp, name) => `Migration${timestamp}${name ? '_' + name : ''}`,
|
|
91
|
-
},
|
|
92
|
-
schemaGenerator: {
|
|
93
|
-
disableForeignKeys: false,
|
|
94
|
-
createForeignKeyConstraints: true,
|
|
95
|
-
ignoreSchema: [],
|
|
96
|
-
},
|
|
97
|
-
embeddables: {
|
|
98
|
-
prefixMode: 'absolute',
|
|
99
|
-
},
|
|
100
|
-
entityGenerator: {
|
|
101
|
-
forceUndefined: true,
|
|
102
|
-
undefinedDefaults: false,
|
|
103
|
-
bidirectionalRelations: false,
|
|
104
|
-
identifiedReferences: false,
|
|
105
|
-
scalarTypeInDecorator: false,
|
|
106
|
-
scalarPropertiesForRelations: 'never',
|
|
107
|
-
fileName: (className) => className,
|
|
108
|
-
onlyPurePivotTables: false,
|
|
109
|
-
outputPurePivotTables: false,
|
|
110
|
-
readOnlyPivotTables: false,
|
|
111
|
-
useCoreBaseEntity: false,
|
|
112
|
-
},
|
|
113
|
-
metadataCache: {
|
|
114
|
-
pretty: false,
|
|
115
|
-
adapter: FileCacheAdapter,
|
|
116
|
-
options: { cacheDir: process.cwd() + '/temp' },
|
|
117
|
-
},
|
|
118
|
-
resultCache: {
|
|
119
|
-
adapter: MemoryCacheAdapter,
|
|
120
|
-
expiration: 1000, // 1s
|
|
121
|
-
options: {},
|
|
122
|
-
},
|
|
123
|
-
metadataProvider: ReflectMetadataProvider,
|
|
124
|
-
highlighter: new NullHighlighter(),
|
|
125
|
-
seeder: {
|
|
126
|
-
path: './seeders',
|
|
127
|
-
defaultSeeder: 'DatabaseSeeder',
|
|
128
|
-
glob: '!(*.d).{js,ts}',
|
|
129
|
-
emit: 'ts',
|
|
130
|
-
fileName: (className) => className,
|
|
131
|
-
},
|
|
132
|
-
preferReadReplicas: true,
|
|
133
|
-
dynamicImportProvider: /* v8 ignore next */ (id) => import(id),
|
|
134
|
-
};
|
|
135
132
|
options;
|
|
136
133
|
logger;
|
|
137
134
|
driver;
|
|
@@ -140,11 +137,9 @@ export class Configuration {
|
|
|
140
137
|
extensions = new Map();
|
|
141
138
|
constructor(options, validate = true) {
|
|
142
139
|
if (options.dynamicImportProvider) {
|
|
143
|
-
|
|
140
|
+
globalThis.dynamicImportProvider = options.dynamicImportProvider;
|
|
144
141
|
}
|
|
145
|
-
this.options = Utils.mergeConfig({},
|
|
146
|
-
this.options.baseDir = Utils.absolutePath(this.options.baseDir);
|
|
147
|
-
this.options.preferTs ??= options.preferTs;
|
|
142
|
+
this.options = Utils.mergeConfig({}, DEFAULTS, options);
|
|
148
143
|
if (validate) {
|
|
149
144
|
this.validateOptions();
|
|
150
145
|
}
|
|
@@ -160,7 +155,6 @@ export class Configuration {
|
|
|
160
155
|
this.driver = new this.options.driver(this);
|
|
161
156
|
this.platform = this.driver.getPlatform();
|
|
162
157
|
this.platform.setConfig(this);
|
|
163
|
-
this.detectSourceFolder(options);
|
|
164
158
|
this.init(validate);
|
|
165
159
|
}
|
|
166
160
|
}
|
|
@@ -190,7 +184,7 @@ export class Configuration {
|
|
|
190
184
|
* Resets the configuration to its default value
|
|
191
185
|
*/
|
|
192
186
|
reset(key) {
|
|
193
|
-
this.options[key] =
|
|
187
|
+
this.options[key] = DEFAULTS[key];
|
|
194
188
|
}
|
|
195
189
|
/**
|
|
196
190
|
* Gets Logger instance.
|
|
@@ -204,15 +198,6 @@ export class Configuration {
|
|
|
204
198
|
}
|
|
205
199
|
return this.options.dataloader;
|
|
206
200
|
}
|
|
207
|
-
/**
|
|
208
|
-
* Gets current client URL (connection string).
|
|
209
|
-
*/
|
|
210
|
-
getClientUrl(hidePassword = false) {
|
|
211
|
-
if (hidePassword) {
|
|
212
|
-
return this.options.clientUrl.replace(/\/\/([^:]+):(.+)@/, '//$1:*****@');
|
|
213
|
-
}
|
|
214
|
-
return this.options.clientUrl;
|
|
215
|
-
}
|
|
216
201
|
getSchema(skipDefaultSchema = false) {
|
|
217
202
|
if (skipDefaultSchema && this.options.schema === this.platform.getDefaultSchemaName()) {
|
|
218
203
|
return undefined;
|
|
@@ -233,7 +218,7 @@ export class Configuration {
|
|
|
233
218
|
return this.cache.get(name);
|
|
234
219
|
}
|
|
235
220
|
const ext = this.extensions.get(name);
|
|
236
|
-
/* v8 ignore next
|
|
221
|
+
/* v8 ignore next */
|
|
237
222
|
if (!ext) {
|
|
238
223
|
return undefined;
|
|
239
224
|
}
|
|
@@ -293,8 +278,7 @@ export class Configuration {
|
|
|
293
278
|
*/
|
|
294
279
|
getCachedService(cls, ...args) {
|
|
295
280
|
if (!this.cache.has(cls.name)) {
|
|
296
|
-
|
|
297
|
-
this.cache.set(cls.name, new Class(...args));
|
|
281
|
+
this.cache.set(cls.name, new cls(...args));
|
|
298
282
|
}
|
|
299
283
|
return this.cache.get(cls.name);
|
|
300
284
|
}
|
|
@@ -302,26 +286,25 @@ export class Configuration {
|
|
|
302
286
|
this.cache.clear();
|
|
303
287
|
}
|
|
304
288
|
init(validate) {
|
|
305
|
-
|
|
306
|
-
|
|
289
|
+
const useCache = this.getMetadataProvider().useCache();
|
|
290
|
+
const metadataCache = this.options.metadataCache;
|
|
291
|
+
if (!useCache) {
|
|
292
|
+
metadataCache.adapter = NullCacheAdapter;
|
|
307
293
|
}
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
if (!
|
|
312
|
-
|
|
313
|
-
}
|
|
314
|
-
if (!('implicitTransactions' in this.options)) {
|
|
315
|
-
this.options.implicitTransactions = this.platform.usesImplicitTransactions();
|
|
294
|
+
metadataCache.enabled ??= useCache;
|
|
295
|
+
this.options.clientUrl ??= this.platform.getDefaultClientUrl();
|
|
296
|
+
this.options.implicitTransactions ??= this.platform.usesImplicitTransactions();
|
|
297
|
+
if (validate && metadataCache.enabled && !metadataCache.adapter) {
|
|
298
|
+
throw new Error('No metadata cache adapter specified, please fill in `metadataCache.adapter` option or use the async MikroORM.init() method which can autoload it.');
|
|
316
299
|
}
|
|
317
300
|
try {
|
|
318
|
-
const url = new URL(this.
|
|
301
|
+
const url = new URL(this.options.clientUrl);
|
|
319
302
|
if (url.pathname) {
|
|
320
303
|
this.options.dbName = this.get('dbName', decodeURIComponent(url.pathname).substring(1));
|
|
321
304
|
}
|
|
322
305
|
}
|
|
323
306
|
catch {
|
|
324
|
-
const url = this.
|
|
307
|
+
const url = this.options.clientUrl.match(/:\/\/.*\/([^?]+)/);
|
|
325
308
|
if (url) {
|
|
326
309
|
this.options.dbName = this.get('dbName', decodeURIComponent(url[1]));
|
|
327
310
|
}
|
|
@@ -329,16 +312,15 @@ export class Configuration {
|
|
|
329
312
|
if (validate && !this.options.dbName && this.options.clientUrl) {
|
|
330
313
|
throw new Error("No database specified, `clientUrl` option provided but it's missing the pathname.");
|
|
331
314
|
}
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
}
|
|
335
|
-
if (!this.options.charset) {
|
|
336
|
-
this.options.charset = this.platform.getDefaultCharset();
|
|
337
|
-
}
|
|
315
|
+
this.options.schema ??= this.platform.getDefaultSchemaName();
|
|
316
|
+
this.options.charset ??= this.platform.getDefaultCharset();
|
|
338
317
|
Object.keys(this.options.filters).forEach(key => {
|
|
339
318
|
this.options.filters[key].default ??= true;
|
|
340
319
|
});
|
|
341
|
-
|
|
320
|
+
if (!this.options.filtersOnRelations) {
|
|
321
|
+
this.options.autoJoinRefsForFilters ??= false;
|
|
322
|
+
}
|
|
323
|
+
this.options.subscribers = [...this.options.subscribers].map(subscriber => {
|
|
342
324
|
return subscriber.constructor.name === 'Function' ? new subscriber() : subscriber;
|
|
343
325
|
});
|
|
344
326
|
this.sync();
|
|
@@ -347,40 +329,11 @@ export class Configuration {
|
|
|
347
329
|
}
|
|
348
330
|
}
|
|
349
331
|
sync() {
|
|
350
|
-
|
|
332
|
+
setEnv('MIKRO_ORM_COLORS', this.options.colors);
|
|
351
333
|
this.logger.setDebugMode(this.options.debug);
|
|
352
334
|
}
|
|
353
|
-
/**
|
|
354
|
-
* Checks if `src` folder exists, it so, tries to adjust the migrations and seeders paths automatically to use it.
|
|
355
|
-
* If there is a `dist` or `build` folder, it will be used for the JS variant (`path` option), while the `src` folder will be
|
|
356
|
-
* used for the TS variant (`pathTs` option).
|
|
357
|
-
*
|
|
358
|
-
* If the default folder exists (e.g. `/migrations`), the config will respect that, so this auto-detection should not
|
|
359
|
-
* break existing projects, only help with the new ones.
|
|
360
|
-
*/
|
|
361
|
-
detectSourceFolder(options) {
|
|
362
|
-
if (!Utils.pathExistsSync(this.options.baseDir + '/src')) {
|
|
363
|
-
return;
|
|
364
|
-
}
|
|
365
|
-
const migrationsPathExists = Utils.pathExistsSync(this.options.baseDir + '/' + this.options.migrations.path);
|
|
366
|
-
const seedersPathExists = Utils.pathExistsSync(this.options.baseDir + '/' + this.options.seeder.path);
|
|
367
|
-
const distDir = Utils.pathExistsSync(this.options.baseDir + '/dist');
|
|
368
|
-
const buildDir = Utils.pathExistsSync(this.options.baseDir + '/build');
|
|
369
|
-
// if neither `dist` nor `build` exist, we use the `src` folder as it might be a JS project without building, but with `src` folder
|
|
370
|
-
const path = distDir ? './dist' : (buildDir ? './build' : './src');
|
|
371
|
-
// only if the user did not provide any values and if the default path does not exist
|
|
372
|
-
if (!options.migrations?.path && !options.migrations?.pathTs && !migrationsPathExists) {
|
|
373
|
-
this.options.migrations.path = `${path}/migrations`;
|
|
374
|
-
this.options.migrations.pathTs = './src/migrations';
|
|
375
|
-
}
|
|
376
|
-
// only if the user did not provide any values and if the default path does not exist
|
|
377
|
-
if (!options.seeder?.path && !options.seeder?.pathTs && !seedersPathExists) {
|
|
378
|
-
this.options.seeder.path = `${path}/seeders`;
|
|
379
|
-
this.options.seeder.pathTs = './src/seeders';
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
335
|
validateOptions() {
|
|
383
|
-
/* v8 ignore next
|
|
336
|
+
/* v8 ignore next */
|
|
384
337
|
if ('type' in this.options) {
|
|
385
338
|
throw new Error('The `type` option has been removed in v6, please fill in the `driver` option instead or use `defineConfig` helper (to define your ORM config) or `MikroORM` class (to call the `init` method) exported from the driver package (e.g. `import { defineConfig } from \'@mikro-orm/mysql\'; export default defineConfig({ ... })`).');
|
|
386
339
|
}
|
|
@@ -393,6 +346,9 @@ export class Configuration {
|
|
|
393
346
|
if (this.options.entities.length === 0 && this.options.discovery.warnWhenNoEntities) {
|
|
394
347
|
throw new Error('No entities found, please use `entities` option');
|
|
395
348
|
}
|
|
349
|
+
if (typeof this.options.driverOptions === 'function' && this.options.driverOptions.constructor.name === 'AsyncFunction') {
|
|
350
|
+
throw new Error('`driverOptions` callback cannot be async');
|
|
351
|
+
}
|
|
396
352
|
}
|
|
397
353
|
}
|
|
398
354
|
/**
|
|
@@ -1,54 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import type { EntityManagerType, IDatabaseDriver } from '../drivers/IDatabaseDriver.js';
|
|
3
|
-
import type { Dictionary } from '../typings.js';
|
|
4
|
-
import { Configuration, type Options } from './Configuration.js';
|
|
5
|
-
/**
|
|
6
|
-
* @internal
|
|
7
|
-
*/
|
|
8
|
-
export declare class ConfigurationLoader {
|
|
9
|
-
/**
|
|
10
|
-
* Gets a named configuration
|
|
11
|
-
*
|
|
12
|
-
* @param contextName Load a config with the given `contextName` value. Used when config file exports array or factory function. Setting it to "default" matches also config objects without `contextName` set.
|
|
13
|
-
* @param paths Array of possible paths for a configuration file. Files will be checked in order, and the first existing one will be used. Defaults to the output of {@link ConfigurationLoader.getConfigPaths}.
|
|
14
|
-
* @param options Additional options to augment the final configuration with.
|
|
15
|
-
*/
|
|
16
|
-
static getConfiguration<D extends IDatabaseDriver = IDatabaseDriver, EM extends D[typeof EntityManagerType] & EntityManager = EntityManager>(contextName: string, paths?: string[], options?: Partial<Options>): Promise<Configuration<D, EM>>;
|
|
17
|
-
/**
|
|
18
|
-
* Gets the default config from the default paths
|
|
19
|
-
*
|
|
20
|
-
* @deprecated Prefer to explicitly set the `contextName` at the first argument. This signature is available for backwards compatibility, and may be removed in v7.
|
|
21
|
-
*/
|
|
22
|
-
static getConfiguration<D extends IDatabaseDriver = IDatabaseDriver, EM extends D[typeof EntityManagerType] & EntityManager = EntityManager>(): Promise<Configuration<D, EM>>;
|
|
23
|
-
/**
|
|
24
|
-
* Gets default configuration out of the default paths, and possibly from `process.argv`
|
|
25
|
-
*
|
|
26
|
-
* @param validate Whether to validate the final configuration.
|
|
27
|
-
* @param options Additional options to augment the final configuration with (just before validation).
|
|
28
|
-
*
|
|
29
|
-
* @deprecated Use the other overloads of this method. This signature will be removed in v7.
|
|
30
|
-
*/
|
|
31
|
-
static getConfiguration<D extends IDatabaseDriver = IDatabaseDriver, EM extends D[typeof EntityManagerType] & EntityManager = EntityManager>(validate: boolean, options?: Partial<Options>): Promise<Configuration<D, EM>>;
|
|
32
|
-
static getConfigFile(paths: string[]): Promise<[string, unknown] | []>;
|
|
33
|
-
static getPackageConfig(basePath?: string): Dictionary;
|
|
34
|
-
static getSettings(): Settings;
|
|
35
|
-
static configPathsFromArg(): string[] | undefined;
|
|
36
|
-
static getConfigPaths(): string[];
|
|
37
|
-
static isESM(): boolean;
|
|
38
|
-
static registerTypeScriptSupport(configPath?: string): Promise<boolean>;
|
|
39
|
-
static registerDotenv<D extends IDatabaseDriver>(options?: Options<D>): void;
|
|
40
|
-
static loadEnvironmentVars<D extends IDatabaseDriver>(): Promise<Partial<Options<D>>>;
|
|
41
|
-
static loadEnvironmentVarsSync<D extends IDatabaseDriver>(): Partial<Options<D>>;
|
|
42
|
-
static getORMPackages(): Set<string>;
|
|
43
|
-
/** @internal */
|
|
44
|
-
static commonJSCompat(options: Partial<Options>): void;
|
|
45
|
-
static getORMPackageVersion(name: string): string | undefined;
|
|
46
|
-
static checkPackageVersion(): string;
|
|
47
|
-
}
|
|
48
|
-
export interface Settings {
|
|
49
|
-
alwaysAllowTs?: boolean;
|
|
50
|
-
verbose?: boolean;
|
|
51
|
-
preferTs?: boolean;
|
|
52
|
-
tsConfigPath?: string;
|
|
53
|
-
configPaths?: string[];
|
|
54
|
-
}
|
|
1
|
+
export {};
|