kysely 0.11.0 → 0.11.4

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 (51) hide show
  1. package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +0 -2
  2. package/dist/cjs/dialect/mysql/mysql-query-compiler.js +0 -6
  3. package/dist/cjs/dialect/postgres/postgres-query-compiler.d.ts +3 -0
  4. package/dist/cjs/dialect/postgres/postgres-query-compiler.js +9 -1
  5. package/dist/cjs/dialect/sqlite/sqlite-adapter.js +6 -2
  6. package/dist/cjs/dialect/sqlite/sqlite-driver.js +7 -7
  7. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +19 -6
  8. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -2
  9. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +6 -6
  10. package/dist/cjs/driver/runtime-driver.js +1 -1
  11. package/dist/cjs/index.d.ts +38 -30
  12. package/dist/cjs/index.js +37 -29
  13. package/dist/cjs/kysely.d.ts +22 -6
  14. package/dist/cjs/operation-node/alias-node.d.ts +1 -1
  15. package/dist/cjs/operation-node/operation-node-utils.d.ts +1 -1
  16. package/dist/cjs/parser/filter-parser.d.ts +1 -0
  17. package/dist/cjs/parser/filter-parser.js +49 -52
  18. package/dist/cjs/parser/insert-values-parser.d.ts +6 -5
  19. package/dist/cjs/parser/insert-values-parser.js +11 -5
  20. package/dist/cjs/query-builder/join-builder.d.ts +3 -0
  21. package/dist/cjs/query-builder/query-builder.d.ts +22 -1
  22. package/dist/cjs/query-builder/query-builder.js +1 -1
  23. package/dist/cjs/util/dynamic-import.js +1 -1
  24. package/dist/cjs/util/log.d.ts +10 -8
  25. package/dist/cjs/util/log.js +29 -9
  26. package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +0 -2
  27. package/dist/esm/dialect/mysql/mysql-query-compiler.js +0 -6
  28. package/dist/esm/dialect/postgres/postgres-query-compiler.d.ts +3 -0
  29. package/dist/esm/dialect/postgres/postgres-query-compiler.js +9 -1
  30. package/dist/esm/dialect/sqlite/sqlite-adapter.js +6 -2
  31. package/dist/esm/dialect/sqlite/sqlite-driver.js +7 -7
  32. package/dist/esm/dialect/sqlite/sqlite-introspector.js +19 -6
  33. package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -2
  34. package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +6 -6
  35. package/dist/esm/driver/runtime-driver.js +1 -1
  36. package/dist/esm/index.d.ts +38 -30
  37. package/dist/esm/index.js +37 -29
  38. package/dist/esm/kysely.d.ts +22 -6
  39. package/dist/esm/operation-node/alias-node.d.ts +1 -1
  40. package/dist/esm/operation-node/operation-node-utils.d.ts +1 -1
  41. package/dist/esm/parser/filter-parser.d.ts +1 -0
  42. package/dist/esm/parser/filter-parser.js +48 -52
  43. package/dist/esm/parser/insert-values-parser.d.ts +6 -5
  44. package/dist/esm/parser/insert-values-parser.js +12 -6
  45. package/dist/esm/query-builder/join-builder.d.ts +3 -0
  46. package/dist/esm/query-builder/query-builder.d.ts +22 -1
  47. package/dist/esm/query-builder/query-builder.js +1 -1
  48. package/dist/esm/util/dynamic-import.js +1 -1
  49. package/dist/esm/util/log.d.ts +10 -8
  50. package/dist/esm/util/log.js +30 -10
  51. package/package.json +1 -1
@@ -1,7 +1,5 @@
1
1
  import { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';
2
2
  export declare class MysqlQueryCompiler extends DefaultQueryCompiler {
3
- protected visitReturning(): void;
4
- protected getSql(): string;
5
3
  protected getCurrentParameterPlaceholder(): string;
6
4
  protected getLeftIdentifierWrapper(): string;
7
5
  protected getRightIdentifierWrapper(): string;
@@ -3,12 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MysqlQueryCompiler = void 0;
4
4
  const default_query_compiler_js_1 = require("../../query-compiler/default-query-compiler.js");
5
5
  class MysqlQueryCompiler extends default_query_compiler_js_1.DefaultQueryCompiler {
6
- visitReturning() {
7
- // Do nothing.
8
- }
9
- getSql() {
10
- return super.getSql().trimEnd();
11
- }
12
6
  getCurrentParameterPlaceholder() {
13
7
  return '?';
14
8
  }
@@ -1,3 +1,6 @@
1
1
  import { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';
2
2
  export declare class PostgresQueryCompiler extends DefaultQueryCompiler {
3
+ protected getCurrentParameterPlaceholder(): string;
4
+ protected getLeftIdentifierWrapper(): string;
5
+ protected getRightIdentifierWrapper(): string;
3
6
  }
@@ -2,7 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PostgresQueryCompiler = void 0;
4
4
  const default_query_compiler_js_1 = require("../../query-compiler/default-query-compiler.js");
5
- // The default query compiler is for PostgreSQL.
6
5
  class PostgresQueryCompiler extends default_query_compiler_js_1.DefaultQueryCompiler {
6
+ getCurrentParameterPlaceholder() {
7
+ return '$' + this.numParameters;
8
+ }
9
+ getLeftIdentifierWrapper() {
10
+ return '"';
11
+ }
12
+ getRightIdentifierWrapper() {
13
+ return '"';
14
+ }
7
15
  }
8
16
  exports.PostgresQueryCompiler = PostgresQueryCompiler;
@@ -9,10 +9,14 @@ class SqliteAdapter {
9
9
  return false;
10
10
  }
11
11
  async acquireMigrationLock() {
12
- // Nothing to do here.
12
+ // SQLite only has one connection that's reserved by the migration system
13
+ // for the whole time between acquireMigrationLock and releaseMigrationLock.
14
+ // We don't need to do anything here.
13
15
  }
14
16
  async releaseMigrationLock() {
15
- // Nothing to do here.
17
+ // SQLite only has one connection that's reserved by the migration system
18
+ // for the whole time between acquireMigrationLock and releaseMigrationLock.
19
+ // We don't need to do anything here.
16
20
  }
17
21
  }
18
22
  exports.SqliteAdapter = SqliteAdapter;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SqliteDriver = void 0;
4
4
  const compiled_query_js_1 = require("../../query-compiler/compiled-query.js");
5
5
  const dynamic_import_js_1 = require("../../util/dynamic-import.js");
6
+ const object_utils_js_1 = require("../../util/object-utils.js");
6
7
  class SqliteDriver {
7
8
  #config;
8
9
  #connectionMutex = new ConnectionMutex();
@@ -19,16 +20,16 @@ class SqliteDriver {
19
20
  // into javascript. You can check the built javascript code.
20
21
  const DatabaseConstructor = await importBetterSqlite3Database();
21
22
  const options = {};
22
- if (typeof this.#config.readonly === 'boolean') {
23
+ if ((0, object_utils_js_1.isBoolean)(this.#config.readonly)) {
23
24
  options.readonly = this.#config.readonly;
24
25
  }
25
- if (typeof this.#config.fileMustExist === 'boolean') {
26
+ if ((0, object_utils_js_1.isBoolean)(this.#config.fileMustExist)) {
26
27
  options.fileMustExist = this.#config.fileMustExist;
27
28
  }
28
- if (typeof this.#config.timeout === 'number') {
29
+ if ((0, object_utils_js_1.isNumber)(this.#config.timeout)) {
29
30
  options.timeout = this.#config.timeout;
30
31
  }
31
- if (typeof this.#config.verbose === 'function') {
32
+ if ((0, object_utils_js_1.isFunction)(this.#config.verbose)) {
32
33
  options.verbose = this.#config.verbose;
33
34
  }
34
35
  this.#db = new DatabaseConstructor(this.#config.databasePath, options);
@@ -38,8 +39,8 @@ class SqliteDriver {
38
39
  }
39
40
  }
40
41
  async acquireConnection() {
41
- // sqlite effectively only has one single connection. We use a mutex
42
- // here to wait until the single connection has been released.
42
+ // SQLite only has one single connection. We use a mutex here to wait
43
+ // until the single connection has been released.
43
44
  await this.#connectionMutex.lock();
44
45
  return this.#connection;
45
46
  }
@@ -65,7 +66,6 @@ async function importBetterSqlite3Database() {
65
66
  return await (0, dynamic_import_js_1.importFunction)('better-sqlite3');
66
67
  }
67
68
  catch (error) {
68
- console.error(error);
69
69
  throw new Error('SQLite client not installed. Please run `npm install better-sqlite3`');
70
70
  }
71
71
  }
@@ -12,18 +12,31 @@ class SqliteIntrospector {
12
12
  .selectFrom('sqlite_schema')
13
13
  .where('type', '=', 'table')
14
14
  .where('name', 'not like', 'sqlite_%')
15
- .select('name');
15
+ .select('name')
16
+ .castTo();
16
17
  if (!options.withInternalKyselyTables) {
17
18
  query = query
18
19
  .where('name', '!=', migration_js_1.MIGRATION_TABLE)
19
20
  .where('name', '!=', migration_js_1.MIGRATION_LOCK_TABLE);
20
21
  }
21
- const result = await query.execute();
22
+ const tables = await query.execute();
22
23
  return {
23
- tables: result.map((it) => ({
24
- name: it.name,
25
- // TODO: Get columns somehow.
26
- columns: [],
24
+ tables: await Promise.all(tables.map(({ name }) => this.#getTableMetadata(name))),
25
+ };
26
+ }
27
+ async #getTableMetadata(table) {
28
+ const db = this.#db;
29
+ const columns = await db
30
+ .selectFrom(db.raw(`PRAGMA_TABLE_INFO(?)`, [table]).as('table_info'))
31
+ .select(['name', 'type', 'notnull'])
32
+ .castTo()
33
+ .execute();
34
+ return {
35
+ name: table,
36
+ columns: columns.map((col) => ({
37
+ name: col.name,
38
+ dataType: col.type,
39
+ isNullable: !col.notnull,
27
40
  })),
28
41
  };
29
42
  }
@@ -1,7 +1,7 @@
1
1
  import { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';
2
2
  export declare class SqliteQueryCompiler extends DefaultQueryCompiler {
3
- protected visitReturning(): void;
4
- protected getSql(): string;
5
3
  protected getCurrentParameterPlaceholder(): string;
4
+ protected getLeftIdentifierWrapper(): string;
5
+ protected getRightIdentifierWrapper(): string;
6
6
  protected getAutoIncrement(): string;
7
7
  }
@@ -3,15 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SqliteQueryCompiler = void 0;
4
4
  const default_query_compiler_js_1 = require("../../query-compiler/default-query-compiler.js");
5
5
  class SqliteQueryCompiler extends default_query_compiler_js_1.DefaultQueryCompiler {
6
- visitReturning() {
7
- // Do nothing.
8
- }
9
- getSql() {
10
- return super.getSql().trimEnd();
11
- }
12
6
  getCurrentParameterPlaceholder() {
13
7
  return '?';
14
8
  }
9
+ getLeftIdentifierWrapper() {
10
+ return '"';
11
+ }
12
+ getRightIdentifierWrapper() {
13
+ return '"';
14
+ }
15
15
  getAutoIncrement() {
16
16
  return 'autoincrement';
17
17
  }
@@ -97,7 +97,7 @@ class RuntimeConnection {
97
97
  #logQuery(compiledQuery, startTime) {
98
98
  this.#log.query(() => ({
99
99
  level: 'query',
100
- sql: compiledQuery.sql,
100
+ query: compiledQuery,
101
101
  queryDurationMillis: this.#calculateDurationMillis(startTime),
102
102
  }));
103
103
  }
@@ -51,35 +51,8 @@ export * from './migration/migration.js';
51
51
  export * from './dialect/dialect.js';
52
52
  export * from './dialect/dialect-adapter.js';
53
53
  export * from './dialect/dialect-adapter-base.js';
54
- export * from './operation-node/operation-node-transformer.js';
55
- export * from './operation-node/operation-node-visitor.js';
56
54
  export * from './plugin/kysely-plugin.js';
57
55
  export * from './plugin/camel-case/camel-case-plugin.js';
58
- export * from './operation-node/operation-node-transformer.js';
59
- export * from './operation-node/operation-node-visitor.js';
60
- export * from './operation-node/operator-node.js';
61
- export * from './operation-node/or-node.js';
62
- export * from './operation-node/order-by-item-node.js';
63
- export * from './operation-node/order-by-node.js';
64
- export * from './operation-node/parens-node.js';
65
- export * from './operation-node/primary-constraint-node.js';
66
- export * from './operation-node/primitive-value-list-node.js';
67
- export * from './operation-node/query-node.js';
68
- export * from './operation-node/raw-node.js';
69
- export * from './operation-node/reference-node.js';
70
- export * from './operation-node/references-node.js';
71
- export * from './operation-node/rename-column-node.js';
72
- export * from './operation-node/returning-node.js';
73
- export * from './operation-node/select-all-node.js';
74
- export * from './operation-node/select-query-node.js';
75
- export * from './operation-node/selection-node.js';
76
- export * from './operation-node/table-node.js';
77
- export * from './operation-node/unique-constraint-node.js';
78
- export * from './operation-node/update-query-node.js';
79
- export * from './operation-node/value-list-node.js';
80
- export * from './operation-node/value-node.js';
81
- export * from './operation-node/where-node.js';
82
- export * from './operation-node/with-node.js';
83
56
  export * from './operation-node/add-column-node.js';
84
57
  export * from './operation-node/add-constraint-node.js';
85
58
  export * from './operation-node/alias-node.js';
@@ -95,16 +68,20 @@ export * from './operation-node/constraint-node.js';
95
68
  export * from './operation-node/create-index-node.js';
96
69
  export * from './operation-node/create-schema-node.js';
97
70
  export * from './operation-node/create-table-node.js';
71
+ export * from './operation-node/create-view-node.js';
98
72
  export * from './operation-node/data-type-node.js';
73
+ export * from './operation-node/default-value-node.js';
99
74
  export * from './operation-node/delete-query-node.js';
100
75
  export * from './operation-node/drop-column-node.js';
101
76
  export * from './operation-node/drop-constraint-node.js';
102
77
  export * from './operation-node/drop-index-node.js';
103
78
  export * from './operation-node/drop-schema-node.js';
104
79
  export * from './operation-node/drop-table-node.js';
80
+ export * from './operation-node/drop-view-node.js';
105
81
  export * from './operation-node/filter-node.js';
106
82
  export * from './operation-node/foreign-key-constraint-node.js';
107
83
  export * from './operation-node/from-node.js';
84
+ export * from './operation-node/generated-always-as-node.js';
108
85
  export * from './operation-node/group-by-item-node.js';
109
86
  export * from './operation-node/group-by-node.js';
110
87
  export * from './operation-node/having-node.js';
@@ -113,19 +90,50 @@ export * from './operation-node/insert-query-node.js';
113
90
  export * from './operation-node/join-node.js';
114
91
  export * from './operation-node/limit-node.js';
115
92
  export * from './operation-node/list-node.js';
93
+ export * from './operation-node/modify-column-node.js';
116
94
  export * from './operation-node/offset-node.js';
117
- export * from './operation-node//on-conflict-node.js';
118
- export * from './operation-node/operation-node.js';
95
+ export * from './operation-node/on-conflict-node.js';
96
+ export * from './operation-node/on-duplicate-key-node.js';
97
+ export * from './operation-node/on-node.js';
119
98
  export * from './operation-node/operation-node-source.js';
99
+ export * from './operation-node/operation-node-transformer.js';
100
+ export * from './operation-node/operation-node-utils.js';
101
+ export * from './operation-node/operation-node-visitor.js';
102
+ export * from './operation-node/operation-node.js';
103
+ export * from './operation-node/operator-node.js';
104
+ export * from './operation-node/or-node.js';
105
+ export * from './operation-node/order-by-item-node.js';
120
106
  export * from './operation-node/order-by-node.js';
107
+ export * from './operation-node/parens-node.js';
108
+ export * from './operation-node/primary-constraint-node.js';
109
+ export * from './operation-node/primitive-value-list-node.js';
110
+ export * from './operation-node/query-node.js';
111
+ export * from './operation-node/raw-node.js';
112
+ export * from './operation-node/reference-node.js';
113
+ export * from './operation-node/references-node.js';
114
+ export * from './operation-node/rename-column-node.js';
115
+ export * from './operation-node/returning-node.js';
116
+ export * from './operation-node/select-all-node.js';
117
+ export * from './operation-node/select-query-node.js';
118
+ export * from './operation-node/select-query-node.js';
119
+ export * from './operation-node/selection-node.js';
120
+ export * from './operation-node/table-node.js';
121
+ export * from './operation-node/union-node.js';
122
+ export * from './operation-node/unique-constraint-node.js';
123
+ export * from './operation-node/update-query-node.js';
124
+ export * from './operation-node/value-list-node.js';
125
+ export * from './operation-node/value-node.js';
126
+ export * from './operation-node/where-node.js';
127
+ export * from './operation-node/with-node.js';
121
128
  export * from './introspection/database-introspector.js';
122
129
  export * from './util/compilable.js';
130
+ export * from './util/log.js';
123
131
  export { AnyColumn, UnknownRow, AnyQueryBuilder } from './util/type-utils.js';
124
132
  export { SelectExpression, SelectExpressionOrList, } from './parser/select-parser.js';
125
133
  export { ReferenceExpression, ReferenceExpressionOrList, } from './parser/reference-parser.js';
126
134
  export { ValueExpression, ValueExpressionOrList, } from './parser/value-parser.js';
127
135
  export { ExistsExpression, FilterOperator } from './parser/filter-parser.js';
128
- export { TableExpression } from './parser/table-parser.js';
136
+ export { TableExpression, TableExpressionOrList, } from './parser/table-parser.js';
129
137
  export { JoinReferenceExpression, JoinCallbackExpression, } from './parser/join-parser.js';
130
138
  export { InsertObject } from './parser/insert-values-parser.js';
131
139
  export { MutationObject } from './parser/update-set-parser.js';
package/dist/cjs/index.js CHANGED
@@ -63,35 +63,8 @@ __exportStar(require("./migration/migration.js"), exports);
63
63
  __exportStar(require("./dialect/dialect.js"), exports);
64
64
  __exportStar(require("./dialect/dialect-adapter.js"), exports);
65
65
  __exportStar(require("./dialect/dialect-adapter-base.js"), exports);
66
- __exportStar(require("./operation-node/operation-node-transformer.js"), exports);
67
- __exportStar(require("./operation-node/operation-node-visitor.js"), exports);
68
66
  __exportStar(require("./plugin/kysely-plugin.js"), exports);
69
67
  __exportStar(require("./plugin/camel-case/camel-case-plugin.js"), exports);
70
- __exportStar(require("./operation-node/operation-node-transformer.js"), exports);
71
- __exportStar(require("./operation-node/operation-node-visitor.js"), exports);
72
- __exportStar(require("./operation-node/operator-node.js"), exports);
73
- __exportStar(require("./operation-node/or-node.js"), exports);
74
- __exportStar(require("./operation-node/order-by-item-node.js"), exports);
75
- __exportStar(require("./operation-node/order-by-node.js"), exports);
76
- __exportStar(require("./operation-node/parens-node.js"), exports);
77
- __exportStar(require("./operation-node/primary-constraint-node.js"), exports);
78
- __exportStar(require("./operation-node/primitive-value-list-node.js"), exports);
79
- __exportStar(require("./operation-node/query-node.js"), exports);
80
- __exportStar(require("./operation-node/raw-node.js"), exports);
81
- __exportStar(require("./operation-node/reference-node.js"), exports);
82
- __exportStar(require("./operation-node/references-node.js"), exports);
83
- __exportStar(require("./operation-node/rename-column-node.js"), exports);
84
- __exportStar(require("./operation-node/returning-node.js"), exports);
85
- __exportStar(require("./operation-node/select-all-node.js"), exports);
86
- __exportStar(require("./operation-node/select-query-node.js"), exports);
87
- __exportStar(require("./operation-node/selection-node.js"), exports);
88
- __exportStar(require("./operation-node/table-node.js"), exports);
89
- __exportStar(require("./operation-node/unique-constraint-node.js"), exports);
90
- __exportStar(require("./operation-node/update-query-node.js"), exports);
91
- __exportStar(require("./operation-node/value-list-node.js"), exports);
92
- __exportStar(require("./operation-node/value-node.js"), exports);
93
- __exportStar(require("./operation-node/where-node.js"), exports);
94
- __exportStar(require("./operation-node/with-node.js"), exports);
95
68
  __exportStar(require("./operation-node/add-column-node.js"), exports);
96
69
  __exportStar(require("./operation-node/add-constraint-node.js"), exports);
97
70
  __exportStar(require("./operation-node/alias-node.js"), exports);
@@ -107,16 +80,20 @@ __exportStar(require("./operation-node/constraint-node.js"), exports);
107
80
  __exportStar(require("./operation-node/create-index-node.js"), exports);
108
81
  __exportStar(require("./operation-node/create-schema-node.js"), exports);
109
82
  __exportStar(require("./operation-node/create-table-node.js"), exports);
83
+ __exportStar(require("./operation-node/create-view-node.js"), exports);
110
84
  __exportStar(require("./operation-node/data-type-node.js"), exports);
85
+ __exportStar(require("./operation-node/default-value-node.js"), exports);
111
86
  __exportStar(require("./operation-node/delete-query-node.js"), exports);
112
87
  __exportStar(require("./operation-node/drop-column-node.js"), exports);
113
88
  __exportStar(require("./operation-node/drop-constraint-node.js"), exports);
114
89
  __exportStar(require("./operation-node/drop-index-node.js"), exports);
115
90
  __exportStar(require("./operation-node/drop-schema-node.js"), exports);
116
91
  __exportStar(require("./operation-node/drop-table-node.js"), exports);
92
+ __exportStar(require("./operation-node/drop-view-node.js"), exports);
117
93
  __exportStar(require("./operation-node/filter-node.js"), exports);
118
94
  __exportStar(require("./operation-node/foreign-key-constraint-node.js"), exports);
119
95
  __exportStar(require("./operation-node/from-node.js"), exports);
96
+ __exportStar(require("./operation-node/generated-always-as-node.js"), exports);
120
97
  __exportStar(require("./operation-node/group-by-item-node.js"), exports);
121
98
  __exportStar(require("./operation-node/group-by-node.js"), exports);
122
99
  __exportStar(require("./operation-node/having-node.js"), exports);
@@ -125,10 +102,41 @@ __exportStar(require("./operation-node/insert-query-node.js"), exports);
125
102
  __exportStar(require("./operation-node/join-node.js"), exports);
126
103
  __exportStar(require("./operation-node/limit-node.js"), exports);
127
104
  __exportStar(require("./operation-node/list-node.js"), exports);
105
+ __exportStar(require("./operation-node/modify-column-node.js"), exports);
128
106
  __exportStar(require("./operation-node/offset-node.js"), exports);
129
- __exportStar(require("./operation-node//on-conflict-node.js"), exports);
130
- __exportStar(require("./operation-node/operation-node.js"), exports);
107
+ __exportStar(require("./operation-node/on-conflict-node.js"), exports);
108
+ __exportStar(require("./operation-node/on-duplicate-key-node.js"), exports);
109
+ __exportStar(require("./operation-node/on-node.js"), exports);
131
110
  __exportStar(require("./operation-node/operation-node-source.js"), exports);
111
+ __exportStar(require("./operation-node/operation-node-transformer.js"), exports);
112
+ __exportStar(require("./operation-node/operation-node-utils.js"), exports);
113
+ __exportStar(require("./operation-node/operation-node-visitor.js"), exports);
114
+ __exportStar(require("./operation-node/operation-node.js"), exports);
115
+ __exportStar(require("./operation-node/operator-node.js"), exports);
116
+ __exportStar(require("./operation-node/or-node.js"), exports);
117
+ __exportStar(require("./operation-node/order-by-item-node.js"), exports);
132
118
  __exportStar(require("./operation-node/order-by-node.js"), exports);
119
+ __exportStar(require("./operation-node/parens-node.js"), exports);
120
+ __exportStar(require("./operation-node/primary-constraint-node.js"), exports);
121
+ __exportStar(require("./operation-node/primitive-value-list-node.js"), exports);
122
+ __exportStar(require("./operation-node/query-node.js"), exports);
123
+ __exportStar(require("./operation-node/raw-node.js"), exports);
124
+ __exportStar(require("./operation-node/reference-node.js"), exports);
125
+ __exportStar(require("./operation-node/references-node.js"), exports);
126
+ __exportStar(require("./operation-node/rename-column-node.js"), exports);
127
+ __exportStar(require("./operation-node/returning-node.js"), exports);
128
+ __exportStar(require("./operation-node/select-all-node.js"), exports);
129
+ __exportStar(require("./operation-node/select-query-node.js"), exports);
130
+ __exportStar(require("./operation-node/select-query-node.js"), exports);
131
+ __exportStar(require("./operation-node/selection-node.js"), exports);
132
+ __exportStar(require("./operation-node/table-node.js"), exports);
133
+ __exportStar(require("./operation-node/union-node.js"), exports);
134
+ __exportStar(require("./operation-node/unique-constraint-node.js"), exports);
135
+ __exportStar(require("./operation-node/update-query-node.js"), exports);
136
+ __exportStar(require("./operation-node/value-list-node.js"), exports);
137
+ __exportStar(require("./operation-node/value-node.js"), exports);
138
+ __exportStar(require("./operation-node/where-node.js"), exports);
139
+ __exportStar(require("./operation-node/with-node.js"), exports);
133
140
  __exportStar(require("./introspection/database-introspector.js"), exports);
134
141
  __exportStar(require("./util/compilable.js"), exports);
142
+ __exportStar(require("./util/log.js"), exports);
@@ -10,7 +10,7 @@ import { DatabaseIntrospector } from './introspection/database-introspector.js';
10
10
  import { Driver, IsolationLevel } from './driver/driver.js';
11
11
  import { ParseContext } from './parser/parse-context.js';
12
12
  import { FunctionBuilder } from './query-builder/function-builder.js';
13
- import { LogLevel } from './util/log.js';
13
+ import { LogConfig } from './util/log.js';
14
14
  /**
15
15
  * The main Kysely class.
16
16
  *
@@ -235,17 +235,33 @@ export interface KyselyConfig {
235
235
  readonly dialect: Dialect;
236
236
  readonly plugins?: KyselyPlugin[];
237
237
  /**
238
- * A list of log levels to log.
238
+ * A list of log levels to log or a custom logger function.
239
239
  *
240
240
  * Currently there's only two levels: `query` and `error`.
241
241
  * This will be expanded based on user feedback later.
242
242
  *
243
- * Log levels:
243
+ * @example
244
+ * ```ts
245
+ * const db = new Kysely<Database>({
246
+ * dialect: new PostgresDialect(postgresConfig),
247
+ * log: ['query', 'error']
248
+ * })
249
+ * ```
244
250
  *
245
- * - query: Log each query's SQL and duration using console.log
246
- * - error: Log all query errors using console.error
251
+ * @example
252
+ * ```ts
253
+ * const db = new Kysely<Database>({
254
+ * dialect: new PostgresDialect(postgresConfig),
255
+ * log(event): void {
256
+ * if (event.level === 'query') {
257
+ * console.log(event.query.sql)
258
+ * console.log(event.query.parameters)
259
+ * }
260
+ * }
261
+ * })
262
+ * ```
247
263
  */
248
- readonly log?: ReadonlyArray<LogLevel>;
264
+ readonly log?: LogConfig;
249
265
  }
250
266
  export declare class ConnectionBuilder<DB> {
251
267
  #private;
@@ -5,7 +5,7 @@ import { RawNode } from './raw-node.js';
5
5
  import { ReferenceNode } from './reference-node.js';
6
6
  import { SelectQueryNode } from './select-query-node.js';
7
7
  import { TableNode } from './table-node.js';
8
- export declare type AliasNodeChild = ColumnNode | ReferenceNode | TableNode | RawNode | SelectQueryNode;
8
+ export declare type AliasNodeChild = ColumnNode | ReferenceNode | TableNode | SelectQueryNode | RawNode;
9
9
  export interface AliasNode extends OperationNode {
10
10
  readonly kind: 'AliasNode';
11
11
  readonly node: AliasNodeChild;
@@ -14,4 +14,4 @@ import { ValueNode } from './value-node.js';
14
14
  export declare type ReferenceExpressionNode = ColumnNode | ReferenceNode | SelectQueryNode | RawNode;
15
15
  export declare type ValueExpressionNode = ValueNode | ValueListNode | PrimitiveValueListNode | ReferenceExpressionNode;
16
16
  export declare type TableExpressionNode = TableNode | AliasNode;
17
- export declare type FilterExpressionNode = FilterNode | AndNode | OrNode | ParensNode;
17
+ export declare type FilterExpressionNode = FilterNode | AndNode | OrNode | ParensNode | RawNode;
@@ -12,3 +12,4 @@ export declare function parseOnFilter(ctx: ParseContext, args: any[]): FilterExp
12
12
  export declare function parseReferenceFilter(ctx: ParseContext, lhs: ReferenceExpression<any, any>, op: FilterOperator, rhs: ReferenceExpression<any, any>): FilterNode;
13
13
  export declare function parseExistFilter(ctx: ParseContext, arg: ExistsExpression<any, any>): FilterNode;
14
14
  export declare function parseNotExistFilter(ctx: ParseContext, arg: ExistsExpression<any, any>): FilterNode;
15
+ export declare function parseFilter(ctx: ParseContext, type: 'where' | 'having' | 'on', args: any[]): FilterExpressionNode;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseNotExistFilter = exports.parseExistFilter = exports.parseReferenceFilter = exports.parseOnFilter = exports.parseHavingFilter = exports.parseWhereFilter = void 0;
3
+ exports.parseFilter = exports.parseNotExistFilter = exports.parseExistFilter = exports.parseReferenceFilter = exports.parseOnFilter = exports.parseHavingFilter = exports.parseWhereFilter = void 0;
4
4
  const filter_node_js_1 = require("../operation-node/filter-node.js");
5
5
  const object_utils_js_1 = require("../util/object-utils.js");
6
6
  const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
@@ -12,39 +12,15 @@ const value_parser_js_1 = require("./value-parser.js");
12
12
  const select_query_node_js_1 = require("../operation-node/select-query-node.js");
13
13
  const value_node_js_1 = require("../operation-node/value-node.js");
14
14
  function parseWhereFilter(ctx, args) {
15
- if (args.length === 3) {
16
- return parseThreeArgFilter(ctx, args[0], args[1], args[2]);
17
- }
18
- else if (args.length === 1 && (0, object_utils_js_1.isFunction)(args[0])) {
19
- return parseWhereGroup(ctx, args[0]);
20
- }
21
- else {
22
- throw new Error(`invalid arguments passed to a where method ${JSON.stringify(args)}`);
23
- }
15
+ return parseFilter(ctx, 'where', args);
24
16
  }
25
17
  exports.parseWhereFilter = parseWhereFilter;
26
18
  function parseHavingFilter(ctx, args) {
27
- if (args.length === 3) {
28
- return parseThreeArgFilter(ctx, args[0], args[1], args[2]);
29
- }
30
- else if (args.length === 1 && (0, object_utils_js_1.isFunction)(args[0])) {
31
- return parseHavingGroup(ctx, args[0]);
32
- }
33
- else {
34
- throw new Error(`invalid arguments passed to a having method ${JSON.stringify(args)}`);
35
- }
19
+ return parseFilter(ctx, 'having', args);
36
20
  }
37
21
  exports.parseHavingFilter = parseHavingFilter;
38
22
  function parseOnFilter(ctx, args) {
39
- if (args.length === 3) {
40
- return parseThreeArgFilter(ctx, args[0], args[1], args[2]);
41
- }
42
- else if (args.length === 1 && (0, object_utils_js_1.isFunction)(args[0])) {
43
- return parseOnGroup(ctx, args[0]);
44
- }
45
- else {
46
- throw new Error(`invalid arguments passed to an on method ${JSON.stringify(args)}`);
47
- }
23
+ return parseFilter(ctx, 'on', args);
48
24
  }
49
25
  exports.parseOnFilter = parseOnFilter;
50
26
  function parseReferenceFilter(ctx, lhs, op, rhs) {
@@ -59,6 +35,25 @@ function parseNotExistFilter(ctx, arg) {
59
35
  return parseExistExpression(ctx, 'not exists', arg);
60
36
  }
61
37
  exports.parseNotExistFilter = parseNotExistFilter;
38
+ function parseFilter(ctx, type, args) {
39
+ if (args.length === 3) {
40
+ return parseThreeArgFilter(ctx, args[0], args[1], args[2]);
41
+ }
42
+ else if (args.length === 1) {
43
+ const arg = args[0];
44
+ if ((0, object_utils_js_1.isFunction)(arg)) {
45
+ return GROUP_PARSERS[type](ctx, arg);
46
+ }
47
+ else if ((0, operation_node_source_js_1.isOperationNodeSource)(arg)) {
48
+ const node = arg.toOperationNode();
49
+ if (raw_node_js_1.RawNode.is(node)) {
50
+ return node;
51
+ }
52
+ }
53
+ }
54
+ throw new Error(`invalid arguments passed to a '${type}' method: ${JSON.stringify(args)}`);
55
+ }
56
+ exports.parseFilter = parseFilter;
62
57
  function parseThreeArgFilter(ctx, left, op, right) {
63
58
  if ((op === 'is' || op === 'is not') && ((0, object_utils_js_1.isNull)(right) || (0, object_utils_js_1.isBoolean)(right))) {
64
59
  return parseIsFilter(ctx, left, op, right);
@@ -79,30 +74,6 @@ function parseFilterOperator(op) {
79
74
  }
80
75
  throw new Error(`invalid comparison operator ${JSON.stringify(op)} passed to a filter method`);
81
76
  }
82
- function parseWhereGroup(ctx, callback) {
83
- const query = callback(ctx.createSelectQueryBuilder([]));
84
- const queryNode = query.toOperationNode();
85
- if (!queryNode.where) {
86
- throw new Error('no `where*` methods called insided a group callback');
87
- }
88
- return parens_node_js_1.ParensNode.create(queryNode.where.where);
89
- }
90
- function parseHavingGroup(ctx, callback) {
91
- const query = callback(ctx.createSelectQueryBuilder([]));
92
- const queryNode = query.toOperationNode();
93
- if (!queryNode.having) {
94
- throw new Error('no `having*` methods called insided a group callback');
95
- }
96
- return parens_node_js_1.ParensNode.create(queryNode.having.having);
97
- }
98
- function parseOnGroup(ctx, callback) {
99
- const joinBuilder = callback(ctx.createJoinBuilder('InnerJoin', 'table'));
100
- const joinNode = joinBuilder.toOperationNode();
101
- if (!joinNode.on) {
102
- throw new Error('no `on*` methods called insided a group callback');
103
- }
104
- return parens_node_js_1.ParensNode.create(joinNode.on.on);
105
- }
106
77
  function parseExistExpression(ctx, type, arg) {
107
78
  const node = (0, object_utils_js_1.isFunction)(arg)
108
79
  ? arg(ctx.createExpressionBuilder()).toOperationNode()
@@ -112,3 +83,29 @@ function parseExistExpression(ctx, type, arg) {
112
83
  }
113
84
  return filter_node_js_1.FilterNode.create(undefined, operator_node_js_1.OperatorNode.create(type), node);
114
85
  }
86
+ const GROUP_PARSERS = (0, object_utils_js_1.freeze)({
87
+ where(ctx, callback) {
88
+ const query = callback(ctx.createSelectQueryBuilder([]));
89
+ const queryNode = query.toOperationNode();
90
+ if (!queryNode.where) {
91
+ throw new Error('no `where` methods called insided a group callback');
92
+ }
93
+ return parens_node_js_1.ParensNode.create(queryNode.where.where);
94
+ },
95
+ having(ctx, callback) {
96
+ const query = callback(ctx.createSelectQueryBuilder([]));
97
+ const queryNode = query.toOperationNode();
98
+ if (!queryNode.having) {
99
+ throw new Error('no `having` methods called insided a group callback');
100
+ }
101
+ return parens_node_js_1.ParensNode.create(queryNode.having.having);
102
+ },
103
+ on(ctx, callback) {
104
+ const joinBuilder = callback(ctx.createJoinBuilder('InnerJoin', 'table'));
105
+ const joinNode = joinBuilder.toOperationNode();
106
+ if (!joinNode.on) {
107
+ throw new Error('no `on` methods called insided a group callback');
108
+ }
109
+ return parens_node_js_1.ParensNode.create(joinNode.on.on);
110
+ },
111
+ });
@@ -3,13 +3,14 @@ import { InsertValuesNode } from '../operation-node/insert-query-node.js';
3
3
  import { RawNode } from '../operation-node/raw-node.js';
4
4
  import { SelectQueryNode } from '../operation-node/select-query-node.js';
5
5
  import { ValueNode } from '../operation-node/value-node.js';
6
- import { AnyQueryBuilder, AnyRawBuilder, GeneratedPlaceholder } from '../util/type-utils.js';
6
+ import { AnyQueryBuilder, AnyRawBuilder, GeneratedPlaceholder, QueryBuilderFactory, RawBuilderFactory } from '../util/type-utils.js';
7
7
  import { PrimitiveValue } from '../util/object-utils.js';
8
+ import { ParseContext } from './parse-context.js';
8
9
  export declare type InsertObject<DB, TB extends keyof DB> = {
9
- [C in keyof DB[TB]]: InsertValueExpression<DB[TB][C]>;
10
+ [C in keyof DB[TB]]: InsertValueExpression<DB, TB, DB[TB][C]>;
10
11
  };
11
12
  export declare type InsertObjectOrList<DB, TB extends keyof DB> = InsertObject<DB, TB> | ReadonlyArray<InsertObject<DB, TB>>;
12
- declare type InsertValueExpression<T> = T | AnyQueryBuilder | AnyRawBuilder | GeneratedPlaceholder;
13
- export declare function parseInsertObjectOrList(args: InsertObjectOrList<any, any>): [ReadonlyArray<ColumnNode>, ReadonlyArray<InsertValuesNode>];
14
- export declare function parseInsertValueExpression(value: InsertValueExpression<PrimitiveValue>): ValueNode | RawNode | SelectQueryNode;
13
+ declare type InsertValueExpression<DB, TB extends keyof DB, T> = T | AnyQueryBuilder | QueryBuilderFactory<DB, TB> | AnyRawBuilder | RawBuilderFactory<DB, TB> | GeneratedPlaceholder;
14
+ export declare function parseInsertObjectOrList(ctx: ParseContext, args: InsertObjectOrList<any, any>): [ReadonlyArray<ColumnNode>, ReadonlyArray<InsertValuesNode>];
15
+ export declare function parseInsertValueExpression(ctx: ParseContext, value: InsertValueExpression<any, any, PrimitiveValue>): ValueNode | RawNode | SelectQueryNode;
15
16
  export {};