@slonik/sql-tag 40.2.2
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 -0
- package/dist/Logger.d.ts +2 -0
- package/dist/Logger.d.ts.map +1 -0
- package/dist/Logger.js +8 -0
- package/dist/Logger.js.map +1 -0
- package/dist/factories/createPrimitiveValueExpressions.d.ts +3 -0
- package/dist/factories/createPrimitiveValueExpressions.d.ts.map +1 -0
- package/dist/factories/createPrimitiveValueExpressions.js +33 -0
- package/dist/factories/createPrimitiveValueExpressions.js.map +1 -0
- package/dist/factories/createSqlTag.d.ts +38 -0
- package/dist/factories/createSqlTag.d.ts.map +1 -0
- package/dist/factories/createSqlTag.js +170 -0
- package/dist/factories/createSqlTag.js.map +1 -0
- package/dist/factories/createSqlTag.test/array.test.d.ts +2 -0
- package/dist/factories/createSqlTag.test/array.test.d.ts.map +1 -0
- package/dist/factories/createSqlTag.test/array.test.js +76 -0
- package/dist/factories/createSqlTag.test/array.test.js.map +1 -0
- package/dist/factories/createSqlTag.test/date.test.d.ts +2 -0
- package/dist/factories/createSqlTag.test/date.test.d.ts.map +1 -0
- package/dist/factories/createSqlTag.test/date.test.js +25 -0
- package/dist/factories/createSqlTag.test/date.test.js.map +1 -0
- package/dist/factories/createSqlTag.test/identifier.test.d.ts +2 -0
- package/dist/factories/createSqlTag.test/identifier.test.d.ts.map +1 -0
- package/dist/factories/createSqlTag.test/identifier.test.js +38 -0
- package/dist/factories/createSqlTag.test/identifier.test.js.map +1 -0
- package/dist/factories/createSqlTag.test/interval.test.d.ts +2 -0
- package/dist/factories/createSqlTag.test/interval.test.d.ts.map +1 -0
- package/dist/factories/createSqlTag.test/interval.test.js +43 -0
- package/dist/factories/createSqlTag.test/interval.test.js.map +1 -0
- package/dist/factories/createSqlTag.test/join.test.d.ts +2 -0
- package/dist/factories/createSqlTag.test/join.test.d.ts.map +1 -0
- package/dist/factories/createSqlTag.test/join.test.js +87 -0
- package/dist/factories/createSqlTag.test/join.test.js.map +1 -0
- package/dist/factories/createSqlTag.test/json.test.d.ts +2 -0
- package/dist/factories/createSqlTag.test/json.test.d.ts.map +1 -0
- package/dist/factories/createSqlTag.test/json.test.js +88 -0
- package/dist/factories/createSqlTag.test/json.test.js.map +1 -0
- package/dist/factories/createSqlTag.test/jsonb.test.d.ts +2 -0
- package/dist/factories/createSqlTag.test/jsonb.test.d.ts.map +1 -0
- package/dist/factories/createSqlTag.test/jsonb.test.js +88 -0
- package/dist/factories/createSqlTag.test/jsonb.test.js.map +1 -0
- package/dist/factories/createSqlTag.test/literalValue.test.d.ts +2 -0
- package/dist/factories/createSqlTag.test/literalValue.test.d.ts.map +1 -0
- package/dist/factories/createSqlTag.test/literalValue.test.js +18 -0
- package/dist/factories/createSqlTag.test/literalValue.test.js.map +1 -0
- package/dist/factories/createSqlTag.test/sql.test.d.ts +2 -0
- package/dist/factories/createSqlTag.test/sql.test.d.ts.map +1 -0
- package/dist/factories/createSqlTag.test/sql.test.js +138 -0
- package/dist/factories/createSqlTag.test/sql.test.js.map +1 -0
- package/dist/factories/createSqlTag.test/timestamp.test.d.ts +2 -0
- package/dist/factories/createSqlTag.test/timestamp.test.d.ts.map +1 -0
- package/dist/factories/createSqlTag.test/timestamp.test.js +25 -0
- package/dist/factories/createSqlTag.test/timestamp.test.js.map +1 -0
- package/dist/factories/createSqlTag.test/type.test.d.ts +2 -0
- package/dist/factories/createSqlTag.test/type.test.d.ts.map +1 -0
- package/dist/factories/createSqlTag.test/type.test.js +19 -0
- package/dist/factories/createSqlTag.test/type.test.js.map +1 -0
- package/dist/factories/createSqlTag.test/typeAlias.test.d.ts +2 -0
- package/dist/factories/createSqlTag.test/typeAlias.test.d.ts.map +1 -0
- package/dist/factories/createSqlTag.test/typeAlias.test.js +47 -0
- package/dist/factories/createSqlTag.test/typeAlias.test.js.map +1 -0
- package/dist/factories/createSqlTag.test/unnest.test.d.ts +2 -0
- package/dist/factories/createSqlTag.test/unnest.test.d.ts.map +1 -0
- package/dist/factories/createSqlTag.test/unnest.test.js +127 -0
- package/dist/factories/createSqlTag.test/unnest.test.js.map +1 -0
- package/dist/factories/createSqlTokenSqlFragment.d.ts +3 -0
- package/dist/factories/createSqlTokenSqlFragment.d.ts.map +1 -0
- package/dist/factories/createSqlTokenSqlFragment.js +57 -0
- package/dist/factories/createSqlTokenSqlFragment.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/regexRules/slonikPlaceholderRegexRule.d.ts +2 -0
- package/dist/regexRules/slonikPlaceholderRegexRule.d.ts.map +1 -0
- package/dist/regexRules/slonikPlaceholderRegexRule.js +5 -0
- package/dist/regexRules/slonikPlaceholderRegexRule.js.map +1 -0
- package/dist/sqlFragmentFactories/createArraySqlFragment.d.ts +3 -0
- package/dist/sqlFragmentFactories/createArraySqlFragment.d.ts.map +1 -0
- package/dist/sqlFragmentFactories/createArraySqlFragment.js +48 -0
- package/dist/sqlFragmentFactories/createArraySqlFragment.js.map +1 -0
- package/dist/sqlFragmentFactories/createBinarySqlFragment.d.ts +3 -0
- package/dist/sqlFragmentFactories/createBinarySqlFragment.d.ts.map +1 -0
- package/dist/sqlFragmentFactories/createBinarySqlFragment.js +16 -0
- package/dist/sqlFragmentFactories/createBinarySqlFragment.js.map +1 -0
- package/dist/sqlFragmentFactories/createDateSqlFragment.d.ts +3 -0
- package/dist/sqlFragmentFactories/createDateSqlFragment.d.ts.map +1 -0
- package/dist/sqlFragmentFactories/createDateSqlFragment.js +16 -0
- package/dist/sqlFragmentFactories/createDateSqlFragment.js.map +1 -0
- package/dist/sqlFragmentFactories/createFragmentSqlFragment.d.ts +3 -0
- package/dist/sqlFragmentFactories/createFragmentSqlFragment.d.ts.map +1 -0
- package/dist/sqlFragmentFactories/createFragmentSqlFragment.js +34 -0
- package/dist/sqlFragmentFactories/createFragmentSqlFragment.js.map +1 -0
- package/dist/sqlFragmentFactories/createIdentifierSqlFragment.d.ts +3 -0
- package/dist/sqlFragmentFactories/createIdentifierSqlFragment.d.ts.map +1 -0
- package/dist/sqlFragmentFactories/createIdentifierSqlFragment.js +21 -0
- package/dist/sqlFragmentFactories/createIdentifierSqlFragment.js.map +1 -0
- package/dist/sqlFragmentFactories/createIntervalSqlFragment.d.ts +3 -0
- package/dist/sqlFragmentFactories/createIntervalSqlFragment.d.ts.map +1 -0
- package/dist/sqlFragmentFactories/createIntervalSqlFragment.js +57 -0
- package/dist/sqlFragmentFactories/createIntervalSqlFragment.js.map +1 -0
- package/dist/sqlFragmentFactories/createJsonSqlFragment.d.ts +3 -0
- package/dist/sqlFragmentFactories/createJsonSqlFragment.d.ts.map +1 -0
- package/dist/sqlFragmentFactories/createJsonSqlFragment.js +49 -0
- package/dist/sqlFragmentFactories/createJsonSqlFragment.js.map +1 -0
- package/dist/sqlFragmentFactories/createListSqlFragment.d.ts +3 -0
- package/dist/sqlFragmentFactories/createListSqlFragment.d.ts.map +1 -0
- package/dist/sqlFragmentFactories/createListSqlFragment.js +38 -0
- package/dist/sqlFragmentFactories/createListSqlFragment.js.map +1 -0
- package/dist/sqlFragmentFactories/createQuerySqlFragment.d.ts +3 -0
- package/dist/sqlFragmentFactories/createQuerySqlFragment.d.ts.map +1 -0
- package/dist/sqlFragmentFactories/createQuerySqlFragment.js +34 -0
- package/dist/sqlFragmentFactories/createQuerySqlFragment.js.map +1 -0
- package/dist/sqlFragmentFactories/createTimestampSqlFragment.d.ts +3 -0
- package/dist/sqlFragmentFactories/createTimestampSqlFragment.d.ts.map +1 -0
- package/dist/sqlFragmentFactories/createTimestampSqlFragment.js +18 -0
- package/dist/sqlFragmentFactories/createTimestampSqlFragment.js.map +1 -0
- package/dist/sqlFragmentFactories/createUnnestSqlFragment.d.ts +3 -0
- package/dist/sqlFragmentFactories/createUnnestSqlFragment.d.ts.map +1 -0
- package/dist/sqlFragmentFactories/createUnnestSqlFragment.js +81 -0
- package/dist/sqlFragmentFactories/createUnnestSqlFragment.js.map +1 -0
- package/dist/tokens.d.ts +14 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +17 -0
- package/dist/tokens.js.map +1 -0
- package/dist/types.d.ts +99 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utilities/countArrayDimensions.d.ts +2 -0
- package/dist/utilities/countArrayDimensions.d.ts.map +1 -0
- package/dist/utilities/countArrayDimensions.js +14 -0
- package/dist/utilities/countArrayDimensions.js.map +1 -0
- package/dist/utilities/countArrayDimensions.test.d.ts +2 -0
- package/dist/utilities/countArrayDimensions.test.d.ts.map +1 -0
- package/dist/utilities/countArrayDimensions.test.js +13 -0
- package/dist/utilities/countArrayDimensions.test.js.map +1 -0
- package/dist/utilities/escapeIdentifier.d.ts +5 -0
- package/dist/utilities/escapeIdentifier.d.ts.map +1 -0
- package/dist/utilities/escapeIdentifier.js +12 -0
- package/dist/utilities/escapeIdentifier.js.map +1 -0
- package/dist/utilities/escapeIdentifier.test.d.ts +2 -0
- package/dist/utilities/escapeIdentifier.test.d.ts.map +1 -0
- package/dist/utilities/escapeIdentifier.test.js +13 -0
- package/dist/utilities/escapeIdentifier.test.js.map +1 -0
- package/dist/utilities/escapeLiteralValue.d.ts +5 -0
- package/dist/utilities/escapeLiteralValue.d.ts.map +1 -0
- package/dist/utilities/escapeLiteralValue.js +29 -0
- package/dist/utilities/escapeLiteralValue.js.map +1 -0
- package/dist/utilities/escapeLiteralValue.test.d.ts +2 -0
- package/dist/utilities/escapeLiteralValue.test.d.ts.map +1 -0
- package/dist/utilities/escapeLiteralValue.test.js +14 -0
- package/dist/utilities/escapeLiteralValue.test.js.map +1 -0
- package/dist/utilities/formatSlonikPlaceholder.d.ts +14 -0
- package/dist/utilities/formatSlonikPlaceholder.d.ts.map +1 -0
- package/dist/utilities/formatSlonikPlaceholder.js +20 -0
- package/dist/utilities/formatSlonikPlaceholder.js.map +1 -0
- package/dist/utilities/hasOwnProperty.d.ts +6 -0
- package/dist/utilities/hasOwnProperty.d.ts.map +1 -0
- package/dist/utilities/hasOwnProperty.js +12 -0
- package/dist/utilities/hasOwnProperty.js.map +1 -0
- package/dist/utilities/isPlainObject.d.ts +2 -0
- package/dist/utilities/isPlainObject.d.ts.map +1 -0
- package/dist/utilities/isPlainObject.js +16 -0
- package/dist/utilities/isPlainObject.js.map +1 -0
- package/dist/utilities/isPrimitiveValueExpression.d.ts +2 -0
- package/dist/utilities/isPrimitiveValueExpression.d.ts.map +1 -0
- package/dist/utilities/isPrimitiveValueExpression.js +12 -0
- package/dist/utilities/isPrimitiveValueExpression.js.map +1 -0
- package/dist/utilities/isSqlToken.d.ts +3 -0
- package/dist/utilities/isSqlToken.d.ts.map +1 -0
- package/dist/utilities/isSqlToken.js +35 -0
- package/dist/utilities/isSqlToken.js.map +1 -0
- package/dist/utilities/safeStringify.d.ts +2 -0
- package/dist/utilities/safeStringify.d.ts.map +1 -0
- package/dist/utilities/safeStringify.js +18 -0
- package/dist/utilities/safeStringify.js.map +1 -0
- package/dist/utilities/stripArrayNotation.d.ts +2 -0
- package/dist/utilities/stripArrayNotation.d.ts.map +1 -0
- package/dist/utilities/stripArrayNotation.js +12 -0
- package/dist/utilities/stripArrayNotation.js.map +1 -0
- package/dist/utilities/stripArrayNotation.test.d.ts +2 -0
- package/dist/utilities/stripArrayNotation.test.d.ts.map +1 -0
- package/dist/utilities/stripArrayNotation.test.js +13 -0
- package/dist/utilities/stripArrayNotation.test.js.map +1 -0
- package/package.json +88 -0
- package/src/Logger.ts +5 -0
- package/src/declarations.d.ts +8 -0
- package/src/factories/createPrimitiveValueExpressions.ts +43 -0
- package/src/factories/createSqlTag.test/array.test.ts +107 -0
- package/src/factories/createSqlTag.test/date.test.ts +26 -0
- package/src/factories/createSqlTag.test/identifier.test.ts +39 -0
- package/src/factories/createSqlTag.test/interval.test.ts +44 -0
- package/src/factories/createSqlTag.test/join.test.ts +127 -0
- package/src/factories/createSqlTag.test/json.test.ts +106 -0
- package/src/factories/createSqlTag.test/jsonb.test.ts +106 -0
- package/src/factories/createSqlTag.test/literalValue.test.ts +17 -0
- package/src/factories/createSqlTag.test/sql.test.ts +165 -0
- package/src/factories/createSqlTag.test/timestamp.test.ts +29 -0
- package/src/factories/createSqlTag.test/type.test.ts +17 -0
- package/src/factories/createSqlTag.test/typeAlias.test.ts +53 -0
- package/src/factories/createSqlTag.test/unnest.test.ts +173 -0
- package/src/factories/createSqlTag.ts +256 -0
- package/src/factories/createSqlTokenSqlFragment.ts +60 -0
- package/src/index.ts +2 -0
- package/src/regexRules/slonikPlaceholderRegexRule.ts +1 -0
- package/src/sqlFragmentFactories/createArraySqlFragment.ts +67 -0
- package/src/sqlFragmentFactories/createBinarySqlFragment.ts +17 -0
- package/src/sqlFragmentFactories/createDateSqlFragment.ts +19 -0
- package/src/sqlFragmentFactories/createFragmentSqlFragment.ts +48 -0
- package/src/sqlFragmentFactories/createIdentifierSqlFragment.ts +24 -0
- package/src/sqlFragmentFactories/createIntervalSqlFragment.ts +71 -0
- package/src/sqlFragmentFactories/createJsonSqlFragment.ts +66 -0
- package/src/sqlFragmentFactories/createListSqlFragment.ts +48 -0
- package/src/sqlFragmentFactories/createQuerySqlFragment.ts +48 -0
- package/src/sqlFragmentFactories/createTimestampSqlFragment.ts +22 -0
- package/src/sqlFragmentFactories/createUnnestSqlFragment.ts +118 -0
- package/src/tokens.ts +14 -0
- package/src/types.ts +189 -0
- package/src/utilities/countArrayDimensions.test.ts +8 -0
- package/src/utilities/countArrayDimensions.ts +12 -0
- package/src/utilities/escapeIdentifier.test.ts +8 -0
- package/src/utilities/escapeIdentifier.ts +8 -0
- package/src/utilities/escapeLiteralValue.test.ts +9 -0
- package/src/utilities/escapeLiteralValue.ts +26 -0
- package/src/utilities/formatSlonikPlaceholder.ts +15 -0
- package/src/utilities/hasOwnProperty.ts +10 -0
- package/src/utilities/isPlainObject.ts +14 -0
- package/src/utilities/isPrimitiveValueExpression.ts +11 -0
- package/src/utilities/isSqlToken.ts +52 -0
- package/src/utilities/safeStringify.ts +25 -0
- package/src/utilities/stripArrayNotation.test.ts +8 -0
- package/src/utilities/stripArrayNotation.ts +9 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const tokens_1 = require("../../tokens");
|
|
7
|
+
const createSqlTag_1 = require("../createSqlTag");
|
|
8
|
+
const ava_1 = __importDefault(require("ava"));
|
|
9
|
+
const sql = (0, createSqlTag_1.createSqlTag)();
|
|
10
|
+
(0, ava_1.default)('creates an unnest expression using primitive values (type name identifier)', (t) => {
|
|
11
|
+
const query = sql.fragment `SELECT * FROM ${sql.unnest([
|
|
12
|
+
[1, 2, 3],
|
|
13
|
+
[4, 5, 6],
|
|
14
|
+
], ['int4', 'int4', 'int4'])}`;
|
|
15
|
+
t.deepEqual(query, {
|
|
16
|
+
sql: 'SELECT * FROM unnest($slonik_1::"int4"[], $slonik_2::"int4"[], $slonik_3::"int4"[])',
|
|
17
|
+
type: tokens_1.FragmentToken,
|
|
18
|
+
values: [
|
|
19
|
+
[1, 4],
|
|
20
|
+
[2, 5],
|
|
21
|
+
[3, 6],
|
|
22
|
+
],
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
(0, ava_1.default)('creates an unnest expression using primitive values (sql token)', (t) => {
|
|
26
|
+
const query = sql.fragment `SELECT * FROM ${sql.unnest([
|
|
27
|
+
[1, 2, 3],
|
|
28
|
+
[4, 5, 6],
|
|
29
|
+
], [sql.fragment `integer`, sql.fragment `integer`, sql.fragment `integer`])}`;
|
|
30
|
+
t.deepEqual(query, {
|
|
31
|
+
sql: 'SELECT * FROM unnest($slonik_1::integer[], $slonik_2::integer[], $slonik_3::integer[])',
|
|
32
|
+
type: tokens_1.FragmentToken,
|
|
33
|
+
values: [
|
|
34
|
+
[1, 4],
|
|
35
|
+
[2, 5],
|
|
36
|
+
[3, 6],
|
|
37
|
+
],
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
(0, ava_1.default)('treats type as sql.identifier', (t) => {
|
|
41
|
+
const query = sql.fragment `SELECT bar, baz FROM ${sql.unnest([
|
|
42
|
+
[1, 3],
|
|
43
|
+
[2, 4],
|
|
44
|
+
], [
|
|
45
|
+
['foo', 'int4'],
|
|
46
|
+
['foo', 'int4'],
|
|
47
|
+
])} AS foo(bar, baz)`;
|
|
48
|
+
t.deepEqual(query, {
|
|
49
|
+
sql: 'SELECT bar, baz FROM unnest($slonik_1::"foo"."int4"[], $slonik_2::"foo"."int4"[]) AS foo(bar, baz)',
|
|
50
|
+
type: tokens_1.FragmentToken,
|
|
51
|
+
values: [
|
|
52
|
+
[1, 2],
|
|
53
|
+
[3, 4],
|
|
54
|
+
],
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
(0, ava_1.default)('creates an unnest expression using arrays', (t) => {
|
|
58
|
+
const query = sql.fragment `SELECT * FROM ${sql.unnest([
|
|
59
|
+
[1, 2, 3],
|
|
60
|
+
[4, 5, 6],
|
|
61
|
+
], ['int4', 'int4', 'int4'])}`;
|
|
62
|
+
t.deepEqual(query, {
|
|
63
|
+
sql: 'SELECT * FROM unnest($slonik_1::"int4"[], $slonik_2::"int4"[], $slonik_3::"int4"[])',
|
|
64
|
+
type: tokens_1.FragmentToken,
|
|
65
|
+
values: [
|
|
66
|
+
[1, 4],
|
|
67
|
+
[2, 5],
|
|
68
|
+
[3, 6],
|
|
69
|
+
],
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
(0, ava_1.default)('creates incremental alias names if no alias names are provided', (t) => {
|
|
73
|
+
const query = sql.fragment `SELECT * FROM ${sql.unnest([
|
|
74
|
+
[1, 2, 3],
|
|
75
|
+
[4, 5, 6],
|
|
76
|
+
], ['int4', 'int4', 'int4'])}`;
|
|
77
|
+
t.deepEqual(query, {
|
|
78
|
+
sql: 'SELECT * FROM unnest($slonik_1::"int4"[], $slonik_2::"int4"[], $slonik_3::"int4"[])',
|
|
79
|
+
type: tokens_1.FragmentToken,
|
|
80
|
+
values: [
|
|
81
|
+
[1, 4],
|
|
82
|
+
[2, 5],
|
|
83
|
+
[3, 6],
|
|
84
|
+
],
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
(0, ava_1.default)('recognizes an array of arrays array', (t) => {
|
|
88
|
+
const query = sql.fragment `SELECT * FROM ${sql.unnest([[[[1], [2], [3]]]], ['int4[]'])}`;
|
|
89
|
+
t.deepEqual(query, {
|
|
90
|
+
sql: 'SELECT * FROM unnest($slonik_1::"int4"[][])',
|
|
91
|
+
type: tokens_1.FragmentToken,
|
|
92
|
+
values: [[[[1], [2], [3]]]],
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
(0, ava_1.default)('throws if tuple member is not a primitive value expression', (t) => {
|
|
96
|
+
const error = t.throws(() => {
|
|
97
|
+
sql.fragment `SELECT * FROM ${sql.unnest([
|
|
98
|
+
[
|
|
99
|
+
// @ts-expect-error Intentional invalid value.
|
|
100
|
+
() => { },
|
|
101
|
+
2,
|
|
102
|
+
3,
|
|
103
|
+
],
|
|
104
|
+
[4, 5],
|
|
105
|
+
], ['int4', 'int4', 'int4'])}`;
|
|
106
|
+
});
|
|
107
|
+
t.is(error?.message, 'Invalid unnest tuple member type. Must be a primitive value expression.');
|
|
108
|
+
});
|
|
109
|
+
(0, ava_1.default)('throws if tuple member length varies in a list of tuples', (t) => {
|
|
110
|
+
const error = t.throws(() => {
|
|
111
|
+
sql.fragment `SELECT * FROM ${sql.unnest([
|
|
112
|
+
[1, 2, 3],
|
|
113
|
+
[4, 5],
|
|
114
|
+
], ['int4', 'int4', 'int4'])}`;
|
|
115
|
+
});
|
|
116
|
+
t.is(error?.message, 'Each tuple in a list of tuples must have an equal number of members.');
|
|
117
|
+
});
|
|
118
|
+
(0, ava_1.default)('throws if tuple member length does not match column types length', (t) => {
|
|
119
|
+
const error = t.throws(() => {
|
|
120
|
+
sql.fragment `SELECT * FROM ${sql.unnest([
|
|
121
|
+
[1, 2, 3],
|
|
122
|
+
[4, 5, 6],
|
|
123
|
+
], ['int4', 'int4'])}`;
|
|
124
|
+
});
|
|
125
|
+
t.is(error?.message, 'Column types length must match tuple member length.');
|
|
126
|
+
});
|
|
127
|
+
//# sourceMappingURL=unnest.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unnest.test.js","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/unnest.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createSqlTokenSqlFragment.d.ts","sourceRoot":"","sources":["../../src/factories/createSqlTokenSqlFragment.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,IAAI,YAAY,EAAE,MAAM,UAAU,CAAC;AAG3E,eAAO,MAAM,yBAAyB,UAC7B,YAAY,6BACQ,MAAM,KAChC,WA4BF,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSqlTokenSqlFragment = void 0;
|
|
4
|
+
const createArraySqlFragment_1 = require("../sqlFragmentFactories/createArraySqlFragment");
|
|
5
|
+
const createBinarySqlFragment_1 = require("../sqlFragmentFactories/createBinarySqlFragment");
|
|
6
|
+
const createDateSqlFragment_1 = require("../sqlFragmentFactories/createDateSqlFragment");
|
|
7
|
+
const createFragmentSqlFragment_1 = require("../sqlFragmentFactories/createFragmentSqlFragment");
|
|
8
|
+
const createIdentifierSqlFragment_1 = require("../sqlFragmentFactories/createIdentifierSqlFragment");
|
|
9
|
+
const createIntervalSqlFragment_1 = require("../sqlFragmentFactories/createIntervalSqlFragment");
|
|
10
|
+
const createJsonSqlFragment_1 = require("../sqlFragmentFactories/createJsonSqlFragment");
|
|
11
|
+
const createListSqlFragment_1 = require("../sqlFragmentFactories/createListSqlFragment");
|
|
12
|
+
const createQuerySqlFragment_1 = require("../sqlFragmentFactories/createQuerySqlFragment");
|
|
13
|
+
const createTimestampSqlFragment_1 = require("../sqlFragmentFactories/createTimestampSqlFragment");
|
|
14
|
+
const createUnnestSqlFragment_1 = require("../sqlFragmentFactories/createUnnestSqlFragment");
|
|
15
|
+
const tokens_1 = require("../tokens");
|
|
16
|
+
const errors_1 = require("@slonik/errors");
|
|
17
|
+
const createSqlTokenSqlFragment = (token, greatestParameterPosition) => {
|
|
18
|
+
if (token.type === tokens_1.ArrayToken) {
|
|
19
|
+
return (0, createArraySqlFragment_1.createArraySqlFragment)(token, greatestParameterPosition);
|
|
20
|
+
}
|
|
21
|
+
else if (token.type === tokens_1.BinaryToken) {
|
|
22
|
+
return (0, createBinarySqlFragment_1.createBinarySqlFragment)(token, greatestParameterPosition);
|
|
23
|
+
}
|
|
24
|
+
else if (token.type === tokens_1.DateToken) {
|
|
25
|
+
return (0, createDateSqlFragment_1.createDateSqlFragment)(token, greatestParameterPosition);
|
|
26
|
+
}
|
|
27
|
+
else if (token.type === tokens_1.FragmentToken) {
|
|
28
|
+
return (0, createFragmentSqlFragment_1.createFragmentSqlFragment)(token, greatestParameterPosition);
|
|
29
|
+
}
|
|
30
|
+
else if (token.type === tokens_1.IdentifierToken) {
|
|
31
|
+
return (0, createIdentifierSqlFragment_1.createIdentifierSqlFragment)(token);
|
|
32
|
+
}
|
|
33
|
+
else if (token.type === tokens_1.IntervalToken) {
|
|
34
|
+
return (0, createIntervalSqlFragment_1.createIntervalSqlFragment)(token, greatestParameterPosition);
|
|
35
|
+
}
|
|
36
|
+
else if (token.type === tokens_1.JsonBinaryToken) {
|
|
37
|
+
return (0, createJsonSqlFragment_1.createJsonSqlFragment)(token, greatestParameterPosition, true);
|
|
38
|
+
}
|
|
39
|
+
else if (token.type === tokens_1.JsonToken) {
|
|
40
|
+
return (0, createJsonSqlFragment_1.createJsonSqlFragment)(token, greatestParameterPosition, false);
|
|
41
|
+
}
|
|
42
|
+
else if (token.type === tokens_1.ListToken) {
|
|
43
|
+
return (0, createListSqlFragment_1.createListSqlFragment)(token, greatestParameterPosition);
|
|
44
|
+
}
|
|
45
|
+
else if (token.type === tokens_1.QueryToken) {
|
|
46
|
+
return (0, createQuerySqlFragment_1.createQuerySqlFragment)(token, greatestParameterPosition);
|
|
47
|
+
}
|
|
48
|
+
else if (token.type === tokens_1.TimestampToken) {
|
|
49
|
+
return (0, createTimestampSqlFragment_1.createTimestampSqlFragment)(token, greatestParameterPosition);
|
|
50
|
+
}
|
|
51
|
+
else if (token.type === tokens_1.UnnestToken) {
|
|
52
|
+
return (0, createUnnestSqlFragment_1.createUnnestSqlFragment)(token, greatestParameterPosition);
|
|
53
|
+
}
|
|
54
|
+
throw new errors_1.UnexpectedStateError('Unexpected token type.');
|
|
55
|
+
};
|
|
56
|
+
exports.createSqlTokenSqlFragment = createSqlTokenSqlFragment;
|
|
57
|
+
//# sourceMappingURL=createSqlTokenSqlFragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createSqlTokenSqlFragment.js","sourceRoot":"","sources":["../../src/factories/createSqlTokenSqlFragment.ts"],"names":[],"mappings":";;;AAAA,2FAAwF;AACxF,6FAA0F;AAC1F,yFAAsF;AACtF,iGAA8F;AAC9F,qGAAkG;AAClG,iGAA8F;AAC9F,yFAAsF;AACtF,yFAAsF;AACtF,2FAAwF;AACxF,mGAAgG;AAChG,6FAA0F;AAC1F,sCAamB;AAEnB,2CAAsD;AAE/C,MAAM,yBAAyB,GAAG,CACvC,KAAmB,EACnB,yBAAiC,EACpB,EAAE;IACf,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAU,EAAE,CAAC;QAC9B,OAAO,IAAA,+CAAsB,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IAClE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAW,EAAE,CAAC;QACtC,OAAO,IAAA,iDAAuB,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAS,EAAE,CAAC;QACpC,OAAO,IAAA,6CAAqB,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAa,EAAE,CAAC;QACxC,OAAO,IAAA,qDAAyB,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACrE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAe,EAAE,CAAC;QAC1C,OAAO,IAAA,yDAA2B,EAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAa,EAAE,CAAC;QACxC,OAAO,IAAA,qDAAyB,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACrE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAe,EAAE,CAAC;QAC1C,OAAO,IAAA,6CAAqB,EAAC,KAAK,EAAE,yBAAyB,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAS,EAAE,CAAC;QACpC,OAAO,IAAA,6CAAqB,EAAC,KAAK,EAAE,yBAAyB,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAS,EAAE,CAAC;QACpC,OAAO,IAAA,6CAAqB,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAU,EAAE,CAAC;QACrC,OAAO,IAAA,+CAAsB,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IAClE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,EAAE,CAAC;QACzC,OAAO,IAAA,uDAA0B,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACtE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAW,EAAE,CAAC;QACtC,OAAO,IAAA,iDAAuB,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,IAAI,6BAAoB,CAAC,wBAAwB,CAAC,CAAC;AAC3D,CAAC,CAAC;AA/BW,QAAA,yBAAyB,6BA+BpC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSqlTag = void 0;
|
|
4
|
+
var createSqlTag_1 = require("./factories/createSqlTag");
|
|
5
|
+
Object.defineProperty(exports, "createSqlTag", { enumerable: true, get: function () { return createSqlTag_1.createSqlTag; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yDAAwD;AAA/C,4GAAA,YAAY,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slonikPlaceholderRegexRule.d.ts","sourceRoot":"","sources":["../../src/regexRules/slonikPlaceholderRegexRule.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,QAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slonikPlaceholderRegexRule.js","sourceRoot":"","sources":["../../src/regexRules/slonikPlaceholderRegexRule.ts"],"names":[],"mappings":";;;AAAa,QAAA,0BAA0B,GAAG,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createArraySqlFragment.d.ts","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createArraySqlFragment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAOhE,eAAO,MAAM,sBAAsB,UAC1B,aAAa,6BACO,MAAM,KAChC,WAuDF,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createArraySqlFragment = void 0;
|
|
4
|
+
const createSqlTokenSqlFragment_1 = require("../factories/createSqlTokenSqlFragment");
|
|
5
|
+
const escapeIdentifier_1 = require("../utilities/escapeIdentifier");
|
|
6
|
+
const formatSlonikPlaceholder_1 = require("../utilities/formatSlonikPlaceholder");
|
|
7
|
+
const isPrimitiveValueExpression_1 = require("../utilities/isPrimitiveValueExpression");
|
|
8
|
+
const isSqlToken_1 = require("../utilities/isSqlToken");
|
|
9
|
+
const errors_1 = require("@slonik/errors");
|
|
10
|
+
const createArraySqlFragment = (token, greatestParameterPosition) => {
|
|
11
|
+
let placeholderIndex = greatestParameterPosition;
|
|
12
|
+
for (const value of token.values) {
|
|
13
|
+
if (token.memberType === 'bytea') {
|
|
14
|
+
if (Buffer.isBuffer(value)) {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
throw new errors_1.InvalidInputError('Invalid array member type. Non-buffer value bound to bytea type.');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (!(0, isPrimitiveValueExpression_1.isPrimitiveValueExpression)(value)) {
|
|
22
|
+
throw new errors_1.InvalidInputError('Invalid array member type. Must be a primitive value expression.');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const values = [token.values];
|
|
26
|
+
placeholderIndex++;
|
|
27
|
+
let sql = (0, formatSlonikPlaceholder_1.formatSlonikPlaceholder)(placeholderIndex) + '::';
|
|
28
|
+
if ((0, isSqlToken_1.isSqlToken)(token.memberType) &&
|
|
29
|
+
token.memberType.type === 'SLONIK_TOKEN_FRAGMENT') {
|
|
30
|
+
const sqlFragment = (0, createSqlTokenSqlFragment_1.createSqlTokenSqlFragment)(token.memberType, placeholderIndex);
|
|
31
|
+
if (sqlFragment.values.length > 0) {
|
|
32
|
+
throw new errors_1.UnexpectedStateError('Type is not expected to have a value binding.');
|
|
33
|
+
}
|
|
34
|
+
sql += sqlFragment.sql;
|
|
35
|
+
}
|
|
36
|
+
else if (typeof token.memberType === 'string') {
|
|
37
|
+
sql += (0, escapeIdentifier_1.escapeIdentifier)(token.memberType) + '[]';
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
throw new errors_1.InvalidInputError('Unsupported `memberType`. `memberType` must be a string or SqlToken of "SLONIK_TOKEN_FRAGMENT" type.');
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
sql,
|
|
44
|
+
values,
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
exports.createArraySqlFragment = createArraySqlFragment;
|
|
48
|
+
//# sourceMappingURL=createArraySqlFragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createArraySqlFragment.js","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createArraySqlFragment.ts"],"names":[],"mappings":";;;AAAA,sFAAmF;AAEnF,oEAAiE;AACjE,kFAA+E;AAC/E,wFAAqF;AACrF,wDAAqD;AACrD,2CAAyE;AAElE,MAAM,sBAAsB,GAAG,CACpC,KAAoB,EACpB,yBAAiC,EACpB,EAAE;IACf,IAAI,gBAAgB,GAAG,yBAAyB,CAAC;IAEjD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,SAAS;YACX,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,0BAAiB,CACzB,kEAAkE,CACnE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAA,uDAA0B,EAAC,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,0BAAiB,CACzB,kEAAkE,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE9B,gBAAgB,EAAE,CAAC;IAEnB,IAAI,GAAG,GAAG,IAAA,iDAAuB,EAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAE3D,IACE,IAAA,uBAAU,EAAC,KAAK,CAAC,UAAU,CAAC;QAC5B,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,uBAAuB,EACjD,CAAC;QACD,MAAM,WAAW,GAAG,IAAA,qDAAyB,EAC3C,KAAK,CAAC,UAAU,EAChB,gBAAgB,CACjB,CAAC;QAEF,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,6BAAoB,CAC5B,+CAA+C,CAChD,CAAC;QACJ,CAAC;QAED,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC;IACzB,CAAC;SAAM,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAChD,GAAG,IAAI,IAAA,mCAAgB,EAAC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,0BAAiB,CACzB,sGAAsG,CACvG,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG;QACH,MAAM;KACP,CAAC;AACJ,CAAC,CAAC;AA1DW,QAAA,sBAAsB,0BA0DjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBinarySqlFragment.d.ts","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createBinarySqlFragment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAIjE,eAAO,MAAM,uBAAuB,UAC3B,cAAc,6BACM,MAAM,KAChC,WASF,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createBinarySqlFragment = void 0;
|
|
4
|
+
const formatSlonikPlaceholder_1 = require("../utilities/formatSlonikPlaceholder");
|
|
5
|
+
const errors_1 = require("@slonik/errors");
|
|
6
|
+
const createBinarySqlFragment = (token, greatestParameterPosition) => {
|
|
7
|
+
if (!Buffer.isBuffer(token.data)) {
|
|
8
|
+
throw new errors_1.InvalidInputError('Binary value must be a buffer.');
|
|
9
|
+
}
|
|
10
|
+
return {
|
|
11
|
+
sql: (0, formatSlonikPlaceholder_1.formatSlonikPlaceholder)(greatestParameterPosition + 1),
|
|
12
|
+
values: [token.data],
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
exports.createBinarySqlFragment = createBinarySqlFragment;
|
|
16
|
+
//# sourceMappingURL=createBinarySqlFragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBinarySqlFragment.js","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createBinarySqlFragment.ts"],"names":[],"mappings":";;;AACA,kFAA+E;AAC/E,2CAAmD;AAE5C,MAAM,uBAAuB,GAAG,CACrC,KAAqB,EACrB,yBAAiC,EACpB,EAAE;IACf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,0BAAiB,CAAC,gCAAgC,CAAC,CAAC;IAChE,CAAC;IAED,OAAO;QACL,GAAG,EAAE,IAAA,iDAAuB,EAAC,yBAAyB,GAAG,CAAC,CAAC;QAC3D,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;KACrB,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,uBAAuB,2BAYlC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createDateSqlFragment.d.ts","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createDateSqlFragment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAI/D,eAAO,MAAM,qBAAqB,UACzB,YAAY,6BACQ,MAAM,KAChC,WAWF,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createDateSqlFragment = void 0;
|
|
4
|
+
const formatSlonikPlaceholder_1 = require("../utilities/formatSlonikPlaceholder");
|
|
5
|
+
const errors_1 = require("@slonik/errors");
|
|
6
|
+
const createDateSqlFragment = (token, greatestParameterPosition) => {
|
|
7
|
+
if (!(token.date instanceof Date)) {
|
|
8
|
+
throw new errors_1.InvalidInputError('Date parameter value must be an instance of Date.');
|
|
9
|
+
}
|
|
10
|
+
return {
|
|
11
|
+
sql: (0, formatSlonikPlaceholder_1.formatSlonikPlaceholder)(greatestParameterPosition + 1) + '::date',
|
|
12
|
+
values: [token.date.toISOString().slice(0, 10)],
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
exports.createDateSqlFragment = createDateSqlFragment;
|
|
16
|
+
//# sourceMappingURL=createDateSqlFragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createDateSqlFragment.js","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createDateSqlFragment.ts"],"names":[],"mappings":";;;AACA,kFAA+E;AAC/E,2CAAmD;AAE5C,MAAM,qBAAqB,GAAG,CACnC,KAAmB,EACnB,yBAAiC,EACpB,EAAE;IACf,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,0BAAiB,CACzB,mDAAmD,CACpD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,EAAE,IAAA,iDAAuB,EAAC,yBAAyB,GAAG,CAAC,CAAC,GAAG,QAAQ;QACtE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KAChD,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,qBAAqB,yBAchC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createFragmentSqlFragment.d.ts","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createFragmentSqlFragment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAInE,eAAO,MAAM,yBAAyB,UAC7B,gBAAgB,6BACI,MAAM,KAChC,WAuCF,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createFragmentSqlFragment = void 0;
|
|
4
|
+
const slonikPlaceholderRegexRule_1 = require("../regexRules/slonikPlaceholderRegexRule");
|
|
5
|
+
const formatSlonikPlaceholder_1 = require("../utilities/formatSlonikPlaceholder");
|
|
6
|
+
const errors_1 = require("@slonik/errors");
|
|
7
|
+
const createFragmentSqlFragment = (token, greatestParameterPosition) => {
|
|
8
|
+
let sql = '';
|
|
9
|
+
let leastMatchedParameterPosition = Number.POSITIVE_INFINITY;
|
|
10
|
+
let greatestMatchedParameterPosition = 0;
|
|
11
|
+
sql += token.sql.replaceAll(slonikPlaceholderRegexRule_1.slonikPlaceholderRegexRule, (match, g1) => {
|
|
12
|
+
const parameterPosition = Number.parseInt(g1, 10);
|
|
13
|
+
if (parameterPosition > greatestMatchedParameterPosition) {
|
|
14
|
+
greatestMatchedParameterPosition = parameterPosition;
|
|
15
|
+
}
|
|
16
|
+
if (parameterPosition < leastMatchedParameterPosition) {
|
|
17
|
+
leastMatchedParameterPosition = parameterPosition;
|
|
18
|
+
}
|
|
19
|
+
return (0, formatSlonikPlaceholder_1.formatSlonikPlaceholder)(parameterPosition + greatestParameterPosition);
|
|
20
|
+
});
|
|
21
|
+
if (greatestMatchedParameterPosition > token.values.length) {
|
|
22
|
+
throw new errors_1.UnexpectedStateError('The greatest parameter position is greater than the number of parameter values.');
|
|
23
|
+
}
|
|
24
|
+
if (leastMatchedParameterPosition !== Number.POSITIVE_INFINITY &&
|
|
25
|
+
leastMatchedParameterPosition !== 1) {
|
|
26
|
+
throw new errors_1.UnexpectedStateError('Parameter position must start at 1.');
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
sql,
|
|
30
|
+
values: token.values,
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
exports.createFragmentSqlFragment = createFragmentSqlFragment;
|
|
34
|
+
//# sourceMappingURL=createFragmentSqlFragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createFragmentSqlFragment.js","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createFragmentSqlFragment.ts"],"names":[],"mappings":";;;AAAA,yFAAsF;AAEtF,kFAA+E;AAC/E,2CAAsD;AAE/C,MAAM,yBAAyB,GAAG,CACvC,KAAuB,EACvB,yBAAiC,EACpB,EAAE;IACf,IAAI,GAAG,GAAG,EAAE,CAAC;IAEb,IAAI,6BAA6B,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC7D,IAAI,gCAAgC,GAAG,CAAC,CAAC;IAEzC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,uDAA0B,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACpE,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAElD,IAAI,iBAAiB,GAAG,gCAAgC,EAAE,CAAC;YACzD,gCAAgC,GAAG,iBAAiB,CAAC;QACvD,CAAC;QAED,IAAI,iBAAiB,GAAG,6BAA6B,EAAE,CAAC;YACtD,6BAA6B,GAAG,iBAAiB,CAAC;QACpD,CAAC;QAED,OAAO,IAAA,iDAAuB,EAC5B,iBAAiB,GAAG,yBAAyB,CAC9C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,gCAAgC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC3D,MAAM,IAAI,6BAAoB,CAC5B,iFAAiF,CAClF,CAAC;IACJ,CAAC;IAED,IACE,6BAA6B,KAAK,MAAM,CAAC,iBAAiB;QAC1D,6BAA6B,KAAK,CAAC,EACnC,CAAC;QACD,MAAM,IAAI,6BAAoB,CAAC,qCAAqC,CAAC,CAAC;IACxE,CAAC;IAED,OAAO;QACL,GAAG;QACH,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC;AACJ,CAAC,CAAC;AA1CW,QAAA,yBAAyB,6BA0CpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createIdentifierSqlFragment.d.ts","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createIdentifierSqlFragment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAIrE,eAAO,MAAM,2BAA2B,UAC/B,kBAAkB,KACxB,WAiBF,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createIdentifierSqlFragment = void 0;
|
|
4
|
+
const escapeIdentifier_1 = require("../utilities/escapeIdentifier");
|
|
5
|
+
const errors_1 = require("@slonik/errors");
|
|
6
|
+
const createIdentifierSqlFragment = (token) => {
|
|
7
|
+
const sql = token.names
|
|
8
|
+
.map((identifierName) => {
|
|
9
|
+
if (typeof identifierName !== 'string') {
|
|
10
|
+
throw new errors_1.InvalidInputError('Identifier name array member type must be a string.');
|
|
11
|
+
}
|
|
12
|
+
return (0, escapeIdentifier_1.escapeIdentifier)(identifierName);
|
|
13
|
+
})
|
|
14
|
+
.join('.');
|
|
15
|
+
return {
|
|
16
|
+
sql,
|
|
17
|
+
values: [],
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
exports.createIdentifierSqlFragment = createIdentifierSqlFragment;
|
|
21
|
+
//# sourceMappingURL=createIdentifierSqlFragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createIdentifierSqlFragment.js","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createIdentifierSqlFragment.ts"],"names":[],"mappings":";;;AACA,oEAAiE;AACjE,2CAAmD;AAE5C,MAAM,2BAA2B,GAAG,CACzC,KAAyB,EACZ,EAAE;IACf,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK;SACpB,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE;QACtB,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,IAAI,0BAAiB,CACzB,qDAAqD,CACtD,CAAC;QACJ,CAAC;QAED,OAAO,IAAA,mCAAgB,EAAC,cAAc,CAAC,CAAC;IAC1C,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO;QACL,GAAG;QACH,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,2BAA2B,+BAmBtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createIntervalSqlFragment.d.ts","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createIntervalSqlFragment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAgCnE,eAAO,MAAM,yBAAyB,UAC7B,gBAAgB,6BACI,MAAM,KAChC,WAmCF,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createIntervalSqlFragment = void 0;
|
|
4
|
+
const formatSlonikPlaceholder_1 = require("../utilities/formatSlonikPlaceholder");
|
|
5
|
+
const errors_1 = require("@slonik/errors");
|
|
6
|
+
const zod_1 = require("zod");
|
|
7
|
+
const IntervalInput = zod_1.z
|
|
8
|
+
.object({
|
|
9
|
+
days: zod_1.z.number().optional(),
|
|
10
|
+
hours: zod_1.z.number().optional(),
|
|
11
|
+
minutes: zod_1.z.number().optional(),
|
|
12
|
+
months: zod_1.z.number().optional(),
|
|
13
|
+
seconds: zod_1.z.number().optional(),
|
|
14
|
+
weeks: zod_1.z.number().optional(),
|
|
15
|
+
years: zod_1.z.number().optional(),
|
|
16
|
+
})
|
|
17
|
+
.strict();
|
|
18
|
+
const intervalFragments = [
|
|
19
|
+
'years',
|
|
20
|
+
'months',
|
|
21
|
+
'weeks',
|
|
22
|
+
'days',
|
|
23
|
+
'hours',
|
|
24
|
+
'minutes',
|
|
25
|
+
'seconds',
|
|
26
|
+
];
|
|
27
|
+
const tokenMap = {
|
|
28
|
+
minutes: 'mins',
|
|
29
|
+
seconds: 'secs',
|
|
30
|
+
};
|
|
31
|
+
const createIntervalSqlFragment = (token, greatestParameterPosition) => {
|
|
32
|
+
let intervalInput;
|
|
33
|
+
try {
|
|
34
|
+
intervalInput = IntervalInput.parse(token.interval);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
throw new errors_1.InvalidInputError('Interval input must not contain unknown properties.');
|
|
38
|
+
}
|
|
39
|
+
const values = [];
|
|
40
|
+
const intervalTokens = [];
|
|
41
|
+
for (const intervalFragment of intervalFragments) {
|
|
42
|
+
const value = intervalInput[intervalFragment];
|
|
43
|
+
if (value !== undefined) {
|
|
44
|
+
values.push(value);
|
|
45
|
+
const mappedToken = tokenMap[intervalFragment] ?? intervalFragment;
|
|
46
|
+
intervalTokens.push(mappedToken +
|
|
47
|
+
' => ' +
|
|
48
|
+
(0, formatSlonikPlaceholder_1.formatSlonikPlaceholder)(greatestParameterPosition + values.length));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
sql: 'make_interval(' + intervalTokens.join(', ') + ')',
|
|
53
|
+
values,
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
exports.createIntervalSqlFragment = createIntervalSqlFragment;
|
|
57
|
+
//# sourceMappingURL=createIntervalSqlFragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createIntervalSqlFragment.js","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createIntervalSqlFragment.ts"],"names":[],"mappings":";;;AACA,kFAA+E;AAC/E,2CAAmD;AACnD,6BAAwB;AAExB,MAAM,aAAa,GAAG,OAAC;KACpB,MAAM,CAAC;IACN,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,iBAAiB,GAAG;IACxB,OAAO;IACP,QAAQ;IACR,OAAO;IACP,MAAM;IACN,OAAO;IACP,SAAS;IACT,SAAS;CACV,CAAC;AAEF,MAAM,QAAQ,GAAG;IACf,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,MAAM;CAChB,CAAC;AAEK,MAAM,yBAAyB,GAAG,CACvC,KAAuB,EACvB,yBAAiC,EACpB,EAAE;IACf,IAAI,aAAa,CAAC;IAElB,IAAI,CAAC;QACH,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,0BAAiB,CACzB,qDAAqD,CACtD,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,MAAM,cAAc,GAAa,EAAE,CAAC;IAEpC,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAE9C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEnB,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,gBAAgB,CAAC;YAEnE,cAAc,CAAC,IAAI,CACjB,WAAW;gBACT,MAAM;gBACN,IAAA,iDAAuB,EAAC,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC,CACrE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG,EAAE,gBAAgB,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG;QACvD,MAAM;KACP,CAAC;AACJ,CAAC,CAAC;AAtCW,QAAA,yBAAyB,6BAsCpC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type JsonBinarySqlToken, type JsonSqlToken, type SqlFragment } from '../types';
|
|
2
|
+
export declare const createJsonSqlFragment: (token: JsonBinarySqlToken | JsonSqlToken, greatestParameterPosition: number, binary: boolean) => SqlFragment;
|
|
3
|
+
//# sourceMappingURL=createJsonSqlFragment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createJsonSqlFragment.d.ts","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createJsonSqlFragment.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,UAAU,CAAC;AAWlB,eAAO,MAAM,qBAAqB,UACzB,kBAAkB,GAAG,YAAY,6BACb,MAAM,UACzB,OAAO,KACd,WA6CF,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createJsonSqlFragment = void 0;
|
|
4
|
+
const Logger_1 = require("../Logger");
|
|
5
|
+
const formatSlonikPlaceholder_1 = require("../utilities/formatSlonikPlaceholder");
|
|
6
|
+
const isPlainObject_1 = require("../utilities/isPlainObject");
|
|
7
|
+
const safeStringify_1 = require("../utilities/safeStringify");
|
|
8
|
+
const errors_1 = require("@slonik/errors");
|
|
9
|
+
const serialize_error_1 = require("serialize-error");
|
|
10
|
+
const log = Logger_1.Logger.child({
|
|
11
|
+
namespace: 'createJsonSqlFragment',
|
|
12
|
+
});
|
|
13
|
+
const createJsonSqlFragment = (token, greatestParameterPosition, binary) => {
|
|
14
|
+
let value;
|
|
15
|
+
if (token.value === undefined) {
|
|
16
|
+
throw new errors_1.InvalidInputError('JSON payload must not be undefined.');
|
|
17
|
+
}
|
|
18
|
+
else if (token.value === null) {
|
|
19
|
+
value = 'null';
|
|
20
|
+
// @todo Deep check Array.
|
|
21
|
+
}
|
|
22
|
+
else if (!(0, isPlainObject_1.isPlainObject)(token.value) &&
|
|
23
|
+
!Array.isArray(token.value) &&
|
|
24
|
+
!['number', 'string', 'boolean'].includes(typeof token.value)) {
|
|
25
|
+
throw new errors_1.InvalidInputError('JSON payload must be a primitive value or a plain object.');
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
try {
|
|
29
|
+
value = (0, safeStringify_1.safeStringify)(token.value);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
log.error({
|
|
33
|
+
error: (0, serialize_error_1.serializeError)(error),
|
|
34
|
+
}, 'payload cannot be stringified');
|
|
35
|
+
throw new errors_1.InvalidInputError('JSON payload cannot be stringified.');
|
|
36
|
+
}
|
|
37
|
+
if (value === undefined) {
|
|
38
|
+
throw new errors_1.InvalidInputError('JSON payload cannot be stringified. The resulting value is undefined.');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
sql: (0, formatSlonikPlaceholder_1.formatSlonikPlaceholder)(greatestParameterPosition + 1) +
|
|
43
|
+
'::' +
|
|
44
|
+
(binary ? 'jsonb' : 'json'),
|
|
45
|
+
values: [value],
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
exports.createJsonSqlFragment = createJsonSqlFragment;
|
|
49
|
+
//# sourceMappingURL=createJsonSqlFragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createJsonSqlFragment.js","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createJsonSqlFragment.ts"],"names":[],"mappings":";;;AAAA,sCAAmC;AAMnC,kFAA+E;AAC/E,8DAA2D;AAC3D,8DAA2D;AAC3D,2CAAmD;AACnD,qDAAiD;AAEjD,MAAM,GAAG,GAAG,eAAM,CAAC,KAAK,CAAC;IACvB,SAAS,EAAE,uBAAuB;CACnC,CAAC,CAAC;AAEI,MAAM,qBAAqB,GAAG,CACnC,KAAwC,EACxC,yBAAiC,EACjC,MAAe,EACF,EAAE;IACf,IAAI,KAAK,CAAC;IAEV,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,0BAAiB,CAAC,qCAAqC,CAAC,CAAC;IACrE,CAAC;SAAM,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAChC,KAAK,GAAG,MAAM,CAAC;QAEf,0BAA0B;IAC5B,CAAC;SAAM,IACL,CAAC,IAAA,6BAAa,EAAC,KAAK,CAAC,KAAK,CAAC;QAC3B,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QAC3B,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,EAC7D,CAAC;QACD,MAAM,IAAI,0BAAiB,CACzB,2DAA2D,CAC5D,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,KAAK,GAAG,IAAA,6BAAa,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CACP;gBACE,KAAK,EAAE,IAAA,gCAAc,EAAC,KAAK,CAAC;aAC7B,EACD,+BAA+B,CAChC,CAAC;YAEF,MAAM,IAAI,0BAAiB,CAAC,qCAAqC,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,0BAAiB,CACzB,uEAAuE,CACxE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG,EACD,IAAA,iDAAuB,EAAC,yBAAyB,GAAG,CAAC,CAAC;YACtD,IAAI;YACJ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7B,MAAM,EAAE,CAAC,KAAK,CAAC;KAChB,CAAC;AACJ,CAAC,CAAC;AAjDW,QAAA,qBAAqB,yBAiDhC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createListSqlFragment.d.ts","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createListSqlFragment.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,WAAW,EACjB,MAAM,UAAU,CAAC;AAMlB,eAAO,MAAM,qBAAqB,UACzB,YAAY,6BACQ,MAAM,KAChC,WAgCF,CAAC"}
|