@mikro-orm/core 7.0.0-dev.7 → 7.0.0-dev.71
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 +85 -42
- package/EntityManager.js +282 -194
- package/MikroORM.d.ts +11 -29
- package/MikroORM.js +33 -127
- package/README.md +3 -2
- package/cache/FileCacheAdapter.js +1 -2
- package/connections/Connection.d.ts +11 -7
- package/connections/Connection.js +16 -14
- package/drivers/DatabaseDriver.d.ts +11 -5
- package/drivers/DatabaseDriver.js +13 -4
- package/drivers/IDatabaseDriver.d.ts +27 -5
- package/entity/BaseEntity.d.ts +0 -1
- package/entity/BaseEntity.js +0 -3
- package/entity/Collection.d.ts +98 -30
- package/entity/Collection.js +432 -93
- package/entity/EntityAssigner.d.ts +1 -1
- package/entity/EntityAssigner.js +9 -1
- package/entity/EntityFactory.d.ts +7 -0
- package/entity/EntityFactory.js +63 -40
- package/entity/EntityHelper.js +26 -9
- package/entity/EntityLoader.d.ts +5 -4
- package/entity/EntityLoader.js +69 -36
- package/entity/EntityRepository.d.ts +1 -1
- package/entity/EntityValidator.js +4 -4
- package/entity/Reference.d.ts +9 -7
- package/entity/Reference.js +32 -5
- package/entity/WrappedEntity.d.ts +0 -2
- package/entity/WrappedEntity.js +1 -5
- package/entity/defineEntity.d.ts +549 -0
- package/entity/defineEntity.js +529 -0
- package/entity/index.d.ts +2 -1
- package/entity/index.js +2 -1
- package/entity/utils.d.ts +7 -0
- package/entity/utils.js +15 -3
- package/enums.d.ts +20 -5
- package/enums.js +13 -0
- package/errors.d.ts +6 -1
- package/errors.js +14 -4
- package/events/EventSubscriber.d.ts +3 -1
- package/hydration/ObjectHydrator.d.ts +4 -4
- package/hydration/ObjectHydrator.js +35 -24
- package/index.d.ts +2 -2
- package/index.js +1 -2
- package/logging/DefaultLogger.d.ts +1 -1
- package/logging/SimpleLogger.d.ts +1 -1
- package/metadata/EntitySchema.d.ts +9 -13
- package/metadata/EntitySchema.js +44 -26
- package/metadata/MetadataDiscovery.d.ts +6 -7
- package/metadata/MetadataDiscovery.js +161 -162
- package/metadata/MetadataProvider.d.ts +2 -2
- package/metadata/MetadataProvider.js +15 -0
- package/metadata/MetadataStorage.d.ts +0 -4
- package/metadata/MetadataStorage.js +6 -10
- package/metadata/MetadataValidator.d.ts +0 -7
- package/metadata/MetadataValidator.js +4 -13
- package/metadata/discover-entities.d.ts +5 -0
- package/metadata/discover-entities.js +39 -0
- package/metadata/index.d.ts +1 -1
- package/metadata/index.js +1 -1
- package/metadata/types.d.ts +480 -0
- package/metadata/types.js +1 -0
- package/naming-strategy/AbstractNamingStrategy.d.ts +5 -1
- package/naming-strategy/AbstractNamingStrategy.js +7 -1
- package/naming-strategy/NamingStrategy.d.ts +11 -1
- package/package.json +11 -10
- package/platforms/Platform.d.ts +6 -10
- package/platforms/Platform.js +6 -22
- package/serialization/EntitySerializer.d.ts +2 -0
- package/serialization/EntitySerializer.js +29 -11
- package/serialization/EntityTransformer.js +22 -12
- package/serialization/SerializationContext.js +14 -11
- package/types/ArrayType.d.ts +1 -1
- package/types/ArrayType.js +1 -2
- package/types/BigIntType.d.ts +8 -6
- 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 +1 -1
- package/types/DoubleType.js +1 -1
- package/types/JsonType.d.ts +1 -1
- package/types/JsonType.js +7 -2
- package/types/Type.d.ts +2 -1
- package/types/Type.js +1 -1
- package/types/Uint8ArrayType.d.ts +0 -1
- package/types/Uint8ArrayType.js +0 -3
- package/types/index.d.ts +1 -1
- package/typings.d.ts +112 -77
- package/typings.js +32 -32
- package/unit-of-work/ChangeSetComputer.js +8 -3
- package/unit-of-work/ChangeSetPersister.d.ts +4 -2
- package/unit-of-work/ChangeSetPersister.js +37 -16
- package/unit-of-work/UnitOfWork.d.ts +8 -1
- package/unit-of-work/UnitOfWork.js +111 -54
- package/utils/AbstractSchemaGenerator.d.ts +5 -5
- package/utils/AbstractSchemaGenerator.js +10 -8
- package/utils/Configuration.d.ts +200 -191
- package/utils/Configuration.js +141 -152
- package/utils/ConfigurationLoader.d.ts +3 -44
- package/utils/ConfigurationLoader.js +26 -239
- package/utils/Cursor.d.ts +3 -3
- package/utils/Cursor.js +3 -0
- package/utils/DataloaderUtils.d.ts +15 -5
- package/utils/DataloaderUtils.js +53 -7
- package/utils/EntityComparator.d.ts +8 -4
- package/utils/EntityComparator.js +107 -60
- package/utils/QueryHelper.d.ts +9 -1
- package/utils/QueryHelper.js +69 -8
- package/utils/RawQueryFragment.d.ts +36 -4
- package/utils/RawQueryFragment.js +34 -13
- package/utils/TransactionManager.d.ts +65 -0
- package/utils/TransactionManager.js +223 -0
- package/utils/Utils.d.ts +17 -84
- package/utils/Utils.js +132 -252
- package/utils/index.d.ts +1 -0
- package/utils/index.js +1 -0
- package/utils/upsert-utils.d.ts +7 -2
- package/utils/upsert-utils.js +52 -1
- 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 -32
- 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 -12
- 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 -4
- package/decorators/Formula.js +0 -15
- package/decorators/Indexed.d.ts +0 -19
- 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 -8
- 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 -402
- 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
|
@@ -5,133 +5,136 @@ import { NullHighlighter } from '../utils/NullHighlighter.js';
|
|
|
5
5
|
import { DefaultLogger } from '../logging/DefaultLogger.js';
|
|
6
6
|
import { colors } from '../logging/colors.js';
|
|
7
7
|
import { Utils } from '../utils/Utils.js';
|
|
8
|
-
import {
|
|
8
|
+
import { MetadataProvider } from '../metadata/MetadataProvider.js';
|
|
9
9
|
import { NotFoundError } from '../errors.js';
|
|
10
10
|
import { RequestContext } from './RequestContext.js';
|
|
11
11
|
import { DataloaderType, FlushMode, LoadStrategy, PopulateHint } from '../enums.js';
|
|
12
12
|
import { MemoryCacheAdapter } from '../cache/MemoryCacheAdapter.js';
|
|
13
13
|
import { EntityComparator } from './EntityComparator.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
|
+
strict: false,
|
|
30
|
+
validate: false,
|
|
31
|
+
validateRequired: true,
|
|
32
|
+
context: (name) => RequestContext.getEntityManager(name),
|
|
33
|
+
contextName: 'default',
|
|
34
|
+
allowGlobalContext: false,
|
|
35
|
+
// eslint-disable-next-line no-console
|
|
36
|
+
logger: console.log.bind(console),
|
|
37
|
+
colors: true,
|
|
38
|
+
findOneOrFailHandler: (entityName, where) => NotFoundError.findOneFailed(entityName, where),
|
|
39
|
+
findExactlyOneOrFailHandler: (entityName, where) => NotFoundError.findExactlyOneFailed(entityName, where),
|
|
40
|
+
baseDir: process.cwd(),
|
|
41
|
+
hydrator: ObjectHydrator,
|
|
42
|
+
flushMode: FlushMode.AUTO,
|
|
43
|
+
loadStrategy: LoadStrategy.BALANCED,
|
|
44
|
+
dataloader: DataloaderType.NONE,
|
|
45
|
+
populateWhere: PopulateHint.ALL,
|
|
46
|
+
ignoreUndefinedInQuery: false,
|
|
47
|
+
onQuery: (sql) => sql,
|
|
48
|
+
autoJoinOneToOneOwner: true,
|
|
49
|
+
autoJoinRefsForFilters: true,
|
|
50
|
+
filtersOnRelations: true,
|
|
51
|
+
propagationOnPrototype: true,
|
|
52
|
+
populateAfterFlush: true,
|
|
53
|
+
serialization: {
|
|
54
|
+
includePrimaryKeys: true,
|
|
55
|
+
},
|
|
56
|
+
assign: {
|
|
57
|
+
updateNestedEntities: true,
|
|
58
|
+
updateByPrimaryKey: true,
|
|
59
|
+
mergeObjectProperties: false,
|
|
60
|
+
mergeEmbeddedProperties: true,
|
|
61
|
+
ignoreUndefined: false,
|
|
62
|
+
},
|
|
63
|
+
persistOnCreate: true,
|
|
64
|
+
upsertManaged: true,
|
|
65
|
+
forceEntityConstructor: false,
|
|
66
|
+
forceUndefined: false,
|
|
67
|
+
processOnCreateHooksEarly: false,
|
|
68
|
+
ensureDatabase: true,
|
|
69
|
+
ensureIndexes: false,
|
|
70
|
+
batchSize: 300,
|
|
71
|
+
debug: false,
|
|
72
|
+
ignoreDeprecations: false,
|
|
73
|
+
verbose: false,
|
|
74
|
+
driverOptions: {},
|
|
75
|
+
migrations: {
|
|
76
|
+
tableName: 'mikro_orm_migrations',
|
|
77
|
+
path: './migrations',
|
|
78
|
+
glob: '!(*.d).{js,ts,cjs}',
|
|
79
|
+
silent: false,
|
|
80
|
+
transactional: true,
|
|
81
|
+
disableForeignKeys: false,
|
|
82
|
+
allOrNothing: true,
|
|
83
|
+
dropTables: true,
|
|
84
|
+
safe: false,
|
|
85
|
+
snapshot: true,
|
|
86
|
+
emit: 'ts',
|
|
87
|
+
fileName: (timestamp, name) => `Migration${timestamp}${name ? '_' + name : ''}`,
|
|
88
|
+
},
|
|
89
|
+
schemaGenerator: {
|
|
90
|
+
disableForeignKeys: false,
|
|
91
|
+
createForeignKeyConstraints: true,
|
|
92
|
+
ignoreSchema: [],
|
|
93
|
+
skipTables: [],
|
|
94
|
+
skipColumns: {},
|
|
95
|
+
},
|
|
96
|
+
embeddables: {
|
|
97
|
+
prefixMode: 'relative',
|
|
98
|
+
},
|
|
99
|
+
entityGenerator: {
|
|
100
|
+
forceUndefined: true,
|
|
101
|
+
undefinedDefaults: false,
|
|
102
|
+
scalarTypeInDecorator: false,
|
|
103
|
+
bidirectionalRelations: true,
|
|
104
|
+
identifiedReferences: true,
|
|
105
|
+
scalarPropertiesForRelations: 'never',
|
|
106
|
+
entityDefinition: 'defineEntity',
|
|
107
|
+
decorators: 'legacy',
|
|
108
|
+
enumMode: 'dictionary',
|
|
109
|
+
fileName: (className) => className,
|
|
110
|
+
onlyPurePivotTables: false,
|
|
111
|
+
outputPurePivotTables: false,
|
|
112
|
+
readOnlyPivotTables: false,
|
|
113
|
+
useCoreBaseEntity: false,
|
|
114
|
+
},
|
|
115
|
+
metadataCache: {
|
|
116
|
+
pretty: false,
|
|
117
|
+
adapter: FileCacheAdapter,
|
|
118
|
+
options: { cacheDir: process.cwd() + '/temp' },
|
|
119
|
+
},
|
|
120
|
+
resultCache: {
|
|
121
|
+
adapter: MemoryCacheAdapter,
|
|
122
|
+
expiration: 1000, // 1s
|
|
123
|
+
options: {},
|
|
124
|
+
},
|
|
125
|
+
metadataProvider: MetadataProvider,
|
|
126
|
+
highlighter: new NullHighlighter(),
|
|
127
|
+
seeder: {
|
|
128
|
+
path: './seeders',
|
|
129
|
+
defaultSeeder: 'DatabaseSeeder',
|
|
130
|
+
glob: '!(*.d).{js,ts}',
|
|
131
|
+
emit: 'ts',
|
|
132
|
+
fileName: (className) => className,
|
|
133
|
+
},
|
|
134
|
+
preferReadReplicas: true,
|
|
135
|
+
dynamicImportProvider: /* v8 ignore next */ (id) => import(id),
|
|
136
|
+
};
|
|
14
137
|
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
138
|
options;
|
|
136
139
|
logger;
|
|
137
140
|
driver;
|
|
@@ -140,11 +143,10 @@ export class Configuration {
|
|
|
140
143
|
extensions = new Map();
|
|
141
144
|
constructor(options, validate = true) {
|
|
142
145
|
if (options.dynamicImportProvider) {
|
|
143
|
-
Utils.
|
|
146
|
+
Utils.dynamicImportProvider = options.dynamicImportProvider;
|
|
144
147
|
}
|
|
145
|
-
this.options = Utils.mergeConfig({},
|
|
148
|
+
this.options = Utils.mergeConfig({}, DEFAULTS, options);
|
|
146
149
|
this.options.baseDir = Utils.absolutePath(this.options.baseDir);
|
|
147
|
-
this.options.preferTs ??= options.preferTs;
|
|
148
150
|
if (validate) {
|
|
149
151
|
this.validateOptions();
|
|
150
152
|
}
|
|
@@ -190,7 +192,7 @@ export class Configuration {
|
|
|
190
192
|
* Resets the configuration to its default value
|
|
191
193
|
*/
|
|
192
194
|
reset(key) {
|
|
193
|
-
this.options[key] =
|
|
195
|
+
this.options[key] = DEFAULTS[key];
|
|
194
196
|
}
|
|
195
197
|
/**
|
|
196
198
|
* Gets Logger instance.
|
|
@@ -204,15 +206,6 @@ export class Configuration {
|
|
|
204
206
|
}
|
|
205
207
|
return this.options.dataloader;
|
|
206
208
|
}
|
|
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
209
|
getSchema(skipDefaultSchema = false) {
|
|
217
210
|
if (skipDefaultSchema && this.options.schema === this.platform.getDefaultSchemaName()) {
|
|
218
211
|
return undefined;
|
|
@@ -293,8 +286,7 @@ export class Configuration {
|
|
|
293
286
|
*/
|
|
294
287
|
getCachedService(cls, ...args) {
|
|
295
288
|
if (!this.cache.has(cls.name)) {
|
|
296
|
-
|
|
297
|
-
this.cache.set(cls.name, new Class(...args));
|
|
289
|
+
this.cache.set(cls.name, new cls(...args));
|
|
298
290
|
}
|
|
299
291
|
return this.cache.get(cls.name);
|
|
300
292
|
}
|
|
@@ -311,17 +303,15 @@ export class Configuration {
|
|
|
311
303
|
if (!this.options.clientUrl) {
|
|
312
304
|
this.options.clientUrl = this.platform.getDefaultClientUrl();
|
|
313
305
|
}
|
|
314
|
-
|
|
315
|
-
this.options.implicitTransactions = this.platform.usesImplicitTransactions();
|
|
316
|
-
}
|
|
306
|
+
this.options.implicitTransactions ??= this.platform.usesImplicitTransactions();
|
|
317
307
|
try {
|
|
318
|
-
const url = new URL(this.
|
|
308
|
+
const url = new URL(this.options.clientUrl);
|
|
319
309
|
if (url.pathname) {
|
|
320
310
|
this.options.dbName = this.get('dbName', decodeURIComponent(url.pathname).substring(1));
|
|
321
311
|
}
|
|
322
312
|
}
|
|
323
313
|
catch {
|
|
324
|
-
const url = this.
|
|
314
|
+
const url = this.options.clientUrl.match(/:\/\/.*\/([^?]+)/);
|
|
325
315
|
if (url) {
|
|
326
316
|
this.options.dbName = this.get('dbName', decodeURIComponent(url[1]));
|
|
327
317
|
}
|
|
@@ -329,15 +319,14 @@ export class Configuration {
|
|
|
329
319
|
if (validate && !this.options.dbName && this.options.clientUrl) {
|
|
330
320
|
throw new Error("No database specified, `clientUrl` option provided but it's missing the pathname.");
|
|
331
321
|
}
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
}
|
|
335
|
-
if (!this.options.charset) {
|
|
336
|
-
this.options.charset = this.platform.getDefaultCharset();
|
|
337
|
-
}
|
|
322
|
+
this.options.schema ??= this.platform.getDefaultSchemaName();
|
|
323
|
+
this.options.charset ??= this.platform.getDefaultCharset();
|
|
338
324
|
Object.keys(this.options.filters).forEach(key => {
|
|
339
325
|
this.options.filters[key].default ??= true;
|
|
340
326
|
});
|
|
327
|
+
if (!this.options.filtersOnRelations) {
|
|
328
|
+
this.options.autoJoinRefsForFilters ??= false;
|
|
329
|
+
}
|
|
341
330
|
this.options.subscribers = Utils.unique(this.options.subscribers).map(subscriber => {
|
|
342
331
|
return subscriber.constructor.name === 'Function' ? new subscriber() : subscriber;
|
|
343
332
|
});
|
|
@@ -359,13 +348,13 @@ export class Configuration {
|
|
|
359
348
|
* break existing projects, only help with the new ones.
|
|
360
349
|
*/
|
|
361
350
|
detectSourceFolder(options) {
|
|
362
|
-
if (!Utils.
|
|
351
|
+
if (!Utils.pathExists(this.options.baseDir + '/src')) {
|
|
363
352
|
return;
|
|
364
353
|
}
|
|
365
|
-
const migrationsPathExists = Utils.
|
|
366
|
-
const seedersPathExists = Utils.
|
|
367
|
-
const distDir = Utils.
|
|
368
|
-
const buildDir = Utils.
|
|
354
|
+
const migrationsPathExists = Utils.pathExists(this.options.baseDir + '/' + this.options.migrations.path);
|
|
355
|
+
const seedersPathExists = Utils.pathExists(this.options.baseDir + '/' + this.options.seeder.path);
|
|
356
|
+
const distDir = Utils.pathExists(this.options.baseDir + '/dist');
|
|
357
|
+
const buildDir = Utils.pathExists(this.options.baseDir + '/build');
|
|
369
358
|
// 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
359
|
const path = distDir ? './dist' : (buildDir ? './build' : './src');
|
|
371
360
|
// only if the user did not provide any values and if the default path does not exist
|
|
@@ -1,54 +1,13 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { EntityManagerType, IDatabaseDriver } from '../drivers/IDatabaseDriver.js';
|
|
1
|
+
import type { IDatabaseDriver } from '../drivers/IDatabaseDriver.js';
|
|
3
2
|
import type { Dictionary } from '../typings.js';
|
|
4
|
-
import {
|
|
3
|
+
import { type Options } from './Configuration.js';
|
|
5
4
|
/**
|
|
6
5
|
* @internal
|
|
7
6
|
*/
|
|
8
7
|
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] | []>;
|
|
8
|
+
static loadEnvironmentVars<D extends IDatabaseDriver>(): Partial<Options<D>>;
|
|
33
9
|
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
10
|
static getORMPackages(): Set<string>;
|
|
43
|
-
/** @internal */
|
|
44
|
-
static commonJSCompat(options: Partial<Options>): void;
|
|
45
11
|
static getORMPackageVersion(name: string): string | undefined;
|
|
46
12
|
static checkPackageVersion(): string;
|
|
47
13
|
}
|
|
48
|
-
export interface Settings {
|
|
49
|
-
alwaysAllowTs?: boolean;
|
|
50
|
-
verbose?: boolean;
|
|
51
|
-
preferTs?: boolean;
|
|
52
|
-
tsConfigPath?: string;
|
|
53
|
-
configPaths?: string[];
|
|
54
|
-
}
|