@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.
Files changed (233) hide show
  1. package/README.md +2 -0
  2. package/dist/Logger.d.ts +2 -0
  3. package/dist/Logger.d.ts.map +1 -0
  4. package/dist/Logger.js +8 -0
  5. package/dist/Logger.js.map +1 -0
  6. package/dist/factories/createPrimitiveValueExpressions.d.ts +3 -0
  7. package/dist/factories/createPrimitiveValueExpressions.d.ts.map +1 -0
  8. package/dist/factories/createPrimitiveValueExpressions.js +33 -0
  9. package/dist/factories/createPrimitiveValueExpressions.js.map +1 -0
  10. package/dist/factories/createSqlTag.d.ts +38 -0
  11. package/dist/factories/createSqlTag.d.ts.map +1 -0
  12. package/dist/factories/createSqlTag.js +170 -0
  13. package/dist/factories/createSqlTag.js.map +1 -0
  14. package/dist/factories/createSqlTag.test/array.test.d.ts +2 -0
  15. package/dist/factories/createSqlTag.test/array.test.d.ts.map +1 -0
  16. package/dist/factories/createSqlTag.test/array.test.js +76 -0
  17. package/dist/factories/createSqlTag.test/array.test.js.map +1 -0
  18. package/dist/factories/createSqlTag.test/date.test.d.ts +2 -0
  19. package/dist/factories/createSqlTag.test/date.test.d.ts.map +1 -0
  20. package/dist/factories/createSqlTag.test/date.test.js +25 -0
  21. package/dist/factories/createSqlTag.test/date.test.js.map +1 -0
  22. package/dist/factories/createSqlTag.test/identifier.test.d.ts +2 -0
  23. package/dist/factories/createSqlTag.test/identifier.test.d.ts.map +1 -0
  24. package/dist/factories/createSqlTag.test/identifier.test.js +38 -0
  25. package/dist/factories/createSqlTag.test/identifier.test.js.map +1 -0
  26. package/dist/factories/createSqlTag.test/interval.test.d.ts +2 -0
  27. package/dist/factories/createSqlTag.test/interval.test.d.ts.map +1 -0
  28. package/dist/factories/createSqlTag.test/interval.test.js +43 -0
  29. package/dist/factories/createSqlTag.test/interval.test.js.map +1 -0
  30. package/dist/factories/createSqlTag.test/join.test.d.ts +2 -0
  31. package/dist/factories/createSqlTag.test/join.test.d.ts.map +1 -0
  32. package/dist/factories/createSqlTag.test/join.test.js +87 -0
  33. package/dist/factories/createSqlTag.test/join.test.js.map +1 -0
  34. package/dist/factories/createSqlTag.test/json.test.d.ts +2 -0
  35. package/dist/factories/createSqlTag.test/json.test.d.ts.map +1 -0
  36. package/dist/factories/createSqlTag.test/json.test.js +88 -0
  37. package/dist/factories/createSqlTag.test/json.test.js.map +1 -0
  38. package/dist/factories/createSqlTag.test/jsonb.test.d.ts +2 -0
  39. package/dist/factories/createSqlTag.test/jsonb.test.d.ts.map +1 -0
  40. package/dist/factories/createSqlTag.test/jsonb.test.js +88 -0
  41. package/dist/factories/createSqlTag.test/jsonb.test.js.map +1 -0
  42. package/dist/factories/createSqlTag.test/literalValue.test.d.ts +2 -0
  43. package/dist/factories/createSqlTag.test/literalValue.test.d.ts.map +1 -0
  44. package/dist/factories/createSqlTag.test/literalValue.test.js +18 -0
  45. package/dist/factories/createSqlTag.test/literalValue.test.js.map +1 -0
  46. package/dist/factories/createSqlTag.test/sql.test.d.ts +2 -0
  47. package/dist/factories/createSqlTag.test/sql.test.d.ts.map +1 -0
  48. package/dist/factories/createSqlTag.test/sql.test.js +138 -0
  49. package/dist/factories/createSqlTag.test/sql.test.js.map +1 -0
  50. package/dist/factories/createSqlTag.test/timestamp.test.d.ts +2 -0
  51. package/dist/factories/createSqlTag.test/timestamp.test.d.ts.map +1 -0
  52. package/dist/factories/createSqlTag.test/timestamp.test.js +25 -0
  53. package/dist/factories/createSqlTag.test/timestamp.test.js.map +1 -0
  54. package/dist/factories/createSqlTag.test/type.test.d.ts +2 -0
  55. package/dist/factories/createSqlTag.test/type.test.d.ts.map +1 -0
  56. package/dist/factories/createSqlTag.test/type.test.js +19 -0
  57. package/dist/factories/createSqlTag.test/type.test.js.map +1 -0
  58. package/dist/factories/createSqlTag.test/typeAlias.test.d.ts +2 -0
  59. package/dist/factories/createSqlTag.test/typeAlias.test.d.ts.map +1 -0
  60. package/dist/factories/createSqlTag.test/typeAlias.test.js +47 -0
  61. package/dist/factories/createSqlTag.test/typeAlias.test.js.map +1 -0
  62. package/dist/factories/createSqlTag.test/unnest.test.d.ts +2 -0
  63. package/dist/factories/createSqlTag.test/unnest.test.d.ts.map +1 -0
  64. package/dist/factories/createSqlTag.test/unnest.test.js +127 -0
  65. package/dist/factories/createSqlTag.test/unnest.test.js.map +1 -0
  66. package/dist/factories/createSqlTokenSqlFragment.d.ts +3 -0
  67. package/dist/factories/createSqlTokenSqlFragment.d.ts.map +1 -0
  68. package/dist/factories/createSqlTokenSqlFragment.js +57 -0
  69. package/dist/factories/createSqlTokenSqlFragment.js.map +1 -0
  70. package/dist/index.d.ts +3 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +6 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/regexRules/slonikPlaceholderRegexRule.d.ts +2 -0
  75. package/dist/regexRules/slonikPlaceholderRegexRule.d.ts.map +1 -0
  76. package/dist/regexRules/slonikPlaceholderRegexRule.js +5 -0
  77. package/dist/regexRules/slonikPlaceholderRegexRule.js.map +1 -0
  78. package/dist/sqlFragmentFactories/createArraySqlFragment.d.ts +3 -0
  79. package/dist/sqlFragmentFactories/createArraySqlFragment.d.ts.map +1 -0
  80. package/dist/sqlFragmentFactories/createArraySqlFragment.js +48 -0
  81. package/dist/sqlFragmentFactories/createArraySqlFragment.js.map +1 -0
  82. package/dist/sqlFragmentFactories/createBinarySqlFragment.d.ts +3 -0
  83. package/dist/sqlFragmentFactories/createBinarySqlFragment.d.ts.map +1 -0
  84. package/dist/sqlFragmentFactories/createBinarySqlFragment.js +16 -0
  85. package/dist/sqlFragmentFactories/createBinarySqlFragment.js.map +1 -0
  86. package/dist/sqlFragmentFactories/createDateSqlFragment.d.ts +3 -0
  87. package/dist/sqlFragmentFactories/createDateSqlFragment.d.ts.map +1 -0
  88. package/dist/sqlFragmentFactories/createDateSqlFragment.js +16 -0
  89. package/dist/sqlFragmentFactories/createDateSqlFragment.js.map +1 -0
  90. package/dist/sqlFragmentFactories/createFragmentSqlFragment.d.ts +3 -0
  91. package/dist/sqlFragmentFactories/createFragmentSqlFragment.d.ts.map +1 -0
  92. package/dist/sqlFragmentFactories/createFragmentSqlFragment.js +34 -0
  93. package/dist/sqlFragmentFactories/createFragmentSqlFragment.js.map +1 -0
  94. package/dist/sqlFragmentFactories/createIdentifierSqlFragment.d.ts +3 -0
  95. package/dist/sqlFragmentFactories/createIdentifierSqlFragment.d.ts.map +1 -0
  96. package/dist/sqlFragmentFactories/createIdentifierSqlFragment.js +21 -0
  97. package/dist/sqlFragmentFactories/createIdentifierSqlFragment.js.map +1 -0
  98. package/dist/sqlFragmentFactories/createIntervalSqlFragment.d.ts +3 -0
  99. package/dist/sqlFragmentFactories/createIntervalSqlFragment.d.ts.map +1 -0
  100. package/dist/sqlFragmentFactories/createIntervalSqlFragment.js +57 -0
  101. package/dist/sqlFragmentFactories/createIntervalSqlFragment.js.map +1 -0
  102. package/dist/sqlFragmentFactories/createJsonSqlFragment.d.ts +3 -0
  103. package/dist/sqlFragmentFactories/createJsonSqlFragment.d.ts.map +1 -0
  104. package/dist/sqlFragmentFactories/createJsonSqlFragment.js +49 -0
  105. package/dist/sqlFragmentFactories/createJsonSqlFragment.js.map +1 -0
  106. package/dist/sqlFragmentFactories/createListSqlFragment.d.ts +3 -0
  107. package/dist/sqlFragmentFactories/createListSqlFragment.d.ts.map +1 -0
  108. package/dist/sqlFragmentFactories/createListSqlFragment.js +38 -0
  109. package/dist/sqlFragmentFactories/createListSqlFragment.js.map +1 -0
  110. package/dist/sqlFragmentFactories/createQuerySqlFragment.d.ts +3 -0
  111. package/dist/sqlFragmentFactories/createQuerySqlFragment.d.ts.map +1 -0
  112. package/dist/sqlFragmentFactories/createQuerySqlFragment.js +34 -0
  113. package/dist/sqlFragmentFactories/createQuerySqlFragment.js.map +1 -0
  114. package/dist/sqlFragmentFactories/createTimestampSqlFragment.d.ts +3 -0
  115. package/dist/sqlFragmentFactories/createTimestampSqlFragment.d.ts.map +1 -0
  116. package/dist/sqlFragmentFactories/createTimestampSqlFragment.js +18 -0
  117. package/dist/sqlFragmentFactories/createTimestampSqlFragment.js.map +1 -0
  118. package/dist/sqlFragmentFactories/createUnnestSqlFragment.d.ts +3 -0
  119. package/dist/sqlFragmentFactories/createUnnestSqlFragment.d.ts.map +1 -0
  120. package/dist/sqlFragmentFactories/createUnnestSqlFragment.js +81 -0
  121. package/dist/sqlFragmentFactories/createUnnestSqlFragment.js.map +1 -0
  122. package/dist/tokens.d.ts +14 -0
  123. package/dist/tokens.d.ts.map +1 -0
  124. package/dist/tokens.js +17 -0
  125. package/dist/tokens.js.map +1 -0
  126. package/dist/types.d.ts +99 -0
  127. package/dist/types.d.ts.map +1 -0
  128. package/dist/types.js +3 -0
  129. package/dist/types.js.map +1 -0
  130. package/dist/utilities/countArrayDimensions.d.ts +2 -0
  131. package/dist/utilities/countArrayDimensions.d.ts.map +1 -0
  132. package/dist/utilities/countArrayDimensions.js +14 -0
  133. package/dist/utilities/countArrayDimensions.js.map +1 -0
  134. package/dist/utilities/countArrayDimensions.test.d.ts +2 -0
  135. package/dist/utilities/countArrayDimensions.test.d.ts.map +1 -0
  136. package/dist/utilities/countArrayDimensions.test.js +13 -0
  137. package/dist/utilities/countArrayDimensions.test.js.map +1 -0
  138. package/dist/utilities/escapeIdentifier.d.ts +5 -0
  139. package/dist/utilities/escapeIdentifier.d.ts.map +1 -0
  140. package/dist/utilities/escapeIdentifier.js +12 -0
  141. package/dist/utilities/escapeIdentifier.js.map +1 -0
  142. package/dist/utilities/escapeIdentifier.test.d.ts +2 -0
  143. package/dist/utilities/escapeIdentifier.test.d.ts.map +1 -0
  144. package/dist/utilities/escapeIdentifier.test.js +13 -0
  145. package/dist/utilities/escapeIdentifier.test.js.map +1 -0
  146. package/dist/utilities/escapeLiteralValue.d.ts +5 -0
  147. package/dist/utilities/escapeLiteralValue.d.ts.map +1 -0
  148. package/dist/utilities/escapeLiteralValue.js +29 -0
  149. package/dist/utilities/escapeLiteralValue.js.map +1 -0
  150. package/dist/utilities/escapeLiteralValue.test.d.ts +2 -0
  151. package/dist/utilities/escapeLiteralValue.test.d.ts.map +1 -0
  152. package/dist/utilities/escapeLiteralValue.test.js +14 -0
  153. package/dist/utilities/escapeLiteralValue.test.js.map +1 -0
  154. package/dist/utilities/formatSlonikPlaceholder.d.ts +14 -0
  155. package/dist/utilities/formatSlonikPlaceholder.d.ts.map +1 -0
  156. package/dist/utilities/formatSlonikPlaceholder.js +20 -0
  157. package/dist/utilities/formatSlonikPlaceholder.js.map +1 -0
  158. package/dist/utilities/hasOwnProperty.d.ts +6 -0
  159. package/dist/utilities/hasOwnProperty.d.ts.map +1 -0
  160. package/dist/utilities/hasOwnProperty.js +12 -0
  161. package/dist/utilities/hasOwnProperty.js.map +1 -0
  162. package/dist/utilities/isPlainObject.d.ts +2 -0
  163. package/dist/utilities/isPlainObject.d.ts.map +1 -0
  164. package/dist/utilities/isPlainObject.js +16 -0
  165. package/dist/utilities/isPlainObject.js.map +1 -0
  166. package/dist/utilities/isPrimitiveValueExpression.d.ts +2 -0
  167. package/dist/utilities/isPrimitiveValueExpression.d.ts.map +1 -0
  168. package/dist/utilities/isPrimitiveValueExpression.js +12 -0
  169. package/dist/utilities/isPrimitiveValueExpression.js.map +1 -0
  170. package/dist/utilities/isSqlToken.d.ts +3 -0
  171. package/dist/utilities/isSqlToken.d.ts.map +1 -0
  172. package/dist/utilities/isSqlToken.js +35 -0
  173. package/dist/utilities/isSqlToken.js.map +1 -0
  174. package/dist/utilities/safeStringify.d.ts +2 -0
  175. package/dist/utilities/safeStringify.d.ts.map +1 -0
  176. package/dist/utilities/safeStringify.js +18 -0
  177. package/dist/utilities/safeStringify.js.map +1 -0
  178. package/dist/utilities/stripArrayNotation.d.ts +2 -0
  179. package/dist/utilities/stripArrayNotation.d.ts.map +1 -0
  180. package/dist/utilities/stripArrayNotation.js +12 -0
  181. package/dist/utilities/stripArrayNotation.js.map +1 -0
  182. package/dist/utilities/stripArrayNotation.test.d.ts +2 -0
  183. package/dist/utilities/stripArrayNotation.test.d.ts.map +1 -0
  184. package/dist/utilities/stripArrayNotation.test.js +13 -0
  185. package/dist/utilities/stripArrayNotation.test.js.map +1 -0
  186. package/package.json +88 -0
  187. package/src/Logger.ts +5 -0
  188. package/src/declarations.d.ts +8 -0
  189. package/src/factories/createPrimitiveValueExpressions.ts +43 -0
  190. package/src/factories/createSqlTag.test/array.test.ts +107 -0
  191. package/src/factories/createSqlTag.test/date.test.ts +26 -0
  192. package/src/factories/createSqlTag.test/identifier.test.ts +39 -0
  193. package/src/factories/createSqlTag.test/interval.test.ts +44 -0
  194. package/src/factories/createSqlTag.test/join.test.ts +127 -0
  195. package/src/factories/createSqlTag.test/json.test.ts +106 -0
  196. package/src/factories/createSqlTag.test/jsonb.test.ts +106 -0
  197. package/src/factories/createSqlTag.test/literalValue.test.ts +17 -0
  198. package/src/factories/createSqlTag.test/sql.test.ts +165 -0
  199. package/src/factories/createSqlTag.test/timestamp.test.ts +29 -0
  200. package/src/factories/createSqlTag.test/type.test.ts +17 -0
  201. package/src/factories/createSqlTag.test/typeAlias.test.ts +53 -0
  202. package/src/factories/createSqlTag.test/unnest.test.ts +173 -0
  203. package/src/factories/createSqlTag.ts +256 -0
  204. package/src/factories/createSqlTokenSqlFragment.ts +60 -0
  205. package/src/index.ts +2 -0
  206. package/src/regexRules/slonikPlaceholderRegexRule.ts +1 -0
  207. package/src/sqlFragmentFactories/createArraySqlFragment.ts +67 -0
  208. package/src/sqlFragmentFactories/createBinarySqlFragment.ts +17 -0
  209. package/src/sqlFragmentFactories/createDateSqlFragment.ts +19 -0
  210. package/src/sqlFragmentFactories/createFragmentSqlFragment.ts +48 -0
  211. package/src/sqlFragmentFactories/createIdentifierSqlFragment.ts +24 -0
  212. package/src/sqlFragmentFactories/createIntervalSqlFragment.ts +71 -0
  213. package/src/sqlFragmentFactories/createJsonSqlFragment.ts +66 -0
  214. package/src/sqlFragmentFactories/createListSqlFragment.ts +48 -0
  215. package/src/sqlFragmentFactories/createQuerySqlFragment.ts +48 -0
  216. package/src/sqlFragmentFactories/createTimestampSqlFragment.ts +22 -0
  217. package/src/sqlFragmentFactories/createUnnestSqlFragment.ts +118 -0
  218. package/src/tokens.ts +14 -0
  219. package/src/types.ts +189 -0
  220. package/src/utilities/countArrayDimensions.test.ts +8 -0
  221. package/src/utilities/countArrayDimensions.ts +12 -0
  222. package/src/utilities/escapeIdentifier.test.ts +8 -0
  223. package/src/utilities/escapeIdentifier.ts +8 -0
  224. package/src/utilities/escapeLiteralValue.test.ts +9 -0
  225. package/src/utilities/escapeLiteralValue.ts +26 -0
  226. package/src/utilities/formatSlonikPlaceholder.ts +15 -0
  227. package/src/utilities/hasOwnProperty.ts +10 -0
  228. package/src/utilities/isPlainObject.ts +14 -0
  229. package/src/utilities/isPrimitiveValueExpression.ts +11 -0
  230. package/src/utilities/isSqlToken.ts +52 -0
  231. package/src/utilities/safeStringify.ts +25 -0
  232. package/src/utilities/stripArrayNotation.test.ts +8 -0
  233. 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,3 @@
1
+ import { type SqlFragment, type SqlToken as SqlTokenType } from '../types';
2
+ export declare const createSqlTokenSqlFragment: (token: SqlTokenType, greatestParameterPosition: number) => SqlFragment;
3
+ //# sourceMappingURL=createSqlTokenSqlFragment.d.ts.map
@@ -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"}
@@ -0,0 +1,3 @@
1
+ export { createSqlTag } from './factories/createSqlTag';
2
+ export { type SqlTag } from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export declare const slonikPlaceholderRegexRule: RegExp;
2
+ //# sourceMappingURL=slonikPlaceholderRegexRule.d.ts.map
@@ -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,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.slonikPlaceholderRegexRule = void 0;
4
+ exports.slonikPlaceholderRegexRule = /\$slonik_(\d+)/gu;
5
+ //# sourceMappingURL=slonikPlaceholderRegexRule.js.map
@@ -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,3 @@
1
+ import { type ArraySqlToken, type SqlFragment } from '../types';
2
+ export declare const createArraySqlFragment: (token: ArraySqlToken, greatestParameterPosition: number) => SqlFragment;
3
+ //# sourceMappingURL=createArraySqlFragment.d.ts.map
@@ -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,3 @@
1
+ import { type BinarySqlToken, type SqlFragment } from '../types';
2
+ export declare const createBinarySqlFragment: (token: BinarySqlToken, greatestParameterPosition: number) => SqlFragment;
3
+ //# sourceMappingURL=createBinarySqlFragment.d.ts.map
@@ -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,3 @@
1
+ import { type DateSqlToken, type SqlFragment } from '../types';
2
+ export declare const createDateSqlFragment: (token: DateSqlToken, greatestParameterPosition: number) => SqlFragment;
3
+ //# sourceMappingURL=createDateSqlFragment.d.ts.map
@@ -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,3 @@
1
+ import { type FragmentSqlToken, type SqlFragment } from '../types';
2
+ export declare const createFragmentSqlFragment: (token: FragmentSqlToken, greatestParameterPosition: number) => SqlFragment;
3
+ //# sourceMappingURL=createFragmentSqlFragment.d.ts.map
@@ -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,3 @@
1
+ import { type IdentifierSqlToken, type SqlFragment } from '../types';
2
+ export declare const createIdentifierSqlFragment: (token: IdentifierSqlToken) => SqlFragment;
3
+ //# sourceMappingURL=createIdentifierSqlFragment.d.ts.map
@@ -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,3 @@
1
+ import { type IntervalSqlToken, type SqlFragment } from '../types';
2
+ export declare const createIntervalSqlFragment: (token: IntervalSqlToken, greatestParameterPosition: number) => SqlFragment;
3
+ //# sourceMappingURL=createIntervalSqlFragment.d.ts.map
@@ -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,3 @@
1
+ import { type ListSqlToken, type SqlFragment } from '../types';
2
+ export declare const createListSqlFragment: (token: ListSqlToken, greatestParameterPosition: number) => SqlFragment;
3
+ //# sourceMappingURL=createListSqlFragment.d.ts.map
@@ -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"}