import type { EntityKey, ExpandProperty } from './typings.js'; import type { Transaction } from './connections/Connection.js'; import type { LogContext } from './logging/Logger.js'; /** Controls when the `EntityManager` flushes pending changes to the database. */ export declare enum FlushMode { /** The `EntityManager` delays the flush until the current Transaction is committed. */ COMMIT = "commit", /** This is the default mode, and it flushes the `EntityManager` only if necessary. */ AUTO = "auto", /** Flushes the `EntityManager` before every query. */ ALWAYS = "always" } /** Controls how populate hints are resolved when using `FindOptions.populateWhere`. */ export declare enum PopulateHint { /** Infer population hints from the `where` condition. */ INFER = "infer", /** Apply population hints to all relations. */ ALL = "all" } /** Special tokens used as populate path values in `FindOptions.populate`. */ export declare enum PopulatePath { /** Infer which relations to populate based on fields accessed in the `where` or `orderBy` clause. */ INFER = "$infer", /** Populate all relations. */ ALL = "*" } /** Logical grouping operators for combining query conditions. */ export declare enum GroupOperator { /** Logical AND — all conditions must match. */ $and = "and", /** Logical OR — at least one condition must match. */ $or = "or" } /** Comparison and filtering operators used in query conditions. */ export declare enum QueryOperator { /** Equal. */ $eq = "=", /** Included in the given list. */ $in = "in", /** Not included in the given list. */ $nin = "not in", /** Greater than. */ $gt = ">", /** Greater than or equal to. */ $gte = ">=", /** Less than. */ $lt = "<", /** Less than or equal to. */ $lte = "<=", /** Not equal. */ $ne = "!=", /** Negation wrapper. */ $not = "not", /** SQL LIKE pattern matching. */ $like = "like", /** Regular expression matching. */ $re = "regexp", /** Full-text search. */ $fulltext = "fulltext", /** Checks that the value is not null (i.e., exists). */ $exists = "not null", /** Case-insensitive LIKE (PostgreSQL only). */ $ilike = "ilike",// postgres only /** Array overlap operator (PostgreSQL only). */ $overlap = "&&",// postgres only /** Array/JSON contains operator (PostgreSQL only). */ $contains = "@>",// postgres only /** Array/JSON contained-by operator (PostgreSQL only). */ $contained = "<@",// postgres only /** No element in the collection matches (SQL only). */ $none = "none",// collection operators, sql only /** At least one element in the collection matches (SQL only). */ $some = "some",// collection operators, sql only /** Every element in the collection matches (SQL only). */ $every = "every",// collection operators, sql only /** Matches collections by their size (SQL only). */ $size = "size",// collection operators, sql only /** JSON object has the given key (PostgreSQL only). */ $hasKey = "?",// postgres only, json /** JSON object has all of the given keys (PostgreSQL only). */ $hasKeys = "?&",// postgres only, json /** JSON object has at least one of the given keys (PostgreSQL only). */ $hasSomeKeys = "?|",// postgres only, json /** Matches an element inside a JSON array (SQL only). */ $elemMatch = "elemMatch" } export declare const ARRAY_OPERATORS: string[]; export declare const JSON_KEY_OPERATORS: string[]; /** Sort direction for query results. Both upper- and lower-case variants are accepted. */ export declare enum QueryOrder { /** Ascending order. */ ASC = "ASC", /** Ascending order with nulls sorted last. */ ASC_NULLS_LAST = "ASC NULLS LAST", /** Ascending order with nulls sorted first. */ ASC_NULLS_FIRST = "ASC NULLS FIRST", /** Descending order. */ DESC = "DESC", /** Descending order with nulls sorted last. */ DESC_NULLS_LAST = "DESC NULLS LAST", /** Descending order with nulls sorted first. */ DESC_NULLS_FIRST = "DESC NULLS FIRST", /** Ascending order (lower-case variant). */ asc = "asc", /** Ascending order with nulls sorted last (lower-case variant). */ asc_nulls_last = "asc nulls last", /** Ascending order with nulls sorted first (lower-case variant). */ asc_nulls_first = "asc nulls first", /** Descending order (lower-case variant). */ desc = "desc", /** Descending order with nulls sorted last (lower-case variant). */ desc_nulls_last = "desc nulls last", /** Descending order with nulls sorted first (lower-case variant). */ desc_nulls_first = "desc nulls first" } /** Numeric sort direction, compatible with MongoDB-style ordering. */ export declare enum QueryOrderNumeric { /** Ascending order. */ ASC = 1, /** Descending order. */ DESC = -1 } export type QueryOrderKeysFlat = QueryOrder | QueryOrderNumeric | `${QueryOrder}`; export type QueryOrderKeys = QueryOrderKeysFlat | QueryOrderMap; export type QueryOrderMap = { [K in EntityKey]?: QueryOrderKeys>; }; export interface FlatQueryOrderMap { [x: string]: QueryOrderKeysFlat; } /** Flags that modify query builder behavior. */ export declare enum QueryFlag { /** Add a DISTINCT clause to the SELECT statement. */ DISTINCT = "DISTINCT", /** Enable result pagination via a sub-query for the primary keys. */ PAGINATE = "PAGINATE", /** Disable the automatic pagination sub-query. */ DISABLE_PAGINATE = "DISABLE_PAGINATE", /** Wrap UPDATE statements in a sub-query. */ UPDATE_SUB_QUERY = "UPDATE_SUB_QUERY", /** Wrap DELETE statements in a sub-query. */ DELETE_SUB_QUERY = "DELETE_SUB_QUERY", /** Convert values through custom type mappings when reading results. */ CONVERT_CUSTOM_TYPES = "CONVERT_CUSTOM_TYPES", /** Include lazy formula properties in the SELECT clause. */ INCLUDE_LAZY_FORMULAS = "INCLUDE_LAZY_FORMULAS", /** Automatically join the owning side of one-to-one relations. */ AUTO_JOIN_ONE_TO_ONE_OWNER = "AUTO_JOIN_ONE_TO_ONE_OWNER", /** Infer the populate hint from the query fields. */ INFER_POPULATE = "INFER_POPULATE", /** Prevent nested conditions from being promoted to INNER JOINs. */ DISABLE_NESTED_INNER_JOIN = "DISABLE_NESTED_INNER_JOIN", /** Enable IDENTITY_INSERT for explicit PK values (MSSQL only). */ IDENTITY_INSERT = "IDENTITY_INSERT",// mssql only /** Use an OUTPUT...INTO temp table for returning rows (MSSQL only). */ OUTPUT_TABLE = "OUTPUT_TABLE" } export declare const SCALAR_TYPES: Set; /** Describes the kind of relationship a property represents. */ export declare enum ReferenceKind { /** A plain scalar property (not a relation). */ SCALAR = "scalar", /** A one-to-one relation. */ ONE_TO_ONE = "1:1", /** A one-to-many relation (inverse side of a many-to-one). */ ONE_TO_MANY = "1:m", /** A many-to-one relation (owning side). */ MANY_TO_ONE = "m:1", /** A many-to-many relation. */ MANY_TO_MANY = "m:n", /** An embedded entity (inline object stored within the parent). */ EMBEDDED = "embedded" } /** Cascade operations that propagate from a parent entity to its relations. */ export declare enum Cascade { /** Cascade persist — new related entities are automatically persisted. */ PERSIST = "persist", /** Cascade merge — detached related entities are merged into the identity map. */ MERGE = "merge", /** Cascade remove — removing the parent also removes related entities. */ REMOVE = "remove", /** Enable all cascade operations (persist, merge, remove). */ ALL = "all", /** @internal */ SCHEDULE_ORPHAN_REMOVAL = "schedule_orphan_removal", /** @internal */ CANCEL_ORPHAN_REMOVAL = "cancel_orphan_removal" } /** Strategy used to load related entities when populating. */ export declare enum LoadStrategy { /** Load relations with a separate SELECT ... WHERE pk IN (...) query. */ SELECT_IN = "select-in", /** Load relations via SQL JOINs in a single query. */ JOINED = "joined", /** Use joined strategy for to-one relations and select-in for to-many. */ BALANCED = "balanced" } /** Controls which relation types use the dataloader for batched loading. */ export declare enum DataloaderType { /** Dataloader is disabled. */ NONE = 0, /** Use the dataloader for Reference (to-one) relations only. */ REFERENCE = 1, /** Use the dataloader for Collection (to-many) relations only. */ COLLECTION = 2, /** Use the dataloader for both Reference and Collection relations. */ ALL = 3 } /** Locking strategy for concurrency control. */ export declare enum LockMode { /** No locking. */ NONE = 0, /** Optimistic locking via a version column. */ OPTIMISTIC = 1, /** Pessimistic shared lock (FOR SHARE). */ PESSIMISTIC_READ = 2, /** Pessimistic exclusive lock (FOR UPDATE). */ PESSIMISTIC_WRITE = 3, /** Pessimistic exclusive lock that skips already-locked rows (FOR UPDATE SKIP LOCKED). */ PESSIMISTIC_PARTIAL_WRITE = 4, /** Pessimistic exclusive lock that fails immediately if the row is locked (FOR UPDATE NOWAIT). */ PESSIMISTIC_WRITE_OR_FAIL = 5, /** Pessimistic shared lock that skips already-locked rows (FOR SHARE SKIP LOCKED). */ PESSIMISTIC_PARTIAL_READ = 6, /** Pessimistic shared lock that fails immediately if the row is locked (FOR SHARE NOWAIT). */ PESSIMISTIC_READ_OR_FAIL = 7 } /** Transaction isolation levels as defined by the SQL standard (plus vendor extensions). */ export declare enum IsolationLevel { /** Allows dirty reads, non-repeatable reads, and phantom reads. */ READ_UNCOMMITTED = "read uncommitted", /** Prevents dirty reads; non-repeatable and phantom reads are still possible. */ READ_COMMITTED = "read committed", /** Snapshot isolation — each transaction sees a consistent snapshot of the database (MSSQL). */ SNAPSHOT = "snapshot", /** Prevents dirty and non-repeatable reads; phantom reads are still possible. */ REPEATABLE_READ = "repeatable read", /** Full isolation — transactions are executed as if they were run sequentially. */ SERIALIZABLE = "serializable" } /** Lifecycle and transaction events emitted by the ORM. */ export declare enum EventType { /** Fired when an entity instance is created (via constructor or `em.create`). */ onInit = "onInit", /** Fired after an entity is loaded from the database. */ onLoad = "onLoad", /** Fired before a new entity is inserted into the database. */ beforeCreate = "beforeCreate", /** Fired after a new entity has been inserted into the database. */ afterCreate = "afterCreate", /** Fired before an existing entity is updated in the database. */ beforeUpdate = "beforeUpdate", /** Fired after an existing entity has been updated in the database. */ afterUpdate = "afterUpdate", /** Fired before an upsert operation. */ beforeUpsert = "beforeUpsert", /** Fired after an upsert operation. */ afterUpsert = "afterUpsert", /** Fired before an entity is deleted from the database. */ beforeDelete = "beforeDelete", /** Fired after an entity has been deleted from the database. */ afterDelete = "afterDelete", /** Fired at the very beginning of `em.flush()`, before change detection. */ beforeFlush = "beforeFlush", /** Fired during `em.flush()` after change detection but before database writes. */ onFlush = "onFlush", /** Fired after `em.flush()` has completed all database writes. */ afterFlush = "afterFlush", /** Fired before a new database transaction is started. */ beforeTransactionStart = "beforeTransactionStart", /** Fired after a new database transaction has been started. */ afterTransactionStart = "afterTransactionStart", /** Fired before a database transaction is committed. */ beforeTransactionCommit = "beforeTransactionCommit", /** Fired after a database transaction has been committed. */ afterTransactionCommit = "afterTransactionCommit", /** Fired before a database transaction is rolled back. */ beforeTransactionRollback = "beforeTransactionRollback", /** Fired after a database transaction has been rolled back. */ afterTransactionRollback = "afterTransactionRollback" } export declare const EventTypeMap: Record; export type TransactionEventType = EventType.beforeTransactionStart | EventType.afterTransactionStart | EventType.beforeTransactionCommit | EventType.afterTransactionCommit | EventType.beforeTransactionRollback | EventType.afterTransactionRollback; /** Controls how a transactional operation interacts with an existing transaction. */ export declare enum TransactionPropagation { /** Join the current transaction or create a new one if none exists. */ REQUIRED = "required", /** Always create a new transaction, suspending the current one if it exists. */ REQUIRES_NEW = "requires_new", /** Create a nested savepoint within the current transaction, or a new transaction if none exists. */ NESTED = "nested", /** Execute non-transactionally, suspending the current transaction if one exists. */ NOT_SUPPORTED = "not_supported", /** Join the current transaction if one exists, otherwise execute non-transactionally. */ SUPPORTS = "supports", /** Join the current transaction; throw if no transaction is active. */ MANDATORY = "mandatory", /** Execute non-transactionally; throw if a transaction is active. */ NEVER = "never" } export interface TransactionOptions { ctx?: Transaction; propagation?: TransactionPropagation | `${TransactionPropagation}`; isolationLevel?: IsolationLevel | `${IsolationLevel}`; readOnly?: boolean; clear?: boolean; flushMode?: FlushMode | `${FlushMode}`; ignoreNestedTransactions?: boolean; loggerContext?: LogContext; } export declare abstract class PlainObject { } /** Constraint deferral mode for database constraints (e.g., foreign keys, unique). */ export declare enum DeferMode { /** The constraint is checked immediately by default, but can be deferred within a transaction. */ INITIALLY_IMMEDIATE = "immediate", /** The constraint is deferred until the transaction is committed. */ INITIALLY_DEFERRED = "deferred" } /** With `absolute` the prefix is set at the root of the entity (regardless of the nesting level) */ export type EmbeddedPrefixMode = 'absolute' | 'relative';