@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.
- package/dist/factories/createSqlTokenSqlFragment.d.ts.map +1 -1
- package/dist/factories/createSqlTokenSqlFragment.js +57 -38
- package/dist/factories/createSqlTokenSqlFragment.js.map +1 -1
- package/dist/utilities/isSqlToken.d.ts.map +1 -1
- package/dist/utilities/isSqlToken.js +3 -3
- package/dist/utilities/isSqlToken.js.map +1 -1
- package/package.json +4 -4
- package/src/factories/createSqlTokenSqlFragment.ts +83 -27
- package/src/utilities/isSqlToken.ts +12 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSqlTokenSqlFragment.d.ts","sourceRoot":"","sources":["../../src/factories/createSqlTokenSqlFragment.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,
|
|
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
|
-
|
|
17
|
-
|
|
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;
|
|
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;
|
|
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
|
|
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
|
|
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,
|
|
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.
|
|
20
|
-
"@slonik/types": "^48.8.
|
|
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.
|
|
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.
|
|
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 {
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return
|
|
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
|
|
39
|
-
|
|
38
|
+
const tokenNames = new Set(
|
|
39
|
+
Tokens.map((token) => {
|
|
40
|
+
const tokenTypeName = Symbol.keyFor(token);
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
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
|
|
86
|
+
return tokenNames.has(tokenTypeName);
|
|
85
87
|
};
|