@esfaenza/localizations 11.2.10 → 11.2.11

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 (42) hide show
  1. package/bundles/esfaenza-localizations.umd.js +82 -62
  2. package/bundles/esfaenza-localizations.umd.js.map +1 -1
  3. package/bundles/esfaenza-localizations.umd.min.js +2 -2
  4. package/bundles/esfaenza-localizations.umd.min.js.map +1 -1
  5. package/esfaenza-localizations.metadata.json +1 -1
  6. package/esm2015/lib/core/localization.base.js +2 -2
  7. package/esm2015/lib/core/localization.persistor.js +5 -5
  8. package/esm2015/lib/localizations.module.js +8 -3
  9. package/esm2015/lib/localizations.service.js +17 -7
  10. package/esm2015/lib/models/BaseLocalizationTokens.js +14 -0
  11. package/esm2015/lib/models/ItemLocalization.js +18 -0
  12. package/esm2015/lib/models/LocaleDefinitions.js +32 -0
  13. package/esm2015/lib/models/LocaleObject.js +18 -0
  14. package/esm2015/lib/models/LocalizationMissingPolicy.js +11 -0
  15. package/esm2015/lib/models/LocalizationModuleConfig.js +6 -0
  16. package/esm2015/lib/models/SpecializedLocalization.js +16 -0
  17. package/esm2015/lib/tokens.js +4 -4
  18. package/esm2015/public-api.js +4 -3
  19. package/fesm2015/esfaenza-localizations.js +78 -59
  20. package/fesm2015/esfaenza-localizations.js.map +1 -1
  21. package/lib/core/localization.base.d.ts +1 -1
  22. package/lib/core/localization.persistor.d.ts +2 -1
  23. package/lib/localizations.module.d.ts +1 -1
  24. package/lib/localizations.service.d.ts +3 -2
  25. package/lib/models/LocalizationMissingPolicy.d.ts +9 -0
  26. package/lib/models/{classes/LocalizationModuleConfig.d.ts → LocalizationModuleConfig.d.ts} +4 -1
  27. package/lib/tokens.d.ts +4 -3
  28. package/package.json +1 -1
  29. package/public-api.d.ts +3 -2
  30. package/esm2015/lib/models/classes/BaseLocalizationTokens.js +0 -14
  31. package/esm2015/lib/models/classes/ItemLocalization.js +0 -18
  32. package/esm2015/lib/models/classes/LocaleDefinitions.js +0 -32
  33. package/esm2015/lib/models/classes/LocaleObject.js +0 -18
  34. package/esm2015/lib/models/classes/LocalizationModuleConfig.js +0 -6
  35. package/esm2015/lib/models/classes/SpecializedLocalization.js +0 -16
  36. package/esm2015/lib/models/index.js +0 -6
  37. package/lib/models/index.d.ts +0 -5
  38. /package/lib/models/{classes/BaseLocalizationTokens.d.ts → BaseLocalizationTokens.d.ts} +0 -0
  39. /package/lib/models/{classes/ItemLocalization.d.ts → ItemLocalization.d.ts} +0 -0
  40. /package/lib/models/{classes/LocaleDefinitions.d.ts → LocaleDefinitions.d.ts} +0 -0
  41. /package/lib/models/{classes/LocaleObject.d.ts → LocaleObject.d.ts} +0 -0
  42. /package/lib/models/{classes/SpecializedLocalization.d.ts → SpecializedLocalization.d.ts} +0 -0
@@ -1,11 +1,15 @@
1
+ // Angular
1
2
  import { NgModule } from '@angular/core';
2
- import { LOC_LOCALE } from './tokens';
3
- import { LocalizationService } from './localizations.service';
3
+ // Pipe
4
4
  import { LocDatePipe } from './pipes/loc_date.pipe';
5
5
  import { LocalizePipe } from './pipes/localize.pipe';
6
+ // Servizi
7
+ import { LocalizationService } from './localizations.service';
6
8
  import { BaseLocalization } from './core/localization.base';
7
9
  import { LocalePersistor } from './locale-persistor/LocalePersistor';
8
10
  import { LocalStorageLocalePersistor } from './locale-persistor/LocalStorageCachePersistor';
11
+ import { LocalizationMissingPolicy } from './models/LocalizationMissingPolicy';
12
+ import { LOC_LOCALE, LOC_MISSING_POLICY } from './tokens';
9
13
  export class LocalizationModule {
10
14
  static forRoot(config) {
11
15
  return {
@@ -14,6 +18,7 @@ export class LocalizationModule {
14
18
  LocalizationService,
15
19
  BaseLocalization,
16
20
  { provide: LOC_LOCALE, useValue: (config === null || config === void 0 ? void 0 : config.defaultLocale) || 'it-IT' },
21
+ { provide: LOC_MISSING_POLICY, useValue: (config === null || config === void 0 ? void 0 : config.localizationMissingPolicy) || LocalizationMissingPolicy.PrintEmpty },
17
22
  { provide: LocalePersistor, useClass: (config === null || config === void 0 ? void 0 : config.localePersistor) || LocalStorageLocalePersistor },
18
23
  ]
19
24
  };
@@ -25,4 +30,4 @@ LocalizationModule.decorators = [
25
30
  exports: [LocalizePipe, LocDatePipe]
26
31
  },] }
27
32
  ];
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9ucy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9sb2NhbGl6YXRpb25zL3NyYy9saWIvbG9jYWxpemF0aW9ucy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQU01RixNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBaUM7UUFDOUMsT0FBTztZQUNMLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsU0FBUyxFQUFFO2dCQUNULG1CQUFtQjtnQkFDbkIsZ0JBQWdCO2dCQUNoQixFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGFBQWEsS0FBSSxPQUFPLEVBQUU7Z0JBQ25FLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsZUFBZSxLQUFJLDJCQUEyQixFQUFFO2FBQy9GO1NBQ0YsQ0FBQztJQUNKLENBQUM7OztZQWZGLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO2dCQUN6QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO2FBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTE9DX0xPQ0FMRSB9IGZyb20gJy4vdG9rZW5zJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJy4vbG9jYWxpemF0aW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBMb2NEYXRlUGlwZSB9IGZyb20gJy4vcGlwZXMvbG9jX2RhdGUucGlwZSc7XHJcbmltcG9ydCB7IExvY2FsaXplUGlwZSB9IGZyb20gJy4vcGlwZXMvbG9jYWxpemUucGlwZSc7XHJcbmltcG9ydCB7IEJhc2VMb2NhbGl6YXRpb24gfSBmcm9tICcuL2NvcmUvbG9jYWxpemF0aW9uLmJhc2UnO1xyXG5pbXBvcnQgeyBMb2NhbGVQZXJzaXN0b3IgfSBmcm9tICcuL2xvY2FsZS1wZXJzaXN0b3IvTG9jYWxlUGVyc2lzdG9yJztcclxuaW1wb3J0IHsgTG9jYWxTdG9yYWdlTG9jYWxlUGVyc2lzdG9yIH0gZnJvbSAnLi9sb2NhbGUtcGVyc2lzdG9yL0xvY2FsU3RvcmFnZUNhY2hlUGVyc2lzdG9yJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbTG9jYWxpemVQaXBlLCBMb2NEYXRlUGlwZV0sXHJcbiAgZXhwb3J0czogW0xvY2FsaXplUGlwZSwgTG9jRGF0ZVBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGl6YXRpb25Nb2R1bGUge1xyXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IExvY2FsaXphdGlvbk1vZHVsZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TG9jYWxpemF0aW9uTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogTG9jYWxpemF0aW9uTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBMb2NhbGl6YXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIEJhc2VMb2NhbGl6YXRpb24sXHJcbiAgICAgICAgeyBwcm92aWRlOiBMT0NfTE9DQUxFLCB1c2VWYWx1ZTogY29uZmlnPy5kZWZhdWx0TG9jYWxlIHx8ICdpdC1JVCcgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IExvY2FsZVBlcnNpc3RvciwgdXNlQ2xhc3M6IGNvbmZpZz8ubG9jYWxlUGVyc2lzdG9yIHx8IExvY2FsU3RvcmFnZUxvY2FsZVBlcnNpc3RvciB9LFxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gIH1cclxufSJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9ucy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9sb2NhbGl6YXRpb25zL3NyYy9saWIvbG9jYWxpemF0aW9ucy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU87QUFDUCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXJELFVBQVU7QUFDVixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFJNUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQU0xRCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBaUM7UUFDOUMsT0FBTztZQUNMLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsU0FBUyxFQUFFO2dCQUNULG1CQUFtQjtnQkFDbkIsZ0JBQWdCO2dCQUNoQixFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGFBQWEsS0FBSSxPQUFPLEVBQUU7Z0JBQ25FLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSx5QkFBeUIsS0FBSSx5QkFBeUIsQ0FBQyxVQUFVLEVBQUM7Z0JBQ25ILEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsZUFBZSxLQUFJLDJCQUEyQixFQUFFO2FBQy9GO1NBQ0YsQ0FBQztJQUNKLENBQUM7OztZQWhCRixRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQztnQkFDekMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQzthQUNyQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vIFBpcGVcclxuaW1wb3J0IHsgTG9jRGF0ZVBpcGUgfSBmcm9tICcuL3BpcGVzL2xvY19kYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVBpcGUgfSBmcm9tICcuL3BpcGVzL2xvY2FsaXplLnBpcGUnO1xyXG5cclxuLy8gU2Vydml6aVxyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbGl6YXRpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlTG9jYWxpemF0aW9uIH0gZnJvbSAnLi9jb3JlL2xvY2FsaXphdGlvbi5iYXNlJztcclxuaW1wb3J0IHsgTG9jYWxlUGVyc2lzdG9yIH0gZnJvbSAnLi9sb2NhbGUtcGVyc2lzdG9yL0xvY2FsZVBlcnNpc3Rvcic7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZUxvY2FsZVBlcnNpc3RvciB9IGZyb20gJy4vbG9jYWxlLXBlcnNpc3Rvci9Mb2NhbFN0b3JhZ2VDYWNoZVBlcnNpc3Rvcic7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IExvY2FsaXphdGlvbk1vZHVsZUNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL0xvY2FsaXphdGlvbk1vZHVsZUNvbmZpZyc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvbk1pc3NpbmdQb2xpY3kgfSBmcm9tICcuL21vZGVscy9Mb2NhbGl6YXRpb25NaXNzaW5nUG9saWN5JztcclxuaW1wb3J0IHsgTE9DX0xPQ0FMRSwgTE9DX01JU1NJTkdfUE9MSUNZIH0gZnJvbSAnLi90b2tlbnMnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtMb2NhbGl6ZVBpcGUsIExvY0RhdGVQaXBlXSxcclxuICBleHBvcnRzOiBbTG9jYWxpemVQaXBlLCBMb2NEYXRlUGlwZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsaXphdGlvbk1vZHVsZSB7XHJcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnPzogTG9jYWxpemF0aW9uTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxMb2NhbGl6YXRpb25Nb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBMb2NhbGl6YXRpb25Nb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIExvY2FsaXphdGlvblNlcnZpY2UsXHJcbiAgICAgICAgQmFzZUxvY2FsaXphdGlvbixcclxuICAgICAgICB7IHByb3ZpZGU6IExPQ19MT0NBTEUsIHVzZVZhbHVlOiBjb25maWc/LmRlZmF1bHRMb2NhbGUgfHwgJ2l0LUlUJyB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogTE9DX01JU1NJTkdfUE9MSUNZLCB1c2VWYWx1ZTogY29uZmlnPy5sb2NhbGl6YXRpb25NaXNzaW5nUG9saWN5IHx8IExvY2FsaXphdGlvbk1pc3NpbmdQb2xpY3kuUHJpbnRFbXB0eX0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBMb2NhbGVQZXJzaXN0b3IsIHVzZUNsYXNzOiBjb25maWc/LmxvY2FsZVBlcnNpc3RvciB8fCBMb2NhbFN0b3JhZ2VMb2NhbGVQZXJzaXN0b3IgfSxcclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
@@ -3,6 +3,8 @@ import { Injectable, Injector } from '@angular/core';
3
3
  import { BaseLocalization } from './core/localization.base';
4
4
  import { LocalizationPersistor } from './core/localization.persistor';
5
5
  import { LocalePersistor } from './locale-persistor/LocalePersistor';
6
+ import { LOC_MISSING_POLICY } from './tokens';
7
+ import { LocalizationMissingPolicy } from './models/LocalizationMissingPolicy';
6
8
  /**
7
9
  * Classe di localizzazione estendibile che permette di specificare le proprie localizzazioni e comunque rendere disponibili le localizzazioni globali
8
10
  */
@@ -22,6 +24,7 @@ export class LocalizationService {
22
24
  this.TranslationCache = {};
23
25
  this.LocalePersistor = this.injector.get(LocalePersistor);
24
26
  this.baseLocalization = this.injector.get(BaseLocalization);
27
+ this.onMissing = this.injector.get(LOC_MISSING_POLICY);
25
28
  this.Persistor = new LocalizationPersistor(this.TranslationCache);
26
29
  this.baseLocalization.Locale.subscribe(lr => {
27
30
  this.Locale = lr;
@@ -77,17 +80,24 @@ export class LocalizationService {
77
80
  * @returns {string} Frase localizzata
78
81
  */
79
82
  loc(text, allowtokens) {
83
+ if (!this.Locale)
84
+ throw "Il sistema di localizzazione non ha ancora caricato il Locale, assicurarsi di caricare l'APP solo al retrieve del locale'";
80
85
  if (!text || text == "undefined")
81
86
  return "";
82
87
  // Prendo la localizzazione o dalla cache attuale o dalla cache del servizio base
83
88
  var item = this.Persistor.get(text, allowtokens) || this.baseLocalization.Persistor.get(text, allowtokens);
84
89
  if (!item) {
85
- console.error("Impossibile trovare la localizzazione per '" + text + "'");
86
- return "";
87
- }
88
- if (!this.Locale) {
89
- console.error("Il sistema di localizzazione non ha ancora caricato il Locale, assicurarsi di caricare l'APP solo al retrieve del locale'");
90
- return "";
90
+ let message = `Impossibile trovare la localizzazione per '${text}'`;
91
+ switch (this.onMissing) {
92
+ case LocalizationMissingPolicy.PrintEmpty:
93
+ console.error(message);
94
+ return "";
95
+ case LocalizationMissingPolicy.PrintSource:
96
+ console.warn(message);
97
+ return text;
98
+ case LocalizationMissingPolicy.ThrowException:
99
+ throw message;
100
+ }
91
101
  }
92
102
  var loc = this.Persistor.translationByCulture(item, this.Locale);
93
103
  if (!loc) {
@@ -116,4 +126,4 @@ LocalizationService.decorators = [
116
126
  LocalizationService.ctorParameters = () => [
117
127
  { type: Injector }
118
128
  ];
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbG9jYWxpemF0aW9ucy9zcmMvbGliL2xvY2FsaXphdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXJFOztHQUVHO0FBRUgsTUFBTSxPQUFPLG1CQUFtQjtJQWE1Qjs7Ozs7O09BTUc7SUFDSCxZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBbEJ0Qzs7V0FFRztRQUNLLHFCQUFnQixHQUF1QyxFQUFFLENBQUM7UUFnQjlELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFNUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRWxFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFBO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVGOzs7Ozs7Ozs7T0FTRztJQUNPLFFBQVEsQ0FBQyxTQUFpQixFQUFFLEtBQWEsRUFBRSxJQUFZLEVBQUUsS0FBZTtRQUM5RSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDTyxHQUFHLENBQUMsU0FBaUIsRUFBRSxJQUFZLEVBQUUsS0FBZTtRQUMxRCxxRkFBcUY7UUFDckYsMkhBQTJIO1FBQzNILElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ2xELE9BQU8sQ0FBQyxJQUFJLENBQUMseUJBQXlCLElBQUksaUVBQWlFLENBQUMsQ0FBQztZQUM3RyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsSUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksR0FBRyxDQUFDLElBQVksRUFBRSxXQUFxQjtRQUMxQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxXQUFXO1lBQzVCLE9BQU8sRUFBRSxDQUFDO1FBRWQsaUZBQWlGO1FBQ2pGLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDM0csSUFBSSxDQUFDLElBQUksRUFBRTtZQUNQLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkNBQTZDLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQzFFLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxJQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBQztZQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkhBQTJILENBQUMsQ0FBQztZQUMzSSxPQUFPLEVBQUUsQ0FBQztTQUNiO1FBRUQsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDTixPQUFPLENBQUMsS0FBSyxDQUFDLDZDQUE2QyxHQUFHLElBQUksR0FBRyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xHLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUM7SUFDM0IsQ0FBQztJQUVZLFlBQVksQ0FBQyxTQUFpQjs7WUFDdkMsSUFBSSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzlELElBQUksU0FBUyxJQUFJLE1BQU0sRUFBRTtnQkFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyx5RUFBeUUsQ0FBQyxDQUFDO2dCQUN4RixPQUFPO2FBQ1Y7aUJBQ0k7Z0JBQ0QsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDMUQsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ3JCO1FBQ0wsQ0FBQztLQUFBOzs7WUF2SEosVUFBVTs7O1lBVFUsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJhc2VMb2NhbGl6YXRpb24gfSBmcm9tICcuL2NvcmUvbG9jYWxpemF0aW9uLmJhc2UnO1xyXG5pbXBvcnQgeyBJdGVtTG9jYWxpemF0aW9uIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25QZXJzaXN0b3IgfSBmcm9tICcuL2NvcmUvbG9jYWxpemF0aW9uLnBlcnNpc3Rvcic7XHJcbmltcG9ydCB7IExvY2FsZVBlcnNpc3RvciB9IGZyb20gJy4vbG9jYWxlLXBlcnNpc3Rvci9Mb2NhbGVQZXJzaXN0b3InO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBkaSBsb2NhbGl6emF6aW9uZSBlc3RlbmRpYmlsZSBjaGUgcGVybWV0dGUgZGkgc3BlY2lmaWNhcmUgbGUgcHJvcHJpZSBsb2NhbGl6emF6aW9uaSBlIGNvbXVucXVlIHJlbmRlcmUgZGlzcG9uaWJpbGkgbGUgbG9jYWxpenphemlvbmkgZ2xvYmFsaVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTG9jYWxpemF0aW9uU2VydmljZSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWNoZSBkaSB0dXR0ZSBsZSBsb2NhbGl6emF6aW9uaSBkaXNvbmliaWxpIGFsbCdpbnRlcm5vIGRpIHF1ZXN0YSBjbGFzc2VcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBUcmFuc2xhdGlvbkNhY2hlOiB7IFtpZDogc3RyaW5nXTogSXRlbUxvY2FsaXphdGlvbiB9ID0ge307XHJcblxyXG4gICAgcHJpdmF0ZSBQZXJzaXN0b3I6IExvY2FsaXphdGlvblBlcnNpc3RvcjtcclxuICAgIHByaXZhdGUgTG9jYWxlUGVyc2lzdG9yOiBMb2NhbGVQZXJzaXN0b3I7XHJcblxyXG4gICAgcHVibGljIExvY2FsZTogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSBiYXNlTG9jYWxpemF0aW9uOiBCYXNlTG9jYWxpemF0aW9uO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29zdHJ1dHRvcmVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IExvY2FsZSBMb2NhbGUgZGEgdXRpbGl6emFyZSBuZWwgbW9tZW50byBjaGUgcXVlc3RvIHNlcnZpemlvIHJpY2hpZWRlIGxlIHRyYWR1emlvbmlcclxuICAgICAqIEBwYXJhbSB7YmFzZUxvY2FsaXphdGlvbn0gYmFzZUxvY2FsaXphdGlvbiBDbGFzc2UgYmFzZSBkaSBsb2NhbGl6emF6aW9uZSBnacOgIGZvcm5pdGEgYSBsaXZlbGxvIGRpIHJvb3QgZGFsbGEgbGlicmVyaWEgc3Rlc3NhLiBcclxuICAgICAqIMOIIHN1ZmZpY2llbnRlIGluaWV0dGFybGEgbmVsbCdldmVudHVhbGUgY29zdHJ1dHRvcmUgY2hlIGVzdGVuZGUgcXVlc3RhIGNsYXNzZSBlIHBhc3NhcmxhIGFzLWlzXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgdGhpcy5Mb2NhbGVQZXJzaXN0b3IgPSB0aGlzLmluamVjdG9yLmdldChMb2NhbGVQZXJzaXN0b3IpO1xyXG4gICAgICAgIHRoaXMuYmFzZUxvY2FsaXphdGlvbiA9IHRoaXMuaW5qZWN0b3IuZ2V0KEJhc2VMb2NhbGl6YXRpb24pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yID0gbmV3IExvY2FsaXphdGlvblBlcnNpc3Rvcih0aGlzLlRyYW5zbGF0aW9uQ2FjaGUpO1xyXG5cclxuICAgICAgICB0aGlzLmJhc2VMb2NhbGl6YXRpb24uTG9jYWxlLnN1YnNjcmliZShsciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuTG9jYWxlID0gbHJcclxuICAgICAgICB9KTtcclxuICAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBvc3RhIGxhIGxvY2FsaXp6YXppb25lIGRpIHVuIHRva2VuIGFsbCdpbnRlcm5vIGRlbGxhICoqVHJhbnNsYXRpb25DYWNoZSoqXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkaXJlY3Rpb24gRGlyZXppb25lIGRlbGxhIHRyYWR1emlvbmUsIHJhcHByZXNlbnRhIGxhIGxpbmd1YSBiYXNlIGluIGN1aSBhc3BldHRhcnNpIGlsIHRlc3RvIGUgbGUgdmFyaWUgbGluZ3VlIGluIGN1aSB2aWVuZSB0cmFkb3R0YS5cclxuICAgICAqIEFkIGVzZW1waW8sIFwiZW4tPml0XCIgaW5kaWNhIGNoZSBpbCBwYXJhbWV0cm8gKipsZWZ0Kiogw6ggdmFsaWRvIHBlciBsZSBsb2NhbGl6emF6aW9uaSBpbiBpbmdsZXNlLCBtZW50cmUgbmVsbCdlbGVtZW50byAwIGRlbCBwYXJhbWV0cm8gKipyaWdodCoqIFxyXG4gICAgICogw6ggcHJlc2VudGUgbCd1bmljYSB0cmFkdXppb25lIGluIGl0YWxpYW5vLCBwZXIgZGVmaW5pcmUgcGnDuSB0cmFkdXppb25pIHN1bCBsYXRvIGRlc3RybyBkZWxsYSBmcmVjY2lhIGJpc29nbmEgY29uY2F0ZW5hcmxlIGNvbiBsYSB2aXJnb2xhLCBhZCBlc2VtcGlvIFwiZW4tPml0LGpwLGVjY1wiXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdG9rZW4gTm9tZSBkZWwgdG9rZW5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsZWZ0IFZhbG9yZSBkZWwgdG9rZW4gcGVyIGxhIGxpbmd1YSBzcGVjaWZpY2F0YSBuZWwgbGF0byBpbW1lZGlhdGFtZW50ZSBzaW5pc3RybyBhbGxhIGZyZWNjaWEgZGVsIHBhcmFtZXRybyAqKmRpcmVjdGlvbioqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmlnaHQgQXJyYXkgY29uIGkgdmFsb3JpIGZhY2VudGkgcmlmZXJpbWVudG8gYWxsJ04tZXNpbWEgbGluZ3VhIGRlbCBsYXRvIGRlc3RybyBkZWwgcGFyYW1ldHJvICoqZGlyZWN0aW9uKipcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHNldFRva2VuKGRpcmVjdGlvbjogc3RyaW5nLCB0b2tlbjogc3RyaW5nLCBsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldFRva2VuKGRpcmVjdGlvbiwgdG9rZW4sIGxlZnQsIHJpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcG9zdGEgbGEgbG9jYWxpenphemlvbmUgZGkgdW5hIGZyYXNlIGFsbCdpbnRlcm5vIGRlbGxhICoqVHJhbnNsYXRpb25DYWNoZSoqXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkaXJlY3Rpb24gRGlyZXppb25lIGRlbGxhIHRyYWR1emlvbmUsIHJhcHByZXNlbnRhIGxhIGxpbmd1YSBiYXNlIGluIGN1aSBhc3BldHRhcnNpIGlsIHRlc3RvIGUgbGUgdmFyaWUgbGluZ3VlIGluIGN1aSB2aWVuZSB0cmFkb3R0YS5cclxuICAgICAqIEFkIGVzZW1waW8sIFwiZW4tPml0XCIgaW5kaWNhIGNoZSBpbCBwYXJhbWV0cm8gKipsZWZ0Kiogw6ggdmFsaWRvIHBlciBsZSBsb2NhbGl6emF6aW9uaSBpbiBpbmdsZXNlLCBtZW50cmUgbmVsbCdlbGVtZW50byAwIGRlbCBwYXJhbWV0cm8gKipyaWdodCoqIFxyXG4gICAgICogw6ggcHJlc2VudGUgbCd1bmljYSB0cmFkdXppb25lIGluIGl0YWxpYW5vLCBwZXIgZGVmaW5pcmUgcGnDuSB0cmFkdXppb25pIHN1bCBsYXRvIGRlc3RybyBkZWxsYSBmcmVjY2lhIGJpc29nbmEgY29uY2F0ZW5hcmxlIGNvbiBsYSB2aXJnb2xhLCBhZCBlc2VtcGlvIFwiZW4tPml0LGpwLGVjY1wiXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbGVmdCBWYWxvcmUgZGVsbGEgZnJhc2UgcGVyIGxhIGxpbmd1YSBzcGVjaWZpY2F0YSBuZWwgbGF0byBpbW1lZGlhdGFtZW50ZSBzaW5pc3RybyBhbGxhIGZyZWNjaWEgZGVsIHBhcmFtZXRybyAqKmRpcmVjdGlvbioqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmlnaHQgQXJyYXkgY29uIGkgdmFsb3JpIGZhY2VudGkgcmlmZXJpbWVudG8gYWxsJ04tZXNpbWEgbGluZ3VhIGRlbCBsYXRvIGRlc3RybyBkZWwgcGFyYW1ldHJvICoqZGlyZWN0aW9uKipcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHNldChkaXJlY3Rpb246IHN0cmluZywgbGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nW10pIHtcclxuICAgICAgICAvLyBDb250cm9sbGEgZGkgbm9uIHJlaW5zZXJpcmUgbGEgc3Rlc3NhIGxvY2FsaXp6YXppb25lIHByZXNlbnRlIG5lbCBCYXNlTG9jYWxpemF0aW9uXHJcbiAgICAgICAgLy8gaSBjb250cm9sbGkgcGVyIGlsIG5vbiByZWluc2VyaW1lbnRvIGRlbGxhIHN0ZXNzYSBsb2NhbGl6emF6aW9uZSBhbGwnaW50ZXJubyBkZWxsYSBzdGVzc2EgaXN0YW56YSDDqCBmYXR0byBsYXRvIFBlcnNpc3RvclxyXG4gICAgICAgIGlmICh0aGlzLmJhc2VMb2NhbGl6YXRpb24uUGVyc2lzdG9yLmdldChsZWZ0LCBmYWxzZSkpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKGBMYSBsb2NhbGl6emF6aW9uZSBwZXIgJHtsZWZ0fSDDqCBnacOgIHByZXNlbnRlIGZyYSBsZSBsb2NhbGl6emF6aW9uaSBiYXNlLCBpZ25vcm8gbCdvcGVyYXppb25lYCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KGRpcmVjdGlvbiwgbGVmdCwgcmlnaHQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9jYWxpenphIHVuIHRva2VuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IElsIHRva2VuIGRhIGxvY2FsaXp6YXJlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFRva2VuIGxvY2FsaXp6YXRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0b2tlbih0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxvYyh0ZXh0LCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExvY2FsaXp6YSB1bmEgZnJhc2VcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgRnJhc2UgZGEgbG9jYWxpenphcmVcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYWxsb3d0b2tlbnMgSW5kaWNhIHNlIGxhIGZyYXNlICoqdGV4dCoqIHBvdHJlYmJlIGVzc2VyZSB1biB0b2tlbiBvIG5vXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IEZyYXNlIGxvY2FsaXp6YXRhXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBsb2ModGV4dDogc3RyaW5nLCBhbGxvd3Rva2Vucz86IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghdGV4dCB8fCB0ZXh0ID09IFwidW5kZWZpbmVkXCIpXHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAvLyBQcmVuZG8gbGEgbG9jYWxpenphemlvbmUgbyBkYWxsYSBjYWNoZSBhdHR1YWxlIG8gZGFsbGEgY2FjaGUgZGVsIHNlcnZpemlvIGJhc2VcclxuICAgICAgICB2YXIgaXRlbSA9IHRoaXMuUGVyc2lzdG9yLmdldCh0ZXh0LCBhbGxvd3Rva2VucykgfHwgdGhpcy5iYXNlTG9jYWxpemF0aW9uLlBlcnNpc3Rvci5nZXQodGV4dCwgYWxsb3d0b2tlbnMpO1xyXG4gICAgICAgIGlmICghaXRlbSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiSW1wb3NzaWJpbGUgdHJvdmFyZSBsYSBsb2NhbGl6emF6aW9uZSBwZXIgJ1wiICsgdGV4dCArIFwiJ1wiKTtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZighdGhpcy5Mb2NhbGUpe1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiSWwgc2lzdGVtYSBkaSBsb2NhbGl6emF6aW9uZSBub24gaGEgYW5jb3JhIGNhcmljYXRvIGlsIExvY2FsZSwgYXNzaWN1cmFyc2kgZGkgY2FyaWNhcmUgbCdBUFAgc29sbyBhbCByZXRyaWV2ZSBkZWwgbG9jYWxlJ1wiKTtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgbG9jID0gdGhpcy5QZXJzaXN0b3IudHJhbnNsYXRpb25CeUN1bHR1cmUoaXRlbSwgdGhpcy5Mb2NhbGUpO1xyXG4gICAgICAgIGlmICghbG9jKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJJbXBvc3NpYmlsZSB0cm92YXJlIGxhIGxvY2FsaXp6YXppb25lIHBlciAnXCIgKyB0ZXh0ICsgXCInLCBjdWx0dXJlIFwiICsgdGhpcy5Mb2NhbGUpO1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBsb2MudHJhbnNsYXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGNoYW5nZUxvY2FsZShuZXdMb2NhbGU6IHN0cmluZykge1xyXG4gICAgICAgIGxldCBsb2NhbGUgPSBhd2FpdCB0aGlzLkxvY2FsZVBlcnNpc3Rvci5yZWNvdmVyKCkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgaWYgKG5ld0xvY2FsZSA9PSBsb2NhbGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5pbmZvKFwiSWwgbG9jYWxlIHJpY2hpZXN0byDDqCBsbyBzdGVzc28gZGVsIGxvY2FsZSBhdHR1YWxlLiBJZ25vcm8gbCdvcGVyYXppb25lXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLkxvY2FsZVBlcnNpc3Rvci5wZXJzaXN0KG5ld0xvY2FsZSkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbG9jYWxpemF0aW9ucy9zcmMvbGliL2xvY2FsaXphdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM5QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUvRTs7R0FFRztBQUVILE1BQU0sT0FBTyxtQkFBbUI7SUFhNUI7Ozs7OztPQU1HO0lBQ0gsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQWxCdEM7O1dBRUc7UUFDSyxxQkFBZ0IsR0FBdUMsRUFBRSxDQUFDO1FBZ0I5RCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUV2RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFbEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUY7Ozs7Ozs7OztPQVNHO0lBQ08sUUFBUSxDQUFDLFNBQWlCLEVBQUUsS0FBYSxFQUFFLElBQVksRUFBRSxLQUFlO1FBQzlFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNPLEdBQUcsQ0FBQyxTQUFpQixFQUFFLElBQVksRUFBRSxLQUFlO1FBQzFELHFGQUFxRjtRQUNyRiwySEFBMkg7UUFDM0gsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDbEQsT0FBTyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsSUFBSSxpRUFBaUUsQ0FBQyxDQUFDO1lBQzdHLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxJQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxHQUFHLENBQUMsSUFBWSxFQUFFLFdBQXFCO1FBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUNaLE1BQU0sMkhBQTJILENBQUM7UUFFdEksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksV0FBVztZQUM1QixPQUFPLEVBQUUsQ0FBQztRQUVkLGlGQUFpRjtRQUNqRixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzNHLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDUCxJQUFJLE9BQU8sR0FBRyw4Q0FBOEMsSUFBSSxHQUFHLENBQUM7WUFDcEUsUUFBUSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNwQixLQUFLLHlCQUF5QixDQUFDLFVBQVU7b0JBQ3JDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDO2dCQUNkLEtBQUsseUJBQXlCLENBQUMsV0FBVztvQkFDdEMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDdEIsT0FBTyxJQUFJLENBQUM7Z0JBQ2hCLEtBQUsseUJBQXlCLENBQUMsY0FBYztvQkFDekMsTUFBTSxPQUFPLENBQUM7YUFDckI7U0FDSjtRQUVELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyw2Q0FBNkMsR0FBRyxJQUFJLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsRyxPQUFPLEVBQUUsQ0FBQztTQUNiO1FBRUQsT0FBTyxHQUFHLENBQUMsV0FBVyxDQUFDO0lBQzNCLENBQUM7SUFFWSxZQUFZLENBQUMsU0FBaUI7O1lBQ3ZDLElBQUksTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM5RCxJQUFJLFNBQVMsSUFBSSxNQUFNLEVBQUU7Z0JBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMseUVBQXlFLENBQUMsQ0FBQztnQkFDeEYsT0FBTzthQUNWO2lCQUNJO2dCQUNELE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzFELFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNyQjtRQUNMLENBQUM7S0FBQTs7O1lBL0hKLFVBQVU7OztZQVhVLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCYXNlTG9jYWxpemF0aW9uIH0gZnJvbSAnLi9jb3JlL2xvY2FsaXphdGlvbi5iYXNlJztcclxuaW1wb3J0IHsgSXRlbUxvY2FsaXphdGlvbiB9IGZyb20gJy4vbW9kZWxzL0l0ZW1Mb2NhbGl6YXRpb24nO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25QZXJzaXN0b3IgfSBmcm9tICcuL2NvcmUvbG9jYWxpemF0aW9uLnBlcnNpc3Rvcic7XHJcbmltcG9ydCB7IExvY2FsZVBlcnNpc3RvciB9IGZyb20gJy4vbG9jYWxlLXBlcnNpc3Rvci9Mb2NhbGVQZXJzaXN0b3InO1xyXG5pbXBvcnQgeyBMT0NfTUlTU0lOR19QT0xJQ1kgfSBmcm9tICcuL3Rva2Vucyc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvbk1pc3NpbmdQb2xpY3kgfSBmcm9tICcuL21vZGVscy9Mb2NhbGl6YXRpb25NaXNzaW5nUG9saWN5JztcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgZGkgbG9jYWxpenphemlvbmUgZXN0ZW5kaWJpbGUgY2hlIHBlcm1ldHRlIGRpIHNwZWNpZmljYXJlIGxlIHByb3ByaWUgbG9jYWxpenphemlvbmkgZSBjb211bnF1ZSByZW5kZXJlIGRpc3BvbmliaWxpIGxlIGxvY2FsaXp6YXppb25pIGdsb2JhbGlcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIExvY2FsaXphdGlvblNlcnZpY2Uge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FjaGUgZGkgdHV0dGUgbGUgbG9jYWxpenphemlvbmkgZGlzb25pYmlsaSBhbGwnaW50ZXJubyBkaSBxdWVzdGEgY2xhc3NlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgVHJhbnNsYXRpb25DYWNoZTogeyBbaWQ6IHN0cmluZ106IEl0ZW1Mb2NhbGl6YXRpb24gfSA9IHt9O1xyXG5cclxuICAgIHB1YmxpYyBMb2NhbGU6IHN0cmluZztcclxuXHJcbiAgICBwcml2YXRlIGJhc2VMb2NhbGl6YXRpb246IEJhc2VMb2NhbGl6YXRpb247XHJcbiAgICBwcml2YXRlIG9uTWlzc2luZzogTG9jYWxpemF0aW9uTWlzc2luZ1BvbGljeVxyXG4gICAgcHJpdmF0ZSBQZXJzaXN0b3I6IExvY2FsaXphdGlvblBlcnNpc3RvcjtcclxuICAgIHByaXZhdGUgTG9jYWxlUGVyc2lzdG9yOiBMb2NhbGVQZXJzaXN0b3I7XHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBMb2NhbGUgTG9jYWxlIGRhIHV0aWxpenphcmUgbmVsIG1vbWVudG8gY2hlIHF1ZXN0byBzZXJ2aXppbyByaWNoaWVkZSBsZSB0cmFkdXppb25pXHJcbiAgICAgKiBAcGFyYW0ge2Jhc2VMb2NhbGl6YXRpb259IGJhc2VMb2NhbGl6YXRpb24gQ2xhc3NlIGJhc2UgZGkgbG9jYWxpenphemlvbmUgZ2nDoCBmb3JuaXRhIGEgbGl2ZWxsbyBkaSByb290IGRhbGxhIGxpYnJlcmlhIHN0ZXNzYS4gXHJcbiAgICAgKiDDiCBzdWZmaWNpZW50ZSBpbmlldHRhcmxhIG5lbGwnZXZlbnR1YWxlIGNvc3RydXR0b3JlIGNoZSBlc3RlbmRlIHF1ZXN0YSBjbGFzc2UgZSBwYXNzYXJsYSBhcy1pc1xyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHRoaXMuTG9jYWxlUGVyc2lzdG9yID0gdGhpcy5pbmplY3Rvci5nZXQoTG9jYWxlUGVyc2lzdG9yKTtcclxuICAgICAgICB0aGlzLmJhc2VMb2NhbGl6YXRpb24gPSB0aGlzLmluamVjdG9yLmdldChCYXNlTG9jYWxpemF0aW9uKTtcclxuICAgICAgICB0aGlzLm9uTWlzc2luZyA9IHRoaXMuaW5qZWN0b3IuZ2V0KExPQ19NSVNTSU5HX1BPTElDWSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3IgPSBuZXcgTG9jYWxpemF0aW9uUGVyc2lzdG9yKHRoaXMuVHJhbnNsYXRpb25DYWNoZSk7XHJcblxyXG4gICAgICAgIHRoaXMuYmFzZUxvY2FsaXphdGlvbi5Mb2NhbGUuc3Vic2NyaWJlKGxyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5Mb2NhbGUgPSBsclxyXG4gICAgICAgIH0pO1xyXG4gICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcG9zdGEgbGEgbG9jYWxpenphemlvbmUgZGkgdW4gdG9rZW4gYWxsJ2ludGVybm8gZGVsbGEgKipUcmFuc2xhdGlvbkNhY2hlKipcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGRpcmVjdGlvbiBEaXJlemlvbmUgZGVsbGEgdHJhZHV6aW9uZSwgcmFwcHJlc2VudGEgbGEgbGluZ3VhIGJhc2UgaW4gY3VpIGFzcGV0dGFyc2kgaWwgdGVzdG8gZSBsZSB2YXJpZSBsaW5ndWUgaW4gY3VpIHZpZW5lIHRyYWRvdHRhLlxyXG4gICAgICogQWQgZXNlbXBpbywgXCJlbi0+aXRcIiBpbmRpY2EgY2hlIGlsIHBhcmFtZXRybyAqKmxlZnQqKiDDqCB2YWxpZG8gcGVyIGxlIGxvY2FsaXp6YXppb25pIGluIGluZ2xlc2UsIG1lbnRyZSBuZWxsJ2VsZW1lbnRvIDAgZGVsIHBhcmFtZXRybyAqKnJpZ2h0KiogXHJcbiAgICAgKiDDqCBwcmVzZW50ZSBsJ3VuaWNhIHRyYWR1emlvbmUgaW4gaXRhbGlhbm8sIHBlciBkZWZpbmlyZSBwacO5IHRyYWR1emlvbmkgc3VsIGxhdG8gZGVzdHJvIGRlbGxhIGZyZWNjaWEgYmlzb2duYSBjb25jYXRlbmFybGUgY29uIGxhIHZpcmdvbGEsIGFkIGVzZW1waW8gXCJlbi0+aXQsanAsZWNjXCJcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0b2tlbiBOb21lIGRlbCB0b2tlblxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGxlZnQgVmFsb3JlIGRlbCB0b2tlbiBwZXIgbGEgbGluZ3VhIHNwZWNpZmljYXRhIG5lbCBsYXRvIGltbWVkaWF0YW1lbnRlIHNpbmlzdHJvIGFsbGEgZnJlY2NpYSBkZWwgcGFyYW1ldHJvICoqZGlyZWN0aW9uKipcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSByaWdodCBBcnJheSBjb24gaSB2YWxvcmkgZmFjZW50aSByaWZlcmltZW50byBhbGwnTi1lc2ltYSBsaW5ndWEgZGVsIGxhdG8gZGVzdHJvIGRlbCBwYXJhbWV0cm8gKipkaXJlY3Rpb24qKlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgc2V0VG9rZW4oZGlyZWN0aW9uOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcsIGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0VG9rZW4oZGlyZWN0aW9uLCB0b2tlbiwgbGVmdCwgcmlnaHQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wb3N0YSBsYSBsb2NhbGl6emF6aW9uZSBkaSB1bmEgZnJhc2UgYWxsJ2ludGVybm8gZGVsbGEgKipUcmFuc2xhdGlvbkNhY2hlKipcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGRpcmVjdGlvbiBEaXJlemlvbmUgZGVsbGEgdHJhZHV6aW9uZSwgcmFwcHJlc2VudGEgbGEgbGluZ3VhIGJhc2UgaW4gY3VpIGFzcGV0dGFyc2kgaWwgdGVzdG8gZSBsZSB2YXJpZSBsaW5ndWUgaW4gY3VpIHZpZW5lIHRyYWRvdHRhLlxyXG4gICAgICogQWQgZXNlbXBpbywgXCJlbi0+aXRcIiBpbmRpY2EgY2hlIGlsIHBhcmFtZXRybyAqKmxlZnQqKiDDqCB2YWxpZG8gcGVyIGxlIGxvY2FsaXp6YXppb25pIGluIGluZ2xlc2UsIG1lbnRyZSBuZWxsJ2VsZW1lbnRvIDAgZGVsIHBhcmFtZXRybyAqKnJpZ2h0KiogXHJcbiAgICAgKiDDqCBwcmVzZW50ZSBsJ3VuaWNhIHRyYWR1emlvbmUgaW4gaXRhbGlhbm8sIHBlciBkZWZpbmlyZSBwacO5IHRyYWR1emlvbmkgc3VsIGxhdG8gZGVzdHJvIGRlbGxhIGZyZWNjaWEgYmlzb2duYSBjb25jYXRlbmFybGUgY29uIGxhIHZpcmdvbGEsIGFkIGVzZW1waW8gXCJlbi0+aXQsanAsZWNjXCJcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsZWZ0IFZhbG9yZSBkZWxsYSBmcmFzZSBwZXIgbGEgbGluZ3VhIHNwZWNpZmljYXRhIG5lbCBsYXRvIGltbWVkaWF0YW1lbnRlIHNpbmlzdHJvIGFsbGEgZnJlY2NpYSBkZWwgcGFyYW1ldHJvICoqZGlyZWN0aW9uKipcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSByaWdodCBBcnJheSBjb24gaSB2YWxvcmkgZmFjZW50aSByaWZlcmltZW50byBhbGwnTi1lc2ltYSBsaW5ndWEgZGVsIGxhdG8gZGVzdHJvIGRlbCBwYXJhbWV0cm8gKipkaXJlY3Rpb24qKlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgc2V0KGRpcmVjdGlvbjogc3RyaW5nLCBsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmdbXSkge1xyXG4gICAgICAgIC8vIENvbnRyb2xsYSBkaSBub24gcmVpbnNlcmlyZSBsYSBzdGVzc2EgbG9jYWxpenphemlvbmUgcHJlc2VudGUgbmVsIEJhc2VMb2NhbGl6YXRpb25cclxuICAgICAgICAvLyBpIGNvbnRyb2xsaSBwZXIgaWwgbm9uIHJlaW5zZXJpbWVudG8gZGVsbGEgc3Rlc3NhIGxvY2FsaXp6YXppb25lIGFsbCdpbnRlcm5vIGRlbGxhIHN0ZXNzYSBpc3RhbnphIMOoIGZhdHRvIGxhdG8gUGVyc2lzdG9yXHJcbiAgICAgICAgaWYgKHRoaXMuYmFzZUxvY2FsaXphdGlvbi5QZXJzaXN0b3IuZ2V0KGxlZnQsIGZhbHNlKSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYExhIGxvY2FsaXp6YXppb25lIHBlciAke2xlZnR9IMOoIGdpw6AgcHJlc2VudGUgZnJhIGxlIGxvY2FsaXp6YXppb25pIGJhc2UsIGlnbm9ybyBsJ29wZXJhemlvbmVgKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoZGlyZWN0aW9uLCBsZWZ0LCByaWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2NhbGl6emEgdW4gdG9rZW5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgSWwgdG9rZW4gZGEgbG9jYWxpenphcmVcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gVG9rZW4gbG9jYWxpenphdG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIHRva2VuKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jKHRleHQsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9jYWxpenphIHVuYSBmcmFzZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBGcmFzZSBkYSBsb2NhbGl6emFyZVxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBhbGxvd3Rva2VucyBJbmRpY2Egc2UgbGEgZnJhc2UgKip0ZXh0KiogcG90cmViYmUgZXNzZXJlIHVuIHRva2VuIG8gbm9cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gRnJhc2UgbG9jYWxpenphdGFcclxuICAgICAqL1xyXG4gICAgcHVibGljIGxvYyh0ZXh0OiBzdHJpbmcsIGFsbG93dG9rZW5zPzogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCF0aGlzLkxvY2FsZSlcclxuICAgICAgICAgICAgdGhyb3cgXCJJbCBzaXN0ZW1hIGRpIGxvY2FsaXp6YXppb25lIG5vbiBoYSBhbmNvcmEgY2FyaWNhdG8gaWwgTG9jYWxlLCBhc3NpY3VyYXJzaSBkaSBjYXJpY2FyZSBsJ0FQUCBzb2xvIGFsIHJldHJpZXZlIGRlbCBsb2NhbGUnXCI7XHJcblxyXG4gICAgICAgIGlmICghdGV4dCB8fCB0ZXh0ID09IFwidW5kZWZpbmVkXCIpXHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG5cclxuICAgICAgICAvLyBQcmVuZG8gbGEgbG9jYWxpenphemlvbmUgbyBkYWxsYSBjYWNoZSBhdHR1YWxlIG8gZGFsbGEgY2FjaGUgZGVsIHNlcnZpemlvIGJhc2VcclxuICAgICAgICB2YXIgaXRlbSA9IHRoaXMuUGVyc2lzdG9yLmdldCh0ZXh0LCBhbGxvd3Rva2VucykgfHwgdGhpcy5iYXNlTG9jYWxpemF0aW9uLlBlcnNpc3Rvci5nZXQodGV4dCwgYWxsb3d0b2tlbnMpO1xyXG4gICAgICAgIGlmICghaXRlbSkge1xyXG4gICAgICAgICAgICBsZXQgbWVzc2FnZSA9IGBJbXBvc3NpYmlsZSB0cm92YXJlIGxhIGxvY2FsaXp6YXppb25lIHBlciAnJHt0ZXh0fSdgO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMub25NaXNzaW5nKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIExvY2FsaXphdGlvbk1pc3NpbmdQb2xpY3kuUHJpbnRFbXB0eTpcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBMb2NhbGl6YXRpb25NaXNzaW5nUG9saWN5LlByaW50U291cmNlOlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDtcclxuICAgICAgICAgICAgICAgIGNhc2UgTG9jYWxpemF0aW9uTWlzc2luZ1BvbGljeS5UaHJvd0V4Y2VwdGlvbjpcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBtZXNzYWdlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgbG9jID0gdGhpcy5QZXJzaXN0b3IudHJhbnNsYXRpb25CeUN1bHR1cmUoaXRlbSwgdGhpcy5Mb2NhbGUpO1xyXG4gICAgICAgIGlmICghbG9jKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJJbXBvc3NpYmlsZSB0cm92YXJlIGxhIGxvY2FsaXp6YXppb25lIHBlciAnXCIgKyB0ZXh0ICsgXCInLCBjdWx0dXJlIFwiICsgdGhpcy5Mb2NhbGUpO1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBsb2MudHJhbnNsYXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGNoYW5nZUxvY2FsZShuZXdMb2NhbGU6IHN0cmluZykge1xyXG4gICAgICAgIGxldCBsb2NhbGUgPSBhd2FpdCB0aGlzLkxvY2FsZVBlcnNpc3Rvci5yZWNvdmVyKCkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgaWYgKG5ld0xvY2FsZSA9PSBsb2NhbGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5pbmZvKFwiSWwgbG9jYWxlIHJpY2hpZXN0byDDqCBsbyBzdGVzc28gZGVsIGxvY2FsZSBhdHR1YWxlLiBJZ25vcm8gbCdvcGVyYXppb25lXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLkxvY2FsZVBlcnNpc3Rvci5wZXJzaXN0KG5ld0xvY2FsZSkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
@@ -0,0 +1,14 @@
1
+ export var BaseLocalizationTokens;
2
+ (function (BaseLocalizationTokens) {
3
+ BaseLocalizationTokens["getDateMonthPosition"] = "getDateMonthPosition";
4
+ BaseLocalizationTokens["getDisplayDateMonthPosition"] = "getDisplayDateMonthPosition";
5
+ BaseLocalizationTokens["getLocale"] = "getLocale";
6
+ BaseLocalizationTokens["getSmallDateFormat"] = "getSmallDateFormat";
7
+ BaseLocalizationTokens["getDefaultDateFormat"] = "getDefaultDateFormat";
8
+ BaseLocalizationTokens["getSmallDateDisplayFormat"] = "getSmallDateDisplayFormat";
9
+ BaseLocalizationTokens["getFullDateFormat"] = "getFullDateFormat";
10
+ BaseLocalizationTokens["getFullDateDisplayFormat"] = "getFullDateDisplayFormat";
11
+ BaseLocalizationTokens["getFullDateFormatNoSeconds"] = "getFullDateFormatNoSeconds";
12
+ BaseLocalizationTokens["getFullDateDisplayFormatNoSeconds"] = "getFullDateDisplayFormatNoSeconds";
13
+ })(BaseLocalizationTokens || (BaseLocalizationTokens = {}));
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUxvY2FsaXphdGlvblRva2Vucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xvY2FsaXphdGlvbnMvc3JjL2xpYi9tb2RlbHMvQmFzZUxvY2FsaXphdGlvblRva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxNQUFNLENBQU4sSUFBWSxzQkFXWDtBQVhELFdBQVksc0JBQXNCO0lBQzlCLHVFQUE2QyxDQUFBO0lBQzdDLHFGQUEyRCxDQUFBO0lBQzNELGlEQUF1QixDQUFBO0lBQ3ZCLG1FQUF5QyxDQUFBO0lBQ3pDLHVFQUE2QyxDQUFBO0lBQzdDLGlGQUF1RCxDQUFBO0lBQ3ZELGlFQUF1QyxDQUFBO0lBQ3ZDLCtFQUFxRCxDQUFBO0lBQ3JELG1GQUF5RCxDQUFBO0lBQ3pELGlHQUF1RSxDQUFBO0FBQzNFLENBQUMsRUFYVyxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBV2pDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmV4cG9ydCBlbnVtIEJhc2VMb2NhbGl6YXRpb25Ub2tlbnMge1xyXG4gICAgZ2V0RGF0ZU1vbnRoUG9zaXRpb24gPSBcImdldERhdGVNb250aFBvc2l0aW9uXCIsXHJcbiAgICBnZXREaXNwbGF5RGF0ZU1vbnRoUG9zaXRpb24gPSBcImdldERpc3BsYXlEYXRlTW9udGhQb3NpdGlvblwiLFxyXG4gICAgZ2V0TG9jYWxlID0gXCJnZXRMb2NhbGVcIixcclxuICAgIGdldFNtYWxsRGF0ZUZvcm1hdCA9IFwiZ2V0U21hbGxEYXRlRm9ybWF0XCIsXHJcbiAgICBnZXREZWZhdWx0RGF0ZUZvcm1hdCA9IFwiZ2V0RGVmYXVsdERhdGVGb3JtYXRcIixcclxuICAgIGdldFNtYWxsRGF0ZURpc3BsYXlGb3JtYXQgPSBcImdldFNtYWxsRGF0ZURpc3BsYXlGb3JtYXRcIixcclxuICAgIGdldEZ1bGxEYXRlRm9ybWF0ID0gXCJnZXRGdWxsRGF0ZUZvcm1hdFwiLFxyXG4gICAgZ2V0RnVsbERhdGVEaXNwbGF5Rm9ybWF0ID0gXCJnZXRGdWxsRGF0ZURpc3BsYXlGb3JtYXRcIixcclxuICAgIGdldEZ1bGxEYXRlRm9ybWF0Tm9TZWNvbmRzID0gXCJnZXRGdWxsRGF0ZUZvcm1hdE5vU2Vjb25kc1wiLFxyXG4gICAgZ2V0RnVsbERhdGVEaXNwbGF5Rm9ybWF0Tm9TZWNvbmRzID0gXCJnZXRGdWxsRGF0ZURpc3BsYXlGb3JtYXROb1NlY29uZHNcIlxyXG59XHJcbiJdfQ==
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Contenitore delle localizzazioni collegate ad un testo "base", una per ogni linguaggio supportato
3
+ */
4
+ export class ItemLocalization {
5
+ /**
6
+ * Costruttore
7
+ *
8
+ * @param {boolean} token Indica se è un token o se è un testo
9
+ * @param {string} baseText Testo base che verrà richiesto quando verrà cercata la localizzazione
10
+ * @param {SpecializedLocalization[]} translations Lista di traduzioni in base al testo base
11
+ */
12
+ constructor(token, baseText, translations) {
13
+ this.token = token;
14
+ this.baseText = baseText;
15
+ this.translations = translations;
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSXRlbUxvY2FsaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xvY2FsaXphdGlvbnMvc3JjL2xpYi9tb2RlbHMvSXRlbUxvY2FsaXphdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0I7Ozs7OztPQU1HO0lBQ0gsWUFBbUIsS0FBYyxFQUFTLFFBQWdCLEVBQVMsWUFBdUM7UUFBdkYsVUFBSyxHQUFMLEtBQUssQ0FBUztRQUFTLGFBQVEsR0FBUixRQUFRLENBQVE7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBMkI7SUFBRyxDQUFDO0NBQy9HIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3BlY2lhbGl6ZWRMb2NhbGl6YXRpb24gfSBmcm9tIFwiLi9TcGVjaWFsaXplZExvY2FsaXphdGlvblwiO1xyXG5cclxuLyoqXHJcbiAqIENvbnRlbml0b3JlIGRlbGxlIGxvY2FsaXp6YXppb25pIGNvbGxlZ2F0ZSBhZCB1biB0ZXN0byBcImJhc2VcIiwgdW5hIHBlciBvZ25pIGxpbmd1YWdnaW8gc3VwcG9ydGF0b1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEl0ZW1Mb2NhbGl6YXRpb24ge1xyXG5cclxuICAvKipcclxuICAgKiBDb3N0cnV0dG9yZVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdG9rZW4gSW5kaWNhIHNlIMOoIHVuIHRva2VuIG8gc2Ugw6ggdW4gdGVzdG9cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmFzZVRleHQgVGVzdG8gYmFzZSBjaGUgdmVycsOgIHJpY2hpZXN0byBxdWFuZG8gdmVycsOgIGNlcmNhdGEgbGEgbG9jYWxpenphemlvbmVcclxuICAgKiBAcGFyYW0ge1NwZWNpYWxpemVkTG9jYWxpemF0aW9uW119IHRyYW5zbGF0aW9ucyBMaXN0YSBkaSB0cmFkdXppb25pIGluIGJhc2UgYWwgdGVzdG8gYmFzZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0b2tlbjogYm9vbGVhbiwgcHVibGljIGJhc2VUZXh0OiBzdHJpbmcsIHB1YmxpYyB0cmFuc2xhdGlvbnM6IFNwZWNpYWxpemVkTG9jYWxpemF0aW9uW10peyB9XHJcbn0iXX0=
@@ -0,0 +1,32 @@
1
+ import { LocaleObject } from "./LocaleObject";
2
+ // VVVVVVVV Tag per evitare che typescript muoia con l'errore "Error encountered in metadata generated for exported symbol 'LocaleDefinitions'" (https://github.com/angular/angular/issues/18867#issuecomment-357484102),
3
+ // @dynamic
4
+ /**
5
+ * Definizione dei locali disponibili
6
+ */
7
+ export class LocaleDefinitions {
8
+ /**
9
+ * Costruttore
10
+ *
11
+ * @ignore
12
+ */
13
+ constructor() { }
14
+ /**
15
+ * In base a un alias restituisce il locale rappresentato
16
+ *
17
+ * @param {string} alias Alias in base al quale raccogliere il Locale
18
+ *
19
+ * @returns {LocaleObject} Locale richiesto dall'alias
20
+ */
21
+ static getByAlias(alias) {
22
+ return this.AvailableLocales.find(t => !!t.aliases.find(a => a == alias));
23
+ }
24
+ }
25
+ /**
26
+ * Lista dei locali disponibili, definiti anche con i vari alias
27
+ */
28
+ LocaleDefinitions.AvailableLocales = [
29
+ new LocaleObject('it-IT', 'Italiano', ['it', 'it-IT']),
30
+ new LocaleObject('en-US', 'English', ['en', 'en-US'])
31
+ ];
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxlRGVmaW5pdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9sb2NhbGl6YXRpb25zL3NyYy9saWIvbW9kZWxzL0xvY2FsZURlZmluaXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QywwTkFBME47QUFDMU4sV0FBVztBQUVYOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUUxQjs7OztPQUlHO0lBQ0gsZ0JBQWdCLENBQUM7SUFVakI7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFhO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7O0FBakJEOztHQUVHO0FBQ1csa0NBQWdCLEdBQW1CO0lBQzdDLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEQsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztDQUN4RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYWxlT2JqZWN0IH0gZnJvbSBcIi4vTG9jYWxlT2JqZWN0XCI7XHJcblxyXG4vLyBWVlZWVlZWViAgVGFnIHBlciBldml0YXJlIGNoZSB0eXBlc2NyaXB0IG11b2lhIGNvbiBsJ2Vycm9yZSBcIkVycm9yIGVuY291bnRlcmVkIGluIG1ldGFkYXRhIGdlbmVyYXRlZCBmb3IgZXhwb3J0ZWQgc3ltYm9sICdMb2NhbGVEZWZpbml0aW9ucydcIiAoaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTg4NjcjaXNzdWVjb21tZW50LTM1NzQ4NDEwMiksXHJcbi8vIEBkeW5hbWljXHJcblxyXG4vKipcclxuICogRGVmaW5pemlvbmUgZGVpIGxvY2FsaSBkaXNwb25pYmlsaVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIExvY2FsZURlZmluaXRpb25zIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlXHJcbiAgICAgKiBcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3RhIGRlaSBsb2NhbGkgZGlzcG9uaWJpbGksIGRlZmluaXRpIGFuY2hlIGNvbiBpIHZhcmkgYWxpYXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBBdmFpbGFibGVMb2NhbGVzOiBMb2NhbGVPYmplY3RbXSA9IFtcclxuICAgICAgICBuZXcgTG9jYWxlT2JqZWN0KCdpdC1JVCcsICdJdGFsaWFubycsIFsnaXQnLCAnaXQtSVQnXSksXHJcbiAgICAgICAgbmV3IExvY2FsZU9iamVjdCgnZW4tVVMnLCAnRW5nbGlzaCcsIFsnZW4nLCAnZW4tVVMnXSlcclxuICAgIF07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbiBiYXNlIGEgdW4gYWxpYXMgcmVzdGl0dWlzY2UgaWwgbG9jYWxlIHJhcHByZXNlbnRhdG9cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGFsaWFzIEFsaWFzIGluIGJhc2UgYWwgcXVhbGUgcmFjY29nbGllcmUgaWwgTG9jYWxlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtMb2NhbGVPYmplY3R9IExvY2FsZSByaWNoaWVzdG8gZGFsbCdhbGlhc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldEJ5QWxpYXMoYWxpYXM6IHN0cmluZyk6IExvY2FsZU9iamVjdCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQXZhaWxhYmxlTG9jYWxlcy5maW5kKHQgPT4gISF0LmFsaWFzZXMuZmluZChhID0+IGEgPT0gYWxpYXMpKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Classe che rappresenta un locale (Es. 'Italiano') con i propri alias (Es. 'it' oppure 'it-IT')
3
+ */
4
+ export class LocaleObject {
5
+ /**
6
+ * Costruttore
7
+ *
8
+ * @param {string} id Codice locale
9
+ * @param {string} description Descrizione locale
10
+ * @param {string[]} aliases Alias con cui quel locale è conosciuto
11
+ */
12
+ constructor(id, description, aliases) {
13
+ this.id = id;
14
+ this.description = description;
15
+ this.aliases = aliases;
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxlT2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbG9jYWxpemF0aW9ucy9zcmMvbGliL21vZGVscy9Mb2NhbGVPYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0E7O0dBRUc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUVyQjs7Ozs7O09BTUc7SUFDSCxZQUFtQixFQUFVLEVBQVMsV0FBbUIsRUFBUyxPQUFpQjtRQUFoRSxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFVO0lBQUksQ0FBQztDQUMzRiIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4vKipcclxuICogQ2xhc3NlIGNoZSByYXBwcmVzZW50YSB1biBsb2NhbGUgKEVzLiAnSXRhbGlhbm8nKSBjb24gaSBwcm9wcmkgYWxpYXMgKEVzLiAnaXQnIG9wcHVyZSAnaXQtSVQnKVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIExvY2FsZU9iamVjdCB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3N0cnV0dG9yZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgQ29kaWNlIGxvY2FsZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uIERlc2NyaXppb25lIGxvY2FsZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gYWxpYXNlcyBBbGlhcyBjb24gY3VpIHF1ZWwgbG9jYWxlIMOoIGNvbm9zY2l1dG9cclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIGlkOiBzdHJpbmcsIHB1YmxpYyBkZXNjcmlwdGlvbjogc3RyaW5nLCBwdWJsaWMgYWxpYXNlczogc3RyaW5nW10pIHsgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Enum che rappresenta le policy di comportamento qualore il sistema di localizzazione non trovi la localizzazione cercata,
3
+ * usare **ThrowException** solo se ci si sente infallibili o si vuole debuggare in maniera approfondita l'applicazione
4
+ */
5
+ export var LocalizationMissingPolicy;
6
+ (function (LocalizationMissingPolicy) {
7
+ LocalizationMissingPolicy[LocalizationMissingPolicy["PrintEmpty"] = 0] = "PrintEmpty";
8
+ LocalizationMissingPolicy[LocalizationMissingPolicy["PrintSource"] = 1] = "PrintSource";
9
+ LocalizationMissingPolicy[LocalizationMissingPolicy["ThrowException"] = 2] = "ThrowException";
10
+ })(LocalizationMissingPolicy || (LocalizationMissingPolicy = {}));
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxpemF0aW9uTWlzc2luZ1BvbGljeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xvY2FsaXphdGlvbnMvc3JjL2xpYi9tb2RlbHMvTG9jYWxpemF0aW9uTWlzc2luZ1BvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSx5QkFJWDtBQUpELFdBQVkseUJBQXlCO0lBQ25DLHFGQUFVLENBQUE7SUFDVix1RkFBVyxDQUFBO0lBQ1gsNkZBQWMsQ0FBQTtBQUNoQixDQUFDLEVBSlcseUJBQXlCLEtBQXpCLHlCQUF5QixRQUlwQyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4vKiogXHJcbiAqIEVudW0gY2hlIHJhcHByZXNlbnRhIGxlIHBvbGljeSBkaSBjb21wb3J0YW1lbnRvIHF1YWxvcmUgaWwgc2lzdGVtYSBkaSBsb2NhbGl6emF6aW9uZSBub24gdHJvdmkgbGEgbG9jYWxpenphemlvbmUgY2VyY2F0YSwgXHJcbiAqIHVzYXJlICoqVGhyb3dFeGNlcHRpb24qKiBzb2xvIHNlIGNpIHNpIHNlbnRlIGluZmFsbGliaWxpIG8gc2kgdnVvbGUgZGVidWdnYXJlIGluIG1hbmllcmEgYXBwcm9mb25kaXRhIGwnYXBwbGljYXppb25lIFxyXG4gKi9cclxuZXhwb3J0IGVudW0gTG9jYWxpemF0aW9uTWlzc2luZ1BvbGljeSB7XHJcbiAgUHJpbnRFbXB0eSxcclxuICBQcmludFNvdXJjZSxcclxuICBUaHJvd0V4Y2VwdGlvblxyXG59XHJcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Classe di configurazione per il modulo di localizzazione
3
+ */
4
+ export class LocalizationModuleConfig {
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxpemF0aW9uTW9kdWxlQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbG9jYWxpemF0aW9ucy9zcmMvbGliL21vZGVscy9Mb2NhbGl6YXRpb25Nb2R1bGVDb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sd0JBQXdCO0NBYXBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IExvY2FsZVBlcnNpc3RvciB9IGZyb20gXCIuLi9sb2NhbGUtcGVyc2lzdG9yL0xvY2FsZVBlcnNpc3RvclwiO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25NaXNzaW5nUG9saWN5IH0gZnJvbSBcIi4vTG9jYWxpemF0aW9uTWlzc2luZ1BvbGljeVwiO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBkaSBjb25maWd1cmF6aW9uZSBwZXIgaWwgbW9kdWxvIGRpIGxvY2FsaXp6YXppb25lXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTG9jYWxpemF0aW9uTW9kdWxlQ29uZmlnIHtcclxuXHJcbiAgLyoqIExvY2FsZSBkaSBkZWZhdWx0IHV0aWxpenphdG8gcGVyIHJpY2hpZWRlcmUgbGUgdHJhZHV6aW9uaSAqL1xyXG4gIGRlZmF1bHRMb2NhbGU6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogQ2xhc3NlIGNoZSBzaSBkZXZlIG9jY3VwYXJlIGRlbGxvIHN0b3JlIFwiRGVmaW5pdGl2b1wiIGRlbGxlIGluZm8gc3VsIGxvY2FsZSB1dGlsaXp6YXRvLiBEaSBkZWZhdWx0IHZpZW5lIHByb3Bvc3RvIHVubyBzdG9yZSBsYXRvIGxvY2FsU3RvcmFnZSBtYSBzaSBwdcOyIGZhY2lsbWVudGUgXHJcbiAgICogZm9ybmlyZSB1bm8gc3RvcmFnZSBjaGUgcG9ydGEgbGUgaW5mb3JtYXppb25pIGxhdG8gRGF0YWJhc2UgaW4gbW9kbyBkYSBhdmVyZSBsYSBzdGVzc2EgbGluZ3VhIGZpbm8gYSBjaGUgbm9uIHZpZW5lIGNhbWJpYXRhIChFcy4gUHJlZmVyZW5jZSBzdG9yYWdlKVxyXG4gICAqL1xyXG4gIGxvY2FsZVBlcnNpc3Rvcj86IFR5cGU8TG9jYWxlUGVyc2lzdG9yPjtcclxuXHJcbiAgLyoqIFBvbGljeSBkaSBjb3NhIGZhcmUgaW4gY2FzbyBpbCBzaXN0ZW1hIG5vbiByaWVzY2EgYSB0cm92YXJlIHVuYSBkZWxsZSB0cmFkdXppb25pICovXHJcbiAgbG9jYWxpemF0aW9uTWlzc2luZ1BvbGljeT86IExvY2FsaXphdGlvbk1pc3NpbmdQb2xpY3lcclxufSJdfQ==
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Classe che rappresenta la localizzazione di un test base per una certa lingua
3
+ */
4
+ export class SpecializedLocalization {
5
+ /**
6
+ * Costruttore
7
+ *
8
+ * @param {string} culture Culture della traduzione
9
+ * @param {string} translation Traduzione nella lingua specificata dalla **culture**
10
+ */
11
+ constructor(culture, translation) {
12
+ this.culture = culture;
13
+ this.translation = translation;
14
+ }
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BlY2lhbGl6ZWRMb2NhbGl6YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9sb2NhbGl6YXRpb25zL3NyYy9saWIvbW9kZWxzL1NwZWNpYWxpemVkTG9jYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQzs7Ozs7T0FLRztJQUNILFlBQW1CLE9BQWUsRUFBUyxXQUFtQjtRQUEzQyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQVE7SUFBSSxDQUFDO0NBQ3BFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENsYXNzZSBjaGUgcmFwcHJlc2VudGEgbGEgbG9jYWxpenphemlvbmUgZGkgdW4gdGVzdCBiYXNlIHBlciB1bmEgY2VydGEgbGluZ3VhXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU3BlY2lhbGl6ZWRMb2NhbGl6YXRpb24ge1xyXG5cclxuICAvKipcclxuICAgKiBDb3N0cnV0dG9yZVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjdWx0dXJlIEN1bHR1cmUgZGVsbGEgdHJhZHV6aW9uZVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0cmFuc2xhdGlvbiBUcmFkdXppb25lIG5lbGxhIGxpbmd1YSBzcGVjaWZpY2F0YSBkYWxsYSAqKmN1bHR1cmUqKlxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjdWx0dXJlOiBzdHJpbmcsIHB1YmxpYyB0cmFuc2xhdGlvbjogc3RyaW5nKSB7IH1cclxufVxyXG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- /**
3
- * Locale da utilizzare per le traduzioni
4
- */
2
+ /** Locale da utilizzare per le traduzioni */
5
3
  export const LOC_LOCALE = new InjectionToken('LOC_LOCALE');
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbG9jYWxpemF0aW9ucy9zcmMvbGliL3Rva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUEyQixJQUFJLGNBQWMsQ0FBUyxZQUFZLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogTG9jYWxlIGRhIHV0aWxpenphcmUgcGVyIGxlIHRyYWR1emlvbmlcclxuICovXHJcbmV4cG9ydCBjb25zdCBMT0NfTE9DQUxFOiBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+ID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0xPQ19MT0NBTEUnKTsiXX0=
4
+ /** Policy da utilizzare per traduzioni mancanti */
5
+ export const LOC_MISSING_POLICY = new InjectionToken('LOC_MISSING_POLICY');
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbG9jYWxpemF0aW9ucy9zcmMvbGliL3Rva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLDZDQUE2QztBQUM3QyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQTJCLElBQUksY0FBYyxDQUFTLFlBQVksQ0FBQyxDQUFDO0FBRTNGLG1EQUFtRDtBQUNuRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBOEMsSUFBSSxjQUFjLENBQTRCLG9CQUFvQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25NaXNzaW5nUG9saWN5IH0gZnJvbSBcIi4vbW9kZWxzL0xvY2FsaXphdGlvbk1pc3NpbmdQb2xpY3lcIlxyXG5cclxuLyoqIExvY2FsZSBkYSB1dGlsaXp6YXJlIHBlciBsZSB0cmFkdXppb25pICovXHJcbmV4cG9ydCBjb25zdCBMT0NfTE9DQUxFOiBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+ID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0xPQ19MT0NBTEUnKTtcclxuXHJcbi8qKiBQb2xpY3kgZGEgdXRpbGl6emFyZSBwZXIgdHJhZHV6aW9uaSBtYW5jYW50aSAqL1xyXG5leHBvcnQgY29uc3QgTE9DX01JU1NJTkdfUE9MSUNZOiBJbmplY3Rpb25Ub2tlbjxMb2NhbGl6YXRpb25NaXNzaW5nUG9saWN5PiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxMb2NhbGl6YXRpb25NaXNzaW5nUG9saWN5PignTE9DX01JU1NJTkdfUE9MSUNZJyk7Il19
@@ -7,6 +7,7 @@ export * from './lib/localizations.service';
7
7
  export * from './lib/pipes/localize.pipe';
8
8
  export * from './lib/pipes/loc_date.pipe';
9
9
  export * from './lib/tokens';
10
- export * from './lib/models/classes/LocalizationModuleConfig';
11
- export * from './lib/models/classes/BaseLocalizationTokens';
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2xvY2FsaXphdGlvbnMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLDZDQUE2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGxvY2FsaXphdGlvbnNcclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL2xvY2FsaXphdGlvbi5iYXNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWxpemF0aW9ucy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGl6YXRpb25zLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9sb2NhbGl6ZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvbG9jX2RhdGUucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rva2Vucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9jbGFzc2VzL0xvY2FsaXphdGlvbk1vZHVsZUNvbmZpZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9jbGFzc2VzL0Jhc2VMb2NhbGl6YXRpb25Ub2tlbnMnOyJdfQ==
10
+ export * from './lib/models/LocalizationModuleConfig';
11
+ export * from './lib/models/BaseLocalizationTokens';
12
+ export * from './lib/models/LocalizationMissingPolicy';
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2xvY2FsaXphdGlvbnMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsd0NBQXdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgbG9jYWxpemF0aW9uc1xyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvbG9jYWxpemF0aW9uLmJhc2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGl6YXRpb25zLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvY2FsaXphdGlvbnMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL2xvY2FsaXplLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9sb2NfZGF0ZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9rZW5zJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL0xvY2FsaXphdGlvbk1vZHVsZUNvbmZpZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9CYXNlTG9jYWxpemF0aW9uVG9rZW5zJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL0xvY2FsaXphdGlvbk1pc3NpbmdQb2xpY3knOyJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { __awaiter } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { InjectionToken, Injectable, Inject, Injector, Pipe, Optional, NgModule } from '@angular/core';
3
+ import { InjectionToken, Injectable, Inject, Pipe, Optional, Injector, NgModule } from '@angular/core';
4
4
  import { take, first } from 'rxjs/operators';
5
5
  import { ReplaySubject, of } from 'rxjs';
6
6
  import { DateService } from '@esfaenza/extensions';
@@ -72,12 +72,6 @@ LocaleDefinitions.AvailableLocales = [
72
72
  new LocaleObject('en-US', 'English', ['en', 'en-US'])
73
73
  ];
74
74
 
75
- /**
76
- * Classe di configurazione per il modulo di localizzazione
77
- */
78
- class LocalizationModuleConfig {
79
- }
80
-
81
75
  /**
82
76
  * Classe che rappresenta la localizzazione di un test base per una certa lingua
83
77
  */
@@ -173,9 +167,7 @@ class LocalizationPersistor {
173
167
  */
174
168
  get(text, allowtokens) {
175
169
  let possibleItem = this.LocCache[text];
176
- if (!possibleItem)
177
- return null;
178
- var item = allowtokens || !possibleItem.token ? possibleItem : null;
170
+ var item = possibleItem && (allowtokens || !possibleItem.token) ? possibleItem : null;
179
171
  return item;
180
172
  }
181
173
  /**
@@ -218,10 +210,10 @@ class LocalePersistor {
218
210
  }
219
211
  }
220
212
 
221
- /**
222
- * Locale da utilizzare per le traduzioni
223
- */
224
- const LOC_LOCALE = new InjectionToken('LOC_LOCALE');
213
+ /** Locale da utilizzare per le traduzioni */
214
+ const LOC_LOCALE = new InjectionToken('LOC_LOCALE');
215
+ /** Policy da utilizzare per traduzioni mancanti */
216
+ const LOC_MISSING_POLICY = new InjectionToken('LOC_MISSING_POLICY');
225
217
 
226
218
  /**
227
219
  * Classe singleton che contiene le traduzioni di base (per evitare di ripeterle in oggi classe di traduzione) e le funzioni base per
@@ -311,6 +303,55 @@ BaseLocalization.ctorParameters = () => [
311
303
  { type: String, decorators: [{ type: Inject, args: [LOC_LOCALE,] }] }
312
304
  ];
313
305
 
306
+ // Angular
307
+ /**
308
+ * Pipe che permette di formattare una data in base al formato specificato. Utilizza il **DateService** di **@esfaenza/extensions** per ricondurre l'input a una data valida
309
+ */
310
+ class LocDatePipe {
311
+ /**
312
+ * @ignore
313
+ */
314
+ constructor(dts) {
315
+ this.dts = dts;
316
+ }
317
+ /**
318
+ * Trasformazione della data in input in base al formato richiesto
319
+ *
320
+ * @param {any} value Valore da ricondurre ad una data e formattare
321
+ * @param {string} format Formato in output della data da visualizzare
322
+ *
323
+ * @returns {string} Data formattata in base al formato
324
+ */
325
+ transform(value, format = "DD/MM/YYYY") {
326
+ if (value == null || value === "")
327
+ return null;
328
+ if (!this.dts) {
329
+ console.error("Tentativo di usare loc_date senza DateService. È possibile importare DateService installando e configurando il pacchetto @esfaenza/extensions");
330
+ return null;
331
+ }
332
+ var detatchedValue = JSON.parse(JSON.stringify(value));
333
+ var dt = this.dts.getDateConvertion(detatchedValue);
334
+ return dt.format(format);
335
+ }
336
+ }
337
+ LocDatePipe.decorators = [
338
+ { type: Pipe, args: [{ name: "loc_date", pure: true },] }
339
+ ];
340
+ LocDatePipe.ctorParameters = () => [
341
+ { type: DateService, decorators: [{ type: Optional }] }
342
+ ];
343
+
344
+ /**
345
+ * Enum che rappresenta le policy di comportamento qualore il sistema di localizzazione non trovi la localizzazione cercata,
346
+ * usare **ThrowException** solo se ci si sente infallibili o si vuole debuggare in maniera approfondita l'applicazione
347
+ */
348
+ var LocalizationMissingPolicy;
349
+ (function (LocalizationMissingPolicy) {
350
+ LocalizationMissingPolicy[LocalizationMissingPolicy["PrintEmpty"] = 0] = "PrintEmpty";
351
+ LocalizationMissingPolicy[LocalizationMissingPolicy["PrintSource"] = 1] = "PrintSource";
352
+ LocalizationMissingPolicy[LocalizationMissingPolicy["ThrowException"] = 2] = "ThrowException";
353
+ })(LocalizationMissingPolicy || (LocalizationMissingPolicy = {}));
354
+
314
355
  /**
315
356
  * Classe di localizzazione estendibile che permette di specificare le proprie localizzazioni e comunque rendere disponibili le localizzazioni globali
316
357
  */
@@ -330,6 +371,7 @@ class LocalizationService {
330
371
  this.TranslationCache = {};
331
372
  this.LocalePersistor = this.injector.get(LocalePersistor);
332
373
  this.baseLocalization = this.injector.get(BaseLocalization);
374
+ this.onMissing = this.injector.get(LOC_MISSING_POLICY);
333
375
  this.Persistor = new LocalizationPersistor(this.TranslationCache);
334
376
  this.baseLocalization.Locale.subscribe(lr => {
335
377
  this.Locale = lr;
@@ -385,17 +427,24 @@ class LocalizationService {
385
427
  * @returns {string} Frase localizzata
386
428
  */
387
429
  loc(text, allowtokens) {
430
+ if (!this.Locale)
431
+ throw "Il sistema di localizzazione non ha ancora caricato il Locale, assicurarsi di caricare l'APP solo al retrieve del locale'";
388
432
  if (!text || text == "undefined")
389
433
  return "";
390
434
  // Prendo la localizzazione o dalla cache attuale o dalla cache del servizio base
391
435
  var item = this.Persistor.get(text, allowtokens) || this.baseLocalization.Persistor.get(text, allowtokens);
392
436
  if (!item) {
393
- console.error("Impossibile trovare la localizzazione per '" + text + "'");
394
- return "";
395
- }
396
- if (!this.Locale) {
397
- console.error("Il sistema di localizzazione non ha ancora caricato il Locale, assicurarsi di caricare l'APP solo al retrieve del locale'");
398
- return "";
437
+ let message = `Impossibile trovare la localizzazione per '${text}'`;
438
+ switch (this.onMissing) {
439
+ case LocalizationMissingPolicy.PrintEmpty:
440
+ console.error(message);
441
+ return "";
442
+ case LocalizationMissingPolicy.PrintSource:
443
+ console.warn(message);
444
+ return text;
445
+ case LocalizationMissingPolicy.ThrowException:
446
+ throw message;
447
+ }
399
448
  }
400
449
  var loc = this.Persistor.translationByCulture(item, this.Locale);
401
450
  if (!loc) {
@@ -425,44 +474,6 @@ LocalizationService.ctorParameters = () => [
425
474
  { type: Injector }
426
475
  ];
427
476
 
428
- // Angular
429
- /**
430
- * Pipe che permette di formattare una data in base al formato specificato. Utilizza il **DateService** di **@esfaenza/extensions** per ricondurre l'input a una data valida
431
- */
432
- class LocDatePipe {
433
- /**
434
- * @ignore
435
- */
436
- constructor(dts) {
437
- this.dts = dts;
438
- }
439
- /**
440
- * Trasformazione della data in input in base al formato richiesto
441
- *
442
- * @param {any} value Valore da ricondurre ad una data e formattare
443
- * @param {string} format Formato in output della data da visualizzare
444
- *
445
- * @returns {string} Data formattata in base al formato
446
- */
447
- transform(value, format = "DD/MM/YYYY") {
448
- if (value == null || value === "")
449
- return null;
450
- if (!this.dts) {
451
- console.error("Tentativo di usare loc_date senza DateService. È possibile importare DateService installando e configurando il pacchetto @esfaenza/extensions");
452
- return null;
453
- }
454
- var detatchedValue = JSON.parse(JSON.stringify(value));
455
- var dt = this.dts.getDateConvertion(detatchedValue);
456
- return dt.format(format);
457
- }
458
- }
459
- LocDatePipe.decorators = [
460
- { type: Pipe, args: [{ name: "loc_date", pure: true },] }
461
- ];
462
- LocDatePipe.ctorParameters = () => [
463
- { type: DateService, decorators: [{ type: Optional }] }
464
- ];
465
-
466
477
  // Angular
467
478
  /**
468
479
  * Pipe di localizzazione per tradurre direttamente da template
@@ -516,6 +527,7 @@ LocalStorageLocalePersistor.decorators = [
516
527
  { type: Injectable }
517
528
  ];
518
529
 
530
+ // Angular
519
531
  class LocalizationModule {
520
532
  static forRoot(config) {
521
533
  return {
@@ -524,6 +536,7 @@ class LocalizationModule {
524
536
  LocalizationService,
525
537
  BaseLocalization,
526
538
  { provide: LOC_LOCALE, useValue: (config === null || config === void 0 ? void 0 : config.defaultLocale) || 'it-IT' },
539
+ { provide: LOC_MISSING_POLICY, useValue: (config === null || config === void 0 ? void 0 : config.localizationMissingPolicy) || LocalizationMissingPolicy.PrintEmpty },
527
540
  { provide: LocalePersistor, useClass: (config === null || config === void 0 ? void 0 : config.localePersistor) || LocalStorageLocalePersistor },
528
541
  ]
529
542
  };
@@ -536,6 +549,12 @@ LocalizationModule.decorators = [
536
549
  },] }
537
550
  ];
538
551
 
552
+ /**
553
+ * Classe di configurazione per il modulo di localizzazione
554
+ */
555
+ class LocalizationModuleConfig {
556
+ }
557
+
539
558
  /*
540
559
  * Public API Surface of localizations
541
560
  */
@@ -544,5 +563,5 @@ LocalizationModule.decorators = [
544
563
  * Generated bundle index. Do not edit.
545
564
  */
546
565
 
547
- export { BaseLocalization, BaseLocalizationTokens, LOC_LOCALE, LocDatePipe, LocalizationModule, LocalizationModuleConfig, LocalizationService, LocalizePipe, LocalePersistor as ɵa, LocalStorageLocalePersistor as ɵb };
566
+ export { BaseLocalization, BaseLocalizationTokens, LOC_LOCALE, LOC_MISSING_POLICY, LocDatePipe, LocalizationMissingPolicy, LocalizationModule, LocalizationModuleConfig, LocalizationService, LocalizePipe, LocalePersistor as ɵa, LocalStorageLocalePersistor as ɵb };
548
567
  //# sourceMappingURL=esfaenza-localizations.js.map