kysely 0.9.0 → 0.9.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 (109) hide show
  1. package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +9 -0
  2. package/dist/cjs/dialect/mysql/mysql-dialect.js +7 -0
  3. package/dist/cjs/dialect/mysql/mysql-driver.js +2 -2
  4. package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +11 -1
  5. package/dist/cjs/dialect/postgres/postgres-dialect.js +10 -0
  6. package/dist/cjs/driver/runtime-driver.d.ts +3 -2
  7. package/dist/cjs/driver/runtime-driver.js +43 -4
  8. package/dist/cjs/index.d.ts +1 -1
  9. package/dist/cjs/kysely.d.ts +26 -9
  10. package/dist/cjs/kysely.js +16 -9
  11. package/dist/cjs/migration/migration.d.ts +32 -0
  12. package/dist/cjs/operation-node/create-schema-node.d.ts +1 -1
  13. package/dist/cjs/operation-node/create-schema-node.js +2 -2
  14. package/dist/cjs/operation-node/create-table-node.d.ts +1 -5
  15. package/dist/cjs/operation-node/create-table-node.js +1 -31
  16. package/dist/cjs/operation-node/join-node.d.ts +2 -1
  17. package/dist/cjs/operation-node/join-node.js +8 -6
  18. package/dist/cjs/operation-node/operation-node-source.d.ts +1 -1
  19. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  20. package/dist/cjs/operation-node/operation-node-transformer.js +11 -1
  21. package/dist/cjs/operation-node/operation-node-visitor.d.ts +61 -59
  22. package/dist/cjs/operation-node/operation-node-visitor.js +1 -316
  23. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  24. package/dist/cjs/operation-node/query-node.d.ts +4 -3
  25. package/dist/cjs/operation-node/query-node.js +10 -2
  26. package/dist/cjs/operation-node/select-query-node.d.ts +5 -1
  27. package/dist/cjs/operation-node/select-query-node.js +18 -2
  28. package/dist/cjs/operation-node/union-node.d.ts +16 -0
  29. package/dist/cjs/operation-node/union-node.js +19 -0
  30. package/dist/cjs/parser/group-by-parser.d.ts +4 -0
  31. package/dist/cjs/parser/group-by-parser.js +9 -0
  32. package/dist/cjs/parser/insert-values-parser.d.ts +1 -1
  33. package/dist/cjs/parser/join-parser.d.ts +4 -4
  34. package/dist/cjs/parser/order-by-parser.d.ts +2 -4
  35. package/dist/cjs/parser/order-by-parser.js +6 -3
  36. package/dist/cjs/parser/reference-parser.d.ts +1 -1
  37. package/dist/cjs/parser/reference-parser.js +1 -1
  38. package/dist/cjs/parser/union-parser.d.ts +5 -0
  39. package/dist/cjs/parser/union-parser.js +13 -0
  40. package/dist/cjs/parser/value-parser.d.ts +1 -1
  41. package/dist/cjs/query-builder/join-builder.js +8 -8
  42. package/dist/cjs/query-builder/query-builder.d.ts +65 -1
  43. package/dist/cjs/query-builder/query-builder.js +103 -22
  44. package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
  45. package/dist/cjs/query-compiler/default-query-compiler.d.ts +7 -2
  46. package/dist/cjs/query-compiler/default-query-compiler.js +21 -4
  47. package/dist/cjs/schema/create-schema-builder.js +1 -1
  48. package/dist/cjs/schema/create-table-builder.js +7 -4
  49. package/dist/cjs/util/log.d.ts +8 -0
  50. package/dist/cjs/util/log.js +21 -0
  51. package/dist/cjs/util/object-utils.d.ts +11 -11
  52. package/dist/cjs/util/object-utils.js +1 -1
  53. package/dist/cjs/util/random-string.js +6 -3
  54. package/dist/cjs/util/type-utils.d.ts +4 -4
  55. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +9 -0
  56. package/dist/esm/dialect/mysql/mysql-dialect.js +7 -0
  57. package/dist/esm/dialect/mysql/mysql-driver.js +3 -3
  58. package/dist/esm/dialect/postgres/postgres-dialect.d.ts +11 -1
  59. package/dist/esm/dialect/postgres/postgres-dialect.js +10 -0
  60. package/dist/esm/driver/runtime-driver.d.ts +3 -2
  61. package/dist/esm/driver/runtime-driver.js +43 -4
  62. package/dist/esm/index.d.ts +1 -1
  63. package/dist/esm/kysely.d.ts +26 -9
  64. package/dist/esm/kysely.js +16 -9
  65. package/dist/esm/migration/migration.d.ts +32 -0
  66. package/dist/esm/operation-node/create-schema-node.d.ts +1 -1
  67. package/dist/esm/operation-node/create-schema-node.js +2 -2
  68. package/dist/esm/operation-node/create-table-node.d.ts +1 -5
  69. package/dist/esm/operation-node/create-table-node.js +1 -31
  70. package/dist/esm/operation-node/join-node.d.ts +2 -1
  71. package/dist/esm/operation-node/join-node.js +8 -6
  72. package/dist/esm/operation-node/operation-node-source.d.ts +1 -1
  73. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  74. package/dist/esm/operation-node/operation-node-transformer.js +11 -1
  75. package/dist/esm/operation-node/operation-node-visitor.d.ts +61 -59
  76. package/dist/esm/operation-node/operation-node-visitor.js +1 -316
  77. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  78. package/dist/esm/operation-node/query-node.d.ts +4 -3
  79. package/dist/esm/operation-node/query-node.js +10 -2
  80. package/dist/esm/operation-node/select-query-node.d.ts +5 -1
  81. package/dist/esm/operation-node/select-query-node.js +18 -2
  82. package/dist/esm/operation-node/union-node.d.ts +16 -0
  83. package/dist/esm/operation-node/union-node.js +16 -0
  84. package/dist/esm/parser/group-by-parser.d.ts +4 -0
  85. package/dist/esm/parser/group-by-parser.js +5 -0
  86. package/dist/esm/parser/insert-values-parser.d.ts +1 -1
  87. package/dist/esm/parser/join-parser.d.ts +4 -4
  88. package/dist/esm/parser/order-by-parser.d.ts +2 -4
  89. package/dist/esm/parser/order-by-parser.js +6 -2
  90. package/dist/esm/parser/reference-parser.d.ts +1 -1
  91. package/dist/esm/parser/reference-parser.js +2 -2
  92. package/dist/esm/parser/union-parser.d.ts +5 -0
  93. package/dist/esm/parser/union-parser.js +9 -0
  94. package/dist/esm/parser/value-parser.d.ts +1 -1
  95. package/dist/esm/query-builder/join-builder.js +8 -8
  96. package/dist/esm/query-builder/query-builder.d.ts +65 -1
  97. package/dist/esm/query-builder/query-builder.js +104 -23
  98. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  99. package/dist/esm/query-compiler/default-query-compiler.d.ts +7 -2
  100. package/dist/esm/query-compiler/default-query-compiler.js +21 -4
  101. package/dist/esm/schema/create-schema-builder.js +1 -1
  102. package/dist/esm/schema/create-table-builder.js +7 -4
  103. package/dist/esm/util/log.d.ts +8 -0
  104. package/dist/esm/util/log.js +17 -0
  105. package/dist/esm/util/object-utils.d.ts +11 -11
  106. package/dist/esm/util/object-utils.js +1 -1
  107. package/dist/esm/util/random-string.js +6 -3
  108. package/dist/esm/util/type-utils.d.ts +4 -4
  109. package/package.json +1 -1
@@ -8,6 +8,9 @@ import { ColumnNode } from '../operation-node/column-node.js';
8
8
  import { TableNode } from '../operation-node/table-node.js';
9
9
  import { ForeignKeyConstraintBuilder } from './foreign-key-constraint-builder.js';
10
10
  import { parseDataTypeExpression, } from '../parser/data-type-parser.js';
11
+ import { PrimaryConstraintNode } from '../operation-node/primary-constraint-node.js';
12
+ import { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js';
13
+ import { CheckConstraintNode } from '../operation-node/check-constraint-node.js';
11
14
  /**
12
15
  * This builder can be used to create a `create table` query.
13
16
  */
@@ -92,7 +95,7 @@ export class CreateTableBuilder {
92
95
  addPrimaryKeyConstraint(constraintName, columns) {
93
96
  return new CreateTableBuilder({
94
97
  ...this.#props,
95
- createTableNode: CreateTableNode.cloneWithPrimaryKeyConstraint(this.#props.createTableNode, constraintName, columns),
98
+ createTableNode: CreateTableNode.cloneWithConstraint(this.#props.createTableNode, PrimaryConstraintNode.create(columns, constraintName)),
96
99
  });
97
100
  }
98
101
  /**
@@ -109,7 +112,7 @@ export class CreateTableBuilder {
109
112
  addUniqueConstraint(constraintName, columns) {
110
113
  return new CreateTableBuilder({
111
114
  ...this.#props,
112
- createTableNode: CreateTableNode.cloneWithUniqueConstraint(this.#props.createTableNode, constraintName, columns),
115
+ createTableNode: CreateTableNode.cloneWithConstraint(this.#props.createTableNode, UniqueConstraintNode.create(columns, constraintName)),
113
116
  });
114
117
  }
115
118
  /**
@@ -126,7 +129,7 @@ export class CreateTableBuilder {
126
129
  addCheckConstraint(constraintName, checkExpression) {
127
130
  return new CreateTableBuilder({
128
131
  ...this.#props,
129
- createTableNode: CreateTableNode.cloneWithCheckConstraint(this.#props.createTableNode, constraintName, checkExpression),
132
+ createTableNode: CreateTableNode.cloneWithConstraint(this.#props.createTableNode, CheckConstraintNode.create(checkExpression, constraintName)),
130
133
  });
131
134
  }
132
135
  /**
@@ -160,7 +163,7 @@ export class CreateTableBuilder {
160
163
  const builder = build(new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.create(columns.map(ColumnNode.create), TableNode.create(targetTable), targetColumns.map(ColumnNode.create), constraintName)));
161
164
  return new CreateTableBuilder({
162
165
  ...this.#props,
163
- createTableNode: CreateTableNode.cloneWithForeignKeyConstraint(this.#props.createTableNode, builder.toOperationNode()),
166
+ createTableNode: CreateTableNode.cloneWithConstraint(this.#props.createTableNode, builder.toOperationNode()),
164
167
  });
165
168
  }
166
169
  toOperationNode() {
@@ -0,0 +1,8 @@
1
+ import { ArrayItemType } from './type-utils.js';
2
+ export declare const LOG_LEVELS: readonly ["query"];
3
+ export declare type LogLevel = ArrayItemType<typeof LOG_LEVELS>;
4
+ export declare class Log {
5
+ #private;
6
+ constructor(levels: ReadonlyArray<LogLevel>);
7
+ query(callback: (log: (message: string) => void) => void): void;
8
+ }
@@ -0,0 +1,17 @@
1
+ export const LOG_LEVELS = ['query'];
2
+ export class Log {
3
+ #levels;
4
+ constructor(levels) {
5
+ this.#levels = {
6
+ query: levels.includes('query'),
7
+ };
8
+ }
9
+ query(callback) {
10
+ if (this.#levels.query) {
11
+ callback(this.#query);
12
+ }
13
+ }
14
+ #query(message) {
15
+ console.log(`kysely:query: ${message}`);
16
+ }
17
+ }
@@ -1,16 +1,16 @@
1
1
  /// <reference types="node" />
2
2
  export declare type PrimitiveValue = string | number | boolean | null | Date | Buffer | BigInt;
3
- export declare function isEmpty(obj: ArrayLike<any> | string | object | Buffer): boolean;
4
- export declare function isString(obj: any): obj is string;
5
- export declare function isNumber(obj: any): obj is number;
6
- export declare function isBoolean(obj: any): obj is boolean;
7
- export declare function isNull(obj: any): obj is null;
8
- export declare function isDate(obj: any): obj is Date;
9
- export declare function isBuffer(obj: any): obj is Buffer;
10
- export declare function isBigInt(obj: any): obj is BigInt;
11
- export declare function isPrimitive(obj: any): obj is PrimitiveValue;
12
- export declare function isFunction(obj: any): obj is Function;
13
- export declare function isObject(obj: any): obj is Record<string, any>;
3
+ export declare function isEmpty(obj: ArrayLike<unknown> | string | object | Buffer): boolean;
4
+ export declare function isString(obj: unknown): obj is string;
5
+ export declare function isNumber(obj: unknown): obj is number;
6
+ export declare function isBoolean(obj: unknown): obj is boolean;
7
+ export declare function isNull(obj: unknown): obj is null;
8
+ export declare function isDate(obj: unknown): obj is Date;
9
+ export declare function isBuffer(obj: unknown): obj is Buffer;
10
+ export declare function isBigInt(obj: unknown): obj is BigInt;
11
+ export declare function isPrimitive(obj: unknown): obj is PrimitiveValue;
12
+ export declare function isFunction(obj: unknown): obj is Function;
13
+ export declare function isObject(obj: unknown): obj is Record<string, unknown>;
14
14
  export declare function getLast<T>(arr: ArrayLike<T>): T | undefined;
15
15
  export declare function freeze<T>(obj: T): Readonly<T>;
16
16
  export declare function asArray<T>(arg: T | T[]): T[];
@@ -41,7 +41,7 @@ export function isFunction(obj) {
41
41
  return typeof obj === 'function';
42
42
  }
43
43
  export function isObject(obj) {
44
- return obj && typeof obj === 'object';
44
+ return typeof obj === 'object' && obj !== null;
45
45
  }
46
46
  export function getLast(arr) {
47
47
  return arr[arr.length - 1];
@@ -1,8 +1,11 @@
1
1
  const CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
2
2
  export function randomString(length) {
3
- let chars = new Array(length);
3
+ let chars = '';
4
4
  for (let i = 0; i < length; ++i) {
5
- chars[i] = CHARS[Math.floor(Math.random() * CHARS.length)];
5
+ chars += randomChar();
6
6
  }
7
- return chars.join('');
7
+ return chars;
8
+ }
9
+ function randomChar() {
10
+ return CHARS[Math.floor(Math.random() * CHARS.length)];
8
11
  }
@@ -136,19 +136,19 @@ export declare type RawBuilderFactory<DB, TB extends keyof DB> = (qb: Expression
136
136
  export declare type AliasedRawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedRawBuilder;
137
137
  export interface InsertResultTypeTag {
138
138
  /** @internal */
139
- __isInsertResultTypeTag__: true;
139
+ readonly __isInsertResultTypeTag__: true;
140
140
  }
141
141
  export interface DeleteResultTypeTag {
142
142
  /** @internal */
143
- __isDeleteResultTypeTag__: true;
143
+ readonly __isDeleteResultTypeTag__: true;
144
144
  }
145
145
  export interface UpdateResultTypeTag {
146
146
  /** @internal */
147
- __isUpdateResultTypeTag__: true;
147
+ readonly __isUpdateResultTypeTag__: true;
148
148
  }
149
149
  export interface GeneratedPlaceholder {
150
150
  /** @internal */
151
- __isGeneratedPlaceholder__: true;
151
+ readonly __isGeneratedPlaceholder__: true;
152
152
  }
153
153
  export declare type ManyResultRowType<O> = O extends InsertResultTypeTag ? number | undefined : O extends DeleteResultTypeTag ? number : O extends UpdateResultTypeTag ? number : O;
154
154
  export declare type SingleResultRowType<O> = O extends InsertResultTypeTag ? number | undefined : O extends DeleteResultTypeTag ? number : O extends UpdateResultTypeTag ? number : O | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kysely",
3
- "version": "0.9.0",
3
+ "version": "0.9.4",
4
4
  "description": "Type safe SQL query builder",
5
5
  "repository": {
6
6
  "type": "git",