taon-type-sql 19.0.31 → 19.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/browser/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/taon-type-sql/projects/taon-type-sql/src/lib/builder/condition/query-condition.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/condition/query-condition-chain.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/condition/query-column-condition.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/query-column.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/other/query-ordering.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/condition/query-join-condition.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/value-column.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/comparable-column.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/number-column.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/basic-column.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/boolean-column.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/date-column.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/string-column.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/join/joined-tables-chain.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/join/joined-tables.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/query/select-query.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/query/table-condition-query.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/query/table-query.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/query-source.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/query-table.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/converter/type-converter.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/converter/query-converter.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/converter/param-converter.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/converter/parameterized-converter.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/converter/sql-converter.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/client/query-processor.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/client/mysql.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/index.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/taon-type-sql.ts"],"sourcesContent":["import QueryTable from \"../query-table\";\nimport QueryConditionChain from \"./query-condition-chain\";\n\n// TODO I had to copy-paste the method implementations to every child class to avoid circular dependencies\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","import 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 // TODO how to call this\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","import 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","import 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","import 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","import 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","import 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","import 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 // min/max exists for text columns too, not just numeric and date\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","import 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","import QueryTable from \"../query-table\";\nimport QueryColumn from \"./query-column\";\nimport NumberColumn from \"./number-column\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n// This file is only needed because the QueryColumn can't implement its count method b. of circular dependencies\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","import 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","import 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","import 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","import 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","import 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","import 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","import 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","import 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 // TODO remove assertions if $id typing is fixed\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","import 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","import 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 // abstract readonly $id; // FIXME I got a dozen incomprehensible type errors\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","\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","import { 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 // this is only needed, so that the $1, $2... numbering is not reversed\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","\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// node mysql doesn't have an typeCast equivalent solution for the other direction\n// node-postgres: https://github.com/brianc/node-postgres/issues/442\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","import {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","import {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","import { Log, Level } from 'ng2-logger/browser';\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/browser';\n\nconst log = Log.create('query processor',\n // Level.__NOTHING\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 // function processSql(query: any, sql: string, params: any[] | undefined, callback: any): Promise<any> {\n // if (options.logging) log.i(sql);\n // if (options.logger) options.logger(sql, params);\n\n // return new Promise((resolve, reject) => {\n // callback(sql, params, (err: any, result: any) => {\n // if (err) reject(err);\n // else resolve(convertResult(query, result, engine));\n // });\n // });\n // }\n\n // function executeSql(sql: string, params: any[] | undefined, cb: any) {\n // if (engine === 'pg') {\n // client.query(sql, params || cb, params ? cb : undefined);\n // } else if (engine === 'mysql') {\n // client.query({\n // sql,\n // values: params,\n // typeCast: mySqlTypeCast\n // }, cb);\n // } else throw new Error('Unknown DB engine: ' + engine);\n // }\n\n return (query: any) => {\n if (options.parameterized) {\n let { sql, params } = convertQueryToParameterizedSQL(query, queryOptions, engine);\n // if (Helpers.isWebSQL || Helpers.isNode) {\n return client.query(sql, params);\n // }\n // return processSql(query, sql, params, (sql: string, params: any[], cb: any) => executeSql(sql, params, cb));\n } else {\n let sql = convertQueryToSQL(query, queryOptions, engine);\n // if (Helpers.isWebSQL || Helpers.isNode) {\n return client.query(sql, undefined);\n // }\n // return processSql(query, sql, undefined, (sql: string, params: undefined, cb: any) => executeSql(sql, undefined, cb));\n }\n };\n}\n\n","import 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// Builder:\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// Client:\n\nexport { default as MySqlQuerySource } from './client/mysql';\n// export { default as PgQuerySource } from './client/pg';\n\nexport { QueryProcessorOptions } from './client/query-processor';\n\n\nexport type PropsEntitySQL<IEntityType> = { [prop in keyof Required<IEntityType>]: any; }\n","/**\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/taon-type-sql/projects/taon-type-sql/src/lib/builder/condition/query-condition.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/condition/query-condition-chain.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/condition/query-column-condition.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/query-column.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/other/query-ordering.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/condition/query-join-condition.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/value-column.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/comparable-column.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/number-column.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/basic-column.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/boolean-column.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/date-column.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/column/string-column.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/join/joined-tables-chain.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/join/joined-tables.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/query/select-query.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/query/table-condition-query.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/query/table-query.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/query-source.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/builder/query-table.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/converter/type-converter.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/converter/query-converter.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/converter/param-converter.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/converter/parameterized-converter.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/converter/sql-converter.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/client/query-processor.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/client/mysql.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/lib/index.ts","../../../tmp-libs-for-dist/taon-type-sql/projects/taon-type-sql/src/taon-type-sql.ts"],"sourcesContent":["import QueryTable from \"../query-table\";\nimport QueryConditionChain from \"./query-condition-chain\";\n\n// TODO I had to copy-paste the method implementations to every child class to avoid circular dependencies\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;","import 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 // TODO how to call this\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}","import 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}","import 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;","import 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}","import 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}","import 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;","import 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 // min/max exists for text columns too, not just numeric and date\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;","import 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}","import QueryTable from \"../query-table\";\nimport QueryColumn from \"./query-column\";\nimport NumberColumn from \"./number-column\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n// This file is only needed because the QueryColumn can't implement its count method b. of circular dependencies\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}","import 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}","import 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}","import 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}","import 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}","import 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}","import 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}","import 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}","import 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 // TODO remove assertions if $id typing is fixed\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}","import 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}","import 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 // abstract readonly $id; // FIXME I got a dozen incomprehensible type errors\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;","export 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}","import { 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 // this is only needed, so that the $1, $2... numbering is not reversed\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}","export 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// node mysql doesn't have an typeCast equivalent solution for the other direction\n// node-postgres: https://github.com/brianc/node-postgres/issues/442\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}","import {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}","import {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}","import { Log, Level } from 'ng2-logger/browser';\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/browser';\n\nconst log = Log.create('query processor',\n // Level.__NOTHING\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 // function processSql(query: any, sql: string, params: any[] | undefined, callback: any): Promise<any> {\n // if (options.logging) log.i(sql);\n // if (options.logger) options.logger(sql, params);\n\n // return new Promise((resolve, reject) => {\n // callback(sql, params, (err: any, result: any) => {\n // if (err) reject(err);\n // else resolve(convertResult(query, result, engine));\n // });\n // });\n // }\n\n // function executeSql(sql: string, params: any[] | undefined, cb: any) {\n // if (engine === 'pg') {\n // client.query(sql, params || cb, params ? cb : undefined);\n // } else if (engine === 'mysql') {\n // client.query({\n // sql,\n // values: params,\n // typeCast: mySqlTypeCast\n // }, cb);\n // } else throw new Error('Unknown DB engine: ' + engine);\n // }\n\n return (query: any) => {\n if (options.parameterized) {\n let { sql, params } = convertQueryToParameterizedSQL(query, queryOptions, engine);\n // if (Helpers.isWebSQL || Helpers.isNode) {\n return client.query(sql, params);\n // }\n // return processSql(query, sql, params, (sql: string, params: any[], cb: any) => executeSql(sql, params, cb));\n } else {\n let sql = convertQueryToSQL(query, queryOptions, engine);\n // if (Helpers.isWebSQL || Helpers.isNode) {\n return client.query(sql, undefined);\n // }\n // return processSql(query, sql, undefined, (sql: string, params: undefined, cb: any) => executeSql(sql, undefined, cb));\n }\n };\n}","import 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}","// Builder:\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// Client:\n\nexport { default as MySqlQuerySource } from './client/mysql';\n// export { default as PgQuerySource } from './client/pg';\n\nexport { QueryProcessorOptions } from './client/query-processor';\n\n\nexport type PropsEntitySQL<IEntityType> = { [prop in keyof Required<IEntityType>]: any; }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;AAGA;AAEA,MAAe,cAAc,CAAA;AAK5B;;ACJoB,MAAA,mBAAwD,SAAQ,cAAqB,CAAA;AAUtG,IAAA,WAAA,CAAY,OAA4B,EAAE,KAA0B,EAAE,SAA6B,EAAA;AAC/F,QAAA,KAAK,EAAE;QAJD,IAAY,CAAA,YAAA,GAAG,KAAK;QACpB,IAAS,CAAA,SAAA,GAAG,KAAK;AAIvB,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;;;IAI/B,CAAC,GAAA;AACG,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,OAAO,IAAI;;IAGf,GAAG,GAAA;AACC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,OAAO,IAAI;;AAGf,IAAA,GAAG,CAAsC,SAAiC,EAAA;QACtE,OAAO,IAAI,mBAAmB,CAAiB,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC;;AAG1E,IAAA,EAAE,CAAsC,SAAiC,EAAA;QACrE,OAAO,IAAI,mBAAmB,CAAiB,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC;;AAE5E;;AClCoB,MAAA,oBAA4D,SAAQ,cAAqB,CAAA;AAM1G,IAAA,WAAA,CAAY,MAA6B,EAAE,IAAmB,EAAE,GAAG,MAAW,EAAA;AAC1E,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;;AAGzB,IAAA,GAAG,CAAsC,SAAiC,EAAA;QACtE,OAAO,IAAI,mBAAmB,CAAiB,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC;;AAG1E,IAAA,EAAE,CAAsC,SAAiC,EAAA;QACrE,OAAO,IAAI,mBAAmB,CAAiB,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC;;AAE5E;;ACpBD,MAAe,WAAW,CAAA;AAKtB,IAAA,WAAA,CACc,MAAa,EACb,KAAiB,EACjB,aAA+B,EAAE,EAAA;QAFjC,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAU,CAAA,UAAA,GAAV,UAAU;;AAKxB,IAAA,EAAE,CAAC,KAAa,EAAA;AACZ,QAAA,OAAO,IAAU,IAAI,CAAC,WAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;;IAGtH,MAAM,GAAA;AACF,QAAA,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,SAAS,CAAC;;IAG9D,SAAS,GAAA;AACL,QAAA,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,aAAa,CAAC;;AAErE;;AC3Ba,MAAO,aAAa,CAAA;IAM9B,WAAY,CAAA,MAA+B,EAAE,SAAyB,EAAA;AAClE,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;;IAG/B,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO;AAC7B,QAAA,OAAO,IAAI;;IAGf,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM;AAC5B,QAAA,OAAO,IAAI;;AAGlB;;ACnBoB,MAAA,kBAAgG,SAAQ,cAA+B,CAAA;AAMxJ,IAAA,WAAA,CAAY,MAA8B,EAAE,IAAY,EAAE,WAAmC,EAAA;AACzF,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW;;AAGnC,IAAA,GAAG,CAAsC,SAAiC,EAAA;QACtE,OAAO,IAAI,mBAAmB,CAA2B,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC;;AAGpF,IAAA,EAAE,CAAsC,SAAiC,EAAA;QACrE,OAAO,IAAI,mBAAmB,CAA2B,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC;;AAEtF;;ACjBD,MAAe,WAAmD,SAAQ,WAAqB,CAAA;AAE3F,IAAA,WAAA,CAAY,KAAY,EAAE,IAAgB,EAAE,YAA8B,EAAE,EAAA;AACxE,QAAA,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC;;IAGjC,GAAG,GAAA;AACC,QAAA,OAAO,IAAI,aAAa,CAAQ,IAAI,EAAE,KAAK,CAAC;;IAGhD,IAAI,GAAA;AACA,QAAA,OAAO,IAAI,aAAa,CAAQ,IAAI,EAAE,MAAM,CAAC;;AAKjD,IAAA,EAAE,CAAsC,KAAU,EAAA;AAC9C,QAAA,IAAI,KAAK,YAAY,WAAW,EAAE;YAC9B,OAAO,IAAI,kBAAkB,CAAmB,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;;aAC/D;YACH,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;;;AAIpE,IAAA,EAAE,CAAC,KAAQ,EAAA;QACP,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;;AAEnE;;AC9BD,MAAe,gBAAwD,SAAQ,WAAqB,CAAA;AAEhG,IAAA,WAAA,CAAY,KAAY,EAAE,IAAgB,EAAE,YAA8B,EAAE,EAAA;AACxE,QAAA,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC;;AAGjC,IAAA,EAAE,CAAC,KAAQ,EAAA;QACP,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;;AAGhE,IAAA,EAAE,CAAC,KAAQ,EAAA;QACP,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;;AAGhE,IAAA,GAAG,CAAC,KAAQ,EAAA;QACR,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;;AAGjE,IAAA,GAAG,CAAC,KAAQ,EAAA;QACR,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;;AAGjE,IAAA,EAAE,CAAC,MAAW,EAAA;QACV,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;;AAGpE,IAAA,KAAK,CAAC,MAAW,EAAA;QACb,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;;IAGxE,OAAO,CAAC,MAAS,EAAE,MAAS,EAAA;QACxB,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;;IAG9E,UAAU,CAAC,MAAS,EAAE,MAAS,EAAA;QAC3B,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC;;;IAKlF,GAAG,GAAA;QACC,OAAO,IAAU,IAAI,CAAC,WAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;;IAGxG,GAAG,GAAA;QACC,OAAO,IAAU,IAAI,CAAC,WAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;;AAE3G;;AChDoB,MAAA,YAAiD,SAAQ,gBAA+B,CAAA;AAIzG,IAAA,WAAA,CAAY,KAAY,EAAE,IAAgB,EAAE,YAA8B,EAAE,EAAA;AACxE,QAAA,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC;QAHvB,IAAK,CAAA,KAAA,GAAG,QAAQ;;IAM1B,KAAK,GAAA;QACD,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;;IAG/F,GAAG,GAAA;QACC,OAAO,IAAI,YAAY,CAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;;IAGpG,GAAG,GAAA;QACC,OAAO,IAAI,YAAY,CAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;;AAEvG;;ACnBD;AAEqB,MAAA,WAAmD,SAAQ,WAAqB,CAAA;AAEjG,IAAA,WAAA,CAAY,KAAY,EAAE,IAAgB,EAAE,YAA8B,EAAE,EAAA;AACxE,QAAA,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC;;IAGjC,KAAK,GAAA;QACD,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;;AAElG;;ACVoB,MAAA,aAAkD,SAAQ,WAA2B,CAAA;AAItG,IAAA,WAAA,CAAY,KAAY,EAAE,IAAgB,EAAE,YAA8B,EAAE,EAAA;AACxE,QAAA,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC;QAHvB,IAAK,CAAA,KAAA,GAAG,SAAS;;IAM3B,KAAK,GAAA;QACD,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;;AAGlG;;ACZoB,MAAA,UAA+C,SAAQ,gBAA6B,CAAA;AAIrG,IAAA,WAAA,CAAY,KAAY,EAAE,IAAgB,EAAE,YAA8B,EAAE,EAAA;AACxE,QAAA,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC;QAHvB,IAAK,CAAA,KAAA,GAAG,MAAM;;IAMxB,KAAK,GAAA;QACD,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;;AAGlG;;ACXoB,MAAA,YAAiD,SAAQ,gBAA+B,CAAA;AAIzG,IAAA,WAAA,CAAY,KAAY,EAAE,IAAgB,EAAE,YAA8B,EAAE,EAAA;AACxE,QAAA,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC;QAHvB,IAAK,CAAA,KAAA,GAAG,QAAQ;;IAM1B,KAAK,GAAA;QACD,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;;IAG/F,KAAK,GAAA;QACD,OAAO,IAAU,IAAI,CAAC,WAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;;IAG1G,KAAK,GAAA;QACD,OAAO,IAAU,IAAI,CAAC,WAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;;AAG1G,IAAA,QAAQ,CAAC,KAAa,EAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC;;AAGvC,IAAA,UAAU,CAAC,KAAa,EAAA;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;;AAGjC,IAAA,QAAQ,CAAC,KAAa,EAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;;AAGjC,IAAA,IAAI,CAAC,KAAa,EAAA;QACd,OAAO,IAAI,oBAAoB,CAAgB,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;;AAGvE,IAAA,OAAO,CAAC,KAAa,EAAA;QACjB,OAAO,IAAI,oBAAoB,CAAgB,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC;;AAE9E;;ACzCa,MAAO,iBAAiB,CAAA;AAElC,IAAA,WAAA,CACc,MAA4B,EAC5B,SAAmB,EACnB,OAAoD,EAAA;QAFpD,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAO,CAAA,OAAA,GAAP,OAAO;;AAGrB,IAAA,EAAE,CAAC,SAAkD,EAAA;AACjD,QAAA,OAAO,IAAI,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC;;AAE/C;;ACXa,MAAO,YAAY,CAAA;IAE7B,WACc,CAAA,UAAmD,EACnD,OAAkC,EAAA;QADlC,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAO,CAAA,OAAA,GAAP,OAAO;;AAGrB,IAAA,SAAS,CAAyC,KAAgB,EAAA;QAC9D,OAAO,IAAI,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC;;AAGtD,IAAA,QAAQ,CAAyC,KAAgB,EAAA;QAC7D,OAAO,IAAI,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;;AAGrD,IAAA,SAAS,CAAyC,KAAgB,EAAA;QAC9D,OAAO,IAAI,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC;;AAGtD,IAAA,QAAQ,CAAyC,KAAgB,EAAA;QAC7D,OAAO,IAAI,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;;AAExD;;ACpBa,MAAO,WAAW,CAAA;IAE5B,WACc,CAAA,eAA+B,EAC/B,OAAgB,EAAA;QADhB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAO,CAAA,OAAA,GAAP,OAAO;QAGX,IAAS,CAAA,SAAA,GAAG,KAAK;QAGjB,IAAW,CAAA,WAAA,GAA4B,EAAE;QACzC,IAAQ,CAAA,QAAA,GAA8B,EAAE;QACxC,IAAO,CAAA,OAAA,GAA4B,EAAE;QACrC,IAAU,CAAA,UAAA,GAAuD,EAAE;QACnE,IAAQ,CAAA,QAAA,GAA8B,EAAE;;AAGlD,IAAA,MAAM,CAAC,MAAc,EAAA;AACjB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,OAAO,IAAI;;AAGf,IAAA,KAAK,CAAC,KAAa,EAAA;AACf,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,OAAO,IAAI;;IAGf,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,OAAO,IAAI;;IAGf,KAAK,CAAC,GAAG,UAAmC,EAAA;AACxC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU;AAC7B,QAAA,OAAO,IAAI;;IAGf,OAAO,CAAC,GAAG,OAAkC,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AACvB,QAAA,OAAO,IAAI;;IAGf,MAAM,CAAC,GAAG,UAAmC,EAAA;AACzC,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU;AACzB,QAAA,OAAO,IAAI;;IAGf,OAAO,CAAC,GAAG,SAA6D,EAAA;AACpE,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,QAAA,OAAO,IAAI;;IAMf,MAAM,CAAC,GAAG,OAAkC,EAAA;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;AAExC;;AC7Da,MAAO,mBAAmB,CAAA;AAEpC,IAAA,WAAA,CACc,eAA+B,EAC/B,MAAa,EACb,WAAoC,EAAA;QAFpC,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAW,CAAA,WAAA,GAAX,WAAW;QAGf,IAAQ,CAAA,QAAA,GAA8B,EAAE;;AAIlD,IAAA,MAAM,CAAC,MAAuB,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;IAGrC,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;IAGrC,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAc,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;;AAE1E;;AC1Ba,MAAO,UAAU,CAAA;IAE3B,WACc,CAAA,eAA+B,EAC/B,MAAa,EAAA;QADb,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAM,CAAA,MAAA,GAAN,MAAM;QAKV,IAAQ,CAAA,QAAA,GAA8B,EAAE;;IAElD,KAAK,CAAC,GAAG,UAAmC,EAAA;AACxC,QAAA,OAAO,IAAI,mBAAmB,CAAgB,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC;;AAKhG,IAAA,MAAM,CAAC,KAAU,EAAA;AACb,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;IAGrC,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;AAGrC,IAAA,SAAS,CAAC,MAAuB,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;IAGrC,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAW,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;;AAGpE,IAAA,MAAM,CAAC,EAAM,EAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC;;IAG9D,MAAM,CAAC,EAAM,EAAE,MAAuB,EAAA;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC;;AAGpE,IAAA,GAAG,CAAC,EAAM,EAAA;QACN,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE;aACtD,IAAI,CAAC,CAAC,IAAc,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;;AAG1C,IAAA,QAAQ,CAAC,EAAM,EAAA;;AAEX,QAAA,IAAI,GAAG,GAAI,IAAI,CAAC,MAAc,CAAC,GAAG;AAClC,QAAA,IAAI,GAAG,YAAY,WAAW,EAAE;YAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;aAC1B;AACH,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAM,IAAI,CAAC,MAAc,CAAC,GAAG,CAA6B,CAAC,EAAE,CAAE,EAAU,CAAC,GAAG,CAAQ,CAAC,CAAC,CAAC;;;AAGhJ;;AChEa,MAAO,WAAW,CAAA;AAE5B,IAAA,WAAA,CAAsB,eAA+B,EAAA;QAA/B,IAAe,CAAA,eAAA,GAAf,eAAe;;AAMrC,IAAA,IAAI,CAAwH,MAAW,EAAE,MAAY,EAAE,MAAY,EAAA;QAC/J,IAAI,MAAM,IAAI,IAAI;AAAE,YAAA,OAAO,IAAI,WAAW,CAAgC,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;aACpH,IAAI,MAAM,IAAI,IAAI;AAAE,YAAA,OAAO,IAAI,WAAW,CAAuB,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7G,OAAO,IAAI,WAAW,CAAiB,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC;;AAG1E,IAAA,KAAK,CAAmD,KAAqC,EAAA;QACzF,OAAO,IAAI,UAAU,CAAoB,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;;AAE5E;;ACnBD,MAAe,UAAU,CAAA;AAErB,IAAA,WAAA,CAAsB,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM;;QAO5B,IAAI,CAAA,IAAA,GAAG,IAAI,WAAW,CAAe,IAAI,EAAE,GAAG,CAAC;;AAE/C,IAAA,SAAS,CAAyC,KAAgB,EAAA;QAC9D,OAAO,IAAI,iBAAiB,CAAmB,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC;;AAGxE,IAAA,QAAQ,CAAyC,KAAgB,EAAA;QAC7D,OAAO,IAAI,iBAAiB,CAAmB,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;;AAGvE,IAAA,SAAS,CAAyC,KAAgB,EAAA;QAC9D,OAAO,IAAI,iBAAiB,CAAmB,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC;;AAGxE,IAAA,QAAQ,CAAyC,KAAgB,EAAA;QAC7D,OAAO,IAAI,iBAAiB,CAAmB,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;;AAE1E;;AC/BK,SAAU,MAAM,CAAC,KAAU,EAAA;AAC/B,IAAA,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1B,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,KAAK,CAAC;AAC5F,IAAA,OAAO,MAAM;AACf;AAEM,SAAU,OAAO,CAAC,KAAU,EAAA;IAChC,IAAI,OAAO,KAAK,KAAK,SAAS;AAAE,QAAA,OAAO,KAAK;IAC5C,IAAI,KAAK,YAAY,OAAO;AAAE,QAAA,OAAO,KAAK,CAAC,OAAO,EAAE;IACpD,IAAI,KAAK,KAAK,MAAM;AAAE,QAAA,OAAO,IAAI;IACjC,IAAI,KAAK,KAAK,OAAO;AAAE,QAAA,OAAO,KAAK;AACnC,IAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,GAAG,KAAK,CAAC;AACrE;AAEM,SAAU,IAAI,CAAC,KAAU,EAAA;IAC7B,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAC;AACxC,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM;AAAE,QAAA,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC;IAChF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE;AACxD,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,KAAK,CAAC,CAAC;AAC9G,QAAA,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC;;AAExB,IAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,KAAK,CAAC;AAClE;AAEM,SAAU,MAAM,CAAC,KAAU,EAAA;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,QAAA,OAAO,KAAK;IAC3C,IAAI,KAAK,YAAY,MAAM;AAAE,QAAA,OAAO,KAAK,CAAC,OAAO,EAAE;AACnD,IAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,KAAK,CAAC;AACpE;;SCxBgB,oBAAoB,CAAC,cAAsC,EAAE,OAAyB,EAAE,MAAmB,EAAA;AAEvH,IAAA,OAAO,YAAY;IAEnB,SAAS,YAAY,CAAC,KAAU,EAAA;AAC5B,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ;AAAE,YAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;AAChE,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ;AAAE,YAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;AAChE,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ;AAAE,YAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;AAChE,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ;AAAE,YAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC;;IAG1D,SAAS,kBAAkB,CAAC,KAAU,EAAA;QAClC,IAAI,CAAC,GAAG,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;AACnD,QAAA,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC;AACzC,QAAA,OAAO,CAAC;;IAGZ,SAAS,kBAAkB,CAAC,KAAU,EAAA;AAClC,QAAA,IAAI,CAAC,GAAG,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO;QACxD,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;AACtD,QAAA,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC;AACzC,QAAA,OAAO,CAAC;;AAGZ,IAAA,SAAS,oBAAoB,CAAC,KAAU,EAAE,MAAW,EAAA;AACjD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,IAAG;AACxC,YAAA,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AACvB,YAAA,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC;AACvB,YAAA,OAAO,iBAAiB,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;AAC1E,SAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGjB,SAAS,kBAAkB,CAAC,KAAU,EAAA;QAClC,IAAI,KAAK,GAAU,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;QACjF,IAAI,MAAM,GAAgB,KAAK,CAAC,MAAM,CAAC,CAAC,GAAgB,EAAE,IAAI,KAAI;AAC9D,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAAE,YAAA,OAAO,GAAG;AAC9D,SAAC,EAAE,IAAI,GAAG,EAAU,CAAC;QACrB,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;AAEpC,QAAA,IAAI,CAAC,GAAG,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG;AACzD,QAAA,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG;AACjF,QAAA,CAAC,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS;AAClC,QAAA,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;AAC7D,aAAA,GAAG,CAAC,CAAC,GAAW,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAErD,QAAA,CAAC,IAAI,4BAA4B,CAAC,KAAK,CAAC;AACxC,QAAA,OAAO,CAAC;;IAIZ,SAAS,4BAA4B,CAAC,KAAU,EAAA;AAC5C,QAAA,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;YAC9E,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE;YACvE,OAAO,aAAa,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;;AAE9D,QAAA,OAAO,EAAE;;AAGb,IAAA,SAAS,iBAAiB,CAAC,KAAU,EAAE,MAAW,EAAE,IAAc,EAAA;AAC9D,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAG;AAClB,YAAA,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AACvB,YAAA,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC;AACvB,YAAA,OAAO,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;AACtC,SAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGjB,SAAS,kBAAkB,CAAC,KAAU,EAAA;QAClC,IAAI,CAAC,GAAG,SAAS;AACjB,QAAA,IAAI,KAAK,CAAC,SAAS,EAAE;YACjB,CAAC,IAAI,WAAW;;AAGpB,QAAA,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACvD,CAAC,IAAI,GAAG;;aACL;YACH,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAW,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG9E,QAAA,CAAC,IAAI,OAAO,CAAC,SAAS,GAAG,OAAO;AAChC,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;AACf,YAAA,CAAC,IAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;aACvG;AACH,YAAA,CAAC,IAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;;AAGlC,QAAA,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC;AAEzC,QAAA,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,YAAA,CAAC,IAAI,OAAO,CAAC,SAAS,GAAG,WAAW;YACpC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAW,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;QAE9E,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC;AAE/C,QAAA,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,YAAA,CAAC,IAAI,OAAO,CAAC,SAAS,GAAG,WAAW;YACpC,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,QAAa,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;AAEtF,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;AACtB,YAAA,CAAC,IAAI,OAAO,CAAC,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;;AAE5D,QAAA,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE;AACvB,YAAA,CAAC,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;;AAE9D,QAAA,OAAO,CAAC;;AAGZ,IAAA,SAAS,iBAAiB,CAAC,UAAiB,EAAE,OAAO,GAAG,OAAO,EAAA;QAC3D,IAAI,CAAC,GAAG,EAAE;QACV,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,CAAC,IAAI,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,GAAG;YACtC,oBAAoB,CAAC,UAAU,CAAC;YAChC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,IAAI,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;;AAErF,QAAA,OAAO,CAAC;;IAGZ,SAAS,WAAW,CAAC,SAAc,EAAA;QAC/B,IAAI,KAAK,GAAU,EAAE;QACrB,OAAO,SAAS,EAAE;AACd,YAAA,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AACrB,YAAA,SAAS,GAAG,SAAS,CAAC,OAAO;;QAGjC,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC;AAE1B,QAAA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAG,CAAC,EAAE;YAC1C,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;YAC3B,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;YACjC,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU;YACvC,IAAI,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC;AACjD,YAAA,CAAC,IAAI,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,GAAG,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,MAAM;AACvE,gBAAA,sBAAsB,CAAC,SAAS,EAAE,KAAK,CAAC;;AAGhD,QAAA,OAAO,CAAC;;IAGZ,SAAS,eAAe,CAAC,QAAa,EAAA;AAClC,QAAA,IAAI,QAAQ,CAAC,OAAO,EAAE;YAClB,IAAI,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;YAEvC,IAAI,QAAQ,CAAC,cAAc,IAAI,IAAI,EAAE;gBACjC,CAAC,IAAI,WAAW,IAAI,QAAQ,CAAC,cAAc,KAAK,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC;;AAGxF,YAAA,IAAI,QAAQ,CAAC,UAAU,KAAK,KAAK;gBAAE,CAAC,IAAI,MAAM;AAC9C,YAAA,IAAI,QAAQ,CAAC,UAAU,KAAK,MAAM;gBAAE,CAAC,IAAI,OAAO;AAEhD,YAAA,OAAO,CAAC;;aACL;AACH,YAAA,OAAO,aAAa,CAAC,QAAQ,CAAC;;;IAItC,SAAS,YAAY,CAAC,KAAU,EAAA;QAC5B,OAAO,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU;;IAGjE,SAAS,aAAa,CAAC,MAAW,EAAA;QAC9B,IAAI,CAAC,GAAG,EAAE;AACV,QAAA,IAAI,EAAE,MAAM,CAAC,KAAK,KAAK,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE;YAClG,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG;;AAE1C,QAAA,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC;AAC9B,QAAA,OAAO,sBAAsB,CAAC,CAAC,EAAE,MAAM,CAAC;;AAG5C,IAAA,SAAS,sBAAsB,CAAC,CAAS,EAAE,MAAW,EAAA;AAClD,QAAA,IAAI,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAa,KAAI;AACxC,gBAAA,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI;gBACxB,IAAI,IAAI,KAAK,OAAO;AAAE,oBAAA,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,GAAG;qBACvC,IAAI,IAAI,KAAK,OAAO;AAAE,oBAAA,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,GAAG;qBAC5C,IAAI,IAAI,KAAK,OAAO;AAAE,oBAAA,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,GAAG;qBAC5C,IAAI,IAAI,KAAK,KAAK;AAAE,oBAAA,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,GAAG;qBACxC,IAAI,IAAI,KAAK,KAAK;AAAE,oBAAA,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,GAAG;qBACxC,IAAI,IAAI,KAAK,KAAK;AAAE,oBAAA,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,GAAG;qBACxC,IAAI,IAAI,KAAK,KAAK;AAAE,oBAAA,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,GAAG;qBACxC,IAAI,IAAI,KAAK,IAAI;AAAE,oBAAA,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU;AACtG,aAAC,CAAC;;QAEN,OAAO,CAAC,GAAG,EAAE;;IAGjB,SAAS,iBAAiB,CAAC,MAAW,EAAA;AAClC,QAAA,IAAI,MAAM,CAAC,KAAK,KAAK,GAAG;YAAE,OAAO,MAAM,CAAC,KAAK;QAC7C,IAAI,IAAI,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI;QAC9E,OAAO,OAAO,CAAC,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU;;IAGzD,SAAS,oBAAoB,CAAC,UAAiB,EAAA;AAC3C,QAAA,UAAU,CAAC,OAAO,CAAC,SAAS,IAAG;YAC3B,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE;AAC7C,gBAAA,SAAS,CAAC,YAAY,GAAG,IAAI;;YAEjC,gBAAgB,CAAC,SAAS,CAAC;AAC/B,SAAC,CAAC;;;IAIN,SAAS,gBAAgB,CAAC,SAAc,EAAA;AACpC,QAAA,IAAI,SAAS,CAAC,QAAQ,EAAE;AACpB,YAAA,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC;;QAExC,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC1C,YAAA,SAAS,CAAC,OAAO,GAAG,iBAAiB,CAAC,SAAS,CAAC;;AAEpD,QAAA,IAAI,SAAS,CAAC,MAAM,EAAE;AAClB,YAAA,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC;;;AAI1C,IAAA,SAAS,gBAAgB,CAAC,SAAc,EAAE,IAAI,GAAG,KAAK,EAAA;QAClD,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YAC1C,OAAO,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC;;QAG/D,IAAI,CAAC,GAAG,EAAE;AACV,QAAA,IAAI,SAAS,CAAC,MAAM,EAAE;AAClB,YAAA,CAAC,IAAI,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC;;AAE3C,QAAA,IAAI,SAAS,CAAC,QAAQ,EAAE;YACpB,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,CAAC;;AAEvG,QAAA,IAAI,SAAS,CAAC,YAAY,KAAK,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,CAAC,EAAE;AAChF,YAAA,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI;;AAEvB,QAAA,IAAI,SAAS,CAAC,SAAS,EAAE;AACrB,YAAA,CAAC,GAAG,MAAM,GAAG,CAAC;;AAElB,QAAA,OAAO,CAAC;;AAGZ,IAAA,SAAS,sBAAsB,CAAC,SAAc,EAAE,KAAa,EAAA;QACzD,IAAI,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC;AACxC,QAAA,CAAC,IAAI,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC;AACzC,QAAA,OAAO,CAAC;;AAGZ,IAAA,SAAS,kBAAkB,CAAC,SAAc,EAAE,KAAa,EAAA;AACrD,QAAA,QAAQ,SAAS,CAAC,KAAK;AACnB,YAAA,KAAK,IAAI,EAAE,OAAO,KAAK,GAAG,KAAK;AAC/B,YAAA,KAAK,IAAI,EAAE,OAAO,MAAM,GAAG,KAAK;AAChC,YAAA,KAAK,IAAI,EAAE,OAAO,KAAK,GAAG,KAAK;AAC/B,YAAA,KAAK,IAAI,EAAE,OAAO,KAAK,GAAG,KAAK;AAC/B,YAAA,KAAK,KAAK,EAAE,OAAO,MAAM,GAAG,KAAK;AACjC,YAAA,KAAK,KAAK,EAAE,OAAO,MAAM,GAAG,KAAK;AACjC,YAAA,KAAK,SAAS,EAAE,OAAO,UAAU;AACjC,YAAA,KAAK,aAAa,EAAE,OAAO,cAAc;AACzC,YAAA,KAAK,MAAM,EAAE,OAAO,QAAQ,GAAG,KAAK;AACpC,YAAA,KAAK,UAAU,EAAE,OAAO,YAAY,GAAG,KAAK;YAC5C,KAAK,IAAI,EAAE,OAAO,OAAO,GAAG,KAAK,GAAG,GAAG;YACvC,KAAK,QAAQ,EAAE,OAAO,WAAW,GAAG,KAAK,GAAG,GAAG;AAC/C,YAAA,KAAK,SAAS,EAAE,OAAO,WAAW,GAAG,KAAK;AAC1C,YAAA,KAAK,aAAa,EAAE,OAAO,eAAe,GAAG,KAAK;AAClD,YAAA,SAAS,OAAO,EAAE;;;IAI1B,SAAS,iBAAiB,CAAC,SAAc,EAAA;QACrC,IAAI,KAAK,GAAG,EAAE;AACd,QAAA,IAAI,SAAS,CAAC,YAAY,EAAE;AACxB,YAAA,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC;;aAC1C;AACH,YAAA,IAAI,aAAa,GAAG,CAAC,KAAU,KAAK,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;AAE1E,YAAA,IAAI,SAAS,CAAC,KAAK,KAAK,IAAI,IAAI,SAAS,CAAC,KAAK,KAAK,QAAQ,EAAE;gBAC1D,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAU,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;AAC3E,iBAAA,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,aAAa,EAAE;gBAC3E,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;;AACxF,iBAAA,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,aAAa,EAAE;gBAC3E,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;;;AAGnD,QAAA,OAAO,KAAK;;AAGhB,IAAA,SAAS,YAAY,CAAC,MAAW,EAAE,KAAU,EAAA;QACzC,IAAI,KAAK,IAAI,IAAI;AAAE,YAAA,OAAO,MAAM;QAChC,OAAO,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;;AAG7D,IAAA,SAAS,aAAa,CAAC,IAAY,EAAE,KAAU,EAAA;QAC3C,IAAI,IAAI,KAAK,QAAQ;AAAE,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC;aACtC,IAAI,IAAI,KAAK,SAAS;AAAE,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC;aAC7C,IAAI,IAAI,KAAK,MAAM;AAAE,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC;aACvC,IAAI,IAAI,KAAK,QAAQ;AAAE,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC;AAChD,QAAA,OAAO,KAAK;;AAEpB;;ACvSM,SAAU,wBAAwB,CAAC,KAAU,EAAA;IAC/C,IAAI,KAAK,IAAI,IAAI;AAAE,QAAA,OAAO,MAAM;IAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE;AACtD,QAAA,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG;;SACxB,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,YAAY,OAAO,EAAE;AAC/D,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;;AAC/B,SAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AAC9B,QAAA,OAAO,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG;;SAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE;AAC7D,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;;IAExB,OAAO,CAAA,CAAA,EAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG;AACvC;AAEA;AACA;AACM,SAAU,mBAAmB,CAAC,KAAU,EAAA;AAC1C,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,YAAY,MAAM,IAAI,KAAK,YAAY,MAAM;QAClG,KAAK,YAAY,OAAO,IAAI,KAAK,YAAY,IAAI,CAAC,EAAE;AACpD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;AAEhC,IAAA,OAAO,KAAK;AAChB;;AClBA,IAAI,gBAAgB,GAAG,CAAC,KAAa,KAAK,GAAG,GAAG,KAAK;AACrD,IAAI,mBAAmB,GAAG,CAAC,KAAa,KAAK,GAAG;AAEhD,SAAS,kBAAkB,CAAC,KAAU,EAAE,MAAa,EAAE,cAAsC,EAAA;IACzF,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACvC,IAAA,OAAO,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC;AACxC;SAEgB,8BAA8B,CAAC,KAAU,EAAE,OAAyB,EAAE,MAAmB,EAAA;IACrG,IAAI,MAAM,GAAU,EAAE;AAEtB,IAAA,IAAI,cAAc,GAAG,MAAM,KAAK,OAAO,GAAG,mBAAmB,GAAG,gBAAgB;IAChF,IAAI,GAAG,GAAG,oBAAoB,CAAC,CAAC,KAAU,KAAK,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC;AAEzH,IAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE;AAC1B;;SCfgB,iBAAiB,CAAC,KAAU,EAAE,OAAyB,EAAE,MAAmB,EAAA;AACxF,IAAA,OAAO,oBAAoB,CAAC,CAAC,KAAU,KAAK,wBAAwB,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC;AACxG;;ACEA,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAEvC;AAUD,MAAM,eAAe,GAA0B;AAC7C,IAAA,UAAU,EAAE,KAAK;AACjB,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,eAAe,EAAE;CAClB;AAED,SAAS,aAAa,CAAC,KAAU,EAAE,IAAS,EAAA;AAC1C,IAAA,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;AAC7C,QAAA,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;QAC1B,IAAI,KAAK,IAAI,GAAG;AAAE,YAAA,OAAO,IAAI;QAC7B,IAAI,KAAK,IAAI,GAAG;AAAE,YAAA,OAAO,KAAK;AAC9B,QAAA,OAAO,IAAI;;AACN,SAAA,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,EAAE;AAC/B,QAAA,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;AAC1B,QAAA,OAAO,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;IAEjD,OAAO,IAAI,EAAE;AACf;AAEM,SAAU,oBAAoB,CAAC,MAAW,EAAE,QAAkC,GAAA,EAAE,EAAE,MAAA,GAAsB,IAAI,EAAA;AAEhH,IAAA,IAAI,OAAO,GAA0B,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC;AAEjF,IAAA,IAAI,YAAY,GAAqB;QACnC,SAAS,EAAE,OAAO,CAAC,UAAU,GAAG,IAAI,GAAG,GAAG;AAC1C,QAAA,UAAU,EAAE,QAAQ,CAAC,eAAe,KAAK,MAAM,KAAK,OAAO,GAAG,GAAG,GAAG,GAAG;KACxE;;;;;;;;;;;;;;;;;;;;;;IA0BD,OAAO,CAAC,KAAU,KAAI;AACpB,QAAA,IAAI,OAAO,CAAC,aAAa,EAAE;AACzB,YAAA,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,8BAA8B,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC;;YAEjF,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;;;;aAG3B;YACL,IAAI,GAAG,GAAG,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC;;YAExD,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC;;;;AAIvC,KAAC;AACH;;ACrFqB,MAAA,gBAAiB,SAAQ,WAAW,CAAA;IAErD,WAAY,CAAA,MAAW,EAAE,OAAA,GAAiC,EAAE,EAAA;QACxD,KAAK,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;;AAE5D;;ACRD;;ACAA;;AAEG;;;;"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taon-type-sql/browser",
3
- "version": "19.0.31",
3
+ "version": "19.0.32",
4
4
  "module": "fesm2022/taon-type-sql.mjs",
5
5
  "typings": "index.d.ts",
6
6
  "exports": {
@@ -1,4 +1,4 @@
1
1
  export declare const BUILD_FRAMEWORK_CLI_NAME = "tnp";
2
2
  export declare const APP_ID = "com.domain.example.taon-type-sql";
3
3
  export declare const PROJECT_NPM_NAME = "taon-type-sql";
4
- export declare const CURRENT_PACKAGE_VERSION = "19.0.31";
4
+ export declare const CURRENT_PACKAGE_VERSION = "19.0.32";
@@ -5,6 +5,6 @@ exports.CURRENT_PACKAGE_VERSION = exports.PROJECT_NPM_NAME = exports.APP_ID = ex
5
5
  exports.BUILD_FRAMEWORK_CLI_NAME = 'tnp';
6
6
  exports.APP_ID = 'com.domain.example.taon-type-sql';
7
7
  exports.PROJECT_NPM_NAME = 'taon-type-sql';
8
- exports.CURRENT_PACKAGE_VERSION = '19.0.31';
8
+ exports.CURRENT_PACKAGE_VERSION = '19.0.32';
9
9
  // THIS FILE IS GENERATED - DO NOT MODIFY
10
10
  //# sourceMappingURL=build-info._auto-generated_.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generics-helper.js","sourceRoot":"","sources":[""],"names":[],"mappings":";;AACA,iJAAiJ;AACjJ,MAAqB,cAAc;CAAM;AAAzC,iCAAyC"}
1
+ {"version":3,"file":"generics-helper.js","sourceRoot":"","sources":[""],"names":[],"mappings":";;AAAA,iJAAiJ;AACjJ,MAAqB,cAAc;CAAM;AAAzC,iCAAyC"}
@@ -1 +1 @@
1
- {"version":3,"file":"internal-types.js","sourceRoot":"","sources":[""],"names":[],"mappings":";AACA,SAAS"}
1
+ {"version":3,"file":"internal-types.js","sourceRoot":"","sources":[""],"names":[],"mappings":";AAAA,SAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"param-converter.js","sourceRoot":"","sources":[""],"names":[],"mappings":";;AACA,4DAYC;AAID,kDAMC;AAtBD,SAAgB,wBAAwB,CAAC,KAAU;IAC/C,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,MAAM,CAAC;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;QACvD,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;IAChC,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;QAChE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACvC,CAAC;SAAM,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC/B,OAAO,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;IACtC,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;QAC9D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;AACxC,CAAC;AAED,kFAAkF;AAClF,oEAAoE;AACpE,SAAgB,mBAAmB,CAAC,KAAU;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,YAAY,MAAM,IAAI,KAAK,YAAY,MAAM;QAClG,KAAK,YAAY,OAAO,IAAI,KAAK,YAAY,IAAI,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"param-converter.js","sourceRoot":"","sources":[""],"names":[],"mappings":";;AAAA,4DAYC;AAID,kDAMC;AAtBD,SAAgB,wBAAwB,CAAC,KAAU;IAC/C,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,MAAM,CAAC;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;QACvD,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;IAChC,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;QAChE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACvC,CAAC;SAAM,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC/B,OAAO,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;IACtC,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;QAC9D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;AACxC,CAAC;AAED,kFAAkF;AAClF,oEAAoE;AACpE,SAAgB,mBAAmB,CAAC,KAAU;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,YAAY,MAAM,IAAI,KAAK,YAAY,MAAM;QAClG,KAAK,YAAY,OAAO,IAAI,KAAK,YAAY,IAAI,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"type-converter.js","sourceRoot":"","sources":[""],"names":[],"mappings":";;AACA,wBAIC;AAED,0BAMC;AAED,oBAQC;AAED,wBAIC;AA5BD,SAAgB,MAAM,CAAC,KAAU;IAC/B,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,KAAK,CAAC,CAAC;IAC7F,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,OAAO,CAAC,KAAU;IAChC,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,KAAK,YAAY,OAAO;QAAE,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;IACrD,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,IAAI,KAAK,CAAC,0CAA0C,GAAG,KAAK,CAAC,CAAC;AACtE,CAAC;AAED,SAAgB,IAAI,CAAC,KAAU;IAC7B,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAC,CAAC,aAAa;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM;QAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACjF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;QACzD,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,KAAK,CAAC,CAAC,CAAC,aAAa;QAC5H,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,SAAgB,MAAM,CAAC,KAAU;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,YAAY,MAAM;QAAE,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;IACpD,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,KAAK,CAAC,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"type-converter.js","sourceRoot":"","sources":[""],"names":[],"mappings":";;AAAA,wBAIC;AAED,0BAMC;AAED,oBAQC;AAED,wBAIC;AA5BD,SAAgB,MAAM,CAAC,KAAU;IAC/B,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,KAAK,CAAC,CAAC;IAC7F,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,OAAO,CAAC,KAAU;IAChC,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,KAAK,YAAY,OAAO;QAAE,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;IACrD,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,IAAI,KAAK,CAAC,0CAA0C,GAAG,KAAK,CAAC,CAAC;AACtE,CAAC;AAED,SAAgB,IAAI,CAAC,KAAU;IAC7B,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAC,CAAC,aAAa;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM;QAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACjF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;QACzD,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,KAAK,CAAC,CAAC,CAAC,aAAa;QAC5H,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,SAAgB,MAAM,CAAC,KAAU;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,YAAY,MAAM;QAAE,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;IACpD,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,KAAK,CAAC,CAAC;AACrE,CAAC"}
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":[""],"names":[],"mappings":";AACA,WAAW;;;AAEX,8DAAuE;AAA9D,2GAAA,OAAO,OAAe;AAC/B,kEAA2E;AAAlE,+GAAA,OAAO,OAAiB;AACjC,wEAAiF;AAAxE,qHAAA,OAAO,OAAoB;AACpC,4DAAqE;AAA5D,yGAAA,OAAO,OAAc;AAC9B,gEAAyE;AAAhE,6GAAA,OAAO,OAAgB;AAChC,8DAAuE;AAA9D,2GAAA,OAAO,OAAe;AAC/B,gEAAyE;AAAhE,6GAAA,OAAO,OAAgB;AAChC,8DAAuE;AAA9D,2GAAA,OAAO,OAAe;AAE/B,qFAA6F;AAApF,8HAAA,OAAO,OAAwB;AACxC,uEAAgF;AAAvE,iHAAA,OAAO,OAAkB;AAClC,mFAA2F;AAAlF,4HAAA,OAAO,OAAuB;AACvC,iFAAyF;AAAhF,0HAAA,OAAO,OAAsB;AAEtC,8DAAuE;AAA9D,6GAAA,OAAO,OAAgB;AAChC,0EAAkF;AAAzE,wHAAA,OAAO,OAAqB;AAErC,iEAA0E;AAAjE,+GAAA,OAAO,OAAiB;AAEjC,6DAAsE;AAA7D,2GAAA,OAAO,OAAe;AAC/B,2DAAoE;AAA3D,yGAAA,OAAO,OAAc;AAC9B,+EAAuF;AAA9E,4HAAA,OAAO,OAAuB;AAEvC,uDAAgE;AAAvD,2GAAA,OAAO,OAAe;AAC/B,qDAA8D;AAArD,yGAAA,OAAO,OAAc;AAE9B,UAAU;AAEV,wCAA6D;AAApD,yGAAA,OAAO,OAAoB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":[""],"names":[],"mappings":";AAAA,WAAW;;;AAEX,8DAAuE;AAA9D,2GAAA,OAAO,OAAe;AAC/B,kEAA2E;AAAlE,+GAAA,OAAO,OAAiB;AACjC,wEAAiF;AAAxE,qHAAA,OAAO,OAAoB;AACpC,4DAAqE;AAA5D,yGAAA,OAAO,OAAc;AAC9B,gEAAyE;AAAhE,6GAAA,OAAO,OAAgB;AAChC,8DAAuE;AAA9D,2GAAA,OAAO,OAAe;AAC/B,gEAAyE;AAAhE,6GAAA,OAAO,OAAgB;AAChC,8DAAuE;AAA9D,2GAAA,OAAO,OAAe;AAE/B,qFAA6F;AAApF,8HAAA,OAAO,OAAwB;AACxC,uEAAgF;AAAvE,iHAAA,OAAO,OAAkB;AAClC,mFAA2F;AAAlF,4HAAA,OAAO,OAAuB;AACvC,iFAAyF;AAAhF,0HAAA,OAAO,OAAsB;AAEtC,8DAAuE;AAA9D,6GAAA,OAAO,OAAgB;AAChC,0EAAkF;AAAzE,wHAAA,OAAO,OAAqB;AAErC,iEAA0E;AAAjE,+GAAA,OAAO,OAAiB;AAEjC,6DAAsE;AAA7D,2GAAA,OAAO,OAAe;AAC/B,2DAAoE;AAA3D,yGAAA,OAAO,OAAc;AAC9B,+EAAuF;AAA9E,4HAAA,OAAO,OAAuB;AAEvC,uDAAgE;AAAvD,2GAAA,OAAO,OAAe;AAC/B,qDAA8D;AAArD,yGAAA,OAAO,OAAc;AAE9B,UAAU;AAEV,wCAA6D;AAApD,yGAAA,OAAO,OAAoB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taon-type-sql",
3
- "version": "19.0.31",
3
+ "version": "19.0.32",
4
4
  "scripts": {
5
5
  "taon init": "taon init",
6
6
  "taon start": "taon start",
@@ -0,0 +1,39 @@
1
+ {
2
+ "website": {
3
+ "domain": "taon-type-sql.example.domain.com",
4
+ "title": "Taon Type Sql"
5
+ },
6
+ "paths": {},
7
+ "config": {},
8
+ "container": {
9
+ "only": []
10
+ },
11
+ "ports": {},
12
+ "init": {},
13
+ "build": {
14
+ "pwa": {},
15
+ "watch": false
16
+ },
17
+ "loading": {
18
+ "preAngularBootstrap": {},
19
+ "afterAngularBootstrap": {}
20
+ },
21
+ "release": {
22
+ "cli": {},
23
+ "lib": {},
24
+ "autoReleaseUsingConfig": true,
25
+ "releaseVersionBumpType": "patch",
26
+ "releaseType": "manual",
27
+ "targetArtifact": "npm-lib-and-cli-tool",
28
+ "envName": "__",
29
+ "resolvedNewVersion": "19.0.21"
30
+ },
31
+ "copyToManager": {},
32
+ "buildInfo": {
33
+ "date": "2025-05-29T20:31:41.000Z",
34
+ "hash": "b02fe29ab28bf4bdf83c3abb37c06df4b95dc5a4"
35
+ },
36
+ "currentProjectName": "taon-type-sql",
37
+ "currentProjectType": "isomorphic-lib",
38
+ "pathsTsconfig": "\"paths\": {\"@lib\":[\"./src/lib\"],\"@lib/*\":[\"./src/lib/*\"],\"taon-type-sql/src\":[\"./src/lib\"],\"taon-type-sql/src/*\":[\"./src/lib/*\"]},"
39
+ }
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":["import QueryTable from \"../query-table\";\nimport QueryConditionChain from \"./query-condition-chain\";\n\n// TODO I had to copy-paste the method implementations to every child class to avoid circular dependencies\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","import 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 // TODO how to call this\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","import 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","import 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","import 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","import 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","import 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","import 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 // min/max exists for text columns too, not just numeric and date\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","import 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","import QueryTable from \"../query-table\";\nimport QueryColumn from \"./query-column\";\nimport NumberColumn from \"./number-column\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n// This file is only needed because the QueryColumn can't implement its count method b. of circular dependencies\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","import 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","import 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","import 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","import 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","import 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","import 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","import 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","import 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 // TODO remove assertions if $id typing is fixed\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","import 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","import 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 // abstract readonly $id; // FIXME I got a dozen incomprehensible type errors\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","\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","import { 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 // this is only needed, so that the $1, $2... numbering is not reversed\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","\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// node mysql doesn't have an typeCast equivalent solution for the other direction\n// node-postgres: https://github.com/brianc/node-postgres/issues/442\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","import {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","import {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","import { 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 // Level.__NOTHING\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 // function processSql(query: any, sql: string, params: any[] | undefined, callback: any): Promise<any> {\n // if (options.logging) log.i(sql);\n // if (options.logger) options.logger(sql, params);\n\n // return new Promise((resolve, reject) => {\n // callback(sql, params, (err: any, result: any) => {\n // if (err) reject(err);\n // else resolve(convertResult(query, result, engine));\n // });\n // });\n // }\n\n // function executeSql(sql: string, params: any[] | undefined, cb: any) {\n // if (engine === 'pg') {\n // client.query(sql, params || cb, params ? cb : undefined);\n // } else if (engine === 'mysql') {\n // client.query({\n // sql,\n // values: params,\n // typeCast: mySqlTypeCast\n // }, cb);\n // } else throw new Error('Unknown DB engine: ' + engine);\n // }\n\n return (query: any) => {\n if (options.parameterized) {\n let { sql, params } = convertQueryToParameterizedSQL(query, queryOptions, engine);\n // if (Helpers.isWebSQL || Helpers.isNode) {\n return client.query(sql, params);\n // }\n // return processSql(query, sql, params, (sql: string, params: any[], cb: any) => executeSql(sql, params, cb));\n } else {\n let sql = convertQueryToSQL(query, queryOptions, engine);\n // if (Helpers.isWebSQL || Helpers.isNode) {\n return client.query(sql, undefined);\n // }\n // return processSql(query, sql, undefined, (sql: string, params: undefined, cb: any) => executeSql(sql, undefined, cb));\n }\n };\n}\n\n","import 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// Builder:\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// Client:\n\nexport { default as MySqlQuerySource } from './client/mysql';\n// export { default as PgQuerySource } from './client/pg';\n\nexport { QueryProcessorOptions } from './client/query-processor';\n\n\nexport type PropsEntitySQL<IEntityType> = { [prop in keyof Required<IEntityType>]: any; }\n","/**\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":["import QueryTable from \"../query-table\";\nimport QueryConditionChain from \"./query-condition-chain\";\n\n// TODO I had to copy-paste the method implementations to every child class to avoid circular dependencies\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;","import 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 // TODO how to call this\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}","import 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}","import 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;","import 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}","import 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}","import 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;","import 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 // min/max exists for text columns too, not just numeric and date\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;","import 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}","import QueryTable from \"../query-table\";\nimport QueryColumn from \"./query-column\";\nimport NumberColumn from \"./number-column\";\nimport {ColumnModifier, ColumnName} from \"../helpers/internal-types\";\n\n// This file is only needed because the QueryColumn can't implement its count method b. of circular dependencies\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}","import 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}","import 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}","import 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}","import 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}","import 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}","import 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}","import 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}","import 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 // TODO remove assertions if $id typing is fixed\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}","import 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}","import 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 // abstract readonly $id; // FIXME I got a dozen incomprehensible type errors\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;","export 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}","import { 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 // this is only needed, so that the $1, $2... numbering is not reversed\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}","export 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// node mysql doesn't have an typeCast equivalent solution for the other direction\n// node-postgres: https://github.com/brianc/node-postgres/issues/442\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}","import {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}","import {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}","import { 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 // Level.__NOTHING\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 // function processSql(query: any, sql: string, params: any[] | undefined, callback: any): Promise<any> {\n // if (options.logging) log.i(sql);\n // if (options.logger) options.logger(sql, params);\n\n // return new Promise((resolve, reject) => {\n // callback(sql, params, (err: any, result: any) => {\n // if (err) reject(err);\n // else resolve(convertResult(query, result, engine));\n // });\n // });\n // }\n\n // function executeSql(sql: string, params: any[] | undefined, cb: any) {\n // if (engine === 'pg') {\n // client.query(sql, params || cb, params ? cb : undefined);\n // } else if (engine === 'mysql') {\n // client.query({\n // sql,\n // values: params,\n // typeCast: mySqlTypeCast\n // }, cb);\n // } else throw new Error('Unknown DB engine: ' + engine);\n // }\n\n return (query: any) => {\n if (options.parameterized) {\n let { sql, params } = convertQueryToParameterizedSQL(query, queryOptions, engine);\n // if (Helpers.isWebSQL || Helpers.isNode) {\n return client.query(sql, params);\n // }\n // return processSql(query, sql, params, (sql: string, params: any[], cb: any) => executeSql(sql, params, cb));\n } else {\n let sql = convertQueryToSQL(query, queryOptions, engine);\n // if (Helpers.isWebSQL || Helpers.isNode) {\n return client.query(sql, undefined);\n // }\n // return processSql(query, sql, undefined, (sql: string, params: undefined, cb: any) => executeSql(sql, undefined, cb));\n }\n };\n}","import 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}","// Builder:\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// Client:\n\nexport { default as MySqlQuerySource } from './client/mysql';\n// export { default as PgQuerySource } from './client/pg';\n\nexport { QueryProcessorOptions } from './client/query-processor';\n\n\nexport type PropsEntitySQL<IEntityType> = { [prop in keyof Required<IEntityType>]: any; }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;AAGA;AAEA,MAAe,cAAc,CAAA;AAK5B;;ACJoB,MAAA,mBAAwD,SAAQ,cAAqB,CAAA;AAUtG,IAAA,WAAA,CAAY,OAA4B,EAAE,KAA0B,EAAE,SAA6B,EAAA;AAC/F,QAAA,KAAK,EAAE;QAJD,IAAY,CAAA,YAAA,GAAG,KAAK;QACpB,IAAS,CAAA,SAAA,GAAG,KAAK;AAIvB,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;;;IAI/B,CAAC,GAAA;AACG,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,OAAO,IAAI;;IAGf,GAAG,GAAA;AACC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,OAAO,IAAI;;AAGf,IAAA,GAAG,CAAsC,SAAiC,EAAA;QACtE,OAAO,IAAI,mBAAmB,CAAiB,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC;;AAG1E,IAAA,EAAE,CAAsC,SAAiC,EAAA;QACrE,OAAO,IAAI,mBAAmB,CAAiB,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC;;AAE5E;;AClCoB,MAAA,oBAA4D,SAAQ,cAAqB,CAAA;AAM1G,IAAA,WAAA,CAAY,MAA6B,EAAE,IAAmB,EAAE,GAAG,MAAW,EAAA;AAC1E,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;;AAGzB,IAAA,GAAG,CAAsC,SAAiC,EAAA;QACtE,OAAO,IAAI,mBAAmB,CAAiB,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC;;AAG1E,IAAA,EAAE,CAAsC,SAAiC,EAAA;QACrE,OAAO,IAAI,mBAAmB,CAAiB,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC;;AAE5E;;ACpBD,MAAe,WAAW,CAAA;AAKtB,IAAA,WAAA,CACc,MAAa,EACb,KAAiB,EACjB,aAA+B,EAAE,EAAA;QAFjC,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAU,CAAA,UAAA,GAAV,UAAU;;AAKxB,IAAA,EAAE,CAAC,KAAa,EAAA;AACZ,QAAA,OAAO,IAAU,IAAI,CAAC,WAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;;IAGtH,MAAM,GAAA;AACF,QAAA,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,SAAS,CAAC;;IAG9D,SAAS,GAAA;AACL,QAAA,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,aAAa,CAAC;;AAErE;;AC3Ba,MAAO,aAAa,CAAA;IAM9B,WAAY,CAAA,MAA+B,EAAE,SAAyB,EAAA;AAClE,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;;IAG/B,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO;AAC7B,QAAA,OAAO,IAAI;;IAGf,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM;AAC5B,QAAA,OAAO,IAAI;;AAGlB;;ACnBoB,MAAA,kBAAgG,SAAQ,cAA+B,CAAA;AAMxJ,IAAA,WAAA,CAAY,MAA8B,EAAE,IAAY,EAAE,WAAmC,EAAA;AACzF,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW;;AAGnC,IAAA,GAAG,CAAsC,SAAiC,EAAA;QACtE,OAAO,IAAI,mBAAmB,CAA2B,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC;;AAGpF,IAAA,EAAE,CAAsC,SAAiC,EAAA;QACrE,OAAO,IAAI,mBAAmB,CAA2B,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC;;AAEtF;;ACjBD,MAAe,WAAmD,SAAQ,WAAqB,CAAA;AAE3F,IAAA,WAAA,CAAY,KAAY,EAAE,IAAgB,EAAE,YAA8B,EAAE,EAAA;AACxE,QAAA,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC;;IAGjC,GAAG,GAAA;AACC,QAAA,OAAO,IAAI,aAAa,CAAQ,IAAI,EAAE,KAAK,CAAC;;IAGhD,IAAI,GAAA;AACA,QAAA,OAAO,IAAI,aAAa,CAAQ,IAAI,EAAE,MAAM,CAAC;;AAKjD,IAAA,EAAE,CAAsC,KAAU,EAAA;AAC9C,QAAA,IAAI,KAAK,YAAY,WAAW,EAAE;YAC9B,OAAO,IAAI,kBAAkB,CAAmB,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;;aAC/D;YACH,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;;;AAIpE,IAAA,EAAE,CAAC,KAAQ,EAAA;QACP,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;;AAEnE;;AC9BD,MAAe,gBAAwD,SAAQ,WAAqB,CAAA;AAEhG,IAAA,WAAA,CAAY,KAAY,EAAE,IAAgB,EAAE,YAA8B,EAAE,EAAA;AACxE,QAAA,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC;;AAGjC,IAAA,EAAE,CAAC,KAAQ,EAAA;QACP,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;;AAGhE,IAAA,EAAE,CAAC,KAAQ,EAAA;QACP,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;;AAGhE,IAAA,GAAG,CAAC,KAAQ,EAAA;QACR,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;;AAGjE,IAAA,GAAG,CAAC,KAAQ,EAAA;QACR,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;;AAGjE,IAAA,EAAE,CAAC,MAAW,EAAA;QACV,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;;AAGpE,IAAA,KAAK,CAAC,MAAW,EAAA;QACb,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;;IAGxE,OAAO,CAAC,MAAS,EAAE,MAAS,EAAA;QACxB,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;;IAG9E,UAAU,CAAC,MAAS,EAAE,MAAS,EAAA;QAC3B,OAAO,IAAI,oBAAoB,CAAW,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC;;;IAKlF,GAAG,GAAA;QACC,OAAO,IAAU,IAAI,CAAC,WAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;;IAGxG,GAAG,GAAA;QACC,OAAO,IAAU,IAAI,CAAC,WAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;;AAE3G;;AChDoB,MAAA,YAAiD,SAAQ,gBAA+B,CAAA;AAIzG,IAAA,WAAA,CAAY,KAAY,EAAE,IAAgB,EAAE,YAA8B,EAAE,EAAA;AACxE,QAAA,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC;QAHvB,IAAK,CAAA,KAAA,GAAG,QAAQ;;IAM1B,KAAK,GAAA;QACD,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;;IAG/F,GAAG,GAAA;QACC,OAAO,IAAI,YAAY,CAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;;IAGpG,GAAG,GAAA;QACC,OAAO,IAAI,YAAY,CAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;;AAEvG;;ACnBD;AAEqB,MAAA,WAAmD,SAAQ,WAAqB,CAAA;AAEjG,IAAA,WAAA,CAAY,KAAY,EAAE,IAAgB,EAAE,YAA8B,EAAE,EAAA;AACxE,QAAA,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC;;IAGjC,KAAK,GAAA;QACD,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;;AAElG;;ACVoB,MAAA,aAAkD,SAAQ,WAA2B,CAAA;AAItG,IAAA,WAAA,CAAY,KAAY,EAAE,IAAgB,EAAE,YAA8B,EAAE,EAAA;AACxE,QAAA,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC;QAHvB,IAAK,CAAA,KAAA,GAAG,SAAS;;IAM3B,KAAK,GAAA;QACD,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;;AAGlG;;ACZoB,MAAA,UAA+C,SAAQ,gBAA6B,CAAA;AAIrG,IAAA,WAAA,CAAY,KAAY,EAAE,IAAgB,EAAE,YAA8B,EAAE,EAAA;AACxE,QAAA,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC;QAHvB,IAAK,CAAA,KAAA,GAAG,MAAM;;IAMxB,KAAK,GAAA;QACD,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;;AAGlG;;ACXoB,MAAA,YAAiD,SAAQ,gBAA+B,CAAA;AAIzG,IAAA,WAAA,CAAY,KAAY,EAAE,IAAgB,EAAE,YAA8B,EAAE,EAAA;AACxE,QAAA,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC;QAHvB,IAAK,CAAA,KAAA,GAAG,QAAQ;;IAM1B,KAAK,GAAA;QACD,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;;IAG/F,KAAK,GAAA;QACD,OAAO,IAAU,IAAI,CAAC,WAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;;IAG1G,KAAK,GAAA;QACD,OAAO,IAAU,IAAI,CAAC,WAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;;AAG1G,IAAA,QAAQ,CAAC,KAAa,EAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC;;AAGvC,IAAA,UAAU,CAAC,KAAa,EAAA;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;;AAGjC,IAAA,QAAQ,CAAC,KAAa,EAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;;AAGjC,IAAA,IAAI,CAAC,KAAa,EAAA;QACd,OAAO,IAAI,oBAAoB,CAAgB,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;;AAGvE,IAAA,OAAO,CAAC,KAAa,EAAA;QACjB,OAAO,IAAI,oBAAoB,CAAgB,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC;;AAE9E;;ACzCa,MAAO,iBAAiB,CAAA;AAElC,IAAA,WAAA,CACc,MAA4B,EAC5B,SAAmB,EACnB,OAAoD,EAAA;QAFpD,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAO,CAAA,OAAA,GAAP,OAAO;;AAGrB,IAAA,EAAE,CAAC,SAAkD,EAAA;AACjD,QAAA,OAAO,IAAI,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC;;AAE/C;;ACXa,MAAO,YAAY,CAAA;IAE7B,WACc,CAAA,UAAmD,EACnD,OAAkC,EAAA;QADlC,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAO,CAAA,OAAA,GAAP,OAAO;;AAGrB,IAAA,SAAS,CAAyC,KAAgB,EAAA;QAC9D,OAAO,IAAI,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC;;AAGtD,IAAA,QAAQ,CAAyC,KAAgB,EAAA;QAC7D,OAAO,IAAI,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;;AAGrD,IAAA,SAAS,CAAyC,KAAgB,EAAA;QAC9D,OAAO,IAAI,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC;;AAGtD,IAAA,QAAQ,CAAyC,KAAgB,EAAA;QAC7D,OAAO,IAAI,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;;AAExD;;ACpBa,MAAO,WAAW,CAAA;IAE5B,WACc,CAAA,eAA+B,EAC/B,OAAgB,EAAA;QADhB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAO,CAAA,OAAA,GAAP,OAAO;QAGX,IAAS,CAAA,SAAA,GAAG,KAAK;QAGjB,IAAW,CAAA,WAAA,GAA4B,EAAE;QACzC,IAAQ,CAAA,QAAA,GAA8B,EAAE;QACxC,IAAO,CAAA,OAAA,GAA4B,EAAE;QACrC,IAAU,CAAA,UAAA,GAAuD,EAAE;QACnE,IAAQ,CAAA,QAAA,GAA8B,EAAE;;AAGlD,IAAA,MAAM,CAAC,MAAc,EAAA;AACjB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,OAAO,IAAI;;AAGf,IAAA,KAAK,CAAC,KAAa,EAAA;AACf,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,OAAO,IAAI;;IAGf,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,OAAO,IAAI;;IAGf,KAAK,CAAC,GAAG,UAAmC,EAAA;AACxC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU;AAC7B,QAAA,OAAO,IAAI;;IAGf,OAAO,CAAC,GAAG,OAAkC,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AACvB,QAAA,OAAO,IAAI;;IAGf,MAAM,CAAC,GAAG,UAAmC,EAAA;AACzC,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU;AACzB,QAAA,OAAO,IAAI;;IAGf,OAAO,CAAC,GAAG,SAA6D,EAAA;AACpE,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,QAAA,OAAO,IAAI;;IAMf,MAAM,CAAC,GAAG,OAAkC,EAAA;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;AAExC;;AC7Da,MAAO,mBAAmB,CAAA;AAEpC,IAAA,WAAA,CACc,eAA+B,EAC/B,MAAa,EACb,WAAoC,EAAA;QAFpC,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAW,CAAA,WAAA,GAAX,WAAW;QAGf,IAAQ,CAAA,QAAA,GAA8B,EAAE;;AAIlD,IAAA,MAAM,CAAC,MAAuB,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;IAGrC,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;IAGrC,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAc,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;;AAE1E;;AC1Ba,MAAO,UAAU,CAAA;IAE3B,WACc,CAAA,eAA+B,EAC/B,MAAa,EAAA;QADb,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAM,CAAA,MAAA,GAAN,MAAM;QAKV,IAAQ,CAAA,QAAA,GAA8B,EAAE;;IAElD,KAAK,CAAC,GAAG,UAAmC,EAAA;AACxC,QAAA,OAAO,IAAI,mBAAmB,CAAgB,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC;;AAKhG,IAAA,MAAM,CAAC,KAAU,EAAA;AACb,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;IAGrC,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;AAGrC,IAAA,SAAS,CAAC,MAAuB,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;IAGrC,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAW,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;;AAGpE,IAAA,MAAM,CAAC,EAAM,EAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC;;IAG9D,MAAM,CAAC,EAAM,EAAE,MAAuB,EAAA;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC;;AAGpE,IAAA,GAAG,CAAC,EAAM,EAAA;QACN,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE;aACtD,IAAI,CAAC,CAAC,IAAc,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;;AAG1C,IAAA,QAAQ,CAAC,EAAM,EAAA;;AAEX,QAAA,IAAI,GAAG,GAAI,IAAI,CAAC,MAAc,CAAC,GAAG;AAClC,QAAA,IAAI,GAAG,YAAY,WAAW,EAAE;YAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;aAC1B;AACH,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAM,IAAI,CAAC,MAAc,CAAC,GAAG,CAA6B,CAAC,EAAE,CAAE,EAAU,CAAC,GAAG,CAAQ,CAAC,CAAC,CAAC;;;AAGhJ;;AChEa,MAAO,WAAW,CAAA;AAE5B,IAAA,WAAA,CAAsB,eAA+B,EAAA;QAA/B,IAAe,CAAA,eAAA,GAAf,eAAe;;AAMrC,IAAA,IAAI,CAAwH,MAAW,EAAE,MAAY,EAAE,MAAY,EAAA;QAC/J,IAAI,MAAM,IAAI,IAAI;AAAE,YAAA,OAAO,IAAI,WAAW,CAAgC,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;aACpH,IAAI,MAAM,IAAI,IAAI;AAAE,YAAA,OAAO,IAAI,WAAW,CAAuB,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7G,OAAO,IAAI,WAAW,CAAiB,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC;;AAG1E,IAAA,KAAK,CAAmD,KAAqC,EAAA;QACzF,OAAO,IAAI,UAAU,CAAoB,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;;AAE5E;;ACnBD,MAAe,UAAU,CAAA;AAErB,IAAA,WAAA,CAAsB,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM;;QAO5B,IAAI,CAAA,IAAA,GAAG,IAAI,WAAW,CAAe,IAAI,EAAE,GAAG,CAAC;;AAE/C,IAAA,SAAS,CAAyC,KAAgB,EAAA;QAC9D,OAAO,IAAI,iBAAiB,CAAmB,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC;;AAGxE,IAAA,QAAQ,CAAyC,KAAgB,EAAA;QAC7D,OAAO,IAAI,iBAAiB,CAAmB,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;;AAGvE,IAAA,SAAS,CAAyC,KAAgB,EAAA;QAC9D,OAAO,IAAI,iBAAiB,CAAmB,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC;;AAGxE,IAAA,QAAQ,CAAyC,KAAgB,EAAA;QAC7D,OAAO,IAAI,iBAAiB,CAAmB,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;;AAE1E;;AC/BK,SAAU,MAAM,CAAC,KAAU,EAAA;AAC/B,IAAA,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1B,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,KAAK,CAAC;AAC5F,IAAA,OAAO,MAAM;AACf;AAEM,SAAU,OAAO,CAAC,KAAU,EAAA;IAChC,IAAI,OAAO,KAAK,KAAK,SAAS;AAAE,QAAA,OAAO,KAAK;IAC5C,IAAI,KAAK,YAAY,OAAO;AAAE,QAAA,OAAO,KAAK,CAAC,OAAO,EAAE;IACpD,IAAI,KAAK,KAAK,MAAM;AAAE,QAAA,OAAO,IAAI;IACjC,IAAI,KAAK,KAAK,OAAO;AAAE,QAAA,OAAO,KAAK;AACnC,IAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,GAAG,KAAK,CAAC;AACrE;AAEM,SAAU,IAAI,CAAC,KAAU,EAAA;IAC7B,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAC;AACxC,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM;AAAE,QAAA,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC;IAChF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE;AACxD,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,KAAK,CAAC,CAAC;AAC9G,QAAA,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC;;AAExB,IAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,KAAK,CAAC;AAClE;AAEM,SAAU,MAAM,CAAC,KAAU,EAAA;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,QAAA,OAAO,KAAK;IAC3C,IAAI,KAAK,YAAY,MAAM;AAAE,QAAA,OAAO,KAAK,CAAC,OAAO,EAAE;AACnD,IAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,KAAK,CAAC;AACpE;;SCxBgB,oBAAoB,CAAC,cAAsC,EAAE,OAAyB,EAAE,MAAmB,EAAA;AAEvH,IAAA,OAAO,YAAY;IAEnB,SAAS,YAAY,CAAC,KAAU,EAAA;AAC5B,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ;AAAE,YAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;AAChE,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ;AAAE,YAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;AAChE,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ;AAAE,YAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;AAChE,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ;AAAE,YAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC;;IAG1D,SAAS,kBAAkB,CAAC,KAAU,EAAA;QAClC,IAAI,CAAC,GAAG,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;AACnD,QAAA,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC;AACzC,QAAA,OAAO,CAAC;;IAGZ,SAAS,kBAAkB,CAAC,KAAU,EAAA;AAClC,QAAA,IAAI,CAAC,GAAG,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO;QACxD,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;AACtD,QAAA,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC;AACzC,QAAA,OAAO,CAAC;;AAGZ,IAAA,SAAS,oBAAoB,CAAC,KAAU,EAAE,MAAW,EAAA;AACjD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,IAAG;AACxC,YAAA,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AACvB,YAAA,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC;AACvB,YAAA,OAAO,iBAAiB,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;AAC1E,SAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGjB,SAAS,kBAAkB,CAAC,KAAU,EAAA;QAClC,IAAI,KAAK,GAAU,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;QACjF,IAAI,MAAM,GAAgB,KAAK,CAAC,MAAM,CAAC,CAAC,GAAgB,EAAE,IAAI,KAAI;AAC9D,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAAE,YAAA,OAAO,GAAG;AAC9D,SAAC,EAAE,IAAI,GAAG,EAAU,CAAC;QACrB,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;AAEpC,QAAA,IAAI,CAAC,GAAG,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG;AACzD,QAAA,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG;AACjF,QAAA,CAAC,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS;AAClC,QAAA,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;AAC7D,aAAA,GAAG,CAAC,CAAC,GAAW,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAErD,QAAA,CAAC,IAAI,4BAA4B,CAAC,KAAK,CAAC;AACxC,QAAA,OAAO,CAAC;;IAIZ,SAAS,4BAA4B,CAAC,KAAU,EAAA;AAC5C,QAAA,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;YAC9E,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE;YACvE,OAAO,aAAa,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;;AAE9D,QAAA,OAAO,EAAE;;AAGb,IAAA,SAAS,iBAAiB,CAAC,KAAU,EAAE,MAAW,EAAE,IAAc,EAAA;AAC9D,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAG;AAClB,YAAA,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AACvB,YAAA,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC;AACvB,YAAA,OAAO,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;AACtC,SAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGjB,SAAS,kBAAkB,CAAC,KAAU,EAAA;QAClC,IAAI,CAAC,GAAG,SAAS;AACjB,QAAA,IAAI,KAAK,CAAC,SAAS,EAAE;YACjB,CAAC,IAAI,WAAW;;AAGpB,QAAA,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACvD,CAAC,IAAI,GAAG;;aACL;YACH,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAW,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG9E,QAAA,CAAC,IAAI,OAAO,CAAC,SAAS,GAAG,OAAO;AAChC,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;AACf,YAAA,CAAC,IAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;aACvG;AACH,YAAA,CAAC,IAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;;AAGlC,QAAA,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC;AAEzC,QAAA,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,YAAA,CAAC,IAAI,OAAO,CAAC,SAAS,GAAG,WAAW;YACpC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAW,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;QAE9E,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC;AAE/C,QAAA,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,YAAA,CAAC,IAAI,OAAO,CAAC,SAAS,GAAG,WAAW;YACpC,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,QAAa,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;AAEtF,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;AACtB,YAAA,CAAC,IAAI,OAAO,CAAC,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;;AAE5D,QAAA,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE;AACvB,YAAA,CAAC,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;;AAE9D,QAAA,OAAO,CAAC;;AAGZ,IAAA,SAAS,iBAAiB,CAAC,UAAiB,EAAE,OAAO,GAAG,OAAO,EAAA;QAC3D,IAAI,CAAC,GAAG,EAAE;QACV,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,CAAC,IAAI,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,GAAG;YACtC,oBAAoB,CAAC,UAAU,CAAC;YAChC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,IAAI,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;;AAErF,QAAA,OAAO,CAAC;;IAGZ,SAAS,WAAW,CAAC,SAAc,EAAA;QAC/B,IAAI,KAAK,GAAU,EAAE;QACrB,OAAO,SAAS,EAAE;AACd,YAAA,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AACrB,YAAA,SAAS,GAAG,SAAS,CAAC,OAAO;;QAGjC,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC;AAE1B,QAAA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAG,CAAC,EAAE;YAC1C,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;YAC3B,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;YACjC,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU;YACvC,IAAI,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC;AACjD,YAAA,CAAC,IAAI,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,GAAG,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,MAAM;AACvE,gBAAA,sBAAsB,CAAC,SAAS,EAAE,KAAK,CAAC;;AAGhD,QAAA,OAAO,CAAC;;IAGZ,SAAS,eAAe,CAAC,QAAa,EAAA;AAClC,QAAA,IAAI,QAAQ,CAAC,OAAO,EAAE;YAClB,IAAI,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;YAEvC,IAAI,QAAQ,CAAC,cAAc,IAAI,IAAI,EAAE;gBACjC,CAAC,IAAI,WAAW,IAAI,QAAQ,CAAC,cAAc,KAAK,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC;;AAGxF,YAAA,IAAI,QAAQ,CAAC,UAAU,KAAK,KAAK;gBAAE,CAAC,IAAI,MAAM;AAC9C,YAAA,IAAI,QAAQ,CAAC,UAAU,KAAK,MAAM;gBAAE,CAAC,IAAI,OAAO;AAEhD,YAAA,OAAO,CAAC;;aACL;AACH,YAAA,OAAO,aAAa,CAAC,QAAQ,CAAC;;;IAItC,SAAS,YAAY,CAAC,KAAU,EAAA;QAC5B,OAAO,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU;;IAGjE,SAAS,aAAa,CAAC,MAAW,EAAA;QAC9B,IAAI,CAAC,GAAG,EAAE;AACV,QAAA,IAAI,EAAE,MAAM,CAAC,KAAK,KAAK,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE;YAClG,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG;;AAE1C,QAAA,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC;AAC9B,QAAA,OAAO,sBAAsB,CAAC,CAAC,EAAE,MAAM,CAAC;;AAG5C,IAAA,SAAS,sBAAsB,CAAC,CAAS,EAAE,MAAW,EAAA;AAClD,QAAA,IAAI,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAa,KAAI;AACxC,gBAAA,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI;gBACxB,IAAI,IAAI,KAAK,OAAO;AAAE,oBAAA,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,GAAG;qBACvC,IAAI,IAAI,KAAK,OAAO;AAAE,oBAAA,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,GAAG;qBAC5C,IAAI,IAAI,KAAK,OAAO;AAAE,oBAAA,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,GAAG;qBAC5C,IAAI,IAAI,KAAK,KAAK;AAAE,oBAAA,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,GAAG;qBACxC,IAAI,IAAI,KAAK,KAAK;AAAE,oBAAA,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,GAAG;qBACxC,IAAI,IAAI,KAAK,KAAK;AAAE,oBAAA,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,GAAG;qBACxC,IAAI,IAAI,KAAK,KAAK;AAAE,oBAAA,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,GAAG;qBACxC,IAAI,IAAI,KAAK,IAAI;AAAE,oBAAA,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU;AACtG,aAAC,CAAC;;QAEN,OAAO,CAAC,GAAG,EAAE;;IAGjB,SAAS,iBAAiB,CAAC,MAAW,EAAA;AAClC,QAAA,IAAI,MAAM,CAAC,KAAK,KAAK,GAAG;YAAE,OAAO,MAAM,CAAC,KAAK;QAC7C,IAAI,IAAI,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI;QAC9E,OAAO,OAAO,CAAC,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU;;IAGzD,SAAS,oBAAoB,CAAC,UAAiB,EAAA;AAC3C,QAAA,UAAU,CAAC,OAAO,CAAC,SAAS,IAAG;YAC3B,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE;AAC7C,gBAAA,SAAS,CAAC,YAAY,GAAG,IAAI;;YAEjC,gBAAgB,CAAC,SAAS,CAAC;AAC/B,SAAC,CAAC;;;IAIN,SAAS,gBAAgB,CAAC,SAAc,EAAA;AACpC,QAAA,IAAI,SAAS,CAAC,QAAQ,EAAE;AACpB,YAAA,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC;;QAExC,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC1C,YAAA,SAAS,CAAC,OAAO,GAAG,iBAAiB,CAAC,SAAS,CAAC;;AAEpD,QAAA,IAAI,SAAS,CAAC,MAAM,EAAE;AAClB,YAAA,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC;;;AAI1C,IAAA,SAAS,gBAAgB,CAAC,SAAc,EAAE,IAAI,GAAG,KAAK,EAAA;QAClD,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YAC1C,OAAO,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC;;QAG/D,IAAI,CAAC,GAAG,EAAE;AACV,QAAA,IAAI,SAAS,CAAC,MAAM,EAAE;AAClB,YAAA,CAAC,IAAI,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC;;AAE3C,QAAA,IAAI,SAAS,CAAC,QAAQ,EAAE;YACpB,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,CAAC;;AAEvG,QAAA,IAAI,SAAS,CAAC,YAAY,KAAK,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,CAAC,EAAE;AAChF,YAAA,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI;;AAEvB,QAAA,IAAI,SAAS,CAAC,SAAS,EAAE;AACrB,YAAA,CAAC,GAAG,MAAM,GAAG,CAAC;;AAElB,QAAA,OAAO,CAAC;;AAGZ,IAAA,SAAS,sBAAsB,CAAC,SAAc,EAAE,KAAa,EAAA;QACzD,IAAI,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC;AACxC,QAAA,CAAC,IAAI,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC;AACzC,QAAA,OAAO,CAAC;;AAGZ,IAAA,SAAS,kBAAkB,CAAC,SAAc,EAAE,KAAa,EAAA;AACrD,QAAA,QAAQ,SAAS,CAAC,KAAK;AACnB,YAAA,KAAK,IAAI,EAAE,OAAO,KAAK,GAAG,KAAK;AAC/B,YAAA,KAAK,IAAI,EAAE,OAAO,MAAM,GAAG,KAAK;AAChC,YAAA,KAAK,IAAI,EAAE,OAAO,KAAK,GAAG,KAAK;AAC/B,YAAA,KAAK,IAAI,EAAE,OAAO,KAAK,GAAG,KAAK;AAC/B,YAAA,KAAK,KAAK,EAAE,OAAO,MAAM,GAAG,KAAK;AACjC,YAAA,KAAK,KAAK,EAAE,OAAO,MAAM,GAAG,KAAK;AACjC,YAAA,KAAK,SAAS,EAAE,OAAO,UAAU;AACjC,YAAA,KAAK,aAAa,EAAE,OAAO,cAAc;AACzC,YAAA,KAAK,MAAM,EAAE,OAAO,QAAQ,GAAG,KAAK;AACpC,YAAA,KAAK,UAAU,EAAE,OAAO,YAAY,GAAG,KAAK;YAC5C,KAAK,IAAI,EAAE,OAAO,OAAO,GAAG,KAAK,GAAG,GAAG;YACvC,KAAK,QAAQ,EAAE,OAAO,WAAW,GAAG,KAAK,GAAG,GAAG;AAC/C,YAAA,KAAK,SAAS,EAAE,OAAO,WAAW,GAAG,KAAK;AAC1C,YAAA,KAAK,aAAa,EAAE,OAAO,eAAe,GAAG,KAAK;AAClD,YAAA,SAAS,OAAO,EAAE;;;IAI1B,SAAS,iBAAiB,CAAC,SAAc,EAAA;QACrC,IAAI,KAAK,GAAG,EAAE;AACd,QAAA,IAAI,SAAS,CAAC,YAAY,EAAE;AACxB,YAAA,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC;;aAC1C;AACH,YAAA,IAAI,aAAa,GAAG,CAAC,KAAU,KAAK,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;AAE1E,YAAA,IAAI,SAAS,CAAC,KAAK,KAAK,IAAI,IAAI,SAAS,CAAC,KAAK,KAAK,QAAQ,EAAE;gBAC1D,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAU,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;AAC3E,iBAAA,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,aAAa,EAAE;gBAC3E,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;;AACxF,iBAAA,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,aAAa,EAAE;gBAC3E,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;;;AAGnD,QAAA,OAAO,KAAK;;AAGhB,IAAA,SAAS,YAAY,CAAC,MAAW,EAAE,KAAU,EAAA;QACzC,IAAI,KAAK,IAAI,IAAI;AAAE,YAAA,OAAO,MAAM;QAChC,OAAO,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;;AAG7D,IAAA,SAAS,aAAa,CAAC,IAAY,EAAE,KAAU,EAAA;QAC3C,IAAI,IAAI,KAAK,QAAQ;AAAE,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC;aACtC,IAAI,IAAI,KAAK,SAAS;AAAE,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC;aAC7C,IAAI,IAAI,KAAK,MAAM;AAAE,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC;aACvC,IAAI,IAAI,KAAK,QAAQ;AAAE,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC;AAChD,QAAA,OAAO,KAAK;;AAEpB;;ACvSM,SAAU,wBAAwB,CAAC,KAAU,EAAA;IAC/C,IAAI,KAAK,IAAI,IAAI;AAAE,QAAA,OAAO,MAAM;IAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE;AACtD,QAAA,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG;;SACxB,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,YAAY,OAAO,EAAE;AAC/D,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;;AAC/B,SAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AAC9B,QAAA,OAAO,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG;;SAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE;AAC7D,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;;IAExB,OAAO,CAAA,CAAA,EAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG;AACvC;AAEA;AACA;AACM,SAAU,mBAAmB,CAAC,KAAU,EAAA;AAC1C,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,YAAY,MAAM,IAAI,KAAK,YAAY,MAAM;QAClG,KAAK,YAAY,OAAO,IAAI,KAAK,YAAY,IAAI,CAAC,EAAE;AACpD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;AAEhC,IAAA,OAAO,KAAK;AAChB;;AClBA,IAAI,gBAAgB,GAAG,CAAC,KAAa,KAAK,GAAG,GAAG,KAAK;AACrD,IAAI,mBAAmB,GAAG,CAAC,KAAa,KAAK,GAAG;AAEhD,SAAS,kBAAkB,CAAC,KAAU,EAAE,MAAa,EAAE,cAAsC,EAAA;IACzF,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACvC,IAAA,OAAO,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC;AACxC;SAEgB,8BAA8B,CAAC,KAAU,EAAE,OAAyB,EAAE,MAAmB,EAAA;IACrG,IAAI,MAAM,GAAU,EAAE;AAEtB,IAAA,IAAI,cAAc,GAAG,MAAM,KAAK,OAAO,GAAG,mBAAmB,GAAG,gBAAgB;IAChF,IAAI,GAAG,GAAG,oBAAoB,CAAC,CAAC,KAAU,KAAK,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC;AAEzH,IAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE;AAC1B;;SCfgB,iBAAiB,CAAC,KAAU,EAAE,OAAyB,EAAE,MAAmB,EAAA;AACxF,IAAA,OAAO,oBAAoB,CAAC,CAAC,KAAU,KAAK,wBAAwB,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC;AACxG;;ACEA,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAEvC;AAUD,MAAM,eAAe,GAA0B;AAC7C,IAAA,UAAU,EAAE,KAAK;AACjB,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,eAAe,EAAE;CAClB;AAED,SAAS,aAAa,CAAC,KAAU,EAAE,IAAS,EAAA;AAC1C,IAAA,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;AAC7C,QAAA,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;QAC1B,IAAI,KAAK,IAAI,GAAG;AAAE,YAAA,OAAO,IAAI;QAC7B,IAAI,KAAK,IAAI,GAAG;AAAE,YAAA,OAAO,KAAK;AAC9B,QAAA,OAAO,IAAI;;AACN,SAAA,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,EAAE;AAC/B,QAAA,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;AAC1B,QAAA,OAAO,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;IAEjD,OAAO,IAAI,EAAE;AACf;AAEM,SAAU,oBAAoB,CAAC,MAAW,EAAE,QAAkC,GAAA,EAAE,EAAE,MAAA,GAAsB,IAAI,EAAA;AAEhH,IAAA,IAAI,OAAO,GAA0B,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC;AAEjF,IAAA,IAAI,YAAY,GAAqB;QACnC,SAAS,EAAE,OAAO,CAAC,UAAU,GAAG,IAAI,GAAG,GAAG;AAC1C,QAAA,UAAU,EAAE,QAAQ,CAAC,eAAe,KAAK,MAAM,KAAK,OAAO,GAAG,GAAG,GAAG,GAAG;KACxE;;;;;;;;;;;;;;;;;;;;;;IA0BD,OAAO,CAAC,KAAU,KAAI;AACpB,QAAA,IAAI,OAAO,CAAC,aAAa,EAAE;AACzB,YAAA,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,8BAA8B,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC;;YAEjF,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;;;;aAG3B;YACL,IAAI,GAAG,GAAG,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC;;YAExD,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC;;;;AAIvC,KAAC;AACH;;ACrFqB,MAAA,gBAAiB,SAAQ,WAAW,CAAA;IAErD,WAAY,CAAA,MAAW,EAAE,OAAA,GAAiC,EAAE,EAAA;QACxD,KAAK,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;;AAE5D;;ACRD;;ACAA;;AAEG;;;;"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taon-type-sql/websql",
3
- "version": "19.0.31",
3
+ "version": "19.0.32",
4
4
  "module": "fesm2022/taon-type-sql.mjs",
5
5
  "typings": "index.d.ts",
6
6
  "exports": {