@uql/core 0.4.89 → 0.4.92
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/README.md +35 -35
- package/package.json +4 -4
- package/dialect/abstractSqlDialect-spec.d.ts +0 -49
- package/dialect/abstractSqlDialect-spec.js +0 -765
- package/dialect/mysqlDialect.spec.d.ts +0 -6
- package/dialect/mysqlDialect.spec.js +0 -33
- package/dialect/postgresDialect.spec.d.ts +0 -1
- package/dialect/postgresDialect.spec.js +0 -139
- package/dialect/sqliteDialect.spec.d.ts +0 -1
- package/dialect/sqliteDialect.spec.js +0 -12
- package/entity/decorator/definition.spec.d.ts +0 -1
- package/entity/decorator/definition.spec.js +0 -725
- package/entity/decorator/relation.spec.d.ts +0 -1
- package/entity/decorator/relation.spec.js +0 -55
- package/options.spec.d.ts +0 -1
- package/options.spec.js +0 -27
- package/querier/abstractQuerier-it.d.ts +0 -41
- package/querier/abstractQuerier-it.js +0 -410
- package/querier/abstractSqlQuerier-it.d.ts +0 -9
- package/querier/abstractSqlQuerier-it.js +0 -19
- package/querier/abstractSqlQuerier-spec.d.ts +0 -53
- package/querier/abstractSqlQuerier-spec.js +0 -607
- package/querier/decorator/injectQuerier.spec.d.ts +0 -1
- package/querier/decorator/injectQuerier.spec.js +0 -108
- package/querier/decorator/transactional.spec.d.ts +0 -1
- package/querier/decorator/transactional.spec.js +0 -239
- package/repository/genericRepository.spec.d.ts +0 -1
- package/repository/genericRepository.spec.js +0 -86
- package/test/entityMock.d.ts +0 -180
- package/test/entityMock.js +0 -451
- package/test/index.d.ts +0 -3
- package/test/index.js +0 -7
- package/test/it.util.d.ts +0 -4
- package/test/it.util.js +0 -60
- package/test/spec.util.d.ts +0 -13
- package/test/spec.util.js +0 -54
- package/util/dialect.util.spec.d.ts +0 -1
- package/util/dialect.util.spec.js +0 -23
- package/util/object.util.spec.d.ts +0 -1
- package/util/object.util.spec.js +0 -26
- package/util/sql.util.spec.d.ts +0 -1
- package/util/sql.util.spec.js +0 -164
- package/util/string.util.spec.d.ts +0 -1
- package/util/string.util.spec.js +0 -26
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MySqlDialectSpec = void 0;
|
|
4
|
-
const test_1 = require("@uql/core/test");
|
|
5
|
-
const abstractSqlDialect_spec_1 = require("./abstractSqlDialect-spec");
|
|
6
|
-
const mysqlDialect_1 = require("./mysqlDialect");
|
|
7
|
-
class MySqlDialectSpec extends abstractSqlDialect_spec_1.AbstractSqlDialectSpec {
|
|
8
|
-
constructor() {
|
|
9
|
-
super(new mysqlDialect_1.MySqlDialect());
|
|
10
|
-
}
|
|
11
|
-
shouldBeginTransaction() {
|
|
12
|
-
expect(this.dialect.beginTransactionCommand).toBe('START TRANSACTION');
|
|
13
|
-
}
|
|
14
|
-
shouldFind$text() {
|
|
15
|
-
expect(this.dialect.find(test_1.Item, {
|
|
16
|
-
$project: ['id'],
|
|
17
|
-
$filter: { $text: { $fields: ['name', 'description'], $value: 'some text' }, creatorId: 1 },
|
|
18
|
-
$limit: 30,
|
|
19
|
-
})).toBe("SELECT `id` FROM `Item` WHERE MATCH(`name`, `description`) AGAINST('some text') AND `creatorId` = 1 LIMIT 30");
|
|
20
|
-
expect(this.dialect.find(test_1.User, {
|
|
21
|
-
$project: { id: true },
|
|
22
|
-
$filter: {
|
|
23
|
-
$text: { $fields: ['name'], $value: 'something' },
|
|
24
|
-
name: { $ne: 'other unwanted' },
|
|
25
|
-
creatorId: 1,
|
|
26
|
-
},
|
|
27
|
-
$limit: 10,
|
|
28
|
-
})).toBe("SELECT `id` FROM `User` WHERE MATCH(`name`) AGAINST('something') AND `name` <> 'other unwanted' AND `creatorId` = 1 LIMIT 10");
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.MySqlDialectSpec = MySqlDialectSpec;
|
|
32
|
-
(0, test_1.createSpec)(new MySqlDialectSpec());
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXlzcWxEaWFsZWN0LnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGlhbGVjdC9teXNxbERpYWxlY3Quc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBd0Q7QUFDeEQsdUVBQW1FO0FBQ25FLGlEQUE4QztBQUU5QyxNQUFhLGdCQUFpQixTQUFRLGdEQUFzQjtJQUMxRDtRQUNFLEtBQUssQ0FBQyxJQUFJLDJCQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFUSxzQkFBc0I7UUFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRVEsZUFBZTtRQUN0QixNQUFNLENBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBSSxFQUFFO1lBQ3RCLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQztZQUNoQixPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDM0YsTUFBTSxFQUFFLEVBQUU7U0FDWCxDQUFDLENBQ0gsQ0FBQyxJQUFJLENBQUMsOEdBQThHLENBQUMsQ0FBQztRQUV2SCxNQUFNLENBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBSSxFQUFFO1lBQ3RCLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUU7WUFDdEIsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUU7Z0JBQ2pELElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDL0IsU0FBUyxFQUFFLENBQUM7YUFDYjtZQUNELE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQyxDQUNILENBQUMsSUFBSSxDQUFDLDhIQUE4SCxDQUFDLENBQUM7SUFDekksQ0FBQztDQUNGO0FBOUJELDRDQThCQztBQUVELElBQUEsaUJBQVUsRUFBQyxJQUFJLGdCQUFnQixFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVNwZWMsIEl0ZW0sIFVzZXIgfSBmcm9tICdAdXFsL2NvcmUvdGVzdCc7XG5pbXBvcnQgeyBBYnN0cmFjdFNxbERpYWxlY3RTcGVjIH0gZnJvbSAnLi9hYnN0cmFjdFNxbERpYWxlY3Qtc3BlYyc7XG5pbXBvcnQgeyBNeVNxbERpYWxlY3QgfSBmcm9tICcuL215c3FsRGlhbGVjdCc7XG5cbmV4cG9ydCBjbGFzcyBNeVNxbERpYWxlY3RTcGVjIGV4dGVuZHMgQWJzdHJhY3RTcWxEaWFsZWN0U3BlYyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKG5ldyBNeVNxbERpYWxlY3QoKSk7XG4gIH1cblxuICBvdmVycmlkZSBzaG91bGRCZWdpblRyYW5zYWN0aW9uKCkge1xuICAgIGV4cGVjdCh0aGlzLmRpYWxlY3QuYmVnaW5UcmFuc2FjdGlvbkNvbW1hbmQpLnRvQmUoJ1NUQVJUIFRSQU5TQUNUSU9OJyk7XG4gIH1cblxuICBvdmVycmlkZSBzaG91bGRGaW5kJHRleHQoKSB7XG4gICAgZXhwZWN0KFxuICAgICAgdGhpcy5kaWFsZWN0LmZpbmQoSXRlbSwge1xuICAgICAgICAkcHJvamVjdDogWydpZCddLFxuICAgICAgICAkZmlsdGVyOiB7ICR0ZXh0OiB7ICRmaWVsZHM6IFsnbmFtZScsICdkZXNjcmlwdGlvbiddLCAkdmFsdWU6ICdzb21lIHRleHQnIH0sIGNyZWF0b3JJZDogMSB9LFxuICAgICAgICAkbGltaXQ6IDMwLFxuICAgICAgfSlcbiAgICApLnRvQmUoXCJTRUxFQ1QgYGlkYCBGUk9NIGBJdGVtYCBXSEVSRSBNQVRDSChgbmFtZWAsIGBkZXNjcmlwdGlvbmApIEFHQUlOU1QoJ3NvbWUgdGV4dCcpIEFORCBgY3JlYXRvcklkYCA9IDEgTElNSVQgMzBcIik7XG5cbiAgICBleHBlY3QoXG4gICAgICB0aGlzLmRpYWxlY3QuZmluZChVc2VyLCB7XG4gICAgICAgICRwcm9qZWN0OiB7IGlkOiB0cnVlIH0sXG4gICAgICAgICRmaWx0ZXI6IHtcbiAgICAgICAgICAkdGV4dDogeyAkZmllbGRzOiBbJ25hbWUnXSwgJHZhbHVlOiAnc29tZXRoaW5nJyB9LFxuICAgICAgICAgIG5hbWU6IHsgJG5lOiAnb3RoZXIgdW53YW50ZWQnIH0sXG4gICAgICAgICAgY3JlYXRvcklkOiAxLFxuICAgICAgICB9LFxuICAgICAgICAkbGltaXQ6IDEwLFxuICAgICAgfSlcbiAgICApLnRvQmUoXCJTRUxFQ1QgYGlkYCBGUk9NIGBVc2VyYCBXSEVSRSBNQVRDSChgbmFtZWApIEFHQUlOU1QoJ3NvbWV0aGluZycpIEFORCBgbmFtZWAgPD4gJ290aGVyIHVud2FudGVkJyBBTkQgYGNyZWF0b3JJZGAgPSAxIExJTUlUIDEwXCIpO1xuICB9XG59XG5cbmNyZWF0ZVNwZWMobmV3IE15U3FsRGlhbGVjdFNwZWMoKSk7XG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const test_1 = require("@uql/core/test");
|
|
4
|
-
const postgresDialect_1 = require("./postgresDialect");
|
|
5
|
-
class PostgresDialectSpec {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.dialect = new postgresDialect_1.PostgresDialect();
|
|
8
|
-
}
|
|
9
|
-
shouldBeValidEscapeCharacter() {
|
|
10
|
-
expect(this.dialect.escapeIdChar).toBe('"');
|
|
11
|
-
}
|
|
12
|
-
shouldBeginTransaction() {
|
|
13
|
-
expect(this.dialect.beginTransactionCommand).toBe('BEGIN TRANSACTION');
|
|
14
|
-
}
|
|
15
|
-
shouldInsertMany() {
|
|
16
|
-
expect(this.dialect.insert(test_1.User, [
|
|
17
|
-
{
|
|
18
|
-
name: 'Some name 1',
|
|
19
|
-
email: 'someemail1@example.com',
|
|
20
|
-
createdAt: 123,
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
name: 'Some name 2',
|
|
24
|
-
email: 'someemail2@example.com',
|
|
25
|
-
createdAt: 456,
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
name: 'Some name 3',
|
|
29
|
-
email: 'someemail3@example.com',
|
|
30
|
-
createdAt: 789,
|
|
31
|
-
},
|
|
32
|
-
])).toBe('INSERT INTO "User" ("name", "email", "createdAt") VALUES' +
|
|
33
|
-
" ('Some name 1', 'someemail1@example.com', 123)" +
|
|
34
|
-
", ('Some name 2', 'someemail2@example.com', 456)" +
|
|
35
|
-
", ('Some name 3', 'someemail3@example.com', 789)" +
|
|
36
|
-
' RETURNING "id" "id"');
|
|
37
|
-
}
|
|
38
|
-
shouldInsertOne() {
|
|
39
|
-
expect(this.dialect.insert(test_1.User, {
|
|
40
|
-
name: 'Some Name',
|
|
41
|
-
email: 'someemail@example.com',
|
|
42
|
-
createdAt: 123,
|
|
43
|
-
})).toBe(`INSERT INTO "User" ("name", "email", "createdAt") VALUES ('Some Name', 'someemail@example.com', 123) RETURNING "id" "id"`);
|
|
44
|
-
}
|
|
45
|
-
shouldInsertWithOnInsertId() {
|
|
46
|
-
expect(this.dialect.insert(test_1.TaxCategory, {
|
|
47
|
-
name: 'Some Name',
|
|
48
|
-
createdAt: 123,
|
|
49
|
-
})).toMatch(/^INSERT INTO "TaxCategory" \("name", "createdAt", "pk"\) VALUES \('Some Name', 123, '.+'\) RETURNING "pk" "id"$/);
|
|
50
|
-
}
|
|
51
|
-
shouldFind$istartsWith() {
|
|
52
|
-
expect(this.dialect.find(test_1.User, {
|
|
53
|
-
$project: ['id'],
|
|
54
|
-
$filter: { name: { $istartsWith: 'Some' } },
|
|
55
|
-
$sort: { name: 1, id: -1 },
|
|
56
|
-
$skip: 0,
|
|
57
|
-
$limit: 50,
|
|
58
|
-
})).toBe(`SELECT "id" FROM "User" WHERE "name" ILIKE 'Some%' ORDER BY "name", "id" DESC LIMIT 50 OFFSET 0`);
|
|
59
|
-
expect(this.dialect.find(test_1.User, {
|
|
60
|
-
$project: { id: true },
|
|
61
|
-
$filter: { name: { $istartsWith: 'Some', $ne: 'Something' } },
|
|
62
|
-
$sort: { name: 1, id: -1 },
|
|
63
|
-
$skip: 0,
|
|
64
|
-
$limit: 50,
|
|
65
|
-
})).toBe(`SELECT "id" FROM "User" WHERE ("name" ILIKE 'Some%' AND "name" <> 'Something') ORDER BY "name", "id" DESC LIMIT 50 OFFSET 0`);
|
|
66
|
-
}
|
|
67
|
-
shouldFind$iendsWith() {
|
|
68
|
-
expect(this.dialect.find(test_1.User, {
|
|
69
|
-
$project: ['id'],
|
|
70
|
-
$filter: { name: { $iendsWith: 'Some' } },
|
|
71
|
-
$sort: { name: 1, id: -1 },
|
|
72
|
-
$skip: 0,
|
|
73
|
-
$limit: 50,
|
|
74
|
-
})).toBe(`SELECT "id" FROM "User" WHERE "name" ILIKE '%Some' ORDER BY "name", "id" DESC LIMIT 50 OFFSET 0`);
|
|
75
|
-
expect(this.dialect.find(test_1.User, {
|
|
76
|
-
$project: { id: true },
|
|
77
|
-
$filter: { name: { $iendsWith: 'Some', $ne: 'Something' } },
|
|
78
|
-
$sort: { name: 1, id: -1 },
|
|
79
|
-
$skip: 0,
|
|
80
|
-
$limit: 50,
|
|
81
|
-
})).toBe(`SELECT "id" FROM "User" WHERE ("name" ILIKE '%Some' AND "name" <> 'Something') ORDER BY "name", "id" DESC LIMIT 50 OFFSET 0`);
|
|
82
|
-
}
|
|
83
|
-
shouldFind$iincludes() {
|
|
84
|
-
expect(this.dialect.find(test_1.User, {
|
|
85
|
-
$project: ['id'],
|
|
86
|
-
$filter: { name: { $iincludes: 'Some' } },
|
|
87
|
-
$sort: { name: 1, id: -1 },
|
|
88
|
-
$skip: 0,
|
|
89
|
-
$limit: 50,
|
|
90
|
-
})).toBe(`SELECT "id" FROM "User" WHERE "name" ILIKE '%Some%' ORDER BY "name", "id" DESC LIMIT 50 OFFSET 0`);
|
|
91
|
-
expect(this.dialect.find(test_1.User, {
|
|
92
|
-
$project: { id: true },
|
|
93
|
-
$filter: { name: { $iincludes: 'Some', $ne: 'Something' } },
|
|
94
|
-
$sort: { name: 1, id: -1 },
|
|
95
|
-
$skip: 0,
|
|
96
|
-
$limit: 50,
|
|
97
|
-
})).toBe(`SELECT "id" FROM "User" WHERE ("name" ILIKE '%Some%' AND "name" <> 'Something') ORDER BY "name", "id" DESC LIMIT 50 OFFSET 0`);
|
|
98
|
-
}
|
|
99
|
-
shouldFind$ilike() {
|
|
100
|
-
expect(this.dialect.find(test_1.User, {
|
|
101
|
-
$project: ['id'],
|
|
102
|
-
$filter: { name: { $ilike: 'Some' } },
|
|
103
|
-
$sort: { name: 1, id: -1 },
|
|
104
|
-
$skip: 0,
|
|
105
|
-
$limit: 50,
|
|
106
|
-
})).toBe(`SELECT "id" FROM "User" WHERE "name" ILIKE 'Some' ORDER BY "name", "id" DESC LIMIT 50 OFFSET 0`);
|
|
107
|
-
expect(this.dialect.find(test_1.User, {
|
|
108
|
-
$project: { id: true },
|
|
109
|
-
$filter: { name: { $ilike: 'Some', $ne: 'Something' } },
|
|
110
|
-
$sort: { name: 1, id: -1 },
|
|
111
|
-
$skip: 0,
|
|
112
|
-
$limit: 50,
|
|
113
|
-
})).toBe(`SELECT "id" FROM "User" WHERE ("name" ILIKE 'Some' AND "name" <> 'Something') ORDER BY "name", "id" DESC LIMIT 50 OFFSET 0`);
|
|
114
|
-
}
|
|
115
|
-
shouldFind$regex() {
|
|
116
|
-
expect(this.dialect.find(test_1.User, {
|
|
117
|
-
$project: { id: true },
|
|
118
|
-
$filter: { name: { $regex: '^some' } },
|
|
119
|
-
})).toBe(`SELECT "id" FROM "User" WHERE "name" ~ '^some'`);
|
|
120
|
-
}
|
|
121
|
-
shouldFind$text() {
|
|
122
|
-
expect(this.dialect.find(test_1.Item, {
|
|
123
|
-
$project: { id: true },
|
|
124
|
-
$filter: { $text: { $fields: ['name', 'description'], $value: 'some text' }, code: '1' },
|
|
125
|
-
$limit: 30,
|
|
126
|
-
})).toBe(`SELECT "id" FROM "Item" WHERE to_tsvector("name" || ' ' || "description") @@ to_tsquery('some text') AND "code" = '1' LIMIT 30`);
|
|
127
|
-
expect(this.dialect.find(test_1.User, {
|
|
128
|
-
$project: { id: true },
|
|
129
|
-
$filter: {
|
|
130
|
-
$text: { $fields: ['name'], $value: 'something' },
|
|
131
|
-
name: { $ne: 'other unwanted' },
|
|
132
|
-
creatorId: 1,
|
|
133
|
-
},
|
|
134
|
-
$limit: 10,
|
|
135
|
-
})).toBe(`SELECT "id" FROM "User" WHERE to_tsvector("name") @@ to_tsquery('something') AND "name" <> 'other unwanted' AND "creatorId" = 1 LIMIT 10`);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
(0, test_1.createSpec)(new PostgresDialectSpec());
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdGdyZXNEaWFsZWN0LnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGlhbGVjdC9wb3N0Z3Jlc0RpYWxlY3Quc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUFxRTtBQUNyRSx1REFBb0Q7QUFFcEQsTUFBTSxtQkFBbUI7SUFBekI7UUFDVyxZQUFPLEdBQUcsSUFBSSxpQ0FBZSxFQUFFLENBQUM7SUFpTDNDLENBQUM7SUEvS0MsNEJBQTRCO1FBQzFCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE1BQU0sQ0FDSixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFJLEVBQUU7WUFDeEI7Z0JBQ0UsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLEtBQUssRUFBRSx3QkFBd0I7Z0JBQy9CLFNBQVMsRUFBRSxHQUFHO2FBQ2Y7WUFDRDtnQkFDRSxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsS0FBSyxFQUFFLHdCQUF3QjtnQkFDL0IsU0FBUyxFQUFFLEdBQUc7YUFDZjtZQUNEO2dCQUNFLElBQUksRUFBRSxhQUFhO2dCQUNuQixLQUFLLEVBQUUsd0JBQXdCO2dCQUMvQixTQUFTLEVBQUUsR0FBRzthQUNmO1NBQ0YsQ0FBQyxDQUNILENBQUMsSUFBSSxDQUNKLDBEQUEwRDtZQUN4RCxpREFBaUQ7WUFDakQsa0RBQWtEO1lBQ2xELGtEQUFrRDtZQUNsRCxzQkFBc0IsQ0FDekIsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxDQUNKLElBQUksQ0FBQyxPQUFPLENBQUMsTUFB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QUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFO2dCQUNqRCxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQy9CLFNBQVMsRUFBRSxDQUFDO2FBQ2I7WUFDRCxNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUMsQ0FDSCxDQUFDLElBQUksQ0FDSiwwSUFBMEksQ0FDM0ksQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVELElBQUEsaUJBQVUsRUFBQyxJQUFJLG1CQUFtQixFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVzZXIsIEl0ZW0sIGNyZWF0ZVNwZWMsIFRheENhdGVnb3J5IH0gZnJvbSAnQHVxbC9jb3JlL3Rlc3QnO1xuaW1wb3J0IHsgUG9zdGdyZXNEaWFsZWN0IH0gZnJvbSAnLi9wb3N0Z3Jlc0RpYWxlY3QnO1xuXG5jbGFzcyBQb3N0Z3Jlc0RpYWxlY3RTcGVjIHtcbiAgcmVhZG9ubHkgZGlhbGVjdCA9IG5ldyBQb3N0Z3Jlc0RpYWxlY3QoKTtcblxuICBzaG91bGRCZVZhbGlkRXNjYXBlQ2hhcmFjdGVyKCkge1xuICAgIGV4cGVjdCh0aGlzLmRpYWxlY3QuZXNjYXBlSWRDaGFyKS50b0JlKCdcIicpO1xuICB9XG5cbiAgc2hvdWxkQmVnaW5UcmFuc2FjdGlvbigpIHtcbiAgICBleHBlY3QodGhpcy5kaWFsZWN0LmJlZ2luVHJhbnNhY3Rpb25Db21tYW5kKS50b0JlKCdCRUdJTiBUUkFOU0FDVElPTicpO1xuICB9XG5cbiAgc2hvdWxkSW5zZXJ0TWFueSgpIHtcbiAgICBleHBlY3QoXG4gICAgICB0aGlzLmRpYWxlY3QuaW5zZXJ0KFVzZXIsIFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdTb21lIG5hbWUgMScsXG4gICAgICAgICAgZW1haWw6ICdzb21lZW1haWwxQGV4YW1wbGUuY29tJyxcbiAgICAgICAgICBjcmVhdGVkQXQ6IDEyMyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdTb21lIG5hbWUgMicsXG4gICAgICAgICAgZW1haWw6ICdzb21lZW1haWwyQGV4YW1wbGUuY29tJyxcbiAgICAgICAgICBjcmVhdGVkQXQ6IDQ1NixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdTb21lIG5hbWUgMycsXG4gICAgICAgICAgZW1haWw6ICdzb21lZW1haWwzQGV4YW1wbGUuY29tJyxcbiAgICAgICAgICBjcmVhdGVkQXQ6IDc4OSxcbiAgICAgICAgfSxcbiAgICAgIF0pXG4gICAgKS50b0JlKFxuICAgICAgJ0lOU0VSVCBJTlRPIFwiVXNlclwiIChcIm5hbWVcIiwgXCJlbWFpbFwiLCBcImNyZWF0ZWRBdFwiKSBWQUxVRVMnICtcbiAgICAgICAgXCIgKCdTb21lIG5hbWUgMScsICdzb21lZW1haWwxQGV4YW1wbGUuY29tJywgMTIzKVwiICtcbiAgICAgICAgXCIsICgnU29tZSBuYW1lIDInLCAnc29tZWVtYWlsMkBleGFtcGxlLmNvbScsIDQ1NilcIiArXG4gICAgICAgIFwiLCAoJ1NvbWUgbmFtZSAzJywgJ3NvbWVlbWFpbDNAZXhhbXBsZS5jb20nLCA3ODkpXCIgK1xuICAgICAgICAnIFJFVFVSTklORyBcImlkXCIgXCJpZFwiJ1xuICAgICk7XG4gIH1cblxuICBzaG91bGRJbnNlcnRPbmUoKSB7XG4gICAgZXhwZWN0KFxuICAgICAgdGhpcy5kaWFsZWN0Lmluc2VydChVc2VyLCB7XG4gICAgICAgIG5hbWU6ICdTb21lIE5hbWUnLFxuICAgICAgICBlbWFpbDogJ3NvbWVlbWFpbEBleGFtcGxlLmNvbScsXG4gICAgICAgIGNyZWF0ZWRBdDogMTIzLFxuICAgICAgfSlcbiAgICApLnRvQmUoYElOU0VSVCBJTlRPIFwiVXNlclwiIChcIm5hbWVcIiwgXCJlbWFpbFwiLCBcImNyZWF0ZWRBdFwiKSBWQUxVRVMgKCdTb21lIE5hbWUnLCAnc29tZWVtYWlsQGV4YW1wbGUuY29tJywgMTIzKSBSRVRVUk5JTkcgXCJpZFwiIFwiaWRcImApO1xuICB9XG5cbiAgc2hvdWxkSW5zZXJ0V2l0aE9uSW5zZXJ0SWQoKSB7XG4gICAgZXhwZWN0KFxuICAgICAgdGhpcy5kaWFsZWN0Lmluc2VydChUYXhDYXRlZ29yeSwge1xuICAgICAgICBuYW1lOiAnU29tZSBOYW1lJyxcbiAgICAgICAgY3JlYXRlZEF0OiAxMjMsXG4gICAgICB9KVxuICAgICkudG9NYXRjaCgvXklOU0VSVCBJTlRPIFwiVGF4Q2F0ZWdvcnlcIiBcXChcIm5hbWVcIiwgXCJjcmVhdGVkQXRcIiwgXCJwa1wiXFwpIFZBTFVFUyBcXCgnU29tZSBOYW1lJywgMTIzLCAnLisnXFwpIFJFVFVSTklORyBcInBrXCIgXCJpZFwiJC8pO1xuICB9XG5cbiAgc2hvdWxkRmluZCRpc3RhcnRzV2l0aCgpIHtcbiAgICBleHBlY3QoXG4gICAgICB0aGlzLmRpYWxlY3QuZmluZChVc2VyLCB7XG4gICAgICAgICRwcm9qZWN0OiBbJ2lkJ10sXG4gICAgICAgICRmaWx0ZXI6IHsgbmFtZTogeyAkaXN0YXJ0c1dpdGg6ICdTb21lJyB9IH0sXG4gICAgICAgICRzb3J0OiB7IG5hbWU6IDEsIGlkOiAtMSB9LFxuICAgICAgICAkc2tpcDogMCxcbiAgICAgICAgJGxpbWl0OiA1MCxcbiAgICAgIH0pXG4gICAgKS50b0JlKGBTRUxFQ1QgXCJpZFwiIEZST00gXCJVc2VyXCIgV0hFUkUgXCJuYW1lXCIgSUxJS0UgJ1NvbWUlJyBPUkRFUiBCWSBcIm5hbWVcIiwgXCJpZFwiIERFU0MgTElNSVQgNTAgT0ZGU0VUIDBgKTtcblxuICAgIGV4cGVjdChcbiAgICAgIHRoaXMuZGlhbGVjdC5maW5kKFVzZXIsIHtcbiAgICAgICAgJHByb2plY3Q6IHsgaWQ6IHRydWUgfSxcbiAgICAgICAgJGZpbHRlcjogeyBuYW1lOiB7ICRpc3RhcnRzV2l0aDogJ1NvbWUnLCAkbmU6ICdTb21ldGhpbmcnIH0gfSxcbiAgICAgICAgJHNvcnQ6IHsgbmFtZTogMSwgaWQ6IC0xIH0sXG4gICAgICAgICRza2lwOiAwLFxuICAgICAgICAkbGltaXQ6IDUwLFxuICAgICAgfSlcbiAgICApLnRvQmUoYFNFTEVDVCBcImlkXCIgRlJPTSBcIlVzZXJcIiBXSEVSRSAoXCJuYW1lXCIgSUxJS0UgJ1NvbWUlJyBBTkQgXCJuYW1lXCIgPD4gJ1NvbWV0aGluZycpIE9SREVSIEJZIFwibmFtZVwiLCBcImlkXCIgREVTQyBMSU1JVCA1MCBPRkZTRVQgMGApO1xuICB9XG5cbiAgc2hvdWxkRmluZCRpZW5kc1dpdGgoKSB7XG4gICAgZXhwZWN0KFxuICAgICAgdGhpcy5kaWFsZWN0LmZpbmQoVXNlciwge1xuICAgICAgICAkcHJvamVjdDogWydpZCddLFxuICAgICAgICAkZmlsdGVyOiB7IG5hbWU6IHsgJGllbmRzV2l0aDogJ1NvbWUnIH0gfSxcbiAgICAgICAgJHNvcnQ6IHsgbmFtZTogMSwgaWQ6IC0xIH0sXG4gICAgICAgICRza2lwOiAwLFxuICAgICAgICAkbGltaXQ6IDUwLFxuICAgICAgfSlcbiAgICApLnRvQmUoYFNFTEVDVCBcImlkXCIgRlJPTSBcIlVzZXJcIiBXSEVSRSBcIm5hbWVcIiBJTElLRSAnJVNvbWUnIE9SREVSIEJZIFwibmFtZVwiLCBcImlkXCIgREVTQyBMSU1JVCA1MCBPRkZTRVQgMGApO1xuXG4gICAgZXhwZWN0KFxuICAgICAgdGhpcy5kaWFsZWN0LmZpbmQoVXNlciwge1xuICAgICAgICAkcHJvamVjdDogeyBpZDogdHJ1ZSB9LFxuICAgICAgICAkZmlsdGVyOiB7IG5hbWU6IHsgJGllbmRzV2l0aDogJ1NvbWUnLCAkbmU6ICdTb21ldGhpbmcnIH0gfSxcbiAgICAgICAgJHNvcnQ6IHsgbmFtZTogMSwgaWQ6IC0xIH0sXG4gICAgICAgICRza2lwOiAwLFxuICAgICAgICAkbGltaXQ6IDUwLFxuICAgICAgfSlcbiAgICApLnRvQmUoYFNFTEVDVCBcImlkXCIgRlJPTSBcIlVzZXJcIiBXSEVSRSAoXCJuYW1lXCIgSUxJS0UgJyVTb21lJyBBTkQgXCJuYW1lXCIgPD4gJ1NvbWV0aGluZycpIE9SREVSIEJZIFwibmFtZVwiLCBcImlkXCIgREVTQyBMSU1JVCA1MCBPRkZTRVQgMGApO1xuICB9XG5cbiAgc2hvdWxkRmluZCRpaW5jbHVkZXMoKSB7XG4gICAgZXhwZWN0KFxuICAgICAgdGhpcy5kaWFsZWN0LmZpbmQoVXNlciwge1xuICAgICAgICAkcHJvamVjdDogWydpZCddLFxuICAgICAgICAkZmlsdGVyOiB7IG5hbWU6IHsgJGlpbmNsdWRlczogJ1NvbWUnIH0gfSxcbiAgICAgICAgJHNvcnQ6IHsgbmFtZTogMSwgaWQ6IC0xIH0sXG4gICAgICAgICRza2lwOiAwLFxuICAgICAgICAkbGltaXQ6IDUwLFxuICAgICAgfSlcbiAgICApLnRvQmUoYFNFTEVDVCBcImlkXCIgRlJPTSBcIlVzZXJcIiBXSEVSRSBcIm5hbWVcIiBJTElLRSAnJVNvbWUlJyBPUkRFUiBCWSBcIm5hbWVcIiwgXCJpZFwiIERFU0MgTElNSVQgNTAgT0ZGU0VUIDBgKTtcblxuICAgIGV4cGVjdChcbiAgICAgIHRoaXMuZGlhbGVjdC5maW5kKFVzZXIsIHtcbiAgICAgICAgJHByb2plY3Q6IHsgaWQ6IHRydWUgfSxcbiAgICAgICAgJGZpbHRlcjogeyBuYW1lOiB7ICRpaW5jbHVkZXM6ICdTb21lJywgJG5lOiAnU29tZXRoaW5nJyB9IH0sXG4gICAgICAgICRzb3J0OiB7IG5hbWU6IDEsIGlkOiAtMSB9LFxuICAgICAgICAkc2tpcDogMCxcbiAgICAgICAgJGxpbWl0OiA1MCxcbiAgICAgIH0pXG4gICAgKS50b0JlKGBTRUxFQ1QgXCJpZFwiIEZST00gXCJVc2VyXCIgV0hFUkUgKFwibmFtZVwiIElMSUtFICclU29tZSUnIEFORCBcIm5hbWVcIiA8PiAnU29tZXRoaW5nJykgT1JERVIgQlkgXCJuYW1lXCIsIFwiaWRcIiBERVNDIExJTUlUIDUwIE9GRlNFVCAwYCk7XG4gIH1cblxuICBzaG91bGRGaW5kJGlsaWtlKCkge1xuICAgIGV4cGVjdChcbiAgICAgIHRoaXMuZGlhbGVjdC5maW5kKFVzZXIsIHtcbiAgICAgICAgJHByb2plY3Q6IFsnaWQnXSxcbiAgICAgICAgJGZpbHRlcjogeyBuYW1lOiB7ICRpbGlrZTogJ1NvbWUnIH0gfSxcbiAgICAgICAgJHNvcnQ6IHsgbmFtZTogMSwgaWQ6IC0xIH0sXG4gICAgICAgICRza2lwOiAwLFxuICAgICAgICAkbGltaXQ6IDUwLFxuICAgICAgfSlcbiAgICApLnRvQmUoYFNFTEVDVCBcImlkXCIgRlJPTSBcIlVzZXJcIiBXSEVSRSBcIm5hbWVcIiBJTElLRSAnU29tZScgT1JERVIgQlkgXCJuYW1lXCIsIFwiaWRcIiBERVNDIExJTUlUIDUwIE9GRlNFVCAwYCk7XG5cbiAgICBleHBlY3QoXG4gICAgICB0aGlzLmRpYWxlY3QuZmluZChVc2VyLCB7XG4gICAgICAgICRwcm9qZWN0OiB7IGlkOiB0cnVlIH0sXG4gICAgICAgICRmaWx0ZXI6IHsgbmFtZTogeyAkaWxpa2U6ICdTb21lJywgJG5lOiAnU29tZXRoaW5nJyB9IH0sXG4gICAgICAgICRzb3J0OiB7IG5hbWU6IDEsIGlkOiAtMSB9LFxuICAgICAgICAkc2tpcDogMCxcbiAgICAgICAgJGxpbWl0OiA1MCxcbiAgICAgIH0pXG4gICAgKS50b0JlKGBTRUxFQ1QgXCJpZFwiIEZST00gXCJVc2VyXCIgV0hFUkUgKFwibmFtZVwiIElMSUtFICdTb21lJyBBTkQgXCJuYW1lXCIgPD4gJ1NvbWV0aGluZycpIE9SREVSIEJZIFwibmFtZVwiLCBcImlkXCIgREVTQyBMSU1JVCA1MCBPRkZTRVQgMGApO1xuICB9XG5cbiAgc2hvdWxkRmluZCRyZWdleCgpIHtcbiAgICBleHBlY3QoXG4gICAgICB0aGlzLmRpYWxlY3QuZmluZChVc2VyLCB7XG4gICAgICAgICRwcm9qZWN0OiB7IGlkOiB0cnVlIH0sXG4gICAgICAgICRmaWx0ZXI6IHsgbmFtZTogeyAkcmVnZXg6ICdec29tZScgfSB9LFxuICAgICAgfSlcbiAgICApLnRvQmUoYFNFTEVDVCBcImlkXCIgRlJPTSBcIlVzZXJcIiBXSEVSRSBcIm5hbWVcIiB+ICdec29tZSdgKTtcbiAgfVxuXG4gIHNob3VsZEZpbmQkdGV4dCgpIHtcbiAgICBleHBlY3QoXG4gICAgICB0aGlzLmRpYWxlY3QuZmluZChJdGVtLCB7XG4gICAgICAgICRwcm9qZWN0OiB7IGlkOiB0cnVlIH0sXG4gICAgICAgICRmaWx0ZXI6IHsgJHRleHQ6IHsgJGZpZWxkczogWyduYW1lJywgJ2Rlc2NyaXB0aW9uJ10sICR2YWx1ZTogJ3NvbWUgdGV4dCcgfSwgY29kZTogJzEnIH0sXG4gICAgICAgICRsaW1pdDogMzAsXG4gICAgICB9KVxuICAgICkudG9CZShgU0VMRUNUIFwiaWRcIiBGUk9NIFwiSXRlbVwiIFdIRVJFIHRvX3RzdmVjdG9yKFwibmFtZVwiIHx8ICcgJyB8fCBcImRlc2NyaXB0aW9uXCIpIEBAIHRvX3RzcXVlcnkoJ3NvbWUgdGV4dCcpIEFORCBcImNvZGVcIiA9ICcxJyBMSU1JVCAzMGApO1xuXG4gICAgZXhwZWN0KFxuICAgICAgdGhpcy5kaWFsZWN0LmZpbmQoVXNlciwge1xuICAgICAgICAkcHJvamVjdDogeyBpZDogdHJ1ZSB9LFxuICAgICAgICAkZmlsdGVyOiB7XG4gICAgICAgICAgJHRleHQ6IHsgJGZpZWxkczogWyduYW1lJ10sICR2YWx1ZTogJ3NvbWV0aGluZycgfSxcbiAgICAgICAgICBuYW1lOiB7ICRuZTogJ290aGVyIHVud2FudGVkJyB9LFxuICAgICAgICAgIGNyZWF0b3JJZDogMSxcbiAgICAgICAgfSxcbiAgICAgICAgJGxpbWl0OiAxMCxcbiAgICAgIH0pXG4gICAgKS50b0JlKFxuICAgICAgYFNFTEVDVCBcImlkXCIgRlJPTSBcIlVzZXJcIiBXSEVSRSB0b190c3ZlY3RvcihcIm5hbWVcIikgQEAgdG9fdHNxdWVyeSgnc29tZXRoaW5nJykgQU5EIFwibmFtZVwiIDw+ICdvdGhlciB1bndhbnRlZCcgQU5EIFwiY3JlYXRvcklkXCIgPSAxIExJTUlUIDEwYFxuICAgICk7XG4gIH1cbn1cblxuY3JlYXRlU3BlYyhuZXcgUG9zdGdyZXNEaWFsZWN0U3BlYygpKTtcbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const test_1 = require("@uql/core/test");
|
|
4
|
-
const abstractSqlDialect_spec_1 = require("./abstractSqlDialect-spec");
|
|
5
|
-
const sqliteDialect_1 = require("./sqliteDialect");
|
|
6
|
-
class SqliteDialectSpec extends abstractSqlDialect_spec_1.AbstractSqlDialectSpec {
|
|
7
|
-
constructor() {
|
|
8
|
-
super(new sqliteDialect_1.SqliteDialect());
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
(0, test_1.createSpec)(new SqliteDialectSpec());
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsaXRlRGlhbGVjdC5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RpYWxlY3Qvc3FsaXRlRGlhbGVjdC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEseUNBQXdEO0FBQ3hELHVFQUFtRTtBQUNuRSxtREFBZ0Q7QUFFaEQsTUFBTSxpQkFBa0IsU0FBUSxnREFBc0I7SUFDcEQ7UUFDRSxLQUFLLENBQUMsSUFBSSw2QkFBYSxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUFFRCxJQUFBLGlCQUFVLEVBQUMsSUFBSSxpQkFBaUIsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVTcGVjLCBJdGVtLCBVc2VyIH0gZnJvbSAnQHVxbC9jb3JlL3Rlc3QnO1xuaW1wb3J0IHsgQWJzdHJhY3RTcWxEaWFsZWN0U3BlYyB9IGZyb20gJy4vYWJzdHJhY3RTcWxEaWFsZWN0LXNwZWMnO1xuaW1wb3J0IHsgU3FsaXRlRGlhbGVjdCB9IGZyb20gJy4vc3FsaXRlRGlhbGVjdCc7XG5cbmNsYXNzIFNxbGl0ZURpYWxlY3RTcGVjIGV4dGVuZHMgQWJzdHJhY3RTcWxEaWFsZWN0U3BlYyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKG5ldyBTcWxpdGVEaWFsZWN0KCkpO1xuICB9XG59XG5cbmNyZWF0ZVNwZWMobmV3IFNxbGl0ZURpYWxlY3RTcGVjKCkpO1xuIl19
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|