typhex 0.1.0-alpha.0 → 0.1.0-alpha.2

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 (179) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +1 -1
  3. package/dist/arrow/aggregates.d.ts +5 -1
  4. package/dist/arrow/aggregates.d.ts.map +1 -1
  5. package/dist/arrow/aggregates.js +23 -1
  6. package/dist/arrow/aggregates.js.map +1 -1
  7. package/dist/arrow/index.d.ts +7 -3
  8. package/dist/arrow/index.d.ts.map +1 -1
  9. package/dist/arrow/index.js +24 -3
  10. package/dist/arrow/index.js.map +1 -1
  11. package/dist/dbs/base-migrator.d.ts +0 -1
  12. package/dist/dbs/base-migrator.d.ts.map +1 -1
  13. package/dist/dbs/base-migrator.js +5 -7
  14. package/dist/dbs/base-migrator.js.map +1 -1
  15. package/dist/dbs/postgres/driver.d.ts.map +1 -1
  16. package/dist/dbs/postgres/driver.js +3 -0
  17. package/dist/dbs/postgres/driver.js.map +1 -1
  18. package/dist/dbs/postgres/query-compiler.d.ts +6 -2
  19. package/dist/dbs/postgres/query-compiler.d.ts.map +1 -1
  20. package/dist/dbs/postgres/query-compiler.js +11 -11
  21. package/dist/dbs/postgres/query-compiler.js.map +1 -1
  22. package/dist/dbs/query-compiler.d.ts +13 -13
  23. package/dist/dbs/query-compiler.d.ts.map +1 -1
  24. package/dist/dbs/query-compiler.js +11 -37
  25. package/dist/dbs/query-compiler.js.map +1 -1
  26. package/dist/dbs/sqlite/index.d.ts +2 -2
  27. package/dist/dbs/sqlite/index.d.ts.map +1 -1
  28. package/dist/dbs/sqlite/index.js +1 -1
  29. package/dist/dbs/sqlite/index.js.map +1 -1
  30. package/dist/dbs/sqlite/query-compiler.d.ts +4 -1
  31. package/dist/dbs/sqlite/query-compiler.d.ts.map +1 -1
  32. package/dist/dbs/sqlite/query-compiler.js +11 -2
  33. package/dist/dbs/sqlite/query-compiler.js.map +1 -1
  34. package/dist/dbs/types.d.ts +5 -11
  35. package/dist/dbs/types.d.ts.map +1 -1
  36. package/dist/dbs/types.js +1 -1
  37. package/dist/dbs/types.js.map +1 -1
  38. package/dist/driver/compile-only.d.ts +8 -0
  39. package/dist/driver/compile-only.d.ts.map +1 -0
  40. package/dist/driver/compile-only.js +26 -0
  41. package/dist/driver/compile-only.js.map +1 -0
  42. package/dist/driver/sqlite.d.ts.map +1 -1
  43. package/dist/driver/sqlite.js +3 -0
  44. package/dist/driver/sqlite.js.map +1 -1
  45. package/dist/entity/entity.d.ts +1 -1
  46. package/dist/entity/entity.d.ts.map +1 -1
  47. package/dist/entity/entity.js +14 -11
  48. package/dist/entity/entity.js.map +1 -1
  49. package/dist/entity/global-driver.d.ts +5 -3
  50. package/dist/entity/global-driver.d.ts.map +1 -1
  51. package/dist/entity/global-driver.js +51 -2
  52. package/dist/entity/global-driver.js.map +1 -1
  53. package/dist/entity/index.d.ts +1 -1
  54. package/dist/entity/index.d.ts.map +1 -1
  55. package/dist/entity/index.js +1 -1
  56. package/dist/entity/index.js.map +1 -1
  57. package/dist/entity/pk-columns.d.ts +0 -2
  58. package/dist/entity/pk-columns.d.ts.map +1 -1
  59. package/dist/entity/pk-columns.js +2 -10
  60. package/dist/entity/pk-columns.js.map +1 -1
  61. package/dist/entity/relations.d.ts +0 -4
  62. package/dist/entity/relations.d.ts.map +1 -1
  63. package/dist/entity/relations.js.map +1 -1
  64. package/dist/index.d.ts +3 -4
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +1 -1
  67. package/dist/index.js.map +1 -1
  68. package/dist/migration/cli.js +120 -117
  69. package/dist/migration/cli.js.map +1 -1
  70. package/dist/migration/index.d.ts +1 -1
  71. package/dist/migration/index.d.ts.map +1 -1
  72. package/dist/migration/runner.d.ts +2 -6
  73. package/dist/migration/runner.d.ts.map +1 -1
  74. package/dist/migration/runner.js +1 -3
  75. package/dist/migration/runner.js.map +1 -1
  76. package/dist/migration/types.d.ts +0 -5
  77. package/dist/migration/types.d.ts.map +1 -1
  78. package/dist/orm/db.d.ts +16 -10
  79. package/dist/orm/db.d.ts.map +1 -1
  80. package/dist/orm/db.js +37 -9
  81. package/dist/orm/db.js.map +1 -1
  82. package/dist/orm/helpers/insert-graph/insert-graph-batch-executor.d.ts +2 -2
  83. package/dist/orm/helpers/insert-graph/insert-graph-batch-executor.d.ts.map +1 -1
  84. package/dist/orm/helpers/insert-graph/insert-graph-batch-executor.js.map +1 -1
  85. package/dist/orm/helpers/insert-graph/insert-graph-executor.d.ts +3 -3
  86. package/dist/orm/helpers/insert-graph/insert-graph-executor.d.ts.map +1 -1
  87. package/dist/orm/helpers/insert-graph/insert-graph-executor.js.map +1 -1
  88. package/dist/orm/helpers/insert-graph/insert-graph-planner.d.ts +3 -3
  89. package/dist/orm/helpers/insert-graph/insert-graph-planner.d.ts.map +1 -1
  90. package/dist/orm/helpers/insert-graph/insert-graph-planner.js +1 -1
  91. package/dist/orm/helpers/insert-graph/insert-graph-planner.js.map +1 -1
  92. package/dist/orm/helpers/insert-graph/insert-graph-sequential-executor.d.ts +2 -2
  93. package/dist/orm/helpers/insert-graph/insert-graph-sequential-executor.d.ts.map +1 -1
  94. package/dist/orm/helpers/insert-graph/insert-graph-sequential-executor.js.map +1 -1
  95. package/dist/orm/helpers/insert-graph/sequence-id-assigner.d.ts +2 -2
  96. package/dist/orm/helpers/insert-graph/sequence-id-assigner.d.ts.map +1 -1
  97. package/dist/orm/helpers/insert-graph/sequence-id-assigner.js.map +1 -1
  98. package/dist/orm/helpers/query-plan/query-plan.d.ts +19 -11
  99. package/dist/orm/helpers/query-plan/query-plan.d.ts.map +1 -1
  100. package/dist/orm/helpers/query-plan/query-plan.js +24 -4
  101. package/dist/orm/helpers/query-plan/query-plan.js.map +1 -1
  102. package/dist/orm/helpers/relations/relation-assembler.d.ts.map +1 -1
  103. package/dist/orm/helpers/relations/relation-assembler.js +14 -5
  104. package/dist/orm/helpers/relations/relation-assembler.js.map +1 -1
  105. package/dist/orm/helpers/relations/relation-fetcher.d.ts +20 -0
  106. package/dist/orm/helpers/relations/relation-fetcher.d.ts.map +1 -1
  107. package/dist/orm/helpers/relations/relation-fetcher.js +106 -23
  108. package/dist/orm/helpers/relations/relation-fetcher.js.map +1 -1
  109. package/dist/orm/index.d.ts +1 -1
  110. package/dist/orm/index.d.ts.map +1 -1
  111. package/dist/orm/index.js +1 -1
  112. package/dist/orm/index.js.map +1 -1
  113. package/dist/orm/insert-builder.d.ts +37 -0
  114. package/dist/orm/insert-builder.d.ts.map +1 -0
  115. package/dist/orm/insert-builder.js +134 -0
  116. package/dist/orm/insert-builder.js.map +1 -0
  117. package/dist/orm/query-builder.d.ts +51 -52
  118. package/dist/orm/query-builder.d.ts.map +1 -1
  119. package/dist/orm/query-builder.js +197 -223
  120. package/dist/orm/query-builder.js.map +1 -1
  121. package/dist/orm/query-execution-context.d.ts +5 -0
  122. package/dist/orm/query-execution-context.d.ts.map +1 -0
  123. package/dist/orm/query-execution-context.js +16 -0
  124. package/dist/orm/query-execution-context.js.map +1 -0
  125. package/dist/orm/query-helpers.d.ts.map +1 -1
  126. package/dist/orm/query-helpers.js +1 -1
  127. package/dist/orm/query-helpers.js.map +1 -1
  128. package/dist/orm/query-state.d.ts +10 -6
  129. package/dist/orm/query-state.d.ts.map +1 -1
  130. package/dist/orm/query-state.js.map +1 -1
  131. package/dist/orm/statement.d.ts +33 -0
  132. package/dist/orm/statement.d.ts.map +1 -0
  133. package/dist/orm/statement.js +31 -0
  134. package/dist/orm/statement.js.map +1 -0
  135. package/dist/parser/group-by.d.ts.map +1 -1
  136. package/dist/parser/group-by.js +2 -1
  137. package/dist/parser/group-by.js.map +1 -1
  138. package/dist/parser/predicate-walk.d.ts.map +1 -1
  139. package/dist/parser/predicate-walk.js +12 -32
  140. package/dist/parser/predicate-walk.js.map +1 -1
  141. package/dist/parser/resolve.js +1 -1
  142. package/dist/parser/resolve.js.map +1 -1
  143. package/dist/parser/select.js +3 -3
  144. package/dist/parser/select.js.map +1 -1
  145. package/dist/schema/column-definition.d.ts +10 -0
  146. package/dist/schema/column-definition.d.ts.map +1 -0
  147. package/dist/schema/column-definition.js +13 -0
  148. package/dist/schema/column-definition.js.map +1 -0
  149. package/dist/transformer/ir-emit.d.ts.map +1 -1
  150. package/dist/transformer/ir-emit.js +3 -0
  151. package/dist/transformer/ir-emit.js.map +1 -1
  152. package/dist/transformer/select-transformer.d.ts.map +1 -1
  153. package/dist/transformer/select-transformer.js +18 -0
  154. package/dist/transformer/select-transformer.js.map +1 -1
  155. package/dist/transformer/ts-aggregates.d.ts.map +1 -1
  156. package/dist/transformer/ts-aggregates.js +9 -14
  157. package/dist/transformer/ts-aggregates.js.map +1 -1
  158. package/dist/transformer/where-transformer.d.ts.map +1 -1
  159. package/dist/transformer/where-transformer.js +15 -24
  160. package/dist/transformer/where-transformer.js.map +1 -1
  161. package/docs/guide/entities-relations.md +12 -3
  162. package/docs/guide/getting-started.md +10 -3
  163. package/docs/public-api.md +6 -6
  164. package/docs/reference/api.md +14 -6
  165. package/docs/reference/architecture.md +11 -3
  166. package/etc/typhex.api.md +59 -59
  167. package/package.json +2 -2
  168. package/dist/dbs/sqlite/driver.d.ts +0 -9
  169. package/dist/dbs/sqlite/driver.d.ts.map +0 -1
  170. package/dist/dbs/sqlite/driver.js +0 -66
  171. package/dist/dbs/sqlite/driver.js.map +0 -1
  172. package/dist/schema/index.d.ts +0 -2
  173. package/dist/schema/index.d.ts.map +0 -1
  174. package/dist/schema/index.js +0 -2
  175. package/dist/schema/index.js.map +0 -1
  176. package/dist/schema/types.d.ts +0 -16
  177. package/dist/schema/types.d.ts.map +0 -1
  178. package/dist/schema/types.js +0 -40
  179. package/dist/schema/types.js.map +0 -1
package/etc/typhex.api.md CHANGED
@@ -38,23 +38,6 @@ export type ColumnChange = {
38
38
  to: boolean;
39
39
  };
40
40
 
41
- // @public
42
- export type ColumnDef = string | {
43
- [K in DialectName]?: string;
44
- };
45
-
46
- // @public
47
- export interface CompiledCteBody {
48
- // (undocumented)
49
- bodyParams: unknown[];
50
- // (undocumented)
51
- bodySql: string;
52
- // (undocumented)
53
- name: string;
54
- // (undocumented)
55
- recursive?: boolean;
56
- }
57
-
58
41
  // @public
59
42
  export interface Connection<TDialect extends DialectInfo = DialectInfo> {
60
43
  readonly dialect: TDialect;
@@ -90,11 +73,7 @@ export class Db implements QueryExecutor {
90
73
  get dialect(): DialectInfo;
91
74
  downMigration(name: string, dir?: string): Promise<void>;
92
75
  get driver(): Driver;
93
- dryRunMigrations(dir?: string): Promise<{
94
- applied: MigrationRecord[];
95
- pending: PendingMigration[];
96
- skipped: string[];
97
- }>;
76
+ dryRunMigrations(dir?: string): Promise<MigrationDryRun>;
98
77
  static fromConfig(options?: {
99
78
  configPath?: string;
100
79
  cwd?: string;
@@ -112,6 +91,7 @@ export class Db implements QueryExecutor {
112
91
  changes: number;
113
92
  }>;
114
93
  runMigrations(dir?: string): Promise<MigrationResult>;
94
+ setAsDefault(): this;
115
95
  transaction<T>(fn: (trx: Trx) => Promise<T>, options?: TransactionOptions): Promise<T>;
116
96
  upMigration(name: string, dir?: string): Promise<void>;
117
97
  validate(): Promise<void>;
@@ -133,13 +113,20 @@ export interface DbColumnInfo {
133
113
 
134
114
  // @public
135
115
  export type DbOptions = {
136
- driver: Driver;
137
116
  migrationsFolder?: string;
117
+ entities?: readonly RegisteredEntity[];
118
+ setAsDefault?: boolean;
119
+ } & ({
120
+ driver: Driver;
138
121
  } | {
139
122
  dialect: DialectName;
140
123
  database?: string;
141
124
  url?: string;
142
- migrationsFolder?: string;
125
+ });
126
+
127
+ // @public
128
+ export type DialectColumnDef = string | {
129
+ [K in DialectName]?: string;
143
130
  };
144
131
 
145
132
  // @public
@@ -155,7 +142,7 @@ export type DialectName = "sqlite" | "postgres";
155
142
  export type DiffAction = {
156
143
  kind: "add_table";
157
144
  table: string;
158
- schema: Record<string, ColumnDef>;
145
+ schema: Record<string, DialectColumnDef>;
159
146
  } | {
160
147
  kind: "drop_table";
161
148
  table: string;
@@ -164,7 +151,7 @@ export type DiffAction = {
164
151
  kind: "add_column";
165
152
  table: string;
166
153
  column: string;
167
- definition: ColumnDef;
154
+ definition: DialectColumnDef;
168
155
  } | {
169
156
  kind: "drop_column";
170
157
  table: string;
@@ -175,7 +162,7 @@ export type DiffAction = {
175
162
  table: string;
176
163
  column: string;
177
164
  oldDef: string;
178
- newDef: ColumnDef;
165
+ newDef: DialectColumnDef;
179
166
  columnInfo: DbColumnInfo;
180
167
  changes: ColumnChange[];
181
168
  };
@@ -199,11 +186,7 @@ export interface Driver<TDialect extends DialectInfo = DialectInfo> {
199
186
  }
200
187
 
201
188
  // @public (undocumented)
202
- export function dryRunMigrations(driver: Driver, dir: string): Promise<{
203
- applied: MigrationRecord[];
204
- pending: PendingMigration[];
205
- skipped: string[];
206
- }>;
189
+ export function dryRunMigrations(driver: Driver, dir: string): Promise<MigrationDryRun>;
207
190
 
208
191
  // @public
209
192
  export function Entity<TTable extends string, const TSchema extends Record<string, string>, const TRels extends RelationsMap = {}>(tableName: TTable, schema: TSchema, relations?: TRels): EntityClass<TTable, TSchema, TRels>;
@@ -269,9 +252,6 @@ export type Flatten<T> = {
269
252
  // @public
270
253
  export function generateMigrationFiles(driver: Driver, entities: readonly RegisteredEntity[]): Promise<MigrationFile[]>;
271
254
 
272
- // @public
273
- export function getPkColumnsFromSchema(schema: Record<string, string>): string[];
274
-
275
255
  // @public
276
256
  export type HasDefault<S extends string> = Lowercase<S> extends `${string}default${string}` ? true : false;
277
257
 
@@ -291,11 +271,12 @@ export type InferTable<T extends Record<string, string>> = Flatten<{
291
271
  }>;
292
272
 
293
273
  // @public
294
- export class InsertBuilder<C extends AnyEntityClass, R> extends QueryBuilder<C> implements PromiseLike<R> {
295
- doNothing(): Promise<R>;
296
- doUpdate(updateColumns?: string[]): Promise<R>;
274
+ export class InsertBuilder<C extends AnyEntityClass, R> implements PromiseLike<R> {
275
+ doNothing(): Statement<R>;
276
+ doUpdate(updateColumns?: string[]): Statement<R>;
297
277
  onConflict(columns: string[]): this;
298
- then<T1 = R, T2 = never>(res?: ((v: R) => T1 | PromiseLike<T1>) | null, rej?: ((e: unknown) => T2 | PromiseLike<T2>) | null): PromiseLike<T1 | T2>;
278
+ then<T1 = R, T2 = never>(res?: ((value: R) => T1 | PromiseLike<T1>) | null, rej?: ((reason: unknown) => T2 | PromiseLike<T2>) | null): PromiseLike<T1 | T2>;
279
+ toSql(): SqlAndParams;
299
280
  }
300
281
 
301
282
  // @public
@@ -511,12 +492,12 @@ export interface PostgresDriverOptions {
511
492
  // @public
512
493
  export class QueryBuilder<C extends AnyEntityClass = AnyEntityClass, T = EntityInstance<C>, Ctes extends Record<string, unknown> = NoCtes, FromKind extends QueryFromKind = "table"> {
513
494
  clone(): QueryBuilder<C, T, Ctes, FromKind>;
514
- count(): Promise<number>;
495
+ count(): Statement<number>;
515
496
  crossJoin(keysOrFn: string[] | ((row: T) => unknown)): this;
516
- delete(): Promise<number>;
517
- deleteReturning(): Promise<EntityInstance<C>[]>;
518
- findById(id: unknown): Promise<EntityInstance<C> | null>;
519
- first(): Promise<EntityInstance<C> | undefined>;
497
+ delete(): Statement<number>;
498
+ deleteReturning(): Statement<EntityInstance<C>[]>;
499
+ findById(id: unknown): Statement<EntityInstance<C> | null>;
500
+ first(): Statement<EntityInstance<C> | undefined>;
520
501
  from<N extends keyof Ctes & string>(name: N): QueryBuilder<C, Ctes[N], Ctes, "cte">;
521
502
  // (undocumented)
522
503
  from<Row = EntityInstance<C>>(name: string): QueryBuilder<C, Row, Ctes, "cte">;
@@ -550,14 +531,14 @@ export class QueryBuilder<C extends AnyEntityClass = AnyEntityClass, T = EntityI
550
531
  rightJoin<E extends AnyEntityClass>(entity: E, on: (joined: EntityInstance<E>, row: T) => boolean): this;
551
532
  select<U>(fn: (row: SelectRow<C>) => U): QueryBuilder<C, U, Ctes>;
552
533
  select(columns: string[]): QueryBuilder<C, T, Ctes>;
553
- toArray(): Promise<EntityInstance<C>[]>;
534
+ toArray(): Statement<EntityInstance<C>[]>;
554
535
  unionAll<OC extends AnyEntityClass, OT>(other: QueryBuilder<OC, OT, any, any>): QueryBuilder<C, T, Ctes, FromKind>;
555
- update(set: Record<string, unknown>): Promise<number>;
536
+ update(set: Record<string, unknown>): Statement<number>;
556
537
  // (undocumented)
557
- update(setFn: HasRegisteredCtes<Ctes> extends true ? (row: EntityInstance<C>, ctes: RegisteredCtes<Ctes>) => Record<string, unknown> : (row: EntityInstance<C>) => Record<string, unknown>): Promise<number>;
558
- updateReturning(set: Record<string, unknown>): Promise<EntityInstance<C>[]>;
538
+ update(setFn: HasRegisteredCtes<Ctes> extends true ? (row: EntityInstance<C>, ctes: RegisteredCtes<Ctes>) => Record<string, unknown> : (row: EntityInstance<C>) => Record<string, unknown>): Statement<number>;
539
+ updateReturning(set: Record<string, unknown>): Statement<EntityInstance<C>[]>;
559
540
  // (undocumented)
560
- updateReturning(setFn: HasRegisteredCtes<Ctes> extends true ? (row: EntityInstance<C>, ctes: RegisteredCtes<Ctes>) => Record<string, unknown> : (row: EntityInstance<C>) => Record<string, unknown>): Promise<EntityInstance<C>[]>;
541
+ updateReturning(setFn: HasRegisteredCtes<Ctes> extends true ? (row: EntityInstance<C>, ctes: RegisteredCtes<Ctes>) => Record<string, unknown> : (row: EntityInstance<C>) => Record<string, unknown>): Statement<EntityInstance<C>[]>;
561
542
  // Warning: (ae-forgotten-export) The symbol "HasRegisteredCtes" needs to be exported by the entry point index.d.ts
562
543
  // Warning: (ae-forgotten-export) The symbol "TableRow" needs to be exported by the entry point index.d.ts
563
544
  // Warning: (ae-forgotten-export) The symbol "RegisteredCtes" needs to be exported by the entry point index.d.ts
@@ -606,6 +587,15 @@ export interface RelationDef<_E = unknown, TType extends RelationType = Relation
606
587
  readonly _target: () => unknown;
607
588
  }
608
589
 
590
+ // @public
591
+ export interface RelationFetchSql {
592
+ // (undocumented)
593
+ params: unknown[];
594
+ relation: string;
595
+ // (undocumented)
596
+ sql: string;
597
+ }
598
+
609
599
  // @public
610
600
  export type RelationKind<TType extends RelationType> = TType extends "one-to-many" | "many-to-many" ? "many" : "one";
611
601
 
@@ -666,6 +656,15 @@ export class SingleRowQueryBuilder<T = unknown> {
666
656
  save(): Promise<void>;
667
657
  }
668
658
 
659
+ // @public
660
+ export interface SqlAndParams {
661
+ // (undocumented)
662
+ params: unknown[];
663
+ relationFetches?: RelationFetchSql[];
664
+ // (undocumented)
665
+ sql: string;
666
+ }
667
+
669
668
  // @public
670
669
  export interface SqliteDriverOptions {
671
670
  database?: string;
@@ -704,6 +703,17 @@ export type SQLTypeMap = {
704
703
  bigserial: bigint;
705
704
  };
706
705
 
706
+ // @public
707
+ export class Statement<T> implements PromiseLike<T> {
708
+ // (undocumented)
709
+ catch<T2 = never>(rej?: ((reason: unknown) => T2 | PromiseLike<T2>) | null): Promise<T | T2>;
710
+ // (undocumented)
711
+ finally(onFinally?: (() => void) | null): Promise<T>;
712
+ // (undocumented)
713
+ then<T1 = T, T2 = never>(res?: ((value: T) => T1 | PromiseLike<T1>) | null, rej?: ((reason: unknown) => T2 | PromiseLike<T2>) | null): Promise<T1 | T2>;
714
+ toSql(): SqlAndParams;
715
+ }
716
+
707
717
  // @public
708
718
  export type StripParens<S extends string> = S extends `${infer Base}(${string})${infer Rest}` ? `${Base}${Rest}` : S;
709
719
 
@@ -759,16 +769,6 @@ export interface TyphexConfig {
759
769
  // @public (undocumented)
760
770
  export function upMigration(driver: Driver, dir: string, name: string): Promise<void>;
761
771
 
762
- // @public
763
- export interface WithClause {
764
- // (undocumented)
765
- inner: unknown;
766
- // (undocumented)
767
- kind: "simple" | "recursive";
768
- // (undocumented)
769
- name: string;
770
- }
771
-
772
772
  // (No @packageDocumentation comment for this package)
773
773
 
774
774
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typhex",
3
- "version": "0.1.0-alpha.0",
3
+ "version": "0.1.0-alpha.2",
4
4
  "description": "TypeScript ORM with arrow-function query predicates",
5
5
  "homepage": "https://kalyvasio.github.io/typhex/",
6
6
  "repository": {
@@ -97,7 +97,7 @@
97
97
  "node": ">=18"
98
98
  },
99
99
  "dependencies": {
100
- "acorn": "^8.14.0",
100
+ "acorn": "^8.17.0",
101
101
  "better-sqlite3": "^12.10.0",
102
102
  "pg": "^8.19.0"
103
103
  },
@@ -1,9 +0,0 @@
1
- /**
2
- * SQLite driver using better-sqlite3. Async wrapper.
3
- */
4
- import type { Driver } from "../../driver/types.js";
5
- export interface SqliteDriverOptions {
6
- path: string;
7
- }
8
- export declare function createSqliteDriver(options: SqliteDriverOptions): Driver;
9
- //# sourceMappingURL=driver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../../src/dbs/sqlite/driver.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,MAAM,EAKP,MAAM,uBAAuB,CAAC;AAuC/B,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAmCvE"}
@@ -1,66 +0,0 @@
1
- /**
2
- * SQLite driver using better-sqlite3. Async wrapper.
3
- */
4
- import { createRequire } from "node:module";
5
- import { SqliteTrx } from "./trx.js";
6
- import { sqliteDialect } from "./dialect.js";
7
- import { isRecord } from "../../utils.js";
8
- const require = createRequire(import.meta.url);
9
- function toBindable(value) {
10
- if (value === undefined || value === null)
11
- return null;
12
- if (value instanceof Date)
13
- return value.toISOString();
14
- if (typeof value === "boolean")
15
- return value ? 1 : 0;
16
- if (typeof value === "number" ||
17
- typeof value === "string" ||
18
- typeof value === "bigint" ||
19
- Buffer.isBuffer(value))
20
- return value;
21
- if (isRecord(value))
22
- return JSON.stringify(value);
23
- return value;
24
- }
25
- function bindableParams(params) {
26
- return params.map(toBindable);
27
- }
28
- function executeSql(db, sql, params) {
29
- const stmt = db.prepare(sql);
30
- if (stmt.reader) {
31
- return { rows: stmt.all(...bindableParams(params)), changes: 0 };
32
- }
33
- const info = stmt.run(...bindableParams(params));
34
- return { rows: [], lastID: info.lastInsertRowid, changes: info.changes };
35
- }
36
- export function createSqliteDriver(options) {
37
- const Database = require("better-sqlite3");
38
- const db = new Database(options.path);
39
- function makeConnection() {
40
- return {
41
- dialect: sqliteDialect,
42
- async execute(sql, params = []) {
43
- return Promise.resolve(executeSql(db, sql, params));
44
- },
45
- async release() {
46
- /* no-op for SQLite */
47
- },
48
- };
49
- }
50
- return {
51
- dialect: sqliteDialect,
52
- async execute(sql, params = []) {
53
- return Promise.resolve(executeSql(db, sql, params));
54
- },
55
- connect() {
56
- return Promise.resolve(makeConnection());
57
- },
58
- createTrx(conn, options) {
59
- return new SqliteTrx(conn, options);
60
- },
61
- async close() {
62
- db.close();
63
- },
64
- };
65
- }
66
- //# sourceMappingURL=driver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../../src/dbs/sqlite/driver.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export * from "./types.js";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from "./types.js";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -1,16 +0,0 @@
1
- /**
2
- * Schema and table definition types.
3
- */
4
- export interface ColumnDef {
5
- type: string;
6
- primaryKey?: boolean;
7
- autoIncrement?: boolean;
8
- nullable?: boolean;
9
- default?: string | number;
10
- }
11
- export type TableDefinition = Record<string, string | ColumnDef>;
12
- /** Normalize to ColumnDef */
13
- export declare function normalizeCol(def: string | ColumnDef): ColumnDef;
14
- export declare function getColumnNames(def: TableDefinition): string[];
15
- export declare function sqlType(def: TableDefinition, col: string): string;
16
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAMjE,6BAA6B;AAC7B,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAW/D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,EAAE,CAE7D;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAajE"}
@@ -1,40 +0,0 @@
1
- /**
2
- * Schema and table definition types.
3
- */
4
- function stripForConstraintCheck(def) {
5
- return def.replaceAll(/'[^']*'/g, "").replaceAll(/--[^\n]*/g, "");
6
- }
7
- /** Normalize to ColumnDef */
8
- export function normalizeCol(def) {
9
- if (typeof def === "string") {
10
- const stripped = stripForConstraintCheck(def);
11
- return {
12
- type: def,
13
- primaryKey: /\bprimary\s+key\b/i.test(stripped),
14
- autoIncrement: /\bautoincrement\b/i.test(stripped),
15
- nullable: !/\bnot\s+null\b/i.test(stripped),
16
- };
17
- }
18
- return def;
19
- }
20
- export function getColumnNames(def) {
21
- return Object.keys(def);
22
- }
23
- export function sqlType(def, col) {
24
- const d = def[col];
25
- const c = normalizeCol(d);
26
- const lower = c.type.toLowerCase();
27
- let out = c.type;
28
- if (c.primaryKey && !lower.includes("primary key"))
29
- out += " PRIMARY KEY";
30
- if (c.autoIncrement && !lower.includes("autoincrement"))
31
- out += " AUTOINCREMENT";
32
- if (c.nullable === false && !lower.includes("not null"))
33
- out += " NOT NULL";
34
- if (c.default !== undefined)
35
- out +=
36
- " DEFAULT " +
37
- (typeof c.default === "number" ? c.default : `'${String(c.default).replaceAll("'", "''")}'`);
38
- return out;
39
- }
40
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,SAAS,uBAAuB,CAAC,GAAW;IAC1C,OAAO,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,YAAY,CAAC,GAAuB;IAClD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;QAC9C,OAAO;YACL,IAAI,EAAE,GAAG;YACT,UAAU,EAAE,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/C,aAAa,EAAE,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC;YAClD,QAAQ,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;SAC5C,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAoB;IACjD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAoB,EAAE,GAAW;IACvD,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;IACjB,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;QAAE,GAAG,IAAI,cAAc,CAAC;IAC1E,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC;QAAE,GAAG,IAAI,gBAAgB,CAAC;IACjF,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,GAAG,IAAI,WAAW,CAAC;IAC5E,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;QACzB,GAAG;YACD,WAAW;gBACX,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACjG,OAAO,GAAG,CAAC;AACb,CAAC"}