@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
package/README.md ADDED
@@ -0,0 +1,2 @@
1
+ # Slonik `sql` tag
2
+
@@ -0,0 +1,2 @@
1
+ export declare const Logger: import("roarr").Logger<import("roarr/dist/types").JsonObject>;
2
+ //# sourceMappingURL=Logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,+DAEjB,CAAC"}
package/dist/Logger.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Logger = void 0;
4
+ const roarr_1 = require("roarr");
5
+ exports.Logger = roarr_1.Roarr.child({
6
+ package: 'slonik',
7
+ });
8
+ //# sourceMappingURL=Logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":";;;AAAA,iCAA8B;AAEjB,QAAA,MAAM,GAAG,aAAK,CAAC,KAAK,CAAC;IAChC,OAAO,EAAE,QAAQ;CAClB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type PrimitiveValueExpression } from '../types';
2
+ export declare const createPrimitiveValueExpressions: (values: readonly unknown[]) => readonly PrimitiveValueExpression[];
3
+ //# sourceMappingURL=createPrimitiveValueExpressions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPrimitiveValueExpressions.d.ts","sourceRoot":"","sources":["../../src/factories/createPrimitiveValueExpressions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAQzD,eAAO,MAAM,+BAA+B,WAClC,SAAS,OAAO,EAAE,KACzB,SAAS,wBAAwB,EA+BnC,CAAC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPrimitiveValueExpressions = void 0;
4
+ const Logger_1 = require("../Logger");
5
+ const safeStringify_1 = require("../utilities/safeStringify");
6
+ const errors_1 = require("@slonik/errors");
7
+ const log = Logger_1.Logger.child({
8
+ namespace: 'createPrimitiveValueExpressions',
9
+ });
10
+ const createPrimitiveValueExpressions = (values) => {
11
+ const primitiveValueExpressions = [];
12
+ for (const value of values) {
13
+ if (Array.isArray(value) ||
14
+ Buffer.isBuffer(value) ||
15
+ typeof value === 'string' ||
16
+ typeof value === 'number' ||
17
+ typeof value === 'boolean' ||
18
+ typeof value === 'bigint' ||
19
+ value === null) {
20
+ primitiveValueExpressions.push(value);
21
+ }
22
+ else {
23
+ log.warn({
24
+ value: JSON.parse((0, safeStringify_1.safeStringify)(value)),
25
+ values: JSON.parse((0, safeStringify_1.safeStringify)(values)),
26
+ }, 'unexpected value expression');
27
+ throw new errors_1.UnexpectedStateError('Unexpected value expression.');
28
+ }
29
+ }
30
+ return primitiveValueExpressions;
31
+ };
32
+ exports.createPrimitiveValueExpressions = createPrimitiveValueExpressions;
33
+ //# sourceMappingURL=createPrimitiveValueExpressions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPrimitiveValueExpressions.js","sourceRoot":"","sources":["../../src/factories/createPrimitiveValueExpressions.ts"],"names":[],"mappings":";;;AAAA,sCAAmC;AAEnC,8DAA2D;AAC3D,2CAAsD;AAEtD,MAAM,GAAG,GAAG,eAAM,CAAC,KAAK,CAAC;IACvB,SAAS,EAAE,iCAAiC;CAC7C,CAAC,CAAC;AAEI,MAAM,+BAA+B,GAAG,CAC7C,MAA0B,EACW,EAAE;IACvC,MAAM,yBAAyB,GAG3B,EAAE,CAAC;IAEP,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IACE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACpB,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YACtB,OAAO,KAAK,KAAK,QAAQ;YACzB,OAAO,KAAK,KAAK,QAAQ;YACzB,OAAO,KAAK,KAAK,SAAS;YAC1B,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,KAAK,IAAI,EACd,CAAC;YACD,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CACN;gBACE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAA,6BAAa,EAAC,KAAK,CAAC,CAAC;gBACvC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAA,6BAAa,EAAC,MAAM,CAAC,CAAC;aAC1C,EACD,6BAA6B,CAC9B,CAAC;YAEF,MAAM,IAAI,6BAAoB,CAAC,8BAA8B,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,OAAO,yBAAyB,CAAC;AACnC,CAAC,CAAC;AAjCW,QAAA,+BAA+B,mCAiC1C"}
@@ -0,0 +1,38 @@
1
+ /// <reference types="node" />
2
+ import { type ArraySqlToken, type BinarySqlToken, type DateSqlToken, type FragmentSqlToken, type IdentifierSqlToken, type IntervalInput, type IntervalSqlToken, type JsonBinarySqlToken, type JsonSqlToken, type ListSqlToken, type PrimitiveValueExpression, type SerializableValue, type SqlFragment, type SqlToken as SqlTokenType, type TimestampSqlToken, type TypeNameIdentifier, type UnnestSqlToken, type ValueExpression } from '../types';
3
+ import { z } from 'zod';
4
+ export declare const createSqlTag: <K extends PropertyKey, P extends z.ZodTypeAny, Z extends Record<K, P>>(configuration?: {
5
+ typeAliases?: Z;
6
+ }) => {
7
+ array: (values: readonly PrimitiveValueExpression[], memberType: SqlTokenType | TypeNameIdentifier) => ArraySqlToken;
8
+ binary: (data: Buffer) => BinarySqlToken;
9
+ date: (date: Date) => DateSqlToken;
10
+ fragment: (parts: readonly string[], ...args: readonly ValueExpression[]) => FragmentSqlToken;
11
+ identifier: (names: readonly string[]) => IdentifierSqlToken;
12
+ interval: (interval: IntervalInput) => IntervalSqlToken;
13
+ join: (members: readonly ValueExpression[], glue: SqlFragment) => ListSqlToken;
14
+ json: (value: SerializableValue) => JsonSqlToken;
15
+ jsonb: (value: SerializableValue) => JsonBinarySqlToken;
16
+ literalValue: (value: string) => SqlFragment;
17
+ timestamp: (date: Date) => TimestampSqlToken;
18
+ type: <T extends z.ZodTypeAny>(parser: T) => (parts: readonly string[], ...args: readonly ValueExpression[]) => Readonly<{
19
+ parser: T;
20
+ type: "SLONIK_TOKEN_QUERY";
21
+ sql: string;
22
+ values: PrimitiveValueExpression[];
23
+ }>;
24
+ typeAlias: <Y extends keyof Z>(parserAlias: Y) => (parts: readonly string[], ...args: readonly ValueExpression[]) => Readonly<{
25
+ parser: Z[Y];
26
+ type: "SLONIK_TOKEN_QUERY";
27
+ sql: string;
28
+ values: PrimitiveValueExpression[];
29
+ }>;
30
+ unnest: (tuples: ReadonlyArray<readonly PrimitiveValueExpression[]>, columnTypes: Array<[...string[], TypeNameIdentifier]> | Array<SqlFragment | TypeNameIdentifier>) => UnnestSqlToken;
31
+ unsafe: (parts: readonly string[], ...args: readonly ValueExpression[]) => Readonly<{
32
+ parser: z.ZodAny;
33
+ type: "SLONIK_TOKEN_QUERY";
34
+ sql: string;
35
+ values: PrimitiveValueExpression[];
36
+ }>;
37
+ };
38
+ //# sourceMappingURL=createSqlTag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSqlTag.d.ts","sourceRoot":"","sources":["../../src/factories/createSqlTag.ts"],"names":[],"mappings":";AAeA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,QAAQ,IAAI,YAAY,EAC7B,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,UAAU,CAAC;AAQlB,OAAO,EAAE,CAAC,EAAmB,MAAM,KAAK,CAAC;AAyEzC,eAAO,MAAM,YAAY,0FAKR;IACb,WAAW,CAAC,EAAE,CAAC,CAAC;CACjB;oBAMW,SAAS,wBAAwB,EAAE,cAC/B,YAAY,GAAG,kBAAkB,KAC5C,aAAa;mBAOD,MAAM,KAAG,cAAc;iBAMzB,IAAI,KAAG,YAAY;sBAOvB,SAAS,MAAM,EAAE,WACf,SAAS,eAAe,EAAE,KAClC,gBAAgB;wBAMC,SAAS,MAAM,EAAE,KAAG,kBAAkB;yBAMrC,aAAa,KAAG,gBAAgB;oBAO1C,SAAS,eAAe,EAAE,QAC7B,WAAW,KAChB,YAAY;kBAOD,iBAAiB,KAAG,YAAY;mBAM/B,iBAAiB,KAAG,kBAAkB;0BAM/B,MAAM,KAAG,WAAW;sBAOxB,IAAI,KAAG,iBAAiB;2CAML,CAAC,aAE3B,SAAS,MAAM,EAAE,WACf,SAAS,eAAe,EAAE;;;;;;gDASK,CAAC,aAQlC,SAAS,MAAM,EAAE,WACf,SAAS,eAAe,EAAE;;;;;;qBAU7B,cAAc,SAAS,wBAAwB,EAAE,CAAC,eAEtD,MAAM,CAAC,GAAG,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,GACxC,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAC1C,cAAc;oBAOD,SAAS,MAAM,EAAE,WAAW,SAAS,eAAe,EAAE;;;;;;CAQzE,CAAC"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSqlTag = void 0;
4
+ const Logger_1 = require("../Logger");
5
+ const tokens_1 = require("../tokens");
6
+ const escapeLiteralValue_1 = require("../utilities/escapeLiteralValue");
7
+ const formatSlonikPlaceholder_1 = require("../utilities/formatSlonikPlaceholder");
8
+ const isPrimitiveValueExpression_1 = require("../utilities/isPrimitiveValueExpression");
9
+ const isSqlToken_1 = require("../utilities/isSqlToken");
10
+ const safeStringify_1 = require("../utilities/safeStringify");
11
+ const createSqlTokenSqlFragment_1 = require("./createSqlTokenSqlFragment");
12
+ const errors_1 = require("@slonik/errors");
13
+ const zod_1 = require("zod");
14
+ const log = Logger_1.Logger.child({
15
+ namespace: 'sql',
16
+ });
17
+ const createFragment = (parts, values) => {
18
+ let rawSql = '';
19
+ const parameterValues = [];
20
+ let index = 0;
21
+ for (const part of parts) {
22
+ const token = values[index++];
23
+ rawSql += part;
24
+ if (index >= parts.length) {
25
+ continue;
26
+ }
27
+ if (token === undefined) {
28
+ log.debug({
29
+ index,
30
+ parts: JSON.parse((0, safeStringify_1.safeStringify)(parts)),
31
+ values: JSON.parse((0, safeStringify_1.safeStringify)(values)),
32
+ }, 'bound values');
33
+ throw new errors_1.InvalidInputError(`SQL tag cannot be bound to undefined value at index ${index}.`);
34
+ }
35
+ else if ((0, isPrimitiveValueExpression_1.isPrimitiveValueExpression)(token)) {
36
+ rawSql += (0, formatSlonikPlaceholder_1.formatSlonikPlaceholder)(parameterValues.length + 1);
37
+ parameterValues.push(token);
38
+ }
39
+ else if ((0, isSqlToken_1.isSqlToken)(token)) {
40
+ const sqlFragment = (0, createSqlTokenSqlFragment_1.createSqlTokenSqlFragment)(token, parameterValues.length);
41
+ rawSql += sqlFragment.sql;
42
+ for (const value of sqlFragment.values) {
43
+ parameterValues.push(value);
44
+ }
45
+ }
46
+ else {
47
+ log.error({
48
+ constructedSql: rawSql,
49
+ index,
50
+ offendingToken: JSON.parse((0, safeStringify_1.safeStringify)(token)),
51
+ }, 'unexpected value expression');
52
+ throw new TypeError('Unexpected value expression.');
53
+ }
54
+ }
55
+ return {
56
+ sql: rawSql,
57
+ values: parameterValues,
58
+ };
59
+ };
60
+ const createSqlTag = (configuration = {}) => {
61
+ const typeAliases = configuration.typeAliases;
62
+ return {
63
+ array: (values, memberType) => {
64
+ return Object.freeze({
65
+ memberType,
66
+ type: tokens_1.ArrayToken,
67
+ values,
68
+ });
69
+ },
70
+ binary: (data) => {
71
+ return Object.freeze({
72
+ data,
73
+ type: tokens_1.BinaryToken,
74
+ });
75
+ },
76
+ date: (date) => {
77
+ return Object.freeze({
78
+ date,
79
+ type: tokens_1.DateToken,
80
+ });
81
+ },
82
+ fragment: (parts, ...args) => {
83
+ return Object.freeze({
84
+ ...createFragment(parts, args),
85
+ type: tokens_1.FragmentToken,
86
+ });
87
+ },
88
+ identifier: (names) => {
89
+ return Object.freeze({
90
+ names,
91
+ type: tokens_1.IdentifierToken,
92
+ });
93
+ },
94
+ interval: (interval) => {
95
+ return Object.freeze({
96
+ interval,
97
+ type: tokens_1.IntervalToken,
98
+ });
99
+ },
100
+ join: (members, glue) => {
101
+ return Object.freeze({
102
+ glue,
103
+ members,
104
+ type: tokens_1.ListToken,
105
+ });
106
+ },
107
+ json: (value) => {
108
+ return Object.freeze({
109
+ type: tokens_1.JsonToken,
110
+ value,
111
+ });
112
+ },
113
+ jsonb: (value) => {
114
+ return Object.freeze({
115
+ type: tokens_1.JsonBinaryToken,
116
+ value,
117
+ });
118
+ },
119
+ literalValue: (value) => {
120
+ return Object.freeze({
121
+ sql: (0, escapeLiteralValue_1.escapeLiteralValue)(value),
122
+ type: tokens_1.FragmentToken,
123
+ values: [],
124
+ });
125
+ },
126
+ timestamp: (date) => {
127
+ return Object.freeze({
128
+ date,
129
+ type: tokens_1.TimestampToken,
130
+ });
131
+ },
132
+ type: (parser) => {
133
+ return (parts, ...args) => {
134
+ return Object.freeze({
135
+ ...createFragment(parts, args),
136
+ parser,
137
+ type: tokens_1.QueryToken,
138
+ });
139
+ };
140
+ },
141
+ typeAlias: (parserAlias) => {
142
+ if (!typeAliases?.[parserAlias]) {
143
+ throw new Error('Type alias "' + String(parserAlias) + '" does not exist.');
144
+ }
145
+ return (parts, ...args) => {
146
+ return Object.freeze({
147
+ ...createFragment(parts, args),
148
+ parser: typeAliases[parserAlias],
149
+ type: tokens_1.QueryToken,
150
+ });
151
+ };
152
+ },
153
+ unnest: (tuples, columnTypes) => {
154
+ return Object.freeze({
155
+ columnTypes,
156
+ tuples,
157
+ type: tokens_1.UnnestToken,
158
+ });
159
+ },
160
+ unsafe: (parts, ...args) => {
161
+ return Object.freeze({
162
+ ...createFragment(parts, args),
163
+ parser: zod_1.z.any(),
164
+ type: tokens_1.QueryToken,
165
+ });
166
+ },
167
+ };
168
+ };
169
+ exports.createSqlTag = createSqlTag;
170
+ //# sourceMappingURL=createSqlTag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSqlTag.js","sourceRoot":"","sources":["../../src/factories/createSqlTag.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=array.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.test.d.ts","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/array.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,76 @@
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)('binds an empty array', (t) => {
11
+ const query = sql.fragment `SELECT ${sql.array([], 'int4')}`;
12
+ t.deepEqual(query, {
13
+ sql: 'SELECT $slonik_1::"int4"[]',
14
+ type: tokens_1.FragmentToken,
15
+ values: [[]],
16
+ });
17
+ });
18
+ (0, ava_1.default)('binds bigint', (t) => {
19
+ const query = sql.fragment `SELECT ${sql.array(
20
+ // eslint-disable-next-line unicorn/numeric-separators-style
21
+ [9007199254740999n], 'int8')}`;
22
+ t.deepEqual(query, {
23
+ sql: 'SELECT $slonik_1::"int8"[]',
24
+ type: tokens_1.FragmentToken,
25
+ // eslint-disable-next-line unicorn/numeric-separators-style
26
+ values: [[BigInt(9007199254740999n)]],
27
+ });
28
+ });
29
+ (0, ava_1.default)('binds an array with multiple values', (t) => {
30
+ const query = sql.fragment `SELECT ${sql.array([1, 2, 3], 'int4')}`;
31
+ t.deepEqual(query, {
32
+ sql: 'SELECT $slonik_1::"int4"[]',
33
+ type: tokens_1.FragmentToken,
34
+ values: [[1, 2, 3]],
35
+ });
36
+ });
37
+ (0, ava_1.default)('binds an array with bytea values', (t) => {
38
+ const query = sql.fragment `SELECT ${sql.array([Buffer.from('foo')], 'bytea')}`;
39
+ t.deepEqual(query, {
40
+ sql: 'SELECT $slonik_1::"bytea"[]',
41
+ type: tokens_1.FragmentToken,
42
+ values: [[Buffer.from('foo')]],
43
+ });
44
+ });
45
+ (0, ava_1.default)('offsets positional parameter indexes', (t) => {
46
+ const query = sql.fragment `SELECT ${1}, ${sql.array([1, 2, 3], 'int4')}, ${3}`;
47
+ t.deepEqual(query, {
48
+ sql: 'SELECT $slonik_1, $slonik_2::"int4"[], $slonik_3',
49
+ type: tokens_1.FragmentToken,
50
+ values: [1, [1, 2, 3], 3],
51
+ });
52
+ });
53
+ (0, ava_1.default)('binds a SQL token', (t) => {
54
+ const query = sql.fragment `SELECT ${sql.array([1, 2, 3], sql.fragment `int[]`)}`;
55
+ t.deepEqual(query, {
56
+ sql: 'SELECT $slonik_1::int[]',
57
+ type: tokens_1.FragmentToken,
58
+ values: [[1, 2, 3]],
59
+ });
60
+ });
61
+ (0, ava_1.default)('throws if array member is not a primitive value expression', (t) => {
62
+ const error = t.throws(() => {
63
+ sql.fragment `SELECT ${sql.array([
64
+ // @ts-expect-error - intentional
65
+ () => { },
66
+ ], 'int')}`;
67
+ });
68
+ t.is(error?.message, 'Invalid array member type. Must be a primitive value expression.');
69
+ });
70
+ (0, ava_1.default)('throws if memberType is not a string or SqlToken of different type than "SLONIK_TOKEN_FRAGMENT"', (t) => {
71
+ const error = t.throws(() => {
72
+ sql.fragment `SELECT ${sql.array([1, 2, 3], sql.identifier(['int']))}`;
73
+ });
74
+ t.is(error?.message, 'Unsupported `memberType`. `memberType` must be a string or SqlToken of "SLONIK_TOKEN_FRAGMENT" type.');
75
+ });
76
+ //# sourceMappingURL=array.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.test.js","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/array.test.ts"],"names":[],"mappings":";;;;;AAAA,yCAA6C;AAC7C,kDAA+C;AAC/C,8CAAuB;AAEvB,MAAM,GAAG,GAAG,IAAA,2BAAY,GAAE,CAAC;AAE3B,IAAA,aAAI,EAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,EAAE;IACjC,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;IAE5D,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,4BAA4B;QACjC,IAAI,EAAE,sBAAa;QACnB,MAAM,EAAE,CAAC,EAAE,CAAC;KACb,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE;IACzB,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,KAAK;IAC3C,4DAA4D;IAC5D,CAAC,iBAAiB,CAAC,EACnB,MAAM,CACP,EAAE,CAAC;IAEJ,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,4BAA4B;QACjC,IAAI,EAAE,sBAAa;QACnB,4DAA4D;QAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;KACtC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,qCAAqC,EAAE,CAAC,CAAC,EAAE,EAAE;IAChD,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;IAEnE,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,4BAA4B;QACjC,IAAI,EAAE,sBAAa;QACnB,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACpB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,kCAAkC,EAAE,CAAC,CAAC,EAAE,EAAE;IAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,KAAK,CAC3C,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EACpB,OAAO,CACR,EAAE,CAAC;IAEJ,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,6BAA6B;QAClC,IAAI,EAAE,sBAAa;QACnB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KAC/B,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,sCAAsC,EAAE,CAAC,CAAC,EAAE,EAAE;IACjD,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,CAAC,KAAK,GAAG,CAAC,KAAK,CACjD,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACT,MAAM,CACP,KAAK,CAAC,EAAE,CAAC;IAEV,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,kDAAkD;QACvD,IAAI,EAAE,sBAAa;QACnB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;KAC1B,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE;IAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,KAAK,CAC3C,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACT,GAAG,CAAC,QAAQ,CAAA,OAAO,CACpB,EAAE,CAAC;IAEJ,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,yBAAyB;QAC9B,IAAI,EAAE,sBAAa;QACnB,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACpB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,4DAA4D,EAAE,CAAC,CAAC,EAAE,EAAE;IACvE,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;QAC1B,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,KAAK,CAC7B;YACE,iCAAiC;YACjC,GAAG,EAAE,GAAE,CAAC;SACT,EACD,KAAK,CACN,EAAE,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,EAAE,CACF,KAAK,EAAE,OAAO,EACd,kEAAkE,CACnE,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,iGAAiG,EAAE,CAAC,CAAC,EAAE,EAAE;IAC5G,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;QAC1B,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,EAAE,CACF,KAAK,EAAE,OAAO,EACd,sGAAsG,CACvG,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=date.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.test.d.ts","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/date.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
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)('binds a date', (t) => {
11
+ const query = sql.fragment `SELECT ${sql.date(new Date('2022-08-19T03:27:24.951Z'))}`;
12
+ t.deepEqual(query, {
13
+ sql: 'SELECT $slonik_1::date',
14
+ type: tokens_1.FragmentToken,
15
+ values: ['2022-08-19'],
16
+ });
17
+ });
18
+ (0, ava_1.default)('throws if not instance of Date', (t) => {
19
+ const error = t.throws(() => {
20
+ // @ts-expect-error - intentional
21
+ sql.fragment `SELECT ${sql.date(1)}`;
22
+ });
23
+ t.is(error?.message, 'Date parameter value must be an instance of Date.');
24
+ });
25
+ //# sourceMappingURL=date.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.test.js","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/date.test.ts"],"names":[],"mappings":";;;;;AAAA,yCAA6C;AAC7C,kDAA+C;AAC/C,8CAAuB;AAEvB,MAAM,GAAG,GAAG,IAAA,2BAAY,GAAE,CAAC;AAE3B,IAAA,aAAI,EAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE;IACzB,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,IAAI,CAC1C,IAAI,IAAI,CAAC,0BAA0B,CAAC,CACrC,EAAE,CAAC;IAEJ,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,wBAAwB;QAC7B,IAAI,EAAE,sBAAa;QACnB,MAAM,EAAE,CAAC,YAAY,CAAC;KACvB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,gCAAgC,EAAE,CAAC,CAAC,EAAE,EAAE;IAC3C,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;QAC1B,iCAAiC;QACjC,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,mDAAmD,CAAC,CAAC;AAC5E,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=identifier.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identifier.test.d.ts","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/identifier.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
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 object describing a query with inlined identifiers', (t) => {
11
+ const query = sql.fragment `SELECT ${'foo'} FROM ${sql.identifier(['bar'])}`;
12
+ t.deepEqual(query, {
13
+ sql: 'SELECT $slonik_1 FROM "bar"',
14
+ type: tokens_1.FragmentToken,
15
+ values: ['foo'],
16
+ });
17
+ });
18
+ (0, ava_1.default)('creates an object describing a query with inlined identifiers (specifier)', (t) => {
19
+ const query = sql.fragment `SELECT ${'foo'} FROM ${sql.identifier([
20
+ 'bar',
21
+ 'baz',
22
+ ])}`;
23
+ t.deepEqual(query, {
24
+ sql: 'SELECT $slonik_1 FROM "bar"."baz"',
25
+ type: tokens_1.FragmentToken,
26
+ values: ['foo'],
27
+ });
28
+ });
29
+ (0, ava_1.default)('throws if an identifier name array member type is not a string', (t) => {
30
+ const error = t.throws(() => {
31
+ sql.fragment `${sql.identifier([
32
+ // @ts-expect-error - intentional
33
+ () => { },
34
+ ])}`;
35
+ });
36
+ t.is(error?.message, 'Identifier name array member type must be a string.');
37
+ });
38
+ //# sourceMappingURL=identifier.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identifier.test.js","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/identifier.test.ts"],"names":[],"mappings":";;;;;AAAA,yCAA6C;AAC7C,kDAA+C;AAC/C,8CAAuB;AAEvB,MAAM,GAAG,GAAG,IAAA,2BAAY,GAAE,CAAC;AAE3B,IAAA,aAAI,EAAC,+DAA+D,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1E,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,KAAK,SAAS,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;IAE5E,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,6BAA6B;QAClC,IAAI,EAAE,sBAAa;QACnB,MAAM,EAAE,CAAC,KAAK,CAAC;KAChB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,2EAA2E,EAAE,CAAC,CAAC,EAAE,EAAE;IACtF,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,KAAK,SAAS,GAAG,CAAC,UAAU,CAAC;QAC/D,KAAK;QACL,KAAK;KACN,CAAC,EAAE,CAAC;IAEL,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,mCAAmC;QACxC,IAAI,EAAE,sBAAa;QACnB,MAAM,EAAE,CAAC,KAAK,CAAC;KAChB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,gEAAgE,EAAE,CAAC,CAAC,EAAE,EAAE;IAC3E,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;QAC1B,GAAG,CAAC,QAAQ,CAAA,GAAG,GAAG,CAAC,UAAU,CAAC;YAC5B,iCAAiC;YACjC,GAAG,EAAE,GAAE,CAAC;SACT,CAAC,EAAE,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,qDAAqD,CAAC,CAAC;AAC9E,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=interval.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interval.test.d.ts","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/interval.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,43 @@
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 empty make_interval invocation', (t) => {
11
+ const query = sql.fragment `SELECT ${sql.interval({})}`;
12
+ t.deepEqual(query, {
13
+ sql: 'SELECT make_interval()',
14
+ type: tokens_1.FragmentToken,
15
+ values: [],
16
+ });
17
+ });
18
+ (0, ava_1.default)('creates an interval', (t) => {
19
+ const query = sql.fragment `SELECT ${sql.interval({
20
+ days: 4,
21
+ hours: 5,
22
+ minutes: 6,
23
+ months: 2,
24
+ seconds: 7,
25
+ weeks: 3,
26
+ years: 1,
27
+ })}`;
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)',
30
+ type: tokens_1.FragmentToken,
31
+ values: [1, 2, 3, 4, 5, 6, 7],
32
+ });
33
+ });
34
+ (0, ava_1.default)('throws if contains unknown properties', (t) => {
35
+ const error = t.throws(() => {
36
+ sql.fragment `SELECT ${sql.interval({
37
+ // @ts-expect-error - intentional
38
+ foo: 'bar',
39
+ })}`;
40
+ });
41
+ t.is(error?.message, 'Interval input must not contain unknown properties.');
42
+ });
43
+ //# sourceMappingURL=interval.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interval.test.js","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/interval.test.ts"],"names":[],"mappings":";;;;;AAAA,yCAA6C;AAC7C,kDAA+C;AAC/C,8CAAuB;AAEvB,MAAM,GAAG,GAAG,IAAA,2BAAY,GAAE,CAAC;AAE3B,IAAA,aAAI,EAAC,2CAA2C,EAAE,CAAC,CAAC,EAAE,EAAE;IACtD,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IAEvD,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,wBAAwB;QAC7B,IAAI,EAAE,sBAAa;QACnB,MAAM,EAAE,EAAE;KACX,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,EAAE;IAChC,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,QAAQ,CAAC;QAC/C,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,CAAC;KACT,CAAC,EAAE,CAAC;IAEL,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,gKAAgK;QACrK,IAAI,EAAE,sBAAa;QACnB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KAC9B,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,uCAAuC,EAAE,CAAC,CAAC,EAAE,EAAE;IAClD,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;QAC1B,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,QAAQ,CAAC;YACjC,iCAAiC;YACjC,GAAG,EAAE,KAAK;SACX,CAAC,EAAE,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,qDAAqD,CAAC,CAAC;AAC9E,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=join.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"join.test.d.ts","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/join.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,87 @@
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 a list of values', (t) => {
11
+ const query = sql.fragment `SELECT (${sql.join([1, 2, 3], sql.fragment `, `)})`;
12
+ t.deepEqual(query, {
13
+ sql: 'SELECT ($slonik_1, $slonik_2, $slonik_3)',
14
+ type: tokens_1.FragmentToken,
15
+ values: [1, 2, 3],
16
+ });
17
+ });
18
+ (0, ava_1.default)('creates a list of values using glue', (t) => {
19
+ const query = sql.fragment `SELECT ${sql.join([sql.fragment `TRUE`, sql.fragment `TRUE`], sql.fragment ` AND `)}`;
20
+ t.deepEqual(query, {
21
+ sql: 'SELECT TRUE AND TRUE',
22
+ type: tokens_1.FragmentToken,
23
+ values: [],
24
+ });
25
+ });
26
+ (0, ava_1.default)('interpolates SQL tokens', (t) => {
27
+ const query = sql.fragment `SELECT (${sql.join([1, sql.fragment `foo`, 3], sql.fragment `, `)})`;
28
+ t.deepEqual(query, {
29
+ sql: 'SELECT ($slonik_1, foo, $slonik_2)',
30
+ type: tokens_1.FragmentToken,
31
+ values: [1, 3],
32
+ });
33
+ });
34
+ (0, ava_1.default)('interpolates SQL tokens with bound values', (t) => {
35
+ const query = sql.fragment `SELECT ${sql.join([1, sql.fragment `to_timestamp(${2}), ${3}`, 4], sql.fragment `, `)}`;
36
+ t.deepEqual(query, {
37
+ sql: 'SELECT $slonik_1, to_timestamp($slonik_2), $slonik_3, $slonik_4',
38
+ type: tokens_1.FragmentToken,
39
+ values: [1, 2, 3, 4],
40
+ });
41
+ });
42
+ (0, ava_1.default)('offsets positional parameter indexes', (t) => {
43
+ const query = sql.fragment `SELECT ${1}, ${sql.join([1, sql.fragment `to_timestamp(${2}), ${3}`, 4], sql.fragment `, `)}, ${3}`;
44
+ t.deepEqual(query, {
45
+ sql: 'SELECT $slonik_1, $slonik_2, to_timestamp($slonik_3), $slonik_4, $slonik_5, $slonik_6',
46
+ type: tokens_1.FragmentToken,
47
+ values: [1, 1, 2, 3, 4, 3],
48
+ });
49
+ });
50
+ (0, ava_1.default)('supports bigint', (t) => {
51
+ const query = sql.fragment `SELECT ${1n}, ${sql.join([sql.fragment `to_timestamp(${2n})`, 3n], sql.fragment `, `)}, ${4n}`;
52
+ t.deepEqual(query, {
53
+ sql: 'SELECT $slonik_1, to_timestamp($slonik_2), $slonik_3, $slonik_4',
54
+ type: tokens_1.FragmentToken,
55
+ values: [1n, 2n, 3n, 4n],
56
+ });
57
+ });
58
+ (0, ava_1.default)('nests expressions', (t) => {
59
+ const query = sql.fragment `SELECT ${sql.join([
60
+ sql.fragment `(${sql.join([1, 2], sql.fragment `, `)})`,
61
+ sql.fragment `(${sql.join([3, 4], sql.fragment `, `)})`,
62
+ ], sql.fragment `, `)}`;
63
+ t.deepEqual(query, {
64
+ sql: 'SELECT ($slonik_1, $slonik_2), ($slonik_3, $slonik_4)',
65
+ type: tokens_1.FragmentToken,
66
+ values: [1, 2, 3, 4],
67
+ });
68
+ });
69
+ (0, ava_1.default)('binary join expressions', (t) => {
70
+ const data = Buffer.from('1f', 'hex');
71
+ const query = sql.fragment `SELECT (${sql.join(['a', sql.binary(data)], sql.fragment `, `)})`;
72
+ t.deepEqual(query, {
73
+ sql: 'SELECT ($slonik_1, $slonik_2)',
74
+ type: tokens_1.FragmentToken,
75
+ values: ['a', data],
76
+ });
77
+ });
78
+ (0, ava_1.default)('throws is member is not a SQL token or a primitive value expression', (t) => {
79
+ const error = t.throws(() => {
80
+ sql.fragment `${sql.join([
81
+ // @ts-expect-error - intentional
82
+ () => { },
83
+ ], sql.fragment `, `)}`;
84
+ });
85
+ t.is(error?.message, 'Invalid list member type. Must be a SQL token or a primitive value expression.');
86
+ });
87
+ //# sourceMappingURL=join.test.js.map