taon-type-sql 21.0.20 → 21.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/browser/package.json +1 -1
  2. package/browser-prod/package.json +1 -1
  3. package/browser-prod.re-export.json +1 -0
  4. package/lib/build-info._auto-generated_.d.ts +1 -1
  5. package/lib/build-info._auto-generated_.js +1 -1
  6. package/lib/package.json +1 -1
  7. package/lib-prod/build-info._auto-generated_.ts +27 -0
  8. package/lib-prod/builder/column/basic-column.ts +17 -0
  9. package/lib-prod/builder/column/boolean-column.ts +19 -0
  10. package/lib-prod/builder/column/comparable-column.ts +56 -0
  11. package/lib-prod/builder/column/date-column.ts +19 -0
  12. package/lib-prod/builder/column/number-column.ts +25 -0
  13. package/lib-prod/builder/column/query-column.ts +34 -0
  14. package/lib-prod/builder/column/string-column.ts +47 -0
  15. package/lib-prod/builder/column/value-column.ts +39 -0
  16. package/lib-prod/builder/condition/{query-column-condition.d.ts → query-column-condition.ts} +20 -5
  17. package/lib-prod/builder/condition/query-condition-chain.ts +42 -0
  18. package/lib-prod/builder/condition/{query-condition.d.ts → query-condition.ts} +8 -2
  19. package/lib-prod/builder/condition/{query-join-condition.d.ts → query-join-condition.ts} +19 -4
  20. package/lib-prod/builder/helpers/generics-helper.ts +2 -0
  21. package/lib-prod/builder/helpers/{internal-types.d.ts → internal-types.ts} +25 -9
  22. package/lib-prod/builder/join/joined-tables-chain.ts +17 -0
  23. package/lib-prod/builder/join/joined-tables.ts +28 -0
  24. package/lib-prod/builder/other/{query-ordering.d.ts → query-ordering.ts} +20 -4
  25. package/lib-prod/builder/query/select-query.ts +68 -0
  26. package/lib-prod/builder/query/table-condition-query.ts +35 -0
  27. package/lib-prod/builder/query/table-query.ts +72 -0
  28. package/lib-prod/builder/{query-source.d.ts → query-source.ts} +19 -8
  29. package/lib-prod/builder/query-table.ts +34 -0
  30. package/lib-prod/client/mysql.ts +9 -0
  31. package/lib-prod/client/pg.ts +9 -0
  32. package/lib-prod/client/query-processor.ts +89 -0
  33. package/lib-prod/converter/{param-converter.js → param-converter.ts} +8 -16
  34. package/lib-prod/converter/parameterized-converter.ts +20 -0
  35. package/lib-prod/converter/{query-converter.js → query-converter.ts} +113 -101
  36. package/lib-prod/converter/result-converter.ts +88 -0
  37. package/lib-prod/converter/sql-converter.ts +7 -0
  38. package/lib-prod/converter/type-converter.ts +29 -0
  39. package/lib-prod/converter/{types.d.ts → types.ts} +4 -3
  40. package/lib-prod/env/env.angular-node-app.ts +66 -0
  41. package/lib-prod/env/env.docs-webapp.ts +66 -0
  42. package/lib-prod/env/env.electron-app.ts +66 -0
  43. package/lib-prod/env/env.mobile-app.ts +66 -0
  44. package/lib-prod/env/env.npm-lib-and-cli-tool.ts +66 -0
  45. package/lib-prod/env/env.vscode-plugin.ts +66 -0
  46. package/lib-prod/{index._auto-generated_.js → index._auto-generated_.ts} +0 -1
  47. package/lib-prod/{index.d.ts → index.ts} +15 -3
  48. package/lib-prod/lib-info.md +8 -0
  49. package/lib-prod/migrations/index.ts +2 -0
  50. package/lib-prod/migrations/migrations-info.md +6 -0
  51. package/lib-prod/migrations/{migrations_index._auto-generated_.js → migrations_index._auto-generated_.ts} +2 -1
  52. package/lib-prod/package.json +1 -1
  53. package/lib-prod.re-export.json +1 -0
  54. package/package.json +1 -1
  55. package/websql/package.json +1 -1
  56. package/websql-prod/package.json +1 -1
  57. package/websql-prod.re-export.json +1 -0
  58. package/lib-prod/build-info._auto-generated_.d.ts +0 -24
  59. package/lib-prod/build-info._auto-generated_.js +0 -30
  60. package/lib-prod/build-info._auto-generated_.js.map +0 -1
  61. package/lib-prod/builder/column/basic-column.d.ts +0 -8
  62. package/lib-prod/builder/column/basic-column.js +0 -15
  63. package/lib-prod/builder/column/basic-column.js.map +0 -1
  64. package/lib-prod/builder/column/boolean-column.d.ts +0 -9
  65. package/lib-prod/builder/column/boolean-column.js +0 -15
  66. package/lib-prod/builder/column/boolean-column.js.map +0 -1
  67. package/lib-prod/builder/column/comparable-column.d.ts +0 -18
  68. package/lib-prod/builder/column/comparable-column.js +0 -42
  69. package/lib-prod/builder/column/comparable-column.js.map +0 -1
  70. package/lib-prod/builder/column/date-column.d.ts +0 -9
  71. package/lib-prod/builder/column/date-column.js +0 -15
  72. package/lib-prod/builder/column/date-column.js.map +0 -1
  73. package/lib-prod/builder/column/number-column.d.ts +0 -10
  74. package/lib-prod/builder/column/number-column.js +0 -20
  75. package/lib-prod/builder/column/number-column.js.map +0 -1
  76. package/lib-prod/builder/column/query-column.d.ts +0 -18
  77. package/lib-prod/builder/column/query-column.js +0 -26
  78. package/lib-prod/builder/column/query-column.js.map +0 -1
  79. package/lib-prod/builder/column/string-column.d.ts +0 -17
  80. package/lib-prod/builder/column/string-column.js +0 -37
  81. package/lib-prod/builder/column/string-column.js.map +0 -1
  82. package/lib-prod/builder/column/value-column.d.ts +0 -15
  83. package/lib-prod/builder/column/value-column.js +0 -30
  84. package/lib-prod/builder/column/value-column.js.map +0 -1
  85. package/lib-prod/builder/condition/query-column-condition.js +0 -23
  86. package/lib-prod/builder/condition/query-column-condition.js.map +0 -1
  87. package/lib-prod/builder/condition/query-condition-chain.d.ts +0 -17
  88. package/lib-prod/builder/condition/query-condition-chain.js +0 -34
  89. package/lib-prod/builder/condition/query-condition-chain.js.map +0 -1
  90. package/lib-prod/builder/condition/query-condition.js +0 -7
  91. package/lib-prod/builder/condition/query-condition.js.map +0 -1
  92. package/lib-prod/builder/condition/query-join-condition.js +0 -23
  93. package/lib-prod/builder/condition/query-join-condition.js.map +0 -1
  94. package/lib-prod/builder/helpers/generics-helper.d.ts +0 -2
  95. package/lib-prod/builder/helpers/generics-helper.js +0 -7
  96. package/lib-prod/builder/helpers/generics-helper.js.map +0 -1
  97. package/lib-prod/builder/helpers/internal-types.js +0 -4
  98. package/lib-prod/builder/helpers/internal-types.js.map +0 -1
  99. package/lib-prod/builder/join/joined-tables-chain.d.ts +0 -11
  100. package/lib-prod/builder/join/joined-tables-chain.js +0 -18
  101. package/lib-prod/builder/join/joined-tables-chain.js.map +0 -1
  102. package/lib-prod/builder/join/joined-tables.d.ts +0 -12
  103. package/lib-prod/builder/join/joined-tables.js +0 -25
  104. package/lib-prod/builder/join/joined-tables.js.map +0 -1
  105. package/lib-prod/builder/other/query-ordering.js +0 -21
  106. package/lib-prod/builder/other/query-ordering.js.map +0 -1
  107. package/lib-prod/builder/query/select-query.d.ts +0 -29
  108. package/lib-prod/builder/query/select-query.js +0 -54
  109. package/lib-prod/builder/query/select-query.js.map +0 -1
  110. package/lib-prod/builder/query/table-condition-query.d.ts +0 -16
  111. package/lib-prod/builder/query/table-condition-query.js +0 -31
  112. package/lib-prod/builder/query/table-condition-query.js.map +0 -1
  113. package/lib-prod/builder/query/table-query.d.ts +0 -23
  114. package/lib-prod/builder/query/table-query.js +0 -60
  115. package/lib-prod/builder/query/table-query.js.map +0 -1
  116. package/lib-prod/builder/query-source.js +0 -22
  117. package/lib-prod/builder/query-source.js.map +0 -1
  118. package/lib-prod/builder/query-table.d.ts +0 -15
  119. package/lib-prod/builder/query-table.js +0 -28
  120. package/lib-prod/builder/query-table.js.map +0 -1
  121. package/lib-prod/client/mysql.d.ts +0 -5
  122. package/lib-prod/client/mysql.js +0 -11
  123. package/lib-prod/client/mysql.js.map +0 -1
  124. package/lib-prod/client/pg.d.ts +0 -5
  125. package/lib-prod/client/pg.js +0 -11
  126. package/lib-prod/client/pg.js.map +0 -1
  127. package/lib-prod/client/query-processor.d.ts +0 -10
  128. package/lib-prod/client/query-processor.js +0 -73
  129. package/lib-prod/client/query-processor.js.map +0 -1
  130. package/lib-prod/converter/param-converter.d.ts +0 -2
  131. package/lib-prod/converter/param-converter.js.map +0 -1
  132. package/lib-prod/converter/parameterized-converter.d.ts +0 -5
  133. package/lib-prod/converter/parameterized-converter.js +0 -18
  134. package/lib-prod/converter/parameterized-converter.js.map +0 -1
  135. package/lib-prod/converter/query-converter.d.ts +0 -2
  136. package/lib-prod/converter/query-converter.js.map +0 -1
  137. package/lib-prod/converter/result-converter.d.ts +0 -2
  138. package/lib-prod/converter/result-converter.js +0 -89
  139. package/lib-prod/converter/result-converter.js.map +0 -1
  140. package/lib-prod/converter/sql-converter.d.ts +0 -2
  141. package/lib-prod/converter/sql-converter.js +0 -9
  142. package/lib-prod/converter/sql-converter.js.map +0 -1
  143. package/lib-prod/converter/type-converter.d.ts +0 -4
  144. package/lib-prod/converter/type-converter.js +0 -43
  145. package/lib-prod/converter/type-converter.js.map +0 -1
  146. package/lib-prod/converter/types.js +0 -3
  147. package/lib-prod/converter/types.js.map +0 -1
  148. package/lib-prod/env/env.angular-node-app.d.ts +0 -64
  149. package/lib-prod/env/env.angular-node-app.js +0 -71
  150. package/lib-prod/env/env.angular-node-app.js.map +0 -1
  151. package/lib-prod/env/env.docs-webapp.d.ts +0 -64
  152. package/lib-prod/env/env.docs-webapp.js +0 -71
  153. package/lib-prod/env/env.docs-webapp.js.map +0 -1
  154. package/lib-prod/env/env.electron-app.d.ts +0 -64
  155. package/lib-prod/env/env.electron-app.js +0 -71
  156. package/lib-prod/env/env.electron-app.js.map +0 -1
  157. package/lib-prod/env/env.mobile-app.d.ts +0 -64
  158. package/lib-prod/env/env.mobile-app.js +0 -71
  159. package/lib-prod/env/env.mobile-app.js.map +0 -1
  160. package/lib-prod/env/env.npm-lib-and-cli-tool.d.ts +0 -64
  161. package/lib-prod/env/env.npm-lib-and-cli-tool.js +0 -71
  162. package/lib-prod/env/env.npm-lib-and-cli-tool.js.map +0 -1
  163. package/lib-prod/env/env.vscode-plugin.d.ts +0 -64
  164. package/lib-prod/env/env.vscode-plugin.js +0 -71
  165. package/lib-prod/env/env.vscode-plugin.js.map +0 -1
  166. package/lib-prod/env/index.js +0 -23
  167. package/lib-prod/env/index.js.map +0 -1
  168. package/lib-prod/index._auto-generated_.d.ts +0 -0
  169. package/lib-prod/index._auto-generated_.js.map +0 -1
  170. package/lib-prod/index.js +0 -48
  171. package/lib-prod/index.js.map +0 -1
  172. package/lib-prod/migrations/index.d.ts +0 -1
  173. package/lib-prod/migrations/index.js +0 -19
  174. package/lib-prod/migrations/index.js.map +0 -1
  175. package/lib-prod/migrations/migrations_index._auto-generated_.d.ts +0 -0
  176. package/lib-prod/migrations/migrations_index._auto-generated_.js.map +0 -1
  177. /package/lib-prod/env/{index.d.ts → index.ts} +0 -0
@@ -1,104 +1,115 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createQueryConverter = createQueryConverter;
4
- const type_converter_1 = require("./type-converter");
5
- function createQueryConverter(paramConverter, options, engine) {
1
+ import { string, number, date, boolean } from './type-converter';
2
+ import { QueryEngine, ConverterOptions } from "./types";
3
+
4
+
5
+ export function createQueryConverter(paramConverter: (param: any) => string, options: ConverterOptions, engine: QueryEngine) {
6
+
6
7
  return convertQuery;
7
- function convertQuery(query) {
8
- if (query._action === 'select')
9
- return convertSelectQuery(query);
10
- if (query._action === 'delete')
11
- return convertDeleteQuery(query);
12
- if (query._action === 'update')
13
- return convertUpdateQuery(query);
14
- if (query._action === 'insert')
15
- return convertInsertQuery(query);
8
+
9
+ function convertQuery(query: any): string {
10
+ if (query._action === 'select') return convertSelectQuery(query);
11
+ if (query._action === 'delete') return convertDeleteQuery(query);
12
+ if (query._action === 'update') return convertUpdateQuery(query);
13
+ if (query._action === 'insert') return convertInsertQuery(query);
16
14
  throw new Error('Unknown query type:' + query._action);
17
15
  }
18
- function convertDeleteQuery(query) {
16
+
17
+ function convertDeleteQuery(query: any): string {
19
18
  let s = 'DELETE FROM ' + convertTable(query._table);
20
19
  s += convertConditions(query._conditions);
21
20
  return s;
22
21
  }
23
- function convertUpdateQuery(query) {
22
+
23
+ function convertUpdateQuery(query: any): string {
24
24
  let s = 'UPDATE ' + convertTable(query._table) + ' SET ';
25
25
  s += convertUpdateSetters(query._table, query._entity);
26
26
  s += convertConditions(query._conditions);
27
27
  return s;
28
28
  }
29
- function convertUpdateSetters(table, entity) {
29
+
30
+ function convertUpdateSetters(table: any, entity: any): string {
30
31
  return Object.keys(entity).sort().map(key => {
31
32
  let value = entity[key];
32
33
  let column = table[key];
33
34
  return convertColumnName(column) + ' = ' + convertParam(column, value);
34
35
  }).join(', ');
35
36
  }
36
- function convertInsertQuery(query) {
37
- let items = Array.isArray(query._entity) ? query._entity : [query._entity];
38
- let keySet = items.reduce((set, item) => {
39
- Object.keys(item).forEach(key => set.add(key));
40
- return set;
41
- }, new Set());
37
+
38
+ function convertInsertQuery(query: any): string {
39
+ let items: any[] = Array.isArray(query._entity) ? query._entity : [query._entity];
40
+ let keySet: Set<string> = items.reduce((set: Set<string>, item) => {
41
+ Object.keys(item).forEach(key => set.add(key)); return set;
42
+ }, new Set<string>());
42
43
  let keys = Array.from(keySet).sort();
44
+
43
45
  let s = 'INSERT INTO ' + convertTable(query._table) + ' ';
44
46
  s += '(' + keys.map(key => convertColumnName(query._table[key])).join(', ') + ')';
45
47
  s += options.lineBreak + 'VALUES ';
46
48
  s += items.map(item => convertInsertItem(query._table, item, keys))
47
- .map((row) => '(' + row + ')').join(', ');
49
+ .map((row: string) => '(' + row + ')').join(', ');
50
+
48
51
  s += getPgInsertReturningIfNeeded(query);
49
52
  return s;
50
53
  }
51
- function getPgInsertReturningIfNeeded(query) {
54
+
55
+
56
+ function getPgInsertReturningIfNeeded(query: any): string {
52
57
  if (engine === 'pg' && query._action === 'insert' && !Array.isArray(query._entity) &&
53
58
  query._table.$id && query._table.$id._table && query._table.$id._name) {
54
59
  return ' RETURNING ' + convertColumnName(query._table.$id);
55
60
  }
56
61
  return '';
57
62
  }
58
- function convertInsertItem(table, entity, keys) {
63
+
64
+ function convertInsertItem(table: any, entity: any, keys: string[]): string {
59
65
  return keys.map(key => {
60
66
  let value = entity[key];
61
67
  let column = table[key];
62
68
  return convertParam(column, value);
63
69
  }).join(', ');
64
70
  }
65
- function convertSelectQuery(query) {
71
+
72
+ function convertSelectQuery(query: any): string {
66
73
  let s = 'SELECT ';
67
74
  if (query._distinct) {
68
75
  s += 'DISTINCT ';
69
76
  }
77
+
70
78
  if (query._columns == null || query._columns.length === 0) {
71
- s += '*';
72
- }
73
- else {
74
- s += query._columns.map((column) => convertColumn(column)).join(', ');
79
+ s += '*'
80
+ } else {
81
+ s += query._columns.map((column: any) => convertColumn(column)).join(', ');
75
82
  }
83
+
76
84
  s += options.lineBreak + 'FROM ';
77
85
  if (query._tables) {
78
- s += query._tables.map((table) => table._parent ? convertJoin(table) : convertTable(table)).join(', ');
79
- }
80
- else {
81
- s += convertTable(query._table);
86
+ s+= query._tables.map((table: any) => table._parent ? convertJoin(table) : convertTable(table)).join(', ');
87
+ } else {
88
+ s+= convertTable(query._table);
82
89
  }
90
+
83
91
  s += convertConditions(query._conditions);
92
+
84
93
  if (query._groupBy && query._groupBy.length > 0) {
85
94
  s += options.lineBreak + 'GROUP BY ';
86
- s += query._groupBy.map((column) => convertColumn(column)).join(', ');
95
+ s += query._groupBy.map((column: any) => convertColumn(column)).join(', ');
87
96
  }
88
97
  s += convertConditions(query._having, 'HAVING');
98
+
89
99
  if (query._orderings && query._orderings.length > 0) {
90
100
  s += options.lineBreak + 'ORDER BY ';
91
- s += query._orderings.map((ordering) => convertOrdering(ordering)).join(', ');
101
+ s += query._orderings.map((ordering: any) => convertOrdering(ordering)).join(', ');
92
102
  }
93
103
  if (query._limit != null) {
94
- s += options.lineBreak + 'LIMIT ' + (0, type_converter_1.number)(query._limit);
104
+ s += options.lineBreak + 'LIMIT ' + number(query._limit);
95
105
  }
96
106
  if (query._offset != null) {
97
- s += options.lineBreak + 'OFFSET ' + (0, type_converter_1.number)(query._offset);
107
+ s += options.lineBreak + 'OFFSET ' + number(query._offset);
98
108
  }
99
109
  return s;
100
110
  }
101
- function convertConditions(conditions, keyword = 'WHERE') {
111
+
112
+ function convertConditions(conditions: any[], keyword = 'WHERE'): string {
102
113
  let s = '';
103
114
  if (conditions && conditions.length > 0) {
104
115
  s += options.lineBreak + keyword + ' ';
@@ -107,15 +118,18 @@ function createQueryConverter(paramConverter, options, engine) {
107
118
  }
108
119
  return s;
109
120
  }
110
- function convertJoin(joinChain) {
111
- let items = [];
121
+
122
+ function convertJoin(joinChain: any): string {
123
+ let items: any[] = [];
112
124
  while (joinChain) {
113
125
  items.push(joinChain);
114
126
  joinChain = joinChain._parent;
115
127
  }
128
+
116
129
  let root = items[items.length - 1];
117
130
  let s = convertTable(root);
118
- for (let i = items.length - 2; i >= 0; i -= 2) {
131
+
132
+ for (let i = items.length - 2; i >= 0; i-= 2) {
119
133
  let table = items[i]._table;
120
134
  let modifier = items[i]._modifier;
121
135
  let condition = items[i - 1]._condition;
@@ -123,28 +137,32 @@ function createQueryConverter(paramConverter, options, engine) {
123
137
  s += ' ' + modifier.toUpperCase() + ' JOIN ' + convertTable(table) + ' ON ' +
124
138
  convertColumnCondition(condition, param);
125
139
  }
140
+
126
141
  return s;
127
142
  }
128
- function convertOrdering(ordering) {
143
+
144
+ function convertOrdering(ordering: any): string {
129
145
  if (ordering._column) {
130
146
  let s = convertColumn(ordering._column);
147
+
131
148
  if (ordering._nullsPosition != null) { // "NULLS FIRST" only exists in PG, this is the general solution
132
149
  s += ' IS NULL ' + (ordering._nullsPosition === 'FIRST' ? 'DESC' : 'ASC') + ', ' + s;
133
150
  }
134
- if (ordering._direction === 'ASC')
135
- s += ' ASC';
136
- if (ordering._direction === 'DESC')
137
- s += ' DESC';
151
+
152
+ if (ordering._direction === 'ASC') s += ' ASC';
153
+ if (ordering._direction === 'DESC') s += ' DESC';
154
+
138
155
  return s;
139
- }
140
- else {
156
+ } else {
141
157
  return convertColumn(ordering);
142
158
  }
143
159
  }
144
- function convertTable(table) {
160
+
161
+ function convertTable(table: any): string {
145
162
  return options.nameEscape + table._$name + options.nameEscape;
146
163
  }
147
- function convertColumn(column) {
164
+
165
+ function convertColumn(column: any): string {
148
166
  let s = '';
149
167
  if (!(column._name === '*' && column._modifiers.length > 0 && column._modifiers[0].name === 'count')) {
150
168
  s += convertTable(column._table) + '.';
@@ -152,37 +170,31 @@ function createQueryConverter(paramConverter, options, engine) {
152
170
  s += convertColumnName(column);
153
171
  return convertColumnModifiers(s, column);
154
172
  }
155
- function convertColumnModifiers(s, column) {
173
+
174
+ function convertColumnModifiers(s: string, column: any): string {
156
175
  if (column._modifiers) {
157
- column._modifiers.forEach((modifier) => {
176
+ column._modifiers.forEach((modifier: any) => {
158
177
  let name = modifier.name;
159
- if (name === 'lower')
160
- s = 'LOWER(' + s + ')';
161
- else if (name === 'upper')
162
- s = 'UPPER(' + s + ')';
163
- else if (name === 'count')
164
- s = 'COUNT(' + s + ')';
165
- else if (name === 'sum')
166
- s = 'SUM(' + s + ')';
167
- else if (name === 'avg')
168
- s = 'AVG(' + s + ')';
169
- else if (name === 'min')
170
- s = 'MIN(' + s + ')';
171
- else if (name === 'max')
172
- s = 'MAX(' + s + ')';
173
- else if (name === 'as')
174
- s = s + ' AS ' + options.nameEscape + modifier.params + options.nameEscape;
178
+ if (name === 'lower') s = 'LOWER(' + s + ')';
179
+ else if (name === 'upper') s = 'UPPER(' + s + ')';
180
+ else if (name === 'count') s = 'COUNT(' + s + ')';
181
+ else if (name === 'sum') s = 'SUM(' + s + ')';
182
+ else if (name === 'avg') s = 'AVG(' + s + ')';
183
+ else if (name === 'min') s = 'MIN(' + s + ')';
184
+ else if (name === 'max') s = 'MAX(' + s + ')';
185
+ else if (name === 'as') s = s + ' AS ' + options.nameEscape + modifier.params + options.nameEscape;
175
186
  });
176
187
  }
177
188
  return s + '';
178
189
  }
179
- function convertColumnName(column) {
180
- if (column._name === '*')
181
- return column._name;
190
+
191
+ function convertColumnName(column: any): string {
192
+ if (column._name === '*') return column._name;
182
193
  let name = typeof column._name === 'string' ? column._name : column._name.name;
183
194
  return options.nameEscape + name + options.nameEscape;
184
195
  }
185
- function preprocessConditions(conditions) {
196
+
197
+ function preprocessConditions(conditions: any[]): void {
186
198
  conditions.forEach(condition => {
187
199
  if (conditions.length > 1 && condition._sibling) {
188
200
  condition._parenthesis = true;
@@ -190,8 +202,9 @@ function createQueryConverter(paramConverter, options, engine) {
190
202
  preprocessParams(condition);
191
203
  });
192
204
  }
205
+
193
206
  // this is only needed, so that the $1, $2... numbering is not reversed
194
- function preprocessParams(condition) {
207
+ function preprocessParams(condition: any): void {
195
208
  if (condition._sibling) {
196
209
  preprocessParams(condition._sibling);
197
210
  }
@@ -202,10 +215,12 @@ function createQueryConverter(paramConverter, options, engine) {
202
215
  preprocessParams(condition._child);
203
216
  }
204
217
  }
205
- function convertCondition(condition, root = false) {
218
+
219
+ function convertCondition(condition: any, root = false): string {
206
220
  if (!condition._sibling && !condition._child) {
207
221
  return convertColumnCondition(condition, condition.__param);
208
222
  }
223
+
209
224
  let s = '';
210
225
  if (condition._child) {
211
226
  s += convertCondition(condition._child);
@@ -221,12 +236,14 @@ function createQueryConverter(paramConverter, options, engine) {
221
236
  }
222
237
  return s;
223
238
  }
224
- function convertColumnCondition(condition, param) {
239
+
240
+ function convertColumnCondition(condition: any, param: string): string {
225
241
  let s = convertColumn(condition._column);
226
242
  s += getConditionString(condition, param);
227
243
  return s;
228
244
  }
229
- function getConditionString(condition, param) {
245
+
246
+ function getConditionString(condition: any, param: string): string {
230
247
  switch (condition._type) {
231
248
  case 'eq': return ' = ' + param;
232
249
  case 'ne': return ' <> ' + param;
@@ -245,40 +262,35 @@ function createQueryConverter(paramConverter, options, engine) {
245
262
  default: return '';
246
263
  }
247
264
  }
248
- function getConditionParam(condition) {
265
+
266
+ function getConditionParam(condition: any): string {
249
267
  let param = '';
250
268
  if (condition._otherColumn) {
251
269
  param = convertColumn(condition._otherColumn);
252
- }
253
- else {
254
- let _convertParam = (param) => convertParam(condition._column, param);
270
+ } else {
271
+ let _convertParam = (param: any) => convertParam(condition._column, param);
272
+
255
273
  if (condition._type === 'in' || condition._type === 'not-in') {
256
- param = condition._values.map((value) => _convertParam(value)).join(', ');
257
- }
258
- else if (condition._type === 'between' || condition._type === 'not-between') {
274
+ param = condition._values.map((value: any) => _convertParam(value)).join(', ');
275
+ } else if (condition._type === 'between' || condition._type === 'not-between') {
259
276
  param = _convertParam(condition._values[0]) + ' AND ' + _convertParam(condition._values[1]);
260
- }
261
- else if (condition._type !== 'is-null' && condition._type !== 'is-not-null') {
277
+ } else if (condition._type !== 'is-null' && condition._type !== 'is-not-null') {
262
278
  param = _convertParam(condition._values[0]);
263
279
  }
264
280
  }
265
281
  return param;
266
282
  }
267
- function convertParam(column, param) {
268
- if (param == null)
269
- return 'NULL';
283
+
284
+ function convertParam(column: any, param: any): string {
285
+ if (param == null) return 'NULL';
270
286
  return paramConverter(getTypedParam(column._type, param));
271
287
  }
272
- function getTypedParam(type, param) {
273
- if (type === 'number')
274
- return (0, type_converter_1.number)(param);
275
- else if (type === 'boolean')
276
- return (0, type_converter_1.boolean)(param);
277
- else if (type === 'date')
278
- return (0, type_converter_1.date)(param);
279
- else if (type === 'string')
280
- return (0, type_converter_1.string)(param);
288
+
289
+ function getTypedParam(type: string, param: any): any {
290
+ if (type === 'number') return number(param);
291
+ else if (type === 'boolean') return boolean(param);
292
+ else if (type === 'date') return date(param);
293
+ else if (type === 'string') return string(param);
281
294
  return param;
282
295
  }
283
- }
284
- //# sourceMappingURL=query-converter.js.map
296
+ }
@@ -0,0 +1,88 @@
1
+ import { QueryEngine } from "./types";
2
+
3
+ export function convertResult(query: any, result: any, engine: QueryEngine): any {
4
+ let rows = engine === 'pg' ? result.rows : result;
5
+ let rowCount = engine === 'pg' ? result.rowCount : result.affectedRows || result.changedRows;
6
+
7
+ if (query._action === 'select') return convertSelectResult(query, rows);
8
+ if (query._action === 'delete') return rowCount;
9
+ if (query._action === 'update') return rowCount;
10
+ if (query._action === 'insert') return convertInsertResult(result, engine);
11
+ throw new Error('Unknown query type:' + query._action);
12
+ }
13
+
14
+ function convertInsertResult(result: any, engine: QueryEngine): any {
15
+ if (engine === 'mysql') return result.insertId > 0 ? result.insertId : undefined; // mysql returns 0 for tables that have a non-autoincrement ID
16
+ if (engine === 'pg' && result.rows && result.rows.length === 1) {
17
+ let columnName = Object.keys(result.rows[0])[0];
18
+ return result.rows[0][columnName];
19
+ }
20
+ }
21
+
22
+ function convertSelectResult(query: any, rows: any[]): any {
23
+ if (query._columns && query._columns.length === 1 &&
24
+ !(query._columns[0]._name === '*' && query._columns[0]._modifiers.length === 0)) {
25
+ if (rows.length == 0) return [];
26
+ let columnName = Object.keys(rows[0])[0]; // easier than reverse engineering from the column modifiers
27
+ let values = rows.map((row: any) => row[columnName]);
28
+
29
+ if (query._columns[0]._name === '*' && query._columns[0]._modifiers.some((m: any) => m.name === 'count')) {
30
+ return values.map((value: any) => Number(value)); // string to number conversion for PG count values
31
+ }
32
+ return values;
33
+ } else {
34
+ convertAliasFields(query, rows);
35
+ return rows;
36
+ }
37
+ }
38
+
39
+ function convertAliasFields(query: any, rows: any[]): void {
40
+ let aliasByName = getColumnAliasesByName(query);
41
+ if (Object.keys(aliasByName).length === 0) return;
42
+
43
+ rows.forEach((row: any) => {
44
+ Object.keys(row).forEach((name: string) => {
45
+ if (aliasByName[name]) {
46
+ row[aliasByName[name]] = row[name];
47
+ delete row[name];
48
+ }
49
+ });
50
+ });
51
+ }
52
+
53
+ function getColumnAliasesByName(query: any): any {
54
+ let aliasByName = {} as any;
55
+
56
+ if (query._columns && query._columns.length > 0) {
57
+ query._columns.forEach((column: any) => {
58
+ if (column._name && column._name.alias && column._modifiers.length === 0) {
59
+ aliasByName[column._name.name] = column._name.alias;
60
+ } else if (column._name === '*' && column._modifiers.length === 0) {
61
+ getAliasColumnsOfTable(column._table).forEach((column: any) => {
62
+ aliasByName[column._name.name] = column._name.alias;
63
+ });
64
+ }
65
+ });
66
+ } else {
67
+ let tables = query._table ? [query._table] : query._tables;
68
+ tables.forEach((table: any) => {
69
+ getAliasColumnsOfTable(table).forEach((column: any) => {
70
+ aliasByName[column._name.name] = column._name.alias;
71
+ });
72
+
73
+ let joinTable = table._parent;
74
+ while (joinTable) {
75
+ getAliasColumnsOfTable(joinTable).forEach((column: any) => {
76
+ aliasByName[column._name.name] = column._name.alias;
77
+ });
78
+ joinTable = joinTable._parent;
79
+ }
80
+ });
81
+ }
82
+
83
+ return aliasByName;
84
+ }
85
+
86
+ function getAliasColumnsOfTable(table: any): any[] {
87
+ return Object.keys(table).map(key => table[key]).filter((column: any) => column && column._name && column._name.alias);
88
+ }
@@ -0,0 +1,7 @@
1
+ import {createQueryConverter} from "./query-converter";
2
+ import {convertSubstitutionParam} from './param-converter';
3
+ import {QueryEngine, ConverterOptions} from "./types";
4
+
5
+ export function convertQueryToSQL(query: any, options: ConverterOptions, engine: QueryEngine): string {
6
+ return createQueryConverter((param: any) => convertSubstitutionParam(param), options, engine)(query);
7
+ }
@@ -0,0 +1,29 @@
1
+ export function number(param: any): number {
2
+ let result = Number(param);
3
+ if (Number.isNaN(result)) throw new Error('Invalid number parameter in SQL query: ' + param);
4
+ return result;
5
+ }
6
+
7
+ export function boolean(param: any): boolean {
8
+ if (typeof param === 'boolean') return param;
9
+ if (param instanceof Boolean) return param.valueOf();
10
+ if (param === 'true') return true;
11
+ if (param === 'false') return false;
12
+ throw new Error('Invalid boolean parameter in SQL query: ' + param);
13
+ }
14
+
15
+ export function date(param: any): Date {
16
+ if (param instanceof Date) return param; // @ts-ignore
17
+ if (typeof param === 'number' || param instanceof Number) return new Date(param);
18
+ if (typeof param === 'string' || param instanceof String) {
19
+ if (Number.isNaN(Date.parse(String(param)))) throw new Error('Invalid date parameter in SQL query: ' + param); // @ts-ignore
20
+ return new Date(param);
21
+ }
22
+ throw new Error('Invalid date parameter in SQL query: ' + param);
23
+ }
24
+
25
+ export function string(param: any): string {
26
+ if (typeof param === 'string') return param;
27
+ if (param instanceof String) return param.valueOf();
28
+ throw new Error('Invalid string parameter in SQL query: ' + param);
29
+ }
@@ -1,5 +1,6 @@
1
1
  export type QueryEngine = 'pg' | 'mysql';
2
+
2
3
  export interface ConverterOptions {
3
- lineBreak: string;
4
- nameEscape: string;
5
- }
4
+ lineBreak: string,
5
+ nameEscape: string
6
+ }
@@ -0,0 +1,66 @@
1
+ // THIS FILE IS GENERATED - DO NOT MODIFY
2
+ export const ENV_ANGULAR_NODE_APP_WEBSITE_DOMAIN = 'taon-type-sql.example.domain.com';
3
+ export const ENV_ANGULAR_NODE_APP_WEBSITE_TITLE = 'Taon Type Sql';
4
+ export const ENV_ANGULAR_NODE_APP_RELEASE_TARGET_ARTIFACT = 'angular-node-app';
5
+ export const ENV_ANGULAR_NODE_APP_RELEASE_ENV_NAME = '__';
6
+ export const ENV_ANGULAR_NODE_APP_CONTAINER_ONLY = undefined;
7
+ export const ENV_ANGULAR_NODE_APP_CONTAINER_END = undefined;
8
+ export const ENV_ANGULAR_NODE_APP_CONTAINER_START = undefined;
9
+ export const ENV_ANGULAR_NODE_APP_CONTAINER_SKIP_RELEASED = undefined;
10
+ export const ENV_ANGULAR_NODE_APP_CONTAINER_SKIP = undefined;
11
+ export const ENV_ANGULAR_NODE_APP_INIT_BRANDING = undefined;
12
+ export const ENV_ANGULAR_NODE_APP_INIT_STRUCT = undefined;
13
+ export const ENV_ANGULAR_NODE_APP_BUILD_PWA_DISABLE_SERVICE_WORKER = undefined;
14
+ export const ENV_ANGULAR_NODE_APP_BUILD_PWA_NAME = undefined;
15
+ export const ENV_ANGULAR_NODE_APP_BUILD_PWA_SHORT_NAME = undefined;
16
+ export const ENV_ANGULAR_NODE_APP_BUILD_PWA_START_URL = undefined;
17
+ export const ENV_ANGULAR_NODE_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS = undefined;
18
+ export const ENV_ANGULAR_NODE_APP_BUILD_SSR = undefined;
19
+ export const ENV_ANGULAR_NODE_APP_BUILD_WEBSQL = undefined;
20
+ export const ENV_ANGULAR_NODE_APP_BUILD_PROD = undefined;
21
+ export const ENV_ANGULAR_NODE_APP_BUILD_OVERRIDE_OUTPUT_PATH = undefined;
22
+ export const ENV_ANGULAR_NODE_APP_BUILD_BASE_HREF = undefined;
23
+ export const ENV_ANGULAR_NODE_APP_BUILD_WATCH = undefined;
24
+ export const ENV_ANGULAR_NODE_APP_BUILD_GEN_ONLY_CLIENT_CODE = undefined;
25
+ export const ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER = undefined;
26
+ export const ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND = undefined;
27
+ export const ENV_ANGULAR_NODE_APP_RELEASE_CLI_MINIFY = undefined;
28
+ export const ENV_ANGULAR_NODE_APP_RELEASE_CLI_INCLUDE_NODE_MODULES = undefined;
29
+ export const ENV_ANGULAR_NODE_APP_RELEASE_CLI_UGLIFY = undefined;
30
+ export const ENV_ANGULAR_NODE_APP_RELEASE_CLI_OBSCURE = undefined;
31
+ export const ENV_ANGULAR_NODE_APP_RELEASE_CLI_COMPRESS = undefined;
32
+ export const ENV_ANGULAR_NODE_APP_RELEASE_NODE_BACKEND_APP_MINIFY = undefined;
33
+ export const ENV_ANGULAR_NODE_APP_RELEASE_LIB_REMOVE_DTS = undefined;
34
+ export const ENV_ANGULAR_NODE_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE = undefined;
35
+ export const ENV_ANGULAR_NODE_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE = undefined;
36
+ export const ENV_ANGULAR_NODE_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS = undefined;
37
+ export const ENV_ANGULAR_NODE_APP_RELEASE_LIB_COMPRESS = undefined;
38
+ export const ENV_ANGULAR_NODE_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES = undefined;
39
+ export const ENV_ANGULAR_NODE_APP_RELEASE_RESOLVED_NEW_VERSION = undefined;
40
+ export const ENV_ANGULAR_NODE_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE = undefined;
41
+ export const ENV_ANGULAR_NODE_APP_RELEASE_ENV_NUMBER = undefined;
42
+ export const ENV_ANGULAR_NODE_APP_RELEASE_INSTALL_LOCALLY = undefined;
43
+ export const ENV_ANGULAR_NODE_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL = undefined;
44
+ export const ENV_ANGULAR_NODE_APP_RELEASE_RELEASE_TYPE = undefined;
45
+ export const ENV_ANGULAR_NODE_APP_RELEASE_AUTO_RELEASE_USING_CONFIG = undefined;
46
+ export const ENV_ANGULAR_NODE_APP_RELEASE_AUTO_RELEASE_TASK_NAME = undefined;
47
+ export const ENV_ANGULAR_NODE_APP_RELEASE_TAON_INSTANCE_IP = undefined;
48
+ export const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_NPM_PUBLISH = undefined;
49
+ export const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_DEPLOY = undefined;
50
+ export const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_TAG_GIT_PUSH = undefined;
51
+ export const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_RELEASE_QUESTION = undefined;
52
+ export const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES = undefined;
53
+ export const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_CODE_CUTTING = undefined;
54
+ export const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_BUILDING_ARTIFACTS = undefined;
55
+ export const ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK = undefined;
56
+ export const ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS = undefined;
57
+ export const ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS = undefined;
58
+ export const ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_SKIP = undefined;
59
+ export const ENV_ANGULAR_NODE_APP_WEBSITE_USE_DOMAIN = undefined;
60
+ export const ENV_ANGULAR_NODE_APP_PURPOSE = undefined;
61
+ export const ENV_ANGULAR_NODE_APP_RECURSIVE_ACTION = undefined;
62
+ export const ENV_ANGULAR_NODE_APP_IS_CI_PROCESS = undefined;
63
+ export const ENV_ANGULAR_NODE_APP_DOCKER_ADDITIONAL_CONTAINER = undefined;
64
+ export const ENV_ANGULAR_NODE_APP_DOCKER_SKIP_START_IN_ORDER = undefined;
65
+ export const ENV_ANGULAR_NODE_APP_DOCKER_SKIP_USING_MYSQL_DB = undefined;
66
+ // THIS FILE IS GENERATED - DO NOT MODIFY
@@ -0,0 +1,66 @@
1
+ // THIS FILE IS GENERATED - DO NOT MODIFY
2
+ export const ENV_DOCS_WEBAPP_WEBSITE_DOMAIN = 'taon-type-sql.example.domain.com';
3
+ export const ENV_DOCS_WEBAPP_WEBSITE_TITLE = 'Taon Type Sql';
4
+ export const ENV_DOCS_WEBAPP_RELEASE_TARGET_ARTIFACT = 'docs-webapp';
5
+ export const ENV_DOCS_WEBAPP_RELEASE_ENV_NAME = '__';
6
+ export const ENV_DOCS_WEBAPP_CONTAINER_ONLY = undefined;
7
+ export const ENV_DOCS_WEBAPP_CONTAINER_END = undefined;
8
+ export const ENV_DOCS_WEBAPP_CONTAINER_START = undefined;
9
+ export const ENV_DOCS_WEBAPP_CONTAINER_SKIP_RELEASED = undefined;
10
+ export const ENV_DOCS_WEBAPP_CONTAINER_SKIP = undefined;
11
+ export const ENV_DOCS_WEBAPP_INIT_BRANDING = undefined;
12
+ export const ENV_DOCS_WEBAPP_INIT_STRUCT = undefined;
13
+ export const ENV_DOCS_WEBAPP_BUILD_PWA_DISABLE_SERVICE_WORKER = undefined;
14
+ export const ENV_DOCS_WEBAPP_BUILD_PWA_NAME = undefined;
15
+ export const ENV_DOCS_WEBAPP_BUILD_PWA_SHORT_NAME = undefined;
16
+ export const ENV_DOCS_WEBAPP_BUILD_PWA_START_URL = undefined;
17
+ export const ENV_DOCS_WEBAPP_BUILD_ELECTRON_SHOW_DEV_TOOLS = undefined;
18
+ export const ENV_DOCS_WEBAPP_BUILD_SSR = undefined;
19
+ export const ENV_DOCS_WEBAPP_BUILD_WEBSQL = undefined;
20
+ export const ENV_DOCS_WEBAPP_BUILD_PROD = undefined;
21
+ export const ENV_DOCS_WEBAPP_BUILD_OVERRIDE_OUTPUT_PATH = undefined;
22
+ export const ENV_DOCS_WEBAPP_BUILD_BASE_HREF = undefined;
23
+ export const ENV_DOCS_WEBAPP_BUILD_WATCH = undefined;
24
+ export const ENV_DOCS_WEBAPP_BUILD_GEN_ONLY_CLIENT_CODE = undefined;
25
+ export const ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER = undefined;
26
+ export const ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND = undefined;
27
+ export const ENV_DOCS_WEBAPP_RELEASE_CLI_MINIFY = undefined;
28
+ export const ENV_DOCS_WEBAPP_RELEASE_CLI_INCLUDE_NODE_MODULES = undefined;
29
+ export const ENV_DOCS_WEBAPP_RELEASE_CLI_UGLIFY = undefined;
30
+ export const ENV_DOCS_WEBAPP_RELEASE_CLI_OBSCURE = undefined;
31
+ export const ENV_DOCS_WEBAPP_RELEASE_CLI_COMPRESS = undefined;
32
+ export const ENV_DOCS_WEBAPP_RELEASE_NODE_BACKEND_APP_MINIFY = undefined;
33
+ export const ENV_DOCS_WEBAPP_RELEASE_LIB_REMOVE_DTS = undefined;
34
+ export const ENV_DOCS_WEBAPP_RELEASE_LIB_OBSCURE_FILE_BY_FILE = undefined;
35
+ export const ENV_DOCS_WEBAPP_RELEASE_LIB_UGLIFY_FILE_BY_FILE = undefined;
36
+ export const ENV_DOCS_WEBAPP_RELEASE_LIB_INCLUDE_SOURCE_MAPS = undefined;
37
+ export const ENV_DOCS_WEBAPP_RELEASE_LIB_COMPRESS = undefined;
38
+ export const ENV_DOCS_WEBAPP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES = undefined;
39
+ export const ENV_DOCS_WEBAPP_RELEASE_RESOLVED_NEW_VERSION = undefined;
40
+ export const ENV_DOCS_WEBAPP_RELEASE_RELEASE_VERSION_BUMP_TYPE = undefined;
41
+ export const ENV_DOCS_WEBAPP_RELEASE_ENV_NUMBER = undefined;
42
+ export const ENV_DOCS_WEBAPP_RELEASE_INSTALL_LOCALLY = undefined;
43
+ export const ENV_DOCS_WEBAPP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL = undefined;
44
+ export const ENV_DOCS_WEBAPP_RELEASE_RELEASE_TYPE = undefined;
45
+ export const ENV_DOCS_WEBAPP_RELEASE_AUTO_RELEASE_USING_CONFIG = undefined;
46
+ export const ENV_DOCS_WEBAPP_RELEASE_AUTO_RELEASE_TASK_NAME = undefined;
47
+ export const ENV_DOCS_WEBAPP_RELEASE_TAON_INSTANCE_IP = undefined;
48
+ export const ENV_DOCS_WEBAPP_RELEASE_SKIP_NPM_PUBLISH = undefined;
49
+ export const ENV_DOCS_WEBAPP_RELEASE_SKIP_DEPLOY = undefined;
50
+ export const ENV_DOCS_WEBAPP_RELEASE_SKIP_TAG_GIT_PUSH = undefined;
51
+ export const ENV_DOCS_WEBAPP_RELEASE_SKIP_RELEASE_QUESTION = undefined;
52
+ export const ENV_DOCS_WEBAPP_RELEASE_SKIP_RESOLVING_GIT_CHANGES = undefined;
53
+ export const ENV_DOCS_WEBAPP_RELEASE_SKIP_CODE_CUTTING = undefined;
54
+ export const ENV_DOCS_WEBAPP_RELEASE_SKIP_BUILDING_ARTIFACTS = undefined;
55
+ export const ENV_DOCS_WEBAPP_COPY_TO_MANAGER_BEFORE_COPY_HOOK = undefined;
56
+ export const ENV_DOCS_WEBAPP_COPY_TO_MANAGER_COPY_TO_LOCATIONS = undefined;
57
+ export const ENV_DOCS_WEBAPP_COPY_TO_MANAGER_COPY_TO_PROJECTS = undefined;
58
+ export const ENV_DOCS_WEBAPP_COPY_TO_MANAGER_SKIP = undefined;
59
+ export const ENV_DOCS_WEBAPP_WEBSITE_USE_DOMAIN = undefined;
60
+ export const ENV_DOCS_WEBAPP_PURPOSE = undefined;
61
+ export const ENV_DOCS_WEBAPP_RECURSIVE_ACTION = undefined;
62
+ export const ENV_DOCS_WEBAPP_IS_CI_PROCESS = undefined;
63
+ export const ENV_DOCS_WEBAPP_DOCKER_ADDITIONAL_CONTAINER = undefined;
64
+ export const ENV_DOCS_WEBAPP_DOCKER_SKIP_START_IN_ORDER = undefined;
65
+ export const ENV_DOCS_WEBAPP_DOCKER_SKIP_USING_MYSQL_DB = undefined;
66
+ // THIS FILE IS GENERATED - DO NOT MODIFY