@uql/core 0.4.81 → 0.4.82

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.
Files changed (43) hide show
  1. package/dialect/abstractSqlDialect-spec.d.ts +49 -0
  2. package/dialect/abstractSqlDialect-spec.js +765 -0
  3. package/dialect/mysqlDialect.spec.d.ts +6 -0
  4. package/dialect/mysqlDialect.spec.js +33 -0
  5. package/dialect/postgresDialect.spec.d.ts +1 -0
  6. package/dialect/postgresDialect.spec.js +139 -0
  7. package/dialect/sqliteDialect.spec.d.ts +1 -0
  8. package/dialect/sqliteDialect.spec.js +12 -0
  9. package/entity/decorator/definition.spec.d.ts +1 -0
  10. package/entity/decorator/definition.spec.js +737 -0
  11. package/entity/decorator/relation.spec.d.ts +1 -0
  12. package/entity/decorator/relation.spec.js +55 -0
  13. package/options.spec.d.ts +1 -0
  14. package/options.spec.js +50 -0
  15. package/package.json +3 -3
  16. package/querier/abstractQuerier-it.d.ts +41 -0
  17. package/querier/abstractQuerier-it.js +410 -0
  18. package/querier/abstractSqlQuerier-it.d.ts +9 -0
  19. package/querier/abstractSqlQuerier-it.js +19 -0
  20. package/querier/abstractSqlQuerier-spec.d.ts +53 -0
  21. package/querier/abstractSqlQuerier-spec.js +609 -0
  22. package/querier/decorator/injectQuerier.spec.d.ts +1 -0
  23. package/querier/decorator/injectQuerier.spec.js +108 -0
  24. package/querier/decorator/transactional.spec.d.ts +1 -0
  25. package/querier/decorator/transactional.spec.js +241 -0
  26. package/repository/genericRepository.spec.d.ts +1 -0
  27. package/repository/genericRepository.spec.js +86 -0
  28. package/test/entityMock.d.ts +180 -0
  29. package/test/entityMock.js +451 -0
  30. package/test/index.d.ts +3 -0
  31. package/test/index.js +7 -0
  32. package/test/it.util.d.ts +4 -0
  33. package/test/it.util.js +60 -0
  34. package/test/spec.util.d.ts +13 -0
  35. package/test/spec.util.js +54 -0
  36. package/util/dialect.util.spec.d.ts +1 -0
  37. package/util/dialect.util.spec.js +23 -0
  38. package/util/object.util.spec.d.ts +1 -0
  39. package/util/object.util.spec.js +26 -0
  40. package/util/sql.util.spec.d.ts +1 -0
  41. package/util/sql.util.spec.js +164 -0
  42. package/util/string.util.spec.d.ts +1 -0
  43. package/util/string.util.spec.js +26 -0
@@ -0,0 +1,6 @@
1
+ import { AbstractSqlDialectSpec } from './abstractSqlDialect-spec';
2
+ export declare class MySqlDialectSpec extends AbstractSqlDialectSpec {
3
+ constructor();
4
+ shouldBeginTransaction(): void;
5
+ shouldFind$text(): void;
6
+ }
@@ -0,0 +1,33 @@
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=
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,139 @@
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==
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
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
@@ -0,0 +1 @@
1
+ export {};