taon-type-sql 18.0.16 → 18.0.17

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.
@@ -30,14 +30,14 @@
30
30
  }
31
31
  },
32
32
  "name": "taon-type-sql",
33
- "version": "18.0.16",
33
+ "version": "18.0.17",
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.42"
40
+ "tnp-core": "~18.0.43"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@angular-builders/custom-webpack": "~18.0.0",
@@ -203,13 +203,13 @@
203
203
  "image-focus": "1.2.1",
204
204
  "immer": "10.0.2",
205
205
  "immutable": "4.3.7",
206
- "incremental-compiler": "~18.0.16",
206
+ "incremental-compiler": "~18.0.17",
207
207
  "inquirer": "7.3.3",
208
208
  "inquirer-autocomplete-prompt": "1.4.0",
209
209
  "inquirer-autocomplete-standalone": "0.8.1",
210
210
  "inquirer-select-pro": "1.0.0-alpha.7",
211
211
  "is-elevated": "3.0.0",
212
- "isomorphic-region-loader": "~18.0.16",
212
+ "isomorphic-region-loader": "~18.0.17",
213
213
  "istanbul-instrumenter-loader": "3.0.1",
214
214
  "jest": "29.7.0",
215
215
  "jest-date-mock": "1.0.10",
@@ -220,8 +220,8 @@
220
220
  "joi": "17.13.3",
221
221
  "jscodeshift": "0.6.3",
222
222
  "json-stringify-safe": "5.0.1",
223
- "json10": "~18.0.16",
224
- "json10-writer": "~18.0.16",
223
+ "json10": "~18.0.17",
224
+ "json10-writer": "~18.0.17",
225
225
  "json5": "2.2.3",
226
226
  "json5-writer": "0.2.0",
227
227
  "jszip": "3.10.1",
@@ -230,9 +230,9 @@
230
230
  "localforage": "1.10.0",
231
231
  "lockfile": "1.0.4",
232
232
  "lodash": "4.17.21",
233
- "lodash-walk-object": "~18.0.16",
233
+ "lodash-walk-object": "~18.0.17",
234
234
  "lowdb": "7.0.1",
235
- "magic-renamer": "~18.0.16",
235
+ "magic-renamer": "~18.0.17",
236
236
  "material-design-icons": "3.0.1",
237
237
  "method-override": "2.3.10",
238
238
  "minimist": "1.2.8",
@@ -243,11 +243,11 @@
243
243
  "ng-in-viewport": "16.1.0",
244
244
  "ng-lock": "18.0.1",
245
245
  "ng-packagr": "18.1.0",
246
- "ng-talkback": "~18.0.15",
247
- "ng2-logger": "~18.0.18",
246
+ "ng-talkback": "~18.0.16",
247
+ "ng2-logger": "~18.0.19",
248
248
  "ng2-pdfjs-viewer": "18.0.0",
249
- "ng2-rest": "~18.0.16",
250
- "ng2-rest-swagger-generator": "18.0.13",
249
+ "ng2-rest": "~18.0.17",
250
+ "ng2-rest-swagger-generator": "18.0.14",
251
251
  "ngx-ace-wrapper": "17.0.0",
252
252
  "ngx-editor": "17.5.4",
253
253
  "ngx-highlightjs": "12.0.0",
@@ -261,7 +261,7 @@
261
261
  "ngx-scrolltop": "18.0.0",
262
262
  "ngx-store": "3.1.1",
263
263
  "ngx-typed-js": "2.1.1",
264
- "node-cli-tester": "~18.0.15",
264
+ "node-cli-tester": "~18.0.16",
265
265
  "node-localstorage": "2.1.6",
266
266
  "node-notifier": "10.0.1",
267
267
  "node-polyfill-webpack-plugin": "2.0.1",
@@ -292,7 +292,7 @@
292
292
  "q": "1.5.1",
293
293
  "rallax.js": "2.0.4",
294
294
  "randomcolor": "0.5.3",
295
- "record-replay-req-res-scenario": "~18.0.15",
295
+ "record-replay-req-res-scenario": "~18.0.16",
296
296
  "reflect-metadata": "0.2.2",
297
297
  "rimraf": "2.6.2",
298
298
  "rxjs": "~7.8.1",
@@ -306,22 +306,22 @@
306
306
  "sql-template-strings": "2.2.2",
307
307
  "sql-template-tag": "5.2.1",
308
308
  "sql.js": "1.8.0",
309
- "static-columns": "~18.0.17",
309
+ "static-columns": "~18.0.18",
310
310
  "string-similarity": "4.0.4",
311
311
  "sudo-block": "3.0.0",
312
312
  "supertest": "7.0.0",
313
313
  "sweetalert2": "11.7.32",
314
314
  "systeminformation": "3.45.7",
315
315
  "taon": "^18",
316
- "taon-storage": "18.0.24",
317
- "taon-type-sql": "18.0.15",
318
- "taon-typeorm": "18.0.14",
316
+ "taon-storage": "18.0.25",
317
+ "taon-type-sql": "18.0.16",
318
+ "taon-typeorm": "18.0.15",
319
319
  "task.js": "0.1.5",
320
320
  "threads": "1.7.0",
321
- "tnp": "~18.0.18",
322
- "tnp-config": "~18.0.18",
323
- "tnp-helpers": "~18.0.16",
324
- "tnp-models": "~18.0.17",
321
+ "tnp": "~18.0.19",
322
+ "tnp-config": "~18.0.19",
323
+ "tnp-helpers": "~18.0.17",
324
+ "tnp-models": "~18.0.18",
325
325
  "ts-debug": "1.3.0",
326
326
  "ts-json-schema-generator": "2.3.0-next.5",
327
327
  "ts-loader": "2.3.1",
@@ -333,14 +333,14 @@
333
333
  "typedoc": "0.26.5",
334
334
  "typedoc-plugin-markdown": "4.2.3",
335
335
  "typescript": "~5.5.4",
336
- "typescript-class-helpers": "~18.0.17",
336
+ "typescript-class-helpers": "~18.0.18",
337
337
  "typescript-formatter": "~7.2.2",
338
338
  "typescript-string-enums": "~1.0.0",
339
339
  "underscore": "1.13.7",
340
340
  "uuid": "10.0.0",
341
341
  "validator": "13.5.2",
342
342
  "video.js": "8.3.0",
343
- "vpn-split": "~18.0.14",
343
+ "vpn-split": "~18.0.15",
344
344
  "vscode": "1.1.37",
345
345
  "wait-on": "8.0.1",
346
346
  "watch": "1.0.2",
@@ -350,18 +350,18 @@
350
350
  "yup": "1.3.3",
351
351
  "zone.js": "~0.13.0"
352
352
  },
353
- "lastBuildTagHash": "7e5fb4dfbf4d7b018d4e368b16599bbd944c10c7",
353
+ "lastBuildTagHash": "5e829ae0f6f31f9a4bc71e678e16e6b9ab8bd5c5",
354
354
  "main": "dist/app.electron.js"
355
355
  },
356
356
  "build": {
357
- "number": 173,
358
- "date": "2024-11-25T02:27:40.000Z",
359
- "hash": "5e829ae0f6f31f9a4bc71e678e16e6b9ab8bd5c5"
357
+ "number": 174,
358
+ "date": "2024-12-31T17:56:52.000Z",
359
+ "hash": "ca2be7aa64e20ab54cdab9bb6efa99efe1551b55"
360
360
  },
361
361
  "currentProjectName": "taon-type-sql",
362
362
  "currentProjectGenericName": "taon-type-sql",
363
363
  "currentProjectType": "isomorphic-lib",
364
- "currentFrameworkVersion": "18.0.18",
364
+ "currentFrameworkVersion": "18.0.19",
365
365
  "isStandaloneProject": true,
366
366
  "isSmartContainer": false,
367
367
  "pathesTsconfig": "\"paths\": {\"taon-type-sql\":[\"./src/lib\"],\"taon-type-sql/*\":[\"./src/lib/*\"]},",
package/websql/README.md CHANGED
@@ -1,24 +1,24 @@
1
- # MyLib
2
-
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
4
-
5
- ## Code scaffolding
6
-
7
- Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
8
- > Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
9
-
10
- ## Build
11
-
12
- Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
13
-
14
- ## Publishing
15
-
16
- After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
17
-
18
- ## Running unit tests
19
-
20
- Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
-
22
- ## Further help
23
-
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
1
+ # MyLib
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
8
+ > Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -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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"}