@osovitny/anatoly 2.15.7 → 2.15.8

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.
@@ -13,30 +13,38 @@
13
13
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
14
14
  </file>
15
15
  */
16
+ //consts
16
17
  export * from './consts/settings';
17
18
  export * from './consts/urls';
19
+ //converts
20
+ export * from './converts/convert';
21
+ export * from './converts/xmlFormatter';
18
22
  export * from './go/base-go.service';
19
23
  export * from './guards/once-import.guard';
20
24
  export * from './interceptors/httpInterceptor';
25
+ //localization
21
26
  export * from './localization/localize.pipe';
22
27
  export * from './localization/localization.service';
23
28
  export * from './localization/localizationSettings.module';
24
29
  export * from './localization/localization.module';
30
+ //logging
25
31
  export * from './logging/globalErrorHandler';
26
32
  export * from './logging/logging.service';
33
+ //notifications
27
34
  export * from './notifications/alerts';
28
35
  export * from './notifications/interfaces/notification';
29
36
  export * from './notifications/services/notification-service';
37
+ //performance
38
+ export * from './performance/stopwatch';
39
+ //services
30
40
  export * from './services/appcontext.service';
31
41
  export * from './services/idle.service';
32
42
  export * from './services/loading.service';
33
43
  export * from './services/web-storage.service';
34
44
  export * from './services/dm.service';
35
45
  export * from './services/google-analytics.service';
36
- export * from './converts/convert';
37
- export * from './converts/xmlFormatter';
38
46
  export * from './dom';
39
47
  export * from './guid';
40
48
  export * from './subs';
41
49
  export * from './utils';
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxnQ0FBZ0MsQ0FBQTtBQUM5QyxjQUFjLHVCQUF1QixDQUFBO0FBQ3JDLGNBQWMscUNBQXFDLENBQUE7QUFDbkQsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDIgQXVnIDIwMjJcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cy9zZXR0aW5ncyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RzL3VybHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2dvL2Jhc2UtZ28uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZ3VhcmRzL29uY2UtaW1wb3J0Lmd1YXJkJztcclxuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmNlcHRvcnMvaHR0cEludGVyY2VwdG9yJztcclxuZXhwb3J0ICogZnJvbSAnLi9sb2NhbGl6YXRpb24vbG9jYWxpemUucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWxpemF0aW9uL2xvY2FsaXphdGlvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9sb2NhbGl6YXRpb24vbG9jYWxpemF0aW9uU2V0dGluZ3MubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9sb2NhbGl6YXRpb24vbG9jYWxpemF0aW9uLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbG9nZ2luZy9nbG9iYWxFcnJvckhhbmRsZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2xvZ2dpbmcvbG9nZ2luZy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9ub3RpZmljYXRpb25zL2FsZXJ0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbm90aWZpY2F0aW9ucy9pbnRlcmZhY2VzL25vdGlmaWNhdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbm90aWZpY2F0aW9ucy9zZXJ2aWNlcy9ub3RpZmljYXRpb24tc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvYXBwY29udGV4dC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9pZGxlLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2xvYWRpbmcuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvd2ViLXN0b3JhZ2Uuc2VydmljZSdcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9kbS5zZXJ2aWNlJ1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2dvb2dsZS1hbmFseXRpY3Muc2VydmljZSdcclxuZXhwb3J0ICogZnJvbSAnLi9jb252ZXJ0cy9jb252ZXJ0JztcclxuZXhwb3J0ICogZnJvbSAnLi9jb252ZXJ0cy94bWxGb3JtYXR0ZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2RvbSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZ3VpZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3Vicyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xyXG4iXX0=
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLFFBQVE7QUFDUixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsZUFBZSxDQUFDO0FBRTlCLFVBQVU7QUFDVixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMseUJBQXlCLENBQUM7QUFFeEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsZ0NBQWdDLENBQUM7QUFFL0MsY0FBYztBQUNkLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsb0NBQW9DLENBQUM7QUFFbkQsU0FBUztBQUNULGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywyQkFBMkIsQ0FBQztBQUUxQyxlQUFlO0FBQ2YsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsK0NBQStDLENBQUM7QUFFOUQsYUFBYTtBQUNiLGNBQWMseUJBQXlCLENBQUM7QUFFeEMsVUFBVTtBQUNWLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsZ0NBQWdDLENBQUE7QUFDOUMsY0FBYyx1QkFBdUIsQ0FBQTtBQUNyQyxjQUFjLHFDQUFxQyxDQUFBO0FBRW5ELGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDIgQXVnIDIwMjJcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vL2NvbnN0c1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cy9zZXR0aW5ncyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RzL3VybHMnO1xyXG5cclxuLy9jb252ZXJ0c1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbnZlcnRzL2NvbnZlcnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbnZlcnRzL3htbEZvcm1hdHRlcic7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2dvL2Jhc2UtZ28uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZ3VhcmRzL29uY2UtaW1wb3J0Lmd1YXJkJztcclxuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmNlcHRvcnMvaHR0cEludGVyY2VwdG9yJztcclxuXHJcbi8vbG9jYWxpemF0aW9uXHJcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWxpemF0aW9uL2xvY2FsaXplLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xvY2FsaXphdGlvbi9sb2NhbGl6YXRpb24uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWxpemF0aW9uL2xvY2FsaXphdGlvblNldHRpbmdzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWxpemF0aW9uL2xvY2FsaXphdGlvbi5tb2R1bGUnO1xyXG5cclxuLy9sb2dnaW5nXHJcbmV4cG9ydCAqIGZyb20gJy4vbG9nZ2luZy9nbG9iYWxFcnJvckhhbmRsZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2xvZ2dpbmcvbG9nZ2luZy5zZXJ2aWNlJztcclxuXHJcbi8vbm90aWZpY2F0aW9uc1xyXG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbnMvYWxlcnRzJztcclxuZXhwb3J0ICogZnJvbSAnLi9ub3RpZmljYXRpb25zL2ludGVyZmFjZXMvbm90aWZpY2F0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9ub3RpZmljYXRpb25zL3NlcnZpY2VzL25vdGlmaWNhdGlvbi1zZXJ2aWNlJztcclxuXHJcbi8vcGVyZm9ybWFuY2VcclxuZXhwb3J0ICogZnJvbSAnLi9wZXJmb3JtYW5jZS9zdG9wd2F0Y2gnO1xyXG5cclxuLy9zZXJ2aWNlc1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2FwcGNvbnRleHQuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvaWRsZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9sb2FkaW5nLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3dlYi1zdG9yYWdlLnNlcnZpY2UnXHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvZG0uc2VydmljZSdcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9nb29nbGUtYW5hbHl0aWNzLnNlcnZpY2UnXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2RvbSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZ3VpZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3Vicyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xyXG4iXX0=
@@ -0,0 +1,50 @@
1
+ /*
2
+ <file>
3
+ Project:
4
+ @osovitny/anatoly
5
+
6
+ Authors:
7
+ Vadim Osovitny vadim@osovitny.com
8
+ Anatoly Osovitny anatoly@osovitny.com
9
+
10
+ Created:
11
+ 17 Apr 2023
12
+
13
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
14
+ </file>
15
+ */
16
+ export class Stopwatch {
17
+ constructor(name) {
18
+ this.name = name;
19
+ this.startTime = 0;
20
+ this.stopTime = 0;
21
+ this.running = false;
22
+ this.performance = !!window.performance;
23
+ console.log(this.name + ' started.');
24
+ }
25
+ currentTime() {
26
+ return this.performance ? window.performance.now() : new Date().getTime();
27
+ }
28
+ start() {
29
+ this.startTime = this.currentTime();
30
+ this.running = true;
31
+ }
32
+ stop() {
33
+ this.stopTime = this.currentTime();
34
+ this.running = false;
35
+ }
36
+ getElapsedMilliseconds() {
37
+ if (this.running) {
38
+ this.stopTime = this.currentTime();
39
+ }
40
+ return this.stopTime - this.startTime;
41
+ }
42
+ getElapsedSeconds() {
43
+ return this.getElapsedMilliseconds() / 1000;
44
+ }
45
+ printElapsedAsMilliseconds() {
46
+ let elapsed = this.getElapsedMilliseconds();
47
+ console.log(`${this.name} stopped. Execution time: ${elapsed} ms`);
48
+ }
49
+ }
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcHdhdGNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL2NvcmUvcGVyZm9ybWFuY2Uvc3RvcHdhdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsTUFBTSxPQUFPLFNBQVM7SUFPcEIsWUFBWSxJQUFJO1FBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUV4QyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVPLFdBQVc7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzVFLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQztRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLElBQUksQ0FBQztJQUM5QyxDQUFDO0lBRUQsMEJBQTBCO1FBQ3hCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSw2QkFBNkIsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMTcgQXByIDIwMjNcclxuIFxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuZXhwb3J0IGNsYXNzIFN0b3B3YXRjaCB7XHJcbiAgcHJpdmF0ZSBuYW1lO1xyXG4gIHByaXZhdGUgc3RhcnRUaW1lO1xyXG4gIHByaXZhdGUgc3RvcFRpbWU7XHJcbiAgcHJpdmF0ZSBydW5uaW5nO1xyXG4gIHByaXZhdGUgcGVyZm9ybWFuY2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKG5hbWUpIHtcclxuICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLnN0YXJ0VGltZSA9IDA7XHJcbiAgICB0aGlzLnN0b3BUaW1lID0gMDtcclxuICAgIHRoaXMucnVubmluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5wZXJmb3JtYW5jZSA9ICEhd2luZG93LnBlcmZvcm1hbmNlO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKHRoaXMubmFtZSArICcgc3RhcnRlZC4nKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3VycmVudFRpbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wZXJmb3JtYW5jZSA/IHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKSA6IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gIH1cclxuXHJcbiAgc3RhcnQoKSB7XHJcbiAgICB0aGlzLnN0YXJ0VGltZSA9IHRoaXMuY3VycmVudFRpbWUoKTtcclxuICAgIHRoaXMucnVubmluZyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBzdG9wKCkge1xyXG4gICAgdGhpcy5zdG9wVGltZSA9IHRoaXMuY3VycmVudFRpbWUoKTtcclxuICAgIHRoaXMucnVubmluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWxhcHNlZE1pbGxpc2Vjb25kcygpIHtcclxuICAgIGlmICh0aGlzLnJ1bm5pbmcpIHtcclxuICAgICAgdGhpcy5zdG9wVGltZSA9IHRoaXMuY3VycmVudFRpbWUoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5zdG9wVGltZSAtIHRoaXMuc3RhcnRUaW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWxhcHNlZFNlY29uZHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRFbGFwc2VkTWlsbGlzZWNvbmRzKCkgLyAxMDAwO1xyXG4gIH1cclxuXHJcbiAgcHJpbnRFbGFwc2VkQXNNaWxsaXNlY29uZHMoKSB7XHJcbiAgICBsZXQgZWxhcHNlZCA9IHRoaXMuZ2V0RWxhcHNlZE1pbGxpc2Vjb25kcygpO1xyXG4gICAgY29uc29sZS5sb2coYCR7dGhpcy5uYW1lfSBzdG9wcGVkLiBFeGVjdXRpb24gdGltZTogJHtlbGFwc2VkfSBtc2ApO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,3 +1,4 @@
1
+ import js_beautify from 'js-beautify';
1
2
  import * as i0 from '@angular/core';
2
3
  import { Injectable, Pipe, APP_INITIALIZER, Injector, NgModule, Inject, Component, Input, EventEmitter, Output, ViewEncapsulation, Directive, ViewChild, HostBinding, HostListener, Optional, SkipSelf } from '@angular/core';
3
4
  import * as i1 from '@angular/router';
@@ -19,7 +20,6 @@ import { v4 } from 'uuid';
19
20
  import * as i1$2 from 'ngx-toastr';
20
21
  import { ToastrModule } from 'ngx-toastr';
21
22
  import * as i1$4 from '@angular/platform-browser';
22
- import js_beautify from 'js-beautify';
23
23
  import * as i1$6 from '@fortawesome/angular-fontawesome';
24
24
  import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
25
25
  import * as i1$7 from '@progress/kendo-angular-pager';
@@ -76,6 +76,143 @@ const Urls = {
76
76
  notificationsSocketUrl: '/hubs/notifications'
77
77
  };
78
78
 
79
+ /*
80
+ <file>
81
+ Project:
82
+ @osovitny/anatoly
83
+
84
+ Authors:
85
+ Vadim Osovitny vadim@osovitny.com
86
+ Anatoly Osovitny anatoly@osovitny.com
87
+
88
+ Created:
89
+ 29 June 2020
90
+
91
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
92
+ </file>
93
+ */
94
+ class Convert {
95
+ static pad(number) {
96
+ if (number < 10) {
97
+ return '0' + number;
98
+ }
99
+ return number;
100
+ }
101
+ static toLocalizedDateTime(value) {
102
+ if (value) {
103
+ return new Date(Date.UTC(value.getFullYear(), value.getMonth(), value.getDate(), value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds()));
104
+ }
105
+ return null;
106
+ }
107
+ static enumToString(enumeration, value) {
108
+ for (let k in enumeration)
109
+ if (enumeration[k] == value)
110
+ return k;
111
+ return null;
112
+ }
113
+ static enumToArray(enumeration, notIncludes) {
114
+ const notIncludeFiler = (value) => {
115
+ if (isNaN(Number(value))) {
116
+ return false;
117
+ }
118
+ if (notIncludes) {
119
+ for (let i in notIncludes) {
120
+ if (notIncludes[i] == value)
121
+ return false;
122
+ }
123
+ }
124
+ return true;
125
+ };
126
+ return Object.keys(enumeration)
127
+ .filter(notIncludeFiler)
128
+ .map(key => ({
129
+ value: key,
130
+ text: enumeration[key]
131
+ }));
132
+ }
133
+ static stringToArray(str, separator = ',') {
134
+ if (str) {
135
+ return str.split(separator).filter(element => element);
136
+ }
137
+ return [];
138
+ }
139
+ static stringToIntArray(str, separator = ',') {
140
+ if (str) {
141
+ return str.split(separator).filter(element => element).map(value => parseInt(value));
142
+ }
143
+ return [];
144
+ }
145
+ static company2String(comp) {
146
+ let company = JSON.parse(comp);
147
+ if (company) {
148
+ return `${company.name} ${company.phone} ${company.email} ${company.websiteUrl}`;
149
+ }
150
+ }
151
+ static address2String(adr) {
152
+ let address = JSON.parse(adr);
153
+ return `${address.street} ${address.street2} ${address.city} ${address.stateOrRegion} ${address.zipcode} ${address.country}`;
154
+ }
155
+ static dateToString(date) {
156
+ return date.getFullYear() +
157
+ '-' + this.pad(date.getMonth() + 1) +
158
+ '-' + this.pad(date.getDate()) +
159
+ ' ' + this.pad(date.getHours()) +
160
+ ':' + this.pad(date.getMinutes()) +
161
+ ':' + this.pad(date.getSeconds());
162
+ }
163
+ static utcDateToLocalDate(d) {
164
+ let date = new Date(d);
165
+ return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()));
166
+ }
167
+ static stringToBoolean(value) {
168
+ switch (value.toLowerCase().trim()) {
169
+ case "true":
170
+ case "yes":
171
+ case "1":
172
+ return true;
173
+ case "false":
174
+ case "no":
175
+ case "0":
176
+ case null:
177
+ return false;
178
+ default:
179
+ return Boolean(value);
180
+ }
181
+ }
182
+ }
183
+
184
+ /*
185
+ <file>
186
+ Project:
187
+ @osovitny/anatoly
188
+
189
+ Authors:
190
+ Vadim Osovitny vadim@osovitny.com
191
+ Anatoly Osovitny anatoly@osovitny.com
192
+
193
+ Created:
194
+ 10 Sep 2022
195
+
196
+ Code:
197
+ https://www.npmjs.com/package/js-beautify
198
+ https://beautifier.io
199
+
200
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
201
+ </file>
202
+ */
203
+ class XmlFormatter {
204
+ static toPrettyXML(s, options) {
205
+ if (!options) {
206
+ options = {
207
+ indent_size: 2,
208
+ indent_char: " ",
209
+ wrap_line_length: 110
210
+ };
211
+ }
212
+ return js_beautify.html(s, options);
213
+ }
214
+ }
215
+
79
216
  /*
80
217
  <file>
81
218
  Project:
@@ -341,111 +478,6 @@ AnatolyHttpInterceptor.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: A
341
478
  }], function () { return [{ type: LoadingService }, { type: LoggingService }]; }, null);
342
479
  })();
343
480
 
344
- /*
345
- <file>
346
- Project:
347
- @osovitny/anatoly
348
-
349
- Authors:
350
- Vadim Osovitny vadim@osovitny.com
351
- Anatoly Osovitny anatoly@osovitny.com
352
-
353
- Created:
354
- 29 June 2020
355
-
356
- Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
357
- </file>
358
- */
359
- class Convert {
360
- static pad(number) {
361
- if (number < 10) {
362
- return '0' + number;
363
- }
364
- return number;
365
- }
366
- static toLocalizedDateTime(value) {
367
- if (value) {
368
- return new Date(Date.UTC(value.getFullYear(), value.getMonth(), value.getDate(), value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds()));
369
- }
370
- return null;
371
- }
372
- static enumToString(enumeration, value) {
373
- for (let k in enumeration)
374
- if (enumeration[k] == value)
375
- return k;
376
- return null;
377
- }
378
- static enumToArray(enumeration, notIncludes) {
379
- const notIncludeFiler = (value) => {
380
- if (isNaN(Number(value))) {
381
- return false;
382
- }
383
- if (notIncludes) {
384
- for (let i in notIncludes) {
385
- if (notIncludes[i] == value)
386
- return false;
387
- }
388
- }
389
- return true;
390
- };
391
- return Object.keys(enumeration)
392
- .filter(notIncludeFiler)
393
- .map(key => ({
394
- value: key,
395
- text: enumeration[key]
396
- }));
397
- }
398
- static stringToArray(str, separator = ',') {
399
- if (str) {
400
- return str.split(separator).filter(element => element);
401
- }
402
- return [];
403
- }
404
- static stringToIntArray(str, separator = ',') {
405
- if (str) {
406
- return str.split(separator).filter(element => element).map(value => parseInt(value));
407
- }
408
- return [];
409
- }
410
- static company2String(comp) {
411
- let company = JSON.parse(comp);
412
- if (company) {
413
- return `${company.name} ${company.phone} ${company.email} ${company.websiteUrl}`;
414
- }
415
- }
416
- static address2String(adr) {
417
- let address = JSON.parse(adr);
418
- return `${address.street} ${address.street2} ${address.city} ${address.stateOrRegion} ${address.zipcode} ${address.country}`;
419
- }
420
- static dateToString(date) {
421
- return date.getFullYear() +
422
- '-' + this.pad(date.getMonth() + 1) +
423
- '-' + this.pad(date.getDate()) +
424
- ' ' + this.pad(date.getHours()) +
425
- ':' + this.pad(date.getMinutes()) +
426
- ':' + this.pad(date.getSeconds());
427
- }
428
- static utcDateToLocalDate(d) {
429
- let date = new Date(d);
430
- return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()));
431
- }
432
- static stringToBoolean(value) {
433
- switch (value.toLowerCase().trim()) {
434
- case "true":
435
- case "yes":
436
- case "1":
437
- return true;
438
- case "false":
439
- case "no":
440
- case "0":
441
- case null:
442
- return false;
443
- default:
444
- return Boolean(value);
445
- }
446
- }
447
- }
448
-
449
481
  /*
450
482
  <file>
451
483
  Project:
@@ -1232,6 +1264,56 @@ NotificationService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: Noti
1232
1264
  }], function () { return [{ type: i1$2.ToastrService }]; }, null);
1233
1265
  })();
1234
1266
 
1267
+ /*
1268
+ <file>
1269
+ Project:
1270
+ @osovitny/anatoly
1271
+
1272
+ Authors:
1273
+ Vadim Osovitny vadim@osovitny.com
1274
+ Anatoly Osovitny anatoly@osovitny.com
1275
+
1276
+ Created:
1277
+ 17 Apr 2023
1278
+
1279
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1280
+ </file>
1281
+ */
1282
+ class Stopwatch {
1283
+ constructor(name) {
1284
+ this.name = name;
1285
+ this.startTime = 0;
1286
+ this.stopTime = 0;
1287
+ this.running = false;
1288
+ this.performance = !!window.performance;
1289
+ console.log(this.name + ' started.');
1290
+ }
1291
+ currentTime() {
1292
+ return this.performance ? window.performance.now() : new Date().getTime();
1293
+ }
1294
+ start() {
1295
+ this.startTime = this.currentTime();
1296
+ this.running = true;
1297
+ }
1298
+ stop() {
1299
+ this.stopTime = this.currentTime();
1300
+ this.running = false;
1301
+ }
1302
+ getElapsedMilliseconds() {
1303
+ if (this.running) {
1304
+ this.stopTime = this.currentTime();
1305
+ }
1306
+ return this.stopTime - this.startTime;
1307
+ }
1308
+ getElapsedSeconds() {
1309
+ return this.getElapsedMilliseconds() / 1000;
1310
+ }
1311
+ printElapsedAsMilliseconds() {
1312
+ let elapsed = this.getElapsedMilliseconds();
1313
+ console.log(`${this.name} stopped. Execution time: ${elapsed} ms`);
1314
+ }
1315
+ }
1316
+
1235
1317
  /*
1236
1318
  <file>
1237
1319
  Project:
@@ -1714,38 +1796,6 @@ GoogleAnalyticsService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: G
1714
1796
  }], function () { return [{ type: i1.Router }]; }, null);
1715
1797
  })();
1716
1798
 
1717
- /*
1718
- <file>
1719
- Project:
1720
- @osovitny/anatoly
1721
-
1722
- Authors:
1723
- Vadim Osovitny vadim@osovitny.com
1724
- Anatoly Osovitny anatoly@osovitny.com
1725
-
1726
- Created:
1727
- 10 Sep 2022
1728
-
1729
- Code:
1730
- https://www.npmjs.com/package/js-beautify
1731
- https://beautifier.io
1732
-
1733
- Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1734
- </file>
1735
- */
1736
- class XmlFormatter {
1737
- static toPrettyXML(s, options) {
1738
- if (!options) {
1739
- options = {
1740
- indent_size: 2,
1741
- indent_char: " ",
1742
- wrap_line_length: 110
1743
- };
1744
- }
1745
- return js_beautify.html(s, options);
1746
- }
1747
- }
1748
-
1749
1799
  /*
1750
1800
  <file>
1751
1801
  Project:
@@ -5973,5 +6023,5 @@ AnatolyModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModu
5973
6023
  * Generated bundle index. Do not edit.
5974
6024
  */
5975
6025
 
5976
- export { AddressComponent, Alerts, AnatolyCoreModule, AnatolyDataModule, AnatolyHttpInterceptor, AnatolyModule, AnatolyUIModule, AppContextService, AppCoreSettings, BaseApiService, BaseComponent, BaseDialog, BaseEditComponent, BaseGoService, BaseGridEditService, BaseGridReadService, BaseHtmlEditorComponent, BaseList, BasePage, BasePagedPage, BuyAccessButtonComponent, CardBodyComponent, CardComponent, CardFooterComponent, CardHeaderComponent, CheckIconComponent, CompanyComponent, ContactUsDialog, ContactUsForm, Convert, Copy2ClipboardComponent, CoreApiService, DOM, DatapagerComponent, DefaultEditorOptions, DigitalMarketingService, EmailsApiService, FileSizePipe, FormValidationSummaryComponent, FormsHtmlEditorComponent, FroalaEditorModuleWithProviders, FroalaViewModuleWithProviders, GlobalErrorHandler, GoogleAnalyticsService, Guid, HoveringDirective, HtmlEditorComponent, IdleService, InjectorInstance, ItemValidationSummaryComponent, LoadingComponent, LoadingService, LocalStorageService, LocalizationInjectorInstance, LocalizationModule, LocalizationService, LocalizationSettingsModule, LocalizePipe, LoggingService, NativeElementDirective, NodataComponent, NotificationService, NotificationsApiService, PageSpinnerComponent, ReplaceTextPipe, SafeHtmlPipe, SessionStorageService, SignInButtonComponent, SignOutButtonComponent, SignUpButtonComponent, Subs, SubscribePlanButtonComponent, TimezoneDropdownlist, TranslateModuleAtRoot, UrlSlugComponent, Urls, Utils, ValidationSummaryComponent, XmlFormatter, customTranslateLoaderFactory, localizationInitializerFactory, throwIfAlreadyLoaded };
6026
+ export { AddressComponent, Alerts, AnatolyCoreModule, AnatolyDataModule, AnatolyHttpInterceptor, AnatolyModule, AnatolyUIModule, AppContextService, AppCoreSettings, BaseApiService, BaseComponent, BaseDialog, BaseEditComponent, BaseGoService, BaseGridEditService, BaseGridReadService, BaseHtmlEditorComponent, BaseList, BasePage, BasePagedPage, BuyAccessButtonComponent, CardBodyComponent, CardComponent, CardFooterComponent, CardHeaderComponent, CheckIconComponent, CompanyComponent, ContactUsDialog, ContactUsForm, Convert, Copy2ClipboardComponent, CoreApiService, DOM, DatapagerComponent, DefaultEditorOptions, DigitalMarketingService, EmailsApiService, FileSizePipe, FormValidationSummaryComponent, FormsHtmlEditorComponent, FroalaEditorModuleWithProviders, FroalaViewModuleWithProviders, GlobalErrorHandler, GoogleAnalyticsService, Guid, HoveringDirective, HtmlEditorComponent, IdleService, InjectorInstance, ItemValidationSummaryComponent, LoadingComponent, LoadingService, LocalStorageService, LocalizationInjectorInstance, LocalizationModule, LocalizationService, LocalizationSettingsModule, LocalizePipe, LoggingService, NativeElementDirective, NodataComponent, NotificationService, NotificationsApiService, PageSpinnerComponent, ReplaceTextPipe, SafeHtmlPipe, SessionStorageService, SignInButtonComponent, SignOutButtonComponent, SignUpButtonComponent, Stopwatch, Subs, SubscribePlanButtonComponent, TimezoneDropdownlist, TranslateModuleAtRoot, UrlSlugComponent, Urls, Utils, ValidationSummaryComponent, XmlFormatter, customTranslateLoaderFactory, localizationInitializerFactory, throwIfAlreadyLoaded };
5977
6027
  //# sourceMappingURL=osovitny-anatoly.mjs.map