@slonik/sql-tag 48.5.0 → 48.7.0
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/dist/factories/createSqlTag.d.ts.map +1 -1
- package/dist/factories/createSqlTag.js +1 -7
- package/dist/factories/createSqlTag.js.map +1 -1
- package/dist/factories/createSqlTag.test/array.test.js +73 -0
- package/dist/factories/createSqlTag.test/array.test.js.map +1 -1
- package/dist/factories/createSqlTag.test/sql.test.js +8 -0
- package/dist/factories/createSqlTag.test/sql.test.js.map +1 -1
- package/dist/factories/createSqlTokenSqlFragment.d.ts.map +1 -1
- package/dist/factories/createSqlTokenSqlFragment.js +1 -5
- package/dist/factories/createSqlTokenSqlFragment.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/tokens.d.ts +0 -1
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +0 -1
- package/dist/tokens.js.map +1 -1
- package/dist/types.d.ts +9 -14
- package/dist/types.d.ts.map +1 -1
- package/dist/utilities/isSqlToken.d.ts.map +1 -1
- package/dist/utilities/isSqlToken.js +1 -2
- package/dist/utilities/isSqlToken.js.map +1 -1
- package/dist/utilities/safeStringify.d.ts +1 -1
- package/dist/utilities/safeStringify.d.ts.map +1 -1
- package/dist/utilities/safeStringify.js +8 -2
- package/dist/utilities/safeStringify.js.map +1 -1
- package/package.json +4 -4
- package/src/factories/createSqlTag.test/array.test.ts +100 -0
- package/src/factories/createSqlTag.test/sql.test.ts +10 -0
- package/src/factories/createSqlTag.ts +8 -9
- package/src/factories/createSqlTokenSqlFragment.ts +0 -4
- package/src/index.ts +0 -2
- package/src/tokens.ts +0 -1
- package/src/types.ts +24 -31
- package/src/utilities/isSqlToken.ts +0 -2
- package/src/utilities/safeStringify.ts +8 -10
- package/dist/factories/createSqlTag.test/boolean.test.d.ts +0 -2
- package/dist/factories/createSqlTag.test/boolean.test.d.ts.map +0 -1
- package/dist/factories/createSqlTag.test/boolean.test.js +0 -101
- package/dist/factories/createSqlTag.test/boolean.test.js.map +0 -1
- package/dist/sqlFragmentFactories/createBooleanSqlFragment.d.ts +0 -3
- package/dist/sqlFragmentFactories/createBooleanSqlFragment.d.ts.map +0 -1
- package/dist/sqlFragmentFactories/createBooleanSqlFragment.js +0 -14
- package/dist/sqlFragmentFactories/createBooleanSqlFragment.js.map +0 -1
- package/src/factories/createSqlTag.test/boolean.test.ts +0 -127
- package/src/sqlFragmentFactories/createBooleanSqlFragment.ts +0 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSqlTag.d.ts","sourceRoot":"","sources":["../../src/factories/createSqlTag.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createSqlTag.d.ts","sourceRoot":"","sources":["../../src/factories/createSqlTag.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAIV,MAAM,EAGP,MAAM,aAAa,CAAC;AAQrB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAgF9D,eAAO,MAAM,YAAY,GACvB,CAAC,SAAS,WAAW,EACrB,CAAC,SAAS,gBAAgB,EAC1B,CAAC,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAEtB,gBAAe;IACb,WAAW,CAAC,EAAE,CAAC,CAAC;CACZ,KACL,MAAM,CAAC,CAAC,CA+HV,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Logger } from '../Logger.js';
|
|
2
|
-
import { ArrayToken, BinaryToken,
|
|
2
|
+
import { ArrayToken, BinaryToken, DateToken, FragmentToken, IdentifierToken, IntervalToken, JsonBinaryToken, JsonToken, ListToken, QueryToken, TimestampToken, UnnestToken, UuidToken, } from '../tokens.js';
|
|
3
3
|
import { escapeLiteralValue } from '../utilities/escapeLiteralValue.js';
|
|
4
4
|
import { formatSlonikPlaceholder } from '../utilities/formatSlonikPlaceholder.js';
|
|
5
5
|
import { isPrimitiveValueExpression } from '../utilities/isPrimitiveValueExpression.js';
|
|
@@ -73,12 +73,6 @@ export const createSqlTag = (configuration = {}) => {
|
|
|
73
73
|
type: BinaryToken,
|
|
74
74
|
});
|
|
75
75
|
},
|
|
76
|
-
boolean: (value) => {
|
|
77
|
-
return Object.freeze({
|
|
78
|
-
type: BooleanToken,
|
|
79
|
-
value: value,
|
|
80
|
-
});
|
|
81
|
-
},
|
|
82
76
|
date: (date) => {
|
|
83
77
|
return Object.freeze({
|
|
84
78
|
date,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSqlTag.js","sourceRoot":"","sources":["../../src/factories/createSqlTag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EACL,UAAU,EACV,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"createSqlTag.js","sourceRoot":"","sources":["../../src/factories/createSqlTag.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,4 +69,77 @@ test('throws if memberType is not a string or SqlToken of different type than "S
|
|
|
69
69
|
});
|
|
70
70
|
t.is(error?.message, 'Unsupported `memberType`. `memberType` must be a string or SqlToken of "SLONIK_TOKEN_FRAGMENT" type.');
|
|
71
71
|
});
|
|
72
|
+
// Type assertion helper to verify types at compile time
|
|
73
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars, func-style, canonical/id-match
|
|
74
|
+
function assertType(_value) {
|
|
75
|
+
// This function exists only for type checking
|
|
76
|
+
}
|
|
77
|
+
test('produces ArraySqlToken<"int4"> for integer arrays', (t) => {
|
|
78
|
+
const arrayToken = sql.array([1, 2, 3], 'int4');
|
|
79
|
+
assertType(arrayToken);
|
|
80
|
+
t.is(arrayToken.memberType, 'int4');
|
|
81
|
+
t.deepEqual(arrayToken.values, [1, 2, 3]);
|
|
82
|
+
const query = sql.fragment `SELECT ${arrayToken}`;
|
|
83
|
+
t.deepEqual(query, {
|
|
84
|
+
sql: 'SELECT $slonik_1::"int4"[]',
|
|
85
|
+
type: FragmentToken,
|
|
86
|
+
values: [[1, 2, 3]],
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
test('produces ArraySqlToken<"text"> for text arrays', (t) => {
|
|
90
|
+
const arrayToken = sql.array(['a', 'b', 'c'], 'text');
|
|
91
|
+
assertType(arrayToken);
|
|
92
|
+
t.is(arrayToken.memberType, 'text');
|
|
93
|
+
t.deepEqual(arrayToken.values, ['a', 'b', 'c']);
|
|
94
|
+
const query = sql.fragment `SELECT ${arrayToken}`;
|
|
95
|
+
t.deepEqual(query, {
|
|
96
|
+
sql: 'SELECT $slonik_1::"text"[]',
|
|
97
|
+
type: FragmentToken,
|
|
98
|
+
values: [['a', 'b', 'c']],
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
test('type inference with different PostgreSQL types', (t) => {
|
|
102
|
+
const int8Array = sql.array([BigInt(1), BigInt(2)], 'int8');
|
|
103
|
+
assertType(int8Array);
|
|
104
|
+
t.is(int8Array.memberType, 'int8');
|
|
105
|
+
const float8Array = sql.array([1.1, 2.2, 3.3], 'float8');
|
|
106
|
+
assertType(float8Array);
|
|
107
|
+
t.is(float8Array.memberType, 'float8');
|
|
108
|
+
const boolArray = sql.array([true, false, true], 'bool');
|
|
109
|
+
assertType(boolArray);
|
|
110
|
+
t.is(boolArray.memberType, 'bool');
|
|
111
|
+
const uuidArray = sql.array(['550e8400-e29b-41d4-a716-446655440000'], 'uuid');
|
|
112
|
+
assertType(uuidArray);
|
|
113
|
+
t.is(uuidArray.memberType, 'uuid');
|
|
114
|
+
const timestampArray = sql.array([new Date().toISOString()], 'timestamp');
|
|
115
|
+
assertType(timestampArray);
|
|
116
|
+
t.is(timestampArray.memberType, 'timestamp');
|
|
117
|
+
const jsonbArray = sql.array([JSON.stringify({ key: 'value' })], 'jsonb');
|
|
118
|
+
assertType(jsonbArray);
|
|
119
|
+
t.is(jsonbArray.memberType, 'jsonb');
|
|
120
|
+
const query = sql.fragment `
|
|
121
|
+
SELECT
|
|
122
|
+
${int8Array} as int8_arr,
|
|
123
|
+
${float8Array} as float8_arr,
|
|
124
|
+
${boolArray} as bool_arr
|
|
125
|
+
`;
|
|
126
|
+
t.truthy(query.sql.includes('::"int8"[]'));
|
|
127
|
+
t.truthy(query.sql.includes('::"float8"[]'));
|
|
128
|
+
t.truthy(query.sql.includes('::"bool"[]'));
|
|
129
|
+
});
|
|
130
|
+
test('backward compatibility - existing code without explicit types still works', (t) => {
|
|
131
|
+
const arrayToken = sql.array([1, 2, 3], 'int4');
|
|
132
|
+
const token = arrayToken;
|
|
133
|
+
t.is(token.memberType, 'int4');
|
|
134
|
+
const fragmentArray = sql.array([1, 2, 3], sql.fragment `int[]`);
|
|
135
|
+
t.is(typeof fragmentArray.memberType, 'object');
|
|
136
|
+
t.is(fragmentArray.memberType.type, FragmentToken);
|
|
137
|
+
t.deepEqual(fragmentArray.values, [1, 2, 3]);
|
|
138
|
+
const query = sql.fragment `SELECT ${fragmentArray}`;
|
|
139
|
+
t.deepEqual(query, {
|
|
140
|
+
sql: 'SELECT $slonik_1::int[]',
|
|
141
|
+
type: FragmentToken,
|
|
142
|
+
values: [[1, 2, 3]],
|
|
143
|
+
});
|
|
144
|
+
});
|
|
72
145
|
//# sourceMappingURL=array.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.test.js","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/array.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"array.test.js","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/array.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -138,4 +138,12 @@ test('copes with dollar-number in function definitions', (t) => {
|
|
|
138
138
|
values: [],
|
|
139
139
|
});
|
|
140
140
|
});
|
|
141
|
+
test('interpolates literal boolean values', (t) => {
|
|
142
|
+
const query = sql.fragment `SELECT ${true}, ${false}`;
|
|
143
|
+
t.deepEqual(query, {
|
|
144
|
+
sql: 'SELECT $slonik_1, $slonik_2',
|
|
145
|
+
type: FragmentToken,
|
|
146
|
+
values: [true, false],
|
|
147
|
+
});
|
|
148
|
+
});
|
|
141
149
|
//# sourceMappingURL=sql.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql.test.js","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/sql.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sql.test.js","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/sql.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSqlTokenSqlFragment.d.ts","sourceRoot":"","sources":["../../src/factories/createSqlTokenSqlFragment.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createSqlTokenSqlFragment.d.ts","sourceRoot":"","sources":["../../src/factories/createSqlTokenSqlFragment.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,aAAa,CAAC;AAG9E,eAAO,MAAM,yBAAyB,GACpC,OAAO,YAAY,EACnB,2BAA2B,MAAM,KAChC,gBA8BF,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { createArraySqlFragment } from '../sqlFragmentFactories/createArraySqlFragment.js';
|
|
2
2
|
import { createBinarySqlFragment } from '../sqlFragmentFactories/createBinarySqlFragment.js';
|
|
3
|
-
import { createBooleanSqlFragment } from '../sqlFragmentFactories/createBooleanSqlFragment.js';
|
|
4
3
|
import { createDateSqlFragment } from '../sqlFragmentFactories/createDateSqlFragment.js';
|
|
5
4
|
import { createFragmentSqlFragment } from '../sqlFragmentFactories/createFragmentSqlFragment.js';
|
|
6
5
|
import { createIdentifierSqlFragment } from '../sqlFragmentFactories/createIdentifierSqlFragment.js';
|
|
@@ -11,7 +10,7 @@ import { createQuerySqlFragment } from '../sqlFragmentFactories/createQuerySqlFr
|
|
|
11
10
|
import { createTimestampSqlFragment } from '../sqlFragmentFactories/createTimestampSqlFragment.js';
|
|
12
11
|
import { createUnnestSqlFragment } from '../sqlFragmentFactories/createUnnestSqlFragment.js';
|
|
13
12
|
import { createUuidSqlFragment } from '../sqlFragmentFactories/createUuidSqlFragment.js';
|
|
14
|
-
import { ArrayToken, BinaryToken,
|
|
13
|
+
import { ArrayToken, BinaryToken, DateToken, FragmentToken, IdentifierToken, IntervalToken, JsonBinaryToken, JsonToken, ListToken, QueryToken, TimestampToken, UnnestToken, UuidToken, } from '../tokens.js';
|
|
15
14
|
import { UnexpectedStateError } from '@slonik/errors';
|
|
16
15
|
export const createSqlTokenSqlFragment = (token, greatestParameterPosition) => {
|
|
17
16
|
if (token.type === ArrayToken) {
|
|
@@ -20,9 +19,6 @@ export const createSqlTokenSqlFragment = (token, greatestParameterPosition) => {
|
|
|
20
19
|
else if (token.type === BinaryToken) {
|
|
21
20
|
return createBinarySqlFragment(token, greatestParameterPosition);
|
|
22
21
|
}
|
|
23
|
-
else if (token.type === BooleanToken) {
|
|
24
|
-
return createBooleanSqlFragment(token, greatestParameterPosition);
|
|
25
|
-
}
|
|
26
22
|
else if (token.type === DateToken) {
|
|
27
23
|
return createDateSqlFragment(token, greatestParameterPosition);
|
|
28
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSqlTokenSqlFragment.js","sourceRoot":"","sources":["../../src/factories/createSqlTokenSqlFragment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"createSqlTokenSqlFragment.js","sourceRoot":"","sources":["../../src/factories/createSqlTokenSqlFragment.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { createSqlTag } from './factories/createSqlTag.js';
|
|
2
2
|
export { createSqlTokenSqlFragment } from './factories/createSqlTokenSqlFragment.js';
|
|
3
|
-
export { ArrayToken, BinaryToken,
|
|
4
|
-
export { type ArraySqlToken, type BinarySqlToken, type
|
|
3
|
+
export { ArrayToken, BinaryToken, ComparisonPredicateToken, DateToken, FragmentToken, IdentifierToken, IntervalToken, JsonBinaryToken, JsonToken, ListToken, QueryToken, TimestampToken, UnnestToken, UuidToken, } from './tokens.js';
|
|
4
|
+
export { type ArraySqlToken, type BinarySqlToken, type DateSqlToken, type FragmentSqlToken, type IdentifierSqlToken, type IntervalInput, type IntervalSqlToken, type JsonBinarySqlToken, type JsonSqlToken, type ListSqlToken, type PrimitiveValueExpression, type QuerySqlToken, type SerializableValue, type SqlFragmentToken, type SqlTag, type SqlToken, type TimestampSqlToken, type UnnestSqlToken, type UuidSqlToken, type ValueExpression, } from './types.js';
|
|
5
5
|
export { isSqlToken } from './utilities/isSqlToken.js';
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EACL,UAAU,EACV,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EACL,UAAU,EACV,WAAW,EACX,wBAAwB,EACxB,SAAS,EACT,aAAa,EACb,eAAe,EACf,aAAa,EACb,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,EACV,cAAc,EACd,WAAW,EACX,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { createSqlTag } from './factories/createSqlTag.js';
|
|
2
2
|
export { createSqlTokenSqlFragment } from './factories/createSqlTokenSqlFragment.js';
|
|
3
|
-
export { ArrayToken, BinaryToken,
|
|
3
|
+
export { ArrayToken, BinaryToken, ComparisonPredicateToken, DateToken, FragmentToken, IdentifierToken, IntervalToken, JsonBinaryToken, JsonToken, ListToken, QueryToken, TimestampToken, UnnestToken, UuidToken, } from './tokens.js';
|
|
4
4
|
export { isSqlToken } from './utilities/isSqlToken.js';
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EACL,UAAU,EACV,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EACL,UAAU,EACV,WAAW,EACX,wBAAwB,EACxB,SAAS,EACT,aAAa,EACb,eAAe,EACf,aAAa,EACb,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,EACV,cAAc,EACd,WAAW,EACX,SAAS,GACV,MAAM,aAAa,CAAC;AAuBrB,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/tokens.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export declare const ArrayToken: unique symbol;
|
|
2
2
|
export declare const BinaryToken: unique symbol;
|
|
3
|
-
export declare const BooleanToken: unique symbol;
|
|
4
3
|
export declare const ComparisonPredicateToken: unique symbol;
|
|
5
4
|
export declare const DateToken: unique symbol;
|
|
6
5
|
export declare const FragmentToken: unique symbol;
|
package/dist/tokens.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,eAAmC,CAAC;AAC3D,eAAO,MAAM,WAAW,eAAoC,CAAC;AAC7D,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,eAAmC,CAAC;AAC3D,eAAO,MAAM,WAAW,eAAoC,CAAC;AAC7D,eAAO,MAAM,wBAAwB,eAEpC,CAAC;AACF,eAAO,MAAM,SAAS,eAAkC,CAAC;AACzD,eAAO,MAAM,aAAa,eAAsC,CAAC;AACjE,eAAO,MAAM,eAAe,eAAwC,CAAC;AACrE,eAAO,MAAM,aAAa,eAAsC,CAAC;AACjE,eAAO,MAAM,eAAe,eAAyC,CAAC;AACtE,eAAO,MAAM,SAAS,eAAkC,CAAC;AACzD,eAAO,MAAM,SAAS,eAAkC,CAAC;AACzD,eAAO,MAAM,UAAU,eAAmC,CAAC;AAC3D,eAAO,MAAM,cAAc,eAAuC,CAAC;AACnE,eAAO,MAAM,WAAW,eAAoC,CAAC;AAC7D,eAAO,MAAM,SAAS,eAAkC,CAAC"}
|
package/dist/tokens.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export const ArrayToken = Symbol.for('SLONIK_TOKEN_ARRAY');
|
|
2
2
|
export const BinaryToken = Symbol.for('SLONIK_TOKEN_BINARY');
|
|
3
|
-
export const BooleanToken = Symbol.for('SLONIK_TOKEN_BOOLEAN');
|
|
4
3
|
export const ComparisonPredicateToken = Symbol.for('SLONIK_TOKEN_COMPARISON_PREDICATE');
|
|
5
4
|
export const DateToken = Symbol.for('SLONIK_TOKEN_DATE');
|
|
6
5
|
export const FragmentToken = Symbol.for('SLONIK_TOKEN_FRAGMENT');
|
package/dist/tokens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,GAAG,CAChD,mCAAmC,CACpC,CAAC;AACF,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AACtE,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ import type * as tokens from './tokens.js';
|
|
|
2
2
|
import type { PrimitiveValueExpression } from '@slonik/types';
|
|
3
3
|
import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
4
4
|
export { type PrimitiveValueExpression } from '@slonik/types';
|
|
5
|
-
export type ArraySqlToken = {
|
|
6
|
-
readonly memberType: SqlFragmentToken |
|
|
5
|
+
export type ArraySqlToken<T extends TypeNameIdentifier = TypeNameIdentifier> = {
|
|
6
|
+
readonly memberType: SqlFragmentToken | T;
|
|
7
7
|
readonly type: typeof tokens.ArrayToken;
|
|
8
8
|
readonly values: readonly PrimitiveValueExpression[];
|
|
9
9
|
};
|
|
@@ -11,10 +11,6 @@ export type BinarySqlToken = {
|
|
|
11
11
|
readonly data: Buffer;
|
|
12
12
|
readonly type: typeof tokens.BinaryToken;
|
|
13
13
|
};
|
|
14
|
-
export type BooleanSqlToken = {
|
|
15
|
-
readonly type: typeof tokens.BooleanToken;
|
|
16
|
-
readonly value: boolean;
|
|
17
|
-
};
|
|
18
14
|
export type DateSqlToken = {
|
|
19
15
|
readonly date: Date;
|
|
20
16
|
readonly type: typeof tokens.DateToken;
|
|
@@ -69,9 +65,8 @@ export type SqlFragmentToken = {
|
|
|
69
65
|
readonly values: readonly PrimitiveValueExpression[];
|
|
70
66
|
};
|
|
71
67
|
export type SqlTag<Z extends Record<string, StandardSchemaV1> = Record<string, StandardSchemaV1>> = {
|
|
72
|
-
array: (values: readonly PrimitiveValueExpression[], memberType: SqlFragmentToken |
|
|
68
|
+
array: <T extends TypeNameIdentifier>(values: readonly PrimitiveValueExpression[], memberType: SqlFragmentToken | T) => ArraySqlToken<T>;
|
|
73
69
|
binary: (data: Buffer) => BinarySqlToken;
|
|
74
|
-
boolean: (value: boolean) => BooleanSqlToken;
|
|
75
70
|
date: (date: Date) => DateSqlToken;
|
|
76
71
|
fragment: (template: TemplateStringsArray, ...values: ValueExpression[]) => SqlFragmentToken;
|
|
77
72
|
identifier: (names: readonly string[]) => IdentifierSqlToken;
|
|
@@ -87,11 +82,16 @@ export type SqlTag<Z extends Record<string, StandardSchemaV1> = Record<string, S
|
|
|
87
82
|
unsafe: (template: TemplateStringsArray, ...values: ValueExpression[]) => QuerySqlToken;
|
|
88
83
|
uuid: (uuid: string) => UuidSqlToken;
|
|
89
84
|
};
|
|
90
|
-
export type SqlToken = ArraySqlToken | BinarySqlToken |
|
|
85
|
+
export type SqlToken = ArraySqlToken<TypeNameIdentifier> | BinarySqlToken | DateSqlToken | FragmentSqlToken | IdentifierSqlToken | IntervalSqlToken | JsonBinarySqlToken | JsonSqlToken | ListSqlToken | QuerySqlToken | TimestampSqlToken | UnnestSqlToken | UuidSqlToken;
|
|
91
86
|
export type TimestampSqlToken = {
|
|
92
87
|
readonly date: Date;
|
|
93
88
|
readonly type: typeof tokens.TimestampToken;
|
|
94
89
|
};
|
|
90
|
+
/**
|
|
91
|
+
* "string" type covers all type name identifiers – the literal values are added only to assist developer
|
|
92
|
+
* experience with auto suggestions for commonly used type name identifiers.
|
|
93
|
+
*/
|
|
94
|
+
export type TypeNameIdentifier = 'bool' | 'bytea' | 'float4' | 'float8' | 'int2' | 'int4' | 'int8' | 'json' | 'text' | 'timestamptz' | 'uuid' | string;
|
|
95
95
|
export type UnnestSqlToken = {
|
|
96
96
|
readonly columnTypes: Array<[...string[], TypeNameIdentifier]> | Array<SqlFragmentToken | TypeNameIdentifier>;
|
|
97
97
|
readonly tuples: ReadonlyArray<readonly ValueExpression[]>;
|
|
@@ -102,9 +102,4 @@ export type UuidSqlToken = {
|
|
|
102
102
|
readonly uuid: `${string}-${string}-${string}-${string}-${string}`;
|
|
103
103
|
};
|
|
104
104
|
export type ValueExpression = PrimitiveValueExpression | SqlFragmentToken | SqlToken;
|
|
105
|
-
/**
|
|
106
|
-
* "string" type covers all type name identifiers – the literal values are added only to assist developer
|
|
107
|
-
* experience with auto suggestions for commonly used type name identifiers.
|
|
108
|
-
*/
|
|
109
|
-
type TypeNameIdentifier = 'bool' | 'bytea' | 'float4' | 'float8' | 'int2' | 'int4' | 'int8' | 'json' | 'text' | 'timestamptz' | 'uuid' | string;
|
|
110
105
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,MAAM,aAAa,GAAG;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isSqlToken.d.ts","sourceRoot":"","sources":["../../src/utilities/isSqlToken.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"isSqlToken.d.ts","sourceRoot":"","sources":["../../src/utilities/isSqlToken.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,aAAa,CAAC;AAiC5D,eAAO,MAAM,UAAU,GAAI,SAAS,OAAO,KAAG,OAAO,IAAI,YAmCxD,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { ArrayToken, BinaryToken,
|
|
1
|
+
import { ArrayToken, BinaryToken, ComparisonPredicateToken, DateToken, FragmentToken, IdentifierToken, IntervalToken, JsonBinaryToken, JsonToken, ListToken, QueryToken, TimestampToken, UnnestToken, UuidToken, } from '../tokens.js';
|
|
2
2
|
import { hasOwnProperty } from './hasOwnProperty.js';
|
|
3
3
|
import { UnexpectedStateError } from '@slonik/errors';
|
|
4
4
|
const Tokens = [
|
|
5
5
|
ArrayToken,
|
|
6
6
|
BinaryToken,
|
|
7
|
-
BooleanToken,
|
|
8
7
|
ComparisonPredicateToken,
|
|
9
8
|
DateToken,
|
|
10
9
|
FragmentToken,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isSqlToken.js","sourceRoot":"","sources":["../../src/utilities/isSqlToken.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"isSqlToken.js","sourceRoot":"","sources":["../../src/utilities/isSqlToken.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,WAAW,EACX,wBAAwB,EACxB,SAAS,EACT,aAAa,EACb,eAAe,EACf,aAAa,EACb,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,EACV,cAAc,EACd,WAAW,EACX,SAAS,GACV,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,MAAM,GAAG;IACb,UAAU;IACV,WAAW;IACX,wBAAwB;IACxB,SAAS;IACT,aAAa;IACb,eAAe;IACf,aAAa;IACb,eAAe;IACf,SAAS;IACT,SAAS;IACT,UAAU;IACV,cAAc;IACd,WAAW;IACX,SAAS;CACD,CAAC;AAEX,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;IACvC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE3C,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,oBAAoB,CAC5B,qDAAqD,CACtD,CAAC;IACJ,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAgB,EAA2B,EAAE;IACtE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE/C,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,8DAA8D;IAC9D,4BAA4B;IAC5B,+BAA+B;IAC/B,8BAA8B;IAC9B,EAAE;IACF,gDAAgD;IAChD,8CAA8C;IAC9C,sDAAsD;IACtD,EAAE;IACF,yDAAyD;IACzD,oDAAoD;IACpD,6CAA6C;IAC7C,kCAAkC;IAClC,OAAO,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC7C,CAAC,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const safeStringify: (subject: unknown
|
|
1
|
+
export declare const safeStringify: (subject: unknown) => string;
|
|
2
2
|
//# sourceMappingURL=safeStringify.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safeStringify.d.ts","sourceRoot":"","sources":["../../src/utilities/safeStringify.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"safeStringify.d.ts","sourceRoot":"","sources":["../../src/utilities/safeStringify.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,aAAa,GAAI,SAAS,OAAO,KAAG,MAchD,CAAC"}
|
|
@@ -4,8 +4,14 @@ const stringify = configure({
|
|
|
4
4
|
circularValue: '[Circular]',
|
|
5
5
|
strict: true,
|
|
6
6
|
});
|
|
7
|
-
export const safeStringify = (subject
|
|
8
|
-
|
|
7
|
+
export const safeStringify = (subject) => {
|
|
8
|
+
try {
|
|
9
|
+
return JSON.stringify(subject);
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
// Ignore
|
|
13
|
+
}
|
|
14
|
+
const result = stringify(subject);
|
|
9
15
|
if (result === undefined) {
|
|
10
16
|
throw new Error('Expected result to be string');
|
|
11
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safeStringify.js","sourceRoot":"","sources":["../../src/utilities/safeStringify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,SAAS,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,YAAY;IAC3B,MAAM,EAAE,IAAI;CACb,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,
|
|
1
|
+
{"version":3,"file":"safeStringify.js","sourceRoot":"","sources":["../../src/utilities/safeStringify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,SAAS,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,YAAY;IAC3B,MAAM,EAAE,IAAI;CACb,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAU,EAAE;IACxD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAElC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
]
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@slonik/errors": "^48.
|
|
20
|
-
"@slonik/types": "^48.
|
|
19
|
+
"@slonik/errors": "^48.7.0",
|
|
20
|
+
"@slonik/types": "^48.7.0",
|
|
21
21
|
"roarr": "^7.21.1",
|
|
22
22
|
"safe-stable-stringify": "^2.5.0",
|
|
23
23
|
"serialize-error": "^12.0.0",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"tsimp": "^2.0.12",
|
|
34
34
|
"typescript": "^5.8.3",
|
|
35
35
|
"typescript-eslint": "^8.33.0",
|
|
36
|
-
"@slonik/eslint-config": "^48.
|
|
36
|
+
"@slonik/eslint-config": "^48.7.0"
|
|
37
37
|
},
|
|
38
38
|
"engines": {
|
|
39
39
|
"node": ">=24"
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
},
|
|
57
57
|
"type": "module",
|
|
58
58
|
"types": "./dist/index.d.ts",
|
|
59
|
-
"version": "48.
|
|
59
|
+
"version": "48.7.0",
|
|
60
60
|
"scripts": {
|
|
61
61
|
"build": "rm -fr ./dist && tsc --project ./tsconfig.json",
|
|
62
62
|
"lint": "npm run lint:cspell && npm run lint:eslint && npm run lint:tsc",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { FragmentToken } from '../../tokens.js';
|
|
2
|
+
import type { ArraySqlToken, SqlFragmentToken } from '../../types.js';
|
|
2
3
|
import { createSqlTag } from '../createSqlTag.js';
|
|
3
4
|
import test from 'ava';
|
|
4
5
|
|
|
@@ -106,3 +107,102 @@ test('throws if memberType is not a string or SqlToken of different type than "S
|
|
|
106
107
|
'Unsupported `memberType`. `memberType` must be a string or SqlToken of "SLONIK_TOKEN_FRAGMENT" type.',
|
|
107
108
|
);
|
|
108
109
|
});
|
|
110
|
+
|
|
111
|
+
// Type assertion helper to verify types at compile time
|
|
112
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars, func-style, canonical/id-match
|
|
113
|
+
function assertType<T>(_value: T): void {
|
|
114
|
+
// This function exists only for type checking
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
test('produces ArraySqlToken<"int4"> for integer arrays', (t) => {
|
|
118
|
+
const arrayToken = sql.array([1, 2, 3], 'int4');
|
|
119
|
+
|
|
120
|
+
assertType<ArraySqlToken<'int4'>>(arrayToken);
|
|
121
|
+
|
|
122
|
+
t.is(arrayToken.memberType, 'int4');
|
|
123
|
+
t.deepEqual(arrayToken.values, [1, 2, 3]);
|
|
124
|
+
|
|
125
|
+
const query = sql.fragment`SELECT ${arrayToken}`;
|
|
126
|
+
t.deepEqual(query, {
|
|
127
|
+
sql: 'SELECT $slonik_1::"int4"[]',
|
|
128
|
+
type: FragmentToken,
|
|
129
|
+
values: [[1, 2, 3]],
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
test('produces ArraySqlToken<"text"> for text arrays', (t) => {
|
|
134
|
+
const arrayToken = sql.array(['a', 'b', 'c'], 'text');
|
|
135
|
+
|
|
136
|
+
assertType<ArraySqlToken<'text'>>(arrayToken);
|
|
137
|
+
|
|
138
|
+
t.is(arrayToken.memberType, 'text');
|
|
139
|
+
t.deepEqual(arrayToken.values, ['a', 'b', 'c']);
|
|
140
|
+
|
|
141
|
+
const query = sql.fragment`SELECT ${arrayToken}`;
|
|
142
|
+
|
|
143
|
+
t.deepEqual(query, {
|
|
144
|
+
sql: 'SELECT $slonik_1::"text"[]',
|
|
145
|
+
type: FragmentToken,
|
|
146
|
+
values: [['a', 'b', 'c']],
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
test('type inference with different PostgreSQL types', (t) => {
|
|
151
|
+
const int8Array = sql.array([BigInt(1), BigInt(2)], 'int8');
|
|
152
|
+
assertType<ArraySqlToken<'int8'>>(int8Array);
|
|
153
|
+
t.is(int8Array.memberType, 'int8');
|
|
154
|
+
|
|
155
|
+
const float8Array = sql.array([1.1, 2.2, 3.3], 'float8');
|
|
156
|
+
assertType<ArraySqlToken<'float8'>>(float8Array);
|
|
157
|
+
t.is(float8Array.memberType, 'float8');
|
|
158
|
+
|
|
159
|
+
const boolArray = sql.array([true, false, true], 'bool');
|
|
160
|
+
assertType<ArraySqlToken<'bool'>>(boolArray);
|
|
161
|
+
t.is(boolArray.memberType, 'bool');
|
|
162
|
+
|
|
163
|
+
const uuidArray = sql.array(['550e8400-e29b-41d4-a716-446655440000'], 'uuid');
|
|
164
|
+
assertType<ArraySqlToken<'uuid'>>(uuidArray);
|
|
165
|
+
t.is(uuidArray.memberType, 'uuid');
|
|
166
|
+
|
|
167
|
+
const timestampArray = sql.array([new Date().toISOString()], 'timestamp');
|
|
168
|
+
assertType<ArraySqlToken<'timestamp'>>(timestampArray);
|
|
169
|
+
t.is(timestampArray.memberType, 'timestamp');
|
|
170
|
+
|
|
171
|
+
const jsonbArray = sql.array([JSON.stringify({ key: 'value' })], 'jsonb');
|
|
172
|
+
assertType<ArraySqlToken<'jsonb'>>(jsonbArray);
|
|
173
|
+
t.is(jsonbArray.memberType, 'jsonb');
|
|
174
|
+
|
|
175
|
+
const query = sql.fragment`
|
|
176
|
+
SELECT
|
|
177
|
+
${int8Array} as int8_arr,
|
|
178
|
+
${float8Array} as float8_arr,
|
|
179
|
+
${boolArray} as bool_arr
|
|
180
|
+
`;
|
|
181
|
+
|
|
182
|
+
t.truthy(query.sql.includes('::"int8"[]'));
|
|
183
|
+
t.truthy(query.sql.includes('::"float8"[]'));
|
|
184
|
+
t.truthy(query.sql.includes('::"bool"[]'));
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
test('backward compatibility - existing code without explicit types still works', (t) => {
|
|
188
|
+
const arrayToken = sql.array([1, 2, 3], 'int4');
|
|
189
|
+
|
|
190
|
+
const token: ArraySqlToken = arrayToken;
|
|
191
|
+
|
|
192
|
+
t.is(token.memberType, 'int4');
|
|
193
|
+
|
|
194
|
+
const fragmentArray = sql.array([1, 2, 3], sql.fragment`int[]`);
|
|
195
|
+
|
|
196
|
+
t.is(typeof fragmentArray.memberType, 'object');
|
|
197
|
+
t.is((fragmentArray.memberType as SqlFragmentToken).type, FragmentToken);
|
|
198
|
+
|
|
199
|
+
t.deepEqual(fragmentArray.values, [1, 2, 3]);
|
|
200
|
+
|
|
201
|
+
const query = sql.fragment`SELECT ${fragmentArray}`;
|
|
202
|
+
|
|
203
|
+
t.deepEqual(query, {
|
|
204
|
+
sql: 'SELECT $slonik_1::int[]',
|
|
205
|
+
type: FragmentToken,
|
|
206
|
+
values: [[1, 2, 3]],
|
|
207
|
+
});
|
|
208
|
+
});
|
|
@@ -174,3 +174,13 @@ test('copes with dollar-number in function definitions', (t) => {
|
|
|
174
174
|
values: [],
|
|
175
175
|
});
|
|
176
176
|
});
|
|
177
|
+
|
|
178
|
+
test('interpolates literal boolean values', (t) => {
|
|
179
|
+
const query = sql.fragment`SELECT ${true}, ${false}`;
|
|
180
|
+
|
|
181
|
+
t.deepEqual(query, {
|
|
182
|
+
sql: 'SELECT $slonik_1, $slonik_2',
|
|
183
|
+
type: FragmentToken,
|
|
184
|
+
values: [true, false],
|
|
185
|
+
});
|
|
186
|
+
});
|
|
@@ -3,7 +3,6 @@ import type { UUID } from '../sqlFragmentFactories/createUuidSqlFragment.js';
|
|
|
3
3
|
import {
|
|
4
4
|
ArrayToken,
|
|
5
5
|
BinaryToken,
|
|
6
|
-
BooleanToken,
|
|
7
6
|
DateToken,
|
|
8
7
|
FragmentToken,
|
|
9
8
|
IdentifierToken,
|
|
@@ -17,8 +16,11 @@ import {
|
|
|
17
16
|
UuidToken,
|
|
18
17
|
} from '../tokens.js';
|
|
19
18
|
import type {
|
|
19
|
+
ArraySqlToken,
|
|
20
20
|
PrimitiveValueExpression,
|
|
21
|
+
SqlFragmentToken,
|
|
21
22
|
SqlTag,
|
|
23
|
+
TypeNameIdentifier,
|
|
22
24
|
ValueExpression,
|
|
23
25
|
} from '../types.js';
|
|
24
26
|
import { escapeLiteralValue } from '../utilities/escapeLiteralValue.js';
|
|
@@ -120,12 +122,15 @@ export const createSqlTag = <
|
|
|
120
122
|
const typeAliases = configuration.typeAliases;
|
|
121
123
|
|
|
122
124
|
return {
|
|
123
|
-
array:
|
|
125
|
+
array: <T extends TypeNameIdentifier>(
|
|
126
|
+
values: readonly PrimitiveValueExpression[],
|
|
127
|
+
memberType: SqlFragmentToken | T,
|
|
128
|
+
) => {
|
|
124
129
|
return Object.freeze({
|
|
125
130
|
memberType,
|
|
126
131
|
type: ArrayToken,
|
|
127
132
|
values,
|
|
128
|
-
})
|
|
133
|
+
}) as ArraySqlToken<T>;
|
|
129
134
|
},
|
|
130
135
|
binary: (data) => {
|
|
131
136
|
return Object.freeze({
|
|
@@ -133,12 +138,6 @@ export const createSqlTag = <
|
|
|
133
138
|
type: BinaryToken,
|
|
134
139
|
});
|
|
135
140
|
},
|
|
136
|
-
boolean: (value) => {
|
|
137
|
-
return Object.freeze({
|
|
138
|
-
type: BooleanToken,
|
|
139
|
-
value: value as boolean,
|
|
140
|
-
});
|
|
141
|
-
},
|
|
142
141
|
date: (date) => {
|
|
143
142
|
return Object.freeze({
|
|
144
143
|
date,
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { createArraySqlFragment } from '../sqlFragmentFactories/createArraySqlFragment.js';
|
|
2
2
|
import { createBinarySqlFragment } from '../sqlFragmentFactories/createBinarySqlFragment.js';
|
|
3
|
-
import { createBooleanSqlFragment } from '../sqlFragmentFactories/createBooleanSqlFragment.js';
|
|
4
3
|
import { createDateSqlFragment } from '../sqlFragmentFactories/createDateSqlFragment.js';
|
|
5
4
|
import { createFragmentSqlFragment } from '../sqlFragmentFactories/createFragmentSqlFragment.js';
|
|
6
5
|
import { createIdentifierSqlFragment } from '../sqlFragmentFactories/createIdentifierSqlFragment.js';
|
|
@@ -14,7 +13,6 @@ import { createUuidSqlFragment } from '../sqlFragmentFactories/createUuidSqlFrag
|
|
|
14
13
|
import {
|
|
15
14
|
ArrayToken,
|
|
16
15
|
BinaryToken,
|
|
17
|
-
BooleanToken,
|
|
18
16
|
DateToken,
|
|
19
17
|
FragmentToken,
|
|
20
18
|
IdentifierToken,
|
|
@@ -38,8 +36,6 @@ export const createSqlTokenSqlFragment = (
|
|
|
38
36
|
return createArraySqlFragment(token, greatestParameterPosition);
|
|
39
37
|
} else if (token.type === BinaryToken) {
|
|
40
38
|
return createBinarySqlFragment(token, greatestParameterPosition);
|
|
41
|
-
} else if (token.type === BooleanToken) {
|
|
42
|
-
return createBooleanSqlFragment(token, greatestParameterPosition);
|
|
43
39
|
} else if (token.type === DateToken) {
|
|
44
40
|
return createDateSqlFragment(token, greatestParameterPosition);
|
|
45
41
|
} else if (token.type === FragmentToken) {
|
package/src/index.ts
CHANGED
|
@@ -3,7 +3,6 @@ export { createSqlTokenSqlFragment } from './factories/createSqlTokenSqlFragment
|
|
|
3
3
|
export {
|
|
4
4
|
ArrayToken,
|
|
5
5
|
BinaryToken,
|
|
6
|
-
BooleanToken,
|
|
7
6
|
ComparisonPredicateToken,
|
|
8
7
|
DateToken,
|
|
9
8
|
FragmentToken,
|
|
@@ -20,7 +19,6 @@ export {
|
|
|
20
19
|
export {
|
|
21
20
|
type ArraySqlToken,
|
|
22
21
|
type BinarySqlToken,
|
|
23
|
-
type BooleanSqlToken,
|
|
24
22
|
type DateSqlToken,
|
|
25
23
|
type FragmentSqlToken,
|
|
26
24
|
type IdentifierSqlToken,
|
package/src/tokens.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export const ArrayToken = Symbol.for('SLONIK_TOKEN_ARRAY');
|
|
2
2
|
export const BinaryToken = Symbol.for('SLONIK_TOKEN_BINARY');
|
|
3
|
-
export const BooleanToken = Symbol.for('SLONIK_TOKEN_BOOLEAN');
|
|
4
3
|
export const ComparisonPredicateToken = Symbol.for(
|
|
5
4
|
'SLONIK_TOKEN_COMPARISON_PREDICATE',
|
|
6
5
|
);
|
package/src/types.ts
CHANGED
|
@@ -4,8 +4,8 @@ import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
|
4
4
|
|
|
5
5
|
export { type PrimitiveValueExpression } from '@slonik/types';
|
|
6
6
|
|
|
7
|
-
export type ArraySqlToken = {
|
|
8
|
-
readonly memberType: SqlFragmentToken |
|
|
7
|
+
export type ArraySqlToken<T extends TypeNameIdentifier = TypeNameIdentifier> = {
|
|
8
|
+
readonly memberType: SqlFragmentToken | T;
|
|
9
9
|
readonly type: typeof tokens.ArrayToken;
|
|
10
10
|
readonly values: readonly PrimitiveValueExpression[];
|
|
11
11
|
};
|
|
@@ -15,11 +15,6 @@ export type BinarySqlToken = {
|
|
|
15
15
|
readonly type: typeof tokens.BinaryToken;
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
export type BooleanSqlToken = {
|
|
19
|
-
readonly type: typeof tokens.BooleanToken;
|
|
20
|
-
readonly value: boolean;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
18
|
export type DateSqlToken = {
|
|
24
19
|
readonly date: Date;
|
|
25
20
|
readonly type: typeof tokens.DateToken;
|
|
@@ -98,12 +93,11 @@ export type SqlFragmentToken = {
|
|
|
98
93
|
export type SqlTag<
|
|
99
94
|
Z extends Record<string, StandardSchemaV1> = Record<string, StandardSchemaV1>,
|
|
100
95
|
> = {
|
|
101
|
-
array: (
|
|
96
|
+
array: <T extends TypeNameIdentifier>(
|
|
102
97
|
values: readonly PrimitiveValueExpression[],
|
|
103
|
-
memberType: SqlFragmentToken |
|
|
104
|
-
) => ArraySqlToken
|
|
98
|
+
memberType: SqlFragmentToken | T,
|
|
99
|
+
) => ArraySqlToken<T>;
|
|
105
100
|
binary: (data: Buffer) => BinarySqlToken;
|
|
106
|
-
boolean: (value: boolean) => BooleanSqlToken;
|
|
107
101
|
date: (date: Date) => DateSqlToken;
|
|
108
102
|
fragment: (
|
|
109
103
|
template: TemplateStringsArray,
|
|
@@ -149,9 +143,8 @@ export type SqlTag<
|
|
|
149
143
|
};
|
|
150
144
|
|
|
151
145
|
export type SqlToken =
|
|
152
|
-
| ArraySqlToken
|
|
146
|
+
| ArraySqlToken<TypeNameIdentifier>
|
|
153
147
|
| BinarySqlToken
|
|
154
|
-
| BooleanSqlToken
|
|
155
148
|
| DateSqlToken
|
|
156
149
|
| FragmentSqlToken
|
|
157
150
|
| IdentifierSqlToken
|
|
@@ -169,6 +162,24 @@ export type TimestampSqlToken = {
|
|
|
169
162
|
readonly type: typeof tokens.TimestampToken;
|
|
170
163
|
};
|
|
171
164
|
|
|
165
|
+
/**
|
|
166
|
+
* "string" type covers all type name identifiers – the literal values are added only to assist developer
|
|
167
|
+
* experience with auto suggestions for commonly used type name identifiers.
|
|
168
|
+
*/
|
|
169
|
+
export type TypeNameIdentifier =
|
|
170
|
+
| 'bool'
|
|
171
|
+
| 'bytea'
|
|
172
|
+
| 'float4'
|
|
173
|
+
| 'float8'
|
|
174
|
+
| 'int2'
|
|
175
|
+
| 'int4'
|
|
176
|
+
| 'int8'
|
|
177
|
+
| 'json'
|
|
178
|
+
| 'text'
|
|
179
|
+
| 'timestamptz'
|
|
180
|
+
| 'uuid'
|
|
181
|
+
| string;
|
|
182
|
+
|
|
172
183
|
export type UnnestSqlToken = {
|
|
173
184
|
readonly columnTypes:
|
|
174
185
|
| Array<[...string[], TypeNameIdentifier]>
|
|
@@ -186,21 +197,3 @@ export type ValueExpression =
|
|
|
186
197
|
| PrimitiveValueExpression
|
|
187
198
|
| SqlFragmentToken
|
|
188
199
|
| SqlToken;
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* "string" type covers all type name identifiers – the literal values are added only to assist developer
|
|
192
|
-
* experience with auto suggestions for commonly used type name identifiers.
|
|
193
|
-
*/
|
|
194
|
-
type TypeNameIdentifier =
|
|
195
|
-
| 'bool'
|
|
196
|
-
| 'bytea'
|
|
197
|
-
| 'float4'
|
|
198
|
-
| 'float8'
|
|
199
|
-
| 'int2'
|
|
200
|
-
| 'int4'
|
|
201
|
-
| 'int8'
|
|
202
|
-
| 'json'
|
|
203
|
-
| 'text'
|
|
204
|
-
| 'timestamptz'
|
|
205
|
-
| 'uuid'
|
|
206
|
-
| string;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ArrayToken,
|
|
3
3
|
BinaryToken,
|
|
4
|
-
BooleanToken,
|
|
5
4
|
ComparisonPredicateToken,
|
|
6
5
|
DateToken,
|
|
7
6
|
FragmentToken,
|
|
@@ -22,7 +21,6 @@ import { UnexpectedStateError } from '@slonik/errors';
|
|
|
22
21
|
const Tokens = [
|
|
23
22
|
ArrayToken,
|
|
24
23
|
BinaryToken,
|
|
25
|
-
BooleanToken,
|
|
26
24
|
ComparisonPredicateToken,
|
|
27
25
|
DateToken,
|
|
28
26
|
FragmentToken,
|
|
@@ -6,16 +6,14 @@ const stringify = configure({
|
|
|
6
6
|
strict: true,
|
|
7
7
|
});
|
|
8
8
|
|
|
9
|
-
export const safeStringify = (
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
): string => {
|
|
18
|
-
const result = stringify(subject, replacer, space);
|
|
9
|
+
export const safeStringify = (subject: unknown): string => {
|
|
10
|
+
try {
|
|
11
|
+
return JSON.stringify(subject);
|
|
12
|
+
} catch {
|
|
13
|
+
// Ignore
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const result = stringify(subject);
|
|
19
17
|
|
|
20
18
|
if (result === undefined) {
|
|
21
19
|
throw new Error('Expected result to be string');
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"boolean.test.d.ts","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/boolean.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { FragmentToken } from '../../tokens.js';
|
|
2
|
-
import { createSqlTag } from '../createSqlTag.js';
|
|
3
|
-
import test from 'ava';
|
|
4
|
-
const sql = createSqlTag();
|
|
5
|
-
test('binds true boolean value', (t) => {
|
|
6
|
-
const query = sql.fragment `SELECT ${sql.boolean(true)}`;
|
|
7
|
-
t.deepEqual(query, {
|
|
8
|
-
sql: 'SELECT $slonik_1::boolean',
|
|
9
|
-
type: FragmentToken,
|
|
10
|
-
values: [true],
|
|
11
|
-
});
|
|
12
|
-
});
|
|
13
|
-
test('binds false boolean value', (t) => {
|
|
14
|
-
const query = sql.fragment `SELECT ${sql.boolean(false)}`;
|
|
15
|
-
t.deepEqual(query, {
|
|
16
|
-
sql: 'SELECT $slonik_1::boolean',
|
|
17
|
-
type: FragmentToken,
|
|
18
|
-
values: [false],
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
test('throws if value is a string', (t) => {
|
|
22
|
-
const error = t.throws(() => {
|
|
23
|
-
// @ts-expect-error - intentional
|
|
24
|
-
sql.fragment `SELECT ${sql.boolean('true')}`;
|
|
25
|
-
});
|
|
26
|
-
t.is(error?.message, 'Boolean parameter value must be a boolean.');
|
|
27
|
-
});
|
|
28
|
-
test('throws if value is a number', (t) => {
|
|
29
|
-
const error = t.throws(() => {
|
|
30
|
-
// @ts-expect-error - intentional
|
|
31
|
-
sql.fragment `SELECT ${sql.boolean(1)}`;
|
|
32
|
-
});
|
|
33
|
-
t.is(error?.message, 'Boolean parameter value must be a boolean.');
|
|
34
|
-
});
|
|
35
|
-
test('throws if value is zero', (t) => {
|
|
36
|
-
const error = t.throws(() => {
|
|
37
|
-
// @ts-expect-error - intentional
|
|
38
|
-
sql.fragment `SELECT ${sql.boolean(0)}`;
|
|
39
|
-
});
|
|
40
|
-
t.is(error?.message, 'Boolean parameter value must be a boolean.');
|
|
41
|
-
});
|
|
42
|
-
test('throws if value is null', (t) => {
|
|
43
|
-
const error = t.throws(() => {
|
|
44
|
-
// @ts-expect-error - intentional
|
|
45
|
-
sql.fragment `SELECT ${sql.boolean(null)}`;
|
|
46
|
-
});
|
|
47
|
-
t.is(error?.message, 'Boolean parameter value must be a boolean.');
|
|
48
|
-
});
|
|
49
|
-
test('throws if value is undefined', (t) => {
|
|
50
|
-
const error = t.throws(() => {
|
|
51
|
-
// @ts-expect-error - intentional
|
|
52
|
-
sql.fragment `SELECT ${sql.boolean(undefined)}`;
|
|
53
|
-
});
|
|
54
|
-
t.is(error?.message, 'Boolean parameter value must be a boolean.');
|
|
55
|
-
});
|
|
56
|
-
test('throws if value is an object', (t) => {
|
|
57
|
-
const error = t.throws(() => {
|
|
58
|
-
// @ts-expect-error - intentional
|
|
59
|
-
sql.fragment `SELECT ${sql.boolean({})}`;
|
|
60
|
-
});
|
|
61
|
-
t.is(error?.message, 'Boolean parameter value must be a boolean.');
|
|
62
|
-
});
|
|
63
|
-
test('throws if value is an array', (t) => {
|
|
64
|
-
const error = t.throws(() => {
|
|
65
|
-
// @ts-expect-error - intentional
|
|
66
|
-
sql.fragment `SELECT ${sql.boolean([true])}`;
|
|
67
|
-
});
|
|
68
|
-
t.is(error?.message, 'Boolean parameter value must be a boolean.');
|
|
69
|
-
});
|
|
70
|
-
test('throws if value is a function', (t) => {
|
|
71
|
-
const error = t.throws(() => {
|
|
72
|
-
// @ts-expect-error - intentional
|
|
73
|
-
sql.fragment `SELECT ${sql.boolean(() => true)}`;
|
|
74
|
-
});
|
|
75
|
-
t.is(error?.message, 'Boolean parameter value must be a boolean.');
|
|
76
|
-
});
|
|
77
|
-
test('works with multiple boolean values in a query', (t) => {
|
|
78
|
-
const query = sql.fragment `SELECT ${sql.boolean(true)}, ${sql.boolean(false)}, ${sql.boolean(true)}`;
|
|
79
|
-
t.deepEqual(query, {
|
|
80
|
-
sql: 'SELECT $slonik_1::boolean, $slonik_2::boolean, $slonik_3::boolean',
|
|
81
|
-
type: FragmentToken,
|
|
82
|
-
values: [true, false, true],
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
test('works in WHERE clause', (t) => {
|
|
86
|
-
const query = sql.fragment `SELECT * FROM users WHERE active = ${sql.boolean(true)}`;
|
|
87
|
-
t.deepEqual(query, {
|
|
88
|
-
sql: 'SELECT * FROM users WHERE active = $slonik_1::boolean',
|
|
89
|
-
type: FragmentToken,
|
|
90
|
-
values: [true],
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
test('works with NOT operator', (t) => {
|
|
94
|
-
const query = sql.fragment `SELECT * FROM users WHERE NOT ${sql.boolean(false)}`;
|
|
95
|
-
t.deepEqual(query, {
|
|
96
|
-
sql: 'SELECT * FROM users WHERE NOT $slonik_1::boolean',
|
|
97
|
-
type: FragmentToken,
|
|
98
|
-
values: [false],
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
//# sourceMappingURL=boolean.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"boolean.test.js","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/boolean.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createBooleanSqlFragment.d.ts","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createBooleanSqlFragment.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIrE,eAAO,MAAM,wBAAwB,GACnC,OAAO,eAAe,EACtB,2BAA2B,MAAM,KAChC,gBAUF,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { FragmentToken } from '../tokens.js';
|
|
2
|
-
import { formatSlonikPlaceholder } from '../utilities/formatSlonikPlaceholder.js';
|
|
3
|
-
import { InvalidInputError } from '@slonik/errors';
|
|
4
|
-
export const createBooleanSqlFragment = (token, greatestParameterPosition) => {
|
|
5
|
-
if (typeof token.value !== 'boolean') {
|
|
6
|
-
throw new InvalidInputError('Boolean parameter value must be a boolean.');
|
|
7
|
-
}
|
|
8
|
-
return {
|
|
9
|
-
sql: formatSlonikPlaceholder(greatestParameterPosition + 1) + '::boolean',
|
|
10
|
-
type: FragmentToken,
|
|
11
|
-
values: [token.value],
|
|
12
|
-
};
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=createBooleanSqlFragment.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createBooleanSqlFragment.js","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createBooleanSqlFragment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,KAAsB,EACtB,yBAAiC,EACf,EAAE;IACpB,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,IAAI,iBAAiB,CAAC,4CAA4C,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO;QACL,GAAG,EAAE,uBAAuB,CAAC,yBAAyB,GAAG,CAAC,CAAC,GAAG,WAAW;QACzE,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;KACtB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import { FragmentToken } from '../../tokens.js';
|
|
2
|
-
import { createSqlTag } from '../createSqlTag.js';
|
|
3
|
-
import test from 'ava';
|
|
4
|
-
|
|
5
|
-
const sql = createSqlTag();
|
|
6
|
-
|
|
7
|
-
test('binds true boolean value', (t) => {
|
|
8
|
-
const query = sql.fragment`SELECT ${sql.boolean(true)}`;
|
|
9
|
-
|
|
10
|
-
t.deepEqual(query, {
|
|
11
|
-
sql: 'SELECT $slonik_1::boolean',
|
|
12
|
-
type: FragmentToken,
|
|
13
|
-
values: [true],
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
test('binds false boolean value', (t) => {
|
|
18
|
-
const query = sql.fragment`SELECT ${sql.boolean(false)}`;
|
|
19
|
-
|
|
20
|
-
t.deepEqual(query, {
|
|
21
|
-
sql: 'SELECT $slonik_1::boolean',
|
|
22
|
-
type: FragmentToken,
|
|
23
|
-
values: [false],
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
test('throws if value is a string', (t) => {
|
|
28
|
-
const error = t.throws(() => {
|
|
29
|
-
// @ts-expect-error - intentional
|
|
30
|
-
sql.fragment`SELECT ${sql.boolean('true')}`;
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
t.is(error?.message, 'Boolean parameter value must be a boolean.');
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
test('throws if value is a number', (t) => {
|
|
37
|
-
const error = t.throws(() => {
|
|
38
|
-
// @ts-expect-error - intentional
|
|
39
|
-
sql.fragment`SELECT ${sql.boolean(1)}`;
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
t.is(error?.message, 'Boolean parameter value must be a boolean.');
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
test('throws if value is zero', (t) => {
|
|
46
|
-
const error = t.throws(() => {
|
|
47
|
-
// @ts-expect-error - intentional
|
|
48
|
-
sql.fragment`SELECT ${sql.boolean(0)}`;
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
t.is(error?.message, 'Boolean parameter value must be a boolean.');
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
test('throws if value is null', (t) => {
|
|
55
|
-
const error = t.throws(() => {
|
|
56
|
-
// @ts-expect-error - intentional
|
|
57
|
-
sql.fragment`SELECT ${sql.boolean(null)}`;
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
t.is(error?.message, 'Boolean parameter value must be a boolean.');
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
test('throws if value is undefined', (t) => {
|
|
64
|
-
const error = t.throws(() => {
|
|
65
|
-
// @ts-expect-error - intentional
|
|
66
|
-
sql.fragment`SELECT ${sql.boolean(undefined)}`;
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
t.is(error?.message, 'Boolean parameter value must be a boolean.');
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
test('throws if value is an object', (t) => {
|
|
73
|
-
const error = t.throws(() => {
|
|
74
|
-
// @ts-expect-error - intentional
|
|
75
|
-
sql.fragment`SELECT ${sql.boolean({})}`;
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
t.is(error?.message, 'Boolean parameter value must be a boolean.');
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
test('throws if value is an array', (t) => {
|
|
82
|
-
const error = t.throws(() => {
|
|
83
|
-
// @ts-expect-error - intentional
|
|
84
|
-
sql.fragment`SELECT ${sql.boolean([true])}`;
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
t.is(error?.message, 'Boolean parameter value must be a boolean.');
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
test('throws if value is a function', (t) => {
|
|
91
|
-
const error = t.throws(() => {
|
|
92
|
-
// @ts-expect-error - intentional
|
|
93
|
-
sql.fragment`SELECT ${sql.boolean(() => true)}`;
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
t.is(error?.message, 'Boolean parameter value must be a boolean.');
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
test('works with multiple boolean values in a query', (t) => {
|
|
100
|
-
const query = sql.fragment`SELECT ${sql.boolean(true)}, ${sql.boolean(false)}, ${sql.boolean(true)}`;
|
|
101
|
-
|
|
102
|
-
t.deepEqual(query, {
|
|
103
|
-
sql: 'SELECT $slonik_1::boolean, $slonik_2::boolean, $slonik_3::boolean',
|
|
104
|
-
type: FragmentToken,
|
|
105
|
-
values: [true, false, true],
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
test('works in WHERE clause', (t) => {
|
|
110
|
-
const query = sql.fragment`SELECT * FROM users WHERE active = ${sql.boolean(true)}`;
|
|
111
|
-
|
|
112
|
-
t.deepEqual(query, {
|
|
113
|
-
sql: 'SELECT * FROM users WHERE active = $slonik_1::boolean',
|
|
114
|
-
type: FragmentToken,
|
|
115
|
-
values: [true],
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
test('works with NOT operator', (t) => {
|
|
120
|
-
const query = sql.fragment`SELECT * FROM users WHERE NOT ${sql.boolean(false)}`;
|
|
121
|
-
|
|
122
|
-
t.deepEqual(query, {
|
|
123
|
-
sql: 'SELECT * FROM users WHERE NOT $slonik_1::boolean',
|
|
124
|
-
type: FragmentToken,
|
|
125
|
-
values: [false],
|
|
126
|
-
});
|
|
127
|
-
});
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { FragmentToken } from '../tokens.js';
|
|
2
|
-
import type { BooleanSqlToken, SqlFragmentToken } from '../types.js';
|
|
3
|
-
import { formatSlonikPlaceholder } from '../utilities/formatSlonikPlaceholder.js';
|
|
4
|
-
import { InvalidInputError } from '@slonik/errors';
|
|
5
|
-
|
|
6
|
-
export const createBooleanSqlFragment = (
|
|
7
|
-
token: BooleanSqlToken,
|
|
8
|
-
greatestParameterPosition: number,
|
|
9
|
-
): SqlFragmentToken => {
|
|
10
|
-
if (typeof token.value !== 'boolean') {
|
|
11
|
-
throw new InvalidInputError('Boolean parameter value must be a boolean.');
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
return {
|
|
15
|
-
sql: formatSlonikPlaceholder(greatestParameterPosition + 1) + '::boolean',
|
|
16
|
-
type: FragmentToken,
|
|
17
|
-
values: [token.value],
|
|
18
|
-
};
|
|
19
|
-
};
|