kysely 0.19.6 → 0.19.9

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 (34) hide show
  1. package/README.md +11 -6
  2. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -1
  3. package/dist/cjs/operation-node/operation-node-transformer.d.ts +5 -2
  4. package/dist/cjs/operation-node/operation-node-transformer.js +134 -122
  5. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  6. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  7. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  8. package/dist/cjs/operation-node/select-modifier-node.d.ts +16 -0
  9. package/dist/cjs/operation-node/select-modifier-node.js +24 -0
  10. package/dist/cjs/operation-node/select-query-node.d.ts +5 -5
  11. package/dist/cjs/operation-node/select-query-node.js +11 -9
  12. package/dist/cjs/query-builder/select-query-builder.d.ts +50 -6
  13. package/dist/cjs/query-builder/select-query-builder.js +68 -13
  14. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
  15. package/dist/cjs/query-compiler/default-query-compiler.js +14 -7
  16. package/dist/cjs/util/require-all-props.d.ts +43 -0
  17. package/dist/cjs/util/require-all-props.js +40 -0
  18. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -1
  19. package/dist/esm/operation-node/operation-node-transformer.d.ts +5 -2
  20. package/dist/esm/operation-node/operation-node-transformer.js +134 -122
  21. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  22. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  23. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  24. package/dist/esm/operation-node/select-modifier-node.d.ts +16 -0
  25. package/dist/esm/operation-node/select-modifier-node.js +22 -0
  26. package/dist/esm/operation-node/select-query-node.d.ts +5 -5
  27. package/dist/esm/operation-node/select-query-node.js +11 -9
  28. package/dist/esm/query-builder/select-query-builder.d.ts +50 -6
  29. package/dist/esm/query-builder/select-query-builder.js +68 -13
  30. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
  31. package/dist/esm/query-compiler/default-query-compiler.js +14 -7
  32. package/dist/esm/util/require-all-props.d.ts +43 -0
  33. package/dist/esm/util/require-all-props.js +37 -0
  34. package/package.json +1 -1
package/README.md CHANGED
@@ -5,21 +5,20 @@
5
5
 
6
6
  # [Kysely](https://koskimas.github.io/kysely/index.html)
7
7
 
8
- A type-safe and autocompletion-friendly typescript SQL query builder. Inspired by [knex](http://knexjs.org/).
9
- Mainly developed for [node.js](https://nodejs.org/en/) but also runs on [deno](https://deno.land/) and
10
- in the browser.
8
+ Kysely (pronounce “Key-Seh-Lee”) is a type-safe and autocompletion-friendly typescript SQL query builder. Inspired by
9
+ [knex](http://knexjs.org/). Mainly developed for [node.js](https://nodejs.org/en/) but also runs on [deno](https://deno.land/)
10
+ and in the browser.
11
11
 
12
12
  ![](https://github.com/koskimas/kysely/blob/master/assets/demo.gif)
13
13
 
14
14
  Kysely makes sure you only refer to tables and columns that are visible to the part of the query
15
- you are writing. The result type only has the selected columns with correct types and aliases. As an
15
+ you're writing. The result type only has the selected columns with correct types and aliases. As an
16
16
  added bonus you get autocompletion for all that stuff.
17
17
 
18
18
  As you can see in the gif above, through the pure magic of modern typescript, Kysely is even able to parse
19
19
  the alias given to `pet.name` and add the `pet_name` column to the result row type. Kysely is able to infer
20
20
  column names, aliases and types from selected subqueries, joined subqueries, `with` statements and pretty
21
- much anything you can think of. Typescript is always there for you offering completions and making sure
22
- you build a valid query.
21
+ much anything you can think of.
23
22
 
24
23
  Of course there are cases where things cannot be typed at compile time, and Kysely offers escape
25
24
  hatches for these situations. See the [sql template tag](https://koskimas.github.io/kysely/modules.html#sql)
@@ -34,6 +33,7 @@ You can find a more thorough introduction [here](https://www.jakso.me/blog/kysel
34
33
 
35
34
  - [Installation](#installation)
36
35
  - [Minimal example](#minimal-example)
36
+ - [Generating types](#generating-types)
37
37
  - [Query examples](#query-examples)
38
38
  - [Recipes](https://github.com/koskimas/kysely/tree/master/recipes)
39
39
  - [Migrations](#migrations)
@@ -166,6 +166,11 @@ type InsertablePerson = Insertable<PersonTable>
166
166
  type UpdateablePerson = Updateable<PersonTable>
167
167
  ```
168
168
 
169
+ # Generating types
170
+
171
+ If you want to generate the table types automatically from the database schema please
172
+ check out [this awesome project](https://github.com/RobinBlomberg/kysely-codegen).
173
+
169
174
  # Query examples
170
175
 
171
176
  ## Select queries
@@ -58,7 +58,7 @@ class SqliteIntrospector {
58
58
  dataType: col.type,
59
59
  isNullable: !col.notnull,
60
60
  isAutoIncrementing: col.name === autoIncrementCol,
61
- hasDefaultValue: !!col.dflt_value,
61
+ hasDefaultValue: col.dflt_value != null,
62
62
  })),
63
63
  };
64
64
  }
@@ -65,6 +65,7 @@ import { GeneratedNode } from './generated-node.js';
65
65
  import { DefaultValueNode } from './default-value-node.js';
66
66
  import { OnNode } from './on-node.js';
67
67
  import { ValuesNode } from './values-node.js';
68
+ import { SelectModifierNode } from './select-modifier-node.js';
68
69
  /**
69
70
  * Transforms an operation node tree into another one.
70
71
  *
@@ -97,8 +98,9 @@ import { ValuesNode } from './values-node.js';
97
98
  export declare class OperationNodeTransformer {
98
99
  #private;
99
100
  protected readonly nodeStack: OperationNode[];
100
- readonly transformNode: <T extends OperationNode | undefined>(node: OperationNode | undefined) => T;
101
- protected transformNodeList<T extends OperationNode>(list: readonly T[] | undefined): readonly T[];
101
+ readonly transformNode: <T extends OperationNode | undefined, U extends T | undefined = T>(node: U) => T;
102
+ protected transformNodeList<T extends OperationNode, U extends T = T>(list: readonly U[]): readonly T[];
103
+ protected transformNodeList<T extends OperationNode, U extends T = T>(list: readonly U[] | undefined): readonly T[] | undefined;
102
104
  protected transformSelectQuery(node: SelectQueryNode): SelectQueryNode;
103
105
  protected transformSelection(node: SelectionNode): SelectionNode;
104
106
  protected transformColumn(node: ColumnNode): ColumnNode;
@@ -159,6 +161,7 @@ export declare class OperationNodeTransformer {
159
161
  protected transformGenerated(node: GeneratedNode): GeneratedNode;
160
162
  protected transformDefaultValue(node: DefaultValueNode): DefaultValueNode;
161
163
  protected transformOn(node: OnNode): OnNode;
164
+ protected transformSelectModifier(node: SelectModifierNode): SelectModifierNode;
162
165
  protected transformDataType(node: DataTypeNode): DataTypeNode;
163
166
  protected transformSelectAll(node: SelectAllNode): SelectAllNode;
164
167
  protected transformIdentifier(node: IdentifierNode): IdentifierNode;