kysely 0.14.0 → 0.14.1

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.
@@ -15,6 +15,7 @@ export * from './query-builder/function-builder.js';
15
15
  export * from './query-builder/insert-result.js';
16
16
  export * from './query-builder/delete-result.js';
17
17
  export * from './query-builder/update-result.js';
18
+ export * from './query-builder/on-conflict-builder.js';
18
19
  export * from './raw-builder/raw-builder.js';
19
20
  export * from './query-executor/query-executor.js';
20
21
  export * from './query-executor/default-query-executor.js';
package/dist/cjs/index.js CHANGED
@@ -27,6 +27,7 @@ __exportStar(require("./query-builder/function-builder.js"), exports);
27
27
  __exportStar(require("./query-builder/insert-result.js"), exports);
28
28
  __exportStar(require("./query-builder/delete-result.js"), exports);
29
29
  __exportStar(require("./query-builder/update-result.js"), exports);
30
+ __exportStar(require("./query-builder/on-conflict-builder.js"), exports);
30
31
  __exportStar(require("./raw-builder/raw-builder.js"), exports);
31
32
  __exportStar(require("./query-executor/query-executor.js"), exports);
32
33
  __exportStar(require("./query-executor/default-query-executor.js"), exports);
@@ -3,7 +3,7 @@ import { ColumnNode } from '../operation-node/column-node.js';
3
3
  import { ReferenceExpressionNode } from '../operation-node/operation-node-utils.js';
4
4
  import { ReferenceNode } from '../operation-node/reference-node.js';
5
5
  import { PrimitiveValue } from '../util/object-utils.js';
6
- import { AnyColumn, AnyColumnWithTable, RowType, ValueType } from '../util/type-utils.js';
6
+ import { AnyColumn, AnyColumnWithTable, ExtractColumnType, ValueType } from '../util/type-utils.js';
7
7
  import { RawBuilder } from '../raw-builder/raw-builder.js';
8
8
  import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
9
9
  import { ParseContext } from './parse-context.js';
@@ -13,7 +13,7 @@ export declare type ReferenceExpression<DB, TB extends keyof DB> = StringReferen
13
13
  export declare type ReferenceExpressionOrList<DB, TB extends keyof DB> = ReferenceExpression<DB, TB> | ReadonlyArray<ReferenceExpression<DB, TB>>;
14
14
  export declare type StringReference<DB, TB extends keyof DB> = AnyColumn<DB, TB> | AnyColumnWithTable<DB, TB>;
15
15
  export declare type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE> = RE extends string ? ExtractTypeFromStringReference<DB, TB, RE> : RE extends RawBuilder<infer O> ? O : RE extends (qb: any) => RawBuilder<infer O> ? O : RE extends SelectQueryBuilder<any, any, infer O> ? ValueType<O> : RE extends (qb: any) => SelectQueryBuilder<any, any, infer O> ? ValueType<O> : PrimitiveValue;
16
- declare type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string, R = RowType<DB, TB>> = RE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : RE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : RE extends keyof R ? R[RE] : PrimitiveValue;
16
+ declare type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string> = RE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : RE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : RE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, RE> : PrimitiveValue;
17
17
  export declare function parseReferenceExpressionOrList(ctx: ParseContext, arg: ReferenceExpressionOrList<any, any>): ReferenceExpressionNode[];
18
18
  export declare function parseReferenceExpression(ctx: ParseContext, exp: ReferenceExpression<any, any>): ReferenceExpressionNode;
19
19
  export declare function parseStringReference(ref: string): ColumnNode | ReferenceNode;
@@ -1,7 +1,7 @@
1
1
  import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
2
2
  import { AliasedQueryBuilder, SelectQueryBuilder } from '../query-builder/select-query-builder.js';
3
3
  import { SelectionNode } from '../operation-node/selection-node.js';
4
- import { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, RowType, ValueType } from '../util/type-utils.js';
4
+ import { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, ExtractColumnType, RowType, ValueType } from '../util/type-utils.js';
5
5
  import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
6
6
  import { ParseContext } from './parse-context.js';
7
7
  import { AliasedComplexExpression } from './complex-expression-parser.js';
@@ -22,7 +22,7 @@ export declare type Selection<DB, TB extends keyof DB, SE> = {
22
22
  declare type ExtractAliasFromSelectExpression<SE> = SE extends string ? ExtractAliasFromStringSelectExpression<SE> : SE extends AliasedRawBuilder<any, infer RA> ? RA : SE extends (qb: any) => AliasedRawBuilder<any, infer RA> ? RA : SE extends AliasedQueryBuilder<any, any, any, infer QA> ? QA : SE extends (qb: any) => AliasedQueryBuilder<any, any, any, infer QA> ? QA : SE extends DynamicReferenceBuilder<infer RA> ? ExtractAliasFromStringSelectExpression<RA> : never;
23
23
  declare type ExtractAliasFromStringSelectExpression<SE extends string> = SE extends `${string}.${string}.${string} as ${infer A}` ? A : SE extends `${string}.${string} as ${infer A}` ? A : SE extends `${string} as ${infer A}` ? A : SE extends `${string}.${string}.${infer C}` ? C : SE extends `${string}.${infer C}` ? C : SE;
24
24
  declare type ExtractTypeFromSelectExpression<DB, TB extends keyof DB, SE, A extends keyof any> = SE extends string ? ExtractTypeFromStringSelectExpression<DB, TB, SE, A> : SE extends AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : SE extends (qb: any) => AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : SE extends AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? ValueType<O> : never : SE extends (qb: any) => AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? ValueType<O> : never : SE extends DynamicReferenceBuilder<infer RA> ? A extends ExtractAliasFromStringSelectExpression<RA> ? ExtractTypeFromStringSelectExpression<DB, TB, RA, A> | undefined : never : never;
25
- declare type ExtractTypeFromStringSelectExpression<DB, TB extends keyof DB, SE extends string, A extends keyof any, R = RowType<DB, TB>> = SE extends `${infer SC}.${infer T}.${infer C} as ${infer RA}` ? RA extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C} as ${infer RA}` ? RA extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends `${infer C} as ${infer RA}` ? RA extends A ? C extends keyof R ? R[C] : never : never : SE extends `${infer SC}.${infer T}.${infer C}` ? C extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C}` ? C extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends A ? SE extends keyof R ? R[SE] : never : never;
25
+ declare type ExtractTypeFromStringSelectExpression<DB, TB extends keyof DB, SE extends string, A extends keyof any> = SE extends `${infer SC}.${infer T}.${infer C} as ${infer RA}` ? RA extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C} as ${infer RA}` ? RA extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends `${infer C} as ${infer RA}` ? RA extends A ? C extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, C> : never : never : SE extends `${infer SC}.${infer T}.${infer C}` ? C extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C}` ? C extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends A ? SE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, SE> : never : never;
26
26
  export declare function parseSelectExpressionOrList(ctx: ParseContext, selection: SelectExpressionOrList<any, any>): SelectionNode[];
27
27
  export declare function parseSelectAll(table?: string | string[]): SelectionNode[];
28
28
  export {};
@@ -377,7 +377,9 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
377
377
  * do update set "first_name" = $3
378
378
  * ```
379
379
  */
380
- doUpdateSet(updates: MutationObject<DB, TB>): OnConflictUpdateBuilder<DB & Record<'excluded', DB[TB]>, TB | 'excluded'>;
380
+ doUpdateSet(updates: MutationObject<DB, TB>): OnConflictUpdateBuilder<{
381
+ [K in keyof DB | 'excluded']: K extends keyof DB ? DB[K] : DB[TB];
382
+ }, TB | 'excluded'>;
381
383
  }
382
384
  export interface OnConflictBuilderProps {
383
385
  readonly onConflictNode: OnConflictNode;
@@ -39,12 +39,11 @@ export declare type ValueType<T> = T[keyof T];
39
39
  * // Row == Person & Movie
40
40
  * ```
41
41
  */
42
- export declare type RowType<DB, TB extends keyof DB> = UnionToIntersection<DB[TB]>;
43
- /**
44
- * Evil typescript magic to convert a union type `A | B | C` into an
45
- * intersection type `A & B & C`.
46
- */
47
- declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
42
+ export declare type RowType<DB, TB extends keyof DB> = {
43
+ [C in AnyColumn<DB, TB>]: {
44
+ [T in TB]: C extends keyof DB[T] ? DB[T][C] : never;
45
+ }[TB];
46
+ };
48
47
  /**
49
48
  * Given a database type and a union of table names in that db, returns
50
49
  * a union type with all possible column names.
@@ -79,6 +78,12 @@ declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) e
79
78
  export declare type AnyColumn<DB, TB extends keyof DB> = {
80
79
  [T in TB]: keyof DB[T];
81
80
  }[TB] & string;
81
+ /**
82
+ * Extracts a column type.
83
+ */
84
+ export declare type ExtractColumnType<DB, TB extends keyof DB, C> = {
85
+ [T in TB]: C extends keyof DB[T] ? DB[T][C] : never;
86
+ }[TB];
82
87
  /**
83
88
  * Given a database type and a union of table names in that db, returns
84
89
  * a union type with all possible `table`.`column` combinations.
@@ -146,4 +151,3 @@ export declare type UnknownRow = Record<string, unknown>;
146
151
  export declare type Nullable<T> = {
147
152
  [P in keyof T]: T[P] | null;
148
153
  };
149
- export {};
@@ -15,6 +15,7 @@ export * from './query-builder/function-builder.js';
15
15
  export * from './query-builder/insert-result.js';
16
16
  export * from './query-builder/delete-result.js';
17
17
  export * from './query-builder/update-result.js';
18
+ export * from './query-builder/on-conflict-builder.js';
18
19
  export * from './raw-builder/raw-builder.js';
19
20
  export * from './query-executor/query-executor.js';
20
21
  export * from './query-executor/default-query-executor.js';
package/dist/esm/index.js CHANGED
@@ -15,6 +15,7 @@ export * from './query-builder/function-builder.js';
15
15
  export * from './query-builder/insert-result.js';
16
16
  export * from './query-builder/delete-result.js';
17
17
  export * from './query-builder/update-result.js';
18
+ export * from './query-builder/on-conflict-builder.js';
18
19
  export * from './raw-builder/raw-builder.js';
19
20
  export * from './query-executor/query-executor.js';
20
21
  export * from './query-executor/default-query-executor.js';
@@ -3,7 +3,7 @@ import { ColumnNode } from '../operation-node/column-node.js';
3
3
  import { ReferenceExpressionNode } from '../operation-node/operation-node-utils.js';
4
4
  import { ReferenceNode } from '../operation-node/reference-node.js';
5
5
  import { PrimitiveValue } from '../util/object-utils.js';
6
- import { AnyColumn, AnyColumnWithTable, RowType, ValueType } from '../util/type-utils.js';
6
+ import { AnyColumn, AnyColumnWithTable, ExtractColumnType, ValueType } from '../util/type-utils.js';
7
7
  import { RawBuilder } from '../raw-builder/raw-builder.js';
8
8
  import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
9
9
  import { ParseContext } from './parse-context.js';
@@ -13,7 +13,7 @@ export declare type ReferenceExpression<DB, TB extends keyof DB> = StringReferen
13
13
  export declare type ReferenceExpressionOrList<DB, TB extends keyof DB> = ReferenceExpression<DB, TB> | ReadonlyArray<ReferenceExpression<DB, TB>>;
14
14
  export declare type StringReference<DB, TB extends keyof DB> = AnyColumn<DB, TB> | AnyColumnWithTable<DB, TB>;
15
15
  export declare type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE> = RE extends string ? ExtractTypeFromStringReference<DB, TB, RE> : RE extends RawBuilder<infer O> ? O : RE extends (qb: any) => RawBuilder<infer O> ? O : RE extends SelectQueryBuilder<any, any, infer O> ? ValueType<O> : RE extends (qb: any) => SelectQueryBuilder<any, any, infer O> ? ValueType<O> : PrimitiveValue;
16
- declare type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string, R = RowType<DB, TB>> = RE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : RE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : RE extends keyof R ? R[RE] : PrimitiveValue;
16
+ declare type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string> = RE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : RE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : RE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, RE> : PrimitiveValue;
17
17
  export declare function parseReferenceExpressionOrList(ctx: ParseContext, arg: ReferenceExpressionOrList<any, any>): ReferenceExpressionNode[];
18
18
  export declare function parseReferenceExpression(ctx: ParseContext, exp: ReferenceExpression<any, any>): ReferenceExpressionNode;
19
19
  export declare function parseStringReference(ref: string): ColumnNode | ReferenceNode;
@@ -1,7 +1,7 @@
1
1
  import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
2
2
  import { AliasedQueryBuilder, SelectQueryBuilder } from '../query-builder/select-query-builder.js';
3
3
  import { SelectionNode } from '../operation-node/selection-node.js';
4
- import { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, RowType, ValueType } from '../util/type-utils.js';
4
+ import { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, ExtractColumnType, RowType, ValueType } from '../util/type-utils.js';
5
5
  import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
6
6
  import { ParseContext } from './parse-context.js';
7
7
  import { AliasedComplexExpression } from './complex-expression-parser.js';
@@ -22,7 +22,7 @@ export declare type Selection<DB, TB extends keyof DB, SE> = {
22
22
  declare type ExtractAliasFromSelectExpression<SE> = SE extends string ? ExtractAliasFromStringSelectExpression<SE> : SE extends AliasedRawBuilder<any, infer RA> ? RA : SE extends (qb: any) => AliasedRawBuilder<any, infer RA> ? RA : SE extends AliasedQueryBuilder<any, any, any, infer QA> ? QA : SE extends (qb: any) => AliasedQueryBuilder<any, any, any, infer QA> ? QA : SE extends DynamicReferenceBuilder<infer RA> ? ExtractAliasFromStringSelectExpression<RA> : never;
23
23
  declare type ExtractAliasFromStringSelectExpression<SE extends string> = SE extends `${string}.${string}.${string} as ${infer A}` ? A : SE extends `${string}.${string} as ${infer A}` ? A : SE extends `${string} as ${infer A}` ? A : SE extends `${string}.${string}.${infer C}` ? C : SE extends `${string}.${infer C}` ? C : SE;
24
24
  declare type ExtractTypeFromSelectExpression<DB, TB extends keyof DB, SE, A extends keyof any> = SE extends string ? ExtractTypeFromStringSelectExpression<DB, TB, SE, A> : SE extends AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : SE extends (qb: any) => AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : SE extends AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? ValueType<O> : never : SE extends (qb: any) => AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? ValueType<O> : never : SE extends DynamicReferenceBuilder<infer RA> ? A extends ExtractAliasFromStringSelectExpression<RA> ? ExtractTypeFromStringSelectExpression<DB, TB, RA, A> | undefined : never : never;
25
- declare type ExtractTypeFromStringSelectExpression<DB, TB extends keyof DB, SE extends string, A extends keyof any, R = RowType<DB, TB>> = SE extends `${infer SC}.${infer T}.${infer C} as ${infer RA}` ? RA extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C} as ${infer RA}` ? RA extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends `${infer C} as ${infer RA}` ? RA extends A ? C extends keyof R ? R[C] : never : never : SE extends `${infer SC}.${infer T}.${infer C}` ? C extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C}` ? C extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends A ? SE extends keyof R ? R[SE] : never : never;
25
+ declare type ExtractTypeFromStringSelectExpression<DB, TB extends keyof DB, SE extends string, A extends keyof any> = SE extends `${infer SC}.${infer T}.${infer C} as ${infer RA}` ? RA extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C} as ${infer RA}` ? RA extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends `${infer C} as ${infer RA}` ? RA extends A ? C extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, C> : never : never : SE extends `${infer SC}.${infer T}.${infer C}` ? C extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C}` ? C extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends A ? SE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, SE> : never : never;
26
26
  export declare function parseSelectExpressionOrList(ctx: ParseContext, selection: SelectExpressionOrList<any, any>): SelectionNode[];
27
27
  export declare function parseSelectAll(table?: string | string[]): SelectionNode[];
28
28
  export {};
@@ -377,7 +377,9 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
377
377
  * do update set "first_name" = $3
378
378
  * ```
379
379
  */
380
- doUpdateSet(updates: MutationObject<DB, TB>): OnConflictUpdateBuilder<DB & Record<'excluded', DB[TB]>, TB | 'excluded'>;
380
+ doUpdateSet(updates: MutationObject<DB, TB>): OnConflictUpdateBuilder<{
381
+ [K in keyof DB | 'excluded']: K extends keyof DB ? DB[K] : DB[TB];
382
+ }, TB | 'excluded'>;
381
383
  }
382
384
  export interface OnConflictBuilderProps {
383
385
  readonly onConflictNode: OnConflictNode;
@@ -39,12 +39,11 @@ export declare type ValueType<T> = T[keyof T];
39
39
  * // Row == Person & Movie
40
40
  * ```
41
41
  */
42
- export declare type RowType<DB, TB extends keyof DB> = UnionToIntersection<DB[TB]>;
43
- /**
44
- * Evil typescript magic to convert a union type `A | B | C` into an
45
- * intersection type `A & B & C`.
46
- */
47
- declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
42
+ export declare type RowType<DB, TB extends keyof DB> = {
43
+ [C in AnyColumn<DB, TB>]: {
44
+ [T in TB]: C extends keyof DB[T] ? DB[T][C] : never;
45
+ }[TB];
46
+ };
48
47
  /**
49
48
  * Given a database type and a union of table names in that db, returns
50
49
  * a union type with all possible column names.
@@ -79,6 +78,12 @@ declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) e
79
78
  export declare type AnyColumn<DB, TB extends keyof DB> = {
80
79
  [T in TB]: keyof DB[T];
81
80
  }[TB] & string;
81
+ /**
82
+ * Extracts a column type.
83
+ */
84
+ export declare type ExtractColumnType<DB, TB extends keyof DB, C> = {
85
+ [T in TB]: C extends keyof DB[T] ? DB[T][C] : never;
86
+ }[TB];
82
87
  /**
83
88
  * Given a database type and a union of table names in that db, returns
84
89
  * a union type with all possible `table`.`column` combinations.
@@ -146,4 +151,3 @@ export declare type UnknownRow = Record<string, unknown>;
146
151
  export declare type Nullable<T> = {
147
152
  [P in keyof T]: T[P] | null;
148
153
  };
149
- export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kysely",
3
- "version": "0.14.0",
3
+ "version": "0.14.1",
4
4
  "description": "Type safe SQL query builder",
5
5
  "repository": {
6
6
  "type": "git",