@abp/ng.core 7.0.0 → 7.0.2

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 (127) hide show
  1. package/esm2020/lib/abstracts/ng-model.component.mjs +1 -1
  2. package/esm2020/lib/clients/http.client.mjs +34 -0
  3. package/esm2020/lib/clients/index.mjs +2 -0
  4. package/esm2020/lib/components/dynamic-layout.component.mjs +6 -4
  5. package/esm2020/lib/components/replaceable-route-container.component.mjs +1 -1
  6. package/esm2020/lib/core.module.mjs +7 -1
  7. package/esm2020/lib/directives/debounce.directive.mjs +1 -1
  8. package/esm2020/lib/directives/for.directive.mjs +20 -12
  9. package/esm2020/lib/directives/form-submit.directive.mjs +2 -2
  10. package/esm2020/lib/directives/permission.directive.mjs +11 -6
  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/include-localization-resources.provider.mjs +2 -2
  20. package/esm2020/lib/providers/locale.provider.mjs +6 -2
  21. package/esm2020/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.mjs +1 -1
  22. package/esm2020/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.mjs +1 -1
  23. package/esm2020/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.mjs +1 -1
  24. package/esm2020/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-localization.service.mjs +2 -2
  25. package/esm2020/lib/proxy/volo/abp/http/modeling/models.mjs +1 -1
  26. package/esm2020/lib/proxy/volo/abp/localization/models.mjs +1 -1
  27. package/esm2020/lib/services/config-state.service.mjs +4 -1
  28. package/esm2020/lib/services/dom-insertion.service.mjs +6 -4
  29. package/esm2020/lib/services/environment.service.mjs +5 -5
  30. package/esm2020/lib/services/http-wait.service.mjs +4 -1
  31. package/esm2020/lib/services/lazy-load.service.mjs +6 -4
  32. package/esm2020/lib/services/localization.service.mjs +7 -7
  33. package/esm2020/lib/services/multi-tenancy.service.mjs +1 -1
  34. package/esm2020/lib/services/permission.service.mjs +1 -1
  35. package/esm2020/lib/services/replaceable-components.service.mjs +1 -1
  36. package/esm2020/lib/services/resource-wait.service.mjs +2 -2
  37. package/esm2020/lib/services/rest.service.mjs +2 -3
  38. package/esm2020/lib/services/router-events.service.mjs +2 -2
  39. package/esm2020/lib/services/routes.service.mjs +2 -2
  40. package/esm2020/lib/services/session-state.service.mjs +1 -1
  41. package/esm2020/lib/services/subscription.service.mjs +4 -2
  42. package/esm2020/lib/strategies/content-security.strategy.mjs +4 -2
  43. package/esm2020/lib/strategies/content.strategy.mjs +6 -2
  44. package/esm2020/lib/strategies/context.strategy.mjs +1 -1
  45. package/esm2020/lib/strategies/cross-origin.strategy.mjs +4 -2
  46. package/esm2020/lib/strategies/loading.strategy.mjs +1 -1
  47. package/esm2020/lib/tokens/http-context.token.mjs +3 -0
  48. package/esm2020/lib/tokens/include-localization-resources.token.mjs +2 -2
  49. package/esm2020/lib/tokens/index.mjs +3 -1
  50. package/esm2020/lib/tokens/localization.token.mjs +1 -1
  51. package/esm2020/lib/tokens/queue.token.mjs +3 -0
  52. package/esm2020/lib/tokens/set-token-response-to-storage.token.mjs +4 -1
  53. package/esm2020/lib/utils/common-utils.mjs +4 -1
  54. package/esm2020/lib/utils/date-utils.mjs +3 -3
  55. package/esm2020/lib/utils/environment-utils.mjs +2 -2
  56. package/esm2020/lib/utils/factory-utils.mjs +2 -2
  57. package/esm2020/lib/utils/index.mjs +2 -1
  58. package/esm2020/lib/utils/internal-store-utils.mjs +2 -1
  59. package/esm2020/lib/utils/lazy-load-utils.mjs +2 -2
  60. package/esm2020/lib/utils/localization-utils.mjs +1 -1
  61. package/esm2020/lib/utils/multi-tenancy-utils.mjs +7 -4
  62. package/esm2020/lib/utils/object-utils.mjs +1 -1
  63. package/esm2020/lib/utils/queue.mjs +41 -0
  64. package/esm2020/lib/utils/route-utils.mjs +2 -2
  65. package/esm2020/lib/utils/tree-utils.mjs +1 -1
  66. package/esm2020/lib/validators/range.validator.mjs +1 -1
  67. package/esm2020/lib/validators/required.validator.mjs +1 -1
  68. package/esm2020/lib/validators/string-length.validator.mjs +1 -1
  69. package/esm2020/lib/validators/username.validator.mjs +2 -2
  70. package/esm2020/locale/utils/register-locale.mjs +2 -2
  71. package/esm2020/public-api.mjs +2 -1
  72. package/esm2020/testing/lib/services/mock-permission.service.mjs +1 -1
  73. package/esm2020/testing/lib/services/mock-rest.service.mjs +2 -2
  74. package/fesm2015/abp-ng.core-locale.mjs +1 -1
  75. package/fesm2015/abp-ng.core-locale.mjs.map +1 -1
  76. package/fesm2015/abp-ng.core-testing.mjs.map +1 -1
  77. package/fesm2015/abp-ng.core.mjs +213 -77
  78. package/fesm2015/abp-ng.core.mjs.map +1 -1
  79. package/fesm2020/abp-ng.core-locale.mjs +1 -1
  80. package/fesm2020/abp-ng.core-locale.mjs.map +1 -1
  81. package/fesm2020/abp-ng.core-testing.mjs.map +1 -1
  82. package/fesm2020/abp-ng.core.mjs +203 -73
  83. package/fesm2020/abp-ng.core.mjs.map +1 -1
  84. package/lib/abstracts/ng-model.component.d.ts +4 -4
  85. package/lib/clients/http.client.d.ts +11 -0
  86. package/lib/clients/index.d.ts +1 -0
  87. package/lib/components/dynamic-layout.component.d.ts +2 -2
  88. package/lib/components/replaceable-route-container.component.d.ts +1 -1
  89. package/lib/directives/for.directive.d.ts +6 -6
  90. package/lib/directives/form-submit.directive.d.ts +1 -1
  91. package/lib/directives/permission.directive.d.ts +4 -2
  92. package/lib/models/auth.d.ts +4 -1
  93. package/lib/models/dtos.d.ts +11 -11
  94. package/lib/models/environment.d.ts +3 -1
  95. package/lib/models/session.d.ts +1 -1
  96. package/lib/providers/include-localization-resources.provider.d.ts +1 -1
  97. package/lib/proxy/volo/abp/http/modeling/models.d.ts +1 -1
  98. package/lib/proxy/volo/abp/localization/models.d.ts +1 -0
  99. package/lib/services/config-state.service.d.ts +5 -3
  100. package/lib/services/dom-insertion.service.d.ts +1 -1
  101. package/lib/services/environment.service.d.ts +1 -1
  102. package/lib/services/localization.service.d.ts +5 -2
  103. package/lib/services/multi-tenancy.service.d.ts +1 -1
  104. package/lib/services/permission.service.d.ts +2 -2
  105. package/lib/services/replaceable-components.service.d.ts +2 -2
  106. package/lib/services/rest.service.d.ts +1 -1
  107. package/lib/services/router-events.service.d.ts +2 -2
  108. package/lib/services/routes.service.d.ts +3 -1
  109. package/lib/services/session-state.service.d.ts +1 -1
  110. package/lib/services/subscription.service.d.ts +1 -1
  111. package/lib/strategies/cross-origin.strategy.d.ts +2 -2
  112. package/lib/tokens/http-context.token.d.ts +2 -0
  113. package/lib/tokens/include-localization-resources.token.d.ts +1 -1
  114. package/lib/tokens/index.d.ts +2 -0
  115. package/lib/tokens/localization.token.d.ts +2 -2
  116. package/lib/tokens/queue.token.d.ts +3 -0
  117. package/lib/tokens/set-token-response-to-storage.token.d.ts +3 -0
  118. package/lib/utils/common-utils.d.ts +9 -8
  119. package/lib/utils/factory-utils.d.ts +3 -1
  120. package/lib/utils/index.d.ts +1 -0
  121. package/lib/utils/localization-utils.d.ts +1 -1
  122. package/lib/utils/object-utils.d.ts +2 -1
  123. package/lib/utils/queue.d.ts +14 -0
  124. package/lib/utils/route-utils.d.ts +2 -2
  125. package/lib/utils/tree-utils.d.ts +3 -3
  126. package/package.json +3 -3
  127. package/public-api.d.ts +1 -0
@@ -1,17 +1,18 @@
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 } 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';
14
14
  import clone from 'just-clone';
15
+ import { __classPrivateFieldGet } from 'tslib';
15
16
 
16
17
  // Not an abstract class on purpose. Do not change!
17
18
  class AbstractNgModelComponent {
@@ -248,6 +249,9 @@ function isNode(obj) {
248
249
  }
249
250
  function isObjectAndNotArrayNotNode(obj) {
250
251
  return isObjectAndNotArray(obj) && !isNode(obj);
252
+ }
253
+ function checkHasProp(object, key) {
254
+ return Object.prototype.hasOwnProperty.call(object, key);
251
255
  }
252
256
 
253
257
  function deepMerge(target, source) {
@@ -306,6 +310,7 @@ class InternalStore {
306
310
  this.update$.next(patchedState);
307
311
  }
308
312
  deepPatch(state) {
313
+ // TODO: Strict improve deepMerge
309
314
  this.state$.next(deepMerge(this.state, state));
310
315
  this.update$.next(state);
311
316
  }
@@ -318,7 +323,7 @@ class InternalStore {
318
323
  }
319
324
  }
320
325
 
321
- const mapToApiUrl = (key) => (apis) => (apis[key] || apis.default).url || apis.default.url;
326
+ const mapToApiUrl = (key) => (apis) => ((key && apis[key]) || apis.default).url || apis.default.url;
322
327
  const mapToIssuer = (issuer) => {
323
328
  if (!issuer) {
324
329
  return issuer;
@@ -339,7 +344,7 @@ class EnvironmentService {
339
344
  return this.store.state;
340
345
  }
341
346
  getApiUrl(key) {
342
- return mapToApiUrl(key)(this.store.state.apis);
347
+ return mapToApiUrl(key)(this.store.state?.apis);
343
348
  }
344
349
  getApiUrl$(key) {
345
350
  return this.store.sliceState(state => state.apis).pipe(map(mapToApiUrl(key)));
@@ -348,11 +353,11 @@ class EnvironmentService {
348
353
  this.store.set(environment);
349
354
  }
350
355
  getIssuer() {
351
- const issuer = this.store.state.oAuthConfig.issuer;
356
+ const issuer = this.store.state?.oAuthConfig?.issuer;
352
357
  return mapToIssuer(issuer);
353
358
  }
354
359
  getIssuer$() {
355
- return this.store.sliceState(state => state.oAuthConfig.issuer).pipe(map(mapToIssuer));
360
+ return this.store.sliceState(state => state?.oAuthConfig?.issuer).pipe(map(mapToIssuer));
356
361
  }
357
362
  }
358
363
  EnvironmentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: EnvironmentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -419,8 +424,7 @@ class RestService {
419
424
  .pipe(catchError(err => (skipHandleError ? throwError(err) : this.handleError(err))));
420
425
  }
421
426
  getParams(params, encoder) {
422
- const filteredParams = Object.keys(params).reduce((acc, key) => {
423
- const value = params[key];
427
+ const filteredParams = Object.entries(params).reduce((acc, [key, value]) => {
424
428
  if (isUndefinedOrEmptyString(value))
425
429
  return acc;
426
430
  if (value === null && !this.options.sendNullsAsQueryParam)
@@ -511,6 +515,9 @@ class ConfigStateService {
511
515
  .subscribe(res => this.store.set(res));
512
516
  }
513
517
  getLocalizationAndCombineWithAppState(appState) {
518
+ if (!appState.localization.currentCulture.cultureName) {
519
+ throw new Error('culture name should defined');
520
+ }
514
521
  return this.getlocalizationResource(appState.localization.currentCulture.cultureName).pipe(map(result => ({ ...appState, localization: { ...appState.localization, ...result } })));
515
522
  }
516
523
  getlocalizationResource(cultureName) {
@@ -771,13 +778,13 @@ class LocalizationService {
771
778
  Object.entries(remote).forEach(entry => {
772
779
  const resourceName = entry[0];
773
780
  const remoteTexts = entry[1];
774
- let resource = local.get(resourceName) || {};
781
+ let resource = local?.get(resourceName) || {};
775
782
  resource = { ...resource, ...remoteTexts };
776
- local.set(resourceName, resource);
783
+ local?.set(resourceName, resource);
777
784
  });
778
785
  }
779
786
  return local;
780
- }))
787
+ }), filter(Boolean))
781
788
  .subscribe(val => this.localizations$.next(val));
782
789
  }
783
790
  addLocalization(localizations) {
@@ -798,7 +805,7 @@ class LocalizationService {
798
805
  listenToSetLanguage() {
799
806
  this.sessionState
800
807
  .onLanguageChange$()
801
- .pipe(filter(lang => this.configState.getDeep('localization.currentCulture.cultureName') !== lang), switchMap(lang => this.configState.refreshLocalization(lang).pipe(map(() => lang))), switchMap(lang => from(this.registerLocale(lang).then(() => lang))))
808
+ .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))))
802
809
  .subscribe(lang => this._languageChange$.next(lang));
803
810
  }
804
811
  registerLocale(locale) {
@@ -850,14 +857,14 @@ class LocalizationService {
850
857
  getLocalization(state, key, ...interpolateParams) {
851
858
  if (!key)
852
859
  key = '';
853
- let defaultValue;
860
+ let defaultValue = '';
854
861
  if (typeof key !== 'string') {
855
862
  defaultValue = key.defaultValue;
856
863
  key = key.key;
857
864
  }
858
865
  const keys = key.split('::');
859
866
  const warn = (message) => {
860
- if (isDevMode)
867
+ if (isDevMode())
861
868
  console.warn(message);
862
869
  };
863
870
  if (keys.length < 2) {
@@ -1262,7 +1269,7 @@ class AbstractNavTreeService extends AbstractTreeService {
1262
1269
  }
1263
1270
  hasInvisibleChild(identifier) {
1264
1271
  const node = this.find(item => item[this.id] === identifier);
1265
- return node?.children?.some(child => child.invisible);
1272
+ return node?.children?.some(child => child.invisible) || false;
1266
1273
  }
1267
1274
  /* istanbul ignore next */
1268
1275
  ngOnDestroy() {
@@ -1300,7 +1307,9 @@ class SubscriptionService {
1300
1307
  }
1301
1308
  closeOne(subscription) {
1302
1309
  this.removeOne(subscription);
1303
- subscription.unsubscribe();
1310
+ if (subscription) {
1311
+ subscription.unsubscribe();
1312
+ }
1304
1313
  }
1305
1314
  ngOnDestroy() {
1306
1315
  this.subscription.unsubscribe();
@@ -1335,7 +1344,7 @@ class DynamicLayoutComponent {
1335
1344
  ]);
1336
1345
  this.isLayoutVisible = true;
1337
1346
  if (dynamicLayoutComponent) {
1338
- if (isDevMode)
1347
+ if (isDevMode())
1339
1348
  console.warn('DynamicLayoutComponent must be used only in AppComponent.');
1340
1349
  return;
1341
1350
  }
@@ -1367,8 +1376,10 @@ class DynamicLayoutComponent {
1367
1376
  if (this.layoutKey === expectedLayout)
1368
1377
  return;
1369
1378
  const key = this.layouts.get(expectedLayout);
1370
- this.layout = this.getComponent(key)?.component;
1371
- this.layoutKey = expectedLayout;
1379
+ if (key) {
1380
+ this.layout = this.getComponent(key)?.component;
1381
+ this.layoutKey = expectedLayout;
1382
+ }
1372
1383
  if (!this.layout) {
1373
1384
  this.showLayoutNotFoundError(expectedLayout);
1374
1385
  }
@@ -1874,16 +1885,20 @@ class ForDirective {
1874
1885
  const rw = [];
1875
1886
  changes.forEachOperation((record, previousIndex, currentIndex) => {
1876
1887
  if (record.previousIndex == null) {
1877
- const view = this.vcRef.createEmbeddedView(this.tempRef, new AbpForContext(null, -1, -1, this.items), currentIndex);
1888
+ const view = this.vcRef.createEmbeddedView(this.tempRef, new AbpForContext(null, -1, -1, this.items), currentIndex || 0);
1878
1889
  rw.push(new RecordView(record, view));
1879
1890
  }
1880
- else if (currentIndex == null) {
1891
+ else if (currentIndex == null && previousIndex !== null) {
1881
1892
  this.vcRef.remove(previousIndex);
1882
1893
  }
1883
1894
  else {
1884
- const view = this.vcRef.get(previousIndex);
1885
- this.vcRef.move(view, currentIndex);
1886
- rw.push(new RecordView(record, view));
1895
+ if (previousIndex !== null) {
1896
+ const view = this.vcRef.get(previousIndex);
1897
+ if (view && currentIndex !== null) {
1898
+ this.vcRef.move(view, currentIndex);
1899
+ rw.push(new RecordView(record, view));
1900
+ }
1901
+ }
1887
1902
  }
1888
1903
  });
1889
1904
  for (let i = 0, l = rw.length; i < l; i++) {
@@ -1898,8 +1913,10 @@ class ForDirective {
1898
1913
  viewRef.context.list = this.items;
1899
1914
  }
1900
1915
  changes.forEachIdentityChange((record) => {
1901
- const viewRef = this.vcRef.get(record.currentIndex);
1902
- viewRef.context.$implicit = record.item;
1916
+ if (record.currentIndex !== null) {
1917
+ const viewRef = this.vcRef.get(record.currentIndex);
1918
+ viewRef.context.$implicit = record.item;
1919
+ }
1903
1920
  });
1904
1921
  }
1905
1922
  projectItems(items) {
@@ -1926,8 +1943,9 @@ class ForDirective {
1926
1943
  }
1927
1944
  }
1928
1945
  sortItems(items) {
1929
- if (this.orderBy) {
1930
- items.sort((a, b) => a[this.orderBy] > b[this.orderBy] ? 1 : a[this.orderBy] < b[this.orderBy] ? -1 : 0);
1946
+ const orderBy = this.orderBy;
1947
+ if (orderBy) {
1948
+ items.sort((a, b) => (a[orderBy] > b[orderBy] ? 1 : a[orderBy] < b[orderBy] ? -1 : 0));
1931
1949
  }
1932
1950
  else {
1933
1951
  items.sort();
@@ -1938,10 +1956,11 @@ class ForDirective {
1938
1956
  if (!Array.isArray(items))
1939
1957
  return;
1940
1958
  const compareFn = this.compareFn;
1941
- if (typeof this.filterBy !== 'undefined' &&
1959
+ const filterBy = this.filterBy;
1960
+ if (typeof filterBy !== 'undefined' &&
1942
1961
  typeof this.filterVal !== 'undefined' &&
1943
1962
  this.filterVal !== '') {
1944
- items = items.filter(item => compareFn(item[this.filterBy], this.filterVal));
1963
+ items = items.filter(item => compareFn(item[filterBy], this.filterVal));
1945
1964
  }
1946
1965
  switch (this.orderDir) {
1947
1966
  case 'ASC':
@@ -2012,7 +2031,7 @@ class FormSubmitDirective {
2012
2031
  }
2013
2032
  this.executedNgSubmit = true;
2014
2033
  });
2015
- const keyup$ = fromEvent(this.host.nativeElement, 'keyup').pipe(debounceTime(this.debounce), filter(event => !(event.target instanceof HTMLTextAreaElement)), filter((event) => event && event.key === 'Enter'));
2034
+ const keyup$ = fromEvent(this.host.nativeElement, 'keyup').pipe(debounceTime(this.debounce), filter(event => !(event.target instanceof HTMLTextAreaElement)), filter(event => event && event.key === 'Enter'));
2016
2035
  this.subscription.addOne(keyup$, () => {
2017
2036
  if (!this.executedNgSubmit) {
2018
2037
  this.host.nativeElement.dispatchEvent(new Event('submit', { bubbles: true, cancelable: true }));
@@ -2079,12 +2098,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2079
2098
  args: ['abpInit']
2080
2099
  }] } });
2081
2100
 
2101
+ const QUEUE_MANAGER = new InjectionToken("QUEUE_MANAGER");
2102
+
2082
2103
  class PermissionDirective {
2083
- constructor(templateRef, vcRef, permissionService, cdRef) {
2104
+ constructor(templateRef, vcRef, permissionService, cdRef, queue) {
2084
2105
  this.templateRef = templateRef;
2085
2106
  this.vcRef = vcRef;
2086
2107
  this.permissionService = permissionService;
2087
2108
  this.cdRef = cdRef;
2109
+ this.queue = queue;
2088
2110
  this.runChangeDetection = true;
2089
2111
  this.cdrSubject = new ReplaySubject();
2090
2112
  this.rendered = false;
@@ -2121,11 +2143,11 @@ class PermissionDirective {
2121
2143
  this.check();
2122
2144
  }
2123
2145
  ngAfterViewInit() {
2124
- this.cdrSubject.pipe(take(1)).subscribe(() => this.cdRef.detectChanges());
2146
+ this.cdrSubject.pipe(take(1)).subscribe(() => this.queue.add(() => this.cdRef.detectChanges()));
2125
2147
  this.rendered = true;
2126
2148
  }
2127
2149
  }
2128
- PermissionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PermissionDirective, deps: [{ token: i0.TemplateRef, optional: true }, { token: i0.ViewContainerRef }, { token: PermissionService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
2150
+ PermissionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PermissionDirective, deps: [{ token: i0.TemplateRef, optional: true }, { token: i0.ViewContainerRef }, { token: PermissionService }, { token: i0.ChangeDetectorRef }, { token: QUEUE_MANAGER }], target: i0.ɵɵFactoryTarget.Directive });
2129
2151
  PermissionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: PermissionDirective, selector: "[abpPermission]", inputs: { condition: ["abpPermission", "condition"], runChangeDetection: ["abpPermissionRunChangeDetection", "runChangeDetection"] }, usesOnChanges: true, ngImport: i0 });
2130
2152
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PermissionDirective, decorators: [{
2131
2153
  type: Directive,
@@ -2134,7 +2156,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2134
2156
  }]
2135
2157
  }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
2136
2158
  type: Optional
2137
- }] }, { type: i0.ViewContainerRef }, { type: PermissionService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { condition: [{
2159
+ }] }, { type: i0.ViewContainerRef }, { type: PermissionService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
2160
+ type: Inject,
2161
+ args: [QUEUE_MANAGER]
2162
+ }] }]; }, propDecorators: { condition: [{
2138
2163
  type: Input,
2139
2164
  args: ['abpPermission']
2140
2165
  }], runChangeDetection: [{
@@ -2230,11 +2255,15 @@ class ReplaceableTemplateDirective {
2230
2255
  [key]: {
2231
2256
  enumerable: true,
2232
2257
  configurable: true,
2233
- get: () => this.data.inputs[key]?.value,
2234
- ...(this.data.inputs[key]?.twoWay && {
2258
+ get: () => this.data.inputs?.[key]?.value,
2259
+ ...(this.data.inputs?.[key]?.twoWay && {
2235
2260
  set: (newValue) => {
2236
- this.data.inputs[key].value = newValue;
2237
- this.data.outputs[`${key}Change`](newValue);
2261
+ if (this.data.inputs?.[key]) {
2262
+ this.data.inputs[key].value = newValue;
2263
+ }
2264
+ if (this.data.outputs?.[`${key}Change`]) {
2265
+ this.data.outputs[`${key}Change`](newValue);
2266
+ }
2238
2267
  },
2239
2268
  }),
2240
2269
  },
@@ -2269,7 +2298,7 @@ class StopPropagationDirective {
2269
2298
  this.stopPropEvent = new EventEmitter();
2270
2299
  }
2271
2300
  ngOnInit() {
2272
- this.subscription.addOne(fromEvent(this.el.nativeElement, 'click'), (event) => {
2301
+ this.subscription.addOne(fromEvent(this.el.nativeElement, 'click'), event => {
2273
2302
  event.stopPropagation();
2274
2303
  this.stopPropEvent.emit(event);
2275
2304
  });
@@ -2297,14 +2326,16 @@ class RoutesHandler {
2297
2326
  }
2298
2327
  addRoutes() {
2299
2328
  this.router?.config?.forEach(({ path = '', data }) => {
2300
- if (!data?.routes)
2301
- return;
2302
- if (Array.isArray(data.routes)) {
2303
- this.routes.add(data.routes);
2329
+ const routes = data?.routes;
2330
+ if (!routes)
2304
2331
  return;
2332
+ if (Array.isArray(routes)) {
2333
+ this.routes.add(routes);
2334
+ }
2335
+ else {
2336
+ const routesFlatten = flatRoutes([{ path, ...routes }], { path: '' });
2337
+ this.routes.add(routesFlatten);
2305
2338
  }
2306
- const routes = flatRoutes([{ path, ...data.routes }], { path: '' });
2307
- this.routes.add(routes);
2308
2339
  });
2309
2340
  }
2310
2341
  }
@@ -2477,7 +2508,10 @@ class LocaleId extends String {
2477
2508
  }
2478
2509
  toString() {
2479
2510
  const { currentLang } = this.localizationService;
2480
- return differentLocales[currentLang] || currentLang;
2511
+ if (checkHasProp(differentLocales, currentLang)) {
2512
+ return differentLocales[currentLang];
2513
+ }
2514
+ return currentLang;
2481
2515
  }
2482
2516
  valueOf() {
2483
2517
  return this.toString();
@@ -2512,7 +2546,7 @@ function getRemoteEnv(injector, environment) {
2512
2546
  httpErrorReporter.reportError(err);
2513
2547
  return of(null);
2514
2548
  }), // TODO: Consider get handle function from a provider
2515
- tap(env => environmentService.setState(mergeEnvironments(environment, env, remoteEnv))))
2549
+ tap(env => environmentService.setState(mergeEnvironments(environment, env || {}, remoteEnv))))
2516
2550
  .toPromise();
2517
2551
  }
2518
2552
  function mergeEnvironments(local, remote, config) {
@@ -2648,13 +2682,16 @@ function replaceTenantNameWithinEnvironment(injector, tenancyName, placeholder =
2648
2682
  if (environment.application.baseUrl) {
2649
2683
  environment.application.baseUrl = environment.application.baseUrl.replace(placeholder, tenancyName);
2650
2684
  }
2651
- if (environment.oAuthConfig.redirectUri) {
2685
+ if (environment.oAuthConfig?.redirectUri) {
2652
2686
  environment.oAuthConfig.redirectUri = environment.oAuthConfig.redirectUri.replace(placeholder, tenancyName);
2653
2687
  }
2654
- environment.oAuthConfig.issuer = environment.oAuthConfig.issuer.replace(placeholder, tenancyName);
2688
+ if (!environment.oAuthConfig) {
2689
+ environment.oAuthConfig = {};
2690
+ }
2691
+ environment.oAuthConfig.issuer = (environment.oAuthConfig.issuer || '').replace(placeholder, tenancyName);
2655
2692
  Object.keys(environment.apis).forEach(api => {
2656
2693
  Object.keys(environment.apis[api]).forEach(key => {
2657
- environment.apis[api][key] = environment.apis[api][key].replace(placeholder, tenancyName);
2694
+ environment.apis[api][key] = (environment.apis[api][key] || '').replace(placeholder, tenancyName);
2658
2695
  });
2659
2696
  });
2660
2697
  return environmentService.setState(environment);
@@ -2730,11 +2767,11 @@ function getShortDateFormat(configStateService) {
2730
2767
  }
2731
2768
  function getShortTimeFormat(configStateService) {
2732
2769
  const dateTimeFormat = configStateService.getDeep('localization.currentCulture.dateTimeFormat');
2733
- return dateTimeFormat.shortTimePattern.replace('tt', 'a');
2770
+ return dateTimeFormat?.shortTimePattern?.replace('tt', 'a');
2734
2771
  }
2735
2772
  function getShortDateShortTimeFormat(configStateService) {
2736
2773
  const dateTimeFormat = configStateService.getDeep('localization.currentCulture.dateTimeFormat');
2737
- return `${dateTimeFormat.shortDatePattern} ${dateTimeFormat.shortTimePattern.replace('tt', 'a')}`;
2774
+ return `${dateTimeFormat.shortDatePattern} ${dateTimeFormat?.shortTimePattern?.replace('tt', 'a')}`;
2738
2775
  }
2739
2776
 
2740
2777
  class LazyModuleFactory extends NgModuleFactory {
@@ -2747,7 +2784,7 @@ class LazyModuleFactory extends NgModuleFactory {
2747
2784
  }
2748
2785
  create(parentInjector) {
2749
2786
  const injector = Injector.create({
2750
- parent: parentInjector,
2787
+ ...(parentInjector && { parent: parentInjector }),
2751
2788
  providers: this.moduleWithProviders.providers,
2752
2789
  });
2753
2790
  const compiler = injector.get(Compiler);
@@ -2849,7 +2886,9 @@ class CrossOriginStrategy {
2849
2886
  setCrossOrigin(element) {
2850
2887
  if (this.integrity)
2851
2888
  element.setAttribute('integrity', this.integrity);
2852
- element.setAttribute('crossorigin', this.crossorigin);
2889
+ if (this.crossorigin) {
2890
+ element.setAttribute('crossorigin', this.crossorigin);
2891
+ }
2853
2892
  }
2854
2893
  }
2855
2894
  class NoCrossOriginStrategy extends CrossOriginStrategy {
@@ -2918,7 +2957,7 @@ function fromLazyLoad(element, domStrategy = DOM_STRATEGY.AppendToHead(), crossO
2918
2957
  function createErrorHandler(observer, element) {
2919
2958
  return function (event) {
2920
2959
  clearCallbacks(element);
2921
- element.parentNode.removeChild(element);
2960
+ element.parentNode?.removeChild(element);
2922
2961
  observer.error(event);
2923
2962
  };
2924
2963
  }
@@ -2931,6 +2970,47 @@ function clearCallbacks(element) {
2931
2970
  element.onsuspend = null;
2932
2971
  }
2933
2972
 
2973
+ class DefaultQueueManager {
2974
+ constructor() {
2975
+ this.queue = [];
2976
+ this.isRunning = false;
2977
+ this.stack = 0;
2978
+ this.interval = 0;
2979
+ this.stackSize = 100;
2980
+ }
2981
+ init(interval, stackSize) {
2982
+ this.interval = interval;
2983
+ this.stackSize = stackSize;
2984
+ }
2985
+ add(fn) {
2986
+ this.queue.push(fn);
2987
+ this.run();
2988
+ }
2989
+ run() {
2990
+ if (this.isRunning)
2991
+ return;
2992
+ this.stack++;
2993
+ this.isRunning = true;
2994
+ const fn = this.queue.shift();
2995
+ if (!fn) {
2996
+ this.isRunning = false;
2997
+ return;
2998
+ }
2999
+ fn();
3000
+ if (this.stack > this.stackSize) {
3001
+ setTimeout(() => {
3002
+ this.isRunning = false;
3003
+ this.run();
3004
+ this.stack = 0;
3005
+ }, this.interval);
3006
+ }
3007
+ else {
3008
+ this.isRunning = false;
3009
+ this.run();
3010
+ }
3011
+ }
3012
+ }
3013
+
2934
3014
  class DomInsertionService {
2935
3015
  constructor() {
2936
3016
  this.inserted = new Set();
@@ -2944,9 +3024,11 @@ class DomInsertionService {
2944
3024
  return element;
2945
3025
  }
2946
3026
  removeContent(element) {
2947
- const hash = generateHash(element.textContent);
2948
- this.inserted.delete(hash);
2949
- element.parentNode.removeChild(element);
3027
+ if (element.textContent) {
3028
+ const hash = generateHash(element.textContent);
3029
+ this.inserted.delete(hash);
3030
+ element.parentNode?.removeChild(element);
3031
+ }
2950
3032
  }
2951
3033
  has(content) {
2952
3034
  const hash = generateHash(content);
@@ -3010,6 +3092,9 @@ class HttpWaitService {
3010
3092
  this.store.patch({ filteredRequests });
3011
3093
  }
3012
3094
  applyFilter(requests) {
3095
+ if (!requests) {
3096
+ return [];
3097
+ }
3013
3098
  const { filteredRequests } = this.store.state;
3014
3099
  return requests.filter(({ method, url }) => !filteredRequests.find(filteredRequest => this.isSameRequest(filteredRequest, { method, endpoint: getPathName(url) })));
3015
3100
  }
@@ -3038,7 +3123,7 @@ class ResourceWaitService {
3038
3123
  return this.store.sliceState(({ resources }) => !!resources.size);
3039
3124
  }
3040
3125
  updateLoading$() {
3041
- return this.store.sliceUpdate(({ resources }) => !!resources.size);
3126
+ return this.store.sliceUpdate(({ resources }) => !!resources?.size);
3042
3127
  }
3043
3128
  clearLoading() {
3044
3129
  this.store.patch({ resources: new Set() });
@@ -3072,7 +3157,9 @@ class LazyLoadService {
3072
3157
  if (this.loaded.has(strategy.path))
3073
3158
  return of(new CustomEvent('load'));
3074
3159
  this.resourceWaitService.addResource(strategy.path);
3075
- return strategy.createStream().pipe(retryWhen(error$ => concat(error$.pipe(delay(retryDelay), take(retryTimes)), throwError(new CustomEvent('error')))), tap(() => {
3160
+ const delayOperator = retryDelay ? pipe(delay(retryDelay)) : pipe();
3161
+ const takeOp = retryTimes ? pipe(take(retryTimes)) : pipe();
3162
+ return strategy.createStream().pipe(retryWhen(error$ => concat(error$.pipe(delayOperator, takeOp), throwError(() => new CustomEvent('error')))), tap(() => {
3076
3163
  this.loaded.set(strategy.path, strategy.element);
3077
3164
  this.resourceWaitService.deleteResource(strategy.path);
3078
3165
  }), delay(100), shareReplay({ bufferSize: 1, refCount: true }));
@@ -3081,7 +3168,7 @@ class LazyLoadService {
3081
3168
  const element = this.loaded.get(path);
3082
3169
  if (!element)
3083
3170
  return false;
3084
- element.parentNode.removeChild(element);
3171
+ element.parentNode?.removeChild(element);
3085
3172
  this.loaded.delete(path);
3086
3173
  return true;
3087
3174
  }
@@ -3544,6 +3631,10 @@ class CoreModule {
3544
3631
  useValue: localizationContributor(options.localizations),
3545
3632
  deps: [LocalizationService],
3546
3633
  },
3634
+ {
3635
+ provide: QUEUE_MANAGER,
3636
+ useClass: DefaultQueueManager,
3637
+ },
3547
3638
  IncludeLocalizationResourcesProvider,
3548
3639
  ],
3549
3640
  };
@@ -3607,7 +3698,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3607
3698
  class ListResultDto {
3608
3699
  constructor(initialValues = {}) {
3609
3700
  for (const key in initialValues) {
3610
- if (Object.prototype.hasOwnProperty.call(initialValues, key)) {
3701
+ if (checkHasProp(initialValues, key)) {
3611
3702
  this[key] = initialValues[key];
3612
3703
  }
3613
3704
  }
@@ -3622,8 +3713,7 @@ class LimitedResultRequestDto {
3622
3713
  constructor(initialValues = {}) {
3623
3714
  this.maxResultCount = 10;
3624
3715
  for (const key in initialValues) {
3625
- if (Object.prototype.hasOwnProperty.call(initialValues, key) &&
3626
- initialValues[key] !== undefined) {
3716
+ if (checkHasProp(initialValues, key) && initialValues[key] !== undefined) {
3627
3717
  this[key] = initialValues[key];
3628
3718
  }
3629
3719
  }
@@ -3642,7 +3732,7 @@ class PagedAndSortedResultRequestDto extends PagedResultRequestDto {
3642
3732
  class EntityDto {
3643
3733
  constructor(initialValues = {}) {
3644
3734
  for (const key in initialValues) {
3645
- if (Object.prototype.hasOwnProperty.call(initialValues, key)) {
3735
+ if (checkHasProp(initialValues, key)) {
3646
3736
  this[key] = initialValues[key];
3647
3737
  }
3648
3738
  }
@@ -3681,7 +3771,7 @@ class FullAuditedEntityWithUserDto extends FullAuditedEntityDto {
3681
3771
  class ExtensibleObject {
3682
3772
  constructor(initialValues = {}) {
3683
3773
  for (const key in initialValues) {
3684
- if (Object.prototype.hasOwnProperty.call(initialValues, key)) {
3774
+ if (checkHasProp(initialValues, key)) {
3685
3775
  this[key] = initialValues[key];
3686
3776
  }
3687
3777
  }
@@ -3795,7 +3885,9 @@ class LooseContentSecurityStrategy extends ContentSecurityStrategy {
3795
3885
  super(nonce);
3796
3886
  }
3797
3887
  applyCSP(element) {
3798
- element.setAttribute('nonce', this.nonce);
3888
+ if (this.nonce) {
3889
+ element.setAttribute('nonce', this.nonce);
3890
+ }
3799
3891
  }
3800
3892
  }
3801
3893
  class NoContentSecurityStrategy extends ContentSecurityStrategy {
@@ -3823,7 +3915,11 @@ class ContentStrategy {
3823
3915
  insertElement() {
3824
3916
  const element = this.createElement();
3825
3917
  if (this.options && Object.keys(this.options).length > 0) {
3826
- Object.keys(this.options).forEach(key => (element[key] = this.options[key]));
3918
+ Object.keys(this.options).forEach(key => {
3919
+ if (this.options[key]) {
3920
+ element[key] = this.options[key];
3921
+ }
3922
+ });
3827
3923
  }
3828
3924
  this.contentSecurityStrategy.applyCSP(element);
3829
3925
  this.domStrategy.insertElement(element);
@@ -4029,8 +4125,13 @@ const NAVIGATE_TO_MANAGE_PROFILE = new InjectionToken('NAVIGATE_TO_MANAGE_PROFIL
4029
4125
 
4030
4126
  const PIPE_TO_LOGIN_FN_KEY = new InjectionToken('PIPE_TO_LOGIN_FN_KEY');
4031
4127
 
4128
+ /**
4129
+ * @deprecated The token should not be used anymore.
4130
+ */
4032
4131
  const SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY = new InjectionToken('SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY');
4033
4132
 
4133
+ const IS_EXTERNAL_REQUEST = new HttpContextToken(() => false);
4134
+
4034
4135
  function validateMinAge({ age = 18 } = {}) {
4035
4136
  return (control) => {
4036
4137
  if (['', null, undefined].indexOf(control.value) > -1)
@@ -4128,7 +4229,7 @@ function isValidUrl(value) {
4128
4229
  }
4129
4230
 
4130
4231
  const onlyLetterAndNumberRegex = /^[a-zA-Z0-9]+$/;
4131
- function validateUsername({ pattern } = { pattern: onlyLetterAndNumberRegex }) {
4232
+ function validateUsername({ pattern = /.*/ } = { pattern: onlyLetterAndNumberRegex }) {
4132
4233
  return (control) => {
4133
4234
  const isValid = isValidUserName(control.value, pattern);
4134
4235
  return isValid ? null : { usernamePattern: { actualValue: control.value } };
@@ -4156,7 +4257,7 @@ class ApiInterceptor {
4156
4257
  this.httpWaitService = httpWaitService;
4157
4258
  }
4158
4259
  getAdditionalHeaders(existingHeaders) {
4159
- return existingHeaders;
4260
+ return existingHeaders || new HttpHeaders();
4160
4261
  }
4161
4262
  intercept(request, next) {
4162
4263
  this.httpWaitService.addRequest(request);
@@ -4172,11 +4273,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
4172
4273
  }]
4173
4274
  }], ctorParameters: function () { return [{ type: HttpWaitService }]; } });
4174
4275
 
4276
+ var _ExternalHttpClient_instances, _ExternalHttpClient_setPlaceholderContext;
4277
+ // source : https://github.com/armanozak/demo-angular-server-specific-interceptors
4278
+ class ExternalHttpClient extends HttpClient {
4279
+ constructor() {
4280
+ super(...arguments);
4281
+ _ExternalHttpClient_instances.add(this);
4282
+ }
4283
+ request(first, url, options = {}) {
4284
+ if (typeof first === 'string') {
4285
+ __classPrivateFieldGet(this, _ExternalHttpClient_instances, "m", _ExternalHttpClient_setPlaceholderContext).call(this, options);
4286
+ return super.request(first, url || '', options);
4287
+ }
4288
+ __classPrivateFieldGet(this, _ExternalHttpClient_instances, "m", _ExternalHttpClient_setPlaceholderContext).call(this, first);
4289
+ return super.request(first);
4290
+ }
4291
+ }
4292
+ _ExternalHttpClient_instances = new WeakSet(), _ExternalHttpClient_setPlaceholderContext = function _ExternalHttpClient_setPlaceholderContext(optionsOrRequest) {
4293
+ optionsOrRequest.context ?? (optionsOrRequest.context = new HttpContext());
4294
+ optionsOrRequest.context.set(IS_EXTERNAL_REQUEST, true);
4295
+ };
4296
+ ExternalHttpClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ExternalHttpClient, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
4297
+ ExternalHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ExternalHttpClient, providedIn: 'root' });
4298
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ExternalHttpClient, decorators: [{
4299
+ type: Injectable,
4300
+ args: [{
4301
+ providedIn: 'root',
4302
+ }]
4303
+ }] });
4304
+
4175
4305
  // export * from './lib/handlers';
4176
4306
 
4177
4307
  /**
4178
4308
  * Generated bundle index. Do not edit.
4179
4309
  */
4180
4310
 
4181
- 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, DomInsertionService, DomStrategy, DynamicLayoutComponent, EntityDto, EnvironmentService, ExtensibleAuditedEntityDto, ExtensibleAuditedEntityWithUserDto, ExtensibleCreationAuditedEntityDto, ExtensibleCreationAuditedEntityWithUserDto, ExtensibleEntityDto, ExtensibleFullAuditedEntityDto, ExtensibleFullAuditedEntityWithUserDto, ExtensibleObject, ForDirective, FormSubmitDirective, FullAuditedEntityDto, FullAuditedEntityWithUserDto, HttpErrorReporterService, HttpWaitService, INCUDE_LOCALIZATION_RESOURCES_TOKEN, INJECTOR_PIPE_DATA_TOKEN, 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, 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 };
4311
+ 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, 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 };
4182
4312
  //# sourceMappingURL=abp-ng.core.mjs.map