@abp/ng.core 7.1.0-rc.1 → 7.1.0-rc.3

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 (107) hide show
  1. package/esm2020/lib/abstracts/auth-response.model.mjs +2 -0
  2. package/esm2020/lib/abstracts/auth.service.mjs +6 -3
  3. package/esm2020/lib/abstracts/index.mjs +2 -1
  4. package/esm2020/lib/abstracts/ng-model.component.mjs +1 -1
  5. package/esm2020/lib/clients/http.client.mjs +2 -2
  6. package/esm2020/lib/components/dynamic-layout.component.mjs +6 -4
  7. package/esm2020/lib/components/replaceable-route-container.component.mjs +1 -1
  8. package/esm2020/lib/directives/debounce.directive.mjs +1 -1
  9. package/esm2020/lib/directives/for.directive.mjs +20 -12
  10. package/esm2020/lib/directives/form-submit.directive.mjs +2 -2
  11. package/esm2020/lib/directives/replaceable-template.directive.mjs +9 -5
  12. package/esm2020/lib/directives/stop-propagation.directive.mjs +2 -2
  13. package/esm2020/lib/handlers/routes.handler.mjs +9 -7
  14. package/esm2020/lib/interceptors/api.interceptor.mjs +3 -2
  15. package/esm2020/lib/models/auth.mjs +1 -1
  16. package/esm2020/lib/models/dtos.mjs +6 -6
  17. package/esm2020/lib/models/environment.mjs +1 -1
  18. package/esm2020/lib/models/session.mjs +1 -1
  19. package/esm2020/lib/providers/locale.provider.mjs +6 -2
  20. package/esm2020/lib/services/config-state.service.mjs +4 -1
  21. package/esm2020/lib/services/dom-insertion.service.mjs +6 -4
  22. package/esm2020/lib/services/environment.service.mjs +5 -5
  23. package/esm2020/lib/services/http-wait.service.mjs +4 -1
  24. package/esm2020/lib/services/index.mjs +2 -1
  25. package/esm2020/lib/services/lazy-load.service.mjs +6 -4
  26. package/esm2020/lib/services/local-storage.service.mjs +32 -0
  27. package/esm2020/lib/services/localization.service.mjs +7 -7
  28. package/esm2020/lib/services/multi-tenancy.service.mjs +1 -1
  29. package/esm2020/lib/services/permission.service.mjs +1 -1
  30. package/esm2020/lib/services/replaceable-components.service.mjs +1 -1
  31. package/esm2020/lib/services/resource-wait.service.mjs +2 -2
  32. package/esm2020/lib/services/rest.service.mjs +2 -3
  33. package/esm2020/lib/services/router-events.service.mjs +2 -2
  34. package/esm2020/lib/services/routes.service.mjs +2 -2
  35. package/esm2020/lib/services/session-state.service.mjs +9 -6
  36. package/esm2020/lib/services/subscription.service.mjs +4 -2
  37. package/esm2020/lib/strategies/content-security.strategy.mjs +4 -2
  38. package/esm2020/lib/strategies/content.strategy.mjs +6 -2
  39. package/esm2020/lib/strategies/context.strategy.mjs +1 -1
  40. package/esm2020/lib/strategies/cross-origin.strategy.mjs +4 -2
  41. package/esm2020/lib/strategies/loading.strategy.mjs +1 -1
  42. package/esm2020/lib/tokens/localization.token.mjs +1 -1
  43. package/esm2020/lib/tokens/set-token-response-to-storage.token.mjs +4 -1
  44. package/esm2020/lib/utils/common-utils.mjs +4 -1
  45. package/esm2020/lib/utils/date-utils.mjs +3 -3
  46. package/esm2020/lib/utils/environment-utils.mjs +2 -2
  47. package/esm2020/lib/utils/factory-utils.mjs +2 -2
  48. package/esm2020/lib/utils/internal-store-utils.mjs +2 -1
  49. package/esm2020/lib/utils/lazy-load-utils.mjs +2 -2
  50. package/esm2020/lib/utils/localization-utils.mjs +1 -1
  51. package/esm2020/lib/utils/multi-tenancy-utils.mjs +7 -4
  52. package/esm2020/lib/utils/object-utils.mjs +1 -1
  53. package/esm2020/lib/utils/route-utils.mjs +2 -2
  54. package/esm2020/lib/utils/tree-utils.mjs +1 -1
  55. package/esm2020/lib/validators/range.validator.mjs +1 -1
  56. package/esm2020/lib/validators/required.validator.mjs +1 -1
  57. package/esm2020/lib/validators/string-length.validator.mjs +1 -1
  58. package/esm2020/lib/validators/username.validator.mjs +2 -2
  59. package/esm2020/locale/utils/register-locale.mjs +2 -2
  60. package/esm2020/testing/lib/services/mock-permission.service.mjs +1 -1
  61. package/esm2020/testing/lib/services/mock-rest.service.mjs +2 -2
  62. package/fesm2015/abp-ng.core-locale.mjs +1 -1
  63. package/fesm2015/abp-ng.core-locale.mjs.map +1 -1
  64. package/fesm2015/abp-ng.core-testing.mjs.map +1 -1
  65. package/fesm2015/abp-ng.core.mjs +167 -80
  66. package/fesm2015/abp-ng.core.mjs.map +1 -1
  67. package/fesm2020/abp-ng.core-locale.mjs +1 -1
  68. package/fesm2020/abp-ng.core-locale.mjs.map +1 -1
  69. package/fesm2020/abp-ng.core-testing.mjs.map +1 -1
  70. package/fesm2020/abp-ng.core.mjs +158 -77
  71. package/fesm2020/abp-ng.core.mjs.map +1 -1
  72. package/lib/abstracts/auth-response.model.d.ts +10 -0
  73. package/lib/abstracts/auth.service.d.ts +4 -1
  74. package/lib/abstracts/index.d.ts +1 -0
  75. package/lib/abstracts/ng-model.component.d.ts +4 -4
  76. package/lib/components/dynamic-layout.component.d.ts +2 -2
  77. package/lib/components/replaceable-route-container.component.d.ts +1 -1
  78. package/lib/directives/for.directive.d.ts +6 -6
  79. package/lib/directives/form-submit.directive.d.ts +1 -1
  80. package/lib/models/auth.d.ts +4 -1
  81. package/lib/models/dtos.d.ts +11 -11
  82. package/lib/models/environment.d.ts +3 -1
  83. package/lib/models/session.d.ts +1 -1
  84. package/lib/services/config-state.service.d.ts +5 -3
  85. package/lib/services/dom-insertion.service.d.ts +1 -1
  86. package/lib/services/environment.service.d.ts +1 -1
  87. package/lib/services/index.d.ts +1 -0
  88. package/lib/services/local-storage.service.d.ts +13 -0
  89. package/lib/services/localization.service.d.ts +5 -2
  90. package/lib/services/multi-tenancy.service.d.ts +1 -1
  91. package/lib/services/permission.service.d.ts +2 -2
  92. package/lib/services/replaceable-components.service.d.ts +2 -2
  93. package/lib/services/rest.service.d.ts +1 -1
  94. package/lib/services/router-events.service.d.ts +2 -2
  95. package/lib/services/routes.service.d.ts +3 -1
  96. package/lib/services/session-state.service.d.ts +4 -2
  97. package/lib/services/subscription.service.d.ts +1 -1
  98. package/lib/strategies/cross-origin.strategy.d.ts +2 -2
  99. package/lib/tokens/localization.token.d.ts +2 -2
  100. package/lib/tokens/set-token-response-to-storage.token.d.ts +3 -0
  101. package/lib/utils/common-utils.d.ts +9 -8
  102. package/lib/utils/factory-utils.d.ts +3 -1
  103. package/lib/utils/localization-utils.d.ts +1 -1
  104. package/lib/utils/object-utils.d.ts +2 -1
  105. package/lib/utils/route-utils.d.ts +2 -2
  106. package/lib/utils/tree-utils.d.ts +3 -3
  107. package/package.json +3 -3
@@ -1,13 +1,13 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { ChangeDetectorRef, Component, Input, Injectable, InjectionToken, Inject, isDevMode, Optional, SkipSelf, Directive, EventEmitter, Output, Self, Injector, Pipe, NgModule, APP_INITIALIZER, LOCALE_ID, NgModuleFactory, Compiler, ComponentFactoryResolver, ApplicationRef } from '@angular/core';
3
- import { of, BehaviorSubject, Subject, throwError, combineLatest, from, Subscription, fromEvent, ReplaySubject, lastValueFrom, Observable, timer, concat } from 'rxjs';
3
+ import { of, BehaviorSubject, Subject, throwError, combineLatest, from, Subscription, fromEvent, ReplaySubject, lastValueFrom, Observable, timer, pipe, concat } from 'rxjs';
4
4
  import * as i1$1 from '@angular/router';
5
5
  import { PRIMARY_OUTLET, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, ActivatedRoute, Router, RouterModule } from '@angular/router';
6
6
  import * as i5 from '@angular/common';
7
7
  import { registerLocaleData, DOCUMENT, DatePipe, DATE_PIPE_DEFAULT_TIMEZONE, CommonModule } from '@angular/common';
8
- import { map, distinctUntilChanged, filter, catchError, switchMap, take, tap, debounceTime, mapTo, takeUntil, retryWhen, delay, shareReplay, finalize } from 'rxjs/operators';
8
+ import { map, distinctUntilChanged, filter, catchError, switchMap, take, tap, debounceTime, mapTo, takeUntil, delay, retryWhen, shareReplay, finalize } from 'rxjs/operators';
9
9
  import * as i1 from '@angular/common/http';
10
- import { HttpParams, HttpClient, HttpClientModule, HttpClientXsrfModule, HttpContextToken, HttpContext } from '@angular/common/http';
10
+ import { HttpParams, HttpClient, HttpClientModule, HttpClientXsrfModule, HttpContextToken, HttpHeaders, HttpContext } from '@angular/common/http';
11
11
  import compare from 'just-compare';
12
12
  import * as i1$2 from '@angular/forms';
13
13
  import { FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
@@ -90,7 +90,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
90
90
  * Abstract service for Authentication.
91
91
  */
92
92
  class AuthService {
93
- constructor() { }
94
93
  warningMessage() {
95
94
  console.error('You should add @abp/ng-oauth packages or create your own auth packages.');
96
95
  }
@@ -115,6 +114,10 @@ class AuthService {
115
114
  this.warningMessage();
116
115
  return false;
117
116
  }
117
+ loginUsingGrant(grantType, parameters, headers) {
118
+ console.log({ grantType, parameters, headers });
119
+ return Promise.reject(new Error('not implemented'));
120
+ }
118
121
  }
119
122
  AuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
120
123
  AuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AuthService, providedIn: 'root' });
@@ -123,7 +126,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
123
126
  args: [{
124
127
  providedIn: 'root',
125
128
  }]
126
- }], ctorParameters: function () { return []; } });
129
+ }] });
127
130
 
128
131
  const LOCALIZATIONS = new InjectionToken('LOCALIZATIONS');
129
132
  function localizationContributor(localizations) {
@@ -249,6 +252,9 @@ function isNode(obj) {
249
252
  }
250
253
  function isObjectAndNotArrayNotNode(obj) {
251
254
  return isObjectAndNotArray(obj) && !isNode(obj);
255
+ }
256
+ function checkHasProp(object, key) {
257
+ return Object.prototype.hasOwnProperty.call(object, key);
252
258
  }
253
259
 
254
260
  function deepMerge(target, source) {
@@ -307,6 +313,7 @@ class InternalStore {
307
313
  this.update$.next(patchedState);
308
314
  }
309
315
  deepPatch(state) {
316
+ // TODO: Strict improve deepMerge
310
317
  this.state$.next(deepMerge(this.state, state));
311
318
  this.update$.next(state);
312
319
  }
@@ -319,7 +326,7 @@ class InternalStore {
319
326
  }
320
327
  }
321
328
 
322
- const mapToApiUrl = (key) => (apis) => (apis[key] || apis.default).url || apis.default.url;
329
+ const mapToApiUrl = (key) => (apis) => ((key && apis[key]) || apis.default).url || apis.default.url;
323
330
  const mapToIssuer = (issuer) => {
324
331
  if (!issuer) {
325
332
  return issuer;
@@ -340,7 +347,7 @@ class EnvironmentService {
340
347
  return this.store.state;
341
348
  }
342
349
  getApiUrl(key) {
343
- return mapToApiUrl(key)(this.store.state.apis);
350
+ return mapToApiUrl(key)(this.store.state?.apis);
344
351
  }
345
352
  getApiUrl$(key) {
346
353
  return this.store.sliceState(state => state.apis).pipe(map(mapToApiUrl(key)));
@@ -349,11 +356,11 @@ class EnvironmentService {
349
356
  this.store.set(environment);
350
357
  }
351
358
  getIssuer() {
352
- const issuer = this.store.state.oAuthConfig.issuer;
359
+ const issuer = this.store.state?.oAuthConfig?.issuer;
353
360
  return mapToIssuer(issuer);
354
361
  }
355
362
  getIssuer$() {
356
- return this.store.sliceState(state => state.oAuthConfig.issuer).pipe(map(mapToIssuer));
363
+ return this.store.sliceState(state => state?.oAuthConfig?.issuer).pipe(map(mapToIssuer));
357
364
  }
358
365
  }
359
366
  EnvironmentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: EnvironmentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -420,8 +427,7 @@ class RestService {
420
427
  .pipe(catchError(err => (skipHandleError ? throwError(err) : this.handleError(err))));
421
428
  }
422
429
  getParams(params, encoder) {
423
- const filteredParams = Object.keys(params).reduce((acc, key) => {
424
- const value = params[key];
430
+ const filteredParams = Object.entries(params).reduce((acc, [key, value]) => {
425
431
  if (isUndefinedOrEmptyString(value))
426
432
  return acc;
427
433
  if (value === null && !this.options.sendNullsAsQueryParam)
@@ -512,6 +518,9 @@ class ConfigStateService {
512
518
  .subscribe(res => this.store.set(res));
513
519
  }
514
520
  getLocalizationAndCombineWithAppState(appState) {
521
+ if (!appState.localization.currentCulture.cultureName) {
522
+ throw new Error('culture name should defined');
523
+ }
515
524
  return this.getlocalizationResource(appState.localization.currentCulture.cultureName).pipe(map(result => ({ ...appState, localization: { ...appState.localization, ...result } })));
516
525
  }
517
526
  getlocalizationResource(cultureName) {
@@ -654,18 +663,49 @@ function splitKeys(keys) {
654
663
  return keys;
655
664
  }
656
665
 
666
+ class AbpLocalStorageService {
667
+ constructor() { }
668
+ get length() {
669
+ return localStorage.length;
670
+ }
671
+ clear() {
672
+ localStorage.clear();
673
+ }
674
+ getItem(key) {
675
+ return localStorage.getItem(key);
676
+ }
677
+ key(index) {
678
+ return localStorage.key(index);
679
+ }
680
+ removeItem(key) {
681
+ localStorage.removeItem(key);
682
+ }
683
+ setItem(key, value) {
684
+ localStorage.setItem(key, value);
685
+ }
686
+ }
687
+ AbpLocalStorageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpLocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
688
+ AbpLocalStorageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpLocalStorageService, providedIn: 'root' });
689
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpLocalStorageService, decorators: [{
690
+ type: Injectable,
691
+ args: [{
692
+ providedIn: 'root',
693
+ }]
694
+ }], ctorParameters: function () { return []; } });
695
+
657
696
  class SessionStateService {
658
- constructor(configState) {
697
+ constructor(configState, localStorageService) {
659
698
  this.configState = configState;
699
+ this.localStorageService = localStorageService;
660
700
  this.store = new InternalStore({});
661
701
  this.updateLocalStorage = () => {
662
- localStorage.setItem('abpSession', JSON.stringify(this.store.state));
702
+ this.localStorageService.setItem('abpSession', JSON.stringify(this.store.state));
663
703
  };
664
704
  this.init();
665
705
  this.setInitialLanguage();
666
706
  }
667
707
  init() {
668
- const session = localStorage.getItem('abpSession');
708
+ const session = this.localStorageService.getItem('abpSession');
669
709
  if (session) {
670
710
  this.store.set(JSON.parse(session));
671
711
  }
@@ -715,14 +755,14 @@ class SessionStateService {
715
755
  document.documentElement.setAttribute('lang', language);
716
756
  }
717
757
  }
718
- SessionStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SessionStateService, deps: [{ token: ConfigStateService }], target: i0.ɵɵFactoryTarget.Injectable });
758
+ SessionStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SessionStateService, deps: [{ token: ConfigStateService }, { token: AbpLocalStorageService }], target: i0.ɵɵFactoryTarget.Injectable });
719
759
  SessionStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SessionStateService, providedIn: 'root' });
720
760
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SessionStateService, decorators: [{
721
761
  type: Injectable,
722
762
  args: [{
723
763
  providedIn: 'root',
724
764
  }]
725
- }], ctorParameters: function () { return [{ type: ConfigStateService }]; } });
765
+ }], ctorParameters: function () { return [{ type: ConfigStateService }, { type: AbpLocalStorageService }]; } });
726
766
 
727
767
  class LocalizationService {
728
768
  constructor(sessionState, injector, otherInstance, configState) {
@@ -772,13 +812,13 @@ class LocalizationService {
772
812
  Object.entries(remote).forEach(entry => {
773
813
  const resourceName = entry[0];
774
814
  const remoteTexts = entry[1];
775
- let resource = local.get(resourceName) || {};
815
+ let resource = local?.get(resourceName) || {};
776
816
  resource = { ...resource, ...remoteTexts };
777
- local.set(resourceName, resource);
817
+ local?.set(resourceName, resource);
778
818
  });
779
819
  }
780
820
  return local;
781
- }))
821
+ }), filter(Boolean))
782
822
  .subscribe(val => this.localizations$.next(val));
783
823
  }
784
824
  addLocalization(localizations) {
@@ -799,7 +839,7 @@ class LocalizationService {
799
839
  listenToSetLanguage() {
800
840
  this.sessionState
801
841
  .onLanguageChange$()
802
- .pipe(filter(lang => this.configState.getDeep('localization.currentCulture.cultureName') !== lang), switchMap(lang => this.configState.refreshAppState().pipe(map(() => lang))), switchMap(lang => from(this.registerLocale(lang).then(() => lang))))
842
+ .pipe(filter(lang => this.configState.getDeep('localization.currentCulture.cultureName') !== lang), switchMap(lang => this.configState.refreshAppState().pipe(map(() => lang))), filter(Boolean), switchMap(lang => from(this.registerLocale(lang).then(() => lang))))
803
843
  .subscribe(lang => this._languageChange$.next(lang));
804
844
  }
805
845
  registerLocale(locale) {
@@ -851,14 +891,14 @@ class LocalizationService {
851
891
  getLocalization(state, key, ...interpolateParams) {
852
892
  if (!key)
853
893
  key = '';
854
- let defaultValue;
894
+ let defaultValue = '';
855
895
  if (typeof key !== 'string') {
856
896
  defaultValue = key.defaultValue;
857
897
  key = key.key;
858
898
  }
859
899
  const keys = key.split('::');
860
900
  const warn = (message) => {
861
- if (isDevMode)
901
+ if (isDevMode())
862
902
  console.warn(message);
863
903
  };
864
904
  if (keys.length < 2) {
@@ -1263,7 +1303,7 @@ class AbstractNavTreeService extends AbstractTreeService {
1263
1303
  }
1264
1304
  hasInvisibleChild(identifier) {
1265
1305
  const node = this.find(item => item[this.id] === identifier);
1266
- return node?.children?.some(child => child.invisible);
1306
+ return node?.children?.some(child => child.invisible) || false;
1267
1307
  }
1268
1308
  /* istanbul ignore next */
1269
1309
  ngOnDestroy() {
@@ -1301,7 +1341,9 @@ class SubscriptionService {
1301
1341
  }
1302
1342
  closeOne(subscription) {
1303
1343
  this.removeOne(subscription);
1304
- subscription.unsubscribe();
1344
+ if (subscription) {
1345
+ subscription.unsubscribe();
1346
+ }
1305
1347
  }
1306
1348
  ngOnDestroy() {
1307
1349
  this.subscription.unsubscribe();
@@ -1336,7 +1378,7 @@ class DynamicLayoutComponent {
1336
1378
  ]);
1337
1379
  this.isLayoutVisible = true;
1338
1380
  if (dynamicLayoutComponent) {
1339
- if (isDevMode)
1381
+ if (isDevMode())
1340
1382
  console.warn('DynamicLayoutComponent must be used only in AppComponent.');
1341
1383
  return;
1342
1384
  }
@@ -1368,8 +1410,10 @@ class DynamicLayoutComponent {
1368
1410
  if (this.layoutKey === expectedLayout)
1369
1411
  return;
1370
1412
  const key = this.layouts.get(expectedLayout);
1371
- this.layout = this.getComponent(key)?.component;
1372
- this.layoutKey = expectedLayout;
1413
+ if (key) {
1414
+ this.layout = this.getComponent(key)?.component;
1415
+ this.layoutKey = expectedLayout;
1416
+ }
1373
1417
  if (!this.layout) {
1374
1418
  this.showLayoutNotFoundError(expectedLayout);
1375
1419
  }
@@ -1875,16 +1919,20 @@ class ForDirective {
1875
1919
  const rw = [];
1876
1920
  changes.forEachOperation((record, previousIndex, currentIndex) => {
1877
1921
  if (record.previousIndex == null) {
1878
- const view = this.vcRef.createEmbeddedView(this.tempRef, new AbpForContext(null, -1, -1, this.items), currentIndex);
1922
+ const view = this.vcRef.createEmbeddedView(this.tempRef, new AbpForContext(null, -1, -1, this.items), currentIndex || 0);
1879
1923
  rw.push(new RecordView(record, view));
1880
1924
  }
1881
- else if (currentIndex == null) {
1925
+ else if (currentIndex == null && previousIndex !== null) {
1882
1926
  this.vcRef.remove(previousIndex);
1883
1927
  }
1884
1928
  else {
1885
- const view = this.vcRef.get(previousIndex);
1886
- this.vcRef.move(view, currentIndex);
1887
- rw.push(new RecordView(record, view));
1929
+ if (previousIndex !== null) {
1930
+ const view = this.vcRef.get(previousIndex);
1931
+ if (view && currentIndex !== null) {
1932
+ this.vcRef.move(view, currentIndex);
1933
+ rw.push(new RecordView(record, view));
1934
+ }
1935
+ }
1888
1936
  }
1889
1937
  });
1890
1938
  for (let i = 0, l = rw.length; i < l; i++) {
@@ -1899,8 +1947,10 @@ class ForDirective {
1899
1947
  viewRef.context.list = this.items;
1900
1948
  }
1901
1949
  changes.forEachIdentityChange((record) => {
1902
- const viewRef = this.vcRef.get(record.currentIndex);
1903
- viewRef.context.$implicit = record.item;
1950
+ if (record.currentIndex !== null) {
1951
+ const viewRef = this.vcRef.get(record.currentIndex);
1952
+ viewRef.context.$implicit = record.item;
1953
+ }
1904
1954
  });
1905
1955
  }
1906
1956
  projectItems(items) {
@@ -1927,8 +1977,9 @@ class ForDirective {
1927
1977
  }
1928
1978
  }
1929
1979
  sortItems(items) {
1930
- if (this.orderBy) {
1931
- items.sort((a, b) => a[this.orderBy] > b[this.orderBy] ? 1 : a[this.orderBy] < b[this.orderBy] ? -1 : 0);
1980
+ const orderBy = this.orderBy;
1981
+ if (orderBy) {
1982
+ items.sort((a, b) => (a[orderBy] > b[orderBy] ? 1 : a[orderBy] < b[orderBy] ? -1 : 0));
1932
1983
  }
1933
1984
  else {
1934
1985
  items.sort();
@@ -1939,10 +1990,11 @@ class ForDirective {
1939
1990
  if (!Array.isArray(items))
1940
1991
  return;
1941
1992
  const compareFn = this.compareFn;
1942
- if (typeof this.filterBy !== 'undefined' &&
1993
+ const filterBy = this.filterBy;
1994
+ if (typeof filterBy !== 'undefined' &&
1943
1995
  typeof this.filterVal !== 'undefined' &&
1944
1996
  this.filterVal !== '') {
1945
- items = items.filter(item => compareFn(item[this.filterBy], this.filterVal));
1997
+ items = items.filter(item => compareFn(item[filterBy], this.filterVal));
1946
1998
  }
1947
1999
  switch (this.orderDir) {
1948
2000
  case 'ASC':
@@ -2013,7 +2065,7 @@ class FormSubmitDirective {
2013
2065
  }
2014
2066
  this.executedNgSubmit = true;
2015
2067
  });
2016
- const keyup$ = fromEvent(this.host.nativeElement, 'keyup').pipe(debounceTime(this.debounce), filter(event => !(event.target instanceof HTMLTextAreaElement)), filter((event) => event && event.key === 'Enter'));
2068
+ const keyup$ = fromEvent(this.host.nativeElement, 'keyup').pipe(debounceTime(this.debounce), filter(event => !(event.target instanceof HTMLTextAreaElement)), filter(event => event && event.key === 'Enter'));
2017
2069
  this.subscription.addOne(keyup$, () => {
2018
2070
  if (!this.executedNgSubmit) {
2019
2071
  this.host.nativeElement.dispatchEvent(new Event('submit', { bubbles: true, cancelable: true }));
@@ -2237,11 +2289,15 @@ class ReplaceableTemplateDirective {
2237
2289
  [key]: {
2238
2290
  enumerable: true,
2239
2291
  configurable: true,
2240
- get: () => this.data.inputs[key]?.value,
2241
- ...(this.data.inputs[key]?.twoWay && {
2292
+ get: () => this.data.inputs?.[key]?.value,
2293
+ ...(this.data.inputs?.[key]?.twoWay && {
2242
2294
  set: (newValue) => {
2243
- this.data.inputs[key].value = newValue;
2244
- this.data.outputs[`${key}Change`](newValue);
2295
+ if (this.data.inputs?.[key]) {
2296
+ this.data.inputs[key].value = newValue;
2297
+ }
2298
+ if (this.data.outputs?.[`${key}Change`]) {
2299
+ this.data.outputs[`${key}Change`](newValue);
2300
+ }
2245
2301
  },
2246
2302
  }),
2247
2303
  },
@@ -2276,7 +2332,7 @@ class StopPropagationDirective {
2276
2332
  this.stopPropEvent = new EventEmitter();
2277
2333
  }
2278
2334
  ngOnInit() {
2279
- this.subscription.addOne(fromEvent(this.el.nativeElement, 'click'), (event) => {
2335
+ this.subscription.addOne(fromEvent(this.el.nativeElement, 'click'), event => {
2280
2336
  event.stopPropagation();
2281
2337
  this.stopPropEvent.emit(event);
2282
2338
  });
@@ -2304,14 +2360,16 @@ class RoutesHandler {
2304
2360
  }
2305
2361
  addRoutes() {
2306
2362
  this.router?.config?.forEach(({ path = '', data }) => {
2307
- if (!data?.routes)
2308
- return;
2309
- if (Array.isArray(data.routes)) {
2310
- this.routes.add(data.routes);
2363
+ const routes = data?.routes;
2364
+ if (!routes)
2311
2365
  return;
2366
+ if (Array.isArray(routes)) {
2367
+ this.routes.add(routes);
2368
+ }
2369
+ else {
2370
+ const routesFlatten = flatRoutes([{ path, ...routes }], { path: '' });
2371
+ this.routes.add(routesFlatten);
2312
2372
  }
2313
- const routes = flatRoutes([{ path, ...data.routes }], { path: '' });
2314
- this.routes.add(routes);
2315
2373
  });
2316
2374
  }
2317
2375
  }
@@ -2484,7 +2542,10 @@ class LocaleId extends String {
2484
2542
  }
2485
2543
  toString() {
2486
2544
  const { currentLang } = this.localizationService;
2487
- return differentLocales[currentLang] || currentLang;
2545
+ if (checkHasProp(differentLocales, currentLang)) {
2546
+ return differentLocales[currentLang];
2547
+ }
2548
+ return currentLang;
2488
2549
  }
2489
2550
  valueOf() {
2490
2551
  return this.toString();
@@ -2519,7 +2580,7 @@ function getRemoteEnv(injector, environment) {
2519
2580
  httpErrorReporter.reportError(err);
2520
2581
  return of(null);
2521
2582
  }), // TODO: Consider get handle function from a provider
2522
- tap(env => environmentService.setState(mergeEnvironments(environment, env, remoteEnv))))
2583
+ tap(env => environmentService.setState(mergeEnvironments(environment, env || {}, remoteEnv))))
2523
2584
  .toPromise();
2524
2585
  }
2525
2586
  function mergeEnvironments(local, remote, config) {
@@ -2655,13 +2716,16 @@ function replaceTenantNameWithinEnvironment(injector, tenancyName, placeholder =
2655
2716
  if (environment.application.baseUrl) {
2656
2717
  environment.application.baseUrl = environment.application.baseUrl.replace(placeholder, tenancyName);
2657
2718
  }
2658
- if (environment.oAuthConfig.redirectUri) {
2719
+ if (environment.oAuthConfig?.redirectUri) {
2659
2720
  environment.oAuthConfig.redirectUri = environment.oAuthConfig.redirectUri.replace(placeholder, tenancyName);
2660
2721
  }
2661
- environment.oAuthConfig.issuer = environment.oAuthConfig.issuer.replace(placeholder, tenancyName);
2722
+ if (!environment.oAuthConfig) {
2723
+ environment.oAuthConfig = {};
2724
+ }
2725
+ environment.oAuthConfig.issuer = (environment.oAuthConfig.issuer || '').replace(placeholder, tenancyName);
2662
2726
  Object.keys(environment.apis).forEach(api => {
2663
2727
  Object.keys(environment.apis[api]).forEach(key => {
2664
- environment.apis[api][key] = environment.apis[api][key].replace(placeholder, tenancyName);
2728
+ environment.apis[api][key] = (environment.apis[api][key] || '').replace(placeholder, tenancyName);
2665
2729
  });
2666
2730
  });
2667
2731
  return environmentService.setState(environment);
@@ -2737,11 +2801,11 @@ function getShortDateFormat(configStateService) {
2737
2801
  }
2738
2802
  function getShortTimeFormat(configStateService) {
2739
2803
  const dateTimeFormat = configStateService.getDeep('localization.currentCulture.dateTimeFormat');
2740
- return dateTimeFormat.shortTimePattern.replace('tt', 'a');
2804
+ return dateTimeFormat?.shortTimePattern?.replace('tt', 'a');
2741
2805
  }
2742
2806
  function getShortDateShortTimeFormat(configStateService) {
2743
2807
  const dateTimeFormat = configStateService.getDeep('localization.currentCulture.dateTimeFormat');
2744
- return `${dateTimeFormat.shortDatePattern} ${dateTimeFormat.shortTimePattern.replace('tt', 'a')}`;
2808
+ return `${dateTimeFormat.shortDatePattern} ${dateTimeFormat?.shortTimePattern?.replace('tt', 'a')}`;
2745
2809
  }
2746
2810
 
2747
2811
  class LazyModuleFactory extends NgModuleFactory {
@@ -2754,7 +2818,7 @@ class LazyModuleFactory extends NgModuleFactory {
2754
2818
  }
2755
2819
  create(parentInjector) {
2756
2820
  const injector = Injector.create({
2757
- parent: parentInjector,
2821
+ ...(parentInjector && { parent: parentInjector }),
2758
2822
  providers: this.moduleWithProviders.providers,
2759
2823
  });
2760
2824
  const compiler = injector.get(Compiler);
@@ -2856,7 +2920,9 @@ class CrossOriginStrategy {
2856
2920
  setCrossOrigin(element) {
2857
2921
  if (this.integrity)
2858
2922
  element.setAttribute('integrity', this.integrity);
2859
- element.setAttribute('crossorigin', this.crossorigin);
2923
+ if (this.crossorigin) {
2924
+ element.setAttribute('crossorigin', this.crossorigin);
2925
+ }
2860
2926
  }
2861
2927
  }
2862
2928
  class NoCrossOriginStrategy extends CrossOriginStrategy {
@@ -2925,7 +2991,7 @@ function fromLazyLoad(element, domStrategy = DOM_STRATEGY.AppendToHead(), crossO
2925
2991
  function createErrorHandler(observer, element) {
2926
2992
  return function (event) {
2927
2993
  clearCallbacks(element);
2928
- element.parentNode.removeChild(element);
2994
+ element.parentNode?.removeChild(element);
2929
2995
  observer.error(event);
2930
2996
  };
2931
2997
  }
@@ -2992,9 +3058,11 @@ class DomInsertionService {
2992
3058
  return element;
2993
3059
  }
2994
3060
  removeContent(element) {
2995
- const hash = generateHash(element.textContent);
2996
- this.inserted.delete(hash);
2997
- element.parentNode.removeChild(element);
3061
+ if (element.textContent) {
3062
+ const hash = generateHash(element.textContent);
3063
+ this.inserted.delete(hash);
3064
+ element.parentNode?.removeChild(element);
3065
+ }
2998
3066
  }
2999
3067
  has(content) {
3000
3068
  const hash = generateHash(content);
@@ -3058,6 +3126,9 @@ class HttpWaitService {
3058
3126
  this.store.patch({ filteredRequests });
3059
3127
  }
3060
3128
  applyFilter(requests) {
3129
+ if (!requests) {
3130
+ return [];
3131
+ }
3061
3132
  const { filteredRequests } = this.store.state;
3062
3133
  return requests.filter(({ method, url }) => !filteredRequests.find(filteredRequest => this.isSameRequest(filteredRequest, { method, endpoint: getPathName(url) })));
3063
3134
  }
@@ -3086,7 +3157,7 @@ class ResourceWaitService {
3086
3157
  return this.store.sliceState(({ resources }) => !!resources.size);
3087
3158
  }
3088
3159
  updateLoading$() {
3089
- return this.store.sliceUpdate(({ resources }) => !!resources.size);
3160
+ return this.store.sliceUpdate(({ resources }) => !!resources?.size);
3090
3161
  }
3091
3162
  clearLoading() {
3092
3163
  this.store.patch({ resources: new Set() });
@@ -3120,7 +3191,9 @@ class LazyLoadService {
3120
3191
  if (this.loaded.has(strategy.path))
3121
3192
  return of(new CustomEvent('load'));
3122
3193
  this.resourceWaitService.addResource(strategy.path);
3123
- return strategy.createStream().pipe(retryWhen(error$ => concat(error$.pipe(delay(retryDelay), take(retryTimes)), throwError(new CustomEvent('error')))), tap(() => {
3194
+ const delayOperator = retryDelay ? pipe(delay(retryDelay)) : pipe();
3195
+ const takeOp = retryTimes ? pipe(take(retryTimes)) : pipe();
3196
+ return strategy.createStream().pipe(retryWhen(error$ => concat(error$.pipe(delayOperator, takeOp), throwError(() => new CustomEvent('error')))), tap(() => {
3124
3197
  this.loaded.set(strategy.path, strategy.element);
3125
3198
  this.resourceWaitService.deleteResource(strategy.path);
3126
3199
  }), delay(100), shareReplay({ bufferSize: 1, refCount: true }));
@@ -3129,7 +3202,7 @@ class LazyLoadService {
3129
3202
  const element = this.loaded.get(path);
3130
3203
  if (!element)
3131
3204
  return false;
3132
- element.parentNode.removeChild(element);
3205
+ element.parentNode?.removeChild(element);
3133
3206
  this.loaded.delete(path);
3134
3207
  return true;
3135
3208
  }
@@ -3659,7 +3732,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3659
3732
  class ListResultDto {
3660
3733
  constructor(initialValues = {}) {
3661
3734
  for (const key in initialValues) {
3662
- if (Object.prototype.hasOwnProperty.call(initialValues, key)) {
3735
+ if (checkHasProp(initialValues, key)) {
3663
3736
  this[key] = initialValues[key];
3664
3737
  }
3665
3738
  }
@@ -3674,8 +3747,7 @@ class LimitedResultRequestDto {
3674
3747
  constructor(initialValues = {}) {
3675
3748
  this.maxResultCount = 10;
3676
3749
  for (const key in initialValues) {
3677
- if (Object.prototype.hasOwnProperty.call(initialValues, key) &&
3678
- initialValues[key] !== undefined) {
3750
+ if (checkHasProp(initialValues, key) && initialValues[key] !== undefined) {
3679
3751
  this[key] = initialValues[key];
3680
3752
  }
3681
3753
  }
@@ -3694,7 +3766,7 @@ class PagedAndSortedResultRequestDto extends PagedResultRequestDto {
3694
3766
  class EntityDto {
3695
3767
  constructor(initialValues = {}) {
3696
3768
  for (const key in initialValues) {
3697
- if (Object.prototype.hasOwnProperty.call(initialValues, key)) {
3769
+ if (checkHasProp(initialValues, key)) {
3698
3770
  this[key] = initialValues[key];
3699
3771
  }
3700
3772
  }
@@ -3733,7 +3805,7 @@ class FullAuditedEntityWithUserDto extends FullAuditedEntityDto {
3733
3805
  class ExtensibleObject {
3734
3806
  constructor(initialValues = {}) {
3735
3807
  for (const key in initialValues) {
3736
- if (Object.prototype.hasOwnProperty.call(initialValues, key)) {
3808
+ if (checkHasProp(initialValues, key)) {
3737
3809
  this[key] = initialValues[key];
3738
3810
  }
3739
3811
  }
@@ -3847,7 +3919,9 @@ class LooseContentSecurityStrategy extends ContentSecurityStrategy {
3847
3919
  super(nonce);
3848
3920
  }
3849
3921
  applyCSP(element) {
3850
- element.setAttribute('nonce', this.nonce);
3922
+ if (this.nonce) {
3923
+ element.setAttribute('nonce', this.nonce);
3924
+ }
3851
3925
  }
3852
3926
  }
3853
3927
  class NoContentSecurityStrategy extends ContentSecurityStrategy {
@@ -3875,7 +3949,11 @@ class ContentStrategy {
3875
3949
  insertElement() {
3876
3950
  const element = this.createElement();
3877
3951
  if (this.options && Object.keys(this.options).length > 0) {
3878
- Object.keys(this.options).forEach(key => (element[key] = this.options[key]));
3952
+ Object.keys(this.options).forEach(key => {
3953
+ if (this.options[key]) {
3954
+ element[key] = this.options[key];
3955
+ }
3956
+ });
3879
3957
  }
3880
3958
  this.contentSecurityStrategy.applyCSP(element);
3881
3959
  this.domStrategy.insertElement(element);
@@ -4081,6 +4159,9 @@ const NAVIGATE_TO_MANAGE_PROFILE = new InjectionToken('NAVIGATE_TO_MANAGE_PROFIL
4081
4159
 
4082
4160
  const PIPE_TO_LOGIN_FN_KEY = new InjectionToken('PIPE_TO_LOGIN_FN_KEY');
4083
4161
 
4162
+ /**
4163
+ * @deprecated The token should not be used anymore.
4164
+ */
4084
4165
  const SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY = new InjectionToken('SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY');
4085
4166
 
4086
4167
  const IS_EXTERNAL_REQUEST = new HttpContextToken(() => false);
@@ -4182,7 +4263,7 @@ function isValidUrl(value) {
4182
4263
  }
4183
4264
 
4184
4265
  const onlyLetterAndNumberRegex = /^[a-zA-Z0-9]+$/;
4185
- function validateUsername({ pattern } = { pattern: onlyLetterAndNumberRegex }) {
4266
+ function validateUsername({ pattern = /.*/ } = { pattern: onlyLetterAndNumberRegex }) {
4186
4267
  return (control) => {
4187
4268
  const isValid = isValidUserName(control.value, pattern);
4188
4269
  return isValid ? null : { usernamePattern: { actualValue: control.value } };
@@ -4210,7 +4291,7 @@ class ApiInterceptor {
4210
4291
  this.httpWaitService = httpWaitService;
4211
4292
  }
4212
4293
  getAdditionalHeaders(existingHeaders) {
4213
- return existingHeaders;
4294
+ return existingHeaders || new HttpHeaders();
4214
4295
  }
4215
4296
  intercept(request, next) {
4216
4297
  this.httpWaitService.addRequest(request);
@@ -4236,7 +4317,7 @@ class ExternalHttpClient extends HttpClient {
4236
4317
  request(first, url, options = {}) {
4237
4318
  if (typeof first === 'string') {
4238
4319
  __classPrivateFieldGet(this, _ExternalHttpClient_instances, "m", _ExternalHttpClient_setPlaceholderContext).call(this, options);
4239
- return super.request(first, url, options);
4320
+ return super.request(first, url || '', options);
4240
4321
  }
4241
4322
  __classPrivateFieldGet(this, _ExternalHttpClient_instances, "m", _ExternalHttpClient_setPlaceholderContext).call(this, first);
4242
4323
  return super.request(first);
@@ -4261,5 +4342,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
4261
4342
  * Generated bundle index. Do not edit.
4262
4343
  */
4263
4344
 
4264
- export { APP_INIT_ERROR_HANDLERS, AbpApiDefinitionService, AbpApplicationConfigurationService, AbpApplicationLocalizationService, AbpTenantService, AbpValidators, AbstractNavTreeService, AbstractNgModelComponent, AbstractTreeService, ApiInterceptor, AuditedEntityDto, AuditedEntityWithUserDto, AuthGuard, AuthService, AutofocusDirective, BaseCoreModule, BaseTreeNode, CHECK_AUTHENTICATION_STATE_FN_KEY, CONTAINER_STRATEGY, CONTENT_SECURITY_STRATEGY, CONTENT_STRATEGY, CONTEXT_STRATEGY, COOKIE_LANGUAGE_KEY, CORE_OPTIONS, CROSS_ORIGIN_STRATEGY, ClearContainerStrategy, ComponentContextStrategy, ComponentProjectionStrategy, ConfigStateService, ContainerStrategy, ContentProjectionService, ContentSecurityStrategy, ContentStrategy, ContextStrategy, CoreModule, CreationAuditedEntityDto, CreationAuditedEntityWithUserDto, CrossOriginStrategy, DOM_STRATEGY, DefaultQueueManager, DomInsertionService, DomStrategy, DynamicLayoutComponent, EntityDto, EnvironmentService, ExtensibleAuditedEntityDto, ExtensibleAuditedEntityWithUserDto, ExtensibleCreationAuditedEntityDto, ExtensibleCreationAuditedEntityWithUserDto, ExtensibleEntityDto, ExtensibleFullAuditedEntityDto, ExtensibleFullAuditedEntityWithUserDto, ExtensibleObject, ExternalHttpClient, ForDirective, FormSubmitDirective, FullAuditedEntityDto, FullAuditedEntityWithUserDto, HttpErrorReporterService, HttpWaitService, INCUDE_LOCALIZATION_RESOURCES_TOKEN, INJECTOR_PIPE_DATA_TOKEN, IS_EXTERNAL_REQUEST, InitDirective, InputEventDebounceDirective, InsertIntoContainerStrategy, InternalStore, LIST_QUERY_DEBOUNCE_TIME, LOADER_DELAY, LOADING_STRATEGY, LOCALIZATIONS, LazyLoadService, LazyModuleFactory, LimitedResultRequestDto, ListResultDto, ListService, LoadingStrategy, LocalizationModule, LocalizationPipe, LocalizationService, LooseContentSecurityStrategy, MultiTenancyService, NAVIGATE_TO_MANAGE_PROFILE, NavigationEvent, NoContentSecurityStrategy, NoContextStrategy, NoCrossOriginStrategy, index as ObjectExtending, PIPE_TO_LOGIN_FN_KEY, PROJECTION_STRATEGY, PagedAndSortedResultRequestDto, PagedResultDto, PagedResultRequestDto, PermissionDirective, PermissionGuard, PermissionService, ProjectionStrategy, QUEUE_MANAGER, ReplaceableComponentsService, ReplaceableRouteContainerComponent, ReplaceableTemplateDirective, ResourceWaitService, RestService, RootComponentProjectionStrategy, RootCoreModule, RouterEvents, RouterOutletComponent, RouterWaitService, RoutesService, SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY, ScriptContentStrategy, ScriptLoadingStrategy, SessionStateService, ShortDatePipe, ShortDateTimePipe, ShortTimePipe, SortPipe, StopPropagationDirective, StyleContentStrategy, StyleLoadingStrategy, SubscriptionService, TENANT_KEY, TemplateContextStrategy, TemplateProjectionStrategy, ToInjectorPipe, TrackByService, WebHttpUrlEncodingCodec, coreOptionsFactory, createLocalizationPipeKeyGenerator, createLocalizer, createLocalizerWithFallback, createMapFromList, createTokenParser, createTreeFromList, createTreeNodeFilterCreator, deepMerge, differentLocales, downloadBlob, escapeHtmlChars, exists, featuresFactory, findRoute, fromLazyLoad, generateHash, generatePassword, getInitialData, getLocaleDirection, getPathName, getRemoteEnv, getRoutePath, getShortDateFormat, getShortDateShortTimeFormat, getShortTimeFormat, interpolate, isArray, isNode, isNullOrEmpty, isNullOrUndefined, isNumber, isObject, isObjectAndNotArray, isObjectAndNotArrayNotNode, isUndefinedOrEmptyString, localeInitializer, localizationContributor, localizations$, mapEnumToOptions, noop, parseTenantFromUrl, pushValueTo, reloadRoute, trackBy, trackByDeep, uuid, validateCreditCard, validateMinAge, validateRange, validateRequired, validateStringLength, validateUrl };
4345
+ export { APP_INIT_ERROR_HANDLERS, AbpApiDefinitionService, AbpApplicationConfigurationService, AbpApplicationLocalizationService, AbpLocalStorageService, AbpTenantService, AbpValidators, AbstractNavTreeService, AbstractNgModelComponent, AbstractTreeService, ApiInterceptor, AuditedEntityDto, AuditedEntityWithUserDto, AuthGuard, AuthService, AutofocusDirective, BaseCoreModule, BaseTreeNode, CHECK_AUTHENTICATION_STATE_FN_KEY, CONTAINER_STRATEGY, CONTENT_SECURITY_STRATEGY, CONTENT_STRATEGY, CONTEXT_STRATEGY, COOKIE_LANGUAGE_KEY, CORE_OPTIONS, CROSS_ORIGIN_STRATEGY, ClearContainerStrategy, ComponentContextStrategy, ComponentProjectionStrategy, ConfigStateService, ContainerStrategy, ContentProjectionService, ContentSecurityStrategy, ContentStrategy, ContextStrategy, CoreModule, CreationAuditedEntityDto, CreationAuditedEntityWithUserDto, CrossOriginStrategy, DOM_STRATEGY, DefaultQueueManager, DomInsertionService, DomStrategy, DynamicLayoutComponent, EntityDto, EnvironmentService, ExtensibleAuditedEntityDto, ExtensibleAuditedEntityWithUserDto, ExtensibleCreationAuditedEntityDto, ExtensibleCreationAuditedEntityWithUserDto, ExtensibleEntityDto, ExtensibleFullAuditedEntityDto, ExtensibleFullAuditedEntityWithUserDto, ExtensibleObject, ExternalHttpClient, ForDirective, FormSubmitDirective, FullAuditedEntityDto, FullAuditedEntityWithUserDto, HttpErrorReporterService, HttpWaitService, INCUDE_LOCALIZATION_RESOURCES_TOKEN, INJECTOR_PIPE_DATA_TOKEN, IS_EXTERNAL_REQUEST, InitDirective, InputEventDebounceDirective, InsertIntoContainerStrategy, InternalStore, LIST_QUERY_DEBOUNCE_TIME, LOADER_DELAY, LOADING_STRATEGY, LOCALIZATIONS, LazyLoadService, LazyModuleFactory, LimitedResultRequestDto, ListResultDto, ListService, LoadingStrategy, LocalizationModule, LocalizationPipe, LocalizationService, LooseContentSecurityStrategy, MultiTenancyService, NAVIGATE_TO_MANAGE_PROFILE, NavigationEvent, NoContentSecurityStrategy, NoContextStrategy, NoCrossOriginStrategy, index as ObjectExtending, PIPE_TO_LOGIN_FN_KEY, PROJECTION_STRATEGY, PagedAndSortedResultRequestDto, PagedResultDto, PagedResultRequestDto, PermissionDirective, PermissionGuard, PermissionService, ProjectionStrategy, QUEUE_MANAGER, ReplaceableComponentsService, ReplaceableRouteContainerComponent, ReplaceableTemplateDirective, ResourceWaitService, RestService, RootComponentProjectionStrategy, RootCoreModule, RouterEvents, RouterOutletComponent, RouterWaitService, RoutesService, SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY, ScriptContentStrategy, ScriptLoadingStrategy, SessionStateService, ShortDatePipe, ShortDateTimePipe, ShortTimePipe, SortPipe, StopPropagationDirective, StyleContentStrategy, StyleLoadingStrategy, SubscriptionService, TENANT_KEY, TemplateContextStrategy, TemplateProjectionStrategy, ToInjectorPipe, TrackByService, WebHttpUrlEncodingCodec, checkHasProp, coreOptionsFactory, createLocalizationPipeKeyGenerator, createLocalizer, createLocalizerWithFallback, createMapFromList, createTokenParser, createTreeFromList, createTreeNodeFilterCreator, deepMerge, differentLocales, downloadBlob, escapeHtmlChars, exists, featuresFactory, findRoute, fromLazyLoad, generateHash, generatePassword, getInitialData, getLocaleDirection, getPathName, getRemoteEnv, getRoutePath, getShortDateFormat, getShortDateShortTimeFormat, getShortTimeFormat, interpolate, isArray, isNode, isNullOrEmpty, isNullOrUndefined, isNumber, isObject, isObjectAndNotArray, isObjectAndNotArrayNotNode, isUndefinedOrEmptyString, localeInitializer, localizationContributor, localizations$, mapEnumToOptions, noop, parseTenantFromUrl, pushValueTo, reloadRoute, trackBy, trackByDeep, uuid, validateCreditCard, validateMinAge, validateRange, validateRequired, validateStringLength, validateUrl };
4265
4346
  //# sourceMappingURL=abp-ng.core.mjs.map