@osovitny/anatoly 3.17.160 → 3.19.1

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 (179) hide show
  1. package/fesm2022/osovitny-anatoly.mjs +553 -522
  2. package/fesm2022/osovitny-anatoly.mjs.map +1 -1
  3. package/lib/billing/utils.d.ts +2 -1
  4. package/lib/core/converts/convert.d.ts +1 -1
  5. package/lib/core/guid.d.ts +1 -1
  6. package/lib/core/is.d.ts +5 -5
  7. package/lib/ui/components/base/components/component.d.ts +1 -1
  8. package/lib/ui/components/base/components/edit.component.d.ts +1 -1
  9. package/lib/ui/components/base/components/enum-edit.component.d.ts +1 -1
  10. package/lib/ui/components/data-grid/control-panel.component.d.ts +6 -5
  11. package/lib/ui/components/dropdownlists/country/country.dropdownlist.d.ts +1 -3
  12. package/lib/ui/directives/index.d.ts +1 -1
  13. package/lib/ui/directives/replacer/replacer.base.directive.d.ts +1 -1
  14. package/package.json +58 -60
  15. package/esm2022/lib/anatoly.module.mjs +0 -62
  16. package/esm2022/lib/billing/billing.module.mjs +0 -81
  17. package/esm2022/lib/billing/components/buttons/buyaccess-button.component.mjs +0 -104
  18. package/esm2022/lib/billing/components/buttons/subscribe-plan-button.component.mjs +0 -113
  19. package/esm2022/lib/billing/components/exports.mjs +0 -28
  20. package/esm2022/lib/billing/components/index.mjs +0 -31
  21. package/esm2022/lib/billing/components/order-summary/order-summary.component.mjs +0 -154
  22. package/esm2022/lib/billing/components/payment-methods/payment-methods.component.mjs +0 -106
  23. package/esm2022/lib/billing/components/payment-options/payment-options.component.mjs +0 -97
  24. package/esm2022/lib/billing/components/pm/braintree/braintree.component.mjs +0 -155
  25. package/esm2022/lib/billing/components/pm/paypal/paypal-button.component.mjs +0 -159
  26. package/esm2022/lib/billing/components/pm/paypal/paypal-subscribe-button.component.mjs +0 -149
  27. package/esm2022/lib/billing/components/pm/paypal/paypal.component.mjs +0 -317
  28. package/esm2022/lib/billing/components/pm/stripe/stripe.component.mjs +0 -109
  29. package/esm2022/lib/billing/exports.mjs +0 -19
  30. package/esm2022/lib/billing/models/paypal-models.mjs +0 -16
  31. package/esm2022/lib/billing/services/payments.service.mjs +0 -170
  32. package/esm2022/lib/billing/services/paypal-script.service.mjs +0 -90
  33. package/esm2022/lib/billing/utils.mjs +0 -28
  34. package/esm2022/lib/core/browser.mjs +0 -24
  35. package/esm2022/lib/core/consts/app-settings.mjs +0 -55
  36. package/esm2022/lib/core/consts/core-settings.mjs +0 -29
  37. package/esm2022/lib/core/consts/formats.mjs +0 -27
  38. package/esm2022/lib/core/consts/ga.mjs +0 -26
  39. package/esm2022/lib/core/consts/storageKeys.mjs +0 -23
  40. package/esm2022/lib/core/converts/convert.mjs +0 -103
  41. package/esm2022/lib/core/converts/dateConvert.mjs +0 -60
  42. package/esm2022/lib/core/converts/tz/tzParseTimezone.mjs +0 -122
  43. package/esm2022/lib/core/converts/tz/tzTokenizeDate.mjs +0 -101
  44. package/esm2022/lib/core/converts/xmlFormatter.mjs +0 -34
  45. package/esm2022/lib/core/core.module.mjs +0 -112
  46. package/esm2022/lib/core/dom.mjs +0 -153
  47. package/esm2022/lib/core/enums/billing.mjs +0 -56
  48. package/esm2022/lib/core/enums/enums.mjs +0 -35
  49. package/esm2022/lib/core/enums/index.mjs +0 -17
  50. package/esm2022/lib/core/exports.mjs +0 -67
  51. package/esm2022/lib/core/go/apps-go.service.mjs +0 -88
  52. package/esm2022/lib/core/go/go.service.mjs +0 -86
  53. package/esm2022/lib/core/guards/once-import.guard.mjs +0 -21
  54. package/esm2022/lib/core/guards/starter.guard.mjs +0 -46
  55. package/esm2022/lib/core/guid.mjs +0 -22
  56. package/esm2022/lib/core/interceptors/httpInterceptor.mjs +0 -161
  57. package/esm2022/lib/core/is.mjs +0 -98
  58. package/esm2022/lib/core/localization/localization.module.mjs +0 -45
  59. package/esm2022/lib/core/localization/localization.service.mjs +0 -164
  60. package/esm2022/lib/core/localization/localize.pipe.mjs +0 -83
  61. package/esm2022/lib/core/localization/settings.module.mjs +0 -103
  62. package/esm2022/lib/core/localization/utils.mjs +0 -41
  63. package/esm2022/lib/core/logging/globalErrorHandler.mjs +0 -41
  64. package/esm2022/lib/core/logging/logging.service.mjs +0 -40
  65. package/esm2022/lib/core/models/qs.mjs +0 -17
  66. package/esm2022/lib/core/notifications/alerts.mjs +0 -116
  67. package/esm2022/lib/core/notifications/interfaces/notification.mjs +0 -17
  68. package/esm2022/lib/core/notifications/services/notification-service.mjs +0 -83
  69. package/esm2022/lib/core/performance/stopwatch.mjs +0 -50
  70. package/esm2022/lib/core/services/appcontext.service.mjs +0 -186
  71. package/esm2022/lib/core/services/dm.service.mjs +0 -69
  72. package/esm2022/lib/core/services/google-analytics.service.mjs +0 -75
  73. package/esm2022/lib/core/services/idle.service.mjs +0 -77
  74. package/esm2022/lib/core/services/loading.service.mjs +0 -67
  75. package/esm2022/lib/core/services/script.service.mjs +0 -77
  76. package/esm2022/lib/core/services/starter.service.mjs +0 -85
  77. package/esm2022/lib/core/services/web-storage.service.mjs +0 -66
  78. package/esm2022/lib/core/subs.mjs +0 -31
  79. package/esm2022/lib/core/utils/qsutils.mjs +0 -84
  80. package/esm2022/lib/core/utils/utils.mjs +0 -112
  81. package/esm2022/lib/data/base/api.service.mjs +0 -94
  82. package/esm2022/lib/data/base/grid/grid-edit.service.mjs +0 -80
  83. package/esm2022/lib/data/base/grid/grid-read.service.mjs +0 -60
  84. package/esm2022/lib/data/data.module.mjs +0 -66
  85. package/esm2022/lib/data/exports.mjs +0 -29
  86. package/esm2022/lib/data/services/billing/currencies-api.service.mjs +0 -41
  87. package/esm2022/lib/data/services/billing/currencies-storage.service.mjs +0 -92
  88. package/esm2022/lib/data/services/billing/discountcodes-api.service.mjs +0 -37
  89. package/esm2022/lib/data/services/billing/payments-api.service.mjs +0 -64
  90. package/esm2022/lib/data/services/billing/subscriptions-api.service.mjs +0 -61
  91. package/esm2022/lib/data/services/billing/transactions-api.service.mjs +0 -43
  92. package/esm2022/lib/data/services/core-api.service.mjs +0 -44
  93. package/esm2022/lib/data/services/emails-api.service.mjs +0 -47
  94. package/esm2022/lib/external/fa.module.mjs +0 -45
  95. package/esm2022/lib/external/kendo.module.mjs +0 -179
  96. package/esm2022/lib/iam/b2c/b2c.mjs +0 -40
  97. package/esm2022/lib/iam/b2c/consts.mjs +0 -25
  98. package/esm2022/lib/iam/b2c/index.mjs +0 -21
  99. package/esm2022/lib/iam/configs.mjs +0 -109
  100. package/esm2022/lib/iam/consts.mjs +0 -22
  101. package/esm2022/lib/iam/exports.mjs +0 -22
  102. package/esm2022/lib/iam/guards/admin.guard.mjs +0 -46
  103. package/esm2022/lib/iam/guards/authentication.guard.mjs +0 -30
  104. package/esm2022/lib/iam/guards/index.mjs +0 -20
  105. package/esm2022/lib/iam/iam-pages.module.mjs +0 -57
  106. package/esm2022/lib/iam/iam-pages.routes.mjs +0 -45
  107. package/esm2022/lib/iam/iam.module.mjs +0 -84
  108. package/esm2022/lib/iam/pages/signin.page.mjs +0 -40
  109. package/esm2022/lib/iam/pages/signout.page.mjs +0 -40
  110. package/esm2022/lib/iam/pages/signup.page.mjs +0 -40
  111. package/esm2022/lib/iam/redirect.mjs +0 -29
  112. package/esm2022/lib/iam/services/auth.service.mjs +0 -436
  113. package/esm2022/lib/iam/storage.mjs +0 -42
  114. package/esm2022/lib/iam/utils.mjs +0 -49
  115. package/esm2022/lib/ui/components/base/components/component.mjs +0 -76
  116. package/esm2022/lib/ui/components/base/components/edit.component.mjs +0 -146
  117. package/esm2022/lib/ui/components/base/components/enum-edit.component.mjs +0 -92
  118. package/esm2022/lib/ui/components/base/dialog.mjs +0 -71
  119. package/esm2022/lib/ui/components/base/list.mjs +0 -100
  120. package/esm2022/lib/ui/components/base/pages/edit.page.mjs +0 -32
  121. package/esm2022/lib/ui/components/base/pages/page.mjs +0 -32
  122. package/esm2022/lib/ui/components/base/pages/paged.page.mjs +0 -68
  123. package/esm2022/lib/ui/components/card/card-body.component.mjs +0 -37
  124. package/esm2022/lib/ui/components/card/card-footer.component.mjs +0 -37
  125. package/esm2022/lib/ui/components/card/card-header.component.mjs +0 -51
  126. package/esm2022/lib/ui/components/card/card.component.mjs +0 -41
  127. package/esm2022/lib/ui/components/check-icon/check-icon.component.mjs +0 -43
  128. package/esm2022/lib/ui/components/copy-2-clipboard/copy-2-clipboard.component.mjs +0 -57
  129. package/esm2022/lib/ui/components/data-grid/control-panel.component.mjs +0 -201
  130. package/esm2022/lib/ui/components/datapager/datapager.component.mjs +0 -95
  131. package/esm2022/lib/ui/components/dropdownlists/country/country.dropdownlist.mjs +0 -96
  132. package/esm2022/lib/ui/components/dropdownlists/moderationstatus/moderationstatus.dropdownlist.mjs +0 -88
  133. package/esm2022/lib/ui/components/dropdownlists/publishstatus/publishstatus.dropdownlist.mjs +0 -88
  134. package/esm2022/lib/ui/components/dropdownlists/timezone/timezone.dropdownlist.mjs +0 -112
  135. package/esm2022/lib/ui/components/exports.mjs +0 -53
  136. package/esm2022/lib/ui/components/feature-will-be-ready/feature-will-be-ready.component.mjs +0 -55
  137. package/esm2022/lib/ui/components/html-editor/base-editor.component.mjs +0 -94
  138. package/esm2022/lib/ui/components/html-editor/defaultoptions.mjs +0 -87
  139. package/esm2022/lib/ui/components/html-editor/html-editor.component.mjs +0 -114
  140. package/esm2022/lib/ui/components/identity/signin-button.component.mjs +0 -105
  141. package/esm2022/lib/ui/components/identity/signout-button.component.mjs +0 -105
  142. package/esm2022/lib/ui/components/identity/signup-button.component.mjs +0 -105
  143. package/esm2022/lib/ui/components/index.mjs +0 -57
  144. package/esm2022/lib/ui/components/no-mobile-support/no-mobile-support.component.mjs +0 -45
  145. package/esm2022/lib/ui/components/nodata/nodata.component.mjs +0 -76
  146. package/esm2022/lib/ui/components/spinners/loading/loading.component.mjs +0 -53
  147. package/esm2022/lib/ui/components/spinners/pagespinner/pagespinner.component.mjs +0 -85
  148. package/esm2022/lib/ui/components/spinners/pagespinner/spinkits.mjs +0 -12
  149. package/esm2022/lib/ui/components/urlslug/urlslug.component.mjs +0 -130
  150. package/esm2022/lib/ui/components/you-agree-to-our-terms/you-agree-to-our-terms.component.mjs +0 -63
  151. package/esm2022/lib/ui/dialogs/contact-us/contact-us.dialog.mjs +0 -78
  152. package/esm2022/lib/ui/dialogs/exports.mjs +0 -16
  153. package/esm2022/lib/ui/dialogs/index.mjs +0 -19
  154. package/esm2022/lib/ui/directives/exports.mjs +0 -19
  155. package/esm2022/lib/ui/directives/hover.directive.mjs +0 -50
  156. package/esm2022/lib/ui/directives/index.mjs +0 -22
  157. package/esm2022/lib/ui/directives/native-element.directive.mjs +0 -37
  158. package/esm2022/lib/ui/directives/replacer/a-replacer.directive.mjs +0 -48
  159. package/esm2022/lib/ui/directives/replacer/image-replacer.directive.mjs +0 -44
  160. package/esm2022/lib/ui/directives/replacer/replacer.base.directive.mjs +0 -44
  161. package/esm2022/lib/ui/exports.mjs +0 -22
  162. package/esm2022/lib/ui/forms/components/address/address.component.mjs +0 -240
  163. package/esm2022/lib/ui/forms/components/company/company.component.mjs +0 -138
  164. package/esm2022/lib/ui/forms/contact-us/contact-us.mjs +0 -213
  165. package/esm2022/lib/ui/forms/exports.mjs +0 -20
  166. package/esm2022/lib/ui/forms/index.mjs +0 -21
  167. package/esm2022/lib/ui/pipes/exports.mjs +0 -19
  168. package/esm2022/lib/ui/pipes/filesize.pipe.mjs +0 -42
  169. package/esm2022/lib/ui/pipes/index.mjs +0 -22
  170. package/esm2022/lib/ui/pipes/replace-text.pipe.mjs +0 -37
  171. package/esm2022/lib/ui/pipes/safeHtml.pipe.mjs +0 -34
  172. package/esm2022/lib/ui/ui.module.mjs +0 -122
  173. package/esm2022/lib/ui/validation/exports.mjs +0 -19
  174. package/esm2022/lib/ui/validation/form-validation-summary.component.mjs +0 -90
  175. package/esm2022/lib/ui/validation/index.mjs +0 -21
  176. package/esm2022/lib/ui/validation/item-validation-summary.component.mjs +0 -53
  177. package/esm2022/lib/ui/validation/validation-summary.component.mjs +0 -124
  178. package/esm2022/osovitny-anatoly.mjs +0 -5
  179. package/esm2022/public-api.mjs +0 -22
@@ -1,161 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny vadim.osovitny@osovitny.com
8
- Anatoly Osovitny anatoly.osovitny@osovitny.com
9
-
10
- Created:
11
- 25 March 2020
12
-
13
- Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
14
- </file>
15
- */
16
- //Node
17
- import { HttpResponse } from '@angular/common/http';
18
- import { Injectable } from '@angular/core';
19
- // RxJS
20
- import { mergeMap, tap } from 'rxjs/operators';
21
- //App
22
- import { AppCoreSettings } from '../consts/core-settings';
23
- import { getCurrentApp } from '../consts/app-settings';
24
- import * as i0 from "@angular/core";
25
- import * as i1 from "../../iam/exports";
26
- import * as i2 from "../services/loading.service";
27
- import * as i3 from "../logging/logging.service";
28
- export class AnatolyHttpInterceptor {
29
- constructor(authService, loadingService, logger) {
30
- this.authService = authService;
31
- this.loadingService = loadingService;
32
- this.logger = logger;
33
- this.longRunningExceptions = [
34
- 'chunkupload',
35
- ];
36
- this.authorizationTokenExceptions = [
37
- 'assets',
38
- 'dist'
39
- ];
40
- this.autoCDNSASTokenUrls = [
41
- 'chunks',
42
- 'l10n'
43
- ];
44
- this.externalSiteUrls = [
45
- 'azurewebsites.net'
46
- ];
47
- }
48
- handleHttpRequest(request, next, loadingRequired) {
49
- return next.handle(request).pipe(tap({
50
- next: (event) => {
51
- if (event instanceof HttpResponse) {
52
- this.onRequestEnd(loadingRequired);
53
- }
54
- },
55
- error: (err) => {
56
- this.onRequestEnd(loadingRequired);
57
- this.logger.error(err);
58
- }
59
- }));
60
- }
61
- setQS(url, value) {
62
- if (url.indexOf('?') > -1) {
63
- return url + '&' + value;
64
- }
65
- return url + '?' + value;
66
- }
67
- intercept(req, next) {
68
- let isCDNEnabled = AppCoreSettings.IsCDNEnabled;
69
- let cdnSasToken = AppCoreSettings.CDNSASToken;
70
- let isLoadingFreezed = this.loadingService.isFreezed;
71
- let loadingRequired = !isLoadingFreezed;
72
- let url = req.url.toLowerCase();
73
- let originalUrl = req.url;
74
- let isExternalSite = false;
75
- let authorizationTokenRequired = true;
76
- //1. longRunning tasks
77
- if (!isLoadingFreezed) {
78
- for (const i of this.longRunningExceptions) {
79
- if (url.indexOf(this.longRunningExceptions[i]) >= 0) {
80
- loadingRequired = false;
81
- break;
82
- }
83
- }
84
- }
85
- //2. Check is site External?
86
- for (const i of this.externalSiteUrls) {
87
- if (url.indexOf(this.externalSiteUrls[i]) >= 0) {
88
- isExternalSite = true;
89
- break;
90
- }
91
- }
92
- //3. Is Authorization Token Required
93
- if (isExternalSite) {
94
- authorizationTokenRequired = false;
95
- }
96
- else {
97
- for (var i = 0; i < this.authorizationTokenExceptions.length; i++) {
98
- if (url.indexOf(this.authorizationTokenExceptions[i]) >= 0) {
99
- authorizationTokenRequired = false;
100
- break;
101
- }
102
- }
103
- }
104
- //4. appContext
105
- if (url.indexOf('/appcontext/') > -1) {
106
- authorizationTokenRequired = this.authService.isUserAuthenticated();
107
- }
108
- // Change Url if need it -------------------------------------------->
109
- let newUrl = originalUrl;
110
- //5. Check should we add CDN SAS tokens
111
- if (isCDNEnabled) {
112
- for (const i of this.autoCDNSASTokenUrls) {
113
- if (url.indexOf(this.autoCDNSASTokenUrls[i]) >= 0) {
114
- newUrl = newUrl + cdnSasToken;
115
- break;
116
- }
117
- }
118
- }
119
- //6. no caching for API calls
120
- if (url.indexOf('/api/') > -1 || url.indexOf('api.') > -1) {
121
- const t = new Date().getTime().toString();
122
- newUrl = this.setQS(newUrl, 't=' + t);
123
- }
124
- //7. set ca
125
- let app = getCurrentApp();
126
- newUrl = this.setQS(newUrl, 'ca=' + app.type);
127
- //8. set new url
128
- req = req.clone({ url: newUrl });
129
- req = req.clone({ headers: req.headers.set('Accept', 'application/json') });
130
- req = req.clone({ headers: req.headers.set('Accept', 'application/text') });
131
- this.onRequestStart(loadingRequired);
132
- if (authorizationTokenRequired) {
133
- return this.authService.getAccessToken().pipe(mergeMap((token) => {
134
- if (token) {
135
- req = req.clone({ headers: req.headers.set('Authorization', 'Bearer ' + token) });
136
- }
137
- return this.handleHttpRequest(req, next, loadingRequired);
138
- }));
139
- }
140
- else {
141
- return this.handleHttpRequest(req, next, loadingRequired);
142
- }
143
- }
144
- //Events
145
- onRequestStart(loadingRequired) {
146
- if (loadingRequired) {
147
- this.loadingService.show();
148
- }
149
- }
150
- onRequestEnd(loadingRequired) {
151
- if (loadingRequired) {
152
- this.loadingService.hide();
153
- }
154
- }
155
- static { this.ɵfac = function AnatolyHttpInterceptor_Factory(t) { return new (t || AnatolyHttpInterceptor)(i0.ɵɵinject(i1.AuthService), i0.ɵɵinject(i2.LoadingService), i0.ɵɵinject(i3.LoggingService)); }; }
156
- static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AnatolyHttpInterceptor, factory: AnatolyHttpInterceptor.ɵfac }); }
157
- }
158
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AnatolyHttpInterceptor, [{
159
- type: Injectable
160
- }], () => [{ type: i1.AuthService }, { type: i2.LoadingService }, { type: i3.LoggingService }], null); })();
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cEludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL2NvcmUvaW50ZXJjZXB0b3JzL2h0dHBJbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE1BQU07QUFDTixPQUFPLEVBQXVELFlBQVksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3hHLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTztBQUNQLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0MsS0FBSztBQUNMLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUkxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBR3ZELE1BQU0sT0FBTyxzQkFBc0I7SUFtQmpDLFlBQ1ksV0FBd0IsRUFDeEIsY0FBOEIsRUFDOUIsTUFBc0I7UUFGdEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBckJ4QiwwQkFBcUIsR0FBRztZQUNoQyxhQUFhO1NBQ2QsQ0FBQztRQUVRLGlDQUE0QixHQUFHO1lBQ3ZDLFFBQVE7WUFDUixNQUFNO1NBQ1AsQ0FBQztRQUVRLHdCQUFtQixHQUFHO1lBQzlCLFFBQVE7WUFDUixNQUFNO1NBQ1AsQ0FBQztRQUVRLHFCQUFnQixHQUFHO1lBQzNCLG1CQUFtQjtTQUNwQixDQUFDO0lBTUYsQ0FBQztJQUVPLGlCQUFpQixDQUFDLE9BQXlCLEVBQUUsSUFBaUIsRUFBRSxlQUF3QjtRQUM5RixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZ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QUNILENBQUM7dUZBckpVLHNCQUFzQjt1RUFBdEIsc0JBQXNCLFdBQXRCLHNCQUFzQjs7aUZBQXRCLHNCQUFzQjtjQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbS5vc292aXRueUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seS5vc292aXRueUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDI1IE1hcmNoIDIwMjBcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjUgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vL05vZGVcclxuaW1wb3J0IHtIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vIFJ4SlNcclxuaW1wb3J0IHttZXJnZU1hcCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XHJcblxyXG4vL0FwcFxyXG5pbXBvcnQgeyBBcHBDb3JlU2V0dGluZ3MgfSBmcm9tICcuLi9jb25zdHMvY29yZS1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IExvYWRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbG9hZGluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9nZ2luZ1NlcnZpY2UgfSBmcm9tICcuLi9sb2dnaW5nL2xvZ2dpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaWFtL2V4cG9ydHMnO1xyXG5pbXBvcnQgeyBnZXRDdXJyZW50QXBwIH0gZnJvbSAnLi4vY29uc3RzL2FwcC1zZXR0aW5ncyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBbmF0b2x5SHR0cEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcclxuICBwcm90ZWN0ZWQgbG9uZ1J1bm5pbmdFeGNlcHRpb25zID0gW1xyXG4gICAgJ2NodW5rdXBsb2FkJyxcclxuICBdO1xyXG5cclxuICBwcm90ZWN0ZWQgYXV0aG9yaXphdGlvblRva2VuRXhjZXB0aW9ucyA9IFtcclxuICAgICdhc3NldHMnLFxyXG4gICAgJ2Rpc3QnXHJcbiAgXTtcclxuXHJcbiAgcHJvdGVjdGVkIGF1dG9DRE5TQVNUb2tlblVybHMgPSBbXHJcbiAgICAnY2h1bmtzJyxcclxuICAgICdsMTBuJ1xyXG4gIF07XHJcblxyXG4gIHByb3RlY3RlZCBleHRlcm5hbFNpdGVVcmxzID0gW1xyXG4gICAgJ2F6dXJld2Vic2l0ZXMubmV0J1xyXG4gIF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBsb2FkaW5nU2VydmljZTogTG9hZGluZ1NlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgbG9nZ2VyOiBMb2dnaW5nU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVIdHRwUmVxdWVzdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlciwgbG9hZGluZ1JlcXVpcmVkOiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj57XHJcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZSh0YXAoe1xyXG4gICAgICBuZXh0OiAoZXZlbnQ6IEh0dHBFdmVudDxhbnk+KSA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICB0aGlzLm9uUmVxdWVzdEVuZChsb2FkaW5nUmVxdWlyZWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMub25SZXF1ZXN0RW5kKGxvYWRpbmdSZXF1aXJlZCk7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoZXJyKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRRUyh1cmw6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAodXJsLmluZGV4T2YoJz8nKSA+IC0xKSB7XHJcbiAgICAgIHJldHVybiB1cmwgKyAnJicgKyB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdXJsICsgJz8nICsgdmFsdWU7XHJcbiAgfVxyXG5cclxuICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuICAgIGxldCBpc0NETkVuYWJsZWQgPSBBcHBDb3JlU2V0dGluZ3MuSXNDRE5FbmFibGVkO1xyXG4gICAgbGV0IGNkblNhc1Rva2VuID0gQXBwQ29yZVNldHRpbmdzLkNETlNBU1Rva2VuO1xyXG4gICAgbGV0IGlzTG9hZGluZ0ZyZWV6ZWQgPSB0aGlzLmxvYWRpbmdTZXJ2aWNlLmlzRnJlZXplZDtcclxuICAgIGxldCBsb2FkaW5nUmVxdWlyZWQgPSAhaXNMb2FkaW5nRnJlZXplZDtcclxuICAgIGxldCB1cmwgPSByZXEudXJsLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBsZXQgb3JpZ2luYWxVcmwgPSByZXEudXJsO1xyXG4gICAgbGV0IGlzRXh0ZXJuYWxTaXRlID0gZmFsc2U7XHJcbiAgICBsZXQgYXV0aG9yaXphdGlvblRva2VuUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgIC8vMS4gbG9uZ1J1bm5pbmcgdGFza3NcclxuICAgIGlmICghaXNMb2FkaW5nRnJlZXplZCkge1xyXG4gICAgICBmb3IgKGNvbnN0IGkgb2YgdGhpcy5sb25nUnVubmluZ0V4Y2VwdGlvbnMpIHtcclxuICAgICAgICBpZiAodXJsLmluZGV4T2YodGhpcy5sb25nUnVubmluZ0V4Y2VwdGlvbnNbaV0pID49IDApIHtcclxuICAgICAgICAgIGxvYWRpbmdSZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8yLiBDaGVjayBpcyBzaXRlIEV4dGVybmFsP1xyXG4gICAgZm9yIChjb25zdCBpIG9mIHRoaXMuZXh0ZXJuYWxTaXRlVXJscykge1xyXG4gICAgICBpZiAodXJsLmluZGV4T2YodGhpcy5leHRlcm5hbFNpdGVVcmxzW2ldKSA+PSAwKSB7XHJcbiAgICAgICAgaXNFeHRlcm5hbFNpdGUgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8zLiBJcyBBdXRob3JpemF0aW9uIFRva2VuIFJlcXVpcmVkXHJcbiAgICBpZiAoaXNFeHRlcm5hbFNpdGUpIHtcclxuICAgICAgYXV0aG9yaXphdGlvblRva2VuUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYXV0aG9yaXphdGlvblRva2VuRXhjZXB0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh1cmwuaW5kZXhPZih0aGlzLmF1dGhvcml6YXRpb25Ub2tlbkV4Y2VwdGlvbnNbaV0pID49IDApIHtcclxuICAgICAgICAgIGF1dGhvcml6YXRpb25Ub2tlblJlcXVpcmVkID0gZmFsc2U7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLzQuIGFwcENvbnRleHRcclxuICAgIGlmICh1cmwuaW5kZXhPZignL2FwcGNvbnRleHQvJykgPiAtMSkge1xyXG4gICAgICBhdXRob3JpemF0aW9uVG9rZW5SZXF1aXJlZCA9IHRoaXMuYXV0aFNlcnZpY2UuaXNVc2VyQXV0aGVudGljYXRlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENoYW5nZSBVcmwgaWYgbmVlZCBpdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuICAgIGxldCBuZXdVcmwgPSBvcmlnaW5hbFVybDtcclxuXHJcbiAgICAvLzUuIENoZWNrIHNob3VsZCB3ZSBhZGQgQ0ROIFNBUyB0b2tlbnNcclxuICAgIGlmIChpc0NETkVuYWJsZWQpIHtcclxuICAgICAgZm9yIChjb25zdCBpIG9mIHRoaXMuYXV0b0NETlNBU1Rva2VuVXJscykge1xyXG4gICAgICAgIGlmICh1cmwuaW5kZXhPZih0aGlzLmF1dG9DRE5TQVNUb2tlblVybHNbaV0pID49IDApIHtcclxuICAgICAgICAgIG5ld1VybCA9IG5ld1VybCArIGNkblNhc1Rva2VuO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy82LiBubyBjYWNoaW5nIGZvciBBUEkgY2FsbHNcclxuICAgIGlmICh1cmwuaW5kZXhPZignL2FwaS8nKSA+IC0xIHx8IHVybC5pbmRleE9mKCdhcGkuJykgPiAtMSkgeyAgICAgIFxyXG4gICAgICBjb25zdCB0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkudG9TdHJpbmcoKTtcclxuICAgICAgbmV3VXJsID0gdGhpcy5zZXRRUyhuZXdVcmwsICd0PScgKyB0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLzcuIHNldCBjYVxyXG4gICAgbGV0IGFwcCA9IGdldEN1cnJlbnRBcHAoKTtcclxuICAgIG5ld1VybCA9IHRoaXMuc2V0UVMobmV3VXJsLCAnY2E9JyArIGFwcC50eXBlKTtcclxuXHJcbiAgICAvLzguIHNldCBuZXcgdXJsXHJcbiAgICByZXEgPSByZXEuY2xvbmUoeyB1cmw6IG5ld1VybCB9KTtcclxuXHJcbiAgICByZXEgPSByZXEuY2xvbmUoeyBoZWFkZXJzOiByZXEuaGVhZGVycy5zZXQoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi9qc29uJykgfSk7XHJcbiAgICByZXEgPSByZXEuY2xvbmUoeyBoZWFkZXJzOiByZXEuaGVhZGVycy5zZXQoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi90ZXh0JykgfSk7XHJcblxyXG4gICAgdGhpcy5vblJlcXVlc3RTdGFydChsb2FkaW5nUmVxdWlyZWQpO1xyXG5cclxuICAgIGlmIChhdXRob3JpemF0aW9uVG9rZW5SZXF1aXJlZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5nZXRBY2Nlc3NUb2tlbigpLnBpcGUobWVyZ2VNYXAoKHRva2VuOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAodG9rZW4pIHtcclxuICAgICAgICAgIHJlcSA9IHJlcS5jbG9uZSh7IGhlYWRlcnM6IHJlcS5oZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsICdCZWFyZXIgJyArIHRva2VuKSB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUh0dHBSZXF1ZXN0KHJlcSwgbmV4dCwgbG9hZGluZ1JlcXVpcmVkKTtcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUh0dHBSZXF1ZXN0KHJlcSwgbmV4dCwgbG9hZGluZ1JlcXVpcmVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRXZlbnRzXHJcbiAgb25SZXF1ZXN0U3RhcnQobG9hZGluZ1JlcXVpcmVkOiBib29sZWFuKSB7XHJcbiAgICBpZiAobG9hZGluZ1JlcXVpcmVkKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2hvdygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25SZXF1ZXN0RW5kKGxvYWRpbmdSZXF1aXJlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKGxvYWRpbmdSZXF1aXJlZCkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLmhpZGUoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -1,98 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny vadim.osovitny@osovitny.com
8
-
9
- Created:
10
- 09 Feb 2024
11
-
12
- Sources:
13
- https://playcode.io/javascript
14
- https://github.com/date-fns/date-fns/blob/main/src/isDate/index.ts
15
- https://github.com/date-fns/date-fns/blob/main/src/isValid/index.ts
16
-
17
- Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
18
- </file>
19
- */
20
- export class is {
21
- /**
22
- * @name isDate
23
- * @summary Is the given value a date?
24
- */
25
- static date(value) {
26
- return (value instanceof Date ||
27
- (typeof value === "object" && Object.prototype.toString.call(value) === "[object Date]"));
28
- }
29
- /**
30
- * @name isDateValid
31
- * @summary Is the given date valid?
32
- */
33
- static dateValid(date) {
34
- if (!is.date(date) && typeof date !== "number") {
35
- return false;
36
- }
37
- let d = new Date(date);
38
- return !isNaN(Number(d));
39
- }
40
- static dateInvalid(date) {
41
- return !is.dateValid(date);
42
- }
43
- static objectNullOrEmpty(obj) {
44
- return !obj || Object.keys(obj).length == 0;
45
- }
46
- static string(value) {
47
- return (typeof value === 'string' || value instanceof String);
48
- }
49
- static emptyString(value) {
50
- return (is.string(value) && (value.length == 0));
51
- }
52
- static notEmptyString(value) {
53
- return (is.string(value) && (value.length > 0));
54
- }
55
- static number(value) {
56
- return (typeof value === 'number');
57
- }
58
- static boolean(value) {
59
- return (typeof value === 'boolean');
60
- }
61
- static array(value) {
62
- return (value instanceof Array);
63
- }
64
- static emptyArray(value) {
65
- return (is.array(value) && (value.length == 0));
66
- }
67
- static notEmptyArray(value) {
68
- return (is.array(value) && (value.length > 0));
69
- }
70
- static undefined(value) {
71
- return (typeof value === 'undefined');
72
- }
73
- }
74
- /*
75
- is = {
76
- DONE string: function (obj) { return (typeof obj === 'string'); },
77
- DONE emptyString: function (obj) { return (is.string(obj) && (obj.length == 0)); },
78
- DONE nonEmptyString: function (obj) { return (is.string(obj) && (obj.length > 0)); },
79
- DONE number: function (obj) { return (typeof obj === 'number'); },
80
- DONE bool: function (obj) { return (typeof obj === 'boolean'); },
81
- DONE array: function (obj) { return (obj instanceof Array); },
82
- DONE emptyArray: function (obj) { return (is.array(obj) && (obj.length == 0)); },
83
- DONE notEmptyArray: function (obj) { return (is.array(obj) && (obj.length > 0)); },
84
- DONE undefined: function (obj) { return (typeof obj === 'undefined'); },
85
-
86
- 'null': function (obj) { return (obj === null); },
87
- notNull: function (obj) { return (obj !== null); },
88
- invalid: function (obj) { return (is['null'](obj) || is.undefined(obj)); },
89
- valid: function (obj) { return (!is['null'](obj) && !is.undefined(obj)); },
90
-
91
- document: function (obj) { return (obj === document); },
92
- window: function (obj) { return (obj === window); },
93
- element: function (obj) { return (obj instanceof HTMLElement); },
94
- event: function (obj) { return (obj instanceof Event); },
95
- link: function (obj) { return (is.element(obj) && (obj.tagName == 'A')); }
96
- };
97
- */
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9pcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBa0JFO0FBRUYsTUFBTSxPQUFPLEVBQUU7SUFDYjs7O01BR0U7SUFDSyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUs7UUFDdEIsT0FBTyxDQUNMLEtBQUssWUFBWSxJQUFJO1lBQ3JCLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxlQUFlLENBQUMsQ0FDekYsQ0FBQztJQUNKLENBQUM7SUFFRDs7O01BR0U7SUFDSyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUk7UUFDMUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0MsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU0sTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJO1FBQzVCLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRztRQUNqQyxPQUFPLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLO1FBQ3hCLE9BQU8sQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxZQUFZLE1BQU0sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUs7UUFDN0IsT0FBTyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSztRQUNoQyxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLO1FBQ3hCLE9BQU8sQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLO1FBQ3pCLE9BQU8sQ0FBQyxPQUFPLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLO1FBQ3ZCLE9BQU8sQ0FBQyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSztRQUM1QixPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLO1FBQy9CLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUs7UUFDM0IsT0FBTyxDQUFDLE9BQU8sS0FBSyxLQUFLLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDRjtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXVCRSIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbjxmaWxlPlxyXG4gIFByb2plY3Q6XHJcbiAgICBAb3Nvdml0bnkvYW5hdG9seVxyXG5cclxuICBBdXRob3JzOlxyXG4gICAgVmFkaW0gT3Nvdml0bnkgdmFkaW0ub3Nvdml0bnlAb3Nvdml0bnkuY29tXHJcblxyXG4gIENyZWF0ZWQ6XHJcbiAgICAwOSBGZWIgMjAyNFxyXG5cclxuICBTb3VyY2VzOlxyXG4gICAgaHR0cHM6Ly9wbGF5Y29kZS5pby9qYXZhc2NyaXB0XHJcbiAgICBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYWluL3NyYy9pc0RhdGUvaW5kZXgudHNcclxuICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21haW4vc3JjL2lzVmFsaWQvaW5kZXgudHNcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjUgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG5leHBvcnQgY2xhc3MgaXMge1xyXG4gIC8qKlxyXG4gICAqIEBuYW1lIGlzRGF0ZVxyXG4gICAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiB2YWx1ZSBhIGRhdGU/XHJcbiAgKi9cclxuICBwdWJsaWMgc3RhdGljIGRhdGUodmFsdWUpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSB8fFxyXG4gICAgICAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09IFwiW29iamVjdCBEYXRlXVwiKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBuYW1lIGlzRGF0ZVZhbGlkXHJcbiAgICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgdmFsaWQ/XHJcbiAgKi9cclxuICBwdWJsaWMgc3RhdGljIGRhdGVWYWxpZChkYXRlKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWlzLmRhdGUoZGF0ZSkgJiYgdHlwZW9mIGRhdGUgIT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBkID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICByZXR1cm4gIWlzTmFOKE51bWJlcihkKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGRhdGVJbnZhbGlkKGRhdGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhaXMuZGF0ZVZhbGlkKGRhdGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBvYmplY3ROdWxsT3JFbXB0eShvYmopIHtcclxuICAgIHJldHVybiAhb2JqIHx8IE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIHN0cmluZyh2YWx1ZSkge1xyXG4gICAgcmV0dXJuICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHZhbHVlIGluc3RhbmNlb2YgU3RyaW5nKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZW1wdHlTdHJpbmcodmFsdWUpIHtcclxuICAgIHJldHVybiAoaXMuc3RyaW5nKHZhbHVlKSAmJiAodmFsdWUubGVuZ3RoID09IDApKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgbm90RW1wdHlTdHJpbmcodmFsdWUpIHtcclxuICAgIHJldHVybiAoaXMuc3RyaW5nKHZhbHVlKSAmJiAodmFsdWUubGVuZ3RoID4gMCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBudW1iZXIodmFsdWUpIHtcclxuICAgIHJldHVybiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGJvb2xlYW4odmFsdWUpIHtcclxuICAgIHJldHVybiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBhcnJheSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZW1wdHlBcnJheSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIChpcy5hcnJheSh2YWx1ZSkgJiYgKHZhbHVlLmxlbmd0aCA9PSAwKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIG5vdEVtcHR5QXJyYXkodmFsdWUpIHtcclxuICAgIHJldHVybiAoaXMuYXJyYXkodmFsdWUpICYmICh2YWx1ZS5sZW5ndGggPiAwKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIHVuZGVmaW5lZCh2YWx1ZSkge1xyXG4gICAgcmV0dXJuICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKTtcclxuICB9XHJcbn1cclxuXHJcbi8qXHJcbmlzID0ge1xyXG4gIERPTkUgc3RyaW5nOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpOyB9LFxyXG4gIERPTkUgZW1wdHlTdHJpbmc6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIChpcy5zdHJpbmcob2JqKSAmJiAob2JqLmxlbmd0aCA9PSAwKSk7IH0sXHJcbiAgRE9ORSBub25FbXB0eVN0cmluZzogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gKGlzLnN0cmluZyhvYmopICYmIChvYmoubGVuZ3RoID4gMCkpOyB9LFxyXG4gIERPTkUgbnVtYmVyOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiAodHlwZW9mIG9iaiA9PT0gJ251bWJlcicpOyB9LFxyXG4gIERPTkUgYm9vbDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gKHR5cGVvZiBvYmogPT09ICdib29sZWFuJyk7IH0sXHJcbiAgRE9ORSBhcnJheTogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gKG9iaiBpbnN0YW5jZW9mIEFycmF5KTsgfSxcclxuICBET05FIGVtcHR5QXJyYXk6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIChpcy5hcnJheShvYmopICYmIChvYmoubGVuZ3RoID09IDApKTsgfSxcclxuICBET05FIG5vdEVtcHR5QXJyYXk6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIChpcy5hcnJheShvYmopICYmIChvYmoubGVuZ3RoID4gMCkpOyB9LFxyXG4gIERPTkUgdW5kZWZpbmVkOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiAodHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpOyB9LFxyXG5cclxuICAnbnVsbCc6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIChvYmogPT09IG51bGwpOyB9LFxyXG4gIG5vdE51bGw6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIChvYmogIT09IG51bGwpOyB9LFxyXG4gIGludmFsaWQ6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIChpc1snbnVsbCddKG9iaikgfHwgaXMudW5kZWZpbmVkKG9iaikpOyB9LFxyXG4gIHZhbGlkOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiAoIWlzWydudWxsJ10ob2JqKSAmJiAhaXMudW5kZWZpbmVkKG9iaikpOyB9LFxyXG5cclxuICBkb2N1bWVudDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gKG9iaiA9PT0gZG9jdW1lbnQpOyB9LFxyXG4gIHdpbmRvdzogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gKG9iaiA9PT0gd2luZG93KTsgfSxcclxuICBlbGVtZW50OiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiAob2JqIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpOyB9LFxyXG4gIGV2ZW50OiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiAob2JqIGluc3RhbmNlb2YgRXZlbnQpOyB9LFxyXG4gIGxpbms6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIChpcy5lbGVtZW50KG9iaikgJiYgKG9iai50YWdOYW1lID09ICdBJykpOyB9XHJcbn07XHJcbiovXHJcbiJdfQ==
@@ -1,45 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny vadim.osovitny@osovitny.com
8
- Anatoly Osovitny anatoly.osovitny@osovitny.com
9
-
10
- Created:
11
- 12 May 2020
12
-
13
- Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
14
- </file>
15
- */
16
- //Node
17
- import { NgModule } from '@angular/core';
18
- import { TranslateModule } from '@ngx-translate/core';
19
- //Pipes
20
- import { LocalizePipe } from './localize.pipe';
21
- import * as i0 from "@angular/core";
22
- export class LocalizationModule {
23
- static { this.ɵfac = function LocalizationModule_Factory(t) { return new (t || LocalizationModule)(); }; }
24
- static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: LocalizationModule }); }
25
- static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [TranslateModule, TranslateModule] }); }
26
- }
27
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LocalizationModule, [{
28
- type: NgModule,
29
- args: [{
30
- imports: [
31
- TranslateModule
32
- ],
33
- exports: [
34
- TranslateModule,
35
- LocalizePipe
36
- ],
37
- declarations: [
38
- LocalizePipe
39
- ],
40
- providers: []
41
- }]
42
- }], null, null); })();
43
- (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(LocalizationModule, { declarations: [LocalizePipe], imports: [TranslateModule], exports: [TranslateModule,
44
- LocalizePipe] }); })();
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9jb3JlL2xvY2FsaXphdGlvbi9sb2NhbGl6YXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsTUFBTTtBQUNOLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU87QUFDUCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBZ0IvQyxNQUFNLE9BQU8sa0JBQWtCO21GQUFsQixrQkFBa0I7bUVBQWxCLGtCQUFrQjt1RUFaM0IsZUFBZSxFQUdmLGVBQWU7O2lGQVNOLGtCQUFrQjtjQWQ5QixRQUFRO2VBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLGVBQWU7aUJBQ2hCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxlQUFlO29CQUNmLFlBQVk7aUJBQ2I7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLFlBQVk7aUJBQ2I7Z0JBQ0QsU0FBUyxFQUFFLEVBQ1Y7YUFDRjs7d0ZBQ1ksa0JBQWtCLG1CQUwzQixZQUFZLGFBUFosZUFBZSxhQUdmLGVBQWU7UUFDZixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbS5vc292aXRueUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seS5vc292aXRueUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgICAxMiBNYXkgMjAyMFxyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyNSBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbi8vTm9kZVxyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbi8vUGlwZXNcclxuaW1wb3J0IHsgTG9jYWxpemVQaXBlIH0gZnJvbSAnLi9sb2NhbGl6ZS5waXBlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgVHJhbnNsYXRlTW9kdWxlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBMb2NhbGl6ZVBpcGVcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgTG9jYWxpemVQaXBlXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGl6YXRpb25Nb2R1bGUge1xyXG59XHJcbiJdfQ==
@@ -1,164 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny vadim.osovitny@osovitny.com
8
- Anatoly Osovitny anatoly.osovitny@osovitny.com
9
-
10
- Created:
11
- 05 May 2020
12
-
13
- Source:
14
- https://date-fns.org/v3.3.1/docs/formatDistance
15
- https://date-fns.org/v3.3.1/docs/formatDistanceToNow
16
-
17
- Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
18
- </file>
19
- */
20
- //Node
21
- import { Injectable, Output, EventEmitter } from '@angular/core';
22
- //date-fns
23
- import { format, formatDistanceToNow, formatDistance } from 'date-fns';
24
- // VadimOS: DON'T change next imports!
25
- // Reason: https://github.com/date-fns/date-fns/issues/666
26
- import enUS from 'date-fns/locale/en-US';
27
- //App
28
- import { Subs } from '../subs';
29
- import { dateFormats, dateTimeFormats, timeFormats } from '../consts/formats';
30
- import { DateConvert } from '../converts/dateConvert';
31
- import { is } from '../is';
32
- import * as i0 from "@angular/core";
33
- import * as i1 from "@ngx-translate/core";
34
- export class LocalizationService {
35
- constructor(translate) {
36
- this.translate = translate;
37
- this.subs = new Subs();
38
- //i10n
39
- this.supportedLanguages = ['en', 'ru', 'es'];
40
- this.defaultLanguage = 'en';
41
- //Outputs
42
- this.langchange = new EventEmitter();
43
- this.setSupportedLanguages(this.supportedLanguages);
44
- this.setDefaultLanguage(this.defaultLanguage);
45
- }
46
- ngOnDestroy() {
47
- this.subs.unsubscribe();
48
- }
49
- format(str, args) {
50
- return str.replace(/{(\d+)}/g, function (match, number) {
51
- return typeof args[number] != 'undefined'
52
- ? args[number]
53
- : match;
54
- });
55
- }
56
- ;
57
- configureSettings(translate) {
58
- //i10n
59
- const browserLang = translate.getBrowserLang();
60
- const lang = browserLang.match(/en|ru|es/) ? browserLang : this.defaultLanguage;
61
- //dates
62
- this.dateFnsLocale = { locale: enUS };
63
- this.subs.sink = this.translate.onLangChange.subscribe((event) => {
64
- console.log('Language Changed');
65
- this.langchange.emit(event.lang);
66
- });
67
- return lang;
68
- }
69
- //Languages
70
- setSupportedLanguages(languages) {
71
- this.translate.addLangs(languages);
72
- }
73
- setDefaultLanguage(lang) {
74
- this.translate.setDefaultLang(lang);
75
- }
76
- setLanguage(language) {
77
- this.translate.use(language);
78
- }
79
- getBrowserLanguage() {
80
- return this.translate.getBrowserLang();
81
- }
82
- //Dates
83
- getDatefnsLocale() {
84
- let dfnLocale;
85
- switch (this.getBrowserLanguage()) {
86
- case 'en':
87
- dfnLocale = { locale: enUS };
88
- break;
89
- default:
90
- dfnLocale = { locale: enUS };
91
- }
92
- return dfnLocale;
93
- }
94
- //getLocalized
95
- getLocalizedValue(key, params) {
96
- const value = this.translate.instant(key);
97
- if (!params || params.length === 0) {
98
- return value;
99
- }
100
- return this.format(value, params);
101
- }
102
- getLocalizedDateTime(value, formatStr = dateTimeFormats.medium) {
103
- let date = DateConvert.toDate(value);
104
- if (is.dateInvalid(date)) {
105
- return "Invalid Date";
106
- }
107
- return format(date, formatStr, this.dateFnsLocale);
108
- }
109
- getLocalizedDate(value, formatStr = dateFormats.medium) {
110
- let date = DateConvert.toDate(value);
111
- if (is.dateInvalid(date)) {
112
- return "Invalid Date";
113
- }
114
- return format(date, formatStr, this.dateFnsLocale);
115
- }
116
- getLocalizedTime(value, formatStr = timeFormats.short) {
117
- let date = DateConvert.toDate(value);
118
- if (is.dateInvalid(date)) {
119
- return "Invalid Date";
120
- }
121
- return format(date, formatStr, this.dateFnsLocale);
122
- }
123
- //UTC ---------------------------------------------------------------------BEGIN
124
- getUTCToLocalizedDateTime(value, formatStr = dateTimeFormats.medium) {
125
- let d = DateConvert.utcToLocal(value);
126
- return this.getLocalizedDateTime(d, formatStr);
127
- }
128
- getUTCToLocalizedDate(value, formatStr = dateFormats.medium) {
129
- let d = DateConvert.utcToLocal(value);
130
- return this.getLocalizedDate(d, formatStr);
131
- }
132
- getUTCToLocalizedTime(value, formatStr = timeFormats.short) {
133
- let d = DateConvert.utcToLocal(value);
134
- return this.getLocalizedTime(d, formatStr);
135
- }
136
- //UTC ---------------------------------------------------------------------END
137
- //Distance ----------------------------------------------------------------BEGIN
138
- getLocalizedDistance(endedDateStr, startedDateStr) {
139
- let endedDate = DateConvert.toDate(endedDateStr);
140
- let startedDate = DateConvert.toDate(startedDateStr);
141
- if (is.dateInvalid(endedDate) || is.dateInvalid(startedDate)) {
142
- return "Invalid Date";
143
- }
144
- return formatDistance(endedDate, startedDate, this.dateFnsLocale);
145
- }
146
- getUTCToLocalizedDistance(value) {
147
- let d = DateConvert.utcToLocal(value);
148
- if (is.dateInvalid(d)) {
149
- return "Invalid Date";
150
- }
151
- return formatDistanceToNow(d, this.dateFnsLocale);
152
- }
153
- static { this.ɵfac = function LocalizationService_Factory(t) { return new (t || LocalizationService)(i0.ɵɵinject(i1.TranslateService)); }; }
154
- static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LocalizationService, factory: LocalizationService.ɵfac, providedIn: 'root' }); }
155
- }
156
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LocalizationService, [{
157
- type: Injectable,
158
- args: [{
159
- providedIn: 'root'
160
- }]
161
- }], () => [{ type: i1.TranslateService }], { langchange: [{
162
- type: Output
163
- }] }); })();
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9sb2NhbGl6YXRpb24vbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWtCRTtBQUVGLE1BQU07QUFDTixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFHNUUsVUFBVTtBQUNWLE9BQU8sRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXZFLHNDQUFzQztBQUN0QywwREFBMEQ7QUFDMUQsT0FBTyxJQUFJLE1BQU0sdUJBQXVCLENBQUM7QUFFekMsS0FBSztBQUNMLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxPQUFPLENBQUM7OztBQUszQixNQUFNLE9BQU8sbUJBQW1CO0lBVzlCLFlBQW9CLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBVnZDLFNBQUksR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1FBR2hDLE1BQU07UUFDRSx1QkFBa0IsR0FBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0Msb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFFL0IsU0FBUztRQUNDLGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUczRCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGtC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QyxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BELENBQUM7b0ZBeEpVLG1CQUFtQjt1RUFBbkIsbUJBQW1CLFdBQW5CLG1CQUFtQixtQkFGbEIsTUFBTTs7aUZBRVAsbUJBQW1CO2NBSC9CLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjtpREFVVyxVQUFVO2tCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbS5vc292aXRueUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seS5vc292aXRueUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDA1IE1heSAyMDIwXHJcblxyXG4gIFNvdXJjZTpcclxuICAgIGh0dHBzOi8vZGF0ZS1mbnMub3JnL3YzLjMuMS9kb2NzL2Zvcm1hdERpc3RhbmNlXHJcbiAgICBodHRwczovL2RhdGUtZm5zLm9yZy92My4zLjEvZG9jcy9mb3JtYXREaXN0YW5jZVRvTm93XHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDI1IE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuLy9Ob2RlXHJcbmltcG9ydCB7IEluamVjdGFibGUsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSwgTGFuZ0NoYW5nZUV2ZW50IH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG4vL2RhdGUtZm5zXHJcbmltcG9ydCB7IGZvcm1hdCwgZm9ybWF0RGlzdGFuY2VUb05vdywgZm9ybWF0RGlzdGFuY2UgfSBmcm9tICdkYXRlLWZucyc7XHJcblxyXG4vLyBWYWRpbU9TOiBET04nVCBjaGFuZ2UgbmV4dCBpbXBvcnRzIVxyXG4vLyBSZWFzb246IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9pc3N1ZXMvNjY2XHJcbmltcG9ydCBlblVTIGZyb20gJ2RhdGUtZm5zL2xvY2FsZS9lbi1VUyc7XHJcblxyXG4vL0FwcFxyXG5pbXBvcnQgeyBTdWJzIH0gZnJvbSAnLi4vc3Vicyc7XHJcbmltcG9ydCB7IGRhdGVGb3JtYXRzLCBkYXRlVGltZUZvcm1hdHMsIHRpbWVGb3JtYXRzIH0gZnJvbSAnLi4vY29uc3RzL2Zvcm1hdHMnO1xyXG5pbXBvcnQgeyBEYXRlQ29udmVydCB9IGZyb20gJy4uL2NvbnZlcnRzL2RhdGVDb252ZXJ0JztcclxuaW1wb3J0IHsgaXMgfSBmcm9tICcuLi9pcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGl6YXRpb25TZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHN1YnM6IFN1YnMgPSBuZXcgU3VicygpO1xyXG4gIHByaXZhdGUgZGF0ZUZuc0xvY2FsZTogYW55O1xyXG5cclxuICAvL2kxMG5cclxuICBwcml2YXRlIHN1cHBvcnRlZExhbmd1YWdlczogYW55ID0gWydlbicsICdydScsICdlcyddO1xyXG4gIHByaXZhdGUgZGVmYXVsdExhbmd1YWdlID0gJ2VuJztcclxuXHJcbiAgLy9PdXRwdXRzXHJcbiAgQE91dHB1dCgpIGxhbmdjaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgdGhpcy5zZXRTdXBwb3J0ZWRMYW5ndWFnZXModGhpcy5zdXBwb3J0ZWRMYW5ndWFnZXMpO1xyXG4gICAgdGhpcy5zZXREZWZhdWx0TGFuZ3VhZ2UodGhpcy5kZWZhdWx0TGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnN1YnMudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0KHN0cjogc3RyaW5nLCBhcmdzKSB7XHJcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL3soXFxkKyl9L2csIGZ1bmN0aW9uIChtYXRjaCwgbnVtYmVyKSB7XHJcbiAgICAgIHJldHVybiB0eXBlb2YgYXJnc1tudW1iZXJdICE9ICd1bmRlZmluZWQnXHJcbiAgICAgICAgPyBhcmdzW251bWJlcl1cclxuICAgICAgICA6IG1hdGNoXHJcbiAgICAgICAgO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgY29uZmlndXJlU2V0dGluZ3ModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKTogc3RyaW5nIHtcclxuICAgIC8vaTEwblxyXG4gICAgY29uc3QgYnJvd3NlckxhbmcgPSB0cmFuc2xhdGUuZ2V0QnJvd3NlckxhbmcoKTtcclxuICAgIGNvbnN0IGxhbmcgPSBicm93c2VyTGFuZy5tYXRjaCgvZW58cnV8ZXMvKSA/IGJyb3dzZXJMYW5nIDogdGhpcy5kZWZhdWx0TGFuZ3VhZ2U7XHJcblxyXG4gICAgLy9kYXRlc1xyXG4gICAgdGhpcy5kYXRlRm5zTG9jYWxlID0geyBsb2NhbGU6IGVuVVMgfTtcclxuXHJcbiAgICB0aGlzLnN1YnMuc2luayA9IHRoaXMudHJhbnNsYXRlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50OiBMYW5nQ2hhbmdlRXZlbnQpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coJ0xhbmd1YWdlIENoYW5nZWQnKTtcclxuICAgICAgdGhpcy5sYW5nY2hhbmdlLmVtaXQoZXZlbnQubGFuZyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbGFuZztcclxuICB9XHJcblxyXG4gIC8vTGFuZ3VhZ2VzXHJcbiAgc2V0U3VwcG9ydGVkTGFuZ3VhZ2VzKGxhbmd1YWdlczogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRlLmFkZExhbmdzKGxhbmd1YWdlcyk7XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0TGFuZ3VhZ2UobGFuZzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5zZXREZWZhdWx0TGFuZyhsYW5nKTtcclxuICB9XHJcblxyXG4gIHNldExhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRlLnVzZShsYW5ndWFnZSk7XHJcbiAgfVxyXG5cclxuICBnZXRCcm93c2VyTGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXRCcm93c2VyTGFuZygpO1xyXG4gIH1cclxuXHJcbiAgLy9EYXRlc1xyXG4gIGdldERhdGVmbnNMb2NhbGUoKTogYW55IHtcclxuICAgIGxldCBkZm5Mb2NhbGU6IGFueTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuZ2V0QnJvd3Nlckxhbmd1YWdlKCkpIHtcclxuICAgICAgY2FzZSAnZW4nOlxyXG4gICAgICAgIGRmbkxvY2FsZSA9IHsgbG9jYWxlOiBlblVTIH07XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGRmbkxvY2FsZSA9IHsgbG9jYWxlOiBlblVTIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRmbkxvY2FsZTtcclxuICB9XHJcblxyXG4gIC8vZ2V0TG9jYWxpemVkXHJcbiAgZ2V0TG9jYWxpemVkVmFsdWUoa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueVtdKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChrZXkpO1xyXG5cclxuICAgIGlmICghcGFyYW1zIHx8IHBhcmFtcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmZvcm1hdCh2YWx1ZSwgcGFyYW1zKTtcclxuICB9XHJcblxyXG4gIGdldExvY2FsaXplZERhdGVUaW1lKHZhbHVlLCBmb3JtYXRTdHI6IHN0cmluZyA9IGRhdGVUaW1lRm9ybWF0cy5tZWRpdW0pOiBzdHJpbmcge1xyXG4gICAgbGV0IGRhdGUgPSBEYXRlQ29udmVydC50b0RhdGUodmFsdWUpO1xyXG4gICAgaWYgKGlzLmRhdGVJbnZhbGlkKGRhdGUpKSB7XHJcbiAgICAgIHJldHVybiBcIkludmFsaWQgRGF0ZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmb3JtYXQoZGF0ZSwgZm9ybWF0U3RyLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9jYWxpemVkRGF0ZSh2YWx1ZSwgZm9ybWF0U3RyOiBzdHJpbmcgPSBkYXRlRm9ybWF0cy5tZWRpdW0pOiBzdHJpbmcge1xyXG4gICAgbGV0IGRhdGUgPSBEYXRlQ29udmVydC50b0RhdGUodmFsdWUpO1xyXG4gICAgaWYgKGlzLmRhdGVJbnZhbGlkKGRhdGUpKSB7XHJcbiAgICAgIHJldHVybiBcIkludmFsaWQgRGF0ZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmb3JtYXQoZGF0ZSwgZm9ybWF0U3RyLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9jYWxpemVkVGltZSh2YWx1ZSwgZm9ybWF0U3RyOiBzdHJpbmcgPSB0aW1lRm9ybWF0cy5zaG9ydCk6IHN0cmluZyB7XHJcbiAgICBsZXQgZGF0ZSA9IERhdGVDb252ZXJ0LnRvRGF0ZSh2YWx1ZSk7XHJcbiAgICBpZiAoaXMuZGF0ZUludmFsaWQoZGF0ZSkpIHtcclxuICAgICAgcmV0dXJuIFwiSW52YWxpZCBEYXRlXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZvcm1hdChkYXRlLCBmb3JtYXRTdHIsIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgfVxyXG5cclxuICAvL1VUQyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1CRUdJTlxyXG4gIGdldFVUQ1RvTG9jYWxpemVkRGF0ZVRpbWUodmFsdWUsIGZvcm1hdFN0cjogc3RyaW5nID0gZGF0ZVRpbWVGb3JtYXRzLm1lZGl1bSkge1xyXG4gICAgbGV0IGQgPSBEYXRlQ29udmVydC51dGNUb0xvY2FsKHZhbHVlKTtcclxuICAgIHJldHVybiB0aGlzLmdldExvY2FsaXplZERhdGVUaW1lKGQsIGZvcm1hdFN0cik7XHJcbiAgfVxyXG5cclxuICBnZXRVVENUb0xvY2FsaXplZERhdGUodmFsdWUsIGZvcm1hdFN0cjogc3RyaW5nID0gZGF0ZUZvcm1hdHMubWVkaXVtKSB7XHJcbiAgICBsZXQgZCA9IERhdGVDb252ZXJ0LnV0Y1RvTG9jYWwodmFsdWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0TG9jYWxpemVkRGF0ZShkLCBmb3JtYXRTdHIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VVRDVG9Mb2NhbGl6ZWRUaW1lKHZhbHVlLCBmb3JtYXRTdHI6IHN0cmluZyA9IHRpbWVGb3JtYXRzLnNob3J0KSB7XHJcbiAgICBsZXQgZCA9IERhdGVDb252ZXJ0LnV0Y1RvTG9jYWwodmFsdWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0TG9jYWxpemVkVGltZShkLCBmb3JtYXRTdHIpO1xyXG4gIH1cclxuICAvL1VUQyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1FTkRcclxuXHJcbiAgLy9EaXN0YW5jZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tQkVHSU5cclxuICBnZXRMb2NhbGl6ZWREaXN0YW5jZShlbmRlZERhdGVTdHI6IHN0cmluZywgc3RhcnRlZERhdGVTdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgZW5kZWREYXRlID0gRGF0ZUNvbnZlcnQudG9EYXRlKGVuZGVkRGF0ZVN0cik7XHJcbiAgICBsZXQgc3RhcnRlZERhdGUgPSBEYXRlQ29udmVydC50b0RhdGUoc3RhcnRlZERhdGVTdHIpO1xyXG5cclxuICAgIGlmIChpcy5kYXRlSW52YWxpZChlbmRlZERhdGUpIHx8IGlzLmRhdGVJbnZhbGlkKHN0YXJ0ZWREYXRlKSkge1xyXG4gICAgICByZXR1cm4gXCJJbnZhbGlkIERhdGVcIjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ybWF0RGlzdGFuY2UoZW5kZWREYXRlLCBzdGFydGVkRGF0ZSwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICB9XHJcblxyXG4gIGdldFVUQ1RvTG9jYWxpemVkRGlzdGFuY2UodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgZCA9IERhdGVDb252ZXJ0LnV0Y1RvTG9jYWwodmFsdWUpO1xyXG4gICAgaWYgKGlzLmRhdGVJbnZhbGlkKGQpKSB7XHJcbiAgICAgIHJldHVybiBcIkludmFsaWQgRGF0ZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmb3JtYXREaXN0YW5jZVRvTm93KGQsIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgfVxyXG4gIC8vRGlzdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUVORFxyXG59XHJcblxyXG4iXX0=
@@ -1,83 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny vadim.osovitny@osovitny.com
8
- Anatoly Osovitny anatoly.osovitny@osovitny.com
9
-
10
- Created:
11
- 10 May 2020
12
-
13
- Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
14
- </file>
15
- */
16
- //Node
17
- import { Pipe } from '@angular/core';
18
- import * as i0 from "@angular/core";
19
- import * as i1 from "./localization.service";
20
- export class LocalizePipe {
21
- constructor(localizeService) {
22
- this.localizeService = localizeService;
23
- }
24
- transform(inputData, type = null, param2 = null) {
25
- if (!inputData) {
26
- return;
27
- }
28
- if (!type) {
29
- type = 'tr';
30
- }
31
- //Translate
32
- if (type === 'tr') {
33
- return this.localizeService.getLocalizedValue(inputData);
34
- }
35
- //DateTime
36
- if (type === 'dt') {
37
- return this.localizeService.getLocalizedDateTime(inputData);
38
- }
39
- //Date
40
- if (type === 'd') {
41
- return this.localizeService.getLocalizedDate(inputData);
42
- }
43
- //Time
44
- if (type === 't') {
45
- return this.localizeService.getLocalizedTime(inputData);
46
- }
47
- //UTC ---------------------------------------------------------------------BEGIN
48
- //DateTime
49
- if (type === 'utc2dt') {
50
- return this.localizeService.getUTCToLocalizedDateTime(inputData);
51
- }
52
- //Date
53
- if (type === 'utc2d') {
54
- return this.localizeService.getUTCToLocalizedDate(inputData);
55
- }
56
- //Time
57
- if (type === 'utc2t') {
58
- return this.localizeService.getUTCToLocalizedTime(inputData);
59
- }
60
- //UTC ---------------------------------------------------------------------END
61
- //Distance ----------------------------------------------------------------BEGIN
62
- //DistanceInWords
63
- if (type === 'dis') {
64
- return this.localizeService.getLocalizedDistance(inputData, param2);
65
- }
66
- //DistanceToNowInWords
67
- if (type === 'utc2dis') {
68
- return this.localizeService.getUTCToLocalizedDistance(inputData);
69
- }
70
- //Distance ----------------------------------------------------------------END
71
- return inputData;
72
- }
73
- static { this.ɵfac = function LocalizePipe_Factory(t) { return new (t || LocalizePipe)(i0.ɵɵdirectiveInject(i1.LocalizationService, 16)); }; }
74
- static { this.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "localize", type: LocalizePipe, pure: false }); }
75
- }
76
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LocalizePipe, [{
77
- type: Pipe,
78
- args: [{
79
- name: 'localize',
80
- pure: false
81
- }]
82
- }], () => [{ type: i1.LocalizationService }], null); })();
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9jb3JlL2xvY2FsaXphdGlvbi9sb2NhbGl6ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsTUFBTTtBQUNOLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7QUFTcEQsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFBb0IsZUFBb0M7UUFBcEMsb0JBQWUsR0FBZixlQUFlLENBQXFCO0lBQ3hELENBQUM7SUFFRCxTQUFTLENBQUMsU0FBaUIsRUFBRSxPQUFlLElBQUksRUFBRSxTQUFpQixJQUFJO1FBQ3JFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxXQUFXO1FBQ1gsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFFRCxVQUFVO1FBQ1YsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxNQUFNO1FBQ04sSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFFRCxNQUFNO1FBQ04sSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFFRCxnRkFBZ0Y7UUFDaEYsVUFBVTtRQUNWLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBRUQsTUFBTTtRQUNOLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsTUFBTTtRQUNOLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsOEVBQThFO1FBRTlFLGdGQUFnRjtRQUNoRixpQkFBaUI7UUFDakIsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDbkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsc0JBQXNCO1FBQ3RCLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0QsOEVBQThFO1FBRTlFLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7NkVBL0RVLFlBQVk7a0ZBQVosWUFBWTs7aUZBQVosWUFBWTtjQUp4QixJQUFJO2VBQUM7Z0JBQ0osSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLElBQUksRUFBRSxLQUFLO2FBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltLm9zb3ZpdG55QG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5Lm9zb3ZpdG55QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgIDEwIE1heSAyMDIwXHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDI1IE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuLy9Ob2RlXHJcbmltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vQXBwXHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICcuL2xvY2FsaXphdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnbG9jYWxpemUnLFxyXG4gIHB1cmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGl6ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvY2FsaXplU2VydmljZTogTG9jYWxpemF0aW9uU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgdHJhbnNmb3JtKGlucHV0RGF0YTogc3RyaW5nLCB0eXBlOiBzdHJpbmcgPSBudWxsLCBwYXJhbTI6IHN0cmluZyA9IG51bGwpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFpbnB1dERhdGEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdHlwZSkge1xyXG4gICAgICB0eXBlID0gJ3RyJztcclxuICAgIH1cclxuXHJcbiAgICAvL1RyYW5zbGF0ZVxyXG4gICAgaWYgKHR5cGUgPT09ICd0cicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxpemVTZXJ2aWNlLmdldExvY2FsaXplZFZhbHVlKGlucHV0RGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9EYXRlVGltZVxyXG4gICAgaWYgKHR5cGUgPT09ICdkdCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxpemVTZXJ2aWNlLmdldExvY2FsaXplZERhdGVUaW1lKGlucHV0RGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9EYXRlXHJcbiAgICBpZiAodHlwZSA9PT0gJ2QnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsaXplU2VydmljZS5nZXRMb2NhbGl6ZWREYXRlKGlucHV0RGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9UaW1lXHJcbiAgICBpZiAodHlwZSA9PT0gJ3QnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsaXplU2VydmljZS5nZXRMb2NhbGl6ZWRUaW1lKGlucHV0RGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9VVEMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tQkVHSU5cclxuICAgIC8vRGF0ZVRpbWVcclxuICAgIGlmICh0eXBlID09PSAndXRjMmR0Jykge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGl6ZVNlcnZpY2UuZ2V0VVRDVG9Mb2NhbGl6ZWREYXRlVGltZShpbnB1dERhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vRGF0ZVxyXG4gICAgaWYgKHR5cGUgPT09ICd1dGMyZCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxpemVTZXJ2aWNlLmdldFVUQ1RvTG9jYWxpemVkRGF0ZShpbnB1dERhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vVGltZVxyXG4gICAgaWYgKHR5cGUgPT09ICd1dGMydCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxpemVTZXJ2aWNlLmdldFVUQ1RvTG9jYWxpemVkVGltZShpbnB1dERhdGEpO1xyXG4gICAgfVxyXG4gICAgLy9VVEMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRU5EXHJcblxyXG4gICAgLy9EaXN0YW5jZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tQkVHSU5cclxuICAgIC8vRGlzdGFuY2VJbldvcmRzXHJcbiAgICBpZiAodHlwZSA9PT0gJ2RpcycpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxpemVTZXJ2aWNlLmdldExvY2FsaXplZERpc3RhbmNlKGlucHV0RGF0YSwgcGFyYW0yKTtcclxuICAgIH1cclxuXHJcbiAgICAvL0Rpc3RhbmNlVG9Ob3dJbldvcmRzXHJcbiAgICBpZiAodHlwZSA9PT0gJ3V0YzJkaXMnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsaXplU2VydmljZS5nZXRVVENUb0xvY2FsaXplZERpc3RhbmNlKGlucHV0RGF0YSk7XHJcbiAgICB9XHJcbiAgICAvL0Rpc3RhbmNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1FTkRcclxuXHJcbiAgICByZXR1cm4gaW5wdXREYXRhO1xyXG4gIH1cclxufVxyXG4iXX0=