@slonik/sql-tag 46.2.0 → 46.4.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 +6 -0
- package/dist/factories/createSqlTag.js.map +1 -1
- package/dist/factories/createSqlTag.test/uuid.test.d.ts +2 -0
- package/dist/factories/createSqlTag.test/uuid.test.d.ts.map +1 -0
- package/dist/factories/createSqlTag.test/uuid.test.js +24 -0
- package/dist/factories/createSqlTag.test/uuid.test.js.map +1 -0
- package/dist/factories/createSqlTokenSqlFragment.d.ts.map +1 -1
- package/dist/factories/createSqlTokenSqlFragment.js +4 -0
- package/dist/factories/createSqlTokenSqlFragment.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/sqlFragmentFactories/createUuidSqlFragment.d.ts +4 -0
- package/dist/sqlFragmentFactories/createUuidSqlFragment.d.ts.map +1 -0
- package/dist/sqlFragmentFactories/createUuidSqlFragment.js +23 -0
- package/dist/sqlFragmentFactories/createUuidSqlFragment.js.map +1 -0
- package/dist/tokens.d.ts +1 -0
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +2 -1
- package/dist/tokens.js.map +1 -1
- package/dist/types.d.ts +41 -36
- package/dist/types.d.ts.map +1 -1
- package/dist/utilities/isSqlToken.d.ts.map +1 -1
- package/dist/utilities/isSqlToken.js +1 -0
- package/dist/utilities/isSqlToken.js.map +1 -1
- package/package.json +5 -5
- package/src/factories/createSqlTag.test/uuid.test.ts +25 -0
- package/src/factories/createSqlTag.ts +8 -0
- package/src/factories/createSqlTokenSqlFragment.ts +4 -0
- package/src/index.ts +2 -0
- package/src/sqlFragmentFactories/createUuidSqlFragment.ts +28 -0
- package/src/tokens.ts +1 -0
- package/src/types.ts +88 -81
- package/src/utilities/isSqlToken.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSqlTag.d.ts","sourceRoot":"","sources":["../../src/factories/createSqlTag.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createSqlTag.d.ts","sourceRoot":"","sources":["../../src/factories/createSqlTag.ts"],"names":[],"mappings":"AAiBA,OAAO,EAEL,KAAK,MAAM,EAEZ,MAAM,UAAU,CAAC;AAQlB,OAAO,EAAK,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AA+EzC,eAAO,MAAM,YAAY,GACvB,CAAC,SAAS,WAAW,EACrB,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,kBAEP;IACb,WAAW,CAAC,EAAE,CAAC,CAAC;CACjB,KACA,MAAM,CAAC,CAAC,CA4HV,CAAC"}
|
|
@@ -167,6 +167,12 @@ const createSqlTag = (configuration = {}) => {
|
|
|
167
167
|
type: tokens_1.QueryToken,
|
|
168
168
|
});
|
|
169
169
|
},
|
|
170
|
+
uuid: (uuid) => {
|
|
171
|
+
return Object.freeze({
|
|
172
|
+
type: tokens_1.UuidToken,
|
|
173
|
+
uuid: uuid,
|
|
174
|
+
});
|
|
175
|
+
},
|
|
170
176
|
};
|
|
171
177
|
};
|
|
172
178
|
exports.createSqlTag = createSqlTag;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSqlTag.js","sourceRoot":"","sources":["../../src/factories/createSqlTag.ts"],"names":[],"mappings":";;;AAAA,sCAAmC;
|
|
1
|
+
{"version":3,"file":"createSqlTag.js","sourceRoot":"","sources":["../../src/factories/createSqlTag.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid.test.d.ts","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/uuid.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
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 tokens_1 = require("../../tokens");
|
|
7
|
+
const createSqlTag_1 = require("../createSqlTag");
|
|
8
|
+
const ava_1 = __importDefault(require("ava"));
|
|
9
|
+
const sql = (0, createSqlTag_1.createSqlTag)();
|
|
10
|
+
(0, ava_1.default)('binds a uuid', (t) => {
|
|
11
|
+
const query = sql.fragment `SELECT ${sql.uuid('00000000-0000-0000-0000-000000000000')}`;
|
|
12
|
+
t.deepEqual(query, {
|
|
13
|
+
sql: 'SELECT $slonik_1::uuid',
|
|
14
|
+
type: tokens_1.FragmentToken,
|
|
15
|
+
values: ['00000000-0000-0000-0000-000000000000'],
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
(0, ava_1.default)('throws if not valid uuid', (t) => {
|
|
19
|
+
const error = t.throws(() => {
|
|
20
|
+
sql.fragment `SELECT ${sql.uuid('1')}`;
|
|
21
|
+
});
|
|
22
|
+
t.is(error?.message, 'UUID parameter value must be a valid UUID.');
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=uuid.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid.test.js","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/uuid.test.ts"],"names":[],"mappings":";;;;;AAAA,yCAA6C;AAC7C,kDAA+C;AAC/C,8CAAuB;AAEvB,MAAM,GAAG,GAAG,IAAA,2BAAY,GAAE,CAAC;AAE3B,IAAA,aAAI,EAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE;IACzB,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,IAAI,CAC1C,sCAAsC,CACvC,EAAE,CAAC;IAEJ,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,wBAAwB;QAC7B,IAAI,EAAE,sBAAa;QACnB,MAAM,EAAE,CAAC,sCAAsC,CAAC;KACjD,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,0BAA0B,EAAE,CAAC,CAAC,EAAE,EAAE;IACrC,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;QAC1B,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,4CAA4C,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSqlTokenSqlFragment.d.ts","sourceRoot":"","sources":["../../src/factories/createSqlTokenSqlFragment.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createSqlTokenSqlFragment.d.ts","sourceRoot":"","sources":["../../src/factories/createSqlTokenSqlFragment.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,QAAQ,IAAI,YAAY,EAAE,MAAM,UAAU,CAAC;AAGhF,eAAO,MAAM,yBAAyB,UAC7B,YAAY,6BACQ,MAAM,KAChC,gBA8BF,CAAC"}
|
|
@@ -12,6 +12,7 @@ const createListSqlFragment_1 = require("../sqlFragmentFactories/createListSqlFr
|
|
|
12
12
|
const createQuerySqlFragment_1 = require("../sqlFragmentFactories/createQuerySqlFragment");
|
|
13
13
|
const createTimestampSqlFragment_1 = require("../sqlFragmentFactories/createTimestampSqlFragment");
|
|
14
14
|
const createUnnestSqlFragment_1 = require("../sqlFragmentFactories/createUnnestSqlFragment");
|
|
15
|
+
const createUuidSqlFragment_1 = require("../sqlFragmentFactories/createUuidSqlFragment");
|
|
15
16
|
const tokens_1 = require("../tokens");
|
|
16
17
|
const errors_1 = require("@slonik/errors");
|
|
17
18
|
const createSqlTokenSqlFragment = (token, greatestParameterPosition) => {
|
|
@@ -51,6 +52,9 @@ const createSqlTokenSqlFragment = (token, greatestParameterPosition) => {
|
|
|
51
52
|
else if (token.type === tokens_1.UnnestToken) {
|
|
52
53
|
return (0, createUnnestSqlFragment_1.createUnnestSqlFragment)(token, greatestParameterPosition);
|
|
53
54
|
}
|
|
55
|
+
else if (token.type === tokens_1.UuidToken) {
|
|
56
|
+
return (0, createUuidSqlFragment_1.createUuidSqlFragment)(token, greatestParameterPosition);
|
|
57
|
+
}
|
|
54
58
|
throw new errors_1.UnexpectedStateError('Unexpected token type.');
|
|
55
59
|
};
|
|
56
60
|
exports.createSqlTokenSqlFragment = createSqlTokenSqlFragment;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSqlTokenSqlFragment.js","sourceRoot":"","sources":["../../src/factories/createSqlTokenSqlFragment.ts"],"names":[],"mappings":";;;AAAA,2FAAwF;AACxF,6FAA0F;AAC1F,yFAAsF;AACtF,iGAA8F;AAC9F,qGAAkG;AAClG,iGAA8F;AAC9F,yFAAsF;AACtF,yFAAsF;AACtF,2FAAwF;AACxF,mGAAgG;AAChG,6FAA0F;AAC1F,
|
|
1
|
+
{"version":3,"file":"createSqlTokenSqlFragment.js","sourceRoot":"","sources":["../../src/factories/createSqlTokenSqlFragment.ts"],"names":[],"mappings":";;;AAAA,2FAAwF;AACxF,6FAA0F;AAC1F,yFAAsF;AACtF,iGAA8F;AAC9F,qGAAkG;AAClG,iGAA8F;AAC9F,yFAAsF;AACtF,yFAAsF;AACtF,2FAAwF;AACxF,mGAAgG;AAChG,6FAA0F;AAC1F,yFAAsF;AACtF,sCAcmB;AAEnB,2CAAsD;AAE/C,MAAM,yBAAyB,GAAG,CACvC,KAAmB,EACnB,yBAAiC,EACf,EAAE;IACpB,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAU,EAAE,CAAC;QAC9B,OAAO,IAAA,+CAAsB,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IAClE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAW,EAAE,CAAC;QACtC,OAAO,IAAA,iDAAuB,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAS,EAAE,CAAC;QACpC,OAAO,IAAA,6CAAqB,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAa,EAAE,CAAC;QACxC,OAAO,IAAA,qDAAyB,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACrE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAe,EAAE,CAAC;QAC1C,OAAO,IAAA,yDAA2B,EAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAa,EAAE,CAAC;QACxC,OAAO,IAAA,qDAAyB,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACrE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAe,EAAE,CAAC;QAC1C,OAAO,IAAA,6CAAqB,EAAC,KAAK,EAAE,yBAAyB,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAS,EAAE,CAAC;QACpC,OAAO,IAAA,6CAAqB,EAAC,KAAK,EAAE,yBAAyB,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAS,EAAE,CAAC;QACpC,OAAO,IAAA,6CAAqB,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAU,EAAE,CAAC;QACrC,OAAO,IAAA,+CAAsB,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IAClE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,EAAE,CAAC;QACzC,OAAO,IAAA,uDAA0B,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACtE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAW,EAAE,CAAC;QACtC,OAAO,IAAA,iDAAuB,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAS,EAAE,CAAC;QACpC,OAAO,IAAA,6CAAqB,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,IAAI,6BAAoB,CAAC,wBAAwB,CAAC,CAAC;AAC3D,CAAC,CAAC;AAjCW,QAAA,yBAAyB,6BAiCpC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +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';
|
|
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';
|
|
3
|
+
export { ArrayToken, BinaryToken, ComparisonPredicateToken, DateToken, FragmentToken, IdentifierToken, IntervalToken, JsonBinaryToken, JsonToken, ListToken, QueryToken, TimestampToken, UnnestToken, UuidToken, } from './tokens';
|
|
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 UuidSqlToken, type ValueExpression, } from './types';
|
|
5
5
|
export { isSqlToken } from './utilities/isSqlToken';
|
|
6
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,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,
|
|
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,EACX,SAAS,GACV,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,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
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;
|
|
3
|
+
exports.isSqlToken = exports.UuidToken = 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");
|
|
@@ -19,6 +19,7 @@ Object.defineProperty(exports, "ListToken", { enumerable: true, get: function ()
|
|
|
19
19
|
Object.defineProperty(exports, "QueryToken", { enumerable: true, get: function () { return tokens_1.QueryToken; } });
|
|
20
20
|
Object.defineProperty(exports, "TimestampToken", { enumerable: true, get: function () { return tokens_1.TimestampToken; } });
|
|
21
21
|
Object.defineProperty(exports, "UnnestToken", { enumerable: true, get: function () { return tokens_1.UnnestToken; } });
|
|
22
|
+
Object.defineProperty(exports, "UuidToken", { enumerable: true, get: function () { return tokens_1.UuidToken; } });
|
|
22
23
|
var isSqlToken_1 = require("./utilities/isSqlToken");
|
|
23
24
|
Object.defineProperty(exports, "isSqlToken", { enumerable: true, get: function () { return isSqlToken_1.isSqlToken; } });
|
|
24
25
|
//# 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;AAClC,
|
|
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,mCAekB;AAdhB,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;AACX,mGAAA,SAAS,OAAA;AAwBX,qDAAoD;AAA3C,wGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type SqlFragmentToken, type UuidSqlToken } from '../types';
|
|
2
|
+
export type UUID = `${string}-${string}-${string}-${string}-${string}`;
|
|
3
|
+
export declare const createUuidSqlFragment: (token: UuidSqlToken, greatestParameterPosition: number) => SqlFragmentToken;
|
|
4
|
+
//# sourceMappingURL=createUuidSqlFragment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createUuidSqlFragment.d.ts","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createUuidSqlFragment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAIpE,MAAM,MAAM,IAAI,GAAG,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AASvE,eAAO,MAAM,qBAAqB,UACzB,YAAY,6BACQ,MAAM,KAChC,gBAUF,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createUuidSqlFragment = void 0;
|
|
4
|
+
const tokens_1 = require("../tokens");
|
|
5
|
+
const formatSlonikPlaceholder_1 = require("../utilities/formatSlonikPlaceholder");
|
|
6
|
+
const errors_1 = require("@slonik/errors");
|
|
7
|
+
// eslint-disable-next-line func-style
|
|
8
|
+
function isValidUuid(uuid) {
|
|
9
|
+
const uuidRegex = /^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$/iu;
|
|
10
|
+
return uuidRegex.test(uuid);
|
|
11
|
+
}
|
|
12
|
+
const createUuidSqlFragment = (token, greatestParameterPosition) => {
|
|
13
|
+
if (!isValidUuid(token.uuid)) {
|
|
14
|
+
throw new errors_1.InvalidInputError('UUID parameter value must be a valid UUID.');
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
sql: (0, formatSlonikPlaceholder_1.formatSlonikPlaceholder)(greatestParameterPosition + 1) + '::uuid',
|
|
18
|
+
type: tokens_1.FragmentToken,
|
|
19
|
+
values: [token.uuid],
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.createUuidSqlFragment = createUuidSqlFragment;
|
|
23
|
+
//# sourceMappingURL=createUuidSqlFragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createUuidSqlFragment.js","sourceRoot":"","sources":["../../src/sqlFragmentFactories/createUuidSqlFragment.ts"],"names":[],"mappings":";;;AAAA,sCAA0C;AAE1C,kFAA+E;AAC/E,2CAAmD;AAInD,sCAAsC;AACtC,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,SAAS,GAAG,8CAA8C,CAAC;IAEjE,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAEM,MAAM,qBAAqB,GAAG,CACnC,KAAmB,EACnB,yBAAiC,EACf,EAAE;IACpB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,0BAAiB,CAAC,4CAA4C,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO;QACL,GAAG,EAAE,IAAA,iDAAuB,EAAC,yBAAyB,GAAG,CAAC,CAAC,GAAG,QAAQ;QACtE,IAAI,EAAE,sBAAa;QACnB,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;KACrB,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,qBAAqB,yBAahC"}
|
package/dist/tokens.d.ts
CHANGED
|
@@ -11,4 +11,5 @@ export declare const ListToken: unique symbol;
|
|
|
11
11
|
export declare const QueryToken: unique symbol;
|
|
12
12
|
export declare const TimestampToken: unique symbol;
|
|
13
13
|
export declare const UnnestToken: unique symbol;
|
|
14
|
+
export declare const UuidToken: unique symbol;
|
|
14
15
|
//# 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,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"}
|
|
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;AAC7D,eAAO,MAAM,SAAS,eAAkC,CAAC"}
|
package/dist/tokens.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
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;
|
|
3
|
+
exports.UuidToken = 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
4
|
exports.ArrayToken = Symbol.for('SLONIK_TOKEN_ARRAY');
|
|
5
5
|
exports.BinaryToken = Symbol.for('SLONIK_TOKEN_BINARY');
|
|
6
6
|
exports.ComparisonPredicateToken = Symbol.for('SLONIK_TOKEN_COMPARISON_PREDICATE');
|
|
@@ -14,4 +14,5 @@ exports.ListToken = Symbol.for('SLONIK_TOKEN_LIST');
|
|
|
14
14
|
exports.QueryToken = Symbol.for('SLONIK_TOKEN_QUERY');
|
|
15
15
|
exports.TimestampToken = Symbol.for('SLONIK_TOKEN_TIMESTAMP');
|
|
16
16
|
exports.UnnestToken = Symbol.for('SLONIK_TOKEN_UNNEST');
|
|
17
|
+
exports.UuidToken = Symbol.for('SLONIK_TOKEN_UUID');
|
|
17
18
|
//# 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,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
|
+
{"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;AAChD,QAAA,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -2,29 +2,6 @@ import type * as tokens from './tokens';
|
|
|
2
2
|
import { type PrimitiveValueExpression } from '@slonik/types';
|
|
3
3
|
import { type ZodTypeAny } from 'zod';
|
|
4
4
|
export { type PrimitiveValueExpression } from '@slonik/types';
|
|
5
|
-
export type SerializableValue = {
|
|
6
|
-
[key: string]: SerializableValue;
|
|
7
|
-
} | boolean | null | number | readonly SerializableValue[] | SerializableValue[] | string | 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 SqlFragmentToken = {
|
|
18
|
-
readonly sql: string;
|
|
19
|
-
readonly type: typeof tokens.FragmentToken;
|
|
20
|
-
readonly values: readonly PrimitiveValueExpression[];
|
|
21
|
-
};
|
|
22
|
-
export type ValueExpression = PrimitiveValueExpression | SqlFragmentToken | SqlToken;
|
|
23
|
-
/**
|
|
24
|
-
* "string" type covers all type name identifiers – the literal values are added only to assist developer
|
|
25
|
-
* experience with auto suggestions for commonly used type name identifiers.
|
|
26
|
-
*/
|
|
27
|
-
type TypeNameIdentifier = 'bool' | 'bytea' | 'float4' | 'float8' | 'int2' | 'int4' | 'int8' | 'json' | 'text' | 'timestamptz' | 'uuid' | string;
|
|
28
5
|
export type ArraySqlToken = {
|
|
29
6
|
readonly memberType: SqlFragmentToken | TypeNameIdentifier;
|
|
30
7
|
readonly type: typeof tokens.ArrayToken;
|
|
@@ -47,15 +24,19 @@ export type IdentifierSqlToken = {
|
|
|
47
24
|
readonly names: readonly string[];
|
|
48
25
|
readonly type: typeof tokens.IdentifierToken;
|
|
49
26
|
};
|
|
27
|
+
export type IntervalInput = {
|
|
28
|
+
days?: number;
|
|
29
|
+
hours?: number;
|
|
30
|
+
minutes?: number;
|
|
31
|
+
months?: number;
|
|
32
|
+
seconds?: number;
|
|
33
|
+
weeks?: number;
|
|
34
|
+
years?: number;
|
|
35
|
+
};
|
|
50
36
|
export type IntervalSqlToken = {
|
|
51
37
|
readonly interval: IntervalInput;
|
|
52
38
|
readonly type: typeof tokens.IntervalToken;
|
|
53
39
|
};
|
|
54
|
-
export type ListSqlToken = {
|
|
55
|
-
readonly glue: SqlFragmentToken;
|
|
56
|
-
readonly members: readonly ValueExpression[];
|
|
57
|
-
readonly type: typeof tokens.ListToken;
|
|
58
|
-
};
|
|
59
40
|
export type JsonBinarySqlToken = {
|
|
60
41
|
readonly type: typeof tokens.JsonBinaryToken;
|
|
61
42
|
readonly value: SerializableValue;
|
|
@@ -64,22 +45,25 @@ export type JsonSqlToken = {
|
|
|
64
45
|
readonly type: typeof tokens.JsonToken;
|
|
65
46
|
readonly value: SerializableValue;
|
|
66
47
|
};
|
|
48
|
+
export type ListSqlToken = {
|
|
49
|
+
readonly glue: SqlFragmentToken;
|
|
50
|
+
readonly members: readonly ValueExpression[];
|
|
51
|
+
readonly type: typeof tokens.ListToken;
|
|
52
|
+
};
|
|
67
53
|
export type QuerySqlToken<T extends ZodTypeAny = ZodTypeAny> = {
|
|
68
54
|
readonly parser: T;
|
|
69
55
|
readonly sql: string;
|
|
70
56
|
readonly type: typeof tokens.QueryToken;
|
|
71
57
|
readonly values: readonly PrimitiveValueExpression[];
|
|
72
58
|
};
|
|
73
|
-
export type
|
|
74
|
-
|
|
75
|
-
readonly type: typeof tokens.TimestampToken;
|
|
59
|
+
export type SerializableValue = boolean | null | number | readonly SerializableValue[] | SerializableValue[] | string | undefined | {
|
|
60
|
+
[key: string]: SerializableValue;
|
|
76
61
|
};
|
|
77
|
-
export type
|
|
78
|
-
readonly
|
|
79
|
-
readonly
|
|
80
|
-
readonly
|
|
62
|
+
export type SqlFragmentToken = {
|
|
63
|
+
readonly sql: string;
|
|
64
|
+
readonly type: typeof tokens.FragmentToken;
|
|
65
|
+
readonly values: readonly PrimitiveValueExpression[];
|
|
81
66
|
};
|
|
82
|
-
export type SqlToken = ArraySqlToken | BinarySqlToken | DateSqlToken | FragmentSqlToken | IdentifierSqlToken | IntervalSqlToken | JsonBinarySqlToken | JsonSqlToken | ListSqlToken | QuerySqlToken | TimestampSqlToken | UnnestSqlToken;
|
|
83
67
|
export type SqlTag<Z extends Record<string, ZodTypeAny> = Record<string, ZodTypeAny>> = {
|
|
84
68
|
array: (values: readonly PrimitiveValueExpression[], memberType: SqlFragmentToken | TypeNameIdentifier) => ArraySqlToken;
|
|
85
69
|
binary: (data: Buffer) => BinarySqlToken;
|
|
@@ -96,5 +80,26 @@ export type SqlTag<Z extends Record<string, ZodTypeAny> = Record<string, ZodType
|
|
|
96
80
|
typeAlias: <K extends keyof Z>(typeAlias: K) => (template: TemplateStringsArray, ...values: ValueExpression[]) => QuerySqlToken<Z[K]>;
|
|
97
81
|
unnest: (tuples: ReadonlyArray<readonly any[]>, columnTypes: Array<[...string[], TypeNameIdentifier]> | Array<SqlFragmentToken | TypeNameIdentifier>) => UnnestSqlToken;
|
|
98
82
|
unsafe: (template: TemplateStringsArray, ...values: ValueExpression[]) => QuerySqlToken;
|
|
83
|
+
uuid: (uuid: string) => UuidSqlToken;
|
|
84
|
+
};
|
|
85
|
+
export type SqlToken = ArraySqlToken | BinarySqlToken | DateSqlToken | FragmentSqlToken | IdentifierSqlToken | IntervalSqlToken | JsonBinarySqlToken | JsonSqlToken | ListSqlToken | QuerySqlToken | TimestampSqlToken | UnnestSqlToken | UuidSqlToken;
|
|
86
|
+
export type TimestampSqlToken = {
|
|
87
|
+
readonly date: Date;
|
|
88
|
+
readonly type: typeof tokens.TimestampToken;
|
|
99
89
|
};
|
|
90
|
+
export type UnnestSqlToken = {
|
|
91
|
+
readonly columnTypes: Array<[...string[], TypeNameIdentifier]> | Array<SqlFragmentToken | TypeNameIdentifier>;
|
|
92
|
+
readonly tuples: ReadonlyArray<readonly ValueExpression[]>;
|
|
93
|
+
readonly type: typeof tokens.UnnestToken;
|
|
94
|
+
};
|
|
95
|
+
export type UuidSqlToken = {
|
|
96
|
+
readonly type: typeof tokens.UuidToken;
|
|
97
|
+
readonly uuid: `${string}-${string}-${string}-${string}-${string}`;
|
|
98
|
+
};
|
|
99
|
+
export type ValueExpression = PrimitiveValueExpression | SqlFragmentToken | SqlToken;
|
|
100
|
+
/**
|
|
101
|
+
* "string" type covers all type name identifiers – the literal values are added only to assist developer
|
|
102
|
+
* experience with auto suggestions for commonly used type name identifiers.
|
|
103
|
+
*/
|
|
104
|
+
type TypeNameIdentifier = 'bool' | 'bytea' | 'float4' | 'float8' | 'int2' | 'int4' | 'int8' | 'json' | 'text' | 'timestamptz' | 'uuid' | string;
|
|
100
105
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AAEtC,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isSqlToken.d.ts","sourceRoot":"","sources":["../../src/utilities/isSqlToken.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"isSqlToken.d.ts","sourceRoot":"","sources":["../../src/utilities/isSqlToken.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,QAAQ,IAAI,YAAY,EAAE,MAAM,UAAU,CAAC;AAiCzD,eAAO,MAAM,UAAU,YAAa,OAAO,KAAG,OAAO,IAAI,YAmCxD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isSqlToken.js","sourceRoot":"","sources":["../../src/utilities/isSqlToken.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"isSqlToken.js","sourceRoot":"","sources":["../../src/utilities/isSqlToken.ts"],"names":[],"mappings":";;;AAAA,sCAemB;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;IACX,kBAAS;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,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,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;AAnCW,QAAA,UAAU,cAmCrB"}
|
package/package.json
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
]
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@slonik/errors": "^46.
|
|
20
|
-
"@slonik/types": "^46.
|
|
19
|
+
"@slonik/errors": "^46.4.0",
|
|
20
|
+
"@slonik/types": "^46.4.0",
|
|
21
21
|
"roarr": "^7.21.1",
|
|
22
22
|
"safe-stable-stringify": "^2.4.3",
|
|
23
23
|
"serialize-error": "^8.0.0"
|
|
@@ -27,12 +27,12 @@
|
|
|
27
27
|
"@types/node": "^22.9.0",
|
|
28
28
|
"ava": "^6.1.3",
|
|
29
29
|
"cspell": "^8.16.0",
|
|
30
|
-
"eslint": "^9.
|
|
30
|
+
"eslint": "^9.16.0",
|
|
31
31
|
"nyc": "^15.1.0",
|
|
32
32
|
"ts-node": "^10.9.1",
|
|
33
33
|
"typescript": "^5.6.3",
|
|
34
34
|
"zod": "^3.22.4",
|
|
35
|
-
"@slonik/eslint-config": "^46.
|
|
35
|
+
"@slonik/eslint-config": "^46.4.0"
|
|
36
36
|
},
|
|
37
37
|
"engines": {
|
|
38
38
|
"node": ">=18"
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"url": "https://github.com/gajus/slonik"
|
|
76
76
|
},
|
|
77
77
|
"types": "./dist/index.d.ts",
|
|
78
|
-
"version": "46.
|
|
78
|
+
"version": "46.4.0",
|
|
79
79
|
"scripts": {
|
|
80
80
|
"build": "rm -fr ./dist && tsc --project ./tsconfig.json",
|
|
81
81
|
"lint": "npm run lint:cspell && npm run lint:eslint && npm run lint:tsc",
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { FragmentToken } from '../../tokens';
|
|
2
|
+
import { createSqlTag } from '../createSqlTag';
|
|
3
|
+
import test from 'ava';
|
|
4
|
+
|
|
5
|
+
const sql = createSqlTag();
|
|
6
|
+
|
|
7
|
+
test('binds a uuid', (t) => {
|
|
8
|
+
const query = sql.fragment`SELECT ${sql.uuid(
|
|
9
|
+
'00000000-0000-0000-0000-000000000000',
|
|
10
|
+
)}`;
|
|
11
|
+
|
|
12
|
+
t.deepEqual(query, {
|
|
13
|
+
sql: 'SELECT $slonik_1::uuid',
|
|
14
|
+
type: FragmentToken,
|
|
15
|
+
values: ['00000000-0000-0000-0000-000000000000'],
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
test('throws if not valid uuid', (t) => {
|
|
20
|
+
const error = t.throws(() => {
|
|
21
|
+
sql.fragment`SELECT ${sql.uuid('1')}`;
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
t.is(error?.message, 'UUID parameter value must be a valid UUID.');
|
|
25
|
+
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Logger } from '../Logger';
|
|
2
|
+
import { type UUID } from '../sqlFragmentFactories/createUuidSqlFragment';
|
|
2
3
|
import {
|
|
3
4
|
ArrayToken,
|
|
4
5
|
BinaryToken,
|
|
@@ -12,6 +13,7 @@ import {
|
|
|
12
13
|
QueryToken,
|
|
13
14
|
TimestampToken,
|
|
14
15
|
UnnestToken,
|
|
16
|
+
UuidToken,
|
|
15
17
|
} from '../tokens';
|
|
16
18
|
import {
|
|
17
19
|
type PrimitiveValueExpression,
|
|
@@ -229,5 +231,11 @@ export const createSqlTag = <
|
|
|
229
231
|
type: QueryToken,
|
|
230
232
|
});
|
|
231
233
|
},
|
|
234
|
+
uuid: (uuid) => {
|
|
235
|
+
return Object.freeze({
|
|
236
|
+
type: UuidToken,
|
|
237
|
+
uuid: uuid as UUID,
|
|
238
|
+
});
|
|
239
|
+
},
|
|
232
240
|
};
|
|
233
241
|
};
|
|
@@ -9,6 +9,7 @@ import { createListSqlFragment } from '../sqlFragmentFactories/createListSqlFrag
|
|
|
9
9
|
import { createQuerySqlFragment } from '../sqlFragmentFactories/createQuerySqlFragment';
|
|
10
10
|
import { createTimestampSqlFragment } from '../sqlFragmentFactories/createTimestampSqlFragment';
|
|
11
11
|
import { createUnnestSqlFragment } from '../sqlFragmentFactories/createUnnestSqlFragment';
|
|
12
|
+
import { createUuidSqlFragment } from '../sqlFragmentFactories/createUuidSqlFragment';
|
|
12
13
|
import {
|
|
13
14
|
ArrayToken,
|
|
14
15
|
BinaryToken,
|
|
@@ -22,6 +23,7 @@ import {
|
|
|
22
23
|
QueryToken,
|
|
23
24
|
TimestampToken,
|
|
24
25
|
UnnestToken,
|
|
26
|
+
UuidToken,
|
|
25
27
|
} from '../tokens';
|
|
26
28
|
import { type SqlFragmentToken, type SqlToken as SqlTokenType } from '../types';
|
|
27
29
|
import { UnexpectedStateError } from '@slonik/errors';
|
|
@@ -54,6 +56,8 @@ export const createSqlTokenSqlFragment = (
|
|
|
54
56
|
return createTimestampSqlFragment(token, greatestParameterPosition);
|
|
55
57
|
} else if (token.type === UnnestToken) {
|
|
56
58
|
return createUnnestSqlFragment(token, greatestParameterPosition);
|
|
59
|
+
} else if (token.type === UuidToken) {
|
|
60
|
+
return createUuidSqlFragment(token, greatestParameterPosition);
|
|
57
61
|
}
|
|
58
62
|
|
|
59
63
|
throw new UnexpectedStateError('Unexpected token type.');
|
package/src/index.ts
CHANGED
|
@@ -14,6 +14,7 @@ export {
|
|
|
14
14
|
QueryToken,
|
|
15
15
|
TimestampToken,
|
|
16
16
|
UnnestToken,
|
|
17
|
+
UuidToken,
|
|
17
18
|
} from './tokens';
|
|
18
19
|
export {
|
|
19
20
|
type ArraySqlToken,
|
|
@@ -34,6 +35,7 @@ export {
|
|
|
34
35
|
type SqlToken,
|
|
35
36
|
type TimestampSqlToken,
|
|
36
37
|
type UnnestSqlToken,
|
|
38
|
+
type UuidSqlToken,
|
|
37
39
|
type ValueExpression,
|
|
38
40
|
} from './types';
|
|
39
41
|
export { isSqlToken } from './utilities/isSqlToken';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { FragmentToken } from '../tokens';
|
|
2
|
+
import { type SqlFragmentToken, type UuidSqlToken } from '../types';
|
|
3
|
+
import { formatSlonikPlaceholder } from '../utilities/formatSlonikPlaceholder';
|
|
4
|
+
import { InvalidInputError } from '@slonik/errors';
|
|
5
|
+
|
|
6
|
+
export type UUID = `${string}-${string}-${string}-${string}-${string}`;
|
|
7
|
+
|
|
8
|
+
// eslint-disable-next-line func-style
|
|
9
|
+
function isValidUuid(uuid: string): uuid is UUID {
|
|
10
|
+
const uuidRegex = /^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$/iu;
|
|
11
|
+
|
|
12
|
+
return uuidRegex.test(uuid);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const createUuidSqlFragment = (
|
|
16
|
+
token: UuidSqlToken,
|
|
17
|
+
greatestParameterPosition: number,
|
|
18
|
+
): SqlFragmentToken => {
|
|
19
|
+
if (!isValidUuid(token.uuid)) {
|
|
20
|
+
throw new InvalidInputError('UUID parameter value must be a valid UUID.');
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return {
|
|
24
|
+
sql: formatSlonikPlaceholder(greatestParameterPosition + 1) + '::uuid',
|
|
25
|
+
type: FragmentToken,
|
|
26
|
+
values: [token.uuid],
|
|
27
|
+
};
|
|
28
|
+
};
|
package/src/tokens.ts
CHANGED
|
@@ -13,3 +13,4 @@ export const ListToken = Symbol.for('SLONIK_TOKEN_LIST');
|
|
|
13
13
|
export const QueryToken = Symbol.for('SLONIK_TOKEN_QUERY');
|
|
14
14
|
export const TimestampToken = Symbol.for('SLONIK_TOKEN_TIMESTAMP');
|
|
15
15
|
export const UnnestToken = Symbol.for('SLONIK_TOKEN_UNNEST');
|
|
16
|
+
export const UuidToken = Symbol.for('SLONIK_TOKEN_UUID');
|
package/src/types.ts
CHANGED
|
@@ -4,57 +4,6 @@ import { type ZodTypeAny } from 'zod';
|
|
|
4
4
|
|
|
5
5
|
export { type PrimitiveValueExpression } from '@slonik/types';
|
|
6
6
|
|
|
7
|
-
export type SerializableValue =
|
|
8
|
-
| {
|
|
9
|
-
[key: string]: SerializableValue;
|
|
10
|
-
}
|
|
11
|
-
| boolean
|
|
12
|
-
| null
|
|
13
|
-
| number
|
|
14
|
-
| readonly SerializableValue[]
|
|
15
|
-
| SerializableValue[]
|
|
16
|
-
| string
|
|
17
|
-
| undefined;
|
|
18
|
-
|
|
19
|
-
export type IntervalInput = {
|
|
20
|
-
days?: number;
|
|
21
|
-
hours?: number;
|
|
22
|
-
minutes?: number;
|
|
23
|
-
months?: number;
|
|
24
|
-
seconds?: number;
|
|
25
|
-
weeks?: number;
|
|
26
|
-
years?: number;
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
export type SqlFragmentToken = {
|
|
30
|
-
readonly sql: string;
|
|
31
|
-
readonly type: typeof tokens.FragmentToken;
|
|
32
|
-
readonly values: readonly PrimitiveValueExpression[];
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
export type ValueExpression =
|
|
36
|
-
| PrimitiveValueExpression
|
|
37
|
-
| SqlFragmentToken
|
|
38
|
-
| SqlToken;
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* "string" type covers all type name identifiers – the literal values are added only to assist developer
|
|
42
|
-
* experience with auto suggestions for commonly used type name identifiers.
|
|
43
|
-
*/
|
|
44
|
-
type TypeNameIdentifier =
|
|
45
|
-
| 'bool'
|
|
46
|
-
| 'bytea'
|
|
47
|
-
| 'float4'
|
|
48
|
-
| 'float8'
|
|
49
|
-
| 'int2'
|
|
50
|
-
| 'int4'
|
|
51
|
-
| 'int8'
|
|
52
|
-
| 'json'
|
|
53
|
-
| 'text'
|
|
54
|
-
| 'timestamptz'
|
|
55
|
-
| 'uuid'
|
|
56
|
-
| string;
|
|
57
|
-
|
|
58
7
|
export type ArraySqlToken = {
|
|
59
8
|
readonly memberType: SqlFragmentToken | TypeNameIdentifier;
|
|
60
9
|
readonly type: typeof tokens.ArrayToken;
|
|
@@ -82,17 +31,21 @@ export type IdentifierSqlToken = {
|
|
|
82
31
|
readonly type: typeof tokens.IdentifierToken;
|
|
83
32
|
};
|
|
84
33
|
|
|
34
|
+
export type IntervalInput = {
|
|
35
|
+
days?: number;
|
|
36
|
+
hours?: number;
|
|
37
|
+
minutes?: number;
|
|
38
|
+
months?: number;
|
|
39
|
+
seconds?: number;
|
|
40
|
+
weeks?: number;
|
|
41
|
+
years?: number;
|
|
42
|
+
};
|
|
43
|
+
|
|
85
44
|
export type IntervalSqlToken = {
|
|
86
45
|
readonly interval: IntervalInput;
|
|
87
46
|
readonly type: typeof tokens.IntervalToken;
|
|
88
47
|
};
|
|
89
48
|
|
|
90
|
-
export type ListSqlToken = {
|
|
91
|
-
readonly glue: SqlFragmentToken;
|
|
92
|
-
readonly members: readonly ValueExpression[];
|
|
93
|
-
readonly type: typeof tokens.ListToken;
|
|
94
|
-
};
|
|
95
|
-
|
|
96
49
|
export type JsonBinarySqlToken = {
|
|
97
50
|
readonly type: typeof tokens.JsonBinaryToken;
|
|
98
51
|
readonly value: SerializableValue;
|
|
@@ -103,6 +56,12 @@ export type JsonSqlToken = {
|
|
|
103
56
|
readonly value: SerializableValue;
|
|
104
57
|
};
|
|
105
58
|
|
|
59
|
+
export type ListSqlToken = {
|
|
60
|
+
readonly glue: SqlFragmentToken;
|
|
61
|
+
readonly members: readonly ValueExpression[];
|
|
62
|
+
readonly type: typeof tokens.ListToken;
|
|
63
|
+
};
|
|
64
|
+
|
|
106
65
|
export type QuerySqlToken<T extends ZodTypeAny = ZodTypeAny> = {
|
|
107
66
|
readonly parser: T;
|
|
108
67
|
readonly sql: string;
|
|
@@ -110,33 +69,24 @@ export type QuerySqlToken<T extends ZodTypeAny = ZodTypeAny> = {
|
|
|
110
69
|
readonly values: readonly PrimitiveValueExpression[];
|
|
111
70
|
};
|
|
112
71
|
|
|
113
|
-
export type
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
72
|
+
export type SerializableValue =
|
|
73
|
+
| boolean
|
|
74
|
+
| null
|
|
75
|
+
| number
|
|
76
|
+
| readonly SerializableValue[]
|
|
77
|
+
| SerializableValue[]
|
|
78
|
+
| string
|
|
79
|
+
| undefined
|
|
80
|
+
| {
|
|
81
|
+
[key: string]: SerializableValue;
|
|
82
|
+
};
|
|
117
83
|
|
|
118
|
-
export type
|
|
119
|
-
readonly
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
readonly tuples: ReadonlyArray<readonly ValueExpression[]>;
|
|
123
|
-
readonly type: typeof tokens.UnnestToken;
|
|
84
|
+
export type SqlFragmentToken = {
|
|
85
|
+
readonly sql: string;
|
|
86
|
+
readonly type: typeof tokens.FragmentToken;
|
|
87
|
+
readonly values: readonly PrimitiveValueExpression[];
|
|
124
88
|
};
|
|
125
89
|
|
|
126
|
-
export type SqlToken =
|
|
127
|
-
| ArraySqlToken
|
|
128
|
-
| BinarySqlToken
|
|
129
|
-
| DateSqlToken
|
|
130
|
-
| FragmentSqlToken
|
|
131
|
-
| IdentifierSqlToken
|
|
132
|
-
| IntervalSqlToken
|
|
133
|
-
| JsonBinarySqlToken
|
|
134
|
-
| JsonSqlToken
|
|
135
|
-
| ListSqlToken
|
|
136
|
-
| QuerySqlToken
|
|
137
|
-
| TimestampSqlToken
|
|
138
|
-
| UnnestSqlToken;
|
|
139
|
-
|
|
140
90
|
export type SqlTag<
|
|
141
91
|
Z extends Record<string, ZodTypeAny> = Record<string, ZodTypeAny>,
|
|
142
92
|
> = {
|
|
@@ -186,4 +136,61 @@ export type SqlTag<
|
|
|
186
136
|
template: TemplateStringsArray,
|
|
187
137
|
...values: ValueExpression[]
|
|
188
138
|
) => QuerySqlToken;
|
|
139
|
+
uuid: (uuid: string) => UuidSqlToken;
|
|
189
140
|
};
|
|
141
|
+
|
|
142
|
+
export type SqlToken =
|
|
143
|
+
| ArraySqlToken
|
|
144
|
+
| BinarySqlToken
|
|
145
|
+
| DateSqlToken
|
|
146
|
+
| FragmentSqlToken
|
|
147
|
+
| IdentifierSqlToken
|
|
148
|
+
| IntervalSqlToken
|
|
149
|
+
| JsonBinarySqlToken
|
|
150
|
+
| JsonSqlToken
|
|
151
|
+
| ListSqlToken
|
|
152
|
+
| QuerySqlToken
|
|
153
|
+
| TimestampSqlToken
|
|
154
|
+
| UnnestSqlToken
|
|
155
|
+
| UuidSqlToken;
|
|
156
|
+
|
|
157
|
+
export type TimestampSqlToken = {
|
|
158
|
+
readonly date: Date;
|
|
159
|
+
readonly type: typeof tokens.TimestampToken;
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
export type UnnestSqlToken = {
|
|
163
|
+
readonly columnTypes:
|
|
164
|
+
| Array<[...string[], TypeNameIdentifier]>
|
|
165
|
+
| Array<SqlFragmentToken | TypeNameIdentifier>;
|
|
166
|
+
readonly tuples: ReadonlyArray<readonly ValueExpression[]>;
|
|
167
|
+
readonly type: typeof tokens.UnnestToken;
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
export type UuidSqlToken = {
|
|
171
|
+
readonly type: typeof tokens.UuidToken;
|
|
172
|
+
readonly uuid: `${string}-${string}-${string}-${string}-${string}`;
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
export type ValueExpression =
|
|
176
|
+
| PrimitiveValueExpression
|
|
177
|
+
| SqlFragmentToken
|
|
178
|
+
| SqlToken;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* "string" type covers all type name identifiers – the literal values are added only to assist developer
|
|
182
|
+
* experience with auto suggestions for commonly used type name identifiers.
|
|
183
|
+
*/
|
|
184
|
+
type TypeNameIdentifier =
|
|
185
|
+
| 'bool'
|
|
186
|
+
| 'bytea'
|
|
187
|
+
| 'float4'
|
|
188
|
+
| 'float8'
|
|
189
|
+
| 'int2'
|
|
190
|
+
| 'int4'
|
|
191
|
+
| 'int8'
|
|
192
|
+
| 'json'
|
|
193
|
+
| 'text'
|
|
194
|
+
| 'timestamptz'
|
|
195
|
+
| 'uuid'
|
|
196
|
+
| string;
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
QueryToken,
|
|
13
13
|
TimestampToken,
|
|
14
14
|
UnnestToken,
|
|
15
|
+
UuidToken,
|
|
15
16
|
} from '../tokens';
|
|
16
17
|
import { type SqlToken as SqlTokenType } from '../types';
|
|
17
18
|
import { hasOwnProperty } from './hasOwnProperty';
|
|
@@ -31,6 +32,7 @@ const Tokens = [
|
|
|
31
32
|
QueryToken,
|
|
32
33
|
TimestampToken,
|
|
33
34
|
UnnestToken,
|
|
35
|
+
UuidToken,
|
|
34
36
|
] as const;
|
|
35
37
|
|
|
36
38
|
const tokenNamess = Tokens.map((token) => {
|