@slonik/sql-tag 48.8.11 → 48.8.12

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.
@@ -1 +1 @@
1
- {"version":3,"file":"createSqlTokenSqlFragment.d.ts","sourceRoot":"","sources":["../../src/factories/createSqlTokenSqlFragment.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,aAAa,CAAC;AAG9E,eAAO,MAAM,yBAAyB,GACpC,OAAO,YAAY,EACnB,2BAA2B,MAAM,KAChC,gBA8BF,CAAC"}
1
+ {"version":3,"file":"createSqlTokenSqlFragment.d.ts","sourceRoot":"","sources":["../../src/factories/createSqlTokenSqlFragment.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAWV,gBAAgB,EAChB,QAAQ,IAAI,YAAY,EAIzB,MAAM,aAAa,CAAC;AAiErB,eAAO,MAAM,yBAAyB,GACpC,OAAO,YAAY,EACnB,2BAA2B,MAAM,KAChC,gBAQF,CAAC"}
@@ -12,45 +12,64 @@ import { createUnnestSqlFragment } from '../sqlFragmentFactories/createUnnestSql
12
12
  import { createUuidSqlFragment } from '../sqlFragmentFactories/createUuidSqlFragment.js';
13
13
  import { ArrayToken, BinaryToken, DateToken, FragmentToken, IdentifierToken, IntervalToken, JsonBinaryToken, JsonToken, ListToken, QueryToken, TimestampToken, UnnestToken, UuidToken, } from '../tokens.js';
14
14
  import { UnexpectedStateError } from '@slonik/errors';
15
+ const tokenHandlers = new Map([
16
+ [
17
+ ArrayToken,
18
+ (token, pos) => createArraySqlFragment(token, pos),
19
+ ],
20
+ [
21
+ BinaryToken,
22
+ (token, pos) => createBinarySqlFragment(token, pos),
23
+ ],
24
+ [
25
+ DateToken,
26
+ (token, pos) => createDateSqlFragment(token, pos),
27
+ ],
28
+ [
29
+ FragmentToken,
30
+ (token, pos) => createFragmentSqlFragment(token, pos),
31
+ ],
32
+ [
33
+ IdentifierToken,
34
+ (token) => createIdentifierSqlFragment(token),
35
+ ],
36
+ [
37
+ IntervalToken,
38
+ (token, pos) => createIntervalSqlFragment(token, pos),
39
+ ],
40
+ [
41
+ JsonBinaryToken,
42
+ (token, pos) => createJsonSqlFragment(token, pos, true),
43
+ ],
44
+ [
45
+ JsonToken,
46
+ (token, pos) => createJsonSqlFragment(token, pos, false),
47
+ ],
48
+ [
49
+ ListToken,
50
+ (token, pos) => createListSqlFragment(token, pos),
51
+ ],
52
+ [
53
+ QueryToken,
54
+ (token, pos) => createQuerySqlFragment(token, pos),
55
+ ],
56
+ [
57
+ TimestampToken,
58
+ (token, pos) => createTimestampSqlFragment(token, pos),
59
+ ],
60
+ [
61
+ UnnestToken,
62
+ (token, pos) => createUnnestSqlFragment(token, pos),
63
+ ],
64
+ [
65
+ UuidToken,
66
+ (token, pos) => createUuidSqlFragment(token, pos),
67
+ ],
68
+ ]);
15
69
  export const createSqlTokenSqlFragment = (token, greatestParameterPosition) => {
16
- if (token.type === ArrayToken) {
17
- return createArraySqlFragment(token, greatestParameterPosition);
18
- }
19
- else if (token.type === BinaryToken) {
20
- return createBinarySqlFragment(token, greatestParameterPosition);
21
- }
22
- else if (token.type === DateToken) {
23
- return createDateSqlFragment(token, greatestParameterPosition);
24
- }
25
- else if (token.type === FragmentToken) {
26
- return createFragmentSqlFragment(token, greatestParameterPosition);
27
- }
28
- else if (token.type === IdentifierToken) {
29
- return createIdentifierSqlFragment(token);
30
- }
31
- else if (token.type === IntervalToken) {
32
- return createIntervalSqlFragment(token, greatestParameterPosition);
33
- }
34
- else if (token.type === JsonBinaryToken) {
35
- return createJsonSqlFragment(token, greatestParameterPosition, true);
36
- }
37
- else if (token.type === JsonToken) {
38
- return createJsonSqlFragment(token, greatestParameterPosition, false);
39
- }
40
- else if (token.type === ListToken) {
41
- return createListSqlFragment(token, greatestParameterPosition);
42
- }
43
- else if (token.type === QueryToken) {
44
- return createQuerySqlFragment(token, greatestParameterPosition);
45
- }
46
- else if (token.type === TimestampToken) {
47
- return createTimestampSqlFragment(token, greatestParameterPosition);
48
- }
49
- else if (token.type === UnnestToken) {
50
- return createUnnestSqlFragment(token, greatestParameterPosition);
51
- }
52
- else if (token.type === UuidToken) {
53
- return createUuidSqlFragment(token, greatestParameterPosition);
70
+ const handler = tokenHandlers.get(token.type);
71
+ if (handler) {
72
+ return handler(token, greatestParameterPosition);
54
73
  }
55
74
  throw new UnexpectedStateError('Unexpected token type.');
56
75
  };
@@ -1 +1 @@
1
- {"version":3,"file":"createSqlTokenSqlFragment.js","sourceRoot":"","sources":["../../src/factories/createSqlTokenSqlFragment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,sDAAsD,CAAC;AACjG,OAAO,EAAE,2BAA2B,EAAE,MAAM,wDAAwD,CAAC;AACrG,OAAO,EAAE,yBAAyB,EAAE,MAAM,sDAAsD,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AACzF,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,OAAO,EAAE,0BAA0B,EAAE,MAAM,uDAAuD,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AACzF,OAAO,EACL,UAAU,EACV,WAAW,EACX,SAAS,EACT,aAAa,EACb,eAAe,EACf,aAAa,EACb,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,EACV,cAAc,EACd,WAAW,EACX,SAAS,GACV,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,KAAmB,EACnB,yBAAiC,EACf,EAAE;IACpB,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO,sBAAsB,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IAClE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACtC,OAAO,uBAAuB,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,qBAAqB,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACxC,OAAO,yBAAyB,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACrE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAC1C,OAAO,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACxC,OAAO,yBAAyB,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACrE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAC1C,OAAO,qBAAqB,CAAC,KAAK,EAAE,yBAAyB,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,qBAAqB,CAAC,KAAK,EAAE,yBAAyB,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,qBAAqB,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACrC,OAAO,sBAAsB,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IAClE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACzC,OAAO,0BAA0B,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACtE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACtC,OAAO,uBAAuB,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,qBAAqB,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,IAAI,oBAAoB,CAAC,wBAAwB,CAAC,CAAC;AAC3D,CAAC,CAAC"}
1
+ {"version":3,"file":"createSqlTokenSqlFragment.js","sourceRoot":"","sources":["../../src/factories/createSqlTokenSqlFragment.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"isSqlToken.d.ts","sourceRoot":"","sources":["../../src/utilities/isSqlToken.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,aAAa,CAAC;AAiC5D,eAAO,MAAM,UAAU,GAAI,SAAS,OAAO,KAAG,OAAO,IAAI,YAmCxD,CAAC"}
1
+ {"version":3,"file":"isSqlToken.d.ts","sourceRoot":"","sources":["../../src/utilities/isSqlToken.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,aAAa,CAAC;AAmC5D,eAAO,MAAM,UAAU,GAAI,SAAS,OAAO,KAAG,OAAO,IAAI,YAmCxD,CAAC"}
@@ -17,13 +17,13 @@ const Tokens = [
17
17
  UnnestToken,
18
18
  UuidToken,
19
19
  ];
20
- const tokenNamess = Tokens.map((token) => {
20
+ const tokenNames = new Set(Tokens.map((token) => {
21
21
  const tokenTypeName = Symbol.keyFor(token);
22
22
  if (typeof tokenTypeName !== 'string') {
23
23
  throw new UnexpectedStateError('Expected token type be a symbol with inferrable key');
24
24
  }
25
25
  return tokenTypeName;
26
- });
26
+ }));
27
27
  export const isSqlToken = (subject) => {
28
28
  if (typeof subject !== 'object' || subject === null) {
29
29
  return false;
@@ -52,6 +52,6 @@ export const isSqlToken = (subject) => {
52
52
  // is because there is because it makes it difficult
53
53
  // to version Slonik plugins that are used to
54
54
  // construct custom SQL fragments.
55
- return tokenNamess.includes(tokenTypeName);
55
+ return tokenNames.has(tokenTypeName);
56
56
  };
57
57
  //# sourceMappingURL=isSqlToken.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isSqlToken.js","sourceRoot":"","sources":["../../src/utilities/isSqlToken.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,WAAW,EACX,wBAAwB,EACxB,SAAS,EACT,aAAa,EACb,eAAe,EACf,aAAa,EACb,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,EACV,cAAc,EACd,WAAW,EACX,SAAS,GACV,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,MAAM,GAAG;IACb,UAAU;IACV,WAAW;IACX,wBAAwB;IACxB,SAAS;IACT,aAAa;IACb,eAAe;IACf,aAAa;IACb,eAAe;IACf,SAAS;IACT,SAAS;IACT,UAAU;IACV,cAAc;IACd,WAAW;IACX,SAAS;CACD,CAAC;AAEX,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;IACvC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE3C,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,oBAAoB,CAC5B,qDAAqD,CACtD,CAAC;IACJ,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAgB,EAA2B,EAAE;IACtE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE/C,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,8DAA8D;IAC9D,4BAA4B;IAC5B,+BAA+B;IAC/B,8BAA8B;IAC9B,EAAE;IACF,gDAAgD;IAChD,8CAA8C;IAC9C,sDAAsD;IACtD,EAAE;IACF,yDAAyD;IACzD,oDAAoD;IACpD,6CAA6C;IAC7C,kCAAkC;IAClC,OAAO,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC7C,CAAC,CAAC"}
1
+ {"version":3,"file":"isSqlToken.js","sourceRoot":"","sources":["../../src/utilities/isSqlToken.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,WAAW,EACX,wBAAwB,EACxB,SAAS,EACT,aAAa,EACb,eAAe,EACf,aAAa,EACb,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,EACV,cAAc,EACd,WAAW,EACX,SAAS,GACV,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,MAAM,GAAG;IACb,UAAU;IACV,WAAW;IACX,wBAAwB;IACxB,SAAS;IACT,aAAa;IACb,eAAe;IACf,aAAa;IACb,eAAe;IACf,SAAS;IACT,SAAS;IACT,UAAU;IACV,cAAc;IACd,WAAW;IACX,SAAS;CACD,CAAC;AAEX,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;IACnB,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE3C,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,oBAAoB,CAC5B,qDAAqD,CACtD,CAAC;IACJ,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAgB,EAA2B,EAAE;IACtE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE/C,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,8DAA8D;IAC9D,4BAA4B;IAC5B,+BAA+B;IAC/B,8BAA8B;IAC9B,EAAE;IACF,gDAAgD;IAChD,8CAA8C;IAC9C,sDAAsD;IACtD,EAAE;IACF,yDAAyD;IACzD,oDAAoD;IACpD,6CAA6C;IAC7C,kCAAkC;IAClC,OAAO,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACvC,CAAC,CAAC"}
package/package.json CHANGED
@@ -16,8 +16,8 @@
16
16
  ]
17
17
  },
18
18
  "dependencies": {
19
- "@slonik/errors": "^48.8.11",
20
- "@slonik/types": "^48.8.11",
19
+ "@slonik/errors": "^48.8.12",
20
+ "@slonik/types": "^48.8.12",
21
21
  "roarr": "^7.21.4",
22
22
  "safe-stable-stringify": "^2.5.0",
23
23
  "serialize-error": "^12.0.0",
@@ -33,7 +33,7 @@
33
33
  "tsimp": "^2.0.12",
34
34
  "typescript": "^5.9.3",
35
35
  "typescript-eslint": "^8.47.0",
36
- "@slonik/eslint-config": "^48.8.11"
36
+ "@slonik/eslint-config": "^48.8.12"
37
37
  },
38
38
  "engines": {
39
39
  "node": ">=24"
@@ -56,7 +56,7 @@
56
56
  },
57
57
  "type": "module",
58
58
  "types": "./dist/index.d.ts",
59
- "version": "48.8.11",
59
+ "version": "48.8.12",
60
60
  "scripts": {
61
61
  "build": "rm -fr ./dist && tsc --project ./tsconfig.json",
62
62
  "lint": "npm run lint:cspell && npm run lint:eslint && npm run lint:tsc",
@@ -25,39 +25,95 @@ import {
25
25
  UnnestToken,
26
26
  UuidToken,
27
27
  } from '../tokens.js';
28
- import type { SqlFragmentToken, SqlToken as SqlTokenType } from '../types.js';
28
+ import type {
29
+ ArraySqlToken,
30
+ BinarySqlToken,
31
+ DateSqlToken,
32
+ FragmentSqlToken as FragmentSqlTokenType,
33
+ IdentifierSqlToken,
34
+ IntervalSqlToken,
35
+ JsonBinarySqlToken,
36
+ JsonSqlToken,
37
+ ListSqlToken,
38
+ QuerySqlToken,
39
+ SqlFragmentToken,
40
+ SqlToken as SqlTokenType,
41
+ TimestampSqlToken,
42
+ UnnestSqlToken,
43
+ UuidSqlToken,
44
+ } from '../types.js';
29
45
  import { UnexpectedStateError } from '@slonik/errors';
30
46
 
47
+ type TokenHandler = (
48
+ token: SqlTokenType,
49
+ greatestParameterPosition: number,
50
+ ) => SqlFragmentToken;
51
+
52
+ const tokenHandlers = new Map<symbol, TokenHandler>([
53
+ [
54
+ ArrayToken,
55
+ (token, pos) => createArraySqlFragment(token as ArraySqlToken, pos),
56
+ ],
57
+ [
58
+ BinaryToken,
59
+ (token, pos) => createBinarySqlFragment(token as BinarySqlToken, pos),
60
+ ],
61
+ [
62
+ DateToken,
63
+ (token, pos) => createDateSqlFragment(token as DateSqlToken, pos),
64
+ ],
65
+ [
66
+ FragmentToken,
67
+ (token, pos) =>
68
+ createFragmentSqlFragment(token as FragmentSqlTokenType, pos),
69
+ ],
70
+ [
71
+ IdentifierToken,
72
+ (token) => createIdentifierSqlFragment(token as IdentifierSqlToken),
73
+ ],
74
+ [
75
+ IntervalToken,
76
+ (token, pos) => createIntervalSqlFragment(token as IntervalSqlToken, pos),
77
+ ],
78
+ [
79
+ JsonBinaryToken,
80
+ (token, pos) =>
81
+ createJsonSqlFragment(token as JsonBinarySqlToken, pos, true),
82
+ ],
83
+ [
84
+ JsonToken,
85
+ (token, pos) => createJsonSqlFragment(token as JsonSqlToken, pos, false),
86
+ ],
87
+ [
88
+ ListToken,
89
+ (token, pos) => createListSqlFragment(token as ListSqlToken, pos),
90
+ ],
91
+ [
92
+ QueryToken,
93
+ (token, pos) => createQuerySqlFragment(token as QuerySqlToken, pos),
94
+ ],
95
+ [
96
+ TimestampToken,
97
+ (token, pos) => createTimestampSqlFragment(token as TimestampSqlToken, pos),
98
+ ],
99
+ [
100
+ UnnestToken,
101
+ (token, pos) => createUnnestSqlFragment(token as UnnestSqlToken, pos),
102
+ ],
103
+ [
104
+ UuidToken,
105
+ (token, pos) => createUuidSqlFragment(token as UuidSqlToken, pos),
106
+ ],
107
+ ]);
108
+
31
109
  export const createSqlTokenSqlFragment = (
32
110
  token: SqlTokenType,
33
111
  greatestParameterPosition: number,
34
112
  ): SqlFragmentToken => {
35
- if (token.type === ArrayToken) {
36
- return createArraySqlFragment(token, greatestParameterPosition);
37
- } else if (token.type === BinaryToken) {
38
- return createBinarySqlFragment(token, greatestParameterPosition);
39
- } else if (token.type === DateToken) {
40
- return createDateSqlFragment(token, greatestParameterPosition);
41
- } else if (token.type === FragmentToken) {
42
- return createFragmentSqlFragment(token, greatestParameterPosition);
43
- } else if (token.type === IdentifierToken) {
44
- return createIdentifierSqlFragment(token);
45
- } else if (token.type === IntervalToken) {
46
- return createIntervalSqlFragment(token, greatestParameterPosition);
47
- } else if (token.type === JsonBinaryToken) {
48
- return createJsonSqlFragment(token, greatestParameterPosition, true);
49
- } else if (token.type === JsonToken) {
50
- return createJsonSqlFragment(token, greatestParameterPosition, false);
51
- } else if (token.type === ListToken) {
52
- return createListSqlFragment(token, greatestParameterPosition);
53
- } else if (token.type === QueryToken) {
54
- return createQuerySqlFragment(token, greatestParameterPosition);
55
- } else if (token.type === TimestampToken) {
56
- return createTimestampSqlFragment(token, greatestParameterPosition);
57
- } else if (token.type === UnnestToken) {
58
- return createUnnestSqlFragment(token, greatestParameterPosition);
59
- } else if (token.type === UuidToken) {
60
- return createUuidSqlFragment(token, greatestParameterPosition);
113
+ const handler = tokenHandlers.get(token.type);
114
+
115
+ if (handler) {
116
+ return handler(token, greatestParameterPosition);
61
117
  }
62
118
 
63
119
  throw new UnexpectedStateError('Unexpected token type.');
@@ -35,17 +35,19 @@ const Tokens = [
35
35
  UuidToken,
36
36
  ] as const;
37
37
 
38
- const tokenNamess = Tokens.map((token) => {
39
- const tokenTypeName = Symbol.keyFor(token);
38
+ const tokenNames = new Set(
39
+ Tokens.map((token) => {
40
+ const tokenTypeName = Symbol.keyFor(token);
40
41
 
41
- if (typeof tokenTypeName !== 'string') {
42
- throw new UnexpectedStateError(
43
- 'Expected token type be a symbol with inferrable key',
44
- );
45
- }
42
+ if (typeof tokenTypeName !== 'string') {
43
+ throw new UnexpectedStateError(
44
+ 'Expected token type be a symbol with inferrable key',
45
+ );
46
+ }
46
47
 
47
- return tokenTypeName;
48
- });
48
+ return tokenTypeName;
49
+ }),
50
+ );
49
51
 
50
52
  export const isSqlToken = (subject: unknown): subject is SqlTokenType => {
51
53
  if (typeof subject !== 'object' || subject === null) {
@@ -81,5 +83,5 @@ export const isSqlToken = (subject: unknown): subject is SqlTokenType => {
81
83
  // is because there is because it makes it difficult
82
84
  // to version Slonik plugins that are used to
83
85
  // construct custom SQL fragments.
84
- return tokenNamess.includes(tokenTypeName);
86
+ return tokenNames.has(tokenTypeName);
85
87
  };