@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,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createListSqlFragment = void 0;
4
+ const createPrimitiveValueExpressions_1 = require("../factories/createPrimitiveValueExpressions");
5
+ const createSqlTokenSqlFragment_1 = require("../factories/createSqlTokenSqlFragment");
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 createListSqlFragment = (token, greatestParameterPosition) => {
11
+ const values = [];
12
+ const placeholders = [];
13
+ let placeholderIndex = greatestParameterPosition;
14
+ if (token.members.length === 0) {
15
+ throw new errors_1.InvalidInputError('Value list must have at least 1 member.');
16
+ }
17
+ for (const member of token.members) {
18
+ if ((0, isSqlToken_1.isSqlToken)(member)) {
19
+ const sqlFragment = (0, createSqlTokenSqlFragment_1.createSqlTokenSqlFragment)(member, placeholderIndex);
20
+ placeholders.push(sqlFragment.sql);
21
+ placeholderIndex += sqlFragment.values.length;
22
+ values.push(...sqlFragment.values);
23
+ }
24
+ else if ((0, isPrimitiveValueExpression_1.isPrimitiveValueExpression)(member)) {
25
+ placeholders.push((0, formatSlonikPlaceholder_1.formatSlonikPlaceholder)(++placeholderIndex));
26
+ values.push(member);
27
+ }
28
+ else {
29
+ throw new errors_1.InvalidInputError('Invalid list member type. Must be a SQL token or a primitive value expression.');
30
+ }
31
+ }
32
+ return {
33
+ sql: placeholders.join(token.glue.sql),
34
+ values: (0, createPrimitiveValueExpressions_1.createPrimitiveValueExpressions)(values),
35
+ };
36
+ };
37
+ exports.createListSqlFragment = createListSqlFragment;
38
+ //# sourceMappingURL=createListSqlFragment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createListSqlFragment.js","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createListSqlFragment.ts"],"names":[],"mappings":";;;AAAA,kGAA+F;AAC/F,sFAAmF;AAMnF,kFAA+E;AAC/E,wFAAqF;AACrF,wDAAqD;AACrD,2CAAmD;AAE5C,MAAM,qBAAqB,GAAG,CACnC,KAAmB,EACnB,yBAAiC,EACpB,EAAE;IACf,MAAM,MAAM,GAA+B,EAAE,CAAC;IAC9C,MAAM,YAAY,GAA2C,EAAE,CAAC;IAEhE,IAAI,gBAAgB,GAAG,yBAAyB,CAAC;IAEjD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,0BAAiB,CAAC,yCAAyC,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,IAAA,uBAAU,EAAC,MAAM,CAAC,EAAE,CAAC;YACvB,MAAM,WAAW,GAAG,IAAA,qDAAyB,EAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YAExE,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACnC,gBAAgB,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,IAAA,uDAA0B,EAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,YAAY,CAAC,IAAI,CAAC,IAAA,iDAAuB,EAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;YAE/D,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,0BAAiB,CACzB,gFAAgF,CACjF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QACtC,MAAM,EAAE,IAAA,iEAA+B,EAAC,MAAM,CAAC;KAChD,CAAC;AACJ,CAAC,CAAC;AAnCW,QAAA,qBAAqB,yBAmChC"}
@@ -0,0 +1,3 @@
1
+ import { type QuerySqlToken, type SqlFragment } from '../types';
2
+ export declare const createQuerySqlFragment: (token: QuerySqlToken, greatestParameterPosition: number) => SqlFragment;
3
+ //# sourceMappingURL=createQuerySqlFragment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createQuerySqlFragment.d.ts","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createQuerySqlFragment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAIhE,eAAO,MAAM,sBAAsB,UAC1B,aAAa,6BACO,MAAM,KAChC,WAuCF,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createQuerySqlFragment = 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 createQuerySqlFragment = (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.createQuerySqlFragment = createQuerySqlFragment;
34
+ //# sourceMappingURL=createQuerySqlFragment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createQuerySqlFragment.js","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createQuerySqlFragment.ts"],"names":[],"mappings":";;;AAAA,yFAAsF;AAEtF,kFAA+E;AAC/E,2CAAsD;AAE/C,MAAM,sBAAsB,GAAG,CACpC,KAAoB,EACpB,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,sBAAsB,0BA0CjC"}
@@ -0,0 +1,3 @@
1
+ import { type SqlFragment, type TimestampSqlToken } from '../types';
2
+ export declare const createTimestampSqlFragment: (token: TimestampSqlToken, greatestParameterPosition: number) => SqlFragment;
3
+ //# sourceMappingURL=createTimestampSqlFragment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTimestampSqlFragment.d.ts","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createTimestampSqlFragment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAIpE,eAAO,MAAM,0BAA0B,UAC9B,iBAAiB,6BACG,MAAM,KAChC,WAcF,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTimestampSqlFragment = void 0;
4
+ const formatSlonikPlaceholder_1 = require("../utilities/formatSlonikPlaceholder");
5
+ const errors_1 = require("@slonik/errors");
6
+ const createTimestampSqlFragment = (token, greatestParameterPosition) => {
7
+ if (!(token.date instanceof Date)) {
8
+ throw new errors_1.InvalidInputError('Timestamp parameter value must be an instance of Date.');
9
+ }
10
+ return {
11
+ sql: 'to_timestamp(' +
12
+ (0, formatSlonikPlaceholder_1.formatSlonikPlaceholder)(greatestParameterPosition + 1) +
13
+ ')',
14
+ values: [String(token.date.getTime() / 1000)],
15
+ };
16
+ };
17
+ exports.createTimestampSqlFragment = createTimestampSqlFragment;
18
+ //# sourceMappingURL=createTimestampSqlFragment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTimestampSqlFragment.js","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createTimestampSqlFragment.ts"],"names":[],"mappings":";;;AACA,kFAA+E;AAC/E,2CAAmD;AAE5C,MAAM,0BAA0B,GAAG,CACxC,KAAwB,EACxB,yBAAiC,EACpB,EAAE;IACf,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,0BAAiB,CACzB,wDAAwD,CACzD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,EACD,eAAe;YACf,IAAA,iDAAuB,EAAC,yBAAyB,GAAG,CAAC,CAAC;YACtD,GAAG;QACL,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAK,CAAC,CAAC;KAC/C,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,0BAA0B,8BAiBrC"}
@@ -0,0 +1,3 @@
1
+ import { type SqlFragment, type UnnestSqlToken } from '../types';
2
+ export declare const createUnnestSqlFragment: (token: UnnestSqlToken, greatestParameterPosition: number) => SqlFragment;
3
+ //# sourceMappingURL=createUnnestSqlFragment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createUnnestSqlFragment.d.ts","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createUnnestSqlFragment.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAQlB,eAAO,MAAM,uBAAuB,UAC3B,cAAc,6BACM,MAAM,KAChC,WAsGF,CAAC"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createUnnestSqlFragment = void 0;
4
+ const countArrayDimensions_1 = require("../utilities/countArrayDimensions");
5
+ const escapeIdentifier_1 = require("../utilities/escapeIdentifier");
6
+ const formatSlonikPlaceholder_1 = require("../utilities/formatSlonikPlaceholder");
7
+ const isPrimitiveValueExpression_1 = require("../utilities/isPrimitiveValueExpression");
8
+ const stripArrayNotation_1 = require("../utilities/stripArrayNotation");
9
+ const errors_1 = require("@slonik/errors");
10
+ const createUnnestSqlFragment = (token, greatestParameterPosition) => {
11
+ const { columnTypes } = token;
12
+ const values = [];
13
+ const unnestBindings = [];
14
+ const unnestSqlTokens = [];
15
+ let columnIndex = 0;
16
+ let placeholderIndex = greatestParameterPosition;
17
+ while (columnIndex < columnTypes.length) {
18
+ const typeMember = columnTypes[columnIndex];
19
+ let columnType = columnTypes[columnIndex];
20
+ let columnTypeIsIdentifier;
21
+ if (typeof typeMember === 'string') {
22
+ columnType = typeMember;
23
+ columnTypeIsIdentifier = false;
24
+ }
25
+ else if (Array.isArray(typeMember)) {
26
+ columnType = typeMember
27
+ .map((identifierName) => {
28
+ if (typeof identifierName !== 'string') {
29
+ throw new errors_1.InvalidInputError('sql.unnest column identifier name array member type must be a string (type name identifier) or a SQL token.');
30
+ }
31
+ return (0, escapeIdentifier_1.escapeIdentifier)(identifierName);
32
+ })
33
+ .join('.');
34
+ columnTypeIsIdentifier = true;
35
+ }
36
+ else {
37
+ columnType = typeMember.sql;
38
+ columnTypeIsIdentifier = true;
39
+ }
40
+ unnestSqlTokens.push((0, formatSlonikPlaceholder_1.formatSlonikPlaceholder)(++placeholderIndex) +
41
+ '::' +
42
+ (columnTypeIsIdentifier
43
+ ? (0, stripArrayNotation_1.stripArrayNotation)(columnType)
44
+ : (0, escapeIdentifier_1.escapeIdentifier)((0, stripArrayNotation_1.stripArrayNotation)(columnType))) +
45
+ '[]'.repeat((0, countArrayDimensions_1.countArrayDimensions)(columnType) + 1));
46
+ unnestBindings[columnIndex] = [];
47
+ columnIndex++;
48
+ }
49
+ let lastTupleSize;
50
+ for (const tupleValues of token.tuples) {
51
+ if (typeof lastTupleSize === 'number' &&
52
+ lastTupleSize !== tupleValues.length) {
53
+ throw new Error('Each tuple in a list of tuples must have an equal number of members.');
54
+ }
55
+ if (tupleValues.length !== columnTypes.length) {
56
+ throw new Error('Column types length must match tuple member length.');
57
+ }
58
+ lastTupleSize = tupleValues.length;
59
+ let tupleColumnIndex = 0;
60
+ for (const tupleValue of tupleValues) {
61
+ if (!Array.isArray(tupleValue) &&
62
+ !(0, isPrimitiveValueExpression_1.isPrimitiveValueExpression)(tupleValue) &&
63
+ !Buffer.isBuffer(tupleValue)) {
64
+ throw new errors_1.InvalidInputError('Invalid unnest tuple member type. Must be a primitive value expression.');
65
+ }
66
+ const tupleBindings = unnestBindings[tupleColumnIndex++];
67
+ if (!tupleBindings) {
68
+ throw new Error('test');
69
+ }
70
+ tupleBindings.push(tupleValue);
71
+ }
72
+ }
73
+ values.push(...unnestBindings);
74
+ const sql = 'unnest(' + unnestSqlTokens.join(', ') + ')';
75
+ return {
76
+ sql,
77
+ values,
78
+ };
79
+ };
80
+ exports.createUnnestSqlFragment = createUnnestSqlFragment;
81
+ //# sourceMappingURL=createUnnestSqlFragment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createUnnestSqlFragment.js","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createUnnestSqlFragment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export declare const ArrayToken: "SLONIK_TOKEN_ARRAY";
2
+ export declare const BinaryToken: "SLONIK_TOKEN_BINARY";
3
+ export declare const ComparisonPredicateToken: "SLONIK_TOKEN_COMPARISON_PREDICATE";
4
+ export declare const DateToken: "SLONIK_TOKEN_DATE";
5
+ export declare const FragmentToken: "SLONIK_TOKEN_FRAGMENT";
6
+ export declare const IdentifierToken: "SLONIK_TOKEN_IDENTIFIER";
7
+ export declare const IntervalToken: "SLONIK_TOKEN_INTERVAL";
8
+ export declare const JsonBinaryToken: "SLONIK_TOKEN_JSON_BINARY";
9
+ export declare const JsonToken: "SLONIK_TOKEN_JSON";
10
+ export declare const ListToken: "SLONIK_TOKEN_LIST";
11
+ export declare const QueryToken: "SLONIK_TOKEN_QUERY";
12
+ export declare const TimestampToken: "SLONIK_TOKEN_TIMESTAMP";
13
+ export declare const UnnestToken: "SLONIK_TOKEN_UNNEST";
14
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,sBAAgC,CAAC;AACxD,eAAO,MAAM,WAAW,uBAAiC,CAAC;AAC1D,eAAO,MAAM,wBAAwB,qCACS,CAAC;AAC/C,eAAO,MAAM,SAAS,qBAA+B,CAAC;AACtD,eAAO,MAAM,aAAa,yBAAmC,CAAC;AAC9D,eAAO,MAAM,eAAe,2BAAqC,CAAC;AAClE,eAAO,MAAM,aAAa,yBAAmC,CAAC;AAC9D,eAAO,MAAM,eAAe,4BAAsC,CAAC;AACnE,eAAO,MAAM,SAAS,qBAA+B,CAAC;AACtD,eAAO,MAAM,SAAS,qBAA+B,CAAC;AACtD,eAAO,MAAM,UAAU,sBAAgC,CAAC;AACxD,eAAO,MAAM,cAAc,0BAAoC,CAAC;AAChE,eAAO,MAAM,WAAW,uBAAiC,CAAC"}
package/dist/tokens.js ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UnnestToken = exports.TimestampToken = exports.QueryToken = exports.ListToken = exports.JsonToken = exports.JsonBinaryToken = exports.IntervalToken = exports.IdentifierToken = exports.FragmentToken = exports.DateToken = exports.ComparisonPredicateToken = exports.BinaryToken = exports.ArrayToken = void 0;
4
+ exports.ArrayToken = 'SLONIK_TOKEN_ARRAY';
5
+ exports.BinaryToken = 'SLONIK_TOKEN_BINARY';
6
+ exports.ComparisonPredicateToken = 'SLONIK_TOKEN_COMPARISON_PREDICATE';
7
+ exports.DateToken = 'SLONIK_TOKEN_DATE';
8
+ exports.FragmentToken = 'SLONIK_TOKEN_FRAGMENT';
9
+ exports.IdentifierToken = 'SLONIK_TOKEN_IDENTIFIER';
10
+ exports.IntervalToken = 'SLONIK_TOKEN_INTERVAL';
11
+ exports.JsonBinaryToken = 'SLONIK_TOKEN_JSON_BINARY';
12
+ exports.JsonToken = 'SLONIK_TOKEN_JSON';
13
+ exports.ListToken = 'SLONIK_TOKEN_LIST';
14
+ exports.QueryToken = 'SLONIK_TOKEN_QUERY';
15
+ exports.TimestampToken = 'SLONIK_TOKEN_TIMESTAMP';
16
+ exports.UnnestToken = 'SLONIK_TOKEN_UNNEST';
17
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,oBAA6B,CAAC;AAC3C,QAAA,WAAW,GAAG,qBAA8B,CAAC;AAC7C,QAAA,wBAAwB,GACnC,mCAA4C,CAAC;AAClC,QAAA,SAAS,GAAG,mBAA4B,CAAC;AACzC,QAAA,aAAa,GAAG,uBAAgC,CAAC;AACjD,QAAA,eAAe,GAAG,yBAAkC,CAAC;AACrD,QAAA,aAAa,GAAG,uBAAgC,CAAC;AACjD,QAAA,eAAe,GAAG,0BAAmC,CAAC;AACtD,QAAA,SAAS,GAAG,mBAA4B,CAAC;AACzC,QAAA,SAAS,GAAG,mBAA4B,CAAC;AACzC,QAAA,UAAU,GAAG,oBAA6B,CAAC;AAC3C,QAAA,cAAc,GAAG,wBAAiC,CAAC;AACnD,QAAA,WAAW,GAAG,qBAA8B,CAAC"}
@@ -0,0 +1,99 @@
1
+ /// <reference types="node" />
2
+ import type * as tokens from './tokens';
3
+ import { type ZodTypeAny } from 'zod';
4
+ export type PrimitiveValueExpression = Buffer | bigint | boolean | number | string | readonly PrimitiveValueExpression[] | null;
5
+ export type SerializableValue = SerializableValue[] | boolean | number | string | readonly SerializableValue[] | {
6
+ [key: string]: SerializableValue;
7
+ } | null | undefined;
8
+ export type IntervalInput = {
9
+ days?: number;
10
+ hours?: number;
11
+ minutes?: number;
12
+ months?: number;
13
+ seconds?: number;
14
+ weeks?: number;
15
+ years?: number;
16
+ };
17
+ export type SqlFragment = {
18
+ readonly sql: string;
19
+ readonly values: readonly PrimitiveValueExpression[];
20
+ };
21
+ export type ValueExpression = PrimitiveValueExpression | SqlFragment | SqlToken;
22
+ /**
23
+ * "string" type covers all type name identifiers – the literal values are added only to assist developer
24
+ * experience with auto suggestions for commonly used type name identifiers.
25
+ */
26
+ export type TypeNameIdentifier = string | 'bool' | 'bytea' | 'float4' | 'float8' | 'int2' | 'int4' | 'int8' | 'json' | 'text' | 'timestamptz' | 'uuid';
27
+ export type ArraySqlToken = {
28
+ readonly memberType: SqlToken | TypeNameIdentifier;
29
+ readonly type: typeof tokens.ArrayToken;
30
+ readonly values: readonly PrimitiveValueExpression[];
31
+ };
32
+ export type BinarySqlToken = {
33
+ readonly data: Buffer;
34
+ readonly type: typeof tokens.BinaryToken;
35
+ };
36
+ export type DateSqlToken = {
37
+ readonly date: Date;
38
+ readonly type: typeof tokens.DateToken;
39
+ };
40
+ export type FragmentSqlToken = {
41
+ readonly sql: string;
42
+ readonly type: typeof tokens.FragmentToken;
43
+ readonly values: readonly PrimitiveValueExpression[];
44
+ };
45
+ export type IdentifierSqlToken = {
46
+ readonly names: readonly string[];
47
+ readonly type: typeof tokens.IdentifierToken;
48
+ };
49
+ export type IntervalSqlToken = {
50
+ readonly interval: IntervalInput;
51
+ readonly type: typeof tokens.IntervalToken;
52
+ };
53
+ export type ListSqlToken = {
54
+ readonly glue: SqlFragment;
55
+ readonly members: readonly ValueExpression[];
56
+ readonly type: typeof tokens.ListToken;
57
+ };
58
+ export type JsonBinarySqlToken = {
59
+ readonly type: typeof tokens.JsonBinaryToken;
60
+ readonly value: SerializableValue;
61
+ };
62
+ export type JsonSqlToken = {
63
+ readonly type: typeof tokens.JsonToken;
64
+ readonly value: SerializableValue;
65
+ };
66
+ export type QuerySqlToken<T extends ZodTypeAny = ZodTypeAny> = {
67
+ readonly parser: T;
68
+ readonly sql: string;
69
+ readonly type: typeof tokens.QueryToken;
70
+ readonly values: readonly PrimitiveValueExpression[];
71
+ };
72
+ export type TimestampSqlToken = {
73
+ readonly date: Date;
74
+ readonly type: typeof tokens.TimestampToken;
75
+ };
76
+ export type UnnestSqlToken = {
77
+ readonly columnTypes: Array<[...string[], TypeNameIdentifier]> | Array<SqlFragment | TypeNameIdentifier>;
78
+ readonly tuples: ReadonlyArray<readonly ValueExpression[]>;
79
+ readonly type: typeof tokens.UnnestToken;
80
+ };
81
+ export type SqlToken = ArraySqlToken | BinarySqlToken | DateSqlToken | FragmentSqlToken | IdentifierSqlToken | IntervalSqlToken | JsonBinarySqlToken | JsonSqlToken | ListSqlToken | QuerySqlToken | TimestampSqlToken | UnnestSqlToken;
82
+ export type SqlTag<Z extends Record<string, ZodTypeAny>> = {
83
+ array: (values: readonly PrimitiveValueExpression[], memberType: SqlFragment | TypeNameIdentifier) => ArraySqlToken;
84
+ binary: (data: Buffer) => BinarySqlToken;
85
+ date: (date: Date) => DateSqlToken;
86
+ fragment: (template: TemplateStringsArray, ...values: ValueExpression[]) => SqlFragment;
87
+ identifier: (names: readonly string[]) => IdentifierSqlToken;
88
+ interval: (interval: IntervalInput) => IntervalSqlToken;
89
+ join: (members: readonly ValueExpression[], glue: SqlFragment) => ListSqlToken;
90
+ json: (value: SerializableValue) => JsonSqlToken;
91
+ jsonb: (value: SerializableValue) => JsonBinarySqlToken;
92
+ literalValue: (value: string) => SqlFragment;
93
+ timestamp: (date: Date) => TimestampSqlToken;
94
+ type: <Y extends ZodTypeAny>(parser: Y) => (template: TemplateStringsArray, ...values: ValueExpression[]) => QuerySqlToken<Y>;
95
+ typeAlias: <K extends keyof Z>(typeAlias: K) => (template: TemplateStringsArray, ...values: ValueExpression[]) => QuerySqlToken<Z[K]>;
96
+ unnest: (tuples: ReadonlyArray<readonly any[]>, columnTypes: Array<[...string[], TypeNameIdentifier]> | Array<SqlFragment | TypeNameIdentifier>) => UnnestSqlToken;
97
+ unsafe: (template: TemplateStringsArray, ...values: ValueExpression[]) => QuerySqlToken;
98
+ };
99
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare const countArrayDimensions: (identifierName: string) => number;
2
+ //# sourceMappingURL=countArrayDimensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countArrayDimensions.d.ts","sourceRoot":"","sources":["../../src/utilities/countArrayDimensions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,mBAAoB,MAAM,KAAG,MAW7D,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.countArrayDimensions = void 0;
4
+ const countArrayDimensions = (identifierName) => {
5
+ let tail = identifierName.trim();
6
+ let arrayDimensionCount = 0;
7
+ while (tail.endsWith('[]')) {
8
+ arrayDimensionCount++;
9
+ tail = tail.trim().slice(0, -2);
10
+ }
11
+ return arrayDimensionCount;
12
+ };
13
+ exports.countArrayDimensions = countArrayDimensions;
14
+ //# sourceMappingURL=countArrayDimensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countArrayDimensions.js","sourceRoot":"","sources":["../../src/utilities/countArrayDimensions.ts"],"names":[],"mappings":";;;AAAO,MAAM,oBAAoB,GAAG,CAAC,cAAsB,EAAU,EAAE;IACrE,IAAI,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;IACjC,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAE5B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,mBAAmB,EAAE,CAAC;QAEtB,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,mBAAmB,CAAC;AAC7B,CAAC,CAAC;AAXW,QAAA,oBAAoB,wBAW/B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=countArrayDimensions.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countArrayDimensions.test.d.ts","sourceRoot":"","sources":["../../src/utilities/countArrayDimensions.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
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 countArrayDimensions_1 = require("./countArrayDimensions");
7
+ const ava_1 = __importDefault(require("ava"));
8
+ (0, ava_1.default)('returns the number of array dimensions', (t) => {
9
+ t.is((0, countArrayDimensions_1.countArrayDimensions)('foo'), 0);
10
+ t.is((0, countArrayDimensions_1.countArrayDimensions)('foo[]'), 1);
11
+ t.is((0, countArrayDimensions_1.countArrayDimensions)('foo[][]'), 2);
12
+ });
13
+ //# sourceMappingURL=countArrayDimensions.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countArrayDimensions.test.js","sourceRoot":"","sources":["../../src/utilities/countArrayDimensions.test.ts"],"names":[],"mappings":";;;;;AAAA,iEAA8D;AAC9D,8CAAuB;AAEvB,IAAA,aAAI,EAAC,wCAAwC,EAAE,CAAC,CAAC,EAAE,EAAE;IACnD,CAAC,CAAC,EAAE,CAAC,IAAA,2CAAoB,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,EAAE,CAAC,IAAA,2CAAoB,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,EAAE,CAAC,IAAA,2CAAoB,EAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @see https://github.com/brianc/node-postgres/blob/6c840aabb09f8a2d640800953f6b884b6841384c/lib/client.js#L306-L322
3
+ */
4
+ export declare const escapeIdentifier: (identifier: string) => string;
5
+ //# sourceMappingURL=escapeIdentifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escapeIdentifier.d.ts","sourceRoot":"","sources":["../../src/utilities/escapeIdentifier.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,gBAAgB,eAAgB,MAAM,KAAG,MAErD,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.escapeIdentifier = void 0;
4
+ const rule = /"/gu;
5
+ /**
6
+ * @see https://github.com/brianc/node-postgres/blob/6c840aabb09f8a2d640800953f6b884b6841384c/lib/client.js#L306-L322
7
+ */
8
+ const escapeIdentifier = (identifier) => {
9
+ return '"' + identifier.replaceAll(rule, '""') + '"';
10
+ };
11
+ exports.escapeIdentifier = escapeIdentifier;
12
+ //# sourceMappingURL=escapeIdentifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escapeIdentifier.js","sourceRoot":"","sources":["../../src/utilities/escapeIdentifier.ts"],"names":[],"mappings":";;;AAAA,MAAM,IAAI,GAAG,KAAK,CAAC;AAEnB;;GAEG;AACI,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAU,EAAE;IAC7D,OAAO,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;AACvD,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=escapeIdentifier.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escapeIdentifier.test.d.ts","sourceRoot":"","sources":["../../src/utilities/escapeIdentifier.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
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 escapeIdentifier_1 = require("./escapeIdentifier");
7
+ const ava_1 = __importDefault(require("ava"));
8
+ (0, ava_1.default)('escapes SQL identifiers', (t) => {
9
+ t.is((0, escapeIdentifier_1.escapeIdentifier)('foo'), '"foo"');
10
+ t.is((0, escapeIdentifier_1.escapeIdentifier)('foo bar'), '"foo bar"');
11
+ t.is((0, escapeIdentifier_1.escapeIdentifier)('"foo"'), '"""foo"""');
12
+ });
13
+ //# sourceMappingURL=escapeIdentifier.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escapeIdentifier.test.js","sourceRoot":"","sources":["../../src/utilities/escapeIdentifier.test.ts"],"names":[],"mappings":";;;;;AAAA,yDAAsD;AACtD,8CAAuB;AAEvB,IAAA,aAAI,EAAC,yBAAyB,EAAE,CAAC,CAAC,EAAE,EAAE;IACpC,CAAC,CAAC,EAAE,CAAC,IAAA,mCAAgB,EAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC,EAAE,CAAC,IAAA,mCAAgB,EAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;IAC/C,CAAC,CAAC,EAAE,CAAC,IAAA,mCAAgB,EAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @see https://github.com/brianc/node-postgres/blob/6c840aabb09f8a2d640800953f6b884b6841384c/lib/client.js#L325-L348
3
+ */
4
+ export declare const escapeLiteralValue: (subject: string) => string;
5
+ //# sourceMappingURL=escapeLiteralValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escapeLiteralValue.d.ts","sourceRoot":"","sources":["../../src/utilities/escapeLiteralValue.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,kBAAkB,YAAa,MAAM,KAAG,MAsBpD,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.escapeLiteralValue = void 0;
4
+ /**
5
+ * @see https://github.com/brianc/node-postgres/blob/6c840aabb09f8a2d640800953f6b884b6841384c/lib/client.js#L325-L348
6
+ */
7
+ const escapeLiteralValue = (subject) => {
8
+ let hasBackslash = false;
9
+ let escaped = "'";
10
+ for (const character of subject) {
11
+ if (character === "'") {
12
+ escaped += character + character;
13
+ }
14
+ else if (character === '\\') {
15
+ escaped += character + character;
16
+ hasBackslash = true;
17
+ }
18
+ else {
19
+ escaped += character;
20
+ }
21
+ }
22
+ escaped += "'";
23
+ if (hasBackslash === true) {
24
+ escaped = 'E' + escaped;
25
+ }
26
+ return escaped;
27
+ };
28
+ exports.escapeLiteralValue = escapeLiteralValue;
29
+ //# sourceMappingURL=escapeLiteralValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escapeLiteralValue.js","sourceRoot":"","sources":["../../src/utilities/escapeLiteralValue.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACI,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAU,EAAE;IAC5D,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,OAAO,GAAG,GAAG,CAAC;IAElB,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QAChC,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YACtB,OAAO,IAAI,SAAS,GAAG,SAAS,CAAC;QACnC,CAAC;aAAM,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YAC9B,OAAO,IAAI,SAAS,GAAG,SAAS,CAAC;YACjC,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,SAAS,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,GAAG,CAAC;IAEf,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,GAAG,GAAG,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAtBW,QAAA,kBAAkB,sBAsB7B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=escapeLiteralValue.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escapeLiteralValue.test.d.ts","sourceRoot":"","sources":["../../src/utilities/escapeLiteralValue.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
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 escapeLiteralValue_1 = require("./escapeLiteralValue");
7
+ const ava_1 = __importDefault(require("ava"));
8
+ (0, ava_1.default)('escapes SQL literal value', (t) => {
9
+ t.is((0, escapeLiteralValue_1.escapeLiteralValue)('foo'), "'foo'");
10
+ t.is((0, escapeLiteralValue_1.escapeLiteralValue)('foo bar'), "'foo bar'");
11
+ t.is((0, escapeLiteralValue_1.escapeLiteralValue)('"foo"'), '\'"foo"\'');
12
+ t.is((0, escapeLiteralValue_1.escapeLiteralValue)('foo\\bar'), "E'foo\\\\bar'");
13
+ });
14
+ //# sourceMappingURL=escapeLiteralValue.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escapeLiteralValue.test.js","sourceRoot":"","sources":["../../src/utilities/escapeLiteralValue.test.ts"],"names":[],"mappings":";;;;;AAAA,6DAA0D;AAC1D,8CAAuB;AAEvB,IAAA,aAAI,EAAC,2BAA2B,EAAE,CAAC,CAAC,EAAE,EAAE;IACtC,CAAC,CAAC,EAAE,CAAC,IAAA,uCAAkB,EAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC,CAAC,EAAE,CAAC,IAAA,uCAAkB,EAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;IACjD,CAAC,CAAC,EAAE,CAAC,IAAA,uCAAkB,EAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC;IAC/C,CAAC,CAAC,EAAE,CAAC,IAAA,uCAAkB,EAAC,UAAU,CAAC,EAAE,eAAe,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Slonik allows to compose queries using fragments, e.g.
3
+ * ```ts
4
+ * sql.fragment`SELECT ${sql.fragment`${1}`}`;
5
+ * ```
6
+ * Take a look at the logic in `createFragmentSqlFragment` to see how we detect nested fragments.
7
+ * When we detect a nested fragment, we need to offset the index of the placeholder.
8
+ * Historically, we used a placeholder format that was based on the index of the placeholder, e.g. $1, $2, etc.
9
+ * The problem with that approach was that any mention of $\d inside of a nested fragment was wrongly identified as a placeholder.
10
+ * To avoid that, we now use a placeholder that is prefixed with $slonik_.
11
+ * This way, we can safely detect placeholders that are part of a nested fragment.
12
+ */
13
+ export declare const formatSlonikPlaceholder: (index: number) => string;
14
+ //# sourceMappingURL=formatSlonikPlaceholder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatSlonikPlaceholder.d.ts","sourceRoot":"","sources":["../../src/utilities/formatSlonikPlaceholder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,UAAW,MAAM,WAEpD,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatSlonikPlaceholder = void 0;
4
+ /**
5
+ * Slonik allows to compose queries using fragments, e.g.
6
+ * ```ts
7
+ * sql.fragment`SELECT ${sql.fragment`${1}`}`;
8
+ * ```
9
+ * Take a look at the logic in `createFragmentSqlFragment` to see how we detect nested fragments.
10
+ * When we detect a nested fragment, we need to offset the index of the placeholder.
11
+ * Historically, we used a placeholder format that was based on the index of the placeholder, e.g. $1, $2, etc.
12
+ * The problem with that approach was that any mention of $\d inside of a nested fragment was wrongly identified as a placeholder.
13
+ * To avoid that, we now use a placeholder that is prefixed with $slonik_.
14
+ * This way, we can safely detect placeholders that are part of a nested fragment.
15
+ */
16
+ const formatSlonikPlaceholder = (index) => {
17
+ return '$slonik_' + String(index);
18
+ };
19
+ exports.formatSlonikPlaceholder = formatSlonikPlaceholder;
20
+ //# sourceMappingURL=formatSlonikPlaceholder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatSlonikPlaceholder.js","sourceRoot":"","sources":["../../src/utilities/formatSlonikPlaceholder.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;GAWG;AACI,MAAM,uBAAuB,GAAG,CAAC,KAAa,EAAE,EAAE;IACvD,OAAO,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC,CAAC;AAFW,QAAA,uBAAuB,2BAElC"}