@slonik/sql-tag 48.12.3 → 48.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/README.md +0 -1
  2. package/dist/Logger.js +2 -2
  3. package/dist/factories/createPrimitiveValueExpressions.d.ts +1 -1
  4. package/dist/factories/createPrimitiveValueExpressions.js +10 -10
  5. package/dist/factories/createSqlTag.d.ts +2 -2
  6. package/dist/factories/createSqlTag.d.ts.map +1 -1
  7. package/dist/factories/createSqlTag.js +16 -16
  8. package/dist/factories/createSqlTag.js.map +1 -1
  9. package/dist/factories/createSqlTag.test/array.test.js +44 -44
  10. package/dist/factories/createSqlTag.test/array.test.js.map +1 -1
  11. package/dist/factories/createSqlTag.test/date.test.js +9 -9
  12. package/dist/factories/createSqlTag.test/date.test.js.map +1 -1
  13. package/dist/factories/createSqlTag.test/identifier.test.js +11 -14
  14. package/dist/factories/createSqlTag.test/identifier.test.js.map +1 -1
  15. package/dist/factories/createSqlTag.test/interval.test.js +10 -10
  16. package/dist/factories/createSqlTag.test/join.test.js +24 -24
  17. package/dist/factories/createSqlTag.test/join.test.js.map +1 -1
  18. package/dist/factories/createSqlTag.test/json.test.js +27 -27
  19. package/dist/factories/createSqlTag.test/json.test.js.map +1 -1
  20. package/dist/factories/createSqlTag.test/jsonb.test.js +27 -27
  21. package/dist/factories/createSqlTag.test/jsonb.test.js.map +1 -1
  22. package/dist/factories/createSqlTag.test/literalValue.test.js +5 -5
  23. package/dist/factories/createSqlTag.test/literalValue.test.js.map +1 -1
  24. package/dist/factories/createSqlTag.test/sql.test.js +37 -37
  25. package/dist/factories/createSqlTag.test/sql.test.js.map +1 -1
  26. package/dist/factories/createSqlTag.test/timestamp.test.js +9 -9
  27. package/dist/factories/createSqlTag.test/timestamp.test.js.map +1 -1
  28. package/dist/factories/createSqlTag.test/type.test.js +4 -4
  29. package/dist/factories/createSqlTag.test/typeAlias.test.js +8 -8
  30. package/dist/factories/createSqlTag.test/unnest.test.js +25 -25
  31. package/dist/factories/createSqlTag.test/unnest.test.js.map +1 -1
  32. package/dist/factories/createSqlTag.test/uuid.test.js +10 -10
  33. package/dist/factories/createSqlTag.test/uuid.test.js.map +1 -1
  34. package/dist/factories/createSqlTokenSqlFragment.d.ts +1 -1
  35. package/dist/factories/createSqlTokenSqlFragment.d.ts.map +1 -1
  36. package/dist/factories/createSqlTokenSqlFragment.js +28 -67
  37. package/dist/factories/createSqlTokenSqlFragment.js.map +1 -1
  38. package/dist/index.d.ts +5 -5
  39. package/dist/index.js +4 -4
  40. package/dist/sqlFragmentFactories/createArraySqlFragment.d.ts +1 -1
  41. package/dist/sqlFragmentFactories/createArraySqlFragment.d.ts.map +1 -1
  42. package/dist/sqlFragmentFactories/createArraySqlFragment.js +15 -15
  43. package/dist/sqlFragmentFactories/createArraySqlFragment.js.map +1 -1
  44. package/dist/sqlFragmentFactories/createBinarySqlFragment.d.ts +1 -1
  45. package/dist/sqlFragmentFactories/createBinarySqlFragment.js +4 -4
  46. package/dist/sqlFragmentFactories/createDateSqlFragment.d.ts +1 -1
  47. package/dist/sqlFragmentFactories/createDateSqlFragment.d.ts.map +1 -1
  48. package/dist/sqlFragmentFactories/createDateSqlFragment.js +5 -5
  49. package/dist/sqlFragmentFactories/createDateSqlFragment.js.map +1 -1
  50. package/dist/sqlFragmentFactories/createFragmentSqlFragment.d.ts +1 -1
  51. package/dist/sqlFragmentFactories/createFragmentSqlFragment.d.ts.map +1 -1
  52. package/dist/sqlFragmentFactories/createFragmentSqlFragment.js +7 -7
  53. package/dist/sqlFragmentFactories/createFragmentSqlFragment.js.map +1 -1
  54. package/dist/sqlFragmentFactories/createIdentifierSqlFragment.d.ts +1 -1
  55. package/dist/sqlFragmentFactories/createIdentifierSqlFragment.d.ts.map +1 -1
  56. package/dist/sqlFragmentFactories/createIdentifierSqlFragment.js +6 -6
  57. package/dist/sqlFragmentFactories/createIdentifierSqlFragment.js.map +1 -1
  58. package/dist/sqlFragmentFactories/createIntervalSqlFragment.d.ts +1 -1
  59. package/dist/sqlFragmentFactories/createIntervalSqlFragment.d.ts.map +1 -1
  60. package/dist/sqlFragmentFactories/createIntervalSqlFragment.js +10 -20
  61. package/dist/sqlFragmentFactories/createIntervalSqlFragment.js.map +1 -1
  62. package/dist/sqlFragmentFactories/createJsonSqlFragment.d.ts +1 -1
  63. package/dist/sqlFragmentFactories/createJsonSqlFragment.d.ts.map +1 -1
  64. package/dist/sqlFragmentFactories/createJsonSqlFragment.js +16 -18
  65. package/dist/sqlFragmentFactories/createJsonSqlFragment.js.map +1 -1
  66. package/dist/sqlFragmentFactories/createListSqlFragment.d.ts +1 -1
  67. package/dist/sqlFragmentFactories/createListSqlFragment.d.ts.map +1 -1
  68. package/dist/sqlFragmentFactories/createListSqlFragment.js +9 -9
  69. package/dist/sqlFragmentFactories/createListSqlFragment.js.map +1 -1
  70. package/dist/sqlFragmentFactories/createQuerySqlFragment.d.ts +1 -1
  71. package/dist/sqlFragmentFactories/createQuerySqlFragment.d.ts.map +1 -1
  72. package/dist/sqlFragmentFactories/createQuerySqlFragment.js +7 -7
  73. package/dist/sqlFragmentFactories/createQuerySqlFragment.js.map +1 -1
  74. package/dist/sqlFragmentFactories/createTimestampSqlFragment.d.ts +1 -1
  75. package/dist/sqlFragmentFactories/createTimestampSqlFragment.d.ts.map +1 -1
  76. package/dist/sqlFragmentFactories/createTimestampSqlFragment.js +5 -7
  77. package/dist/sqlFragmentFactories/createTimestampSqlFragment.js.map +1 -1
  78. package/dist/sqlFragmentFactories/createUnnestSqlFragment.d.ts +1 -1
  79. package/dist/sqlFragmentFactories/createUnnestSqlFragment.d.ts.map +1 -1
  80. package/dist/sqlFragmentFactories/createUnnestSqlFragment.js +19 -20
  81. package/dist/sqlFragmentFactories/createUnnestSqlFragment.js.map +1 -1
  82. package/dist/sqlFragmentFactories/createUuidSqlFragment.d.ts +1 -1
  83. package/dist/sqlFragmentFactories/createUuidSqlFragment.js +5 -5
  84. package/dist/tokens.d.ts.map +1 -1
  85. package/dist/tokens.js +14 -14
  86. package/dist/tokens.js.map +1 -1
  87. package/dist/types.d.ts +5 -5
  88. package/dist/types.d.ts.map +1 -1
  89. package/dist/utilities/countArrayDimensions.js +1 -1
  90. package/dist/utilities/countArrayDimensions.test.js +6 -6
  91. package/dist/utilities/escapeIdentifier.test.js +5 -5
  92. package/dist/utilities/escapeLiteralValue.js +2 -2
  93. package/dist/utilities/escapeLiteralValue.test.js +7 -7
  94. package/dist/utilities/formatSlonikPlaceholder.js +1 -1
  95. package/dist/utilities/isPlainObject.js +1 -1
  96. package/dist/utilities/isPrimitiveValueExpression.js +4 -4
  97. package/dist/utilities/isSqlToken.d.ts +1 -1
  98. package/dist/utilities/isSqlToken.d.ts.map +1 -1
  99. package/dist/utilities/isSqlToken.js +9 -9
  100. package/dist/utilities/isSqlToken.js.map +1 -1
  101. package/dist/utilities/safeStringify.js +3 -3
  102. package/dist/utilities/stripArrayNotation.js +1 -1
  103. package/dist/utilities/stripArrayNotation.test.js +6 -6
  104. package/package.json +35 -39
  105. package/src/Logger.ts +2 -2
  106. package/src/declarations.d.ts +2 -2
  107. package/src/factories/createPrimitiveValueExpressions.ts +11 -11
  108. package/src/factories/createSqlTag.test/array.test.ts +54 -66
  109. package/src/factories/createSqlTag.test/date.test.ts +9 -11
  110. package/src/factories/createSqlTag.test/identifier.test.ts +11 -14
  111. package/src/factories/createSqlTag.test/interval.test.ts +10 -10
  112. package/src/factories/createSqlTag.test/join.test.ts +25 -31
  113. package/src/factories/createSqlTag.test/json.test.ts +27 -30
  114. package/src/factories/createSqlTag.test/jsonb.test.ts +27 -30
  115. package/src/factories/createSqlTag.test/literalValue.test.ts +5 -7
  116. package/src/factories/createSqlTag.test/sql.test.ts +38 -41
  117. package/src/factories/createSqlTag.test/timestamp.test.ts +9 -14
  118. package/src/factories/createSqlTag.test/type.test.ts +4 -4
  119. package/src/factories/createSqlTag.test/typeAlias.test.ts +9 -9
  120. package/src/factories/createSqlTag.test/unnest.test.ts +25 -34
  121. package/src/factories/createSqlTag.test/uuid.test.ts +10 -12
  122. package/src/factories/createSqlTag.ts +26 -47
  123. package/src/factories/createSqlTokenSqlFragment.ts +30 -74
  124. package/src/index.ts +5 -5
  125. package/src/sqlFragmentFactories/createArraySqlFragment.ts +17 -22
  126. package/src/sqlFragmentFactories/createBinarySqlFragment.ts +5 -5
  127. package/src/sqlFragmentFactories/createDateSqlFragment.ts +6 -8
  128. package/src/sqlFragmentFactories/createFragmentSqlFragment.ts +9 -11
  129. package/src/sqlFragmentFactories/createIdentifierSqlFragment.ts +8 -12
  130. package/src/sqlFragmentFactories/createIntervalSqlFragment.ts +11 -23
  131. package/src/sqlFragmentFactories/createJsonSqlFragment.ts +17 -25
  132. package/src/sqlFragmentFactories/createListSqlFragment.ts +10 -14
  133. package/src/sqlFragmentFactories/createQuerySqlFragment.ts +9 -11
  134. package/src/sqlFragmentFactories/createTimestampSqlFragment.ts +6 -11
  135. package/src/sqlFragmentFactories/createUnnestSqlFragment.ts +20 -29
  136. package/src/sqlFragmentFactories/createUuidSqlFragment.ts +6 -6
  137. package/src/tokens.ts +14 -16
  138. package/src/types.ts +65 -87
  139. package/src/utilities/countArrayDimensions.test.ts +6 -6
  140. package/src/utilities/countArrayDimensions.ts +1 -1
  141. package/src/utilities/escapeIdentifier.test.ts +5 -5
  142. package/src/utilities/escapeLiteralValue.test.ts +7 -7
  143. package/src/utilities/escapeLiteralValue.ts +2 -2
  144. package/src/utilities/formatSlonikPlaceholder.ts +1 -1
  145. package/src/utilities/isPlainObject.ts +1 -1
  146. package/src/utilities/isPrimitiveValueExpression.ts +4 -4
  147. package/src/utilities/isSqlToken.ts +10 -12
  148. package/src/utilities/safeStringify.ts +3 -3
  149. package/src/utilities/stripArrayNotation.test.ts +6 -6
  150. package/src/utilities/stripArrayNotation.ts +1 -1
@@ -1,33 +1,30 @@
1
- import { FragmentToken } from '../../tokens.js';
2
- import { createSqlTag } from '../createSqlTag.js';
3
- import test from 'ava';
1
+ import { FragmentToken } from "../../tokens.js";
2
+ import { createSqlTag } from "../createSqlTag.js";
3
+ import test from "ava";
4
4
 
5
5
  const sql = createSqlTag();
6
6
 
7
- test('creates an object describing a query with inlined identifiers', (t) => {
8
- const query = sql.fragment`SELECT ${'foo'} FROM ${sql.identifier(['bar'])}`;
7
+ test("creates an object describing a query with inlined identifiers", (t) => {
8
+ const query = sql.fragment`SELECT ${"foo"} FROM ${sql.identifier(["bar"])}`;
9
9
 
10
10
  t.deepEqual(query, {
11
11
  sql: 'SELECT $slonik_1 FROM "bar"',
12
12
  type: FragmentToken,
13
- values: ['foo'],
13
+ values: ["foo"],
14
14
  });
15
15
  });
16
16
 
17
- test('creates an object describing a query with inlined identifiers (specifier)', (t) => {
18
- const query = sql.fragment`SELECT ${'foo'} FROM ${sql.identifier([
19
- 'bar',
20
- 'baz',
21
- ])}`;
17
+ test("creates an object describing a query with inlined identifiers (specifier)", (t) => {
18
+ const query = sql.fragment`SELECT ${"foo"} FROM ${sql.identifier(["bar", "baz"])}`;
22
19
 
23
20
  t.deepEqual(query, {
24
21
  sql: 'SELECT $slonik_1 FROM "bar"."baz"',
25
22
  type: FragmentToken,
26
- values: ['foo'],
23
+ values: ["foo"],
27
24
  });
28
25
  });
29
26
 
30
- test('throws if an identifier name array member type is not a string', (t) => {
27
+ test("throws if an identifier name array member type is not a string", (t) => {
31
28
  const error = t.throws(() => {
32
29
  sql.fragment`${sql.identifier([
33
30
  // @ts-expect-error - intentional
@@ -35,5 +32,5 @@ test('throws if an identifier name array member type is not a string', (t) => {
35
32
  ])}`;
36
33
  });
37
34
 
38
- t.is(error?.message, 'Identifier name array member type must be a string.');
35
+ t.is(error?.message, "Identifier name array member type must be a string.");
39
36
  });
@@ -1,20 +1,20 @@
1
- import { FragmentToken } from '../../tokens.js';
2
- import { createSqlTag } from '../createSqlTag.js';
3
- import test from 'ava';
1
+ import { FragmentToken } from "../../tokens.js";
2
+ import { createSqlTag } from "../createSqlTag.js";
3
+ import test from "ava";
4
4
 
5
5
  const sql = createSqlTag();
6
6
 
7
- test('creates an empty make_interval invocation', (t) => {
7
+ test("creates an empty make_interval invocation", (t) => {
8
8
  const query = sql.fragment`SELECT ${sql.interval({})}`;
9
9
 
10
10
  t.deepEqual(query, {
11
- sql: 'SELECT make_interval()',
11
+ sql: "SELECT make_interval()",
12
12
  type: FragmentToken,
13
13
  values: [],
14
14
  });
15
15
  });
16
16
 
17
- test('creates an interval', (t) => {
17
+ test("creates an interval", (t) => {
18
18
  const query = sql.fragment`SELECT ${sql.interval({
19
19
  days: 4,
20
20
  hours: 5,
@@ -26,19 +26,19 @@ test('creates an interval', (t) => {
26
26
  })}`;
27
27
 
28
28
  t.deepEqual(query, {
29
- sql: 'SELECT make_interval(years => $slonik_1, months => $slonik_2, weeks => $slonik_3, days => $slonik_4, hours => $slonik_5, mins => $slonik_6, secs => $slonik_7)',
29
+ sql: "SELECT make_interval(years => $slonik_1, months => $slonik_2, weeks => $slonik_3, days => $slonik_4, hours => $slonik_5, mins => $slonik_6, secs => $slonik_7)",
30
30
  type: FragmentToken,
31
31
  values: [1, 2, 3, 4, 5, 6, 7],
32
32
  });
33
33
  });
34
34
 
35
- test('throws if contains unknown properties', (t) => {
35
+ test("throws if contains unknown properties", (t) => {
36
36
  const error = t.throws(() => {
37
37
  sql.fragment`SELECT ${sql.interval({
38
38
  // @ts-expect-error - intentional
39
- foo: 'bar',
39
+ foo: "bar",
40
40
  })}`;
41
41
  });
42
42
 
43
- t.is(error?.message, 'Interval input must not contain unknown properties.');
43
+ t.is(error?.message, "Interval input must not contain unknown properties.");
44
44
  });
@@ -1,85 +1,82 @@
1
- import { FragmentToken } from '../../tokens.js';
2
- import { createSqlTag } from '../createSqlTag.js';
3
- import test from 'ava';
1
+ import { FragmentToken } from "../../tokens.js";
2
+ import { createSqlTag } from "../createSqlTag.js";
3
+ import test from "ava";
4
4
 
5
5
  const sql = createSqlTag();
6
6
 
7
- test('creates a list of values', (t) => {
7
+ test("creates a list of values", (t) => {
8
8
  const query = sql.fragment`SELECT (${sql.join([1, 2, 3], sql.fragment`, `)})`;
9
9
 
10
10
  t.deepEqual(query, {
11
- sql: 'SELECT ($slonik_1, $slonik_2, $slonik_3)',
11
+ sql: "SELECT ($slonik_1, $slonik_2, $slonik_3)",
12
12
  type: FragmentToken,
13
13
  values: [1, 2, 3],
14
14
  });
15
15
  });
16
16
 
17
- test('creates a list of values using glue', (t) => {
17
+ test("creates a list of values using glue", (t) => {
18
18
  const query = sql.fragment`SELECT ${sql.join(
19
19
  [sql.fragment`TRUE`, sql.fragment`TRUE`],
20
20
  sql.fragment` AND `,
21
21
  )}`;
22
22
 
23
23
  t.deepEqual(query, {
24
- sql: 'SELECT TRUE AND TRUE',
24
+ sql: "SELECT TRUE AND TRUE",
25
25
  type: FragmentToken,
26
26
  values: [],
27
27
  });
28
28
  });
29
29
 
30
- test('interpolates SQL tokens', (t) => {
31
- const query = sql.fragment`SELECT (${sql.join(
32
- [1, sql.fragment`foo`, 3],
33
- sql.fragment`, `,
34
- )})`;
30
+ test("interpolates SQL tokens", (t) => {
31
+ const query = sql.fragment`SELECT (${sql.join([1, sql.fragment`foo`, 3], sql.fragment`, `)})`;
35
32
 
36
33
  t.deepEqual(query, {
37
- sql: 'SELECT ($slonik_1, foo, $slonik_2)',
34
+ sql: "SELECT ($slonik_1, foo, $slonik_2)",
38
35
  type: FragmentToken,
39
36
  values: [1, 3],
40
37
  });
41
38
  });
42
39
 
43
- test('interpolates SQL tokens with bound values', (t) => {
40
+ test("interpolates SQL tokens with bound values", (t) => {
44
41
  const query = sql.fragment`SELECT ${sql.join(
45
42
  [1, sql.fragment`to_timestamp(${2}), ${3}`, 4],
46
43
  sql.fragment`, `,
47
44
  )}`;
48
45
 
49
46
  t.deepEqual(query, {
50
- sql: 'SELECT $slonik_1, to_timestamp($slonik_2), $slonik_3, $slonik_4',
47
+ sql: "SELECT $slonik_1, to_timestamp($slonik_2), $slonik_3, $slonik_4",
51
48
  type: FragmentToken,
52
49
  values: [1, 2, 3, 4],
53
50
  });
54
51
  });
55
52
 
56
- test('offsets positional parameter indexes', (t) => {
53
+ test("offsets positional parameter indexes", (t) => {
57
54
  const query = sql.fragment`SELECT ${1}, ${sql.join(
58
55
  [1, sql.fragment`to_timestamp(${2}), ${3}`, 4],
59
56
  sql.fragment`, `,
60
57
  )}, ${3}`;
61
58
 
62
59
  t.deepEqual(query, {
63
- sql: 'SELECT $slonik_1, $slonik_2, to_timestamp($slonik_3), $slonik_4, $slonik_5, $slonik_6',
60
+ sql: "SELECT $slonik_1, $slonik_2, to_timestamp($slonik_3), $slonik_4, $slonik_5, $slonik_6",
64
61
  type: FragmentToken,
65
62
  values: [1, 1, 2, 3, 4, 3],
66
63
  });
67
64
  });
68
65
 
69
- test('supports bigint', (t) => {
66
+ test("supports bigint", (t) => {
70
67
  const query = sql.fragment`SELECT ${1n}, ${sql.join(
71
68
  [sql.fragment`to_timestamp(${2n})`, 3n],
72
69
  sql.fragment`, `,
73
70
  )}, ${4n}`;
74
71
 
75
72
  t.deepEqual(query, {
76
- sql: 'SELECT $slonik_1, to_timestamp($slonik_2), $slonik_3, $slonik_4',
73
+ sql: "SELECT $slonik_1, to_timestamp($slonik_2), $slonik_3, $slonik_4",
77
74
  type: FragmentToken,
78
75
  values: [1n, 2n, 3n, 4n],
79
76
  });
80
77
  });
81
78
 
82
- test('nests expressions', (t) => {
79
+ test("nests expressions", (t) => {
83
80
  const query = sql.fragment`SELECT ${sql.join(
84
81
  [
85
82
  sql.fragment`(${sql.join([1, 2], sql.fragment`, `)})`,
@@ -89,27 +86,24 @@ test('nests expressions', (t) => {
89
86
  )}`;
90
87
 
91
88
  t.deepEqual(query, {
92
- sql: 'SELECT ($slonik_1, $slonik_2), ($slonik_3, $slonik_4)',
89
+ sql: "SELECT ($slonik_1, $slonik_2), ($slonik_3, $slonik_4)",
93
90
  type: FragmentToken,
94
91
  values: [1, 2, 3, 4],
95
92
  });
96
93
  });
97
94
 
98
- test('binary join expressions', (t) => {
99
- const data = Buffer.from('1f', 'hex');
100
- const query = sql.fragment`SELECT (${sql.join(
101
- ['a', sql.binary(data)],
102
- sql.fragment`, `,
103
- )})`;
95
+ test("binary join expressions", (t) => {
96
+ const data = Buffer.from("1f", "hex");
97
+ const query = sql.fragment`SELECT (${sql.join(["a", sql.binary(data)], sql.fragment`, `)})`;
104
98
 
105
99
  t.deepEqual(query, {
106
- sql: 'SELECT ($slonik_1, $slonik_2)',
100
+ sql: "SELECT ($slonik_1, $slonik_2)",
107
101
  type: FragmentToken,
108
- values: ['a', data],
102
+ values: ["a", data],
109
103
  });
110
104
  });
111
105
 
112
- test('throws is member is not a SQL token or a primitive value expression', (t) => {
106
+ test("throws is member is not a SQL token or a primitive value expression", (t) => {
113
107
  const error = t.throws(() => {
114
108
  sql.fragment`${sql.join(
115
109
  [
@@ -122,6 +116,6 @@ test('throws is member is not a SQL token or a primitive value expression', (t)
122
116
 
123
117
  t.is(
124
118
  error?.message,
125
- 'Invalid list member type. Must be a SQL token or a primitive value expression.',
119
+ "Invalid list member type. Must be a SQL token or a primitive value expression.",
126
120
  );
127
121
  });
@@ -1,30 +1,30 @@
1
- import { FragmentToken } from '../../tokens.js';
2
- import { createSqlTag } from '../createSqlTag.js';
3
- import test from 'ava';
1
+ import { FragmentToken } from "../../tokens.js";
2
+ import { createSqlTag } from "../createSqlTag.js";
3
+ import test from "ava";
4
4
 
5
5
  const sql = createSqlTag();
6
6
 
7
- test('creates a value list (object)', (t) => {
7
+ test("creates a value list (object)", (t) => {
8
8
  const query = sql.fragment`SELECT ${sql.json({
9
- foo: 'bar',
9
+ foo: "bar",
10
10
  })}`;
11
11
 
12
12
  t.deepEqual(query, {
13
- sql: 'SELECT $slonik_1::json',
13
+ sql: "SELECT $slonik_1::json",
14
14
  type: FragmentToken,
15
15
  values: ['{"foo":"bar"}'],
16
16
  });
17
17
  });
18
18
 
19
- test('creates a value list (array)', (t) => {
19
+ test("creates a value list (array)", (t) => {
20
20
  const query = sql.fragment`SELECT ${sql.json([
21
21
  {
22
- foo: 'bar',
22
+ foo: "bar",
23
23
  },
24
24
  ])}`;
25
25
 
26
26
  t.deepEqual(query, {
27
- sql: 'SELECT $slonik_1::json',
27
+ sql: "SELECT $slonik_1::json",
28
28
  type: FragmentToken,
29
29
  values: ['[{"foo":"bar"}]'],
30
30
  });
@@ -34,72 +34,69 @@ test("stringifies NULL to 'null'::json", (t) => {
34
34
  const query = sql.fragment`SELECT ${sql.json(null)}`;
35
35
 
36
36
  t.deepEqual(query, {
37
- sql: 'SELECT $slonik_1::json',
37
+ sql: "SELECT $slonik_1::json",
38
38
  type: FragmentToken,
39
- values: ['null'],
39
+ values: ["null"],
40
40
  });
41
41
  });
42
42
 
43
- test('JSON encodes string values', (t) => {
44
- const query = sql.fragment`SELECT ${sql.json('example string')}`;
43
+ test("JSON encodes string values", (t) => {
44
+ const query = sql.fragment`SELECT ${sql.json("example string")}`;
45
45
 
46
46
  t.deepEqual(query, {
47
- sql: 'SELECT $slonik_1::json',
47
+ sql: "SELECT $slonik_1::json",
48
48
  type: FragmentToken,
49
49
  values: ['"example string"'],
50
50
  });
51
51
  });
52
52
 
53
- test('JSON encodes numeric values', (t) => {
53
+ test("JSON encodes numeric values", (t) => {
54
54
  const query = sql.fragment`SELECT ${sql.json(1_234)}`;
55
55
 
56
56
  t.deepEqual(query, {
57
- sql: 'SELECT $slonik_1::json',
57
+ sql: "SELECT $slonik_1::json",
58
58
  type: FragmentToken,
59
- values: ['1234'],
59
+ values: ["1234"],
60
60
  });
61
61
  });
62
62
 
63
- test('JSON encodes boolean values', (t) => {
63
+ test("JSON encodes boolean values", (t) => {
64
64
  const query = sql.fragment`SELECT ${sql.json(true)}`;
65
65
 
66
66
  t.deepEqual(query, {
67
- sql: 'SELECT $slonik_1::json',
67
+ sql: "SELECT $slonik_1::json",
68
68
  type: FragmentToken,
69
- values: ['true'],
69
+ values: ["true"],
70
70
  });
71
71
  });
72
72
 
73
- test('throws if payload is undefined', (t) => {
73
+ test("throws if payload is undefined", (t) => {
74
74
  const error = t.throws(() => {
75
75
  sql.fragment`SELECT ${sql.json(undefined)}`;
76
76
  });
77
77
 
78
- t.is(error?.message, 'JSON payload must not be undefined.');
78
+ t.is(error?.message, "JSON payload must not be undefined.");
79
79
  });
80
80
 
81
- test('throws if payload cannot be stringified (non-primitive object)', (t) => {
81
+ test("throws if payload cannot be stringified (non-primitive object)", (t) => {
82
82
  const error = t.throws(() => {
83
83
  // @ts-expect-error - intentional
84
84
  sql.fragment`SELECT ${sql.json(() => {})}`;
85
85
  });
86
86
 
87
- t.is(
88
- error?.message,
89
- 'JSON payload must be a primitive value or a plain object.',
90
- );
87
+ t.is(error?.message, "JSON payload must be a primitive value or a plain object.");
91
88
  });
92
89
 
93
- test('Object types with optional properties are allowed', (t) => {
90
+ test("Object types with optional properties are allowed", (t) => {
94
91
  type TypeWithOptionalProperty = { foo: string; opt?: string };
95
92
  const testValue: TypeWithOptionalProperty = {
96
- foo: 'bar',
93
+ foo: "bar",
97
94
  };
98
95
 
99
96
  const query = sql.fragment`SELECT ${sql.json(testValue)}`;
100
97
 
101
98
  t.deepEqual(query, {
102
- sql: 'SELECT $slonik_1::json',
99
+ sql: "SELECT $slonik_1::json",
103
100
  type: FragmentToken,
104
101
  values: ['{"foo":"bar"}'],
105
102
  });
@@ -1,30 +1,30 @@
1
- import { FragmentToken } from '../../tokens.js';
2
- import { createSqlTag } from '../createSqlTag.js';
3
- import test from 'ava';
1
+ import { FragmentToken } from "../../tokens.js";
2
+ import { createSqlTag } from "../createSqlTag.js";
3
+ import test from "ava";
4
4
 
5
5
  const sql = createSqlTag();
6
6
 
7
- test('creates a value list (object)', (t) => {
7
+ test("creates a value list (object)", (t) => {
8
8
  const query = sql.fragment`SELECT ${sql.jsonb({
9
- foo: 'bar',
9
+ foo: "bar",
10
10
  })}`;
11
11
 
12
12
  t.deepEqual(query, {
13
- sql: 'SELECT $slonik_1::jsonb',
13
+ sql: "SELECT $slonik_1::jsonb",
14
14
  type: FragmentToken,
15
15
  values: ['{"foo":"bar"}'],
16
16
  });
17
17
  });
18
18
 
19
- test('creates a value list (array)', (t) => {
19
+ test("creates a value list (array)", (t) => {
20
20
  const query = sql.fragment`SELECT ${sql.jsonb([
21
21
  {
22
- foo: 'bar',
22
+ foo: "bar",
23
23
  },
24
24
  ])}`;
25
25
 
26
26
  t.deepEqual(query, {
27
- sql: 'SELECT $slonik_1::jsonb',
27
+ sql: "SELECT $slonik_1::jsonb",
28
28
  type: FragmentToken,
29
29
  values: ['[{"foo":"bar"}]'],
30
30
  });
@@ -34,72 +34,69 @@ test("stringifies NULL to 'null'::jsonb", (t) => {
34
34
  const query = sql.fragment`SELECT ${sql.jsonb(null)}`;
35
35
 
36
36
  t.deepEqual(query, {
37
- sql: 'SELECT $slonik_1::jsonb',
37
+ sql: "SELECT $slonik_1::jsonb",
38
38
  type: FragmentToken,
39
- values: ['null'],
39
+ values: ["null"],
40
40
  });
41
41
  });
42
42
 
43
- test('JSON encodes string values', (t) => {
44
- const query = sql.fragment`SELECT ${sql.jsonb('example string')}`;
43
+ test("JSON encodes string values", (t) => {
44
+ const query = sql.fragment`SELECT ${sql.jsonb("example string")}`;
45
45
 
46
46
  t.deepEqual(query, {
47
- sql: 'SELECT $slonik_1::jsonb',
47
+ sql: "SELECT $slonik_1::jsonb",
48
48
  type: FragmentToken,
49
49
  values: ['"example string"'],
50
50
  });
51
51
  });
52
52
 
53
- test('JSON encodes numeric values', (t) => {
53
+ test("JSON encodes numeric values", (t) => {
54
54
  const query = sql.fragment`SELECT ${sql.jsonb(1_234)}`;
55
55
 
56
56
  t.deepEqual(query, {
57
- sql: 'SELECT $slonik_1::jsonb',
57
+ sql: "SELECT $slonik_1::jsonb",
58
58
  type: FragmentToken,
59
- values: ['1234'],
59
+ values: ["1234"],
60
60
  });
61
61
  });
62
62
 
63
- test('JSON encodes boolean values', (t) => {
63
+ test("JSON encodes boolean values", (t) => {
64
64
  const query = sql.fragment`SELECT ${sql.jsonb(true)}`;
65
65
 
66
66
  t.deepEqual(query, {
67
- sql: 'SELECT $slonik_1::jsonb',
67
+ sql: "SELECT $slonik_1::jsonb",
68
68
  type: FragmentToken,
69
- values: ['true'],
69
+ values: ["true"],
70
70
  });
71
71
  });
72
72
 
73
- test('throws if payload is undefined', (t) => {
73
+ test("throws if payload is undefined", (t) => {
74
74
  const error = t.throws(() => {
75
75
  sql.fragment`SELECT ${sql.jsonb(undefined)}`;
76
76
  });
77
77
 
78
- t.is(error?.message, 'JSON payload must not be undefined.');
78
+ t.is(error?.message, "JSON payload must not be undefined.");
79
79
  });
80
80
 
81
- test('throws if payload cannot be stringified (non-primitive object)', (t) => {
81
+ test("throws if payload cannot be stringified (non-primitive object)", (t) => {
82
82
  const error = t.throws(() => {
83
83
  // @ts-expect-error - intentional
84
84
  sql.fragment`SELECT ${sql.jsonb(() => {})}`;
85
85
  });
86
86
 
87
- t.is(
88
- error?.message,
89
- 'JSON payload must be a primitive value or a plain object.',
90
- );
87
+ t.is(error?.message, "JSON payload must be a primitive value or a plain object.");
91
88
  });
92
89
 
93
- test('Object types with optional properties are allowed', (t) => {
90
+ test("Object types with optional properties are allowed", (t) => {
94
91
  type TypeWithOptionalProperty = { foo: string; opt?: string };
95
92
  const testValue: TypeWithOptionalProperty = {
96
- foo: 'bar',
93
+ foo: "bar",
97
94
  };
98
95
 
99
96
  const query = sql.fragment`SELECT ${sql.jsonb(testValue)}`;
100
97
 
101
98
  t.deepEqual(query, {
102
- sql: 'SELECT $slonik_1::jsonb',
99
+ sql: "SELECT $slonik_1::jsonb",
103
100
  type: FragmentToken,
104
101
  values: ['{"foo":"bar"}'],
105
102
  });
@@ -1,13 +1,11 @@
1
- import { FragmentToken } from '../../tokens.js';
2
- import { createSqlTag } from '../createSqlTag.js';
3
- import test from 'ava';
1
+ import { FragmentToken } from "../../tokens.js";
2
+ import { createSqlTag } from "../createSqlTag.js";
3
+ import test from "ava";
4
4
 
5
5
  const sql = createSqlTag();
6
6
 
7
- test('creates an object describing a query with an inlined literal value', (t) => {
8
- const query = sql.fragment`CREATE USER foo WITH PASSWORD ${sql.literalValue(
9
- 'bar',
10
- )}`;
7
+ test("creates an object describing a query with an inlined literal value", (t) => {
8
+ const query = sql.fragment`CREATE USER foo WITH PASSWORD ${sql.literalValue("bar")}`;
11
9
 
12
10
  t.deepEqual(query, {
13
11
  sql: "CREATE USER foo WITH PASSWORD 'bar'",