@slonik/sql-tag 43.0.8 → 45.0.0
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/createSqlTag.d.ts.map +1 -1
- package/dist/factories/createSqlTag.js +3 -0
- package/dist/factories/createSqlTag.js.map +1 -1
- package/dist/factories/createSqlTag.test/sql.test.js +8 -0
- package/dist/factories/createSqlTag.test/sql.test.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -1
- package/dist/index.js.map +1 -1
- package/dist/sqlFragmentFactories/createArraySqlFragment.js +1 -1
- package/dist/sqlFragmentFactories/createArraySqlFragment.js.map +1 -1
- package/dist/tokens.d.ts +13 -13
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +13 -13
- package/dist/tokens.js.map +1 -1
- package/dist/utilities/isSqlToken.d.ts.map +1 -1
- package/dist/utilities/isSqlToken.js +28 -3
- package/dist/utilities/isSqlToken.js.map +1 -1
- package/package.json +3 -3
- package/src/factories/createSqlTag.test/sql.test.ts +10 -0
- package/src/factories/createSqlTag.ts +9 -3
- package/src/index.ts +15 -0
- package/src/sqlFragmentFactories/createArraySqlFragment.ts +1 -1
- package/src/tokens.ts +15 -14
- package/src/utilities/isSqlToken.ts +38 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSqlTag.d.ts","sourceRoot":"","sources":["../../src/factories/createSqlTag.ts"],"names":[],"mappings":"AAeA,OAAO,EAEL,KAAK,MAAM,EAEZ,MAAM,UAAU,CAAC;AAQlB,OAAO,EAAE,CAAC,EAAmB,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"createSqlTag.d.ts","sourceRoot":"","sources":["../../src/factories/createSqlTag.ts"],"names":[],"mappings":"AAeA,OAAO,EAEL,KAAK,MAAM,EAEZ,MAAM,UAAU,CAAC;AAQlB,OAAO,EAAE,CAAC,EAAmB,MAAM,KAAK,CAAC;AA+EzC,eAAO,MAAM,YAAY,0FAKR;IACb,WAAW,CAAC,EAAE,CAAC,CAAC;CACjB,KACA,OAAO,CAAC,CAsHV,CAAC"}
|
|
@@ -15,6 +15,9 @@ const log = Logger_1.Logger.child({
|
|
|
15
15
|
namespace: 'sql',
|
|
16
16
|
});
|
|
17
17
|
const createFragment = (parts, values) => {
|
|
18
|
+
if (!Array.isArray(parts.raw) || !Object.isFrozen(parts.raw)) {
|
|
19
|
+
throw new errors_1.InvalidInputError('Function must be called as a template literal.');
|
|
20
|
+
}
|
|
18
21
|
let rawSql = '';
|
|
19
22
|
const parameterValues = [];
|
|
20
23
|
let index = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSqlTag.js","sourceRoot":"","sources":["../../src/factories/createSqlTag.ts"],"names":[],"mappings":";;;AAAA,sCAAmC;AACnC,sCAamB;AAMnB,wEAAqE;AACrE,kFAA+E;AAC/E,wFAAqF;AACrF,wDAAqD;AACrD,8DAA2D;AAC3D,2EAAwE;AACxE,2CAAmD;AACnD,6BAAyC;AAEzC,MAAM,GAAG,GAAG,eAAM,CAAC,KAAK,CAAC;IACvB,SAAS,EAAE,KAAK;CACjB,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CACrB,
|
|
1
|
+
{"version":3,"file":"createSqlTag.js","sourceRoot":"","sources":["../../src/factories/createSqlTag.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const tokens_1 = require("../../tokens");
|
|
7
7
|
const createSqlTag_1 = require("../createSqlTag");
|
|
8
|
+
const errors_1 = require("@slonik/errors");
|
|
8
9
|
const ava_1 = __importDefault(require("ava"));
|
|
9
10
|
const roarr_1 = require("roarr");
|
|
10
11
|
const test = ava_1.default;
|
|
@@ -15,6 +16,13 @@ test.beforeEach((t) => {
|
|
|
15
16
|
t.context.logs.push(JSON.parse(message));
|
|
16
17
|
};
|
|
17
18
|
});
|
|
19
|
+
test('throws error if called as a function', (t) => {
|
|
20
|
+
const error = t.throws(() => {
|
|
21
|
+
// @ts-expect-error - intentional
|
|
22
|
+
sql.fragment([`SELECT 1`]);
|
|
23
|
+
});
|
|
24
|
+
t.true(error instanceof errors_1.InvalidInputError);
|
|
25
|
+
});
|
|
18
26
|
test('creates an object describing a query', (t) => {
|
|
19
27
|
const query = sql.fragment `SELECT 1`;
|
|
20
28
|
t.deepEqual(query, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql.test.js","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/sql.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sql.test.js","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/sql.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { createSqlTag } from './factories/createSqlTag';
|
|
2
2
|
export { createSqlTokenSqlFragment } from './factories/createSqlTokenSqlFragment';
|
|
3
|
+
export { ArrayToken, BinaryToken, ComparisonPredicateToken, DateToken, FragmentToken, IdentifierToken, IntervalToken, JsonBinaryToken, JsonToken, ListToken, QueryToken, TimestampToken, UnnestToken, } from './tokens';
|
|
3
4
|
export { type ArraySqlToken, type BinarySqlToken, type DateSqlToken, type FragmentSqlToken, type IdentifierSqlToken, type IntervalInput, type IntervalSqlToken, type JsonBinarySqlToken, type JsonSqlToken, type ListSqlToken, type PrimitiveValueExpression, type QuerySqlToken, type SerializableValue, type SqlFragmentToken, type SqlTag, type SqlToken, type TimestampSqlToken, type UnnestSqlToken, type ValueExpression, } from './types';
|
|
4
5
|
export { isSqlToken } from './utilities/isSqlToken';
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,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,GACZ,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isSqlToken = exports.createSqlTokenSqlFragment = exports.createSqlTag = void 0;
|
|
3
|
+
exports.isSqlToken = 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 = exports.createSqlTokenSqlFragment = exports.createSqlTag = void 0;
|
|
4
4
|
var createSqlTag_1 = require("./factories/createSqlTag");
|
|
5
5
|
Object.defineProperty(exports, "createSqlTag", { enumerable: true, get: function () { return createSqlTag_1.createSqlTag; } });
|
|
6
6
|
var createSqlTokenSqlFragment_1 = require("./factories/createSqlTokenSqlFragment");
|
|
7
7
|
Object.defineProperty(exports, "createSqlTokenSqlFragment", { enumerable: true, get: function () { return createSqlTokenSqlFragment_1.createSqlTokenSqlFragment; } });
|
|
8
|
+
var tokens_1 = require("./tokens");
|
|
9
|
+
Object.defineProperty(exports, "ArrayToken", { enumerable: true, get: function () { return tokens_1.ArrayToken; } });
|
|
10
|
+
Object.defineProperty(exports, "BinaryToken", { enumerable: true, get: function () { return tokens_1.BinaryToken; } });
|
|
11
|
+
Object.defineProperty(exports, "ComparisonPredicateToken", { enumerable: true, get: function () { return tokens_1.ComparisonPredicateToken; } });
|
|
12
|
+
Object.defineProperty(exports, "DateToken", { enumerable: true, get: function () { return tokens_1.DateToken; } });
|
|
13
|
+
Object.defineProperty(exports, "FragmentToken", { enumerable: true, get: function () { return tokens_1.FragmentToken; } });
|
|
14
|
+
Object.defineProperty(exports, "IdentifierToken", { enumerable: true, get: function () { return tokens_1.IdentifierToken; } });
|
|
15
|
+
Object.defineProperty(exports, "IntervalToken", { enumerable: true, get: function () { return tokens_1.IntervalToken; } });
|
|
16
|
+
Object.defineProperty(exports, "JsonBinaryToken", { enumerable: true, get: function () { return tokens_1.JsonBinaryToken; } });
|
|
17
|
+
Object.defineProperty(exports, "JsonToken", { enumerable: true, get: function () { return tokens_1.JsonToken; } });
|
|
18
|
+
Object.defineProperty(exports, "ListToken", { enumerable: true, get: function () { return tokens_1.ListToken; } });
|
|
19
|
+
Object.defineProperty(exports, "QueryToken", { enumerable: true, get: function () { return tokens_1.QueryToken; } });
|
|
20
|
+
Object.defineProperty(exports, "TimestampToken", { enumerable: true, get: function () { return tokens_1.TimestampToken; } });
|
|
21
|
+
Object.defineProperty(exports, "UnnestToken", { enumerable: true, get: function () { return tokens_1.UnnestToken; } });
|
|
8
22
|
var isSqlToken_1 = require("./utilities/isSqlToken");
|
|
9
23
|
Object.defineProperty(exports, "isSqlToken", { enumerable: true, get: function () { return isSqlToken_1.isSqlToken; } });
|
|
10
24
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yDAAwD;AAA/C,4GAAA,YAAY,OAAA;AACrB,mFAAkF;AAAzE,sIAAA,yBAAyB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yDAAwD;AAA/C,4GAAA,YAAY,OAAA;AACrB,mFAAkF;AAAzE,sIAAA,yBAAyB,OAAA;AAClC,mCAckB;AAbhB,oGAAA,UAAU,OAAA;AACV,qGAAA,WAAW,OAAA;AACX,kHAAA,wBAAwB,OAAA;AACxB,mGAAA,SAAS,OAAA;AACT,uGAAA,aAAa,OAAA;AACb,yGAAA,eAAe,OAAA;AACf,uGAAA,aAAa,OAAA;AACb,yGAAA,eAAe,OAAA;AACf,mGAAA,SAAS,OAAA;AACT,mGAAA,SAAS,OAAA;AACT,oGAAA,UAAU,OAAA;AACV,wGAAA,cAAc,OAAA;AACd,qGAAA,WAAW,OAAA;AAuBb,qDAAoD;AAA3C,wGAAA,UAAU,OAAA"}
|
|
@@ -27,7 +27,7 @@ const createArraySqlFragment = (token, greatestParameterPosition) => {
|
|
|
27
27
|
placeholderIndex++;
|
|
28
28
|
let sql = (0, formatSlonikPlaceholder_1.formatSlonikPlaceholder)(placeholderIndex) + '::';
|
|
29
29
|
if ((0, isSqlToken_1.isSqlToken)(token.memberType) &&
|
|
30
|
-
token.memberType.type === 'SLONIK_TOKEN_FRAGMENT') {
|
|
30
|
+
Symbol.keyFor(token.memberType.type) === 'SLONIK_TOKEN_FRAGMENT') {
|
|
31
31
|
const sqlFragment = (0, createSqlTokenSqlFragment_1.createSqlTokenSqlFragment)(token.memberType, placeholderIndex);
|
|
32
32
|
if (sqlFragment.values.length > 0) {
|
|
33
33
|
throw new errors_1.UnexpectedStateError('Type is not expected to have a value binding.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createArraySqlFragment.js","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createArraySqlFragment.ts"],"names":[],"mappings":";;;AAAA,sFAAmF;AACnF,sCAA0C;AAE1C,oEAAiE;AACjE,kFAA+E;AAC/E,wFAAqF;AACrF,wDAAqD;AACrD,2CAAyE;AAElE,MAAM,sBAAsB,GAAG,CACpC,KAAoB,EACpB,yBAAiC,EACf,EAAE;IACpB,IAAI,gBAAgB,GAAG,yBAAyB,CAAC;IAEjD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,SAAS;YACX,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,0BAAiB,CACzB,kEAAkE,CACnE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAA,uDAA0B,EAAC,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,0BAAiB,CACzB,kEAAkE,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE9B,gBAAgB,EAAE,CAAC;IAEnB,IAAI,GAAG,GAAG,IAAA,iDAAuB,EAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAE3D,IACE,IAAA,uBAAU,EAAC,KAAK,CAAC,UAAU,CAAC;QAC5B,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,uBAAuB,
|
|
1
|
+
{"version":3,"file":"createArraySqlFragment.js","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createArraySqlFragment.ts"],"names":[],"mappings":";;;AAAA,sFAAmF;AACnF,sCAA0C;AAE1C,oEAAiE;AACjE,kFAA+E;AAC/E,wFAAqF;AACrF,wDAAqD;AACrD,2CAAyE;AAElE,MAAM,sBAAsB,GAAG,CACpC,KAAoB,EACpB,yBAAiC,EACf,EAAE;IACpB,IAAI,gBAAgB,GAAG,yBAAyB,CAAC;IAEjD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,SAAS;YACX,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,0BAAiB,CACzB,kEAAkE,CACnE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAA,uDAA0B,EAAC,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,0BAAiB,CACzB,kEAAkE,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE9B,gBAAgB,EAAE,CAAC;IAEnB,IAAI,GAAG,GAAG,IAAA,iDAAuB,EAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAE3D,IACE,IAAA,uBAAU,EAAC,KAAK,CAAC,UAAU,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,uBAAuB,EAChE,CAAC;QACD,MAAM,WAAW,GAAG,IAAA,qDAAyB,EAC3C,KAAK,CAAC,UAAU,EAChB,gBAAgB,CACjB,CAAC;QAEF,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,6BAAoB,CAC5B,+CAA+C,CAChD,CAAC;QACJ,CAAC;QAED,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC;IACzB,CAAC;SAAM,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAChD,GAAG,IAAI,IAAA,mCAAgB,EAAC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,0BAAiB,CACzB,sGAAsG,CACvG,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG;QACH,IAAI,EAAE,sBAAa;QACnB,MAAM;KACP,CAAC;AACJ,CAAC,CAAC;AA3DW,QAAA,sBAAsB,0BA2DjC"}
|
package/dist/tokens.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
export declare const ArrayToken:
|
|
2
|
-
export declare const BinaryToken:
|
|
3
|
-
export declare const ComparisonPredicateToken:
|
|
4
|
-
export declare const DateToken:
|
|
5
|
-
export declare const FragmentToken:
|
|
6
|
-
export declare const IdentifierToken:
|
|
7
|
-
export declare const IntervalToken:
|
|
8
|
-
export declare const JsonBinaryToken:
|
|
9
|
-
export declare const JsonToken:
|
|
10
|
-
export declare const ListToken:
|
|
11
|
-
export declare const QueryToken:
|
|
12
|
-
export declare const TimestampToken:
|
|
13
|
-
export declare const UnnestToken:
|
|
1
|
+
export declare const ArrayToken: unique symbol;
|
|
2
|
+
export declare const BinaryToken: unique symbol;
|
|
3
|
+
export declare const ComparisonPredicateToken: unique symbol;
|
|
4
|
+
export declare const DateToken: unique symbol;
|
|
5
|
+
export declare const FragmentToken: unique symbol;
|
|
6
|
+
export declare const IdentifierToken: unique symbol;
|
|
7
|
+
export declare const IntervalToken: unique symbol;
|
|
8
|
+
export declare const JsonBinaryToken: unique symbol;
|
|
9
|
+
export declare const JsonToken: unique symbol;
|
|
10
|
+
export declare const ListToken: unique symbol;
|
|
11
|
+
export declare const QueryToken: unique symbol;
|
|
12
|
+
export declare const TimestampToken: unique symbol;
|
|
13
|
+
export declare const UnnestToken: unique symbol;
|
|
14
14
|
//# sourceMappingURL=tokens.d.ts.map
|
package/dist/tokens.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,eAAmC,CAAC;AAC3D,eAAO,MAAM,WAAW,eAAoC,CAAC;AAC7D,eAAO,MAAM,wBAAwB,eAEpC,CAAC;AACF,eAAO,MAAM,SAAS,eAAkC,CAAC;AACzD,eAAO,MAAM,aAAa,eAAsC,CAAC;AACjE,eAAO,MAAM,eAAe,eAAwC,CAAC;AACrE,eAAO,MAAM,aAAa,eAAsC,CAAC;AACjE,eAAO,MAAM,eAAe,eAAyC,CAAC;AACtE,eAAO,MAAM,SAAS,eAAkC,CAAC;AACzD,eAAO,MAAM,SAAS,eAAkC,CAAC;AACzD,eAAO,MAAM,UAAU,eAAmC,CAAC;AAC3D,eAAO,MAAM,cAAc,eAAuC,CAAC;AACnE,eAAO,MAAM,WAAW,eAAoC,CAAC"}
|
package/dist/tokens.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
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';
|
|
4
|
+
exports.ArrayToken = Symbol.for('SLONIK_TOKEN_ARRAY');
|
|
5
|
+
exports.BinaryToken = Symbol.for('SLONIK_TOKEN_BINARY');
|
|
6
|
+
exports.ComparisonPredicateToken = Symbol.for('SLONIK_TOKEN_COMPARISON_PREDICATE');
|
|
7
|
+
exports.DateToken = Symbol.for('SLONIK_TOKEN_DATE');
|
|
8
|
+
exports.FragmentToken = Symbol.for('SLONIK_TOKEN_FRAGMENT');
|
|
9
|
+
exports.IdentifierToken = Symbol.for('SLONIK_TOKEN_IDENTIFIER');
|
|
10
|
+
exports.IntervalToken = Symbol.for('SLONIK_TOKEN_INTERVAL');
|
|
11
|
+
exports.JsonBinaryToken = Symbol.for('SLONIK_TOKEN_JSON_BINARY');
|
|
12
|
+
exports.JsonToken = Symbol.for('SLONIK_TOKEN_JSON');
|
|
13
|
+
exports.ListToken = Symbol.for('SLONIK_TOKEN_LIST');
|
|
14
|
+
exports.QueryToken = Symbol.for('SLONIK_TOKEN_QUERY');
|
|
15
|
+
exports.TimestampToken = Symbol.for('SLONIK_TOKEN_TIMESTAMP');
|
|
16
|
+
exports.UnnestToken = Symbol.for('SLONIK_TOKEN_UNNEST');
|
|
17
17
|
//# sourceMappingURL=tokens.js.map
|
package/dist/tokens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC9C,QAAA,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAChD,QAAA,wBAAwB,GAAG,MAAM,CAAC,GAAG,CAChD,mCAAmC,CACpC,CAAC;AACW,QAAA,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAC5C,QAAA,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACpD,QAAA,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACxD,QAAA,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACpD,QAAA,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AACzD,QAAA,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAC5C,QAAA,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAC5C,QAAA,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC9C,QAAA,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACtD,QAAA,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isSqlToken.d.ts","sourceRoot":"","sources":["../../src/utilities/isSqlToken.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,QAAQ,IAAI,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"isSqlToken.d.ts","sourceRoot":"","sources":["../../src/utilities/isSqlToken.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,QAAQ,IAAI,YAAY,EAAE,MAAM,UAAU,CAAC;AAgCzD,eAAO,MAAM,UAAU,YAAa,OAAO,4BAuC1C,CAAC"}
|
|
@@ -19,6 +19,13 @@ const Tokens = [
|
|
|
19
19
|
tokens_1.TimestampToken,
|
|
20
20
|
tokens_1.UnnestToken,
|
|
21
21
|
];
|
|
22
|
+
const tokenNamess = Tokens.map((token) => {
|
|
23
|
+
const tokenTypeName = Symbol.keyFor(token);
|
|
24
|
+
if (typeof tokenTypeName !== 'string') {
|
|
25
|
+
throw new errors_1.UnexpectedStateError('Expected token type be a symbol with inferrable key');
|
|
26
|
+
}
|
|
27
|
+
return tokenTypeName;
|
|
28
|
+
});
|
|
22
29
|
const isSqlToken = (subject) => {
|
|
23
30
|
if (typeof subject !== 'object' || subject === null) {
|
|
24
31
|
return false;
|
|
@@ -26,10 +33,28 @@ const isSqlToken = (subject) => {
|
|
|
26
33
|
if (!(0, hasOwnProperty_1.hasOwnProperty)(subject, 'type')) {
|
|
27
34
|
throw new errors_1.UnexpectedStateError('Expected token to include "type" property.');
|
|
28
35
|
}
|
|
29
|
-
|
|
30
|
-
|
|
36
|
+
const tokenType = subject.type;
|
|
37
|
+
if (typeof tokenType !== 'symbol') {
|
|
38
|
+
throw new errors_1.UnexpectedStateError('Expected type to be symbol.');
|
|
39
|
+
}
|
|
40
|
+
const tokenTypeName = Symbol.keyFor(tokenType);
|
|
41
|
+
if (typeof tokenTypeName !== 'string') {
|
|
42
|
+
throw new errors_1.UnexpectedStateError('Expected token type to be a symbol with inferrable key');
|
|
31
43
|
}
|
|
32
|
-
|
|
44
|
+
// It is worth clarifying that we don't care if symbols match.
|
|
45
|
+
// However, we do care that:
|
|
46
|
+
// 1) the type is a symbol; and
|
|
47
|
+
// 2) we can recognize the key
|
|
48
|
+
//
|
|
49
|
+
// The reason we care that the type is a symbol,
|
|
50
|
+
// is because it makes it impossible to inject
|
|
51
|
+
// it from outside of the codebase, e.g. through JSON.
|
|
52
|
+
//
|
|
53
|
+
// The reason we don't try to match instance of an object
|
|
54
|
+
// is because there is because it makes it difficult
|
|
55
|
+
// to version Slonik plugins that are used to
|
|
56
|
+
// construct custom SQL fragments.
|
|
57
|
+
return tokenNamess.includes(tokenTypeName);
|
|
33
58
|
};
|
|
34
59
|
exports.isSqlToken = isSqlToken;
|
|
35
60
|
//# sourceMappingURL=isSqlToken.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isSqlToken.js","sourceRoot":"","sources":["../../src/utilities/isSqlToken.ts"],"names":[],"mappings":";;;AAAA,sCAcmB;AAEnB,qDAAkD;AAClD,2CAAsD;AAEtD,MAAM,MAAM,GAAG;IACb,mBAAU;IACV,oBAAW;IACX,iCAAwB;IACxB,kBAAS;IACT,sBAAa;IACb,wBAAe;IACf,sBAAa;IACb,wBAAe;IACf,kBAAS;IACT,kBAAS;IACT,mBAAU;IACV,uBAAc;IACd,oBAAW;CACH,CAAC;
|
|
1
|
+
{"version":3,"file":"isSqlToken.js","sourceRoot":"","sources":["../../src/utilities/isSqlToken.ts"],"names":[],"mappings":";;;AAAA,sCAcmB;AAEnB,qDAAkD;AAClD,2CAAsD;AAEtD,MAAM,MAAM,GAAG;IACb,mBAAU;IACV,oBAAW;IACX,iCAAwB;IACxB,kBAAS;IACT,sBAAa;IACb,wBAAe;IACf,sBAAa;IACb,wBAAe;IACf,kBAAS;IACT,kBAAS;IACT,mBAAU;IACV,uBAAc;IACd,oBAAW;CACH,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,6BAAoB,CAC5B,qDAAqD,CACtD,CAAC;IACJ,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC,CAAC;AAEI,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,IAAA,+BAAc,EAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,6BAAoB,CAC5B,4CAA4C,CAC7C,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,6BAAoB,CAAC,6BAA6B,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE/C,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,6BAAoB,CAC5B,wDAAwD,CACzD,CAAC;IACJ,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;AAvCW,QAAA,UAAU,cAuCrB"}
|
package/package.json
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
]
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@slonik/errors": "^
|
|
20
|
-
"@slonik/types": "^
|
|
19
|
+
"@slonik/errors": "^45.0.0",
|
|
20
|
+
"@slonik/types": "^45.0.0",
|
|
21
21
|
"roarr": "^7.21.1",
|
|
22
22
|
"safe-stable-stringify": "^2.4.3",
|
|
23
23
|
"serialize-error": "^8.0.0"
|
|
@@ -83,5 +83,5 @@
|
|
|
83
83
|
"test": "nyc ava --verbose --serial"
|
|
84
84
|
},
|
|
85
85
|
"types": "./dist/index.d.ts",
|
|
86
|
-
"version": "
|
|
86
|
+
"version": "45.0.0"
|
|
87
87
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { FragmentToken } from '../../tokens';
|
|
2
2
|
import { createSqlTag } from '../createSqlTag';
|
|
3
|
+
import { InvalidInputError } from '@slonik/errors';
|
|
3
4
|
import anyTest, { type TestFn } from 'ava';
|
|
4
5
|
import { ROARR } from 'roarr';
|
|
5
6
|
|
|
@@ -17,6 +18,15 @@ test.beforeEach((t) => {
|
|
|
17
18
|
};
|
|
18
19
|
});
|
|
19
20
|
|
|
21
|
+
test('throws error if called as a function', (t) => {
|
|
22
|
+
const error = t.throws(() => {
|
|
23
|
+
// @ts-expect-error - intentional
|
|
24
|
+
sql.fragment([`SELECT 1`]);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
t.true(error instanceof InvalidInputError);
|
|
28
|
+
});
|
|
29
|
+
|
|
20
30
|
test('creates an object describing a query', (t) => {
|
|
21
31
|
const query = sql.fragment`SELECT 1`;
|
|
22
32
|
|
|
@@ -32,9 +32,15 @@ const log = Logger.child({
|
|
|
32
32
|
});
|
|
33
33
|
|
|
34
34
|
const createFragment = (
|
|
35
|
-
parts:
|
|
35
|
+
parts: TemplateStringsArray,
|
|
36
36
|
values: readonly ValueExpression[],
|
|
37
37
|
) => {
|
|
38
|
+
if (!Array.isArray(parts.raw) || !Object.isFrozen(parts.raw)) {
|
|
39
|
+
throw new InvalidInputError(
|
|
40
|
+
'Function must be called as a template literal.',
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
|
|
38
44
|
let rawSql = '';
|
|
39
45
|
|
|
40
46
|
const parameterValues: PrimitiveValueExpression[] = [];
|
|
@@ -181,7 +187,7 @@ export const createSqlTag = <
|
|
|
181
187
|
},
|
|
182
188
|
type: (parser) => {
|
|
183
189
|
return (
|
|
184
|
-
parts:
|
|
190
|
+
parts: TemplateStringsArray,
|
|
185
191
|
...args: readonly ValueExpression[]
|
|
186
192
|
) => {
|
|
187
193
|
return Object.freeze({
|
|
@@ -199,7 +205,7 @@ export const createSqlTag = <
|
|
|
199
205
|
}
|
|
200
206
|
|
|
201
207
|
return (
|
|
202
|
-
parts:
|
|
208
|
+
parts: TemplateStringsArray,
|
|
203
209
|
...args: readonly ValueExpression[]
|
|
204
210
|
) => {
|
|
205
211
|
return Object.freeze({
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
export { createSqlTag } from './factories/createSqlTag';
|
|
2
2
|
export { createSqlTokenSqlFragment } from './factories/createSqlTokenSqlFragment';
|
|
3
|
+
export {
|
|
4
|
+
ArrayToken,
|
|
5
|
+
BinaryToken,
|
|
6
|
+
ComparisonPredicateToken,
|
|
7
|
+
DateToken,
|
|
8
|
+
FragmentToken,
|
|
9
|
+
IdentifierToken,
|
|
10
|
+
IntervalToken,
|
|
11
|
+
JsonBinaryToken,
|
|
12
|
+
JsonToken,
|
|
13
|
+
ListToken,
|
|
14
|
+
QueryToken,
|
|
15
|
+
TimestampToken,
|
|
16
|
+
UnnestToken,
|
|
17
|
+
} from './tokens';
|
|
3
18
|
export {
|
|
4
19
|
type ArraySqlToken,
|
|
5
20
|
type BinarySqlToken,
|
|
@@ -39,7 +39,7 @@ export const createArraySqlFragment = (
|
|
|
39
39
|
|
|
40
40
|
if (
|
|
41
41
|
isSqlToken(token.memberType) &&
|
|
42
|
-
token.memberType.type === 'SLONIK_TOKEN_FRAGMENT'
|
|
42
|
+
Symbol.keyFor(token.memberType.type) === 'SLONIK_TOKEN_FRAGMENT'
|
|
43
43
|
) {
|
|
44
44
|
const sqlFragment = createSqlTokenSqlFragment(
|
|
45
45
|
token.memberType,
|
package/src/tokens.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
export const ArrayToken = 'SLONIK_TOKEN_ARRAY'
|
|
2
|
-
export const BinaryToken = 'SLONIK_TOKEN_BINARY'
|
|
3
|
-
export const ComparisonPredicateToken =
|
|
4
|
-
'SLONIK_TOKEN_COMPARISON_PREDICATE'
|
|
5
|
-
|
|
6
|
-
export const
|
|
7
|
-
export const
|
|
8
|
-
export const
|
|
9
|
-
export const
|
|
10
|
-
export const
|
|
11
|
-
export const
|
|
12
|
-
export const
|
|
13
|
-
export const
|
|
14
|
-
export const
|
|
1
|
+
export const ArrayToken = Symbol.for('SLONIK_TOKEN_ARRAY');
|
|
2
|
+
export const BinaryToken = Symbol.for('SLONIK_TOKEN_BINARY');
|
|
3
|
+
export const ComparisonPredicateToken = Symbol.for(
|
|
4
|
+
'SLONIK_TOKEN_COMPARISON_PREDICATE',
|
|
5
|
+
);
|
|
6
|
+
export const DateToken = Symbol.for('SLONIK_TOKEN_DATE');
|
|
7
|
+
export const FragmentToken = Symbol.for('SLONIK_TOKEN_FRAGMENT');
|
|
8
|
+
export const IdentifierToken = Symbol.for('SLONIK_TOKEN_IDENTIFIER');
|
|
9
|
+
export const IntervalToken = Symbol.for('SLONIK_TOKEN_INTERVAL');
|
|
10
|
+
export const JsonBinaryToken = Symbol.for('SLONIK_TOKEN_JSON_BINARY');
|
|
11
|
+
export const JsonToken = Symbol.for('SLONIK_TOKEN_JSON');
|
|
12
|
+
export const ListToken = Symbol.for('SLONIK_TOKEN_LIST');
|
|
13
|
+
export const QueryToken = Symbol.for('SLONIK_TOKEN_QUERY');
|
|
14
|
+
export const TimestampToken = Symbol.for('SLONIK_TOKEN_TIMESTAMP');
|
|
15
|
+
export const UnnestToken = Symbol.for('SLONIK_TOKEN_UNNEST');
|
|
@@ -33,6 +33,18 @@ const Tokens = [
|
|
|
33
33
|
UnnestToken,
|
|
34
34
|
] as const;
|
|
35
35
|
|
|
36
|
+
const tokenNamess = Tokens.map((token) => {
|
|
37
|
+
const tokenTypeName = Symbol.keyFor(token);
|
|
38
|
+
|
|
39
|
+
if (typeof tokenTypeName !== 'string') {
|
|
40
|
+
throw new UnexpectedStateError(
|
|
41
|
+
'Expected token type be a symbol with inferrable key',
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return tokenTypeName;
|
|
46
|
+
});
|
|
47
|
+
|
|
36
48
|
export const isSqlToken = (subject: unknown): subject is SqlTokenType => {
|
|
37
49
|
if (typeof subject !== 'object' || subject === null) {
|
|
38
50
|
return false;
|
|
@@ -44,9 +56,32 @@ export const isSqlToken = (subject: unknown): subject is SqlTokenType => {
|
|
|
44
56
|
);
|
|
45
57
|
}
|
|
46
58
|
|
|
47
|
-
|
|
48
|
-
|
|
59
|
+
const tokenType = subject.type;
|
|
60
|
+
|
|
61
|
+
if (typeof tokenType !== 'symbol') {
|
|
62
|
+
throw new UnexpectedStateError('Expected type to be symbol.');
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const tokenTypeName = Symbol.keyFor(tokenType);
|
|
66
|
+
|
|
67
|
+
if (typeof tokenTypeName !== 'string') {
|
|
68
|
+
throw new UnexpectedStateError(
|
|
69
|
+
'Expected token type to be a symbol with inferrable key',
|
|
70
|
+
);
|
|
49
71
|
}
|
|
50
72
|
|
|
51
|
-
|
|
73
|
+
// It is worth clarifying that we don't care if symbols match.
|
|
74
|
+
// However, we do care that:
|
|
75
|
+
// 1) the type is a symbol; and
|
|
76
|
+
// 2) we can recognize the key
|
|
77
|
+
//
|
|
78
|
+
// The reason we care that the type is a symbol,
|
|
79
|
+
// is because it makes it impossible to inject
|
|
80
|
+
// it from outside of the codebase, e.g. through JSON.
|
|
81
|
+
//
|
|
82
|
+
// The reason we don't try to match instance of an object
|
|
83
|
+
// is because there is because it makes it difficult
|
|
84
|
+
// to version Slonik plugins that are used to
|
|
85
|
+
// construct custom SQL fragments.
|
|
86
|
+
return tokenNamess.includes(tokenTypeName);
|
|
52
87
|
};
|