ng2-rest-swagger-generator 21.0.10 → 21.0.12

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 (71) hide show
  1. package/browser/package.json +1 -1
  2. package/browser-prod/README.md +24 -0
  3. package/browser-prod/fesm2022/ng2-rest-swagger-generator-browser.mjs +416 -0
  4. package/browser-prod/fesm2022/ng2-rest-swagger-generator-browser.mjs.map +1 -0
  5. package/browser-prod/types/ng2-rest-swagger-generator-browser.d.ts +219 -0
  6. package/lib/build-info._auto-generated_.d.ts +5 -1
  7. package/lib/build-info._auto-generated_.js +6 -2
  8. package/lib/build-info._auto-generated_.js.map +1 -1
  9. package/lib/env/env.angular-node-app.d.ts +30 -29
  10. package/lib/env/env.angular-node-app.js +32 -31
  11. package/lib/env/env.angular-node-app.js.map +1 -1
  12. package/lib/env/env.docs-webapp.d.ts +30 -29
  13. package/lib/env/env.docs-webapp.js +32 -31
  14. package/lib/env/env.docs-webapp.js.map +1 -1
  15. package/lib/env/env.electron-app.d.ts +30 -29
  16. package/lib/env/env.electron-app.js +32 -31
  17. package/lib/env/env.electron-app.js.map +1 -1
  18. package/lib/env/env.mobile-app.d.ts +30 -29
  19. package/lib/env/env.mobile-app.js +32 -31
  20. package/lib/env/env.mobile-app.js.map +1 -1
  21. package/lib/env/env.npm-lib-and-cli-tool.d.ts +30 -29
  22. package/lib/env/env.npm-lib-and-cli-tool.js +32 -31
  23. package/lib/env/env.npm-lib-and-cli-tool.js.map +1 -1
  24. package/lib/env/env.vscode-plugin.d.ts +30 -29
  25. package/lib/env/env.vscode-plugin.js +32 -31
  26. package/lib/env/env.vscode-plugin.js.map +1 -1
  27. package/lib/index._auto-generated_.js +1 -1
  28. package/lib/index._auto-generated_.js.map +1 -1
  29. package/lib-prod/build-info._auto-generated_.d.ts +24 -0
  30. package/lib-prod/build-info._auto-generated_.js +30 -0
  31. package/lib-prod/build-info._auto-generated_.js.map +1 -0
  32. package/lib-prod/env/env.angular-node-app.d.ts +64 -0
  33. package/lib-prod/env/env.angular-node-app.js +71 -0
  34. package/lib-prod/env/env.angular-node-app.js.map +1 -0
  35. package/lib-prod/env/env.docs-webapp.d.ts +64 -0
  36. package/lib-prod/env/env.docs-webapp.js +71 -0
  37. package/lib-prod/env/env.docs-webapp.js.map +1 -0
  38. package/lib-prod/env/env.electron-app.d.ts +64 -0
  39. package/lib-prod/env/env.electron-app.js +71 -0
  40. package/lib-prod/env/env.electron-app.js.map +1 -0
  41. package/lib-prod/env/env.mobile-app.d.ts +64 -0
  42. package/lib-prod/env/env.mobile-app.js +71 -0
  43. package/lib-prod/env/env.mobile-app.js.map +1 -0
  44. package/lib-prod/env/env.npm-lib-and-cli-tool.d.ts +64 -0
  45. package/lib-prod/env/env.npm-lib-and-cli-tool.js +71 -0
  46. package/lib-prod/env/env.npm-lib-and-cli-tool.js.map +1 -0
  47. package/lib-prod/env/env.vscode-plugin.d.ts +64 -0
  48. package/lib-prod/env/env.vscode-plugin.js +71 -0
  49. package/lib-prod/env/env.vscode-plugin.js.map +1 -0
  50. package/lib-prod/env/index.d.ts +6 -0
  51. package/lib-prod/env/index.js +23 -0
  52. package/lib-prod/env/index.js.map +1 -0
  53. package/lib-prod/helpers.d.ts +59 -0
  54. package/lib-prod/helpers.js +397 -0
  55. package/lib-prod/helpers.js.map +1 -0
  56. package/lib-prod/index._auto-generated_.d.ts +0 -0
  57. package/lib-prod/index._auto-generated_.js +6 -0
  58. package/lib-prod/index._auto-generated_.js.map +1 -0
  59. package/lib-prod/index.d.ts +1 -0
  60. package/lib-prod/index.js +18 -0
  61. package/lib-prod/index.js.map +1 -0
  62. package/lib-prod/models.d.ts +163 -0
  63. package/lib-prod/models.js +4 -0
  64. package/lib-prod/models.js.map +1 -0
  65. package/package.json +1 -1
  66. package/tmp-environment.json +11 -5
  67. package/websql/package.json +1 -1
  68. package/websql-prod/README.md +24 -0
  69. package/websql-prod/fesm2022/ng2-rest-swagger-generator-websql.mjs +415 -0
  70. package/websql-prod/fesm2022/ng2-rest-swagger-generator-websql.mjs.map +1 -0
  71. package/websql-prod/types/ng2-rest-swagger-generator-websql.d.ts +219 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ng2-rest-swagger-generator/browser",
3
- "version": "21.0.10",
3
+ "version": "21.0.12",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.0.0",
6
6
  "@angular/core": "^21.0.0"
@@ -0,0 +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.
@@ -0,0 +1,416 @@
1
+ import { _ } from 'tnp-core';
2
+ import { CoreHelpers } from 'tnp-core/browser-prod';
3
+
4
+ class HelpersSwagger extends CoreHelpers {
5
+ static { this.SYMBOL = {
6
+ INDEX_SWG: Symbol(),
7
+ OUTPUT_FOLDER: Symbol()
8
+ }; }
9
+ static preparePaths(apis, outputBase) {
10
+ this.output = `${process.cwd()}/${outputBase}`;
11
+ this.apis = apis;
12
+ }
13
+ static prepareModel(swg, indexSwg, isHttpsEnable) {
14
+ swg[this.SYMBOL.INDEX_SWG] = indexSwg;
15
+ swg.host = swg.host && (isHttpsEnable ? 'https' : 'http') + `://${swg.host.replace(/:[0-9]*/g, '')}`;
16
+ if (!swg.basePath) {
17
+ swg.basePath = '';
18
+ }
19
+ }
20
+ /* */
21
+ /* */
22
+ /* */
23
+ /* */
24
+ /* */
25
+ /* */
26
+ /* */
27
+ /* */
28
+ /* */
29
+ /* */
30
+ /* */
31
+ /* */
32
+ /* */
33
+ /* */
34
+ /* */
35
+ /* */
36
+ /* */
37
+ /* */
38
+ /* */
39
+ /* */
40
+ /* */
41
+ /* */
42
+ static get serviceFromTag() {
43
+ const self = this;
44
+ return {
45
+ allClassNames() {
46
+ const names = [];
47
+ self.apis.map(swg => {
48
+ swg.tags.forEach(tag => {
49
+ names.push(self.serviceFromTag.className(swg, tag));
50
+ });
51
+ });
52
+ return names;
53
+ },
54
+ className(swg, tag) {
55
+ const groupFolderName = self.groupFromJSON.folderName(swg);
56
+ // console.log('groupFolderName', groupFolderName)
57
+ const className = _.upperFirst(_.camelCase(tag.name)) + 'Service';
58
+ return `${groupFolderName}${className.replace(/\//g, '')}`;
59
+ },
60
+ absoluteFilePath(swg, tag) {
61
+ return `${self.absolutePath.PathFolder_services_groupName(swg)}/${self.serviceFromTag.className(swg, tag)}.ts`;
62
+ }
63
+ };
64
+ }
65
+ static get endpoints() {
66
+ return this.apis.map(swg => {
67
+ return `${this.groupFromJSON.folderName(swg)}:'${swg.host}'`;
68
+ });
69
+ }
70
+ static get absolutePath() {
71
+ const self = this;
72
+ return {
73
+ get output() {
74
+ return self.output;
75
+ },
76
+ get PathFile_index_ts() {
77
+ const APIpath = self.output;
78
+ return `${APIpath}/index.ts`;
79
+ },
80
+ get PathFile_module_ts() {
81
+ const APIpath = self.output;
82
+ return `${APIpath}/module.ts`;
83
+ },
84
+ get PathFolder_services() {
85
+ const APIpath = self.output;
86
+ return `${APIpath}/services`;
87
+ },
88
+ get PathFile_services_index_ts() {
89
+ return `${self.absolutePath.PathFolder_services}/index.ts`;
90
+ },
91
+ PathFolder_services_groupName(swg) {
92
+ const groupFolderName = self.groupFromJSON.folderName(swg);
93
+ // console.log('groupFolderName', groupFolderName)
94
+ return `${self.absolutePath.PathFolder_services}/${groupFolderName}`;
95
+ },
96
+ PathFile_services_groupName_index_ts(swg) {
97
+ return `${self.absolutePath.PathFolder_services_groupName(swg)}/index.ts`;
98
+ },
99
+ PathFile_services_groupNAme_serviceName_ts(swg, tag) {
100
+ const serviceFileName = self.serviceFromTag.className(swg, tag);
101
+ return `${self.absolutePath.PathFolder_services_groupName(swg)}/${serviceFileName}.ts`;
102
+ }
103
+ };
104
+ }
105
+ static get groupFromJSON() {
106
+ const self = this;
107
+ return {
108
+ get allGroupNames() {
109
+ const names = [];
110
+ self.apis.map(swg => {
111
+ names.push(self.groupFromJSON.folderName(swg));
112
+ });
113
+ return names;
114
+ },
115
+ folderName(swg) {
116
+ const basePath = swg.basePath;
117
+ const index = swg[self.SYMBOL.INDEX_SWG];
118
+ return _.upperFirst(_.camelCase(basePath.trim() === '' ? `json${index}` : basePath));
119
+ }
120
+ };
121
+ }
122
+ static findTags(swg) {
123
+ const tags = [];
124
+ Object.keys(swg.paths).forEach(p => {
125
+ Object.keys(swg.paths[p]).forEach(m => {
126
+ const a = swg.paths[p][m];
127
+ if (_.isArray(a.tags)) {
128
+ a.tags.forEach(tag => {
129
+ if (tags.filter(({ name }) => name === tag).length === 0) { // @ts-ignore
130
+ tags.push({ name: tag });
131
+ }
132
+ });
133
+ }
134
+ });
135
+ });
136
+ return tags;
137
+ }
138
+ /**
139
+ * To generate get/books/{id} => get_books__id_
140
+ */
141
+ static cleanPath(path) {
142
+ return path.replace(/{/g, "_").replace(/}/g, "_").replace(/\//g, "_").replace(/-/g, "_");
143
+ }
144
+ static cleanPathModel(pathModel) {
145
+ return pathModel.replace(/\/{/g, '/:').replace(/}/g, '');
146
+ }
147
+ static swaggerTypeToJS(type, itemsType = 'any') {
148
+ return (type === 'integer') ? 'number'
149
+ : (type === 'array') ? !itemsType ? 'any' : `${this.swaggerTypeToJS(itemsType)}[]`
150
+ : (type === 'file') ? 'any' : type;
151
+ }
152
+ static getObjectDefinition(ref, swg, deep = 0) {
153
+ if (deep == 1)
154
+ return '';
155
+ if (!ref) {
156
+ console.log('Bad json $ref inside swagger');
157
+ return '';
158
+ }
159
+ let res = '';
160
+ ref = ref.replace('#/', '').replace(/\//g, '.');
161
+ let obj = _.get(swg, ref);
162
+ // if (obj.properties.viaAgentViaGroupDTOs && !getObjectDefinition.prototype.once) {
163
+ // console.log('============================================================')
164
+ // console.log('obj', obj)
165
+ // console.log('------------------------------------------------------------')
166
+ // getObjectDefinition.prototype.once = true;
167
+ _.forOwn(obj.properties, (v, k) => {
168
+ // console.log(obj)
169
+ if (v.$ref && typeof v.$ref === "string") {
170
+ res += k + ":{" + this.getObjectDefinition(v.$ref, swg, deep++) + "};\n";
171
+ }
172
+ else if (v.schema && v.schema.$ref && typeof v.schema.$ref === "string") {
173
+ res += k + ":{" + this.getObjectDefinition(v.schema.$ref, swg, deep++) + "};\n";
174
+ }
175
+ else if (v.items && v.items.$ref && typeof v.items.$ref === "string" && v.type && v.type === 'array') {
176
+ res += k + ":{" + this.getObjectDefinition(v.items.$ref, swg, deep++) + "}[];\n";
177
+ // console.log('make love here')
178
+ }
179
+ else if (v.items && v.items.$ref && typeof v.items.$ref === "string") {
180
+ res += k + ":{" + this.getObjectDefinition(v.items.$ref, swg, deep++) + "};\n";
181
+ }
182
+ else {
183
+ let isRequired = (obj.required && obj.required instanceof Array && obj.required.filter(o => o === k).length > 0);
184
+ let type = (v.enum && v.enum instanceof Array && v.enum.length > 0)
185
+ ? v.enum.map(e => '"' + e + '"').join('|') : this.swaggerTypeToJS(v.type, v.items ? v.items.type : 'any');
186
+ res += k + (!isRequired ? '?' : "") + ":" + type + ";\n";
187
+ }
188
+ });
189
+ // console.log('res', res)
190
+ // }
191
+ return res;
192
+ }
193
+ /**
194
+ * private pathes = {
195
+ * get_all_companies: new SimpleResource<
196
+ * string, A, TA, RP extends Object, QP extends Rest.UrlParams>(endpoint, model),
197
+ * get_byid_companies: new SimpleResource<
198
+ * string, A, TA, RP extends Object, QP extends Rest.UrlParams>(endpoint, model)
199
+ * }
200
+ */
201
+ static getAngularPrivatePathesByTag(swg, tag) {
202
+ let res = [];
203
+ let base = swg.basePath.replace('/', '');
204
+ let pathes = {};
205
+ _.forOwn(swg.paths, (v, k) => {
206
+ _.forOwn(v, (v2, k2) => {
207
+ if (_.isArray(v2.tags) && v2.tags.filter(f => f === tag.name).length > 0) {
208
+ let resp = v2.responses['200'] && v2.responses['200'].schema;
209
+ // if (resp) {
210
+ // TODO response handling
211
+ // console.log('resp',resp);
212
+ if (pathes[k] === void 0)
213
+ pathes[k] = {}; // @ts-ignore
214
+ let type = this.getResponseType(resp, swg);
215
+ if (type.length > 3 && type.charAt(type.length - 1) === ']' && type.charAt(type.length - 2) === '['
216
+ && !pathes[k]['array']) {
217
+ pathes[k]['array'] = type;
218
+ }
219
+ else if (k2 !== 'delete' && !pathes[k]['single']) {
220
+ pathes[k]['single'] = type;
221
+ }
222
+ // }
223
+ }
224
+ });
225
+ });
226
+ let pathResources = [];
227
+ _.forOwn(pathes, (v, p) => {
228
+ // console.log(`${p} - ${JSON.stringify(v)}`);
229
+ pathResources.push({
230
+ clean_path: this.cleanPath(p),
231
+ model: this.cleanPathModel(p),
232
+ endpoint: swg.basePath,
233
+ singleModelType: !v['single'] ? 'any' : v['single'],
234
+ multipleModelType: !v['array'] ? 'any' : v['array'],
235
+ queryParamsType: 'any',
236
+ pathParamsType: 'any'
237
+ });
238
+ });
239
+ pathResources.forEach(p => {
240
+ res.push(`${p.clean_path}: new SimpleResource<\n${p.singleModelType},\n${p.multipleModelType}\n>( Ng2RestGenModule.enpointUrls.${this.groupFromJSON.folderName(swg)}, '${p.model}' )`);
241
+ });
242
+ return `private pathes = { \n${res.join(',\n')}\n};`;
243
+ }
244
+ /*
245
+ schema": {
246
+ "type": "array",
247
+ "items": {
248
+ "$ref": "#/definitions/CompanyDTO"
249
+ }
250
+ }
251
+
252
+ "schema": {
253
+ "$ref": "#/definitions/CompanyDTO"
254
+ }
255
+ */
256
+ static getResponseType(o, swg) {
257
+ let res = '{} | any';
258
+ if (o && o.$ref && typeof o.$ref === 'string' && o.$ref.trim() !== '') {
259
+ res = "{" + this.getObjectDefinition(o.$ref, swg) + "}";
260
+ // console.log('I am object', o.$ref)
261
+ }
262
+ else if (o && o.type === 'array' && o.items && o.items.$ref &&
263
+ typeof o.items.$ref === 'string' && o.items.$ref.trim() !== '') {
264
+ res = "{" + this.getObjectDefinition(o.items.$ref, swg) + "}[]";
265
+ // console.log('I am array ', o.items.$ref)
266
+ }
267
+ // console.log('============================================================')
268
+ // console.log('type', res)
269
+ // console.log('------------------------------------------------------------')
270
+ return res;
271
+ }
272
+ /* */
273
+ /* */
274
+ /* */
275
+ /* */
276
+ /* */
277
+ /* */
278
+ /* */
279
+ /* */
280
+ /* */
281
+ /* */
282
+ /* */
283
+ /* */
284
+ /* */
285
+ /* */
286
+ /* */
287
+ /* */
288
+ /* */
289
+ /* */
290
+ /* */
291
+ /* */
292
+ /* */
293
+ /* */
294
+ /* */
295
+ /* */
296
+ /* */
297
+ /* */
298
+ /* */
299
+ /* */
300
+ /* */
301
+ /* */
302
+ /* */
303
+ /* */
304
+ /* */
305
+ /* */
306
+ /* */
307
+ /* */
308
+ /* */
309
+ /* */
310
+ /* */
311
+ /* */
312
+ /* */
313
+ /* */
314
+ /* */
315
+ /* */
316
+ /* */
317
+ /* */
318
+ /* */
319
+ /* */
320
+ /* */
321
+ /* */
322
+ /* */
323
+ /* */
324
+ /* */
325
+ /* */
326
+ /* */
327
+ /* */
328
+ /* */
329
+ /* */
330
+ /* */
331
+ /* */
332
+ /* */
333
+ /* */
334
+ /* */
335
+ /* */
336
+ /* */
337
+ /* */
338
+ /* */
339
+ /* */
340
+ /* */
341
+ /* */
342
+ /* */
343
+ /* */
344
+ /* */
345
+ /* */
346
+ /* */
347
+ /* */
348
+ /* */
349
+ /* */
350
+ /* */
351
+ /* */
352
+ /* */
353
+ /* */
354
+ /* */
355
+ /* */
356
+ /* */
357
+ /* */
358
+ /* */
359
+ /* */
360
+ /* */
361
+ /* */
362
+ /* */
363
+ /* */
364
+ /* */
365
+ /* */
366
+ /* */
367
+ /* */
368
+ /* */
369
+ /* */
370
+ /* */
371
+ /* */
372
+ /* */
373
+ /* */
374
+ /* */
375
+ /* */
376
+ /* */
377
+ /* */
378
+ /* */
379
+ /* */
380
+ /* */
381
+ /* */
382
+ /* */
383
+ /* */
384
+ /* */
385
+ /* */
386
+ /* */
387
+ /* */
388
+ /* */
389
+ /* */
390
+ /* */
391
+ /* */
392
+ /* */
393
+ /* */
394
+ /* */
395
+ /* */
396
+ /* */
397
+ /* */
398
+ /* */
399
+ /* */
400
+ /* */
401
+ /* */
402
+ static { this.count1 = 0; }
403
+ static recreateSummary(summary) {
404
+ // if (!summary) {
405
+ // return 'SummaryExample' + (count1++)
406
+ // }
407
+ return summary;
408
+ }
409
+ }
410
+
411
+ /**
412
+ * Generated bundle index. Do not edit.
413
+ */
414
+
415
+ export { HelpersSwagger };
416
+ //# sourceMappingURL=ng2-rest-swagger-generator-browser.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng2-rest-swagger-generator-browser.mjs","sources":["../../../tmp-libs-for-dist-prod/ng2-rest-swagger-generator/projects/ng2-rest-swagger-generator/src/lib/helpers.ts","../../../tmp-libs-for-dist-prod/ng2-rest-swagger-generator/projects/ng2-rest-swagger-generator/src/ng2-rest-swagger-generator-browser.ts"],"sourcesContent":["import {\n path,\n/* */\n/* */\n \n _\n} from 'tnp-core';\nimport { Models } from './models';\nimport { CoreHelpers as TnpHelpers } from 'tnp-core/browser-prod';\nimport { Helpers } from 'tnp-helpers/browser-prod';\n\n\nexport class HelpersSwagger extends TnpHelpers {\n\n static SYMBOL = {\n INDEX_SWG: Symbol(),\n OUTPUT_FOLDER: Symbol()\n }\n\n private static output: string;\n private static apis: Models.Swagger.SwaggerModel[];\n static preparePaths(apis: Models.Swagger.SwaggerModel[], outputBase: string) {\n this.output = `${process.cwd()}/${outputBase}`\n this.apis = apis;\n }\n\n static prepareModel(swg: Models.Swagger.SwaggerModel, indexSwg: number, isHttpsEnable: boolean) {\n swg[this.SYMBOL.INDEX_SWG] = indexSwg;\n\n swg.host = swg.host && (isHttpsEnable ? 'https' : 'http') + `://${swg.host.replace(/:[0-9]*/g, '')}`\n if (!swg.basePath) {\n swg.basePath = ''\n }\n }\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n\n static get serviceFromTag() {\n const self = this;\n\n\n return {\n allClassNames() {\n const names = []\n self.apis.map(swg => {\n swg.tags.forEach(tag => { // @ts-ignore\n names.push(self.serviceFromTag.className(swg, tag))\n })\n })\n return names;\n },\n className(swg: Models.Swagger.SwaggerModel, tag: Models.Swagger.SwaggerTag) {\n const groupFolderName = self.groupFromJSON.folderName(swg)\n // console.log('groupFolderName', groupFolderName)\n const className = _.upperFirst(_.camelCase(tag.name)) + 'Service';\n return `${groupFolderName}${className.replace(/\\//g, '')}`;\n },\n absoluteFilePath(swg: Models.Swagger.SwaggerModel, tag: Models.Swagger.SwaggerTag) {\n\n return `${self.absolutePath.PathFolder_services_groupName(swg)}/${self.serviceFromTag.className(swg, tag)}.ts`;\n }\n }\n }\n\n static get endpoints() {\n return this.apis.map(swg => {\n return `${this.groupFromJSON.folderName(swg)}:'${swg.host}'`\n })\n }\n\n\n\n static get absolutePath() {\n const self = this;\n\n\n return {\n get output() {\n return self.output;\n },\n\n get PathFile_index_ts() {\n const APIpath = self.output;\n return `${APIpath}/index.ts`;\n },\n get PathFile_module_ts() {\n const APIpath = self.output;\n return `${APIpath}/module.ts`;\n },\n\n get PathFolder_services() {\n const APIpath = self.output;\n return `${APIpath}/services`;\n },\n\n get PathFile_services_index_ts() {\n return `${self.absolutePath.PathFolder_services}/index.ts`;\n },\n\n PathFolder_services_groupName(swg: Models.Swagger.SwaggerModel) {\n const groupFolderName = self.groupFromJSON.folderName(swg)\n // console.log('groupFolderName', groupFolderName)\n return `${self.absolutePath.PathFolder_services}/${groupFolderName}`;\n },\n\n PathFile_services_groupName_index_ts(swg: Models.Swagger.SwaggerModel) {\n return `${self.absolutePath.PathFolder_services_groupName(swg)}/index.ts`;\n },\n\n PathFile_services_groupNAme_serviceName_ts(swg: Models.Swagger.SwaggerModel, tag: Models.Swagger.SwaggerTag) {\n const serviceFileName = self.serviceFromTag.className(swg, tag);\n return `${self.absolutePath.PathFolder_services_groupName(swg)}/${serviceFileName}.ts`;\n }\n\n }\n }\n\n static get groupFromJSON() {\n const self = this;\n return {\n get allGroupNames() {\n const names = []\n self.apis.map(swg => { // @ts-ignore\n names.push(self.groupFromJSON.folderName(swg))\n })\n return names;\n },\n folderName(swg: Models.Swagger.SwaggerModel) {\n const basePath: string = swg.basePath;\n const index: number = swg[self.SYMBOL.INDEX_SWG];\n return _.upperFirst(_.camelCase(basePath.trim() === '' ? `json${index}` : basePath));\n }\n }\n }\n\n static findTags(swg: Models.Swagger.SwaggerModel) {\n const tags = []\n Object.keys(swg.paths).forEach(p => {\n Object.keys(swg.paths[p]).forEach(m => {\n const a = swg.paths[p][m];\n if (_.isArray(a.tags)) {\n a.tags.forEach(tag => {\n if (tags.filter(({ name }) => name === tag).length === 0) { // @ts-ignore\n tags.push({ name: tag })\n }\n });\n }\n })\n })\n return tags;\n }\n\n\n\n\n\n\n /**\n * To generate get/books/{id} => get_books__id_\n */\n static cleanPath(path: string) {\n return path.replace(/{/g, \"_\").replace(/}/g, \"_\").replace(/\\//g, \"_\").replace(/-/g, \"_\");\n }\n\n\n static cleanPathModel(pathModel: string) {\n return pathModel.replace(/\\/{/g, '/:').replace(/}/g, '');\n }\n\n\n static swaggerTypeToJS(type: \"string\" | \"number\" | \"integer\" | \"boolean\" | \"array\" | \"file\", itemsType: any = 'any') {\n return (type === 'integer') ? 'number'\n : (type === 'array') ? !itemsType ? 'any' : `${this.swaggerTypeToJS(itemsType)}[]`\n : (type === 'file') ? 'any' : type;\n }\n\n\n\n static getObjectDefinition(ref: string, swg: Models.Swagger.SwaggerModel, deep = 0): string {\n if (deep == 1) return '';\n if (!ref) {\n console.log('Bad json $ref inside swagger')\n return '';\n }\n let res = '';\n ref = ref.replace('#/', '').replace(/\\//g, '.');\n\n let obj: Models.Swagger.SwaggerDef = <Models.Swagger.SwaggerDef>_.get(swg, ref);\n\n // if (obj.properties.viaAgentViaGroupDTOs && !getObjectDefinition.prototype.once) {\n // console.log('============================================================')\n // console.log('obj', obj)\n // console.log('------------------------------------------------------------')\n // getObjectDefinition.prototype.once = true;\n\n\n\n _.forOwn(obj.properties, (v, k) => {\n // console.log(obj)\n if (v.$ref && typeof v.$ref === \"string\") {\n res += k + \":{\" + this.getObjectDefinition(v.$ref, swg, deep++) + \"};\\n\";\n } else if (v.schema && v.schema.$ref && typeof v.schema.$ref === \"string\") {\n res += k + \":{\" + this.getObjectDefinition(v.schema.$ref, swg, deep++) + \"};\\n\";\n\n } else if (v.items && v.items.$ref && typeof v.items.$ref === \"string\" && v.type && v.type === 'array') {\n res += k + \":{\" + this.getObjectDefinition(v.items.$ref, swg, deep++) + \"}[];\\n\";\n // console.log('make love here')\n\n } else if (v.items && v.items.$ref && typeof v.items.$ref === \"string\") {\n res += k + \":{\" + this.getObjectDefinition(v.items.$ref, swg, deep++) + \"};\\n\";\n } else {\n let isRequired = (obj.required && obj.required instanceof Array && obj.required.filter(o => o === k).length > 0)\n let type = (v.enum && v.enum instanceof Array && v.enum.length > 0)\n ? v.enum.map(e => '\"' + e + '\"').join('|') : this.swaggerTypeToJS(v.type, v.items ? v.items.type : 'any');\n\n res += k + (!isRequired ? '?' : \"\") + \":\" + type + \";\\n\"\n }\n });\n // console.log('res', res)\n // }\n\n return res;\n }\n\n\n\n /**\n * private pathes = {\n * get_all_companies: new SimpleResource<\n * string, A, TA, RP extends Object, QP extends Rest.UrlParams>(endpoint, model),\n * get_byid_companies: new SimpleResource<\n * string, A, TA, RP extends Object, QP extends Rest.UrlParams>(endpoint, model)\n * }\n */\n static getAngularPrivatePathesByTag(swg: Models.Swagger.SwaggerModel, tag: Models.Swagger.SwaggerTag): string {\n let res: string[] = [];\n let base = swg.basePath.replace('/', '');\n\n let pathes: Object = {};\n _.forOwn(swg.paths, (v, k) => {\n _.forOwn(v, (v2, k2) => {\n if (_.isArray(v2.tags) && v2.tags.filter(f => f === tag.name).length > 0) {\n let resp = v2.responses['200'] && v2.responses['200'].schema;\n\n // if (resp) {\n // TODO response handling\n // console.log('resp',resp);\n if (pathes[k] === void 0) pathes[k] = {}; // @ts-ignore\n let type = this.getResponseType(resp, swg);\n\n if (type.length > 3 && type.charAt(type.length - 1) === ']' && type.charAt(type.length - 2) === '['\n && !pathes[k]['array']) {\n pathes[k]['array'] = type;\n } else if (k2 !== 'delete' && !pathes[k]['single']) {\n pathes[k]['single'] = type;\n }\n // }\n\n\n }\n })\n })\n\n let pathResources: Models.PathResource[] = [];\n\n _.forOwn(pathes, (v, p) => {\n // console.log(`${p} - ${JSON.stringify(v)}`);\n pathResources.push({\n clean_path: this.cleanPath(p),\n model: this.cleanPathModel(p),\n endpoint: swg.basePath,\n singleModelType: !v['single'] ? 'any' : v['single'],\n multipleModelType: !v['array'] ? 'any' : v['array'],\n queryParamsType: 'any',\n pathParamsType: 'any'\n })\n })\n\n\n pathResources.forEach(p => {\n res.push(`${p.clean_path}: new SimpleResource<\\n${p.singleModelType},\\n${p.multipleModelType}\\n>( Ng2RestGenModule.enpointUrls.${this.groupFromJSON.folderName(swg)}, '${p.model}' )`);\n })\n\n return `private pathes = { \\n${res.join(',\\n')}\\n};`\n }\n\n\n /*\n schema\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/CompanyDTO\"\n }\n }\n\n \"schema\": {\n \"$ref\": \"#/definitions/CompanyDTO\"\n }\n */\n\n static getResponseType(o: Models.Swagger.ObjSchema, swg: Models.Swagger.SwaggerModel) {\n let res = '{} | any';\n if (o && o.$ref && typeof o.$ref === 'string' && o.$ref.trim() !== '') {\n res = \"{\" + this.getObjectDefinition(o.$ref, swg) + \"}\";\n // console.log('I am object', o.$ref)\n } else if (o && o.type === 'array' && o.items && o.items.$ref &&\n typeof o.items.$ref === 'string' && o.items.$ref.trim() !== '') {\n res = \"{\" + this.getObjectDefinition(o.items.$ref, swg) + \"}[]\";\n // console.log('I am array ', o.items.$ref)\n }\n // console.log('============================================================')\n // console.log('type', res)\n // console.log('------------------------------------------------------------')\n return res;\n }\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n private static count1 = 0;\n\n static recreateSummary(summary: string) {\n // if (!summary) {\n // return 'SummaryExample' + (count1++)\n // }\n return summary;\n }\n\n\n\n // type Params = { query: any[], path: any[], body: any[] };\n // type ParamsType = { query: string, path: string, body: string };\n\n // export function getSingleParamsTypeForPath(tag: string, swg: SwaggerModel): ParamsType {\n // let res: ParamsType = <ParamsType>{};\n\n // for (let urlpath in swg.paths) {\n\n // for (let methodhttp in swg.paths[urlpath]) {\n // let m = swg.paths[urlpath][methodhttp];\n // if (m.tags.filter(t => t === tag).length === 1) {\n\n // let params: Params = <Params>{};\n // params.query = [];\n // params.path = [];\n // params.body = [];\n\n // if (m.parameters) m.parameters.forEach(param => {\n // if (param.in === 'body') {\n // params.body.push({\n // name: param.name,\n // type: \"{\" + SwaggerHelpers.getObjectDefinition(param.schema.$ref, swg) + \"}\",\n // required: param.required\n // })\n // } else {\n // params[param.in].push({\n // name: param.name,\n // type: SwaggerHelpers.swaggerTypeToJS(param.type),\n // required: param.required\n // })\n // }\n\n // })\n\n // }\n // }\n // }\n\n // return res;\n // }\n\n\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["TnpHelpers"],"mappings":";;;AAYM,MAAO,cAAe,SAAQA,WAAU,CAAA;AAErC,IAAA,SAAA,IAAA,CAAA,MAAM,GAAG;QACd,SAAS,EAAE,MAAM,EAAE;QACnB,aAAa,EAAE,MAAM;KACtB,CAAA;AAID,IAAA,OAAO,YAAY,CAAC,IAAmC,EAAE,UAAkB,EAAA;QACzE,IAAI,CAAC,MAAM,GAAG,CAAA,EAAG,OAAO,CAAC,GAAG,EAAE,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE;AAC9C,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IAClB;AAEA,IAAA,OAAO,YAAY,CAAC,GAAgC,EAAE,QAAgB,EAAE,aAAsB,EAAA;QAC5F,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ;AAErC,QAAA,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,GAAG,OAAO,GAAG,MAAM,IAAI,CAAA,GAAA,EAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE;AACpG,QAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AACjB,YAAA,GAAG,CAAC,QAAQ,GAAG,EAAE;QACnB;IACF;;;;;;;;;;;;;;;;;;;;;;;AA2BA,IAAA,WAAW,cAAc,GAAA;QACvB,MAAM,IAAI,GAAG,IAAI;QAGjB,OAAO;YACL,aAAa,GAAA;gBACX,MAAM,KAAK,GAAG,EAAE;AAChB,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAG;AAClB,oBAAA,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAG;AACrB,wBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrD,oBAAA,CAAC,CAAC;AACJ,gBAAA,CAAC,CAAC;AACF,gBAAA,OAAO,KAAK;YACd,CAAC;YACD,SAAS,CAAC,GAAgC,EAAE,GAA8B,EAAA;gBACxE,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC;;AAE1D,gBAAA,MAAM,SAAS,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS;AACjE,gBAAA,OAAO,CAAA,EAAG,eAAe,CAAA,EAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA,CAAE;YAC5D,CAAC;YACD,gBAAgB,CAAC,GAAgC,EAAE,GAA8B,EAAA;gBAE/E,OAAO,CAAA,EAAG,IAAI,CAAC,YAAY,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA,GAAA,CAAK;YAChH;SACD;IACH;AAEA,IAAA,WAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAG;AACzB,YAAA,OAAO,CAAA,EAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA,EAAA,EAAK,GAAG,CAAC,IAAI,GAAG;AAC9D,QAAA,CAAC,CAAC;IACJ;AAIA,IAAA,WAAW,YAAY,GAAA;QACrB,MAAM,IAAI,GAAG,IAAI;QAGjB,OAAO;AACL,YAAA,IAAI,MAAM,GAAA;gBACR,OAAO,IAAI,CAAC,MAAM;YACpB,CAAC;AAED,YAAA,IAAI,iBAAiB,GAAA;AACnB,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM;gBAC3B,OAAO,CAAA,EAAG,OAAO,CAAA,SAAA,CAAW;YAC9B,CAAC;AACD,YAAA,IAAI,kBAAkB,GAAA;AACpB,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM;gBAC3B,OAAO,CAAA,EAAG,OAAO,CAAA,UAAA,CAAY;YAC/B,CAAC;AAED,YAAA,IAAI,mBAAmB,GAAA;AACrB,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM;gBAC3B,OAAO,CAAA,EAAG,OAAO,CAAA,SAAA,CAAW;YAC9B,CAAC;AAED,YAAA,IAAI,0BAA0B,GAAA;AAC5B,gBAAA,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,WAAW;YAC5D,CAAC;AAED,YAAA,6BAA6B,CAAC,GAAgC,EAAA;gBAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC;;gBAE1D,OAAO,CAAA,EAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAA,CAAA,EAAI,eAAe,CAAA,CAAE;YACtE,CAAC;AAED,YAAA,oCAAoC,CAAC,GAAgC,EAAA;gBACnE,OAAO,CAAA,EAAG,IAAI,CAAC,YAAY,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAA,SAAA,CAAW;YAC3E,CAAC;YAED,0CAA0C,CAAC,GAAgC,EAAE,GAA8B,EAAA;AACzG,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;AAC/D,gBAAA,OAAO,CAAA,EAAG,IAAI,CAAC,YAAY,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAA,CAAA,EAAI,eAAe,CAAA,GAAA,CAAK;YACxF;SAED;IACH;AAEA,IAAA,WAAW,aAAa,GAAA;QACtB,MAAM,IAAI,GAAG,IAAI;QACjB,OAAO;AACL,YAAA,IAAI,aAAa,GAAA;gBACf,MAAM,KAAK,GAAG,EAAE;AAChB,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAG;AAClB,oBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAChD,gBAAA,CAAC,CAAC;AACF,gBAAA,OAAO,KAAK;YACd,CAAC;AACD,YAAA,UAAU,CAAC,GAAgC,EAAA;AACzC,gBAAA,MAAM,QAAQ,GAAW,GAAG,CAAC,QAAQ;gBACrC,MAAM,KAAK,GAAW,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;gBAChD,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAA,IAAA,EAAO,KAAK,CAAA,CAAE,GAAG,QAAQ,CAAC,CAAC;YACtF;SACD;IACH;IAEA,OAAO,QAAQ,CAAC,GAAgC,EAAA;QAC9C,MAAM,IAAI,GAAG,EAAE;AACf,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;AACjC,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;gBACpC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACrB,oBAAA,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAG;wBACnB,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;4BACxD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;wBAC1B;AACF,oBAAA,CAAC,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACb;AAOA;;AAEG;IACH,OAAO,SAAS,CAAC,IAAY,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;IAC1F;IAGA,OAAO,cAAc,CAAC,SAAiB,EAAA;AACrC,QAAA,OAAO,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IAC1D;AAGA,IAAA,OAAO,eAAe,CAAC,IAAoE,EAAE,YAAiB,KAAK,EAAA;QACjH,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI;cAC1B,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,SAAS,GAAG,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA,EAAA;AAC5E,kBAAE,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,GAAG,IAAI;IACxC;IAIA,OAAO,mBAAmB,CAAC,GAAW,EAAE,GAAgC,EAAE,IAAI,GAAG,CAAC,EAAA;QAChF,IAAI,IAAI,IAAI,CAAC;AAAE,YAAA,OAAO,EAAE;QACxB,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;AAC3C,YAAA,OAAO,EAAE;QACX;QACA,IAAI,GAAG,GAAG,EAAE;AACZ,QAAA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;QAE/C,IAAI,GAAG,GAAyD,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;;;;;;AAU/E,QAAA,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;;YAEhC,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACxC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM;YAC1E;AAAO,iBAAA,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACzE,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM;YAEjF;AAAO,iBAAA,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;gBACtG,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,QAAQ;;YAGlF;AAAO,iBAAA,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACtE,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM;YAChF;iBAAO;AACL,gBAAA,IAAI,UAAU,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,YAAY,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChH,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,YAAY,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;sBAC9D,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;gBAE3G,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK;YAC1D;AACF,QAAA,CAAC,CAAC;;;AAIF,QAAA,OAAO,GAAG;IACZ;AAIA;;;;;;;AAOG;AACH,IAAA,OAAO,4BAA4B,CAAC,GAAgC,EAAE,GAA8B,EAAA;QAClG,IAAI,GAAG,GAAa,EAAE;AACtB,QAAA,IAAI,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QAExC,IAAI,MAAM,GAAW,EAAE;AACvB,QAAA,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;YAC3B,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAI;AACrB,gBAAA,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACxE,oBAAA,IAAI,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM;;;;AAK5D,oBAAA,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC;AAAE,wBAAA,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;oBACzC,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC;AAE1C,oBAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK;2BAC3F,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;wBACxB,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI;oBAC3B;AAAO,yBAAA,IAAI,EAAE,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;wBAClD,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI;oBAC5B;;gBAIF;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,IAAI,aAAa,GAA0B,EAAE;QAE7C,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;;YAExB,aAAa,CAAC,IAAI,CAAC;AACjB,gBAAA,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC7B,gBAAA,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC7B,QAAQ,EAAE,GAAG,CAAC,QAAQ;AACtB,gBAAA,eAAe,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC;AACnD,gBAAA,iBAAiB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC;AACnD,gBAAA,eAAe,EAAE,KAAK;AACtB,gBAAA,cAAc,EAAE;AACjB,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AAGF,QAAA,aAAa,CAAC,OAAO,CAAC,CAAC,IAAG;AACxB,YAAA,GAAG,CAAC,IAAI,CAAC,CAAA,EAAG,CAAC,CAAC,UAAU,CAAA,uBAAA,EAA0B,CAAC,CAAC,eAAe,CAAA,GAAA,EAAM,CAAC,CAAC,iBAAiB,CAAA,kCAAA,EAAqC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA,GAAA,EAAM,CAAC,CAAC,KAAK,CAAA,GAAA,CAAK,CAAC;AACxL,QAAA,CAAC,CAAC;QAEF,OAAO,CAAA,qBAAA,EAAwB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;IACtD;AAGA;;;;;;;;;;;AAWG;AAEH,IAAA,OAAO,eAAe,CAAC,CAA2B,EAAE,GAAgC,EAAA;QAClF,IAAI,GAAG,GAAG,UAAU;QACpB,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AACrE,YAAA,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG;;QAEzD;AAAO,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI;AAC3D,YAAA,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AAChE,YAAA,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK;;QAEjE;;;;AAIA,QAAA,OAAO,GAAG;IACZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAuIe,IAAA,CAAA,MAAM,GAAG,CAAC,CAAC;IAE1B,OAAO,eAAe,CAAC,OAAe,EAAA;;;;AAIpC,QAAA,OAAO,OAAO;IAChB;;;AC/dF;;AAEG;;;;"}