@zerotal/orm 1.7.4 → 1.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/api-surface.md CHANGED
@@ -277,13 +277,6 @@ class ForeignKeyBuilder = {
277
277
  toConstraintSQL: () => string
278
278
  }
279
279
 
280
- class HookRegistry = {
281
- new (): HookRegistry
282
- static onAfterRun: ((ModelClass: ClassRef, hook: HookName, model: unknown) => void) | undefined
283
- static register: <T>(ModelClass: ClassRef, hook: HookName, fn: HookFn<T>) => void
284
- static run: <T>(ModelClass: ClassRef, hook: HookName, model: T) => Promise<void>
285
- }
286
-
287
280
  class JsonCast = {
288
281
  new <T = unknown>(mapper?: CastMapper<T> | undefined): JsonCast<T>
289
282
  fields: () => CastField[]
@@ -801,14 +794,10 @@ class UnsupportedDialectError = {
801
794
  readonly status: number
802
795
  }
803
796
 
804
- const columnRegistry = Map<ClassRef, Map<string, ColumnOptions>>
805
-
806
797
  const DB = { table(tableName: string): QueryBuilder; raw<T = Record<string, unknown>>(sql: TemplateStringsArray | string, ...rest: unknown[]): Promise<T[]>; transaction<T>(callback: (tx?: SQLInstance) => Promise<T>, attempts?: number): Promise<T>; beginTransaction(): Promise<ManualTransaction>; onPrimary(): { table(name: string): QueryBuilder; }; currentTx(): unknown | undefined; advisoryLock<T>(key: number, callback: () => Promise<T>): Promise<T>; preventNPlusOne(options?: NPlusOneOptions): void; allowNPlusOne(pattern: string, options?: { once?: boolean; }): void;}
807
798
 
808
799
  const ModelInspector = { load(pattern: string, cwd?: string): Promise<void>; all(): ModelSchema[]; fromClass(ctor: ClassRef): ModelSchema | null;}
809
800
 
810
- const modelsByName = Map<string, ClassRef>
811
-
812
801
  const relationRegistry = Map<ClassRef, Map<string, RelationMetadata>>
813
802
 
814
803
  const Schema = { create(table: string, callback: (bp: Blueprint) => void): Promise<void>; createIfNotExists(table: string, callback: (bp: Blueprint) => void): Promise<void>; table(name: string, callback: (bp: Blueprint) => void): Promise<void>; alter(name: string, callback: (bp: Blueprint) => void): Promise<void>; drop(table: string): Promise<void>; dropIfExists(table: string): Promise<void>; rename(from: string, to: string): Promise<void>; hasTable(table: string): Promise<boolean>; hasColumn(table: string, column: string): Promise<boolean>;}
@@ -819,32 +808,14 @@ const SchemaInspector = { tables(): Promise<string[]>; columns(table: stri
819
808
 
820
809
  const TransactionContext = AsyncLocalStorage<SQLInstance>
821
810
 
822
- function _clearModelConnections = () => void
823
-
824
- function _clearTransitionCallbacks = () => void
825
-
826
811
  function _getConnection = () => SQLInstance
827
812
 
828
813
  function _getDbConnectionOverride = () => SQLInstance | null
829
814
 
830
- function _getDialect = () => 'sqlite' | 'postgres' | 'mysql'
831
-
832
- function _getModelConnection = () => SQLInstance
833
-
834
815
  function _globalScopeRegistry = () => Map<ClassRef, Map<string, GlobalScopeCallback>>
835
816
 
836
- function _normaliseSqliteUrl = (raw: string) => string
837
-
838
- function _resolveConn = (ModelClass?: typeof BaseModel) => SQLInstance
839
-
840
- function _setBaseModelConnection = (conn: SQLInstance | null) => void
841
-
842
- function _setBaseModelDialect = (dialect: 'sqlite' | 'postgres' | 'mysql') => void
843
-
844
817
  function _setDbConnection = (conn: SQLInstance | null) => void
845
818
 
846
- function _setQueryBuilderDialect = (d: Dialect) => void
847
-
848
819
  function _setReadReplicas = (primary: SQLInstance, replicas: SQLInstance[]) => void
849
820
 
850
821
  function _suppressHooks = <T>(fn: () => Promise<T>) => Promise<T>
@@ -857,8 +828,6 @@ function belongsTo = (related: () => unknown, options: BelongsToOptions) => (_va
857
828
 
858
829
  function column = { (): ColumnDecorator; (type: ColumnShorthand): ColumnDecorator; (options: ColumnOptions): ColumnDecorator; (type: ColumnShorthand, options: Omit<ColumnOptions, 'type'>): ColumnDecorator;}
859
830
 
860
- function columnsFor = (ctor: ClassRef) => Map<string, ColumnOptions> | null
861
-
862
831
  function createReadWriteRouter = (primary: SQLInstance, replicas: SQLInstance[]) => SQLInstance
863
832
 
864
833
  function currentOrmContext = () => OrmContext
@@ -885,10 +854,6 @@ function json = <T = unknown>(mapper?: CastMapper<T>) => JsonCast<T>
885
854
 
886
855
  function manyToMany = (related: () => unknown, options: ManyToManyOptions) => (_value: unknown, context: ClassFieldDecoratorContext) => void
887
856
 
888
- function modelByName = (name: string) => ClassRef | undefined
889
-
890
- function modelForParam = (paramName: string) => ImplicitModel | undefined
891
-
892
857
  function morphedByMany = (related: () => unknown, options: MorphedByManyOptions) => (_value: unknown, context: ClassFieldDecoratorContext) => void
893
858
 
894
859
  function morphMany = (related: () => unknown, options: MorphManyOptions) => (_value: unknown, context: ClassFieldDecoratorContext) => void
@@ -903,14 +868,10 @@ function objectOf = <T = unknown>(mapper?: CastMapper<T>) => JsonCast<T>
903
868
 
904
869
  function preventNPlusOne = (options?: NPlusOneOptions) => void
905
870
 
906
- function registerColumn = (ctor: ClassRef, name: string, options: ColumnOptions) => void
907
-
908
871
  function registerConnectionResolver = (fn: ContextConnectionResolver | null) => void
909
872
 
910
873
  function registerImplicitBinding = () => void
911
874
 
912
- function registerModel = (ctor: ClassRef) => void
913
-
914
875
  function registerModelConnection = (name: string, conn: SQLInstance, dialect?: Dialect) => void
915
876
 
916
877
  function resetOrmContext = () => void
@@ -1206,21 +1167,6 @@ interface PaginateResult = {
1206
1167
  url: (page: number, baseUrl?: string, query?: Record<string, string>) => string
1207
1168
  }
1208
1169
 
1209
- interface QueryState = {
1210
- distinct: boolean
1211
- groupBys: string[]
1212
- havings: HavingClause[]
1213
- joins: JoinClause[]
1214
- limit: number | undefined
1215
- lock: string | undefined
1216
- offset: number | undefined
1217
- orders: OrderClause[]
1218
- selects: string[]
1219
- table: string
1220
- unions: UnionClause[]
1221
- wheres: WhereClause[]
1222
- }
1223
-
1224
1170
  interface RelationMetadata = {
1225
1171
  firstKey?: string
1226
1172
  foreignKey: string
@@ -1315,8 +1261,6 @@ interface TransitionContext = {
1315
1261
 
1316
1262
  type CastMapper = ((raw: unknown) => T) | (new (...args: never[]) => T)
1317
1263
 
1318
- type ClassRef = abstract new (...args: never[]) => unknown
1319
-
1320
1264
  type Columns = { [K in keyof T & string]: K extends `_${string}` ? never : T[K] extends (...args: any[]) => any ? never : K; }[keyof T & string]
1321
1265
 
1322
1266
  type ColumnShorthand = 'string' | 'text' | 'integer' | 'number' | 'float' | 'boolean' | 'datetime' | 'date' | 'json' | 'array' | 'encrypted' | 'encrypted:json'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zerotal/orm",
3
- "version": "1.7.4",
3
+ "version": "1.7.5",
4
4
  "license": "MIT",
5
5
  "maturity": "stable",
6
6
  "private": false,
@@ -31,8 +31,8 @@
31
31
  "typecheck": "tsc --noEmit"
32
32
  },
33
33
  "dependencies": {
34
- "@zerotal/core": "1.7.4",
35
- "@zerotal/validator": "1.7.4"
34
+ "@zerotal/core": "1.7.5",
35
+ "@zerotal/validator": "1.7.5"
36
36
  },
37
37
  "devDependencies": {
38
38
  "typescript": "^5.8.0"
package/src/config.ts CHANGED
@@ -19,11 +19,14 @@ export interface DatabaseConfigShape {
19
19
  * mutating queries (INSERT, UPDATE, DELETE, DDL) plus transactions to the
20
20
  * primary. No code changes are required in controllers or models.
21
21
  *
22
+ * `env()` with no fallback is `string | undefined`, so an unset replica has to
23
+ * drop out rather than widen the array — this field is `string[]`.
24
+ *
22
25
  * @example
23
26
  * replicas: [
24
27
  * env('REPLICA_1_URL'),
25
28
  * env('REPLICA_2_URL'),
26
- * ]
29
+ * ].filter((url) => url !== undefined)
27
30
  */
28
31
  replicas?: string[];
29
32
  /**