@ngxs/store 3.7.4-dev.master-38cbcac → 3.7.4-dev.master-80a3014

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 (45) hide show
  1. package/bundles/ngxs-store-internals.umd.js +0 -241
  2. package/bundles/ngxs-store-internals.umd.js.map +1 -1
  3. package/bundles/ngxs-store-internals.umd.min.js +1 -1
  4. package/bundles/ngxs-store-internals.umd.min.js.map +1 -1
  5. package/bundles/ngxs-store.umd.js +32 -105
  6. package/bundles/ngxs-store.umd.js.map +1 -1
  7. package/bundles/ngxs-store.umd.min.js +1 -1
  8. package/bundles/ngxs-store.umd.min.js.map +1 -1
  9. package/esm2015/internals/index.js +1 -2
  10. package/esm2015/internals/ngxs-store-internals.js +2 -2
  11. package/esm2015/ngxs-store.js +5 -4
  12. package/esm2015/src/decorators/select/select-factory.js +2 -6
  13. package/esm2015/src/decorators/select/select.js +11 -39
  14. package/esm2015/src/decorators/select/symbols.js +11 -55
  15. package/esm2015/src/internal/dispatcher.js +8 -6
  16. package/esm2015/src/module.js +3 -1
  17. package/esm2015/src/modules/ngxs-root.module.js +5 -8
  18. package/esm5/internals/index.js +1 -2
  19. package/esm5/internals/ngxs-store-internals.js +2 -2
  20. package/esm5/ngxs-store.js +5 -4
  21. package/esm5/src/decorators/select/select-factory.js +2 -6
  22. package/esm5/src/decorators/select/select.js +5 -40
  23. package/esm5/src/decorators/select/symbols.js +11 -55
  24. package/esm5/src/internal/dispatcher.js +8 -6
  25. package/esm5/src/module.js +3 -1
  26. package/esm5/src/modules/ngxs-root.module.js +4 -7
  27. package/fesm2015/ngxs-store-internals.js +2 -240
  28. package/fesm2015/ngxs-store-internals.js.map +1 -1
  29. package/fesm2015/ngxs-store.js +34 -101
  30. package/fesm2015/ngxs-store.js.map +1 -1
  31. package/fesm5/ngxs-store-internals.js +2 -240
  32. package/fesm5/ngxs-store-internals.js.map +1 -1
  33. package/fesm5/ngxs-store.js +27 -101
  34. package/fesm5/ngxs-store.js.map +1 -1
  35. package/internals/index.d.ts +0 -1
  36. package/internals/ngxs-store-internals.metadata.json +1 -1
  37. package/ngxs-store.d.ts +5 -4
  38. package/ngxs-store.metadata.json +1 -1
  39. package/package.json +1 -1
  40. package/src/decorators/select/select.d.ts +1 -0
  41. package/src/decorators/select/symbols.d.ts +2 -6
  42. package/src/modules/ngxs-root.module.d.ts +2 -2
  43. package/esm2015/internals/decorator-injector-adapter.js +0 -242
  44. package/esm5/internals/decorator-injector-adapter.js +0 -242
  45. package/internals/decorator-injector-adapter.d.ts +0 -15
@@ -1,242 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import { INJECTOR, ɵglobal, ɵɵdirectiveInject } from '@angular/core';
6
- import { ReplaySubject } from 'rxjs';
7
- import { isAngularInTestMode } from './angular';
8
- // Angular doesn't export `NG_FACTORY_DEF`.
9
- /** @type {?} */
10
- var NG_FACTORY_DEF = 'ɵfac';
11
- // A `Symbol` which is used to save the `Injector` onto the class instance.
12
- /** @type {?} */
13
- var InjectorInstance = Symbol('InjectorInstance');
14
- // A `Symbol` which is used to determine if factory has been decorated previously or not.
15
- /** @type {?} */
16
- var FactoryHasBeenDecorated = Symbol('FactoryHasBeenDecorated');
17
- // A `Symbol` which is used to save the notifier on the class instance. The `InjectorInstance` cannot
18
- // be retrieved within the `constructor` since it's set after the `factory()` is called.
19
- /** @type {?} */
20
- var InjectorNotifier = Symbol('InjectorNotifier');
21
- /**
22
- * @record
23
- */
24
- function PrototypeWithInjectorNotifier() { }
25
- if (false) {
26
- /* Skipping unnamed member:
27
- [InjectorNotifier]?: ReplaySubject<boolean>;*/
28
- }
29
- /**
30
- * @param {?} target
31
- * @return {?}
32
- */
33
- export function ensureInjectorNotifierIsCaptured(target) {
34
- if (target[InjectorNotifier]) {
35
- return (/** @type {?} */ (target[InjectorNotifier]));
36
- }
37
- else {
38
- /** @type {?} */
39
- var injectorNotifier$_1 = new ReplaySubject(1);
40
- Object.defineProperty(target, InjectorNotifier, {
41
- get: (/**
42
- * @return {?}
43
- */
44
- function () { return injectorNotifier$_1; })
45
- });
46
- return injectorNotifier$_1;
47
- }
48
- }
49
- // eslint-disable-next-line @typescript-eslint/ban-types
50
- /**
51
- * @param {?} target
52
- * @return {?}
53
- */
54
- export function ensureLocalInjectorCaptured(target) {
55
- if (FactoryHasBeenDecorated in target.constructor.prototype) {
56
- return;
57
- }
58
- /** @type {?} */
59
- var constructor = target.constructor;
60
- // The factory is set later by the Angular compiler in JIT mode, and we're not able to patch the factory now.
61
- // We can't use any asynchronous code like `Promise.resolve().then(...)` since this is not functional in unit
62
- // tests that are being run in `SyncTestZoneSpec`.
63
- // Given the following example:
64
- // @Component()
65
- // class BaseComponent {}
66
- // @Component()
67
- // class MainComponent extends BaseComponent {
68
- // @Select(AnimalsState) animals$: Observable<string[]>;
69
- // }
70
- // In this example, the factory will be defined for the `BaseComponent`, but will not be defined for the `MainComponent`.
71
- // If we try to decorate the factory immediately, we'll get `Cannot redefine property` exception when Angular will try to define
72
- // an original factory for the `MainComponent`.
73
- // Note: the factory is defined statically in the code in AOT mode.
74
- // AppComponent.ɵfac = function AppComponent_Factory(t) {
75
- // return new (t || AppComponent)();
76
- // };
77
- // __decorate([Select], AppComponent.prototype, 'animals$', void 0);
78
- /** @type {?} */
79
- var isJitModeOrIsAngularInTestMode = isAngularInTestMode() || !!(ɵglobal.ng && ɵglobal.ng.ɵcompilerFacade);
80
- // If we're in development mode AND we're running unit tests or there's a compiler facade exposed,
81
- // then patch `Object.defineProperty`. The compiler facade is exposed in JIT mode.
82
- if (ngDevMode && isJitModeOrIsAngularInTestMode) {
83
- patchObjectDefineProperty();
84
- }
85
- else {
86
- decorateFactory(constructor);
87
- }
88
- target.constructor.prototype[FactoryHasBeenDecorated] = true;
89
- }
90
- /**
91
- * @template T
92
- * @param {?} instance
93
- * @param {?} token
94
- * @return {?}
95
- */
96
- export function localInject(instance, token) {
97
- /** @type {?} */
98
- var injector = instance[InjectorInstance];
99
- return injector ? injector.get(token) : null;
100
- }
101
- /**
102
- * @param {?} constructor
103
- * @return {?}
104
- */
105
- function decorateFactory(constructor) {
106
- /** @type {?} */
107
- var factory = constructor[NG_FACTORY_DEF];
108
- if (typeof factory !== 'function') {
109
- return;
110
- }
111
- // Let's try to get any definition.
112
- // Caretaker note: this will be compatible only with Angular 9+, since Angular 9 is the first
113
- // Ivy-stable version. Previously definition properties were named differently (e.g. `ngComponentDef`).
114
- /** @type {?} */
115
- var def = constructor.ɵprov || constructor.ɵpipe || constructor.ɵcmp || constructor.ɵdir;
116
- /** @type {?} */
117
- var decoratedFactory = (/**
118
- * @return {?}
119
- */
120
- function () {
121
- /** @type {?} */
122
- var instance = factory();
123
- // Caretaker note: `inject()` won't work here.
124
- // We can use the `directiveInject` only during the component
125
- // construction, since Angular captures the currently active injector.
126
- // We're not able to use this function inside the getter (when the `selectorId` property is
127
- // requested for the first time), since the currently active injector will be null.
128
- instance[InjectorInstance] = ɵɵdirectiveInject(
129
- // We're using `INJECTOR` token except of the `Injector` class since the compiler
130
- // throws: `Cannot assign an abstract constructor type to a non-abstract constructor type.`.
131
- // Caretaker note: that this is the same way of getting the injector.
132
- INJECTOR);
133
- // Caretaker note: the notifier will be available only if consumers call the `ensureInjectorNotifierIsCaptured()`.
134
- /** @type {?} */
135
- var injectorNotifier$ = instance[InjectorNotifier];
136
- if (injectorNotifier$) {
137
- injectorNotifier$.next(true);
138
- injectorNotifier$.complete();
139
- }
140
- return instance;
141
- });
142
- // If we've found any definition then it's enough to override the `def.factory` since Angular
143
- // code uses the `def.factory` and then fallbacks to `ɵfac`.
144
- if (def) {
145
- def.factory = decoratedFactory;
146
- }
147
- // `@NgModule()` doesn't doesn't have definition factory, also providers have definitions but Angular
148
- // still uses the `ɵfac`.
149
- Object.defineProperty(constructor, NG_FACTORY_DEF, {
150
- get: (/**
151
- * @return {?}
152
- */
153
- function () { return decoratedFactory; })
154
- });
155
- }
156
- // Note: this function will be tree-shaken in production.
157
- var ɵ0 = /**
158
- * @return {?}
159
- */
160
- function () {
161
- /** @type {?} */
162
- var objectDefinePropertyPatched = false;
163
- return (/**
164
- * @return {?}
165
- */
166
- function () {
167
- if (objectDefinePropertyPatched) {
168
- return;
169
- }
170
- /** @type {?} */
171
- var defineProperty = Object.defineProperty;
172
- // We should not be patching globals, but there's no other way to know when it's appropriate
173
- // to decorate the original factory. There're different edge cases, e.g., when the class extends
174
- // another class, the factory will be defined for the base class but not for the child class.
175
- // The patching will be done only during the development and in JIT mode.
176
- Object.defineProperty = (/**
177
- * @template T
178
- * @param {?} object
179
- * @param {?} propertyKey
180
- * @param {?} attributes
181
- * @return {?}
182
- */
183
- function (object, propertyKey, attributes) {
184
- // Angular calls `Object.defineProperty(target, 'ɵfac', { get: ..., configurable: true })` when defining a factory function.
185
- // We only want to intercept `ɵfac` key.
186
- // If the property is `ɵfac` AND `configurable` equals `true`, then let's call the original
187
- // implementation and then decorate the factory.
188
- // // https://github.com/angular/angular/blob/3a60063a54d850c50ce962a8a39ce01cfee71398/packages/core/src/render3/jit/pipe.ts#L21-L39
189
- if (propertyKey !== NG_FACTORY_DEF ||
190
- // We also call `Object.defineProperty(target, 'ɵfac', ...)`, but we don't set `configurable` property.
191
- (propertyKey === NG_FACTORY_DEF && !attributes.configurable)) {
192
- return (/** @type {?} */ (defineProperty.call(this, object, propertyKey, attributes)));
193
- }
194
- else {
195
- // If the property is `ɵfac` AND `configurable` equals `true`, then let's call the original
196
- // implementation and then decorate the factory.
197
- defineProperty.call(this, object, propertyKey, attributes);
198
- decorateFactory((/** @type {?} */ (((/** @type {?} */ (object))))));
199
- return object;
200
- }
201
- });
202
- objectDefinePropertyPatched = true;
203
- });
204
- };
205
- /** @type {?} */
206
- var patchObjectDefineProperty = ((ɵ0))();
207
- /**
208
- * @record
209
- */
210
- function Definition() { }
211
- if (false) {
212
- /** @type {?} */
213
- Definition.prototype.factory;
214
- }
215
- /**
216
- * @record
217
- */
218
- function ConstructorWithDefinitionAndFactory() { }
219
- if (false) {
220
- /** @type {?|undefined} */
221
- ConstructorWithDefinitionAndFactory.prototype.ɵprov;
222
- /** @type {?|undefined} */
223
- ConstructorWithDefinitionAndFactory.prototype.ɵpipe;
224
- /** @type {?|undefined} */
225
- ConstructorWithDefinitionAndFactory.prototype.ɵcmp;
226
- /** @type {?|undefined} */
227
- ConstructorWithDefinitionAndFactory.prototype.ɵdir;
228
- /* Skipping unnamed member:
229
- [NG_FACTORY_DEF]?: Factory;*/
230
- }
231
- /**
232
- * @record
233
- */
234
- function PrivateInstance() { }
235
- if (false) {
236
- /* Skipping unnamed member:
237
- [InjectorInstance]?: Injector;*/
238
- /* Skipping unnamed member:
239
- [InjectorNotifier]?: ReplaySubject<boolean>;*/
240
- }
241
- export { ɵ0 };
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9yLWluamVjdG9yLWFkYXB0ZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9zdG9yZS9pbnRlcm5hbHMvIiwic291cmNlcyI6WyJkZWNvcmF0b3ItaW5qZWN0b3ItYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUdMLFFBQVEsRUFFUixPQUFPLEVBQ1AsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7SUFPMUMsY0FBYyxHQUFHLE1BQU07OztJQUd2QixnQkFBZ0IsR0FBa0IsTUFBTSxDQUFDLGtCQUFrQixDQUFDOzs7SUFHNUQsdUJBQXVCLEdBQWtCLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQzs7OztJQUkxRSxnQkFBZ0IsR0FBa0IsTUFBTSxDQUFDLGtCQUFrQixDQUFDOzs7O0FBRWxFLDRDQUVDOzs7Ozs7Ozs7QUFFRCxNQUFNLFVBQVUsZ0NBQWdDLENBQzlDLE1BQXVEO0lBRXZELElBQUksTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7UUFDNUIsT0FBTyxtQkFBQSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBQyxDQUFDO0tBQ2xDO1NBQU07O1lBQ0MsbUJBQWlCLEdBQUcsSUFBSSxhQUFhLENBQVUsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFO1lBQzlDLEdBQUc7OztZQUFFLGNBQU0sT0FBQSxtQkFBaUIsRUFBakIsQ0FBaUIsQ0FBQTtTQUM3QixDQUFDLENBQUM7UUFDSCxPQUFPLG1CQUFpQixDQUFDO0tBQzFCO0FBQ0gsQ0FBQzs7Ozs7O0FBR0QsTUFBTSxVQUFVLDJCQUEyQixDQUFDLE1BQWM7SUFDeEQsSUFBSSx1QkFBdUIsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLFNB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QVksQ0FBQyxFQUM1RDtnQkFDQSxPQUFPLG1CQUFBLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEVBQUssQ0FBQzthQUN4RTtpQkFBTTtnQkFDTCwyRkFBMkY7Z0JBQzNGLGdEQUFnRDtnQkFDaEQsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDM0QsZUFBZSxDQUFDLG1CQUFBLENBQUMsbUJBQUEsTUFBTSxFQUFXLENBQUMsRUFBdUMsQ0FBQyxDQUFDO2dCQUM1RSxPQUFPLE1BQU0sQ0FBQzthQUNmO1FBQ0gsQ0FBQyxDQUFBLENBQUM7UUFDRiwyQkFBMkIsR0FBRyxJQUFJLENBQUM7SUFDckMsQ0FBQyxFQUFDO0FBQ0osQ0FBQzs7SUFyQ0sseUJBQXlCLEdBQUcsTUFxQ2hDLEVBQUU7Ozs7QUFRSix5QkFFQzs7O0lBREMsNkJBQXdCOzs7OztBQUcxQixrREFVQzs7O0lBUkMsb0RBQW1COztJQUVuQixvREFBbUI7O0lBRW5CLG1EQUFrQjs7SUFFbEIsbURBQWtCOzs7Ozs7O0FBSXBCLDhCQUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIEluamVjdG9yLFxuICBJTkpFQ1RPUixcbiAgVHlwZSxcbiAgybVnbG9iYWwsXG4gIMm1ybVkaXJlY3RpdmVJbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IGlzQW5ndWxhckluVGVzdE1vZGUgfSBmcm9tICcuL2FuZ3VsYXInO1xuXG4vLyBXaWxsIGJlIHByb3ZpZGVkIHRocm91Z2ggVGVyc2VyIGdsb2JhbCBkZWZpbml0aW9ucyBieSBBbmd1bGFyIENMSVxuLy8gZHVyaW5nIHRoZSBwcm9kdWN0aW9uIGJ1aWxkLiBUaGlzIGlzIGhvdyBBbmd1bGFyIGRvZXMgdHJlZS1zaGFraW5nIGludGVybmFsbHkuXG5kZWNsYXJlIGNvbnN0IG5nRGV2TW9kZTogYm9vbGVhbjtcblxuLy8gQW5ndWxhciBkb2Vzbid0IGV4cG9ydCBgTkdfRkFDVE9SWV9ERUZgLlxuY29uc3QgTkdfRkFDVE9SWV9ERUYgPSAnybVmYWMnO1xuXG4vLyBBIGBTeW1ib2xgIHdoaWNoIGlzIHVzZWQgdG8gc2F2ZSB0aGUgYEluamVjdG9yYCBvbnRvIHRoZSBjbGFzcyBpbnN0YW5jZS5cbmNvbnN0IEluamVjdG9ySW5zdGFuY2U6IHVuaXF1ZSBzeW1ib2wgPSBTeW1ib2woJ0luamVjdG9ySW5zdGFuY2UnKTtcblxuLy8gQSBgU3ltYm9sYCB3aGljaCBpcyB1c2VkIHRvIGRldGVybWluZSBpZiBmYWN0b3J5IGhhcyBiZWVuIGRlY29yYXRlZCBwcmV2aW91c2x5IG9yIG5vdC5cbmNvbnN0IEZhY3RvcnlIYXNCZWVuRGVjb3JhdGVkOiB1bmlxdWUgc3ltYm9sID0gU3ltYm9sKCdGYWN0b3J5SGFzQmVlbkRlY29yYXRlZCcpO1xuXG4vLyBBIGBTeW1ib2xgIHdoaWNoIGlzIHVzZWQgdG8gc2F2ZSB0aGUgbm90aWZpZXIgb24gdGhlIGNsYXNzIGluc3RhbmNlLiBUaGUgYEluamVjdG9ySW5zdGFuY2VgIGNhbm5vdFxuLy8gYmUgcmV0cmlldmVkIHdpdGhpbiB0aGUgYGNvbnN0cnVjdG9yYCBzaW5jZSBpdCdzIHNldCBhZnRlciB0aGUgYGZhY3RvcnkoKWAgaXMgY2FsbGVkLlxuY29uc3QgSW5qZWN0b3JOb3RpZmllcjogdW5pcXVlIHN5bWJvbCA9IFN5bWJvbCgnSW5qZWN0b3JOb3RpZmllcicpO1xuXG5pbnRlcmZhY2UgUHJvdG90eXBlV2l0aEluamVjdG9yTm90aWZpZXIgZXh0ZW5kcyBPYmplY3Qge1xuICBbSW5qZWN0b3JOb3RpZmllcl0/OiBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlSW5qZWN0b3JOb3RpZmllcklzQ2FwdHVyZWQoXG4gIHRhcmdldDogUHJvdG90eXBlV2l0aEluamVjdG9yTm90aWZpZXIgfCBQcml2YXRlSW5zdGFuY2Vcbik6IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4ge1xuICBpZiAodGFyZ2V0W0luamVjdG9yTm90aWZpZXJdKSB7XG4gICAgcmV0dXJuIHRhcmdldFtJbmplY3Rvck5vdGlmaWVyXSE7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgaW5qZWN0b3JOb3RpZmllciQgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBJbmplY3Rvck5vdGlmaWVyLCB7XG4gICAgICBnZXQ6ICgpID0+IGluamVjdG9yTm90aWZpZXIkXG4gICAgfSk7XG4gICAgcmV0dXJuIGluamVjdG9yTm90aWZpZXIkO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlTG9jYWxJbmplY3RvckNhcHR1cmVkKHRhcmdldDogT2JqZWN0KTogdm9pZCB7XG4gIGlmIChGYWN0b3J5SGFzQmVlbkRlY29yYXRlZCBpbiB0YXJnZXQuY29uc3RydWN0b3IucHJvdG90eXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgY29uc3RydWN0b3I6IENvbnN0cnVjdG9yV2l0aERlZmluaXRpb25BbmRGYWN0b3J5ID0gdGFyZ2V0LmNvbnN0cnVjdG9yO1xuXG4gIC8vIFRoZSBmYWN0b3J5IGlzIHNldCBsYXRlciBieSB0aGUgQW5ndWxhciBjb21waWxlciBpbiBKSVQgbW9kZSwgYW5kIHdlJ3JlIG5vdCBhYmxlIHRvIHBhdGNoIHRoZSBmYWN0b3J5IG5vdy5cbiAgLy8gV2UgY2FuJ3QgdXNlIGFueSBhc3luY2hyb25vdXMgY29kZSBsaWtlIGBQcm9taXNlLnJlc29sdmUoKS50aGVuKC4uLilgIHNpbmNlIHRoaXMgaXMgbm90IGZ1bmN0aW9uYWwgaW4gdW5pdFxuICAvLyB0ZXN0cyB0aGF0IGFyZSBiZWluZyBydW4gaW4gYFN5bmNUZXN0Wm9uZVNwZWNgLlxuICAvLyBHaXZlbiB0aGUgZm9sbG93aW5nIGV4YW1wbGU6XG4gIC8vIEBDb21wb25lbnQoKVxuICAvLyBjbGFzcyBCYXNlQ29tcG9uZW50IHt9XG4gIC8vIEBDb21wb25lbnQoKVxuICAvLyBjbGFzcyBNYWluQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIC8vICAgQFNlbGVjdChBbmltYWxzU3RhdGUpIGFuaW1hbHMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcbiAgLy8gfVxuICAvLyBJbiB0aGlzIGV4YW1wbGUsIHRoZSBmYWN0b3J5IHdpbGwgYmUgZGVmaW5lZCBmb3IgdGhlIGBCYXNlQ29tcG9uZW50YCwgYnV0IHdpbGwgbm90IGJlIGRlZmluZWQgZm9yIHRoZSBgTWFpbkNvbXBvbmVudGAuXG4gIC8vIElmIHdlIHRyeSB0byBkZWNvcmF0ZSB0aGUgZmFjdG9yeSBpbW1lZGlhdGVseSwgd2UnbGwgZ2V0IGBDYW5ub3QgcmVkZWZpbmUgcHJvcGVydHlgIGV4Y2VwdGlvbiB3aGVuIEFuZ3VsYXIgd2lsbCB0cnkgdG8gZGVmaW5lXG4gIC8vIGFuIG9yaWdpbmFsIGZhY3RvcnkgZm9yIHRoZSBgTWFpbkNvbXBvbmVudGAuXG5cbiAgLy8gTm90ZTogdGhlIGZhY3RvcnkgaXMgZGVmaW5lZCBzdGF0aWNhbGx5IGluIHRoZSBjb2RlIGluIEFPVCBtb2RlLlxuICAvLyBBcHBDb21wb25lbnQuybVmYWMgPSBmdW5jdGlvbiBBcHBDb21wb25lbnRfRmFjdG9yeSh0KSB7XG4gIC8vICAgcmV0dXJuIG5ldyAodCB8fCBBcHBDb21wb25lbnQpKCk7XG4gIC8vIH07XG4gIC8vIF9fZGVjb3JhdGUoW1NlbGVjdF0sIEFwcENvbXBvbmVudC5wcm90b3R5cGUsICdhbmltYWxzJCcsIHZvaWQgMCk7XG5cbiAgY29uc3QgaXNKaXRNb2RlT3JJc0FuZ3VsYXJJblRlc3RNb2RlID1cbiAgICBpc0FuZ3VsYXJJblRlc3RNb2RlKCkgfHwgISEoybVnbG9iYWwubmcgJiYgybVnbG9iYWwubmcuybVjb21waWxlckZhY2FkZSk7XG5cbiAgLy8gSWYgd2UncmUgaW4gZGV2ZWxvcG1lbnQgbW9kZSBBTkQgd2UncmUgcnVubmluZyB1bml0IHRlc3RzIG9yIHRoZXJlJ3MgYSBjb21waWxlciBmYWNhZGUgZXhwb3NlZCxcbiAgLy8gdGhlbiBwYXRjaCBgT2JqZWN0LmRlZmluZVByb3BlcnR5YC4gVGhlIGNvbXBpbGVyIGZhY2FkZSBpcyBleHBvc2VkIGluIEpJVCBtb2RlLlxuICBpZiAobmdEZXZNb2RlICYmIGlzSml0TW9kZU9ySXNBbmd1bGFySW5UZXN0TW9kZSkge1xuICAgIHBhdGNoT2JqZWN0RGVmaW5lUHJvcGVydHkoKTtcbiAgfSBlbHNlIHtcbiAgICBkZWNvcmF0ZUZhY3RvcnkoY29uc3RydWN0b3IpO1xuICB9XG5cbiAgdGFyZ2V0LmNvbnN0cnVjdG9yLnByb3RvdHlwZVtGYWN0b3J5SGFzQmVlbkRlY29yYXRlZF0gPSB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9jYWxJbmplY3Q8VD4oXG4gIGluc3RhbmNlOiBQcml2YXRlSW5zdGFuY2UsXG4gIHRva2VuOiBJbmplY3Rpb25Ub2tlbjxUPiB8IFR5cGU8VD5cbik6IFQgfCBudWxsIHtcbiAgY29uc3QgaW5qZWN0b3I6IEluamVjdG9yIHwgdW5kZWZpbmVkID0gaW5zdGFuY2VbSW5qZWN0b3JJbnN0YW5jZV07XG4gIHJldHVybiBpbmplY3RvciA/IGluamVjdG9yLmdldCh0b2tlbikgOiBudWxsO1xufVxuXG5mdW5jdGlvbiBkZWNvcmF0ZUZhY3RvcnkoY29uc3RydWN0b3I6IENvbnN0cnVjdG9yV2l0aERlZmluaXRpb25BbmRGYWN0b3J5KTogdm9pZCB7XG4gIGNvbnN0IGZhY3RvcnkgPSBjb25zdHJ1Y3RvcltOR19GQUNUT1JZX0RFRl07XG5cbiAgaWYgKHR5cGVvZiBmYWN0b3J5ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gTGV0J3MgdHJ5IHRvIGdldCBhbnkgZGVmaW5pdGlvbi5cbiAgLy8gQ2FyZXRha2VyIG5vdGU6IHRoaXMgd2lsbCBiZSBjb21wYXRpYmxlIG9ubHkgd2l0aCBBbmd1bGFyIDkrLCBzaW5jZSBBbmd1bGFyIDkgaXMgdGhlIGZpcnN0XG4gIC8vIEl2eS1zdGFibGUgdmVyc2lvbi4gUHJldmlvdXNseSBkZWZpbml0aW9uIHByb3BlcnRpZXMgd2VyZSBuYW1lZCBkaWZmZXJlbnRseSAoZS5nLiBgbmdDb21wb25lbnREZWZgKS5cbiAgY29uc3QgZGVmID0gY29uc3RydWN0b3IuybVwcm92IHx8IGNvbnN0cnVjdG9yLsm1cGlwZSB8fCBjb25zdHJ1Y3Rvci7JtWNtcCB8fCBjb25zdHJ1Y3Rvci7JtWRpcjtcblxuICBjb25zdCBkZWNvcmF0ZWRGYWN0b3J5ID0gKCkgPT4ge1xuICAgIGNvbnN0IGluc3RhbmNlID0gZmFjdG9yeSgpO1xuICAgIC8vIENhcmV0YWtlciBub3RlOiBgaW5qZWN0KClgIHdvbid0IHdvcmsgaGVyZS5cbiAgICAvLyBXZSBjYW4gdXNlIHRoZSBgZGlyZWN0aXZlSW5qZWN0YCBvbmx5IGR1cmluZyB0aGUgY29tcG9uZW50XG4gICAgLy8gY29uc3RydWN0aW9uLCBzaW5jZSBBbmd1bGFyIGNhcHR1cmVzIHRoZSBjdXJyZW50bHkgYWN0aXZlIGluamVjdG9yLlxuICAgIC8vIFdlJ3JlIG5vdCBhYmxlIHRvIHVzZSB0aGlzIGZ1bmN0aW9uIGluc2lkZSB0aGUgZ2V0dGVyICh3aGVuIHRoZSBgc2VsZWN0b3JJZGAgcHJvcGVydHkgaXNcbiAgICAvLyByZXF1ZXN0ZWQgZm9yIHRoZSBmaXJzdCB0aW1lKSwgc2luY2UgdGhlIGN1cnJlbnRseSBhY3RpdmUgaW5qZWN0b3Igd2lsbCBiZSBudWxsLlxuICAgIGluc3RhbmNlW0luamVjdG9ySW5zdGFuY2VdID0gybXJtWRpcmVjdGl2ZUluamVjdChcbiAgICAgIC8vIFdlJ3JlIHVzaW5nIGBJTkpFQ1RPUmAgdG9rZW4gZXhjZXB0IG9mIHRoZSBgSW5qZWN0b3JgIGNsYXNzIHNpbmNlIHRoZSBjb21waWxlclxuICAgICAgLy8gdGhyb3dzOiBgQ2Fubm90IGFzc2lnbiBhbiBhYnN0cmFjdCBjb25zdHJ1Y3RvciB0eXBlIHRvIGEgbm9uLWFic3RyYWN0IGNvbnN0cnVjdG9yIHR5cGUuYC5cbiAgICAgIC8vIENhcmV0YWtlciBub3RlOiB0aGF0IHRoaXMgaXMgdGhlIHNhbWUgd2F5IG9mIGdldHRpbmcgdGhlIGluamVjdG9yLlxuICAgICAgSU5KRUNUT1JcbiAgICApO1xuXG4gICAgLy8gQ2FyZXRha2VyIG5vdGU6IHRoZSBub3RpZmllciB3aWxsIGJlIGF2YWlsYWJsZSBvbmx5IGlmIGNvbnN1bWVycyBjYWxsIHRoZSBgZW5zdXJlSW5qZWN0b3JOb3RpZmllcklzQ2FwdHVyZWQoKWAuXG4gICAgY29uc3QgaW5qZWN0b3JOb3RpZmllciQgPSBpbnN0YW5jZVtJbmplY3Rvck5vdGlmaWVyXTtcbiAgICBpZiAoaW5qZWN0b3JOb3RpZmllciQpIHtcbiAgICAgIGluamVjdG9yTm90aWZpZXIkLm5leHQodHJ1ZSk7XG4gICAgICBpbmplY3Rvck5vdGlmaWVyJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfTtcblxuICAvLyBJZiB3ZSd2ZSBmb3VuZCBhbnkgZGVmaW5pdGlvbiB0aGVuIGl0J3MgZW5vdWdoIHRvIG92ZXJyaWRlIHRoZSBgZGVmLmZhY3RvcnlgIHNpbmNlIEFuZ3VsYXJcbiAgLy8gY29kZSB1c2VzIHRoZSBgZGVmLmZhY3RvcnlgIGFuZCB0aGVuIGZhbGxiYWNrcyB0byBgybVmYWNgLlxuICBpZiAoZGVmKSB7XG4gICAgZGVmLmZhY3RvcnkgPSBkZWNvcmF0ZWRGYWN0b3J5O1xuICB9XG5cbiAgLy8gYEBOZ01vZHVsZSgpYCBkb2Vzbid0IGRvZXNuJ3QgaGF2ZSBkZWZpbml0aW9uIGZhY3RvcnksIGFsc28gcHJvdmlkZXJzIGhhdmUgZGVmaW5pdGlvbnMgYnV0IEFuZ3VsYXJcbiAgLy8gc3RpbGwgdXNlcyB0aGUgYMm1ZmFjYC5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLCBOR19GQUNUT1JZX0RFRiwge1xuICAgIGdldDogKCkgPT4gZGVjb3JhdGVkRmFjdG9yeVxuICB9KTtcbn1cblxuLy8gTm90ZTogdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHRyZWUtc2hha2VuIGluIHByb2R1Y3Rpb24uXG5jb25zdCBwYXRjaE9iamVjdERlZmluZVByb3BlcnR5ID0gKCgpID0+IHtcbiAgbGV0IG9iamVjdERlZmluZVByb3BlcnR5UGF0Y2hlZCA9IGZhbHNlO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGlmIChvYmplY3REZWZpbmVQcm9wZXJ0eVBhdGNoZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG4gICAgLy8gV2Ugc2hvdWxkIG5vdCBiZSBwYXRjaGluZyBnbG9iYWxzLCBidXQgdGhlcmUncyBubyBvdGhlciB3YXkgdG8ga25vdyB3aGVuIGl0J3MgYXBwcm9wcmlhdGVcbiAgICAvLyB0byBkZWNvcmF0ZSB0aGUgb3JpZ2luYWwgZmFjdG9yeS4gVGhlcmUncmUgZGlmZmVyZW50IGVkZ2UgY2FzZXMsIGUuZy4sIHdoZW4gdGhlIGNsYXNzIGV4dGVuZHNcbiAgICAvLyBhbm90aGVyIGNsYXNzLCB0aGUgZmFjdG9yeSB3aWxsIGJlIGRlZmluZWQgZm9yIHRoZSBiYXNlIGNsYXNzIGJ1dCBub3QgZm9yIHRoZSBjaGlsZCBjbGFzcy5cbiAgICAvLyBUaGUgcGF0Y2hpbmcgd2lsbCBiZSBkb25lIG9ubHkgZHVyaW5nIHRoZSBkZXZlbG9wbWVudCBhbmQgaW4gSklUIG1vZGUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb248VD4oXG4gICAgICBvYmplY3Q6IFQsXG4gICAgICBwcm9wZXJ0eUtleTogUHJvcGVydHlLZXksXG4gICAgICBhdHRyaWJ1dGVzOiBQcm9wZXJ0eURlc2NyaXB0b3IgJiBUaGlzVHlwZTxhbnk+XG4gICAgKSB7XG4gICAgICAvLyBBbmd1bGFyIGNhbGxzIGBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCAnybVmYWMnLCB7IGdldDogLi4uLCBjb25maWd1cmFibGU6IHRydWUgfSlgIHdoZW4gZGVmaW5pbmcgYSBmYWN0b3J5IGZ1bmN0aW9uLlxuICAgICAgLy8gV2Ugb25seSB3YW50IHRvIGludGVyY2VwdCBgybVmYWNgIGtleS5cbiAgICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBgybVmYWNgIEFORCBgY29uZmlndXJhYmxlYCBlcXVhbHMgYHRydWVgLCB0aGVuIGxldCdzIGNhbGwgdGhlIG9yaWdpbmFsXG4gICAgICAvLyBpbXBsZW1lbnRhdGlvbiBhbmQgdGhlbiBkZWNvcmF0ZSB0aGUgZmFjdG9yeS5cbiAgICAgIC8vIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi8zYTYwMDYzYTU0ZDg1MGM1MGNlOTYyYThhMzljZTAxY2ZlZTcxMzk4L3BhY2thZ2VzL2NvcmUvc3JjL3JlbmRlcjMvaml0L3BpcGUudHMjTDIxLUwzOVxuICAgICAgaWYgKFxuICAgICAgICBwcm9wZXJ0eUtleSAhPT0gTkdfRkFDVE9SWV9ERUYgfHxcbiAgICAgICAgLy8gV2UgYWxzbyBjYWxsIGBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCAnybVmYWMnLCAuLi4pYCwgYnV0IHdlIGRvbid0IHNldCBgY29uZmlndXJhYmxlYCBwcm9wZXJ0eS5cbiAgICAgICAgKHByb3BlcnR5S2V5ID09PSBOR19GQUNUT1JZX0RFRiAmJiAhYXR0cmlidXRlcy5jb25maWd1cmFibGUpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGRlZmluZVByb3BlcnR5LmNhbGwodGhpcywgb2JqZWN0LCBwcm9wZXJ0eUtleSwgYXR0cmlidXRlcykgYXMgVDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBgybVmYWNgIEFORCBgY29uZmlndXJhYmxlYCBlcXVhbHMgYHRydWVgLCB0aGVuIGxldCdzIGNhbGwgdGhlIG9yaWdpbmFsXG4gICAgICAgIC8vIGltcGxlbWVudGF0aW9uIGFuZCB0aGVuIGRlY29yYXRlIHRoZSBmYWN0b3J5LlxuICAgICAgICBkZWZpbmVQcm9wZXJ0eS5jYWxsKHRoaXMsIG9iamVjdCwgcHJvcGVydHlLZXksIGF0dHJpYnV0ZXMpO1xuICAgICAgICBkZWNvcmF0ZUZhY3RvcnkoKG9iamVjdCBhcyB1bmtub3duKSBhcyBDb25zdHJ1Y3RvcldpdGhEZWZpbml0aW9uQW5kRmFjdG9yeSk7XG4gICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICB9XG4gICAgfTtcbiAgICBvYmplY3REZWZpbmVQcm9wZXJ0eVBhdGNoZWQgPSB0cnVlO1xuICB9O1xufSkoKTtcblxuLy8gV2UgY291bGQndmUgdXNlZCBgybXJtUZhY3RvcnlEZWZgIGJ1dCB3ZSB0cnkgdG8gYmUgYmFja3dhcmRzLWNvbXBhdGlibGUsXG4vLyBzaW5jZSBpdCdzIG5vdCBleHBvcnRlZCBpbiBvbGRlciBBbmd1bGFyIHZlcnNpb25zLlxudHlwZSBGYWN0b3J5ID0gKCkgPT4gUHJpdmF0ZUluc3RhbmNlO1xuXG4vLyBXZSBjb3VsZCd2ZSB1c2VkIGDJtcm1SW5qZWN0YWJsZURlZmAsIGDJtcm1UGlwZURlZmAsIGV0Yy4gV2UgdHJ5IHRvIGJlIGJhY2t3YXJkcy1jb21wYXRpYmxlXG4vLyBzaW5jZSB0aGV5J3JlIG5vdCBleHBvcnRlZCBpbiBvbGRlciBBbmd1bGFyIHZlcnNpb25zLlxuaW50ZXJmYWNlIERlZmluaXRpb24ge1xuICBmYWN0b3J5OiBGYWN0b3J5IHwgbnVsbDtcbn1cblxuaW50ZXJmYWNlIENvbnN0cnVjdG9yV2l0aERlZmluaXRpb25BbmRGYWN0b3J5IGV4dGVuZHMgRnVuY3Rpb24ge1xuICAvLyBQcm92aWRlciBkZWZpbml0aW9uIGZvciB0aGUgYEBJbmplY3RhYmxlKClgIGNsYXNzLlxuICDJtXByb3Y/OiBEZWZpbml0aW9uO1xuICAvLyBQaXBlIGRlZmluaXRpb24gZm9yIHRoZSBgQFBpcGUoKWAgY2xhc3MuXG4gIMm1cGlwZT86IERlZmluaXRpb247XG4gIC8vIENvbXBvbmVudCBkZWZpbml0aW9uIGZvciB0aGUgYEBDb21wb25lbnQoKWAgY2xhc3MuXG4gIMm1Y21wPzogRGVmaW5pdGlvbjtcbiAgLy8gRGlyZWN0aXZlIGRlZmluaXRpb24gZm9yIHRoZSBgQERpcmVjdGl2ZSgpYCBjbGFzcy5cbiAgybVkaXI/OiBEZWZpbml0aW9uO1xuICBbTkdfRkFDVE9SWV9ERUZdPzogRmFjdG9yeTtcbn1cblxuaW50ZXJmYWNlIFByaXZhdGVJbnN0YW5jZSB7XG4gIFtJbmplY3Rvckluc3RhbmNlXT86IEluamVjdG9yO1xuICBbSW5qZWN0b3JOb3RpZmllcl0/OiBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+O1xufVxuIl19
@@ -1,15 +0,0 @@
1
- import { InjectionToken, Injector, Type } from '@angular/core';
2
- import { ReplaySubject } from 'rxjs';
3
- declare const InjectorInstance: unique symbol;
4
- declare const InjectorNotifier: unique symbol;
5
- interface PrototypeWithInjectorNotifier extends Object {
6
- [InjectorNotifier]?: ReplaySubject<boolean>;
7
- }
8
- export declare function ensureInjectorNotifierIsCaptured(target: PrototypeWithInjectorNotifier | PrivateInstance): ReplaySubject<boolean>;
9
- export declare function ensureLocalInjectorCaptured(target: Object): void;
10
- export declare function localInject<T>(instance: PrivateInstance, token: InjectionToken<T> | Type<T>): T | null;
11
- interface PrivateInstance {
12
- [InjectorInstance]?: Injector;
13
- [InjectorNotifier]?: ReplaySubject<boolean>;
14
- }
15
- export {};