@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,14 @@
1
+ export const isPlainObject = (subject: unknown) => {
2
+ if (typeof subject !== 'object' || subject === null) {
3
+ return false;
4
+ }
5
+
6
+ const prototype = Object.getPrototypeOf(subject);
7
+ return (
8
+ (prototype === null ||
9
+ prototype === Object.prototype ||
10
+ Object.getPrototypeOf(prototype) === null) &&
11
+ !(Symbol.toStringTag in subject) &&
12
+ !(Symbol.iterator in subject)
13
+ );
14
+ };
@@ -0,0 +1,11 @@
1
+ export const isPrimitiveValueExpression = (
2
+ maybe: unknown,
3
+ ): maybe is bigint | boolean | number | string | null => {
4
+ return (
5
+ typeof maybe === 'string' ||
6
+ typeof maybe === 'number' ||
7
+ typeof maybe === 'boolean' ||
8
+ typeof maybe === 'bigint' ||
9
+ maybe === null
10
+ );
11
+ };
@@ -0,0 +1,52 @@
1
+ import {
2
+ ArrayToken,
3
+ BinaryToken,
4
+ ComparisonPredicateToken,
5
+ DateToken,
6
+ FragmentToken,
7
+ IdentifierToken,
8
+ IntervalToken,
9
+ JsonBinaryToken,
10
+ JsonToken,
11
+ ListToken,
12
+ QueryToken,
13
+ TimestampToken,
14
+ UnnestToken,
15
+ } from '../tokens';
16
+ import { type SqlToken as SqlTokenType } from '../types';
17
+ import { hasOwnProperty } from './hasOwnProperty';
18
+ import { UnexpectedStateError } from '@slonik/errors';
19
+
20
+ const Tokens = [
21
+ ArrayToken,
22
+ BinaryToken,
23
+ ComparisonPredicateToken,
24
+ DateToken,
25
+ FragmentToken,
26
+ IdentifierToken,
27
+ IntervalToken,
28
+ JsonBinaryToken,
29
+ JsonToken,
30
+ ListToken,
31
+ QueryToken,
32
+ TimestampToken,
33
+ UnnestToken,
34
+ ] as const;
35
+
36
+ export const isSqlToken = (subject: unknown): subject is SqlTokenType => {
37
+ if (typeof subject !== 'object' || subject === null) {
38
+ return false;
39
+ }
40
+
41
+ if (!hasOwnProperty(subject, 'type')) {
42
+ throw new UnexpectedStateError(
43
+ 'Expected token to include "type" property.',
44
+ );
45
+ }
46
+
47
+ if (typeof subject.type !== 'string') {
48
+ throw new UnexpectedStateError('Expected type to be string.');
49
+ }
50
+
51
+ return (Tokens as readonly string[]).includes(subject.type);
52
+ };
@@ -0,0 +1,25 @@
1
+ import { configure } from 'safe-stable-stringify';
2
+
3
+ const stringify = configure({
4
+ bigint: true,
5
+ circularValue: '[Circular]',
6
+ strict: true,
7
+ });
8
+
9
+ export const safeStringify = (
10
+ subject: unknown,
11
+ replacer?:
12
+ | Array<number | string>
13
+ | ((key: string, value: unknown) => unknown)
14
+ | null
15
+ | undefined,
16
+ space?: number | string,
17
+ ): string => {
18
+ const result = stringify(subject, replacer, space);
19
+
20
+ if (result === undefined) {
21
+ throw new Error('Expected result to be string');
22
+ }
23
+
24
+ return result;
25
+ };
@@ -0,0 +1,8 @@
1
+ import { stripArrayNotation } from './stripArrayNotation';
2
+ import test from 'ava';
3
+
4
+ test('strips array notation', (t) => {
5
+ t.is(stripArrayNotation('foo'), 'foo');
6
+ t.is(stripArrayNotation('foo[]'), 'foo');
7
+ t.is(stripArrayNotation('foo[][]'), 'foo');
8
+ });
@@ -0,0 +1,9 @@
1
+ export const stripArrayNotation = (identifierName: string): string => {
2
+ let tail = identifierName.trim();
3
+
4
+ while (tail.endsWith('[]')) {
5
+ tail = tail.trim().slice(0, -2);
6
+ }
7
+
8
+ return tail;
9
+ };