kysely 0.27.0 → 0.27.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/cjs/dialect/mssql/mssql-introspector.js +8 -6
- package/dist/cjs/expression/expression-wrapper.d.ts +13 -3
- package/dist/cjs/expression/expression-wrapper.js +12 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +1 -0
- package/dist/cjs/operation-node/limit-node.d.ts +2 -3
- package/dist/cjs/operation-node/limit-node.js +1 -2
- package/dist/cjs/operation-node/offset-node.d.ts +2 -3
- package/dist/cjs/operation-node/offset-node.js +1 -2
- package/dist/cjs/operation-node/operation-node-transformer.js +2 -0
- package/dist/cjs/operation-node/select-modifier-node.d.ts +2 -1
- package/dist/cjs/operation-node/select-modifier-node.js +2 -1
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +17 -0
- package/dist/cjs/query-builder/aggregate-function-builder.js +21 -0
- package/dist/cjs/query-builder/case-builder.d.ts +2 -2
- package/dist/cjs/query-builder/delete-query-builder.d.ts +5 -4
- package/dist/cjs/query-builder/delete-query-builder.js +4 -3
- package/dist/cjs/query-builder/function-module.d.ts +1 -1
- package/dist/cjs/query-builder/insert-query-builder.d.ts +7 -3
- package/dist/cjs/query-builder/insert-query-builder.js +13 -2
- package/dist/cjs/query-builder/json-path-builder.d.ts +2 -1
- package/dist/cjs/query-builder/json-path-builder.js +3 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +11 -9
- package/dist/cjs/query-builder/select-query-builder.js +12 -10
- package/dist/cjs/query-builder/update-query-builder.d.ts +3 -3
- package/dist/cjs/query-builder/update-query-builder.js +2 -2
- package/dist/cjs/query-compiler/default-query-compiler.js +8 -0
- package/dist/cjs/raw-builder/raw-builder.d.ts +11 -1
- package/dist/cjs/raw-builder/raw-builder.js +3 -0
- package/dist/cjs/raw-builder/sql.js +9 -2
- package/dist/cjs/util/object-utils.d.ts +1 -1
- package/dist/cjs/util/object-utils.js +1 -1
- package/dist/esm/dialect/mssql/mssql-introspector.js +8 -6
- package/dist/esm/expression/expression-wrapper.d.ts +13 -3
- package/dist/esm/expression/expression-wrapper.js +12 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +1 -0
- package/dist/esm/operation-node/limit-node.d.ts +2 -3
- package/dist/esm/operation-node/limit-node.js +1 -2
- package/dist/esm/operation-node/offset-node.d.ts +2 -3
- package/dist/esm/operation-node/offset-node.js +1 -2
- package/dist/esm/operation-node/operation-node-transformer.js +2 -0
- package/dist/esm/operation-node/select-modifier-node.d.ts +2 -1
- package/dist/esm/operation-node/select-modifier-node.js +2 -1
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +17 -0
- package/dist/esm/query-builder/aggregate-function-builder.js +21 -0
- package/dist/esm/query-builder/case-builder.d.ts +2 -2
- package/dist/esm/query-builder/delete-query-builder.d.ts +5 -4
- package/dist/esm/query-builder/delete-query-builder.js +4 -3
- package/dist/esm/query-builder/function-module.d.ts +1 -1
- package/dist/esm/query-builder/insert-query-builder.d.ts +7 -3
- package/dist/esm/query-builder/insert-query-builder.js +13 -2
- package/dist/esm/query-builder/json-path-builder.d.ts +2 -1
- package/dist/esm/query-builder/json-path-builder.js +3 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +11 -9
- package/dist/esm/query-builder/select-query-builder.js +13 -11
- package/dist/esm/query-builder/update-query-builder.d.ts +3 -3
- package/dist/esm/query-builder/update-query-builder.js +2 -2
- package/dist/esm/query-compiler/default-query-compiler.js +8 -0
- package/dist/esm/raw-builder/raw-builder.d.ts +11 -1
- package/dist/esm/raw-builder/raw-builder.js +3 -0
- package/dist/esm/raw-builder/sql.js +9 -2
- package/dist/esm/util/object-utils.d.ts +1 -1
- package/dist/esm/util/object-utils.js +1 -1
- package/package.json +5 -11
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
3
3
|
import { SelectModifierNode } from '../operation-node/select-modifier-node.js';
|
|
4
4
|
import { parseJoin, } from '../parser/join-parser.js';
|
|
5
|
+
import { parseTable } from '../parser/table-parser.js';
|
|
5
6
|
import { parseSelectArg, parseSelectAll, } from '../parser/select-parser.js';
|
|
6
7
|
import { parseReferenceExpressionOrList, } from '../parser/reference-parser.js';
|
|
7
8
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
@@ -10,13 +11,14 @@ import { parseOrderBy, } from '../parser/order-by-parser.js';
|
|
|
10
11
|
import { preventAwait } from '../util/prevent-await.js';
|
|
11
12
|
import { LimitNode } from '../operation-node/limit-node.js';
|
|
12
13
|
import { OffsetNode } from '../operation-node/offset-node.js';
|
|
13
|
-
import { freeze } from '../util/object-utils.js';
|
|
14
|
+
import { asArray, freeze } from '../util/object-utils.js';
|
|
14
15
|
import { parseGroupBy } from '../parser/group-by-parser.js';
|
|
15
16
|
import { isNoResultErrorConstructor, NoResultError, } from './no-result-error.js';
|
|
16
17
|
import { IdentifierNode } from '../operation-node/identifier-node.js';
|
|
17
18
|
import { parseSetOperations, } from '../parser/set-operation-parser.js';
|
|
18
19
|
import { parseValueBinaryOperationOrExpression, parseReferentialBinaryOperation, } from '../parser/binary-operation-parser.js';
|
|
19
20
|
import { ExpressionWrapper } from '../expression/expression-wrapper.js';
|
|
21
|
+
import { parseValueExpression, } from '../parser/value-parser.js';
|
|
20
22
|
class SelectQueryBuilderImpl {
|
|
21
23
|
#props;
|
|
22
24
|
constructor(props) {
|
|
@@ -82,28 +84,28 @@ class SelectQueryBuilderImpl {
|
|
|
82
84
|
queryNode: SelectQueryNode.cloneWithFrontModifier(this.#props.queryNode, SelectModifierNode.create('Distinct')),
|
|
83
85
|
});
|
|
84
86
|
}
|
|
85
|
-
forUpdate() {
|
|
87
|
+
forUpdate(of) {
|
|
86
88
|
return new SelectQueryBuilderImpl({
|
|
87
89
|
...this.#props,
|
|
88
|
-
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForUpdate')),
|
|
90
|
+
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForUpdate', of ? asArray(of).map(parseTable) : undefined)),
|
|
89
91
|
});
|
|
90
92
|
}
|
|
91
|
-
forShare() {
|
|
93
|
+
forShare(of) {
|
|
92
94
|
return new SelectQueryBuilderImpl({
|
|
93
95
|
...this.#props,
|
|
94
|
-
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForShare')),
|
|
96
|
+
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForShare', of ? asArray(of).map(parseTable) : undefined)),
|
|
95
97
|
});
|
|
96
98
|
}
|
|
97
|
-
forKeyShare() {
|
|
99
|
+
forKeyShare(of) {
|
|
98
100
|
return new SelectQueryBuilderImpl({
|
|
99
101
|
...this.#props,
|
|
100
|
-
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForKeyShare')),
|
|
102
|
+
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForKeyShare', of ? asArray(of).map(parseTable) : undefined)),
|
|
101
103
|
});
|
|
102
104
|
}
|
|
103
|
-
forNoKeyUpdate() {
|
|
105
|
+
forNoKeyUpdate(of) {
|
|
104
106
|
return new SelectQueryBuilderImpl({
|
|
105
107
|
...this.#props,
|
|
106
|
-
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForNoKeyUpdate')),
|
|
108
|
+
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForNoKeyUpdate', of ? asArray(of).map(parseTable) : undefined)),
|
|
107
109
|
});
|
|
108
110
|
}
|
|
109
111
|
skipLocked() {
|
|
@@ -175,13 +177,13 @@ class SelectQueryBuilderImpl {
|
|
|
175
177
|
limit(limit) {
|
|
176
178
|
return new SelectQueryBuilderImpl({
|
|
177
179
|
...this.#props,
|
|
178
|
-
queryNode: SelectQueryNode.cloneWithLimit(this.#props.queryNode, LimitNode.create(limit)),
|
|
180
|
+
queryNode: SelectQueryNode.cloneWithLimit(this.#props.queryNode, LimitNode.create(parseValueExpression(limit))),
|
|
179
181
|
});
|
|
180
182
|
}
|
|
181
183
|
offset(offset) {
|
|
182
184
|
return new SelectQueryBuilderImpl({
|
|
183
185
|
...this.#props,
|
|
184
|
-
queryNode: SelectQueryNode.cloneWithOffset(this.#props.queryNode, OffsetNode.create(offset)),
|
|
186
|
+
queryNode: SelectQueryNode.cloneWithOffset(this.#props.queryNode, OffsetNode.create(parseValueExpression(offset))),
|
|
185
187
|
});
|
|
186
188
|
}
|
|
187
189
|
union(expression) {
|
|
@@ -829,10 +829,10 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
829
829
|
/**
|
|
830
830
|
* Change the output type of the query.
|
|
831
831
|
*
|
|
832
|
-
*
|
|
833
|
-
*
|
|
832
|
+
* This method call doesn't change the SQL in any way. This methods simply
|
|
833
|
+
* returns a copy of this `UpdateQueryBuilder` with a new output type.
|
|
834
834
|
*/
|
|
835
|
-
$castTo<
|
|
835
|
+
$castTo<C>(): UpdateQueryBuilder<DB, UT, TB, C>;
|
|
836
836
|
/**
|
|
837
837
|
* Narrows (parts of) the output type of the query.
|
|
838
838
|
*
|
|
@@ -154,8 +154,8 @@ export class UpdateQueryBuilder {
|
|
|
154
154
|
/**
|
|
155
155
|
* Change the output type of the query.
|
|
156
156
|
*
|
|
157
|
-
*
|
|
158
|
-
*
|
|
157
|
+
* This method call doesn't change the SQL in any way. This methods simply
|
|
158
|
+
* returns a copy of this `UpdateQueryBuilder` with a new output type.
|
|
159
159
|
*/
|
|
160
160
|
$castTo() {
|
|
161
161
|
return new UpdateQueryBuilder(this.#props);
|
|
@@ -162,6 +162,10 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
162
162
|
this.append(' ');
|
|
163
163
|
this.visitNode(node.values);
|
|
164
164
|
}
|
|
165
|
+
if (node.defaultValues) {
|
|
166
|
+
this.append(' ');
|
|
167
|
+
this.append('default values');
|
|
168
|
+
}
|
|
165
169
|
if (node.onConflict) {
|
|
166
170
|
this.append(' ');
|
|
167
171
|
this.visitNode(node.onConflict);
|
|
@@ -867,6 +871,10 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
867
871
|
else {
|
|
868
872
|
this.append(SELECT_MODIFIER_SQL[node.modifier]);
|
|
869
873
|
}
|
|
874
|
+
if (node.of) {
|
|
875
|
+
this.append(' of ');
|
|
876
|
+
this.compileList(node.of, ', ');
|
|
877
|
+
}
|
|
870
878
|
}
|
|
871
879
|
visitCreateType(node) {
|
|
872
880
|
this.append('create type ');
|
|
@@ -130,7 +130,17 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
|
|
|
130
130
|
* This method call doesn't change the SQL in any way. This methods simply
|
|
131
131
|
* returns a copy of this `RawBuilder` with a new output type.
|
|
132
132
|
*/
|
|
133
|
-
$castTo<
|
|
133
|
+
$castTo<C>(): RawBuilder<C>;
|
|
134
|
+
/**
|
|
135
|
+
* Omit null from the expression's type.
|
|
136
|
+
*
|
|
137
|
+
* This function can be useful in cases where you know an expression can't be
|
|
138
|
+
* null, but Kysely is unable to infer it.
|
|
139
|
+
*
|
|
140
|
+
* This method call doesn't change the SQL in any way. This methods simply
|
|
141
|
+
* returns a copy of `this` with a new output type.
|
|
142
|
+
*/
|
|
143
|
+
$notNull(): RawBuilder<Exclude<O, null>>;
|
|
134
144
|
/**
|
|
135
145
|
* Adds a plugin for this SQL snippet.
|
|
136
146
|
*/
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="./sql.d.ts" />
|
|
2
2
|
import { IdentifierNode } from '../operation-node/identifier-node.js';
|
|
3
|
+
import { isOperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
4
|
import { RawNode } from '../operation-node/raw-node.js';
|
|
4
5
|
import { ValueNode } from '../operation-node/value-node.js';
|
|
5
6
|
import { parseStringReference } from '../parser/reference-parser.js';
|
|
@@ -10,7 +11,7 @@ import { createRawBuilder } from './raw-builder.js';
|
|
|
10
11
|
export const sql = Object.assign((sqlFragments, ...parameters) => {
|
|
11
12
|
return createRawBuilder({
|
|
12
13
|
queryId: createQueryId(),
|
|
13
|
-
rawNode: RawNode.create(sqlFragments, parameters?.map(
|
|
14
|
+
rawNode: RawNode.create(sqlFragments, parameters?.map(parseParameter) ?? []),
|
|
14
15
|
});
|
|
15
16
|
}, {
|
|
16
17
|
ref(columnReference) {
|
|
@@ -62,7 +63,7 @@ export const sql = Object.assign((sqlFragments, ...parameters) => {
|
|
|
62
63
|
const nodes = new Array(2 * array.length - 1);
|
|
63
64
|
const sep = separator.toOperationNode();
|
|
64
65
|
for (let i = 0; i < array.length; ++i) {
|
|
65
|
-
nodes[2 * i] =
|
|
66
|
+
nodes[2 * i] = parseParameter(array[i]);
|
|
66
67
|
if (i !== array.length - 1) {
|
|
67
68
|
nodes[2 * i + 1] = sep;
|
|
68
69
|
}
|
|
@@ -73,3 +74,9 @@ export const sql = Object.assign((sqlFragments, ...parameters) => {
|
|
|
73
74
|
});
|
|
74
75
|
},
|
|
75
76
|
});
|
|
77
|
+
function parseParameter(param) {
|
|
78
|
+
if (isOperationNodeSource(param)) {
|
|
79
|
+
return param.toOperationNode();
|
|
80
|
+
}
|
|
81
|
+
return parseValueExpression(param);
|
|
82
|
+
}
|
|
@@ -16,7 +16,7 @@ export declare function isArrayBufferOrView(obj: unknown): obj is ArrayBuffer |
|
|
|
16
16
|
export declare function isPlainObject(obj: unknown): obj is Record<string, unknown>;
|
|
17
17
|
export declare function getLast<T>(arr: ArrayLike<T>): T | undefined;
|
|
18
18
|
export declare function freeze<T>(obj: T): Readonly<T>;
|
|
19
|
-
export declare function asArray<T>(arg: T | T
|
|
19
|
+
export declare function asArray<T>(arg: T | ReadonlyArray<T>): ReadonlyArray<T>;
|
|
20
20
|
export declare function asReadonlyArray<T>(arg: T | ReadonlyArray<T>): ReadonlyArray<T>;
|
|
21
21
|
export declare function isReadonlyArray(arg: unknown): arg is ReadonlyArray<unknown>;
|
|
22
22
|
export declare function noop<T>(obj: T): T;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kysely",
|
|
3
|
-
"version": "0.27.
|
|
3
|
+
"version": "0.27.1",
|
|
4
4
|
"description": "Type safe SQL query builder",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -40,14 +40,10 @@
|
|
|
40
40
|
},
|
|
41
41
|
"scripts": {
|
|
42
42
|
"clean": "rm -rf dist & rm -rf test/node/dist & rm -rf test/browser/bundle.js & rm -rf helpers",
|
|
43
|
-
"test": "npm run build && npm run test:node:build &&
|
|
43
|
+
"test": "npm run build && npm run test:node:build && npm run test:node:run && npm run test:typings && npm run test:esmimports",
|
|
44
44
|
"test:node:build": "tsc -p test/node",
|
|
45
|
-
"test:node": "
|
|
46
|
-
"test:node:
|
|
47
|
-
"test:node:mysql": "cross-env DIALECT=mysql npm run test:node:run",
|
|
48
|
-
"test:node:mssql": "cross-env DIALECT=mssql npm run test:node:run",
|
|
49
|
-
"test:node:sqlite": "cross-env DIALECT=sqlite npm run test:node:run",
|
|
50
|
-
"test:node:run": "mocha --reporter min --timeout 15000 test/node/dist/**/*.test.js",
|
|
45
|
+
"test:node": "npm run build && npm run test:node:build && npm run test:node:run",
|
|
46
|
+
"test:node:run": "mocha --timeout 15000 test/node/dist/**/*.test.js",
|
|
51
47
|
"test:browser:build": "rm -rf test/browser/bundle.js && esbuild test/browser/main.ts --bundle --outfile=test/browser/bundle.js",
|
|
52
48
|
"test:browser": "npm run build && npm run test:browser:build && node test/browser/test.js",
|
|
53
49
|
"test:bun": "npm run build && cd test/bun && bun install && bun run test",
|
|
@@ -57,7 +53,7 @@
|
|
|
57
53
|
"test:esmimports": "node scripts/check-esm-imports.js",
|
|
58
54
|
"test:esbuild": "esbuild --bundle --platform=node --external:pg-native dist/esm/index.js --outfile=/dev/null",
|
|
59
55
|
"prettier": "prettier --write 'src/**/*.ts' 'test/**/*.ts'",
|
|
60
|
-
"build": "npm run clean &&
|
|
56
|
+
"build": "npm run clean && npm run build:esm && npm run build:cjs && npm run script:module-fixup && npm run script:copy-interface-doc",
|
|
61
57
|
"build:esm": "tsc -p tsconfig.json && npm run script:add-deno-type-references",
|
|
62
58
|
"build:cjs": "tsc -p tsconfig-cjs.json",
|
|
63
59
|
"script:module-fixup": "node scripts/module-fixup.js",
|
|
@@ -87,8 +83,6 @@
|
|
|
87
83
|
"chai": "^4.3.7",
|
|
88
84
|
"chai-as-promised": "^7.1.1",
|
|
89
85
|
"chai-subset": "^1.6.0",
|
|
90
|
-
"concurrently": "^8.1.0",
|
|
91
|
-
"cross-env": "^7.0.3",
|
|
92
86
|
"esbuild": "^0.17.19",
|
|
93
87
|
"mocha": "^10.2.0",
|
|
94
88
|
"mysql2": "^3.3.3",
|