taon 18.0.22 → 18.0.23

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/assets/shared/shared_folder_info.txt +1 -1
  2. package/browser/esm2022/lib/create-context.mjs +8 -3
  3. package/browser/esm2022/lib/endpoint-context.mjs +12 -2
  4. package/browser/esm2022/lib/models.mjs +1 -1
  5. package/browser/esm2022/lib/orm.mjs +1 -1
  6. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +24 -26
  7. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +4 -9
  8. package/browser/fesm2022/taon.mjs +46 -35
  9. package/browser/fesm2022/taon.mjs.map +1 -1
  10. package/browser/lib/endpoint-context.d.ts +1 -0
  11. package/browser/lib/models.d.ts +1 -0
  12. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +1 -2
  13. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +0 -3
  14. package/client/esm2022/lib/create-context.mjs +8 -3
  15. package/client/esm2022/lib/endpoint-context.mjs +12 -2
  16. package/client/esm2022/lib/models.mjs +1 -1
  17. package/client/esm2022/lib/orm.mjs +1 -1
  18. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +24 -26
  19. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +4 -9
  20. package/client/fesm2022/taon.mjs +46 -35
  21. package/client/fesm2022/taon.mjs.map +1 -1
  22. package/client/lib/endpoint-context.d.ts +1 -0
  23. package/client/lib/models.d.ts +1 -0
  24. package/client/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +1 -2
  25. package/client/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +0 -3
  26. package/lib/base-classes/base-migration.d.ts +2 -2
  27. package/lib/base-classes/base-repository.d.ts +4 -4
  28. package/lib/base-classes/base-subscriber-for-entity.d.ts +2 -2
  29. package/lib/context-db-migrations.d.ts +2 -2
  30. package/lib/create-context.js +8 -2
  31. package/lib/create-context.js.map +1 -1
  32. package/lib/decorators/classes/entity-decorator.d.ts +2 -2
  33. package/lib/decorators/http/http-decorators.d.ts +2 -2
  34. package/lib/decorators/http/http-methods-decorators.d.ts +3 -3
  35. package/lib/endpoint-context.d.ts +2 -1
  36. package/lib/endpoint-context.js +93 -83
  37. package/lib/endpoint-context.js.map +1 -1
  38. package/lib/formly/fromly.d.ts +2 -2
  39. package/lib/models.d.ts +4 -3
  40. package/lib/models.js.map +1 -1
  41. package/lib/orm.d.ts +7 -3
  42. package/lib/orm.js +11 -2
  43. package/lib/orm.js.map +1 -1
  44. package/lib/ui/directives/index.js +2 -2
  45. package/lib/ui/directives/taon-long-press.directive.d.ts +1 -1
  46. package/lib/ui/index.js +2 -2
  47. package/lib/ui/taon-admin-mode-configuration/index.js +2 -2
  48. package/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +2 -3
  49. package/lib/ui/taon-github-fork-me-corner/index.js +2 -2
  50. package/lib/ui/taon-github-fork-me-ribbon/index.js +2 -2
  51. package/lib/ui/taon-notifications/taon-notifications.models.js +2 -2
  52. package/lib/ui/taon-progress-bar/index.js +2 -2
  53. package/lib/ui/taon-session-passcode/index.js +2 -2
  54. package/lib/ui/taon-table/index.js +2 -2
  55. package/lib/ui/taon-table/taon-table.component.d.ts +1 -1
  56. package/lib/ui/taon.models.d.ts +2 -2
  57. package/package.json +7 -7
  58. package/tmp-environment.json +30 -29
  59. package/websql/esm2022/lib/create-context.mjs +8 -3
  60. package/websql/esm2022/lib/endpoint-context.mjs +24 -15
  61. package/websql/esm2022/lib/models.mjs +1 -1
  62. package/websql/esm2022/lib/orm.mjs +7 -2
  63. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +24 -26
  64. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +4 -9
  65. package/websql/fesm2022/taon.mjs +62 -48
  66. package/websql/fesm2022/taon.mjs.map +1 -1
  67. package/websql/lib/endpoint-context.d.ts +1 -0
  68. package/websql/lib/models.d.ts +1 -0
  69. package/websql/lib/orm.d.ts +5 -1
  70. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +1 -2
  71. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +0 -3
@@ -30,6 +30,7 @@ export declare class EndpointContext {
30
30
  routePath: string;
31
31
  method: Models.Http.Rest.HttpMethod;
32
32
  }[];
33
+ readonly skipWritingServerRoutes: boolean;
33
34
  private injectableTypesfromContexts;
34
35
  private allTypesfromContexts;
35
36
  expressApp: Application;
@@ -108,6 +108,7 @@ export declare namespace Models {
108
108
  subscribers?: SUBSCRIBERS;
109
109
  migrations?: MIGRATIONS;
110
110
  session?: ISession;
111
+ skipWritingServerRoutes?: boolean;
111
112
  productionMode?: boolean;
112
113
  abstract?: boolean;
113
114
  logs?: boolean | ConnectionOptionsLogs;
@@ -7,7 +7,6 @@ import { Subject } from 'rxjs';
7
7
  import * as i0 from "@angular/core";
8
8
  export declare class TaonAdminModeConfigurationComponent implements OnInit {
9
9
  private breakpointsService;
10
- admin: TaonAdminService;
11
10
  $destroy: Subject<unknown>;
12
11
  readonly cdr: ChangeDetectorRef;
13
12
  readonly taonAdminService: TaonAdminService;
@@ -32,7 +31,7 @@ export declare class TaonAdminModeConfigurationComponent implements OnInit {
32
31
  taonAdminModeConfigurationData: any;
33
32
  get opened(): boolean;
34
33
  set opened(v: boolean);
35
- constructor(breakpointsService: BreakpointsService, admin: TaonAdminService);
34
+ constructor(breakpointsService: BreakpointsService);
36
35
  ngOnInit(): Promise<void>;
37
36
  ngAfterViewInit(): void;
38
37
  ngOnDestroy(): void;
@@ -1,5 +1,4 @@
1
1
  // @ts-nocheck
2
- import * as i0 from "@angular/core";
3
2
  export declare class TaonAdminService {
4
3
  private static _instance;
5
4
  static get Instance(): TaonAdminService;
@@ -20,6 +19,4 @@ export declare class TaonAdminService {
20
19
  hide(): void;
21
20
  show(): void;
22
21
  logout(): void;
23
- static ɵfac: i0.ɵɵFactoryDeclaration<TaonAdminService, never>;
24
- static ɵprov: i0.ɵɵInjectableDeclaration<TaonAdminService>;
25
22
  }
@@ -1,4 +1,4 @@
1
- import { Helpers } from 'tnp-core/browser';
1
+ import { Helpers, UtilsOs } from 'tnp-core/browser';
2
2
  import { EndpointContext } from './endpoint-context';
3
3
  import { ENV } from './env';
4
4
  import { TaonAdminService } from './ui/taon-admin-mode-configuration/taon-admin.service';
@@ -81,9 +81,14 @@ export const createContext = (configFn) => {
81
81
  keepWebsqlDbDataAfterReload =
82
82
  TaonAdminService.Instance?.keepWebsqlDbDataAfterReload;
83
83
  if (!Helpers.isNode && keepWebsqlDbDataAfterReload) {
84
- Helpers.info(`[taon] Keep websql data after reload`);
84
+ !UtilsOs.isRunningInCliMode() &&
85
+ Helpers.info(`[taon] Keeping websql data after reload ` +
86
+ `(context=${endpointContextRef.contextName}).`);
85
87
  }
86
88
  else {
89
+ !UtilsOs.isRunningInCliMode() &&
90
+ Helpers.info(`[taon] Dropping all tables and data ` +
91
+ `(context=${endpointContextRef.contextName}).`);
87
92
  await endpointContextRef.reinitControllers();
88
93
  }
89
94
  ///#region TODO this may be usefull but for now
@@ -119,4 +124,4 @@ export const createContext = (configFn) => {
119
124
  };
120
125
  ;
121
126
  ({}); // @--end-of-file-for-module=taon lib/create-context.ts
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90YW9uL3Byb2plY3RzL3Rhb24vc3JjL2xpYi9jcmVhdGUtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR3JELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFNUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFPekYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBVzNCLFFBVUMsRUFDRCxFQUFFO0lBQ0YsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTNCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRWpFLE1BQU0sR0FBRyxHQUFHO1FBRVYsS0FBSyxFQUFFO1lBbUJMLElBQUksV0FBVztnQkFDYixPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUM7WUFDNUIsQ0FBQztZQUNELElBQUksWUFBWTtnQkFDZCxPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFDN0IsQ0FBQztZQUNELElBQUksU0FBUztnQkFDWCxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUM7WUFDMUIsQ0FBQztZQUNELElBQUksV0FBVztnQkFDYixPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUM7WUFDNUIsQ0FBQztZQUNELElBQUksVUFBVTtnQkFDWixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDM0IsQ0FBQztTQUNGO1FBR0QsSUFBSSxRQUFRO1lBQ1YsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ3pCLENBQUM7UUFDRCxJQUFJLFdBQVc7WUFD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Q0wsSUFBSSxNQUFNO29CQUNSLE9BQU8sa0JBQWtCLENBQUMsY0FBYyxDQUFDO2dCQUMzQyxDQUFDO2dCQUNELElBQUksTUFBTTtvQkFDUixPQUFPLGtCQUFrQixDQUFDLGNBQWMsQ0FBQztnQkFDM0MsQ0FBQzthQUNGLENBQUM7UUFDSixDQUFDO0tBQ0YsQ0FBQztJQUNGLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDO0FBR0QsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx1REFBdUQiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBFbmRwb2ludENvbnRleHQgfSBmcm9tICcuL2VuZHBvaW50LWNvbnRleHQnO1xuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5pbXBvcnQgeyBFTlYgfSBmcm9tICcuL2Vudic7XG5cbmltcG9ydCB7IFRhb25BZG1pblNlcnZpY2UgfSBmcm9tICcuL3VpL3Rhb24tYWRtaW4tbW9kZS1jb25maWd1cmF0aW9uL3Rhb24tYWRtaW4uc2VydmljZSc7XG5cblxuXG5cblxuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29udGV4dCA9IDxcblxuICBDVFggZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+LFxuICBDVFJMIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55PixcbiAgRU5USVRZIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55PixcbiAgUkVQTyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueT4sXG4gIFBST1ZJREVSIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55PixcbiAgU1VCU0NSSUJFUiBleHRlbmRzIFJlY29yZDxzdHJpbmcsIG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueT4sXG4gIE1JR1JBVElPTiBleHRlbmRzIFJlY29yZDxzdHJpbmcsIG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueT4sXG5cbj4oXG4gIGNvbmZpZ0ZuOiAoXG4gICAgZW52OiBhbnksXG4gICkgPT4gTW9kZWxzLkNvbnRleHRPcHRpb25zPFxuICAgIENUWCxcbiAgICBDVFJMLFxuICAgIEVOVElUWSxcbiAgICBSRVBPLFxuICAgIFBST1ZJREVSLFxuICAgIFNVQlNDUklCRVIsXG4gICAgTUlHUkFUSU9OXG4gID4sXG4pID0+IHtcbiAgbGV0IGNvbmZpZyA9IGNvbmZpZ0ZuKEVOVik7XG5cbiAgY29uc3QgZW5kcG9pbnRDb250ZXh0UmVmID0gbmV3IEVuZHBvaW50Q29udGV4dChjb25maWcsIGNvbmZpZ0ZuKTtcblxuICBjb25zdCByZXMgPSB7XG5cbiAgICB0eXBlczoge1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuICAgICAgZ2V0IGNvbnRyb2xsZXJzKCkge1xuICAgICAgICByZXR1cm4gY29uZmlnLmNvbnRyb2xsZXJzO1xuICAgICAgfSxcbiAgICAgIGdldCByZXBvc2l0b3JpZXMoKSB7XG4gICAgICAgIHJldHVybiBjb25maWcucmVwb3NpdG9yaWVzO1xuICAgICAgfSxcbiAgICAgIGdldCBwcm92aWRlcnMoKSB7XG4gICAgICAgIHJldHVybiBjb25maWcucHJvdmlkZXJzO1xuICAgICAgfSxcbiAgICAgIGdldCBzdWJzY3JpYmVycygpIHtcbiAgICAgICAgcmV0dXJuIGNvbmZpZy5zdWJzY3JpYmVycztcbiAgICAgIH0sXG4gICAgICBnZXQgbWlncmF0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIGNvbmZpZy5taWdyYXRpb25zO1xuICAgICAgfSxcbiAgICB9LFxuXG5cbiAgICBnZXQgY29udGV4dHMoKSB7XG4gICAgICByZXR1cm4gY29uZmlnLmNvbnRleHRzO1xuICAgIH0sXG4gICAgZ2V0IGNvbnRleHROYW1lKCkge1xuICAgICAgcmV0dXJuIGNvbmZpZy5jb250ZXh0TmFtZTtcbiAgICB9LFxuXG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIC0gZ2V0IHJlZmVyZW5jZSB0byBpbnRlcm5hbCBjb250ZXh0XG4gICAgICovXG4gICAgYXN5bmMgX19yZWYoKSB7XG4gICAgICBpZiAoIWVuZHBvaW50Q29udGV4dFJlZi5pbml0ZWQpIHtcbiAgICAgICAgYXdhaXQgZW5kcG9pbnRDb250ZXh0UmVmLmluaXQoe1xuICAgICAgICAgIGluaXRGcm9tUmVjcnVzaXZlQ29udGV4dFJlc292bGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVuZHBvaW50Q29udGV4dFJlZjtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIG9ubHkgZm9yIGludGVybmFsIHVzZVxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgZ2V0IF9fcmVmU3luYygpIHtcbiAgICAgIHJldHVybiBlbmRwb2ludENvbnRleHRSZWY7XG4gICAgfSxcbiAgICBnZXRDbGFzc0luc3RhbmNlPFQ+KGN0b3I6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQpOiBUIHtcbiAgICAgIHJldHVybiBlbmRwb2ludENvbnRleHRSZWYuZ2V0SW5zdGFuY2VCeShjdG9yKTtcbiAgICB9LFxuXG4gICAgZ2V0Q2xhc3M8VD4oY3RvcjogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCk6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQge1xuICAgICAgY29uc3QgY2xhc3NGdW4gPSBlbmRwb2ludENvbnRleHRSZWYuZ2V0Q2xhc3NGdW5CeUNsYXNzKGN0b3IpO1xuICAgICAgcmV0dXJuIGNsYXNzRnVuIGFzIGFueTtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuICAgIH0sXG5cblxuICAgIC8qKlxuICAgICAqIC0gY3JlYXRlIGNvbnRyb2xsZXIgaW5zdGFuY2VzIGZvciBjb250ZXh0XG4gICAgICogLSBpbml0IGRhdGFiYXNlIChpZiBlbmFibGUpICsgbWlnYXRpb24gc2NyaXB0c1xuICAgICAqL1xuICAgIGluaXRpYWxpemU6IGFzeW5jIChvdmVycmlkZU9wdGlvbnM/OiB7XG4gICAgICBvdmVycmlkZUhvc3Q/OiBzdHJpbmc7XG4gICAgICBvdmVycmlkZVJlbW90ZUhvc3Q/OiBzdHJpbmc7XG4gICAgICBvbmx5TWlncmF0aW9uUnVuPzogYm9vbGVhbjtcbiAgICAgIG9ubHlNaWdyYXRpb25SZXZlcnRUb1RpbWVzdGFtcD86IG51bWJlcjtcbiAgICB9KTogUHJvbWlzZTxFbmRwb2ludENvbnRleHQ+ID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IGVuZHBvaW50Q29udGV4dFJlZi5pbml0KHtcbiAgICAgICAgICAgIC4uLm92ZXJyaWRlT3B0aW9ucyxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChjb25maWcuYWJzdHJhY3QpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQWJzdHJhY3QgY29udGV4dCBjYW4gbm90IGJlIGluaXRpYWxpemVkYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXdhaXQgZW5kcG9pbnRDb250ZXh0UmVmLmluaXRFbnRpdGllcygpO1xuICAgICAgICAgIGF3YWl0IGVuZHBvaW50Q29udGV4dFJlZi5pbml0U3Vic2NyaWJlcnMoKTtcblxuICAgICAgICAgIGF3YWl0IGVuZHBvaW50Q29udGV4dFJlZi5pbml0RGF0YWJhc2VDb25uZWN0aW9uKCk7XG5cbiAgICAgICAgICBhd2FpdCBlbmRwb2ludENvbnRleHRSZWYuZGJNaWdyYXRpb25zLmVuc3VyZU1pZ3JhdGlvblRhYmxlRXhpc3RzKCk7XG5cblxuXG5cblxuXG4gICAgICAgICAgZW5kcG9pbnRDb250ZXh0UmVmLmluaXRDb250cm9sbGVycygpO1xuICAgICAgICAgIGVuZHBvaW50Q29udGV4dFJlZi5zdGFydFNlcnZlcigpO1xuLyogKi9cbi8qICovXG4gIFxuXG4gICAgICAgICAgYXdhaXQgZW5kcG9pbnRDb250ZXh0UmVmLmluaXRDbGFzc2VzKCk7XG4gICAgICAgICAgbGV0IGtlZXBXZWJzcWxEYkRhdGFBZnRlclJlbG9hZCA9IGZhbHNlO1xuXG4gICAgICAgICAga2VlcFdlYnNxbERiRGF0YUFmdGVyUmVsb2FkID1cbiAgICAgICAgICAgIFRhb25BZG1pblNlcnZpY2UuSW5zdGFuY2U/LmtlZXBXZWJzcWxEYkRhdGFBZnRlclJlbG9hZDtcblxuICAgICAgICAgIGlmICghSGVscGVycy5pc05vZGUgJiYga2VlcFdlYnNxbERiRGF0YUFmdGVyUmVsb2FkKSB7XG4gICAgICAgICAgICBIZWxwZXJzLmluZm8oYFt0YW9uXSBLZWVwIHdlYnNxbCBkYXRhIGFmdGVyIHJlbG9hZGApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCBlbmRwb2ludENvbnRleHRSZWYucmVpbml0Q29udHJvbGxlcnMoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8vI3JlZ2lvbiBUT0RPIHRoaXMgbWF5IGJlIHVzZWZ1bGwgYnV0IGZvciBub3dcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gICAgICAgICAgaWYgKGVuZHBvaW50Q29udGV4dFJlZi5vbmx5TWlncmF0aW9uUnVuKSB7XG4gICAgICAgICAgICBhd2FpdCBlbmRwb2ludENvbnRleHRSZWYuZGJNaWdyYXRpb25zLnJ1bkFsbE5vdENvbXBsZXRlZE1pZ3JhdGlvbnMoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGVuZHBvaW50Q29udGV4dFJlZi5vbmx5TWlncmF0aW9uUmV2ZXJ0VG9UaW1lc3RhbXApIHtcbiAgICAgICAgICAgIGF3YWl0IGVuZHBvaW50Q29udGV4dFJlZi5kYk1pZ3JhdGlvbnMucmV2ZXJ0TWlncmF0aW9uVG9UaW1lc3RhbXAoXG4gICAgICAgICAgICAgIGVuZHBvaW50Q29udGV4dFJlZi5vbmx5TWlncmF0aW9uUmV2ZXJ0VG9UaW1lc3RhbXAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCBlbmRwb2ludENvbnRleHRSZWYuZGJNaWdyYXRpb25zLnJ1bkFsbE5vdENvbXBsZXRlZE1pZ3JhdGlvbnMoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKGVuZHBvaW50Q29udGV4dFJlZik7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIHJlYWx0aW1lIGNvbW11bmljYXRpb24gd2l0aCBzZXJ2ZXJcbiAgICAgKiBVZHAgc29ja2V0LmlvIChvciBpcGMpIGJhc2VkLlxuICAgICAqL1xuICAgIGdldCByZWFsdGltZSgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGdldCBjbGllbnQoKSB7XG4gICAgICAgICAgcmV0dXJuIGVuZHBvaW50Q29udGV4dFJlZi5yZWFsdGltZUNsaWVudDtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHNlcnZlcigpIHtcbiAgICAgICAgICByZXR1cm4gZW5kcG9pbnRDb250ZXh0UmVmLnJlYWx0aW1lU2VydmVyO1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9LFxuICB9O1xuICByZXR1cm4gcmVzO1xufTtcblxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbiBsaWIvY3JlYXRlLWNvbnRleHQudHMiXX0=
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90YW9uL3Byb2plY3RzL3Rhb24vc3JjL2xpYi9jcmVhdGUtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUdyRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRTVCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBT3pGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQVczQixRQVVDLEVBQ0QsRUFBRTtJQUNGLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUzQixNQUFNLGtCQUFrQixHQUFHLElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVqRSxNQUFNLEdBQUcsR0FBRztRQUVWLEtBQUssRUFBRTtZQW1CTCxJQUFJLFdBQVc7Z0JBQ2IsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDO1lBQzVCLENBQUM7WUFDRCxJQUFJLFlBQVk7Z0JBQ2QsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDO1lBQzdCLENBQUM7WUFDRCxJQUFJLFNBQVM7Z0JBQ1gsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDO1lBQzFCLENBQUM7WUFDRCxJQUFJLFdBQVc7Z0JBQ2IsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDO1lBQzVCLENBQUM7WUFDRCxJQUFJLFVBQVU7Z0JBQ1osT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDO1lBQzNCLENBQUM7U0FDRjtRQUdELElBQUksUUFBUTtZQUNWLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUN6QixDQUFDO1FBQ0QsSUFB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QUM7d0JBQ04sTUFBTSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztvQkFDdkUsQ0FBQztvQkFFRCxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDOUIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRDs7O1dBR0c7UUFDSCxJQUFJLFFBQVE7WUFDVixPQUFPO2dCQUNMLElBQUksTUFBTTtvQkFDUixPQUFPLGtCQUFrQixDQUFDLGNBQWMsQ0FBQztnQkFDM0MsQ0FBQztnQkFDRCxJQUFJLE1BQU07b0JBQ1IsT0FBTyxrQkFBa0IsQ0FBQyxjQUFjLENBQUM7Z0JBQzNDLENBQUM7YUFDRixDQUFDO1FBQ0osQ0FBQztLQUNGLENBQUM7SUFDRixPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUdELENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsdURBQXVEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxuaW1wb3J0IHsgSGVscGVycywgVXRpbHNPcyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgRW5kcG9pbnRDb250ZXh0IH0gZnJvbSAnLi9lbmRwb2ludC1jb250ZXh0JztcbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4vbW9kZWxzJztcblxuaW1wb3J0IHsgRU5WIH0gZnJvbSAnLi9lbnYnO1xuXG5pbXBvcnQgeyBUYW9uQWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi91aS90YW9uLWFkbWluLW1vZGUtY29uZmlndXJhdGlvbi90YW9uLWFkbWluLnNlcnZpY2UnO1xuXG5cblxuXG5cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNvbnRleHQgPSA8XG5cbiAgQ1RYIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgb2JqZWN0PixcbiAgQ1RSTCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueT4sXG4gIEVOVElUWSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueT4sXG4gIFJFUE8gZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+LFxuICBQUk9WSURFUiBleHRlbmRzIFJlY29yZDxzdHJpbmcsIG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueT4sXG4gIFNVQlNDUklCRVIgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+LFxuICBNSUdSQVRJT04gZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+LFxuXG4+KFxuICBjb25maWdGbjogKFxuICAgIGVudjogYW55LFxuICApID0+IE1vZGVscy5Db250ZXh0T3B0aW9uczxcbiAgICBDVFgsXG4gICAgQ1RSTCxcbiAgICBFTlRJVFksXG4gICAgUkVQTyxcbiAgICBQUk9WSURFUixcbiAgICBTVUJTQ1JJQkVSLFxuICAgIE1JR1JBVElPTlxuICA+LFxuKSA9PiB7XG4gIGxldCBjb25maWcgPSBjb25maWdGbihFTlYpO1xuXG4gIGNvbnN0IGVuZHBvaW50Q29udGV4dFJlZiA9IG5ldyBFbmRwb2ludENvbnRleHQoY29uZmlnLCBjb25maWdGbik7XG5cbiAgY29uc3QgcmVzID0ge1xuXG4gICAgdHlwZXM6IHtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbiAgICAgIGdldCBjb250cm9sbGVycygpIHtcbiAgICAgICAgcmV0dXJuIGNvbmZpZy5jb250cm9sbGVycztcbiAgICAgIH0sXG4gICAgICBnZXQgcmVwb3NpdG9yaWVzKCkge1xuICAgICAgICByZXR1cm4gY29uZmlnLnJlcG9zaXRvcmllcztcbiAgICAgIH0sXG4gICAgICBnZXQgcHJvdmlkZXJzKCkge1xuICAgICAgICByZXR1cm4gY29uZmlnLnByb3ZpZGVycztcbiAgICAgIH0sXG4gICAgICBnZXQgc3Vic2NyaWJlcnMoKSB7XG4gICAgICAgIHJldHVybiBjb25maWcuc3Vic2NyaWJlcnM7XG4gICAgICB9LFxuICAgICAgZ2V0IG1pZ3JhdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiBjb25maWcubWlncmF0aW9ucztcbiAgICAgIH0sXG4gICAgfSxcblxuXG4gICAgZ2V0IGNvbnRleHRzKCkge1xuICAgICAgcmV0dXJuIGNvbmZpZy5jb250ZXh0cztcbiAgICB9LFxuICAgIGdldCBjb250ZXh0TmFtZSgpIHtcbiAgICAgIHJldHVybiBjb25maWcuY29udGV4dE5hbWU7XG4gICAgfSxcblxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiAtIGdldCByZWZlcmVuY2UgdG8gaW50ZXJuYWwgY29udGV4dFxuICAgICAqL1xuICAgIGFzeW5jIF9fcmVmKCkge1xuICAgICAgaWYgKCFlbmRwb2ludENvbnRleHRSZWYuaW5pdGVkKSB7XG4gICAgICAgIGF3YWl0IGVuZHBvaW50Q29udGV4dFJlZi5pbml0KHtcbiAgICAgICAgICBpbml0RnJvbVJlY3J1c2l2ZUNvbnRleHRSZXNvdmxlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlbmRwb2ludENvbnRleHRSZWY7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBvbmx5IGZvciBpbnRlcm5hbCB1c2VcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIGdldCBfX3JlZlN5bmMoKSB7XG4gICAgICByZXR1cm4gZW5kcG9pbnRDb250ZXh0UmVmO1xuICAgIH0sXG4gICAgZ2V0Q2xhc3NJbnN0YW5jZTxUPihjdG9yOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUKTogVCB7XG4gICAgICByZXR1cm4gZW5kcG9pbnRDb250ZXh0UmVmLmdldEluc3RhbmNlQnkoY3Rvcik7XG4gICAgfSxcblxuICAgIGdldENsYXNzPFQ+KGN0b3I6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQpOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUIHtcbiAgICAgIGNvbnN0IGNsYXNzRnVuID0gZW5kcG9pbnRDb250ZXh0UmVmLmdldENsYXNzRnVuQnlDbGFzcyhjdG9yKTtcbiAgICAgIHJldHVybiBjbGFzc0Z1biBhcyBhbnk7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbiAgICB9LFxuXG5cbiAgICAvKipcbiAgICAgKiAtIGNyZWF0ZSBjb250cm9sbGVyIGluc3RhbmNlcyBmb3IgY29udGV4dFxuICAgICAqIC0gaW5pdCBkYXRhYmFzZSAoaWYgZW5hYmxlKSArIG1pZ2F0aW9uIHNjcmlwdHNcbiAgICAgKi9cbiAgICBpbml0aWFsaXplOiBhc3luYyAob3ZlcnJpZGVPcHRpb25zPzoge1xuICAgICAgb3ZlcnJpZGVIb3N0Pzogc3RyaW5nO1xuICAgICAgb3ZlcnJpZGVSZW1vdGVIb3N0Pzogc3RyaW5nO1xuICAgICAgb25seU1pZ3JhdGlvblJ1bj86IGJvb2xlYW47XG4gICAgICBvbmx5TWlncmF0aW9uUmV2ZXJ0VG9UaW1lc3RhbXA/OiBudW1iZXI7XG4gICAgfSk6IFByb21pc2U8RW5kcG9pbnRDb250ZXh0PiA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICBhd2FpdCBlbmRwb2ludENvbnRleHRSZWYuaW5pdCh7XG4gICAgICAgICAgICAuLi5vdmVycmlkZU9wdGlvbnMsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoY29uZmlnLmFic3RyYWN0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFic3RyYWN0IGNvbnRleHQgY2FuIG5vdCBiZSBpbml0aWFsaXplZGApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGF3YWl0IGVuZHBvaW50Q29udGV4dFJlZi5pbml0RW50aXRpZXMoKTtcbiAgICAgICAgICBhd2FpdCBlbmRwb2ludENvbnRleHRSZWYuaW5pdFN1YnNjcmliZXJzKCk7XG5cbiAgICAgICAgICBhd2FpdCBlbmRwb2ludENvbnRleHRSZWYuaW5pdERhdGFiYXNlQ29ubmVjdGlvbigpO1xuXG4gICAgICAgICAgYXdhaXQgZW5kcG9pbnRDb250ZXh0UmVmLmRiTWlncmF0aW9ucy5lbnN1cmVNaWdyYXRpb25UYWJsZUV4aXN0cygpO1xuXG5cblxuXG5cblxuICAgICAgICAgIGVuZHBvaW50Q29udGV4dFJlZi5pbml0Q29udHJvbGxlcnMoKTtcbiAgICAgICAgICBlbmRwb2ludENvbnRleHRSZWYuc3RhcnRTZXJ2ZXIoKTtcbi8qICovXG4vKiAqL1xuICBcblxuICAgICAgICAgIGF3YWl0IGVuZHBvaW50Q29udGV4dFJlZi5pbml0Q2xhc3NlcygpO1xuICAgICAgICAgIGxldCBrZWVwV2Vic3FsRGJEYXRhQWZ0ZXJSZWxvYWQgPSBmYWxzZTtcblxuICAgICAgICAgIGtlZXBXZWJzcWxEYkRhdGFBZnRlclJlbG9hZCA9XG4gICAgICAgICAgICBUYW9uQWRtaW5TZXJ2aWNlLkluc3RhbmNlPy5rZWVwV2Vic3FsRGJEYXRhQWZ0ZXJSZWxvYWQ7XG5cblxuICAgICAgICAgIGlmICghSGVscGVycy5pc05vZGUgJiYga2VlcFdlYnNxbERiRGF0YUFmdGVyUmVsb2FkKSB7XG4gICAgICAgICAgICAhVXRpbHNPcy5pc1J1bm5pbmdJbkNsaU1vZGUoKSAmJlxuICAgICAgICAgICAgICBIZWxwZXJzLmluZm8oXG4gICAgICAgICAgICAgICAgYFt0YW9uXSBLZWVwaW5nIHdlYnNxbCBkYXRhIGFmdGVyIHJlbG9hZCBgICtcbiAgICAgICAgICAgICAgICAgIGAoY29udGV4dD0ke2VuZHBvaW50Q29udGV4dFJlZi5jb250ZXh0TmFtZX0pLmAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICFVdGlsc09zLmlzUnVubmluZ0luQ2xpTW9kZSgpICYmXG4gICAgICAgICAgICAgIEhlbHBlcnMuaW5mbyhcbiAgICAgICAgICAgICAgICBgW3Rhb25dIERyb3BwaW5nIGFsbCB0YWJsZXMgYW5kIGRhdGEgYCArXG4gICAgICAgICAgICAgICAgICBgKGNvbnRleHQ9JHtlbmRwb2ludENvbnRleHRSZWYuY29udGV4dE5hbWV9KS5gLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgYXdhaXQgZW5kcG9pbnRDb250ZXh0UmVmLnJlaW5pdENvbnRyb2xsZXJzKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vLyNyZWdpb24gVE9ETyB0aGlzIG1heSBiZSB1c2VmdWxsIGJ1dCBmb3Igbm93XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuICAgICAgICAgIGlmIChlbmRwb2ludENvbnRleHRSZWYub25seU1pZ3JhdGlvblJ1bikge1xuICAgICAgICAgICAgYXdhaXQgZW5kcG9pbnRDb250ZXh0UmVmLmRiTWlncmF0aW9ucy5ydW5BbGxOb3RDb21wbGV0ZWRNaWdyYXRpb25zKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChlbmRwb2ludENvbnRleHRSZWYub25seU1pZ3JhdGlvblJldmVydFRvVGltZXN0YW1wKSB7XG4gICAgICAgICAgICBhd2FpdCBlbmRwb2ludENvbnRleHRSZWYuZGJNaWdyYXRpb25zLnJldmVydE1pZ3JhdGlvblRvVGltZXN0YW1wKFxuICAgICAgICAgICAgICBlbmRwb2ludENvbnRleHRSZWYub25seU1pZ3JhdGlvblJldmVydFRvVGltZXN0YW1wLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgZW5kcG9pbnRDb250ZXh0UmVmLmRiTWlncmF0aW9ucy5ydW5BbGxOb3RDb21wbGV0ZWRNaWdyYXRpb25zKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZShlbmRwb2ludENvbnRleHRSZWYpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiByZWFsdGltZSBjb21tdW5pY2F0aW9uIHdpdGggc2VydmVyXG4gICAgICogVWRwIHNvY2tldC5pbyAob3IgaXBjKSBiYXNlZC5cbiAgICAgKi9cbiAgICBnZXQgcmVhbHRpbWUoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBnZXQgY2xpZW50KCkge1xuICAgICAgICAgIHJldHVybiBlbmRwb2ludENvbnRleHRSZWYucmVhbHRpbWVDbGllbnQ7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBzZXJ2ZXIoKSB7XG4gICAgICAgICAgcmV0dXJuIGVuZHBvaW50Q29udGV4dFJlZi5yZWFsdGltZVNlcnZlcjtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSxcbiAgfTtcbiAgcmV0dXJuIHJlcztcbn07XG5cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24gbGliL2NyZWF0ZS1jb250ZXh0LnRzIl19