metal-orm 1.0.90 → 1.0.92

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 (37) hide show
  1. package/dist/index.cjs +214 -118
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +71 -32
  4. package/dist/index.d.ts +71 -32
  5. package/dist/index.js +206 -118
  6. package/dist/index.js.map +1 -1
  7. package/package.json +4 -2
  8. package/scripts/generate-entities/render.mjs +16 -3
  9. package/src/core/ddl/introspect/utils.ts +45 -45
  10. package/src/decorators/bootstrap.ts +37 -37
  11. package/src/decorators/column-decorator.ts +3 -1
  12. package/src/dto/apply-filter.ts +279 -281
  13. package/src/dto/dto-types.ts +229 -229
  14. package/src/dto/filter-types.ts +193 -193
  15. package/src/dto/index.ts +97 -97
  16. package/src/dto/openapi/generators/base.ts +29 -29
  17. package/src/dto/openapi/generators/column.ts +37 -34
  18. package/src/dto/openapi/generators/dto.ts +94 -94
  19. package/src/dto/openapi/generators/filter.ts +75 -74
  20. package/src/dto/openapi/generators/nested-dto.ts +618 -532
  21. package/src/dto/openapi/generators/pagination.ts +111 -111
  22. package/src/dto/openapi/generators/relation-filter.ts +228 -210
  23. package/src/dto/openapi/index.ts +17 -17
  24. package/src/dto/openapi/type-mappings.ts +191 -191
  25. package/src/dto/openapi/types.ts +101 -83
  26. package/src/dto/openapi/utilities.ts +90 -45
  27. package/src/dto/pagination-utils.ts +150 -150
  28. package/src/dto/transform.ts +197 -193
  29. package/src/index.ts +69 -69
  30. package/src/orm/entity-context.ts +9 -9
  31. package/src/orm/entity-metadata.ts +14 -14
  32. package/src/orm/entity.ts +74 -74
  33. package/src/orm/orm-session.ts +159 -159
  34. package/src/orm/relation-change-processor.ts +3 -3
  35. package/src/orm/runtime-types.ts +5 -5
  36. package/src/schema/column-types.ts +4 -4
  37. package/src/schema/types.ts +5 -1
package/dist/index.d.cts CHANGED
@@ -23,7 +23,7 @@ type ReferentialAction = 'NO ACTION' | 'RESTRICT' | 'CASCADE' | 'SET NULL' | 'SE
23
23
  interface RawDefaultValue {
24
24
  raw: string;
25
25
  }
26
- type DefaultValue = unknown | RawDefaultValue;
26
+ type DefaultValue = string | number | boolean | Date | null | RawDefaultValue;
27
27
  interface ForeignKeyReference {
28
28
  /** Target table name */
29
29
  table: string;
@@ -69,7 +69,7 @@ interface ColumnDef<T extends ColumnType = ColumnType, TRuntime = unknown> {
69
69
  /** Column comment/description */
70
70
  comment?: string;
71
71
  /** Additional arguments for the column type (e.g., VARCHAR length) */
72
- args?: unknown[];
72
+ args?: (string | number)[];
73
73
  /** Table name this column belongs to (filled at runtime by defineTable) */
74
74
  table?: string;
75
75
  }
@@ -161,7 +161,7 @@ declare const col: {
161
161
  */
162
162
  custom: (type: string, opts?: {
163
163
  dialect?: string;
164
- args?: unknown[];
164
+ args?: (string | number)[];
165
165
  tsType?: unknown;
166
166
  }) => ColumnDef;
167
167
  /**
@@ -181,7 +181,7 @@ declare const col: {
181
181
  /**
182
182
  * Sets a default value for the column
183
183
  */
184
- default: <T extends ColumnType>(def: ColumnDef<T>, value: unknown) => ColumnDef<T>;
184
+ default: <T extends ColumnType>(def: ColumnDef<T>, value: DefaultValue) => ColumnDef<T>;
185
185
  /**
186
186
  * Sets a raw SQL default value for the column
187
187
  */
@@ -445,13 +445,18 @@ declare function getColumn<T extends TableDef>(table: T, key: string): ColumnDef
445
445
  * Resolves a relation definition to its target table type.
446
446
  */
447
447
  type RelationTargetTable<TRel extends RelationDef> = TRel extends HasManyRelation<infer TTarget> ? TTarget : TRel extends HasOneRelation<infer TTarget> ? TTarget : TRel extends BelongsToRelation<infer TTarget> ? TTarget : TRel extends BelongsToManyRelation<infer TTarget, TableDef> ? TTarget : never;
448
+ type JsonValue = string | number | boolean | null | JsonArray | JsonObject;
449
+ type JsonArray = Array<JsonValue>;
450
+ interface JsonObject {
451
+ [key: string]: JsonValue;
452
+ }
448
453
  type NormalizedColumnType<T extends ColumnDef> = Lowercase<T['type'] & string>;
449
454
  /**
450
455
  * Maps a ColumnDef to its TypeScript type representation
451
456
  */
452
457
  type ColumnToTs<T extends ColumnDef> = [
453
458
  unknown
454
- ] extends [T['tsType']] ? NormalizedColumnType<T> extends 'int' | 'integer' ? number : NormalizedColumnType<T> extends 'bigint' ? number | bigint : NormalizedColumnType<T> extends 'decimal' | 'float' | 'double' ? number : NormalizedColumnType<T> extends 'boolean' ? boolean : NormalizedColumnType<T> extends 'json' ? unknown : NormalizedColumnType<T> extends 'blob' | 'binary' | 'varbinary' | 'bytea' ? Buffer : NormalizedColumnType<T> extends 'date' | 'datetime' | 'timestamp' | 'timestamptz' ? string : string : Exclude<T['tsType'], undefined>;
459
+ ] extends [T['tsType']] ? NormalizedColumnType<T> extends 'int' | 'integer' ? number : NormalizedColumnType<T> extends 'bigint' ? number | bigint : NormalizedColumnType<T> extends 'decimal' | 'float' | 'double' ? number : NormalizedColumnType<T> extends 'boolean' ? boolean : NormalizedColumnType<T> extends 'json' ? JsonValue : NormalizedColumnType<T> extends 'blob' | 'binary' | 'varbinary' | 'bytea' ? Buffer : NormalizedColumnType<T> extends 'date' | 'datetime' | 'timestamp' | 'timestamptz' ? string : string : Exclude<T['tsType'], undefined>;
455
460
  /**
456
461
  * Infers a row shape from a table definition
457
462
  */
@@ -2730,7 +2735,7 @@ type EntityOrTableTargetResolver<T extends EntityOrTableTarget = EntityOrTableTa
2730
2735
  * Simplified column definition structure used during metadata registration.
2731
2736
  * @template T - Concrete column definition type being extended
2732
2737
  */
2733
- type ColumnDefLike<T extends ColumnDef = ColumnDef> = Omit<T, 'name' | 'table'>;
2738
+ type ColumnDefLike<T extends ColumnDef = ColumnDef> = Omit<T, 'table'>;
2734
2739
  /**
2735
2740
  * Common properties shared by all relation metadata types.
2736
2741
  */
@@ -6625,6 +6630,7 @@ interface ColumnOptions {
6625
6630
  notNull?: boolean;
6626
6631
  primary?: boolean;
6627
6632
  tsType?: ColumnDef['tsType'];
6633
+ name?: string;
6628
6634
  }
6629
6635
  /**
6630
6636
  * Input type for column definitions, either as options object or direct ColumnDef.
@@ -7340,7 +7346,7 @@ type FilterValue = StringFilter | NumberFilter | BooleanFilter | DateFilter;
7340
7346
  * // SQL: WHERE name LIKE '%john%' AND email LIKE '%@gmail.com'
7341
7347
  * ```
7342
7348
  */
7343
- declare function applyFilter<T, TTable extends TableDef>(qb: SelectQueryBuilder<T, TTable>, tableOrEntity: TTable | EntityConstructor, where?: WhereInput<any> | null): SelectQueryBuilder<T, TTable>;
7349
+ declare function applyFilter<T, TTable extends TableDef>(qb: SelectQueryBuilder<T, TTable>, tableOrEntity: TTable | EntityConstructor, where?: WhereInput<TTable | EntityConstructor> | null): SelectQueryBuilder<T, TTable>;
7344
7350
  /**
7345
7351
  * Builds an expression tree from a filter object without applying it.
7346
7352
  * Useful for combining with other conditions.
@@ -7362,7 +7368,7 @@ declare function applyFilter<T, TTable extends TableDef>(qb: SelectQueryBuilder<
7362
7368
  * }
7363
7369
  * ```
7364
7370
  */
7365
- declare function buildFilterExpression(tableOrEntity: TableDef | EntityConstructor, where?: WhereInput<any> | null): ExpressionNode | null;
7371
+ declare function buildFilterExpression(tableOrEntity: TableDef | EntityConstructor, where?: WhereInput<TableDef | EntityConstructor> | null): ExpressionNode | null;
7366
7372
 
7367
7373
  /**
7368
7374
  * DTO transformation utilities for working with DTO instances.
@@ -7473,7 +7479,10 @@ declare function pick<T extends object, K extends keyof T>(obj: T, ...keys: K[])
7473
7479
  * });
7474
7480
  * ```
7475
7481
  */
7476
- declare function mapFields<T extends object>(obj: T, fieldMap: Partial<Record<keyof T, string>>): Record<string, unknown>;
7482
+ type MappedFields<T, M extends Partial<Record<keyof T, string>>> = {
7483
+ [K in keyof M as M[K] extends string ? M[K] : never]: K extends keyof T ? T[K] : never;
7484
+ };
7485
+ declare function mapFields<T extends object, M extends Partial<Record<keyof T, string>>>(obj: T, fieldMap: M): Omit<T, keyof M> & MappedFields<T, M>;
7477
7486
 
7478
7487
  /**
7479
7488
  * Pagination utility functions for DTO responses.
@@ -7593,17 +7602,25 @@ interface OpenApiSchema {
7593
7602
  allOf?: OpenApiSchema[];
7594
7603
  oneOf?: OpenApiSchema[];
7595
7604
  }
7596
- interface OpenApiParameter {
7605
+ interface OpenApiParameterObject {
7597
7606
  name: string;
7598
7607
  in: 'query' | 'path' | 'header' | 'cookie';
7599
7608
  required?: boolean;
7600
7609
  schema?: OpenApiSchema;
7601
7610
  description?: string;
7602
7611
  }
7612
+ interface OpenApiResponseObject {
7613
+ description: string;
7614
+ content?: {
7615
+ 'application/json': {
7616
+ schema: OpenApiSchema;
7617
+ };
7618
+ };
7619
+ }
7603
7620
  interface OpenApiOperation {
7604
7621
  summary?: string;
7605
7622
  description?: string;
7606
- parameters?: OpenApiParameter[];
7623
+ parameters?: OpenApiParameterObject[];
7607
7624
  requestBody?: {
7608
7625
  description?: string;
7609
7626
  required?: boolean;
@@ -7613,14 +7630,7 @@ interface OpenApiOperation {
7613
7630
  };
7614
7631
  };
7615
7632
  };
7616
- responses?: Record<string, {
7617
- description: string;
7618
- content?: {
7619
- 'application/json': {
7620
- schema: OpenApiSchema;
7621
- };
7622
- };
7623
- }>;
7633
+ responses?: Record<string, OpenApiResponseObject>;
7624
7634
  }
7625
7635
  interface OpenApiDocumentInfo {
7626
7636
  title: string;
@@ -7634,10 +7644,22 @@ interface ApiRouteDefinition {
7634
7644
  }
7635
7645
  interface OpenApiComponent {
7636
7646
  schemas?: Record<string, OpenApiSchema>;
7637
- parameters?: Record<string, OpenApiSchema>;
7638
- responses?: Record<string, OpenApiSchema>;
7647
+ parameters?: Record<string, OpenApiParameterObject>;
7648
+ responses?: Record<string, OpenApiResponseObject>;
7639
7649
  securitySchemes?: Record<string, unknown>;
7640
7650
  }
7651
+ interface OpenApiDocument {
7652
+ openapi: string;
7653
+ info: OpenApiDocumentInfo;
7654
+ paths: Record<string, Record<string, OpenApiOperation>>;
7655
+ components?: OpenApiComponent;
7656
+ }
7657
+ type OpenApiDialect = 'openapi-3.0' | 'openapi-3.1';
7658
+ interface OpenApiDocumentOptions {
7659
+ dialect?: OpenApiDialect;
7660
+ allowScalarEquals?: boolean;
7661
+ }
7662
+ type OpenApiParameter = OpenApiParameterObject;
7641
7663
 
7642
7664
  interface TypeMappingStrategy {
7643
7665
  supports(columnType: string): boolean;
@@ -7706,32 +7728,41 @@ declare function columnTypeToOpenApiFormat(col: ColumnDef): string | undefined;
7706
7728
  declare function schemaToJson(schema: OpenApiSchema): string;
7707
7729
  declare function deepCloneSchema(schema: OpenApiSchema): OpenApiSchema;
7708
7730
  declare function mergeSchemas(base: OpenApiSchema, override: Partial<OpenApiSchema>): OpenApiSchema;
7709
- declare function generateOpenApiDocument(info: OpenApiDocumentInfo, routes: ApiRouteDefinition[]): Record<string, unknown>;
7731
+ declare function applyNullability(schema: OpenApiSchema, isNullable: boolean, dialect: OpenApiDialect): OpenApiSchema;
7732
+ declare function isNullableColumn(col: {
7733
+ notNull?: boolean;
7734
+ }): boolean;
7735
+ declare function getOpenApiVersionForDialect(dialect: OpenApiDialect): string;
7736
+ declare function generateOpenApiDocument(info: OpenApiDocumentInfo, routes: ApiRouteDefinition[], options?: {
7737
+ dialect?: OpenApiDialect;
7738
+ allowScalarEquals?: boolean;
7739
+ }): OpenApiDocument;
7710
7740
 
7711
7741
  declare function isTableDef(target: TableDef | EntityConstructor): target is TableDef;
7712
7742
  declare function getColumnMap(target: TableDef | EntityConstructor): Record<string, ColumnDef>;
7713
7743
  type TargetType<T extends TableDef | EntityConstructor> = T;
7714
7744
 
7715
- declare function columnToOpenApiSchema(col: ColumnDef): OpenApiSchema;
7745
+ declare function columnToOpenApiSchema(col: ColumnDef, dialect?: OpenApiDialect): OpenApiSchema;
7716
7746
 
7717
- declare function dtoToOpenApiSchema<T extends TableDef | EntityConstructor, TExclude extends keyof any>(target: T, exclude?: TExclude[]): OpenApiSchema;
7718
- declare function createDtoToOpenApiSchema<T extends TableDef | EntityConstructor, TExclude extends keyof any>(target: T, exclude?: TExclude[]): OpenApiSchema;
7719
- declare function updateDtoToOpenApiSchema<T extends TableDef | EntityConstructor, TExclude extends keyof any>(target: T, exclude?: TExclude[]): OpenApiSchema;
7747
+ declare function dtoToOpenApiSchema<T extends TableDef | EntityConstructor, TExclude extends keyof any>(target: T, exclude?: TExclude[], dialect?: OpenApiDialect): OpenApiSchema;
7748
+ declare function createDtoToOpenApiSchema<T extends TableDef | EntityConstructor, TExclude extends keyof any>(target: T, exclude?: TExclude[], dialect?: OpenApiDialect): OpenApiSchema;
7749
+ declare function updateDtoToOpenApiSchema<T extends TableDef | EntityConstructor, TExclude extends keyof any>(target: T, exclude?: TExclude[], dialect?: OpenApiDialect): OpenApiSchema;
7720
7750
 
7721
- declare function whereInputToOpenApiSchema<T extends TableDef | EntityConstructor>(target: T): OpenApiSchema;
7751
+ declare function columnToFilterSchema(col: ColumnDef, dialect?: OpenApiDialect): OpenApiSchema;
7752
+ declare function whereInputToOpenApiSchema<T extends TableDef | EntityConstructor>(target: T, dialect?: OpenApiDialect): OpenApiSchema;
7722
7753
 
7723
7754
  declare function relationFilterToOpenApiSchema(relation: RelationDef, options?: {
7724
7755
  exclude?: string[];
7725
7756
  include?: string[];
7726
- }): OpenApiSchema;
7757
+ }, dialect?: OpenApiDialect, depth?: number): OpenApiSchema;
7727
7758
  declare function whereInputWithRelationsToOpenApiSchema<T extends TableDef | EntityConstructor>(target: T, options?: {
7728
7759
  columnExclude?: string[];
7729
7760
  columnInclude?: string[];
7730
7761
  relationExclude?: string[];
7731
7762
  relationInclude?: string[];
7732
7763
  maxDepth?: number;
7733
- }): OpenApiSchema;
7734
- declare function nestedWhereInputToOpenApiSchema<T extends TableDef | EntityConstructor>(target: T, depth?: number): OpenApiSchema;
7764
+ }, dialect?: OpenApiDialect): OpenApiSchema;
7765
+ declare function nestedWhereInputToOpenApiSchema<T extends TableDef | EntityConstructor>(target: T, depth?: number, dialect?: OpenApiDialect): OpenApiSchema;
7735
7766
 
7736
7767
  interface ComponentOptions {
7737
7768
  prefix?: string;
@@ -7757,11 +7788,19 @@ declare function generateRelationComponents(tables: Array<{
7757
7788
  name: string;
7758
7789
  table: TableDef;
7759
7790
  }>, options?: ComponentOptions): Record<string, OpenApiSchema>;
7760
- declare function createApiComponentsSection(schemas: Record<string, OpenApiSchema>, parameters?: Record<string, OpenApiSchema>, responses?: Record<string, OpenApiSchema>): OpenApiComponent;
7791
+ declare function createApiComponentsSection(schemas: Record<string, OpenApiSchema>, parameters?: Record<string, OpenApiParameterObject>, responses?: Record<string, OpenApiResponseObject>): OpenApiComponent;
7761
7792
  declare function createRef(path: string): ComponentReference;
7762
7793
  declare function schemaToRef(schemaName: string): ComponentReference;
7763
7794
  declare function parameterToRef(paramName: string): ComponentReference;
7764
7795
  declare function responseToRef(responseName: string): ComponentReference;
7796
+ declare function canonicalizeSchema(schema: OpenApiSchema): OpenApiSchema;
7797
+ declare function computeSchemaHash(schema: OpenApiSchema): string;
7798
+ interface DeterministicNamingState {
7799
+ contentHashToName: Map<string, string>;
7800
+ nameToContentHash: Map<string, string>;
7801
+ }
7802
+ declare function createDeterministicNamingState(): DeterministicNamingState;
7803
+ declare function getDeterministicComponentName(baseName: string, schema: OpenApiSchema, state: DeterministicNamingState): string;
7765
7804
  declare function replaceWithRefs(schema: OpenApiSchema, schemaMap: Record<string, OpenApiSchema>, path?: string): OpenApiSchema;
7766
7805
  declare function extractReusableSchemas(schema: OpenApiSchema, existing?: Record<string, OpenApiSchema>, prefix?: string): Record<string, OpenApiSchema>;
7767
7806
 
@@ -7775,4 +7814,4 @@ declare const paginationParamsSchema: OpenApiSchema;
7775
7814
  declare function toPaginationParams(): OpenApiParameter[];
7776
7815
  declare function pagedResponseToOpenApiSchema<T extends OpenApiSchema>(itemSchema: T): OpenApiSchema;
7777
7816
 
7778
- export { type AliasRefNode, type AnyDomainEvent, type ApiRouteDefinition, type ArithmeticExpressionNode, type TableRef as AstTableRef, AsyncLocalStorage, BelongsTo, BelongsToMany, type BelongsToManyOptions, type BelongsToManyRelation, type BelongsToOptions, type BelongsToReference, type BelongsToReferenceApi, type BelongsToRelation, type BetweenExpressionNode, BigIntTypeStrategy, type BinaryExpressionNode, type BitwiseExpressionNode, type BooleanFilter, BooleanTypeStrategy, type CascadeMode, type CaseExpressionNode, type CastExpressionNode, type CheckConstraint, type CollateExpressionNode, Column, type ColumnDef, type ColumnDiff, type ColumnInput, type ColumnNode, type ColumnOptions, type ColumnRef, type ColumnToTs, type ColumnType, type ComponentOptions, type ComponentReference, ConstructorMaterializationStrategy, type CreateDto, type CreateTediousClientOptions, type DatabaseCheck, type DatabaseColumn, type DatabaseIndex, type DatabaseSchema, type DatabaseTable, type DateFilter, DateTimeTypeStrategy, type DbExecutor, type DbExecutorFactory, DecimalTypeStrategy, type DecoratedEntityInstance, DefaultBelongsToReference, DefaultEntityMaterializer, DefaultHasManyCollection, DefaultManyToManyCollection, DefaultTypeStrategy, type DefaultValue, DeleteQueryBuilder, type DialectName, type DomainEvent, DomainEventBus, type DomainEventHandler, type Dto, Entity, type EntityContext, type EntityInstance, type EntityMaterializationStrategy, type EntityMaterializer, type EntityOptions, type PrimaryKey$1 as EntityPrimaryKey, EntityStatus, type ExecutionContext, type ExistsExpressionNode, type ExpressionNode, type ExpressionVisitor, type FieldFilter, type FilterOperator, type FilterValue, type ForeignKeyReference, type FunctionNode, type GroupConcatOptions, type HasDomainEvents, HasMany, type HasManyCollection, type HasManyOptions, type HasManyRelation, HasOne, type HasOneOptions, type HasOneReference, type HasOneReferenceApi, type HasOneRelation, type HydrationContext, type HydrationMetadata, type HydrationPivotPlan, type HydrationPlan, type HydrationRelationPlan, type InExpressionNode, type InExpressionRight, type IndexColumn, type IndexDef, type InferRow, type InitialHandlers, InsertQueryBuilder, IntegerTypeStrategy, InterceptorPipeline, type IntrospectOptions, type JsonPathNode, type Jsonify, type JsonifyScalar, type LiteralNode, type LiteralValue, type LogicalExpressionNode, type ManyToManyCollection, type MssqlClientLike, MySqlDialect, type MysqlClientLike, type NestedDtoOptions, type NullExpressionNode, type NumberFilter, type OpenApiComponent, type OpenApiDocumentInfo, type OpenApiOperation, type OpenApiParameter, type OpenApiSchema, type OpenApiType, type OperandNode, type OperandVisitor, Orm, type OrmDomainEvent, type OrmInterceptor, type OrmOptions, OrmSession, type OrmSessionOptions, type PagedResponse, type PaginatedResult, type PaginationParams, Pool, type PoolAdapter, type PoolLease, type PoolOptions, type PooledConnectionAdapter, type PostgresClientLike, PostgresDialect, PrimaryKey, type Primitive, PrototypeMaterializationStrategy, type QueryContext, type QueryInterceptor, type QueryLogEntry, type QueryLogger, type QueryResult, type RawDefaultValue, type ReferentialAction, type RelationChange, type RelationChangeEntry, type RelationDef, type RelationKey$1 as RelationKey, RelationKinds, type RelationMap, type RelationTargetTable, type RelationType, type RenderColumnOptions, STANDARD_COLUMN_TYPES, type SaveGraphInputPayload, type SaveGraphInputScalar, type SaveGraphJsonScalar, type SaveGraphSessionOptions, type ScalarSubqueryNode, type SchemaChange, type SchemaChangeKind, type SchemaDiffOptions, type SchemaGenerateResult, type SchemaIntrospector, type SchemaPlan, SelectQueryBuilder, type SelectQueryInput, type SelectableKeys, type SimpleQueryRunner, type SimpleWhereInput, type Simplify, SqlServerDialect, type SqliteClientLike, SqliteDialect, type StandardColumnType, type StringFilter, StringTypeStrategy, type SynchronizeOptions, type TableDef, type TableHooks, type TableOptions, type TableRef$1 as TableRef, type TargetType, type TediousColumn, type TediousConnectionLike, type TediousModule, type TediousRequest, type TediousRequestCtor, type TediousTypes, type TrackedEntity, TypeMappingService, type TypeMappingStrategy, TypeScriptGenerator, type TypedExpression, type TypedLike, type UpdateDto, UpdateQueryBuilder, UuidTypeStrategy, type ValueOperandInput, type WhereInput, type WindowFunctionNode, type WithRelations, abs, acos, add, addDomainEvent, age, aliasRef, and, applyFilter, arrayAppend, asType, ascii, asin, atan, atan2, avg, belongsTo, belongsToMany, between, bitAnd, bitLength, bitOr, bitXor, bootstrapEntities, buildFilterExpression, calculateTotalPages, caseWhen, cast, cbrt, ceil, ceiling, char, charLength, chr, clearExpressionDispatchers, clearOperandDispatchers, coalesce, col, collate, columnOperand, columnToOpenApiSchema, columnTypeToOpenApiFormat, columnTypeToOpenApiType, computePaginationMetadata, concat, concatWs, correlateBy, cos, cot, count, countAll, createApiComponentsSection, createDtoToOpenApiSchema, createEntityFromRow, createEntityProxy, createExecutorFromQueryRunner, createMssqlExecutor, createMysqlExecutor, createPooledExecutorFactory, createPostgresExecutor, createQueryLoggingExecutor, createRef, createSqliteExecutor, createTediousExecutor, createTediousMssqlClient, currentDate, currentTime, dateAdd, dateDiff, dateFormat, dateSub, dateTrunc, day, dayOfWeek, deepCloneSchema, defineTable, degrees, deleteFrom, denseRank, diffSchema, div, dtoToOpenApiSchema, endOfMonth, entityRef, entityRefs, eq, esel, exclude, executeHydrated, executeHydratedPlain, executeHydratedPlainWithContexts, executeHydratedWithContexts, executeSchemaSql, executeSchemaSqlFor, exists, exp, extract, extractReusableSchemas, firstValue, floor, fromUnixTime, generateComponentSchemas, generateCreateTableSql, generateOpenApiDocument, generateRelationComponents, generateSchemaSql, generateSchemaSqlFor, getColumn, getColumnMap, getDecoratorMetadata, getSchemaIntrospector, getTableDefFromEntity, greatest, groupConcat, gt, gte, hasMany, hasNextPage as hasNextPageMeta, hasOne, hasPrevPage as hasPrevPageMeta, hour, hydrateRows, ifNull, inList, inSubquery, initcap, insertInto, instr, introspectSchema, isCaseExpressionNode, isCastExpressionNode, isCollateExpressionNode, isComponentReference, isExpressionSelectionNode, isFunctionNode, isNotNull, isNull, isOperandNode, isTableDef, isValueOperandInput, isWindowFunctionNode, jsonArrayAgg, jsonContains, jsonLength, jsonPath, jsonSet, jsonify, lag, lastValue, lead, least, left, length, like, ln, loadBelongsToManyRelation, loadBelongsToRelation, loadHasManyRelation, loadHasOneRelation, localTime, localTimestamp, locate, log, log10, log2, logBase, lower, lpad, lt, lte, ltrim, mapFields, materializeAs, max, md5, mergeSchemas, min, minute, mod, month, mul, neq, nestedDtoToOpenApiSchema, nestedWhereInputToOpenApiSchema, normalizeColumnType, notBetween, notExists, notInList, notInSubquery, notLike, now, ntile, nullif, octetLength, or, outerRef, pagedResponseToOpenApiSchema, paginationParamsSchema, parameterToRef, pi, pick, position, pow, power, quarter, radians, rand, random, rank, registerExpressionDispatcher, registerOperandDispatcher, registerSchemaIntrospector, relationFilterToOpenApiSchema, relationLoaderCache, renderColumnDefinition, renderTypeWithArgs, repeat, replace, replaceWithRefs, responseToRef, reverse, right, round, rowNumber, rowsToQueryResult, rpad, rtrim, schemaToJson, schemaToRef, second, sel, selectFrom, selectFromEntity, setRelations, sha1, sha2, shiftLeft, shiftRight, sign, sin, space, sqrt, stddev, sub, substr, sum, synchronizeSchema, tableRef, tan, toColumnRef, toPagedResponse, toPagedResponseBuilder, toPaginationParams, toResponse, toResponseBuilder, toTableRef, trim, trunc, truncate, typeMappingService, unixTimestamp, update, updateDtoToOpenApiSchema, updateDtoWithRelationsToOpenApiSchema, upper, utcNow, valueToOperand, variance, visitExpression, visitOperand, weekOfYear, whereInputToOpenApiSchema, whereInputWithRelationsToOpenApiSchema, windowFunction, withDefaults, withDefaultsBuilder, year };
7817
+ export { type AliasRefNode, type AnyDomainEvent, type ApiRouteDefinition, type ArithmeticExpressionNode, type TableRef as AstTableRef, AsyncLocalStorage, BelongsTo, BelongsToMany, type BelongsToManyOptions, type BelongsToManyRelation, type BelongsToOptions, type BelongsToReference, type BelongsToReferenceApi, type BelongsToRelation, type BetweenExpressionNode, BigIntTypeStrategy, type BinaryExpressionNode, type BitwiseExpressionNode, type BooleanFilter, BooleanTypeStrategy, type CascadeMode, type CaseExpressionNode, type CastExpressionNode, type CheckConstraint, type CollateExpressionNode, Column, type ColumnDef, type ColumnDiff, type ColumnInput, type ColumnNode, type ColumnOptions, type ColumnRef, type ColumnToTs, type ColumnType, type ComponentOptions, type ComponentReference, ConstructorMaterializationStrategy, type CreateDto, type CreateTediousClientOptions, type DatabaseCheck, type DatabaseColumn, type DatabaseIndex, type DatabaseSchema, type DatabaseTable, type DateFilter, DateTimeTypeStrategy, type DbExecutor, type DbExecutorFactory, DecimalTypeStrategy, type DecoratedEntityInstance, DefaultBelongsToReference, DefaultEntityMaterializer, DefaultHasManyCollection, DefaultManyToManyCollection, DefaultTypeStrategy, type DefaultValue, DeleteQueryBuilder, type DialectName, type DomainEvent, DomainEventBus, type DomainEventHandler, type Dto, Entity, type EntityContext, type EntityInstance, type EntityMaterializationStrategy, type EntityMaterializer, type EntityOptions, type PrimaryKey$1 as EntityPrimaryKey, EntityStatus, type ExecutionContext, type ExistsExpressionNode, type ExpressionNode, type ExpressionVisitor, type FieldFilter, type FilterOperator, type FilterValue, type ForeignKeyReference, type FunctionNode, type GroupConcatOptions, type HasDomainEvents, HasMany, type HasManyCollection, type HasManyOptions, type HasManyRelation, HasOne, type HasOneOptions, type HasOneReference, type HasOneReferenceApi, type HasOneRelation, type HydrationContext, type HydrationMetadata, type HydrationPivotPlan, type HydrationPlan, type HydrationRelationPlan, type InExpressionNode, type InExpressionRight, type IndexColumn, type IndexDef, type InferRow, type InitialHandlers, InsertQueryBuilder, IntegerTypeStrategy, InterceptorPipeline, type IntrospectOptions, type JsonArray, type JsonObject, type JsonPathNode, type JsonValue, type Jsonify, type JsonifyScalar, type LiteralNode, type LiteralValue, type LogicalExpressionNode, type ManyToManyCollection, type MssqlClientLike, MySqlDialect, type MysqlClientLike, type NestedDtoOptions, type NullExpressionNode, type NumberFilter, type OpenApiComponent, type OpenApiDialect, type OpenApiDocument, type OpenApiDocumentInfo, type OpenApiDocumentOptions, type OpenApiOperation, type OpenApiParameter, type OpenApiParameterObject, type OpenApiResponseObject, type OpenApiSchema, type OpenApiType, type OperandNode, type OperandVisitor, Orm, type OrmDomainEvent, type OrmInterceptor, type OrmOptions, OrmSession, type OrmSessionOptions, type PagedResponse, type PaginatedResult, type PaginationParams, Pool, type PoolAdapter, type PoolLease, type PoolOptions, type PooledConnectionAdapter, type PostgresClientLike, PostgresDialect, PrimaryKey, type Primitive, PrototypeMaterializationStrategy, type QueryContext, type QueryInterceptor, type QueryLogEntry, type QueryLogger, type QueryResult, type RawDefaultValue, type ReferentialAction, type RelationChange, type RelationChangeEntry, type RelationDef, type RelationKey$1 as RelationKey, RelationKinds, type RelationMap, type RelationTargetTable, type RelationType, type RenderColumnOptions, STANDARD_COLUMN_TYPES, type SaveGraphInputPayload, type SaveGraphInputScalar, type SaveGraphJsonScalar, type SaveGraphSessionOptions, type ScalarSubqueryNode, type SchemaChange, type SchemaChangeKind, type SchemaDiffOptions, type SchemaGenerateResult, type SchemaIntrospector, type SchemaPlan, SelectQueryBuilder, type SelectQueryInput, type SelectableKeys, type SimpleQueryRunner, type SimpleWhereInput, type Simplify, SqlServerDialect, type SqliteClientLike, SqliteDialect, type StandardColumnType, type StringFilter, StringTypeStrategy, type SynchronizeOptions, type TableDef, type TableHooks, type TableOptions, type TableRef$1 as TableRef, type TargetType, type TediousColumn, type TediousConnectionLike, type TediousModule, type TediousRequest, type TediousRequestCtor, type TediousTypes, type TrackedEntity, TypeMappingService, type TypeMappingStrategy, TypeScriptGenerator, type TypedExpression, type TypedLike, type UpdateDto, UpdateQueryBuilder, UuidTypeStrategy, type ValueOperandInput, type WhereInput, type WindowFunctionNode, type WithRelations, abs, acos, add, addDomainEvent, age, aliasRef, and, applyFilter, applyNullability, arrayAppend, asType, ascii, asin, atan, atan2, avg, belongsTo, belongsToMany, between, bitAnd, bitLength, bitOr, bitXor, bootstrapEntities, buildFilterExpression, calculateTotalPages, canonicalizeSchema, caseWhen, cast, cbrt, ceil, ceiling, char, charLength, chr, clearExpressionDispatchers, clearOperandDispatchers, coalesce, col, collate, columnOperand, columnToFilterSchema, columnToOpenApiSchema, columnTypeToOpenApiFormat, columnTypeToOpenApiType, computePaginationMetadata, computeSchemaHash, concat, concatWs, correlateBy, cos, cot, count, countAll, createApiComponentsSection, createDeterministicNamingState, createDtoToOpenApiSchema, createEntityFromRow, createEntityProxy, createExecutorFromQueryRunner, createMssqlExecutor, createMysqlExecutor, createPooledExecutorFactory, createPostgresExecutor, createQueryLoggingExecutor, createRef, createSqliteExecutor, createTediousExecutor, createTediousMssqlClient, currentDate, currentTime, dateAdd, dateDiff, dateFormat, dateSub, dateTrunc, day, dayOfWeek, deepCloneSchema, defineTable, degrees, deleteFrom, denseRank, diffSchema, div, dtoToOpenApiSchema, endOfMonth, entityRef, entityRefs, eq, esel, exclude, executeHydrated, executeHydratedPlain, executeHydratedPlainWithContexts, executeHydratedWithContexts, executeSchemaSql, executeSchemaSqlFor, exists, exp, extract, extractReusableSchemas, firstValue, floor, fromUnixTime, generateComponentSchemas, generateCreateTableSql, generateOpenApiDocument, generateRelationComponents, generateSchemaSql, generateSchemaSqlFor, getColumn, getColumnMap, getDecoratorMetadata, getDeterministicComponentName, getOpenApiVersionForDialect, getSchemaIntrospector, getTableDefFromEntity, greatest, groupConcat, gt, gte, hasMany, hasNextPage as hasNextPageMeta, hasOne, hasPrevPage as hasPrevPageMeta, hour, hydrateRows, ifNull, inList, inSubquery, initcap, insertInto, instr, introspectSchema, isCaseExpressionNode, isCastExpressionNode, isCollateExpressionNode, isComponentReference, isExpressionSelectionNode, isFunctionNode, isNotNull, isNull, isNullableColumn, isOperandNode, isTableDef, isValueOperandInput, isWindowFunctionNode, jsonArrayAgg, jsonContains, jsonLength, jsonPath, jsonSet, jsonify, lag, lastValue, lead, least, left, length, like, ln, loadBelongsToManyRelation, loadBelongsToRelation, loadHasManyRelation, loadHasOneRelation, localTime, localTimestamp, locate, log, log10, log2, logBase, lower, lpad, lt, lte, ltrim, mapFields, materializeAs, max, md5, mergeSchemas, min, minute, mod, month, mul, neq, nestedDtoToOpenApiSchema, nestedWhereInputToOpenApiSchema, normalizeColumnType, notBetween, notExists, notInList, notInSubquery, notLike, now, ntile, nullif, octetLength, or, outerRef, pagedResponseToOpenApiSchema, paginationParamsSchema, parameterToRef, pi, pick, position, pow, power, quarter, radians, rand, random, rank, registerExpressionDispatcher, registerOperandDispatcher, registerSchemaIntrospector, relationFilterToOpenApiSchema, relationLoaderCache, renderColumnDefinition, renderTypeWithArgs, repeat, replace, replaceWithRefs, responseToRef, reverse, right, round, rowNumber, rowsToQueryResult, rpad, rtrim, schemaToJson, schemaToRef, second, sel, selectFrom, selectFromEntity, setRelations, sha1, sha2, shiftLeft, shiftRight, sign, sin, space, sqrt, stddev, sub, substr, sum, synchronizeSchema, tableRef, tan, toColumnRef, toPagedResponse, toPagedResponseBuilder, toPaginationParams, toResponse, toResponseBuilder, toTableRef, trim, trunc, truncate, typeMappingService, unixTimestamp, update, updateDtoToOpenApiSchema, updateDtoWithRelationsToOpenApiSchema, upper, utcNow, valueToOperand, variance, visitExpression, visitOperand, weekOfYear, whereInputToOpenApiSchema, whereInputWithRelationsToOpenApiSchema, windowFunction, withDefaults, withDefaultsBuilder, year };
package/dist/index.d.ts CHANGED
@@ -23,7 +23,7 @@ type ReferentialAction = 'NO ACTION' | 'RESTRICT' | 'CASCADE' | 'SET NULL' | 'SE
23
23
  interface RawDefaultValue {
24
24
  raw: string;
25
25
  }
26
- type DefaultValue = unknown | RawDefaultValue;
26
+ type DefaultValue = string | number | boolean | Date | null | RawDefaultValue;
27
27
  interface ForeignKeyReference {
28
28
  /** Target table name */
29
29
  table: string;
@@ -69,7 +69,7 @@ interface ColumnDef<T extends ColumnType = ColumnType, TRuntime = unknown> {
69
69
  /** Column comment/description */
70
70
  comment?: string;
71
71
  /** Additional arguments for the column type (e.g., VARCHAR length) */
72
- args?: unknown[];
72
+ args?: (string | number)[];
73
73
  /** Table name this column belongs to (filled at runtime by defineTable) */
74
74
  table?: string;
75
75
  }
@@ -161,7 +161,7 @@ declare const col: {
161
161
  */
162
162
  custom: (type: string, opts?: {
163
163
  dialect?: string;
164
- args?: unknown[];
164
+ args?: (string | number)[];
165
165
  tsType?: unknown;
166
166
  }) => ColumnDef;
167
167
  /**
@@ -181,7 +181,7 @@ declare const col: {
181
181
  /**
182
182
  * Sets a default value for the column
183
183
  */
184
- default: <T extends ColumnType>(def: ColumnDef<T>, value: unknown) => ColumnDef<T>;
184
+ default: <T extends ColumnType>(def: ColumnDef<T>, value: DefaultValue) => ColumnDef<T>;
185
185
  /**
186
186
  * Sets a raw SQL default value for the column
187
187
  */
@@ -445,13 +445,18 @@ declare function getColumn<T extends TableDef>(table: T, key: string): ColumnDef
445
445
  * Resolves a relation definition to its target table type.
446
446
  */
447
447
  type RelationTargetTable<TRel extends RelationDef> = TRel extends HasManyRelation<infer TTarget> ? TTarget : TRel extends HasOneRelation<infer TTarget> ? TTarget : TRel extends BelongsToRelation<infer TTarget> ? TTarget : TRel extends BelongsToManyRelation<infer TTarget, TableDef> ? TTarget : never;
448
+ type JsonValue = string | number | boolean | null | JsonArray | JsonObject;
449
+ type JsonArray = Array<JsonValue>;
450
+ interface JsonObject {
451
+ [key: string]: JsonValue;
452
+ }
448
453
  type NormalizedColumnType<T extends ColumnDef> = Lowercase<T['type'] & string>;
449
454
  /**
450
455
  * Maps a ColumnDef to its TypeScript type representation
451
456
  */
452
457
  type ColumnToTs<T extends ColumnDef> = [
453
458
  unknown
454
- ] extends [T['tsType']] ? NormalizedColumnType<T> extends 'int' | 'integer' ? number : NormalizedColumnType<T> extends 'bigint' ? number | bigint : NormalizedColumnType<T> extends 'decimal' | 'float' | 'double' ? number : NormalizedColumnType<T> extends 'boolean' ? boolean : NormalizedColumnType<T> extends 'json' ? unknown : NormalizedColumnType<T> extends 'blob' | 'binary' | 'varbinary' | 'bytea' ? Buffer : NormalizedColumnType<T> extends 'date' | 'datetime' | 'timestamp' | 'timestamptz' ? string : string : Exclude<T['tsType'], undefined>;
459
+ ] extends [T['tsType']] ? NormalizedColumnType<T> extends 'int' | 'integer' ? number : NormalizedColumnType<T> extends 'bigint' ? number | bigint : NormalizedColumnType<T> extends 'decimal' | 'float' | 'double' ? number : NormalizedColumnType<T> extends 'boolean' ? boolean : NormalizedColumnType<T> extends 'json' ? JsonValue : NormalizedColumnType<T> extends 'blob' | 'binary' | 'varbinary' | 'bytea' ? Buffer : NormalizedColumnType<T> extends 'date' | 'datetime' | 'timestamp' | 'timestamptz' ? string : string : Exclude<T['tsType'], undefined>;
455
460
  /**
456
461
  * Infers a row shape from a table definition
457
462
  */
@@ -2730,7 +2735,7 @@ type EntityOrTableTargetResolver<T extends EntityOrTableTarget = EntityOrTableTa
2730
2735
  * Simplified column definition structure used during metadata registration.
2731
2736
  * @template T - Concrete column definition type being extended
2732
2737
  */
2733
- type ColumnDefLike<T extends ColumnDef = ColumnDef> = Omit<T, 'name' | 'table'>;
2738
+ type ColumnDefLike<T extends ColumnDef = ColumnDef> = Omit<T, 'table'>;
2734
2739
  /**
2735
2740
  * Common properties shared by all relation metadata types.
2736
2741
  */
@@ -6625,6 +6630,7 @@ interface ColumnOptions {
6625
6630
  notNull?: boolean;
6626
6631
  primary?: boolean;
6627
6632
  tsType?: ColumnDef['tsType'];
6633
+ name?: string;
6628
6634
  }
6629
6635
  /**
6630
6636
  * Input type for column definitions, either as options object or direct ColumnDef.
@@ -7340,7 +7346,7 @@ type FilterValue = StringFilter | NumberFilter | BooleanFilter | DateFilter;
7340
7346
  * // SQL: WHERE name LIKE '%john%' AND email LIKE '%@gmail.com'
7341
7347
  * ```
7342
7348
  */
7343
- declare function applyFilter<T, TTable extends TableDef>(qb: SelectQueryBuilder<T, TTable>, tableOrEntity: TTable | EntityConstructor, where?: WhereInput<any> | null): SelectQueryBuilder<T, TTable>;
7349
+ declare function applyFilter<T, TTable extends TableDef>(qb: SelectQueryBuilder<T, TTable>, tableOrEntity: TTable | EntityConstructor, where?: WhereInput<TTable | EntityConstructor> | null): SelectQueryBuilder<T, TTable>;
7344
7350
  /**
7345
7351
  * Builds an expression tree from a filter object without applying it.
7346
7352
  * Useful for combining with other conditions.
@@ -7362,7 +7368,7 @@ declare function applyFilter<T, TTable extends TableDef>(qb: SelectQueryBuilder<
7362
7368
  * }
7363
7369
  * ```
7364
7370
  */
7365
- declare function buildFilterExpression(tableOrEntity: TableDef | EntityConstructor, where?: WhereInput<any> | null): ExpressionNode | null;
7371
+ declare function buildFilterExpression(tableOrEntity: TableDef | EntityConstructor, where?: WhereInput<TableDef | EntityConstructor> | null): ExpressionNode | null;
7366
7372
 
7367
7373
  /**
7368
7374
  * DTO transformation utilities for working with DTO instances.
@@ -7473,7 +7479,10 @@ declare function pick<T extends object, K extends keyof T>(obj: T, ...keys: K[])
7473
7479
  * });
7474
7480
  * ```
7475
7481
  */
7476
- declare function mapFields<T extends object>(obj: T, fieldMap: Partial<Record<keyof T, string>>): Record<string, unknown>;
7482
+ type MappedFields<T, M extends Partial<Record<keyof T, string>>> = {
7483
+ [K in keyof M as M[K] extends string ? M[K] : never]: K extends keyof T ? T[K] : never;
7484
+ };
7485
+ declare function mapFields<T extends object, M extends Partial<Record<keyof T, string>>>(obj: T, fieldMap: M): Omit<T, keyof M> & MappedFields<T, M>;
7477
7486
 
7478
7487
  /**
7479
7488
  * Pagination utility functions for DTO responses.
@@ -7593,17 +7602,25 @@ interface OpenApiSchema {
7593
7602
  allOf?: OpenApiSchema[];
7594
7603
  oneOf?: OpenApiSchema[];
7595
7604
  }
7596
- interface OpenApiParameter {
7605
+ interface OpenApiParameterObject {
7597
7606
  name: string;
7598
7607
  in: 'query' | 'path' | 'header' | 'cookie';
7599
7608
  required?: boolean;
7600
7609
  schema?: OpenApiSchema;
7601
7610
  description?: string;
7602
7611
  }
7612
+ interface OpenApiResponseObject {
7613
+ description: string;
7614
+ content?: {
7615
+ 'application/json': {
7616
+ schema: OpenApiSchema;
7617
+ };
7618
+ };
7619
+ }
7603
7620
  interface OpenApiOperation {
7604
7621
  summary?: string;
7605
7622
  description?: string;
7606
- parameters?: OpenApiParameter[];
7623
+ parameters?: OpenApiParameterObject[];
7607
7624
  requestBody?: {
7608
7625
  description?: string;
7609
7626
  required?: boolean;
@@ -7613,14 +7630,7 @@ interface OpenApiOperation {
7613
7630
  };
7614
7631
  };
7615
7632
  };
7616
- responses?: Record<string, {
7617
- description: string;
7618
- content?: {
7619
- 'application/json': {
7620
- schema: OpenApiSchema;
7621
- };
7622
- };
7623
- }>;
7633
+ responses?: Record<string, OpenApiResponseObject>;
7624
7634
  }
7625
7635
  interface OpenApiDocumentInfo {
7626
7636
  title: string;
@@ -7634,10 +7644,22 @@ interface ApiRouteDefinition {
7634
7644
  }
7635
7645
  interface OpenApiComponent {
7636
7646
  schemas?: Record<string, OpenApiSchema>;
7637
- parameters?: Record<string, OpenApiSchema>;
7638
- responses?: Record<string, OpenApiSchema>;
7647
+ parameters?: Record<string, OpenApiParameterObject>;
7648
+ responses?: Record<string, OpenApiResponseObject>;
7639
7649
  securitySchemes?: Record<string, unknown>;
7640
7650
  }
7651
+ interface OpenApiDocument {
7652
+ openapi: string;
7653
+ info: OpenApiDocumentInfo;
7654
+ paths: Record<string, Record<string, OpenApiOperation>>;
7655
+ components?: OpenApiComponent;
7656
+ }
7657
+ type OpenApiDialect = 'openapi-3.0' | 'openapi-3.1';
7658
+ interface OpenApiDocumentOptions {
7659
+ dialect?: OpenApiDialect;
7660
+ allowScalarEquals?: boolean;
7661
+ }
7662
+ type OpenApiParameter = OpenApiParameterObject;
7641
7663
 
7642
7664
  interface TypeMappingStrategy {
7643
7665
  supports(columnType: string): boolean;
@@ -7706,32 +7728,41 @@ declare function columnTypeToOpenApiFormat(col: ColumnDef): string | undefined;
7706
7728
  declare function schemaToJson(schema: OpenApiSchema): string;
7707
7729
  declare function deepCloneSchema(schema: OpenApiSchema): OpenApiSchema;
7708
7730
  declare function mergeSchemas(base: OpenApiSchema, override: Partial<OpenApiSchema>): OpenApiSchema;
7709
- declare function generateOpenApiDocument(info: OpenApiDocumentInfo, routes: ApiRouteDefinition[]): Record<string, unknown>;
7731
+ declare function applyNullability(schema: OpenApiSchema, isNullable: boolean, dialect: OpenApiDialect): OpenApiSchema;
7732
+ declare function isNullableColumn(col: {
7733
+ notNull?: boolean;
7734
+ }): boolean;
7735
+ declare function getOpenApiVersionForDialect(dialect: OpenApiDialect): string;
7736
+ declare function generateOpenApiDocument(info: OpenApiDocumentInfo, routes: ApiRouteDefinition[], options?: {
7737
+ dialect?: OpenApiDialect;
7738
+ allowScalarEquals?: boolean;
7739
+ }): OpenApiDocument;
7710
7740
 
7711
7741
  declare function isTableDef(target: TableDef | EntityConstructor): target is TableDef;
7712
7742
  declare function getColumnMap(target: TableDef | EntityConstructor): Record<string, ColumnDef>;
7713
7743
  type TargetType<T extends TableDef | EntityConstructor> = T;
7714
7744
 
7715
- declare function columnToOpenApiSchema(col: ColumnDef): OpenApiSchema;
7745
+ declare function columnToOpenApiSchema(col: ColumnDef, dialect?: OpenApiDialect): OpenApiSchema;
7716
7746
 
7717
- declare function dtoToOpenApiSchema<T extends TableDef | EntityConstructor, TExclude extends keyof any>(target: T, exclude?: TExclude[]): OpenApiSchema;
7718
- declare function createDtoToOpenApiSchema<T extends TableDef | EntityConstructor, TExclude extends keyof any>(target: T, exclude?: TExclude[]): OpenApiSchema;
7719
- declare function updateDtoToOpenApiSchema<T extends TableDef | EntityConstructor, TExclude extends keyof any>(target: T, exclude?: TExclude[]): OpenApiSchema;
7747
+ declare function dtoToOpenApiSchema<T extends TableDef | EntityConstructor, TExclude extends keyof any>(target: T, exclude?: TExclude[], dialect?: OpenApiDialect): OpenApiSchema;
7748
+ declare function createDtoToOpenApiSchema<T extends TableDef | EntityConstructor, TExclude extends keyof any>(target: T, exclude?: TExclude[], dialect?: OpenApiDialect): OpenApiSchema;
7749
+ declare function updateDtoToOpenApiSchema<T extends TableDef | EntityConstructor, TExclude extends keyof any>(target: T, exclude?: TExclude[], dialect?: OpenApiDialect): OpenApiSchema;
7720
7750
 
7721
- declare function whereInputToOpenApiSchema<T extends TableDef | EntityConstructor>(target: T): OpenApiSchema;
7751
+ declare function columnToFilterSchema(col: ColumnDef, dialect?: OpenApiDialect): OpenApiSchema;
7752
+ declare function whereInputToOpenApiSchema<T extends TableDef | EntityConstructor>(target: T, dialect?: OpenApiDialect): OpenApiSchema;
7722
7753
 
7723
7754
  declare function relationFilterToOpenApiSchema(relation: RelationDef, options?: {
7724
7755
  exclude?: string[];
7725
7756
  include?: string[];
7726
- }): OpenApiSchema;
7757
+ }, dialect?: OpenApiDialect, depth?: number): OpenApiSchema;
7727
7758
  declare function whereInputWithRelationsToOpenApiSchema<T extends TableDef | EntityConstructor>(target: T, options?: {
7728
7759
  columnExclude?: string[];
7729
7760
  columnInclude?: string[];
7730
7761
  relationExclude?: string[];
7731
7762
  relationInclude?: string[];
7732
7763
  maxDepth?: number;
7733
- }): OpenApiSchema;
7734
- declare function nestedWhereInputToOpenApiSchema<T extends TableDef | EntityConstructor>(target: T, depth?: number): OpenApiSchema;
7764
+ }, dialect?: OpenApiDialect): OpenApiSchema;
7765
+ declare function nestedWhereInputToOpenApiSchema<T extends TableDef | EntityConstructor>(target: T, depth?: number, dialect?: OpenApiDialect): OpenApiSchema;
7735
7766
 
7736
7767
  interface ComponentOptions {
7737
7768
  prefix?: string;
@@ -7757,11 +7788,19 @@ declare function generateRelationComponents(tables: Array<{
7757
7788
  name: string;
7758
7789
  table: TableDef;
7759
7790
  }>, options?: ComponentOptions): Record<string, OpenApiSchema>;
7760
- declare function createApiComponentsSection(schemas: Record<string, OpenApiSchema>, parameters?: Record<string, OpenApiSchema>, responses?: Record<string, OpenApiSchema>): OpenApiComponent;
7791
+ declare function createApiComponentsSection(schemas: Record<string, OpenApiSchema>, parameters?: Record<string, OpenApiParameterObject>, responses?: Record<string, OpenApiResponseObject>): OpenApiComponent;
7761
7792
  declare function createRef(path: string): ComponentReference;
7762
7793
  declare function schemaToRef(schemaName: string): ComponentReference;
7763
7794
  declare function parameterToRef(paramName: string): ComponentReference;
7764
7795
  declare function responseToRef(responseName: string): ComponentReference;
7796
+ declare function canonicalizeSchema(schema: OpenApiSchema): OpenApiSchema;
7797
+ declare function computeSchemaHash(schema: OpenApiSchema): string;
7798
+ interface DeterministicNamingState {
7799
+ contentHashToName: Map<string, string>;
7800
+ nameToContentHash: Map<string, string>;
7801
+ }
7802
+ declare function createDeterministicNamingState(): DeterministicNamingState;
7803
+ declare function getDeterministicComponentName(baseName: string, schema: OpenApiSchema, state: DeterministicNamingState): string;
7765
7804
  declare function replaceWithRefs(schema: OpenApiSchema, schemaMap: Record<string, OpenApiSchema>, path?: string): OpenApiSchema;
7766
7805
  declare function extractReusableSchemas(schema: OpenApiSchema, existing?: Record<string, OpenApiSchema>, prefix?: string): Record<string, OpenApiSchema>;
7767
7806
 
@@ -7775,4 +7814,4 @@ declare const paginationParamsSchema: OpenApiSchema;
7775
7814
  declare function toPaginationParams(): OpenApiParameter[];
7776
7815
  declare function pagedResponseToOpenApiSchema<T extends OpenApiSchema>(itemSchema: T): OpenApiSchema;
7777
7816
 
7778
- export { type AliasRefNode, type AnyDomainEvent, type ApiRouteDefinition, type ArithmeticExpressionNode, type TableRef as AstTableRef, AsyncLocalStorage, BelongsTo, BelongsToMany, type BelongsToManyOptions, type BelongsToManyRelation, type BelongsToOptions, type BelongsToReference, type BelongsToReferenceApi, type BelongsToRelation, type BetweenExpressionNode, BigIntTypeStrategy, type BinaryExpressionNode, type BitwiseExpressionNode, type BooleanFilter, BooleanTypeStrategy, type CascadeMode, type CaseExpressionNode, type CastExpressionNode, type CheckConstraint, type CollateExpressionNode, Column, type ColumnDef, type ColumnDiff, type ColumnInput, type ColumnNode, type ColumnOptions, type ColumnRef, type ColumnToTs, type ColumnType, type ComponentOptions, type ComponentReference, ConstructorMaterializationStrategy, type CreateDto, type CreateTediousClientOptions, type DatabaseCheck, type DatabaseColumn, type DatabaseIndex, type DatabaseSchema, type DatabaseTable, type DateFilter, DateTimeTypeStrategy, type DbExecutor, type DbExecutorFactory, DecimalTypeStrategy, type DecoratedEntityInstance, DefaultBelongsToReference, DefaultEntityMaterializer, DefaultHasManyCollection, DefaultManyToManyCollection, DefaultTypeStrategy, type DefaultValue, DeleteQueryBuilder, type DialectName, type DomainEvent, DomainEventBus, type DomainEventHandler, type Dto, Entity, type EntityContext, type EntityInstance, type EntityMaterializationStrategy, type EntityMaterializer, type EntityOptions, type PrimaryKey$1 as EntityPrimaryKey, EntityStatus, type ExecutionContext, type ExistsExpressionNode, type ExpressionNode, type ExpressionVisitor, type FieldFilter, type FilterOperator, type FilterValue, type ForeignKeyReference, type FunctionNode, type GroupConcatOptions, type HasDomainEvents, HasMany, type HasManyCollection, type HasManyOptions, type HasManyRelation, HasOne, type HasOneOptions, type HasOneReference, type HasOneReferenceApi, type HasOneRelation, type HydrationContext, type HydrationMetadata, type HydrationPivotPlan, type HydrationPlan, type HydrationRelationPlan, type InExpressionNode, type InExpressionRight, type IndexColumn, type IndexDef, type InferRow, type InitialHandlers, InsertQueryBuilder, IntegerTypeStrategy, InterceptorPipeline, type IntrospectOptions, type JsonPathNode, type Jsonify, type JsonifyScalar, type LiteralNode, type LiteralValue, type LogicalExpressionNode, type ManyToManyCollection, type MssqlClientLike, MySqlDialect, type MysqlClientLike, type NestedDtoOptions, type NullExpressionNode, type NumberFilter, type OpenApiComponent, type OpenApiDocumentInfo, type OpenApiOperation, type OpenApiParameter, type OpenApiSchema, type OpenApiType, type OperandNode, type OperandVisitor, Orm, type OrmDomainEvent, type OrmInterceptor, type OrmOptions, OrmSession, type OrmSessionOptions, type PagedResponse, type PaginatedResult, type PaginationParams, Pool, type PoolAdapter, type PoolLease, type PoolOptions, type PooledConnectionAdapter, type PostgresClientLike, PostgresDialect, PrimaryKey, type Primitive, PrototypeMaterializationStrategy, type QueryContext, type QueryInterceptor, type QueryLogEntry, type QueryLogger, type QueryResult, type RawDefaultValue, type ReferentialAction, type RelationChange, type RelationChangeEntry, type RelationDef, type RelationKey$1 as RelationKey, RelationKinds, type RelationMap, type RelationTargetTable, type RelationType, type RenderColumnOptions, STANDARD_COLUMN_TYPES, type SaveGraphInputPayload, type SaveGraphInputScalar, type SaveGraphJsonScalar, type SaveGraphSessionOptions, type ScalarSubqueryNode, type SchemaChange, type SchemaChangeKind, type SchemaDiffOptions, type SchemaGenerateResult, type SchemaIntrospector, type SchemaPlan, SelectQueryBuilder, type SelectQueryInput, type SelectableKeys, type SimpleQueryRunner, type SimpleWhereInput, type Simplify, SqlServerDialect, type SqliteClientLike, SqliteDialect, type StandardColumnType, type StringFilter, StringTypeStrategy, type SynchronizeOptions, type TableDef, type TableHooks, type TableOptions, type TableRef$1 as TableRef, type TargetType, type TediousColumn, type TediousConnectionLike, type TediousModule, type TediousRequest, type TediousRequestCtor, type TediousTypes, type TrackedEntity, TypeMappingService, type TypeMappingStrategy, TypeScriptGenerator, type TypedExpression, type TypedLike, type UpdateDto, UpdateQueryBuilder, UuidTypeStrategy, type ValueOperandInput, type WhereInput, type WindowFunctionNode, type WithRelations, abs, acos, add, addDomainEvent, age, aliasRef, and, applyFilter, arrayAppend, asType, ascii, asin, atan, atan2, avg, belongsTo, belongsToMany, between, bitAnd, bitLength, bitOr, bitXor, bootstrapEntities, buildFilterExpression, calculateTotalPages, caseWhen, cast, cbrt, ceil, ceiling, char, charLength, chr, clearExpressionDispatchers, clearOperandDispatchers, coalesce, col, collate, columnOperand, columnToOpenApiSchema, columnTypeToOpenApiFormat, columnTypeToOpenApiType, computePaginationMetadata, concat, concatWs, correlateBy, cos, cot, count, countAll, createApiComponentsSection, createDtoToOpenApiSchema, createEntityFromRow, createEntityProxy, createExecutorFromQueryRunner, createMssqlExecutor, createMysqlExecutor, createPooledExecutorFactory, createPostgresExecutor, createQueryLoggingExecutor, createRef, createSqliteExecutor, createTediousExecutor, createTediousMssqlClient, currentDate, currentTime, dateAdd, dateDiff, dateFormat, dateSub, dateTrunc, day, dayOfWeek, deepCloneSchema, defineTable, degrees, deleteFrom, denseRank, diffSchema, div, dtoToOpenApiSchema, endOfMonth, entityRef, entityRefs, eq, esel, exclude, executeHydrated, executeHydratedPlain, executeHydratedPlainWithContexts, executeHydratedWithContexts, executeSchemaSql, executeSchemaSqlFor, exists, exp, extract, extractReusableSchemas, firstValue, floor, fromUnixTime, generateComponentSchemas, generateCreateTableSql, generateOpenApiDocument, generateRelationComponents, generateSchemaSql, generateSchemaSqlFor, getColumn, getColumnMap, getDecoratorMetadata, getSchemaIntrospector, getTableDefFromEntity, greatest, groupConcat, gt, gte, hasMany, hasNextPage as hasNextPageMeta, hasOne, hasPrevPage as hasPrevPageMeta, hour, hydrateRows, ifNull, inList, inSubquery, initcap, insertInto, instr, introspectSchema, isCaseExpressionNode, isCastExpressionNode, isCollateExpressionNode, isComponentReference, isExpressionSelectionNode, isFunctionNode, isNotNull, isNull, isOperandNode, isTableDef, isValueOperandInput, isWindowFunctionNode, jsonArrayAgg, jsonContains, jsonLength, jsonPath, jsonSet, jsonify, lag, lastValue, lead, least, left, length, like, ln, loadBelongsToManyRelation, loadBelongsToRelation, loadHasManyRelation, loadHasOneRelation, localTime, localTimestamp, locate, log, log10, log2, logBase, lower, lpad, lt, lte, ltrim, mapFields, materializeAs, max, md5, mergeSchemas, min, minute, mod, month, mul, neq, nestedDtoToOpenApiSchema, nestedWhereInputToOpenApiSchema, normalizeColumnType, notBetween, notExists, notInList, notInSubquery, notLike, now, ntile, nullif, octetLength, or, outerRef, pagedResponseToOpenApiSchema, paginationParamsSchema, parameterToRef, pi, pick, position, pow, power, quarter, radians, rand, random, rank, registerExpressionDispatcher, registerOperandDispatcher, registerSchemaIntrospector, relationFilterToOpenApiSchema, relationLoaderCache, renderColumnDefinition, renderTypeWithArgs, repeat, replace, replaceWithRefs, responseToRef, reverse, right, round, rowNumber, rowsToQueryResult, rpad, rtrim, schemaToJson, schemaToRef, second, sel, selectFrom, selectFromEntity, setRelations, sha1, sha2, shiftLeft, shiftRight, sign, sin, space, sqrt, stddev, sub, substr, sum, synchronizeSchema, tableRef, tan, toColumnRef, toPagedResponse, toPagedResponseBuilder, toPaginationParams, toResponse, toResponseBuilder, toTableRef, trim, trunc, truncate, typeMappingService, unixTimestamp, update, updateDtoToOpenApiSchema, updateDtoWithRelationsToOpenApiSchema, upper, utcNow, valueToOperand, variance, visitExpression, visitOperand, weekOfYear, whereInputToOpenApiSchema, whereInputWithRelationsToOpenApiSchema, windowFunction, withDefaults, withDefaultsBuilder, year };
7817
+ export { type AliasRefNode, type AnyDomainEvent, type ApiRouteDefinition, type ArithmeticExpressionNode, type TableRef as AstTableRef, AsyncLocalStorage, BelongsTo, BelongsToMany, type BelongsToManyOptions, type BelongsToManyRelation, type BelongsToOptions, type BelongsToReference, type BelongsToReferenceApi, type BelongsToRelation, type BetweenExpressionNode, BigIntTypeStrategy, type BinaryExpressionNode, type BitwiseExpressionNode, type BooleanFilter, BooleanTypeStrategy, type CascadeMode, type CaseExpressionNode, type CastExpressionNode, type CheckConstraint, type CollateExpressionNode, Column, type ColumnDef, type ColumnDiff, type ColumnInput, type ColumnNode, type ColumnOptions, type ColumnRef, type ColumnToTs, type ColumnType, type ComponentOptions, type ComponentReference, ConstructorMaterializationStrategy, type CreateDto, type CreateTediousClientOptions, type DatabaseCheck, type DatabaseColumn, type DatabaseIndex, type DatabaseSchema, type DatabaseTable, type DateFilter, DateTimeTypeStrategy, type DbExecutor, type DbExecutorFactory, DecimalTypeStrategy, type DecoratedEntityInstance, DefaultBelongsToReference, DefaultEntityMaterializer, DefaultHasManyCollection, DefaultManyToManyCollection, DefaultTypeStrategy, type DefaultValue, DeleteQueryBuilder, type DialectName, type DomainEvent, DomainEventBus, type DomainEventHandler, type Dto, Entity, type EntityContext, type EntityInstance, type EntityMaterializationStrategy, type EntityMaterializer, type EntityOptions, type PrimaryKey$1 as EntityPrimaryKey, EntityStatus, type ExecutionContext, type ExistsExpressionNode, type ExpressionNode, type ExpressionVisitor, type FieldFilter, type FilterOperator, type FilterValue, type ForeignKeyReference, type FunctionNode, type GroupConcatOptions, type HasDomainEvents, HasMany, type HasManyCollection, type HasManyOptions, type HasManyRelation, HasOne, type HasOneOptions, type HasOneReference, type HasOneReferenceApi, type HasOneRelation, type HydrationContext, type HydrationMetadata, type HydrationPivotPlan, type HydrationPlan, type HydrationRelationPlan, type InExpressionNode, type InExpressionRight, type IndexColumn, type IndexDef, type InferRow, type InitialHandlers, InsertQueryBuilder, IntegerTypeStrategy, InterceptorPipeline, type IntrospectOptions, type JsonArray, type JsonObject, type JsonPathNode, type JsonValue, type Jsonify, type JsonifyScalar, type LiteralNode, type LiteralValue, type LogicalExpressionNode, type ManyToManyCollection, type MssqlClientLike, MySqlDialect, type MysqlClientLike, type NestedDtoOptions, type NullExpressionNode, type NumberFilter, type OpenApiComponent, type OpenApiDialect, type OpenApiDocument, type OpenApiDocumentInfo, type OpenApiDocumentOptions, type OpenApiOperation, type OpenApiParameter, type OpenApiParameterObject, type OpenApiResponseObject, type OpenApiSchema, type OpenApiType, type OperandNode, type OperandVisitor, Orm, type OrmDomainEvent, type OrmInterceptor, type OrmOptions, OrmSession, type OrmSessionOptions, type PagedResponse, type PaginatedResult, type PaginationParams, Pool, type PoolAdapter, type PoolLease, type PoolOptions, type PooledConnectionAdapter, type PostgresClientLike, PostgresDialect, PrimaryKey, type Primitive, PrototypeMaterializationStrategy, type QueryContext, type QueryInterceptor, type QueryLogEntry, type QueryLogger, type QueryResult, type RawDefaultValue, type ReferentialAction, type RelationChange, type RelationChangeEntry, type RelationDef, type RelationKey$1 as RelationKey, RelationKinds, type RelationMap, type RelationTargetTable, type RelationType, type RenderColumnOptions, STANDARD_COLUMN_TYPES, type SaveGraphInputPayload, type SaveGraphInputScalar, type SaveGraphJsonScalar, type SaveGraphSessionOptions, type ScalarSubqueryNode, type SchemaChange, type SchemaChangeKind, type SchemaDiffOptions, type SchemaGenerateResult, type SchemaIntrospector, type SchemaPlan, SelectQueryBuilder, type SelectQueryInput, type SelectableKeys, type SimpleQueryRunner, type SimpleWhereInput, type Simplify, SqlServerDialect, type SqliteClientLike, SqliteDialect, type StandardColumnType, type StringFilter, StringTypeStrategy, type SynchronizeOptions, type TableDef, type TableHooks, type TableOptions, type TableRef$1 as TableRef, type TargetType, type TediousColumn, type TediousConnectionLike, type TediousModule, type TediousRequest, type TediousRequestCtor, type TediousTypes, type TrackedEntity, TypeMappingService, type TypeMappingStrategy, TypeScriptGenerator, type TypedExpression, type TypedLike, type UpdateDto, UpdateQueryBuilder, UuidTypeStrategy, type ValueOperandInput, type WhereInput, type WindowFunctionNode, type WithRelations, abs, acos, add, addDomainEvent, age, aliasRef, and, applyFilter, applyNullability, arrayAppend, asType, ascii, asin, atan, atan2, avg, belongsTo, belongsToMany, between, bitAnd, bitLength, bitOr, bitXor, bootstrapEntities, buildFilterExpression, calculateTotalPages, canonicalizeSchema, caseWhen, cast, cbrt, ceil, ceiling, char, charLength, chr, clearExpressionDispatchers, clearOperandDispatchers, coalesce, col, collate, columnOperand, columnToFilterSchema, columnToOpenApiSchema, columnTypeToOpenApiFormat, columnTypeToOpenApiType, computePaginationMetadata, computeSchemaHash, concat, concatWs, correlateBy, cos, cot, count, countAll, createApiComponentsSection, createDeterministicNamingState, createDtoToOpenApiSchema, createEntityFromRow, createEntityProxy, createExecutorFromQueryRunner, createMssqlExecutor, createMysqlExecutor, createPooledExecutorFactory, createPostgresExecutor, createQueryLoggingExecutor, createRef, createSqliteExecutor, createTediousExecutor, createTediousMssqlClient, currentDate, currentTime, dateAdd, dateDiff, dateFormat, dateSub, dateTrunc, day, dayOfWeek, deepCloneSchema, defineTable, degrees, deleteFrom, denseRank, diffSchema, div, dtoToOpenApiSchema, endOfMonth, entityRef, entityRefs, eq, esel, exclude, executeHydrated, executeHydratedPlain, executeHydratedPlainWithContexts, executeHydratedWithContexts, executeSchemaSql, executeSchemaSqlFor, exists, exp, extract, extractReusableSchemas, firstValue, floor, fromUnixTime, generateComponentSchemas, generateCreateTableSql, generateOpenApiDocument, generateRelationComponents, generateSchemaSql, generateSchemaSqlFor, getColumn, getColumnMap, getDecoratorMetadata, getDeterministicComponentName, getOpenApiVersionForDialect, getSchemaIntrospector, getTableDefFromEntity, greatest, groupConcat, gt, gte, hasMany, hasNextPage as hasNextPageMeta, hasOne, hasPrevPage as hasPrevPageMeta, hour, hydrateRows, ifNull, inList, inSubquery, initcap, insertInto, instr, introspectSchema, isCaseExpressionNode, isCastExpressionNode, isCollateExpressionNode, isComponentReference, isExpressionSelectionNode, isFunctionNode, isNotNull, isNull, isNullableColumn, isOperandNode, isTableDef, isValueOperandInput, isWindowFunctionNode, jsonArrayAgg, jsonContains, jsonLength, jsonPath, jsonSet, jsonify, lag, lastValue, lead, least, left, length, like, ln, loadBelongsToManyRelation, loadBelongsToRelation, loadHasManyRelation, loadHasOneRelation, localTime, localTimestamp, locate, log, log10, log2, logBase, lower, lpad, lt, lte, ltrim, mapFields, materializeAs, max, md5, mergeSchemas, min, minute, mod, month, mul, neq, nestedDtoToOpenApiSchema, nestedWhereInputToOpenApiSchema, normalizeColumnType, notBetween, notExists, notInList, notInSubquery, notLike, now, ntile, nullif, octetLength, or, outerRef, pagedResponseToOpenApiSchema, paginationParamsSchema, parameterToRef, pi, pick, position, pow, power, quarter, radians, rand, random, rank, registerExpressionDispatcher, registerOperandDispatcher, registerSchemaIntrospector, relationFilterToOpenApiSchema, relationLoaderCache, renderColumnDefinition, renderTypeWithArgs, repeat, replace, replaceWithRefs, responseToRef, reverse, right, round, rowNumber, rowsToQueryResult, rpad, rtrim, schemaToJson, schemaToRef, second, sel, selectFrom, selectFromEntity, setRelations, sha1, sha2, shiftLeft, shiftRight, sign, sin, space, sqrt, stddev, sub, substr, sum, synchronizeSchema, tableRef, tan, toColumnRef, toPagedResponse, toPagedResponseBuilder, toPaginationParams, toResponse, toResponseBuilder, toTableRef, trim, trunc, truncate, typeMappingService, unixTimestamp, update, updateDtoToOpenApiSchema, updateDtoWithRelationsToOpenApiSchema, upper, utcNow, valueToOperand, variance, visitExpression, visitOperand, weekOfYear, whereInputToOpenApiSchema, whereInputWithRelationsToOpenApiSchema, windowFunction, withDefaults, withDefaultsBuilder, year };