kysely 0.16.0 → 0.16.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 (230) hide show
  1. package/README.md +4 -4
  2. package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +205 -0
  3. package/dist/cjs/dialect/mysql/mysql-dialect-config.js +2 -0
  4. package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +1 -205
  5. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +1 -1
  6. package/dist/cjs/dialect/mysql/mysql-driver.js +10 -2
  7. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +103 -0
  8. package/dist/cjs/dialect/postgres/postgres-dialect-config.js +2 -0
  9. package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +1 -103
  10. package/dist/cjs/dialect/postgres/postgres-driver.d.ts +1 -1
  11. package/dist/cjs/dialect/postgres/postgres-driver.js +11 -2
  12. package/dist/cjs/dialect/sqlite/sqlite-dialect-config.d.ts +43 -0
  13. package/dist/cjs/dialect/sqlite/sqlite-dialect-config.js +2 -0
  14. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -43
  15. package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +1 -1
  16. package/dist/cjs/dialect/sqlite/sqlite-driver.js +10 -2
  17. package/dist/cjs/index.d.ts +3 -0
  18. package/dist/cjs/index.js +3 -0
  19. package/dist/cjs/operation-node/constraint-node.d.ts +4 -4
  20. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
  21. package/dist/cjs/query-builder/expression-builder.d.ts +42 -0
  22. package/dist/cjs/query-builder/expression-builder.js +48 -0
  23. package/dist/cjs/query-builder/insert-query-builder.d.ts +16 -0
  24. package/dist/cjs/query-builder/insert-query-builder.js +16 -0
  25. package/dist/cjs/query-builder/on-conflict-builder.d.ts +5 -3
  26. package/dist/cjs/query-creator.d.ts +1 -1
  27. package/dist/cjs/util/object-utils.d.ts +1 -1
  28. package/dist/cjs/util/object-utils.js +8 -8
  29. package/dist/esm/dialect/database-introspector.js +1 -0
  30. package/dist/esm/dialect/dialect-adapter-base.js +1 -0
  31. package/dist/esm/dialect/dialect-adapter.js +1 -0
  32. package/dist/esm/dialect/dialect.js +1 -0
  33. package/dist/esm/dialect/mysql/mysql-adapter.js +1 -0
  34. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +205 -0
  35. package/dist/esm/dialect/mysql/mysql-dialect-config.js +2 -0
  36. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +1 -205
  37. package/dist/esm/dialect/mysql/mysql-dialect.js +1 -0
  38. package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -1
  39. package/dist/esm/dialect/mysql/mysql-driver.js +12 -3
  40. package/dist/esm/dialect/mysql/mysql-introspector.js +1 -0
  41. package/dist/esm/dialect/mysql/mysql-query-compiler.js +1 -0
  42. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -0
  43. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +103 -0
  44. package/dist/esm/dialect/postgres/postgres-dialect-config.js +2 -0
  45. package/dist/esm/dialect/postgres/postgres-dialect.d.ts +1 -103
  46. package/dist/esm/dialect/postgres/postgres-dialect.js +1 -0
  47. package/dist/esm/dialect/postgres/postgres-driver.d.ts +1 -1
  48. package/dist/esm/dialect/postgres/postgres-driver.js +12 -2
  49. package/dist/esm/dialect/postgres/postgres-introspector.js +1 -0
  50. package/dist/esm/dialect/postgres/postgres-query-compiler.js +1 -0
  51. package/dist/esm/dialect/sqlite/sqlite-adapter.js +1 -0
  52. package/dist/esm/dialect/sqlite/sqlite-dialect-config.d.ts +43 -0
  53. package/dist/esm/dialect/sqlite/sqlite-dialect-config.js +2 -0
  54. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -43
  55. package/dist/esm/dialect/sqlite/sqlite-dialect.js +1 -0
  56. package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +1 -1
  57. package/dist/esm/dialect/sqlite/sqlite-driver.js +11 -2
  58. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
  59. package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +1 -0
  60. package/dist/esm/driver/connection-provider.js +1 -0
  61. package/dist/esm/driver/database-connection.js +1 -0
  62. package/dist/esm/driver/default-connection-provider.js +1 -0
  63. package/dist/esm/driver/driver.js +1 -0
  64. package/dist/esm/driver/runtime-driver.js +1 -0
  65. package/dist/esm/driver/single-connection-provider.js +1 -0
  66. package/dist/esm/dynamic/dynamic-reference-builder.js +1 -0
  67. package/dist/esm/dynamic/dynamic.js +1 -0
  68. package/dist/esm/index-nodeless.js +1 -0
  69. package/dist/esm/index.d.ts +3 -0
  70. package/dist/esm/index.js +4 -0
  71. package/dist/esm/kysely.js +1 -0
  72. package/dist/esm/migration/file-migration-provider.js +1 -0
  73. package/dist/esm/migration/migrator.js +1 -0
  74. package/dist/esm/operation-node/add-column-node.js +1 -0
  75. package/dist/esm/operation-node/add-constraint-node.js +1 -0
  76. package/dist/esm/operation-node/alias-node.js +1 -0
  77. package/dist/esm/operation-node/alter-column-node.js +1 -0
  78. package/dist/esm/operation-node/alter-table-node.js +1 -0
  79. package/dist/esm/operation-node/and-node.js +1 -0
  80. package/dist/esm/operation-node/check-constraint-node.js +1 -0
  81. package/dist/esm/operation-node/column-definition-node.js +1 -0
  82. package/dist/esm/operation-node/column-node.js +1 -0
  83. package/dist/esm/operation-node/column-update-node.js +1 -0
  84. package/dist/esm/operation-node/common-table-expression-name-node.js +1 -0
  85. package/dist/esm/operation-node/common-table-expression-node.js +1 -0
  86. package/dist/esm/operation-node/constraint-node.d.ts +4 -4
  87. package/dist/esm/operation-node/constraint-node.js +1 -0
  88. package/dist/esm/operation-node/create-index-node.js +1 -0
  89. package/dist/esm/operation-node/create-schema-node.js +1 -0
  90. package/dist/esm/operation-node/create-table-node.js +1 -0
  91. package/dist/esm/operation-node/create-view-node.js +1 -0
  92. package/dist/esm/operation-node/data-type-node.js +1 -0
  93. package/dist/esm/operation-node/default-value-node.js +1 -0
  94. package/dist/esm/operation-node/delete-query-node.js +1 -0
  95. package/dist/esm/operation-node/drop-column-node.js +1 -0
  96. package/dist/esm/operation-node/drop-constraint-node.js +1 -0
  97. package/dist/esm/operation-node/drop-index-node.js +1 -0
  98. package/dist/esm/operation-node/drop-schema-node.js +1 -0
  99. package/dist/esm/operation-node/drop-table-node.js +1 -0
  100. package/dist/esm/operation-node/drop-view-node.js +1 -0
  101. package/dist/esm/operation-node/filter-node.js +1 -0
  102. package/dist/esm/operation-node/foreign-key-constraint-node.js +1 -0
  103. package/dist/esm/operation-node/from-node.js +1 -0
  104. package/dist/esm/operation-node/generated-node.js +1 -0
  105. package/dist/esm/operation-node/group-by-item-node.js +1 -0
  106. package/dist/esm/operation-node/group-by-node.js +1 -0
  107. package/dist/esm/operation-node/having-node.js +1 -0
  108. package/dist/esm/operation-node/identifier-node.js +1 -0
  109. package/dist/esm/operation-node/insert-query-node.js +1 -0
  110. package/dist/esm/operation-node/join-node.js +1 -0
  111. package/dist/esm/operation-node/limit-node.js +1 -0
  112. package/dist/esm/operation-node/list-node.js +1 -0
  113. package/dist/esm/operation-node/modify-column-node.js +1 -0
  114. package/dist/esm/operation-node/offset-node.js +1 -0
  115. package/dist/esm/operation-node/on-conflict-node.js +1 -0
  116. package/dist/esm/operation-node/on-duplicate-key-node.js +1 -0
  117. package/dist/esm/operation-node/on-node.js +1 -0
  118. package/dist/esm/operation-node/operation-node-source.js +1 -0
  119. package/dist/esm/operation-node/operation-node-transformer.js +1 -0
  120. package/dist/esm/operation-node/operation-node-utils.js +1 -0
  121. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  122. package/dist/esm/operation-node/operation-node.js +1 -0
  123. package/dist/esm/operation-node/operator-node.js +1 -0
  124. package/dist/esm/operation-node/or-node.js +1 -0
  125. package/dist/esm/operation-node/order-by-item-node.js +1 -0
  126. package/dist/esm/operation-node/order-by-node.js +1 -0
  127. package/dist/esm/operation-node/parens-node.js +1 -0
  128. package/dist/esm/operation-node/primary-constraint-node.js +1 -0
  129. package/dist/esm/operation-node/primitive-value-list-node.js +1 -0
  130. package/dist/esm/operation-node/query-node.js +1 -0
  131. package/dist/esm/operation-node/raw-node.js +1 -0
  132. package/dist/esm/operation-node/reference-node.js +1 -0
  133. package/dist/esm/operation-node/references-node.js +1 -0
  134. package/dist/esm/operation-node/rename-column-node.js +1 -0
  135. package/dist/esm/operation-node/returning-node.js +1 -0
  136. package/dist/esm/operation-node/select-all-node.js +1 -0
  137. package/dist/esm/operation-node/select-query-node.js +1 -0
  138. package/dist/esm/operation-node/selection-node.js +1 -0
  139. package/dist/esm/operation-node/table-node.js +1 -0
  140. package/dist/esm/operation-node/union-node.js +1 -0
  141. package/dist/esm/operation-node/unique-constraint-node.js +1 -0
  142. package/dist/esm/operation-node/update-query-node.js +1 -0
  143. package/dist/esm/operation-node/value-list-node.js +1 -0
  144. package/dist/esm/operation-node/value-node.js +1 -0
  145. package/dist/esm/operation-node/values-node.js +1 -0
  146. package/dist/esm/operation-node/where-node.js +1 -0
  147. package/dist/esm/operation-node/with-node.js +1 -0
  148. package/dist/esm/parser/complex-expression-parser.js +1 -0
  149. package/dist/esm/parser/data-type-parser.js +1 -0
  150. package/dist/esm/parser/default-value-parser.js +1 -0
  151. package/dist/esm/parser/filter-parser.js +1 -0
  152. package/dist/esm/parser/group-by-parser.js +1 -0
  153. package/dist/esm/parser/insert-values-parser.js +1 -0
  154. package/dist/esm/parser/join-parser.js +1 -0
  155. package/dist/esm/parser/order-by-parser.js +1 -0
  156. package/dist/esm/parser/parse-context.js +1 -0
  157. package/dist/esm/parser/reference-parser.js +1 -0
  158. package/dist/esm/parser/returning-parser.js +1 -0
  159. package/dist/esm/parser/select-parser.js +1 -0
  160. package/dist/esm/parser/table-parser.js +1 -0
  161. package/dist/esm/parser/union-parser.js +1 -0
  162. package/dist/esm/parser/update-set-parser.js +1 -0
  163. package/dist/esm/parser/value-parser.js +1 -0
  164. package/dist/esm/parser/with-parser.js +1 -0
  165. package/dist/esm/plugin/camel-case/camel-case-plugin.js +3 -2
  166. package/dist/esm/plugin/camel-case/camel-case-transformer.js +1 -0
  167. package/dist/esm/plugin/camel-case/camel-case.js +1 -0
  168. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +1 -0
  169. package/dist/esm/plugin/immediate-value.ts/immediate-value-transformer.js +1 -0
  170. package/dist/esm/plugin/kysely-plugin.js +1 -0
  171. package/dist/esm/plugin/with-schema/with-schema-plugin.js +1 -0
  172. package/dist/esm/plugin/with-schema/with-schema-transformer.js +1 -0
  173. package/dist/esm/query-builder/delete-query-builder.js +1 -0
  174. package/dist/esm/query-builder/delete-result.js +1 -0
  175. package/dist/esm/query-builder/expression-builder.d.ts +42 -0
  176. package/dist/esm/query-builder/expression-builder.js +49 -0
  177. package/dist/esm/query-builder/function-builder.js +1 -0
  178. package/dist/esm/query-builder/having-interface.js +1 -0
  179. package/dist/esm/query-builder/insert-query-builder.d.ts +16 -0
  180. package/dist/esm/query-builder/insert-query-builder.js +17 -0
  181. package/dist/esm/query-builder/insert-result.js +1 -0
  182. package/dist/esm/query-builder/join-builder.js +1 -0
  183. package/dist/esm/query-builder/join-interface.js +1 -0
  184. package/dist/esm/query-builder/no-result-error.js +1 -0
  185. package/dist/esm/query-builder/on-conflict-builder.d.ts +5 -3
  186. package/dist/esm/query-builder/on-conflict-builder.js +1 -0
  187. package/dist/esm/query-builder/returning-interface.js +1 -0
  188. package/dist/esm/query-builder/select-query-builder.js +1 -0
  189. package/dist/esm/query-builder/update-query-builder.js +1 -0
  190. package/dist/esm/query-builder/update-result.js +1 -0
  191. package/dist/esm/query-builder/where-interface.js +1 -0
  192. package/dist/esm/query-compiler/compiled-query.js +1 -0
  193. package/dist/esm/query-compiler/default-query-compiler.js +1 -0
  194. package/dist/esm/query-compiler/query-compiler.js +1 -0
  195. package/dist/esm/query-creator.d.ts +1 -1
  196. package/dist/esm/query-creator.js +1 -0
  197. package/dist/esm/query-executor/default-query-executor.js +1 -0
  198. package/dist/esm/query-executor/noop-query-executor.js +1 -0
  199. package/dist/esm/query-executor/query-executor.js +1 -0
  200. package/dist/esm/raw-builder/raw-builder.js +1 -0
  201. package/dist/esm/schema/alter-table-builder.js +1 -0
  202. package/dist/esm/schema/column-definition-builder.js +1 -0
  203. package/dist/esm/schema/create-index-builder.js +1 -0
  204. package/dist/esm/schema/create-schema-builder.js +1 -0
  205. package/dist/esm/schema/create-table-builder.js +1 -0
  206. package/dist/esm/schema/create-view-builder.js +1 -0
  207. package/dist/esm/schema/drop-index-builder.js +1 -0
  208. package/dist/esm/schema/drop-schema-builder.js +1 -0
  209. package/dist/esm/schema/drop-table-builder.js +1 -0
  210. package/dist/esm/schema/drop-view-builder.js +1 -0
  211. package/dist/esm/schema/foreign-key-constraint-builder.js +1 -0
  212. package/dist/esm/schema/schema.js +1 -0
  213. package/dist/esm/util/assert.js +1 -0
  214. package/dist/esm/util/column-type.js +1 -0
  215. package/dist/esm/util/compilable.js +1 -0
  216. package/dist/esm/util/log.js +1 -0
  217. package/dist/esm/util/object-utils.d.ts +1 -1
  218. package/dist/esm/util/object-utils.js +7 -6
  219. package/dist/esm/util/performance-now.js +1 -0
  220. package/dist/esm/util/prevent-await.js +1 -0
  221. package/dist/esm/util/private-symbols.js +1 -0
  222. package/dist/esm/util/query-id.js +1 -0
  223. package/dist/esm/util/random-string.js +1 -0
  224. package/dist/esm/util/type-utils.js +1 -0
  225. package/package.json +3 -2
  226. package/.prettierignore +0 -1
  227. package/dist/cjs/util/dynamic-import.d.ts +0 -2
  228. package/dist/cjs/util/dynamic-import.js +0 -32
  229. package/dist/esm/util/dynamic-import.d.ts +0 -2
  230. package/dist/esm/util/dynamic-import.js +0 -27
@@ -1,13 +1,10 @@
1
- /// <reference types="node" />
2
- import * as stream from 'stream';
3
- import { ConnectionOptions } from 'tls';
4
1
  import { Driver } from '../../driver/driver.js';
5
2
  import { Kysely } from '../../kysely.js';
6
3
  import { QueryCompiler } from '../../query-compiler/query-compiler.js';
7
4
  import { Dialect } from '../dialect.js';
8
5
  import { DatabaseIntrospector } from '../database-introspector.js';
9
6
  import { DialectAdapter } from '../dialect-adapter.js';
10
- import { DatabaseConnection } from '../../driver/database-connection.js';
7
+ import { PostgresDialectConfig } from './postgres-dialect-config.js';
11
8
  /**
12
9
  * PostgreSQL dialect that uses the [pg](https://node-postgres.com/) library.
13
10
  *
@@ -42,102 +39,3 @@ export declare class PostgresDialect implements Dialect {
42
39
  */
43
40
  createIntrospector(db: Kysely<any>): DatabaseIntrospector;
44
41
  }
45
- /**
46
- * Config for the PostgreSQL dialect.
47
- *
48
- * This interface is equal to `pg` library's `Pool` config:
49
- *
50
- * https://node-postgres.com/api/pool
51
- * https://node-postgres.com/api/client
52
- */
53
- export interface PostgresDialectConfig {
54
- /**
55
- * defaults process.env.PGUSER || process.env.USER.
56
- */
57
- user?: string;
58
- /**
59
- * default process.env.PGDATABASE || process.env.USER
60
- */
61
- database?: string;
62
- /**
63
- * default process.env.PGPASSWORD
64
- */
65
- password?: string | (() => string | Promise<string>);
66
- /**
67
- * default process.env.PGPORT
68
- */
69
- port?: number;
70
- /**
71
- * default process.env.PGHOST
72
- */
73
- host?: string;
74
- /**
75
- * e.g. postgres:*user:password@host:5432/database
76
- */
77
- connectionString?: string;
78
- /**
79
- * passed directly to node.TLSSocket, supports all tls.connect options
80
- */
81
- ssl?: boolean | ConnectionOptions;
82
- /**
83
- * Number of milliseconds to wait before timing out when connecting a new client
84
- * by default this is 0 which means no timeout.
85
- */
86
- connectionTimeoutMillis?: number;
87
- /**
88
- * Maximum number of clients the pool should contain. by default this is set to 10.
89
- */
90
- max?: number;
91
- /**
92
- * Minimum number of clients the pool should contain
93
- */
94
- min?: number;
95
- /**
96
- * Number of milliseconds a client must sit idle in the pool and not be checked out
97
- * before it is disconnected from the backend and discarded.
98
- *
99
- * default is 10000 (10 seconds) - set to 0 to disable auto-disconnection of idle clients.
100
- */
101
- idleTimeoutMillis?: number;
102
- /**
103
- * Default behavior is the pool will keep clients open & connected to the backend
104
- * until idleTimeoutMillis expire for each client and node will maintain a ref
105
- * to the socket on the client, keeping the event loop alive until all clients are closed
106
- * after being idle or the pool is manually shutdown with `pool.end()`.
107
- *
108
- * Setting `allowExitOnIdle: true` in the config will allow the node event loop to exit
109
- * as soon as all clients in the pool are idle, even if their socket is still open
110
- * to the PostgreSQL server. This can be handy in scripts & tests
111
- * where you don't want to wait for your clients to go idle before your process exits.
112
- */
113
- allowExitOnIdle?: boolean;
114
- log?: (...messages: any[]) => void;
115
- /**
116
- * Number of milliseconds before a statement in query will time out, default is no timeout.
117
- */
118
- statement_timeout?: false | number;
119
- /**
120
- * Number of milliseconds before terminating any session with an open idle transaction.
121
- * Default is no timeout.
122
- */
123
- idle_in_transaction_session_timeout?: number;
124
- /**
125
- * Number of milliseconds before a query call will timeout, default is no timeout.
126
- */
127
- query_timeout?: number;
128
- /**
129
- * The name of the application that created this Client instance.
130
- */
131
- application_name?: string;
132
- /**
133
- * Called once for each created connection.
134
- *
135
- * This is a Kysely specific feature and does not come from the `pg` module.
136
- */
137
- onCreateConnection?: (connection: DatabaseConnection) => Promise<void>;
138
- keepAlive?: boolean;
139
- keepAliveInitialDelayMillis?: number;
140
- types?: any;
141
- stream?: stream.Duplex;
142
- parseInputDatesAsUTC?: boolean;
143
- }
@@ -1,6 +1,6 @@
1
1
  import { DatabaseConnection } from '../../driver/database-connection.js';
2
2
  import { Driver, TransactionSettings } from '../../driver/driver.js';
3
- import { PostgresDialectConfig } from './postgres-dialect.js';
3
+ import { PostgresDialectConfig } from './postgres-dialect-config.js';
4
4
  export declare class PostgresDriver implements Driver {
5
5
  #private;
6
6
  constructor(config: PostgresDialectConfig);
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PostgresDriver = void 0;
4
4
  const compiled_query_js_1 = require("../../query-compiler/compiled-query.js");
5
- const dynamic_import_js_1 = require("../../util/dynamic-import.js");
5
+ const object_utils_js_1 = require("../../util/object-utils.js");
6
6
  const PRIVATE_RELEASE_METHOD = Symbol();
7
7
  class PostgresDriver {
8
8
  #config;
@@ -66,7 +66,16 @@ class PostgresDriver {
66
66
  exports.PostgresDriver = PostgresDriver;
67
67
  async function importPgPool() {
68
68
  try {
69
- return await (0, dynamic_import_js_1.importNamedFunction)('pg', 'Pool');
69
+ // The imported module name must be a string literal to make
70
+ // some bundlers work. So don't move this code behind a helper
71
+ // for example.
72
+ const pgModule = await Promise.resolve().then(() => require('pg'));
73
+ if ((0, object_utils_js_1.isFunction)(pgModule.Pool)) {
74
+ return pgModule.Pool;
75
+ }
76
+ else {
77
+ return pgModule.default.Pool;
78
+ }
70
79
  }
71
80
  catch (error) {
72
81
  throw new Error('Postgres client not installed. Please run `npm install pg`');
@@ -0,0 +1,43 @@
1
+ import { DatabaseConnection } from '../../driver/database-connection.js';
2
+ /**
3
+ * Config for the SQLite dialect.
4
+ *
5
+ * This interface is equal to `better-sqlite3` library's `Databse` class's constructor parameters.
6
+ *
7
+ * https://github.com/JoshuaWise/better-sqlite3/blob/master/docs/api.md#new-databasepath-options
8
+ */
9
+ export interface SqliteDialectConfig {
10
+ /**
11
+ * The database file path.
12
+ *
13
+ * This is passed as the first argument for the [Database](https://github.com/JoshuaWise/better-sqlite3/blob/master/docs/api.md#new-databasepath-options)
14
+ * class constructor.
15
+ */
16
+ databasePath: string;
17
+ /**
18
+ * Open the database connection in readonly mode (default: false)
19
+ */
20
+ readonly?: boolean;
21
+ /**
22
+ * If the database does not exist, an Error will be thrown instead of creating a new file.
23
+ * This option is ignored for in-memory, temporary, or readonly database connections
24
+ * (default: false)
25
+ */
26
+ fileMustExist?: boolean;
27
+ /**
28
+ * The number of milliseconds to wait when executing queries on a locked database,
29
+ * before throwing a SQLITE_BUSY error (default: 5000)
30
+ */
31
+ timeout?: number;
32
+ /**
33
+ * Provide a function that gets called with every SQL string executed by the database connection
34
+ * (default: null)
35
+ */
36
+ verbose?: (sql: string) => void;
37
+ /**
38
+ * Called once when the first query is executed.
39
+ *
40
+ * This is a Kysely specific feature and does not come from the `better-sqlite3` module.
41
+ */
42
+ onCreateConnection?: (connection: DatabaseConnection) => Promise<void>;
43
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -4,7 +4,7 @@ import { QueryCompiler } from '../../query-compiler/query-compiler.js';
4
4
  import { Dialect } from '../dialect.js';
5
5
  import { DatabaseIntrospector } from '../database-introspector.js';
6
6
  import { DialectAdapter } from '../dialect-adapter.js';
7
- import { DatabaseConnection } from '../../driver/database-connection.js';
7
+ import { SqliteDialectConfig } from './sqlite-dialect-config.js';
8
8
  /**
9
9
  * SQLite dialect that uses the [better-sqlite3](https://github.com/JoshuaWise/better-sqlite3) library.
10
10
  *
@@ -36,45 +36,3 @@ export declare class SqliteDialect implements Dialect {
36
36
  */
37
37
  createIntrospector(db: Kysely<any>): DatabaseIntrospector;
38
38
  }
39
- /**
40
- * Config for the SQLite dialect.
41
- *
42
- * This interface is equal to `better-sqlite3` library's `Databse` class's constructor parameters.
43
- *
44
- * https://github.com/JoshuaWise/better-sqlite3/blob/master/docs/api.md#new-databasepath-options
45
- */
46
- export interface SqliteDialectConfig {
47
- /**
48
- * The database file path.
49
- *
50
- * This is passed as the first argument for the [Database](https://github.com/JoshuaWise/better-sqlite3/blob/master/docs/api.md#new-databasepath-options)
51
- * class constructor.
52
- */
53
- databasePath: string;
54
- /**
55
- * Open the database connection in readonly mode (default: false)
56
- */
57
- readonly?: boolean;
58
- /**
59
- * If the database does not exist, an Error will be thrown instead of creating a new file.
60
- * This option is ignored for in-memory, temporary, or readonly database connections
61
- * (default: false)
62
- */
63
- fileMustExist?: boolean;
64
- /**
65
- * The number of milliseconds to wait when executing queries on a locked database,
66
- * before throwing a SQLITE_BUSY error (default: 5000)
67
- */
68
- timeout?: number;
69
- /**
70
- * Provide a function that gets called with every SQL string executed by the database connection
71
- * (default: null)
72
- */
73
- verbose?: (sql: string) => void;
74
- /**
75
- * Called once when the first query is executed.
76
- *
77
- * This is a Kysely specific feature and does not come from the `better-sqlite3` module.
78
- */
79
- onCreateConnection?: (connection: DatabaseConnection) => Promise<void>;
80
- }
@@ -1,6 +1,6 @@
1
1
  import { DatabaseConnection } from '../../driver/database-connection.js';
2
2
  import { Driver } from '../../driver/driver.js';
3
- import { SqliteDialectConfig } from './sqlite-dialect.js';
3
+ import { SqliteDialectConfig } from './sqlite-dialect-config.js';
4
4
  export declare class SqliteDriver implements Driver {
5
5
  #private;
6
6
  constructor(config: SqliteDialectConfig);
@@ -2,7 +2,6 @@
2
2
  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
- const dynamic_import_js_1 = require("../../util/dynamic-import.js");
6
5
  const object_utils_js_1 = require("../../util/object-utils.js");
7
6
  class SqliteDriver {
8
7
  #config;
@@ -63,7 +62,16 @@ class SqliteDriver {
63
62
  exports.SqliteDriver = SqliteDriver;
64
63
  async function importBetterSqlite3Database() {
65
64
  try {
66
- return await (0, dynamic_import_js_1.importFunction)('better-sqlite3');
65
+ // The imported module name must be a string literal to make
66
+ // some bundlers work. So don't move this code behind a helper
67
+ // for example.
68
+ const sqliteModule = await Promise.resolve().then(() => require('better-sqlite3'));
69
+ if ((0, object_utils_js_1.isFunction)(sqliteModule)) {
70
+ return sqliteModule;
71
+ }
72
+ else {
73
+ return sqliteModule.default;
74
+ }
67
75
  }
68
76
  catch (error) {
69
77
  throw new Error('SQLite client not installed. Please run `npm install better-sqlite3`');
@@ -1,8 +1,11 @@
1
1
  export * from './index-nodeless.js';
2
2
  export * from './migration/file-migration-provider.js';
3
3
  export * from './dialect/sqlite/sqlite-dialect.js';
4
+ export * from './dialect/sqlite/sqlite-dialect-config.js';
4
5
  export * from './dialect/sqlite/sqlite-driver.js';
5
6
  export * from './dialect/mysql/mysql-dialect.js';
7
+ export * from './dialect/mysql/mysql-dialect-config.js';
6
8
  export * from './dialect/mysql/mysql-driver.js';
7
9
  export * from './dialect/postgres/postgres-driver.js';
10
+ export * from './dialect/postgres/postgres-dialect-config.js';
8
11
  export * from './dialect/postgres/postgres-dialect.js';
package/dist/cjs/index.js CHANGED
@@ -13,8 +13,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
13
13
  __exportStar(require("./index-nodeless.js"), exports);
14
14
  __exportStar(require("./migration/file-migration-provider.js"), exports);
15
15
  __exportStar(require("./dialect/sqlite/sqlite-dialect.js"), exports);
16
+ __exportStar(require("./dialect/sqlite/sqlite-dialect-config.js"), exports);
16
17
  __exportStar(require("./dialect/sqlite/sqlite-driver.js"), exports);
17
18
  __exportStar(require("./dialect/mysql/mysql-dialect.js"), exports);
19
+ __exportStar(require("./dialect/mysql/mysql-dialect-config.js"), exports);
18
20
  __exportStar(require("./dialect/mysql/mysql-driver.js"), exports);
19
21
  __exportStar(require("./dialect/postgres/postgres-driver.js"), exports);
22
+ __exportStar(require("./dialect/postgres/postgres-dialect-config.js"), exports);
20
23
  __exportStar(require("./dialect/postgres/postgres-dialect.js"), exports);
@@ -1,5 +1,5 @@
1
- import { CheckConstraintNode } from "./check-constraint-node";
2
- import { ForeignKeyConstraintNode } from "./foreign-key-constraint-node";
3
- import { PrimaryKeyConstraintNode } from "./primary-constraint-node";
4
- import { UniqueConstraintNode } from "./unique-constraint-node";
1
+ import { CheckConstraintNode } from './check-constraint-node.js';
2
+ import { ForeignKeyConstraintNode } from './foreign-key-constraint-node.js';
3
+ import { PrimaryKeyConstraintNode } from './primary-constraint-node.js';
4
+ import { UniqueConstraintNode } from './unique-constraint-node.js';
5
5
  export declare type ConstraintNode = PrimaryKeyConstraintNode | UniqueConstraintNode | CheckConstraintNode | ForeignKeyConstraintNode;
@@ -111,5 +111,5 @@ class CamelCasePlugin {
111
111
  }
112
112
  exports.CamelCasePlugin = CamelCasePlugin;
113
113
  function canMap(obj) {
114
- return (0, object_utils_js_1.isObject)(obj) && !(obj instanceof Date) && !Buffer.isBuffer(obj);
114
+ return (0, object_utils_js_1.isObject)(obj) && !(0, object_utils_js_1.isDate)(obj) && !(0, object_utils_js_1.isBuffer)(obj);
115
115
  }
@@ -3,6 +3,8 @@ import { TableExpression, TableExpressionDatabase, TableExpressionTables } from
3
3
  import { NoopQueryExecutor } from '../query-executor/noop-query-executor.js';
4
4
  import { ParseContext } from '../parser/parse-context.js';
5
5
  import { FunctionBuilder } from './function-builder.js';
6
+ import { RawBuilder } from '../index-nodeless.js';
7
+ import { ExtractTypeFromReferenceExpression, StringReference } from '../parser/reference-parser.js';
6
8
  export declare class ExpressionBuilder<DB, TB extends keyof DB> {
7
9
  #private;
8
10
  constructor(props: ExpressionBuilderProps);
@@ -44,6 +46,8 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
44
46
  * The query builder returned by this method is typed in a way that you can refer to
45
47
  * all tables of the parent query in addition to the subquery's tables.
46
48
  *
49
+ * This method accepts all the same inputs as {@link QueryCreator.selectFrom}.
50
+ *
47
51
  * ### Examples
48
52
  *
49
53
  * This example shows that you can refer to both `pet.owner_id` and `person.id`
@@ -86,6 +90,44 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
86
90
  * See {@link QueryCreator.withSchema}
87
91
  */
88
92
  withSchema(schema: string): ExpressionBuilder<DB, TB>;
93
+ /**
94
+ * See {@link QueryCreator.raw}.
95
+ */
96
+ raw<T = unknown>(sql: string, parameters?: unknown[]): RawBuilder<T>;
97
+ /**
98
+ * This can be used to reference columns.
99
+ *
100
+ * ### Examples
101
+ *
102
+ * In the next example we use the `ref` method to reference
103
+ * columns of the virtual table `excluded` in a type-safe way
104
+ * to create an upsert operation:
105
+ *
106
+ * ```ts
107
+ * db.insertInto('person')
108
+ * .values(person)
109
+ * .onConflict(oc => oc
110
+ * .column('id')
111
+ * .doUpdateSet({
112
+ * first_name: (eb) => eb.ref('excluded.first_name'),
113
+ * last_name: (eb) => eb.ref('excluded.last_name')
114
+ * })
115
+ * )
116
+ * ```
117
+ *
118
+ * In the next example we use `ref` in a raw expression. Unless you
119
+ * want to be as type-safe as possible, this is probably overkill:
120
+ *
121
+ * ```ts
122
+ * db.update('pet').set({
123
+ * name: (eb) => eb.raw('concat(?, ?)', [
124
+ * eb.ref('pet.name'),
125
+ * suffix,
126
+ * ])
127
+ * })
128
+ * ```
129
+ */
130
+ ref<RE extends StringReference<DB, TB>>(reference: RE): RawBuilder<ExtractTypeFromReferenceExpression<DB, TB, RE>>;
89
131
  }
90
132
  export interface ExpressionBuilderProps {
91
133
  readonly executor: NoopQueryExecutor;
@@ -8,6 +8,7 @@ const with_schema_plugin_js_1 = require("../plugin/with-schema/with-schema-plugi
8
8
  const query_id_js_1 = require("../util/query-id.js");
9
9
  const object_utils_js_1 = require("../util/object-utils.js");
10
10
  const function_builder_js_1 = require("./function-builder.js");
11
+ const index_nodeless_js_1 = require("../index-nodeless.js");
11
12
  class ExpressionBuilder {
12
13
  #props;
13
14
  constructor(props) {
@@ -64,5 +65,52 @@ class ExpressionBuilder {
64
65
  executor: this.#props.executor.withPluginAtFront(new with_schema_plugin_js_1.WithSchemaPlugin(schema)),
65
66
  });
66
67
  }
68
+ /**
69
+ * See {@link QueryCreator.raw}.
70
+ */
71
+ raw(sql, parameters) {
72
+ return new index_nodeless_js_1.RawBuilder({
73
+ queryId: (0, query_id_js_1.createQueryId)(),
74
+ executor: this.#props.executor,
75
+ sql,
76
+ parameters,
77
+ });
78
+ }
79
+ /**
80
+ * This can be used to reference columns.
81
+ *
82
+ * ### Examples
83
+ *
84
+ * In the next example we use the `ref` method to reference
85
+ * columns of the virtual table `excluded` in a type-safe way
86
+ * to create an upsert operation:
87
+ *
88
+ * ```ts
89
+ * db.insertInto('person')
90
+ * .values(person)
91
+ * .onConflict(oc => oc
92
+ * .column('id')
93
+ * .doUpdateSet({
94
+ * first_name: (eb) => eb.ref('excluded.first_name'),
95
+ * last_name: (eb) => eb.ref('excluded.last_name')
96
+ * })
97
+ * )
98
+ * ```
99
+ *
100
+ * In the next example we use `ref` in a raw expression. Unless you
101
+ * want to be as type-safe as possible, this is probably overkill:
102
+ *
103
+ * ```ts
104
+ * db.update('pet').set({
105
+ * name: (eb) => eb.raw('concat(?, ?)', [
106
+ * eb.ref('pet.name'),
107
+ * suffix,
108
+ * ])
109
+ * })
110
+ * ```
111
+ */
112
+ ref(reference) {
113
+ return this.raw('??', [reference]);
114
+ }
67
115
  }
68
116
  exports.ExpressionBuilder = ExpressionBuilder;
@@ -342,6 +342,22 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
342
342
  * values ($1, $2)
343
343
  * on conflict ("name") do nothing
344
344
  * ```
345
+ *
346
+ * You can refer to the columns of the virtual `excluded` table
347
+ * in a type-safe way using a callback and the `ref` method of
348
+ * `ExpressionBuilder`:
349
+ *
350
+ * ```ts
351
+ * db.insertInto('person')
352
+ * .values(person)
353
+ * .onConflict(oc => oc
354
+ * .column('id')
355
+ * .doUpdateSet({
356
+ * first_name: (eb) => eb.ref('excluded.first_name'),
357
+ * last_name: (eb) => eb.ref('excluded.last_name')
358
+ * })
359
+ * )
360
+ * ```
345
361
  */
346
362
  onConflict(callback: (builder: OnConflictBuilder<DB, TB>) => OnConflictDoNothingBuilder<DB, TB> | OnConflictUpdateBuilder<DB, TB>): InsertQueryBuilder<DB, TB, O>;
347
363
  /**
@@ -248,6 +248,22 @@ class InsertQueryBuilder {
248
248
  * values ($1, $2)
249
249
  * on conflict ("name") do nothing
250
250
  * ```
251
+ *
252
+ * You can refer to the columns of the virtual `excluded` table
253
+ * in a type-safe way using a callback and the `ref` method of
254
+ * `ExpressionBuilder`:
255
+ *
256
+ * ```ts
257
+ * db.insertInto('person')
258
+ * .values(person)
259
+ * .onConflict(oc => oc
260
+ * .column('id')
261
+ * .doUpdateSet({
262
+ * first_name: (eb) => eb.ref('excluded.first_name'),
263
+ * last_name: (eb) => eb.ref('excluded.last_name')
264
+ * })
265
+ * )
266
+ * ```
251
267
  */
252
268
  onConflict(callback) {
253
269
  return new InsertQueryBuilder({
@@ -377,14 +377,16 @@ 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<{
381
- [K in keyof DB | 'excluded']: K extends keyof DB ? DB[K] : DB[TB];
382
- }, TB | 'excluded'>;
380
+ doUpdateSet(updates: MutationObject<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>): OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>;
383
381
  }
384
382
  export interface OnConflictBuilderProps {
385
383
  readonly onConflictNode: OnConflictNode;
386
384
  readonly parseContext: ParseContext;
387
385
  }
386
+ export declare type OnConflictDatabase<DB, TB extends keyof DB> = {
387
+ [K in keyof DB | 'excluded']: K extends keyof DB ? DB[K] : DB[TB];
388
+ };
389
+ export declare type OnConflictTables<TB> = TB | 'excluded';
388
390
  export declare class OnConflictDoNothingBuilder<DB, TB extends keyof DB> implements OperationNodeSource {
389
391
  #private;
390
392
  constructor(props: OnConflictBuilderProps);
@@ -412,7 +412,7 @@ export declare class QueryCreator<DB> {
412
412
  * @param params - The parameters that will be bound to the `?` and `??` placeholders in
413
413
  * the sql string.
414
414
  */
415
- raw<T = unknown>(sql: string, parameters?: any[]): RawBuilder<T>;
415
+ raw<T = unknown>(sql: string, parameters?: unknown[]): RawBuilder<T>;
416
416
  }
417
417
  export interface QueryCreatorProps {
418
418
  readonly executor: QueryExecutor;
@@ -6,8 +6,8 @@ export declare function isNumber(obj: unknown): obj is number;
6
6
  export declare function isBoolean(obj: unknown): obj is boolean;
7
7
  export declare function isNull(obj: unknown): obj is null;
8
8
  export declare function isDate(obj: unknown): obj is Date;
9
- export declare function isBuffer(obj: unknown): obj is Buffer;
10
9
  export declare function isBigInt(obj: unknown): obj is BigInt;
10
+ export declare function isBuffer(obj: unknown): obj is Buffer;
11
11
  export declare function isPrimitive(obj: unknown): obj is PrimitiveValue;
12
12
  export declare function isFunction(obj: unknown): obj is Function;
13
13
  export declare function isObject(obj: unknown): obj is Record<string, unknown>;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.noop = exports.isReadonlyArray = exports.asReadonlyArray = exports.asArray = exports.freeze = exports.getLast = exports.isObject = exports.isFunction = exports.isPrimitive = exports.isBigInt = exports.isBuffer = exports.isDate = exports.isNull = exports.isBoolean = exports.isNumber = exports.isString = exports.isEmpty = void 0;
3
+ exports.noop = exports.isReadonlyArray = exports.asReadonlyArray = exports.asArray = exports.freeze = exports.getLast = exports.isObject = exports.isFunction = exports.isPrimitive = exports.isBuffer = exports.isBigInt = exports.isDate = exports.isNull = exports.isBoolean = exports.isNumber = exports.isString = exports.isEmpty = void 0;
4
4
  function isEmpty(obj) {
5
- if (Array.isArray(obj) || isString(obj) || Buffer.isBuffer(obj)) {
5
+ if (Array.isArray(obj) || isString(obj) || isBuffer(obj)) {
6
6
  return obj.length === 0;
7
7
  }
8
8
  else if (obj) {
@@ -31,22 +31,22 @@ function isDate(obj) {
31
31
  return obj instanceof Date;
32
32
  }
33
33
  exports.isDate = isDate;
34
- function isBuffer(obj) {
35
- return Buffer.isBuffer(obj);
36
- }
37
- exports.isBuffer = isBuffer;
38
34
  function isBigInt(obj) {
39
35
  return typeof obj === 'bigint';
40
36
  }
41
37
  exports.isBigInt = isBigInt;
38
+ function isBuffer(obj) {
39
+ return typeof Buffer !== 'undefined' && Buffer.isBuffer(obj);
40
+ }
41
+ exports.isBuffer = isBuffer;
42
42
  function isPrimitive(obj) {
43
43
  return (isString(obj) ||
44
44
  isNumber(obj) ||
45
45
  isBoolean(obj) ||
46
46
  isNull(obj) ||
47
47
  isDate(obj) ||
48
- isBuffer(obj) ||
49
- isBigInt(obj));
48
+ isBigInt(obj) ||
49
+ isBuffer(obj));
50
50
  }
51
51
  exports.isPrimitive = isPrimitive;
52
52
  function isFunction(obj) {
@@ -1 +1,2 @@
1
+ /// <reference types="./database-introspector.d.ts" />
1
2
  export {};
@@ -1,3 +1,4 @@
1
+ /// <reference types="./dialect-adapter-base.d.ts" />
1
2
  /**
2
3
  * A basic implementation of `DialectAdapter` with sensible default values.
3
4
  * 3rd party dialects can extend this instead of implementing the `DialectAdapter`
@@ -1 +1,2 @@
1
+ /// <reference types="./dialect-adapter.d.ts" />
1
2
  export {};
@@ -1 +1,2 @@
1
+ /// <reference types="./dialect.d.ts" />
1
2
  export {};
@@ -1,3 +1,4 @@
1
+ /// <reference types="./mysql-adapter.d.ts" />
1
2
  import { DialectAdapterBase } from '../dialect-adapter-base.js';
2
3
  const LOCK_ID = 'ea586330-2c93-47c8-908d-981d9d270f9d';
3
4
  const LOCK_TIMEOUT_SECONDS = 60 * 60;