taon-type-sql 18.0.14 → 18.0.15
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/tmp-environment.json
CHANGED
|
@@ -30,14 +30,14 @@
|
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
32
|
"name": "taon-type-sql",
|
|
33
|
-
"version": "18.0.
|
|
33
|
+
"version": "18.0.15",
|
|
34
34
|
"typings": "dist/index.d.ts",
|
|
35
35
|
"repository": {
|
|
36
36
|
"type": "git",
|
|
37
37
|
"url": "https://github.com/ggmod/type-sql.git"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"tnp-core": "~18.0.
|
|
40
|
+
"tnp-core": "~18.0.40"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@angular-builders/custom-webpack": "~18.0.0",
|
|
@@ -96,6 +96,7 @@
|
|
|
96
96
|
"@types/chokidar": "2.1.3",
|
|
97
97
|
"@types/dateformat": "1.0.1",
|
|
98
98
|
"@types/diff": "5.2.1",
|
|
99
|
+
"@types/dockerode": "3.3.32",
|
|
99
100
|
"@types/express": "4.17.21",
|
|
100
101
|
"@types/express-fileupload": "1.5.0",
|
|
101
102
|
"@types/fs-extra": "7.0.0",
|
|
@@ -118,6 +119,7 @@
|
|
|
118
119
|
"@types/semver": "7.5.8",
|
|
119
120
|
"@types/systeminformation": "3.54.1",
|
|
120
121
|
"@types/vinyl": "2.0.12",
|
|
122
|
+
"@types/wait-on": "5.3.4",
|
|
121
123
|
"@types/watch": "1.0.6",
|
|
122
124
|
"@typescript-eslint/eslint-plugin": "8.0.1",
|
|
123
125
|
"@typescript-eslint/parser": "8.0.1",
|
|
@@ -128,7 +130,7 @@
|
|
|
128
130
|
"angular-resize-event": "3.2.0",
|
|
129
131
|
"animate.css": "4.1.1",
|
|
130
132
|
"app-root-path": "3.1.0",
|
|
131
|
-
"axios": "1.7.
|
|
133
|
+
"axios": "1.7.7",
|
|
132
134
|
"base32": "0.0.7",
|
|
133
135
|
"bcryptjs": "2.4.3",
|
|
134
136
|
"body-parser": "1.20.2",
|
|
@@ -146,6 +148,7 @@
|
|
|
146
148
|
"class-transformer": "0.5.1",
|
|
147
149
|
"class-validator": "0.14.1",
|
|
148
150
|
"cli-highlight": "2.1.11",
|
|
151
|
+
"columnify": "1.6.0",
|
|
149
152
|
"command-exists": "1.2.2",
|
|
150
153
|
"compression": "1.7.4",
|
|
151
154
|
"concurrently": "8.2.2",
|
|
@@ -160,6 +163,7 @@
|
|
|
160
163
|
"dateformat": "3.0.3",
|
|
161
164
|
"detect-mocha": "0.1.0",
|
|
162
165
|
"diff": "4.0.2",
|
|
166
|
+
"dockerode": "4.0.2",
|
|
163
167
|
"electron": "25.2.0",
|
|
164
168
|
"electron-builder": "24.4.0",
|
|
165
169
|
"electron-debug": "3.2.0",
|
|
@@ -198,13 +202,13 @@
|
|
|
198
202
|
"image-focus": "1.2.1",
|
|
199
203
|
"immer": "10.0.2",
|
|
200
204
|
"immutable": "4.3.7",
|
|
201
|
-
"incremental-compiler": "~18.0.
|
|
205
|
+
"incremental-compiler": "~18.0.15",
|
|
202
206
|
"inquirer": "7.3.3",
|
|
203
207
|
"inquirer-autocomplete-prompt": "1.4.0",
|
|
204
208
|
"inquirer-autocomplete-standalone": "0.8.1",
|
|
205
209
|
"inquirer-select-pro": "1.0.0-alpha.7",
|
|
206
210
|
"is-elevated": "3.0.0",
|
|
207
|
-
"isomorphic-region-loader": "~18.0.
|
|
211
|
+
"isomorphic-region-loader": "~18.0.15",
|
|
208
212
|
"istanbul-instrumenter-loader": "3.0.1",
|
|
209
213
|
"jest": "29.7.0",
|
|
210
214
|
"jest-date-mock": "1.0.10",
|
|
@@ -215,8 +219,8 @@
|
|
|
215
219
|
"joi": "17.13.3",
|
|
216
220
|
"jscodeshift": "0.6.3",
|
|
217
221
|
"json-stringify-safe": "5.0.1",
|
|
218
|
-
"json10": "~18.0.
|
|
219
|
-
"json10-writer": "~18.0.
|
|
222
|
+
"json10": "~18.0.15",
|
|
223
|
+
"json10-writer": "~18.0.15",
|
|
220
224
|
"json5": "2.2.3",
|
|
221
225
|
"json5-writer": "0.2.0",
|
|
222
226
|
"jszip": "3.10.1",
|
|
@@ -225,9 +229,9 @@
|
|
|
225
229
|
"localforage": "1.10.0",
|
|
226
230
|
"lockfile": "1.0.4",
|
|
227
231
|
"lodash": "4.17.21",
|
|
228
|
-
"lodash-walk-object": "~18.0.
|
|
232
|
+
"lodash-walk-object": "~18.0.15",
|
|
229
233
|
"lowdb": "7.0.1",
|
|
230
|
-
"magic-renamer": "~18.0.
|
|
234
|
+
"magic-renamer": "~18.0.15",
|
|
231
235
|
"material-design-icons": "3.0.1",
|
|
232
236
|
"method-override": "2.3.10",
|
|
233
237
|
"minimist": "1.2.8",
|
|
@@ -238,11 +242,11 @@
|
|
|
238
242
|
"ng-in-viewport": "16.1.0",
|
|
239
243
|
"ng-lock": "18.0.1",
|
|
240
244
|
"ng-packagr": "18.1.0",
|
|
241
|
-
"ng-talkback": "~18.0.
|
|
242
|
-
"ng2-logger": "~18.0.
|
|
245
|
+
"ng-talkback": "~18.0.14",
|
|
246
|
+
"ng2-logger": "~18.0.17",
|
|
243
247
|
"ng2-pdfjs-viewer": "18.0.0",
|
|
244
|
-
"ng2-rest": "~18.0.
|
|
245
|
-
"ng2-rest-swagger-generator": "18.0.
|
|
248
|
+
"ng2-rest": "~18.0.15",
|
|
249
|
+
"ng2-rest-swagger-generator": "18.0.12",
|
|
246
250
|
"ngx-ace-wrapper": "17.0.0",
|
|
247
251
|
"ngx-editor": "17.5.4",
|
|
248
252
|
"ngx-highlightjs": "12.0.0",
|
|
@@ -256,7 +260,7 @@
|
|
|
256
260
|
"ngx-scrolltop": "18.0.0",
|
|
257
261
|
"ngx-store": "3.1.1",
|
|
258
262
|
"ngx-typed-js": "2.1.1",
|
|
259
|
-
"node-cli-tester": "~18.0.
|
|
263
|
+
"node-cli-tester": "~18.0.14",
|
|
260
264
|
"node-localstorage": "2.1.6",
|
|
261
265
|
"node-notifier": "10.0.1",
|
|
262
266
|
"node-polyfill-webpack-plugin": "2.0.1",
|
|
@@ -272,6 +276,7 @@
|
|
|
272
276
|
"path-to-regexp": "6.2.2",
|
|
273
277
|
"pica": "9.0.1",
|
|
274
278
|
"playwright": "1.43.1",
|
|
279
|
+
"pm2": "5.4.3",
|
|
275
280
|
"portfinder": "1.0.21",
|
|
276
281
|
"prettier": "3.3.3",
|
|
277
282
|
"prettier-eslint": "16.3.0",
|
|
@@ -286,7 +291,7 @@
|
|
|
286
291
|
"q": "1.5.1",
|
|
287
292
|
"rallax.js": "2.0.4",
|
|
288
293
|
"randomcolor": "0.5.3",
|
|
289
|
-
"record-replay-req-res-scenario": "~18.0.
|
|
294
|
+
"record-replay-req-res-scenario": "~18.0.14",
|
|
290
295
|
"reflect-metadata": "0.2.2",
|
|
291
296
|
"rimraf": "2.6.2",
|
|
292
297
|
"rxjs": "~7.8.1",
|
|
@@ -298,22 +303,22 @@
|
|
|
298
303
|
"socket.io-client": "4.7.5",
|
|
299
304
|
"sort-package-json": "1.11.0",
|
|
300
305
|
"sql.js": "1.8.0",
|
|
301
|
-
"static-columns": "~18.0.
|
|
306
|
+
"static-columns": "~18.0.16",
|
|
302
307
|
"string-similarity": "4.0.4",
|
|
303
308
|
"sudo-block": "3.0.0",
|
|
304
309
|
"supertest": "7.0.0",
|
|
305
310
|
"sweetalert2": "11.7.32",
|
|
306
311
|
"systeminformation": "3.45.7",
|
|
307
312
|
"taon": "^18",
|
|
308
|
-
"taon-storage": "18.0.
|
|
309
|
-
"taon-type-sql": "18.0.
|
|
310
|
-
"taon-typeorm": "18.0.
|
|
313
|
+
"taon-storage": "18.0.23",
|
|
314
|
+
"taon-type-sql": "18.0.14",
|
|
315
|
+
"taon-typeorm": "18.0.13",
|
|
311
316
|
"task.js": "0.1.5",
|
|
312
317
|
"threads": "1.7.0",
|
|
313
|
-
"tnp": "~18.0.
|
|
314
|
-
"tnp-config": "~18.0.
|
|
315
|
-
"tnp-helpers": "~18.0.
|
|
316
|
-
"tnp-models": "~18.0.
|
|
318
|
+
"tnp": "~18.0.15",
|
|
319
|
+
"tnp-config": "~18.0.17",
|
|
320
|
+
"tnp-helpers": "~18.0.15",
|
|
321
|
+
"tnp-models": "~18.0.16",
|
|
317
322
|
"ts-debug": "1.3.0",
|
|
318
323
|
"ts-json-schema-generator": "2.3.0-next.5",
|
|
319
324
|
"ts-loader": "2.3.1",
|
|
@@ -325,16 +330,16 @@
|
|
|
325
330
|
"typedoc": "0.26.5",
|
|
326
331
|
"typedoc-plugin-markdown": "4.2.3",
|
|
327
332
|
"typescript": "~5.5.4",
|
|
328
|
-
"typescript-class-helpers": "~18.0.
|
|
333
|
+
"typescript-class-helpers": "~18.0.16",
|
|
329
334
|
"typescript-formatter": "~7.2.2",
|
|
330
335
|
"typescript-string-enums": "~1.0.0",
|
|
331
336
|
"underscore": "1.13.7",
|
|
332
337
|
"uuid": "10.0.0",
|
|
333
338
|
"validator": "13.5.2",
|
|
334
339
|
"video.js": "8.3.0",
|
|
335
|
-
"vpn-split": "~18.0.
|
|
340
|
+
"vpn-split": "~18.0.13",
|
|
336
341
|
"vscode": "1.1.37",
|
|
337
|
-
"wait-on": "
|
|
342
|
+
"wait-on": "8.0.1",
|
|
338
343
|
"watch": "1.0.2",
|
|
339
344
|
"webpack": "~5.80",
|
|
340
345
|
"webpack-dev-middleware": "~6.1.3",
|
|
@@ -342,18 +347,18 @@
|
|
|
342
347
|
"yup": "1.3.3",
|
|
343
348
|
"zone.js": "~0.13.0"
|
|
344
349
|
},
|
|
345
|
-
"lastBuildTagHash": "
|
|
350
|
+
"lastBuildTagHash": "a2f89450f314d821eba4e82b2632af3105594fdd",
|
|
346
351
|
"main": "dist/app.electron.js"
|
|
347
352
|
},
|
|
348
353
|
"build": {
|
|
349
|
-
"number":
|
|
350
|
-
"date": "2024-11-
|
|
351
|
-
"hash": "
|
|
354
|
+
"number": 172,
|
|
355
|
+
"date": "2024-11-17T07:01:58.000Z",
|
|
356
|
+
"hash": "7e5fb4dfbf4d7b018d4e368b16599bbd944c10c7"
|
|
352
357
|
},
|
|
353
358
|
"currentProjectName": "taon-type-sql",
|
|
354
359
|
"currentProjectGenericName": "taon-type-sql",
|
|
355
360
|
"currentProjectType": "isomorphic-lib",
|
|
356
|
-
"currentFrameworkVersion": "18.0.
|
|
361
|
+
"currentFrameworkVersion": "18.0.15",
|
|
357
362
|
"isStandaloneProject": true,
|
|
358
363
|
"isSmartContainer": false,
|
|
359
364
|
"pathesTsconfig": "\"paths\": {\"taon-type-sql\":[\"./src/lib\"],\"taon-type-sql/*\":[\"./src/lib/*\"]},",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taon-type-sql.mjs","sources":["../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/condition/query-condition.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/condition/query-condition-chain.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/condition/query-column-condition.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/query-column.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/other/query-ordering.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/condition/query-join-condition.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/value-column.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/comparable-column.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/number-column.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/basic-column.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/boolean-column.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/date-column.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/string-column.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/join/joined-tables-chain.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/join/joined-tables.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/query/select-query.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/query/table-condition-query.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/query/table-query.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/query-source.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/query-table.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/converter/type-converter.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/converter/query-converter.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/converter/param-converter.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/converter/parameterized-converter.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/converter/sql-converter.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/client/query-processor.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/client/mysql.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/index.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/taon-type-sql.ts"],"sourcesContent":["\n\nimport QueryTable from \"../query-table\";\nimport QueryConditionChain from \"./query-condition-chain\";\n\n\n\nabstract class QueryCondition<Table extends QueryTable<any, any>> {\n\n abstract and<Table2 extends QueryTable<any, any>>(condition: QueryCondition<Table2>): QueryConditionChain<Table | Table2>;\n\n abstract or<Table2 extends QueryTable<any, any>>(condition: QueryCondition<Table2>): QueryConditionChain<Table | Table2>;\n}\n\nexport default QueryCondition;\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/condition/query-condition.ts","\n\nimport QueryTable from \"../query-table\";\nimport QueryCondition from \"./query-condition\";\nimport GenericsHelper from \"../helpers/generics-helper\";\nimport {ConditionChainType} from \"../helpers/internal-types\";\n\n\nexport default class QueryConditionChain<Table extends QueryTable<any, any>> extends QueryCondition<Table> {\n\n protected _$type: GenericsHelper<Table>;\n\n protected _sibling: QueryCondition<any>;\n protected _child: QueryCondition<any>;\n protected _chainType: ConditionChainType;\n protected _parenthesis = false;\n protected _negation = false;\n\n constructor(sibling: QueryCondition<any>, child: QueryCondition<any>, chainType: ConditionChainType) {\n super();\n this._sibling = sibling;\n this._child = child;\n this._chainType = chainType;\n }\n\n\n $() {\n this._parenthesis = true;\n return this;\n }\n\n not() {\n this._negation = true;\n return this;\n }\n\n and<Table2 extends QueryTable<any, any>>(condition: QueryCondition<Table2>): QueryConditionChain<Table | Table2> {\n return new QueryConditionChain<Table | Table2>(this, condition, 'and');\n }\n\n or<Table2 extends QueryTable<any, any>>(condition: QueryCondition<Table2>): QueryConditionChain<Table | Table2> {\n return new QueryConditionChain<Table | Table2>(this, condition, 'or');\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/condition/query-condition-chain.ts","\n\nimport QueryColumn from \"../column/query-column\";\nimport QueryTable from \"../query-table\";\nimport QueryCondition from \"./query-condition\";\nimport QueryConditionChain from \"./query-condition-chain\";\nimport {ConditionType} from \"../helpers/internal-types\";\n\n\nexport default class QueryColumnCondition<Table extends QueryTable<any, any>, T> extends QueryCondition<Table> {\n\n protected _column: QueryColumn<Table, T>;\n protected _type: ConditionType;\n protected _values: T[];\n\n constructor(column: QueryColumn<Table, T>, type: ConditionType, ...values: T[]) {\n super();\n this._column = column;\n this._type = type;\n this._values = values;\n }\n\n and<Table2 extends QueryTable<any, any>>(condition: QueryCondition<Table2>): QueryConditionChain<Table | Table2> {\n return new QueryConditionChain<Table | Table2>(this, condition, 'and');\n }\n\n or<Table2 extends QueryTable<any, any>>(condition: QueryCondition<Table2>): QueryConditionChain<Table | Table2> {\n return new QueryConditionChain<Table | Table2>(this, condition, 'or');\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/condition/query-column-condition.ts","\n\nimport QueryTable from \"../query-table\";\nimport NumberColumn from \"./number-column\";\nimport GenericsHelper from \"../helpers/generics-helper\";\nimport QueryColumnCondition from \"../condition/query-column-condition\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n\nabstract class QueryColumn<Table extends QueryTable<any, any>, T> {\n\n protected _$type: GenericsHelper<T>;\n protected _type: string;\n\n constructor(\n protected _table: Table,\n protected _name: ColumnName,\n protected _modifiers: ColumnModifier[] = []\n ) {}\n\n abstract count(): NumberColumn<Table>; // TODO I had to copy-paste the implementation to every child class to avoid a circular dependency\n\n as(alias: string): this {\n return new (<any>this.constructor)(this._table, this._name, this._modifiers.concat({ name: 'as', params: alias }));\n }\n\n isNull() {\n return new QueryColumnCondition<Table, T>(this, 'is-null');\n }\n\n isNotNull() {\n return new QueryColumnCondition<Table, T>(this, 'is-not-null');\n }\n}\n\nexport default QueryColumn;\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/column/query-column.ts","\n\nimport QueryColumn from \"../column/query-column\";\nimport QueryTable from \"../query-table\";\n\n\nexport default class QueryOrdering<Table extends QueryTable<any, any>> {\n\n protected _column: QueryColumn<Table, any>;\n protected _direction: 'ASC' | 'DESC';\n protected _nullsPosition: 'FIRST' | 'LAST';\n\n constructor(column: QueryColumn<Table, any>, direction: 'ASC' | 'DESC') {\n this._column = column;\n this._direction = direction;\n }\n\n nullsFirst(): this {\n this._nullsPosition = 'FIRST';\n return this;\n }\n\n nullsLast(): this {\n this._nullsPosition = 'LAST';\n return this;\n }\n\n}\n\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/other/query-ordering.ts","\n\nimport QueryColumn from \"../column/query-column\";\nimport QueryTable from \"../query-table\";\nimport QueryCondition from \"./query-condition\";\nimport QueryConditionChain from \"./query-condition-chain\";\n\n\nexport default class QueryJoinCondition<Table1 extends QueryTable<any, any>, Table2 extends QueryTable<any, any>, T> extends QueryCondition<Table1 | Table2> {\n\n protected _column: QueryColumn<Table1, T>;\n protected _type: string;\n protected _otherColumn: QueryColumn<Table2, T>;\n\n constructor(column: QueryColumn<Table1, T>, type: string, otherColumn: QueryColumn<Table2, T>) {\n super();\n this._column = column;\n this._type = type;\n this._otherColumn = otherColumn;\n }\n\n and<Table3 extends QueryTable<any, any>>(condition: QueryCondition<Table3>): QueryConditionChain<Table1 | Table2 | Table3> {\n return new QueryConditionChain<Table1 | Table2 | Table3>(this, condition, 'and');\n }\n\n or<Table3 extends QueryTable<any, any>>(condition: QueryCondition<Table3>): QueryConditionChain<Table1 | Table2 | Table3> {\n return new QueryConditionChain<Table1 | Table2 | Table3>(this, condition, 'or');\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/condition/query-join-condition.ts","\n\nimport QueryColumnCondition from \"../condition/query-column-condition\";\nimport QueryOrdering from \"../other/query-ordering\";\nimport QueryTable from \"../query-table\";\nimport QueryColumn from \"./query-column\";\nimport QueryCondition from \"../condition/query-condition\";\nimport QueryJoinCondition from \"../condition/query-join-condition\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n\nabstract class ValueColumn<Table extends QueryTable<any, any>, T> extends QueryColumn<Table, T> {\n\n constructor(table: Table, name: ColumnName, modifiers: ColumnModifier[] = []) {\n super(table, name, modifiers);\n }\n\n asc() {\n return new QueryOrdering<Table>(this, 'ASC');\n }\n\n desc() {\n return new QueryOrdering<Table>(this, 'DESC');\n }\n\n eq<Table2 extends QueryTable<any, any>>(value: QueryColumn<Table2, T>): QueryJoinCondition<Table, Table2, T>;\n eq(value: T): QueryColumnCondition<Table, T>;\n eq<Table2 extends QueryTable<any, any>>(value: any): QueryCondition<any> {\n if (value instanceof QueryColumn) {\n return new QueryJoinCondition<Table, Table2, T>(this, 'eq', value);\n } else {\n return new QueryColumnCondition<Table, T>(this, 'eq', value);\n }\n }\n\n ne(value: T) {\n return new QueryColumnCondition<Table, T>(this, 'ne', value);\n }\n}\n\nexport default ValueColumn;\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/column/value-column.ts","\n\nimport QueryColumnCondition from \"../condition/query-column-condition\";\nimport QueryTable from \"../query-table\";\nimport ValueColumn from \"./value-column\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n\nabstract class ComparableColumn<Table extends QueryTable<any, any>, T> extends ValueColumn<Table, T> {\n\n constructor(table: Table, name: ColumnName, modifiers: ColumnModifier[] = []) {\n super(table, name, modifiers);\n }\n\n lt(value: T) {\n return new QueryColumnCondition<Table, T>(this, 'lt', value);\n }\n\n gt(value: T) {\n return new QueryColumnCondition<Table, T>(this, 'gt', value);\n }\n\n lte(value: T) {\n return new QueryColumnCondition<Table, T>(this, 'lte', value);\n }\n\n gte(value: T) {\n return new QueryColumnCondition<Table, T>(this, 'gte', value);\n }\n\n in(values: T[]) {\n return new QueryColumnCondition<Table, T>(this, 'in', ...values);\n }\n\n notIn(values: T[]) {\n return new QueryColumnCondition<Table, T>(this, 'not-in', ...values);\n }\n\n between(value1: T, value2: T) {\n return new QueryColumnCondition<Table, T>(this, 'between', value1, value2);\n }\n\n notBetween(value1: T, value2: T) {\n return new QueryColumnCondition<Table, T>(this, 'not-between', value1, value2);\n }\n\n\n\n min(): this {\n return new (<any>this.constructor)(this._table, this._name, this._modifiers.concat({ name: 'min' }));\n }\n\n max(): this {\n return new (<any>this.constructor)(this._table, this._name, this._modifiers.concat({ name: 'max' }));\n }\n}\n\nexport default ComparableColumn;\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/column/comparable-column.ts","\n\nimport QueryTable from \"../query-table\";\nimport ComparableColumn from \"./comparable-column\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n\nexport default class NumberColumn<Table extends QueryTable<any, any>> extends ComparableColumn<Table, number> {\n\n protected _type = 'number';\n\n constructor(table: Table, name: ColumnName, modifiers: ColumnModifier[] = []) {\n super(table, name, modifiers);\n }\n\n count(): NumberColumn<Table> {\n return new NumberColumn(this._table, this._name, this._modifiers.concat({ name: 'count' }));\n }\n\n sum(): NumberColumn<Table> {\n return new NumberColumn<Table>(this._table, this._name, this._modifiers.concat({ name: 'sum' }));\n }\n\n avg(): NumberColumn<Table> {\n return new NumberColumn<Table>(this._table, this._name, this._modifiers.concat({ name: 'avg' }));\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/column/number-column.ts","\n\nimport QueryTable from \"../query-table\";\nimport QueryColumn from \"./query-column\";\nimport NumberColumn from \"./number-column\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n\n\nexport default class BasicColumn<Table extends QueryTable<any, any>, T> extends QueryColumn<Table, T> {\n\n constructor(table: Table, name: ColumnName, modifiers: ColumnModifier[] = []) {\n super(table, name, modifiers);\n }\n\n count(): NumberColumn<Table> {\n return new NumberColumn(this._table, this._name, this._modifiers.concat({ name: 'count' }));\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/column/basic-column.ts","\n\nimport QueryTable from \"../query-table\";\nimport NumberColumn from \"./number-column\";\nimport ValueColumn from \"./value-column\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n\nexport default class BooleanColumn<Table extends QueryTable<any, any>> extends ValueColumn<Table, boolean> {\n\n protected _type = 'boolean';\n\n constructor(table: Table, name: ColumnName, modifiers: ColumnModifier[] = []) {\n super(table, name, modifiers);\n }\n\n count(): NumberColumn<Table> {\n return new NumberColumn(this._table, this._name, this._modifiers.concat({ name: 'count' }));\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/column/boolean-column.ts","\n\nimport QueryTable from \"../query-table\";\nimport ComparableColumn from \"./comparable-column\";\nimport NumberColumn from \"./number-column\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n\nexport default class DateColumn<Table extends QueryTable<any, any>> extends ComparableColumn<Table, Date> {\n\n protected _type = 'date';\n\n constructor(table: Table, name: ColumnName, modifiers: ColumnModifier[] = []) {\n super(table, name, modifiers);\n }\n\n count(): NumberColumn<Table> {\n return new NumberColumn(this._table, this._name, this._modifiers.concat({ name: 'count' }));\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/column/date-column.ts","\n\nimport QueryTable from \"../query-table\";\nimport ComparableColumn from \"./comparable-column\";\nimport NumberColumn from \"./number-column\";\nimport QueryColumnCondition from \"../condition/query-column-condition\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n\nexport default class StringColumn<Table extends QueryTable<any, any>> extends ComparableColumn<Table, string> {\n\n protected _type = 'string';\n\n constructor(table: Table, name: ColumnName, modifiers: ColumnModifier[] = []) {\n super(table, name, modifiers);\n }\n\n count(): NumberColumn<Table> {\n return new NumberColumn(this._table, this._name, this._modifiers.concat({ name: 'count' }));\n }\n\n lower(): this {\n return new (<any>this.constructor)(this._table, this._name, this._modifiers.concat({ name: 'lower' }));\n }\n\n upper(): this {\n return new (<any>this.constructor)(this._table, this._name, this._modifiers.concat({ name: 'upper' }));\n }\n\n contains(value: string) {\n return this.like('%' + value + '%');\n }\n\n startsWith(value: string) {\n return this.like(value + '%');\n }\n\n endsWith(value: string) {\n return this.like('%' + value);\n }\n\n like(value: string) {\n return new QueryColumnCondition<Table, string>(this, 'like', value);\n }\n\n notLike(value: string) {\n return new QueryColumnCondition<Table, string>(this, 'not-like', value);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/column/string-column.ts","\n\nimport QueryTable from \"../query-table\";\nimport QueryJoinCondition from \"../condition/query-join-condition\";\nimport JoinedTables from \"./joined-tables\";\nimport {JoinType} from \"../helpers/internal-types\";\n\nexport default class JoinedTablesChain<Tables extends QueryTable<any, any>> {\n\n constructor(\n protected _table: QueryTable<any, any>,\n protected _modifier: JoinType,\n protected _parent: JoinedTables<Tables> | QueryTable<any, any>\n ) {}\n\n on(condition: QueryJoinCondition<Tables, Tables, any>): JoinedTables<Tables> {\n return new JoinedTables(condition, this);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/join/joined-tables-chain.ts","\n\nimport QueryTable from \"../query-table\";\nimport JoinedTablesChain from \"./joined-tables-chain\";\nimport QueryJoinCondition from \"../condition/query-join-condition\";\n\n\nexport default class JoinedTables<Tables extends QueryTable<any, any>> {\n\n constructor(\n protected _condition: QueryJoinCondition<Tables, Tables, any>,\n protected _parent: JoinedTablesChain<Tables>\n ) {}\n\n innerJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<Tables | JoinTable> {\n return new JoinedTablesChain(table, 'inner', this);\n }\n\n leftJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<Tables | JoinTable> {\n return new JoinedTablesChain(table, 'left', this);\n }\n\n rightJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<Tables | JoinTable> {\n return new JoinedTablesChain(table, 'right', this);\n }\n\n fullJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<Tables | JoinTable> {\n return new JoinedTablesChain(table, 'full', this);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/join/joined-tables.ts","\n\nimport QueryCondition from \"../condition/query-condition\";\nimport QueryOrdering from \"../other/query-ordering\";\nimport QueryTable from \"../query-table\";\nimport QueryColumn from \"../column/query-column\";\nimport { QueryProcessor, QueryAction } from \"../helpers/internal-types\";\n\n\nexport default class SelectQuery<Entity, Table extends QueryTable<Entity, any>> {\n\n constructor(\n protected _queryProcessor: QueryProcessor,\n protected _tables: Table[]\n ) {}\n\n protected _distinct = false;\n protected _offset: number;\n protected _limit: number;\n protected _conditions: QueryCondition<Table>[] = [];\n protected _groupBy: QueryColumn<Table, any>[] = [];\n protected _having: QueryCondition<Table>[] = [];\n protected _orderings: (QueryColumn<Table, any> | QueryOrdering<Table>)[] = [];\n protected _columns: QueryColumn<Table, any>[] = [];\n protected _action: QueryAction;\n\n offset(offset: number): this {\n this._offset = offset;\n return this;\n }\n\n limit(limit: number): this {\n this._limit = limit;\n return this;\n }\n\n distinct(): this {\n this._distinct = true;\n return this;\n }\n\n where(...conditions: QueryCondition<Table>[]): this {\n this._conditions = conditions;\n return this;\n }\n\n groupBy(...columns: QueryColumn<Table, any>[]): this {\n this._groupBy = columns;\n return this;\n }\n\n having(...conditions: QueryCondition<Table>[]): this {\n this._having = conditions;\n return this;\n }\n\n orderBy(...orderings: (QueryColumn<Table, any> | QueryOrdering<Table>)[]): this {\n this._orderings = orderings;\n return this;\n }\n\n select(): Promise<Entity[]>\n select<T>(column: QueryColumn<Table, T>): Promise<T[]>\n select(...columns: QueryColumn<Table, any>[]): Promise<any[]>\n select(...columns: QueryColumn<Table, any>[]): Promise<any[]> {\n this._columns = columns;\n this._action = 'select';\n return this._queryProcessor(this);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/query/select-query.ts","\n\nimport QueryTable from \"../query-table\";\nimport QueryCondition from \"../condition/query-condition\";\nimport QueryColumn from \"../column/query-column\";\nimport { QueryProcessor, QueryAction } from \"../helpers/internal-types\";\n\n\nexport default class TableConditionQuery<Entity, Table extends QueryTable<Entity, any>> {\n\n constructor(\n protected _queryProcessor: QueryProcessor,\n protected _table: Table,\n protected _conditions: QueryCondition<Table>[]\n ) {}\n\n protected _columns: QueryColumn<Table, any>[] = [];\n protected _action: QueryAction;\n protected _entity: Entity | Partial<Entity>;\n\n update(entity: Partial<Entity>): Promise<number> {\n this._entity = entity;\n this._action = 'update';\n return this._queryProcessor(this);\n }\n\n delete(): Promise<number> {\n this._action = 'delete';\n return this._queryProcessor(this);\n }\n\n count(): Promise<number> {\n this._columns = [this._table.$all.count()];\n this._action = 'select';\n return this._queryProcessor(this).then((rows: number[]) => rows[0]);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/query/table-condition-query.ts","\n\nimport QueryTable from \"../query-table\";\nimport TableConditionQuery from \"./table-condition-query\";\nimport QueryCondition from \"../condition/query-condition\";\nimport ValueColumn from \"../column/value-column\";\nimport QueryColumn from \"../column/query-column\";\nimport { QueryProcessor, QueryAction } from \"../helpers/internal-types\";\n\n\nexport default class TableQuery<Entity, Id, Table extends QueryTable<Entity, Id>> {\n\n constructor(\n protected _queryProcessor: QueryProcessor,\n protected _table: Table\n ) {}\n\n protected _entity: Entity | Entity[] | Partial<Entity>;\n protected _action: QueryAction;\n protected _columns: QueryColumn<Table, any>[] = [];\n\n where(...conditions: QueryCondition<Table>[]) {\n return new TableConditionQuery<Entity, Table>(this._queryProcessor, this._table, conditions);\n }\n\n insert(entity: Entity): Promise<any> // returns the generated ID, but not other kinds of IDs, so the type is unknown (mysql limitations)\n insert(entities: Entity[]): Promise<void>\n insert(param: any): Promise<any> {\n this._entity = param;\n this._action = 'insert';\n return this._queryProcessor(this);\n }\n\n deleteAll(): Promise<number> {\n this._action = 'delete';\n return this._queryProcessor(this);\n }\n\n updateAll(entity: Partial<Entity>): Promise<number> {\n this._entity = entity;\n this._action = 'update';\n return this._queryProcessor(this);\n }\n\n countAll(): Promise<number> {\n this._columns = [this._table.$all.count()];\n this._action = 'select';\n return this._queryProcessor(this).then((rows: any[]) => rows[0]);\n }\n\n delete(id: Id): Promise<boolean> {\n return this._whereId(id).delete().then(count => count > 0);\n }\n\n update(id: Id, entity: Partial<Entity>): Promise<boolean> {\n return this._whereId(id).update(entity).then(count => count > 0);\n }\n\n get(id: Id): Promise<Entity | undefined> {\n let query = this._whereId(id);\n return this._queryProcessor({ _action: 'select', ...query })\n .then((rows: Entity[]) => rows[0]);\n }\n\n _whereId(id: Id): TableConditionQuery<Entity, Table> {\n\n let $id = (this._table as any).$id;\n if ($id instanceof ValueColumn) {\n return this.where($id.eq(id));\n } else {\n return this.where(...Object.keys($id).map(key => ((this._table as any)[key] as ValueColumn<Table, any>).eq((id as any)[key] as any)));\n }\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/query/table-query.ts","\n\nimport QueryTable from './query-table';\nimport SelectQuery from './query/select-query';\nimport { QueryProcessor } from \"./helpers/internal-types\";\nimport JoinedTables from \"./join/joined-tables\";\nimport TableQuery from \"./query/table-query\";\n\n\nexport default class QuerySource {\n\n constructor(protected _queryProcessor: QueryProcessor) {}\n\n from<Entity, Table1 extends QueryTable<Entity, any>>(table1: Table1 & QueryTable<Entity, any>): SelectQuery<Entity, Table1>\n from<Tables extends QueryTable<any, any>>(tables: JoinedTables<Tables>): SelectQuery<any, Tables>\n from<Table1 extends QueryTable<any, any>, Table2 extends QueryTable<any, any>>(table1: Table1, table2: Table2): SelectQuery<any, Table1 | Table2>\n from<Table1 extends QueryTable<any, any>, Table2 extends QueryTable<any, any>, Table3 extends QueryTable<any, any>>(table1: Table1, table2: Table2, table3: Table3): SelectQuery<any, Table1 | Table2 | Table3>\n from<Entity, Table1 extends QueryTable<any, any>, Table2 extends QueryTable<any, any>, Table3 extends QueryTable<any, any>>(table1: any, table2?: any, table3?: any) {\n if (table3 != null) return new SelectQuery<any, Table1 | Table2 | Table3>(this._queryProcessor, [table1, table2, table3]);\n else if (table2 != null) return new SelectQuery<any, Table1 | Table2>(this._queryProcessor, [table1, table2]);\n return new SelectQuery<Entity, Table1>(this._queryProcessor, [table1]);\n }\n\n table<Entity, Id, Table extends QueryTable<Entity, Id>>(table: Table & QueryTable<Entity, Id>): TableQuery<Entity, Id, Table> {\n return new TableQuery<Entity, Id, Table>(this._queryProcessor, table);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/query-source.ts","\n\nimport BasicColumn from \"./column/basic-column\";\nimport GenericsHelper from \"./helpers/generics-helper\";\nimport JoinedTablesChain from \"./join/joined-tables-chain\";\n\n\nabstract class QueryTable<Entity, Id> {\n\n constructor(protected _$name: string) {}\n\n protected _$type: GenericsHelper<Entity>;\n protected _$idType: GenericsHelper<Id>;\n\n\n\n $all = new BasicColumn<this, Entity>(this, '*');\n\n innerJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<this | JoinTable> {\n return new JoinedTablesChain<this | JoinTable>(table, 'inner', this);\n }\n\n leftJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<this | JoinTable> {\n return new JoinedTablesChain<this | JoinTable>(table, 'left', this);\n }\n\n rightJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<this | JoinTable> {\n return new JoinedTablesChain<this | JoinTable>(table, 'right', this);\n }\n\n fullJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<this | JoinTable> {\n return new JoinedTablesChain<this | JoinTable>(table, 'full', this);\n }\n}\n\nexport default QueryTable;\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/query-table.ts","\n\n\nexport function number(param: any): number {\n let result = Number(param);\n if (Number.isNaN(result)) throw new Error('Invalid number parameter in SQL query: ' + param);\n return result;\n}\n\nexport function boolean(param: any): boolean {\n if (typeof param === 'boolean') return param;\n if (param instanceof Boolean) return param.valueOf();\n if (param === 'true') return true;\n if (param === 'false') return false;\n throw new Error('Invalid boolean parameter in SQL query: ' + param);\n}\n\nexport function date(param: any): Date {\n if (param instanceof Date) return param; // @ts-ignore\n if (typeof param === 'number' || param instanceof Number) return new Date(param);\n if (typeof param === 'string' || param instanceof String) {\n if (Number.isNaN(Date.parse(String(param)))) throw new Error('Invalid date parameter in SQL query: ' + param); // @ts-ignore\n return new Date(param);\n }\n throw new Error('Invalid date parameter in SQL query: ' + param);\n}\n\nexport function string(param: any): string {\n if (typeof param === 'string') return param;\n if (param instanceof String) return param.valueOf();\n throw new Error('Invalid string parameter in SQL query: ' + param);\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/converter/type-converter.ts","\n\nimport { string, number, date, boolean } from './type-converter';\nimport { QueryEngine, ConverterOptions } from \"./types\";\n\n\nexport function createQueryConverter(paramConverter: (param: any) => string, options: ConverterOptions, engine: QueryEngine) {\n\n return convertQuery;\n\n function convertQuery(query: any): string {\n if (query._action === 'select') return convertSelectQuery(query);\n if (query._action === 'delete') return convertDeleteQuery(query);\n if (query._action === 'update') return convertUpdateQuery(query);\n if (query._action === 'insert') return convertInsertQuery(query);\n throw new Error('Unknown query type:' + query._action);\n }\n\n function convertDeleteQuery(query: any): string {\n let s = 'DELETE FROM ' + convertTable(query._table);\n s += convertConditions(query._conditions);\n return s;\n }\n\n function convertUpdateQuery(query: any): string {\n let s = 'UPDATE ' + convertTable(query._table) + ' SET ';\n s += convertUpdateSetters(query._table, query._entity);\n s += convertConditions(query._conditions);\n return s;\n }\n\n function convertUpdateSetters(table: any, entity: any): string {\n return Object.keys(entity).sort().map(key => {\n let value = entity[key];\n let column = table[key];\n return convertColumnName(column) + ' = ' + convertParam(column, value);\n }).join(', ');\n }\n\n function convertInsertQuery(query: any): string {\n let items: any[] = Array.isArray(query._entity) ? query._entity : [query._entity];\n let keySet: Set<string> = items.reduce((set: Set<string>, item) => {\n Object.keys(item).forEach(key => set.add(key)); return set;\n }, new Set<string>());\n let keys = Array.from(keySet).sort();\n\n let s = 'INSERT INTO ' + convertTable(query._table) + ' ';\n s += '(' + keys.map(key => convertColumnName(query._table[key])).join(', ') + ')';\n s += options.lineBreak + 'VALUES ';\n s += items.map(item => convertInsertItem(query._table, item, keys))\n .map((row: string) => '(' + row + ')').join(', ');\n\n s += getPgInsertReturningIfNeeded(query);\n return s;\n }\n\n\n function getPgInsertReturningIfNeeded(query: any): string {\n if (engine === 'pg' && query._action === 'insert' && !Array.isArray(query._entity) &&\n query._table.$id && query._table.$id._table && query._table.$id._name) {\n return ' RETURNING ' + convertColumnName(query._table.$id);\n }\n return '';\n }\n\n function convertInsertItem(table: any, entity: any, keys: string[]): string {\n return keys.map(key => {\n let value = entity[key];\n let column = table[key];\n return convertParam(column, value);\n }).join(', ');\n }\n\n function convertSelectQuery(query: any): string {\n let s = 'SELECT ';\n if (query._distinct) {\n s += 'DISTINCT ';\n }\n\n if (query._columns == null || query._columns.length === 0) {\n s += '*'\n } else {\n s += query._columns.map((column: any) => convertColumn(column)).join(', ');\n }\n\n s += options.lineBreak + 'FROM ';\n if (query._tables) {\n s+= query._tables.map((table: any) => table._parent ? convertJoin(table) : convertTable(table)).join(', ');\n } else {\n s+= convertTable(query._table);\n }\n\n s += convertConditions(query._conditions);\n\n if (query._groupBy && query._groupBy.length > 0) {\n s += options.lineBreak + 'GROUP BY ';\n s += query._groupBy.map((column: any) => convertColumn(column)).join(', ');\n }\n s += convertConditions(query._having, 'HAVING');\n\n if (query._orderings && query._orderings.length > 0) {\n s += options.lineBreak + 'ORDER BY ';\n s += query._orderings.map((ordering: any) => convertOrdering(ordering)).join(', ');\n }\n if (query._limit != null) {\n s += options.lineBreak + 'LIMIT ' + number(query._limit);\n }\n if (query._offset != null) {\n s += options.lineBreak + 'OFFSET ' + number(query._offset);\n }\n return s;\n }\n\n function convertConditions(conditions: any[], keyword = 'WHERE'): string {\n let s = '';\n if (conditions && conditions.length > 0) {\n s += options.lineBreak + keyword + ' ';\n preprocessConditions(conditions);\n s += conditions.map(condition => convertCondition(condition, true)).join(' AND ');\n }\n return s;\n }\n\n function convertJoin(joinChain: any): string {\n let items: any[] = [];\n while (joinChain) {\n items.push(joinChain);\n joinChain = joinChain._parent;\n }\n\n let root = items[items.length - 1];\n let s = convertTable(root);\n\n for (let i = items.length - 2; i >= 0; i-= 2) {\n let table = items[i]._table;\n let modifier = items[i]._modifier;\n let condition = items[i - 1]._condition;\n let param = convertColumn(condition._otherColumn);\n s += ' ' + modifier.toUpperCase() + ' JOIN ' + convertTable(table) + ' ON ' +\n convertColumnCondition(condition, param);\n }\n\n return s;\n }\n\n function convertOrdering(ordering: any): string {\n if (ordering._column) {\n let s = convertColumn(ordering._column);\n\n if (ordering._nullsPosition != null) { // \"NULLS FIRST\" only exists in PG, this is the general solution\n s += ' IS NULL ' + (ordering._nullsPosition === 'FIRST' ? 'DESC' : 'ASC') + ', ' + s;\n }\n\n if (ordering._direction === 'ASC') s += ' ASC';\n if (ordering._direction === 'DESC') s += ' DESC';\n\n return s;\n } else {\n return convertColumn(ordering);\n }\n }\n\n function convertTable(table: any): string {\n return options.nameEscape + table._$name + options.nameEscape;\n }\n\n function convertColumn(column: any): string {\n let s = '';\n if (!(column._name === '*' && column._modifiers.length > 0 && column._modifiers[0].name === 'count')) {\n s += convertTable(column._table) + '.';\n }\n s += convertColumnName(column);\n return convertColumnModifiers(s, column);\n }\n\n function convertColumnModifiers(s: string, column: any): string {\n if (column._modifiers) {\n column._modifiers.forEach((modifier: any) => {\n let name = modifier.name;\n if (name === 'lower') s = 'LOWER(' + s + ')';\n else if (name === 'upper') s = 'UPPER(' + s + ')';\n else if (name === 'count') s = 'COUNT(' + s + ')';\n else if (name === 'sum') s = 'SUM(' + s + ')';\n else if (name === 'avg') s = 'AVG(' + s + ')';\n else if (name === 'min') s = 'MIN(' + s + ')';\n else if (name === 'max') s = 'MAX(' + s + ')';\n else if (name === 'as') s = s + ' AS ' + options.nameEscape + modifier.params + options.nameEscape;\n });\n }\n return s + '';\n }\n\n function convertColumnName(column: any): string {\n if (column._name === '*') return column._name;\n let name = typeof column._name === 'string' ? column._name : column._name.name;\n return options.nameEscape + name + options.nameEscape;\n }\n\n function preprocessConditions(conditions: any[]): void {\n conditions.forEach(condition => {\n if (conditions.length > 1 && condition._sibling) {\n condition._parenthesis = true;\n }\n preprocessParams(condition);\n });\n }\n\n\n function preprocessParams(condition: any): void {\n if (condition._sibling) {\n preprocessParams(condition._sibling);\n }\n if (!condition._sibling && !condition._child) {\n condition.__param = getConditionParam(condition);\n }\n if (condition._child) {\n preprocessParams(condition._child);\n }\n }\n\n function convertCondition(condition: any, root = false): string {\n if (!condition._sibling && !condition._child) {\n return convertColumnCondition(condition, condition.__param);\n }\n\n let s = '';\n if (condition._child) {\n s += convertCondition(condition._child);\n }\n if (condition._sibling) {\n s = convertCondition(condition._sibling, root) + ' ' + condition._chainType.toUpperCase() + ' ' + s;\n }\n if (condition._parenthesis || ((!root || condition._negation) && condition._child)) {\n s = '( ' + s + ' )';\n }\n if (condition._negation) {\n s = 'NOT ' + s;\n }\n return s;\n }\n\n function convertColumnCondition(condition: any, param: string): string {\n let s = convertColumn(condition._column);\n s += getConditionString(condition, param);\n return s;\n }\n\n function getConditionString(condition: any, param: string): string {\n switch (condition._type) {\n case 'eq': return ' = ' + param;\n case 'ne': return ' <> ' + param;\n case 'lt': return ' < ' + param;\n case 'gt': return ' > ' + param;\n case 'lte': return ' <= ' + param;\n case 'gte': return ' >= ' + param;\n case 'is-null': return ' IS NULL';\n case 'is-not-null': return ' IS NOT NULL';\n case 'like': return ' LIKE ' + param;\n case 'not-like': return ' NOT LIKE ' + param;\n case 'in': return ' IN (' + param + ')';\n case 'not-in': return ' NOT IN (' + param + ')';\n case 'between': return ' BETWEEN ' + param;\n case 'not-between': return ' NOT BETWEEN ' + param;\n default: return '';\n }\n }\n\n function getConditionParam(condition: any): string {\n let param = '';\n if (condition._otherColumn) {\n param = convertColumn(condition._otherColumn);\n } else {\n let _convertParam = (param: any) => convertParam(condition._column, param);\n\n if (condition._type === 'in' || condition._type === 'not-in') {\n param = condition._values.map((value: any) => _convertParam(value)).join(', ');\n } else if (condition._type === 'between' || condition._type === 'not-between') {\n param = _convertParam(condition._values[0]) + ' AND ' + _convertParam(condition._values[1]);\n } else if (condition._type !== 'is-null' && condition._type !== 'is-not-null') {\n param = _convertParam(condition._values[0]);\n }\n }\n return param;\n }\n\n function convertParam(column: any, param: any): string {\n if (param == null) return 'NULL';\n return paramConverter(getTypedParam(column._type, param));\n }\n\n function getTypedParam(type: string, param: any): any {\n if (type === 'number') return number(param);\n else if (type === 'boolean') return boolean(param);\n else if (type === 'date') return date(param);\n else if (type === 'string') return string(param);\n return param;\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/converter/query-converter.ts","\n\n\nexport function convertSubstitutionParam(param: any): string {\n if (param == null) return 'NULL';\n if (typeof param === 'string' || param instanceof String) {\n return `'${String(param)}'`;\n } else if (typeof param === 'boolean' || param instanceof Boolean) {\n return String(param).toUpperCase();\n } else if (param instanceof Date) {\n return `'${param.toISOString()}'`;\n } else if (typeof param === 'number' || param instanceof Number) {\n return String(param);\n }\n return `'${JSON.stringify(param)}'`;\n}\n\n\n\nexport function convertEscapedParam(param: any) {\n if (typeof param === 'object' && !(param == null || param instanceof String || param instanceof Number ||\n param instanceof Boolean || param instanceof Date)) {\n return JSON.stringify(param);\n }\n return param;\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/converter/param-converter.ts","\n\nimport {createQueryConverter} from \"./query-converter\";\nimport {convertEscapedParam} from './param-converter';\nimport {QueryEngine, ConverterOptions} from \"./types\";\n\nlet pgParamConverter = (index: number) => '$' + index;\nlet mySqlParamConverter = (index: number) => '?';\n\nfunction convertSingleParam(param: any, params: any[], paramConverter: (param: any) => string): string {\n params.push(convertEscapedParam(param));\n return paramConverter(params.length);\n}\n\nexport function convertQueryToParameterizedSQL(query: any, options: ConverterOptions, engine: QueryEngine) {\n let params: any[] = [];\n\n let paramConverter = engine === 'mysql' ? mySqlParamConverter : pgParamConverter;\n let sql = createQueryConverter((param: any) => convertSingleParam(param, params, paramConverter), options, engine)(query);\n\n return { sql, params };\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/converter/parameterized-converter.ts","\n\nimport {createQueryConverter} from \"./query-converter\";\nimport {convertSubstitutionParam} from './param-converter';\nimport {QueryEngine, ConverterOptions} from \"./types\";\n\nexport function convertQueryToSQL(query: any, options: ConverterOptions, engine: QueryEngine): string {\n return createQueryConverter((param: any) => convertSubstitutionParam(param), options, engine)(query);\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/converter/sql-converter.ts","\n\nimport { Log, Level } from 'ng2-logger/websql';\nimport { convertQueryToParameterizedSQL } from '../converter/parameterized-converter';\nimport { convertQueryToSQL } from '../converter/sql-converter';\nimport { convertResult } from \"../converter/result-converter\";\nimport { QueryEngine, ConverterOptions } from '../converter/types';\nimport { QueryProcessor } from '../builder/helpers/internal-types';\nimport { Helpers } from 'tnp-core/websql';\n\nconst log = Log.create('query processor',\n\n)\n\nexport interface QueryProcessorOptions {\n lineBreaks?: boolean,\n parameterized?: boolean,\n logging?: boolean,\n logger?: (sql: string, params?: any[]) => void,\n identifierQuote?: string\n}\n\nconst DEFAULT_OPTIONS: QueryProcessorOptions = {\n lineBreaks: false,\n parameterized: true,\n logging: true,\n identifierQuote: '\"'\n};\n\nfunction mySqlTypeCast(field: any, next: any) {\n if (field.type == 'TINY' && field.length == 1) { // Boolean\n let value = field.string();\n if (value == '1') return true;\n if (value == '0') return false;\n return null;\n } else if (field.type == 'JSON') {\n let value = field.string();\n return value == null ? null : JSON.parse(value);\n }\n return next();\n}\n\nexport function createQueryProcessor(client: any, _options: QueryProcessorOptions = {}, engine: QueryEngine = 'pg'): QueryProcessor {\n\n let options: QueryProcessorOptions = Object.assign({}, DEFAULT_OPTIONS, _options);\n\n let queryOptions: ConverterOptions = {\n lineBreak: options.lineBreaks ? '\\n' : ' ',\n nameEscape: _options.identifierQuote || (engine === 'mysql' ? '`' : '\"')\n };\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n return (query: any) => {\n if (options.parameterized) {\n let { sql, params } = convertQueryToParameterizedSQL(query, queryOptions, engine);\n\n return client.query(sql, params);\n\n\n } else {\n let sql = convertQueryToSQL(query, queryOptions, engine);\n\n return client.query(sql, undefined);\n\n\n }\n };\n}\n\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/client/query-processor.ts","\n\nimport QuerySource from \"../builder/query-source\";\nimport {QueryProcessorOptions, createQueryProcessor} from \"./query-processor\";\n\nexport default class MySqlQuerySource extends QuerySource {\n\n constructor(client: any, options: QueryProcessorOptions = {}) {\n super(createQueryProcessor(client, options, 'mysql'));\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/client/mysql.ts","\n\n\n\n\nexport { default as BasicColumn } from './builder/column/basic-column';\nexport { default as BooleanColumn } from './builder/column/boolean-column';\nexport { default as ComparableColumn } from './builder/column/comparable-column';\nexport { default as DateColumn } from './builder/column/date-column';\nexport { default as NumberColumn } from './builder/column/number-column';\nexport { default as QueryColumn } from './builder/column/query-column';\nexport { default as StringColumn } from './builder/column/string-column';\nexport { default as ValueColumn } from './builder/column/value-column';\n\nexport { default as QueryColumnCondition } from './builder/condition/query-column-condition';\nexport { default as QueryCondition } from './builder/condition/query-condition';\nexport { default as QueryConditionChain } from './builder/condition/query-condition-chain';\nexport { default as QueryJoinCondition } from './builder/condition/query-join-condition';\n\nexport { default as JoinedTables } from './builder/join/joined-tables';\nexport { default as JoinedTablesChain } from './builder/join/joined-tables-chain';\n\nexport { default as QueryOrdering } from './builder/other/query-ordering';\n\nexport { default as SelectQuery } from './builder/query/select-query';\nexport { default as TableQuery } from './builder/query/table-query';\nexport { default as TableConditionQuery } from './builder/query/table-condition-query';\n\nexport { default as QuerySource } from './builder/query-source';\nexport { default as QueryTable } from './builder/query-table';\n\n\n\nexport { default as MySqlQuerySource } from './client/mysql';\n\n\nexport { QueryProcessorOptions } from './client/query-processor';\n\n\nexport type PropsEntitySQL<IEntityType> = { [prop in keyof Required<IEntityType>]: any; }\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/index.ts","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taon-type-sql.mjs","sources":["../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/condition/query-condition.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/condition/query-condition-chain.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/condition/query-column-condition.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/query-column.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/other/query-ordering.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/condition/query-join-condition.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/value-column.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/comparable-column.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/number-column.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/basic-column.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/boolean-column.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/date-column.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/string-column.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/join/joined-tables-chain.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/join/joined-tables.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/query/select-query.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/query/table-condition-query.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/query/table-query.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/query-source.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/builder/query-table.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/converter/type-converter.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/converter/query-converter.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/converter/param-converter.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/converter/parameterized-converter.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/converter/sql-converter.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/client/query-processor.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/client/mysql.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/lib/index.ts","../../../tmp-libs-for-dist-websql/taon-type-sql/projects/taon-type-sql/src/taon-type-sql.ts"],"sourcesContent":["\n\nimport QueryTable from \"../query-table\";\nimport QueryConditionChain from \"./query-condition-chain\";\n\n\n\nabstract class QueryCondition<Table extends QueryTable<any, any>> {\n\n abstract and<Table2 extends QueryTable<any, any>>(condition: QueryCondition<Table2>): QueryConditionChain<Table | Table2>;\n\n abstract or<Table2 extends QueryTable<any, any>>(condition: QueryCondition<Table2>): QueryConditionChain<Table | Table2>;\n}\n\nexport default QueryCondition;\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/condition/query-condition.ts","\n\nimport QueryTable from \"../query-table\";\nimport QueryCondition from \"./query-condition\";\nimport GenericsHelper from \"../helpers/generics-helper\";\nimport {ConditionChainType} from \"../helpers/internal-types\";\n\n\nexport default class QueryConditionChain<Table extends QueryTable<any, any>> extends QueryCondition<Table> {\n\n protected _$type: GenericsHelper<Table>;\n\n protected _sibling: QueryCondition<any>;\n protected _child: QueryCondition<any>;\n protected _chainType: ConditionChainType;\n protected _parenthesis = false;\n protected _negation = false;\n\n constructor(sibling: QueryCondition<any>, child: QueryCondition<any>, chainType: ConditionChainType) {\n super();\n this._sibling = sibling;\n this._child = child;\n this._chainType = chainType;\n }\n\n\n $() {\n this._parenthesis = true;\n return this;\n }\n\n not() {\n this._negation = true;\n return this;\n }\n\n and<Table2 extends QueryTable<any, any>>(condition: QueryCondition<Table2>): QueryConditionChain<Table | Table2> {\n return new QueryConditionChain<Table | Table2>(this, condition, 'and');\n }\n\n or<Table2 extends QueryTable<any, any>>(condition: QueryCondition<Table2>): QueryConditionChain<Table | Table2> {\n return new QueryConditionChain<Table | Table2>(this, condition, 'or');\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/condition/query-condition-chain.ts","\n\nimport QueryColumn from \"../column/query-column\";\nimport QueryTable from \"../query-table\";\nimport QueryCondition from \"./query-condition\";\nimport QueryConditionChain from \"./query-condition-chain\";\nimport {ConditionType} from \"../helpers/internal-types\";\n\n\nexport default class QueryColumnCondition<Table extends QueryTable<any, any>, T> extends QueryCondition<Table> {\n\n protected _column: QueryColumn<Table, T>;\n protected _type: ConditionType;\n protected _values: T[];\n\n constructor(column: QueryColumn<Table, T>, type: ConditionType, ...values: T[]) {\n super();\n this._column = column;\n this._type = type;\n this._values = values;\n }\n\n and<Table2 extends QueryTable<any, any>>(condition: QueryCondition<Table2>): QueryConditionChain<Table | Table2> {\n return new QueryConditionChain<Table | Table2>(this, condition, 'and');\n }\n\n or<Table2 extends QueryTable<any, any>>(condition: QueryCondition<Table2>): QueryConditionChain<Table | Table2> {\n return new QueryConditionChain<Table | Table2>(this, condition, 'or');\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/condition/query-column-condition.ts","\n\nimport QueryTable from \"../query-table\";\nimport NumberColumn from \"./number-column\";\nimport GenericsHelper from \"../helpers/generics-helper\";\nimport QueryColumnCondition from \"../condition/query-column-condition\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n\nabstract class QueryColumn<Table extends QueryTable<any, any>, T> {\n\n protected _$type: GenericsHelper<T>;\n protected _type: string;\n\n constructor(\n protected _table: Table,\n protected _name: ColumnName,\n protected _modifiers: ColumnModifier[] = []\n ) {}\n\n abstract count(): NumberColumn<Table>; // TODO I had to copy-paste the implementation to every child class to avoid a circular dependency\n\n as(alias: string): this {\n return new (<any>this.constructor)(this._table, this._name, this._modifiers.concat({ name: 'as', params: alias }));\n }\n\n isNull() {\n return new QueryColumnCondition<Table, T>(this, 'is-null');\n }\n\n isNotNull() {\n return new QueryColumnCondition<Table, T>(this, 'is-not-null');\n }\n}\n\nexport default QueryColumn;\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/column/query-column.ts","\n\nimport QueryColumn from \"../column/query-column\";\nimport QueryTable from \"../query-table\";\n\n\nexport default class QueryOrdering<Table extends QueryTable<any, any>> {\n\n protected _column: QueryColumn<Table, any>;\n protected _direction: 'ASC' | 'DESC';\n protected _nullsPosition: 'FIRST' | 'LAST';\n\n constructor(column: QueryColumn<Table, any>, direction: 'ASC' | 'DESC') {\n this._column = column;\n this._direction = direction;\n }\n\n nullsFirst(): this {\n this._nullsPosition = 'FIRST';\n return this;\n }\n\n nullsLast(): this {\n this._nullsPosition = 'LAST';\n return this;\n }\n\n}\n\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/other/query-ordering.ts","\n\nimport QueryColumn from \"../column/query-column\";\nimport QueryTable from \"../query-table\";\nimport QueryCondition from \"./query-condition\";\nimport QueryConditionChain from \"./query-condition-chain\";\n\n\nexport default class QueryJoinCondition<Table1 extends QueryTable<any, any>, Table2 extends QueryTable<any, any>, T> extends QueryCondition<Table1 | Table2> {\n\n protected _column: QueryColumn<Table1, T>;\n protected _type: string;\n protected _otherColumn: QueryColumn<Table2, T>;\n\n constructor(column: QueryColumn<Table1, T>, type: string, otherColumn: QueryColumn<Table2, T>) {\n super();\n this._column = column;\n this._type = type;\n this._otherColumn = otherColumn;\n }\n\n and<Table3 extends QueryTable<any, any>>(condition: QueryCondition<Table3>): QueryConditionChain<Table1 | Table2 | Table3> {\n return new QueryConditionChain<Table1 | Table2 | Table3>(this, condition, 'and');\n }\n\n or<Table3 extends QueryTable<any, any>>(condition: QueryCondition<Table3>): QueryConditionChain<Table1 | Table2 | Table3> {\n return new QueryConditionChain<Table1 | Table2 | Table3>(this, condition, 'or');\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/condition/query-join-condition.ts","\n\nimport QueryColumnCondition from \"../condition/query-column-condition\";\nimport QueryOrdering from \"../other/query-ordering\";\nimport QueryTable from \"../query-table\";\nimport QueryColumn from \"./query-column\";\nimport QueryCondition from \"../condition/query-condition\";\nimport QueryJoinCondition from \"../condition/query-join-condition\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n\nabstract class ValueColumn<Table extends QueryTable<any, any>, T> extends QueryColumn<Table, T> {\n\n constructor(table: Table, name: ColumnName, modifiers: ColumnModifier[] = []) {\n super(table, name, modifiers);\n }\n\n asc() {\n return new QueryOrdering<Table>(this, 'ASC');\n }\n\n desc() {\n return new QueryOrdering<Table>(this, 'DESC');\n }\n\n eq<Table2 extends QueryTable<any, any>>(value: QueryColumn<Table2, T>): QueryJoinCondition<Table, Table2, T>;\n eq(value: T): QueryColumnCondition<Table, T>;\n eq<Table2 extends QueryTable<any, any>>(value: any): QueryCondition<any> {\n if (value instanceof QueryColumn) {\n return new QueryJoinCondition<Table, Table2, T>(this, 'eq', value);\n } else {\n return new QueryColumnCondition<Table, T>(this, 'eq', value);\n }\n }\n\n ne(value: T) {\n return new QueryColumnCondition<Table, T>(this, 'ne', value);\n }\n}\n\nexport default ValueColumn;\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/column/value-column.ts","\n\nimport QueryColumnCondition from \"../condition/query-column-condition\";\nimport QueryTable from \"../query-table\";\nimport ValueColumn from \"./value-column\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n\nabstract class ComparableColumn<Table extends QueryTable<any, any>, T> extends ValueColumn<Table, T> {\n\n constructor(table: Table, name: ColumnName, modifiers: ColumnModifier[] = []) {\n super(table, name, modifiers);\n }\n\n lt(value: T) {\n return new QueryColumnCondition<Table, T>(this, 'lt', value);\n }\n\n gt(value: T) {\n return new QueryColumnCondition<Table, T>(this, 'gt', value);\n }\n\n lte(value: T) {\n return new QueryColumnCondition<Table, T>(this, 'lte', value);\n }\n\n gte(value: T) {\n return new QueryColumnCondition<Table, T>(this, 'gte', value);\n }\n\n in(values: T[]) {\n return new QueryColumnCondition<Table, T>(this, 'in', ...values);\n }\n\n notIn(values: T[]) {\n return new QueryColumnCondition<Table, T>(this, 'not-in', ...values);\n }\n\n between(value1: T, value2: T) {\n return new QueryColumnCondition<Table, T>(this, 'between', value1, value2);\n }\n\n notBetween(value1: T, value2: T) {\n return new QueryColumnCondition<Table, T>(this, 'not-between', value1, value2);\n }\n\n\n\n min(): this {\n return new (<any>this.constructor)(this._table, this._name, this._modifiers.concat({ name: 'min' }));\n }\n\n max(): this {\n return new (<any>this.constructor)(this._table, this._name, this._modifiers.concat({ name: 'max' }));\n }\n}\n\nexport default ComparableColumn;\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/column/comparable-column.ts","\n\nimport QueryTable from \"../query-table\";\nimport ComparableColumn from \"./comparable-column\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n\nexport default class NumberColumn<Table extends QueryTable<any, any>> extends ComparableColumn<Table, number> {\n\n protected _type = 'number';\n\n constructor(table: Table, name: ColumnName, modifiers: ColumnModifier[] = []) {\n super(table, name, modifiers);\n }\n\n count(): NumberColumn<Table> {\n return new NumberColumn(this._table, this._name, this._modifiers.concat({ name: 'count' }));\n }\n\n sum(): NumberColumn<Table> {\n return new NumberColumn<Table>(this._table, this._name, this._modifiers.concat({ name: 'sum' }));\n }\n\n avg(): NumberColumn<Table> {\n return new NumberColumn<Table>(this._table, this._name, this._modifiers.concat({ name: 'avg' }));\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/column/number-column.ts","\n\nimport QueryTable from \"../query-table\";\nimport QueryColumn from \"./query-column\";\nimport NumberColumn from \"./number-column\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n\n\nexport default class BasicColumn<Table extends QueryTable<any, any>, T> extends QueryColumn<Table, T> {\n\n constructor(table: Table, name: ColumnName, modifiers: ColumnModifier[] = []) {\n super(table, name, modifiers);\n }\n\n count(): NumberColumn<Table> {\n return new NumberColumn(this._table, this._name, this._modifiers.concat({ name: 'count' }));\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/column/basic-column.ts","\n\nimport QueryTable from \"../query-table\";\nimport NumberColumn from \"./number-column\";\nimport ValueColumn from \"./value-column\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n\nexport default class BooleanColumn<Table extends QueryTable<any, any>> extends ValueColumn<Table, boolean> {\n\n protected _type = 'boolean';\n\n constructor(table: Table, name: ColumnName, modifiers: ColumnModifier[] = []) {\n super(table, name, modifiers);\n }\n\n count(): NumberColumn<Table> {\n return new NumberColumn(this._table, this._name, this._modifiers.concat({ name: 'count' }));\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/column/boolean-column.ts","\n\nimport QueryTable from \"../query-table\";\nimport ComparableColumn from \"./comparable-column\";\nimport NumberColumn from \"./number-column\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n\nexport default class DateColumn<Table extends QueryTable<any, any>> extends ComparableColumn<Table, Date> {\n\n protected _type = 'date';\n\n constructor(table: Table, name: ColumnName, modifiers: ColumnModifier[] = []) {\n super(table, name, modifiers);\n }\n\n count(): NumberColumn<Table> {\n return new NumberColumn(this._table, this._name, this._modifiers.concat({ name: 'count' }));\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/column/date-column.ts","\n\nimport QueryTable from \"../query-table\";\nimport ComparableColumn from \"./comparable-column\";\nimport NumberColumn from \"./number-column\";\nimport QueryColumnCondition from \"../condition/query-column-condition\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n\nexport default class StringColumn<Table extends QueryTable<any, any>> extends ComparableColumn<Table, string> {\n\n protected _type = 'string';\n\n constructor(table: Table, name: ColumnName, modifiers: ColumnModifier[] = []) {\n super(table, name, modifiers);\n }\n\n count(): NumberColumn<Table> {\n return new NumberColumn(this._table, this._name, this._modifiers.concat({ name: 'count' }));\n }\n\n lower(): this {\n return new (<any>this.constructor)(this._table, this._name, this._modifiers.concat({ name: 'lower' }));\n }\n\n upper(): this {\n return new (<any>this.constructor)(this._table, this._name, this._modifiers.concat({ name: 'upper' }));\n }\n\n contains(value: string) {\n return this.like('%' + value + '%');\n }\n\n startsWith(value: string) {\n return this.like(value + '%');\n }\n\n endsWith(value: string) {\n return this.like('%' + value);\n }\n\n like(value: string) {\n return new QueryColumnCondition<Table, string>(this, 'like', value);\n }\n\n notLike(value: string) {\n return new QueryColumnCondition<Table, string>(this, 'not-like', value);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/column/string-column.ts","\n\nimport QueryTable from \"../query-table\";\nimport QueryJoinCondition from \"../condition/query-join-condition\";\nimport JoinedTables from \"./joined-tables\";\nimport {JoinType} from \"../helpers/internal-types\";\n\nexport default class JoinedTablesChain<Tables extends QueryTable<any, any>> {\n\n constructor(\n protected _table: QueryTable<any, any>,\n protected _modifier: JoinType,\n protected _parent: JoinedTables<Tables> | QueryTable<any, any>\n ) {}\n\n on(condition: QueryJoinCondition<Tables, Tables, any>): JoinedTables<Tables> {\n return new JoinedTables(condition, this);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/join/joined-tables-chain.ts","\n\nimport QueryTable from \"../query-table\";\nimport JoinedTablesChain from \"./joined-tables-chain\";\nimport QueryJoinCondition from \"../condition/query-join-condition\";\n\n\nexport default class JoinedTables<Tables extends QueryTable<any, any>> {\n\n constructor(\n protected _condition: QueryJoinCondition<Tables, Tables, any>,\n protected _parent: JoinedTablesChain<Tables>\n ) {}\n\n innerJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<Tables | JoinTable> {\n return new JoinedTablesChain(table, 'inner', this);\n }\n\n leftJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<Tables | JoinTable> {\n return new JoinedTablesChain(table, 'left', this);\n }\n\n rightJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<Tables | JoinTable> {\n return new JoinedTablesChain(table, 'right', this);\n }\n\n fullJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<Tables | JoinTable> {\n return new JoinedTablesChain(table, 'full', this);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/join/joined-tables.ts","\n\nimport QueryCondition from \"../condition/query-condition\";\nimport QueryOrdering from \"../other/query-ordering\";\nimport QueryTable from \"../query-table\";\nimport QueryColumn from \"../column/query-column\";\nimport { QueryProcessor, QueryAction } from \"../helpers/internal-types\";\n\n\nexport default class SelectQuery<Entity, Table extends QueryTable<Entity, any>> {\n\n constructor(\n protected _queryProcessor: QueryProcessor,\n protected _tables: Table[]\n ) {}\n\n protected _distinct = false;\n protected _offset: number;\n protected _limit: number;\n protected _conditions: QueryCondition<Table>[] = [];\n protected _groupBy: QueryColumn<Table, any>[] = [];\n protected _having: QueryCondition<Table>[] = [];\n protected _orderings: (QueryColumn<Table, any> | QueryOrdering<Table>)[] = [];\n protected _columns: QueryColumn<Table, any>[] = [];\n protected _action: QueryAction;\n\n offset(offset: number): this {\n this._offset = offset;\n return this;\n }\n\n limit(limit: number): this {\n this._limit = limit;\n return this;\n }\n\n distinct(): this {\n this._distinct = true;\n return this;\n }\n\n where(...conditions: QueryCondition<Table>[]): this {\n this._conditions = conditions;\n return this;\n }\n\n groupBy(...columns: QueryColumn<Table, any>[]): this {\n this._groupBy = columns;\n return this;\n }\n\n having(...conditions: QueryCondition<Table>[]): this {\n this._having = conditions;\n return this;\n }\n\n orderBy(...orderings: (QueryColumn<Table, any> | QueryOrdering<Table>)[]): this {\n this._orderings = orderings;\n return this;\n }\n\n select(): Promise<Entity[]>\n select<T>(column: QueryColumn<Table, T>): Promise<T[]>\n select(...columns: QueryColumn<Table, any>[]): Promise<any[]>\n select(...columns: QueryColumn<Table, any>[]): Promise<any[]> {\n this._columns = columns;\n this._action = 'select';\n return this._queryProcessor(this);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/query/select-query.ts","\n\nimport QueryTable from \"../query-table\";\nimport QueryCondition from \"../condition/query-condition\";\nimport QueryColumn from \"../column/query-column\";\nimport { QueryProcessor, QueryAction } from \"../helpers/internal-types\";\n\n\nexport default class TableConditionQuery<Entity, Table extends QueryTable<Entity, any>> {\n\n constructor(\n protected _queryProcessor: QueryProcessor,\n protected _table: Table,\n protected _conditions: QueryCondition<Table>[]\n ) {}\n\n protected _columns: QueryColumn<Table, any>[] = [];\n protected _action: QueryAction;\n protected _entity: Entity | Partial<Entity>;\n\n update(entity: Partial<Entity>): Promise<number> {\n this._entity = entity;\n this._action = 'update';\n return this._queryProcessor(this);\n }\n\n delete(): Promise<number> {\n this._action = 'delete';\n return this._queryProcessor(this);\n }\n\n count(): Promise<number> {\n this._columns = [this._table.$all.count()];\n this._action = 'select';\n return this._queryProcessor(this).then((rows: number[]) => rows[0]);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/query/table-condition-query.ts","\n\nimport QueryTable from \"../query-table\";\nimport TableConditionQuery from \"./table-condition-query\";\nimport QueryCondition from \"../condition/query-condition\";\nimport ValueColumn from \"../column/value-column\";\nimport QueryColumn from \"../column/query-column\";\nimport { QueryProcessor, QueryAction } from \"../helpers/internal-types\";\n\n\nexport default class TableQuery<Entity, Id, Table extends QueryTable<Entity, Id>> {\n\n constructor(\n protected _queryProcessor: QueryProcessor,\n protected _table: Table\n ) {}\n\n protected _entity: Entity | Entity[] | Partial<Entity>;\n protected _action: QueryAction;\n protected _columns: QueryColumn<Table, any>[] = [];\n\n where(...conditions: QueryCondition<Table>[]) {\n return new TableConditionQuery<Entity, Table>(this._queryProcessor, this._table, conditions);\n }\n\n insert(entity: Entity): Promise<any> // returns the generated ID, but not other kinds of IDs, so the type is unknown (mysql limitations)\n insert(entities: Entity[]): Promise<void>\n insert(param: any): Promise<any> {\n this._entity = param;\n this._action = 'insert';\n return this._queryProcessor(this);\n }\n\n deleteAll(): Promise<number> {\n this._action = 'delete';\n return this._queryProcessor(this);\n }\n\n updateAll(entity: Partial<Entity>): Promise<number> {\n this._entity = entity;\n this._action = 'update';\n return this._queryProcessor(this);\n }\n\n countAll(): Promise<number> {\n this._columns = [this._table.$all.count()];\n this._action = 'select';\n return this._queryProcessor(this).then((rows: any[]) => rows[0]);\n }\n\n delete(id: Id): Promise<boolean> {\n return this._whereId(id).delete().then(count => count > 0);\n }\n\n update(id: Id, entity: Partial<Entity>): Promise<boolean> {\n return this._whereId(id).update(entity).then(count => count > 0);\n }\n\n get(id: Id): Promise<Entity | undefined> {\n let query = this._whereId(id);\n return this._queryProcessor({ _action: 'select', ...query })\n .then((rows: Entity[]) => rows[0]);\n }\n\n _whereId(id: Id): TableConditionQuery<Entity, Table> {\n\n let $id = (this._table as any).$id;\n if ($id instanceof ValueColumn) {\n return this.where($id.eq(id));\n } else {\n return this.where(...Object.keys($id).map(key => ((this._table as any)[key] as ValueColumn<Table, any>).eq((id as any)[key] as any)));\n }\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/query/table-query.ts","\n\nimport QueryTable from './query-table';\nimport SelectQuery from './query/select-query';\nimport { QueryProcessor } from \"./helpers/internal-types\";\nimport JoinedTables from \"./join/joined-tables\";\nimport TableQuery from \"./query/table-query\";\n\n\nexport default class QuerySource {\n\n constructor(protected _queryProcessor: QueryProcessor) {}\n\n from<Entity, Table1 extends QueryTable<Entity, any>>(table1: Table1 & QueryTable<Entity, any>): SelectQuery<Entity, Table1>\n from<Tables extends QueryTable<any, any>>(tables: JoinedTables<Tables>): SelectQuery<any, Tables>\n from<Table1 extends QueryTable<any, any>, Table2 extends QueryTable<any, any>>(table1: Table1, table2: Table2): SelectQuery<any, Table1 | Table2>\n from<Table1 extends QueryTable<any, any>, Table2 extends QueryTable<any, any>, Table3 extends QueryTable<any, any>>(table1: Table1, table2: Table2, table3: Table3): SelectQuery<any, Table1 | Table2 | Table3>\n from<Entity, Table1 extends QueryTable<any, any>, Table2 extends QueryTable<any, any>, Table3 extends QueryTable<any, any>>(table1: any, table2?: any, table3?: any) {\n if (table3 != null) return new SelectQuery<any, Table1 | Table2 | Table3>(this._queryProcessor, [table1, table2, table3]);\n else if (table2 != null) return new SelectQuery<any, Table1 | Table2>(this._queryProcessor, [table1, table2]);\n return new SelectQuery<Entity, Table1>(this._queryProcessor, [table1]);\n }\n\n table<Entity, Id, Table extends QueryTable<Entity, Id>>(table: Table & QueryTable<Entity, Id>): TableQuery<Entity, Id, Table> {\n return new TableQuery<Entity, Id, Table>(this._queryProcessor, table);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/query-source.ts","\n\nimport BasicColumn from \"./column/basic-column\";\nimport GenericsHelper from \"./helpers/generics-helper\";\nimport JoinedTablesChain from \"./join/joined-tables-chain\";\n\n\nabstract class QueryTable<Entity, Id> {\n\n constructor(protected _$name: string) {}\n\n protected _$type: GenericsHelper<Entity>;\n protected _$idType: GenericsHelper<Id>;\n\n\n\n $all = new BasicColumn<this, Entity>(this, '*');\n\n innerJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<this | JoinTable> {\n return new JoinedTablesChain<this | JoinTable>(table, 'inner', this);\n }\n\n leftJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<this | JoinTable> {\n return new JoinedTablesChain<this | JoinTable>(table, 'left', this);\n }\n\n rightJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<this | JoinTable> {\n return new JoinedTablesChain<this | JoinTable>(table, 'right', this);\n }\n\n fullJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<this | JoinTable> {\n return new JoinedTablesChain<this | JoinTable>(table, 'full', this);\n }\n}\n\nexport default QueryTable;\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/builder/query-table.ts","\n\n\nexport function number(param: any): number {\n let result = Number(param);\n if (Number.isNaN(result)) throw new Error('Invalid number parameter in SQL query: ' + param);\n return result;\n}\n\nexport function boolean(param: any): boolean {\n if (typeof param === 'boolean') return param;\n if (param instanceof Boolean) return param.valueOf();\n if (param === 'true') return true;\n if (param === 'false') return false;\n throw new Error('Invalid boolean parameter in SQL query: ' + param);\n}\n\nexport function date(param: any): Date {\n if (param instanceof Date) return param; // @ts-ignore\n if (typeof param === 'number' || param instanceof Number) return new Date(param);\n if (typeof param === 'string' || param instanceof String) {\n if (Number.isNaN(Date.parse(String(param)))) throw new Error('Invalid date parameter in SQL query: ' + param); // @ts-ignore\n return new Date(param);\n }\n throw new Error('Invalid date parameter in SQL query: ' + param);\n}\n\nexport function string(param: any): string {\n if (typeof param === 'string') return param;\n if (param instanceof String) return param.valueOf();\n throw new Error('Invalid string parameter in SQL query: ' + param);\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/converter/type-converter.ts","\n\nimport { string, number, date, boolean } from './type-converter';\nimport { QueryEngine, ConverterOptions } from \"./types\";\n\n\nexport function createQueryConverter(paramConverter: (param: any) => string, options: ConverterOptions, engine: QueryEngine) {\n\n return convertQuery;\n\n function convertQuery(query: any): string {\n if (query._action === 'select') return convertSelectQuery(query);\n if (query._action === 'delete') return convertDeleteQuery(query);\n if (query._action === 'update') return convertUpdateQuery(query);\n if (query._action === 'insert') return convertInsertQuery(query);\n throw new Error('Unknown query type:' + query._action);\n }\n\n function convertDeleteQuery(query: any): string {\n let s = 'DELETE FROM ' + convertTable(query._table);\n s += convertConditions(query._conditions);\n return s;\n }\n\n function convertUpdateQuery(query: any): string {\n let s = 'UPDATE ' + convertTable(query._table) + ' SET ';\n s += convertUpdateSetters(query._table, query._entity);\n s += convertConditions(query._conditions);\n return s;\n }\n\n function convertUpdateSetters(table: any, entity: any): string {\n return Object.keys(entity).sort().map(key => {\n let value = entity[key];\n let column = table[key];\n return convertColumnName(column) + ' = ' + convertParam(column, value);\n }).join(', ');\n }\n\n function convertInsertQuery(query: any): string {\n let items: any[] = Array.isArray(query._entity) ? query._entity : [query._entity];\n let keySet: Set<string> = items.reduce((set: Set<string>, item) => {\n Object.keys(item).forEach(key => set.add(key)); return set;\n }, new Set<string>());\n let keys = Array.from(keySet).sort();\n\n let s = 'INSERT INTO ' + convertTable(query._table) + ' ';\n s += '(' + keys.map(key => convertColumnName(query._table[key])).join(', ') + ')';\n s += options.lineBreak + 'VALUES ';\n s += items.map(item => convertInsertItem(query._table, item, keys))\n .map((row: string) => '(' + row + ')').join(', ');\n\n s += getPgInsertReturningIfNeeded(query);\n return s;\n }\n\n\n function getPgInsertReturningIfNeeded(query: any): string {\n if (engine === 'pg' && query._action === 'insert' && !Array.isArray(query._entity) &&\n query._table.$id && query._table.$id._table && query._table.$id._name) {\n return ' RETURNING ' + convertColumnName(query._table.$id);\n }\n return '';\n }\n\n function convertInsertItem(table: any, entity: any, keys: string[]): string {\n return keys.map(key => {\n let value = entity[key];\n let column = table[key];\n return convertParam(column, value);\n }).join(', ');\n }\n\n function convertSelectQuery(query: any): string {\n let s = 'SELECT ';\n if (query._distinct) {\n s += 'DISTINCT ';\n }\n\n if (query._columns == null || query._columns.length === 0) {\n s += '*'\n } else {\n s += query._columns.map((column: any) => convertColumn(column)).join(', ');\n }\n\n s += options.lineBreak + 'FROM ';\n if (query._tables) {\n s+= query._tables.map((table: any) => table._parent ? convertJoin(table) : convertTable(table)).join(', ');\n } else {\n s+= convertTable(query._table);\n }\n\n s += convertConditions(query._conditions);\n\n if (query._groupBy && query._groupBy.length > 0) {\n s += options.lineBreak + 'GROUP BY ';\n s += query._groupBy.map((column: any) => convertColumn(column)).join(', ');\n }\n s += convertConditions(query._having, 'HAVING');\n\n if (query._orderings && query._orderings.length > 0) {\n s += options.lineBreak + 'ORDER BY ';\n s += query._orderings.map((ordering: any) => convertOrdering(ordering)).join(', ');\n }\n if (query._limit != null) {\n s += options.lineBreak + 'LIMIT ' + number(query._limit);\n }\n if (query._offset != null) {\n s += options.lineBreak + 'OFFSET ' + number(query._offset);\n }\n return s;\n }\n\n function convertConditions(conditions: any[], keyword = 'WHERE'): string {\n let s = '';\n if (conditions && conditions.length > 0) {\n s += options.lineBreak + keyword + ' ';\n preprocessConditions(conditions);\n s += conditions.map(condition => convertCondition(condition, true)).join(' AND ');\n }\n return s;\n }\n\n function convertJoin(joinChain: any): string {\n let items: any[] = [];\n while (joinChain) {\n items.push(joinChain);\n joinChain = joinChain._parent;\n }\n\n let root = items[items.length - 1];\n let s = convertTable(root);\n\n for (let i = items.length - 2; i >= 0; i-= 2) {\n let table = items[i]._table;\n let modifier = items[i]._modifier;\n let condition = items[i - 1]._condition;\n let param = convertColumn(condition._otherColumn);\n s += ' ' + modifier.toUpperCase() + ' JOIN ' + convertTable(table) + ' ON ' +\n convertColumnCondition(condition, param);\n }\n\n return s;\n }\n\n function convertOrdering(ordering: any): string {\n if (ordering._column) {\n let s = convertColumn(ordering._column);\n\n if (ordering._nullsPosition != null) { // \"NULLS FIRST\" only exists in PG, this is the general solution\n s += ' IS NULL ' + (ordering._nullsPosition === 'FIRST' ? 'DESC' : 'ASC') + ', ' + s;\n }\n\n if (ordering._direction === 'ASC') s += ' ASC';\n if (ordering._direction === 'DESC') s += ' DESC';\n\n return s;\n } else {\n return convertColumn(ordering);\n }\n }\n\n function convertTable(table: any): string {\n return options.nameEscape + table._$name + options.nameEscape;\n }\n\n function convertColumn(column: any): string {\n let s = '';\n if (!(column._name === '*' && column._modifiers.length > 0 && column._modifiers[0].name === 'count')) {\n s += convertTable(column._table) + '.';\n }\n s += convertColumnName(column);\n return convertColumnModifiers(s, column);\n }\n\n function convertColumnModifiers(s: string, column: any): string {\n if (column._modifiers) {\n column._modifiers.forEach((modifier: any) => {\n let name = modifier.name;\n if (name === 'lower') s = 'LOWER(' + s + ')';\n else if (name === 'upper') s = 'UPPER(' + s + ')';\n else if (name === 'count') s = 'COUNT(' + s + ')';\n else if (name === 'sum') s = 'SUM(' + s + ')';\n else if (name === 'avg') s = 'AVG(' + s + ')';\n else if (name === 'min') s = 'MIN(' + s + ')';\n else if (name === 'max') s = 'MAX(' + s + ')';\n else if (name === 'as') s = s + ' AS ' + options.nameEscape + modifier.params + options.nameEscape;\n });\n }\n return s + '';\n }\n\n function convertColumnName(column: any): string {\n if (column._name === '*') return column._name;\n let name = typeof column._name === 'string' ? column._name : column._name.name;\n return options.nameEscape + name + options.nameEscape;\n }\n\n function preprocessConditions(conditions: any[]): void {\n conditions.forEach(condition => {\n if (conditions.length > 1 && condition._sibling) {\n condition._parenthesis = true;\n }\n preprocessParams(condition);\n });\n }\n\n\n function preprocessParams(condition: any): void {\n if (condition._sibling) {\n preprocessParams(condition._sibling);\n }\n if (!condition._sibling && !condition._child) {\n condition.__param = getConditionParam(condition);\n }\n if (condition._child) {\n preprocessParams(condition._child);\n }\n }\n\n function convertCondition(condition: any, root = false): string {\n if (!condition._sibling && !condition._child) {\n return convertColumnCondition(condition, condition.__param);\n }\n\n let s = '';\n if (condition._child) {\n s += convertCondition(condition._child);\n }\n if (condition._sibling) {\n s = convertCondition(condition._sibling, root) + ' ' + condition._chainType.toUpperCase() + ' ' + s;\n }\n if (condition._parenthesis || ((!root || condition._negation) && condition._child)) {\n s = '( ' + s + ' )';\n }\n if (condition._negation) {\n s = 'NOT ' + s;\n }\n return s;\n }\n\n function convertColumnCondition(condition: any, param: string): string {\n let s = convertColumn(condition._column);\n s += getConditionString(condition, param);\n return s;\n }\n\n function getConditionString(condition: any, param: string): string {\n switch (condition._type) {\n case 'eq': return ' = ' + param;\n case 'ne': return ' <> ' + param;\n case 'lt': return ' < ' + param;\n case 'gt': return ' > ' + param;\n case 'lte': return ' <= ' + param;\n case 'gte': return ' >= ' + param;\n case 'is-null': return ' IS NULL';\n case 'is-not-null': return ' IS NOT NULL';\n case 'like': return ' LIKE ' + param;\n case 'not-like': return ' NOT LIKE ' + param;\n case 'in': return ' IN (' + param + ')';\n case 'not-in': return ' NOT IN (' + param + ')';\n case 'between': return ' BETWEEN ' + param;\n case 'not-between': return ' NOT BETWEEN ' + param;\n default: return '';\n }\n }\n\n function getConditionParam(condition: any): string {\n let param = '';\n if (condition._otherColumn) {\n param = convertColumn(condition._otherColumn);\n } else {\n let _convertParam = (param: any) => convertParam(condition._column, param);\n\n if (condition._type === 'in' || condition._type === 'not-in') {\n param = condition._values.map((value: any) => _convertParam(value)).join(', ');\n } else if (condition._type === 'between' || condition._type === 'not-between') {\n param = _convertParam(condition._values[0]) + ' AND ' + _convertParam(condition._values[1]);\n } else if (condition._type !== 'is-null' && condition._type !== 'is-not-null') {\n param = _convertParam(condition._values[0]);\n }\n }\n return param;\n }\n\n function convertParam(column: any, param: any): string {\n if (param == null) return 'NULL';\n return paramConverter(getTypedParam(column._type, param));\n }\n\n function getTypedParam(type: string, param: any): any {\n if (type === 'number') return number(param);\n else if (type === 'boolean') return boolean(param);\n else if (type === 'date') return date(param);\n else if (type === 'string') return string(param);\n return param;\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/converter/query-converter.ts","\n\n\nexport function convertSubstitutionParam(param: any): string {\n if (param == null) return 'NULL';\n if (typeof param === 'string' || param instanceof String) {\n return `'${String(param)}'`;\n } else if (typeof param === 'boolean' || param instanceof Boolean) {\n return String(param).toUpperCase();\n } else if (param instanceof Date) {\n return `'${param.toISOString()}'`;\n } else if (typeof param === 'number' || param instanceof Number) {\n return String(param);\n }\n return `'${JSON.stringify(param)}'`;\n}\n\n\n\nexport function convertEscapedParam(param: any) {\n if (typeof param === 'object' && !(param == null || param instanceof String || param instanceof Number ||\n param instanceof Boolean || param instanceof Date)) {\n return JSON.stringify(param);\n }\n return param;\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/converter/param-converter.ts","\n\nimport {createQueryConverter} from \"./query-converter\";\nimport {convertEscapedParam} from './param-converter';\nimport {QueryEngine, ConverterOptions} from \"./types\";\n\nlet pgParamConverter = (index: number) => '$' + index;\nlet mySqlParamConverter = (index: number) => '?';\n\nfunction convertSingleParam(param: any, params: any[], paramConverter: (param: any) => string): string {\n params.push(convertEscapedParam(param));\n return paramConverter(params.length);\n}\n\nexport function convertQueryToParameterizedSQL(query: any, options: ConverterOptions, engine: QueryEngine) {\n let params: any[] = [];\n\n let paramConverter = engine === 'mysql' ? mySqlParamConverter : pgParamConverter;\n let sql = createQueryConverter((param: any) => convertSingleParam(param, params, paramConverter), options, engine)(query);\n\n return { sql, params };\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/converter/parameterized-converter.ts","\n\nimport {createQueryConverter} from \"./query-converter\";\nimport {convertSubstitutionParam} from './param-converter';\nimport {QueryEngine, ConverterOptions} from \"./types\";\n\nexport function convertQueryToSQL(query: any, options: ConverterOptions, engine: QueryEngine): string {\n return createQueryConverter((param: any) => convertSubstitutionParam(param), options, engine)(query);\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/converter/sql-converter.ts","\n\nimport { Log, Level } from 'ng2-logger/websql';\nimport { convertQueryToParameterizedSQL } from '../converter/parameterized-converter';\nimport { convertQueryToSQL } from '../converter/sql-converter';\nimport { convertResult } from \"../converter/result-converter\";\nimport { QueryEngine, ConverterOptions } from '../converter/types';\nimport { QueryProcessor } from '../builder/helpers/internal-types';\nimport { Helpers } from 'tnp-core/websql';\n\nconst log = Log.create('query processor',\n\n)\n\nexport interface QueryProcessorOptions {\n lineBreaks?: boolean,\n parameterized?: boolean,\n logging?: boolean,\n logger?: (sql: string, params?: any[]) => void,\n identifierQuote?: string\n}\n\nconst DEFAULT_OPTIONS: QueryProcessorOptions = {\n lineBreaks: false,\n parameterized: true,\n logging: true,\n identifierQuote: '\"'\n};\n\nfunction mySqlTypeCast(field: any, next: any) {\n if (field.type == 'TINY' && field.length == 1) { // Boolean\n let value = field.string();\n if (value == '1') return true;\n if (value == '0') return false;\n return null;\n } else if (field.type == 'JSON') {\n let value = field.string();\n return value == null ? null : JSON.parse(value);\n }\n return next();\n}\n\nexport function createQueryProcessor(client: any, _options: QueryProcessorOptions = {}, engine: QueryEngine = 'pg'): QueryProcessor {\n\n let options: QueryProcessorOptions = Object.assign({}, DEFAULT_OPTIONS, _options);\n\n let queryOptions: ConverterOptions = {\n lineBreak: options.lineBreaks ? '\\n' : ' ',\n nameEscape: _options.identifierQuote || (engine === 'mysql' ? '`' : '\"')\n };\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n return (query: any) => {\n if (options.parameterized) {\n let { sql, params } = convertQueryToParameterizedSQL(query, queryOptions, engine);\n\n return client.query(sql, params);\n\n\n } else {\n let sql = convertQueryToSQL(query, queryOptions, engine);\n\n return client.query(sql, undefined);\n\n\n }\n };\n}\n\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/client/query-processor.ts","\n\nimport QuerySource from \"../builder/query-source\";\nimport {QueryProcessorOptions, createQueryProcessor} from \"./query-processor\";\n\nexport default class MySqlQuerySource extends QuerySource {\n\n constructor(client: any, options: QueryProcessorOptions = {}) {\n super(createQueryProcessor(client, options, 'mysql'));\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/client/mysql.ts","\n\n\n\n\nexport { default as BasicColumn } from './builder/column/basic-column';\nexport { default as BooleanColumn } from './builder/column/boolean-column';\nexport { default as ComparableColumn } from './builder/column/comparable-column';\nexport { default as DateColumn } from './builder/column/date-column';\nexport { default as NumberColumn } from './builder/column/number-column';\nexport { default as QueryColumn } from './builder/column/query-column';\nexport { default as StringColumn } from './builder/column/string-column';\nexport { default as ValueColumn } from './builder/column/value-column';\n\nexport { default as QueryColumnCondition } from './builder/condition/query-column-condition';\nexport { default as QueryCondition } from './builder/condition/query-condition';\nexport { default as QueryConditionChain } from './builder/condition/query-condition-chain';\nexport { default as QueryJoinCondition } from './builder/condition/query-join-condition';\n\nexport { default as JoinedTables } from './builder/join/joined-tables';\nexport { default as JoinedTablesChain } from './builder/join/joined-tables-chain';\n\nexport { default as QueryOrdering } from './builder/other/query-ordering';\n\nexport { default as SelectQuery } from './builder/query/select-query';\nexport { default as TableQuery } from './builder/query/table-query';\nexport { default as TableConditionQuery } from './builder/query/table-condition-query';\n\nexport { default as QuerySource } from './builder/query-source';\nexport { default as QueryTable } from './builder/query-table';\n\n\n\nexport { default as MySqlQuerySource } from './client/mysql';\n\n\nexport { QueryProcessorOptions } from './client/query-processor';\n\n\nexport type PropsEntitySQL<IEntityType> = { [prop in keyof Required<IEntityType>]: any; }\n\n ;({}); // @--end-of-file-for-module=taon-type-sql lib/index.ts","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|