@mikro-orm/core 7.0.4-dev.9 → 7.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/EntityManager.d.ts +884 -583
  2. package/EntityManager.js +1922 -1895
  3. package/MikroORM.d.ts +103 -74
  4. package/MikroORM.js +178 -179
  5. package/README.md +1 -1
  6. package/cache/CacheAdapter.d.ts +36 -36
  7. package/cache/FileCacheAdapter.d.ts +30 -24
  8. package/cache/FileCacheAdapter.js +80 -78
  9. package/cache/GeneratedCacheAdapter.d.ts +18 -20
  10. package/cache/GeneratedCacheAdapter.js +30 -30
  11. package/cache/MemoryCacheAdapter.d.ts +18 -20
  12. package/cache/MemoryCacheAdapter.js +35 -36
  13. package/cache/NullCacheAdapter.d.ts +16 -16
  14. package/cache/NullCacheAdapter.js +24 -24
  15. package/connections/Connection.d.ts +95 -84
  16. package/connections/Connection.js +165 -168
  17. package/drivers/DatabaseDriver.d.ts +186 -80
  18. package/drivers/DatabaseDriver.js +450 -443
  19. package/drivers/IDatabaseDriver.d.ts +440 -301
  20. package/entity/BaseEntity.d.ts +120 -83
  21. package/entity/BaseEntity.js +43 -43
  22. package/entity/Collection.d.ts +212 -179
  23. package/entity/Collection.js +727 -721
  24. package/entity/EntityAssigner.d.ts +88 -77
  25. package/entity/EntityAssigner.js +231 -230
  26. package/entity/EntityFactory.d.ts +66 -54
  27. package/entity/EntityFactory.js +425 -383
  28. package/entity/EntityHelper.d.ts +34 -22
  29. package/entity/EntityHelper.js +280 -267
  30. package/entity/EntityIdentifier.d.ts +4 -4
  31. package/entity/EntityIdentifier.js +10 -10
  32. package/entity/EntityLoader.d.ts +98 -72
  33. package/entity/EntityLoader.js +753 -723
  34. package/entity/EntityRepository.d.ts +316 -201
  35. package/entity/EntityRepository.js +213 -213
  36. package/entity/PolymorphicRef.d.ts +5 -5
  37. package/entity/PolymorphicRef.js +10 -10
  38. package/entity/Reference.d.ts +126 -82
  39. package/entity/Reference.js +278 -274
  40. package/entity/WrappedEntity.d.ts +115 -72
  41. package/entity/WrappedEntity.js +168 -166
  42. package/entity/defineEntity.d.ts +1315 -636
  43. package/entity/defineEntity.js +527 -518
  44. package/entity/utils.d.ts +13 -3
  45. package/entity/utils.js +71 -73
  46. package/entity/validators.js +43 -43
  47. package/entity/wrap.js +8 -8
  48. package/enums.d.ts +258 -253
  49. package/enums.js +251 -252
  50. package/errors.d.ts +114 -72
  51. package/errors.js +350 -253
  52. package/events/EventManager.d.ts +26 -14
  53. package/events/EventManager.js +79 -77
  54. package/events/EventSubscriber.d.ts +29 -29
  55. package/events/TransactionEventBroadcaster.d.ts +15 -8
  56. package/events/TransactionEventBroadcaster.js +14 -14
  57. package/exceptions.d.ts +23 -40
  58. package/exceptions.js +35 -52
  59. package/hydration/Hydrator.d.ts +42 -17
  60. package/hydration/Hydrator.js +43 -43
  61. package/hydration/ObjectHydrator.d.ts +50 -17
  62. package/hydration/ObjectHydrator.js +481 -416
  63. package/index.d.ts +116 -2
  64. package/index.js +10 -1
  65. package/logging/DefaultLogger.d.ts +34 -32
  66. package/logging/DefaultLogger.js +86 -86
  67. package/logging/Logger.d.ts +41 -41
  68. package/logging/SimpleLogger.d.ts +13 -11
  69. package/logging/SimpleLogger.js +22 -22
  70. package/logging/colors.d.ts +6 -6
  71. package/logging/colors.js +11 -10
  72. package/logging/inspect.js +7 -7
  73. package/metadata/EntitySchema.d.ts +211 -127
  74. package/metadata/EntitySchema.js +397 -398
  75. package/metadata/MetadataDiscovery.d.ts +114 -114
  76. package/metadata/MetadataDiscovery.js +1951 -1863
  77. package/metadata/MetadataProvider.d.ts +24 -21
  78. package/metadata/MetadataProvider.js +82 -84
  79. package/metadata/MetadataStorage.d.ts +38 -32
  80. package/metadata/MetadataStorage.js +118 -118
  81. package/metadata/MetadataValidator.d.ts +39 -39
  82. package/metadata/MetadataValidator.js +381 -338
  83. package/metadata/discover-entities.d.ts +5 -2
  84. package/metadata/discover-entities.js +35 -27
  85. package/metadata/types.d.ts +615 -531
  86. package/naming-strategy/AbstractNamingStrategy.d.ts +54 -39
  87. package/naming-strategy/AbstractNamingStrategy.js +90 -85
  88. package/naming-strategy/EntityCaseNamingStrategy.d.ts +6 -6
  89. package/naming-strategy/EntityCaseNamingStrategy.js +22 -22
  90. package/naming-strategy/MongoNamingStrategy.d.ts +6 -6
  91. package/naming-strategy/MongoNamingStrategy.js +18 -18
  92. package/naming-strategy/NamingStrategy.d.ts +109 -99
  93. package/naming-strategy/UnderscoreNamingStrategy.d.ts +7 -7
  94. package/naming-strategy/UnderscoreNamingStrategy.js +21 -21
  95. package/not-supported.js +7 -4
  96. package/package.json +1 -1
  97. package/platforms/ExceptionConverter.d.ts +1 -1
  98. package/platforms/ExceptionConverter.js +4 -4
  99. package/platforms/Platform.d.ts +310 -299
  100. package/platforms/Platform.js +663 -636
  101. package/serialization/EntitySerializer.d.ts +49 -26
  102. package/serialization/EntitySerializer.js +224 -218
  103. package/serialization/EntityTransformer.d.ts +10 -6
  104. package/serialization/EntityTransformer.js +219 -217
  105. package/serialization/SerializationContext.d.ts +27 -23
  106. package/serialization/SerializationContext.js +105 -105
  107. package/types/ArrayType.d.ts +8 -8
  108. package/types/ArrayType.js +33 -33
  109. package/types/BigIntType.d.ts +17 -10
  110. package/types/BigIntType.js +37 -37
  111. package/types/BlobType.d.ts +3 -3
  112. package/types/BlobType.js +13 -13
  113. package/types/BooleanType.d.ts +4 -4
  114. package/types/BooleanType.js +12 -12
  115. package/types/CharacterType.d.ts +2 -2
  116. package/types/CharacterType.js +6 -6
  117. package/types/DateTimeType.d.ts +5 -5
  118. package/types/DateTimeType.js +15 -15
  119. package/types/DateType.d.ts +5 -5
  120. package/types/DateType.js +15 -15
  121. package/types/DecimalType.d.ts +7 -7
  122. package/types/DecimalType.js +26 -26
  123. package/types/DoubleType.d.ts +3 -3
  124. package/types/DoubleType.js +12 -12
  125. package/types/EnumArrayType.d.ts +5 -5
  126. package/types/EnumArrayType.js +24 -24
  127. package/types/EnumType.d.ts +3 -3
  128. package/types/EnumType.js +11 -11
  129. package/types/FloatType.d.ts +3 -3
  130. package/types/FloatType.js +9 -9
  131. package/types/IntegerType.d.ts +3 -3
  132. package/types/IntegerType.js +9 -9
  133. package/types/IntervalType.d.ts +4 -4
  134. package/types/IntervalType.js +12 -12
  135. package/types/JsonType.d.ts +8 -8
  136. package/types/JsonType.js +32 -32
  137. package/types/MediumIntType.d.ts +1 -1
  138. package/types/MediumIntType.js +3 -3
  139. package/types/SmallIntType.d.ts +3 -3
  140. package/types/SmallIntType.js +9 -9
  141. package/types/StringType.d.ts +4 -4
  142. package/types/StringType.js +12 -12
  143. package/types/TextType.d.ts +3 -3
  144. package/types/TextType.js +9 -9
  145. package/types/TimeType.d.ts +5 -5
  146. package/types/TimeType.js +17 -17
  147. package/types/TinyIntType.d.ts +3 -3
  148. package/types/TinyIntType.js +10 -10
  149. package/types/Type.d.ts +83 -79
  150. package/types/Type.js +82 -82
  151. package/types/Uint8ArrayType.d.ts +4 -4
  152. package/types/Uint8ArrayType.js +21 -21
  153. package/types/UnknownType.d.ts +4 -4
  154. package/types/UnknownType.js +12 -12
  155. package/types/UuidType.d.ts +5 -5
  156. package/types/UuidType.js +19 -19
  157. package/types/index.d.ts +75 -49
  158. package/types/index.js +52 -26
  159. package/typings.d.ts +1250 -737
  160. package/typings.js +244 -231
  161. package/unit-of-work/ChangeSet.d.ts +26 -26
  162. package/unit-of-work/ChangeSet.js +56 -56
  163. package/unit-of-work/ChangeSetComputer.d.ts +12 -12
  164. package/unit-of-work/ChangeSetComputer.js +178 -170
  165. package/unit-of-work/ChangeSetPersister.d.ts +63 -44
  166. package/unit-of-work/ChangeSetPersister.js +442 -421
  167. package/unit-of-work/CommitOrderCalculator.d.ts +40 -40
  168. package/unit-of-work/CommitOrderCalculator.js +89 -88
  169. package/unit-of-work/IdentityMap.d.ts +31 -31
  170. package/unit-of-work/IdentityMap.js +105 -105
  171. package/unit-of-work/UnitOfWork.d.ts +181 -141
  172. package/unit-of-work/UnitOfWork.js +1200 -1183
  173. package/utils/AbstractMigrator.d.ts +111 -91
  174. package/utils/AbstractMigrator.js +275 -275
  175. package/utils/AbstractSchemaGenerator.d.ts +43 -34
  176. package/utils/AbstractSchemaGenerator.js +121 -122
  177. package/utils/AsyncContext.d.ts +3 -3
  178. package/utils/AsyncContext.js +34 -35
  179. package/utils/Configuration.d.ts +852 -808
  180. package/utils/Configuration.js +359 -344
  181. package/utils/Cursor.d.ts +40 -22
  182. package/utils/Cursor.js +135 -127
  183. package/utils/DataloaderUtils.d.ts +58 -43
  184. package/utils/DataloaderUtils.js +203 -198
  185. package/utils/EntityComparator.d.ts +98 -81
  186. package/utils/EntityComparator.js +828 -728
  187. package/utils/NullHighlighter.d.ts +1 -1
  188. package/utils/NullHighlighter.js +3 -3
  189. package/utils/QueryHelper.d.ts +79 -51
  190. package/utils/QueryHelper.js +372 -361
  191. package/utils/RawQueryFragment.d.ts +50 -34
  192. package/utils/RawQueryFragment.js +107 -105
  193. package/utils/RequestContext.d.ts +32 -32
  194. package/utils/RequestContext.js +52 -53
  195. package/utils/TransactionContext.d.ts +16 -16
  196. package/utils/TransactionContext.js +27 -27
  197. package/utils/TransactionManager.d.ts +58 -58
  198. package/utils/TransactionManager.js +199 -197
  199. package/utils/Utils.d.ts +204 -145
  200. package/utils/Utils.js +812 -810
  201. package/utils/clone.js +104 -113
  202. package/utils/env-vars.js +90 -88
  203. package/utils/fs-utils.d.ts +15 -15
  204. package/utils/fs-utils.js +180 -181
  205. package/utils/upsert-utils.d.ts +20 -5
  206. package/utils/upsert-utils.js +114 -116
@@ -1,141 +1,225 @@
1
- import { EntityMetadata, type AnyEntity, type EntityKey, type Constructor, type DeepPartial, type EntityName, type EntityProperty, type CleanKeys, type ExpandProperty, type IsNever, type EntityCtor } from '../typings.js';
1
+ import {
2
+ EntityMetadata,
3
+ type AnyEntity,
4
+ type EntityKey,
5
+ type Constructor,
6
+ type DeepPartial,
7
+ type EntityName,
8
+ type EntityProperty,
9
+ type CleanKeys,
10
+ type ExpandProperty,
11
+ type IsNever,
12
+ type EntityCtor,
13
+ } from '../typings.js';
2
14
  import { type EventType, ReferenceKind } from '../enums.js';
3
15
  import type { EventArgs } from '../events/EventSubscriber.js';
4
16
  import { Type } from '../types/Type.js';
5
- import type { PropertyOptions, ManyToOneOptions, OneToOneOptions, OneToManyOptions, ManyToManyOptions, EmbeddedOptions, EnumOptions, PrimaryKeyOptions, SerializedPrimaryKeyOptions, IndexOptions, UniqueOptions } from './types.js';
6
- type TypeType = string | NumberConstructor | StringConstructor | BooleanConstructor | DateConstructor | ArrayConstructor | Constructor<Type<any>> | Type<any>;
7
- type TypeDef<Target> = {
8
- type: TypeType;
9
- } | {
10
- entity: () => EntityName<Target> | EntityName[];
11
- };
12
- type EmbeddedTypeDef<Target> = {
13
- type: TypeType;
14
- } | {
15
- entity: () => EntityName<Target> | EntityName[];
16
- };
17
+ import type {
18
+ PropertyOptions,
19
+ ManyToOneOptions,
20
+ OneToOneOptions,
21
+ OneToManyOptions,
22
+ ManyToManyOptions,
23
+ EmbeddedOptions,
24
+ EnumOptions,
25
+ PrimaryKeyOptions,
26
+ SerializedPrimaryKeyOptions,
27
+ IndexOptions,
28
+ UniqueOptions,
29
+ } from './types.js';
30
+ type TypeType =
31
+ | string
32
+ | NumberConstructor
33
+ | StringConstructor
34
+ | BooleanConstructor
35
+ | DateConstructor
36
+ | ArrayConstructor
37
+ | Constructor<Type<any>>
38
+ | Type<any>;
39
+ type TypeDef<Target> =
40
+ | {
41
+ type: TypeType;
42
+ }
43
+ | {
44
+ entity: () => EntityName<Target> | EntityName[];
45
+ };
46
+ type EmbeddedTypeDef<Target> =
47
+ | {
48
+ type: TypeType;
49
+ }
50
+ | {
51
+ entity: () => EntityName<Target> | EntityName[];
52
+ };
17
53
  /** Union type representing all possible property definition shapes in an EntitySchema. */
18
- export type EntitySchemaProperty<Target, Owner> = ({
19
- kind: ReferenceKind.MANY_TO_ONE | 'm:1';
20
- } & TypeDef<Target> & ManyToOneOptions<Owner, Target>) | ({
21
- kind: ReferenceKind.ONE_TO_ONE | '1:1';
22
- } & TypeDef<Target> & OneToOneOptions<Owner, Target>) | ({
23
- kind: ReferenceKind.ONE_TO_MANY | '1:m';
24
- } & TypeDef<Target> & OneToManyOptions<Owner, Target>) | ({
25
- kind: ReferenceKind.MANY_TO_MANY | 'm:n';
26
- } & TypeDef<Target> & ManyToManyOptions<Owner, Target>) | ({
27
- kind: ReferenceKind.EMBEDDED | 'embedded';
28
- } & EmbeddedTypeDef<Target> & EmbeddedOptions<Owner, Target> & PropertyOptions<Owner>) | ({
29
- enum: true;
30
- } & EnumOptions<Owner>) | (TypeDef<Target> & PropertyOptions<Owner>);
54
+ export type EntitySchemaProperty<Target, Owner> =
55
+ | ({
56
+ kind: ReferenceKind.MANY_TO_ONE | 'm:1';
57
+ } & TypeDef<Target> &
58
+ ManyToOneOptions<Owner, Target>)
59
+ | ({
60
+ kind: ReferenceKind.ONE_TO_ONE | '1:1';
61
+ } & TypeDef<Target> &
62
+ OneToOneOptions<Owner, Target>)
63
+ | ({
64
+ kind: ReferenceKind.ONE_TO_MANY | '1:m';
65
+ } & TypeDef<Target> &
66
+ OneToManyOptions<Owner, Target>)
67
+ | ({
68
+ kind: ReferenceKind.MANY_TO_MANY | 'm:n';
69
+ } & TypeDef<Target> &
70
+ ManyToManyOptions<Owner, Target>)
71
+ | ({
72
+ kind: ReferenceKind.EMBEDDED | 'embedded';
73
+ } & EmbeddedTypeDef<Target> &
74
+ EmbeddedOptions<Owner, Target> &
75
+ PropertyOptions<Owner>)
76
+ | ({
77
+ enum: true;
78
+ } & EnumOptions<Owner>)
79
+ | (TypeDef<Target> & PropertyOptions<Owner>);
31
80
  type OmitBaseProps<Entity, Base> = IsNever<Base> extends true ? Entity : Omit<Entity, keyof Base>;
32
81
  /** Configuration object for defining an entity via EntitySchema. */
33
- export type EntitySchemaMetadata<Entity, Base = never, Class extends EntityCtor = EntityCtor<Entity>> = Omit<Partial<EntityMetadata<Entity>>, 'name' | 'properties' | 'extends'> & ({
34
- name: string;
35
- } | {
36
- class: Class;
37
- name?: string;
38
- }) & {
82
+ export type EntitySchemaMetadata<Entity, Base = never, Class extends EntityCtor = EntityCtor<Entity>> = Omit<
83
+ Partial<EntityMetadata<Entity>>,
84
+ 'name' | 'properties' | 'extends'
85
+ > &
86
+ (
87
+ | {
88
+ name: string;
89
+ }
90
+ | {
91
+ class: Class;
92
+ name?: string;
93
+ }
94
+ ) & {
39
95
  extends?: EntityName<Base>;
40
- } & {
96
+ } & {
41
97
  properties?: {
42
- [Key in keyof OmitBaseProps<Entity, Base> as CleanKeys<OmitBaseProps<Entity, Base>, Key>]-?: EntitySchemaProperty<ExpandProperty<NonNullable<Entity[Key]>>, Entity>;
98
+ [Key in keyof OmitBaseProps<Entity, Base> as CleanKeys<OmitBaseProps<Entity, Base>, Key>]-?: EntitySchemaProperty<
99
+ ExpandProperty<NonNullable<Entity[Key]>>,
100
+ Entity
101
+ >;
43
102
  };
44
- } & {
103
+ } & {
45
104
  inheritance?: 'tpt';
46
- };
105
+ };
47
106
  /** Class-less entity definition that provides a programmatic API for defining entities without decorators. */
48
107
  export declare class EntitySchema<Entity = any, Base = never, Class extends EntityCtor = EntityCtor<Entity>> {
49
- /**
50
- * When schema links the entity class via `class` option, this registry allows the lookup from opposite side,
51
- * so we can use the class in `entities` option just like the EntitySchema instance.
52
- */
53
- static REGISTRY: Map<AnyEntity, EntitySchema>;
54
- /** @internal Type-level marker for fast entity type inference */
55
- readonly '~entity': Entity;
56
- private readonly _meta;
57
- private internal;
58
- private initialized;
59
- constructor(meta: EntitySchemaMetadata<Entity, Base, Class>);
60
- /**
61
- * Checks if the given value is an EntitySchema instance, using duck-typing
62
- * as a fallback when `instanceof` fails due to CJS/ESM dual-package hazard
63
- * (e.g. when using `tsx` or `@swc-node/register` with `"type": "commonjs"` projects).
64
- */
65
- static is(item: unknown): item is EntitySchema;
66
- /** Creates an EntitySchema from existing EntityMetadata (used internally). */
67
- static fromMetadata<T = AnyEntity, U = never>(meta: EntityMetadata<T> | DeepPartial<EntityMetadata<T>>): EntitySchema<T, U>;
68
- /** Adds a scalar property to the entity schema. */
69
- addProperty(name: EntityKey<Entity>, type?: TypeType, options?: PropertyOptions<Entity> | EntityProperty<Entity>): void;
70
- /** Adds an enum property to the entity schema. */
71
- addEnum(name: EntityKey<Entity>, type?: TypeType, options?: EnumOptions<Entity>): void;
72
- /** Adds a version property for optimistic locking. */
73
- addVersion(name: EntityKey<Entity>, type: TypeType, options?: PropertyOptions<Entity>): void;
74
- /** Adds a primary key property to the entity schema. */
75
- addPrimaryKey(name: EntityKey<Entity>, type: TypeType, options?: PrimaryKeyOptions<Entity>): void;
76
- /** Adds a serialized primary key property (e.g. for MongoDB ObjectId). */
77
- addSerializedPrimaryKey(name: EntityKey<Entity>, type: TypeType, options?: SerializedPrimaryKeyOptions<Entity>): void;
78
- /** Adds an embedded property to the entity schema. */
79
- addEmbedded<Target = AnyEntity>(name: EntityKey<Entity>, options: EmbeddedOptions<Entity, Target>): void;
80
- /** Adds a many-to-one relation to the entity schema. */
81
- addManyToOne<Target = AnyEntity>(name: EntityKey<Entity>, type: TypeType, options: ManyToOneOptions<Entity, Target>): void;
82
- /** Adds a many-to-many relation to the entity schema. */
83
- addManyToMany<Target = AnyEntity>(name: EntityKey<Entity>, type: TypeType, options: ManyToManyOptions<Entity, Target>): void;
84
- /** Adds a one-to-many relation to the entity schema. */
85
- addOneToMany<Target = AnyEntity>(name: EntityKey<Entity>, type: TypeType, options: OneToManyOptions<Entity, Target>): void;
86
- /** Adds a one-to-one relation to the entity schema. */
87
- addOneToOne<Target = AnyEntity>(name: EntityKey<Entity>, type: TypeType, options: OneToOneOptions<Entity, Target>): void;
88
- /** Adds an index definition to the entity schema. */
89
- addIndex<Key extends string>(options: IndexOptions<Entity, Key>): void;
90
- /** Adds a unique constraint definition to the entity schema. */
91
- addUnique<Key extends string>(options: UniqueOptions<Entity, Key>): void;
92
- /** Sets a custom repository class for this entity. */
93
- setCustomRepository(repository: () => Constructor): void;
94
- /** Sets the base entity that this schema extends. */
95
- setExtends(base: EntityName): void;
96
- /** Sets or replaces the entity class associated with this schema. */
97
- setClass(cls: Class): void;
98
- /** Returns the underlying EntityMetadata. */
99
- get meta(): EntityMetadata<Entity, Class>;
100
- /** Returns the entity class name. */
101
- get name(): string | EntityName<Entity>;
102
- /** Returns the database table name. */
103
- get tableName(): string;
104
- get class(): Class;
105
- get properties(): Record<string, any>;
106
- new(...params: ConstructorParameters<Class>): Entity;
107
- /**
108
- * @internal
109
- */
110
- init(): this;
111
- /**
112
- * Check if this entity is part of a TPT hierarchy by walking up the extends chain.
113
- * This handles mid-level abstract entities (e.g., Animal -> Mammal -> Dog where Mammal is abstract).
114
- */
115
- private isPartOfTPTHierarchy;
116
- private initProperties;
117
- private initPrimaryKeys;
118
- private normalizeType;
119
- private createProperty;
120
- private rename;
121
- private renameCompositeOptions;
122
- /**
123
- * Adds a lifecycle hook handler to the entity schema.
124
- * This method allows registering hooks after the entity is defined,
125
- * which can be useful for avoiding circular type references.
126
- *
127
- * @example
128
- * ```ts
129
- * export const Article = defineEntity({
130
- * name: 'Article',
131
- * properties: { ... },
132
- * });
133
- *
134
- * Article.addHook('beforeCreate', async args => {
135
- * args.entity.slug = args.entity.title.toLowerCase();
136
- * });
137
- * ```
138
- */
139
- addHook<T extends Entity = Entity>(event: EventType | `${EventType}`, handler: (args: EventArgs<T>) => void | Promise<void>): this;
108
+ /**
109
+ * When schema links the entity class via `class` option, this registry allows the lookup from opposite side,
110
+ * so we can use the class in `entities` option just like the EntitySchema instance.
111
+ */
112
+ static REGISTRY: Map<AnyEntity, EntitySchema>;
113
+ /** @internal Type-level marker for fast entity type inference */
114
+ readonly '~entity': Entity;
115
+ private readonly _meta;
116
+ private internal;
117
+ private initialized;
118
+ constructor(meta: EntitySchemaMetadata<Entity, Base, Class>);
119
+ /**
120
+ * Checks if the given value is an EntitySchema instance, using duck-typing
121
+ * as a fallback when `instanceof` fails due to CJS/ESM dual-package hazard
122
+ * (e.g. when using `tsx` or `@swc-node/register` with `"type": "commonjs"` projects).
123
+ */
124
+ static is(item: unknown): item is EntitySchema;
125
+ /** Creates an EntitySchema from existing EntityMetadata (used internally). */
126
+ static fromMetadata<T = AnyEntity, U = never>(
127
+ meta: EntityMetadata<T> | DeepPartial<EntityMetadata<T>>,
128
+ ): EntitySchema<T, U>;
129
+ /** Adds a scalar property to the entity schema. */
130
+ addProperty(
131
+ name: EntityKey<Entity>,
132
+ type?: TypeType,
133
+ options?: PropertyOptions<Entity> | EntityProperty<Entity>,
134
+ ): void;
135
+ /** Adds an enum property to the entity schema. */
136
+ addEnum(name: EntityKey<Entity>, type?: TypeType, options?: EnumOptions<Entity>): void;
137
+ /** Adds a version property for optimistic locking. */
138
+ addVersion(name: EntityKey<Entity>, type: TypeType, options?: PropertyOptions<Entity>): void;
139
+ /** Adds a primary key property to the entity schema. */
140
+ addPrimaryKey(name: EntityKey<Entity>, type: TypeType, options?: PrimaryKeyOptions<Entity>): void;
141
+ /** Adds a serialized primary key property (e.g. for MongoDB ObjectId). */
142
+ addSerializedPrimaryKey(name: EntityKey<Entity>, type: TypeType, options?: SerializedPrimaryKeyOptions<Entity>): void;
143
+ /** Adds an embedded property to the entity schema. */
144
+ addEmbedded<Target = AnyEntity>(name: EntityKey<Entity>, options: EmbeddedOptions<Entity, Target>): void;
145
+ /** Adds a many-to-one relation to the entity schema. */
146
+ addManyToOne<Target = AnyEntity>(
147
+ name: EntityKey<Entity>,
148
+ type: TypeType,
149
+ options: ManyToOneOptions<Entity, Target>,
150
+ ): void;
151
+ /** Adds a many-to-many relation to the entity schema. */
152
+ addManyToMany<Target = AnyEntity>(
153
+ name: EntityKey<Entity>,
154
+ type: TypeType,
155
+ options: ManyToManyOptions<Entity, Target>,
156
+ ): void;
157
+ /** Adds a one-to-many relation to the entity schema. */
158
+ addOneToMany<Target = AnyEntity>(
159
+ name: EntityKey<Entity>,
160
+ type: TypeType,
161
+ options: OneToManyOptions<Entity, Target>,
162
+ ): void;
163
+ /** Adds a one-to-one relation to the entity schema. */
164
+ addOneToOne<Target = AnyEntity>(
165
+ name: EntityKey<Entity>,
166
+ type: TypeType,
167
+ options: OneToOneOptions<Entity, Target>,
168
+ ): void;
169
+ /** Adds an index definition to the entity schema. */
170
+ addIndex<Key extends string>(options: IndexOptions<Entity, Key>): void;
171
+ /** Adds a unique constraint definition to the entity schema. */
172
+ addUnique<Key extends string>(options: UniqueOptions<Entity, Key>): void;
173
+ /** Sets a custom repository class for this entity. */
174
+ setCustomRepository(repository: () => Constructor): void;
175
+ /** Sets the base entity that this schema extends. */
176
+ setExtends(base: EntityName): void;
177
+ /** Sets or replaces the entity class associated with this schema. */
178
+ setClass(cls: Class): void;
179
+ /** Returns the underlying EntityMetadata. */
180
+ get meta(): EntityMetadata<Entity, Class>;
181
+ /** Returns the entity class name. */
182
+ get name(): string | EntityName<Entity>;
183
+ /** Returns the database table name. */
184
+ get tableName(): string;
185
+ get class(): Class;
186
+ get properties(): Record<string, any>;
187
+ new(...params: ConstructorParameters<Class>): Entity;
188
+ /**
189
+ * @internal
190
+ */
191
+ init(): this;
192
+ /**
193
+ * Check if this entity is part of a TPT hierarchy by walking up the extends chain.
194
+ * This handles mid-level abstract entities (e.g., Animal -> Mammal -> Dog where Mammal is abstract).
195
+ */
196
+ private isPartOfTPTHierarchy;
197
+ private initProperties;
198
+ private initPrimaryKeys;
199
+ private normalizeType;
200
+ private createProperty;
201
+ private rename;
202
+ private renameCompositeOptions;
203
+ /**
204
+ * Adds a lifecycle hook handler to the entity schema.
205
+ * This method allows registering hooks after the entity is defined,
206
+ * which can be useful for avoiding circular type references.
207
+ *
208
+ * @example
209
+ * ```ts
210
+ * export const Article = defineEntity({
211
+ * name: 'Article',
212
+ * properties: { ... },
213
+ * });
214
+ *
215
+ * Article.addHook('beforeCreate', async args => {
216
+ * args.entity.slug = args.entity.title.toLowerCase();
217
+ * });
218
+ * ```
219
+ */
220
+ addHook<T extends Entity = Entity>(
221
+ event: EventType | `${EventType}`,
222
+ handler: (args: EventArgs<T>) => void | Promise<void>,
223
+ ): this;
140
224
  }
141
225
  export {};