@ngxs/store 18.1.5 → 18.1.6-dev.master-a9e7ff3

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 (153) hide show
  1. package/experimental/index.d.ts +6 -5
  2. package/fesm2022/ngxs-store-experimental.mjs +8 -25
  3. package/fesm2022/ngxs-store-experimental.mjs.map +1 -1
  4. package/fesm2022/ngxs-store-internals-testing.mjs +8 -9
  5. package/fesm2022/ngxs-store-internals-testing.mjs.map +1 -1
  6. package/fesm2022/ngxs-store-internals.mjs +9 -11
  7. package/fesm2022/ngxs-store-internals.mjs.map +1 -1
  8. package/fesm2022/ngxs-store-operators.mjs.map +1 -1
  9. package/fesm2022/ngxs-store-plugins.mjs +14 -5
  10. package/fesm2022/ngxs-store-plugins.mjs.map +1 -1
  11. package/fesm2022/ngxs-store.mjs +276 -272
  12. package/fesm2022/ngxs-store.mjs.map +1 -1
  13. package/index.d.ts +44 -185
  14. package/package.json +7 -19
  15. package/plugins/index.d.ts +12 -5
  16. package/schematics/src/actions/actions.factory.js +1 -2
  17. package/schematics/src/actions/actions.factory.js.map +1 -1
  18. package/schematics/src/ng-add/add-declaration.js +2 -3
  19. package/schematics/src/ng-add/add-declaration.js.map +1 -1
  20. package/schematics/src/ng-add/ng-add.factory.js +1 -2
  21. package/schematics/src/ng-add/ng-add.factory.js.map +1 -1
  22. package/schematics/src/starter-kit/starter-kit.factory.js +1 -2
  23. package/schematics/src/starter-kit/starter-kit.factory.js.map +1 -1
  24. package/schematics/src/state/state.factory.js +1 -2
  25. package/schematics/src/state/state.factory.js.map +1 -1
  26. package/schematics/src/store/store.factory.js +1 -2
  27. package/schematics/src/store/store.factory.js.map +1 -1
  28. package/schematics/src/utils/common/properties.js +1 -2
  29. package/schematics/src/utils/common/properties.js.map +1 -1
  30. package/schematics/src/utils/config.js +2 -3
  31. package/schematics/src/utils/config.js.map +1 -1
  32. package/schematics/src/utils/generate-utils.js +1 -2
  33. package/schematics/src/utils/generate-utils.js.map +1 -1
  34. package/schematics/src/utils/normalize-options.js +3 -4
  35. package/schematics/src/utils/normalize-options.js.map +1 -1
  36. package/schematics/src/utils/project.js +4 -5
  37. package/schematics/src/utils/project.js.map +1 -1
  38. package/schematics/src/utils/versions.json +1 -1
  39. package/esm2022/experimental/index.mjs +0 -2
  40. package/esm2022/experimental/ngxs-store-experimental.mjs +0 -5
  41. package/esm2022/experimental/pending-tasks.mjs +0 -30
  42. package/esm2022/index.mjs +0 -13
  43. package/esm2022/internals/custom-rxjs-operators.mjs +0 -19
  44. package/esm2022/internals/custom-rxjs-subjects.mjs +0 -92
  45. package/esm2022/internals/index.mjs +0 -11
  46. package/esm2022/internals/initial-state.mjs +0 -18
  47. package/esm2022/internals/internal-tokens.mjs +0 -6
  48. package/esm2022/internals/memoize.mjs +0 -43
  49. package/esm2022/internals/metadata.mjs +0 -57
  50. package/esm2022/internals/ngxs-app-bootstrapped-state.mjs +0 -19
  51. package/esm2022/internals/ngxs-store-internals.mjs +0 -5
  52. package/esm2022/internals/state-stream.mjs +0 -33
  53. package/esm2022/internals/state-token.mjs +0 -17
  54. package/esm2022/internals/symbols.mjs +0 -11
  55. package/esm2022/internals/testing/fresh-platform.mjs +0 -72
  56. package/esm2022/internals/testing/helpers/ngxs-test.component.mjs +0 -16
  57. package/esm2022/internals/testing/helpers/ngxs-test.module.mjs +0 -20
  58. package/esm2022/internals/testing/index.mjs +0 -4
  59. package/esm2022/internals/testing/ngxs-store-internals-testing.mjs +0 -5
  60. package/esm2022/internals/testing/ngxs.setup.mjs +0 -49
  61. package/esm2022/internals/testing/skip-console-logging.mjs +0 -37
  62. package/esm2022/internals/testing/symbol.mjs +0 -2
  63. package/esm2022/ngxs-store.mjs +0 -5
  64. package/esm2022/operators/append.mjs +0 -20
  65. package/esm2022/operators/compose.mjs +0 -6
  66. package/esm2022/operators/iif.mjs +0 -38
  67. package/esm2022/operators/index.mjs +0 -14
  68. package/esm2022/operators/insert-item.mjs +0 -29
  69. package/esm2022/operators/ngxs-store-operators.mjs +0 -5
  70. package/esm2022/operators/patch.mjs +0 -21
  71. package/esm2022/operators/remove-item.mjs +0 -22
  72. package/esm2022/operators/types.mjs +0 -2
  73. package/esm2022/operators/update-item.mjs +0 -40
  74. package/esm2022/operators/utils.mjs +0 -19
  75. package/esm2022/plugins/actions.mjs +0 -16
  76. package/esm2022/plugins/index.mjs +0 -4
  77. package/esm2022/plugins/ngxs-store-plugins.mjs +0 -5
  78. package/esm2022/plugins/symbols.mjs +0 -6
  79. package/esm2022/plugins/utils.mjs +0 -51
  80. package/esm2022/src/actions/action-registry.mjs +0 -34
  81. package/esm2022/src/actions/symbols.mjs +0 -2
  82. package/esm2022/src/actions-stream.mjs +0 -60
  83. package/esm2022/src/configs/messages.config.mjs +0 -48
  84. package/esm2022/src/decorators/action.mjs +0 -31
  85. package/esm2022/src/decorators/select/select-factory.mjs +0 -29
  86. package/esm2022/src/decorators/select/select.mjs +0 -29
  87. package/esm2022/src/decorators/select/symbols.mjs +0 -29
  88. package/esm2022/src/decorators/selector/selector.mjs +0 -29
  89. package/esm2022/src/decorators/selector/symbols.mjs +0 -2
  90. package/esm2022/src/decorators/selector-options.mjs +0 -21
  91. package/esm2022/src/decorators/state.mjs +0 -35
  92. package/esm2022/src/dev-features/ngxs-development.module.mjs +0 -28
  93. package/esm2022/src/dev-features/ngxs-unhandled-actions-logger.mjs +0 -45
  94. package/esm2022/src/dev-features/symbols.mjs +0 -7
  95. package/esm2022/src/execution/dispatch-outside-zone-ngxs-execution-strategy.mjs +0 -55
  96. package/esm2022/src/execution/internal-ngxs-execution-strategy.mjs +0 -24
  97. package/esm2022/src/execution/noop-ngxs-execution-strategy.mjs +0 -17
  98. package/esm2022/src/execution/symbols.mjs +0 -29
  99. package/esm2022/src/internal/dispatcher.mjs +0 -106
  100. package/esm2022/src/internal/fallback-subscriber.mjs +0 -29
  101. package/esm2022/src/internal/internals.mjs +0 -206
  102. package/esm2022/src/internal/lifecycle-state-manager.mjs +0 -86
  103. package/esm2022/src/internal/provide-internal-tokens.mjs +0 -20
  104. package/esm2022/src/internal/state-context-factory.mjs +0 -71
  105. package/esm2022/src/internal/state-factory.mjs +0 -331
  106. package/esm2022/src/internal/state-operations.mjs +0 -63
  107. package/esm2022/src/internal/state-operators.mjs +0 -20
  108. package/esm2022/src/internal/unhandled-rxjs-error-callback.mjs +0 -39
  109. package/esm2022/src/ivy/ivy-enabled-in-dev-mode.mjs +0 -25
  110. package/esm2022/src/module.mjs +0 -27
  111. package/esm2022/src/modules/ngxs-feature.module.mjs +0 -18
  112. package/esm2022/src/modules/ngxs-root.module.mjs +0 -18
  113. package/esm2022/src/ngxs-unhandled-error-handler.mjs +0 -29
  114. package/esm2022/src/operators/leave-ngxs.mjs +0 -9
  115. package/esm2022/src/operators/of-action.mjs +0 -104
  116. package/esm2022/src/plugin-manager.mjs +0 -33
  117. package/esm2022/src/plugin_api.mjs +0 -2
  118. package/esm2022/src/private_api.mjs +0 -5
  119. package/esm2022/src/public_api.mjs +0 -20
  120. package/esm2022/src/selectors/create-model-selector.mjs +0 -30
  121. package/esm2022/src/selectors/create-pick-selector.mjs +0 -16
  122. package/esm2022/src/selectors/create-property-selectors.mjs +0 -20
  123. package/esm2022/src/selectors/create-selector.mjs +0 -9
  124. package/esm2022/src/selectors/index.mjs +0 -6
  125. package/esm2022/src/selectors/private_api.mjs +0 -2
  126. package/esm2022/src/selectors/selector-checks.util.mjs +0 -43
  127. package/esm2022/src/selectors/selector-metadata.mjs +0 -35
  128. package/esm2022/src/selectors/selector-models.mjs +0 -2
  129. package/esm2022/src/selectors/selector-types.util.mjs +0 -2
  130. package/esm2022/src/selectors/selector-utils.mjs +0 -96
  131. package/esm2022/src/standalone-features/feature-providers.mjs +0 -20
  132. package/esm2022/src/standalone-features/index.mjs +0 -5
  133. package/esm2022/src/standalone-features/initializers.mjs +0 -89
  134. package/esm2022/src/standalone-features/plugin.mjs +0 -27
  135. package/esm2022/src/standalone-features/preboot.mjs +0 -32
  136. package/esm2022/src/standalone-features/provide-states.mjs +0 -26
  137. package/esm2022/src/standalone-features/provide-store.mjs +0 -26
  138. package/esm2022/src/standalone-features/root-providers.mjs +0 -38
  139. package/esm2022/src/store.mjs +0 -127
  140. package/esm2022/src/symbols.mjs +0 -87
  141. package/esm2022/src/utils/compose.mjs +0 -26
  142. package/esm2022/src/utils/create-dispatch-map.mjs +0 -11
  143. package/esm2022/src/utils/create-select-map.mjs +0 -13
  144. package/esm2022/src/utils/dispatch.mjs +0 -7
  145. package/esm2022/src/utils/freeze.mjs +0 -20
  146. package/esm2022/src/utils/public_api.mjs +0 -5
  147. package/esm2022/src/utils/select.mjs +0 -19
  148. package/esm2022/src/utils/store-validators.mjs +0 -25
  149. package/experimental/package.json +0 -3
  150. package/internals/package.json +0 -3
  151. package/internals/testing/package.json +0 -3
  152. package/operators/package.json +0 -3
  153. package/plugins/package.json +0 -3
@@ -1,55 +0,0 @@
1
- import { Inject, Injectable, NgZone, PLATFORM_ID } from '@angular/core';
2
- import { isPlatformServer } from '@angular/common';
3
- import { getZoneWarningMessage } from '../configs/messages.config';
4
- import * as i0 from "@angular/core";
5
- export class DispatchOutsideZoneNgxsExecutionStrategy {
6
- constructor(_ngZone, _platformId) {
7
- this._ngZone = _ngZone;
8
- this._platformId = _platformId;
9
- if (typeof ngDevMode !== 'undefined' && ngDevMode) {
10
- verifyZoneIsNotNooped(_ngZone);
11
- }
12
- }
13
- enter(func) {
14
- if (isPlatformServer(this._platformId)) {
15
- return this.runInsideAngular(func);
16
- }
17
- return this.runOutsideAngular(func);
18
- }
19
- leave(func) {
20
- return this.runInsideAngular(func);
21
- }
22
- runInsideAngular(func) {
23
- if (NgZone.isInAngularZone()) {
24
- return func();
25
- }
26
- return this._ngZone.run(func);
27
- }
28
- runOutsideAngular(func) {
29
- if (NgZone.isInAngularZone()) {
30
- return this._ngZone.runOutsideAngular(func);
31
- }
32
- return func();
33
- }
34
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DispatchOutsideZoneNgxsExecutionStrategy, deps: [{ token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
35
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DispatchOutsideZoneNgxsExecutionStrategy, providedIn: 'root' }); }
36
- }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DispatchOutsideZoneNgxsExecutionStrategy, decorators: [{
38
- type: Injectable,
39
- args: [{ providedIn: 'root' }]
40
- }], ctorParameters: () => [{ type: i0.NgZone }, { type: undefined, decorators: [{
41
- type: Inject,
42
- args: [PLATFORM_ID]
43
- }] }] });
44
- // Caretaker note: this should exist as a separate function and not a class method,
45
- // since class methods are not tree-shakable.
46
- function verifyZoneIsNotNooped(ngZone) {
47
- // `NoopNgZone` is not exposed publicly as it doesn't expect
48
- // to be used outside of the core Angular code, thus we just have
49
- // to check if the zone doesn't extend or instanceof `NgZone`.
50
- if (ngZone instanceof NgZone) {
51
- return;
52
- }
53
- console.warn(getZoneWarningMessage());
54
- }
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGF0Y2gtb3V0c2lkZS16b25lLW5neHMtZXhlY3V0aW9uLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RvcmUvc3JjL2V4ZWN1dGlvbi9kaXNwYXRjaC1vdXRzaWRlLXpvbmUtbmd4cy1leGVjdXRpb24tc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUduRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHbkUsTUFBTSxPQUFPLHdDQUF3QztJQUNuRCxZQUNVLE9BQWUsRUFDTSxXQUFtQjtRQUR4QyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ00sZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFFaEQsSUFBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxFQUFFLENBQUM7WUFDbEQscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUksSUFBYTtRQUNwQixJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsS0FBSyxDQUFJLElBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVPLGdCQUFnQixDQUFJLElBQWE7UUFDdkMsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUM3QixPQUFPLElBQUksRUFBRSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxpQkFBaUIsQ0FBSSxJQUFhO1FBQ3hDLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxPQUFPLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUM7aUlBakNVLHdDQUF3Qyx3Q0FHekMsV0FBVztxSUFIVix3Q0FBd0MsY0FEM0IsTUFBTTs7MkZBQ25CLHdDQUF3QztrQkFEcEQsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQUk3QixNQUFNOzJCQUFDLFdBQVc7O0FBaUN2QixtRkFBbUY7QUFDbkYsNkNBQTZDO0FBQzdDLFNBQVMscUJBQXFCLENBQUMsTUFBYztJQUMzQyw0REFBNEQ7SUFDNUQsaUVBQWlFO0lBQ2pFLDhEQUE4RDtJQUM5RCxJQUFJLE1BQU0sWUFBWSxNQUFNLEVBQUUsQ0FBQztRQUM3QixPQUFPO0lBQ1QsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE5nWm9uZSwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBOZ3hzRXhlY3V0aW9uU3RyYXRlZ3kgfSBmcm9tICcuL3N5bWJvbHMnO1xuaW1wb3J0IHsgZ2V0Wm9uZVdhcm5pbmdNZXNzYWdlIH0gZnJvbSAnLi4vY29uZmlncy9tZXNzYWdlcy5jb25maWcnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIERpc3BhdGNoT3V0c2lkZVpvbmVOZ3hzRXhlY3V0aW9uU3RyYXRlZ3kgaW1wbGVtZW50cyBOZ3hzRXhlY3V0aW9uU3RyYXRlZ3kge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIF9wbGF0Zm9ybUlkOiBzdHJpbmdcbiAgKSB7XG4gICAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgIT09ICd1bmRlZmluZWQnICYmIG5nRGV2TW9kZSkge1xuICAgICAgdmVyaWZ5Wm9uZUlzTm90Tm9vcGVkKF9uZ1pvbmUpO1xuICAgIH1cbiAgfVxuXG4gIGVudGVyPFQ+KGZ1bmM6ICgpID0+IFQpOiBUIHtcbiAgICBpZiAoaXNQbGF0Zm9ybVNlcnZlcih0aGlzLl9wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuIHRoaXMucnVuSW5zaWRlQW5ndWxhcihmdW5jKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucnVuT3V0c2lkZUFuZ3VsYXIoZnVuYyk7XG4gIH1cblxuICBsZWF2ZTxUPihmdW5jOiAoKSA9PiBUKTogVCB7XG4gICAgcmV0dXJuIHRoaXMucnVuSW5zaWRlQW5ndWxhcihmdW5jKTtcbiAgfVxuXG4gIHByaXZhdGUgcnVuSW5zaWRlQW5ndWxhcjxUPihmdW5jOiAoKSA9PiBUKTogVCB7XG4gICAgaWYgKE5nWm9uZS5pc0luQW5ndWxhclpvbmUoKSkge1xuICAgICAgcmV0dXJuIGZ1bmMoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25nWm9uZS5ydW4oZnVuYyk7XG4gIH1cblxuICBwcml2YXRlIHJ1bk91dHNpZGVBbmd1bGFyPFQ+KGZ1bmM6ICgpID0+IFQpOiBUIHtcbiAgICBpZiAoTmdab25lLmlzSW5Bbmd1bGFyWm9uZSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKGZ1bmMpO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYygpO1xuICB9XG59XG5cbi8vIENhcmV0YWtlciBub3RlOiB0aGlzIHNob3VsZCBleGlzdCBhcyBhIHNlcGFyYXRlIGZ1bmN0aW9uIGFuZCBub3QgYSBjbGFzcyBtZXRob2QsXG4vLyBzaW5jZSBjbGFzcyBtZXRob2RzIGFyZSBub3QgdHJlZS1zaGFrYWJsZS5cbmZ1bmN0aW9uIHZlcmlmeVpvbmVJc05vdE5vb3BlZChuZ1pvbmU6IE5nWm9uZSk6IHZvaWQge1xuICAvLyBgTm9vcE5nWm9uZWAgaXMgbm90IGV4cG9zZWQgcHVibGljbHkgYXMgaXQgZG9lc24ndCBleHBlY3RcbiAgLy8gdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBjb3JlIEFuZ3VsYXIgY29kZSwgdGh1cyB3ZSBqdXN0IGhhdmVcbiAgLy8gdG8gY2hlY2sgaWYgdGhlIHpvbmUgZG9lc24ndCBleHRlbmQgb3IgaW5zdGFuY2VvZiBgTmdab25lYC5cbiAgaWYgKG5nWm9uZSBpbnN0YW5jZW9mIE5nWm9uZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnNvbGUud2FybihnZXRab25lV2FybmluZ01lc3NhZ2UoKSk7XG59XG4iXX0=
@@ -1,24 +0,0 @@
1
- import { Injectable, Inject } from '@angular/core';
2
- import { NGXS_EXECUTION_STRATEGY } from './symbols';
3
- import * as i0 from "@angular/core";
4
- export class InternalNgxsExecutionStrategy {
5
- constructor(_executionStrategy) {
6
- this._executionStrategy = _executionStrategy;
7
- }
8
- enter(func) {
9
- return this._executionStrategy.enter(func);
10
- }
11
- leave(func) {
12
- return this._executionStrategy.leave(func);
13
- }
14
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: InternalNgxsExecutionStrategy, deps: [{ token: NGXS_EXECUTION_STRATEGY }], target: i0.ɵɵFactoryTarget.Injectable }); }
15
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: InternalNgxsExecutionStrategy, providedIn: 'root' }); }
16
- }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: InternalNgxsExecutionStrategy, decorators: [{
18
- type: Injectable,
19
- args: [{ providedIn: 'root' }]
20
- }], ctorParameters: () => [{ type: undefined, decorators: [{
21
- type: Inject,
22
- args: [NGXS_EXECUTION_STRATEGY]
23
- }] }] });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtbmd4cy1leGVjdXRpb24tc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdG9yZS9zcmMvZXhlY3V0aW9uL2ludGVybmFsLW5neHMtZXhlY3V0aW9uLXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBeUIsdUJBQXVCLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBRzNFLE1BQU0sT0FBTyw2QkFBNkI7SUFDeEMsWUFDMkMsa0JBQXlDO1FBQXpDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBdUI7SUFDakYsQ0FBQztJQUVKLEtBQUssQ0FBSSxJQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsS0FBSyxDQUFJLElBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7aUlBWFUsNkJBQTZCLGtCQUU5Qix1QkFBdUI7cUlBRnRCLDZCQUE2QixjQURoQixNQUFNOzsyRkFDbkIsNkJBQTZCO2tCQUR6QyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBRzdCLE1BQU07MkJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE5neHNFeGVjdXRpb25TdHJhdGVneSwgTkdYU19FWEVDVVRJT05fU1RSQVRFR1kgfSBmcm9tICcuL3N5bWJvbHMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEludGVybmFsTmd4c0V4ZWN1dGlvblN0cmF0ZWd5IGltcGxlbWVudHMgTmd4c0V4ZWN1dGlvblN0cmF0ZWd5IHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChOR1hTX0VYRUNVVElPTl9TVFJBVEVHWSkgcHJpdmF0ZSBfZXhlY3V0aW9uU3RyYXRlZ3k6IE5neHNFeGVjdXRpb25TdHJhdGVneVxuICApIHt9XG5cbiAgZW50ZXI8VD4oZnVuYzogKCkgPT4gVCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9leGVjdXRpb25TdHJhdGVneS5lbnRlcihmdW5jKTtcbiAgfVxuXG4gIGxlYXZlPFQ+KGZ1bmM6ICgpID0+IFQpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fZXhlY3V0aW9uU3RyYXRlZ3kubGVhdmUoZnVuYyk7XG4gIH1cbn1cbiJdfQ==
@@ -1,17 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class NoopNgxsExecutionStrategy {
4
- enter(func) {
5
- return func();
6
- }
7
- leave(func) {
8
- return func();
9
- }
10
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NoopNgxsExecutionStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
11
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NoopNgxsExecutionStrategy, providedIn: 'root' }); }
12
- }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NoopNgxsExecutionStrategy, decorators: [{
14
- type: Injectable,
15
- args: [{ providedIn: 'root' }]
16
- }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcC1uZ3hzLWV4ZWN1dGlvbi1zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0b3JlL3NyYy9leGVjdXRpb24vbm9vcC1uZ3hzLWV4ZWN1dGlvbi1zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8seUJBQXlCO0lBQ3BDLEtBQUssQ0FBSSxJQUFhO1FBQ3BCLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBSSxJQUFhO1FBQ3BCLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQztpSUFQVSx5QkFBeUI7cUlBQXpCLHlCQUF5QixjQURaLE1BQU07OzJGQUNuQix5QkFBeUI7a0JBRHJDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOZ3hzRXhlY3V0aW9uU3RyYXRlZ3kgfSBmcm9tICcuL3N5bWJvbHMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE5vb3BOZ3hzRXhlY3V0aW9uU3RyYXRlZ3kgaW1wbGVtZW50cyBOZ3hzRXhlY3V0aW9uU3RyYXRlZ3kge1xuICBlbnRlcjxUPihmdW5jOiAoKSA9PiBUKTogVCB7XG4gICAgcmV0dXJuIGZ1bmMoKTtcbiAgfVxuXG4gIGxlYXZlPFQ+KGZ1bmM6ICgpID0+IFQpOiBUIHtcbiAgICByZXR1cm4gZnVuYygpO1xuICB9XG59XG4iXX0=
@@ -1,29 +0,0 @@
1
- import { InjectionToken, inject, INJECTOR, NgZone } from '@angular/core';
2
- import { NoopNgxsExecutionStrategy } from './noop-ngxs-execution-strategy';
3
- import { DispatchOutsideZoneNgxsExecutionStrategy } from './dispatch-outside-zone-ngxs-execution-strategy';
4
- const NG_DEV_MODE = typeof ngDevMode !== 'undefined' && ngDevMode;
5
- /**
6
- * Consumers have the option to utilize the execution strategy provided by
7
- * `NgxsModule.forRoot({executionStrategy})` or `provideStore([], {executionStrategy})`.
8
- */
9
- export const CUSTOM_NGXS_EXECUTION_STRATEGY = new InjectionToken(NG_DEV_MODE ? 'CUSTOM_NGXS_EXECUTION_STRATEGY' : '');
10
- /**
11
- * The injection token is used internally to resolve an instance of the execution
12
- * strategy. It checks whether consumers have provided their own `executionStrategy`
13
- * and also verifies if we are operating in a zone-aware environment.
14
- */
15
- export const NGXS_EXECUTION_STRATEGY = new InjectionToken(NG_DEV_MODE ? 'NGXS_EXECUTION_STRATEGY' : '', {
16
- providedIn: 'root',
17
- factory: () => {
18
- const ngZone = inject(NgZone);
19
- const injector = inject(INJECTOR);
20
- const executionStrategy = injector.get(CUSTOM_NGXS_EXECUTION_STRATEGY);
21
- const isNgZoneEnabled = ngZone instanceof NgZone;
22
- return executionStrategy
23
- ? injector.get(executionStrategy)
24
- : injector.get(isNgZoneEnabled
25
- ? DispatchOutsideZoneNgxsExecutionStrategy
26
- : NoopNgxsExecutionStrategy);
27
- }
28
- });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0b3JlL3NyYy9leGVjdXRpb24vc3ltYm9scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQVEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRTNHLE1BQU0sV0FBVyxHQUFHLE9BQU8sU0FBUyxLQUFLLFdBQVcsSUFBSSxTQUFTLENBQUM7QUFFbEU7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsSUFBSSxjQUFjLENBRTlELFdBQVcsQ0FBQyxDQUFDLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBRXZEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLGNBQWMsQ0FDdkQsV0FBVyxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUM1QztJQUNFLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sZUFBZSxHQUFHLE1BQU0sWUFBWSxNQUFNLENBQUM7UUFDakQsT0FBTyxpQkFBaUI7WUFDdEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUM7WUFDakMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQ1YsZUFBZTtnQkFDYixDQUFDLENBQUMsd0NBQXdDO2dCQUMxQyxDQUFDLENBQUMseUJBQXlCLENBQzlCLENBQUM7SUFDUixDQUFDO0NBQ0YsQ0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIGluamVjdCwgSU5KRUNUT1IsIFR5cGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOb29wTmd4c0V4ZWN1dGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9ub29wLW5neHMtZXhlY3V0aW9uLXN0cmF0ZWd5JztcbmltcG9ydCB7IERpc3BhdGNoT3V0c2lkZVpvbmVOZ3hzRXhlY3V0aW9uU3RyYXRlZ3kgfSBmcm9tICcuL2Rpc3BhdGNoLW91dHNpZGUtem9uZS1uZ3hzLWV4ZWN1dGlvbi1zdHJhdGVneSc7XG5cbmNvbnN0IE5HX0RFVl9NT0RFID0gdHlwZW9mIG5nRGV2TW9kZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbmdEZXZNb2RlO1xuXG4vKipcbiAqIENvbnN1bWVycyBoYXZlIHRoZSBvcHRpb24gdG8gdXRpbGl6ZSB0aGUgZXhlY3V0aW9uIHN0cmF0ZWd5IHByb3ZpZGVkIGJ5XG4gKiBgTmd4c01vZHVsZS5mb3JSb290KHtleGVjdXRpb25TdHJhdGVneX0pYCBvciBgcHJvdmlkZVN0b3JlKFtdLCB7ZXhlY3V0aW9uU3RyYXRlZ3l9KWAuXG4gKi9cbmV4cG9ydCBjb25zdCBDVVNUT01fTkdYU19FWEVDVVRJT05fU1RSQVRFR1kgPSBuZXcgSW5qZWN0aW9uVG9rZW48XG4gIFR5cGU8Tmd4c0V4ZWN1dGlvblN0cmF0ZWd5PiB8IHVuZGVmaW5lZFxuPihOR19ERVZfTU9ERSA/ICdDVVNUT01fTkdYU19FWEVDVVRJT05fU1RSQVRFR1knIDogJycpO1xuXG4vKipcbiAqIFRoZSBpbmplY3Rpb24gdG9rZW4gaXMgdXNlZCBpbnRlcm5hbGx5IHRvIHJlc29sdmUgYW4gaW5zdGFuY2Ugb2YgdGhlIGV4ZWN1dGlvblxuICogc3RyYXRlZ3kuIEl0IGNoZWNrcyB3aGV0aGVyIGNvbnN1bWVycyBoYXZlIHByb3ZpZGVkIHRoZWlyIG93biBgZXhlY3V0aW9uU3RyYXRlZ3lgXG4gKiBhbmQgYWxzbyB2ZXJpZmllcyBpZiB3ZSBhcmUgb3BlcmF0aW5nIGluIGEgem9uZS1hd2FyZSBlbnZpcm9ubWVudC5cbiAqL1xuZXhwb3J0IGNvbnN0IE5HWFNfRVhFQ1VUSU9OX1NUUkFURUdZID0gbmV3IEluamVjdGlvblRva2VuPE5neHNFeGVjdXRpb25TdHJhdGVneT4oXG4gIE5HX0RFVl9NT0RFID8gJ05HWFNfRVhFQ1VUSU9OX1NUUkFURUdZJyA6ICcnLFxuICB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3Rvcnk6ICgpID0+IHtcbiAgICAgIGNvbnN0IG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuICAgICAgY29uc3QgaW5qZWN0b3IgPSBpbmplY3QoSU5KRUNUT1IpO1xuICAgICAgY29uc3QgZXhlY3V0aW9uU3RyYXRlZ3kgPSBpbmplY3Rvci5nZXQoQ1VTVE9NX05HWFNfRVhFQ1VUSU9OX1NUUkFURUdZKTtcbiAgICAgIGNvbnN0IGlzTmdab25lRW5hYmxlZCA9IG5nWm9uZSBpbnN0YW5jZW9mIE5nWm9uZTtcbiAgICAgIHJldHVybiBleGVjdXRpb25TdHJhdGVneVxuICAgICAgICA/IGluamVjdG9yLmdldChleGVjdXRpb25TdHJhdGVneSlcbiAgICAgICAgOiBpbmplY3Rvci5nZXQoXG4gICAgICAgICAgICBpc05nWm9uZUVuYWJsZWRcbiAgICAgICAgICAgICAgPyBEaXNwYXRjaE91dHNpZGVab25lTmd4c0V4ZWN1dGlvblN0cmF0ZWd5XG4gICAgICAgICAgICAgIDogTm9vcE5neHNFeGVjdXRpb25TdHJhdGVneVxuICAgICAgICAgICk7XG4gICAgfVxuICB9XG4pO1xuXG4vKlxuICogRXhlY3V0aW9uIHN0cmF0ZWd5IGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5neHNFeGVjdXRpb25TdHJhdGVneSB7XG4gIGVudGVyPFQ+KGZ1bmM6ICgpID0+IFQpOiBUO1xuICBsZWF2ZTxUPihmdW5jOiAoKSA9PiBUKTogVDtcbn1cbiJdfQ==
@@ -1,106 +0,0 @@
1
- import { Injectable, NgZone } from '@angular/core';
2
- import { EMPTY, forkJoin, of, Subject, throwError } from 'rxjs';
3
- import { exhaustMap, filter, map, shareReplay, take } from 'rxjs/operators';
4
- import { getActionTypeFromInstance } from '@ngxs/store/plugins';
5
- import { ɵStateStream } from '@ngxs/store/internals';
6
- import { compose } from '../utils/compose';
7
- import { InternalActions } from '../actions-stream';
8
- import { PluginManager } from '../plugin-manager';
9
- import { InternalNgxsExecutionStrategy } from '../execution/internal-ngxs-execution-strategy';
10
- import { leaveNgxs } from '../operators/leave-ngxs';
11
- import { fallbackSubscriber } from './fallback-subscriber';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "../actions-stream";
14
- import * as i2 from "../plugin-manager";
15
- import * as i3 from "@ngxs/store/internals";
16
- import * as i4 from "../execution/internal-ngxs-execution-strategy";
17
- /**
18
- * Internal Action result stream that is emitted when an action is completed.
19
- * This is used as a method of returning the action result to the dispatcher
20
- * for the observable returned by the dispatch(...) call.
21
- * The dispatcher then asynchronously pushes the result from this stream onto the main action stream as a result.
22
- */
23
- export class InternalDispatchedActionResults extends Subject {
24
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: InternalDispatchedActionResults, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
25
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: InternalDispatchedActionResults, providedIn: 'root' }); }
26
- }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: InternalDispatchedActionResults, decorators: [{
28
- type: Injectable,
29
- args: [{ providedIn: 'root' }]
30
- }] });
31
- export class InternalDispatcher {
32
- constructor(_ngZone, _actions, _actionResults, _pluginManager, _stateStream, _ngxsExecutionStrategy) {
33
- this._ngZone = _ngZone;
34
- this._actions = _actions;
35
- this._actionResults = _actionResults;
36
- this._pluginManager = _pluginManager;
37
- this._stateStream = _stateStream;
38
- this._ngxsExecutionStrategy = _ngxsExecutionStrategy;
39
- }
40
- /**
41
- * Dispatches event(s).
42
- */
43
- dispatch(actionOrActions) {
44
- const result = this._ngxsExecutionStrategy.enter(() => this.dispatchByEvents(actionOrActions));
45
- return result.pipe(fallbackSubscriber(this._ngZone), leaveNgxs(this._ngxsExecutionStrategy));
46
- }
47
- dispatchByEvents(actionOrActions) {
48
- if (Array.isArray(actionOrActions)) {
49
- if (actionOrActions.length === 0)
50
- return of(undefined);
51
- return forkJoin(actionOrActions.map(action => this.dispatchSingle(action))).pipe(map(() => undefined));
52
- }
53
- else {
54
- return this.dispatchSingle(actionOrActions);
55
- }
56
- }
57
- dispatchSingle(action) {
58
- if (typeof ngDevMode !== 'undefined' && ngDevMode) {
59
- const type = getActionTypeFromInstance(action);
60
- if (!type) {
61
- const error = new Error(`This action doesn't have a type property: ${action.constructor.name}`);
62
- return throwError(() => error);
63
- }
64
- }
65
- const prevState = this._stateStream.getValue();
66
- const plugins = this._pluginManager.plugins;
67
- return compose([
68
- ...plugins,
69
- (nextState, nextAction) => {
70
- if (nextState !== prevState) {
71
- this._stateStream.next(nextState);
72
- }
73
- const actionResult$ = this.getActionResultStream(nextAction);
74
- actionResult$.subscribe(ctx => this._actions.next(ctx));
75
- this._actions.next({ action: nextAction, status: "DISPATCHED" /* ActionStatus.Dispatched */ });
76
- return this.createDispatchObservable(actionResult$);
77
- }
78
- ])(prevState, action).pipe(shareReplay());
79
- }
80
- getActionResultStream(action) {
81
- return this._actionResults.pipe(filter((ctx) => ctx.action === action && ctx.status !== "DISPATCHED" /* ActionStatus.Dispatched */), take(1), shareReplay());
82
- }
83
- createDispatchObservable(actionResult$) {
84
- return actionResult$
85
- .pipe(exhaustMap((ctx) => {
86
- switch (ctx.status) {
87
- case "SUCCESSFUL" /* ActionStatus.Successful */:
88
- // The `createDispatchObservable` function should return the
89
- // state, as its result is utilized by plugins.
90
- return of(this._stateStream.getValue());
91
- case "ERRORED" /* ActionStatus.Errored */:
92
- return throwError(() => ctx.error);
93
- default:
94
- return EMPTY;
95
- }
96
- }))
97
- .pipe(shareReplay());
98
- }
99
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: InternalDispatcher, deps: [{ token: i0.NgZone }, { token: i1.InternalActions }, { token: InternalDispatchedActionResults }, { token: i2.PluginManager }, { token: i3.ɵStateStream }, { token: i4.InternalNgxsExecutionStrategy }], target: i0.ɵɵFactoryTarget.Injectable }); }
100
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: InternalDispatcher, providedIn: 'root' }); }
101
- }
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: InternalDispatcher, decorators: [{
103
- type: Injectable,
104
- args: [{ providedIn: 'root' }]
105
- }], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.InternalActions }, { type: InternalDispatchedActionResults }, { type: i2.PluginManager }, { type: i3.ɵStateStream }, { type: i4.InternalNgxsExecutionStrategy }] });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0b3JlL3NyYy9pbnRlcm5hbC9kaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxFQUFnQixZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUErQixlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDOUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFFM0Q7Ozs7O0dBS0c7QUFFSCxNQUFNLE9BQU8sK0JBQWdDLFNBQVEsT0FBc0I7aUlBQTlELCtCQUErQjtxSUFBL0IsK0JBQStCLGNBRGxCLE1BQU07OzJGQUNuQiwrQkFBK0I7a0JBRDNDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQUlsQyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQ1UsT0FB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Q0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVPLHFCQUFxQixDQUFDLE1BQVc7UUFDdkMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDN0IsTUFBTSxDQUNKLENBQUMsR0FBa0IsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sK0NBQTRCLENBQ3hGLEVBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFdBQVcsRUFBRSxDQUNkLENBQUM7SUFDSixDQUFDO0lBRU8sd0JBQXdCLENBQzlCLGFBQXdDO1FBRXhDLE9BQU8sYUFBYTthQUNqQixJQUFJLENBQ0gsVUFBVSxDQUFDLENBQUMsR0FBa0IsRUFBRSxFQUFFO1lBQ2hDLFFBQVEsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNuQjtvQkFDRSw0REFBNEQ7b0JBQzVELCtDQUErQztvQkFDL0MsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUMxQztvQkFDRSxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JDO29CQUNFLE9BQU8sS0FBSyxDQUFDO1lBQ2pCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSDthQUNBLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7aUlBN0ZVLGtCQUFrQjtxSUFBbEIsa0JBQWtCLGNBREwsTUFBTTs7MkZBQ25CLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVNUFRZLCBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGV4aGF1c3RNYXAsIGZpbHRlciwgbWFwLCBzaGFyZVJlcGxheSwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgZ2V0QWN0aW9uVHlwZUZyb21JbnN0YW5jZSB9IGZyb20gJ0BuZ3hzL3N0b3JlL3BsdWdpbnMnO1xuaW1wb3J0IHsgybVQbGFpbk9iamVjdCwgybVTdGF0ZVN0cmVhbSB9IGZyb20gJ0BuZ3hzL3N0b3JlL2ludGVybmFscyc7XG5cbmltcG9ydCB7IGNvbXBvc2UgfSBmcm9tICcuLi91dGlscy9jb21wb3NlJztcbmltcG9ydCB7IEFjdGlvbkNvbnRleHQsIEFjdGlvblN0YXR1cywgSW50ZXJuYWxBY3Rpb25zIH0gZnJvbSAnLi4vYWN0aW9ucy1zdHJlYW0nO1xuaW1wb3J0IHsgUGx1Z2luTWFuYWdlciB9IGZyb20gJy4uL3BsdWdpbi1tYW5hZ2VyJztcbmltcG9ydCB7IEludGVybmFsTmd4c0V4ZWN1dGlvblN0cmF0ZWd5IH0gZnJvbSAnLi4vZXhlY3V0aW9uL2ludGVybmFsLW5neHMtZXhlY3V0aW9uLXN0cmF0ZWd5JztcbmltcG9ydCB7IGxlYXZlTmd4cyB9IGZyb20gJy4uL29wZXJhdG9ycy9sZWF2ZS1uZ3hzJztcbmltcG9ydCB7IGZhbGxiYWNrU3Vic2NyaWJlciB9IGZyb20gJy4vZmFsbGJhY2stc3Vic2NyaWJlcic7XG5cbi8qKlxuICogSW50ZXJuYWwgQWN0aW9uIHJlc3VsdCBzdHJlYW0gdGhhdCBpcyBlbWl0dGVkIHdoZW4gYW4gYWN0aW9uIGlzIGNvbXBsZXRlZC5cbiAqIFRoaXMgaXMgdXNlZCBhcyBhIG1ldGhvZCBvZiByZXR1cm5pbmcgdGhlIGFjdGlvbiByZXN1bHQgdG8gdGhlIGRpc3BhdGNoZXJcbiAqIGZvciB0aGUgb2JzZXJ2YWJsZSByZXR1cm5lZCBieSB0aGUgZGlzcGF0Y2goLi4uKSBjYWxsLlxuICogVGhlIGRpc3BhdGNoZXIgdGhlbiBhc3luY2hyb25vdXNseSBwdXNoZXMgdGhlIHJlc3VsdCBmcm9tIHRoaXMgc3RyZWFtIG9udG8gdGhlIG1haW4gYWN0aW9uIHN0cmVhbSBhcyBhIHJlc3VsdC5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBJbnRlcm5hbERpc3BhdGNoZWRBY3Rpb25SZXN1bHRzIGV4dGVuZHMgU3ViamVjdDxBY3Rpb25Db250ZXh0PiB7fVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEludGVybmFsRGlzcGF0Y2hlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgX2FjdGlvbnM6IEludGVybmFsQWN0aW9ucyxcbiAgICBwcml2YXRlIF9hY3Rpb25SZXN1bHRzOiBJbnRlcm5hbERpc3BhdGNoZWRBY3Rpb25SZXN1bHRzLFxuICAgIHByaXZhdGUgX3BsdWdpbk1hbmFnZXI6IFBsdWdpbk1hbmFnZXIsXG4gICAgcHJpdmF0ZSBfc3RhdGVTdHJlYW06IMm1U3RhdGVTdHJlYW0sXG4gICAgcHJpdmF0ZSBfbmd4c0V4ZWN1dGlvblN0cmF0ZWd5OiBJbnRlcm5hbE5neHNFeGVjdXRpb25TdHJhdGVneVxuICApIHt9XG5cbiAgLyoqXG4gICAqIERpc3BhdGNoZXMgZXZlbnQocykuXG4gICAqL1xuICBkaXNwYXRjaChhY3Rpb25PckFjdGlvbnM6IGFueSB8IGFueVtdKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fbmd4c0V4ZWN1dGlvblN0cmF0ZWd5LmVudGVyKCgpID0+XG4gICAgICB0aGlzLmRpc3BhdGNoQnlFdmVudHMoYWN0aW9uT3JBY3Rpb25zKVxuICAgICk7XG5cbiAgICByZXR1cm4gcmVzdWx0LnBpcGUoXG4gICAgICBmYWxsYmFja1N1YnNjcmliZXIodGhpcy5fbmdab25lKSxcbiAgICAgIGxlYXZlTmd4cyh0aGlzLl9uZ3hzRXhlY3V0aW9uU3RyYXRlZ3kpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGF0Y2hCeUV2ZW50cyhhY3Rpb25PckFjdGlvbnM6IGFueSB8IGFueVtdKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYWN0aW9uT3JBY3Rpb25zKSkge1xuICAgICAgaWYgKGFjdGlvbk9yQWN0aW9ucy5sZW5ndGggPT09IDApIHJldHVybiBvZih1bmRlZmluZWQpO1xuXG4gICAgICByZXR1cm4gZm9ya0pvaW4oYWN0aW9uT3JBY3Rpb25zLm1hcChhY3Rpb24gPT4gdGhpcy5kaXNwYXRjaFNpbmdsZShhY3Rpb24pKSkucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHVuZGVmaW5lZClcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoU2luZ2xlKGFjdGlvbk9yQWN0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkaXNwYXRjaFNpbmdsZShhY3Rpb246IGFueSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGlmICh0eXBlb2YgbmdEZXZNb2RlICE9PSAndW5kZWZpbmVkJyAmJiBuZ0Rldk1vZGUpIHtcbiAgICAgIGNvbnN0IHR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UoYWN0aW9uKTtcbiAgICAgIGlmICghdHlwZSkge1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihcbiAgICAgICAgICBgVGhpcyBhY3Rpb24gZG9lc24ndCBoYXZlIGEgdHlwZSBwcm9wZXJ0eTogJHthY3Rpb24uY29uc3RydWN0b3IubmFtZX1gXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLl9zdGF0ZVN0cmVhbS5nZXRWYWx1ZSgpO1xuICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLl9wbHVnaW5NYW5hZ2VyLnBsdWdpbnM7XG5cbiAgICByZXR1cm4gY29tcG9zZShbXG4gICAgICAuLi5wbHVnaW5zLFxuICAgICAgKG5leHRTdGF0ZTogYW55LCBuZXh0QWN0aW9uOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKG5leHRTdGF0ZSAhPT0gcHJldlN0YXRlKSB7XG4gICAgICAgICAgdGhpcy5fc3RhdGVTdHJlYW0ubmV4dChuZXh0U3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGlvblJlc3VsdCQgPSB0aGlzLmdldEFjdGlvblJlc3VsdFN0cmVhbShuZXh0QWN0aW9uKTtcbiAgICAgICAgYWN0aW9uUmVzdWx0JC5zdWJzY3JpYmUoY3R4ID0+IHRoaXMuX2FjdGlvbnMubmV4dChjdHgpKTtcbiAgICAgICAgdGhpcy5fYWN0aW9ucy5uZXh0KHsgYWN0aW9uOiBuZXh0QWN0aW9uLCBzdGF0dXM6IEFjdGlvblN0YXR1cy5EaXNwYXRjaGVkIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVEaXNwYXRjaE9ic2VydmFibGUoYWN0aW9uUmVzdWx0JCk7XG4gICAgICB9XG4gICAgXSkocHJldlN0YXRlLCBhY3Rpb24pLnBpcGUoc2hhcmVSZXBsYXkoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldEFjdGlvblJlc3VsdFN0cmVhbShhY3Rpb246IGFueSk6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dD4ge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpb25SZXN1bHRzLnBpcGUoXG4gICAgICBmaWx0ZXIoXG4gICAgICAgIChjdHg6IEFjdGlvbkNvbnRleHQpID0+IGN0eC5hY3Rpb24gPT09IGFjdGlvbiAmJiBjdHguc3RhdHVzICE9PSBBY3Rpb25TdGF0dXMuRGlzcGF0Y2hlZFxuICAgICAgKSxcbiAgICAgIHRha2UoMSksXG4gICAgICBzaGFyZVJlcGxheSgpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGlzcGF0Y2hPYnNlcnZhYmxlKFxuICAgIGFjdGlvblJlc3VsdCQ6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dD5cbiAgKTogT2JzZXJ2YWJsZTzJtVBsYWluT2JqZWN0PiB7XG4gICAgcmV0dXJuIGFjdGlvblJlc3VsdCRcbiAgICAgIC5waXBlKFxuICAgICAgICBleGhhdXN0TWFwKChjdHg6IEFjdGlvbkNvbnRleHQpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGN0eC5zdGF0dXMpIHtcbiAgICAgICAgICAgIGNhc2UgQWN0aW9uU3RhdHVzLlN1Y2Nlc3NmdWw6XG4gICAgICAgICAgICAgIC8vIFRoZSBgY3JlYXRlRGlzcGF0Y2hPYnNlcnZhYmxlYCBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHRoZVxuICAgICAgICAgICAgICAvLyBzdGF0ZSwgYXMgaXRzIHJlc3VsdCBpcyB1dGlsaXplZCBieSBwbHVnaW5zLlxuICAgICAgICAgICAgICByZXR1cm4gb2YodGhpcy5fc3RhdGVTdHJlYW0uZ2V0VmFsdWUoKSk7XG4gICAgICAgICAgICBjYXNlIEFjdGlvblN0YXR1cy5FcnJvcmVkOlxuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBjdHguZXJyb3IpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5waXBlKHNoYXJlUmVwbGF5KCkpO1xuICB9XG59XG4iXX0=
@@ -1,29 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- import { executeUnhandledCallback } from './unhandled-rxjs-error-callback';
3
- export function fallbackSubscriber(ngZone) {
4
- return (source) => {
5
- let subscription = source.subscribe({
6
- error: error => {
7
- ngZone.runOutsideAngular(() => {
8
- // This is necessary to schedule a microtask to ensure that synchronous
9
- // errors are not reported before the real subscriber arrives. If an error
10
- // is thrown synchronously in any action, it will be reported to the error
11
- // handler regardless. Since RxJS reports unhandled errors asynchronously,
12
- // implementing a microtask ensures that we are also safe in this scenario.
13
- queueMicrotask(() => {
14
- if (subscription) {
15
- executeUnhandledCallback(error);
16
- }
17
- });
18
- });
19
- }
20
- });
21
- return new Observable(subscriber => {
22
- // Now that there is a real subscriber, we can unsubscribe our pro-active subscription
23
- subscription?.unsubscribe();
24
- subscription = null;
25
- return source.subscribe(subscriber);
26
- });
27
- };
28
- }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFsbGJhY2stc3Vic2NyaWJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0b3JlL3NyYy9pbnRlcm5hbC9mYWxsYmFjay1zdWJzY3JpYmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTNFLE1BQU0sVUFBVSxrQkFBa0IsQ0FBSSxNQUFjO0lBQ2xELE9BQU8sQ0FBQyxNQUFxQixFQUFFLEVBQUU7UUFDL0IsSUFBSSxZQUFZLEdBQXdCLE1BQU0sQ0FBQyxTQUFTLENBQUM7WUFDdkQsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNiLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7b0JBQzVCLHVFQUF1RTtvQkFDdkUsMEVBQTBFO29CQUMxRSwwRUFBMEU7b0JBQzFFLDBFQUEwRTtvQkFDMUUsMkVBQTJFO29CQUMzRSxjQUFjLENBQUMsR0FBRyxFQUFFO3dCQUNsQixJQUFJLFlBQVksRUFBRSxDQUFDOzRCQUNqQix3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDbEMsQ0FBQztvQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksVUFBVSxDQUFJLFVBQVUsQ0FBQyxFQUFFO1lBQ3BDLHNGQUFzRjtZQUN0RixZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDNUIsWUFBWSxHQUFHLElBQUksQ0FBQztZQUVwQixPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgZXhlY3V0ZVVuaGFuZGxlZENhbGxiYWNrIH0gZnJvbSAnLi91bmhhbmRsZWQtcnhqcy1lcnJvci1jYWxsYmFjayc7XG5cbmV4cG9ydCBmdW5jdGlvbiBmYWxsYmFja1N1YnNjcmliZXI8VD4obmdab25lOiBOZ1pvbmUpIHtcbiAgcmV0dXJuIChzb3VyY2U6IE9ic2VydmFibGU8VD4pID0+IHtcbiAgICBsZXQgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gc291cmNlLnN1YnNjcmliZSh7XG4gICAgICBlcnJvcjogZXJyb3IgPT4ge1xuICAgICAgICBuZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIHNjaGVkdWxlIGEgbWljcm90YXNrIHRvIGVuc3VyZSB0aGF0IHN5bmNocm9ub3VzXG4gICAgICAgICAgLy8gZXJyb3JzIGFyZSBub3QgcmVwb3J0ZWQgYmVmb3JlIHRoZSByZWFsIHN1YnNjcmliZXIgYXJyaXZlcy4gSWYgYW4gZXJyb3JcbiAgICAgICAgICAvLyBpcyB0aHJvd24gc3luY2hyb25vdXNseSBpbiBhbnkgYWN0aW9uLCBpdCB3aWxsIGJlIHJlcG9ydGVkIHRvIHRoZSBlcnJvclxuICAgICAgICAgIC8vIGhhbmRsZXIgcmVnYXJkbGVzcy4gU2luY2UgUnhKUyByZXBvcnRzIHVuaGFuZGxlZCBlcnJvcnMgYXN5bmNocm9ub3VzbHksXG4gICAgICAgICAgLy8gaW1wbGVtZW50aW5nIGEgbWljcm90YXNrIGVuc3VyZXMgdGhhdCB3ZSBhcmUgYWxzbyBzYWZlIGluIHRoaXMgc2NlbmFyaW8uXG4gICAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICBleGVjdXRlVW5oYW5kbGVkQ2FsbGJhY2soZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPihzdWJzY3JpYmVyID0+IHtcbiAgICAgIC8vIE5vdyB0aGF0IHRoZXJlIGlzIGEgcmVhbCBzdWJzY3JpYmVyLCB3ZSBjYW4gdW5zdWJzY3JpYmUgb3VyIHByby1hY3RpdmUgc3Vic2NyaXB0aW9uXG4gICAgICBzdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICBzdWJzY3JpcHRpb24gPSBudWxsO1xuXG4gICAgICByZXR1cm4gc291cmNlLnN1YnNjcmliZShzdWJzY3JpYmVyKTtcbiAgICB9KTtcbiAgfTtcbn1cbiJdfQ==
@@ -1,206 +0,0 @@
1
- import { InjectionToken, inject } from '@angular/core';
2
- import { ɵMETA_KEY } from '@ngxs/store/internals';
3
- import { NgxsConfig } from '../symbols';
4
- const NG_DEV_MODE = typeof ngDevMode !== 'undefined' && ngDevMode;
5
- /**
6
- * Get a deeply nested value. Example:
7
- *
8
- * getValue({ foo: bar: [] }, 'foo.bar') //=> []
9
- *
10
- * Note: This is not as fast as the `fastPropGetter` but is strict Content Security Policy compliant.
11
- * See perf hit: https://jsperf.com/fast-value-getter-given-path/1
12
- *
13
- * @ignore
14
- */
15
- function compliantPropGetter(paths) {
16
- return obj => {
17
- for (let i = 0; i < paths.length; i++) {
18
- if (!obj)
19
- return undefined;
20
- obj = obj[paths[i]];
21
- }
22
- return obj;
23
- };
24
- }
25
- /**
26
- * The generated function is faster than:
27
- * - pluck (Observable operator)
28
- * - memoize
29
- *
30
- * @ignore
31
- */
32
- function fastPropGetter(paths) {
33
- const segments = paths;
34
- let seg = 'store.' + segments[0];
35
- let i = 0;
36
- const l = segments.length;
37
- let expr = seg;
38
- while (++i < l) {
39
- expr = expr + ' && ' + (seg = seg + '.' + segments[i]);
40
- }
41
- const fn = new Function('store', 'return ' + expr + ';');
42
- return fn;
43
- }
44
- /**
45
- * Get a deeply nested value. Example:
46
- *
47
- * getValue({ foo: bar: [] }, 'foo.bar') //=> []
48
- *
49
- * @ignore
50
- *
51
- * Marked for removal. It's only used within `createSelectorFn`.
52
- */
53
- export function propGetter(paths, config) {
54
- if (config?.compatibility?.strictContentSecurityPolicy) {
55
- return compliantPropGetter(paths);
56
- }
57
- else {
58
- return fastPropGetter(paths);
59
- }
60
- }
61
- // This injection token selects the prop getter implementation once the app is
62
- // bootstrapped, as the `propGetter` function's behavior determines the implementation
63
- // each time it's called. It accepts the config as the second argument. We no longer
64
- // need to check for the `strictContentSecurityPolicy` every time the prop getter
65
- // implementation is selected. Now, the `propGetter` function is only used within
66
- // `createSelectorFn`, which, in turn, is solely used by the `Select` decorator.
67
- // We've been trying to deprecate the `Select` decorator because it's unstable with
68
- // server-side rendering and micro-frontend applications.
69
- export const ɵPROP_GETTER = new InjectionToken(NG_DEV_MODE ? 'PROP_GETTER' : '', {
70
- providedIn: 'root',
71
- factory: () => inject(NgxsConfig).compatibility?.strictContentSecurityPolicy
72
- ? compliantPropGetter
73
- : fastPropGetter
74
- });
75
- /**
76
- * Given an array of states, it will return a object graph. Example:
77
- * const states = [
78
- * Cart,
79
- * CartSaved,
80
- * CartSavedItems
81
- * ]
82
- *
83
- * would return:
84
- *
85
- * const graph = {
86
- * cart: ['saved'],
87
- * saved: ['items'],
88
- * items: []
89
- * };
90
- *
91
- * @ignore
92
- */
93
- export function buildGraph(stateClasses) {
94
- const findName = (stateClass) => {
95
- const meta = stateClasses.find(g => g === stateClass);
96
- if (NG_DEV_MODE && !meta) {
97
- throw new Error(`Child state not found: ${stateClass}. \r\nYou may have forgotten to add states to module`);
98
- }
99
- return meta[ɵMETA_KEY].name;
100
- };
101
- return stateClasses.reduce((result, stateClass) => {
102
- const { name, children } = stateClass[ɵMETA_KEY];
103
- result[name] = (children || []).map(findName);
104
- return result;
105
- }, {});
106
- }
107
- /**
108
- * Given a states array, returns object graph
109
- * returning the name and state metadata. Example:
110
- *
111
- * const graph = {
112
- * cart: { metadata }
113
- * };
114
- *
115
- * @ignore
116
- */
117
- export function nameToState(states) {
118
- return states.reduce((result, stateClass) => {
119
- const meta = stateClass[ɵMETA_KEY];
120
- result[meta.name] = stateClass;
121
- return result;
122
- }, {});
123
- }
124
- /**
125
- * Given a object relationship graph will return the full path
126
- * for the child items. Example:
127
- *
128
- * const graph = {
129
- * cart: ['saved'],
130
- * saved: ['items'],
131
- * items: []
132
- * };
133
- *
134
- * would return:
135
- *
136
- * const r = {
137
- * cart: 'cart',
138
- * saved: 'cart.saved',
139
- * items: 'cart.saved.items'
140
- * };
141
- *
142
- * @ignore
143
- */
144
- export function findFullParentPath(obj, newObj = {}) {
145
- const visit = (child, keyToFind) => {
146
- for (const key in child) {
147
- if (child.hasOwnProperty(key) && child[key].indexOf(keyToFind) >= 0) {
148
- const parent = visit(child, key);
149
- return parent !== null ? `${parent}.${key}` : key;
150
- }
151
- }
152
- return null;
153
- };
154
- for (const key in obj) {
155
- if (obj.hasOwnProperty(key)) {
156
- const parent = visit(obj, key);
157
- newObj[key] = parent ? `${parent}.${key}` : key;
158
- }
159
- }
160
- return newObj;
161
- }
162
- /**
163
- * Given a object graph, it will return the items topologically sorted Example:
164
- *
165
- * const graph = {
166
- * cart: ['saved'],
167
- * saved: ['items'],
168
- * items: []
169
- * };
170
- *
171
- * would return:
172
- *
173
- * const results = [
174
- * 'items',
175
- * 'saved',
176
- * 'cart'
177
- * ];
178
- *
179
- * @ignore
180
- */
181
- export function topologicalSort(graph) {
182
- const sorted = [];
183
- const visited = {};
184
- const visit = (name, ancestors = []) => {
185
- if (!Array.isArray(ancestors)) {
186
- ancestors = [];
187
- }
188
- ancestors.push(name);
189
- visited[name] = true;
190
- graph[name].forEach((dep) => {
191
- if (NG_DEV_MODE && ancestors.indexOf(dep) >= 0) {
192
- throw new Error(`Circular dependency '${dep}' is required by '${name}': ${ancestors.join(' -> ')}`);
193
- }
194
- if (visited[dep]) {
195
- return;
196
- }
197
- visit(dep, ancestors.slice(0));
198
- });
199
- if (sorted.indexOf(name) < 0) {
200
- sorted.push(name);
201
- }
202
- };
203
- Object.keys(graph).forEach(k => visit(k));
204
- return sorted.reverse();
205
- }
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RvcmUvc3JjL2ludGVybmFsL2ludGVybmFscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2RCxPQUFPLEVBQ0wsU0FBUyxFQUlWLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUl4QyxNQUFNLFdBQVcsR0FBRyxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxDQUFDO0FBMkJsRTs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLG1CQUFtQixDQUFDLEtBQWU7SUFDMUMsT0FBTyxHQUFHLENBQUMsRUFBRTtRQUNYLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTyxTQUFTLENBQUM7WUFDM0IsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBUyxjQUFjLENBQUMsS0FBZTtJQUNyQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDdkIsSUFBSSxHQUFHLEdBQUcsUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDVixNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBRTFCLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNmLE9BQU8sRUFBRSxDQUFDLEdBQUcs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QUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUM5QixTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLENBQUM7UUFFRCxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7UUFFckIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO1lBQ2xDLElBQUksV0FBVyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQy9DLE1BQU0sSUFBSSxLQUFLLENBQ2Isd0JBQXdCLEdBQUcscUJBQXFCLElBQUksTUFBTSxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ25GLENBQUM7WUFDSixDQUFDO1lBRUQsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDakIsT0FBTztZQUNULENBQUM7WUFFRCxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTFDLE9BQU8sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIMm1TUVUQV9LRVksXG4gIMm1UGxhaW5PYmplY3RPZixcbiAgybVTdGF0ZUNsYXNzSW50ZXJuYWwsXG4gIMm1QWN0aW9uSGFuZGxlck1ldGFEYXRhXG59IGZyb20gJ0BuZ3hzL3N0b3JlL2ludGVybmFscyc7XG5cbmltcG9ydCB7IE5neHNDb25maWcgfSBmcm9tICcuLi9zeW1ib2xzJztcblxuZGVjbGFyZSBjb25zdCBuZ0Rldk1vZGU6IGJvb2xlYW47XG5cbmNvbnN0IE5HX0RFVl9NT0RFID0gdHlwZW9mIG5nRGV2TW9kZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbmdEZXZNb2RlO1xuXG5leHBvcnQgdHlwZSBTdGF0ZUtleUdyYXBoID0gybVQbGFpbk9iamVjdE9mPHN0cmluZ1tdPjtcbmV4cG9ydCB0eXBlIFN0YXRlc0J5TmFtZSA9IMm1UGxhaW5PYmplY3RPZjzJtVN0YXRlQ2xhc3NJbnRlcm5hbD47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGVPcGVyYXRpb25zPFQ+IHtcbiAgZ2V0U3RhdGUoKTogVDtcblxuICBzZXRTdGF0ZSh2YWw6IFQpOiB2b2lkO1xuXG4gIGRpc3BhdGNoKGFjdGlvbk9yQWN0aW9uczogYW55IHwgYW55W10pOiBPYnNlcnZhYmxlPHZvaWQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcHBlZFN0b3JlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBpc0luaXRpYWxpc2VkOiBib29sZWFuO1xuICBhY3Rpb25zOiDJtVBsYWluT2JqZWN0T2Y8ybVBY3Rpb25IYW5kbGVyTWV0YURhdGFbXT47XG4gIGRlZmF1bHRzOiBhbnk7XG4gIGluc3RhbmNlOiBhbnk7XG4gIHBhdGg6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZXNBbmREZWZhdWx0cyB7XG4gIGRlZmF1bHRzOiBhbnk7XG4gIHN0YXRlczogTWFwcGVkU3RvcmVbXTtcbn1cblxuLyoqXG4gKiBHZXQgYSBkZWVwbHkgbmVzdGVkIHZhbHVlLiBFeGFtcGxlOlxuICpcbiAqICAgIGdldFZhbHVlKHsgZm9vOiBiYXI6IFtdIH0sICdmb28uYmFyJykgLy89PiBbXVxuICpcbiAqIE5vdGU6IFRoaXMgaXMgbm90IGFzIGZhc3QgYXMgdGhlIGBmYXN0UHJvcEdldHRlcmAgYnV0IGlzIHN0cmljdCBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBjb21wbGlhbnQuXG4gKiBTZWUgcGVyZiBoaXQ6IGh0dHBzOi8vanNwZXJmLmNvbS9mYXN0LXZhbHVlLWdldHRlci1naXZlbi1wYXRoLzFcbiAqXG4gKiBAaWdub3JlXG4gKi9cbmZ1bmN0aW9uIGNvbXBsaWFudFByb3BHZXR0ZXIocGF0aHM6IHN0cmluZ1tdKTogKHg6IGFueSkgPT4gYW55IHtcbiAgcmV0dXJuIG9iaiA9PiB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRocy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFvYmopIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICBvYmogPSBvYmpbcGF0aHNbaV1dO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9O1xufVxuXG4vKipcbiAqIFRoZSBnZW5lcmF0ZWQgZnVuY3Rpb24gaXMgZmFzdGVyIHRoYW46XG4gKiAtIHBsdWNrIChPYnNlcnZhYmxlIG9wZXJhdG9yKVxuICogLSBtZW1vaXplXG4gKlxuICogQGlnbm9yZVxuICovXG5mdW5jdGlvbiBmYXN0UHJvcEdldHRlcihwYXRoczogc3RyaW5nW10pOiAoeDogYW55KSA9PiBhbnkge1xuICBjb25zdCBzZWdtZW50cyA9IHBhdGhzO1xuICBsZXQgc2VnID0gJ3N0b3JlLicgKyBzZWdtZW50c1swXTtcbiAgbGV0IGkgPSAwO1xuICBjb25zdCBsID0gc2VnbWVudHMubGVuZ3RoO1xuXG4gIGxldCBleHByID0gc2VnO1xuICB3aGlsZSAoKytpIDwgbCkge1xuICAgIGV4cHIgPSBleHByICsgJyAmJiAnICsgKHNlZyA9IHNlZyArICcuJyArIHNlZ21lbnRzW2ldKTtcbiAgfVxuXG4gIGNvbnN0IGZuID0gbmV3IEZ1bmN0aW9uKCdzdG9yZScsICdyZXR1cm4gJyArIGV4cHIgKyAnOycpO1xuXG4gIHJldHVybiA8KHg6IGFueSkgPT4gYW55PmZuO1xufVxuXG4vKipcbiAqIEdldCBhIGRlZXBseSBuZXN0ZWQgdmFsdWUuIEV4YW1wbGU6XG4gKlxuICogICAgZ2V0VmFsdWUoeyBmb286IGJhcjogW10gfSwgJ2Zvby5iYXInKSAvLz0+IFtdXG4gKlxuICogQGlnbm9yZVxuICpcbiAqIE1hcmtlZCBmb3IgcmVtb3ZhbC4gSXQncyBvbmx5IHVzZWQgd2l0aGluIGBjcmVhdGVTZWxlY3RvckZuYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3BHZXR0ZXIocGF0aHM6IHN0cmluZ1tdLCBjb25maWc6IE5neHNDb25maWcpIHtcbiAgaWYgKGNvbmZpZz8uY29tcGF0aWJpbGl0eT8uc3RyaWN0Q29udGVudFNlY3VyaXR5UG9saWN5KSB7XG4gICAgcmV0dXJuIGNvbXBsaWFudFByb3BHZXR0ZXIocGF0aHMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYXN0UHJvcEdldHRlcihwYXRocyk7XG4gIH1cbn1cblxuLy8gVGhpcyBpbmplY3Rpb24gdG9rZW4gc2VsZWN0cyB0aGUgcHJvcCBnZXR0ZXIgaW1wbGVtZW50YXRpb24gb25jZSB0aGUgYXBwIGlzXG4vLyBib290c3RyYXBwZWQsIGFzIHRoZSBgcHJvcEdldHRlcmAgZnVuY3Rpb24ncyBiZWhhdmlvciBkZXRlcm1pbmVzIHRoZSBpbXBsZW1lbnRhdGlvblxuLy8gZWFjaCB0aW1lIGl0J3MgY2FsbGVkLiBJdCBhY2NlcHRzIHRoZSBjb25maWcgYXMgdGhlIHNlY29uZCBhcmd1bWVudC4gV2Ugbm8gbG9uZ2VyXG4vLyBuZWVkIHRvIGNoZWNrIGZvciB0aGUgYHN0cmljdENvbnRlbnRTZWN1cml0eVBvbGljeWAgZXZlcnkgdGltZSB0aGUgcHJvcCBnZXR0ZXJcbi8vIGltcGxlbWVudGF0aW9uIGlzIHNlbGVjdGVkLiBOb3csIHRoZSBgcHJvcEdldHRlcmAgZnVuY3Rpb24gaXMgb25seSB1c2VkIHdpdGhpblxuLy8gYGNyZWF0ZVNlbGVjdG9yRm5gLCB3aGljaCwgaW4gdHVybiwgaXMgc29sZWx5IHVzZWQgYnkgdGhlIGBTZWxlY3RgIGRlY29yYXRvci5cbi8vIFdlJ3ZlIGJlZW4gdHJ5aW5nIHRvIGRlcHJlY2F0ZSB0aGUgYFNlbGVjdGAgZGVjb3JhdG9yIGJlY2F1c2UgaXQncyB1bnN0YWJsZSB3aXRoXG4vLyBzZXJ2ZXItc2lkZSByZW5kZXJpbmcgYW5kIG1pY3JvLWZyb250ZW5kIGFwcGxpY2F0aW9ucy5cbmV4cG9ydCBjb25zdCDJtVBST1BfR0VUVEVSID0gbmV3IEluamVjdGlvblRva2VuPChwYXRoczogc3RyaW5nW10pID0+ICh4OiBhbnkpID0+IGFueT4oXG4gIE5HX0RFVl9NT0RFID8gJ1BST1BfR0VUVEVSJyA6ICcnLFxuICB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3Rvcnk6ICgpID0+XG4gICAgICBpbmplY3QoTmd4c0NvbmZpZykuY29tcGF0aWJpbGl0eT8uc3RyaWN0Q29udGVudFNlY3VyaXR5UG9saWN5XG4gICAgICAgID8gY29tcGxpYW50UHJvcEdldHRlclxuICAgICAgICA6IGZhc3RQcm9wR2V0dGVyXG4gIH1cbik7XG5cbi8qKlxuICogR2l2ZW4gYW4gYXJyYXkgb2Ygc3RhdGVzLCBpdCB3aWxsIHJldHVybiBhIG9iamVjdCBncmFwaC4gRXhhbXBsZTpcbiAqICAgIGNvbnN0IHN0YXRlcyA9IFtcbiAqICAgICAgQ2FydCxcbiAqICAgICAgQ2FydFNhdmVkLFxuICogICAgICBDYXJ0U2F2ZWRJdGVtc1xuICogICAgXVxuICpcbiAqIHdvdWxkIHJldHVybjpcbiAqXG4gKiAgY29uc3QgZ3JhcGggPSB7XG4gKiAgICBjYXJ0OiBbJ3NhdmVkJ10sXG4gKiAgICBzYXZlZDogWydpdGVtcyddLFxuICogICAgaXRlbXM6IFtdXG4gKiAgfTtcbiAqXG4gKiBAaWdub3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEdyYXBoKHN0YXRlQ2xhc3NlczogybVTdGF0ZUNsYXNzSW50ZXJuYWxbXSk6IFN0YXRlS2V5R3JhcGgge1xuICBjb25zdCBmaW5kTmFtZSA9IChzdGF0ZUNsYXNzOiDJtVN0YXRlQ2xhc3NJbnRlcm5hbCkgPT4ge1xuICAgIGNvbnN0IG1ldGEgPSBzdGF0ZUNsYXNzZXMuZmluZChnID0+IGcgPT09IHN0YXRlQ2xhc3MpO1xuXG4gICAgaWYgKE5HX0RFVl9NT0RFICYmICFtZXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDaGlsZCBzdGF0ZSBub3QgZm91bmQ6ICR7c3RhdGVDbGFzc30uIFxcclxcbllvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gYWRkIHN0YXRlcyB0byBtb2R1bGVgXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRhIVvJtU1FVEFfS0VZXSEubmFtZSE7XG4gIH07XG5cbiAgcmV0dXJuIHN0YXRlQ2xhc3Nlcy5yZWR1Y2U8U3RhdGVLZXlHcmFwaD4oXG4gICAgKHJlc3VsdDogU3RhdGVLZXlHcmFwaCwgc3RhdGVDbGFzczogybVTdGF0ZUNsYXNzSW50ZXJuYWwpID0+IHtcbiAgICAgIGNvbnN0IHsgbmFtZSwgY2hpbGRyZW4gfSA9IHN0YXRlQ2xhc3NbybVNRVRBX0tFWV0hO1xuICAgICAgcmVzdWx0W25hbWUhXSA9IChjaGlsZHJlbiB8fCBbXSkubWFwKGZpbmROYW1lKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcbiAgICB7fVxuICApO1xufVxuXG4vKipcbiAqIEdpdmVuIGEgc3RhdGVzIGFycmF5LCByZXR1cm5zIG9iamVjdCBncmFwaFxuICogcmV0dXJuaW5nIHRoZSBuYW1lIGFuZCBzdGF0ZSBtZXRhZGF0YS4gRXhhbXBsZTpcbiAqXG4gKiAgY29uc3QgZ3JhcGggPSB7XG4gKiAgICBjYXJ0OiB7IG1ldGFkYXRhIH1cbiAqICB9O1xuICpcbiAqIEBpZ25vcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5hbWVUb1N0YXRlKFxuICBzdGF0ZXM6IMm1U3RhdGVDbGFzc0ludGVybmFsW11cbik6IMm1UGxhaW5PYmplY3RPZjzJtVN0YXRlQ2xhc3NJbnRlcm5hbD4ge1xuICByZXR1cm4gc3RhdGVzLnJlZHVjZTzJtVBsYWluT2JqZWN0T2Y8ybVTdGF0ZUNsYXNzSW50ZXJuYWw+PihcbiAgICAocmVzdWx0OiDJtVBsYWluT2JqZWN0T2Y8ybVTdGF0ZUNsYXNzSW50ZXJuYWw+LCBzdGF0ZUNsYXNzOiDJtVN0YXRlQ2xhc3NJbnRlcm5hbCkgPT4ge1xuICAgICAgY29uc3QgbWV0YSA9IHN0YXRlQ2xhc3NbybVNRVRBX0tFWV0hO1xuICAgICAgcmVzdWx0W21ldGEubmFtZSFdID0gc3RhdGVDbGFzcztcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcbiAgICB7fVxuICApO1xufVxuXG4vKipcbiAqIEdpdmVuIGEgb2JqZWN0IHJlbGF0aW9uc2hpcCBncmFwaCB3aWxsIHJldHVybiB0aGUgZnVsbCBwYXRoXG4gKiBmb3IgdGhlIGNoaWxkIGl0ZW1zLiBFeGFtcGxlOlxuICpcbiAqICBjb25zdCBncmFwaCA9IHtcbiAqICAgIGNhcnQ6IFsnc2F2ZWQnXSxcbiAqICAgIHNhdmVkOiBbJ2l0ZW1zJ10sXG4gKiAgICBpdGVtczogW11cbiAqICB9O1xuICpcbiAqIHdvdWxkIHJldHVybjpcbiAqXG4gKiAgY29uc3QgciA9IHtcbiAqICAgIGNhcnQ6ICdjYXJ0JyxcbiAqICAgIHNhdmVkOiAnY2FydC5zYXZlZCcsXG4gKiAgICBpdGVtczogJ2NhcnQuc2F2ZWQuaXRlbXMnXG4gKiAgfTtcbiAqXG4gKiBAaWdub3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRnVsbFBhcmVudFBhdGgoXG4gIG9iajogU3RhdGVLZXlHcmFwaCxcbiAgbmV3T2JqOiDJtVBsYWluT2JqZWN0T2Y8c3RyaW5nPiA9IHt9XG4pOiDJtVBsYWluT2JqZWN0T2Y8c3RyaW5nPiB7XG4gIGNvbnN0IHZpc2l0ID0gKGNoaWxkOiBTdGF0ZUtleUdyYXBoLCBrZXlUb0ZpbmQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwgPT4ge1xuICAgIGZvciAoY29uc3Qga2V5IGluIGNoaWxkKSB7XG4gICAgICBpZiAoY2hpbGQuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBjaGlsZFtrZXldLmluZGV4T2Yoa2V5VG9GaW5kKSA+PSAwKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IHZpc2l0KGNoaWxkLCBrZXkpO1xuICAgICAgICByZXR1cm4gcGFyZW50ICE9PSBudWxsID8gYCR7cGFyZW50fS4ke2tleX1gIDoga2V5O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IHZpc2l0KG9iaiwga2V5KTtcbiAgICAgIG5ld09ialtrZXldID0gcGFyZW50ID8gYCR7cGFyZW50fS4ke2tleX1gIDoga2V5O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdPYmo7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBvYmplY3QgZ3JhcGgsIGl0IHdpbGwgcmV0dXJuIHRoZSBpdGVtcyB0b3BvbG9naWNhbGx5IHNvcnRlZCBFeGFtcGxlOlxuICpcbiAqICBjb25zdCBncmFwaCA9IHtcbiAqICAgIGNhcnQ6IFsnc2F2ZWQnXSxcbiAqICAgIHNhdmVkOiBbJ2l0ZW1zJ10sXG4gKiAgICBpdGVtczogW11cbiAqICB9O1xuICpcbiAqIHdvdWxkIHJldHVybjpcbiAqXG4gKiAgY29uc3QgcmVzdWx0cyA9IFtcbiAqICAgICdpdGVtcycsXG4gKiAgICAnc2F2ZWQnLFxuICogICAgJ2NhcnQnXG4gKiAgXTtcbiAqXG4gKiBAaWdub3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b3BvbG9naWNhbFNvcnQoZ3JhcGg6IFN0YXRlS2V5R3JhcGgpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHNvcnRlZDogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgdmlzaXRlZDogybVQbGFpbk9iamVjdE9mPGJvb2xlYW4+ID0ge307XG5cbiAgY29uc3QgdmlzaXQgPSAobmFtZTogc3RyaW5nLCBhbmNlc3RvcnM6IHN0cmluZ1tdID0gW10pID0+IHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYW5jZXN0b3JzKSkge1xuICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgfVxuXG4gICAgYW5jZXN0b3JzLnB1c2gobmFtZSk7XG4gICAgdmlzaXRlZFtuYW1lXSA9IHRydWU7XG5cbiAgICBncmFwaFtuYW1lXS5mb3JFYWNoKChkZXA6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKE5HX0RFVl9NT0RFICYmIGFuY2VzdG9ycy5pbmRleE9mKGRlcCkgPj0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYENpcmN1bGFyIGRlcGVuZGVuY3kgJyR7ZGVwfScgaXMgcmVxdWlyZWQgYnkgJyR7bmFtZX0nOiAke2FuY2VzdG9ycy5qb2luKCcgLT4gJyl9YFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodmlzaXRlZFtkZXBdKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmlzaXQoZGVwLCBhbmNlc3RvcnMuc2xpY2UoMCkpO1xuICAgIH0pO1xuXG4gICAgaWYgKHNvcnRlZC5pbmRleE9mKG5hbWUpIDwgMCkge1xuICAgICAgc29ydGVkLnB1c2gobmFtZSk7XG4gICAgfVxuICB9O1xuXG4gIE9iamVjdC5rZXlzKGdyYXBoKS5mb3JFYWNoKGsgPT4gdmlzaXQoaykpO1xuXG4gIHJldHVybiBzb3J0ZWQucmV2ZXJzZSgpO1xufVxuIl19