metal-orm 1.0.15 → 1.0.16

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 (43) hide show
  1. package/README.md +34 -27
  2. package/dist/decorators/index.cjs +339 -153
  3. package/dist/decorators/index.cjs.map +1 -1
  4. package/dist/decorators/index.d.cts +1 -5
  5. package/dist/decorators/index.d.ts +1 -5
  6. package/dist/decorators/index.js +339 -153
  7. package/dist/decorators/index.js.map +1 -1
  8. package/dist/index.cjs +838 -484
  9. package/dist/index.cjs.map +1 -1
  10. package/dist/index.d.cts +17 -14
  11. package/dist/index.d.ts +17 -14
  12. package/dist/index.js +833 -483
  13. package/dist/index.js.map +1 -1
  14. package/dist/{select-Bkv8g8u_.d.cts → select-BKZrMRCQ.d.cts} +363 -28
  15. package/dist/{select-Bkv8g8u_.d.ts → select-BKZrMRCQ.d.ts} +363 -28
  16. package/package.json +1 -1
  17. package/src/codegen/naming-strategy.ts +64 -0
  18. package/src/codegen/typescript.ts +48 -53
  19. package/src/core/ddl/schema-generator.ts +3 -2
  20. package/src/core/ddl/schema-introspect.ts +1 -1
  21. package/src/core/dialect/abstract.ts +28 -0
  22. package/src/decorators/column.ts +13 -4
  23. package/src/index.ts +8 -1
  24. package/src/orm/entity-context.ts +30 -0
  25. package/src/orm/entity-meta.ts +2 -2
  26. package/src/orm/entity-metadata.ts +1 -6
  27. package/src/orm/entity.ts +88 -88
  28. package/src/orm/execute.ts +42 -25
  29. package/src/orm/execution-context.ts +12 -0
  30. package/src/orm/hydration-context.ts +14 -0
  31. package/src/orm/identity-map.ts +4 -0
  32. package/src/orm/interceptor-pipeline.ts +29 -0
  33. package/src/orm/lazy-batch.ts +6 -6
  34. package/src/orm/orm-session.ts +234 -0
  35. package/src/orm/orm.ts +58 -0
  36. package/src/orm/relation-change-processor.ts +5 -1
  37. package/src/orm/relations/belongs-to.ts +45 -44
  38. package/src/orm/relations/has-many.ts +44 -43
  39. package/src/orm/relations/has-one.ts +140 -139
  40. package/src/orm/relations/many-to-many.ts +46 -45
  41. package/src/orm/unit-of-work.ts +6 -1
  42. package/src/query-builder/select.ts +509 -3
  43. package/src/orm/orm-context.ts +0 -159
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { O as OperandNode, C as ColumnRef, a as ColumnNode, B as BinaryExpressionNode, E as ExpressionNode, L as LogicalExpressionNode, N as NullExpressionNode, b as LiteralNode, I as InExpressionNode, c as BetweenExpressionNode, J as JsonPathNode, d as CaseExpressionNode, S as SelectQueryNode, e as ExistsExpressionNode, W as WindowFunctionNode, f as OrderDirection, F as FunctionNode, g as ScalarSubqueryNode, h as ColumnDef, T as TableRef, i as TableDef, j as InsertQueryNode, k as InsertCompiler, l as CompiledQuery, D as Dialect, m as DialectKey, U as UpdateQueryNode, n as UpdateCompiler, o as DeleteQueryNode, p as DeleteCompiler, q as CompilerContext, r as ForeignKeyReference, s as IndexColumn, t as IndexDef, u as DbExecutor, H as HydrationPlan, R as RelationMap, v as OrmContext, w as Entity, x as HasManyRelation, y as HasOneRelation, z as BelongsToRelation, A as BelongsToManyRelation, G as HasManyCollection, K as BelongsToReference, M as ManyToManyCollection, P as SelectQueryBuilder } from './select-Bkv8g8u_.cjs';
2
- export { a4 as CascadeMode, Q as CheckConstraint, aa as ColumnToTs, Z as ColumnType, a0 as DefaultValue, au as DomainEventHandler, ao as EntityStatus, as as HasDomainEvents, ac as HasOneReference, am as HydrationMetadata, ak as HydrationPivotPlan, al as HydrationRelationPlan, ab as InferRow, av as OrmContextOptions, at as OrmInterceptor, aw as QueryLogEntry, ax as QueryLogger, ap as QueryResult, $ as RawDefaultValue, _ as ReferentialAction, ar as RelationChange, a5 as RelationDef, aq as RelationKey, a2 as RelationKinds, a3 as RelationType, az as SimpleQueryRunner, X as TableHooks, V as TableOptions, an as addDomainEvent, a8 as belongsTo, a9 as belongsToMany, a1 as col, ad as createColumn, aA as createExecutorFromQueryRunner, ae as createLiteral, Y as defineTable, a6 as hasMany, a7 as hasOne, ah as isCaseExpressionNode, aj as isExpressionSelectionNode, ag as isFunctionNode, af as isOperandNode, ai as isWindowFunctionNode, ay as rowsToQueryResult } from './select-Bkv8g8u_.cjs';
1
+ import { O as OperandNode, C as ColumnRef, a as ColumnNode, B as BinaryExpressionNode, E as ExpressionNode, L as LogicalExpressionNode, N as NullExpressionNode, b as LiteralNode, I as InExpressionNode, c as BetweenExpressionNode, J as JsonPathNode, d as CaseExpressionNode, S as SelectQueryNode, e as ExistsExpressionNode, W as WindowFunctionNode, f as OrderDirection, F as FunctionNode, g as ScalarSubqueryNode, h as ColumnDef, T as TableRef, i as TableDef, j as InsertQueryNode, k as InsertCompiler, l as CompiledQuery, D as Dialect, m as DialectKey, U as UpdateQueryNode, n as UpdateCompiler, o as DeleteQueryNode, p as DeleteCompiler, q as CompilerContext, r as ForeignKeyReference, s as IndexColumn, t as IndexDef, u as DbExecutor, H as HydrationPlan, v as NamingStrategy, R as RelationMap, w as EntityContext, x as Entity, y as HasManyRelation, z as HasOneRelation, A as BelongsToRelation, G as BelongsToManyRelation, K as HasManyCollection, M as BelongsToReference, P as ManyToManyCollection, Q as OrmSession, V as SelectQueryBuilder, X as ExecutionContext, Y as HydrationContext } from './select-BKZrMRCQ.cjs';
2
+ export { a8 as CascadeMode, Z as CheckConstraint, ae as ColumnToTs, a1 as ColumnType, au as DbExecutorFactory, a4 as DefaultValue, ay as DomainEventBus, ax as DomainEventHandler, aA as EntityStatus, av as ExternalTransaction, aF as HasDomainEvents, ag as HasOneReference, aq as HydrationMetadata, ao as HydrationPivotPlan, ap as HydrationRelationPlan, af as InferRow, aw as Orm, ar as OrmInterceptor, at as OrmOptions, as as OrmSessionOptions, aG as QueryLogEntry, aH as QueryLogger, aJ as QueryResult, a3 as RawDefaultValue, a2 as ReferentialAction, aD as RelationChange, aE as RelationChangeEntry, a9 as RelationDef, aC as RelationKey, a6 as RelationKinds, a7 as RelationType, aL as SimpleQueryRunner, $ as TableHooks, _ as TableOptions, aB as TrackedEntity, az as addDomainEvent, ac as belongsTo, ad as belongsToMany, a5 as col, ah as createColumn, aM as createExecutorFromQueryRunner, ai as createLiteral, aI as createQueryLoggingExecutor, a0 as defineTable, aa as hasMany, ab as hasOne, al as isCaseExpressionNode, an as isExpressionSelectionNode, ak as isFunctionNode, aj as isOperandNode, am as isWindowFunctionNode, aK as rowsToQueryResult } from './select-BKZrMRCQ.cjs';
3
3
 
4
4
  /**
5
5
  * Converts a primitive or existing operand into an operand node
@@ -1041,6 +1041,8 @@ declare const hydrateRows: (rows: Record<string, any>[], plan?: HydrationPlan) =
1041
1041
  * Generates TypeScript code from query AST nodes
1042
1042
  */
1043
1043
  declare class TypeScriptGenerator implements ExpressionVisitor<string>, OperandVisitor<string> {
1044
+ private namingStrategy;
1045
+ constructor(namingStrategy?: NamingStrategy);
1044
1046
  /**
1045
1047
  * Generates TypeScript code from a query AST
1046
1048
  * @param ast - Query AST to generate code from
@@ -1170,17 +1172,17 @@ declare class TypeScriptGenerator implements ExpressionVisitor<string>, OperandV
1170
1172
  private mapOp;
1171
1173
  }
1172
1174
 
1173
- declare const createEntityProxy: <TTable extends TableDef, TLazy extends keyof RelationMap<TTable> = keyof RelationMap<TTable>>(ctx: OrmContext, table: TTable, row: Record<string, any>, lazyRelations?: TLazy[]) => Entity<TTable>;
1174
- declare const createEntityFromRow: <TTable extends TableDef>(ctx: OrmContext, table: TTable, row: Record<string, any>, lazyRelations?: (keyof RelationMap<TTable>)[]) => Entity<TTable>;
1175
+ declare const createEntityProxy: <TTable extends TableDef, TLazy extends keyof RelationMap<TTable> = keyof RelationMap<TTable>>(ctx: EntityContext, table: TTable, row: Record<string, any>, lazyRelations?: TLazy[]) => Entity<TTable>;
1176
+ declare const createEntityFromRow: <TTable extends TableDef>(ctx: EntityContext, table: TTable, row: Record<string, any>, lazyRelations?: (keyof RelationMap<TTable>)[]) => Entity<TTable>;
1175
1177
 
1176
1178
  type Rows$3 = Record<string, any>[];
1177
- declare const loadHasManyRelation: (ctx: OrmContext, rootTable: TableDef, _relationName: string, relation: HasManyRelation) => Promise<Map<string, Rows$3>>;
1178
- declare const loadHasOneRelation: (ctx: OrmContext, rootTable: TableDef, _relationName: string, relation: HasOneRelation) => Promise<Map<string, Record<string, any>>>;
1179
- declare const loadBelongsToRelation: (ctx: OrmContext, rootTable: TableDef, _relationName: string, relation: BelongsToRelation) => Promise<Map<string, Record<string, any>>>;
1180
- declare const loadBelongsToManyRelation: (ctx: OrmContext, rootTable: TableDef, _relationName: string, relation: BelongsToManyRelation) => Promise<Map<string, Rows$3>>;
1179
+ declare const loadHasManyRelation: (ctx: EntityContext, rootTable: TableDef, _relationName: string, relation: HasManyRelation) => Promise<Map<string, Rows$3>>;
1180
+ declare const loadHasOneRelation: (ctx: EntityContext, rootTable: TableDef, _relationName: string, relation: HasOneRelation) => Promise<Map<string, Record<string, any>>>;
1181
+ declare const loadBelongsToRelation: (ctx: EntityContext, rootTable: TableDef, _relationName: string, relation: BelongsToRelation) => Promise<Map<string, Record<string, any>>>;
1182
+ declare const loadBelongsToManyRelation: (ctx: EntityContext, rootTable: TableDef, _relationName: string, relation: BelongsToManyRelation) => Promise<Map<string, Rows$3>>;
1181
1183
 
1182
1184
  interface EntityMeta<TTable extends TableDef> {
1183
- ctx: OrmContext;
1185
+ ctx: EntityContext;
1184
1186
  table: TTable;
1185
1187
  lazyRelations: (keyof RelationMap<TTable>)[];
1186
1188
  relationCache: Map<string, Promise<any>>;
@@ -1203,7 +1205,7 @@ declare class DefaultHasManyCollection<TChild> implements HasManyCollection<TChi
1203
1205
  private items;
1204
1206
  private readonly added;
1205
1207
  private readonly removed;
1206
- constructor(ctx: OrmContext, meta: EntityMeta<any>, root: any, relationName: string, relation: HasManyRelation, rootTable: TableDef, loader: () => Promise<Map<string, Rows$2>>, createEntity: (row: Record<string, any>) => TChild, localKey: string);
1208
+ constructor(ctx: EntityContext, meta: EntityMeta<any>, root: any, relationName: string, relation: HasManyRelation, rootTable: TableDef, loader: () => Promise<Map<string, Rows$2>>, createEntity: (row: Record<string, any>) => TChild, localKey: string);
1207
1209
  load(): Promise<TChild[]>;
1208
1210
  getItems(): TChild[];
1209
1211
  add(data: Partial<TChild>): TChild;
@@ -1228,7 +1230,7 @@ declare class DefaultBelongsToReference<TParent> implements BelongsToReference<T
1228
1230
  private readonly targetKey;
1229
1231
  private loaded;
1230
1232
  private current;
1231
- constructor(ctx: OrmContext, meta: EntityMeta<any>, root: any, relationName: string, relation: BelongsToRelation, rootTable: TableDef, loader: () => Promise<Map<string, Rows$1>>, createEntity: (row: Record<string, any>) => TParent, targetKey: string);
1233
+ constructor(ctx: EntityContext, meta: EntityMeta<any>, root: any, relationName: string, relation: BelongsToRelation, rootTable: TableDef, loader: () => Promise<Map<string, Rows$1>>, createEntity: (row: Record<string, any>) => TParent, targetKey: string);
1232
1234
  load(): Promise<TParent | null>;
1233
1235
  get(): TParent | null;
1234
1236
  set(data: Partial<TParent> | TParent | null): TParent | null;
@@ -1250,7 +1252,7 @@ declare class DefaultManyToManyCollection<TTarget> implements ManyToManyCollecti
1250
1252
  private readonly localKey;
1251
1253
  private loaded;
1252
1254
  private items;
1253
- constructor(ctx: OrmContext, meta: EntityMeta<any>, root: any, relationName: string, relation: BelongsToManyRelation, rootTable: TableDef, loader: () => Promise<Map<string, Rows>>, createEntity: (row: Record<string, any>) => TTarget, localKey: string);
1255
+ constructor(ctx: EntityContext, meta: EntityMeta<any>, root: any, relationName: string, relation: BelongsToManyRelation, rootTable: TableDef, loader: () => Promise<Map<string, Rows>>, createEntity: (row: Record<string, any>) => TTarget, localKey: string);
1254
1256
  load(): Promise<TTarget[]>;
1255
1257
  getItems(): TTarget[];
1256
1258
  attach(target: TTarget | number | string): void;
@@ -1264,7 +1266,8 @@ declare class DefaultManyToManyCollection<TTarget> implements ManyToManyCollecti
1264
1266
  toJSON(): TTarget[];
1265
1267
  }
1266
1268
 
1267
- declare function executeHydrated<TTable extends TableDef>(ctx: OrmContext, qb: SelectQueryBuilder<any, TTable>): Promise<Entity<TTable>[]>;
1269
+ declare function executeHydrated<TTable extends TableDef>(session: OrmSession, qb: SelectQueryBuilder<any, TTable>): Promise<Entity<TTable>[]>;
1270
+ declare function executeHydratedWithContexts<TTable extends TableDef>(_execCtx: ExecutionContext, hydCtx: HydrationContext, qb: SelectQueryBuilder<any, TTable>): Promise<Entity<TTable>[]>;
1268
1271
 
1269
1272
  interface PostgresClientLike {
1270
1273
  query(text: string, params?: unknown[]): Promise<{
@@ -1300,4 +1303,4 @@ interface MssqlClientLike {
1300
1303
  }
1301
1304
  declare function createMssqlExecutor(client: MssqlClientLike): DbExecutor;
1302
1305
 
1303
- export { AsyncLocalStorage, BelongsToManyRelation, BelongsToReference, BelongsToRelation, BetweenExpressionNode, BinaryExpressionNode, CaseExpressionNode, ColumnDef, type ColumnDiff, ColumnNode, ColumnRef, type DatabaseCheck, type DatabaseColumn, type DatabaseIndex, type DatabaseSchema, type DatabaseTable, DbExecutor, DefaultBelongsToReference, DefaultHasManyCollection, DefaultManyToManyCollection, DeleteQueryBuilder, type DialectName, Entity, ExistsExpressionNode, ExpressionNode, type ExpressionVisitor, ForeignKeyReference, FunctionNode, HasManyCollection, HasManyRelation, HasOneRelation, HydrationPlan, InExpressionNode, IndexColumn, IndexDef, InsertQueryBuilder, type IntrospectOptions, JsonPathNode, LiteralNode, LogicalExpressionNode, ManyToManyCollection, type MssqlClientLike, MySqlDialect, type MysqlClientLike, NullExpressionNode, OperandNode, type OperandVisitor, OrmContext, type PostgresClientLike, PostgresDialect, RelationMap, type RenderColumnOptions, ScalarSubqueryNode, type SchemaChange, type SchemaChangeKind, type SchemaDiffOptions, type SchemaGenerateResult, type SchemaIntrospector, type SchemaPlan, SelectQueryBuilder, SqlServerDialect, type SqliteClientLike, SqliteDialect, type SynchronizeOptions, TableDef, TableRef, TypeScriptGenerator, UpdateQueryBuilder, WindowFunctionNode, abs, acos, and, ascii, asin, atan, atan2, avg, between, caseWhen, ceil, ceiling, char, charLength, clearExpressionDispatchers, clearOperandDispatchers, columnOperand, concat, concatWs, cos, cot, count, createEntityFromRow, createEntityProxy, createMssqlExecutor, createMysqlExecutor, createPostgresExecutor, createSqliteExecutor, currentDate, currentTime, dateAdd, dateDiff, dateFormat, dateSub, dateTrunc, day, dayOfWeek, degrees, denseRank, diffSchema, endOfMonth, eq, executeHydrated, exists, exp, extract, firstValue, floor, fromUnixTime, generateCreateTableSql, generateSchemaSql, getSchemaIntrospector, gt, gte, hydrateRows, inList, instr, introspectSchema, isNotNull, isNull, jsonPath, lag, lastValue, lead, left, length, like, ln, loadBelongsToManyRelation, loadBelongsToRelation, loadHasManyRelation, loadHasOneRelation, locate, log, log10, logBase, lower, lpad, lt, lte, ltrim, mod, month, neq, notBetween, notExists, notInList, notLike, now, ntile, or, pi, position, pow, power, radians, rand, random, rank, registerExpressionDispatcher, registerOperandDispatcher, registerSchemaIntrospector, renderColumnDefinition, repeat, replace, right, round, rowNumber, rpad, rtrim, sign, sin, space, sqrt, substr, sum, synchronizeSchema, tan, toColumnRef, toTableRef, trim, trunc, truncate, unixTimestamp, upper, utcNow, valueToOperand, visitExpression, visitOperand, weekOfYear, windowFunction, year };
1306
+ export { AsyncLocalStorage, BelongsToManyRelation, BelongsToReference, BelongsToRelation, BetweenExpressionNode, BinaryExpressionNode, CaseExpressionNode, ColumnDef, type ColumnDiff, ColumnNode, ColumnRef, type DatabaseCheck, type DatabaseColumn, type DatabaseIndex, type DatabaseSchema, type DatabaseTable, DbExecutor, DefaultBelongsToReference, DefaultHasManyCollection, DefaultManyToManyCollection, DeleteQueryBuilder, type DialectName, Entity, EntityContext, ExecutionContext, ExistsExpressionNode, ExpressionNode, type ExpressionVisitor, ForeignKeyReference, FunctionNode, HasManyCollection, HasManyRelation, HasOneRelation, HydrationContext, HydrationPlan, InExpressionNode, IndexColumn, IndexDef, InsertQueryBuilder, type IntrospectOptions, JsonPathNode, LiteralNode, LogicalExpressionNode, ManyToManyCollection, type MssqlClientLike, MySqlDialect, type MysqlClientLike, NullExpressionNode, OperandNode, type OperandVisitor, OrmSession, type PostgresClientLike, PostgresDialect, RelationMap, type RenderColumnOptions, ScalarSubqueryNode, type SchemaChange, type SchemaChangeKind, type SchemaDiffOptions, type SchemaGenerateResult, type SchemaIntrospector, type SchemaPlan, SelectQueryBuilder, SqlServerDialect, type SqliteClientLike, SqliteDialect, type SynchronizeOptions, TableDef, TableRef, TypeScriptGenerator, UpdateQueryBuilder, WindowFunctionNode, abs, acos, and, ascii, asin, atan, atan2, avg, between, caseWhen, ceil, ceiling, char, charLength, clearExpressionDispatchers, clearOperandDispatchers, columnOperand, concat, concatWs, cos, cot, count, createEntityFromRow, createEntityProxy, createMssqlExecutor, createMysqlExecutor, createPostgresExecutor, createSqliteExecutor, currentDate, currentTime, dateAdd, dateDiff, dateFormat, dateSub, dateTrunc, day, dayOfWeek, degrees, denseRank, diffSchema, endOfMonth, eq, executeHydrated, executeHydratedWithContexts, exists, exp, extract, firstValue, floor, fromUnixTime, generateCreateTableSql, generateSchemaSql, getSchemaIntrospector, gt, gte, hydrateRows, inList, instr, introspectSchema, isNotNull, isNull, jsonPath, lag, lastValue, lead, left, length, like, ln, loadBelongsToManyRelation, loadBelongsToRelation, loadHasManyRelation, loadHasOneRelation, locate, log, log10, logBase, lower, lpad, lt, lte, ltrim, mod, month, neq, notBetween, notExists, notInList, notLike, now, ntile, or, pi, position, pow, power, radians, rand, random, rank, registerExpressionDispatcher, registerOperandDispatcher, registerSchemaIntrospector, renderColumnDefinition, repeat, replace, right, round, rowNumber, rpad, rtrim, sign, sin, space, sqrt, substr, sum, synchronizeSchema, tan, toColumnRef, toTableRef, trim, trunc, truncate, unixTimestamp, upper, utcNow, valueToOperand, visitExpression, visitOperand, weekOfYear, windowFunction, year };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { O as OperandNode, C as ColumnRef, a as ColumnNode, B as BinaryExpressionNode, E as ExpressionNode, L as LogicalExpressionNode, N as NullExpressionNode, b as LiteralNode, I as InExpressionNode, c as BetweenExpressionNode, J as JsonPathNode, d as CaseExpressionNode, S as SelectQueryNode, e as ExistsExpressionNode, W as WindowFunctionNode, f as OrderDirection, F as FunctionNode, g as ScalarSubqueryNode, h as ColumnDef, T as TableRef, i as TableDef, j as InsertQueryNode, k as InsertCompiler, l as CompiledQuery, D as Dialect, m as DialectKey, U as UpdateQueryNode, n as UpdateCompiler, o as DeleteQueryNode, p as DeleteCompiler, q as CompilerContext, r as ForeignKeyReference, s as IndexColumn, t as IndexDef, u as DbExecutor, H as HydrationPlan, R as RelationMap, v as OrmContext, w as Entity, x as HasManyRelation, y as HasOneRelation, z as BelongsToRelation, A as BelongsToManyRelation, G as HasManyCollection, K as BelongsToReference, M as ManyToManyCollection, P as SelectQueryBuilder } from './select-Bkv8g8u_.js';
2
- export { a4 as CascadeMode, Q as CheckConstraint, aa as ColumnToTs, Z as ColumnType, a0 as DefaultValue, au as DomainEventHandler, ao as EntityStatus, as as HasDomainEvents, ac as HasOneReference, am as HydrationMetadata, ak as HydrationPivotPlan, al as HydrationRelationPlan, ab as InferRow, av as OrmContextOptions, at as OrmInterceptor, aw as QueryLogEntry, ax as QueryLogger, ap as QueryResult, $ as RawDefaultValue, _ as ReferentialAction, ar as RelationChange, a5 as RelationDef, aq as RelationKey, a2 as RelationKinds, a3 as RelationType, az as SimpleQueryRunner, X as TableHooks, V as TableOptions, an as addDomainEvent, a8 as belongsTo, a9 as belongsToMany, a1 as col, ad as createColumn, aA as createExecutorFromQueryRunner, ae as createLiteral, Y as defineTable, a6 as hasMany, a7 as hasOne, ah as isCaseExpressionNode, aj as isExpressionSelectionNode, ag as isFunctionNode, af as isOperandNode, ai as isWindowFunctionNode, ay as rowsToQueryResult } from './select-Bkv8g8u_.js';
1
+ import { O as OperandNode, C as ColumnRef, a as ColumnNode, B as BinaryExpressionNode, E as ExpressionNode, L as LogicalExpressionNode, N as NullExpressionNode, b as LiteralNode, I as InExpressionNode, c as BetweenExpressionNode, J as JsonPathNode, d as CaseExpressionNode, S as SelectQueryNode, e as ExistsExpressionNode, W as WindowFunctionNode, f as OrderDirection, F as FunctionNode, g as ScalarSubqueryNode, h as ColumnDef, T as TableRef, i as TableDef, j as InsertQueryNode, k as InsertCompiler, l as CompiledQuery, D as Dialect, m as DialectKey, U as UpdateQueryNode, n as UpdateCompiler, o as DeleteQueryNode, p as DeleteCompiler, q as CompilerContext, r as ForeignKeyReference, s as IndexColumn, t as IndexDef, u as DbExecutor, H as HydrationPlan, v as NamingStrategy, R as RelationMap, w as EntityContext, x as Entity, y as HasManyRelation, z as HasOneRelation, A as BelongsToRelation, G as BelongsToManyRelation, K as HasManyCollection, M as BelongsToReference, P as ManyToManyCollection, Q as OrmSession, V as SelectQueryBuilder, X as ExecutionContext, Y as HydrationContext } from './select-BKZrMRCQ.js';
2
+ export { a8 as CascadeMode, Z as CheckConstraint, ae as ColumnToTs, a1 as ColumnType, au as DbExecutorFactory, a4 as DefaultValue, ay as DomainEventBus, ax as DomainEventHandler, aA as EntityStatus, av as ExternalTransaction, aF as HasDomainEvents, ag as HasOneReference, aq as HydrationMetadata, ao as HydrationPivotPlan, ap as HydrationRelationPlan, af as InferRow, aw as Orm, ar as OrmInterceptor, at as OrmOptions, as as OrmSessionOptions, aG as QueryLogEntry, aH as QueryLogger, aJ as QueryResult, a3 as RawDefaultValue, a2 as ReferentialAction, aD as RelationChange, aE as RelationChangeEntry, a9 as RelationDef, aC as RelationKey, a6 as RelationKinds, a7 as RelationType, aL as SimpleQueryRunner, $ as TableHooks, _ as TableOptions, aB as TrackedEntity, az as addDomainEvent, ac as belongsTo, ad as belongsToMany, a5 as col, ah as createColumn, aM as createExecutorFromQueryRunner, ai as createLiteral, aI as createQueryLoggingExecutor, a0 as defineTable, aa as hasMany, ab as hasOne, al as isCaseExpressionNode, an as isExpressionSelectionNode, ak as isFunctionNode, aj as isOperandNode, am as isWindowFunctionNode, aK as rowsToQueryResult } from './select-BKZrMRCQ.js';
3
3
 
4
4
  /**
5
5
  * Converts a primitive or existing operand into an operand node
@@ -1041,6 +1041,8 @@ declare const hydrateRows: (rows: Record<string, any>[], plan?: HydrationPlan) =
1041
1041
  * Generates TypeScript code from query AST nodes
1042
1042
  */
1043
1043
  declare class TypeScriptGenerator implements ExpressionVisitor<string>, OperandVisitor<string> {
1044
+ private namingStrategy;
1045
+ constructor(namingStrategy?: NamingStrategy);
1044
1046
  /**
1045
1047
  * Generates TypeScript code from a query AST
1046
1048
  * @param ast - Query AST to generate code from
@@ -1170,17 +1172,17 @@ declare class TypeScriptGenerator implements ExpressionVisitor<string>, OperandV
1170
1172
  private mapOp;
1171
1173
  }
1172
1174
 
1173
- declare const createEntityProxy: <TTable extends TableDef, TLazy extends keyof RelationMap<TTable> = keyof RelationMap<TTable>>(ctx: OrmContext, table: TTable, row: Record<string, any>, lazyRelations?: TLazy[]) => Entity<TTable>;
1174
- declare const createEntityFromRow: <TTable extends TableDef>(ctx: OrmContext, table: TTable, row: Record<string, any>, lazyRelations?: (keyof RelationMap<TTable>)[]) => Entity<TTable>;
1175
+ declare const createEntityProxy: <TTable extends TableDef, TLazy extends keyof RelationMap<TTable> = keyof RelationMap<TTable>>(ctx: EntityContext, table: TTable, row: Record<string, any>, lazyRelations?: TLazy[]) => Entity<TTable>;
1176
+ declare const createEntityFromRow: <TTable extends TableDef>(ctx: EntityContext, table: TTable, row: Record<string, any>, lazyRelations?: (keyof RelationMap<TTable>)[]) => Entity<TTable>;
1175
1177
 
1176
1178
  type Rows$3 = Record<string, any>[];
1177
- declare const loadHasManyRelation: (ctx: OrmContext, rootTable: TableDef, _relationName: string, relation: HasManyRelation) => Promise<Map<string, Rows$3>>;
1178
- declare const loadHasOneRelation: (ctx: OrmContext, rootTable: TableDef, _relationName: string, relation: HasOneRelation) => Promise<Map<string, Record<string, any>>>;
1179
- declare const loadBelongsToRelation: (ctx: OrmContext, rootTable: TableDef, _relationName: string, relation: BelongsToRelation) => Promise<Map<string, Record<string, any>>>;
1180
- declare const loadBelongsToManyRelation: (ctx: OrmContext, rootTable: TableDef, _relationName: string, relation: BelongsToManyRelation) => Promise<Map<string, Rows$3>>;
1179
+ declare const loadHasManyRelation: (ctx: EntityContext, rootTable: TableDef, _relationName: string, relation: HasManyRelation) => Promise<Map<string, Rows$3>>;
1180
+ declare const loadHasOneRelation: (ctx: EntityContext, rootTable: TableDef, _relationName: string, relation: HasOneRelation) => Promise<Map<string, Record<string, any>>>;
1181
+ declare const loadBelongsToRelation: (ctx: EntityContext, rootTable: TableDef, _relationName: string, relation: BelongsToRelation) => Promise<Map<string, Record<string, any>>>;
1182
+ declare const loadBelongsToManyRelation: (ctx: EntityContext, rootTable: TableDef, _relationName: string, relation: BelongsToManyRelation) => Promise<Map<string, Rows$3>>;
1181
1183
 
1182
1184
  interface EntityMeta<TTable extends TableDef> {
1183
- ctx: OrmContext;
1185
+ ctx: EntityContext;
1184
1186
  table: TTable;
1185
1187
  lazyRelations: (keyof RelationMap<TTable>)[];
1186
1188
  relationCache: Map<string, Promise<any>>;
@@ -1203,7 +1205,7 @@ declare class DefaultHasManyCollection<TChild> implements HasManyCollection<TChi
1203
1205
  private items;
1204
1206
  private readonly added;
1205
1207
  private readonly removed;
1206
- constructor(ctx: OrmContext, meta: EntityMeta<any>, root: any, relationName: string, relation: HasManyRelation, rootTable: TableDef, loader: () => Promise<Map<string, Rows$2>>, createEntity: (row: Record<string, any>) => TChild, localKey: string);
1208
+ constructor(ctx: EntityContext, meta: EntityMeta<any>, root: any, relationName: string, relation: HasManyRelation, rootTable: TableDef, loader: () => Promise<Map<string, Rows$2>>, createEntity: (row: Record<string, any>) => TChild, localKey: string);
1207
1209
  load(): Promise<TChild[]>;
1208
1210
  getItems(): TChild[];
1209
1211
  add(data: Partial<TChild>): TChild;
@@ -1228,7 +1230,7 @@ declare class DefaultBelongsToReference<TParent> implements BelongsToReference<T
1228
1230
  private readonly targetKey;
1229
1231
  private loaded;
1230
1232
  private current;
1231
- constructor(ctx: OrmContext, meta: EntityMeta<any>, root: any, relationName: string, relation: BelongsToRelation, rootTable: TableDef, loader: () => Promise<Map<string, Rows$1>>, createEntity: (row: Record<string, any>) => TParent, targetKey: string);
1233
+ constructor(ctx: EntityContext, meta: EntityMeta<any>, root: any, relationName: string, relation: BelongsToRelation, rootTable: TableDef, loader: () => Promise<Map<string, Rows$1>>, createEntity: (row: Record<string, any>) => TParent, targetKey: string);
1232
1234
  load(): Promise<TParent | null>;
1233
1235
  get(): TParent | null;
1234
1236
  set(data: Partial<TParent> | TParent | null): TParent | null;
@@ -1250,7 +1252,7 @@ declare class DefaultManyToManyCollection<TTarget> implements ManyToManyCollecti
1250
1252
  private readonly localKey;
1251
1253
  private loaded;
1252
1254
  private items;
1253
- constructor(ctx: OrmContext, meta: EntityMeta<any>, root: any, relationName: string, relation: BelongsToManyRelation, rootTable: TableDef, loader: () => Promise<Map<string, Rows>>, createEntity: (row: Record<string, any>) => TTarget, localKey: string);
1255
+ constructor(ctx: EntityContext, meta: EntityMeta<any>, root: any, relationName: string, relation: BelongsToManyRelation, rootTable: TableDef, loader: () => Promise<Map<string, Rows>>, createEntity: (row: Record<string, any>) => TTarget, localKey: string);
1254
1256
  load(): Promise<TTarget[]>;
1255
1257
  getItems(): TTarget[];
1256
1258
  attach(target: TTarget | number | string): void;
@@ -1264,7 +1266,8 @@ declare class DefaultManyToManyCollection<TTarget> implements ManyToManyCollecti
1264
1266
  toJSON(): TTarget[];
1265
1267
  }
1266
1268
 
1267
- declare function executeHydrated<TTable extends TableDef>(ctx: OrmContext, qb: SelectQueryBuilder<any, TTable>): Promise<Entity<TTable>[]>;
1269
+ declare function executeHydrated<TTable extends TableDef>(session: OrmSession, qb: SelectQueryBuilder<any, TTable>): Promise<Entity<TTable>[]>;
1270
+ declare function executeHydratedWithContexts<TTable extends TableDef>(_execCtx: ExecutionContext, hydCtx: HydrationContext, qb: SelectQueryBuilder<any, TTable>): Promise<Entity<TTable>[]>;
1268
1271
 
1269
1272
  interface PostgresClientLike {
1270
1273
  query(text: string, params?: unknown[]): Promise<{
@@ -1300,4 +1303,4 @@ interface MssqlClientLike {
1300
1303
  }
1301
1304
  declare function createMssqlExecutor(client: MssqlClientLike): DbExecutor;
1302
1305
 
1303
- export { AsyncLocalStorage, BelongsToManyRelation, BelongsToReference, BelongsToRelation, BetweenExpressionNode, BinaryExpressionNode, CaseExpressionNode, ColumnDef, type ColumnDiff, ColumnNode, ColumnRef, type DatabaseCheck, type DatabaseColumn, type DatabaseIndex, type DatabaseSchema, type DatabaseTable, DbExecutor, DefaultBelongsToReference, DefaultHasManyCollection, DefaultManyToManyCollection, DeleteQueryBuilder, type DialectName, Entity, ExistsExpressionNode, ExpressionNode, type ExpressionVisitor, ForeignKeyReference, FunctionNode, HasManyCollection, HasManyRelation, HasOneRelation, HydrationPlan, InExpressionNode, IndexColumn, IndexDef, InsertQueryBuilder, type IntrospectOptions, JsonPathNode, LiteralNode, LogicalExpressionNode, ManyToManyCollection, type MssqlClientLike, MySqlDialect, type MysqlClientLike, NullExpressionNode, OperandNode, type OperandVisitor, OrmContext, type PostgresClientLike, PostgresDialect, RelationMap, type RenderColumnOptions, ScalarSubqueryNode, type SchemaChange, type SchemaChangeKind, type SchemaDiffOptions, type SchemaGenerateResult, type SchemaIntrospector, type SchemaPlan, SelectQueryBuilder, SqlServerDialect, type SqliteClientLike, SqliteDialect, type SynchronizeOptions, TableDef, TableRef, TypeScriptGenerator, UpdateQueryBuilder, WindowFunctionNode, abs, acos, and, ascii, asin, atan, atan2, avg, between, caseWhen, ceil, ceiling, char, charLength, clearExpressionDispatchers, clearOperandDispatchers, columnOperand, concat, concatWs, cos, cot, count, createEntityFromRow, createEntityProxy, createMssqlExecutor, createMysqlExecutor, createPostgresExecutor, createSqliteExecutor, currentDate, currentTime, dateAdd, dateDiff, dateFormat, dateSub, dateTrunc, day, dayOfWeek, degrees, denseRank, diffSchema, endOfMonth, eq, executeHydrated, exists, exp, extract, firstValue, floor, fromUnixTime, generateCreateTableSql, generateSchemaSql, getSchemaIntrospector, gt, gte, hydrateRows, inList, instr, introspectSchema, isNotNull, isNull, jsonPath, lag, lastValue, lead, left, length, like, ln, loadBelongsToManyRelation, loadBelongsToRelation, loadHasManyRelation, loadHasOneRelation, locate, log, log10, logBase, lower, lpad, lt, lte, ltrim, mod, month, neq, notBetween, notExists, notInList, notLike, now, ntile, or, pi, position, pow, power, radians, rand, random, rank, registerExpressionDispatcher, registerOperandDispatcher, registerSchemaIntrospector, renderColumnDefinition, repeat, replace, right, round, rowNumber, rpad, rtrim, sign, sin, space, sqrt, substr, sum, synchronizeSchema, tan, toColumnRef, toTableRef, trim, trunc, truncate, unixTimestamp, upper, utcNow, valueToOperand, visitExpression, visitOperand, weekOfYear, windowFunction, year };
1306
+ export { AsyncLocalStorage, BelongsToManyRelation, BelongsToReference, BelongsToRelation, BetweenExpressionNode, BinaryExpressionNode, CaseExpressionNode, ColumnDef, type ColumnDiff, ColumnNode, ColumnRef, type DatabaseCheck, type DatabaseColumn, type DatabaseIndex, type DatabaseSchema, type DatabaseTable, DbExecutor, DefaultBelongsToReference, DefaultHasManyCollection, DefaultManyToManyCollection, DeleteQueryBuilder, type DialectName, Entity, EntityContext, ExecutionContext, ExistsExpressionNode, ExpressionNode, type ExpressionVisitor, ForeignKeyReference, FunctionNode, HasManyCollection, HasManyRelation, HasOneRelation, HydrationContext, HydrationPlan, InExpressionNode, IndexColumn, IndexDef, InsertQueryBuilder, type IntrospectOptions, JsonPathNode, LiteralNode, LogicalExpressionNode, ManyToManyCollection, type MssqlClientLike, MySqlDialect, type MysqlClientLike, NullExpressionNode, OperandNode, type OperandVisitor, OrmSession, type PostgresClientLike, PostgresDialect, RelationMap, type RenderColumnOptions, ScalarSubqueryNode, type SchemaChange, type SchemaChangeKind, type SchemaDiffOptions, type SchemaGenerateResult, type SchemaIntrospector, type SchemaPlan, SelectQueryBuilder, SqlServerDialect, type SqliteClientLike, SqliteDialect, type SynchronizeOptions, TableDef, TableRef, TypeScriptGenerator, UpdateQueryBuilder, WindowFunctionNode, abs, acos, and, ascii, asin, atan, atan2, avg, between, caseWhen, ceil, ceiling, char, charLength, clearExpressionDispatchers, clearOperandDispatchers, columnOperand, concat, concatWs, cos, cot, count, createEntityFromRow, createEntityProxy, createMssqlExecutor, createMysqlExecutor, createPostgresExecutor, createSqliteExecutor, currentDate, currentTime, dateAdd, dateDiff, dateFormat, dateSub, dateTrunc, day, dayOfWeek, degrees, denseRank, diffSchema, endOfMonth, eq, executeHydrated, executeHydratedWithContexts, exists, exp, extract, firstValue, floor, fromUnixTime, generateCreateTableSql, generateSchemaSql, getSchemaIntrospector, gt, gte, hydrateRows, inList, instr, introspectSchema, isNotNull, isNull, jsonPath, lag, lastValue, lead, left, length, like, ln, loadBelongsToManyRelation, loadBelongsToRelation, loadHasManyRelation, loadHasOneRelation, locate, log, log10, logBase, lower, lpad, lt, lte, ltrim, mod, month, neq, notBetween, notExists, notInList, notLike, now, ntile, or, pi, position, pow, power, radians, rand, random, rank, registerExpressionDispatcher, registerOperandDispatcher, registerSchemaIntrospector, renderColumnDefinition, repeat, replace, right, round, rowNumber, rpad, rtrim, sign, sin, space, sqrt, substr, sum, synchronizeSchema, tan, toColumnRef, toTableRef, trim, trunc, truncate, unixTimestamp, upper, utcNow, valueToOperand, visitExpression, visitOperand, weekOfYear, windowFunction, year };