@mikro-orm/core 7.0.0-dev.15 → 7.0.0-dev.150
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 +81 -55
- package/EntityManager.js +292 -262
- 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 +38 -17
- package/entity/BaseEntity.d.ts +2 -2
- package/entity/BaseEntity.js +0 -3
- package/entity/Collection.d.ts +94 -29
- package/entity/Collection.js +434 -97
- package/entity/EntityAssigner.d.ts +1 -1
- package/entity/EntityAssigner.js +26 -18
- package/entity/EntityFactory.d.ts +7 -0
- package/entity/EntityFactory.js +72 -53
- package/entity/EntityHelper.d.ts +2 -2
- package/entity/EntityHelper.js +35 -15
- package/entity/EntityLoader.d.ts +5 -5
- package/entity/EntityLoader.js +80 -70
- package/entity/EntityRepository.d.ts +6 -2
- package/entity/EntityRepository.js +8 -2
- package/entity/Reference.d.ts +6 -5
- package/entity/Reference.js +34 -9
- package/entity/WrappedEntity.d.ts +2 -7
- package/entity/WrappedEntity.js +3 -8
- package/entity/defineEntity.d.ts +575 -0
- package/entity/defineEntity.js +529 -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 +21 -5
- package/enums.js +15 -1
- package/errors.d.ts +18 -9
- package/errors.js +44 -21
- package/events/EventManager.d.ts +2 -1
- package/events/EventManager.js +19 -11
- package/hydration/Hydrator.js +1 -2
- package/hydration/ObjectHydrator.d.ts +4 -4
- package/hydration/ObjectHydrator.js +50 -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 +18 -22
- package/metadata/EntitySchema.js +50 -34
- package/metadata/MetadataDiscovery.d.ts +6 -10
- package/metadata/MetadataDiscovery.js +315 -304
- 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 +11 -9
- package/metadata/MetadataValidator.js +50 -38
- 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 +480 -0
- package/metadata/types.js +1 -0
- package/naming-strategy/AbstractNamingStrategy.d.ts +8 -4
- package/naming-strategy/AbstractNamingStrategy.js +8 -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 +14 -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 +18 -11
- package/platforms/ExceptionConverter.js +1 -1
- package/platforms/Platform.d.ts +6 -13
- package/platforms/Platform.js +17 -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 +8 -6
- package/types/BigIntType.js +1 -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 +158 -113
- package/typings.js +55 -42
- 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 +14 -12
- package/unit-of-work/ChangeSetPersister.d.ts +5 -4
- package/unit-of-work/ChangeSetPersister.js +70 -34
- package/unit-of-work/CommitOrderCalculator.d.ts +12 -10
- package/unit-of-work/CommitOrderCalculator.js +13 -13
- package/unit-of-work/UnitOfWork.d.ts +10 -3
- package/unit-of-work/UnitOfWork.js +141 -98
- package/utils/AbstractSchemaGenerator.d.ts +5 -5
- package/utils/AbstractSchemaGenerator.js +18 -16
- package/utils/AsyncContext.d.ts +6 -0
- package/utils/AsyncContext.js +42 -0
- package/utils/Configuration.d.ts +754 -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 +0 -3
- package/utils/Cursor.js +27 -11
- package/utils/DataloaderUtils.d.ts +15 -5
- package/utils/DataloaderUtils.js +64 -30
- package/utils/EntityComparator.d.ts +13 -9
- package/utils/EntityComparator.js +84 -42
- package/utils/QueryHelper.d.ts +14 -6
- package/utils/QueryHelper.js +87 -25
- package/utils/RawQueryFragment.d.ts +48 -25
- package/utils/RawQueryFragment.js +66 -70
- 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 +99 -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 -32
- package/decorators/Embeddable.d.ts +0 -8
- package/decorators/Embeddable.js +0 -11
- package/decorators/Embedded.d.ts +0 -12
- 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 -32
- 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 -26
- 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/entity/EntityValidator.d.ts +0 -19
- package/entity/EntityValidator.js +0 -150
- package/exports.d.ts +0 -24
- package/exports.js +0 -23
- 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/typings.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Transaction } from './connections/Connection.js';
|
|
2
|
-
import { type Cascade, type DeferMode, type EventType, type LoadStrategy, type PopulatePath, type QueryOrderMap, ReferenceKind } from './enums.js';
|
|
2
|
+
import { type Cascade, type DeferMode, type EmbeddedPrefixMode, type EventType, type LoadStrategy, type PopulatePath, type QueryOrderMap, ReferenceKind } from './enums.js';
|
|
3
3
|
import { type AssignOptions } from './entity/EntityAssigner.js';
|
|
4
4
|
import { type EntityIdentifier } from './entity/EntityIdentifier.js';
|
|
5
5
|
import { type EntityLoaderOptions } from './entity/EntityLoader.js';
|
|
@@ -7,7 +7,6 @@ import { type Collection } from './entity/Collection.js';
|
|
|
7
7
|
import { type EntityFactory } from './entity/EntityFactory.js';
|
|
8
8
|
import { type EntityRepository } from './entity/EntityRepository.js';
|
|
9
9
|
import { Reference, type ScalarReference } from './entity/Reference.js';
|
|
10
|
-
import type { MikroORM } from './MikroORM.js';
|
|
11
10
|
import type { SerializationContext } from './serialization/SerializationContext.js';
|
|
12
11
|
import type { SerializeOptions } from './serialization/EntitySerializer.js';
|
|
13
12
|
import type { MetadataStorage } from './metadata/MetadataStorage.js';
|
|
@@ -15,11 +14,10 @@ import type { EntitySchema } from './metadata/EntitySchema.js';
|
|
|
15
14
|
import type { Type, types } from './types/index.js';
|
|
16
15
|
import type { Platform } from './platforms/Platform.js';
|
|
17
16
|
import type { Configuration } from './utils/Configuration.js';
|
|
18
|
-
import type {
|
|
17
|
+
import type { Raw } from './utils/RawQueryFragment.js';
|
|
19
18
|
import type { EntityManager } from './EntityManager.js';
|
|
20
|
-
import type { EmbeddedPrefixMode } from './decorators/Embedded.js';
|
|
21
19
|
import type { EventSubscriber } from './events/EventSubscriber.js';
|
|
22
|
-
import type { FindOneOptions, FindOptions, LoadHint } from './drivers/IDatabaseDriver.js';
|
|
20
|
+
import type { FilterOptions, FindOneOptions, FindOptions, LoadHint } from './drivers/IDatabaseDriver.js';
|
|
23
21
|
export type Constructor<T = unknown> = new (...args: any[]) => T;
|
|
24
22
|
export type Dictionary<T = any> = {
|
|
25
23
|
[k: string]: T;
|
|
@@ -52,18 +50,34 @@ export declare const OptionalProps: unique symbol;
|
|
|
52
50
|
export declare const EagerProps: unique symbol;
|
|
53
51
|
export declare const HiddenProps: unique symbol;
|
|
54
52
|
export declare const Config: unique symbol;
|
|
55
|
-
|
|
56
|
-
declare
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
53
|
+
export type Opt<T = unknown> = T & Opt.Brand;
|
|
54
|
+
export declare namespace Opt {
|
|
55
|
+
const __optional: unique symbol;
|
|
56
|
+
interface Brand {
|
|
57
|
+
[__optional]?: 1;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export type RequiredNullable<T = never> = (T & RequiredNullable.Brand) | null;
|
|
61
|
+
export declare namespace RequiredNullable {
|
|
62
|
+
const __requiredNullable: unique symbol;
|
|
63
|
+
interface Brand {
|
|
64
|
+
[__requiredNullable]?: 1;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export type Hidden<T = unknown> = T & Hidden.Brand;
|
|
68
|
+
export declare namespace Hidden {
|
|
69
|
+
const __hidden: unique symbol;
|
|
70
|
+
interface Brand {
|
|
71
|
+
[__hidden]?: 1;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export type DefineConfig<T extends TypeConfig> = T & DefineConfig.Brand;
|
|
75
|
+
export declare namespace DefineConfig {
|
|
76
|
+
const __config: unique symbol;
|
|
77
|
+
interface Brand {
|
|
78
|
+
[__config]?: 1;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
67
81
|
export type CleanTypeConfig<T> = Compute<Pick<T, Extract<keyof T, keyof TypeConfig>>>;
|
|
68
82
|
export interface TypeConfig {
|
|
69
83
|
forceObject?: boolean;
|
|
@@ -75,13 +89,14 @@ type PrimaryPropToType<T, Keys extends (keyof T)[]> = {
|
|
|
75
89
|
type ReadonlyPrimary<T> = T extends any[] ? Readonly<T> : T;
|
|
76
90
|
export type Primary<T> = IsAny<T> extends true ? any : T extends {
|
|
77
91
|
[PrimaryKeyProp]?: infer PK;
|
|
78
|
-
} ?
|
|
92
|
+
} ? PK extends undefined ? Omit<T, typeof PrimaryKeyProp> : PK extends keyof T ? ReadonlyPrimary<UnwrapPrimary<T[PK]>> : PK extends (keyof T)[] ? ReadonlyPrimary<PrimaryPropToType<T, PK>> : PK : T extends {
|
|
79
93
|
_id?: infer PK;
|
|
80
94
|
} ? ReadonlyPrimary<PK> | string : T extends {
|
|
81
|
-
uuid?: infer PK;
|
|
82
|
-
} ? ReadonlyPrimary<PK> : T extends {
|
|
83
95
|
id?: infer PK;
|
|
96
|
+
} ? ReadonlyPrimary<PK> : T extends {
|
|
97
|
+
uuid?: infer PK;
|
|
84
98
|
} ? ReadonlyPrimary<PK> : T;
|
|
99
|
+
/** @internal */
|
|
85
100
|
export type PrimaryProperty<T> = T extends {
|
|
86
101
|
[PrimaryKeyProp]?: infer PK;
|
|
87
102
|
} ? (PK extends keyof T ? PK : (PK extends any[] ? PK[number] : never)) : T extends {
|
|
@@ -89,10 +104,10 @@ export type PrimaryProperty<T> = T extends {
|
|
|
89
104
|
} ? (T extends {
|
|
90
105
|
id?: any;
|
|
91
106
|
} ? 'id' | '_id' : '_id') : T extends {
|
|
92
|
-
uuid?: any;
|
|
93
|
-
} ? 'uuid' : T extends {
|
|
94
107
|
id?: any;
|
|
95
|
-
} ? 'id' :
|
|
108
|
+
} ? 'id' : T extends {
|
|
109
|
+
uuid?: any;
|
|
110
|
+
} ? 'uuid' : never;
|
|
96
111
|
export type IPrimaryKeyValue = number | string | bigint | Date | {
|
|
97
112
|
toHexString(): string;
|
|
98
113
|
};
|
|
@@ -100,6 +115,7 @@ export type IPrimaryKey<T extends IPrimaryKeyValue = IPrimaryKeyValue> = T;
|
|
|
100
115
|
export type Scalar = boolean | number | string | bigint | symbol | Date | RegExp | Uint8Array | {
|
|
101
116
|
toHexString(): string;
|
|
102
117
|
};
|
|
118
|
+
type Primitive = boolean | number | string | bigint | symbol;
|
|
103
119
|
export type ExpandScalar<T> = null | (T extends string ? T | RegExp : T extends Date ? Date | string : T extends bigint ? bigint | string | number : T);
|
|
104
120
|
export type OperatorMap<T> = {
|
|
105
121
|
$and?: ExpandQuery<T>[];
|
|
@@ -112,6 +128,14 @@ export type OperatorMap<T> = {
|
|
|
112
128
|
$none?: ExpandQuery<T>;
|
|
113
129
|
$some?: ExpandQuery<T>;
|
|
114
130
|
$every?: ExpandQuery<T>;
|
|
131
|
+
$size?: number | {
|
|
132
|
+
$eq?: number;
|
|
133
|
+
$ne?: number;
|
|
134
|
+
$gt?: number;
|
|
135
|
+
$gte?: number;
|
|
136
|
+
$lt?: number;
|
|
137
|
+
$lte?: number;
|
|
138
|
+
};
|
|
115
139
|
$gt?: ExpandScalar<T>;
|
|
116
140
|
$gte?: ExpandScalar<T>;
|
|
117
141
|
$lt?: ExpandScalar<T>;
|
|
@@ -133,7 +157,6 @@ export type FilterValue<T> = OperatorMap<FilterItemValue<T>> | FilterItemValue<T
|
|
|
133
157
|
export type FilterObject<T> = {
|
|
134
158
|
-readonly [K in EntityKey<T>]?: ExpandQuery<ExpandProperty<T[K]>> | FilterValue<ExpandProperty<T[K]>> | null;
|
|
135
159
|
};
|
|
136
|
-
export type ExpandObject<T> = T extends object ? T extends Scalar ? never : FilterObject<T> : never;
|
|
137
160
|
export type ExpandQuery<T> = T extends object ? T extends Scalar ? never : FilterQuery<T> : FilterValue<T>;
|
|
138
161
|
export type EntityProps<T> = {
|
|
139
162
|
-readonly [K in EntityKey<T>]?: T[K];
|
|
@@ -143,10 +166,9 @@ export type FilterQuery<T> = ObjectQuery<T> | NonNullable<ExpandScalar<Primary<T
|
|
|
143
166
|
export type QBFilterQuery<T = any> = ObjectQuery<T> | Dictionary;
|
|
144
167
|
export interface IWrappedEntity<Entity extends object> {
|
|
145
168
|
isInitialized(): boolean;
|
|
146
|
-
isTouched(): boolean;
|
|
147
169
|
isManaged(): boolean;
|
|
148
170
|
populated(populated?: boolean): void;
|
|
149
|
-
populate<Hint extends string = never>(populate: AutoPath<Entity, Hint>[] | false, options?: EntityLoaderOptions<Entity>): Promise<Loaded<Entity, Hint>>;
|
|
171
|
+
populate<Hint extends string = never>(populate: readonly AutoPath<Entity, Hint, PopulatePath.ALL>[] | false, options?: EntityLoaderOptions<Entity>): Promise<Loaded<Entity, Hint>>;
|
|
150
172
|
init<Hint extends string = never, Fields extends string = '*', Exclude extends string = never>(options?: FindOneOptions<Entity, Hint, Fields, Exclude>): Promise<Loaded<Entity, Hint, Fields, Exclude> | null>;
|
|
151
173
|
toReference(): Ref<Entity> & LoadedReference<Loaded<Entity, AddEager<Entity>>>;
|
|
152
174
|
toObject(): EntityDTO<Entity>;
|
|
@@ -174,7 +196,6 @@ export interface IWrappedEntityInternal<Entity extends object> extends IWrappedE
|
|
|
174
196
|
__factory: EntityFactory;
|
|
175
197
|
__hydrator: IHydrator;
|
|
176
198
|
__initialized: boolean;
|
|
177
|
-
__touched: boolean;
|
|
178
199
|
__originalEntityData?: EntityData<Entity>;
|
|
179
200
|
__loadedProperties: Set<string>;
|
|
180
201
|
__identifier?: EntityIdentifier | EntityIdentifier[];
|
|
@@ -194,16 +215,10 @@ export interface IWrappedEntityInternal<Entity extends object> extends IWrappedE
|
|
|
194
215
|
};
|
|
195
216
|
}
|
|
196
217
|
export type AnyEntity<T = any> = Partial<T>;
|
|
197
|
-
export type EntityClass<T> = Function & {
|
|
218
|
+
export type EntityClass<T = any> = Function & {
|
|
198
219
|
prototype: T;
|
|
199
220
|
};
|
|
200
|
-
export type
|
|
201
|
-
entity: EntityClass<T>;
|
|
202
|
-
schema: EntityMetadata<T> | EntitySchema<T>;
|
|
203
|
-
};
|
|
204
|
-
export type EntityName<T> = string | EntityClass<T> | EntitySchema<T, any> | {
|
|
205
|
-
name: string;
|
|
206
|
-
};
|
|
221
|
+
export type EntityName<T = any> = EntityClass<T> | EntityCtor<T> | EntitySchema<T, any>;
|
|
207
222
|
export type GetRepository<Entity extends {
|
|
208
223
|
[k: PropertyKey]: any;
|
|
209
224
|
}, Fallback> = Entity[typeof EntityRepositoryType] extends EntityRepository<any> | undefined ? NonNullable<Entity[typeof EntityRepositoryType]> : Fallback;
|
|
@@ -224,7 +239,7 @@ export type EntityDataProp<T, C extends boolean> = T extends Date ? string | Dat
|
|
|
224
239
|
__runtime?: infer Runtime;
|
|
225
240
|
__raw?: infer Raw;
|
|
226
241
|
} ? (C extends true ? Raw : Runtime) : T extends Reference<infer U> ? EntityDataNested<U, C> : T extends ScalarReference<infer U> ? EntityDataProp<U, C> : T extends Collection<infer U, any> ? U | U[] | EntityDataNested<U, C> | EntityDataNested<U, C>[] : T extends readonly (infer U)[] ? U extends NonArrayObject ? U | U[] | EntityDataNested<U, C> | EntityDataNested<U, C>[] : U[] | EntityDataNested<U, C>[] : EntityDataNested<T, C>;
|
|
227
|
-
export type RequiredEntityDataProp<T, O, C extends boolean> = T extends Date ? string | Date : T extends Scalar ? T : T extends {
|
|
242
|
+
export type RequiredEntityDataProp<T, O, C extends boolean> = T extends Date ? string | Date : Exclude<T, null> extends RequiredNullable.Brand ? T | null : T extends Scalar ? T : T extends {
|
|
228
243
|
__runtime?: infer Runtime;
|
|
229
244
|
__raw?: infer Raw;
|
|
230
245
|
} ? (C extends true ? Raw : Runtime) : T extends Reference<infer U> ? RequiredEntityDataNested<U, O, C> : T extends ScalarReference<infer U> ? RequiredEntityDataProp<U, O, C> : T extends Collection<infer U, any> ? U | U[] | RequiredEntityDataNested<U, O, C> | RequiredEntityDataNested<U, O, C>[] : T extends readonly (infer U)[] ? U extends NonArrayObject ? U | U[] | RequiredEntityDataNested<U, O, C> | RequiredEntityDataNested<U, O, C>[] : U[] | RequiredEntityDataNested<U, O, C>[] : RequiredEntityDataNested<T, O, C>;
|
|
@@ -239,7 +254,10 @@ type ExplicitlyOptionalProps<T> = (T extends {
|
|
|
239
254
|
type NullableKeys<T, V = null> = {
|
|
240
255
|
[K in keyof T]: V extends T[K] ? K : never;
|
|
241
256
|
}[keyof T];
|
|
242
|
-
type
|
|
257
|
+
type RequiredNullableKeys<T> = {
|
|
258
|
+
[K in keyof T]: Exclude<T[K], null> extends RequiredNullable.Brand ? K : never;
|
|
259
|
+
}[keyof T];
|
|
260
|
+
type ProbablyOptionalProps<T> = PrimaryProperty<T> | ExplicitlyOptionalProps<T> | Exclude<NonNullable<NullableKeys<T, null | undefined>>, RequiredNullableKeys<T>>;
|
|
243
261
|
type IsOptional<T, K extends keyof T, I> = T[K] extends Collection<any, any> ? true : ExtractType<T[K]> extends I ? true : K extends ProbablyOptionalProps<T> ? true : false;
|
|
244
262
|
type RequiredKeys<T, K extends keyof T, I> = IsOptional<T, K, I> extends false ? CleanKeys<T, K> : never;
|
|
245
263
|
type OptionalKeys<T, K extends keyof T, I> = IsOptional<T, K, I> extends false ? never : CleanKeys<T, K>;
|
|
@@ -274,7 +292,7 @@ export type Ref<T> = T extends any ? IsAny<T> extends true ? Reference<T & objec
|
|
|
274
292
|
type ExtractHiddenProps<T> = (T extends {
|
|
275
293
|
[HiddenProps]?: infer K;
|
|
276
294
|
} ? K : never) | ({
|
|
277
|
-
[K in keyof T]: T[K] extends Hidden ? K : never;
|
|
295
|
+
[K in keyof T]: T[K] extends Primitive ? (T[K] extends Hidden ? K : never) : never;
|
|
278
296
|
}[keyof T] & {});
|
|
279
297
|
type ExcludeHidden<T, K extends keyof T> = K extends ExtractHiddenProps<T> ? never : K;
|
|
280
298
|
type ExtractConfig<T> = T extends {
|
|
@@ -297,8 +315,14 @@ export type EntityDTO<T, C extends TypeConfig = never> = {
|
|
|
297
315
|
[K in keyof T as DTOOptionalKeys<T, K>]?: EntityDTOProp<T, T[K], C> | AddOptional<T[K]>;
|
|
298
316
|
};
|
|
299
317
|
type TargetKeys<T> = T extends EntityClass<infer P> ? keyof P : keyof T;
|
|
300
|
-
type
|
|
301
|
-
|
|
318
|
+
type PropertyName<T> = IsUnknown<T> extends false ? TargetKeys<T> : string;
|
|
319
|
+
type TableName = {
|
|
320
|
+
name: string;
|
|
321
|
+
schema?: string;
|
|
322
|
+
toString: () => string;
|
|
323
|
+
};
|
|
324
|
+
export type IndexCallback<T> = (table: TableName, columns: Record<PropertyName<T>, string>, indexName: string) => string | Raw;
|
|
325
|
+
export type CheckCallback<T> = (columns: Record<PropertyName<T>, string>) => string;
|
|
302
326
|
export type GeneratedColumnCallback<T> = (columns: Record<keyof T, string>) => string;
|
|
303
327
|
export interface CheckConstraint<T = any> {
|
|
304
328
|
name?: string;
|
|
@@ -309,6 +333,7 @@ export type AnyString = string & {};
|
|
|
309
333
|
export interface EntityProperty<Owner = any, Target = any> {
|
|
310
334
|
name: EntityKey<Owner>;
|
|
311
335
|
entity: () => EntityName<Owner>;
|
|
336
|
+
target: EntityClass<Target>;
|
|
312
337
|
type: keyof typeof types | AnyString;
|
|
313
338
|
runtimeType: 'number' | 'string' | 'boolean' | 'bigint' | 'Buffer' | 'Date' | 'object' | 'any' | AnyString;
|
|
314
339
|
targetMeta?: EntityMetadata<Target>;
|
|
@@ -335,6 +360,7 @@ export interface EntityProperty<Owner = any, Target = any> {
|
|
|
335
360
|
default?: string | number | boolean | null;
|
|
336
361
|
defaultRaw?: string;
|
|
337
362
|
formula?: (alias: string) => string;
|
|
363
|
+
filters?: FilterOptions;
|
|
338
364
|
prefix?: string | boolean;
|
|
339
365
|
prefixMode?: EmbeddedPrefixMode;
|
|
340
366
|
embedded?: [EntityKey<Owner>, EntityKey<Owner>];
|
|
@@ -347,11 +373,13 @@ export interface EntityProperty<Owner = any, Target = any> {
|
|
|
347
373
|
unique?: boolean | string;
|
|
348
374
|
nullable?: boolean;
|
|
349
375
|
inherited?: boolean;
|
|
376
|
+
renamedFrom?: string;
|
|
377
|
+
stiFieldNames?: string[];
|
|
378
|
+
stiFieldNameMap?: Dictionary<string>;
|
|
350
379
|
unsigned?: boolean;
|
|
351
380
|
mapToPk?: boolean;
|
|
352
381
|
persist?: boolean;
|
|
353
382
|
hydrate?: boolean;
|
|
354
|
-
trackChanges?: boolean;
|
|
355
383
|
hidden?: boolean;
|
|
356
384
|
enum?: boolean;
|
|
357
385
|
items?: (number | string)[];
|
|
@@ -362,6 +390,7 @@ export interface EntityProperty<Owner = any, Target = any> {
|
|
|
362
390
|
setter?: boolean;
|
|
363
391
|
getter?: boolean;
|
|
364
392
|
getterName?: keyof Owner;
|
|
393
|
+
accessor?: EntityKey<Owner>;
|
|
365
394
|
cascade: Cascade[];
|
|
366
395
|
orphanRemoval?: boolean;
|
|
367
396
|
onCreate?: (entity: Owner, em: EntityManager) => any;
|
|
@@ -378,7 +407,7 @@ export interface EntityProperty<Owner = any, Target = any> {
|
|
|
378
407
|
fixedOrder?: boolean;
|
|
379
408
|
fixedOrderColumn?: string;
|
|
380
409
|
pivotTable: string;
|
|
381
|
-
pivotEntity:
|
|
410
|
+
pivotEntity: EntityClass<Target>;
|
|
382
411
|
joinColumns: string[];
|
|
383
412
|
ownColumns: string[];
|
|
384
413
|
inverseJoinColumns: string[];
|
|
@@ -394,19 +423,22 @@ export interface EntityProperty<Owner = any, Target = any> {
|
|
|
394
423
|
optional?: boolean;
|
|
395
424
|
ignoreSchemaChanges?: ('type' | 'extra' | 'default')[];
|
|
396
425
|
deferMode?: DeferMode;
|
|
426
|
+
createForeignKeyConstraint: boolean;
|
|
397
427
|
foreignKeyName?: string;
|
|
398
428
|
}
|
|
399
|
-
export declare class EntityMetadata<
|
|
429
|
+
export declare class EntityMetadata<Entity = any, Class extends EntityCtor<Entity> = EntityCtor<Entity>> {
|
|
400
430
|
private static counter;
|
|
401
431
|
readonly _id: number;
|
|
402
432
|
readonly propertyOrder: Map<string, number>;
|
|
403
433
|
constructor(meta?: Partial<EntityMetadata>);
|
|
404
|
-
addProperty(prop: Partial<EntityProperty<
|
|
434
|
+
addProperty(prop: Partial<EntityProperty<Entity>>): void;
|
|
405
435
|
removeProperty(name: string, sync?: boolean): void;
|
|
406
|
-
getPrimaryProps(): EntityProperty<
|
|
407
|
-
getPrimaryProp(): EntityProperty<
|
|
436
|
+
getPrimaryProps(flatten?: boolean): EntityProperty<Entity>[];
|
|
437
|
+
getPrimaryProp(): EntityProperty<Entity>;
|
|
438
|
+
createColumnMappingObject(): Dictionary<any>;
|
|
408
439
|
get tableName(): string;
|
|
409
440
|
set tableName(name: string);
|
|
441
|
+
get uniqueName(): string;
|
|
410
442
|
sync(initIndexes?: boolean, config?: Configuration): void;
|
|
411
443
|
private initIndexes;
|
|
412
444
|
/** @internal */
|
|
@@ -416,67 +448,68 @@ export interface SimpleColumnMeta {
|
|
|
416
448
|
name: string;
|
|
417
449
|
type: string;
|
|
418
450
|
}
|
|
419
|
-
export
|
|
451
|
+
export type EntityCtor<T = any> = abstract new (...args: any[]) => T;
|
|
452
|
+
export interface EntityMetadata<Entity = any, Class extends EntityCtor<Entity> = EntityCtor<Entity>> {
|
|
420
453
|
name?: string;
|
|
421
454
|
className: string;
|
|
422
455
|
tableName: string;
|
|
423
456
|
schema?: string;
|
|
424
457
|
pivotTable?: boolean;
|
|
425
458
|
virtual?: boolean;
|
|
426
|
-
expression?: string | ((em: any, where: ObjectQuery<
|
|
427
|
-
discriminatorColumn?: EntityKey<
|
|
459
|
+
expression?: string | ((em: any, where: ObjectQuery<Entity>, options: FindOptions<Entity, any, any, any>, stream?: boolean) => MaybePromise<Raw | object | string>);
|
|
460
|
+
discriminatorColumn?: EntityKey<Entity> | AnyString;
|
|
428
461
|
discriminatorValue?: number | string;
|
|
429
|
-
discriminatorMap?: Dictionary<
|
|
462
|
+
discriminatorMap?: Dictionary<EntityClass>;
|
|
430
463
|
embeddable: boolean;
|
|
431
|
-
constructorParams
|
|
464
|
+
constructorParams?: (keyof Entity)[];
|
|
432
465
|
forceConstructor: boolean;
|
|
433
|
-
|
|
434
|
-
extends: string;
|
|
466
|
+
extends?: EntityName<Entity>;
|
|
435
467
|
collection: string;
|
|
436
468
|
path: string;
|
|
437
|
-
primaryKeys: EntityKey<
|
|
469
|
+
primaryKeys: EntityKey<Entity>[];
|
|
438
470
|
simplePK: boolean;
|
|
439
471
|
compositePK: boolean;
|
|
440
|
-
versionProperty: EntityKey<
|
|
441
|
-
concurrencyCheckKeys: Set<EntityKey<
|
|
442
|
-
serializedPrimaryKey
|
|
472
|
+
versionProperty: EntityKey<Entity>;
|
|
473
|
+
concurrencyCheckKeys: Set<EntityKey<Entity>>;
|
|
474
|
+
serializedPrimaryKey?: EntityKey<Entity>;
|
|
443
475
|
properties: {
|
|
444
|
-
[K in EntityKey<
|
|
476
|
+
[K in EntityKey<Entity>]: EntityProperty<Entity>;
|
|
445
477
|
};
|
|
446
|
-
props: EntityProperty<
|
|
447
|
-
relations: EntityProperty<
|
|
448
|
-
bidirectionalRelations: EntityProperty<
|
|
478
|
+
props: EntityProperty<Entity>[];
|
|
479
|
+
relations: EntityProperty<Entity>[];
|
|
480
|
+
bidirectionalRelations: EntityProperty<Entity>[];
|
|
449
481
|
referencingProperties: {
|
|
450
|
-
meta: EntityMetadata<
|
|
451
|
-
prop: EntityProperty<
|
|
482
|
+
meta: EntityMetadata<Entity>;
|
|
483
|
+
prop: EntityProperty<Entity>;
|
|
452
484
|
}[];
|
|
453
|
-
comparableProps: EntityProperty<
|
|
454
|
-
trackingProps: EntityProperty<
|
|
455
|
-
hydrateProps: EntityProperty<
|
|
456
|
-
|
|
457
|
-
|
|
485
|
+
comparableProps: EntityProperty<Entity>[];
|
|
486
|
+
trackingProps: EntityProperty<Entity>[];
|
|
487
|
+
hydrateProps: EntityProperty<Entity>[];
|
|
488
|
+
validateProps: EntityProperty<Entity>[];
|
|
489
|
+
uniqueProps: EntityProperty<Entity>[];
|
|
490
|
+
getterProps: EntityProperty<Entity>[];
|
|
458
491
|
indexes: {
|
|
459
|
-
properties
|
|
492
|
+
properties?: EntityKey<Entity> | EntityKey<Entity>[];
|
|
460
493
|
name?: string;
|
|
461
494
|
type?: string;
|
|
462
495
|
options?: Dictionary;
|
|
463
|
-
expression?: string
|
|
496
|
+
expression?: string | IndexCallback<Entity>;
|
|
464
497
|
}[];
|
|
465
498
|
uniques: {
|
|
466
|
-
properties
|
|
499
|
+
properties?: EntityKey<Entity> | EntityKey<Entity>[];
|
|
467
500
|
name?: string;
|
|
468
501
|
options?: Dictionary;
|
|
469
|
-
expression?: string
|
|
470
|
-
deferMode?: DeferMode
|
|
502
|
+
expression?: string | IndexCallback<Entity>;
|
|
503
|
+
deferMode?: DeferMode | `${DeferMode}`;
|
|
471
504
|
}[];
|
|
472
|
-
checks: CheckConstraint<
|
|
505
|
+
checks: CheckConstraint<Entity>[];
|
|
473
506
|
repositoryClass?: string;
|
|
474
507
|
repository: () => EntityClass<EntityRepository<any>>;
|
|
475
508
|
hooks: {
|
|
476
|
-
[K in EventType]?: (keyof
|
|
509
|
+
[K in EventType]?: (keyof Entity | EventSubscriber<Entity>[EventType])[];
|
|
477
510
|
};
|
|
478
|
-
prototype:
|
|
479
|
-
class:
|
|
511
|
+
prototype: Entity;
|
|
512
|
+
class: Class;
|
|
480
513
|
abstract: boolean;
|
|
481
514
|
filters: Dictionary<FilterDef>;
|
|
482
515
|
comment?: string;
|
|
@@ -484,8 +517,9 @@ export interface EntityMetadata<T = any> {
|
|
|
484
517
|
hasUniqueProps?: boolean;
|
|
485
518
|
readonly?: boolean;
|
|
486
519
|
polymorphs?: EntityMetadata[];
|
|
487
|
-
root: EntityMetadata<
|
|
520
|
+
root: EntityMetadata<Entity>;
|
|
488
521
|
definedProperties: Dictionary;
|
|
522
|
+
hasTriggers?: boolean;
|
|
489
523
|
/** @internal can be used for computed numeric cache keys */
|
|
490
524
|
readonly _id: number;
|
|
491
525
|
}
|
|
@@ -496,6 +530,7 @@ export interface CreateSchemaOptions {
|
|
|
496
530
|
export interface ClearDatabaseOptions {
|
|
497
531
|
schema?: string;
|
|
498
532
|
truncate?: boolean;
|
|
533
|
+
clearIdentityMap?: boolean;
|
|
499
534
|
}
|
|
500
535
|
export interface EnsureDatabaseOptions extends CreateSchemaOptions, ClearDatabaseOptions {
|
|
501
536
|
clear?: boolean;
|
|
@@ -523,25 +558,25 @@ export interface RefreshDatabaseOptions extends CreateSchemaOptions {
|
|
|
523
558
|
createSchema?: boolean;
|
|
524
559
|
}
|
|
525
560
|
export interface ISchemaGenerator {
|
|
526
|
-
|
|
527
|
-
|
|
561
|
+
create(options?: CreateSchemaOptions): Promise<void>;
|
|
562
|
+
update(options?: UpdateSchemaOptions): Promise<void>;
|
|
563
|
+
drop(options?: DropSchemaOptions): Promise<void>;
|
|
564
|
+
refresh(options?: RefreshDatabaseOptions): Promise<void>;
|
|
565
|
+
clear(options?: ClearDatabaseOptions): Promise<void>;
|
|
566
|
+
execute(sql: string, options?: {
|
|
567
|
+
wrap?: boolean;
|
|
568
|
+
}): Promise<void>;
|
|
528
569
|
getCreateSchemaSQL(options?: CreateSchemaOptions): Promise<string>;
|
|
529
|
-
dropSchema(options?: DropSchemaOptions): Promise<void>;
|
|
530
570
|
getDropSchemaSQL(options?: Omit<DropSchemaOptions, 'dropDb'>): Promise<string>;
|
|
531
|
-
updateSchema(options?: UpdateSchemaOptions): Promise<void>;
|
|
532
571
|
getUpdateSchemaSQL(options?: UpdateSchemaOptions): Promise<string>;
|
|
533
572
|
getUpdateSchemaMigrationSQL(options?: UpdateSchemaOptions): Promise<{
|
|
534
573
|
up: string;
|
|
535
574
|
down: string;
|
|
536
575
|
}>;
|
|
576
|
+
ensureDatabase(options?: EnsureDatabaseOptions): Promise<boolean>;
|
|
537
577
|
createDatabase(name?: string): Promise<void>;
|
|
538
578
|
dropDatabase(name?: string): Promise<void>;
|
|
539
|
-
execute(sql: string, options?: {
|
|
540
|
-
wrap?: boolean;
|
|
541
|
-
}): Promise<void>;
|
|
542
579
|
ensureIndexes(): Promise<void>;
|
|
543
|
-
refreshDatabase(options?: RefreshDatabaseOptions): Promise<void>;
|
|
544
|
-
clearDatabase(options?: ClearDatabaseOptions): Promise<void>;
|
|
545
580
|
}
|
|
546
581
|
export type ImportsResolver = (alias: string, basePath: string, extension: '.js' | '', originFileName: string) => {
|
|
547
582
|
path: string;
|
|
@@ -558,7 +593,10 @@ export interface GenerateOptions {
|
|
|
558
593
|
undefinedDefaults?: boolean;
|
|
559
594
|
bidirectionalRelations?: boolean;
|
|
560
595
|
identifiedReferences?: boolean;
|
|
561
|
-
|
|
596
|
+
entityDefinition?: 'decorators' | 'defineEntity' | 'entitySchema';
|
|
597
|
+
decorators?: 'es' | 'legacy';
|
|
598
|
+
inferEntityType?: boolean;
|
|
599
|
+
enumMode?: 'ts-enum' | 'union-type' | 'dictionary';
|
|
562
600
|
esmImport?: boolean;
|
|
563
601
|
scalarTypeInDecorator?: boolean;
|
|
564
602
|
scalarPropertiesForRelations?: 'always' | 'never' | 'smart';
|
|
@@ -618,26 +656,26 @@ export interface IMigrator {
|
|
|
618
656
|
/**
|
|
619
657
|
* Checks current schema for changes, generates new migration if there are any.
|
|
620
658
|
*/
|
|
621
|
-
|
|
659
|
+
create(path?: string, blank?: boolean, initial?: boolean, name?: string): Promise<MigrationResult>;
|
|
622
660
|
/**
|
|
623
661
|
* Checks current schema for changes.
|
|
624
662
|
*/
|
|
625
|
-
|
|
663
|
+
checkSchema(): Promise<boolean>;
|
|
626
664
|
/**
|
|
627
665
|
* Creates initial migration. This generates the schema based on metadata, and checks whether all the tables
|
|
628
666
|
* are already present. If yes, it will also automatically log the migration as executed.
|
|
629
667
|
* Initial migration can be created only if the schema is already aligned with the metadata, or when no schema
|
|
630
668
|
* is present - in such case regular migration would have the same effect.
|
|
631
669
|
*/
|
|
632
|
-
|
|
670
|
+
createInitial(path?: string): Promise<MigrationResult>;
|
|
633
671
|
/**
|
|
634
672
|
* Returns list of already executed migrations.
|
|
635
673
|
*/
|
|
636
|
-
|
|
674
|
+
getExecuted(): Promise<MigrationRow[]>;
|
|
637
675
|
/**
|
|
638
676
|
* Returns list of pending (not yet executed) migrations found in the migration directory.
|
|
639
677
|
*/
|
|
640
|
-
|
|
678
|
+
getPending(): Promise<UmzugMigration[]>;
|
|
641
679
|
/**
|
|
642
680
|
* Executes specified migrations. Without parameter it will migrate up to the latest version.
|
|
643
681
|
*/
|
|
@@ -686,12 +724,17 @@ export interface MigrationObject {
|
|
|
686
724
|
name: string;
|
|
687
725
|
class: Constructor<Migration>;
|
|
688
726
|
}
|
|
689
|
-
|
|
727
|
+
type EntityFromInput<T> = T extends readonly EntityName<infer U>[] ? U : T extends EntityName<infer U> ? U : never;
|
|
728
|
+
type FilterDefResolved<T extends object = any> = {
|
|
690
729
|
name: string;
|
|
691
|
-
cond:
|
|
730
|
+
cond: FilterQuery<T> | ((args: Dictionary, type: 'read' | 'update' | 'delete', em: any, options?: FindOptions<T, any, any, any> | FindOneOptions<T, any, any, any>, entityName?: string) => MaybePromise<FilterQuery<T>>);
|
|
692
731
|
default?: boolean;
|
|
693
|
-
entity?:
|
|
732
|
+
entity?: EntityName<T> | EntityName<T>[];
|
|
694
733
|
args?: boolean;
|
|
734
|
+
strict?: boolean;
|
|
735
|
+
};
|
|
736
|
+
export type FilterDef<T extends EntityName | readonly EntityName[] = any> = FilterDefResolved<EntityFromInput<T>> & {
|
|
737
|
+
entity?: T;
|
|
695
738
|
};
|
|
696
739
|
export type Populate<T, P extends string = never> = readonly AutoPath<T, P, `${PopulatePath}`>[] | false;
|
|
697
740
|
export type PopulateOptions<T> = {
|
|
@@ -699,18 +742,19 @@ export type PopulateOptions<T> = {
|
|
|
699
742
|
strategy?: LoadStrategy;
|
|
700
743
|
all?: boolean;
|
|
701
744
|
filter?: boolean;
|
|
745
|
+
joinType?: 'inner join' | 'left join';
|
|
702
746
|
children?: PopulateOptions<T[keyof T]>[];
|
|
703
747
|
};
|
|
704
748
|
type Loadable<T extends object> = Collection<T, any> | Reference<T> | Ref<T> | readonly T[];
|
|
705
749
|
type ExtractType<T> = T extends Loadable<infer U> ? U : T;
|
|
706
750
|
type ExtractStringKeys<T> = {
|
|
707
|
-
[K in keyof T]
|
|
751
|
+
[K in keyof T]-?: CleanKeys<T, K>;
|
|
708
752
|
}[keyof T] & {};
|
|
709
753
|
type StringKeys<T, E extends string = never> = T extends Collection<any, any> ? ExtractStringKeys<ExtractType<T>> | E : T extends Reference<any> ? ExtractStringKeys<ExtractType<T>> | E : T extends object ? ExtractStringKeys<ExtractType<T>> | E : never;
|
|
710
754
|
type GetStringKey<T, K extends StringKeys<T, string>, E extends string> = K extends keyof T ? ExtractType<T[K]> : (K extends E ? keyof T : never);
|
|
711
755
|
type Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
|
|
712
756
|
type CollectionKeys<T> = T extends object ? {
|
|
713
|
-
[K in keyof T]
|
|
757
|
+
[K in keyof T]-?: T[K] extends Collection<any> ? IsAny<T[K]> extends true ? never : K & string : never;
|
|
714
758
|
}[keyof T] & {} : never;
|
|
715
759
|
export type AutoPath<O, P extends string | boolean, E extends string = never, D extends Prev[number] = 9> = P extends boolean ? P : [D] extends [never] ? never : P extends any ? P extends string ? (P & `${string}.` extends never ? P : P & `${string}.`) extends infer Q ? Q extends `${infer A}.${infer B}` ? A extends StringKeys<O, E> ? `${A}.${AutoPath<NonNullable<GetStringKey<O, A, E>>, B, E, Prev[D]>}` : never : Q extends StringKeys<O, E> ? (NonNullable<GetStringKey<O, Q, E>> extends unknown ? Exclude<P, `${string}.`> : never) | (StringKeys<NonNullable<GetStringKey<O, Q, E>>, E> extends never ? never : `${Q & string}.`) : StringKeys<O, E> | `${CollectionKeys<O>}:ref` : never : never : never;
|
|
716
760
|
export type UnboxArray<T> = T extends any[] ? ArrayElement<T> : T;
|
|
@@ -782,23 +826,23 @@ export interface Highlighter {
|
|
|
782
826
|
highlight(text: string): string;
|
|
783
827
|
}
|
|
784
828
|
export interface IMetadataStorage {
|
|
785
|
-
getAll():
|
|
786
|
-
get<T = any>(entity:
|
|
787
|
-
find<T = any>(entity:
|
|
788
|
-
has(entity:
|
|
789
|
-
set(entity:
|
|
790
|
-
reset(entity:
|
|
829
|
+
getAll(): Map<EntityName, EntityMetadata>;
|
|
830
|
+
get<T = any>(entity: EntityName<T>, init?: boolean, validate?: boolean): EntityMetadata<T>;
|
|
831
|
+
find<T = any>(entity: EntityName<T>): EntityMetadata<T> | undefined;
|
|
832
|
+
has<T>(entity: EntityName<T>): boolean;
|
|
833
|
+
set<T>(entity: EntityName<T>, meta: EntityMetadata): EntityMetadata;
|
|
834
|
+
reset<T>(entity: EntityName<T>): void;
|
|
791
835
|
}
|
|
792
836
|
export interface IHydrator {
|
|
793
837
|
/**
|
|
794
838
|
* Hydrates the whole entity. This process handles custom type conversions, creating missing Collection instances,
|
|
795
839
|
* mapping FKs to entity instances, as well as merging those entities.
|
|
796
840
|
*/
|
|
797
|
-
hydrate<T extends object>(entity: T, meta: EntityMetadata<T>, data: EntityData<T>, factory: EntityFactory, type: 'full' | 'reference', newEntity?: boolean, convertCustomTypes?: boolean, schema?: string, parentSchema?: string): void;
|
|
841
|
+
hydrate<T extends object>(entity: T, meta: EntityMetadata<T>, data: EntityData<T>, factory: EntityFactory, type: 'full' | 'reference', newEntity?: boolean, convertCustomTypes?: boolean, schema?: string, parentSchema?: string, normalizeAccessors?: boolean): void;
|
|
798
842
|
/**
|
|
799
843
|
* Hydrates primary keys only
|
|
800
844
|
*/
|
|
801
|
-
hydrateReference<T extends object>(entity: T, meta: EntityMetadata<T>, data: EntityData<T>, factory: EntityFactory, convertCustomTypes?: boolean, schema?: string, parentSchema?: string): void;
|
|
845
|
+
hydrateReference<T extends object>(entity: T, meta: EntityMetadata<T>, data: EntityData<T>, factory: EntityFactory, convertCustomTypes?: boolean, schema?: string, parentSchema?: string, normalizeAccessors?: boolean): void;
|
|
802
846
|
isRunning(): boolean;
|
|
803
847
|
}
|
|
804
848
|
export interface HydratorConstructor {
|
|
@@ -808,17 +852,18 @@ export interface ISeedManager {
|
|
|
808
852
|
seed(...classNames: Constructor<Seeder>[]): Promise<void>;
|
|
809
853
|
/** @internal */
|
|
810
854
|
seedString(...classNames: string[]): Promise<void>;
|
|
811
|
-
|
|
855
|
+
create(className: string): Promise<string>;
|
|
812
856
|
}
|
|
813
857
|
export interface Seeder<T extends Dictionary = Dictionary> {
|
|
814
858
|
run(em: EntityManager, context?: T): void | Promise<void>;
|
|
815
859
|
}
|
|
816
860
|
export type ConnectionType = 'read' | 'write';
|
|
817
861
|
export type MetadataProcessor = (metadata: EntityMetadata[], platform: Platform) => MaybePromise<void>;
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
}
|
|
862
|
+
export type MaybeReturnType<T> = T extends (...args: any[]) => infer R ? R : T;
|
|
863
|
+
export interface EntitySchemaWithMeta<TName extends string = string, TTableName extends string = string, TEntity = any, TBase = never, TProperties extends Record<string, any> = Record<string, any>, TClass extends EntityCtor = EntityCtor<TEntity>> extends EntitySchema<TEntity, TBase, TClass> {
|
|
864
|
+
readonly name: TName;
|
|
865
|
+
readonly properties: TProperties;
|
|
866
|
+
readonly tableName: TTableName;
|
|
867
|
+
}
|
|
868
|
+
export type InferEntity<Schema> = Schema extends EntitySchemaWithMeta<any, any, infer Entity, any, any> ? Entity : Schema extends EntitySchema<infer Entity> ? Entity : Schema extends EntityClass<infer Entity> ? Entity : Schema;
|
|
824
869
|
export {};
|